@elementspanel/epanel-plugin-config 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ .setting-list-item[data-v-3f679f38]{margin-bottom:16px;padding:16px;border:1px solid rgba(var(--v-theme-on-surface),.12);border-radius:12px}.setting-list-header[data-v-3f679f38]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;overflow-wrap:anywhere}.setting-list-item--compact[data-v-3f679f38]{padding:8px 0;margin-bottom:0;border:0;border-radius:0}.setting-list-item--compact .setting-list-header[data-v-3f679f38]{margin-bottom:0}.setting-list-name[data-v-3f679f38]{flex:1;min-width:0}.setting-list-item--compact .setting-list-name[data-v-3f679f38]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setting-list-actions[data-v-3f679f38]{display:flex;flex-shrink:0;gap:4px}.setting-list-editor[data-v-3f679f38] .setting-control{width:100%}.setting-list-editor[data-v-3f679f38]>.v-form{display:flex;flex-direction:column;min-height:0}.setting-list-editor-content[data-v-3f679f38]{padding:16px 24px 24px 30px;overflow-y:auto}.setting-field[data-v-3f679f38],.setting-link-row[data-v-3f679f38]{margin-bottom:20px}.setting-field-title[data-v-3f679f38]{margin-bottom:6px;color:var(--text-color);font-size:15px;font-weight:600}.setting-field-description[data-v-3f679f38]{margin-bottom:10px;color:var(--text-color);font-size:13px;opacity:.68}.setting-control[data-v-3f679f38]{max-width:100%}.setting-control-small[data-v-3f679f38]{max-width:220px}.setting-control-medium[data-v-3f679f38]{max-width:420px}.setting-control-wide[data-v-3f679f38]{max-width:320px}.setting-file-input[data-v-3f679f38]{display:flex;max-width:520px;align-items:flex-start;gap:8px}.setting-file-input[data-v-3f679f38] .v-input{flex:1}@media (max-width: 992px){.setting-field[data-v-3f679f38],.setting-link-row[data-v-3f679f38],.setting-list[data-v-3f679f38],.setting-file-input[data-v-3f679f38]{min-width:0}.setting-field-title[data-v-3f679f38],.setting-field-description[data-v-3f679f38]{overflow-wrap:anywhere}.setting-control[data-v-3f679f38],.setting-file-input[data-v-3f679f38]{width:100%;max-width:100%}.setting-control[data-v-3f679f38] .v-input__control,.setting-control[data-v-3f679f38] .v-field,.setting-control[data-v-3f679f38] .v-field__input{min-width:0}.setting-control[data-v-3f679f38] .v-select__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setting-file-input[data-v-3f679f38]{flex-direction:column;align-items:stretch}.setting-file-input[data-v-3f679f38] .v-input{width:100%;min-width:0}.setting-link-row[data-v-3f679f38] .v-btn,.setting-list[data-v-3f679f38]>.v-btn,.setting-file-input[data-v-3f679f38] .v-btn{width:100%;min-height:44px;height:auto;padding:12px 16px}.setting-link-row[data-v-3f679f38] .v-btn__content,.setting-list[data-v-3f679f38]>.v-btn .v-btn__content,.setting-file-input[data-v-3f679f38] .v-btn__content{white-space:normal;overflow-wrap:anywhere}.setting-list-item[data-v-3f679f38]:not(.setting-list-item--compact){padding:12px}.setting-list-actions[data-v-3f679f38] .v-btn{width:44px;height:44px}.setting-list-editor-content[data-v-3f679f38]{padding:16px}.setting-list-editor[data-v-3f679f38] .v-card-title{white-space:normal;overflow-wrap:anywhere}.setting-list-editor[data-v-3f679f38] .v-card-actions{flex-wrap:wrap}}.plugin-config-page[data-v-a0aee928]{position:relative;display:flex;width:100%;box-sizing:border-box;height:min(720px,100vh - 140px);min-height:0;overflow:hidden;border-radius:24px;background:var(--background-color-white);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--text-color)}.desktop-container .plugin-config-page{--plugin-config-surface-color: #ffffff;height:100%;background:var(--plugin-config-surface-color)}.app-dark-theme .desktop-container .plugin-config-page{--plugin-config-surface-color: #1f1f27}.plugin-config-navigation[data-v-a0aee928]{flex:0 0 240px;min-height:0}.plugin-config-navigation[data-v-a0aee928] .v-navigation-drawer__content{overflow:hidden}.plugin-config-sidebar[data-v-a0aee928]{display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:100%;min-height:0;padding:24px 16px;overflow:hidden;background:var(--background-color-white)}.plugin-config-sidebar-title[data-v-a0aee928]{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;font-weight:600}.desktop-container .plugin-config-sidebar,.desktop-container .plugin-config-content{background:var(--plugin-config-surface-color)}.plugin-config-scope[data-v-a0aee928]{display:flex;gap:8px;width:100%;box-sizing:border-box;padding:0 10px 12px;background:transparent;border-radius:0;box-shadow:none}.plugin-config-scope[data-v-a0aee928] .v-btn{flex:1;min-height:32px;border-radius:24px;color:var(--text-color)!important;text-align:center}.app-dark-theme{color:#fff!important}.plugin-config-scope[data-v-a0aee928] .v-btn--active{background:rgb(var(--v-theme-primary));color:#fff!important}.plugin-config-node-select[data-v-a0aee928]{flex:0 0 auto;width:100%;max-width:100%;min-width:0;margin:0 0 8px;box-sizing:border-box}.plugin-config-node-select[data-v-a0aee928] .v-input__control,.plugin-config-node-select[data-v-a0aee928] .v-field{width:100%;min-width:0}.plugin-config-node-select[data-v-a0aee928] .v-field__input{min-width:0;overflow:hidden}.plugin-config-node-select[data-v-a0aee928] .v-select__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plugin-config-heading[data-v-a0aee928]{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;margin:12px 10px 8px;line-height:20px;color:var(--text-color);font-size:13px;font-weight:600;opacity:.72}.plugin-config-list[data-v-a0aee928]{min-height:0;flex:1;width:100%;box-sizing:border-box;overflow-y:auto;scrollbar-gutter:auto;background:transparent;padding:0 10px 4px}.plugin-config-list[data-v-a0aee928] .v-list-item{min-height:36px;margin:0 0 6px;padding-top:2px;padding-bottom:2px;overflow:hidden;border-radius:24px!important;color:var(--text-color)}.plugin-config-list[data-v-a0aee928] .plugin-config-group-heading{display:flex;align-items:center;justify-content:space-between;min-height:28px;padding-inline:8px;color:var(--text-color);font-size:11px;font-weight:600;opacity:.55}.plugin-config-list[data-v-a0aee928] .plugin-config-group-heading-over{border-radius:8px;background:rgba(22,119,255,.12);opacity:1}.plugin-config-group-actions[data-v-a0aee928]{display:inline-flex;align-items:center;margin-left:8px;opacity:0;pointer-events:none;transition:opacity .15s ease}.plugin-config-list[data-v-a0aee928] .plugin-config-group-heading:hover .plugin-config-group-actions,.plugin-config-list[data-v-a0aee928] .plugin-config-group-heading:focus-within .plugin-config-group-actions{opacity:1;pointer-events:auto}.plugin-config-group-actions[data-v-a0aee928] .v-btn{--v-btn-height: 16px;width:16px;min-width:16px;height:16px;min-height:16px;padding:0;color:var(--text-color);opacity:.62}.plugin-config-group-actions[data-v-a0aee928] .v-icon{font-size:12px}.plugin-config-group-actions[data-v-a0aee928] .v-btn:hover{opacity:1}.plugin-config-list[data-v-a0aee928] .v-list-item[draggable=true]{cursor:grab}.plugin-config-list[data-v-a0aee928] .v-list-item[draggable=true]:active{cursor:grabbing}.plugin-config-list[data-v-a0aee928] .v-list-item__content{min-width:0;overflow:hidden}.plugin-config-list[data-v-a0aee928] .v-list-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plugin-config-list[data-v-a0aee928] .v-list-item--active{background:rgba(22,119,255,.12)}.plugin-config-list[data-v-a0aee928] .v-list-item__overlay,.plugin-config-list[data-v-a0aee928] .v-list-item__underlay{border-radius:inherit}.plugin-config-list[data-v-a0aee928] .plugin-config-item-off .v-list-item-title{opacity:.42}.plugin-config-item-dot[data-v-a0aee928]{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--color-success)}.plugin-config-item-dot-off[data-v-a0aee928]{background:var(--color-gray-6)}.plugin-config-empty[data-v-a0aee928],.plugin-config-no-config[data-v-a0aee928]{padding:28px 12px;color:var(--text-color);font-size:13px;opacity:.62;text-align:center}.plugin-config-content[data-v-a0aee928]{display:flex;flex-direction:column;min-height:0;min-width:0;flex:1;padding:20px 32px 32px;overflow:hidden}.plugin-config-body[data-v-a0aee928]{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain}.plugin-config-title-row[data-v-a0aee928]{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.plugin-config-title-row h2[data-v-a0aee928]{margin:0;color:var(--text-color);font-size:20px}.plugin-config-title[data-v-a0aee928]{display:flex;min-width:0;align-items:center;gap:8px}.plugin-config-title[data-v-a0aee928]>.v-btn{flex:0 0 auto}.plugin-config-meta[data-v-a0aee928]{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:12px}.plugin-config-actions[data-v-a0aee928]{display:flex;align-items:center;gap:12px}.plugin-config-version[data-v-a0aee928]{color:var(--text-color);font-size:12px;opacity:.62}.plugin-config-alert[data-v-a0aee928]{margin-bottom:20px}.plugin-config-form[data-v-a0aee928]{min-height:100px}.plugin-config-loading[data-v-a0aee928]{position:absolute;top:0;left:0;right:0;z-index:2}.plugin-config-schema-loading[data-v-a0aee928]{display:flex;min-height:120px;align-items:center;justify-content:center}@media (max-width: 992px){.plugin-config-page[data-v-a0aee928]{flex-direction:column;height:calc(100dvh - 200px);min-width:0;min-height:0}.plugin-config-sidebar[data-v-a0aee928]{min-width:0;padding:16px}.plugin-config-scope[data-v-a0aee928]{flex:none;height:auto;padding:0 0 12px}.plugin-config-scope[data-v-a0aee928] .v-btn{min-width:0;min-height:44px;height:auto;padding:8px}.plugin-config-scope[data-v-a0aee928] .v-btn__content{white-space:normal;overflow-wrap:anywhere}.plugin-config-list[data-v-a0aee928] .plugin-config-group-actions{opacity:1;pointer-events:auto}.plugin-config-group-actions[data-v-a0aee928] .v-btn{width:28px;height:28px;min-width:28px;min-height:28px}.plugin-config-group-actions[data-v-a0aee928] .v-icon{font-size:16px}.plugin-config-content[data-v-a0aee928]{padding:16px 16px 20px}.plugin-config-title-row[data-v-a0aee928]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,auto);gap:8px}.plugin-config-title[data-v-a0aee928]{grid-column:1;grid-row:1}.plugin-config-title-row h2[data-v-a0aee928],.plugin-config-version[data-v-a0aee928],.plugin-config-alert[data-v-a0aee928]{overflow-wrap:anywhere}.plugin-config-meta[data-v-a0aee928]{display:contents}.plugin-config-actions[data-v-a0aee928]{grid-column:1/-1;justify-content:flex-end;gap:8px}.plugin-config-plugin-version[data-v-a0aee928]{grid-column:2;grid-row:1}.plugin-config-version[data-v-a0aee928]{min-width:0;max-width:100%}.plugin-config-meta[data-v-a0aee928] .v-chip{grid-column:3;grid-row:1;max-width:100%;min-height:24px;height:auto;padding-top:4px;padding-bottom:4px}.plugin-config-meta[data-v-a0aee928] .v-chip__content{white-space:normal;overflow-wrap:anywhere}.plugin-config-alert[data-v-a0aee928] .v-alert__content{min-width:0}.plugin-config-confirm-card[data-v-a0aee928] .v-card-title{white-space:normal;overflow-wrap:anywhere}.plugin-config-confirm-card[data-v-a0aee928] .v-card-actions{flex-wrap:wrap}.desktop-container .plugin-config-page{height:100%}}
@@ -0,0 +1 @@
1
+ import{t as T}from"../../../assets/i18n-e810b9fa.js";import{u as Ie}from"../../../assets/useAppStateStore-a438b9a6.js";import{a1 as Me,b5 as H,aM as DE,aE as s,Q as v,O as U,ba as o,F as n_,aK as y_,$ as D,_ as R,bP as C,bJ as E,gC as d,R as $,P as A,bM as H_,gJ as NE,gK as l_,gR as oe,t as p_,aO as be,gH as Se,gA as X_,gB as A_,gz as S_,gD as v_,N as w,bx as IE,bz as l,c9 as aE,ca as sE,ay as oE,aC as LE,c1 as OE,gL as b_,gS as lE,gT as iE,bN as x_,ab as K_,gU as CE,gV as PE,gN as GE,gQ as UE,gW as uE,gX as ae,gY as o_,gM as rE,gZ as cE,w as ve,g_ as dE}from"../../../assets/vue-6b52a630.js";import{u as XE}from"../../../assets/useScreen-fad29b7c.js";import{u as AE,c as B_}from"../../../assets/context-cc90576e.js";import{u as F,m as pe,g as se}from"../../../assets/useDefineApi-b726db1e.js";import{r as SE}from"../../../assets/router-eff205cc.js";import{_ as Be}from"../../../assets/_plugin-vue_export-helper-c27b6911.js";import"../../../assets/lodash-001e4f93.js";import"../../../assets/htmlparser2-bcb8f9db.js";import"../../../assets/_elements-sdk_cordis-e3bebc89.js";import"../../../assets/_elements-sdk_cosmokit-e4842f5c.js";const vE=F({url:"/api/plugins",method:"GET"}),pE=F({url:"/api/plugins/enabled",method:"PUT"}),RE=F({url:"/api/plugins",method:"DELETE"}),gE=F({url:"/api/plugins/npm/install",method:"POST"}),mE=F({url:"/api/plugins/node/npm/install",method:"POST"}),$E=F({url:"/api/plugins/settings",method:"GET"}),FE=F({url:"/api/plugins/settings",method:"PUT"}),fE=F({url:"/api/plugins/groups",method:"GET"}),ME=F({url:"/api/plugins/groups",method:"PUT"}),Re=F({url:"/api/plugins/node/list",method:"GET"}),ge=F({url:"/api/plugins/node/plugins",method:"GET"}),me=F({url:"/api/plugins/node/enabled",method:"PUT"}),$e=F({url:"/api/plugins/node",method:"DELETE"}),bE=F({url:"/api/plugins/node/settings",method:"GET"}),BE=F({url:"/api/plugins/node/settings",method:"PUT"}),yE=F({url:"/api/plugins/node/groups",method:"GET"}),kE=F({url:"/api/plugins/node/groups",method:"PUT"}),VE={key:0,class:"setting-link-row"},hE={key:1,class:"setting-field"},wE={class:"setting-field-title"},xE={key:0,class:"setting-field-description"},KE={key:1,class:"setting-list"},QE={class:"setting-list-header"},HE=["title"],zE={class:"setting-list-actions"},qE={key:3,class:"setting-file-input"},jE=Me({__name:"SchemaForm",props:{fields:{},values:{},nested:{type:Boolean}},emits:["save"],setup(g,{emit:f}){const x=g,z=f,z_=[{label:T("TXT_CODE_52c8a730"),value:!0},{label:T("TXT_CODE_718c9310"),value:!1}],G=(a,L=x.values)=>{const S=a.visibleWhen;return S?(Array.isArray(S)?S:[S]).every(V=>{const[r,q]=V.split("="),K=L[r];return q===void 0?!!K:String(K??"")===q}):!0},t_=w(()=>AE("file")),i_=IE(new Set),B=(a,L)=>{a.key&&(x.values[a.key]=L)},W=(a,L)=>{a.key&&(x.values[a.key]=L===""||L===null?void 0:Number(L))},m=a=>Array.isArray(x.values[a.key])?x.values[a.key]:[],E_=a=>Object.fromEntries((a.fields||[]).filter(L=>L.key&&L.type!=="link").map(L=>{var S,t;return[L.key,L.type==="boolean"?!1:L.type==="list"?[]:L.type==="number"?L.min??0:L.type==="select"?((t=(S=L.options)==null?void 0:S[0])==null?void 0:t.value)??"":""]})),y=l(),J=l(!1),k=a=>JSON.parse(JSON.stringify(a)),C_=(a,L)=>{!L&&m(a).length>=(a.maxItems??100)||(y.value={field:a,original:L,draft:L?k(L):E_(a)},J.value=!0)},D_=()=>{J.value=!1},e_=()=>{J.value||(y.value=void 0)},T_=w(()=>{const a=y.value;return!a||!J.value||!a.original&&m(a.field).length>=(a.field.maxItems??100)?!1:(a.field.fields||[]).every(L=>{if(!L.required||!L.key||!G(L,a.draft))return!0;const S=a.draft[L.key];return S!=null&&(typeof S!="string"||!!S.trim())})}),N_=()=>{const a=y.value;if(!a||!T_.value)return;const L=[...m(a.field)];if(a.original){const S=L.indexOf(a.original);if(S===-1){D_();return}L[S]=k(a.draft)}else L.push(k(a.draft));B(a.field,L),D_()};H(()=>[x.values,x.fields],()=>{D_(),e_()});const u=a=>{m(a).length>=(a.maxItems??100)||(a.listEditor==="dialog"?C_(a):B(a,[...m(a),E_(a)]))},I_=(a,L)=>B(a,m(a).filter((S,t)=>t!==L)),L_=async a=>{if(!a.key||i_.has(a.key))return;const L=t_.value;if(L){i_.add(a.key);try{const S=await L.useUploadFileDialog();S&&B(a,S)}finally{i_.delete(a.key)}}},Y=a=>{if(!a.route)return;const[L,S]=a.route.split("?");SE.push({path:L,query:S?Object.fromEntries(new URLSearchParams(S)):{}})};return(a,L)=>{const S=DE("SchemaForm",!0);return s(),v(n_,null,[(s(),U(be(g.nested?"div":E(Se)),{onSubmit:L[0]||(L[0]=p_(t=>z("save"),["prevent"]))},{default:o(()=>[(s(!0),v(n_,null,y_(g.fields,(t,V)=>(s(),v(n_,{key:t.key||`link-${V}`},[t.type==="link"?(s(),v("div",VE,[D(E(d),{variant:"outlined",type:"button",onClick:r=>Y(t)},{default:o(()=>[R(C(t.title),1)]),_:2},1032,["onClick"])])):G(t)?(s(),v("div",hE,[$("div",wE,C(t.title),1),t.description?(s(),v("div",xE,C(t.description),1)):A("",!0),t.type==="list"?(s(),v("div",KE,[(s(!0),v(n_,null,y_(m(t),(r,q)=>(s(),v("section",{key:q,class:H_(["setting-list-item",{"setting-list-item--compact":t.listEditor==="dialog"}])},[$("div",QE,[$("strong",{class:"setting-list-name",title:String(r[t.itemTitleKey||"name"]||"")},C(String(r[t.itemTitleKey||"name"]||`${t.title} ${q+1}`)),9,HE),$("div",zE,[t.listEditor==="dialog"?(s(),U(E(d),{key:0,type:"button",icon:"mdi-pencil-outline",variant:"text",size:"small",title:t.editLabel||E(T)("TXT_CODE_ad207008"),"aria-label":t.editLabel||E(T)("TXT_CODE_ad207008"),onClick:K=>C_(t,r)},null,8,["title","aria-label","onClick"])):A("",!0),D(E(d),{type:"button",icon:"mdi-delete-outline",variant:"text",size:"small",title:t.removeLabel||E(T)("TXT_CODE_6f2c1806"),"aria-label":t.removeLabel||E(T)("TXT_CODE_6f2c1806"),onClick:K=>I_(t,q)},null,8,["title","aria-label","onClick"])])]),t.listEditor!=="dialog"?(s(),U(S,{key:0,fields:t.fields||[],values:r,nested:""},null,8,["fields","values"])):A("",!0)],2))),128)),D(E(d),{type:"button","prepend-icon":"mdi-plus",variant:"tonal",class:"mt-3",disabled:m(t).length>=(t.maxItems??100),onClick:r=>u(t)},{default:o(()=>[R(C(t.addLabel||E(T)("TXT_CODE_a1d885c1")),1)]),_:2},1032,["disabled","onClick"])])):t.type==="text"?(s(),U(E(NE),{key:2,"model-value":String(g.values[t.key]??""),rows:4,placeholder:t.placeholder||E(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="string"&&!t.secret&&t.fileUpload?(s(),v("div",qE,[D(E(l_),{"model-value":String(g.values[t.key]??""),placeholder:t.placeholder||E(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"",clearable:"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"]),t_.value?(s(),U(E(d),{key:0,type:"button",variant:"outlined",loading:t.key?i_.has(t.key):!1,onClick:r=>L_(t)},{default:o(()=>[R(C(E(T)("TXT_CODE_ae09d79d")),1)]),_:1},8,["loading","onClick"])):A("",!0)])):t.type==="string"&&!t.secret?(s(),U(E(l_),{key:4,"model-value":String(g.values[t.key]??""),class:"setting-control setting-control-medium",placeholder:t.placeholder||E(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="string"?(s(),U(E(l_),{key:5,"model-value":String(g.values[t.key]??""),class:"setting-control setting-control-medium",type:"password",autocomplete:"new-password",placeholder:t.placeholder||E(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="number"?(s(),U(E(l_),{key:6,"model-value":Number(g.values[t.key]??0),class:"setting-control setting-control-small",type:"number",min:t.min,max:t.max,variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>W(t,r)},null,8,["model-value","min","max","onUpdate:modelValue"])):t.type==="boolean"?(s(),U(E(oe),{key:7,"model-value":!!g.values[t.key],class:"setting-control setting-control-small",items:z_,"item-title":"label","item-value":"value","hide-details":"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","onUpdate:modelValue"])):t.type==="select"?(s(),U(E(oe),{key:8,"model-value":g.values[t.key],class:"setting-control setting-control-wide",items:t.options||[],"item-title":"label","item-value":"value","hide-details":"","onUpdate:modelValue":r=>B(t,r)},null,8,["model-value","items","onUpdate:modelValue"])):A("",!0)])):A("",!0)],64))),128))]),_:1},32)),y.value?(s(),U(E(v_),{key:0,modelValue:J.value,"onUpdate:modelValue":L[1]||(L[1]=t=>J.value=t),"max-width":"640",scrollable:"",onAfterLeave:e_},{default:o(()=>[D(E(S_),{title:E(T)(y.value.original?"TXT_CODE_ad207008":"TXT_CODE_a1d885c1"),class:"setting-list-editor"},{default:o(()=>[D(E(Se),{onSubmit:p_(N_,["stop","prevent"])},{default:o(()=>[D(E(X_),{class:"setting-list-editor-content"},{default:o(()=>[D(S,{fields:y.value.field.fields||[],values:y.value.draft,nested:""},null,8,["fields","values"])]),_:1}),D(E(A_),{class:"justify-end"},{default:o(()=>[D(E(d),{type:"button",onClick:D_},{default:o(()=>[R(C(E(T)("TXT_CODE_a0451c97")),1)]),_:1}),D(E(d),{type:"submit",color:"primary",variant:"flat",disabled:!T_.value},{default:o(()=>[R(C(E(T)("TXT_CODE_d507abff")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])):A("",!0)],64)}}});const WE=Be(jE,[["__scopeId","data-v-3f679f38"]]),JE={class:"plugin-config-sidebar"},YE={key:0,class:"plugin-config-sidebar-title"},ZE={class:"plugin-config-heading"},_T={key:0,class:"plugin-config-group-actions"},eT={key:0,class:"plugin-config-empty"},ET={class:"plugin-config-content"},TT={key:0,class:"plugin-config-title-row"},nT={class:"plugin-config-title"},tT={key:0,class:"plugin-config-meta"},DT={key:1,class:"plugin-config-version plugin-config-plugin-version"},NT={class:"plugin-config-actions"},IT={class:"plugin-config-body"},aT={key:7,class:"plugin-config-schema-loading"},sT={key:8,class:"plugin-config-form"},oT={key:9,class:"plugin-config-no-config"},LT={key:2,class:"plugin-config-no-config"},OT={key:0,class:"mb-2"},Fe="epanel-plugin-",fe="__unassigned__",lT=Me({__name:"ConfigPage",props:{scope:{},daemonId:{},pluginId:{}},setup(g){const f=g,{isPhone:x}=XE(),z=l(!1),z_=w(()=>x.value?{class:"plugin-config-navigation",modelValue:z.value,"onUpdate:modelValue":_=>{z.value=_},absolute:!0,temporary:!0,floating:!0,disableResizeWatcher:!0,retainFocus:!0,captureFocus:!0,touchless:!0,width:280,"aria-label":T("TXT_CODE_PLUGIN_LIST")}:{class:"plugin-config-navigation"});H(x,_=>{_||(z.value=!1)});const G=l("panel"),t_=aE(),i_=sE(),B=l(String(f.pluginId??t_.query.plugin??"")),W=l(!0),m=l(""),E_=l(!1),y=l(""),J=l(""),k=l(!1),C_=l("panel"),D_=l(""),e_=l([]),T_=l(""),N_=l([]),u=l(""),I_=l([]),L_=l(""),Y=l(""),a=_=>`${_.remarks||`${_.ip}:${_.port}`}${_.available?"":` (${T("TXT_CODE_PLUGIN_NODE_OFFLINE")})`}`,L=_=>{if(!_)return"";const e=_.indexOf("/"),n=_.startsWith("@")&&e>=0?_.slice(e+1):_;return n.startsWith(Fe)?n.slice(Fe.length):_},S=w(()=>N_.value.map(_=>({title:a(_),value:_.uuid}))),t=w(()=>G.value==="panel"?e_.value:I_.value),V=l([]),r=l(""),q=l("");let K=null;const P_=l(!1),q_=l("create"),G_=l(""),j_=l(""),U_=l(!1),R_=l(null);let W_=0;const ye=async()=>{const _=++W_;if(V.value=[],!(G.value==="node"&&!u.value))try{const e=G.value==="panel"?(await fE().execute()).value:(await yE().execute({params:{daemonId:u.value}})).value;_===W_&&(V.value=Array.isArray(e)?e:[])}catch(e){if(_!==W_)return;V.value=[],console.error("Failed to load plugin groups:",e)}},J_=async()=>{const _=V.value.map(e=>({id:e.id,name:e.name,pluginIds:[...e.pluginIds]}));try{G.value==="panel"?await ME().execute({data:{groups:_}}):u.value&&await kE().execute({params:{daemonId:u.value},data:{groups:_}})}catch(e){s_(e)}},ke=w(()=>{const _=new Set,e=V.value.map(N=>{const O=t.value.filter(c=>N.pluginIds.includes(c.id)&&!_.has(c.id));return O.forEach(c=>_.add(c.id)),{...N,plugins:O,unassigned:!1}}),n=t.value.filter(N=>!_.has(N.id));return(n.length||!e.length)&&e.push({id:fe,name:T("TXT_CODE_PLUGIN_GROUP_UNASSIGNED"),pluginIds:[],plugins:n,unassigned:!0}),e}),Ve=()=>`group-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,he=()=>{q_.value="create",G_.value="",j_.value="",P_.value=!0},we=_=>{_.unassigned||(q_.value="rename",G_.value=_.name,j_.value=_.id,P_.value=!0)},Le=()=>{const _=G_.value.trim();if(_){if(q_.value==="create")V.value.push({id:Ve(),name:_,pluginIds:[]});else{const e=V.value.find(n=>n.id===j_.value);e&&(e.name=_)}J_(),P_.value=!1}},xe=_=>{_.unassigned||(R_.value=_,U_.value=!0)},Ke=()=>{const _=R_.value;_&&(V.value=V.value.filter(e=>e.id!==_.id),J_(),U_.value=!1,R_.value=null)};H(U_,_=>{_||(R_.value=null)});const Qe=(_,e)=>{var n;for(const N of V.value)N.pluginIds=N.pluginIds.filter(O=>O!==_);e!==fe&&((n=V.value.find(N=>N.id===e))==null||n.pluginIds.push(_)),J_()},Oe=()=>{K==null||K.remove(),K=null},He=(_,e)=>{r.value=_,e!=null&&e.dataTransfer&&(e.dataTransfer.setData("text/plain",_),e.dataTransfer.effectAllowed="move",Oe(),K=document.createElement("span"),K.textContent=_,Object.assign(K.style,{position:"fixed",top:"-1000px",left:"-1000px",padding:"4px 10px",borderRadius:"14px",background:"rgb(var(--v-theme-surface, 255 255 255))",color:"rgb(var(--v-theme-on-surface, 0 0 0))",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.2)",font:"12px sans-serif",whiteSpace:"nowrap"}),document.body.appendChild(K),e.dataTransfer.setDragImage(K,12,14))},ze=_=>{r.value&&Qe(r.value,_),r.value="",q.value=""},qe=()=>{r.value="",q.value="",Oe()};H([G,u],()=>void ye(),{immediate:!0});const h=w({get:()=>G.value==="panel"?T_.value:L_.value,set:_=>{G.value==="panel"?T_.value=_:L_.value=_}}),je=_=>{h.value=_,z.value=!1},X=w(()=>t.value.find(_=>_.id===h.value)),M=l(null),Y_=l(""),k_=w(()=>!!M.value&&JSON.stringify(M.value.values)!==Y_.value),g_=l(!1),m_=l(!1),V_=l(!1),le=w({get:()=>!z.value&&!g_.value&&!m_.value&&(k_.value||V_.value),set:_=>{V_.value=_}});H(z,_=>{_&&(g_.value=!1,m_.value=!1,V_.value=!1)}),H(M,_=>{Y_.value=_?JSON.stringify(_.values):""},{flush:"sync"});const $_=l(!1);let u_=0,F_=0,h_=0,ie,Z_=!1,b=!1;const O_=l(!1),j=l(null),We={disabled:"TXT_CODE_PLUGIN_STATE_DISABLED",pending:"TXT_CODE_PLUGIN_STATE_PENDING",loading:"TXT_CODE_PLUGIN_STATE_LOADING",active:"TXT_CODE_PLUGIN_STATE_ACTIVE",failed:"TXT_CODE_PLUGIN_LOAD_FAILED",unloading:"TXT_CODE_PLUGIN_STATE_UNLOADING","restart-required":"TXT_CODE_PLUGIN_RESTART_REQUIRED"},f_=w(()=>G.value==="panel"?B_.plugins.loaded.find(_=>_.metadata.id===h.value):void 0),M_=_=>{var e;j.value=_&&typeof _=="object"?_:null,((e=j.value)==null?void 0:e.application)==="failed"&&a_(j.value.error||T("TXT_CODE_PLUGIN_LOAD_FAILED"),"error")},w_=l(!1),i=l(null),Q=w(()=>!!(m.value||w_.value||k.value)),r_=w(()=>Q.value||!!i.value||E_.value),_e=w({get:()=>{var _;return((_=i.value)==null?void 0:_.step)==="confirm"},set:_=>{var e;!_&&((e=i.value)==null?void 0:e.step)==="confirm"&&!Q.value&&(i.value=null)}}),ee=w({get:()=>{var _;return((_=i.value)==null?void 0:_.step)==="nodes"},set:_=>{var e;!_&&((e=i.value)==null?void 0:e.step)==="nodes"&&!Q.value&&(i.value=null)}}),a_=(_,e)=>{e==="error"?pe.error(_):pe.success(_)},s_=_=>{console.error("Plugin configuration error:",_),a_(se(_,T("TXT_CODE_6a365d01")),"error")},Ee=async()=>{if(b)return;const _=++u_;M.value=null,$_.value=!1;const e=h.value;if(e&&!(G.value==="node"&&!u.value)){$_.value=!0;try{if(G.value==="panel"){const{execute:n}=$E(),N=await n({params:{id:e},forceRequest:!0});_===u_&&(M.value=N.value??null)}else{const{execute:n}=bE(),N=await n({params:{daemonId:u.value,id:e},forceRequest:!0});_===u_&&(M.value=N.value??null)}}catch{_===u_&&(M.value=null)}finally{_===u_&&($_.value=!1)}}},Je=async()=>{if(!(!h.value||m.value)){m.value=h.value;try{await B_.plugins.reload(h.value)}catch(_){s_(_)}finally{m.value=""}}},Ce=async()=>{if(!M.value||O_.value)return;const _=M.value,e=G.value,n=u.value,N=_.id,O=JSON.stringify(_.values);O_.value=!0;const c=e==="panel"&&["i18n","console"].includes(N);try{const P=JSON.parse(O);if(e==="panel"){const{execute:d_}=FE();M_((await d_({params:{id:N},data:P})).value)}else{const{execute:d_}=BE();M_((await d_({params:{daemonId:n,id:N},data:P})).value)}(!j.value||j.value.application==="applied")&&a_(T("TXT_CODE_d3de39b4"),"success");const Z=JSON.stringify(_.values)!==O;if(M.value===_&&(Y_.value=O),c&&!Z){window.setTimeout(()=>window.location.reload(),400);return}G.value===e&&u.value===n&&h.value===N&&M.value===_&&!Z&&await Ee()}catch(P){s_(P)}finally{O_.value=!1}},c_=async(_=!1)=>{if(b)return;const e=++h_;_||(W.value=!0);try{const n=await vE().execute({forceRequest:!0});!b&&e===h_&&JSON.stringify(e_.value)!==JSON.stringify(n.value??[])&&(e_.value=n.value??[])}catch(n){!_&&!b&&s_(n)}finally{!_&&e===h_&&(W.value=!1)}},Ye=async()=>{var _;W.value=!0,Y.value="";try{const{execute:e}=Re(),n=await e();N_.value=n.value??[],N_.value.some(N=>N.uuid===u.value)||(u.value=((_=N_.value.find(N=>N.available))==null?void 0:_.uuid)||"")}catch(e){N_.value=[],u.value="",Y.value=(e==null?void 0:e.message)??String(e)}finally{W.value=!1}},Te=async(_=!1)=>{if(b)return;const e=++F_;if(_||(I_.value=[]),!!u.value){_||(W.value=!0),Y.value="";try{const{execute:n}=ge(),N=await n({params:{daemonId:u.value},forceRequest:!0});!b&&e===F_&&JSON.stringify(I_.value)!==JSON.stringify(N.value??[])&&(I_.value=N.value??[])}catch(n){e===F_&&(Y.value=(n==null?void 0:n.message)??String(n))}finally{!_&&e===F_&&(W.value=!1)}}},Ze=_=>{b||r_.value||O_.value||(y.value=(_==null?void 0:_.packageName)||"",J.value="",C_.value=G.value,D_.value=u.value,E_.value=!0)},_E=async()=>{var _,e,n,N,O;if(!(k.value||!y.value.trim())){k.value=!0;try{const c={name:y.value.trim(),version:J.value.trim()||void 0},P=C_.value==="panel"?await gE().execute({data:c,timeout:11*60*1e3}):await mE().execute({params:{daemonId:D_.value},data:c,timeout:11*60*1e3});if(b)return;M_((_=P.value)==null?void 0:_.result),E_.value=!1,C_.value==="panel"?(await B_.plugins.refresh().catch(Z=>console.error("Failed to refresh plugins:",Z)),await c_(),(e=P.value)!=null&&e.id&&e_.value.some(Z=>Z.id===P.value.id)&&(T_.value=P.value.id)):G.value==="node"&&u.value===D_.value&&(await ne(),(n=P.value)!=null&&n.id&&I_.value.some(Z=>Z.id===P.value.id)&&(L_.value=P.value.id)),((O=(N=P.value)==null?void 0:N.result)==null?void 0:O.application)==="applied"&&a_(T("TXT_CODE_PLUGIN_NPM_INSTALLED"),"success")}catch(c){s_(c)}finally{k.value=!1}}},ne=async()=>{for(let _=0;_<4;_++){if(b||(await Te(),!Y.value))return;await new Promise(e=>setTimeout(e,700))}},te=async()=>{if(!(b||Z_||W.value||Q.value||O_.value)){Z_=!0;try{G.value==="panel"?await c_(!0):await Te(!0)}finally{Z_=!1}}};oE(()=>{c_(),window.addEventListener("elementspanel:plugins-changed",te),ie=setInterval(te,4e3)}),LE(()=>{window.removeEventListener("elementspanel:plugins-changed",te),clearInterval(ie),h_++,b=!0,u_++,F_++}),OE(_=>{if(_.path==="/plugins/config")return!0;const e={..._.query},n={scope:G.value,daemonId:u.value,plugin:h.value};let N=!1;for(const[O,c]of Object.entries(n))c&&e[O]===c&&(delete e[O],N=!0);return N?{path:_.path,query:e}:!0}),H(G,_=>{_==="node"&&!N_.value.length&&!Y.value&&Ye()}),H(u,()=>Te()),H(()=>[f.scope??t_.query.scope,f.daemonId??t_.query.daemonId,f.pluginId??t_.query.plugin],([_,e,n])=>{if(typeof n=="string"&&(B.value=n),_!=="node"){_==="panel"&&(G.value="panel"),typeof n=="string"&&e_.value.some(N=>N.id===n)&&(T_.value=n);return}G.value="node",typeof e=="string"&&(u.value=e)},{immediate:!0}),H(e_,_=>{var e,n;_.some(N=>N.id===T_.value)||(T_.value=((e=_.find(N=>N.id===B.value))==null?void 0:e.id)||((n=_[0])==null?void 0:n.id)||"")},{immediate:!0}),H(I_,_=>{var e,n;_.some(N=>N.id===L_.value)||(L_.value=((e=_.find(N=>N.id===B.value))==null?void 0:e.id)||((n=_[0])==null?void 0:n.id)||"")}),H(()=>{var _,e,n;return[(_=X.value)==null?void 0:_.version,(e=X.value)==null?void 0:e.enabled,(n=X.value)==null?void 0:n.hasSettings]},()=>{!k_.value&&!O_.value&&Ee()}),H([G,h,u],()=>{j.value=null,g_.value=!1,m_.value=!1,V_.value=!1,Ee()},{immediate:!0});let Pe="";H([G,h,u],()=>{if(t_.path!=="/plugins/config")return;const _={scope:G.value};G.value==="node"&&u.value&&(_.daemonId=u.value),h.value&&(_.plugin=h.value),B.value=h.value;const e=i_.resolve({query:_}).fullPath;if(e===Pe)return;Pe=e;const{pathname:n,search:N}=window.location;window.history.replaceState(window.history.state,"",`${n}${N}#${e}`)});const eE=async _=>{if(!(_.scope!=="panel"||!e_.value.some(e=>e.id==="node"&&e.enabled&&e.running))){_.checkingNodes=!0;try{const e=(await Re().execute()).value??[];if(b||i.value!==_)return;const n=await Promise.allSettled(e.map(async O=>{if(!O.available)throw new Error(T("TXT_CODE_PLUGIN_NODE_OFFLINE"));const c=(await ge().execute({params:{daemonId:O.uuid}})).value;if(!Array.isArray(c))throw new Error(T("TXT_CODE_PLUGIN_NODE_LIST_FAILED"));return c.find(P=>P.id===_.plugin.id)}));if(b||i.value!==_)return;const N=[];n.forEach((O,c)=>{const P=e[c];O.status==="rejected"?N.push(a(P)):O.value&&(_.action==="remove"||O.value.enabled)&&_.nodeTargets.push({node:P,plugin:O.value})}),N.length&&(_.nodeCheckError=T("TXT_CODE_PLUGIN_NODE_CHECK_FAILED",{nodes:N.join(", ")}))}catch(e){!b&&i.value===_&&(_.nodeCheckError=se(e,T("TXT_CODE_PLUGIN_NODE_LIST_FAILED")))}finally{_.checkingNodes=!1}}},Ge=(_,e)=>{b||r_.value||e==="remove"&&!_.removable||(i.value={action:e,step:"confirm",scope:G.value,plugin:{..._},nodeId:u.value,checkingNodes:!1,nodeTargets:[],selectedNodeIds:[],nodeCheckError:""})},Ue=async _=>{var N;const e=_.nodeTargets.filter(({node:O,plugin:c})=>_.selectedNodeIds.includes(O.uuid)&&(_.action!=="remove"||c.removable)),n=[];for(const{node:O,plugin:c}of e)try{if(_.action==="remove")await $e().execute({params:{daemonId:O.uuid,id:c.id},timeout:11*60*1e3}),_.nodeTargets=_.nodeTargets.filter(P=>P.node.uuid!==O.uuid);else{const P=(N=(await me().execute({params:{daemonId:O.uuid},data:{id:c.id,enabled:!1}})).value)==null?void 0:N.result;if(P&&P.application!=="applied")throw new Error(P.error||T(P.application==="restart-required"?"TXT_CODE_PLUGIN_RESTART_REQUIRED":P.application==="pending"?"TXT_CODE_PLUGIN_SAVED_PENDING":"TXT_CODE_PLUGIN_LOAD_FAILED"))}_.selectedNodeIds=_.selectedNodeIds.filter(P=>P!==O.uuid)}catch(P){n.push(`${a(O)}: ${se(P,T("TXT_CODE_6a365d01"))}`)}return n.length&&a_(T("TXT_CODE_PLUGIN_NODE_ACTION_FAILED",{nodes:n.join("; ")}),"error"),n.length===0},ue=async(_,e,n)=>{var N;m.value=_.id;try{const O=n?await Ue(n):!0,{execute:c}=pE();M_((N=(await c({data:{id:_.id,enabled:e}})).value)==null?void 0:N.result),await B_.plugins.refresh(),await c_(),O&&(!j.value||j.value.application==="applied")&&a_(T(e?"TXT_CODE_PLUGIN_ENABLED":"TXT_CODE_PLUGIN_DISABLED"),"success")}catch(O){s_(O),await c_()}finally{m.value=""}},re=async(_,e,n=u.value)=>{var N;m.value=_.id;try{const{execute:O}=me();M_((N=(await O({params:{daemonId:n},data:{id:_.id,enabled:e}})).value)==null?void 0:N.result),(!j.value||j.value.application==="applied")&&a_(T(e?"TXT_CODE_PLUGIN_ENABLED":"TXT_CODE_PLUGIN_DISABLED"),"success")}catch(O){s_(O)}finally{m.value="",await ne()}},EE=(_,e)=>{if(r_.value)return;const n=G.value,N=u.value,O=()=>n==="panel"?ue(_,e):re(_,e,N);if(e)return O();Ge(_,"disable")},TE=_=>{X.value&&EE(X.value,_)},nE=async()=>{const _=i.value;!_||_.action!=="disable"||_.checkingNodes||Q.value||(_.scope==="panel"?await ue(_.plugin,!1,_):await re(_.plugin,!1,_.nodeId),i.value=null)},tE=async()=>{const _=i.value;if(!(!_||_.action!=="remove"||!_.plugin.removable||_.checkingNodes||Q.value)){w_.value=!0;try{let e=!0;if(_.scope==="panel"){e=await Ue(_);const{execute:n}=RE();await n({params:{id:_.plugin.id},timeout:11*60*1e3}),await B_.plugins.refresh().catch(N=>console.error("Failed to refresh plugins:",N)),await c_()}else{const{execute:n}=$e();await n({params:{daemonId:_.nodeId,id:_.plugin.id},timeout:11*60*1e3}),await ne()}i.value=null,e&&a_(T("TXT_CODE_PLUGIN_DELETED"),"success")}catch(e){s_(e)}finally{w_.value=!1}}},ce=async()=>{const _=i.value;if(!(!_||_.checkingNodes||Q.value)){if(_.step==="confirm"){if(await eE(_),b||i.value!==_)return;if(_.nodeTargets.length||_.nodeCheckError){_.selectedNodeIds=_.nodeTargets.filter(({plugin:e})=>_.action!=="remove"||e.removable).map(({node:e})=>e.uuid),_.step="nodes";return}}return _.action==="remove"?tE():nE()}};return(_,e)=>(s(),U(E(dE),{class:"plugin-config-page",onKeydown:e[25]||(e[25]=ve(n=>z.value=!1,["esc"]))},{default:o(()=>{var n,N,O,c,P,Z,d_,de,Xe;return[D(E(v_),{modelValue:E_.value,"onUpdate:modelValue":e[3]||(e[3]=I=>E_.value=I),"max-width":"480",persistent:k.value},{default:o(()=>[D(E(S_),{title:E(T)("TXT_CODE_PLUGIN_NPM_INSTALL")},{default:o(()=>[D(E(X_),null,{default:o(()=>[D(E(l_),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=I=>y.value=I),label:E(T)("TXT_CODE_PLUGIN_NPM_PACKAGE"),placeholder:"epanel-plugin-example",disabled:k.value},null,8,["modelValue","label","disabled"]),D(E(l_),{modelValue:J.value,"onUpdate:modelValue":e[1]||(e[1]=I=>J.value=I),label:E(T)("TXT_CODE_PLUGIN_NPM_VERSION"),placeholder:"latest",disabled:k.value,"hide-details":""},null,8,["modelValue","label","disabled"])]),_:1}),D(E(A_),null,{default:o(()=>[D(E(b_)),D(E(d),{disabled:k.value,onClick:e[2]||(e[2]=I=>E_.value=!1)},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(E(d),{color:"primary",loading:k.value,disabled:!y.value.trim(),onClick:_E},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_NPM_INSTALL")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue","persistent"]),W.value?(s(),U(E(lE),{key:0,class:"plugin-config-loading",color:"primary",indeterminate:""})):A("",!0),(s(),U(be(E(x)?E(iE):"aside"),x_(K_(z_.value)),{default:o(()=>[$("div",JE,[E(x)?(s(),v("div",YE,[$("span",null,C(E(T)("TXT_CODE_PLUGIN_CONFIG")),1),D(E(d),{icon:"mdi-close",size:"small",variant:"text","aria-label":E(T)("TXT_CODE_b1dedda3"),onClick:e[4]||(e[4]=I=>z.value=!1)},null,8,["aria-label"])])):A("",!0),D(E(CE),{modelValue:G.value,"onUpdate:modelValue":e[5]||(e[5]=I=>G.value=I),class:"plugin-config-scope",disabled:k.value,mandatory:""},{default:o(()=>[D(E(d),{value:"panel",size:"small",variant:"text"},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_SCOPE_PANEL")),1)]),_:1}),D(E(d),{value:"node",size:"small",variant:"text"},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_SCOPE_NODE")),1)]),_:1})]),_:1},8,["modelValue","disabled"]),G.value==="node"?(s(),U(E(oe),{key:1,modelValue:u.value,"onUpdate:modelValue":e[6]||(e[6]=I=>u.value=I),disabled:k.value,class:"plugin-config-node-select",items:S.value,loading:W.value,placeholder:E(T)("TXT_CODE_PLUGIN_NODE_SELECT"),"hide-details":""},null,8,["modelValue","disabled","items","loading","placeholder"])):A("",!0),$("div",ZE,[$("span",null,C(E(T)("TXT_CODE_PLUGIN_LIST")),1),D(E(d),{icon:"mdi-plus",size:"x-small",variant:"text","aria-label":E(T)("TXT_CODE_PLUGIN_GROUP_ADD"),onClick:he},null,8,["aria-label"])]),D(E(UE),{class:"plugin-config-list",density:"compact"},{default:o(()=>[(s(!0),v(n_,null,y_(ke.value,I=>(s(),v(n_,{key:I.id},[D(E(PE),{class:H_(["plugin-config-group-heading",{"plugin-config-group-heading-over":q.value===I.id}]),onDragover:p_(p=>q.value=I.id,["prevent"]),onDragleave:e[7]||(e[7]=p=>q.value=""),onDrop:p_(p=>ze(I.id),["prevent"])},{default:o(()=>[$("span",null,C(I.name),1),I.unassigned?A("",!0):(s(),v("span",_T,[D(E(d),{icon:"mdi-pencil-outline",size:"x-small",variant:"text","aria-label":E(T)("TXT_CODE_PLUGIN_GROUP_RENAME"),onClick:p_(p=>we(I),["stop"])},null,8,["aria-label","onClick"]),D(E(d),{icon:"mdi-delete-outline",size:"x-small",variant:"text","aria-label":E(T)("TXT_CODE_PLUGIN_GROUP_DELETE"),onClick:p_(p=>xe(I),["stop"])},null,8,["aria-label","onClick"])]))]),_:2},1032,["class","onDragover","onDrop"]),(s(!0),v(n_,null,y_(I.plugins,p=>(s(),U(E(GE),{key:p.id,draggable:"true",active:p.id===h.value,class:H_({"plugin-config-item-off":!p.enabled}),title:L(p.id),onClick:__=>je(p.id),onDragstart:__=>He(p.id,__),onDragend:qe},{append:o(()=>[$("span",{class:H_(["plugin-config-item-dot",{"plugin-config-item-dot-off":!p.enabled||p.state&&p.state!=="active"}])},null,2)]),_:2},1032,["active","class","title","onClick","onDragstart"]))),128))],64))),128)),t.value.length?A("",!0):(s(),v("div",eT,C(E(T)("TXT_CODE_NO_DATA")),1))]),_:1})])]),_:1},16)),$("div",ET,[X.value||E(x)?(s(),v("div",TT,[$("div",nT,[E(x)?(s(),U(E(d),{key:0,icon:"mdi-menu",variant:"text",title:E(T)("TXT_CODE_PLUGIN_LIST"),"aria-label":E(T)("TXT_CODE_PLUGIN_LIST"),"aria-expanded":z.value,onClick:e[8]||(e[8]=I=>z.value=!0)},null,8,["title","aria-label","aria-expanded"])):A("",!0),$("h2",null,C(L((n=X.value)==null?void 0:n.id)||E(T)("TXT_CODE_PLUGIN_CONFIG")),1)]),X.value?(s(),v("div",tT,[X.value.state?(s(),U(E(uE),{key:0,size:"small",color:X.value.state==="active"?"success":"warning"},{default:o(()=>[R(C(E(T)(We[X.value.state])),1)]),_:1},8,["color"])):A("",!0),X.value.version?(s(),v("span",DT,C(E(T)("TXT_CODE_VERSION"))+" "+C(X.value.version),1)):A("",!0),$("div",NT,[X.value.packageName?(s(),U(E(d),{key:0,icon:"mdi-update",variant:"text",disabled:r_.value,title:E(T)("TXT_CODE_PLUGIN_NPM_INSTALL"),"aria-label":E(T)("TXT_CODE_PLUGIN_NPM_INSTALL"),onClick:e[9]||(e[9]=I=>Ze(X.value))},null,8,["disabled","title","aria-label"])):A("",!0),D(E(ae),{modelValue:g_.value,"onUpdate:modelValue":e[11]||(e[11]=I=>g_.value=I),text:E(T)(X.value.enabled?"TXT_CODE_PLUGIN_DISABLE":"TXT_CODE_PLUGIN_ENABLE"),location:"top"},{activator:o(({props:I})=>[$("span",x_(K_(I)),[D(E(d),{icon:"mdi-power",color:X.value.enabled?"warning":"success",variant:"text",loading:m.value===X.value.id,disabled:r_.value,"aria-label":E(T)(X.value.enabled?"TXT_CODE_PLUGIN_DISABLE":"TXT_CODE_PLUGIN_ENABLE"),onClick:e[10]||(e[10]=p=>TE(!X.value.enabled))},null,8,["color","loading","disabled","aria-label"])],16)]),_:1},8,["modelValue","text"]),(N=M.value)!=null&&N.fields.some(I=>I.type!=="link")?(s(),U(E(ae),{key:1,modelValue:le.value,"onUpdate:modelValue":e[12]||(e[12]=I=>le.value=I),text:E(T)(k_.value?"TXT_CODE_PLUGIN_SAVE_REMINDER":"TXT_CODE_PLUGIN_SAVE_SETTINGS"),location:"top"},{activator:o(({props:I})=>[$("span",x_(K_(I)),[D(E(d),{icon:"mdi-content-save",color:"primary",variant:k_.value?"flat":"text",loading:O_.value,disabled:$_.value,"aria-label":E(T)("TXT_CODE_PLUGIN_SAVE_SETTINGS"),onClick:Ce},null,8,["variant","loading","disabled","aria-label"])],16)]),_:1},8,["modelValue","text"])):A("",!0),D(E(ae),{modelValue:m_.value,"onUpdate:modelValue":e[14]||(e[14]=I=>m_.value=I),text:E(T)((O=X.value)!=null&&O.removable?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"),location:"top"},{activator:o(({props:I})=>{var p,__;return[$("span",x_(K_(I)),[D(E(d),{icon:"mdi-delete",color:"error",variant:"text",loading:w_.value,disabled:!((p=X.value)!=null&&p.removable)||r_.value,"aria-label":E(T)((__=X.value)!=null&&__.removable?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"),onClick:e[13]||(e[13]=De=>Ge(X.value,"remove"))},null,8,["loading","disabled","aria-label"])],16)]}),_:1},8,["modelValue","text"])])])):A("",!0)])):A("",!0),$("div",IT,[G.value==="node"&&Y.value?(s(),U(E(o_),{key:0,class:"plugin-config-alert",type:"warning",variant:"tonal",title:E(T)("TXT_CODE_PLUGIN_NODE_LIST_FAILED"),text:Y.value},null,8,["title","text"])):A("",!0),X.value?(s(),v(n_,{key:1},[X.value.enabled?X.value.error?(s(),U(E(o_),{key:1,class:"plugin-config-alert",type:"error",variant:"tonal",title:E(T)("TXT_CODE_PLUGIN_LOAD_FAILED"),text:X.value.error},null,8,["title","text"])):A("",!0):(s(),U(E(o_),{key:0,class:"plugin-config-alert",type:"warning",variant:"tonal",title:E(T)("TXT_CODE_PLUGIN_IS_DISABLED")},null,8,["title"])),((c=j.value)==null?void 0:c.application)==="restart-required"||(P=f_.value)!=null&&P.restartRequired?(s(),U(E(o_),{key:2,class:"plugin-config-alert",type:"warning",variant:"tonal",text:E(T)("TXT_CODE_PLUGIN_RESTART_REQUIRED")},null,8,["text"])):(Z=f_.value)!=null&&Z.reloadRequired?(s(),U(E(o_),{key:3,class:"plugin-config-alert",type:"warning",variant:"tonal",text:E(T)("TXT_CODE_PLUGIN_REFRESH_REQUIRED")},null,8,["text"])):((d_=j.value)==null?void 0:d_.application)==="pending"?(s(),U(E(o_),{key:4,class:"plugin-config-alert",type:"info",variant:"tonal",text:E(T)("TXT_CODE_PLUGIN_SAVED_PENDING")},null,8,["text"])):A("",!0),(de=f_.value)!=null&&de.error?(s(),U(E(o_),{key:5,class:"plugin-config-alert",type:"error",variant:"tonal",title:E(T)("TXT_CODE_PLUGIN_FRONTEND_FAILED"),text:f_.value.error.message},null,8,["title","text"])):A("",!0),(Xe=f_.value)!=null&&Xe.error?(s(),U(E(d),{key:6,class:"mb-4",variant:"text",onClick:Je},{default:o(()=>[R(C(E(T)("TXT_CODE_9277af78")),1)]),_:1})):A("",!0),$_.value?(s(),v("div",aT,[D(E(rE),{color:"primary",indeterminate:"",size:"28"})])):M.value&&M.value.fields.length?(s(),v("div",sT,[D(WE,{fields:M.value.fields,values:M.value.values,onSave:Ce},null,8,["fields","values"])])):(s(),v("div",oT,C(E(T)("TXT_CODE_PLUGIN_NO_CONFIG")),1))],64)):Y.value?A("",!0):(s(),v("div",LT,C(E(T)("TXT_CODE_NO_DATA")),1))])]),D(E(v_),{modelValue:_e.value,"onUpdate:modelValue":e[16]||(e[16]=I=>_e.value=I),persistent:Q.value,"max-width":"460"},{default:o(()=>{var I,p;return[D(E(S_),{title:E(T)(((I=i.value)==null?void 0:I.action)==="remove"?"TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE":"TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE",{name:L((p=i.value)==null?void 0:p.plugin.id)}),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(E(X_),null,{default:o(()=>{var __;return[R(C(E(T)(((__=i.value)==null?void 0:__.action)==="remove"?"TXT_CODE_PLUGIN_DELETE_CONFIRM":"TXT_CODE_PLUGIN_DISABLE_CONFIRM")),1)]}),_:1}),D(E(A_),null,{default:o(()=>{var __,De,Ae;return[D(E(b_)),D(E(d),{variant:"text",disabled:Q.value,onClick:e[15]||(e[15]=Ne=>_e.value=!1)},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(E(d),{color:"error","prepend-icon":((__=i.value)==null?void 0:__.action)==="remove"?"mdi-delete":void 0,loading:Q.value||((De=i.value)==null?void 0:De.checkingNodes),disabled:(Ae=i.value)==null?void 0:Ae.checkingNodes,onClick:ce},{default:o(()=>{var Ne;return[R(C(E(T)(((Ne=i.value)==null?void 0:Ne.action)==="remove"?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DISABLE")),1)]}),_:1},8,["prepend-icon","loading","disabled"])]}),_:1})]),_:1},8,["title"])]}),_:1},8,["modelValue","persistent"]),D(E(v_),{modelValue:ee.value,"onUpdate:modelValue":e[19]||(e[19]=I=>ee.value=I),persistent:Q.value,"max-width":"480"},{default:o(()=>[D(E(S_),{title:E(T)("TXT_CODE_PLUGIN_NODE_SELECT")},{default:o(()=>[i.value?(s(),U(E(X_),{key:0},{default:o(()=>[i.value.nodeTargets.length?(s(),v("div",OT,C(E(T)(i.value.action==="remove"?"TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM":"TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM")),1)):A("",!0),i.value.nodeCheckError?(s(),U(E(o_),{key:1,class:"mb-2",type:"warning",variant:"tonal",text:i.value.nodeCheckError},null,8,["text"])):A("",!0),(s(!0),v(n_,null,y_(i.value.nodeTargets,I=>(s(),U(E(cE),{key:I.node.uuid,modelValue:i.value.selectedNodeIds,"onUpdate:modelValue":e[17]||(e[17]=p=>i.value.selectedNodeIds=p),value:I.node.uuid,label:a(I.node),disabled:Q.value||i.value.action==="remove"&&!I.plugin.removable,messages:i.value.action==="remove"&&!I.plugin.removable?E(T)("TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"):void 0,"hide-details":i.value.action!=="remove"||I.plugin.removable,density:"compact"},null,8,["modelValue","value","label","disabled","messages","hide-details"]))),128))]),_:1})):A("",!0),D(E(A_),null,{default:o(()=>[D(E(b_)),D(E(d),{variant:"text",disabled:Q.value,onClick:e[18]||(e[18]=I=>ee.value=!1)},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(E(d),{color:"primary",loading:Q.value,onClick:ce},{default:o(()=>[R(C(E(T)("TXT_CODE_d507abff")),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue","persistent"]),D(E(v_),{modelValue:P_.value,"onUpdate:modelValue":e[22]||(e[22]=I=>P_.value=I),"max-width":"460"},{default:o(()=>[D(E(S_),{title:E(T)("TXT_CODE_PLUGIN_GROUP_EDIT"),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(E(X_),null,{default:o(()=>[D(E(l_),{modelValue:G_.value,"onUpdate:modelValue":e[20]||(e[20]=I=>G_.value=I),autofocus:"",label:E(T)("TXT_CODE_PLUGIN_GROUP_NAME"),"hide-details":"",onKeyup:ve(Le,["enter"])},null,8,["modelValue","label"])]),_:1}),D(E(A_),null,{default:o(()=>[D(E(b_)),D(E(d),{variant:"text",onClick:e[21]||(e[21]=I=>P_.value=!1)},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1}),D(E(d),{color:"primary",disabled:!G_.value.trim(),onClick:Le},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_SAVE_SETTINGS")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]),D(E(v_),{modelValue:U_.value,"onUpdate:modelValue":e[24]||(e[24]=I=>U_.value=I),"max-width":"460"},{default:o(()=>{var I;return[D(E(S_),{title:E(T)("TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE",{name:((I=R_.value)==null?void 0:I.name)||""}),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(E(X_),null,{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM")),1)]),_:1}),D(E(A_),null,{default:o(()=>[D(E(b_)),D(E(d),{variant:"text",onClick:e[23]||(e[23]=p=>U_.value=!1)},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1}),D(E(d),{color:"error",onClick:Ke},{default:o(()=>[R(C(E(T)("TXT_CODE_PLUGIN_GROUP_DELETE")),1)]),_:1})]),_:1})]),_:1},8,["title"])]}),_:1},8,["modelValue"])]}),_:1}))}});const Q_=Be(lT,[["__scopeId","data-v-a0aee928"]]),iT="Möchtest du das entsprechende Plugin auch auf den folgenden Knoten deaktivieren? Wähle die gewünschten Knoten aus.",CT="Möchtest du das entsprechende Plugin auch von den folgenden Knoten entfernen? Wähle die gewünschten Knoten aus.",PT="Die Plugins auf diesen Knoten konnten nicht geprüft werden: {nodes}.",GT="Die Plugin-Aktion wurde auf diesen Knoten nicht abgeschlossen: {nodes}",UT="Plugin-Konfiguration",uT="Abbrechen",rT="Entfernen",cT="Die npm-Abhängigkeit wird deinstalliert. Gespeicherte Einstellungen bleiben erhalten.",dT="{name} entfernen?",XT="Kernplugins und Quellcode-Plugins können hier nicht deinstalliert werden.",AT="Plugin entfernt",ST="Einstellungen speichern",vT="Denke daran, deine Einstellungen zu speichern!",pT="Deaktivieren",RT="Plugin deaktiviert",gT="Alles, was dieses Plugin bereitstellt, wird sofort entfernt.",mT="{name} deaktivieren?",$T="Aktivieren",FT="Plugin aktiviert",fT="Der Webserver kann nicht über das Panel deaktiviert werden, das er selbst bereitstellt. Setze stattdessen plugins.server.enabled auf false in seiner data/plugin-overrides.json.",MT="Dieses Plugin ist deaktiviert. Seine Seiten, Routen und API sind erst nach dem Aktivieren wieder verfügbar.",bT="Dieses Plugin konnte nicht geladen werden",BT="Die Plugins dieses Knotens konnten nicht aufgelistet werden.",yT="Dieser Knoten existiert nicht.",kT="nicht verbunden",VT="Knoten auswählen",hT="Dieses Plugin hat keine konfigurierbaren Optionen.",wT="Nicht zugeordnet",xT="Gruppe hinzufügen",KT="Plugin-Gruppe bearbeiten",QT="Gruppe umbenennen",HT="Gruppe löschen",zT="Gruppe {name} löschen?",qT="Die Gruppe und ihre Plugin-Zuordnungen werden entfernt. Die Plugins selbst werden nicht gelöscht.",jT="Gruppenname",WT="Knoten",JT="Panel",YT="Die Plugin-Verwaltung kann sich nicht selbst deaktivieren. Setze stattdessen plugins.config.enabled auf false in ihrer data/plugin-overrides.json.",ZT="Wartet auf Abhängigkeiten",_n="Deaktiviert",en="Wird geladen",En="Aktiv",Tn="Wird entladen",nn="Starten Sie den Dienst neu, um die Änderung anzuwenden.",tn="Gespeichert; wartet auf Plugin-Abhängigkeiten.",Dn="Browser-Plugin fehlgeschlagen",Nn="Laden Sie die Seite neu, um die aktualisierte Browser-Laufzeit zu laden.",In="Plugin installieren / aktualisieren",an="npm-Paketname",sn="Version oder Tag (Standard: latest)",on="Plugin installiert und synchronisiert",Ln={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:iT,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:CT,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:PT,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:GT,TXT_CODE_PLUGIN_CONFIG:UT,TXT_CODE_PLUGIN_CANCEL:uT,TXT_CODE_PLUGIN_DELETE:rT,TXT_CODE_PLUGIN_DELETE_CONFIRM:cT,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:dT,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:XT,TXT_CODE_PLUGIN_DELETED:AT,TXT_CODE_PLUGIN_SAVE_SETTINGS:ST,TXT_CODE_PLUGIN_SAVE_REMINDER:vT,TXT_CODE_PLUGIN_DISABLE:pT,TXT_CODE_PLUGIN_DISABLED:RT,TXT_CODE_PLUGIN_DISABLE_CONFIRM:gT,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:mT,TXT_CODE_PLUGIN_ENABLE:$T,TXT_CODE_PLUGIN_ENABLED:FT,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:fT,TXT_CODE_PLUGIN_IS_DISABLED:MT,TXT_CODE_PLUGIN_LOAD_FAILED:bT,TXT_CODE_PLUGIN_NODE_LIST_FAILED:BT,TXT_CODE_PLUGIN_NODE_NOT_FOUND:yT,TXT_CODE_PLUGIN_NODE_OFFLINE:kT,TXT_CODE_PLUGIN_NODE_SELECT:VT,TXT_CODE_PLUGIN_NO_CONFIG:hT,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:wT,TXT_CODE_PLUGIN_GROUP_ADD:xT,TXT_CODE_PLUGIN_GROUP_EDIT:KT,TXT_CODE_PLUGIN_GROUP_RENAME:QT,TXT_CODE_PLUGIN_GROUP_DELETE:HT,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:zT,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:qT,TXT_CODE_PLUGIN_GROUP_NAME:jT,TXT_CODE_PLUGIN_SCOPE_NODE:WT,TXT_CODE_PLUGIN_SCOPE_PANEL:JT,TXT_CODE_PLUGIN_SELF_DISABLE:YT,TXT_CODE_PLUGIN_STATE_PENDING:ZT,TXT_CODE_PLUGIN_STATE_DISABLED:_n,TXT_CODE_PLUGIN_STATE_LOADING:en,TXT_CODE_PLUGIN_STATE_ACTIVE:En,TXT_CODE_PLUGIN_STATE_UNLOADING:Tn,TXT_CODE_PLUGIN_RESTART_REQUIRED:nn,TXT_CODE_PLUGIN_SAVED_PENDING:tn,TXT_CODE_PLUGIN_FRONTEND_FAILED:Dn,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Nn,TXT_CODE_PLUGIN_NPM_INSTALL:In,TXT_CODE_PLUGIN_NPM_PACKAGE:an,TXT_CODE_PLUGIN_NPM_VERSION:sn,TXT_CODE_PLUGIN_NPM_INSTALLED:on},On="Also disable the matching plugin on the following nodes? Select the nodes to include.",ln="Also remove the matching plugin from the following nodes? Select the nodes to include.",Cn="Could not check the plugins on these nodes: {nodes}.",Pn="The plugin action did not complete on these nodes: {nodes}",Gn="Plugin Configuration",Un="Cancel",un="Remove",rn="The npm dependency will be uninstalled. Saved configuration is kept.",cn="Remove {name}?",dn="Core plugins and development source plugins cannot be uninstalled here.",Xn="Plugin removed",An="Save settings",Sn="Remember to save your settings!",vn="Disable",pn="Plugin disabled",Rn="Everything this plugin provides is removed at once.",gn="Disable {name}?",mn="Enable",$n="Plugin enabled",Fn="The web server cannot be disabled from the panel it serves. Set plugins.server.enabled to false in its data/plugin-overrides.json instead.",fn="This plugin is disabled. Its pages, routes and API are unavailable until it is enabled again.",Mn="This plugin failed to load",bn="This node's plugins could not be listed.",Bn="That node does not exist.",yn="not connected",kn="Select a node",Vn="This plugin has no configurable options.",hn="Unassigned",wn="Add group",xn="Edit plugin group",Kn="Rename group",Qn="Delete group",Hn="Delete group {name}?",zn="The group and its plugin assignments will be removed. The plugins themselves will not be deleted.",qn="Group name",jn="Nodes",Wn="Panel",Jn="The plugin manager cannot disable itself. Set plugins.config.enabled to false in its data/plugin-overrides.json instead.",Yn="Waiting for dependencies",Zn="Disabled",_t="Loading",et="Running",Et="Unloading",Tt="Restart the service to apply this change.",nt="Saved; waiting for plugin dependencies.",tt="Browser plugin failed",Dt="Refresh the page to load the updated browser runtime.",Nt="Install / update plugin",It="npm package name",at="Version or tag (latest by default)",st="Plugin installed and synchronized",ot={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:On,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:ln,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:Cn,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:Pn,TXT_CODE_PLUGIN_CONFIG:Gn,TXT_CODE_PLUGIN_CANCEL:Un,TXT_CODE_PLUGIN_DELETE:un,TXT_CODE_PLUGIN_DELETE_CONFIRM:rn,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:cn,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:dn,TXT_CODE_PLUGIN_DELETED:Xn,TXT_CODE_PLUGIN_SAVE_SETTINGS:An,TXT_CODE_PLUGIN_SAVE_REMINDER:Sn,TXT_CODE_PLUGIN_DISABLE:vn,TXT_CODE_PLUGIN_DISABLED:pn,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Rn,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:gn,TXT_CODE_PLUGIN_ENABLE:mn,TXT_CODE_PLUGIN_ENABLED:$n,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:Fn,TXT_CODE_PLUGIN_IS_DISABLED:fn,TXT_CODE_PLUGIN_LOAD_FAILED:Mn,TXT_CODE_PLUGIN_NODE_LIST_FAILED:bn,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Bn,TXT_CODE_PLUGIN_NODE_OFFLINE:yn,TXT_CODE_PLUGIN_NODE_SELECT:kn,TXT_CODE_PLUGIN_NO_CONFIG:Vn,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:hn,TXT_CODE_PLUGIN_GROUP_ADD:wn,TXT_CODE_PLUGIN_GROUP_EDIT:xn,TXT_CODE_PLUGIN_GROUP_RENAME:Kn,TXT_CODE_PLUGIN_GROUP_DELETE:Qn,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Hn,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:zn,TXT_CODE_PLUGIN_GROUP_NAME:qn,TXT_CODE_PLUGIN_SCOPE_NODE:jn,TXT_CODE_PLUGIN_SCOPE_PANEL:Wn,TXT_CODE_PLUGIN_SELF_DISABLE:Jn,TXT_CODE_PLUGIN_STATE_PENDING:Yn,TXT_CODE_PLUGIN_STATE_DISABLED:Zn,TXT_CODE_PLUGIN_STATE_LOADING:_t,TXT_CODE_PLUGIN_STATE_ACTIVE:et,TXT_CODE_PLUGIN_STATE_UNLOADING:Et,TXT_CODE_PLUGIN_RESTART_REQUIRED:Tt,TXT_CODE_PLUGIN_SAVED_PENDING:nt,TXT_CODE_PLUGIN_FRONTEND_FAILED:tt,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Dt,TXT_CODE_PLUGIN_NPM_INSTALL:Nt,TXT_CODE_PLUGIN_NPM_PACKAGE:It,TXT_CODE_PLUGIN_NPM_VERSION:at,TXT_CODE_PLUGIN_NPM_INSTALLED:st},Lt="¿Quieres desactivar también el complemento correspondiente en los siguientes nodos? Selecciona los nodos que quieras incluir.",Ot="¿Quieres eliminar también el complemento correspondiente de los siguientes nodos? Selecciona los nodos que quieras incluir.",lt="No se pudieron comprobar los complementos de estos nodos: {nodes}.",it="La operación del complemento no se completó en estos nodos: {nodes}",Ct="Configuracion de plugins",Pt="Cancelar",Gt="Eliminar",Ut="Se desinstalará la dependencia npm. Se conservará la configuración guardada.",ut="¿Eliminar {name}?",rt="Los complementos principales y de código fuente no se pueden desinstalar aquí.",ct="Complemento eliminado",dt="Guardar configuración",Xt="¡Recuerda guardar la configuración!",At="Desactivar",St="Complemento desactivado",vt="Todo lo que aporta este complemento se elimina de inmediato.",pt="¿Desactivar {name}?",Rt="Activar",gt="Complemento activado",mt="El servidor web no puede desactivarse desde el panel que él mismo sirve. Establece plugins.server.enabled en false en su data/plugin-overrides.json.",$t="Este complemento está desactivado. Sus páginas, rutas y API no están disponibles hasta que se vuelva a activar.",Ft="No se pudo cargar este complemento",ft="No se pudieron listar los complementos de este nodo.",Mt="Ese nodo no existe.",bt="sin conexión",Bt="Seleccionar un nodo",yt="Este plugin no tiene opciones configurables.",kt="Sin asignar",Vt="Añadir grupo",ht="Editar grupo de plugins",wt="Cambiar nombre del grupo",xt="Eliminar grupo",Kt="¿Eliminar el grupo {name}?",Qt="Se eliminarán el grupo y sus asignaciones de plugins. Los plugins no se eliminarán.",Ht="Nombre del grupo",zt="Nodos",qt="Panel",jt="El gestor de complementos no puede desactivarse a sí mismo. Establece plugins.config.enabled en false en su data/plugin-overrides.json.",Wt="Esperando dependencias",Jt="Desactivado",Yt="Cargando",Zt="En ejecución",_D="Descargando",eD="Reinicia el servicio para aplicar el cambio.",ED="Guardado; esperando dependencias del complemento.",TD="Error del complemento del navegador",nD="Recarga la página para cargar el entorno actualizado del navegador.",tD="Instalar / actualizar complemento",DD="Nombre del paquete npm",ND="Versión o etiqueta (latest por defecto)",ID="Complemento instalado y sincronizado",aD={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:Lt,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:Ot,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:lt,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:it,TXT_CODE_PLUGIN_CONFIG:Ct,TXT_CODE_PLUGIN_CANCEL:Pt,TXT_CODE_PLUGIN_DELETE:Gt,TXT_CODE_PLUGIN_DELETE_CONFIRM:Ut,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:ut,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:rt,TXT_CODE_PLUGIN_DELETED:ct,TXT_CODE_PLUGIN_SAVE_SETTINGS:dt,TXT_CODE_PLUGIN_SAVE_REMINDER:Xt,TXT_CODE_PLUGIN_DISABLE:At,TXT_CODE_PLUGIN_DISABLED:St,TXT_CODE_PLUGIN_DISABLE_CONFIRM:vt,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:pt,TXT_CODE_PLUGIN_ENABLE:Rt,TXT_CODE_PLUGIN_ENABLED:gt,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:mt,TXT_CODE_PLUGIN_IS_DISABLED:$t,TXT_CODE_PLUGIN_LOAD_FAILED:Ft,TXT_CODE_PLUGIN_NODE_LIST_FAILED:ft,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Mt,TXT_CODE_PLUGIN_NODE_OFFLINE:bt,TXT_CODE_PLUGIN_NODE_SELECT:Bt,TXT_CODE_PLUGIN_NO_CONFIG:yt,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:kt,TXT_CODE_PLUGIN_GROUP_ADD:Vt,TXT_CODE_PLUGIN_GROUP_EDIT:ht,TXT_CODE_PLUGIN_GROUP_RENAME:wt,TXT_CODE_PLUGIN_GROUP_DELETE:xt,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Kt,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Qt,TXT_CODE_PLUGIN_GROUP_NAME:Ht,TXT_CODE_PLUGIN_SCOPE_NODE:zt,TXT_CODE_PLUGIN_SCOPE_PANEL:qt,TXT_CODE_PLUGIN_SELF_DISABLE:jt,TXT_CODE_PLUGIN_STATE_PENDING:Wt,TXT_CODE_PLUGIN_STATE_DISABLED:Jt,TXT_CODE_PLUGIN_STATE_LOADING:Yt,TXT_CODE_PLUGIN_STATE_ACTIVE:Zt,TXT_CODE_PLUGIN_STATE_UNLOADING:_D,TXT_CODE_PLUGIN_RESTART_REQUIRED:eD,TXT_CODE_PLUGIN_SAVED_PENDING:ED,TXT_CODE_PLUGIN_FRONTEND_FAILED:TD,TXT_CODE_PLUGIN_REFRESH_REQUIRED:nD,TXT_CODE_PLUGIN_NPM_INSTALL:tD,TXT_CODE_PLUGIN_NPM_PACKAGE:DD,TXT_CODE_PLUGIN_NPM_VERSION:ND,TXT_CODE_PLUGIN_NPM_INSTALLED:ID},sD="Voulez-vous aussi désactiver le plugin correspondant sur les nœuds suivants ? Sélectionnez les nœuds à inclure.",oD="Voulez-vous aussi supprimer le plugin correspondant des nœuds suivants ? Sélectionnez les nœuds à inclure.",LD="Impossible de vérifier les plugins sur ces nœuds : {nodes}.",OD="L’opération sur le plugin n’a pas abouti sur ces nœuds : {nodes}",lD="Configuration des plugins",iD="Annuler",CD="Supprimer",PD="La dépendance npm sera désinstallée. La configuration enregistrée sera conservée.",GD="Supprimer {name} ?",UD="Les plugins essentiels et ceux du code source ne peuvent pas être désinstallés ici.",uD="Plugin supprimé",rD="Enregistrer la configuration",cD="Pensez à enregistrer la configuration !",dD="Désactiver",XD="Extension désactivée",AD="Tout ce que cette extension fournit est retiré immédiatement.",SD="Désactiver {name} ?",vD="Activer",pD="Extension activée",RD="Le serveur web ne peut pas être désactivé depuis le panneau qu il sert lui-même. Définissez plutôt plugins.server.enabled à false dans son data/plugin-overrides.json.",gD="Cette extension est désactivée. Ses pages, routes et API ne sont pas disponibles avant sa réactivation.",mD="Le chargement de cette extension a échoué",$D="Impossible de lister les extensions de ce nœud.",FD="Ce nœud n existe pas.",fD="non connecté",MD="Sélectionner un nœud",bD="Ce plugin ne comporte aucune option configurable.",BD="Non attribués",yD="Ajouter un groupe",kD="Modifier le groupe de plugins",VD="Renommer le groupe",hD="Supprimer le groupe",wD="Supprimer le groupe {name} ?",xD="Le groupe et ses affectations de plugins seront supprimés. Les plugins eux-mêmes ne seront pas supprimés.",KD="Nom du groupe",QD="Nœuds",HD="Panneau",zD="Le gestionnaire d extensions ne peut pas se désactiver lui-même. Définissez plutôt plugins.config.enabled à false dans son data/plugin-overrides.json.",qD="En attente des dépendances",jD="Désactivé",WD="Chargement",JD="Actif",YD="Déchargement",ZD="Redémarrez le service pour appliquer cette modification.",_N="Enregistré ; en attente des dépendances du plugin.",eN="Échec du plugin du navigateur",EN="Actualisez la page pour charger le nouvel environnement du navigateur.",TN="Installer / mettre à jour le plugin",nN="Nom du paquet npm",tN="Version ou étiquette (latest par défaut)",DN="Plugin installé et synchronisé",NN={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:sD,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:oD,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:LD,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:OD,TXT_CODE_PLUGIN_CONFIG:lD,TXT_CODE_PLUGIN_CANCEL:iD,TXT_CODE_PLUGIN_DELETE:CD,TXT_CODE_PLUGIN_DELETE_CONFIRM:PD,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:GD,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:UD,TXT_CODE_PLUGIN_DELETED:uD,TXT_CODE_PLUGIN_SAVE_SETTINGS:rD,TXT_CODE_PLUGIN_SAVE_REMINDER:cD,TXT_CODE_PLUGIN_DISABLE:dD,TXT_CODE_PLUGIN_DISABLED:XD,TXT_CODE_PLUGIN_DISABLE_CONFIRM:AD,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:SD,TXT_CODE_PLUGIN_ENABLE:vD,TXT_CODE_PLUGIN_ENABLED:pD,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:RD,TXT_CODE_PLUGIN_IS_DISABLED:gD,TXT_CODE_PLUGIN_LOAD_FAILED:mD,TXT_CODE_PLUGIN_NODE_LIST_FAILED:$D,TXT_CODE_PLUGIN_NODE_NOT_FOUND:FD,TXT_CODE_PLUGIN_NODE_OFFLINE:fD,TXT_CODE_PLUGIN_NODE_SELECT:MD,TXT_CODE_PLUGIN_NO_CONFIG:bD,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:BD,TXT_CODE_PLUGIN_GROUP_ADD:yD,TXT_CODE_PLUGIN_GROUP_EDIT:kD,TXT_CODE_PLUGIN_GROUP_RENAME:VD,TXT_CODE_PLUGIN_GROUP_DELETE:hD,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:wD,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:xD,TXT_CODE_PLUGIN_GROUP_NAME:KD,TXT_CODE_PLUGIN_SCOPE_NODE:QD,TXT_CODE_PLUGIN_SCOPE_PANEL:HD,TXT_CODE_PLUGIN_SELF_DISABLE:zD,TXT_CODE_PLUGIN_STATE_PENDING:qD,TXT_CODE_PLUGIN_STATE_DISABLED:jD,TXT_CODE_PLUGIN_STATE_LOADING:WD,TXT_CODE_PLUGIN_STATE_ACTIVE:JD,TXT_CODE_PLUGIN_STATE_UNLOADING:YD,TXT_CODE_PLUGIN_RESTART_REQUIRED:ZD,TXT_CODE_PLUGIN_SAVED_PENDING:_N,TXT_CODE_PLUGIN_FRONTEND_FAILED:eN,TXT_CODE_PLUGIN_REFRESH_REQUIRED:EN,TXT_CODE_PLUGIN_NPM_INSTALL:TN,TXT_CODE_PLUGIN_NPM_PACKAGE:nN,TXT_CODE_PLUGIN_NPM_VERSION:tN,TXT_CODE_PLUGIN_NPM_INSTALLED:DN},IN="以下のノードにある同じプラグインも無効にしますか?対象のノードを選択してください。",aN="以下のノードにある同じプラグインも削除しますか?対象のノードを選択してください。",sN="以下のノードのプラグインを確認できませんでした:{nodes}。",oN="以下のノードでプラグインの操作が完了しませんでした:{nodes}",LN="プラグイン設定",ON="キャンセル",lN="削除",iN="npm 依存パッケージをアンインストールします。保存済みの設定は保持されます。",CN="{name} を削除しますか?",PN="コアプラグインと開発用ソースプラグインはここではアンインストールできません。",GN="プラグインを削除しました",UN="設定を保存",uN="設定の保存をお忘れなく!",rN="無効化",cN="プラグインを無効にしました",dN="このプラグインが提供するすべての要素が即座に削除されます。",XN="{name} を無効にしますか?",AN="有効化",SN="プラグインを有効にしました",vN="Web サーバーは、それ自身が配信しているパネルからは無効にできません。data/plugin-overrides.json で plugins.server.enabled を false に設定してください。",pN="このプラグインは無効です。再度有効にするまで、ページ・ルート・API は利用できません。",RN="このプラグインの読み込みに失敗しました",gN="このノードのプラグイン一覧を取得できませんでした。",mN="そのノードは存在しません。",$N="未接続",FN="ノードを選択",fN="このプラグインには設定可能な項目がありません。",MN="未分類",bN="グループを追加",BN="プラグイン グループを編集",yN="グループ名を変更",kN="グループを削除",VN="グループ「{name}」を削除しますか?",hN="グループとプラグインの割り当てを削除します。プラグイン自体は削除されません。",wN="グループ名",xN="ノード",KN="パネル",QN="プラグイン管理自身は無効にできません。data/plugin-overrides.json で plugins.config.enabled を false に設定してください。",HN="依存関係を待機中",zN="無効",qN="読み込み中",jN="実行中",WN="アンロード中",JN="変更を適用するにはサービスを再起動してください。",YN="保存しました。プラグインの依存関係を待機しています。",ZN="ブラウザープラグインの読み込みに失敗しました",_I="更新されたブラウザーランタイムを読み込むにはページを再読み込みしてください。",eI="プラグインのインストール / 更新",EI="npm パッケージ名",TI="バージョンまたはタグ(既定: latest)",nI="プラグインをインストールして同期しました",tI={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:IN,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:aN,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:sN,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:oN,TXT_CODE_PLUGIN_CONFIG:LN,TXT_CODE_PLUGIN_CANCEL:ON,TXT_CODE_PLUGIN_DELETE:lN,TXT_CODE_PLUGIN_DELETE_CONFIRM:iN,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:CN,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:PN,TXT_CODE_PLUGIN_DELETED:GN,TXT_CODE_PLUGIN_SAVE_SETTINGS:UN,TXT_CODE_PLUGIN_SAVE_REMINDER:uN,TXT_CODE_PLUGIN_DISABLE:rN,TXT_CODE_PLUGIN_DISABLED:cN,TXT_CODE_PLUGIN_DISABLE_CONFIRM:dN,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:XN,TXT_CODE_PLUGIN_ENABLE:AN,TXT_CODE_PLUGIN_ENABLED:SN,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:vN,TXT_CODE_PLUGIN_IS_DISABLED:pN,TXT_CODE_PLUGIN_LOAD_FAILED:RN,TXT_CODE_PLUGIN_NODE_LIST_FAILED:gN,TXT_CODE_PLUGIN_NODE_NOT_FOUND:mN,TXT_CODE_PLUGIN_NODE_OFFLINE:$N,TXT_CODE_PLUGIN_NODE_SELECT:FN,TXT_CODE_PLUGIN_NO_CONFIG:fN,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:MN,TXT_CODE_PLUGIN_GROUP_ADD:bN,TXT_CODE_PLUGIN_GROUP_EDIT:BN,TXT_CODE_PLUGIN_GROUP_RENAME:yN,TXT_CODE_PLUGIN_GROUP_DELETE:kN,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:VN,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:hN,TXT_CODE_PLUGIN_GROUP_NAME:wN,TXT_CODE_PLUGIN_SCOPE_NODE:xN,TXT_CODE_PLUGIN_SCOPE_PANEL:KN,TXT_CODE_PLUGIN_SELF_DISABLE:QN,TXT_CODE_PLUGIN_STATE_PENDING:HN,TXT_CODE_PLUGIN_STATE_DISABLED:zN,TXT_CODE_PLUGIN_STATE_LOADING:qN,TXT_CODE_PLUGIN_STATE_ACTIVE:jN,TXT_CODE_PLUGIN_STATE_UNLOADING:WN,TXT_CODE_PLUGIN_RESTART_REQUIRED:JN,TXT_CODE_PLUGIN_SAVED_PENDING:YN,TXT_CODE_PLUGIN_FRONTEND_FAILED:ZN,TXT_CODE_PLUGIN_REFRESH_REQUIRED:_I,TXT_CODE_PLUGIN_NPM_INSTALL:eI,TXT_CODE_PLUGIN_NPM_PACKAGE:EI,TXT_CODE_PLUGIN_NPM_VERSION:TI,TXT_CODE_PLUGIN_NPM_INSTALLED:nI},DI="다음 노드의 동일한 플러그인도 비활성화할까요? 함께 처리할 노드를 선택하세요.",NI="다음 노드의 동일한 플러그인도 삭제할까요? 함께 처리할 노드를 선택하세요.",II="다음 노드의 플러그인을 확인할 수 없습니다: {nodes}.",aI="다음 노드에서 플러그인 작업이 완료되지 않았습니다: {nodes}",sI="플러그인 설정",oI="취소",LI="삭제",OI="npm 의존성을 제거합니다. 저장된 설정은 유지됩니다.",lI="{name} 플러그인을 삭제할까요?",iI="핵심 플러그인과 개발용 소스 플러그인은 여기서 제거할 수 없습니다.",CI="플러그인을 삭제했습니다",PI="설정 저장",GI="설정을 저장하는 것을 잊지 마세요!",UI="비활성화",uI="플러그인을 비활성화했습니다",rI="이 플러그인이 제공하는 모든 구성 요소가 즉시 제거됩니다.",cI="{name}을(를) 비활성화할까요?",dI="활성화",XI="플러그인을 활성화했습니다",AI="웹 서버는 자신이 제공하는 패널에서 비활성화할 수 없습니다. data/plugin-overrides.json에서 plugins.server.enabled 를 false 로 설정하세요.",SI="이 플러그인은 비활성화되어 있습니다. 다시 활성화할 때까지 페이지, 경로, API를 사용할 수 없습니다.",vI="이 플러그인을 불러오지 못했습니다",pI="이 노드의 플러그인 목록을 가져올 수 없습니다.",RI="해당 노드가 존재하지 않습니다.",gI="연결되지 않음",mI="노드 선택",$I="이 플러그인에는 구성 가능한 옵션이 없습니다.",FI="미분류",fI="그룹 추가",MI="플러그인 그룹 편집",bI="그룹 이름 변경",BI="그룹 삭제",yI="{name} 그룹을 삭제하시겠습니까?",kI="그룹과 플러그인 할당이 삭제됩니다. 플러그인 자체는 삭제되지 않습니다.",VI="그룹 이름",hI="노드",wI="패널",xI="플러그인 관리자는 자신을 비활성화할 수 없습니다. data/plugin-overrides.json에서 plugins.config.enabled 를 false 로 설정하세요.",KI="종속성 대기 중",QI="비활성",HI="로드 중",zI="실행 중",qI="언로드 중",jI="변경 사항을 적용하려면 서비스를 다시 시작하세요.",WI="저장되었습니다. 플러그인 종속성을 기다리는 중입니다.",JI="브라우저 플러그인 로드 실패",YI="업데이트된 브라우저 런타임을 로드하려면 페이지를 새로 고치세요.",ZI="플러그인 설치 / 업데이트",_a="npm 패키지 이름",ea="버전 또는 태그 (기본값: latest)",Ea="플러그인이 설치되고 동기화되었습니다",Ta={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:DI,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:NI,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:II,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:aI,TXT_CODE_PLUGIN_CONFIG:sI,TXT_CODE_PLUGIN_CANCEL:oI,TXT_CODE_PLUGIN_DELETE:LI,TXT_CODE_PLUGIN_DELETE_CONFIRM:OI,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:lI,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:iI,TXT_CODE_PLUGIN_DELETED:CI,TXT_CODE_PLUGIN_SAVE_SETTINGS:PI,TXT_CODE_PLUGIN_SAVE_REMINDER:GI,TXT_CODE_PLUGIN_DISABLE:UI,TXT_CODE_PLUGIN_DISABLED:uI,TXT_CODE_PLUGIN_DISABLE_CONFIRM:rI,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:cI,TXT_CODE_PLUGIN_ENABLE:dI,TXT_CODE_PLUGIN_ENABLED:XI,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:AI,TXT_CODE_PLUGIN_IS_DISABLED:SI,TXT_CODE_PLUGIN_LOAD_FAILED:vI,TXT_CODE_PLUGIN_NODE_LIST_FAILED:pI,TXT_CODE_PLUGIN_NODE_NOT_FOUND:RI,TXT_CODE_PLUGIN_NODE_OFFLINE:gI,TXT_CODE_PLUGIN_NODE_SELECT:mI,TXT_CODE_PLUGIN_NO_CONFIG:$I,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:FI,TXT_CODE_PLUGIN_GROUP_ADD:fI,TXT_CODE_PLUGIN_GROUP_EDIT:MI,TXT_CODE_PLUGIN_GROUP_RENAME:bI,TXT_CODE_PLUGIN_GROUP_DELETE:BI,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:yI,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:kI,TXT_CODE_PLUGIN_GROUP_NAME:VI,TXT_CODE_PLUGIN_SCOPE_NODE:hI,TXT_CODE_PLUGIN_SCOPE_PANEL:wI,TXT_CODE_PLUGIN_SELF_DISABLE:xI,TXT_CODE_PLUGIN_STATE_PENDING:KI,TXT_CODE_PLUGIN_STATE_DISABLED:QI,TXT_CODE_PLUGIN_STATE_LOADING:HI,TXT_CODE_PLUGIN_STATE_ACTIVE:zI,TXT_CODE_PLUGIN_STATE_UNLOADING:qI,TXT_CODE_PLUGIN_RESTART_REQUIRED:jI,TXT_CODE_PLUGIN_SAVED_PENDING:WI,TXT_CODE_PLUGIN_FRONTEND_FAILED:JI,TXT_CODE_PLUGIN_REFRESH_REQUIRED:YI,TXT_CODE_PLUGIN_NPM_INSTALL:ZI,TXT_CODE_PLUGIN_NPM_PACKAGE:_a,TXT_CODE_PLUGIN_NPM_VERSION:ea,TXT_CODE_PLUGIN_NPM_INSTALLED:Ea},na="Desativar também o plugin correspondente nos seguintes nós? Selecione os nós que deseja incluir.",ta="Remover também o plugin correspondente dos seguintes nós? Selecione os nós que deseja incluir.",Da="Não foi possível verificar os plugins nestes nós: {nodes}.",Na="A operação do plugin não foi concluída nestes nós: {nodes}",Ia="Configuracao de plugins",aa="Cancelar",sa="Remover",oa="A dependência npm será desinstalada. As configurações salvas serão mantidas.",La="Remover {name}?",Oa="Plugins essenciais e de código-fonte não podem ser desinstalados aqui.",la="Plugin removido",ia="Salvar configurações",Ca="Lembre-se de salvar as configurações!",Pa="Desativar",Ga="Plugin desativado",Ua="Tudo o que este plugin fornece é removido de imediato.",ua="Desativar {name}?",ra="Ativar",ca="Plugin ativado",da="O servidor web não pode ser desativado pelo painel que ele mesmo serve. Defina plugins.server.enabled como false no data/plugin-overrides.json dele.",Xa="Este plugin está desativado. Suas páginas, rotas e API ficam indisponíveis até ser ativado novamente.",Aa="Falha ao carregar este plugin",Sa="Não foi possível listar os plugins deste nó.",va="Esse nó não existe.",pa="não conectado",Ra="Selecionar um nó",ga="Este plugin nao possui opcoes configuraveis.",ma="Não atribuídos",$a="Adicionar grupo",Fa="Editar grupo de plugins",fa="Renomear grupo",Ma="Excluir grupo",ba="Excluir o grupo {name}?",Ba="O grupo e suas associações de plugins serão removidos. Os plugins não serão excluídos.",ya="Nome do grupo",ka="Nós",Va="Painel",ha="O gerenciador de plugins não pode desativar a si mesmo. Defina plugins.config.enabled como false no data/plugin-overrides.json dele.",wa="Aguardando dependências",xa="Desativado",Ka="Carregando",Qa="Em execução",Ha="Descarregando",za="Reinicie o serviço para aplicar a alteração.",qa="Salvo; aguardando dependências do plugin.",ja="Falha no plugin do navegador",Wa="Atualize a página para carregar o novo ambiente do navegador.",Ja="Instalar / atualizar plugin",Ya="Nome do pacote npm",Za="Versão ou tag (latest por padrão)",_s="Plugin instalado e sincronizado",es={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:na,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:ta,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:Da,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:Na,TXT_CODE_PLUGIN_CONFIG:Ia,TXT_CODE_PLUGIN_CANCEL:aa,TXT_CODE_PLUGIN_DELETE:sa,TXT_CODE_PLUGIN_DELETE_CONFIRM:oa,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:La,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:Oa,TXT_CODE_PLUGIN_DELETED:la,TXT_CODE_PLUGIN_SAVE_SETTINGS:ia,TXT_CODE_PLUGIN_SAVE_REMINDER:Ca,TXT_CODE_PLUGIN_DISABLE:Pa,TXT_CODE_PLUGIN_DISABLED:Ga,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Ua,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:ua,TXT_CODE_PLUGIN_ENABLE:ra,TXT_CODE_PLUGIN_ENABLED:ca,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:da,TXT_CODE_PLUGIN_IS_DISABLED:Xa,TXT_CODE_PLUGIN_LOAD_FAILED:Aa,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Sa,TXT_CODE_PLUGIN_NODE_NOT_FOUND:va,TXT_CODE_PLUGIN_NODE_OFFLINE:pa,TXT_CODE_PLUGIN_NODE_SELECT:Ra,TXT_CODE_PLUGIN_NO_CONFIG:ga,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:ma,TXT_CODE_PLUGIN_GROUP_ADD:$a,TXT_CODE_PLUGIN_GROUP_EDIT:Fa,TXT_CODE_PLUGIN_GROUP_RENAME:fa,TXT_CODE_PLUGIN_GROUP_DELETE:Ma,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:ba,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Ba,TXT_CODE_PLUGIN_GROUP_NAME:ya,TXT_CODE_PLUGIN_SCOPE_NODE:ka,TXT_CODE_PLUGIN_SCOPE_PANEL:Va,TXT_CODE_PLUGIN_SELF_DISABLE:ha,TXT_CODE_PLUGIN_STATE_PENDING:wa,TXT_CODE_PLUGIN_STATE_DISABLED:xa,TXT_CODE_PLUGIN_STATE_LOADING:Ka,TXT_CODE_PLUGIN_STATE_ACTIVE:Qa,TXT_CODE_PLUGIN_STATE_UNLOADING:Ha,TXT_CODE_PLUGIN_RESTART_REQUIRED:za,TXT_CODE_PLUGIN_SAVED_PENDING:qa,TXT_CODE_PLUGIN_FRONTEND_FAILED:ja,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Wa,TXT_CODE_PLUGIN_NPM_INSTALL:Ja,TXT_CODE_PLUGIN_NPM_PACKAGE:Ya,TXT_CODE_PLUGIN_NPM_VERSION:Za,TXT_CODE_PLUGIN_NPM_INSTALLED:_s},Es="Отключить соответствующий плагин также на следующих узлах? Выберите нужные узлы.",Ts="Удалить соответствующий плагин также со следующих узлов? Выберите нужные узлы.",ns="Не удалось проверить плагины на этих узлах: {nodes}.",ts="Операция с плагином не завершена на этих узлах: {nodes}",Ds="Настройка плагинов",Ns="Отмена",Is="Удалить",as="Зависимость npm будет удалена. Сохранённые настройки останутся.",ss="Удалить {name}?",os="Основные плагины и плагины из исходного кода нельзя удалить здесь.",Ls="Плагин удалён",Os="Сохранить настройки",ls="Не забудьте сохранить настройки!",is="Отключить",Cs="Плагин отключён",Ps="Всё, что предоставляет этот плагин, будет удалено сразу.",Gs="Отключить {name}?",Us="Включить",us="Плагин включён",rs="Веб-сервер нельзя отключить из панели, которую он сам и обслуживает. Укажите plugins.server.enabled: false в его data/plugin-overrides.json.",cs="Этот плагин отключён. Его страницы, маршруты и API недоступны, пока он не будет включён снова.",ds="Не удалось загрузить этот плагин",Xs="Не удалось получить список плагинов этого узла.",As="Такого узла не существует.",Ss="не подключён",vs="Выберите узел",ps="У этого плагина нет настраиваемых параметров.",Rs="Без группы",gs="Добавить группу",ms="Редактировать группу плагинов",$s="Переименовать группу",Fs="Удалить группу",fs="Удалить группу {name}?",Ms="Группа и привязанные к ней плагины будут удалены из списка. Сами плагины удалены не будут.",bs="Название группы",Bs="Узлы",ys="Панель",ks="Менеджер плагинов не может отключить сам себя. Укажите plugins.config.enabled: false в его data/plugin-overrides.json.",Vs="Ожидание зависимостей",hs="Отключён",ws="Загрузка",xs="Работает",Ks="Выгрузка",Qs="Перезапустите службу, чтобы применить изменение.",Hs="Сохранено; ожидание зависимостей плагина.",zs="Ошибка плагина браузера",qs="Обновите страницу для загрузки новой среды браузера.",js="Установить / обновить плагин",Ws="Имя пакета npm",Js="Версия или тег (по умолчанию latest)",Ys="Плагин установлен и синхронизирован",Zs={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:Es,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:Ts,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:ns,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:ts,TXT_CODE_PLUGIN_CONFIG:Ds,TXT_CODE_PLUGIN_CANCEL:Ns,TXT_CODE_PLUGIN_DELETE:Is,TXT_CODE_PLUGIN_DELETE_CONFIRM:as,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:ss,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:os,TXT_CODE_PLUGIN_DELETED:Ls,TXT_CODE_PLUGIN_SAVE_SETTINGS:Os,TXT_CODE_PLUGIN_SAVE_REMINDER:ls,TXT_CODE_PLUGIN_DISABLE:is,TXT_CODE_PLUGIN_DISABLED:Cs,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Ps,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:Gs,TXT_CODE_PLUGIN_ENABLE:Us,TXT_CODE_PLUGIN_ENABLED:us,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:rs,TXT_CODE_PLUGIN_IS_DISABLED:cs,TXT_CODE_PLUGIN_LOAD_FAILED:ds,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Xs,TXT_CODE_PLUGIN_NODE_NOT_FOUND:As,TXT_CODE_PLUGIN_NODE_OFFLINE:Ss,TXT_CODE_PLUGIN_NODE_SELECT:vs,TXT_CODE_PLUGIN_NO_CONFIG:ps,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:Rs,TXT_CODE_PLUGIN_GROUP_ADD:gs,TXT_CODE_PLUGIN_GROUP_EDIT:ms,TXT_CODE_PLUGIN_GROUP_RENAME:$s,TXT_CODE_PLUGIN_GROUP_DELETE:Fs,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:fs,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Ms,TXT_CODE_PLUGIN_GROUP_NAME:bs,TXT_CODE_PLUGIN_SCOPE_NODE:Bs,TXT_CODE_PLUGIN_SCOPE_PANEL:ys,TXT_CODE_PLUGIN_SELF_DISABLE:ks,TXT_CODE_PLUGIN_STATE_PENDING:Vs,TXT_CODE_PLUGIN_STATE_DISABLED:hs,TXT_CODE_PLUGIN_STATE_LOADING:ws,TXT_CODE_PLUGIN_STATE_ACTIVE:xs,TXT_CODE_PLUGIN_STATE_UNLOADING:Ks,TXT_CODE_PLUGIN_RESTART_REQUIRED:Qs,TXT_CODE_PLUGIN_SAVED_PENDING:Hs,TXT_CODE_PLUGIN_FRONTEND_FAILED:zs,TXT_CODE_PLUGIN_REFRESH_REQUIRED:qs,TXT_CODE_PLUGIN_NPM_INSTALL:js,TXT_CODE_PLUGIN_NPM_PACKAGE:Ws,TXT_CODE_PLUGIN_NPM_VERSION:Js,TXT_CODE_PLUGIN_NPM_INSTALLED:Ys},_o="ต้องการปิดใช้งานปลั๊กอินเดียวกันบนโหนดต่อไปนี้ด้วยหรือไม่? เลือกโหนดที่ต้องการดำเนินการด้วย",eo="ต้องการลบปลั๊กอินเดียวกันออกจากโหนดต่อไปนี้ด้วยหรือไม่? เลือกโหนดที่ต้องการดำเนินการด้วย",Eo="ไม่สามารถตรวจสอบปลั๊กอินบนโหนดเหล่านี้ได้: {nodes}",To="การดำเนินการกับปลั๊กอินบนโหนดเหล่านี้ไม่สำเร็จ: {nodes}",no="การกำหนดค่าปลั๊กอิน",to="ยกเลิก",Do="ลบ",No="จะถอนการติดตั้งแพ็กเกจ npm โดยเก็บการตั้งค่าที่บันทึกไว้",Io="ลบ {name} หรือไม่?",ao="ไม่สามารถถอนการติดตั้งปลั๊กอินหลักและปลั๊กอินซอร์สโค้ดที่นี่ได้",so="ลบปลั๊กอินแล้ว",oo="บันทึกการตั้งค่า",Lo="อย่าลืมบันทึกการตั้งค่า!",Oo="ปิดใช้งาน",lo="ปิดใช้งานปลั๊กอินแล้ว",io="ทุกอย่างที่ปลั๊กอินนี้ให้มาจะถูกลบออกทันที",Co="ปิดใช้งาน {name} หรือไม่?",Po="เปิดใช้งาน",Go="เปิดใช้งานปลั๊กอินแล้ว",Uo="ไม่สามารถปิดใช้งานเว็บเซิร์ฟเวอร์จากแผงควบคุมที่ตัวมันเองให้บริการอยู่ กรุณาตั้ง plugins.server.enabled เป็น false ใน data/plugin-overrides.json ของมันแทน",uo="ปลั๊กอินนี้ถูกปิดใช้งาน หน้า เส้นทาง และ API จะใช้ไม่ได้จนกว่าจะเปิดใช้งานอีกครั้ง",ro="โหลดปลั๊กอินนี้ไม่สำเร็จ",co="ไม่สามารถแสดงรายการปลั๊กอินของโหนดนี้ได้",Xo="ไม่มีโหนดนี้",Ao="ไม่ได้เชื่อมต่อ",So="เลือกโหนด",vo="ปลั๊กอินนี้ไม่มีตัวเลือกที่กำหนดค่าได้",po="ยังไม่ได้จัดกลุ่ม",Ro="เพิ่มกลุ่ม",go="แก้ไขกลุ่มปลั๊กอิน",mo="เปลี่ยนชื่อกลุ่ม",$o="ลบกลุ่ม",Fo="ลบกลุ่ม {name} หรือไม่",fo="กลุ่มและการกำหนดปลั๊กอินจะถูกลบ ปลั๊กอินจะไม่ถูกลบ",Mo="ชื่อกลุ่ม",bo="โหนด",Bo="แผงควบคุม",yo="ตัวจัดการปลั๊กอินปิดใช้งานตัวเองไม่ได้ กรุณาตั้ง plugins.config.enabled เป็น false ใน data/plugin-overrides.json ของมันแทน",ko="กำลังรอส่วนที่ต้องพึ่งพา",Vo="ปิดใช้งาน",ho="กำลังโหลด",wo="กำลังทำงาน",xo="กำลังยกเลิกการโหลด",Ko="รีสตาร์ทบริการเพื่อใช้การเปลี่ยนแปลงนี้",Qo="บันทึกแล้ว กำลังรอส่วนที่ปลั๊กอินต้องพึ่งพา",Ho="ปลั๊กอินเบราว์เซอร์ล้มเหลว",zo="รีเฟรชหน้าเพื่อโหลดรันไทม์เบราว์เซอร์ที่อัปเดต",qo="ติดตั้ง / อัปเดตปลั๊กอิน",jo="ชื่อแพ็กเกจ npm",Wo="เวอร์ชันหรือแท็ก (ค่าเริ่มต้น latest)",Jo="ติดตั้งและซิงค์ปลั๊กอินแล้ว",Yo={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:_o,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:eo,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:Eo,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:To,TXT_CODE_PLUGIN_CONFIG:no,TXT_CODE_PLUGIN_CANCEL:to,TXT_CODE_PLUGIN_DELETE:Do,TXT_CODE_PLUGIN_DELETE_CONFIRM:No,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:Io,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:ao,TXT_CODE_PLUGIN_DELETED:so,TXT_CODE_PLUGIN_SAVE_SETTINGS:oo,TXT_CODE_PLUGIN_SAVE_REMINDER:Lo,TXT_CODE_PLUGIN_DISABLE:Oo,TXT_CODE_PLUGIN_DISABLED:lo,TXT_CODE_PLUGIN_DISABLE_CONFIRM:io,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:Co,TXT_CODE_PLUGIN_ENABLE:Po,TXT_CODE_PLUGIN_ENABLED:Go,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:Uo,TXT_CODE_PLUGIN_IS_DISABLED:uo,TXT_CODE_PLUGIN_LOAD_FAILED:ro,TXT_CODE_PLUGIN_NODE_LIST_FAILED:co,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Xo,TXT_CODE_PLUGIN_NODE_OFFLINE:Ao,TXT_CODE_PLUGIN_NODE_SELECT:So,TXT_CODE_PLUGIN_NO_CONFIG:vo,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:po,TXT_CODE_PLUGIN_GROUP_ADD:Ro,TXT_CODE_PLUGIN_GROUP_EDIT:go,TXT_CODE_PLUGIN_GROUP_RENAME:mo,TXT_CODE_PLUGIN_GROUP_DELETE:$o,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Fo,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:fo,TXT_CODE_PLUGIN_GROUP_NAME:Mo,TXT_CODE_PLUGIN_SCOPE_NODE:bo,TXT_CODE_PLUGIN_SCOPE_PANEL:Bo,TXT_CODE_PLUGIN_SELF_DISABLE:yo,TXT_CODE_PLUGIN_STATE_PENDING:ko,TXT_CODE_PLUGIN_STATE_DISABLED:Vo,TXT_CODE_PLUGIN_STATE_LOADING:ho,TXT_CODE_PLUGIN_STATE_ACTIVE:wo,TXT_CODE_PLUGIN_STATE_UNLOADING:xo,TXT_CODE_PLUGIN_RESTART_REQUIRED:Ko,TXT_CODE_PLUGIN_SAVED_PENDING:Qo,TXT_CODE_PLUGIN_FRONTEND_FAILED:Ho,TXT_CODE_PLUGIN_REFRESH_REQUIRED:zo,TXT_CODE_PLUGIN_NPM_INSTALL:qo,TXT_CODE_PLUGIN_NPM_PACKAGE:jo,TXT_CODE_PLUGIN_NPM_VERSION:Wo,TXT_CODE_PLUGIN_NPM_INSTALLED:Jo},Zo="Aşağıdaki düğümlerdeki aynı eklenti de devre dışı bırakılsın mı? Dahil edilecek düğümleri seçin.",_L="Aşağıdaki düğümlerdeki aynı eklenti de kaldırılsın mı? Dahil edilecek düğümleri seçin.",eL="Bu düğümlerdeki eklentiler kontrol edilemedi: {nodes}.",EL="Bu düğümlerde eklenti işlemi tamamlanamadı: {nodes}",TL="Eklenti Yapilandirmasi",nL="Iptal",tL="Kaldır",DL="npm bağımlılığı kaldırılacak. Kaydedilen ayarlar korunacak.",NL="{name} kaldırılsın mı?",IL="Temel eklentiler ve kaynak kod eklentileri buradan kaldırılamaz.",aL="Eklenti kaldırıldı",sL="Ayarları kaydet",oL="Ayarları kaydetmeyi unutmayın!",LL="Devre dışı bırak",OL="Eklenti devre dışı bırakıldı",lL="Bu eklentinin sağladığı her şey hemen kaldırılır.",iL="{name} devre dışı bırakılsın mı?",CL="Etkinleştir",PL="Eklenti etkinleştirildi",GL="Web sunucusu, kendisinin sunduğu panel üzerinden devre dışı bırakılamaz. Bunun yerine data/plugin-overrides.json dosyasında plugins.server.enabled değerini false yapın.",UL="Bu eklenti devre dışı. Yeniden etkinleştirilene kadar sayfaları, yolları ve API si kullanılamaz.",uL="Bu eklenti yüklenemedi",rL="Bu düğümün eklentileri listelenemedi.",cL="Böyle bir düğüm yok.",dL="bağlı değil",XL="Bir düğüm seçin",AL="Bu eklentinin yapilandirilabilir secenegi yok.",SL="Atanmamış",vL="Grup ekle",pL="Eklenti grubunu düzenle",RL="Grubu yeniden adlandır",gL="Grubu sil",mL="{name} grubu silinsin mi?",$L="Grup ve eklenti atamaları kaldırılacak. Eklentilerin kendisi silinmeyecek.",FL="Grup adı",fL="Düğümler",ML="Panel",bL="Eklenti yöneticisi kendisini devre dışı bırakamaz. Bunun yerine data/plugin-overrides.json dosyasında plugins.config.enabled değerini false yapın.",BL="Bağımlılıklar bekleniyor",yL="Devre dışı",kL="Yükleniyor",VL="Çalışıyor",hL="Kaldırılıyor",wL="Değişikliği uygulamak için hizmeti yeniden başlatın.",xL="Kaydedildi; eklenti bağımlılıkları bekleniyor.",KL="Tarayıcı eklentisi başarısız oldu",QL="Güncellenen tarayıcı çalışma zamanını yüklemek için sayfayı yenileyin.",HL="Eklenti yükle / güncelle",zL="npm paket adı",qL="Sürüm veya etiket (varsayılan: latest)",jL="Eklenti yüklendi ve eşitlendi",WL={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:Zo,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:_L,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:eL,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:EL,TXT_CODE_PLUGIN_CONFIG:TL,TXT_CODE_PLUGIN_CANCEL:nL,TXT_CODE_PLUGIN_DELETE:tL,TXT_CODE_PLUGIN_DELETE_CONFIRM:DL,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:NL,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:IL,TXT_CODE_PLUGIN_DELETED:aL,TXT_CODE_PLUGIN_SAVE_SETTINGS:sL,TXT_CODE_PLUGIN_SAVE_REMINDER:oL,TXT_CODE_PLUGIN_DISABLE:LL,TXT_CODE_PLUGIN_DISABLED:OL,TXT_CODE_PLUGIN_DISABLE_CONFIRM:lL,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:iL,TXT_CODE_PLUGIN_ENABLE:CL,TXT_CODE_PLUGIN_ENABLED:PL,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:GL,TXT_CODE_PLUGIN_IS_DISABLED:UL,TXT_CODE_PLUGIN_LOAD_FAILED:uL,TXT_CODE_PLUGIN_NODE_LIST_FAILED:rL,TXT_CODE_PLUGIN_NODE_NOT_FOUND:cL,TXT_CODE_PLUGIN_NODE_OFFLINE:dL,TXT_CODE_PLUGIN_NODE_SELECT:XL,TXT_CODE_PLUGIN_NO_CONFIG:AL,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:SL,TXT_CODE_PLUGIN_GROUP_ADD:vL,TXT_CODE_PLUGIN_GROUP_EDIT:pL,TXT_CODE_PLUGIN_GROUP_RENAME:RL,TXT_CODE_PLUGIN_GROUP_DELETE:gL,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:mL,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:$L,TXT_CODE_PLUGIN_GROUP_NAME:FL,TXT_CODE_PLUGIN_SCOPE_NODE:fL,TXT_CODE_PLUGIN_SCOPE_PANEL:ML,TXT_CODE_PLUGIN_SELF_DISABLE:bL,TXT_CODE_PLUGIN_STATE_PENDING:BL,TXT_CODE_PLUGIN_STATE_DISABLED:yL,TXT_CODE_PLUGIN_STATE_LOADING:kL,TXT_CODE_PLUGIN_STATE_ACTIVE:VL,TXT_CODE_PLUGIN_STATE_UNLOADING:hL,TXT_CODE_PLUGIN_RESTART_REQUIRED:wL,TXT_CODE_PLUGIN_SAVED_PENDING:xL,TXT_CODE_PLUGIN_FRONTEND_FAILED:KL,TXT_CODE_PLUGIN_REFRESH_REQUIRED:QL,TXT_CODE_PLUGIN_NPM_INSTALL:HL,TXT_CODE_PLUGIN_NPM_PACKAGE:zL,TXT_CODE_PLUGIN_NPM_VERSION:qL,TXT_CODE_PLUGIN_NPM_INSTALLED:jL},JL="是否同时禁用以下节点上的对应插件?请勾选需要同步操作的节点。",YL="是否同时删除以下节点上的对应插件?请勾选需要同步操作的节点。",ZL="无法检查以下节点的插件:{nodes}。",_O="以下节点上的插件操作未完成:{nodes}",eO="插件配置",EO="取消",TO="删除插件",nO="将卸载此插件的 npm 依赖,保留已保存的配置。",tO="确定删除 {name}?",DO="核心插件和开发环境的源码插件无法在此卸载。",NO="插件已删除",IO="保存配置",aO="记得保存配置!",sO="禁用",oO="插件已禁用",LO="该插件提供的所有组件都会被立即移除。",OO="确定禁用 {name}?",lO="启用",iO="插件已启用",CO="Web 服务器无法从它自己提供的页面上禁用,请改为在其 data/plugin-overrides.json 中把 plugins.server.enabled 设为 false。",PO="此插件已禁用,重新启用前其页面、路由与接口均不可用。",GO="此插件加载失败",UO="无法读取该节点的插件列表。",uO="该节点不存在。",rO="未连接",cO="选择节点",dO="此插件没有可配置项",XO="未分组",AO="添加分组",SO="编辑插件分组",vO="重命名分组",pO="删除分组",RO="删除分组“{name}”?",gO="将删除该分组及其插件归属,插件本身不会被删除。",mO="分组名称",$O="节点",FO="面板",fO="插件管理自身无法被禁用,请改为在其 data/plugin-overrides.json 中把 plugins.config.enabled 设为 false。",MO="等待依赖",bO="已禁用",BO="加载中",yO="运行中",kO="卸载中",VO="需要重启服务才能应用此更改。",hO="已保存,正在等待插件依赖。",wO="浏览器插件加载失败",xO="需要刷新页面才能加载更新后的浏览器运行时。",KO="安装 / 更新插件",QO="npm 包名",HO="版本号或标签(默认 latest)",zO="插件已安装并同步",qO={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:JL,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:YL,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:ZL,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:_O,TXT_CODE_PLUGIN_CONFIG:eO,TXT_CODE_PLUGIN_CANCEL:EO,TXT_CODE_PLUGIN_DELETE:TO,TXT_CODE_PLUGIN_DELETE_CONFIRM:nO,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:tO,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:DO,TXT_CODE_PLUGIN_DELETED:NO,TXT_CODE_PLUGIN_SAVE_SETTINGS:IO,TXT_CODE_PLUGIN_SAVE_REMINDER:aO,TXT_CODE_PLUGIN_DISABLE:sO,TXT_CODE_PLUGIN_DISABLED:oO,TXT_CODE_PLUGIN_DISABLE_CONFIRM:LO,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:OO,TXT_CODE_PLUGIN_ENABLE:lO,TXT_CODE_PLUGIN_ENABLED:iO,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:CO,TXT_CODE_PLUGIN_IS_DISABLED:PO,TXT_CODE_PLUGIN_LOAD_FAILED:GO,TXT_CODE_PLUGIN_NODE_LIST_FAILED:UO,TXT_CODE_PLUGIN_NODE_NOT_FOUND:uO,TXT_CODE_PLUGIN_NODE_OFFLINE:rO,TXT_CODE_PLUGIN_NODE_SELECT:cO,TXT_CODE_PLUGIN_NO_CONFIG:dO,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:XO,TXT_CODE_PLUGIN_GROUP_ADD:AO,TXT_CODE_PLUGIN_GROUP_EDIT:SO,TXT_CODE_PLUGIN_GROUP_RENAME:vO,TXT_CODE_PLUGIN_GROUP_DELETE:pO,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:RO,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:gO,TXT_CODE_PLUGIN_GROUP_NAME:mO,TXT_CODE_PLUGIN_SCOPE_NODE:$O,TXT_CODE_PLUGIN_SCOPE_PANEL:FO,TXT_CODE_PLUGIN_SELF_DISABLE:fO,TXT_CODE_PLUGIN_STATE_PENDING:MO,TXT_CODE_PLUGIN_STATE_DISABLED:bO,TXT_CODE_PLUGIN_STATE_LOADING:BO,TXT_CODE_PLUGIN_STATE_ACTIVE:yO,TXT_CODE_PLUGIN_STATE_UNLOADING:kO,TXT_CODE_PLUGIN_RESTART_REQUIRED:VO,TXT_CODE_PLUGIN_SAVED_PENDING:hO,TXT_CODE_PLUGIN_FRONTEND_FAILED:wO,TXT_CODE_PLUGIN_REFRESH_REQUIRED:xO,TXT_CODE_PLUGIN_NPM_INSTALL:KO,TXT_CODE_PLUGIN_NPM_PACKAGE:QO,TXT_CODE_PLUGIN_NPM_VERSION:HO,TXT_CODE_PLUGIN_NPM_INSTALLED:zO},jO="是否同時停用以下節點上的對應外掛?請勾選需要同步操作的節點。",WO="是否同時刪除以下節點上的對應外掛?請勾選需要同步操作的節點。",JO="無法檢查以下節點的外掛:{nodes}。",YO="以下節點上的外掛操作未完成:{nodes}",ZO="插件設定",_l="取消",el="刪除外掛",El="將解除安裝此外掛的 npm 相依套件,保留已儲存的設定。",Tl="確定刪除 {name}?",nl="核心外掛與開發環境的原始碼外掛無法在此解除安裝。",tl="外掛已刪除",Dl="儲存設定",Nl="記得儲存設定!",Il="停用",al="外掛已停用",sl="該外掛提供的所有元件都會被立即移除。",ol="確定停用 {name}?",Ll="啟用",Ol="外掛已啟用",ll="Web 伺服器無法從它自己提供的頁面上停用,請改為在其 data/plugin-overrides.json 中把 plugins.server.enabled 設為 false。",il="此外掛已停用,重新啟用前其頁面、路由與介面皆不可用。",Cl="此外掛載入失敗",Pl="無法讀取該節點的外掛清單。",Gl="該節點不存在。",Ul="未連線",ul="選擇節點",rl="此插件沒有可設定項目",cl="未分組",dl="新增分組",Xl="編輯外掛分組",Al="重新命名分組",Sl="刪除分組",vl="刪除分組「{name}」?",pl="將刪除該分組及其插件歸屬,插件本身不會被刪除。",Rl="分組名稱",gl="節點",ml="面板",$l="外掛管理本身無法被停用,請改為在其 data/plugin-overrides.json 中把 plugins.config.enabled 設為 false。",Fl="等待依賴",fl="已停用",Ml="載入中",bl="執行中",Bl="卸載中",yl="需要重新啟動服務才能套用此變更。",kl="已儲存,正在等待外掛依賴。",Vl="瀏覽器外掛載入失敗",hl="需要重新整理頁面才能載入更新後的瀏覽器執行階段。",wl="安裝 / 更新外掛",xl="npm 套件名稱",Kl="版本或標籤(預設 latest)",Ql="外掛已安裝並同步",Hl={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:jO,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:WO,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:JO,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:YO,TXT_CODE_PLUGIN_CONFIG:ZO,TXT_CODE_PLUGIN_CANCEL:_l,TXT_CODE_PLUGIN_DELETE:el,TXT_CODE_PLUGIN_DELETE_CONFIRM:El,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:Tl,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:nl,TXT_CODE_PLUGIN_DELETED:tl,TXT_CODE_PLUGIN_SAVE_SETTINGS:Dl,TXT_CODE_PLUGIN_SAVE_REMINDER:Nl,TXT_CODE_PLUGIN_DISABLE:Il,TXT_CODE_PLUGIN_DISABLED:al,TXT_CODE_PLUGIN_DISABLE_CONFIRM:sl,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:ol,TXT_CODE_PLUGIN_ENABLE:Ll,TXT_CODE_PLUGIN_ENABLED:Ol,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:ll,TXT_CODE_PLUGIN_IS_DISABLED:il,TXT_CODE_PLUGIN_LOAD_FAILED:Cl,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Pl,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Gl,TXT_CODE_PLUGIN_NODE_OFFLINE:Ul,TXT_CODE_PLUGIN_NODE_SELECT:ul,TXT_CODE_PLUGIN_NO_CONFIG:rl,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:cl,TXT_CODE_PLUGIN_GROUP_ADD:dl,TXT_CODE_PLUGIN_GROUP_EDIT:Xl,TXT_CODE_PLUGIN_GROUP_RENAME:Al,TXT_CODE_PLUGIN_GROUP_DELETE:Sl,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:vl,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:pl,TXT_CODE_PLUGIN_GROUP_NAME:Rl,TXT_CODE_PLUGIN_SCOPE_NODE:gl,TXT_CODE_PLUGIN_SCOPE_PANEL:ml,TXT_CODE_PLUGIN_SELF_DISABLE:$l,TXT_CODE_PLUGIN_STATE_PENDING:Fl,TXT_CODE_PLUGIN_STATE_DISABLED:fl,TXT_CODE_PLUGIN_STATE_LOADING:Ml,TXT_CODE_PLUGIN_STATE_ACTIVE:bl,TXT_CODE_PLUGIN_STATE_UNLOADING:Bl,TXT_CODE_PLUGIN_RESTART_REQUIRED:yl,TXT_CODE_PLUGIN_SAVED_PENDING:kl,TXT_CODE_PLUGIN_FRONTEND_FAILED:Vl,TXT_CODE_PLUGIN_REFRESH_REQUIRED:hl,TXT_CODE_PLUGIN_NPM_INSTALL:wl,TXT_CODE_PLUGIN_NPM_PACKAGE:xl,TXT_CODE_PLUGIN_NPM_VERSION:Kl,TXT_CODE_PLUGIN_NPM_INSTALLED:Ql},zl={de_de:Ln,en_us:ot,es_es:aD,fr_fr:NN,ja_jp:tI,ko_kr:Ta,pt_br:es,ru_ru:Zs,th_th:Yo,tr_tr:WL,zh_cn:qO,zh_tw:Hl},ql=10,Ii=["console","i18n","routes","desktop"];function ai(g){g.i18n.define(zl),g.routes.add({path:"/plugins/config",name:T("TXT_CODE_PLUGIN_CONFIG"),component:Q_,meta:{permission:ql,mainMenu:!0,icon:"mdi-cog-outline"}}),g.desktop.app({id:"config",label:()=>T("TXT_CODE_PLUGIN_CONFIG"),icon:"mdi-cog-outline",color:"#1677ff",route:"/plugins/config",component:Q_,condition:()=>Ie().isAdmin.value}),g.desktop.view({id:"plugin-config",title:()=>T("TXT_CODE_PLUGIN_CONFIG"),icon:"mdi-cog-outline",component:Q_,initialWidth:980,initialHeight:580,condition:()=>Ie().isAdmin.value,accepts:f=>(f.scope==="panel"||f.scope==="node"&&typeof f.daemonId=="string"&&!!f.daemonId)&&typeof f.pluginId=="string"}),g.desktop.view({id:"node-plugin-config",title:()=>T("TXT_CODE_PLUGIN_CONFIG"),icon:"mdi-cog-outline",component:Q_,initialWidth:980,initialHeight:580,condition:()=>Ie().isAdmin.value,accepts:f=>f.scope==="node"&&typeof f.daemonId=="string"&&!!f.daemonId})}export{ai as apply,Ii as inject};
package/panel/plugin.json CHANGED
@@ -1,7 +1,4 @@
1
1
  {
2
- "id": "config",
3
- "version": "1.0.1",
4
- "dual": true,
5
2
  "backend": "backend/index.cjs",
6
- "frontend": "frontend/panel-plugin-config-1f7cc416.js"
3
+ "frontend": "frontend/panel-plugin-config-440a77c3.js"
7
4
  }
@@ -1 +0,0 @@
1
- .setting-list-item[data-v-ddacb15c]{margin-bottom:16px;padding:16px;border:1px solid rgba(var(--v-theme-on-surface),.12);border-radius:12px}.setting-list-header[data-v-ddacb15c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;overflow-wrap:anywhere}.setting-list-item--compact[data-v-ddacb15c]{padding:8px 0;margin-bottom:0;border:0;border-radius:0}.setting-list-item--compact .setting-list-header[data-v-ddacb15c]{margin-bottom:0}.setting-list-name[data-v-ddacb15c]{flex:1;min-width:0}.setting-list-item--compact .setting-list-name[data-v-ddacb15c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setting-list-actions[data-v-ddacb15c]{display:flex;flex-shrink:0;gap:4px}.setting-list-editor[data-v-ddacb15c] .setting-control{width:100%}.setting-list-editor[data-v-ddacb15c]>.v-form{display:flex;flex-direction:column;min-height:0}.setting-list-editor-content[data-v-ddacb15c]{padding:16px 24px 24px 30px;overflow-y:auto}.setting-field[data-v-ddacb15c],.setting-link-row[data-v-ddacb15c]{margin-bottom:20px}.setting-field-title[data-v-ddacb15c]{margin-bottom:6px;color:var(--text-color);font-size:15px;font-weight:600}.setting-field-description[data-v-ddacb15c]{margin-bottom:10px;color:var(--text-color);font-size:13px;opacity:.68}.setting-control[data-v-ddacb15c]{max-width:100%}.setting-control-small[data-v-ddacb15c]{max-width:220px}.setting-control-medium[data-v-ddacb15c]{max-width:420px}.setting-control-wide[data-v-ddacb15c]{max-width:320px}.setting-file-input[data-v-ddacb15c]{display:flex;max-width:520px;align-items:flex-start;gap:8px}.setting-file-input[data-v-ddacb15c] .v-input{flex:1}@media (max-width: 992px){.setting-field[data-v-ddacb15c],.setting-link-row[data-v-ddacb15c],.setting-list[data-v-ddacb15c],.setting-file-input[data-v-ddacb15c]{min-width:0}.setting-field-title[data-v-ddacb15c],.setting-field-description[data-v-ddacb15c]{overflow-wrap:anywhere}.setting-control[data-v-ddacb15c],.setting-file-input[data-v-ddacb15c]{width:100%;max-width:100%}.setting-control[data-v-ddacb15c] .v-input__control,.setting-control[data-v-ddacb15c] .v-field,.setting-control[data-v-ddacb15c] .v-field__input{min-width:0}.setting-control[data-v-ddacb15c] .v-select__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setting-file-input[data-v-ddacb15c]{flex-direction:column;align-items:stretch}.setting-file-input[data-v-ddacb15c] .v-input{width:100%;min-width:0}.setting-link-row[data-v-ddacb15c] .v-btn,.setting-list[data-v-ddacb15c]>.v-btn,.setting-file-input[data-v-ddacb15c] .v-btn{width:100%;min-height:44px;height:auto;padding:12px 16px}.setting-link-row[data-v-ddacb15c] .v-btn__content,.setting-list[data-v-ddacb15c]>.v-btn .v-btn__content,.setting-file-input[data-v-ddacb15c] .v-btn__content{white-space:normal;overflow-wrap:anywhere}.setting-list-item[data-v-ddacb15c]:not(.setting-list-item--compact){padding:12px}.setting-list-actions[data-v-ddacb15c] .v-btn{width:44px;height:44px}.setting-list-editor-content[data-v-ddacb15c]{padding:16px}.setting-list-editor[data-v-ddacb15c] .v-card-title{white-space:normal;overflow-wrap:anywhere}.setting-list-editor[data-v-ddacb15c] .v-card-actions{flex-wrap:wrap}}.plugin-config-page[data-v-edc30e92]{position:relative;display:flex;width:100%;box-sizing:border-box;height:min(720px,100vh - 140px);min-height:0;overflow:hidden;border-radius:24px;background:var(--background-color-white);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--text-color)}.desktop-container .plugin-config-page{--plugin-config-surface-color: #ffffff;height:100%;background:var(--plugin-config-surface-color)}.app-dark-theme .desktop-container .plugin-config-page{--plugin-config-surface-color: #1f1f27}.plugin-config-navigation[data-v-edc30e92]{flex:0 0 240px;min-height:0}.plugin-config-navigation[data-v-edc30e92] .v-navigation-drawer__content{overflow:hidden}.plugin-config-sidebar[data-v-edc30e92]{display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:100%;min-height:0;padding:24px 16px;overflow:hidden;background:var(--background-color-white)}.plugin-config-sidebar-title[data-v-edc30e92]{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;font-weight:600}.desktop-container .plugin-config-sidebar,.desktop-container .plugin-config-content{background:var(--plugin-config-surface-color)}.plugin-config-scope[data-v-edc30e92]{display:flex;gap:8px;width:100%;box-sizing:border-box;padding:0 10px 12px;background:transparent;border-radius:0;box-shadow:none}.plugin-config-scope[data-v-edc30e92] .v-btn{flex:1;min-height:32px;border-radius:24px;color:var(--text-color)!important;text-align:center}.app-dark-theme{color:#fff!important}.plugin-config-scope[data-v-edc30e92] .v-btn--active{background:rgb(var(--v-theme-primary));color:#fff!important}.plugin-config-node-select[data-v-edc30e92]{flex:0 0 auto;width:100%;max-width:100%;min-width:0;margin:0 0 8px;box-sizing:border-box}.plugin-config-node-select[data-v-edc30e92] .v-input__control,.plugin-config-node-select[data-v-edc30e92] .v-field{width:100%;min-width:0}.plugin-config-node-select[data-v-edc30e92] .v-field__input{min-width:0;overflow:hidden}.plugin-config-node-select[data-v-edc30e92] .v-select__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plugin-config-heading[data-v-edc30e92]{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;margin:12px 10px 8px;line-height:20px;color:var(--text-color);font-size:13px;font-weight:600;opacity:.72}.plugin-config-list[data-v-edc30e92]{min-height:0;flex:1;width:100%;box-sizing:border-box;overflow-y:auto;scrollbar-gutter:auto;background:transparent;padding:0 10px 4px}.plugin-config-list[data-v-edc30e92] .v-list-item{min-height:36px;margin:0 0 6px;padding-top:2px;padding-bottom:2px;overflow:hidden;border-radius:24px!important;color:var(--text-color)}.plugin-config-list[data-v-edc30e92] .plugin-config-group-heading{display:flex;align-items:center;justify-content:space-between;min-height:28px;padding-inline:8px;color:var(--text-color);font-size:11px;font-weight:600;opacity:.55}.plugin-config-list[data-v-edc30e92] .plugin-config-group-heading-over{border-radius:8px;background:rgba(22,119,255,.12);opacity:1}.plugin-config-group-actions[data-v-edc30e92]{display:inline-flex;align-items:center;margin-left:8px;opacity:0;pointer-events:none;transition:opacity .15s ease}.plugin-config-list[data-v-edc30e92] .plugin-config-group-heading:hover .plugin-config-group-actions,.plugin-config-list[data-v-edc30e92] .plugin-config-group-heading:focus-within .plugin-config-group-actions{opacity:1;pointer-events:auto}.plugin-config-group-actions[data-v-edc30e92] .v-btn{--v-btn-height: 16px;width:16px;min-width:16px;height:16px;min-height:16px;padding:0;color:var(--text-color);opacity:.62}.plugin-config-group-actions[data-v-edc30e92] .v-icon{font-size:12px}.plugin-config-group-actions[data-v-edc30e92] .v-btn:hover{opacity:1}.plugin-config-list[data-v-edc30e92] .v-list-item[draggable=true]{cursor:grab}.plugin-config-list[data-v-edc30e92] .v-list-item[draggable=true]:active{cursor:grabbing}.plugin-config-list[data-v-edc30e92] .v-list-item__content{min-width:0;overflow:hidden}.plugin-config-list[data-v-edc30e92] .v-list-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plugin-config-list[data-v-edc30e92] .v-list-item--active{background:rgba(22,119,255,.12)}.plugin-config-list[data-v-edc30e92] .v-list-item__overlay,.plugin-config-list[data-v-edc30e92] .v-list-item__underlay{border-radius:inherit}.plugin-config-list[data-v-edc30e92] .plugin-config-item-off .v-list-item-title{opacity:.42}.plugin-config-item-dot[data-v-edc30e92]{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--color-success)}.plugin-config-item-dot-off[data-v-edc30e92]{background:var(--color-gray-6)}.plugin-config-empty[data-v-edc30e92],.plugin-config-no-config[data-v-edc30e92]{padding:28px 12px;color:var(--text-color);font-size:13px;opacity:.62;text-align:center}.plugin-config-content[data-v-edc30e92]{display:flex;flex-direction:column;min-height:0;min-width:0;flex:1;padding:20px 32px 32px;overflow:hidden}.plugin-config-body[data-v-edc30e92]{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain}.plugin-config-title-row[data-v-edc30e92]{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.plugin-config-title-row h2[data-v-edc30e92]{margin:0;color:var(--text-color);font-size:20px}.plugin-config-title[data-v-edc30e92]{display:flex;min-width:0;align-items:center;gap:8px}.plugin-config-title[data-v-edc30e92]>.v-btn{flex:0 0 auto}.plugin-config-meta[data-v-edc30e92]{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:12px}.plugin-config-actions[data-v-edc30e92]{display:flex;align-items:center;gap:12px}.plugin-config-version[data-v-edc30e92]{color:var(--text-color);font-size:12px;opacity:.62}.plugin-config-alert[data-v-edc30e92]{margin-bottom:20px}.plugin-config-form[data-v-edc30e92]{min-height:100px}.plugin-config-loading[data-v-edc30e92]{position:absolute;top:0;left:0;right:0;z-index:2}.plugin-config-schema-loading[data-v-edc30e92]{display:flex;min-height:120px;align-items:center;justify-content:center}@media (max-width: 992px){.plugin-config-page[data-v-edc30e92]{flex-direction:column;height:calc(100dvh - 200px);min-width:0;min-height:0}.plugin-config-sidebar[data-v-edc30e92]{min-width:0;padding:16px}.plugin-config-scope[data-v-edc30e92]{flex:none;height:auto;padding:0 0 12px}.plugin-config-scope[data-v-edc30e92] .v-btn{min-width:0;min-height:44px;height:auto;padding:8px}.plugin-config-scope[data-v-edc30e92] .v-btn__content{white-space:normal;overflow-wrap:anywhere}.plugin-config-list[data-v-edc30e92] .plugin-config-group-actions{opacity:1;pointer-events:auto}.plugin-config-group-actions[data-v-edc30e92] .v-btn{width:28px;height:28px;min-width:28px;min-height:28px}.plugin-config-group-actions[data-v-edc30e92] .v-icon{font-size:16px}.plugin-config-content[data-v-edc30e92]{padding:16px 16px 20px}.plugin-config-title-row[data-v-edc30e92]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,auto);gap:8px}.plugin-config-title[data-v-edc30e92]{grid-column:1;grid-row:1}.plugin-config-title-row h2[data-v-edc30e92],.plugin-config-version[data-v-edc30e92],.plugin-config-alert[data-v-edc30e92]{overflow-wrap:anywhere}.plugin-config-meta[data-v-edc30e92]{display:contents}.plugin-config-actions[data-v-edc30e92]{grid-column:1/-1;justify-content:flex-end;gap:8px}.plugin-config-plugin-version[data-v-edc30e92]{grid-column:2;grid-row:1}.plugin-config-version[data-v-edc30e92]{min-width:0;max-width:100%}.plugin-config-meta[data-v-edc30e92] .v-chip{grid-column:3;grid-row:1;max-width:100%;min-height:24px;height:auto;padding-top:4px;padding-bottom:4px}.plugin-config-meta[data-v-edc30e92] .v-chip__content{white-space:normal;overflow-wrap:anywhere}.plugin-config-alert[data-v-edc30e92] .v-alert__content{min-width:0}.plugin-config-confirm-card[data-v-edc30e92] .v-card-title{white-space:normal;overflow-wrap:anywhere}.plugin-config-confirm-card[data-v-edc30e92] .v-card-actions{flex-wrap:wrap}.desktop-container .plugin-config-page{height:100%}}
@@ -1 +0,0 @@
1
- import{t as T}from"../../../assets/i18n-fe0f1ee7.js";import{u as AE}from"../../../assets/useAppStateStore-a644582a.js";import{a1 as ME,b5 as Q,aM as De,aE as a,Q as v,O as U,ba as o,F as T_,aK as y_,$ as D,_ as R,bP as C,bJ as e,gC as X,R as m,P as A,bM as Q_,gJ as Ne,gK as l_,gR as aE,t as p_,aO as bE,gH as SE,gA as X_,gB as A_,gz as S_,gD as v_,N as h,bx as Ie,bz as l,c9 as se,ca as ae,ay as oe,aC as Le,c1 as Oe,gL as b_,gS as le,gT as ie,bN as x_,ab as K_,gU as Ce,gV as Pe,gN as Ge,gQ as Ue,gW as ue,gX as NE,gY as o_,gM as re,gZ as ce,w as vE,g_ as de}from"../../../assets/vue-2433bd89.js";import{u as Xe}from"../../../assets/useScreen-e3715e1f.js";import{u as Ae,c as B_}from"../../../assets/context-b16af9cc.js";import{u as F,m as pE,g as IE}from"../../../assets/useDefineApi-ead2616e.js";import{r as Se}from"../../../assets/router-0f7d4714.js";import{_ as BE}from"../../../assets/_plugin-vue_export-helper-c27b6911.js";import"../../../assets/lodash-001e4f93.js";import"../../../assets/htmlparser2-bcb8f9db.js";import"../../../assets/_elements-sdk_cordis-e3bebc89.js";import"../../../assets/_elements-sdk_cosmokit-e4842f5c.js";const ve=F({url:"/api/plugins",method:"GET"}),pe=F({url:"/api/plugins/enabled",method:"PUT"}),Re=F({url:"/api/plugins",method:"DELETE"}),ge=F({url:"/api/plugins/npm/install",method:"POST"}),me=F({url:"/api/plugins/node/npm/install",method:"POST"}),$e=F({url:"/api/plugins/settings",method:"GET"}),Fe=F({url:"/api/plugins/settings",method:"PUT"}),fe=F({url:"/api/plugins/groups",method:"GET"}),Me=F({url:"/api/plugins/groups",method:"PUT"}),RE=F({url:"/api/plugins/node/list",method:"GET"}),gE=F({url:"/api/plugins/node/plugins",method:"GET"}),mE=F({url:"/api/plugins/node/enabled",method:"PUT"}),$E=F({url:"/api/plugins/node",method:"DELETE"}),be=F({url:"/api/plugins/node/settings",method:"GET"}),Be=F({url:"/api/plugins/node/settings",method:"PUT"}),ye=F({url:"/api/plugins/node/groups",method:"GET"}),ke=F({url:"/api/plugins/node/groups",method:"PUT"}),Ve={key:0,class:"setting-link-row"},he={key:1,class:"setting-field"},we={class:"setting-field-title"},xe={key:0,class:"setting-field-description"},Ke={key:1,class:"setting-list"},Qe={class:"setting-list-header"},He=["title"],ze={class:"setting-list-actions"},qe={key:3,class:"setting-file-input"},je=ME({__name:"SchemaForm",props:{fields:{},values:{},nested:{type:Boolean}},emits:["save"],setup($,{emit:n_}){const w=$,H=n_,H_=[{label:T("TXT_CODE_52c8a730"),value:!0},{label:T("TXT_CODE_718c9310"),value:!1}],G=(s,L=w.values)=>{const S=s.visibleWhen;return S?(Array.isArray(S)?S:[S]).every(k=>{const[r,z]=k.split("="),x=L[r];return z===void 0?!!x:String(x??"")===z}):!0},t_=h(()=>Ae("file")),i_=Ie(new Set),b=(s,L)=>{s.key&&(w.values[s.key]=L)},j=(s,L)=>{s.key&&(w.values[s.key]=L===""||L===null?void 0:Number(L))},g=s=>Array.isArray(w.values[s.key])?w.values[s.key]:[],E_=s=>Object.fromEntries((s.fields||[]).filter(L=>L.key&&L.type!=="link").map(L=>{var S,t;return[L.key,L.type==="boolean"?!1:L.type==="list"?[]:L.type==="number"?L.min??0:L.type==="select"?((t=(S=L.options)==null?void 0:S[0])==null?void 0:t.value)??"":""]})),B=l(),W=l(!1),y=s=>JSON.parse(JSON.stringify(s)),C_=(s,L)=>{!L&&g(s).length>=(s.maxItems??100)||(B.value={field:s,original:L,draft:L?y(L):E_(s)},W.value=!0)},D_=()=>{W.value=!1},__=()=>{W.value||(B.value=void 0)},e_=h(()=>{const s=B.value;return!s||!W.value||!s.original&&g(s.field).length>=(s.field.maxItems??100)?!1:(s.field.fields||[]).every(L=>{if(!L.required||!L.key||!G(L,s.draft))return!0;const S=s.draft[L.key];return S!=null&&(typeof S!="string"||!!S.trim())})}),N_=()=>{const s=B.value;if(!s||!e_.value)return;const L=[...g(s.field)];if(s.original){const S=L.indexOf(s.original);if(S===-1){D_();return}L[S]=y(s.draft)}else L.push(y(s.draft));b(s.field,L),D_()};Q(()=>[w.values,w.fields],()=>{D_(),__()});const u=s=>{g(s).length>=(s.maxItems??100)||(s.listEditor==="dialog"?C_(s):b(s,[...g(s),E_(s)]))},I_=(s,L)=>b(s,g(s).filter((S,t)=>t!==L)),L_=async s=>{if(!s.key||i_.has(s.key))return;const L=t_.value;if(L){i_.add(s.key);try{const S=await L.useUploadFileDialog();S&&b(s,S)}finally{i_.delete(s.key)}}},J=s=>{if(!s.route)return;const[L,S]=s.route.split("?");Se.push({path:L,query:S?Object.fromEntries(new URLSearchParams(S)):{}})};return(s,L)=>{const S=De("SchemaForm",!0);return a(),v(T_,null,[(a(),U(bE($.nested?"div":e(SE)),{onSubmit:L[0]||(L[0]=p_(t=>H("save"),["prevent"]))},{default:o(()=>[(a(!0),v(T_,null,y_($.fields,(t,k)=>(a(),v(T_,{key:t.key||`link-${k}`},[t.type==="link"?(a(),v("div",Ve,[D(e(X),{variant:"outlined",type:"button",onClick:r=>J(t)},{default:o(()=>[R(C(t.title),1)]),_:2},1032,["onClick"])])):G(t)?(a(),v("div",he,[m("div",we,C(t.title),1),t.description?(a(),v("div",xe,C(t.description),1)):A("",!0),t.type==="list"?(a(),v("div",Ke,[(a(!0),v(T_,null,y_(g(t),(r,z)=>(a(),v("section",{key:z,class:Q_(["setting-list-item",{"setting-list-item--compact":t.listEditor==="dialog"}])},[m("div",Qe,[m("strong",{class:"setting-list-name",title:String(r[t.itemTitleKey||"name"]||"")},C(String(r[t.itemTitleKey||"name"]||`${t.title} ${z+1}`)),9,He),m("div",ze,[t.listEditor==="dialog"?(a(),U(e(X),{key:0,type:"button",icon:"mdi-pencil-outline",variant:"text",size:"small",title:t.editLabel||e(T)("TXT_CODE_ad207008"),"aria-label":t.editLabel||e(T)("TXT_CODE_ad207008"),onClick:x=>C_(t,r)},null,8,["title","aria-label","onClick"])):A("",!0),D(e(X),{type:"button",icon:"mdi-delete-outline",variant:"text",size:"small",title:t.removeLabel||e(T)("TXT_CODE_6f2c1806"),"aria-label":t.removeLabel||e(T)("TXT_CODE_6f2c1806"),onClick:x=>I_(t,z)},null,8,["title","aria-label","onClick"])])]),t.listEditor!=="dialog"?(a(),U(S,{key:0,fields:t.fields||[],values:r,nested:""},null,8,["fields","values"])):A("",!0)],2))),128)),D(e(X),{type:"button","prepend-icon":"mdi-plus",variant:"tonal",class:"mt-3",disabled:g(t).length>=(t.maxItems??100),onClick:r=>u(t)},{default:o(()=>[R(C(t.addLabel||e(T)("TXT_CODE_a1d885c1")),1)]),_:2},1032,["disabled","onClick"])])):t.type==="text"?(a(),U(e(Ne),{key:2,"model-value":String($.values[t.key]??""),rows:4,placeholder:t.placeholder||e(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="string"&&!t.secret&&t.fileUpload?(a(),v("div",qe,[D(e(l_),{"model-value":String($.values[t.key]??""),placeholder:t.placeholder||e(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"",clearable:"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"]),t_.value?(a(),U(e(X),{key:0,type:"button",variant:"outlined",loading:t.key?i_.has(t.key):!1,onClick:r=>L_(t)},{default:o(()=>[R(C(e(T)("TXT_CODE_ae09d79d")),1)]),_:1},8,["loading","onClick"])):A("",!0)])):t.type==="string"&&!t.secret?(a(),U(e(l_),{key:4,"model-value":String($.values[t.key]??""),class:"setting-control setting-control-medium",placeholder:t.placeholder||e(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="string"?(a(),U(e(l_),{key:5,"model-value":String($.values[t.key]??""),class:"setting-control setting-control-medium",type:"password",autocomplete:"new-password",placeholder:t.placeholder||e(T)("TXT_CODE_4ea93630"),variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","placeholder","onUpdate:modelValue"])):t.type==="number"?(a(),U(e(l_),{key:6,"model-value":Number($.values[t.key]??0),class:"setting-control setting-control-small",type:"number",min:t.min,max:t.max,variant:"solo-filled",density:"comfortable","hide-details":"","onUpdate:modelValue":r=>j(t,r)},null,8,["model-value","min","max","onUpdate:modelValue"])):t.type==="boolean"?(a(),U(e(aE),{key:7,"model-value":!!$.values[t.key],class:"setting-control setting-control-small",items:H_,"item-title":"label","item-value":"value","hide-details":"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","onUpdate:modelValue"])):t.type==="select"?(a(),U(e(aE),{key:8,"model-value":$.values[t.key],class:"setting-control setting-control-wide",items:t.options||[],"item-title":"label","item-value":"value","hide-details":"","onUpdate:modelValue":r=>b(t,r)},null,8,["model-value","items","onUpdate:modelValue"])):A("",!0)])):A("",!0)],64))),128))]),_:1},32)),B.value?(a(),U(e(v_),{key:0,modelValue:W.value,"onUpdate:modelValue":L[1]||(L[1]=t=>W.value=t),"max-width":"640",scrollable:"",onAfterLeave:__},{default:o(()=>[D(e(S_),{title:e(T)(B.value.original?"TXT_CODE_ad207008":"TXT_CODE_a1d885c1"),class:"setting-list-editor"},{default:o(()=>[D(e(SE),{onSubmit:p_(N_,["stop","prevent"])},{default:o(()=>[D(e(X_),{class:"setting-list-editor-content"},{default:o(()=>[D(S,{fields:B.value.field.fields||[],values:B.value.draft,nested:""},null,8,["fields","values"])]),_:1}),D(e(A_),{class:"justify-end"},{default:o(()=>[D(e(X),{type:"button",onClick:D_},{default:o(()=>[R(C(e(T)("TXT_CODE_a0451c97")),1)]),_:1}),D(e(X),{type:"submit",color:"primary",variant:"flat",disabled:!e_.value},{default:o(()=>[R(C(e(T)("TXT_CODE_d507abff")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])):A("",!0)],64)}}});const We=BE(je,[["__scopeId","data-v-ddacb15c"]]),Je={class:"plugin-config-sidebar"},Ye={key:0,class:"plugin-config-sidebar-title"},Ze={class:"plugin-config-heading"},_T={key:0,class:"plugin-config-group-actions"},ET={key:0,class:"plugin-config-empty"},eT={class:"plugin-config-content"},TT={key:0,class:"plugin-config-title-row"},nT={class:"plugin-config-title"},tT={key:0,class:"plugin-config-meta"},DT={key:1,class:"plugin-config-version plugin-config-plugin-version"},NT={class:"plugin-config-actions"},IT={class:"plugin-config-body"},sT={key:7,class:"plugin-config-schema-loading"},aT={key:8,class:"plugin-config-form"},oT={key:9,class:"plugin-config-no-config"},LT={key:2,class:"plugin-config-no-config"},OT={key:0,class:"mb-2"},FE="epanel-plugin-",fE="__unassigned__",lT=ME({__name:"ConfigPage",props:{scope:{},daemonId:{}},setup($){const n_=$,{isPhone:w}=Xe(),H=l(!1),H_=h(()=>w.value?{class:"plugin-config-navigation",modelValue:H.value,"onUpdate:modelValue":_=>{H.value=_},absolute:!0,temporary:!0,floating:!0,disableResizeWatcher:!0,retainFocus:!0,captureFocus:!0,touchless:!0,width:280,"aria-label":T("TXT_CODE_PLUGIN_LIST")}:{class:"plugin-config-navigation"});Q(w,_=>{_||(H.value=!1)});const G=l("panel"),t_=se(),i_=ae(),b=l(String(t_.query.plugin??"")),j=l(!0),g=l(""),E_=l(!1),B=l(""),W=l(""),y=l(!1),C_=l("panel"),D_=l(""),__=l([]),e_=l(""),N_=l([]),u=l(""),I_=l([]),L_=l(""),J=l(""),s=_=>`${_.remarks||`${_.ip}:${_.port}`}${_.available?"":` (${T("TXT_CODE_PLUGIN_NODE_OFFLINE")})`}`,L=_=>{if(!_)return"";const E=_.indexOf("/"),n=_.startsWith("@")&&E>=0?_.slice(E+1):_;return n.startsWith(FE)?n.slice(FE.length):_},S=h(()=>N_.value.map(_=>({title:s(_),value:_.uuid}))),t=h(()=>G.value==="panel"?__.value:I_.value),k=l([]),r=l(""),z=l("");let x=null;const P_=l(!1),z_=l("create"),G_=l(""),q_=l(""),U_=l(!1),R_=l(null);let j_=0;const yE=async()=>{const _=++j_;if(k.value=[],!(G.value==="node"&&!u.value))try{const E=G.value==="panel"?(await fe().execute()).value:(await ye().execute({params:{daemonId:u.value}})).value;_===j_&&(k.value=Array.isArray(E)?E:[])}catch(E){if(_!==j_)return;k.value=[],console.error("Failed to load plugin groups:",E)}},W_=async()=>{const _=k.value.map(E=>({id:E.id,name:E.name,pluginIds:[...E.pluginIds]}));try{G.value==="panel"?await Me().execute({data:{groups:_}}):u.value&&await ke().execute({params:{daemonId:u.value},data:{groups:_}})}catch(E){a_(E)}},kE=h(()=>{const _=new Set,E=k.value.map(N=>{const O=t.value.filter(d=>N.pluginIds.includes(d.id)&&!_.has(d.id));return O.forEach(d=>_.add(d.id)),{...N,plugins:O,unassigned:!1}}),n=t.value.filter(N=>!_.has(N.id));return(n.length||!E.length)&&E.push({id:fE,name:T("TXT_CODE_PLUGIN_GROUP_UNASSIGNED"),pluginIds:[],plugins:n,unassigned:!0}),E}),VE=()=>`group-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,hE=()=>{z_.value="create",G_.value="",q_.value="",P_.value=!0},wE=_=>{_.unassigned||(z_.value="rename",G_.value=_.name,q_.value=_.id,P_.value=!0)},oE=()=>{const _=G_.value.trim();if(_){if(z_.value==="create")k.value.push({id:VE(),name:_,pluginIds:[]});else{const E=k.value.find(n=>n.id===q_.value);E&&(E.name=_)}W_(),P_.value=!1}},xE=_=>{_.unassigned||(R_.value=_,U_.value=!0)},KE=()=>{const _=R_.value;_&&(k.value=k.value.filter(E=>E.id!==_.id),W_(),U_.value=!1,R_.value=null)};Q(U_,_=>{_||(R_.value=null)});const QE=(_,E)=>{var n;for(const N of k.value)N.pluginIds=N.pluginIds.filter(O=>O!==_);E!==fE&&((n=k.value.find(N=>N.id===E))==null||n.pluginIds.push(_)),W_()},LE=()=>{x==null||x.remove(),x=null},HE=(_,E)=>{r.value=_,E!=null&&E.dataTransfer&&(E.dataTransfer.setData("text/plain",_),E.dataTransfer.effectAllowed="move",LE(),x=document.createElement("span"),x.textContent=_,Object.assign(x.style,{position:"fixed",top:"-1000px",left:"-1000px",padding:"4px 10px",borderRadius:"14px",background:"rgb(var(--v-theme-surface, 255 255 255))",color:"rgb(var(--v-theme-on-surface, 0 0 0))",boxShadow:"0 2px 8px rgba(0, 0, 0, 0.2)",font:"12px sans-serif",whiteSpace:"nowrap"}),document.body.appendChild(x),E.dataTransfer.setDragImage(x,12,14))},zE=_=>{r.value&&QE(r.value,_),r.value="",z.value=""},qE=()=>{r.value="",z.value="",LE()};Q([G,u],()=>void yE(),{immediate:!0});const V=h({get:()=>G.value==="panel"?e_.value:L_.value,set:_=>{G.value==="panel"?e_.value=_:L_.value=_}}),jE=_=>{V.value=_,H.value=!1},c=h(()=>t.value.find(_=>_.id===V.value)),f=l(null),J_=l(""),k_=h(()=>!!f.value&&JSON.stringify(f.value.values)!==J_.value),g_=l(!1),m_=l(!1),V_=l(!1),OE=h({get:()=>!H.value&&!g_.value&&!m_.value&&(k_.value||V_.value),set:_=>{V_.value=_}});Q(H,_=>{_&&(g_.value=!1,m_.value=!1,V_.value=!1)}),Q(f,_=>{J_.value=_?JSON.stringify(_.values):""},{flush:"sync"});const $_=l(!1);let u_=0,F_=0,h_=0,lE,Y_=!1,M=!1;const O_=l(!1),q=l(null),WE={disabled:"TXT_CODE_PLUGIN_STATE_DISABLED",pending:"TXT_CODE_PLUGIN_STATE_PENDING",loading:"TXT_CODE_PLUGIN_STATE_LOADING",active:"TXT_CODE_PLUGIN_STATE_ACTIVE",failed:"TXT_CODE_PLUGIN_LOAD_FAILED",unloading:"TXT_CODE_PLUGIN_STATE_UNLOADING","restart-required":"TXT_CODE_PLUGIN_RESTART_REQUIRED"},f_=h(()=>G.value==="panel"?B_.plugins.loaded.find(_=>_.metadata.id===V.value):void 0),M_=_=>{var E;q.value=_&&typeof _=="object"?_:null,((E=q.value)==null?void 0:E.application)==="failed"&&s_(q.value.error||T("TXT_CODE_PLUGIN_LOAD_FAILED"),"error")},w_=l(!1),i=l(null),K=h(()=>!!(g.value||w_.value||y.value)),r_=h(()=>K.value||!!i.value||E_.value),Z_=h({get:()=>{var _;return((_=i.value)==null?void 0:_.step)==="confirm"},set:_=>{var E;!_&&((E=i.value)==null?void 0:E.step)==="confirm"&&!K.value&&(i.value=null)}}),_E=h({get:()=>{var _;return((_=i.value)==null?void 0:_.step)==="nodes"},set:_=>{var E;!_&&((E=i.value)==null?void 0:E.step)==="nodes"&&!K.value&&(i.value=null)}}),s_=(_,E)=>{E==="error"?pE.error(_):pE.success(_)},a_=_=>{console.error("Plugin configuration error:",_),s_(IE(_,T("TXT_CODE_6a365d01")),"error")},EE=async()=>{if(M)return;const _=++u_;f.value=null,$_.value=!1;const E=V.value;if(E&&!(G.value==="node"&&!u.value)){$_.value=!0;try{if(G.value==="panel"){const{execute:n}=$e(),N=await n({params:{id:E},forceRequest:!0});_===u_&&(f.value=N.value??null)}else{const{execute:n}=be(),N=await n({params:{daemonId:u.value,id:E},forceRequest:!0});_===u_&&(f.value=N.value??null)}}catch{_===u_&&(f.value=null)}finally{_===u_&&($_.value=!1)}}},JE=async()=>{if(!(!V.value||g.value)){g.value=V.value;try{await B_.plugins.reload(V.value)}catch(_){a_(_)}finally{g.value=""}}},iE=async()=>{if(!f.value||O_.value)return;const _=f.value,E=G.value,n=u.value,N=_.id,O=JSON.stringify(_.values);O_.value=!0;const d=E==="panel"&&["i18n","console"].includes(N);try{const P=JSON.parse(O);if(E==="panel"){const{execute:d_}=Fe();M_((await d_({params:{id:N},data:P})).value)}else{const{execute:d_}=Be();M_((await d_({params:{daemonId:n,id:N},data:P})).value)}(!q.value||q.value.application==="applied")&&s_(T("TXT_CODE_d3de39b4"),"success");const Y=JSON.stringify(_.values)!==O;if(f.value===_&&(J_.value=O),d&&!Y){window.setTimeout(()=>window.location.reload(),400);return}G.value===E&&u.value===n&&V.value===N&&f.value===_&&!Y&&await EE()}catch(P){a_(P)}finally{O_.value=!1}},c_=async(_=!1)=>{if(M)return;const E=++h_;_||(j.value=!0);try{const n=await ve().execute({forceRequest:!0});!M&&E===h_&&JSON.stringify(__.value)!==JSON.stringify(n.value??[])&&(__.value=n.value??[])}catch(n){!_&&!M&&a_(n)}finally{!_&&E===h_&&(j.value=!1)}},YE=async()=>{var _;j.value=!0,J.value="";try{const{execute:E}=RE(),n=await E();N_.value=n.value??[],N_.value.some(N=>N.uuid===u.value)||(u.value=((_=N_.value.find(N=>N.available))==null?void 0:_.uuid)||"")}catch(E){N_.value=[],u.value="",J.value=(E==null?void 0:E.message)??String(E)}finally{j.value=!1}},eE=async(_=!1)=>{if(M)return;const E=++F_;if(_||(I_.value=[]),!!u.value){_||(j.value=!0),J.value="";try{const{execute:n}=gE(),N=await n({params:{daemonId:u.value},forceRequest:!0});!M&&E===F_&&JSON.stringify(I_.value)!==JSON.stringify(N.value??[])&&(I_.value=N.value??[])}catch(n){E===F_&&(J.value=(n==null?void 0:n.message)??String(n))}finally{!_&&E===F_&&(j.value=!1)}}},ZE=_=>{M||r_.value||O_.value||(B.value=(_==null?void 0:_.packageName)||"",W.value="",C_.value=G.value,D_.value=u.value,E_.value=!0)},_e=async()=>{var _,E,n,N,O;if(!(y.value||!B.value.trim())){y.value=!0;try{const d={name:B.value.trim(),version:W.value.trim()||void 0},P=C_.value==="panel"?await ge().execute({data:d,timeout:11*60*1e3}):await me().execute({params:{daemonId:D_.value},data:d,timeout:11*60*1e3});if(M)return;M_((_=P.value)==null?void 0:_.result),E_.value=!1,C_.value==="panel"?(await B_.plugins.refresh().catch(Y=>console.error("Failed to refresh plugins:",Y)),await c_(),(E=P.value)!=null&&E.id&&__.value.some(Y=>Y.id===P.value.id)&&(e_.value=P.value.id)):G.value==="node"&&u.value===D_.value&&(await TE(),(n=P.value)!=null&&n.id&&I_.value.some(Y=>Y.id===P.value.id)&&(L_.value=P.value.id)),((O=(N=P.value)==null?void 0:N.result)==null?void 0:O.application)==="applied"&&s_(T("TXT_CODE_PLUGIN_NPM_INSTALLED"),"success")}catch(d){a_(d)}finally{y.value=!1}}},TE=async()=>{for(let _=0;_<4;_++){if(M||(await eE(),!J.value))return;await new Promise(E=>setTimeout(E,700))}},nE=async()=>{if(!(M||Y_||j.value||K.value||O_.value)){Y_=!0;try{G.value==="panel"?await c_(!0):await eE(!0)}finally{Y_=!1}}};oe(()=>{c_(),window.addEventListener("elementspanel:plugins-changed",nE),lE=setInterval(nE,4e3)}),Le(()=>{window.removeEventListener("elementspanel:plugins-changed",nE),clearInterval(lE),h_++,M=!0,u_++,F_++}),Oe(_=>{if(_.path==="/plugins/config")return!0;const E={..._.query},n={scope:G.value,daemonId:u.value,plugin:V.value};let N=!1;for(const[O,d]of Object.entries(n))d&&E[O]===d&&(delete E[O],N=!0);return N?{path:_.path,query:E}:!0}),Q(G,_=>{_==="node"&&!N_.value.length&&!J.value&&YE()}),Q(u,()=>eE()),Q(()=>[n_.scope??t_.query.scope,n_.daemonId??t_.query.daemonId,t_.query.plugin],([_,E,n])=>{if(typeof n=="string"&&(b.value=n),_!=="node"){_==="panel"&&(G.value="panel"),typeof n=="string"&&__.value.some(N=>N.id===n)&&(e_.value=n);return}G.value="node",typeof E=="string"&&(u.value=E)},{immediate:!0}),Q(__,_=>{var E,n;_.some(N=>N.id===e_.value)||(e_.value=((E=_.find(N=>N.id===b.value))==null?void 0:E.id)||((n=_[0])==null?void 0:n.id)||"")},{immediate:!0}),Q(I_,_=>{var E,n;_.some(N=>N.id===L_.value)||(L_.value=((E=_.find(N=>N.id===b.value))==null?void 0:E.id)||((n=_[0])==null?void 0:n.id)||"")}),Q(()=>{var _,E,n;return[(_=c.value)==null?void 0:_.version,(E=c.value)==null?void 0:E.enabled,(n=c.value)==null?void 0:n.hasSettings]},()=>{!k_.value&&!O_.value&&EE()}),Q([G,V,u],()=>{q.value=null,g_.value=!1,m_.value=!1,V_.value=!1,EE()},{immediate:!0});let CE="";Q([G,V,u],()=>{if(t_.path!=="/plugins/config")return;const _={scope:G.value};G.value==="node"&&u.value&&(_.daemonId=u.value),V.value&&(_.plugin=V.value),b.value=V.value;const E=i_.resolve({query:_}).fullPath;if(E===CE)return;CE=E;const{pathname:n,search:N}=window.location;window.history.replaceState(window.history.state,"",`${n}${N}#${E}`)});const Ee=async _=>{if(!(_.scope!=="panel"||!__.value.some(E=>E.id==="node"&&E.enabled&&E.running))){_.checkingNodes=!0;try{const E=(await RE().execute()).value??[];if(M||i.value!==_)return;const n=await Promise.allSettled(E.map(async O=>{if(!O.available)throw new Error(T("TXT_CODE_PLUGIN_NODE_OFFLINE"));const d=(await gE().execute({params:{daemonId:O.uuid}})).value;if(!Array.isArray(d))throw new Error(T("TXT_CODE_PLUGIN_NODE_LIST_FAILED"));return d.find(P=>P.id===_.plugin.id)}));if(M||i.value!==_)return;const N=[];n.forEach((O,d)=>{const P=E[d];O.status==="rejected"?N.push(s(P)):O.value&&(_.action==="remove"||O.value.enabled)&&_.nodeTargets.push({node:P,plugin:O.value})}),N.length&&(_.nodeCheckError=T("TXT_CODE_PLUGIN_NODE_CHECK_FAILED",{nodes:N.join(", ")}))}catch(E){!M&&i.value===_&&(_.nodeCheckError=IE(E,T("TXT_CODE_PLUGIN_NODE_LIST_FAILED")))}finally{_.checkingNodes=!1}}},PE=(_,E)=>{M||r_.value||E==="remove"&&!_.removable||(i.value={action:E,step:"confirm",scope:G.value,plugin:{..._},nodeId:u.value,checkingNodes:!1,nodeTargets:[],selectedNodeIds:[],nodeCheckError:""})},GE=async _=>{var N;const E=_.nodeTargets.filter(({node:O,plugin:d})=>_.selectedNodeIds.includes(O.uuid)&&(_.action!=="remove"||d.removable)),n=[];for(const{node:O,plugin:d}of E)try{if(_.action==="remove")await $E().execute({params:{daemonId:O.uuid,id:d.id},timeout:11*60*1e3}),_.nodeTargets=_.nodeTargets.filter(P=>P.node.uuid!==O.uuid);else{const P=(N=(await mE().execute({params:{daemonId:O.uuid},data:{id:d.id,enabled:!1}})).value)==null?void 0:N.result;if(P&&P.application!=="applied")throw new Error(P.error||T(P.application==="restart-required"?"TXT_CODE_PLUGIN_RESTART_REQUIRED":P.application==="pending"?"TXT_CODE_PLUGIN_SAVED_PENDING":"TXT_CODE_PLUGIN_LOAD_FAILED"))}_.selectedNodeIds=_.selectedNodeIds.filter(P=>P!==O.uuid)}catch(P){n.push(`${s(O)}: ${IE(P,T("TXT_CODE_6a365d01"))}`)}return n.length&&s_(T("TXT_CODE_PLUGIN_NODE_ACTION_FAILED",{nodes:n.join("; ")}),"error"),n.length===0},UE=async(_,E,n)=>{var N;g.value=_.id;try{const O=n?await GE(n):!0,{execute:d}=pe();M_((N=(await d({data:{id:_.id,enabled:E}})).value)==null?void 0:N.result),await B_.plugins.refresh(),await c_(),O&&(!q.value||q.value.application==="applied")&&s_(T(E?"TXT_CODE_PLUGIN_ENABLED":"TXT_CODE_PLUGIN_DISABLED"),"success")}catch(O){a_(O),await c_()}finally{g.value=""}},uE=async(_,E,n=u.value)=>{var N;g.value=_.id;try{const{execute:O}=mE();M_((N=(await O({params:{daemonId:n},data:{id:_.id,enabled:E}})).value)==null?void 0:N.result),(!q.value||q.value.application==="applied")&&s_(T(E?"TXT_CODE_PLUGIN_ENABLED":"TXT_CODE_PLUGIN_DISABLED"),"success")}catch(O){a_(O)}finally{g.value="",await TE()}},ee=(_,E)=>{if(r_.value)return;const n=G.value,N=u.value,O=()=>n==="panel"?UE(_,E):uE(_,E,N);if(E)return O();PE(_,"disable")},Te=_=>{c.value&&ee(c.value,_)},ne=async()=>{const _=i.value;!_||_.action!=="disable"||_.checkingNodes||K.value||(_.scope==="panel"?await UE(_.plugin,!1,_):await uE(_.plugin,!1,_.nodeId),i.value=null)},te=async()=>{const _=i.value;if(!(!_||_.action!=="remove"||!_.plugin.removable||_.checkingNodes||K.value)){w_.value=!0;try{let E=!0;if(_.scope==="panel"){E=await GE(_);const{execute:n}=Re();await n({params:{id:_.plugin.id},timeout:11*60*1e3}),await B_.plugins.refresh().catch(N=>console.error("Failed to refresh plugins:",N)),await c_()}else{const{execute:n}=$E();await n({params:{daemonId:_.nodeId,id:_.plugin.id},timeout:11*60*1e3}),await TE()}i.value=null,E&&s_(T("TXT_CODE_PLUGIN_DELETED"),"success")}catch(E){a_(E)}finally{w_.value=!1}}},rE=async()=>{const _=i.value;if(!(!_||_.checkingNodes||K.value)){if(_.step==="confirm"){if(await Ee(_),M||i.value!==_)return;if(_.nodeTargets.length||_.nodeCheckError){_.selectedNodeIds=_.nodeTargets.filter(({plugin:E})=>_.action!=="remove"||E.removable).map(({node:E})=>E.uuid),_.step="nodes";return}}return _.action==="remove"?te():ne()}};return(_,E)=>(a(),U(e(de),{class:"plugin-config-page",onKeydown:E[25]||(E[25]=vE(n=>H.value=!1,["esc"]))},{default:o(()=>{var n,N,O,d,P,Y,d_,cE,dE;return[D(e(v_),{modelValue:E_.value,"onUpdate:modelValue":E[3]||(E[3]=I=>E_.value=I),"max-width":"480",persistent:y.value},{default:o(()=>[D(e(S_),{title:e(T)("TXT_CODE_PLUGIN_NPM_INSTALL")},{default:o(()=>[D(e(X_),null,{default:o(()=>[D(e(l_),{modelValue:B.value,"onUpdate:modelValue":E[0]||(E[0]=I=>B.value=I),label:e(T)("TXT_CODE_PLUGIN_NPM_PACKAGE"),placeholder:"epanel-plugin-example",disabled:y.value},null,8,["modelValue","label","disabled"]),D(e(l_),{modelValue:W.value,"onUpdate:modelValue":E[1]||(E[1]=I=>W.value=I),label:e(T)("TXT_CODE_PLUGIN_NPM_VERSION"),placeholder:"latest",disabled:y.value,"hide-details":""},null,8,["modelValue","label","disabled"])]),_:1}),D(e(A_),null,{default:o(()=>[D(e(b_)),D(e(X),{disabled:y.value,onClick:E[2]||(E[2]=I=>E_.value=!1)},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(e(X),{color:"primary",loading:y.value,disabled:!B.value.trim(),onClick:_e},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_NPM_INSTALL")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue","persistent"]),j.value?(a(),U(e(le),{key:0,class:"plugin-config-loading",color:"primary",indeterminate:""})):A("",!0),(a(),U(bE(e(w)?e(ie):"aside"),x_(K_(H_.value)),{default:o(()=>[m("div",Je,[e(w)?(a(),v("div",Ye,[m("span",null,C(e(T)("TXT_CODE_PLUGIN_CONFIG")),1),D(e(X),{icon:"mdi-close",size:"small",variant:"text","aria-label":e(T)("TXT_CODE_b1dedda3"),onClick:E[4]||(E[4]=I=>H.value=!1)},null,8,["aria-label"])])):A("",!0),D(e(Ce),{modelValue:G.value,"onUpdate:modelValue":E[5]||(E[5]=I=>G.value=I),class:"plugin-config-scope",disabled:y.value,mandatory:""},{default:o(()=>[D(e(X),{value:"panel",size:"small",variant:"text"},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_SCOPE_PANEL")),1)]),_:1}),D(e(X),{value:"node",size:"small",variant:"text"},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_SCOPE_NODE")),1)]),_:1})]),_:1},8,["modelValue","disabled"]),G.value==="node"?(a(),U(e(aE),{key:1,modelValue:u.value,"onUpdate:modelValue":E[6]||(E[6]=I=>u.value=I),disabled:y.value,class:"plugin-config-node-select",items:S.value,loading:j.value,placeholder:e(T)("TXT_CODE_PLUGIN_NODE_SELECT"),"hide-details":""},null,8,["modelValue","disabled","items","loading","placeholder"])):A("",!0),m("div",Ze,[m("span",null,C(e(T)("TXT_CODE_PLUGIN_LIST")),1),D(e(X),{icon:"mdi-plus",size:"x-small",variant:"text","aria-label":e(T)("TXT_CODE_PLUGIN_GROUP_ADD"),onClick:hE},null,8,["aria-label"])]),D(e(Ue),{class:"plugin-config-list",density:"compact"},{default:o(()=>[(a(!0),v(T_,null,y_(kE.value,I=>(a(),v(T_,{key:I.id},[D(e(Pe),{class:Q_(["plugin-config-group-heading",{"plugin-config-group-heading-over":z.value===I.id}]),onDragover:p_(p=>z.value=I.id,["prevent"]),onDragleave:E[7]||(E[7]=p=>z.value=""),onDrop:p_(p=>zE(I.id),["prevent"])},{default:o(()=>[m("span",null,C(I.name),1),I.unassigned?A("",!0):(a(),v("span",_T,[D(e(X),{icon:"mdi-pencil-outline",size:"x-small",variant:"text","aria-label":e(T)("TXT_CODE_PLUGIN_GROUP_RENAME"),onClick:p_(p=>wE(I),["stop"])},null,8,["aria-label","onClick"]),D(e(X),{icon:"mdi-delete-outline",size:"x-small",variant:"text","aria-label":e(T)("TXT_CODE_PLUGIN_GROUP_DELETE"),onClick:p_(p=>xE(I),["stop"])},null,8,["aria-label","onClick"])]))]),_:2},1032,["class","onDragover","onDrop"]),(a(!0),v(T_,null,y_(I.plugins,p=>(a(),U(e(Ge),{key:p.id,draggable:"true",active:p.id===V.value,class:Q_({"plugin-config-item-off":!p.enabled}),title:L(p.id),onClick:Z=>jE(p.id),onDragstart:Z=>HE(p.id,Z),onDragend:qE},{append:o(()=>[m("span",{class:Q_(["plugin-config-item-dot",{"plugin-config-item-dot-off":!p.enabled||p.state&&p.state!=="active"}])},null,2)]),_:2},1032,["active","class","title","onClick","onDragstart"]))),128))],64))),128)),t.value.length?A("",!0):(a(),v("div",ET,C(e(T)("TXT_CODE_NO_DATA")),1))]),_:1})])]),_:1},16)),m("div",eT,[c.value||e(w)?(a(),v("div",TT,[m("div",nT,[e(w)?(a(),U(e(X),{key:0,icon:"mdi-menu",variant:"text",title:e(T)("TXT_CODE_PLUGIN_LIST"),"aria-label":e(T)("TXT_CODE_PLUGIN_LIST"),"aria-expanded":H.value,onClick:E[8]||(E[8]=I=>H.value=!0)},null,8,["title","aria-label","aria-expanded"])):A("",!0),m("h2",null,C(L((n=c.value)==null?void 0:n.id)||e(T)("TXT_CODE_PLUGIN_CONFIG")),1)]),c.value?(a(),v("div",tT,[c.value.state?(a(),U(e(ue),{key:0,size:"small",color:c.value.state==="active"?"success":"warning"},{default:o(()=>[R(C(e(T)(WE[c.value.state])),1)]),_:1},8,["color"])):A("",!0),c.value.version?(a(),v("span",DT,C(e(T)("TXT_CODE_VERSION"))+" "+C(c.value.version),1)):A("",!0),m("div",NT,[c.value.packageName&&c.value.removable?(a(),U(e(X),{key:0,icon:"mdi-update",variant:"text",disabled:r_.value,title:e(T)("TXT_CODE_PLUGIN_NPM_INSTALL"),"aria-label":e(T)("TXT_CODE_PLUGIN_NPM_INSTALL"),onClick:E[9]||(E[9]=I=>ZE(c.value))},null,8,["disabled","title","aria-label"])):A("",!0),D(e(NE),{modelValue:g_.value,"onUpdate:modelValue":E[11]||(E[11]=I=>g_.value=I),text:e(T)(c.value.enabled?"TXT_CODE_PLUGIN_DISABLE":"TXT_CODE_PLUGIN_ENABLE"),location:"top"},{activator:o(({props:I})=>[m("span",x_(K_(I)),[D(e(X),{icon:"mdi-power",color:c.value.enabled?"warning":"success",variant:"text",loading:g.value===c.value.id,disabled:r_.value,"aria-label":e(T)(c.value.enabled?"TXT_CODE_PLUGIN_DISABLE":"TXT_CODE_PLUGIN_ENABLE"),onClick:E[10]||(E[10]=p=>Te(!c.value.enabled))},null,8,["color","loading","disabled","aria-label"])],16)]),_:1},8,["modelValue","text"]),(N=f.value)!=null&&N.fields.some(I=>I.type!=="link")?(a(),U(e(NE),{key:1,modelValue:OE.value,"onUpdate:modelValue":E[12]||(E[12]=I=>OE.value=I),text:e(T)(k_.value?"TXT_CODE_PLUGIN_SAVE_REMINDER":"TXT_CODE_PLUGIN_SAVE_SETTINGS"),location:"top"},{activator:o(({props:I})=>[m("span",x_(K_(I)),[D(e(X),{icon:"mdi-content-save",color:"primary",variant:k_.value?"flat":"text",loading:O_.value,disabled:$_.value,"aria-label":e(T)("TXT_CODE_PLUGIN_SAVE_SETTINGS"),onClick:iE},null,8,["variant","loading","disabled","aria-label"])],16)]),_:1},8,["modelValue","text"])):A("",!0),D(e(NE),{modelValue:m_.value,"onUpdate:modelValue":E[14]||(E[14]=I=>m_.value=I),text:e(T)((O=c.value)!=null&&O.removable?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"),location:"top"},{activator:o(({props:I})=>{var p,Z;return[m("span",x_(K_(I)),[D(e(X),{icon:"mdi-delete",color:"error",variant:"text",loading:w_.value,disabled:!((p=c.value)!=null&&p.removable)||r_.value,"aria-label":e(T)((Z=c.value)!=null&&Z.removable?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"),onClick:E[13]||(E[13]=tE=>PE(c.value,"remove"))},null,8,["loading","disabled","aria-label"])],16)]}),_:1},8,["modelValue","text"])])])):A("",!0)])):A("",!0),m("div",IT,[G.value==="node"&&J.value?(a(),U(e(o_),{key:0,class:"plugin-config-alert",type:"warning",variant:"tonal",title:e(T)("TXT_CODE_PLUGIN_NODE_LIST_FAILED"),text:J.value},null,8,["title","text"])):A("",!0),c.value?(a(),v(T_,{key:1},[c.value.enabled?c.value.error?(a(),U(e(o_),{key:1,class:"plugin-config-alert",type:"error",variant:"tonal",title:e(T)("TXT_CODE_PLUGIN_LOAD_FAILED"),text:c.value.error},null,8,["title","text"])):A("",!0):(a(),U(e(o_),{key:0,class:"plugin-config-alert",type:"warning",variant:"tonal",title:e(T)("TXT_CODE_PLUGIN_IS_DISABLED")},null,8,["title"])),((d=q.value)==null?void 0:d.application)==="restart-required"||(P=f_.value)!=null&&P.restartRequired?(a(),U(e(o_),{key:2,class:"plugin-config-alert",type:"warning",variant:"tonal",text:e(T)("TXT_CODE_PLUGIN_RESTART_REQUIRED")},null,8,["text"])):(Y=f_.value)!=null&&Y.reloadRequired?(a(),U(e(o_),{key:3,class:"plugin-config-alert",type:"warning",variant:"tonal",text:e(T)("TXT_CODE_PLUGIN_REFRESH_REQUIRED")},null,8,["text"])):((d_=q.value)==null?void 0:d_.application)==="pending"?(a(),U(e(o_),{key:4,class:"plugin-config-alert",type:"info",variant:"tonal",text:e(T)("TXT_CODE_PLUGIN_SAVED_PENDING")},null,8,["text"])):A("",!0),(cE=f_.value)!=null&&cE.error?(a(),U(e(o_),{key:5,class:"plugin-config-alert",type:"error",variant:"tonal",title:e(T)("TXT_CODE_PLUGIN_FRONTEND_FAILED"),text:f_.value.error.message},null,8,["title","text"])):A("",!0),(dE=f_.value)!=null&&dE.error?(a(),U(e(X),{key:6,class:"mb-4",variant:"text",onClick:JE},{default:o(()=>[R(C(e(T)("TXT_CODE_9277af78")),1)]),_:1})):A("",!0),$_.value?(a(),v("div",sT,[D(e(re),{color:"primary",indeterminate:"",size:"28"})])):f.value&&f.value.fields.length?(a(),v("div",aT,[D(We,{fields:f.value.fields,values:f.value.values,onSave:iE},null,8,["fields","values"])])):(a(),v("div",oT,C(e(T)("TXT_CODE_PLUGIN_NO_CONFIG")),1))],64)):J.value?A("",!0):(a(),v("div",LT,C(e(T)("TXT_CODE_NO_DATA")),1))])]),D(e(v_),{modelValue:Z_.value,"onUpdate:modelValue":E[16]||(E[16]=I=>Z_.value=I),persistent:K.value,"max-width":"460"},{default:o(()=>{var I,p;return[D(e(S_),{title:e(T)(((I=i.value)==null?void 0:I.action)==="remove"?"TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE":"TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE",{name:L((p=i.value)==null?void 0:p.plugin.id)}),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(e(X_),null,{default:o(()=>{var Z;return[R(C(e(T)(((Z=i.value)==null?void 0:Z.action)==="remove"?"TXT_CODE_PLUGIN_DELETE_CONFIRM":"TXT_CODE_PLUGIN_DISABLE_CONFIRM")),1)]}),_:1}),D(e(A_),null,{default:o(()=>{var Z,tE,XE;return[D(e(b_)),D(e(X),{variant:"text",disabled:K.value,onClick:E[15]||(E[15]=DE=>Z_.value=!1)},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(e(X),{color:"error","prepend-icon":((Z=i.value)==null?void 0:Z.action)==="remove"?"mdi-delete":void 0,loading:K.value||((tE=i.value)==null?void 0:tE.checkingNodes),disabled:(XE=i.value)==null?void 0:XE.checkingNodes,onClick:rE},{default:o(()=>{var DE;return[R(C(e(T)(((DE=i.value)==null?void 0:DE.action)==="remove"?"TXT_CODE_PLUGIN_DELETE":"TXT_CODE_PLUGIN_DISABLE")),1)]}),_:1},8,["prepend-icon","loading","disabled"])]}),_:1})]),_:1},8,["title"])]}),_:1},8,["modelValue","persistent"]),D(e(v_),{modelValue:_E.value,"onUpdate:modelValue":E[19]||(E[19]=I=>_E.value=I),persistent:K.value,"max-width":"480"},{default:o(()=>[D(e(S_),{title:e(T)("TXT_CODE_PLUGIN_NODE_SELECT")},{default:o(()=>[i.value?(a(),U(e(X_),{key:0},{default:o(()=>[i.value.nodeTargets.length?(a(),v("div",OT,C(e(T)(i.value.action==="remove"?"TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM":"TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM")),1)):A("",!0),i.value.nodeCheckError?(a(),U(e(o_),{key:1,class:"mb-2",type:"warning",variant:"tonal",text:i.value.nodeCheckError},null,8,["text"])):A("",!0),(a(!0),v(T_,null,y_(i.value.nodeTargets,I=>(a(),U(e(ce),{key:I.node.uuid,modelValue:i.value.selectedNodeIds,"onUpdate:modelValue":E[17]||(E[17]=p=>i.value.selectedNodeIds=p),value:I.node.uuid,label:s(I.node),disabled:K.value||i.value.action==="remove"&&!I.plugin.removable,messages:i.value.action==="remove"&&!I.plugin.removable?e(T)("TXT_CODE_PLUGIN_DELETE_UNAVAILABLE"):void 0,"hide-details":i.value.action!=="remove"||I.plugin.removable,density:"compact"},null,8,["modelValue","value","label","disabled","messages","hide-details"]))),128))]),_:1})):A("",!0),D(e(A_),null,{default:o(()=>[D(e(b_)),D(e(X),{variant:"text",disabled:K.value,onClick:E[18]||(E[18]=I=>_E.value=!1)},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1},8,["disabled"]),D(e(X),{color:"primary",loading:K.value,onClick:rE},{default:o(()=>[R(C(e(T)("TXT_CODE_d507abff")),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue","persistent"]),D(e(v_),{modelValue:P_.value,"onUpdate:modelValue":E[22]||(E[22]=I=>P_.value=I),"max-width":"460"},{default:o(()=>[D(e(S_),{title:e(T)("TXT_CODE_PLUGIN_GROUP_EDIT"),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(e(X_),null,{default:o(()=>[D(e(l_),{modelValue:G_.value,"onUpdate:modelValue":E[20]||(E[20]=I=>G_.value=I),autofocus:"",label:e(T)("TXT_CODE_PLUGIN_GROUP_NAME"),"hide-details":"",onKeyup:vE(oE,["enter"])},null,8,["modelValue","label"])]),_:1}),D(e(A_),null,{default:o(()=>[D(e(b_)),D(e(X),{variant:"text",onClick:E[21]||(E[21]=I=>P_.value=!1)},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1}),D(e(X),{color:"primary",disabled:!G_.value.trim(),onClick:oE},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_SAVE_SETTINGS")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]),D(e(v_),{modelValue:U_.value,"onUpdate:modelValue":E[24]||(E[24]=I=>U_.value=I),"max-width":"460"},{default:o(()=>{var I;return[D(e(S_),{title:e(T)("TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE",{name:((I=R_.value)==null?void 0:I.name)||""}),class:"plugin-config-confirm-card",rounded:"xl"},{default:o(()=>[D(e(X_),null,{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM")),1)]),_:1}),D(e(A_),null,{default:o(()=>[D(e(b_)),D(e(X),{variant:"text",onClick:E[23]||(E[23]=p=>U_.value=!1)},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_CANCEL")),1)]),_:1}),D(e(X),{color:"error",onClick:KE},{default:o(()=>[R(C(e(T)("TXT_CODE_PLUGIN_GROUP_DELETE")),1)]),_:1})]),_:1})]),_:1},8,["title"])]}),_:1},8,["modelValue"])]}),_:1}))}});const sE=BE(lT,[["__scopeId","data-v-edc30e92"]]),iT="Möchtest du das entsprechende Plugin auch auf den folgenden Knoten deaktivieren? Wähle die gewünschten Knoten aus.",CT="Möchtest du das entsprechende Plugin auch von den folgenden Knoten entfernen? Wähle die gewünschten Knoten aus.",PT="Die Plugins auf diesen Knoten konnten nicht geprüft werden: {nodes}.",GT="Die Plugin-Aktion wurde auf diesen Knoten nicht abgeschlossen: {nodes}",UT="Plugin-Konfiguration",uT="Abbrechen",rT="Entfernen",cT="Die npm-Abhängigkeit wird deinstalliert. Gespeicherte Einstellungen bleiben erhalten.",dT="{name} entfernen?",XT="Kernplugins und Quellcode-Plugins können hier nicht deinstalliert werden.",AT="Plugin entfernt",ST="Einstellungen speichern",vT="Denke daran, deine Einstellungen zu speichern!",pT="Deaktivieren",RT="Plugin deaktiviert",gT="Alles, was dieses Plugin bereitstellt, wird sofort entfernt.",mT="{name} deaktivieren?",$T="Aktivieren",FT="Plugin aktiviert",fT="Der Webserver kann nicht über das Panel deaktiviert werden, das er selbst bereitstellt. Setze stattdessen plugins.server.enabled auf false in seiner data/plugin-overrides.json.",MT="Dieses Plugin ist deaktiviert. Seine Seiten, Routen und API sind erst nach dem Aktivieren wieder verfügbar.",bT="Dieses Plugin konnte nicht geladen werden",BT="Die Plugins dieses Knotens konnten nicht aufgelistet werden.",yT="Dieser Knoten existiert nicht.",kT="nicht verbunden",VT="Knoten auswählen",hT="Dieses Plugin hat keine konfigurierbaren Optionen.",wT="Nicht zugeordnet",xT="Gruppe hinzufügen",KT="Plugin-Gruppe bearbeiten",QT="Gruppe umbenennen",HT="Gruppe löschen",zT="Gruppe {name} löschen?",qT="Die Gruppe und ihre Plugin-Zuordnungen werden entfernt. Die Plugins selbst werden nicht gelöscht.",jT="Gruppenname",WT="Knoten",JT="Panel",YT="Die Plugin-Verwaltung kann sich nicht selbst deaktivieren. Setze stattdessen plugins.config.enabled auf false in ihrer data/plugin-overrides.json.",ZT="Wartet auf Abhängigkeiten",_n="Deaktiviert",En="Wird geladen",en="Aktiv",Tn="Wird entladen",nn="Starten Sie den Dienst neu, um die Änderung anzuwenden.",tn="Gespeichert; wartet auf Plugin-Abhängigkeiten.",Dn="Browser-Plugin fehlgeschlagen",Nn="Laden Sie die Seite neu, um die aktualisierte Browser-Laufzeit zu laden.",In="Plugin installieren / aktualisieren",sn="npm-Paketname",an="Version oder Tag (Standard: latest)",on="Plugin installiert und synchronisiert",Ln={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:iT,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:CT,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:PT,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:GT,TXT_CODE_PLUGIN_CONFIG:UT,TXT_CODE_PLUGIN_CANCEL:uT,TXT_CODE_PLUGIN_DELETE:rT,TXT_CODE_PLUGIN_DELETE_CONFIRM:cT,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:dT,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:XT,TXT_CODE_PLUGIN_DELETED:AT,TXT_CODE_PLUGIN_SAVE_SETTINGS:ST,TXT_CODE_PLUGIN_SAVE_REMINDER:vT,TXT_CODE_PLUGIN_DISABLE:pT,TXT_CODE_PLUGIN_DISABLED:RT,TXT_CODE_PLUGIN_DISABLE_CONFIRM:gT,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:mT,TXT_CODE_PLUGIN_ENABLE:$T,TXT_CODE_PLUGIN_ENABLED:FT,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:fT,TXT_CODE_PLUGIN_IS_DISABLED:MT,TXT_CODE_PLUGIN_LOAD_FAILED:bT,TXT_CODE_PLUGIN_NODE_LIST_FAILED:BT,TXT_CODE_PLUGIN_NODE_NOT_FOUND:yT,TXT_CODE_PLUGIN_NODE_OFFLINE:kT,TXT_CODE_PLUGIN_NODE_SELECT:VT,TXT_CODE_PLUGIN_NO_CONFIG:hT,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:wT,TXT_CODE_PLUGIN_GROUP_ADD:xT,TXT_CODE_PLUGIN_GROUP_EDIT:KT,TXT_CODE_PLUGIN_GROUP_RENAME:QT,TXT_CODE_PLUGIN_GROUP_DELETE:HT,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:zT,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:qT,TXT_CODE_PLUGIN_GROUP_NAME:jT,TXT_CODE_PLUGIN_SCOPE_NODE:WT,TXT_CODE_PLUGIN_SCOPE_PANEL:JT,TXT_CODE_PLUGIN_SELF_DISABLE:YT,TXT_CODE_PLUGIN_STATE_PENDING:ZT,TXT_CODE_PLUGIN_STATE_DISABLED:_n,TXT_CODE_PLUGIN_STATE_LOADING:En,TXT_CODE_PLUGIN_STATE_ACTIVE:en,TXT_CODE_PLUGIN_STATE_UNLOADING:Tn,TXT_CODE_PLUGIN_RESTART_REQUIRED:nn,TXT_CODE_PLUGIN_SAVED_PENDING:tn,TXT_CODE_PLUGIN_FRONTEND_FAILED:Dn,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Nn,TXT_CODE_PLUGIN_NPM_INSTALL:In,TXT_CODE_PLUGIN_NPM_PACKAGE:sn,TXT_CODE_PLUGIN_NPM_VERSION:an,TXT_CODE_PLUGIN_NPM_INSTALLED:on},On="Also disable the matching plugin on the following nodes? Select the nodes to include.",ln="Also remove the matching plugin from the following nodes? Select the nodes to include.",Cn="Could not check the plugins on these nodes: {nodes}.",Pn="The plugin action did not complete on these nodes: {nodes}",Gn="Plugin Configuration",Un="Cancel",un="Remove",rn="The npm dependency will be uninstalled. Saved configuration is kept.",cn="Remove {name}?",dn="Core plugins and development source plugins cannot be uninstalled here.",Xn="Plugin removed",An="Save settings",Sn="Remember to save your settings!",vn="Disable",pn="Plugin disabled",Rn="Everything this plugin provides is removed at once.",gn="Disable {name}?",mn="Enable",$n="Plugin enabled",Fn="The web server cannot be disabled from the panel it serves. Set plugins.server.enabled to false in its data/plugin-overrides.json instead.",fn="This plugin is disabled. Its pages, routes and API are unavailable until it is enabled again.",Mn="This plugin failed to load",bn="This node's plugins could not be listed.",Bn="That node does not exist.",yn="not connected",kn="Select a node",Vn="This plugin has no configurable options.",hn="Unassigned",wn="Add group",xn="Edit plugin group",Kn="Rename group",Qn="Delete group",Hn="Delete group {name}?",zn="The group and its plugin assignments will be removed. The plugins themselves will not be deleted.",qn="Group name",jn="Nodes",Wn="Panel",Jn="The plugin manager cannot disable itself. Set plugins.config.enabled to false in its data/plugin-overrides.json instead.",Yn="Waiting for dependencies",Zn="Disabled",_t="Loading",Et="Running",et="Unloading",Tt="Restart the service to apply this change.",nt="Saved; waiting for plugin dependencies.",tt="Browser plugin failed",Dt="Refresh the page to load the updated browser runtime.",Nt="Install / update plugin",It="npm package name",st="Version or tag (latest by default)",at="Plugin installed and synchronized",ot={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:On,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:ln,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:Cn,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:Pn,TXT_CODE_PLUGIN_CONFIG:Gn,TXT_CODE_PLUGIN_CANCEL:Un,TXT_CODE_PLUGIN_DELETE:un,TXT_CODE_PLUGIN_DELETE_CONFIRM:rn,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:cn,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:dn,TXT_CODE_PLUGIN_DELETED:Xn,TXT_CODE_PLUGIN_SAVE_SETTINGS:An,TXT_CODE_PLUGIN_SAVE_REMINDER:Sn,TXT_CODE_PLUGIN_DISABLE:vn,TXT_CODE_PLUGIN_DISABLED:pn,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Rn,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:gn,TXT_CODE_PLUGIN_ENABLE:mn,TXT_CODE_PLUGIN_ENABLED:$n,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:Fn,TXT_CODE_PLUGIN_IS_DISABLED:fn,TXT_CODE_PLUGIN_LOAD_FAILED:Mn,TXT_CODE_PLUGIN_NODE_LIST_FAILED:bn,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Bn,TXT_CODE_PLUGIN_NODE_OFFLINE:yn,TXT_CODE_PLUGIN_NODE_SELECT:kn,TXT_CODE_PLUGIN_NO_CONFIG:Vn,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:hn,TXT_CODE_PLUGIN_GROUP_ADD:wn,TXT_CODE_PLUGIN_GROUP_EDIT:xn,TXT_CODE_PLUGIN_GROUP_RENAME:Kn,TXT_CODE_PLUGIN_GROUP_DELETE:Qn,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Hn,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:zn,TXT_CODE_PLUGIN_GROUP_NAME:qn,TXT_CODE_PLUGIN_SCOPE_NODE:jn,TXT_CODE_PLUGIN_SCOPE_PANEL:Wn,TXT_CODE_PLUGIN_SELF_DISABLE:Jn,TXT_CODE_PLUGIN_STATE_PENDING:Yn,TXT_CODE_PLUGIN_STATE_DISABLED:Zn,TXT_CODE_PLUGIN_STATE_LOADING:_t,TXT_CODE_PLUGIN_STATE_ACTIVE:Et,TXT_CODE_PLUGIN_STATE_UNLOADING:et,TXT_CODE_PLUGIN_RESTART_REQUIRED:Tt,TXT_CODE_PLUGIN_SAVED_PENDING:nt,TXT_CODE_PLUGIN_FRONTEND_FAILED:tt,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Dt,TXT_CODE_PLUGIN_NPM_INSTALL:Nt,TXT_CODE_PLUGIN_NPM_PACKAGE:It,TXT_CODE_PLUGIN_NPM_VERSION:st,TXT_CODE_PLUGIN_NPM_INSTALLED:at},Lt="¿Quieres desactivar también el complemento correspondiente en los siguientes nodos? Selecciona los nodos que quieras incluir.",Ot="¿Quieres eliminar también el complemento correspondiente de los siguientes nodos? Selecciona los nodos que quieras incluir.",lt="No se pudieron comprobar los complementos de estos nodos: {nodes}.",it="La operación del complemento no se completó en estos nodos: {nodes}",Ct="Configuracion de plugins",Pt="Cancelar",Gt="Eliminar",Ut="Se desinstalará la dependencia npm. Se conservará la configuración guardada.",ut="¿Eliminar {name}?",rt="Los complementos principales y de código fuente no se pueden desinstalar aquí.",ct="Complemento eliminado",dt="Guardar configuración",Xt="¡Recuerda guardar la configuración!",At="Desactivar",St="Complemento desactivado",vt="Todo lo que aporta este complemento se elimina de inmediato.",pt="¿Desactivar {name}?",Rt="Activar",gt="Complemento activado",mt="El servidor web no puede desactivarse desde el panel que él mismo sirve. Establece plugins.server.enabled en false en su data/plugin-overrides.json.",$t="Este complemento está desactivado. Sus páginas, rutas y API no están disponibles hasta que se vuelva a activar.",Ft="No se pudo cargar este complemento",ft="No se pudieron listar los complementos de este nodo.",Mt="Ese nodo no existe.",bt="sin conexión",Bt="Seleccionar un nodo",yt="Este plugin no tiene opciones configurables.",kt="Sin asignar",Vt="Añadir grupo",ht="Editar grupo de plugins",wt="Cambiar nombre del grupo",xt="Eliminar grupo",Kt="¿Eliminar el grupo {name}?",Qt="Se eliminarán el grupo y sus asignaciones de plugins. Los plugins no se eliminarán.",Ht="Nombre del grupo",zt="Nodos",qt="Panel",jt="El gestor de complementos no puede desactivarse a sí mismo. Establece plugins.config.enabled en false en su data/plugin-overrides.json.",Wt="Esperando dependencias",Jt="Desactivado",Yt="Cargando",Zt="En ejecución",_D="Descargando",ED="Reinicia el servicio para aplicar el cambio.",eD="Guardado; esperando dependencias del complemento.",TD="Error del complemento del navegador",nD="Recarga la página para cargar el entorno actualizado del navegador.",tD="Instalar / actualizar complemento",DD="Nombre del paquete npm",ND="Versión o etiqueta (latest por defecto)",ID="Complemento instalado y sincronizado",sD={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:Lt,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:Ot,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:lt,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:it,TXT_CODE_PLUGIN_CONFIG:Ct,TXT_CODE_PLUGIN_CANCEL:Pt,TXT_CODE_PLUGIN_DELETE:Gt,TXT_CODE_PLUGIN_DELETE_CONFIRM:Ut,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:ut,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:rt,TXT_CODE_PLUGIN_DELETED:ct,TXT_CODE_PLUGIN_SAVE_SETTINGS:dt,TXT_CODE_PLUGIN_SAVE_REMINDER:Xt,TXT_CODE_PLUGIN_DISABLE:At,TXT_CODE_PLUGIN_DISABLED:St,TXT_CODE_PLUGIN_DISABLE_CONFIRM:vt,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:pt,TXT_CODE_PLUGIN_ENABLE:Rt,TXT_CODE_PLUGIN_ENABLED:gt,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:mt,TXT_CODE_PLUGIN_IS_DISABLED:$t,TXT_CODE_PLUGIN_LOAD_FAILED:Ft,TXT_CODE_PLUGIN_NODE_LIST_FAILED:ft,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Mt,TXT_CODE_PLUGIN_NODE_OFFLINE:bt,TXT_CODE_PLUGIN_NODE_SELECT:Bt,TXT_CODE_PLUGIN_NO_CONFIG:yt,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:kt,TXT_CODE_PLUGIN_GROUP_ADD:Vt,TXT_CODE_PLUGIN_GROUP_EDIT:ht,TXT_CODE_PLUGIN_GROUP_RENAME:wt,TXT_CODE_PLUGIN_GROUP_DELETE:xt,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Kt,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Qt,TXT_CODE_PLUGIN_GROUP_NAME:Ht,TXT_CODE_PLUGIN_SCOPE_NODE:zt,TXT_CODE_PLUGIN_SCOPE_PANEL:qt,TXT_CODE_PLUGIN_SELF_DISABLE:jt,TXT_CODE_PLUGIN_STATE_PENDING:Wt,TXT_CODE_PLUGIN_STATE_DISABLED:Jt,TXT_CODE_PLUGIN_STATE_LOADING:Yt,TXT_CODE_PLUGIN_STATE_ACTIVE:Zt,TXT_CODE_PLUGIN_STATE_UNLOADING:_D,TXT_CODE_PLUGIN_RESTART_REQUIRED:ED,TXT_CODE_PLUGIN_SAVED_PENDING:eD,TXT_CODE_PLUGIN_FRONTEND_FAILED:TD,TXT_CODE_PLUGIN_REFRESH_REQUIRED:nD,TXT_CODE_PLUGIN_NPM_INSTALL:tD,TXT_CODE_PLUGIN_NPM_PACKAGE:DD,TXT_CODE_PLUGIN_NPM_VERSION:ND,TXT_CODE_PLUGIN_NPM_INSTALLED:ID},aD="Voulez-vous aussi désactiver le plugin correspondant sur les nœuds suivants ? Sélectionnez les nœuds à inclure.",oD="Voulez-vous aussi supprimer le plugin correspondant des nœuds suivants ? Sélectionnez les nœuds à inclure.",LD="Impossible de vérifier les plugins sur ces nœuds : {nodes}.",OD="L’opération sur le plugin n’a pas abouti sur ces nœuds : {nodes}",lD="Configuration des plugins",iD="Annuler",CD="Supprimer",PD="La dépendance npm sera désinstallée. La configuration enregistrée sera conservée.",GD="Supprimer {name} ?",UD="Les plugins essentiels et ceux du code source ne peuvent pas être désinstallés ici.",uD="Plugin supprimé",rD="Enregistrer la configuration",cD="Pensez à enregistrer la configuration !",dD="Désactiver",XD="Extension désactivée",AD="Tout ce que cette extension fournit est retiré immédiatement.",SD="Désactiver {name} ?",vD="Activer",pD="Extension activée",RD="Le serveur web ne peut pas être désactivé depuis le panneau qu il sert lui-même. Définissez plutôt plugins.server.enabled à false dans son data/plugin-overrides.json.",gD="Cette extension est désactivée. Ses pages, routes et API ne sont pas disponibles avant sa réactivation.",mD="Le chargement de cette extension a échoué",$D="Impossible de lister les extensions de ce nœud.",FD="Ce nœud n existe pas.",fD="non connecté",MD="Sélectionner un nœud",bD="Ce plugin ne comporte aucune option configurable.",BD="Non attribués",yD="Ajouter un groupe",kD="Modifier le groupe de plugins",VD="Renommer le groupe",hD="Supprimer le groupe",wD="Supprimer le groupe {name} ?",xD="Le groupe et ses affectations de plugins seront supprimés. Les plugins eux-mêmes ne seront pas supprimés.",KD="Nom du groupe",QD="Nœuds",HD="Panneau",zD="Le gestionnaire d extensions ne peut pas se désactiver lui-même. Définissez plutôt plugins.config.enabled à false dans son data/plugin-overrides.json.",qD="En attente des dépendances",jD="Désactivé",WD="Chargement",JD="Actif",YD="Déchargement",ZD="Redémarrez le service pour appliquer cette modification.",_N="Enregistré ; en attente des dépendances du plugin.",EN="Échec du plugin du navigateur",eN="Actualisez la page pour charger le nouvel environnement du navigateur.",TN="Installer / mettre à jour le plugin",nN="Nom du paquet npm",tN="Version ou étiquette (latest par défaut)",DN="Plugin installé et synchronisé",NN={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:aD,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:oD,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:LD,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:OD,TXT_CODE_PLUGIN_CONFIG:lD,TXT_CODE_PLUGIN_CANCEL:iD,TXT_CODE_PLUGIN_DELETE:CD,TXT_CODE_PLUGIN_DELETE_CONFIRM:PD,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:GD,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:UD,TXT_CODE_PLUGIN_DELETED:uD,TXT_CODE_PLUGIN_SAVE_SETTINGS:rD,TXT_CODE_PLUGIN_SAVE_REMINDER:cD,TXT_CODE_PLUGIN_DISABLE:dD,TXT_CODE_PLUGIN_DISABLED:XD,TXT_CODE_PLUGIN_DISABLE_CONFIRM:AD,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:SD,TXT_CODE_PLUGIN_ENABLE:vD,TXT_CODE_PLUGIN_ENABLED:pD,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:RD,TXT_CODE_PLUGIN_IS_DISABLED:gD,TXT_CODE_PLUGIN_LOAD_FAILED:mD,TXT_CODE_PLUGIN_NODE_LIST_FAILED:$D,TXT_CODE_PLUGIN_NODE_NOT_FOUND:FD,TXT_CODE_PLUGIN_NODE_OFFLINE:fD,TXT_CODE_PLUGIN_NODE_SELECT:MD,TXT_CODE_PLUGIN_NO_CONFIG:bD,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:BD,TXT_CODE_PLUGIN_GROUP_ADD:yD,TXT_CODE_PLUGIN_GROUP_EDIT:kD,TXT_CODE_PLUGIN_GROUP_RENAME:VD,TXT_CODE_PLUGIN_GROUP_DELETE:hD,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:wD,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:xD,TXT_CODE_PLUGIN_GROUP_NAME:KD,TXT_CODE_PLUGIN_SCOPE_NODE:QD,TXT_CODE_PLUGIN_SCOPE_PANEL:HD,TXT_CODE_PLUGIN_SELF_DISABLE:zD,TXT_CODE_PLUGIN_STATE_PENDING:qD,TXT_CODE_PLUGIN_STATE_DISABLED:jD,TXT_CODE_PLUGIN_STATE_LOADING:WD,TXT_CODE_PLUGIN_STATE_ACTIVE:JD,TXT_CODE_PLUGIN_STATE_UNLOADING:YD,TXT_CODE_PLUGIN_RESTART_REQUIRED:ZD,TXT_CODE_PLUGIN_SAVED_PENDING:_N,TXT_CODE_PLUGIN_FRONTEND_FAILED:EN,TXT_CODE_PLUGIN_REFRESH_REQUIRED:eN,TXT_CODE_PLUGIN_NPM_INSTALL:TN,TXT_CODE_PLUGIN_NPM_PACKAGE:nN,TXT_CODE_PLUGIN_NPM_VERSION:tN,TXT_CODE_PLUGIN_NPM_INSTALLED:DN},IN="以下のノードにある同じプラグインも無効にしますか?対象のノードを選択してください。",sN="以下のノードにある同じプラグインも削除しますか?対象のノードを選択してください。",aN="以下のノードのプラグインを確認できませんでした:{nodes}。",oN="以下のノードでプラグインの操作が完了しませんでした:{nodes}",LN="プラグイン設定",ON="キャンセル",lN="削除",iN="npm 依存パッケージをアンインストールします。保存済みの設定は保持されます。",CN="{name} を削除しますか?",PN="コアプラグインと開発用ソースプラグインはここではアンインストールできません。",GN="プラグインを削除しました",UN="設定を保存",uN="設定の保存をお忘れなく!",rN="無効化",cN="プラグインを無効にしました",dN="このプラグインが提供するすべての要素が即座に削除されます。",XN="{name} を無効にしますか?",AN="有効化",SN="プラグインを有効にしました",vN="Web サーバーは、それ自身が配信しているパネルからは無効にできません。data/plugin-overrides.json で plugins.server.enabled を false に設定してください。",pN="このプラグインは無効です。再度有効にするまで、ページ・ルート・API は利用できません。",RN="このプラグインの読み込みに失敗しました",gN="このノードのプラグイン一覧を取得できませんでした。",mN="そのノードは存在しません。",$N="未接続",FN="ノードを選択",fN="このプラグインには設定可能な項目がありません。",MN="未分類",bN="グループを追加",BN="プラグイン グループを編集",yN="グループ名を変更",kN="グループを削除",VN="グループ「{name}」を削除しますか?",hN="グループとプラグインの割り当てを削除します。プラグイン自体は削除されません。",wN="グループ名",xN="ノード",KN="パネル",QN="プラグイン管理自身は無効にできません。data/plugin-overrides.json で plugins.config.enabled を false に設定してください。",HN="依存関係を待機中",zN="無効",qN="読み込み中",jN="実行中",WN="アンロード中",JN="変更を適用するにはサービスを再起動してください。",YN="保存しました。プラグインの依存関係を待機しています。",ZN="ブラウザープラグインの読み込みに失敗しました",_I="更新されたブラウザーランタイムを読み込むにはページを再読み込みしてください。",EI="プラグインのインストール / 更新",eI="npm パッケージ名",TI="バージョンまたはタグ(既定: latest)",nI="プラグインをインストールして同期しました",tI={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:IN,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:sN,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:aN,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:oN,TXT_CODE_PLUGIN_CONFIG:LN,TXT_CODE_PLUGIN_CANCEL:ON,TXT_CODE_PLUGIN_DELETE:lN,TXT_CODE_PLUGIN_DELETE_CONFIRM:iN,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:CN,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:PN,TXT_CODE_PLUGIN_DELETED:GN,TXT_CODE_PLUGIN_SAVE_SETTINGS:UN,TXT_CODE_PLUGIN_SAVE_REMINDER:uN,TXT_CODE_PLUGIN_DISABLE:rN,TXT_CODE_PLUGIN_DISABLED:cN,TXT_CODE_PLUGIN_DISABLE_CONFIRM:dN,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:XN,TXT_CODE_PLUGIN_ENABLE:AN,TXT_CODE_PLUGIN_ENABLED:SN,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:vN,TXT_CODE_PLUGIN_IS_DISABLED:pN,TXT_CODE_PLUGIN_LOAD_FAILED:RN,TXT_CODE_PLUGIN_NODE_LIST_FAILED:gN,TXT_CODE_PLUGIN_NODE_NOT_FOUND:mN,TXT_CODE_PLUGIN_NODE_OFFLINE:$N,TXT_CODE_PLUGIN_NODE_SELECT:FN,TXT_CODE_PLUGIN_NO_CONFIG:fN,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:MN,TXT_CODE_PLUGIN_GROUP_ADD:bN,TXT_CODE_PLUGIN_GROUP_EDIT:BN,TXT_CODE_PLUGIN_GROUP_RENAME:yN,TXT_CODE_PLUGIN_GROUP_DELETE:kN,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:VN,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:hN,TXT_CODE_PLUGIN_GROUP_NAME:wN,TXT_CODE_PLUGIN_SCOPE_NODE:xN,TXT_CODE_PLUGIN_SCOPE_PANEL:KN,TXT_CODE_PLUGIN_SELF_DISABLE:QN,TXT_CODE_PLUGIN_STATE_PENDING:HN,TXT_CODE_PLUGIN_STATE_DISABLED:zN,TXT_CODE_PLUGIN_STATE_LOADING:qN,TXT_CODE_PLUGIN_STATE_ACTIVE:jN,TXT_CODE_PLUGIN_STATE_UNLOADING:WN,TXT_CODE_PLUGIN_RESTART_REQUIRED:JN,TXT_CODE_PLUGIN_SAVED_PENDING:YN,TXT_CODE_PLUGIN_FRONTEND_FAILED:ZN,TXT_CODE_PLUGIN_REFRESH_REQUIRED:_I,TXT_CODE_PLUGIN_NPM_INSTALL:EI,TXT_CODE_PLUGIN_NPM_PACKAGE:eI,TXT_CODE_PLUGIN_NPM_VERSION:TI,TXT_CODE_PLUGIN_NPM_INSTALLED:nI},DI="다음 노드의 동일한 플러그인도 비활성화할까요? 함께 처리할 노드를 선택하세요.",NI="다음 노드의 동일한 플러그인도 삭제할까요? 함께 처리할 노드를 선택하세요.",II="다음 노드의 플러그인을 확인할 수 없습니다: {nodes}.",sI="다음 노드에서 플러그인 작업이 완료되지 않았습니다: {nodes}",aI="플러그인 설정",oI="취소",LI="삭제",OI="npm 의존성을 제거합니다. 저장된 설정은 유지됩니다.",lI="{name} 플러그인을 삭제할까요?",iI="핵심 플러그인과 개발용 소스 플러그인은 여기서 제거할 수 없습니다.",CI="플러그인을 삭제했습니다",PI="설정 저장",GI="설정을 저장하는 것을 잊지 마세요!",UI="비활성화",uI="플러그인을 비활성화했습니다",rI="이 플러그인이 제공하는 모든 구성 요소가 즉시 제거됩니다.",cI="{name}을(를) 비활성화할까요?",dI="활성화",XI="플러그인을 활성화했습니다",AI="웹 서버는 자신이 제공하는 패널에서 비활성화할 수 없습니다. data/plugin-overrides.json에서 plugins.server.enabled 를 false 로 설정하세요.",SI="이 플러그인은 비활성화되어 있습니다. 다시 활성화할 때까지 페이지, 경로, API를 사용할 수 없습니다.",vI="이 플러그인을 불러오지 못했습니다",pI="이 노드의 플러그인 목록을 가져올 수 없습니다.",RI="해당 노드가 존재하지 않습니다.",gI="연결되지 않음",mI="노드 선택",$I="이 플러그인에는 구성 가능한 옵션이 없습니다.",FI="미분류",fI="그룹 추가",MI="플러그인 그룹 편집",bI="그룹 이름 변경",BI="그룹 삭제",yI="{name} 그룹을 삭제하시겠습니까?",kI="그룹과 플러그인 할당이 삭제됩니다. 플러그인 자체는 삭제되지 않습니다.",VI="그룹 이름",hI="노드",wI="패널",xI="플러그인 관리자는 자신을 비활성화할 수 없습니다. data/plugin-overrides.json에서 plugins.config.enabled 를 false 로 설정하세요.",KI="종속성 대기 중",QI="비활성",HI="로드 중",zI="실행 중",qI="언로드 중",jI="변경 사항을 적용하려면 서비스를 다시 시작하세요.",WI="저장되었습니다. 플러그인 종속성을 기다리는 중입니다.",JI="브라우저 플러그인 로드 실패",YI="업데이트된 브라우저 런타임을 로드하려면 페이지를 새로 고치세요.",ZI="플러그인 설치 / 업데이트",_s="npm 패키지 이름",Es="버전 또는 태그 (기본값: latest)",es="플러그인이 설치되고 동기화되었습니다",Ts={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:DI,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:NI,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:II,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:sI,TXT_CODE_PLUGIN_CONFIG:aI,TXT_CODE_PLUGIN_CANCEL:oI,TXT_CODE_PLUGIN_DELETE:LI,TXT_CODE_PLUGIN_DELETE_CONFIRM:OI,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:lI,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:iI,TXT_CODE_PLUGIN_DELETED:CI,TXT_CODE_PLUGIN_SAVE_SETTINGS:PI,TXT_CODE_PLUGIN_SAVE_REMINDER:GI,TXT_CODE_PLUGIN_DISABLE:UI,TXT_CODE_PLUGIN_DISABLED:uI,TXT_CODE_PLUGIN_DISABLE_CONFIRM:rI,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:cI,TXT_CODE_PLUGIN_ENABLE:dI,TXT_CODE_PLUGIN_ENABLED:XI,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:AI,TXT_CODE_PLUGIN_IS_DISABLED:SI,TXT_CODE_PLUGIN_LOAD_FAILED:vI,TXT_CODE_PLUGIN_NODE_LIST_FAILED:pI,TXT_CODE_PLUGIN_NODE_NOT_FOUND:RI,TXT_CODE_PLUGIN_NODE_OFFLINE:gI,TXT_CODE_PLUGIN_NODE_SELECT:mI,TXT_CODE_PLUGIN_NO_CONFIG:$I,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:FI,TXT_CODE_PLUGIN_GROUP_ADD:fI,TXT_CODE_PLUGIN_GROUP_EDIT:MI,TXT_CODE_PLUGIN_GROUP_RENAME:bI,TXT_CODE_PLUGIN_GROUP_DELETE:BI,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:yI,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:kI,TXT_CODE_PLUGIN_GROUP_NAME:VI,TXT_CODE_PLUGIN_SCOPE_NODE:hI,TXT_CODE_PLUGIN_SCOPE_PANEL:wI,TXT_CODE_PLUGIN_SELF_DISABLE:xI,TXT_CODE_PLUGIN_STATE_PENDING:KI,TXT_CODE_PLUGIN_STATE_DISABLED:QI,TXT_CODE_PLUGIN_STATE_LOADING:HI,TXT_CODE_PLUGIN_STATE_ACTIVE:zI,TXT_CODE_PLUGIN_STATE_UNLOADING:qI,TXT_CODE_PLUGIN_RESTART_REQUIRED:jI,TXT_CODE_PLUGIN_SAVED_PENDING:WI,TXT_CODE_PLUGIN_FRONTEND_FAILED:JI,TXT_CODE_PLUGIN_REFRESH_REQUIRED:YI,TXT_CODE_PLUGIN_NPM_INSTALL:ZI,TXT_CODE_PLUGIN_NPM_PACKAGE:_s,TXT_CODE_PLUGIN_NPM_VERSION:Es,TXT_CODE_PLUGIN_NPM_INSTALLED:es},ns="Desativar também o plugin correspondente nos seguintes nós? Selecione os nós que deseja incluir.",ts="Remover também o plugin correspondente dos seguintes nós? Selecione os nós que deseja incluir.",Ds="Não foi possível verificar os plugins nestes nós: {nodes}.",Ns="A operação do plugin não foi concluída nestes nós: {nodes}",Is="Configuracao de plugins",ss="Cancelar",as="Remover",os="A dependência npm será desinstalada. As configurações salvas serão mantidas.",Ls="Remover {name}?",Os="Plugins essenciais e de código-fonte não podem ser desinstalados aqui.",ls="Plugin removido",is="Salvar configurações",Cs="Lembre-se de salvar as configurações!",Ps="Desativar",Gs="Plugin desativado",Us="Tudo o que este plugin fornece é removido de imediato.",us="Desativar {name}?",rs="Ativar",cs="Plugin ativado",ds="O servidor web não pode ser desativado pelo painel que ele mesmo serve. Defina plugins.server.enabled como false no data/plugin-overrides.json dele.",Xs="Este plugin está desativado. Suas páginas, rotas e API ficam indisponíveis até ser ativado novamente.",As="Falha ao carregar este plugin",Ss="Não foi possível listar os plugins deste nó.",vs="Esse nó não existe.",ps="não conectado",Rs="Selecionar um nó",gs="Este plugin nao possui opcoes configuraveis.",ms="Não atribuídos",$s="Adicionar grupo",Fs="Editar grupo de plugins",fs="Renomear grupo",Ms="Excluir grupo",bs="Excluir o grupo {name}?",Bs="O grupo e suas associações de plugins serão removidos. Os plugins não serão excluídos.",ys="Nome do grupo",ks="Nós",Vs="Painel",hs="O gerenciador de plugins não pode desativar a si mesmo. Defina plugins.config.enabled como false no data/plugin-overrides.json dele.",ws="Aguardando dependências",xs="Desativado",Ks="Carregando",Qs="Em execução",Hs="Descarregando",zs="Reinicie o serviço para aplicar a alteração.",qs="Salvo; aguardando dependências do plugin.",js="Falha no plugin do navegador",Ws="Atualize a página para carregar o novo ambiente do navegador.",Js="Instalar / atualizar plugin",Ys="Nome do pacote npm",Zs="Versão ou tag (latest por padrão)",_a="Plugin instalado e sincronizado",Ea={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:ns,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:ts,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:Ds,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:Ns,TXT_CODE_PLUGIN_CONFIG:Is,TXT_CODE_PLUGIN_CANCEL:ss,TXT_CODE_PLUGIN_DELETE:as,TXT_CODE_PLUGIN_DELETE_CONFIRM:os,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:Ls,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:Os,TXT_CODE_PLUGIN_DELETED:ls,TXT_CODE_PLUGIN_SAVE_SETTINGS:is,TXT_CODE_PLUGIN_SAVE_REMINDER:Cs,TXT_CODE_PLUGIN_DISABLE:Ps,TXT_CODE_PLUGIN_DISABLED:Gs,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Us,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:us,TXT_CODE_PLUGIN_ENABLE:rs,TXT_CODE_PLUGIN_ENABLED:cs,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:ds,TXT_CODE_PLUGIN_IS_DISABLED:Xs,TXT_CODE_PLUGIN_LOAD_FAILED:As,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Ss,TXT_CODE_PLUGIN_NODE_NOT_FOUND:vs,TXT_CODE_PLUGIN_NODE_OFFLINE:ps,TXT_CODE_PLUGIN_NODE_SELECT:Rs,TXT_CODE_PLUGIN_NO_CONFIG:gs,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:ms,TXT_CODE_PLUGIN_GROUP_ADD:$s,TXT_CODE_PLUGIN_GROUP_EDIT:Fs,TXT_CODE_PLUGIN_GROUP_RENAME:fs,TXT_CODE_PLUGIN_GROUP_DELETE:Ms,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:bs,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Bs,TXT_CODE_PLUGIN_GROUP_NAME:ys,TXT_CODE_PLUGIN_SCOPE_NODE:ks,TXT_CODE_PLUGIN_SCOPE_PANEL:Vs,TXT_CODE_PLUGIN_SELF_DISABLE:hs,TXT_CODE_PLUGIN_STATE_PENDING:ws,TXT_CODE_PLUGIN_STATE_DISABLED:xs,TXT_CODE_PLUGIN_STATE_LOADING:Ks,TXT_CODE_PLUGIN_STATE_ACTIVE:Qs,TXT_CODE_PLUGIN_STATE_UNLOADING:Hs,TXT_CODE_PLUGIN_RESTART_REQUIRED:zs,TXT_CODE_PLUGIN_SAVED_PENDING:qs,TXT_CODE_PLUGIN_FRONTEND_FAILED:js,TXT_CODE_PLUGIN_REFRESH_REQUIRED:Ws,TXT_CODE_PLUGIN_NPM_INSTALL:Js,TXT_CODE_PLUGIN_NPM_PACKAGE:Ys,TXT_CODE_PLUGIN_NPM_VERSION:Zs,TXT_CODE_PLUGIN_NPM_INSTALLED:_a},ea="Отключить соответствующий плагин также на следующих узлах? Выберите нужные узлы.",Ta="Удалить соответствующий плагин также со следующих узлов? Выберите нужные узлы.",na="Не удалось проверить плагины на этих узлах: {nodes}.",ta="Операция с плагином не завершена на этих узлах: {nodes}",Da="Настройка плагинов",Na="Отмена",Ia="Удалить",sa="Зависимость npm будет удалена. Сохранённые настройки останутся.",aa="Удалить {name}?",oa="Основные плагины и плагины из исходного кода нельзя удалить здесь.",La="Плагин удалён",Oa="Сохранить настройки",la="Не забудьте сохранить настройки!",ia="Отключить",Ca="Плагин отключён",Pa="Всё, что предоставляет этот плагин, будет удалено сразу.",Ga="Отключить {name}?",Ua="Включить",ua="Плагин включён",ra="Веб-сервер нельзя отключить из панели, которую он сам и обслуживает. Укажите plugins.server.enabled: false в его data/plugin-overrides.json.",ca="Этот плагин отключён. Его страницы, маршруты и API недоступны, пока он не будет включён снова.",da="Не удалось загрузить этот плагин",Xa="Не удалось получить список плагинов этого узла.",Aa="Такого узла не существует.",Sa="не подключён",va="Выберите узел",pa="У этого плагина нет настраиваемых параметров.",Ra="Без группы",ga="Добавить группу",ma="Редактировать группу плагинов",$a="Переименовать группу",Fa="Удалить группу",fa="Удалить группу {name}?",Ma="Группа и привязанные к ней плагины будут удалены из списка. Сами плагины удалены не будут.",ba="Название группы",Ba="Узлы",ya="Панель",ka="Менеджер плагинов не может отключить сам себя. Укажите plugins.config.enabled: false в его data/plugin-overrides.json.",Va="Ожидание зависимостей",ha="Отключён",wa="Загрузка",xa="Работает",Ka="Выгрузка",Qa="Перезапустите службу, чтобы применить изменение.",Ha="Сохранено; ожидание зависимостей плагина.",za="Ошибка плагина браузера",qa="Обновите страницу для загрузки новой среды браузера.",ja="Установить / обновить плагин",Wa="Имя пакета npm",Ja="Версия или тег (по умолчанию latest)",Ya="Плагин установлен и синхронизирован",Za={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:ea,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:Ta,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:na,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:ta,TXT_CODE_PLUGIN_CONFIG:Da,TXT_CODE_PLUGIN_CANCEL:Na,TXT_CODE_PLUGIN_DELETE:Ia,TXT_CODE_PLUGIN_DELETE_CONFIRM:sa,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:aa,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:oa,TXT_CODE_PLUGIN_DELETED:La,TXT_CODE_PLUGIN_SAVE_SETTINGS:Oa,TXT_CODE_PLUGIN_SAVE_REMINDER:la,TXT_CODE_PLUGIN_DISABLE:ia,TXT_CODE_PLUGIN_DISABLED:Ca,TXT_CODE_PLUGIN_DISABLE_CONFIRM:Pa,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:Ga,TXT_CODE_PLUGIN_ENABLE:Ua,TXT_CODE_PLUGIN_ENABLED:ua,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:ra,TXT_CODE_PLUGIN_IS_DISABLED:ca,TXT_CODE_PLUGIN_LOAD_FAILED:da,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Xa,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Aa,TXT_CODE_PLUGIN_NODE_OFFLINE:Sa,TXT_CODE_PLUGIN_NODE_SELECT:va,TXT_CODE_PLUGIN_NO_CONFIG:pa,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:Ra,TXT_CODE_PLUGIN_GROUP_ADD:ga,TXT_CODE_PLUGIN_GROUP_EDIT:ma,TXT_CODE_PLUGIN_GROUP_RENAME:$a,TXT_CODE_PLUGIN_GROUP_DELETE:Fa,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:fa,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:Ma,TXT_CODE_PLUGIN_GROUP_NAME:ba,TXT_CODE_PLUGIN_SCOPE_NODE:Ba,TXT_CODE_PLUGIN_SCOPE_PANEL:ya,TXT_CODE_PLUGIN_SELF_DISABLE:ka,TXT_CODE_PLUGIN_STATE_PENDING:Va,TXT_CODE_PLUGIN_STATE_DISABLED:ha,TXT_CODE_PLUGIN_STATE_LOADING:wa,TXT_CODE_PLUGIN_STATE_ACTIVE:xa,TXT_CODE_PLUGIN_STATE_UNLOADING:Ka,TXT_CODE_PLUGIN_RESTART_REQUIRED:Qa,TXT_CODE_PLUGIN_SAVED_PENDING:Ha,TXT_CODE_PLUGIN_FRONTEND_FAILED:za,TXT_CODE_PLUGIN_REFRESH_REQUIRED:qa,TXT_CODE_PLUGIN_NPM_INSTALL:ja,TXT_CODE_PLUGIN_NPM_PACKAGE:Wa,TXT_CODE_PLUGIN_NPM_VERSION:Ja,TXT_CODE_PLUGIN_NPM_INSTALLED:Ya},_o="ต้องการปิดใช้งานปลั๊กอินเดียวกันบนโหนดต่อไปนี้ด้วยหรือไม่? เลือกโหนดที่ต้องการดำเนินการด้วย",Eo="ต้องการลบปลั๊กอินเดียวกันออกจากโหนดต่อไปนี้ด้วยหรือไม่? เลือกโหนดที่ต้องการดำเนินการด้วย",eo="ไม่สามารถตรวจสอบปลั๊กอินบนโหนดเหล่านี้ได้: {nodes}",To="การดำเนินการกับปลั๊กอินบนโหนดเหล่านี้ไม่สำเร็จ: {nodes}",no="การกำหนดค่าปลั๊กอิน",to="ยกเลิก",Do="ลบ",No="จะถอนการติดตั้งแพ็กเกจ npm โดยเก็บการตั้งค่าที่บันทึกไว้",Io="ลบ {name} หรือไม่?",so="ไม่สามารถถอนการติดตั้งปลั๊กอินหลักและปลั๊กอินซอร์สโค้ดที่นี่ได้",ao="ลบปลั๊กอินแล้ว",oo="บันทึกการตั้งค่า",Lo="อย่าลืมบันทึกการตั้งค่า!",Oo="ปิดใช้งาน",lo="ปิดใช้งานปลั๊กอินแล้ว",io="ทุกอย่างที่ปลั๊กอินนี้ให้มาจะถูกลบออกทันที",Co="ปิดใช้งาน {name} หรือไม่?",Po="เปิดใช้งาน",Go="เปิดใช้งานปลั๊กอินแล้ว",Uo="ไม่สามารถปิดใช้งานเว็บเซิร์ฟเวอร์จากแผงควบคุมที่ตัวมันเองให้บริการอยู่ กรุณาตั้ง plugins.server.enabled เป็น false ใน data/plugin-overrides.json ของมันแทน",uo="ปลั๊กอินนี้ถูกปิดใช้งาน หน้า เส้นทาง และ API จะใช้ไม่ได้จนกว่าจะเปิดใช้งานอีกครั้ง",ro="โหลดปลั๊กอินนี้ไม่สำเร็จ",co="ไม่สามารถแสดงรายการปลั๊กอินของโหนดนี้ได้",Xo="ไม่มีโหนดนี้",Ao="ไม่ได้เชื่อมต่อ",So="เลือกโหนด",vo="ปลั๊กอินนี้ไม่มีตัวเลือกที่กำหนดค่าได้",po="ยังไม่ได้จัดกลุ่ม",Ro="เพิ่มกลุ่ม",go="แก้ไขกลุ่มปลั๊กอิน",mo="เปลี่ยนชื่อกลุ่ม",$o="ลบกลุ่ม",Fo="ลบกลุ่ม {name} หรือไม่",fo="กลุ่มและการกำหนดปลั๊กอินจะถูกลบ ปลั๊กอินจะไม่ถูกลบ",Mo="ชื่อกลุ่ม",bo="โหนด",Bo="แผงควบคุม",yo="ตัวจัดการปลั๊กอินปิดใช้งานตัวเองไม่ได้ กรุณาตั้ง plugins.config.enabled เป็น false ใน data/plugin-overrides.json ของมันแทน",ko="กำลังรอส่วนที่ต้องพึ่งพา",Vo="ปิดใช้งาน",ho="กำลังโหลด",wo="กำลังทำงาน",xo="กำลังยกเลิกการโหลด",Ko="รีสตาร์ทบริการเพื่อใช้การเปลี่ยนแปลงนี้",Qo="บันทึกแล้ว กำลังรอส่วนที่ปลั๊กอินต้องพึ่งพา",Ho="ปลั๊กอินเบราว์เซอร์ล้มเหลว",zo="รีเฟรชหน้าเพื่อโหลดรันไทม์เบราว์เซอร์ที่อัปเดต",qo="ติดตั้ง / อัปเดตปลั๊กอิน",jo="ชื่อแพ็กเกจ npm",Wo="เวอร์ชันหรือแท็ก (ค่าเริ่มต้น latest)",Jo="ติดตั้งและซิงค์ปลั๊กอินแล้ว",Yo={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:_o,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:Eo,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:eo,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:To,TXT_CODE_PLUGIN_CONFIG:no,TXT_CODE_PLUGIN_CANCEL:to,TXT_CODE_PLUGIN_DELETE:Do,TXT_CODE_PLUGIN_DELETE_CONFIRM:No,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:Io,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:so,TXT_CODE_PLUGIN_DELETED:ao,TXT_CODE_PLUGIN_SAVE_SETTINGS:oo,TXT_CODE_PLUGIN_SAVE_REMINDER:Lo,TXT_CODE_PLUGIN_DISABLE:Oo,TXT_CODE_PLUGIN_DISABLED:lo,TXT_CODE_PLUGIN_DISABLE_CONFIRM:io,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:Co,TXT_CODE_PLUGIN_ENABLE:Po,TXT_CODE_PLUGIN_ENABLED:Go,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:Uo,TXT_CODE_PLUGIN_IS_DISABLED:uo,TXT_CODE_PLUGIN_LOAD_FAILED:ro,TXT_CODE_PLUGIN_NODE_LIST_FAILED:co,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Xo,TXT_CODE_PLUGIN_NODE_OFFLINE:Ao,TXT_CODE_PLUGIN_NODE_SELECT:So,TXT_CODE_PLUGIN_NO_CONFIG:vo,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:po,TXT_CODE_PLUGIN_GROUP_ADD:Ro,TXT_CODE_PLUGIN_GROUP_EDIT:go,TXT_CODE_PLUGIN_GROUP_RENAME:mo,TXT_CODE_PLUGIN_GROUP_DELETE:$o,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:Fo,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:fo,TXT_CODE_PLUGIN_GROUP_NAME:Mo,TXT_CODE_PLUGIN_SCOPE_NODE:bo,TXT_CODE_PLUGIN_SCOPE_PANEL:Bo,TXT_CODE_PLUGIN_SELF_DISABLE:yo,TXT_CODE_PLUGIN_STATE_PENDING:ko,TXT_CODE_PLUGIN_STATE_DISABLED:Vo,TXT_CODE_PLUGIN_STATE_LOADING:ho,TXT_CODE_PLUGIN_STATE_ACTIVE:wo,TXT_CODE_PLUGIN_STATE_UNLOADING:xo,TXT_CODE_PLUGIN_RESTART_REQUIRED:Ko,TXT_CODE_PLUGIN_SAVED_PENDING:Qo,TXT_CODE_PLUGIN_FRONTEND_FAILED:Ho,TXT_CODE_PLUGIN_REFRESH_REQUIRED:zo,TXT_CODE_PLUGIN_NPM_INSTALL:qo,TXT_CODE_PLUGIN_NPM_PACKAGE:jo,TXT_CODE_PLUGIN_NPM_VERSION:Wo,TXT_CODE_PLUGIN_NPM_INSTALLED:Jo},Zo="Aşağıdaki düğümlerdeki aynı eklenti de devre dışı bırakılsın mı? Dahil edilecek düğümleri seçin.",_L="Aşağıdaki düğümlerdeki aynı eklenti de kaldırılsın mı? Dahil edilecek düğümleri seçin.",EL="Bu düğümlerdeki eklentiler kontrol edilemedi: {nodes}.",eL="Bu düğümlerde eklenti işlemi tamamlanamadı: {nodes}",TL="Eklenti Yapilandirmasi",nL="Iptal",tL="Kaldır",DL="npm bağımlılığı kaldırılacak. Kaydedilen ayarlar korunacak.",NL="{name} kaldırılsın mı?",IL="Temel eklentiler ve kaynak kod eklentileri buradan kaldırılamaz.",sL="Eklenti kaldırıldı",aL="Ayarları kaydet",oL="Ayarları kaydetmeyi unutmayın!",LL="Devre dışı bırak",OL="Eklenti devre dışı bırakıldı",lL="Bu eklentinin sağladığı her şey hemen kaldırılır.",iL="{name} devre dışı bırakılsın mı?",CL="Etkinleştir",PL="Eklenti etkinleştirildi",GL="Web sunucusu, kendisinin sunduğu panel üzerinden devre dışı bırakılamaz. Bunun yerine data/plugin-overrides.json dosyasında plugins.server.enabled değerini false yapın.",UL="Bu eklenti devre dışı. Yeniden etkinleştirilene kadar sayfaları, yolları ve API si kullanılamaz.",uL="Bu eklenti yüklenemedi",rL="Bu düğümün eklentileri listelenemedi.",cL="Böyle bir düğüm yok.",dL="bağlı değil",XL="Bir düğüm seçin",AL="Bu eklentinin yapilandirilabilir secenegi yok.",SL="Atanmamış",vL="Grup ekle",pL="Eklenti grubunu düzenle",RL="Grubu yeniden adlandır",gL="Grubu sil",mL="{name} grubu silinsin mi?",$L="Grup ve eklenti atamaları kaldırılacak. Eklentilerin kendisi silinmeyecek.",FL="Grup adı",fL="Düğümler",ML="Panel",bL="Eklenti yöneticisi kendisini devre dışı bırakamaz. Bunun yerine data/plugin-overrides.json dosyasında plugins.config.enabled değerini false yapın.",BL="Bağımlılıklar bekleniyor",yL="Devre dışı",kL="Yükleniyor",VL="Çalışıyor",hL="Kaldırılıyor",wL="Değişikliği uygulamak için hizmeti yeniden başlatın.",xL="Kaydedildi; eklenti bağımlılıkları bekleniyor.",KL="Tarayıcı eklentisi başarısız oldu",QL="Güncellenen tarayıcı çalışma zamanını yüklemek için sayfayı yenileyin.",HL="Eklenti yükle / güncelle",zL="npm paket adı",qL="Sürüm veya etiket (varsayılan: latest)",jL="Eklenti yüklendi ve eşitlendi",WL={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:Zo,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:_L,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:EL,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:eL,TXT_CODE_PLUGIN_CONFIG:TL,TXT_CODE_PLUGIN_CANCEL:nL,TXT_CODE_PLUGIN_DELETE:tL,TXT_CODE_PLUGIN_DELETE_CONFIRM:DL,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:NL,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:IL,TXT_CODE_PLUGIN_DELETED:sL,TXT_CODE_PLUGIN_SAVE_SETTINGS:aL,TXT_CODE_PLUGIN_SAVE_REMINDER:oL,TXT_CODE_PLUGIN_DISABLE:LL,TXT_CODE_PLUGIN_DISABLED:OL,TXT_CODE_PLUGIN_DISABLE_CONFIRM:lL,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:iL,TXT_CODE_PLUGIN_ENABLE:CL,TXT_CODE_PLUGIN_ENABLED:PL,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:GL,TXT_CODE_PLUGIN_IS_DISABLED:UL,TXT_CODE_PLUGIN_LOAD_FAILED:uL,TXT_CODE_PLUGIN_NODE_LIST_FAILED:rL,TXT_CODE_PLUGIN_NODE_NOT_FOUND:cL,TXT_CODE_PLUGIN_NODE_OFFLINE:dL,TXT_CODE_PLUGIN_NODE_SELECT:XL,TXT_CODE_PLUGIN_NO_CONFIG:AL,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:SL,TXT_CODE_PLUGIN_GROUP_ADD:vL,TXT_CODE_PLUGIN_GROUP_EDIT:pL,TXT_CODE_PLUGIN_GROUP_RENAME:RL,TXT_CODE_PLUGIN_GROUP_DELETE:gL,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:mL,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:$L,TXT_CODE_PLUGIN_GROUP_NAME:FL,TXT_CODE_PLUGIN_SCOPE_NODE:fL,TXT_CODE_PLUGIN_SCOPE_PANEL:ML,TXT_CODE_PLUGIN_SELF_DISABLE:bL,TXT_CODE_PLUGIN_STATE_PENDING:BL,TXT_CODE_PLUGIN_STATE_DISABLED:yL,TXT_CODE_PLUGIN_STATE_LOADING:kL,TXT_CODE_PLUGIN_STATE_ACTIVE:VL,TXT_CODE_PLUGIN_STATE_UNLOADING:hL,TXT_CODE_PLUGIN_RESTART_REQUIRED:wL,TXT_CODE_PLUGIN_SAVED_PENDING:xL,TXT_CODE_PLUGIN_FRONTEND_FAILED:KL,TXT_CODE_PLUGIN_REFRESH_REQUIRED:QL,TXT_CODE_PLUGIN_NPM_INSTALL:HL,TXT_CODE_PLUGIN_NPM_PACKAGE:zL,TXT_CODE_PLUGIN_NPM_VERSION:qL,TXT_CODE_PLUGIN_NPM_INSTALLED:jL},JL="是否同时禁用以下节点上的对应插件?请勾选需要同步操作的节点。",YL="是否同时删除以下节点上的对应插件?请勾选需要同步操作的节点。",ZL="无法检查以下节点的插件:{nodes}。",_O="以下节点上的插件操作未完成:{nodes}",EO="插件配置",eO="取消",TO="删除插件",nO="将卸载此插件的 npm 依赖,保留已保存的配置。",tO="确定删除 {name}?",DO="核心插件和开发环境的源码插件无法在此卸载。",NO="插件已删除",IO="保存配置",sO="记得保存配置!",aO="禁用",oO="插件已禁用",LO="该插件提供的所有组件都会被立即移除。",OO="确定禁用 {name}?",lO="启用",iO="插件已启用",CO="Web 服务器无法从它自己提供的页面上禁用,请改为在其 data/plugin-overrides.json 中把 plugins.server.enabled 设为 false。",PO="此插件已禁用,重新启用前其页面、路由与接口均不可用。",GO="此插件加载失败",UO="无法读取该节点的插件列表。",uO="该节点不存在。",rO="未连接",cO="选择节点",dO="此插件没有可配置项",XO="未分组",AO="添加分组",SO="编辑插件分组",vO="重命名分组",pO="删除分组",RO="删除分组“{name}”?",gO="将删除该分组及其插件归属,插件本身不会被删除。",mO="分组名称",$O="节点",FO="面板",fO="插件管理自身无法被禁用,请改为在其 data/plugin-overrides.json 中把 plugins.config.enabled 设为 false。",MO="等待依赖",bO="已禁用",BO="加载中",yO="运行中",kO="卸载中",VO="需要重启服务才能应用此更改。",hO="已保存,正在等待插件依赖。",wO="浏览器插件加载失败",xO="需要刷新页面才能加载更新后的浏览器运行时。",KO="安装 / 更新插件",QO="npm 包名",HO="版本号或标签(默认 latest)",zO="插件已安装并同步",qO={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:JL,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:YL,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:ZL,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:_O,TXT_CODE_PLUGIN_CONFIG:EO,TXT_CODE_PLUGIN_CANCEL:eO,TXT_CODE_PLUGIN_DELETE:TO,TXT_CODE_PLUGIN_DELETE_CONFIRM:nO,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:tO,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:DO,TXT_CODE_PLUGIN_DELETED:NO,TXT_CODE_PLUGIN_SAVE_SETTINGS:IO,TXT_CODE_PLUGIN_SAVE_REMINDER:sO,TXT_CODE_PLUGIN_DISABLE:aO,TXT_CODE_PLUGIN_DISABLED:oO,TXT_CODE_PLUGIN_DISABLE_CONFIRM:LO,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:OO,TXT_CODE_PLUGIN_ENABLE:lO,TXT_CODE_PLUGIN_ENABLED:iO,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:CO,TXT_CODE_PLUGIN_IS_DISABLED:PO,TXT_CODE_PLUGIN_LOAD_FAILED:GO,TXT_CODE_PLUGIN_NODE_LIST_FAILED:UO,TXT_CODE_PLUGIN_NODE_NOT_FOUND:uO,TXT_CODE_PLUGIN_NODE_OFFLINE:rO,TXT_CODE_PLUGIN_NODE_SELECT:cO,TXT_CODE_PLUGIN_NO_CONFIG:dO,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:XO,TXT_CODE_PLUGIN_GROUP_ADD:AO,TXT_CODE_PLUGIN_GROUP_EDIT:SO,TXT_CODE_PLUGIN_GROUP_RENAME:vO,TXT_CODE_PLUGIN_GROUP_DELETE:pO,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:RO,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:gO,TXT_CODE_PLUGIN_GROUP_NAME:mO,TXT_CODE_PLUGIN_SCOPE_NODE:$O,TXT_CODE_PLUGIN_SCOPE_PANEL:FO,TXT_CODE_PLUGIN_SELF_DISABLE:fO,TXT_CODE_PLUGIN_STATE_PENDING:MO,TXT_CODE_PLUGIN_STATE_DISABLED:bO,TXT_CODE_PLUGIN_STATE_LOADING:BO,TXT_CODE_PLUGIN_STATE_ACTIVE:yO,TXT_CODE_PLUGIN_STATE_UNLOADING:kO,TXT_CODE_PLUGIN_RESTART_REQUIRED:VO,TXT_CODE_PLUGIN_SAVED_PENDING:hO,TXT_CODE_PLUGIN_FRONTEND_FAILED:wO,TXT_CODE_PLUGIN_REFRESH_REQUIRED:xO,TXT_CODE_PLUGIN_NPM_INSTALL:KO,TXT_CODE_PLUGIN_NPM_PACKAGE:QO,TXT_CODE_PLUGIN_NPM_VERSION:HO,TXT_CODE_PLUGIN_NPM_INSTALLED:zO},jO="是否同時停用以下節點上的對應外掛?請勾選需要同步操作的節點。",WO="是否同時刪除以下節點上的對應外掛?請勾選需要同步操作的節點。",JO="無法檢查以下節點的外掛:{nodes}。",YO="以下節點上的外掛操作未完成:{nodes}",ZO="插件設定",_l="取消",El="刪除外掛",el="將解除安裝此外掛的 npm 相依套件,保留已儲存的設定。",Tl="確定刪除 {name}?",nl="核心外掛與開發環境的原始碼外掛無法在此解除安裝。",tl="外掛已刪除",Dl="儲存設定",Nl="記得儲存設定!",Il="停用",sl="外掛已停用",al="該外掛提供的所有元件都會被立即移除。",ol="確定停用 {name}?",Ll="啟用",Ol="外掛已啟用",ll="Web 伺服器無法從它自己提供的頁面上停用,請改為在其 data/plugin-overrides.json 中把 plugins.server.enabled 設為 false。",il="此外掛已停用,重新啟用前其頁面、路由與介面皆不可用。",Cl="此外掛載入失敗",Pl="無法讀取該節點的外掛清單。",Gl="該節點不存在。",Ul="未連線",ul="選擇節點",rl="此插件沒有可設定項目",cl="未分組",dl="新增分組",Xl="編輯外掛分組",Al="重新命名分組",Sl="刪除分組",vl="刪除分組「{name}」?",pl="將刪除該分組及其插件歸屬,插件本身不會被刪除。",Rl="分組名稱",gl="節點",ml="面板",$l="外掛管理本身無法被停用,請改為在其 data/plugin-overrides.json 中把 plugins.config.enabled 設為 false。",Fl="等待依賴",fl="已停用",Ml="載入中",bl="執行中",Bl="卸載中",yl="需要重新啟動服務才能套用此變更。",kl="已儲存,正在等待外掛依賴。",Vl="瀏覽器外掛載入失敗",hl="需要重新整理頁面才能載入更新後的瀏覽器執行階段。",wl="安裝 / 更新外掛",xl="npm 套件名稱",Kl="版本或標籤(預設 latest)",Ql="外掛已安裝並同步",Hl={TXT_CODE_PLUGIN_NODE_DISABLE_CONFIRM:jO,TXT_CODE_PLUGIN_NODE_DELETE_CONFIRM:WO,TXT_CODE_PLUGIN_NODE_CHECK_FAILED:JO,TXT_CODE_PLUGIN_NODE_ACTION_FAILED:YO,TXT_CODE_PLUGIN_CONFIG:ZO,TXT_CODE_PLUGIN_CANCEL:_l,TXT_CODE_PLUGIN_DELETE:El,TXT_CODE_PLUGIN_DELETE_CONFIRM:el,TXT_CODE_PLUGIN_DELETE_CONFIRM_TITLE:Tl,TXT_CODE_PLUGIN_DELETE_UNAVAILABLE:nl,TXT_CODE_PLUGIN_DELETED:tl,TXT_CODE_PLUGIN_SAVE_SETTINGS:Dl,TXT_CODE_PLUGIN_SAVE_REMINDER:Nl,TXT_CODE_PLUGIN_DISABLE:Il,TXT_CODE_PLUGIN_DISABLED:sl,TXT_CODE_PLUGIN_DISABLE_CONFIRM:al,TXT_CODE_PLUGIN_DISABLE_CONFIRM_TITLE:ol,TXT_CODE_PLUGIN_ENABLE:Ll,TXT_CODE_PLUGIN_ENABLED:Ol,TXT_CODE_PLUGIN_ESSENTIAL_DISABLE:ll,TXT_CODE_PLUGIN_IS_DISABLED:il,TXT_CODE_PLUGIN_LOAD_FAILED:Cl,TXT_CODE_PLUGIN_NODE_LIST_FAILED:Pl,TXT_CODE_PLUGIN_NODE_NOT_FOUND:Gl,TXT_CODE_PLUGIN_NODE_OFFLINE:Ul,TXT_CODE_PLUGIN_NODE_SELECT:ul,TXT_CODE_PLUGIN_NO_CONFIG:rl,TXT_CODE_PLUGIN_GROUP_UNASSIGNED:cl,TXT_CODE_PLUGIN_GROUP_ADD:dl,TXT_CODE_PLUGIN_GROUP_EDIT:Xl,TXT_CODE_PLUGIN_GROUP_RENAME:Al,TXT_CODE_PLUGIN_GROUP_DELETE:Sl,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM_TITLE:vl,TXT_CODE_PLUGIN_GROUP_DELETE_CONFIRM:pl,TXT_CODE_PLUGIN_GROUP_NAME:Rl,TXT_CODE_PLUGIN_SCOPE_NODE:gl,TXT_CODE_PLUGIN_SCOPE_PANEL:ml,TXT_CODE_PLUGIN_SELF_DISABLE:$l,TXT_CODE_PLUGIN_STATE_PENDING:Fl,TXT_CODE_PLUGIN_STATE_DISABLED:fl,TXT_CODE_PLUGIN_STATE_LOADING:Ml,TXT_CODE_PLUGIN_STATE_ACTIVE:bl,TXT_CODE_PLUGIN_STATE_UNLOADING:Bl,TXT_CODE_PLUGIN_RESTART_REQUIRED:yl,TXT_CODE_PLUGIN_SAVED_PENDING:kl,TXT_CODE_PLUGIN_FRONTEND_FAILED:Vl,TXT_CODE_PLUGIN_REFRESH_REQUIRED:hl,TXT_CODE_PLUGIN_NPM_INSTALL:wl,TXT_CODE_PLUGIN_NPM_PACKAGE:xl,TXT_CODE_PLUGIN_NPM_VERSION:Kl,TXT_CODE_PLUGIN_NPM_INSTALLED:Ql},zl={de_de:Ln,en_us:ot,es_es:sD,fr_fr:NN,ja_jp:tI,ko_kr:Ts,pt_br:Ea,ru_ru:Za,th_th:Yo,tr_tr:WL,zh_cn:qO,zh_tw:Hl},ql=10,Ii=["console","i18n","routes","desktop"];function si($){$.i18n.define(zl),$.routes.add({path:"/plugins/config",name:T("TXT_CODE_PLUGIN_CONFIG"),component:sE,meta:{permission:ql,mainMenu:!0,icon:"mdi-cog-outline"}}),$.desktop.app({id:"config",label:()=>T("TXT_CODE_PLUGIN_CONFIG"),icon:"mdi-cog-outline",color:"#1677ff",route:"/plugins/config",component:sE,condition:()=>AE().isAdmin.value}),$.desktop.view({id:"node-plugin-config",title:()=>T("TXT_CODE_PLUGIN_CONFIG"),icon:"mdi-cog-outline",component:sE,initialWidth:980,initialHeight:580,condition:()=>AE().isAdmin.value,accepts:n_=>n_.scope==="node"&&typeof n_.daemonId=="string"&&!!n_.daemonId})}export{si as apply,Ii as inject};