@elementspanel/epanel-plugin-market 1.0.0 → 1.0.1
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
|
+
import{t as E,g as S_}from"../../../assets/i18n-fe0f1ee7.js";import{u as $_}from"../../../assets/useAppStateStore-a644582a.js";import{bu as a_,bz as m,a1 as Z,b5 as __,aE as A,Q as c,O as r,bJ as _,gY as C_,P as d,R as L,ba as a,_ as $,bP as n,gC as V,$ as P,gz as n_,gA as A_,gB as D_,gL as L_,gD as s_,F as x,aK as T_,gZ as m_,N as k,gW as E_,au as P_,gS as U_,h4 as M_,h5 as l_,gE as J,h6 as p_,h7 as e_,h3 as i_,bM as G_,ay as v_,gK as g_,gF as h_,gG as f_,bc as B_,s as k_,c9 as b_,ca as F_}from"../../../assets/vue-2433bd89.js";import{P as K_}from"../../../assets/PageToolbar-5ca1a069.js";import{m as O_}from"../../../assets/safe-87846d89.js";import{u as w,m as g,g as j}from"../../../assets/useDefineApi-ead2616e.js";import{c as o_}from"../../../assets/context-b16af9cc.js";import{_ as I_}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 V_=w({url:"/api/market/plugin/list",method:"GET"}),y_=w({url:"/api/market/plugin/icon",method:"GET"}),H_=w({url:"/api/market/plugin/detail",method:"GET"}),Y_=w({url:"/api/market/plugin/installed",method:"GET"}),w_=w({url:"/api/market/plugin/nodes",method:"GET"}),z_=w({url:"/api/market/plugin/package",method:"GET"}),x_=w({url:"/api/market/plugin/install",method:"POST"}),Z_=w({url:"/api/market/plugin/uninstall",method:"DELETE"});function c_(){const O=m(Object.create(null)),G=new Map;let t=!1;async function M(D,I){var o;try{const{execute:s}=y_(),U=await s({params:{pluginId:D,version:I.version},signal:I.controller.signal});if(t||I.controller.signal.aborted||G.get(D)!==I)return;const v=(o=U.value)==null?void 0:o.dataUrl;typeof v=="string"&&v&&(I.dataUrl=v,O.value[D]=v)}catch{}}function T(D,I,o){if(t)return Promise.resolve();const s=G.get(D);if(I&&s&&s.version===o){if(s.dataUrl)return Promise.resolve();if(s.pending)return s.pending}if(s==null||s.controller.abort(),G.delete(D),delete O.value[D],!I)return Promise.resolve();const U={version:o,controller:new AbortController};return G.set(D,U),U.pending=M(D,U).finally(()=>{U.pending=void 0}),U.pending}return a_(()=>{t=!0,G.forEach(D=>D.controller.abort()),G.clear(),O.value=Object.create(null)}),{icons:O,load:T}}function q_(O,G){const t=D=>{var o;const I=/^v?(\d+(?:\.\d+){0,2})(?:-([\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*))?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/.exec(D.trim());return I&&{core:I[1].split("."),pre:(o=I[2])==null?void 0:o.split(".")}},M=t(O),T=t(G);if(!M||!T)return!1;for(let D=0;D<3;D++){const I=BigInt(M.core[D]||"0"),o=BigInt(T.core[D]||"0");if(I!==o)return I>o}if(!M.pre||!T.pre)return!M.pre&&!!T.pre;for(let D=0;D<Math.max(M.pre.length,T.pre.length);D++){const I=M.pre[D],o=T.pre[D];if(I===void 0||o===void 0)return o===void 0;if(I===o)continue;const s=/^\d+$/.test(I),U=/^\d+$/.test(o);if(s&&U){if(BigInt(I)!==BigInt(o))return BigInt(I)>BigInt(o)}else return s!==U?!s:I>o}return!1}const Q_={class:"d-flex flex-wrap ga-2"},j_={class:"mb-2"},R_=Z({__name:"PluginMarketInstall",props:{plugin:{},version:{},installOnly:{type:Boolean},disabled:{type:Boolean}},emits:["installed","busy"],setup(O,{emit:G}){const t=O,M=G,T=m(""),D=k(()=>!!(t.version&&!t.plugin.installedVersion)),I=k(()=>!!(!t.installOnly&&t.version&&t.plugin.installedVersion&&q_(t.version.version,t.plugin.installedVersion))),o=k(()=>{var e;return Object.values(((e=t.version)==null?void 0:e.compatibility)||{}).some(N=>N&&(N.api!==1||N.sdk!==void 0&&N.sdk!==1))});let s=!1;const U=m(null),v=k({get:()=>U.value!==null,set:e=>{e||(U.value=null)}}),h=m([]),b=m([]),y=m(!1),Y=m("install"),f=m(null),z=k({get:()=>f.value!==null,set:e=>{e||(f.value=null)}});function u(e){const N=e.port?`${e.ip}:${e.port}`:e.ip,R=e.available?"":` · ${E("TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE")}`;return`${e.remarks||e.ip}(${N})${R}`}function X(e){return e.map(N=>{const R=h.value.find(i=>i.daemonId===N);return R?R.remarks||R.ip:N})}async function C(){const{execute:e}=w_();return(await e()).value??[]}async function B(e){var i,p;const{execute:N}=z_();return((p=(await N({params:{pluginId:e.id,version:(i=e.latestVersion)==null?void 0:i.version}})).value)==null?void 0:p.sides)??[]}function l(e,N,R,i){h.value=R,b.value=R.map(p=>p.daemonId),Y.value=N,y.value=i,f.value=e}function S(){const e=f.value;if(!e||s||T.value)return;const N=[...b.value];y.value&&!N.length||(T.value=e.id,f.value=null,Y.value==="install"?H(e,N):t_(e,N))}async function F(){if(s||t.disabled||o.value||q.value||!t.version||!D.value&&!I.value)return;const e={...t.plugin,latestVersion:t.version};T.value=e.id;try{const N=await B(e);if(s)return;const R=N.includes("daemon")&&!N.includes("panel"),i=N.includes("daemon")?await C():[];if(s)return;if(i.length)return l(e,"install",i,R);if(R)return g.error(E("TXT_CODE_2de92a5d"));await H(e,[])}catch(N){s||g.error(j(N))}finally{T.value=""}}async function H(e,N){var R;T.value=e.id;try{const{execute:i}=x_(),p=await i({timeout:(N.length+1)*11*60*1e3,data:{pluginId:e.id,name:e.name,version:(R=e.latestVersion)==null?void 0:R.version,daemonIds:N}});if(s)return;if(!p.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"));await o_.plugins.refresh().catch(W=>console.error("Failed to refresh plugins:",W)),M("installed",e.id,p.value.installedVersion);const Q=p.value.failedNodes;Q.length?g.error(E("TXT_CODE_PLUGIN_MARKET_NODE_FAILED",{nodes:X(Q).join("、")})):g.success(E("TXT_CODE_PLUGIN_MARKET_INSTALLED")),p.value.restartRequired&&g.warning(E("TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED"))}catch(i){s||g.error(j(i))}finally{T.value=""}}async function K(e=U.value){var N;if(!(!e||s||T.value||f.value||t.disabled&&!U.value)){T.value=e.id,U.value=null;try{const{execute:R}=Y_(),i=(N=(await R()).value)==null?void 0:N.find(p=>p.pluginId===e.id);if(s)return;if(i!=null&&i.daemonIds.length){const p=await C();if(s)return;const Q=i.daemonIds.map(W=>p.find(u_=>u_.daemonId===W)??{daemonId:W,remarks:"",ip:W,port:0,available:!1});return l(e,"uninstall",Q,!i.sides.includes("panel"))}await t_(e,[])}catch(R){s||g.error(j(R))}finally{T.value=""}}}async function t_(e,N){T.value=e.id;try{const{execute:R}=Z_(),i=await R({timeout:(N.length+1)*11*60*1e3,params:{pluginId:e.id,daemonIds:N.join(",")}});if(s)return;if(!i.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"));await o_.plugins.refresh().catch(Q=>console.error("Failed to refresh plugins:",Q)),M("installed",e.id,i.value.installedVersion);const p=i.value.failedNodes;p.length?g.error(E("TXT_CODE_PLUGIN_MARKET_NODE_FAILED",{nodes:X(p).join("、")})):i.value.removed?g.success(E("TXT_CODE_PLUGIN_MARKET_UNINSTALLED")):g.warning(E("TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING")),i.value.restartRequired&&g.warning(E("TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED"))}catch(R){s||g.error(j(R))}finally{T.value=""}}const q=k(()=>!!(T.value||f.value||U.value));return __(q,e=>M("busy",e),{flush:"sync"}),a_(()=>{s=!0,q.value&&M("busy",!1)}),(e,N)=>(A(),c(x,null,[o.value?(A(),r(_(C_),{key:0,type:"warning",variant:"tonal",text:_(E)("TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE")},null,8,["text"])):d("",!0),L("div",null,[L("div",Q_,[D.value?(A(),r(_(V),{key:0,color:"primary","prepend-icon":"mdi-download",loading:!!T.value,disabled:q.value||O.disabled||o.value,onClick:F},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALL")),1)]),_:1},8,["loading","disabled"])):d("",!0),O.plugin.installedVersion&&!O.installOnly&&O.plugin.installedRemovable!==!1?(A(),r(_(V),{key:1,color:"error",variant:"text",disabled:q.value||O.disabled,onClick:N[0]||(N[0]=R=>U.value={...O.plugin})},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")),1)]),_:1},8,["disabled"])):d("",!0),I.value?(A(),r(_(V),{key:2,color:"primary","prepend-icon":"mdi-update",loading:!!T.value,disabled:q.value||O.disabled||o.value,onClick:F},{default:a(()=>[$(n(_(E)("TXT_CODE_40ca4f2")),1)]),_:1},8,["loading","disabled"])):d("",!0)]),P(_(s_),{modelValue:v.value,"onUpdate:modelValue":N[3]||(N[3]=R=>v.value=R),"max-width":"420"},{default:a(()=>[P(_(n_),{title:_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")},{default:a(()=>[P(_(A_),null,{default:a(()=>{var R;return[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL",{name:((R=U.value)==null?void 0:R.displayName)??""})),1)]}),_:1}),P(_(D_),null,{default:a(()=>[P(_(L_)),P(_(V),{variant:"text",onClick:N[1]||(N[1]=R=>U.value=null)},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_CANCEL")),1)]),_:1}),P(_(V),{color:"error",onClick:N[2]||(N[2]=R=>K())},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")),1)]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]),P(_(s_),{modelValue:z.value,"onUpdate:modelValue":N[6]||(N[6]=R=>z.value=R),"max-width":"480"},{default:a(()=>[P(_(n_),{title:_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES")},{default:a(()=>[P(_(A_),null,{default:a(()=>[L("div",j_,n(Y.value==="install"?_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL"):_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL")),1),(A(!0),c(x,null,T_(h.value,R=>(A(),r(_(m_),{key:R.daemonId,modelValue:b.value,"onUpdate:modelValue":N[4]||(N[4]=i=>b.value=i),value:R.daemonId,label:u(R),density:"compact","hide-details":""},null,8,["modelValue","value","label"]))),128))]),_:1}),P(_(D_),null,{default:a(()=>[P(_(L_)),P(_(V),{variant:"text",onClick:N[5]||(N[5]=R=>f.value=null)},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_CANCEL")),1)]),_:1}),P(_(V),{color:"primary",disabled:y.value&&!b.value.length,onClick:S},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_CONFIRM")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])])],64))}});function W_(O){const G=(O==null?void 0:O.includes("panel"))??!1,t=(O==null?void 0:O.includes("daemon"))??!1;if(G&&t)return"TXT_CODE_PLUGIN_MARKET_SIDE_BOTH";if(G)return"TXT_CODE_PLUGIN_MARKET_SIDE_PANEL";if(t)return"TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON"}const X_=Z({__name:"PluginMarketSideBadge",props:{sides:{}},setup(O){const G=O,t=k(()=>{const M=W_(G.sides);return M?E(M):void 0});return(M,T)=>t.value?(A(),r(_(E_),{key:0,size:"small",variant:"tonal",color:"primary"},{default:a(()=>[$(n(t.value),1)]),_:1})):d("",!0)}}),J_={class:"plugin-detail-header"},_T={class:"plugin-detail-heading"},TT={class:"plugin-detail-heading-text"},ET={class:"plugin-detail-title"},eT={class:"plugin-detail-summary"},NT={class:"plugin-detail-meta"},nT={class:"plugin-detail-author"},AT={key:0,class:"plugin-detail-category"},DT={class:"plugin-detail-action"},IT={class:"plugin-detail-tabs"},tT={class:"plugin-detail-body"},LT={class:"plugin-detail-content"},sT=["innerHTML"],OT={key:1,class:"plugin-detail-empty"},oT={key:1,class:"plugin-detail-versions"},RT={class:"plugin-detail-version-text"},aT={class:"plugin-detail-version-name"},CT={class:"plugin-detail-version-meta"},PT={class:"plugin-detail-update-head"},UT={class:"plugin-detail-update-version"},MT={class:"plugin-detail-update-date"},lT=["innerHTML"],iT={key:1,class:"plugin-detail-empty"},GT={class:"plugin-detail-sidebar"},KT={key:0,class:"plugin-detail-sidebar-section"},cT={class:"plugin-detail-sidebar-title"},XT={class:"plugin-detail-tag"},rT={class:"plugin-detail-sidebar-section"},dT={class:"plugin-detail-sidebar-title"},uT={class:"plugin-detail-info"},ST={class:"plugin-detail-info-row"},$T={class:"plugin-detail-info-row"},mT={key:0,class:"plugin-detail-info-row"},pT={key:1,class:"plugin-detail-info-row"},vT=Z({__name:"PluginMarketDetail",props:{pluginId:{},embedded:{type:Boolean}},emits:["back","installed"],setup(O,{emit:G}){const t=O,M=G,T=m(),D=m(!1),I=m(!1),o=m(""),s=m("readme");let U=0,v=0;const{icons:h,load:b}=c_(),y=k(()=>T.value?h.value[T.value.id]:void 0),Y=k(()=>{var l,S;return O_(((l=T.value)==null?void 0:l.readme)||((S=T.value)==null?void 0:S.description)||"")}),f=k(()=>{var l;return(((l=T.value)==null?void 0:l.versions)??[]).map(S=>({version:S,html:O_(S.changelog||"")}))});function z(l){return new Date(l).toLocaleString(S_().replace("_","-"))}function u(l){return l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/1024/1024).toFixed(1)} MB`}async function X(){var S,F;if(I.value&&((S=T.value)==null?void 0:S.id)===t.pluginId)return;const l=++U;D.value=!0,o.value="",((F=T.value)==null?void 0:F.id)!==t.pluginId&&(T.value=void 0),v=0,I.value=!1;try{const{execute:H}=H_(),K=await H({params:{pluginId:t.pluginId}});if(l!==U)return;if(!K.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_NOT_FOUND"));T.value=K.value,b(K.value.id,K.value.hasIcon,K.value.selectedVersion.version)}catch(H){l===U&&(o.value=j(H))}finally{l===U&&(D.value=!1)}}function C(l){v=Math.max(0,v+(l?1:-1)),I.value=v>0}function B(l,S){var F;((F=T.value)==null?void 0:F.id)===l&&(T.value.installedVersion=S),M("installed",l,S)}return __(()=>t.pluginId,X,{immediate:!0}),__(()=>t.pluginId,()=>{s.value="readme"}),P_(()=>U++),(l,S)=>(A(),c("main",{class:G_(["plugin-detail",{"plugin-detail--embedded":O.embedded}])},[P(_(i_),{fluid:"",class:"plugin-detail-container"},{default:a(()=>{var F,H;return[P(K_,{title:_(E)("TXT_CODE_PLUGIN_MARKET_DETAIL"),icon:"mdi-puzzle-outline"},{actions:a(()=>[P(_(V),{variant:"text","prepend-icon":"mdi-arrow-left",disabled:I.value,onClick:S[0]||(S[0]=K=>M("back"))},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_BACK")),1)]),_:1},8,["disabled"]),P(_(V),{variant:"text",loading:D.value,disabled:I.value,onClick:X},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_REFRESH")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title"]),D.value?(A(),r(_(U_),{key:0,indeterminate:"",class:"mb-4"})):d("",!0),o.value?(A(),r(_(C_),{key:1,type:"error",text:o.value,class:"mb-4"},null,8,["text"])):d("",!0),T.value?(A(),c(x,{key:2},[L("header",J_,[L("div",_T,[P(_(M_),{class:"plugin-detail-icon",size:"64",rounded:"12px",color:"surface",variant:"flat"},{default:a(()=>[T.value.hasIcon&&y.value?(A(),r(_(l_),{key:0,src:y.value,alt:"",cover:"",transition:"fade-transition",class:"plugin-detail-icon-image",onError:S[1]||(S[1]=K=>delete _(h)[T.value.id])},null,8,["src"])):T.value.hasIcon?d("",!0):(A(),r(_(J),{key:1,icon:"mdi-puzzle-outline",size:"34"}))]),_:1}),L("div",TT,[L("h1",ET,n(T.value.displayName),1),L("p",eT,n(T.value.summary||_(E)("TXT_CODE_PLUGIN_MARKET_NO_SUMMARY")),1),L("div",NT,[L("span",nT,[P(_(J),{icon:"mdi-account-circle-outline",size:"16"}),$(" "+n(_(E)("TXT_CODE_PLUGIN_MARKET_BY",{name:((F=T.value.author)==null?void 0:F.displayName)??""})),1)]),T.value.category?(A(),c("span",AT,n(T.value.category),1)):d("",!0),P(X_,{sides:T.value.selectedVersion.sides??T.value.sides},null,8,["sides"]),T.value.installedVersion?(A(),r(_(E_),{key:1,size:"small",color:"success",variant:"tonal"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION",{version:T.value.installedVersion})),1)]),_:1})):d("",!0)])])]),L("div",DT,[(A(),r(R_,{key:T.value.id,plugin:T.value,version:T.value.latestVersion||T.value.selectedVersion,disabled:I.value||D.value,onInstalled:B,onBusy:C},null,8,["plugin","version","disabled"]))])]),L("div",IT,[P(_(p_),{modelValue:s.value,"onUpdate:modelValue":S[2]||(S[2]=K=>s.value=K),color:"primary",disabled:I.value},{default:a(()=>[P(_(e_),{value:"readme"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_README")),1)]),_:1}),P(_(e_),{value:"versions"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSIONS")),1)]),_:1}),P(_(e_),{value:"updates"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_UPDATES")),1)]),_:1})]),_:1},8,["modelValue","disabled"])]),L("div",tT,[L("section",LT,[s.value==="readme"?(A(),c(x,{key:0},[T.value.readme||T.value.description?(A(),c("div",{key:0,class:"global-markdown-html plugin-detail-markdown",innerHTML:Y.value},null,8,sT)):(A(),c("p",OT,n(_(E)("TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION")),1))],64)):s.value==="versions"?(A(),c("ul",oT,[(A(!0),c(x,null,T_(T.value.versions,K=>(A(),c("li",{key:K.version,class:"plugin-detail-version"},[L("div",RT,[L("span",aT,n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:K.version})),1),L("span",CT,n(_(E)("TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT",{date:z(K.submittedAt)}))+" · "+n(_(E)("TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE",{size:u(K.sizeBytes),count:K.fileCount})),1)]),T.value.installedVersion?d("",!0):(A(),r(R_,{key:0,plugin:T.value,version:K,disabled:I.value||D.value,"install-only":"",onInstalled:B,onBusy:C},null,8,["plugin","version","disabled"]))]))),128))])):(A(!0),c(x,{key:2},T_(f.value,K=>(A(),c("article",{key:K.version.version,class:"plugin-detail-update"},[L("h2",PT,[L("span",UT,n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:K.version.version})),1),L("span",MT,n(z(K.version.submittedAt)),1)]),K.html?(A(),c("div",{key:0,class:"global-markdown-html plugin-detail-markdown",innerHTML:K.html},null,8,lT)):(A(),c("p",iT,n(_(E)("TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG")),1))]))),128))]),L("aside",GT,[T.value.category?(A(),c("section",KT,[L("h2",cT,n(_(E)("TXT_CODE_PLUGIN_MARKET_TAGS")),1),L("span",XT,n(T.value.category),1)])):d("",!0),L("section",rT,[L("h2",dT,n(_(E)("TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO")),1),L("dl",uT,[L("div",ST,[L("dt",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_PLUGIN_ID")),1),L("dd",null,n(T.value.name),1)]),L("div",$T,[L("dt",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_VENDOR")),1),L("dd",null,n(((H=T.value.author)==null?void 0:H.displayName)??""),1)]),T.value.latestVersion?(A(),c("div",mT,[L("dt",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_LATEST")),1),L("dd",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:T.value.latestVersion.version})),1)])):d("",!0),T.value.installedVersion?(A(),c("div",pT,[L("dt",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED")),1),L("dd",null,n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:T.value.installedVersion})),1)])):d("",!0)])])])])],64)):d("",!0)]}),_:1})],2))}});const r_=I_(vT,[["__scopeId","data-v-06626bcd"]]),gT={key:1,class:"plugin-market-empty",role:"status"},hT={class:"plugin-market-empty-title"},fT={class:"plugin-market-card-head"},BT={class:"plugin-market-card-heading"},kT={class:"text-h6"},bT={class:"text-caption text-medium-emphasis"},FT={key:0},VT={class:"plugin-market-card-summary text-body-2 mt-2"},yT={key:3,class:"plugin-market-empty plugin-market-empty--filtered",role:"status"},HT={class:"plugin-market-empty-title"},YT=Z({__name:"PluginMarketList",props:{embedded:{type:Boolean}},emits:["select"],setup(O,{expose:G,emit:t}){const M=O,T=t,D=m(!1),I=m(!1),o=m([]),s=m(""),{icons:U,load:v}=c_();let h=0;const b=k(()=>{const u=(s.value??"").trim().toLowerCase();return u?o.value.filter(X=>[X.displayName,X.name,X.summary].some(C=>String(C??"").toLowerCase().includes(u))):o.value});__(b,u=>{var X;for(const C of u)v(C.id,C.hasIcon,(X=C.latestVersion)==null?void 0:X.version)},{immediate:!0});async function y(){const u=++h;D.value=!0;try{const{execute:X}=V_(),C=await X();u===h&&(o.value=C.value??[],I.value=!1)}catch(X){u===h&&(I.value=!0,g.error(j(X)))}finally{u===h&&(D.value=!1)}}function Y(u){M.embedded&&T("select",u.id)}function f(u,X){!M.embedded||!["Enter"," "].includes(u.key)||(u.preventDefault(),Y(X))}function z(u,X){const C=o.value.find(B=>B.id===u);C&&(C.installedVersion=X)}return G({updateInstalled:z}),v_(y),P_(()=>h++),(u,X)=>(A(),c("main",{class:G_(["plugin-market",{"plugin-market--embedded":O.embedded}])},[P(_(i_),{fluid:"",class:"plugin-market-container"},{default:a(()=>[P(K_,{title:_(E)("TXT_CODE_PLUGIN_MARKET"),icon:"mdi-puzzle-outline"},{search:a(()=>[P(_(g_),{modelValue:s.value,"onUpdate:modelValue":X[0]||(X[0]=C=>s.value=C),label:_(E)("TXT_CODE_PLUGIN_MARKET_SEARCH"),"prepend-inner-icon":"mdi-magnify","hide-details":"",clearable:"",density:"comfortable",variant:"solo-filled"},null,8,["modelValue","label"])]),actions:a(()=>[P(_(V),{variant:"text",loading:D.value,onClick:y},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_REFRESH")),1)]),_:1},8,["loading"])]),_:1},8,["title"]),D.value&&!o.value.length?(A(),r(_(U_),{key:0,indeterminate:"",class:"mb-4"})):d("",!0),!D.value&&!o.value.length?(A(),c("div",gT,[P(_(J),{icon:I.value?"mdi-lan-disconnect":"mdi-puzzle-outline",size:"48",class:"plugin-market-empty-icon"},null,8,["icon"]),L("div",hT,n(I.value?_(E)("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"):_(E)("TXT_CODE_PLUGIN_MARKET_EMPTY")),1)])):b.value.length?(A(),r(_(f_),{key:2,class:"plugin-market-grid"},{default:a(()=>[(A(!0),c(x,null,T_(b.value,C=>(A(),r(_(h_),{key:C.id,cols:"12",md:"6",lg:"4"},{default:a(()=>[P(_(n_),{class:"plugin-market-card h-100",elevation:"0",to:O.embedded?void 0:`/market/plugins/${encodeURIComponent(C.id)}`,role:O.embedded?"button":void 0,tabindex:O.embedded?0:void 0,link:"",onClick:B=>Y(C),onKeydown:B=>f(B,C)},{default:a(()=>[P(_(A_),{class:"plugin-market-card-content"},{default:a(()=>{var B;return[L("div",fT,[P(_(M_),{class:"plugin-market-icon",size:"52",rounded:"12px",color:"surface",variant:"flat"},{default:a(()=>[C.hasIcon&&_(U)[C.id]?(A(),r(_(l_),{key:0,src:_(U)[C.id],alt:"",cover:"",transition:"fade-transition",class:"plugin-market-icon-image",onError:l=>delete _(U)[C.id]},null,8,["src","onError"])):C.hasIcon?d("",!0):(A(),r(_(J),{key:1,icon:"mdi-puzzle-outline",size:"28"}))]),_:2},1024),L("div",BT,[L("div",kT,n(C.displayName),1),L("div",bT,[$(n(((B=C.author)==null?void 0:B.displayName)??"")+" ",1),C.category?(A(),c("span",FT,"· "+n(C.category),1)):d("",!0)])])]),L("div",VT,n(C.summary||_(E)("TXT_CODE_PLUGIN_MARKET_NO_SUMMARY")),1)]}),_:2},1024),P(_(D_),{class:"plugin-market-card-actions"},{default:a(()=>[C.latestVersion?(A(),r(_(E_),{key:0,size:"small",variant:"tonal"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:C.latestVersion.version})),1)]),_:2},1024)):d("",!0),P(X_,{sides:C.sides},null,8,["sides"]),C.installedVersion?(A(),r(_(E_),{key:1,size:"small",color:"success",variant:"tonal"},{default:a(()=>[$(n(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED")),1)]),_:1})):d("",!0)]),_:2},1024)]),_:2},1032,["to","role","tabindex","onClick","onKeydown"])]),_:2},1024))),128))]),_:1})):D.value?d("",!0):(A(),c("div",yT,[P(_(J),{icon:"mdi-magnify",size:"42",class:"plugin-market-empty-icon"}),L("div",HT,n(_(E)("TXT_CODE_NO_DATA")),1)]))]),_:1})],2))}});const d_=I_(YT,[["__scopeId","data-v-7b47151a"]]),wT={class:"desktop-plugin-market"},zT=Z({__name:"DesktopPluginMarket",setup(O){const G=m(),t=m("");function M(I){t.value=I}function T(){t.value=""}function D(I,o){var s;(s=G.value)==null||s.updateInstalled(I,o)}return(I,o)=>(A(),c("div",wT,[B_(P(d_,{ref_key:"pluginList",ref:G,embedded:"",onSelect:M},null,512),[[k_,!t.value]]),t.value?(A(),r(r_,{key:0,"plugin-id":t.value,embedded:"",onBack:T,onInstalled:D},null,8,["plugin-id"])):d("",!0)]))}});const xT=I_(zT,[["__scopeId","data-v-53e84b0f"]]),ZT=Z({__name:"PluginMarket",setup(O){return(G,t)=>(A(),r(d_))}}),qT=Z({__name:"PluginMarketDetail",setup(O){const G=b_(),t=F_(),M=k(()=>String(G.params.pluginId??""));return(T,D)=>(A(),r(r_,{"plugin-id":M.value,onBack:D[0]||(D[0]=I=>_(t).push("/market/plugins"))},null,8,["plugin-id"]))}}),QT="Plugin-Markt",jT="Markt-Adresse",WT="Adresse der Plugin-Markt-Website, von dort kommt die Plugin-Liste",JT="Ungültige Marktadresse: eine http(s)-Adresse ohne Query, Fragment oder Zugangsdaten",_E="Die heruntergeladenen Dateien stimmen nicht mit dem Paket im Markt überein",TE="Das Paket enthält einen ungültigen Dateipfad",EE="von {name}",eE="Abbrechen",NE="Bestätigen",nE="Nodes auswählen",AE="Die Daemon-Hälfte auf diesen Nodes installieren",DE="Die Daemon-Hälfte von diesen Nodes entfernen",IE="offline",tE="Diese Nodes konnten nicht aktualisiert werden: {nodes}",LE="„{name}“ wirklich entfernen?",sE="Das Installationsverzeichnis wird bereits von einem anderen Plugin verwendet",OE="Der Markt enthält noch keine Plugins",oE="Das Paket enthält keine installierbaren Dateien",RE="Installieren",aE="Installiert",CE="Keine Kurzbeschreibung",PE="Aktualisieren",UE="Starten Sie das Panel und die betroffenen Knoten neu, damit die Plugin-Änderungen wirksam werden.",ME="Plugins suchen",lE="Deinstallieren",iE="Deinstalliert",GE="Dieses Plugin ist weiterhin auf anderen Knoten installiert.",KE="Der Markt ist nicht erreichbar; bitte die Markt-Adresse prüfen",cE="v{version}",XE="Plugin-Details",rE="Zurück zum Plugin-Markt",dE="Keine ausführliche Beschreibung verfügbar",uE="Installiert: v{version}",SE="Veröffentlicht: {date}",$E="Größe: {size} · {count} Dateien",mE="Keine Versionshinweise verfügbar",pE="Das Plugin oder die Version wurde nicht gefunden, noch nicht freigegeben oder aus dem Markt entfernt",vE="Readme",gE="Versionen",hE="Tags",fE="Weitere Informationen",BE="Plugin-ID",kE="Anbieter",bE="Neueste",FE="Panel-Plugin",VE="Daemon-Plugin",yE="Panel- und Daemon-Plugin",HE="Änderungen",YE="Dieses Plugin benötigt eine andere Host-API oder Browser-SDK-Version. Aktualisieren Sie zuerst ElementsPanel.",wE="Bitte wählen Sie vor der Installation einen Knoten aus!",zE="This plugin is bundled with the panel and cannot be uninstalled here.",xE="npm install failed. Check the network, registry and package name, then retry.",ZE={TXT_CODE_PLUGIN_MARKET:QT,TXT_CODE_PLUGIN_MARKET_ADDR:jT,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:WT,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:JT,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:_E,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:TE,TXT_CODE_PLUGIN_MARKET_BY:EE,TXT_CODE_PLUGIN_MARKET_CANCEL:eE,TXT_CODE_PLUGIN_MARKET_CONFIRM:NE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:nE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:AE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:DE,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:IE,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:tE,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:LE,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:sE,TXT_CODE_PLUGIN_MARKET_EMPTY:OE,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:oE,TXT_CODE_PLUGIN_MARKET_INSTALL:RE,TXT_CODE_PLUGIN_MARKET_INSTALLED:aE,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:CE,TXT_CODE_PLUGIN_MARKET_REFRESH:PE,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:UE,TXT_CODE_PLUGIN_MARKET_SEARCH:ME,TXT_CODE_PLUGIN_MARKET_UNINSTALL:lE,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:iE,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:GE,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:KE,TXT_CODE_PLUGIN_MARKET_VERSION:cE,TXT_CODE_PLUGIN_MARKET_DETAIL:XE,TXT_CODE_PLUGIN_MARKET_BACK:rE,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:dE,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:uE,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:SE,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:$E,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:mE,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:pE,TXT_CODE_PLUGIN_MARKET_README:vE,TXT_CODE_PLUGIN_MARKET_VERSIONS:gE,TXT_CODE_PLUGIN_MARKET_TAGS:hE,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:fE,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:BE,TXT_CODE_PLUGIN_MARKET_VENDOR:kE,TXT_CODE_PLUGIN_MARKET_LATEST:bE,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:FE,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:VE,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:yE,TXT_CODE_PLUGIN_MARKET_UPDATES:HE,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:YE,TXT_CODE_2de92a5d:wE,TXT_CODE_PLUGIN_MARKET_BUNDLED:zE,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:xE},qE="Plugin market",QE="Market address",jE="Address of the plugin market website, where the plugin list comes from",WE="Invalid market address: use an http(s) address with no query, fragment or credentials",JE="The downloaded files do not match the package published on the market",_e="The package contains an illegal file path",Te="by {name}",Ee="Cancel",ee="Confirm",Ne="Select nodes",ne="Install the daemon half on these nodes",Ae="Remove the daemon half from these nodes",De="offline",Ie="These nodes could not be updated: {nodes}",te='Remove "{name}"?',Le="That install directory is already used by another plugin",se="The market has no plugins yet",Oe="The package contains no installable files",oe="Install",Re="Installed",ae="No summary",Ce="Refresh",Pe="Restart the panel and the affected nodes for the plugin changes to take effect.",Ue="Search plugins",Me="Uninstall",le="Uninstalled",ie="This plugin is still installed on other nodes.",Ge="The market could not be reached; check the market address",Ke="v{version}",ce="Plugin details",Xe="Back to plugin market",re="No detailed description available",de="Installed v{version}",ue="Published: {date}",Se="Size: {size} · {count} files",$e="No release notes available",me="The plugin or version was not found, has not been approved, or has been delisted",pe="Readme",ve="Versions",ge="Tags",he="Additional info",fe="Plugin ID",Be="Vendor",ke="Latest",be="Panel plugin",Fe="Daemon plugin",Ve="Panel + daemon plugin",ye="Updates",He="This plugin requires a different host API or browser SDK version. Update ElementsPanel before installing.",Ye="Please select a node before installing!",we="This plugin is bundled with the panel and cannot be uninstalled here.",ze="npm install failed. Check the network, registry and package name, then retry.",xe={TXT_CODE_PLUGIN_MARKET:qE,TXT_CODE_PLUGIN_MARKET_ADDR:QE,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:jE,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:WE,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:JE,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:_e,TXT_CODE_PLUGIN_MARKET_BY:Te,TXT_CODE_PLUGIN_MARKET_CANCEL:Ee,TXT_CODE_PLUGIN_MARKET_CONFIRM:ee,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:Ne,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:ne,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:Ae,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:De,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:Ie,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:te,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:Le,TXT_CODE_PLUGIN_MARKET_EMPTY:se,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:Oe,TXT_CODE_PLUGIN_MARKET_INSTALL:oe,TXT_CODE_PLUGIN_MARKET_INSTALLED:Re,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:ae,TXT_CODE_PLUGIN_MARKET_REFRESH:Ce,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Pe,TXT_CODE_PLUGIN_MARKET_SEARCH:Ue,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Me,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:le,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:ie,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:Ge,TXT_CODE_PLUGIN_MARKET_VERSION:Ke,TXT_CODE_PLUGIN_MARKET_DETAIL:ce,TXT_CODE_PLUGIN_MARKET_BACK:Xe,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:re,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:de,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:ue,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:Se,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:$e,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:me,TXT_CODE_PLUGIN_MARKET_README:pe,TXT_CODE_PLUGIN_MARKET_VERSIONS:ve,TXT_CODE_PLUGIN_MARKET_TAGS:ge,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:he,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:fe,TXT_CODE_PLUGIN_MARKET_VENDOR:Be,TXT_CODE_PLUGIN_MARKET_LATEST:ke,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:be,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:Fe,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:Ve,TXT_CODE_PLUGIN_MARKET_UPDATES:ye,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:He,TXT_CODE_2de92a5d:Ye,TXT_CODE_PLUGIN_MARKET_BUNDLED:we,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:ze},Ze="Mercado de plugins",qe="Dirección del mercado",Qe="Dirección del sitio del mercado de plugins, de ahí viene la lista",je="Dirección de mercado no válida: usa una dirección http(s) sin consulta, fragmento ni credenciales",We="Los archivos descargados no coinciden con el paquete publicado en el mercado",Je="El paquete contiene una ruta de archivo no válida",_N="por {name}",TN="Cancelar",EN="Confirmar",eN="Seleccionar nodos",NN="Instalar la mitad del daemon en estos nodos",nN="Eliminar la mitad del daemon de estos nodos",AN="desconectado",DN="No se pudieron actualizar estos nodos: {nodes}",IN="¿Quitar «{name}»?",tN="Ese directorio ya lo usa otro plugin",LN="El mercado aún no tiene plugins",sN="El paquete no contiene archivos instalables",ON="Instalar",oN="Instalado",RN="Sin resumen",aN="Actualizar",CN="Reinicie el panel y los nodos afectados para que los cambios del plugin surtan efecto.",PN="Buscar plugins",UN="Desinstalar",MN="Desinstalado",lN="Este plugin sigue instalado en otros nodos.",iN="No se pudo conectar con el mercado; revisa la dirección",GN="v{version}",KN="Detalles del complemento",cN="Volver al mercado de complementos",XN="No hay una descripción detallada",rN="Instalada v{version}",dN="Publicado: {date}",uN="Tamaño: {size} · {count} archivos",SN="No hay notas de la versión",$N="El complemento o la versión no existe, no se ha aprobado o se ha retirado del mercado",mN="Readme",pN="Versiones",vN="Etiquetas",gN="Información adicional",hN="ID del complemento",fN="Proveedor",BN="Más reciente",kN="Complemento de panel",bN="Complemento de daemon",FN="Complemento de panel y daemon",VN="Novedades",yN="Este complemento requiere otra versión de la API del servidor o del SDK del navegador. Actualiza ElementsPanel primero.",HN="¡Seleccione un nodo antes de instalar!",YN="This plugin is bundled with the panel and cannot be uninstalled here.",wN="npm install failed. Check the network, registry and package name, then retry.",zN={TXT_CODE_PLUGIN_MARKET:Ze,TXT_CODE_PLUGIN_MARKET_ADDR:qe,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:Qe,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:je,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:We,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:Je,TXT_CODE_PLUGIN_MARKET_BY:_N,TXT_CODE_PLUGIN_MARKET_CANCEL:TN,TXT_CODE_PLUGIN_MARKET_CONFIRM:EN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:eN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:NN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:nN,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:AN,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:DN,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:IN,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:tN,TXT_CODE_PLUGIN_MARKET_EMPTY:LN,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:sN,TXT_CODE_PLUGIN_MARKET_INSTALL:ON,TXT_CODE_PLUGIN_MARKET_INSTALLED:oN,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:RN,TXT_CODE_PLUGIN_MARKET_REFRESH:aN,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:CN,TXT_CODE_PLUGIN_MARKET_SEARCH:PN,TXT_CODE_PLUGIN_MARKET_UNINSTALL:UN,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:MN,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:lN,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:iN,TXT_CODE_PLUGIN_MARKET_VERSION:GN,TXT_CODE_PLUGIN_MARKET_DETAIL:KN,TXT_CODE_PLUGIN_MARKET_BACK:cN,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:XN,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:rN,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:dN,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:uN,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:SN,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:$N,TXT_CODE_PLUGIN_MARKET_README:mN,TXT_CODE_PLUGIN_MARKET_VERSIONS:pN,TXT_CODE_PLUGIN_MARKET_TAGS:vN,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:gN,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:hN,TXT_CODE_PLUGIN_MARKET_VENDOR:fN,TXT_CODE_PLUGIN_MARKET_LATEST:BN,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:kN,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:bN,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:FN,TXT_CODE_PLUGIN_MARKET_UPDATES:VN,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:yN,TXT_CODE_2de92a5d:HN,TXT_CODE_PLUGIN_MARKET_BUNDLED:YN,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:wN},xN="Marché de plugins",ZN="Adresse du marché",qN="Adresse du site du marché de plugins, d'où vient la liste",QN="Adresse de marché invalide : utilisez une adresse http(s) sans requête, fragment ni identifiants",jN="Les fichiers téléchargés ne correspondent pas au paquet publié sur le marché",WN="Le paquet contient un chemin de fichier invalide",JN="par {name}",_n="Annuler",Tn="Confirmer",En="Choisir les nœuds",en="Installer la moitié démon sur ces nœuds",Nn="Supprimer la moitié démon de ces nœuds",nn="hors ligne",An="Ces nœuds n'ont pas pu être mis à jour : {nodes}",Dn="Retirer « {name} » ?",In="Ce répertoire est déjà utilisé par un autre plugin",tn="Le marché ne contient pas encore de plugin",Ln="Le paquet ne contient aucun fichier installable",sn="Installer",On="Installé",on="Aucun résumé",Rn="Actualiser",an="Redémarrez le panneau et les nœuds concernés pour appliquer les modifications du plugin.",Cn="Rechercher des plugins",Pn="Désinstaller",Un="Désinstallé",Mn="Ce plugin est toujours installé sur d’autres nœuds.",ln="Le marché est inaccessible ; vérifiez l'adresse",Gn="v{version}",Kn="Détails du plugin",cn="Retour au marché des plugins",Xn="Aucune description détaillée disponible",rn="Version installée v{version}",dn="Publication : {date}",un="Taille : {size} · {count} fichiers",Sn="Aucune note de version disponible",$n="Le plugin ou la version est introuvable, en attente de validation ou retiré du marché",mn="Readme",pn="Versions",vn="Étiquettes",gn="Informations complémentaires",hn="ID de l'extension",fn="Fournisseur",Bn="Dernière",kn="Extension de panel",bn="Extension de daemon",Fn="Extension panel et daemon",Vn="Nouveautés",yn="Ce plugin nécessite une autre version de l’API hôte ou du SDK navigateur. Mettez d’abord ElementsPanel à jour.",Hn="Veuillez sélectionner un nœud avant l'installation!",Yn="This plugin is bundled with the panel and cannot be uninstalled here.",wn="npm install failed. Check the network, registry and package name, then retry.",zn={TXT_CODE_PLUGIN_MARKET:xN,TXT_CODE_PLUGIN_MARKET_ADDR:ZN,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:qN,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:QN,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:jN,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:WN,TXT_CODE_PLUGIN_MARKET_BY:JN,TXT_CODE_PLUGIN_MARKET_CANCEL:_n,TXT_CODE_PLUGIN_MARKET_CONFIRM:Tn,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:En,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:en,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:Nn,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:nn,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:An,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:Dn,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:In,TXT_CODE_PLUGIN_MARKET_EMPTY:tn,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:Ln,TXT_CODE_PLUGIN_MARKET_INSTALL:sn,TXT_CODE_PLUGIN_MARKET_INSTALLED:On,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:on,TXT_CODE_PLUGIN_MARKET_REFRESH:Rn,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:an,TXT_CODE_PLUGIN_MARKET_SEARCH:Cn,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Pn,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Un,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Mn,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:ln,TXT_CODE_PLUGIN_MARKET_VERSION:Gn,TXT_CODE_PLUGIN_MARKET_DETAIL:Kn,TXT_CODE_PLUGIN_MARKET_BACK:cn,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:Xn,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:rn,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:dn,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:un,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:Sn,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:$n,TXT_CODE_PLUGIN_MARKET_README:mn,TXT_CODE_PLUGIN_MARKET_VERSIONS:pn,TXT_CODE_PLUGIN_MARKET_TAGS:vn,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:gn,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:hn,TXT_CODE_PLUGIN_MARKET_VENDOR:fn,TXT_CODE_PLUGIN_MARKET_LATEST:Bn,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:kn,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:bn,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:Fn,TXT_CODE_PLUGIN_MARKET_UPDATES:Vn,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:yn,TXT_CODE_2de92a5d:Hn,TXT_CODE_PLUGIN_MARKET_BUNDLED:Yn,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:wn},xn="プラグインマーケット",Zn="マーケットのアドレス",qn="プラグイン一覧の取得元となるマーケットサイトのアドレス",Qn="マーケットアドレスが不正です。クエリ・フラグメント・認証情報を含まない http(s) のアドレスを入力してください",jn="ダウンロードしたファイルがマーケットで公開されているパッケージと一致しません",Wn="パッケージに不正なファイルパスが含まれています",Jn="作者: {name}",_A="キャンセル",TA="確定",EA="ノードを選択",eA="次のノードにデーモン側をインストールします",NA="次のノードからデーモン側を削除します",nA="オフライン",AA="次のノードを更新できませんでした:{nodes}",DA="「{name}」を削除しますか?",IA="そのインストール先ディレクトリは別のプラグインが使用しています",tA="マーケットにはまだプラグインがありません",LA="パッケージにインストールできるファイルがありません",sA="インストール",OA="インストール済み",oA="概要なし",RA="更新",aA="プラグインの変更を反映するには、パネルと対象ノードを再起動してください。",CA="プラグインを検索",PA="アンインストール",UA="アンインストール済み",MA="このプラグインは他のノードにまだインストールされています。",lA="マーケットに接続できません。アドレスを確認してください",iA="v{version}",GA="プラグインの詳細",KA="プラグインマーケットに戻る",cA="詳細な説明はありません",XA="インストール済み v{version}",rA="公開日時:{date}",dA="サイズ:{size} · {count} ファイル",uA="更新内容はありません",SA="プラグインまたはバージョンが存在しないか、未承認または公開停止されています",$A="Readme",mA="バージョン",pA="タグ",vA="追加情報",gA="プラグイン ID",hA="開発元",fA="最新",BA="Panel プラグイン",kA="Daemon プラグイン",bA="Panel・Daemon 両対応プラグイン",FA="更新履歴",VA="このプラグインには別のホスト API またはブラウザー SDK が必要です。先に ElementsPanel を更新してください。",yA="インストールする前にノードを選択してください!",HA="This plugin is bundled with the panel and cannot be uninstalled here.",YA="npm install failed. Check the network, registry and package name, then retry.",wA={TXT_CODE_PLUGIN_MARKET:xn,TXT_CODE_PLUGIN_MARKET_ADDR:Zn,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:qn,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:Qn,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:jn,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:Wn,TXT_CODE_PLUGIN_MARKET_BY:Jn,TXT_CODE_PLUGIN_MARKET_CANCEL:_A,TXT_CODE_PLUGIN_MARKET_CONFIRM:TA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:EA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:eA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:NA,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:nA,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:AA,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:DA,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:IA,TXT_CODE_PLUGIN_MARKET_EMPTY:tA,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:LA,TXT_CODE_PLUGIN_MARKET_INSTALL:sA,TXT_CODE_PLUGIN_MARKET_INSTALLED:OA,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:oA,TXT_CODE_PLUGIN_MARKET_REFRESH:RA,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:aA,TXT_CODE_PLUGIN_MARKET_SEARCH:CA,TXT_CODE_PLUGIN_MARKET_UNINSTALL:PA,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:UA,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:MA,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:lA,TXT_CODE_PLUGIN_MARKET_VERSION:iA,TXT_CODE_PLUGIN_MARKET_DETAIL:GA,TXT_CODE_PLUGIN_MARKET_BACK:KA,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:cA,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:XA,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:rA,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:dA,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:uA,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:SA,TXT_CODE_PLUGIN_MARKET_README:$A,TXT_CODE_PLUGIN_MARKET_VERSIONS:mA,TXT_CODE_PLUGIN_MARKET_TAGS:pA,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:vA,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:gA,TXT_CODE_PLUGIN_MARKET_VENDOR:hA,TXT_CODE_PLUGIN_MARKET_LATEST:fA,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:BA,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:kA,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:bA,TXT_CODE_PLUGIN_MARKET_UPDATES:FA,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:VA,TXT_CODE_2de92a5d:yA,TXT_CODE_PLUGIN_MARKET_BUNDLED:HA,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:YA},zA="플러그인 마켓",xA="마켓 주소",ZA="플러그인 목록을 가져오는 마켓 사이트 주소",qA="마켓 주소가 올바르지 않습니다. 쿼리, 프래그먼트, 자격 증명이 없는 http(s) 주소를 입력하세요",QA="다운로드한 파일이 마켓에 게시된 패키지와 일치하지 않습니다",jA="패키지에 잘못된 파일 경로가 있습니다",WA="제작자: {name}",JA="취소",_D="확인",TD="노드 선택",ED="다음 노드에 데몬 부분을 설치합니다",eD="다음 노드에서 데몬 부분을 제거합니다",ND="오프라인",nD="다음 노드를 갱신하지 못했습니다: {nodes}",AD='"{name}"을(를) 제거할까요?',DD="해당 설치 디렉터리는 다른 플러그인이 사용 중입니다",ID="마켓에 아직 플러그인이 없습니다",tD="패키지에 설치할 파일이 없습니다",LD="설치",sD="설치됨",OD="요약 없음",oD="새로 고침",RD="플러그인 변경 사항을 적용하려면 패널과 해당 노드를 다시 시작하세요.",aD="플러그인 검색",CD="제거",PD="제거됨",UD="이 플러그인은 다른 노드에 아직 설치되어 있습니다.",MD="마켓에 연결할 수 없습니다. 주소를 확인하세요",lD="v{version}",iD="플러그인 상세 정보",GD="플러그인 마켓으로 돌아가기",KD="상세 설명이 없습니다",cD="설치됨 v{version}",XD="게시일: {date}",rD="크기: {size} · 파일 {count}개",dD="업데이트 내역이 없습니다",uD="플러그인 또는 버전이 없거나, 승인되지 않았거나, 마켓에서 내려갔습니다",SD="Readme",$D="버전",mD="태그",pD="추가 정보",vD="플러그인 ID",gD="제작자",hD="최신",fD="Panel 플러그인",BD="Daemon 플러그인",kD="Panel + Daemon 플러그인",bD="업데이트",FD="이 플러그인에는 다른 호스트 API 또는 브라우저 SDK 버전이 필요합니다. 먼저 ElementsPanel을 업데이트하세요.",VD="설치하기 전에 노드를 선택하십시오!",yD="This plugin is bundled with the panel and cannot be uninstalled here.",HD="npm install failed. Check the network, registry and package name, then retry.",YD={TXT_CODE_PLUGIN_MARKET:zA,TXT_CODE_PLUGIN_MARKET_ADDR:xA,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:ZA,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:qA,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:QA,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:jA,TXT_CODE_PLUGIN_MARKET_BY:WA,TXT_CODE_PLUGIN_MARKET_CANCEL:JA,TXT_CODE_PLUGIN_MARKET_CONFIRM:_D,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:TD,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:ED,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:eD,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:ND,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:nD,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:AD,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:DD,TXT_CODE_PLUGIN_MARKET_EMPTY:ID,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:tD,TXT_CODE_PLUGIN_MARKET_INSTALL:LD,TXT_CODE_PLUGIN_MARKET_INSTALLED:sD,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:OD,TXT_CODE_PLUGIN_MARKET_REFRESH:oD,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:RD,TXT_CODE_PLUGIN_MARKET_SEARCH:aD,TXT_CODE_PLUGIN_MARKET_UNINSTALL:CD,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:PD,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:UD,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:MD,TXT_CODE_PLUGIN_MARKET_VERSION:lD,TXT_CODE_PLUGIN_MARKET_DETAIL:iD,TXT_CODE_PLUGIN_MARKET_BACK:GD,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:KD,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:cD,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:XD,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:rD,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:dD,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:uD,TXT_CODE_PLUGIN_MARKET_README:SD,TXT_CODE_PLUGIN_MARKET_VERSIONS:$D,TXT_CODE_PLUGIN_MARKET_TAGS:mD,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:pD,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:vD,TXT_CODE_PLUGIN_MARKET_VENDOR:gD,TXT_CODE_PLUGIN_MARKET_LATEST:hD,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:fD,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:BD,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:kD,TXT_CODE_PLUGIN_MARKET_UPDATES:bD,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:FD,TXT_CODE_2de92a5d:VD,TXT_CODE_PLUGIN_MARKET_BUNDLED:yD,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:HD},wD="Mercado de plugins",zD="Endereço do mercado",xD="Endereço do site do mercado, de onde vem a lista de plugins",ZD="Endereço do mercado inválido: use um endereço http(s) sem query, fragmento ou credenciais",qD="Os arquivos baixados não correspondem ao pacote publicado no mercado",QD="O pacote contém um caminho de arquivo inválido",jD="por {name}",WD="Cancelar",JD="Confirmar",_I="Selecionar nós",TI="Instalar a metade do daemon nestes nós",EI="Remover a metade do daemon destes nós",eI="offline",NI="Não foi possível atualizar estes nós: {nodes}",nI='Remover "{name}"?',AI="Esse diretório já é usado por outro plugin",DI="O mercado ainda não tem plugins",II="O pacote não contém arquivos instaláveis",tI="Instalar",LI="Instalado",sI="Sem resumo",OI="Atualizar",oI="Reinicie o painel e os nós afetados para que as alterações do plugin tenham efeito.",RI="Buscar plugins",aI="Desinstalar",CI="Desinstalado",PI="Este plugin ainda está instalado em outros nós.",UI="Não foi possível conectar ao mercado; verifique o endereço",MI="v{version}",lI="Detalhes do plugin",iI="Voltar ao mercado de plugins",GI="Nenhuma descrição detalhada disponível",KI="Instalada v{version}",cI="Publicado em: {date}",XI="Tamanho: {size} · {count} arquivos",rI="Nenhuma nota da versão disponível",dI="O plugin ou a versão não foi encontrado, não foi aprovado ou foi retirado do mercado",uI="Readme",SI="Versões",$I="Tags",mI="Informações adicionais",pI="ID do plugin",vI="Fornecedor",gI="Mais recente",hI="Plugin de painel",fI="Plugin de daemon",BI="Plugin de painel e daemon",kI="Novidades",bI="Este plugin requer outra versão da API do host ou do SDK do navegador. Atualize o ElementsPanel primeiro.",FI="Selecione um nó antes de instalar!",VI="This plugin is bundled with the panel and cannot be uninstalled here.",yI="npm install failed. Check the network, registry and package name, then retry.",HI={TXT_CODE_PLUGIN_MARKET:wD,TXT_CODE_PLUGIN_MARKET_ADDR:zD,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:xD,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:ZD,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:qD,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:QD,TXT_CODE_PLUGIN_MARKET_BY:jD,TXT_CODE_PLUGIN_MARKET_CANCEL:WD,TXT_CODE_PLUGIN_MARKET_CONFIRM:JD,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:_I,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:TI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:EI,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:eI,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:NI,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:nI,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:AI,TXT_CODE_PLUGIN_MARKET_EMPTY:DI,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:II,TXT_CODE_PLUGIN_MARKET_INSTALL:tI,TXT_CODE_PLUGIN_MARKET_INSTALLED:LI,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:sI,TXT_CODE_PLUGIN_MARKET_REFRESH:OI,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:oI,TXT_CODE_PLUGIN_MARKET_SEARCH:RI,TXT_CODE_PLUGIN_MARKET_UNINSTALL:aI,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:CI,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:PI,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:UI,TXT_CODE_PLUGIN_MARKET_VERSION:MI,TXT_CODE_PLUGIN_MARKET_DETAIL:lI,TXT_CODE_PLUGIN_MARKET_BACK:iI,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:GI,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:KI,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:cI,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:XI,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:rI,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:dI,TXT_CODE_PLUGIN_MARKET_README:uI,TXT_CODE_PLUGIN_MARKET_VERSIONS:SI,TXT_CODE_PLUGIN_MARKET_TAGS:$I,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:mI,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:pI,TXT_CODE_PLUGIN_MARKET_VENDOR:vI,TXT_CODE_PLUGIN_MARKET_LATEST:gI,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:hI,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:fI,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:BI,TXT_CODE_PLUGIN_MARKET_UPDATES:kI,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:bI,TXT_CODE_2de92a5d:FI,TXT_CODE_PLUGIN_MARKET_BUNDLED:VI,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:yI},YI="Маркет плагинов",wI="Адрес маркета",zI="Адрес сайта маркета плагинов, откуда берётся список",xI="Некорректный адрес маркета: укажите http(s)-адрес без query, фрагмента и учётных данных",ZI="Загруженные файлы не совпадают с пакетом, опубликованным в маркете",qI="Пакет содержит недопустимый путь",QI="автор: {name}",jI="Отмена",WI="Подтвердить",JI="Выберите узлы",_t="Установить часть демона на эти узлы",Tt="Удалить часть демона с этих узлов",Et="не в сети",et="Не удалось обновить эти узлы: {nodes}",Nt="Удалить «{name}»?",nt="Этот каталог уже занят другим плагином",At="В маркете пока нет плагинов",Dt="В пакете нет файлов для установки",It="Установить",tt="Установлено",Lt="Без описания",st="Обновить",Ot="Перезапустите панель и затронутые узлы, чтобы изменения плагина вступили в силу.",ot="Поиск плагинов",Rt="Удалить",at="Удалено",Ct="Этот плагин по-прежнему установлен на других узлах.",Pt="Не удалось подключиться к маркету, проверьте адрес",Ut="v{version}",Mt="Сведения о плагине",lt="Назад в магазин плагинов",it="Подробное описание отсутствует",Gt="Установлена v{version}",Kt="Опубликовано: {date}",ct="Размер: {size} · Файлов: {count}",Xt="Список изменений отсутствует",rt="Плагин или версия не найдены, ещё не одобрены или сняты с публикации",dt="Readme",ut="Версии",St="Теги",$t="Дополнительная информация",mt="ID плагина",pt="Издатель",vt="Последняя",gt="Плагин панели",ht="Плагин демона",ft="Плагин панели и демона",Bt="Обновления",kt="Плагину нужна другая версия API хоста или SDK браузера. Сначала обновите ElementsPanel.",bt="Пожалуйста, выберите узел перед установкой!",Ft="This plugin is bundled with the panel and cannot be uninstalled here.",Vt="npm install failed. Check the network, registry and package name, then retry.",yt={TXT_CODE_PLUGIN_MARKET:YI,TXT_CODE_PLUGIN_MARKET_ADDR:wI,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:zI,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:xI,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:ZI,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:qI,TXT_CODE_PLUGIN_MARKET_BY:QI,TXT_CODE_PLUGIN_MARKET_CANCEL:jI,TXT_CODE_PLUGIN_MARKET_CONFIRM:WI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:JI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:_t,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:Tt,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Et,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:et,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:Nt,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:nt,TXT_CODE_PLUGIN_MARKET_EMPTY:At,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:Dt,TXT_CODE_PLUGIN_MARKET_INSTALL:It,TXT_CODE_PLUGIN_MARKET_INSTALLED:tt,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:Lt,TXT_CODE_PLUGIN_MARKET_REFRESH:st,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Ot,TXT_CODE_PLUGIN_MARKET_SEARCH:ot,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Rt,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:at,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Ct,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:Pt,TXT_CODE_PLUGIN_MARKET_VERSION:Ut,TXT_CODE_PLUGIN_MARKET_DETAIL:Mt,TXT_CODE_PLUGIN_MARKET_BACK:lt,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:it,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:Gt,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:Kt,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:ct,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:Xt,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:rt,TXT_CODE_PLUGIN_MARKET_README:dt,TXT_CODE_PLUGIN_MARKET_VERSIONS:ut,TXT_CODE_PLUGIN_MARKET_TAGS:St,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:$t,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:mt,TXT_CODE_PLUGIN_MARKET_VENDOR:pt,TXT_CODE_PLUGIN_MARKET_LATEST:vt,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:gt,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:ht,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:ft,TXT_CODE_PLUGIN_MARKET_UPDATES:Bt,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:kt,TXT_CODE_2de92a5d:bt,TXT_CODE_PLUGIN_MARKET_BUNDLED:Ft,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:Vt},Ht="ตลาดปลั๊กอิน",Yt="ที่อยู่ตลาด",wt="ที่อยู่ของเว็บตลาดปลั๊กอิน ซึ่งเป็นแหล่งที่มาของรายการปลั๊กอิน",zt="ที่อยู่ตลาดไม่ถูกต้อง: ใช้ที่อยู่ http(s) ที่ไม่มี query, fragment หรือข้อมูลรับรอง",xt="ไฟล์ที่ดาวน์โหลดไม่ตรงกับแพ็กเกจที่เผยแพร่ในตลาด",Zt="แพ็กเกจมีเส้นทางไฟล์ที่ไม่ถูกต้อง",qt="โดย {name}",Qt="ยกเลิก",jt="ยืนยัน",Wt="เลือกโหนด",Jt="ติดตั้งส่วนของดีมอนบนโหนดเหล่านี้",_L="ลบส่วนของดีมอนออกจากโหนดเหล่านี้",TL="ออฟไลน์",EL="ไม่สามารถอัปเดตโหนดเหล่านี้ได้: {nodes}",eL='ต้องการถอนการติดตั้ง "{name}" หรือไม่?',NL="โฟลเดอร์ติดตั้งนี้ถูกใช้โดยปลั๊กอินอื่นแล้ว",nL="ยังไม่มีปลั๊กอินในตลาด",AL="แพ็กเกจไม่มีไฟล์ที่ติดตั้งได้",DL="ติดตั้ง",IL="ติดตั้งแล้ว",tL="ไม่มีสรุป",LL="รีเฟรช",sL="รีสตาร์ทแผงควบคุมและโหนดที่เกี่ยวข้องเพื่อให้การเปลี่ยนแปลงปลั๊กอินมีผล",OL="ค้นหาปลั๊กอิน",oL="ถอนการติดตั้ง",RL="ถอนการติดตั้งแล้ว",aL="ปลั๊กอินนี้ยังคงติดตั้งอยู่บนโหนดอื่น",CL="ไม่สามารถเชื่อมต่อตลาดได้ กรุณาตรวจสอบที่อยู่ตลาด",PL="v{version}",UL="รายละเอียดปลั๊กอิน",ML="กลับไปยังตลาดปลั๊กอิน",lL="ยังไม่มีคำอธิบายโดยละเอียด",iL="ติดตั้งแล้ว v{version}",GL="เผยแพร่เมื่อ: {date}",KL="ขนาด: {size} · {count} ไฟล์",cL="ยังไม่มีบันทึกการเปลี่ยนแปลง",XL="ไม่พบปลั๊กอินหรือเวอร์ชัน ยังไม่ได้รับอนุมัติ หรือถูกนำออกจากตลาด",rL="Readme",dL="เวอร์ชัน",uL="แท็ก",SL="ข้อมูลเพิ่มเติม",$L="ID ปลั๊กอิน",mL="ผู้พัฒนา",pL="ล่าสุด",vL="ปลั๊กอิน Panel",gL="ปลั๊กอิน Daemon",hL="ปลั๊กอิน Panel และ Daemon",fL="อัปเดต",BL="ปลั๊กอินนี้ต้องใช้ API โฮสต์หรือ SDK เบราว์เซอร์เวอร์ชันอื่น โปรดอัปเดต ElementsPanel ก่อน",kL="โปรดเลือกโหนดก่อนติดตั้ง!",bL="This plugin is bundled with the panel and cannot be uninstalled here.",FL="npm install failed. Check the network, registry and package name, then retry.",VL={TXT_CODE_PLUGIN_MARKET:Ht,TXT_CODE_PLUGIN_MARKET_ADDR:Yt,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:wt,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:zt,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:xt,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:Zt,TXT_CODE_PLUGIN_MARKET_BY:qt,TXT_CODE_PLUGIN_MARKET_CANCEL:Qt,TXT_CODE_PLUGIN_MARKET_CONFIRM:jt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:Wt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:Jt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:_L,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:TL,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:EL,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:eL,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:NL,TXT_CODE_PLUGIN_MARKET_EMPTY:nL,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:AL,TXT_CODE_PLUGIN_MARKET_INSTALL:DL,TXT_CODE_PLUGIN_MARKET_INSTALLED:IL,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:tL,TXT_CODE_PLUGIN_MARKET_REFRESH:LL,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:sL,TXT_CODE_PLUGIN_MARKET_SEARCH:OL,TXT_CODE_PLUGIN_MARKET_UNINSTALL:oL,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:RL,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:aL,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:CL,TXT_CODE_PLUGIN_MARKET_VERSION:PL,TXT_CODE_PLUGIN_MARKET_DETAIL:UL,TXT_CODE_PLUGIN_MARKET_BACK:ML,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:lL,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:iL,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:GL,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:KL,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:cL,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:XL,TXT_CODE_PLUGIN_MARKET_README:rL,TXT_CODE_PLUGIN_MARKET_VERSIONS:dL,TXT_CODE_PLUGIN_MARKET_TAGS:uL,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:SL,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:$L,TXT_CODE_PLUGIN_MARKET_VENDOR:mL,TXT_CODE_PLUGIN_MARKET_LATEST:pL,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:vL,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:gL,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:hL,TXT_CODE_PLUGIN_MARKET_UPDATES:fL,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:BL,TXT_CODE_2de92a5d:kL,TXT_CODE_PLUGIN_MARKET_BUNDLED:bL,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:FL},yL="Eklenti marketi",HL="Market adresi",YL="Eklenti listesinin geldiği market sitesinin adresi",wL="Geçersiz market adresi: sorgu, parça veya kimlik bilgisi içermeyen bir http(s) adresi girin",zL="İndirilen dosyalar markette yayımlanan paketle eşleşmiyor",xL="Paket geçersiz bir dosya yolu içeriyor",ZL="{name} tarafından",qL="İptal",QL="Onayla",jL="Düğüm seçin",WL="Daemon kısmını bu düğümlere kur",JL="Daemon kısmını bu düğümlerden kaldır",_s="çevrimdışı",Ts="Bu düğümler güncellenemedi: {nodes}",Es='"{name}" kaldırılsın mı?',es="Bu kurulum dizini başka bir eklenti tarafından kullanılıyor",Ns="Marketta henüz eklenti yok",ns="Pakette kurulabilir dosya yok",As="Kur",Ds="Kurulu",Is="Özet yok",ts="Yenile",Ls="Eklenti değişikliklerinin etkili olması için paneli ve etkilenen düğümleri yeniden başlatın.",ss="Eklenti ara",Os="Kaldır",os="Kaldırıldı",Rs="Bu eklenti diğer düğümlerde hâlâ yüklü.",as="Markete bağlanılamadı; market adresini kontrol edin",Cs="v{version}",Ps="Eklenti ayrıntıları",Us="Eklenti mağazasına dön",Ms="Ayrıntılı açıklama yok",ls="Kurulu v{version}",is="Yayımlanma: {date}",Gs="Boyut: {size} · {count} dosya",Ks="Sürüm notları yok",cs="Eklenti veya sürüm bulunamadı, henüz onaylanmadı veya mağazadan kaldırıldı",Xs="Readme",rs="Sürümler",ds="Etiketler",us="Ek bilgiler",Ss="Eklenti Kimliği",$s="Sağlayıcı",ms="En son",ps="Panel eklentisi",vs="Daemon eklentisi",gs="Panel ve daemon eklentisi",hs="Güncellemeler",fs="Bu eklenti farklı bir ana bilgisayar API veya tarayıcı SDK sürümü gerektiriyor. Önce ElementsPanel’i güncelleyin.",Bs="Lütfen yüklemeden önce bir düğüm seçin!",ks="This plugin is bundled with the panel and cannot be uninstalled here.",bs="npm install failed. Check the network, registry and package name, then retry.",Fs={TXT_CODE_PLUGIN_MARKET:yL,TXT_CODE_PLUGIN_MARKET_ADDR:HL,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:YL,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:wL,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:zL,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:xL,TXT_CODE_PLUGIN_MARKET_BY:ZL,TXT_CODE_PLUGIN_MARKET_CANCEL:qL,TXT_CODE_PLUGIN_MARKET_CONFIRM:QL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:jL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:WL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:JL,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:_s,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:Ts,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:Es,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:es,TXT_CODE_PLUGIN_MARKET_EMPTY:Ns,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:ns,TXT_CODE_PLUGIN_MARKET_INSTALL:As,TXT_CODE_PLUGIN_MARKET_INSTALLED:Ds,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:Is,TXT_CODE_PLUGIN_MARKET_REFRESH:ts,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Ls,TXT_CODE_PLUGIN_MARKET_SEARCH:ss,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Os,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:os,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Rs,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:as,TXT_CODE_PLUGIN_MARKET_VERSION:Cs,TXT_CODE_PLUGIN_MARKET_DETAIL:Ps,TXT_CODE_PLUGIN_MARKET_BACK:Us,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:Ms,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:ls,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:is,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:Gs,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:Ks,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:cs,TXT_CODE_PLUGIN_MARKET_README:Xs,TXT_CODE_PLUGIN_MARKET_VERSIONS:rs,TXT_CODE_PLUGIN_MARKET_TAGS:ds,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:us,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:Ss,TXT_CODE_PLUGIN_MARKET_VENDOR:$s,TXT_CODE_PLUGIN_MARKET_LATEST:ms,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:ps,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:vs,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:gs,TXT_CODE_PLUGIN_MARKET_UPDATES:hs,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:fs,TXT_CODE_2de92a5d:Bs,TXT_CODE_PLUGIN_MARKET_BUNDLED:ks,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:bs},Vs="插件市场",ys="插件市场地址",Hs="插件市场网站的地址,插件列表从这里获取",Ys="插件市场地址无效:请填写不带查询参数、片段或账号密码的 http(s) 地址",ws="下载的文件与插件市场公布的不一致,请重试",zs="插件包包含非法的文件路径",xs="作者:{name}",Zs="取消",qs="确定",Qs="选择节点",js="为以下节点安装守护端插件",Ws="从以下节点移除守护端插件",Js="离线",_O="以下节点未能完成操作:{nodes}",TO="确定要卸载「{name}」吗?",EO="安装目录已被其他插件占用",eO="插件市场里还没有插件",NO="插件包里没有可安装的文件",nO="安装",AO="已安装",DO="暂无简介",IO="刷新",tO="请重启面板和受影响的节点,使插件变更生效。",LO="搜索插件",sO="卸载",OO="已卸载",oO="此插件仍安装在其他节点上。",RO="无法连接插件市场,请检查插件市场地址",aO="v{version}",CO="插件详情",PO="返回插件市场",UO="暂无详细说明",MO="已安装 v{version}",lO="发布时间:{date}",iO="大小:{size} · {count} 个文件",GO="暂无更新说明",KO="插件或版本不存在、尚未通过审核或已下架",cO="自述",XO="版本",rO="标签",dO="更多信息",uO="插件 ID",SO="开发者",$O="最新",mO="Panel插件",pO="Daemon插件",vO="双端插件",gO="更新",hO="此插件需要其他版本的宿主 API 或浏览器 SDK,请先更新 ElementsPanel。",fO="请选择一个节点再安装!",BO="该插件是面板内置依赖,不能在此卸载",kO="npm 安装失败,请检查网络、registry 或包名后重试",bO={TXT_CODE_PLUGIN_MARKET:Vs,TXT_CODE_PLUGIN_MARKET_ADDR:ys,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:Hs,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:Ys,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:ws,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:zs,TXT_CODE_PLUGIN_MARKET_BY:xs,TXT_CODE_PLUGIN_MARKET_CANCEL:Zs,TXT_CODE_PLUGIN_MARKET_CONFIRM:qs,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:Qs,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:js,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:Ws,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Js,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:_O,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:TO,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:EO,TXT_CODE_PLUGIN_MARKET_EMPTY:eO,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:NO,TXT_CODE_PLUGIN_MARKET_INSTALL:nO,TXT_CODE_PLUGIN_MARKET_INSTALLED:AO,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:DO,TXT_CODE_PLUGIN_MARKET_REFRESH:IO,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:tO,TXT_CODE_PLUGIN_MARKET_SEARCH:LO,TXT_CODE_PLUGIN_MARKET_UNINSTALL:sO,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:OO,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:oO,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:RO,TXT_CODE_PLUGIN_MARKET_VERSION:aO,TXT_CODE_PLUGIN_MARKET_DETAIL:CO,TXT_CODE_PLUGIN_MARKET_BACK:PO,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:UO,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:MO,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:lO,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:iO,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:GO,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:KO,TXT_CODE_PLUGIN_MARKET_README:cO,TXT_CODE_PLUGIN_MARKET_VERSIONS:XO,TXT_CODE_PLUGIN_MARKET_TAGS:rO,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:dO,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:uO,TXT_CODE_PLUGIN_MARKET_VENDOR:SO,TXT_CODE_PLUGIN_MARKET_LATEST:$O,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:mO,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:pO,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:vO,TXT_CODE_PLUGIN_MARKET_UPDATES:gO,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:hO,TXT_CODE_2de92a5d:fO,TXT_CODE_PLUGIN_MARKET_BUNDLED:BO,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:kO},FO="插件市場",VO="插件市場位址",yO="插件市場網站的位址,插件清單從這裡取得",HO="插件市場位址無效:請填寫不帶查詢參數、片段或帳號密碼的 http(s) 位址",YO="下載的檔案與插件市場公佈的不一致,請重試",wO="插件包包含非法的檔案路徑",zO="作者:{name}",xO="取消",ZO="確定",qO="選擇節點",QO="為以下節點安裝守護端插件",jO="從以下節點移除守護端插件",WO="離線",JO="以下節點未能完成操作:{nodes}",_o="確定要卸載「{name}」嗎?",To="安裝目錄已被其他插件佔用",Eo="插件市場裡還沒有插件",eo="插件包裡沒有可安裝的檔案",No="安裝",no="已安裝",Ao="暫無簡介",Do="重新整理",Io="請重新啟動面板和受影響的節點,使外掛變更生效。",to="搜尋插件",Lo="卸載",so="已卸載",Oo="此插件仍安裝在其他節點上。",oo="無法連接插件市場,請檢查插件市場位址",Ro="v{version}",ao="外掛程式詳情",Co="返回外掛程式市場",Po="暫無詳細說明",Uo="已安裝 v{version}",Mo="發佈時間:{date}",lo="大小:{size} · {count} 個檔案",io="暫無更新說明",Go="外掛程式或版本不存在、尚未通過審核或已下架",Ko="自述",co="版本",Xo="標籤",ro="更多資訊",uo="外掛 ID",So="開發者",$o="最新",mo="Panel外掛",po="Daemon外掛",vo="雙端外掛",go="更新",ho="此外掛需要其他版本的宿主 API 或瀏覽器 SDK,請先更新 ElementsPanel。",fo="安裝前請選擇一個節點!",Bo="該插件是面板內建依賴,不能在此解除安裝",ko="npm 安裝失敗,請檢查網路、registry 或套件名稱後重試",bo={TXT_CODE_PLUGIN_MARKET:FO,TXT_CODE_PLUGIN_MARKET_ADDR:VO,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:yO,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:HO,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:YO,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:wO,TXT_CODE_PLUGIN_MARKET_BY:zO,TXT_CODE_PLUGIN_MARKET_CANCEL:xO,TXT_CODE_PLUGIN_MARKET_CONFIRM:ZO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:qO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:QO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:jO,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:WO,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:JO,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:_o,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:To,TXT_CODE_PLUGIN_MARKET_EMPTY:Eo,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:eo,TXT_CODE_PLUGIN_MARKET_INSTALL:No,TXT_CODE_PLUGIN_MARKET_INSTALLED:no,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:Ao,TXT_CODE_PLUGIN_MARKET_REFRESH:Do,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Io,TXT_CODE_PLUGIN_MARKET_SEARCH:to,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Lo,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:so,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Oo,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:oo,TXT_CODE_PLUGIN_MARKET_VERSION:Ro,TXT_CODE_PLUGIN_MARKET_DETAIL:ao,TXT_CODE_PLUGIN_MARKET_BACK:Co,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:Po,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:Uo,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:Mo,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:lo,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:io,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:Go,TXT_CODE_PLUGIN_MARKET_README:Ko,TXT_CODE_PLUGIN_MARKET_VERSIONS:co,TXT_CODE_PLUGIN_MARKET_TAGS:Xo,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:ro,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:uo,TXT_CODE_PLUGIN_MARKET_VENDOR:So,TXT_CODE_PLUGIN_MARKET_LATEST:$o,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:mo,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:po,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:vo,TXT_CODE_PLUGIN_MARKET_UPDATES:go,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:ho,TXT_CODE_2de92a5d:fo,TXT_CODE_PLUGIN_MARKET_BUNDLED:Bo,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:ko},Fo={de_de:ZE,en_us:xe,es_es:zN,fr_fr:zn,ja_jp:wA,ko_kr:YD,pt_br:HI,ru_ru:yt,th_th:VL,tr_tr:Fs,zh_cn:bO,zh_tw:bo},N_=10,Jo=["console","i18n","routes","desktop"];function _R(O){O.i18n.define(Fo),O.routes.add({path:"/market/plugins",name:E("TXT_CODE_PLUGIN_MARKET"),component:ZT,meta:{mainMenu:!0,permission:N_,icon:"mdi-puzzle-outline"}}),O.routes.add({path:"/market/plugins/:pluginId",name:E("TXT_CODE_PLUGIN_MARKET_DETAIL"),component:qT,meta:{mainMenu:!1,permission:N_,breadcrumbs:[{name:E("TXT_CODE_PLUGIN_MARKET"),path:"/market/plugins",mainMenu:!0,permission:N_}]}}),O.desktop.app({id:"plugin-market",label:()=>E("TXT_CODE_PLUGIN_MARKET"),icon:"mdi-puzzle-outline",color:"#5c6bc0",route:"/market/plugins",component:xT,condition:()=>$_().isAdmin.value,initialWidth:1100,initialHeight:720})}export{_R as apply,Jo as inject};
|
package/panel/plugin.json
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "market",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Provides the ElementsPanel plugin market: browsing, installation, updates and removal.",
|
|
5
|
-
"priority": 175,
|
|
6
|
-
"frontendInject": [
|
|
7
|
-
"console",
|
|
8
|
-
"i18n"
|
|
9
|
-
],
|
|
3
|
+
"version": "1.0.1",
|
|
10
4
|
"backend": "backend/index.cjs",
|
|
11
|
-
"frontend": "frontend/panel-plugin-market-
|
|
12
|
-
"styles": [
|
|
13
|
-
"frontend/assets/style-0-_panel-plugin-build-entry_market-3c9e2953.css"
|
|
14
|
-
]
|
|
5
|
+
"frontend": "frontend/panel-plugin-market-b5a3e3ae.js"
|
|
15
6
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as E,g as u_}from"../../../assets/i18n-fe0f1ee7.js";import{u as S_}from"../../../assets/useAppStateStore-a644582a.js";import{bu as R_,bz as m,a1 as Z,b5 as J,aE as n,Q as c,O as r,bJ as _,gY as C_,P as d,R as L,ba as C,_ as $,bP as N,gC as V,$ as P,gz as n_,gA as A_,gB as D_,gL as L_,gD as s_,F as x,aK as __,gZ as $_,N as k,gW as T_,au as a_,gS as P_,h4 as U_,h5 as M_,gE as j,h6 as m_,h7 as e_,h3 as l_,bM as i_,ay as p_,gK as v_,gF as g_,gG as h_,bc as f_,s as B_,c9 as k_,ca as b_}from"../../../assets/vue-2433bd89.js";import{P as G_}from"../../../assets/PageToolbar-5ca1a069.js";import{m as O_}from"../../../assets/safe-87846d89.js";import{u as w,m as g,g as Q}from"../../../assets/useDefineApi-ead2616e.js";import{_ as I_}from"../../../assets/_plugin-vue_export-helper-c27b6911.js";import"../../../assets/context-b16af9cc.js";import"../../../assets/_elements-sdk_cordis-e3bebc89.js";import"../../../assets/_elements-sdk_cosmokit-e4842f5c.js";import"../../../assets/htmlparser2-bcb8f9db.js";import"../../../assets/lodash-001e4f93.js";const F_=w({url:"/api/market/plugin/list",method:"GET"}),V_=w({url:"/api/market/plugin/icon",method:"GET"}),y_=w({url:"/api/market/plugin/detail",method:"GET"}),H_=w({url:"/api/market/plugin/installed",method:"GET"}),Y_=w({url:"/api/market/plugin/nodes",method:"GET"}),w_=w({url:"/api/market/plugin/package",method:"GET"}),z_=w({url:"/api/market/plugin/install",method:"POST"}),x_=w({url:"/api/market/plugin/uninstall",method:"DELETE"});function K_(){const O=m(Object.create(null)),G=new Map;let t=!1;async function M(A,D){var o;try{const{execute:s}=V_(),U=await s({params:{pluginId:A,version:D.version},signal:D.controller.signal});if(t||D.controller.signal.aborted||G.get(A)!==D)return;const v=(o=U.value)==null?void 0:o.dataUrl;typeof v=="string"&&v&&(D.dataUrl=v,O.value[A]=v)}catch{}}function T(A,D,o){if(t)return Promise.resolve();const s=G.get(A);if(D&&s&&s.version===o){if(s.dataUrl)return Promise.resolve();if(s.pending)return s.pending}if(s==null||s.controller.abort(),G.delete(A),delete O.value[A],!D)return Promise.resolve();const U={version:o,controller:new AbortController};return G.set(A,U),U.pending=M(A,U).finally(()=>{U.pending=void 0}),U.pending}return R_(()=>{t=!0,G.forEach(A=>A.controller.abort()),G.clear(),O.value=Object.create(null)}),{icons:O,load:T}}function Z_(O,G){const t=A=>{var o;const D=/^v?(\d+(?:\.\d+){0,2})(?:-([\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*))?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/.exec(A.trim());return D&&{core:D[1].split("."),pre:(o=D[2])==null?void 0:o.split(".")}},M=t(O),T=t(G);if(!M||!T)return!1;for(let A=0;A<3;A++){const D=BigInt(M.core[A]||"0"),o=BigInt(T.core[A]||"0");if(D!==o)return D>o}if(!M.pre||!T.pre)return!M.pre&&!!T.pre;for(let A=0;A<Math.max(M.pre.length,T.pre.length);A++){const D=M.pre[A],o=T.pre[A];if(D===void 0||o===void 0)return o===void 0;if(D===o)continue;const s=/^\d+$/.test(D),U=/^\d+$/.test(o);if(s&&U){if(BigInt(D)!==BigInt(o))return BigInt(D)>BigInt(o)}else return s!==U?!s:D>o}return!1}const q_={class:"d-flex flex-wrap ga-2"},Q_={class:"mb-2"},o_=Z({__name:"PluginMarketInstall",props:{plugin:{},version:{},installOnly:{type:Boolean},disabled:{type:Boolean}},emits:["installed","busy"],setup(O,{emit:G}){const t=O,M=G,T=m(""),A=k(()=>!!(t.version&&!t.plugin.installedVersion)),D=k(()=>!!(!t.installOnly&&t.version&&t.plugin.installedVersion&&Z_(t.version.version,t.plugin.installedVersion))),o=k(()=>{var e;return Object.values(((e=t.version)==null?void 0:e.compatibility)||{}).some(I=>I&&(I.api!==1||I.sdk!==void 0&&I.sdk!==1))});let s=!1;const U=m(null),v=k({get:()=>U.value!==null,set:e=>{e||(U.value=null)}}),h=m([]),b=m([]),y=m(!1),Y=m("install"),f=m(null),z=k({get:()=>f.value!==null,set:e=>{e||(f.value=null)}});function u(e){const I=e.port?`${e.ip}:${e.port}`:e.ip,R=e.available?"":` · ${E("TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE")}`;return`${e.remarks||e.ip}(${I})${R}`}function X(e){return e.map(I=>{const R=h.value.find(i=>i.daemonId===I);return R?R.remarks||R.ip:I})}async function a(){const{execute:e}=Y_();return(await e()).value??[]}async function B(e){var i,p;const{execute:I}=w_();return((p=(await I({params:{pluginId:e.id,version:(i=e.latestVersion)==null?void 0:i.version}})).value)==null?void 0:p.sides)??[]}function l(e,I,R,i){h.value=R,b.value=R.map(p=>p.daemonId),Y.value=I,y.value=i,f.value=e}function S(){const e=f.value;if(!e||s||T.value)return;const I=[...b.value];y.value&&!I.length||(T.value=e.id,f.value=null,Y.value==="install"?H(e,I):t_(e,I))}async function F(){if(s||t.disabled||o.value||q.value||!t.version||!A.value&&!D.value)return;const e={...t.plugin,latestVersion:t.version};T.value=e.id;try{const I=await B(e);if(s)return;const R=I.includes("daemon")&&!I.includes("panel"),i=I.includes("daemon")?await a():[];if(s)return;if(i.length)return l(e,"install",i,R);if(R)return g.error(E("TXT_CODE_2de92a5d"));await H(e,[])}catch(I){s||g.error(Q(I))}finally{T.value=""}}async function H(e,I){var R;T.value=e.id;try{const{execute:i}=z_(),p=await i({data:{pluginId:e.id,name:e.name,version:(R=e.latestVersion)==null?void 0:R.version,daemonIds:I}});if(s)return;if(!p.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"));M("installed",e.id,p.value.installedVersion);const W=p.value.failedNodes;W.length?g.error(E("TXT_CODE_PLUGIN_MARKET_NODE_FAILED",{nodes:X(W).join("、")})):g.success(E("TXT_CODE_PLUGIN_MARKET_INSTALLED")),p.value.restartRequired&&g.warning(E("TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED"))}catch(i){s||g.error(Q(i))}finally{T.value=""}}async function K(e=U.value){var I;if(!(!e||s||T.value||f.value||t.disabled&&!U.value)){T.value=e.id,U.value=null;try{const{execute:R}=H_(),i=(I=(await R()).value)==null?void 0:I.find(p=>p.pluginId===e.id);if(s)return;if(i!=null&&i.daemonIds.length){const p=await a();if(s)return;const W=i.daemonIds.map(E_=>p.find(d_=>d_.daemonId===E_)??{daemonId:E_,remarks:"",ip:E_,port:0,available:!1});return l(e,"uninstall",W,!i.sides.includes("panel"))}await t_(e,[])}catch(R){s||g.error(Q(R))}finally{T.value=""}}}async function t_(e,I){T.value=e.id;try{const{execute:R}=x_(),i=await R({params:{pluginId:e.id,daemonIds:I.join(",")}});if(s)return;if(!i.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"));M("installed",e.id,i.value.installedVersion);const p=i.value.failedNodes;p.length?g.error(E("TXT_CODE_PLUGIN_MARKET_NODE_FAILED",{nodes:X(p).join("、")})):i.value.removed?g.success(E("TXT_CODE_PLUGIN_MARKET_UNINSTALLED")):g.warning(E("TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING")),i.value.restartRequired&&g.warning(E("TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED"))}catch(R){s||g.error(Q(R))}finally{T.value=""}}const q=k(()=>!!(T.value||f.value||U.value));return J(q,e=>M("busy",e),{flush:"sync"}),R_(()=>{s=!0,q.value&&M("busy",!1)}),(e,I)=>(n(),c(x,null,[o.value?(n(),r(_(C_),{key:0,type:"warning",variant:"tonal",text:_(E)("TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE")},null,8,["text"])):d("",!0),L("div",null,[L("div",q_,[A.value?(n(),r(_(V),{key:0,color:"primary","prepend-icon":"mdi-download",loading:!!T.value,disabled:q.value||O.disabled||o.value,onClick:F},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALL")),1)]),_:1},8,["loading","disabled"])):d("",!0),O.plugin.installedVersion&&!O.installOnly&&O.plugin.installedRemovable!==!1?(n(),r(_(V),{key:1,color:"error",variant:"text",disabled:q.value||O.disabled,onClick:I[0]||(I[0]=R=>U.value={...O.plugin})},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")),1)]),_:1},8,["disabled"])):d("",!0),D.value?(n(),r(_(V),{key:2,color:"primary","prepend-icon":"mdi-update",loading:!!T.value,disabled:q.value||O.disabled||o.value,onClick:F},{default:C(()=>[$(N(_(E)("TXT_CODE_40ca4f2")),1)]),_:1},8,["loading","disabled"])):d("",!0)]),P(_(s_),{modelValue:v.value,"onUpdate:modelValue":I[3]||(I[3]=R=>v.value=R),"max-width":"420"},{default:C(()=>[P(_(n_),{title:_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")},{default:C(()=>[P(_(A_),null,{default:C(()=>{var R;return[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL",{name:((R=U.value)==null?void 0:R.displayName)??""})),1)]}),_:1}),P(_(D_),null,{default:C(()=>[P(_(L_)),P(_(V),{variant:"text",onClick:I[1]||(I[1]=R=>U.value=null)},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_CANCEL")),1)]),_:1}),P(_(V),{color:"error",onClick:I[2]||(I[2]=R=>K())},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_UNINSTALL")),1)]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]),P(_(s_),{modelValue:z.value,"onUpdate:modelValue":I[6]||(I[6]=R=>z.value=R),"max-width":"480"},{default:C(()=>[P(_(n_),{title:_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES")},{default:C(()=>[P(_(A_),null,{default:C(()=>[L("div",Q_,N(Y.value==="install"?_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL"):_(E)("TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL")),1),(n(!0),c(x,null,__(h.value,R=>(n(),r(_($_),{key:R.daemonId,modelValue:b.value,"onUpdate:modelValue":I[4]||(I[4]=i=>b.value=i),value:R.daemonId,label:u(R),density:"compact","hide-details":""},null,8,["modelValue","value","label"]))),128))]),_:1}),P(_(D_),null,{default:C(()=>[P(_(L_)),P(_(V),{variant:"text",onClick:I[5]||(I[5]=R=>f.value=null)},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_CANCEL")),1)]),_:1}),P(_(V),{color:"primary",disabled:y.value&&!b.value.length,onClick:S},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_CONFIRM")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])])],64))}});function j_(O){const G=(O==null?void 0:O.includes("panel"))??!1,t=(O==null?void 0:O.includes("daemon"))??!1;if(G&&t)return"TXT_CODE_PLUGIN_MARKET_SIDE_BOTH";if(G)return"TXT_CODE_PLUGIN_MARKET_SIDE_PANEL";if(t)return"TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON"}const c_=Z({__name:"PluginMarketSideBadge",props:{sides:{}},setup(O){const G=O,t=k(()=>{const M=j_(G.sides);return M?E(M):void 0});return(M,T)=>t.value?(n(),r(_(T_),{key:0,size:"small",variant:"tonal",color:"primary"},{default:C(()=>[$(N(t.value),1)]),_:1})):d("",!0)}}),W_={class:"plugin-detail-header"},J_={class:"plugin-detail-heading"},_T={class:"plugin-detail-heading-text"},TT={class:"plugin-detail-title"},ET={class:"plugin-detail-summary"},eT={class:"plugin-detail-meta"},NT={class:"plugin-detail-author"},nT={key:0,class:"plugin-detail-category"},AT={class:"plugin-detail-action"},DT={class:"plugin-detail-tabs"},IT={class:"plugin-detail-body"},tT={class:"plugin-detail-content"},LT=["innerHTML"],sT={key:1,class:"plugin-detail-empty"},OT={key:1,class:"plugin-detail-versions"},oT={class:"plugin-detail-version-text"},RT={class:"plugin-detail-version-name"},CT={class:"plugin-detail-version-meta"},aT={class:"plugin-detail-update-head"},PT={class:"plugin-detail-update-version"},UT={class:"plugin-detail-update-date"},MT=["innerHTML"],lT={key:1,class:"plugin-detail-empty"},iT={class:"plugin-detail-sidebar"},GT={key:0,class:"plugin-detail-sidebar-section"},KT={class:"plugin-detail-sidebar-title"},cT={class:"plugin-detail-tag"},XT={class:"plugin-detail-sidebar-section"},rT={class:"plugin-detail-sidebar-title"},dT={class:"plugin-detail-info"},uT={class:"plugin-detail-info-row"},ST={class:"plugin-detail-info-row"},$T={key:0,class:"plugin-detail-info-row"},mT={key:1,class:"plugin-detail-info-row"},pT=Z({__name:"PluginMarketDetail",props:{pluginId:{},embedded:{type:Boolean}},emits:["back","installed"],setup(O,{emit:G}){const t=O,M=G,T=m(),A=m(!1),D=m(!1),o=m(""),s=m("readme");let U=0,v=0;const{icons:h,load:b}=K_(),y=k(()=>T.value?h.value[T.value.id]:void 0),Y=k(()=>{var l,S;return O_(((l=T.value)==null?void 0:l.readme)||((S=T.value)==null?void 0:S.description)||"")}),f=k(()=>{var l;return(((l=T.value)==null?void 0:l.versions)??[]).map(S=>({version:S,html:O_(S.changelog||"")}))});function z(l){return new Date(l).toLocaleString(u_().replace("_","-"))}function u(l){return l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/1024/1024).toFixed(1)} MB`}async function X(){var S,F;if(D.value&&((S=T.value)==null?void 0:S.id)===t.pluginId)return;const l=++U;A.value=!0,o.value="",((F=T.value)==null?void 0:F.id)!==t.pluginId&&(T.value=void 0),v=0,D.value=!1;try{const{execute:H}=y_(),K=await H({params:{pluginId:t.pluginId}});if(l!==U)return;if(!K.value)throw new Error(E("TXT_CODE_PLUGIN_MARKET_NOT_FOUND"));T.value=K.value,b(K.value.id,K.value.hasIcon,K.value.selectedVersion.version)}catch(H){l===U&&(o.value=Q(H))}finally{l===U&&(A.value=!1)}}function a(l){v=Math.max(0,v+(l?1:-1)),D.value=v>0}function B(l,S){var F;((F=T.value)==null?void 0:F.id)===l&&(T.value.installedVersion=S),M("installed",l,S)}return J(()=>t.pluginId,X,{immediate:!0}),J(()=>t.pluginId,()=>{s.value="readme"}),a_(()=>U++),(l,S)=>(n(),c("main",{class:i_(["plugin-detail",{"plugin-detail--embedded":O.embedded}])},[P(_(l_),{fluid:"",class:"plugin-detail-container"},{default:C(()=>{var F,H;return[P(G_,{title:_(E)("TXT_CODE_PLUGIN_MARKET_DETAIL"),icon:"mdi-puzzle-outline"},{actions:C(()=>[P(_(V),{variant:"text","prepend-icon":"mdi-arrow-left",disabled:D.value,onClick:S[0]||(S[0]=K=>M("back"))},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_BACK")),1)]),_:1},8,["disabled"]),P(_(V),{variant:"text",loading:A.value,disabled:D.value,onClick:X},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_REFRESH")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title"]),A.value?(n(),r(_(P_),{key:0,indeterminate:"",class:"mb-4"})):d("",!0),o.value?(n(),r(_(C_),{key:1,type:"error",text:o.value,class:"mb-4"},null,8,["text"])):d("",!0),T.value?(n(),c(x,{key:2},[L("header",W_,[L("div",J_,[P(_(U_),{class:"plugin-detail-icon",size:"64",rounded:"12px",color:"surface",variant:"flat"},{default:C(()=>[T.value.hasIcon&&y.value?(n(),r(_(M_),{key:0,src:y.value,alt:"",cover:"",transition:"fade-transition",class:"plugin-detail-icon-image",onError:S[1]||(S[1]=K=>delete _(h)[T.value.id])},null,8,["src"])):T.value.hasIcon?d("",!0):(n(),r(_(j),{key:1,icon:"mdi-puzzle-outline",size:"34"}))]),_:1}),L("div",_T,[L("h1",TT,N(T.value.displayName),1),L("p",ET,N(T.value.summary||_(E)("TXT_CODE_PLUGIN_MARKET_NO_SUMMARY")),1),L("div",eT,[L("span",NT,[P(_(j),{icon:"mdi-account-circle-outline",size:"16"}),$(" "+N(_(E)("TXT_CODE_PLUGIN_MARKET_BY",{name:((F=T.value.author)==null?void 0:F.displayName)??""})),1)]),T.value.category?(n(),c("span",nT,N(T.value.category),1)):d("",!0),P(c_,{sides:T.value.selectedVersion.sides??T.value.sides},null,8,["sides"]),T.value.installedVersion?(n(),r(_(T_),{key:1,size:"small",color:"success",variant:"tonal"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION",{version:T.value.installedVersion})),1)]),_:1})):d("",!0)])])]),L("div",AT,[(n(),r(o_,{key:T.value.id,plugin:T.value,version:T.value.latestVersion||T.value.selectedVersion,disabled:D.value||A.value,onInstalled:B,onBusy:a},null,8,["plugin","version","disabled"]))])]),L("div",DT,[P(_(m_),{modelValue:s.value,"onUpdate:modelValue":S[2]||(S[2]=K=>s.value=K),color:"primary",disabled:D.value},{default:C(()=>[P(_(e_),{value:"readme"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_README")),1)]),_:1}),P(_(e_),{value:"versions"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSIONS")),1)]),_:1}),P(_(e_),{value:"updates"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_UPDATES")),1)]),_:1})]),_:1},8,["modelValue","disabled"])]),L("div",IT,[L("section",tT,[s.value==="readme"?(n(),c(x,{key:0},[T.value.readme||T.value.description?(n(),c("div",{key:0,class:"global-markdown-html plugin-detail-markdown",innerHTML:Y.value},null,8,LT)):(n(),c("p",sT,N(_(E)("TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION")),1))],64)):s.value==="versions"?(n(),c("ul",OT,[(n(!0),c(x,null,__(T.value.versions,K=>(n(),c("li",{key:K.version,class:"plugin-detail-version"},[L("div",oT,[L("span",RT,N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:K.version})),1),L("span",CT,N(_(E)("TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT",{date:z(K.submittedAt)}))+" · "+N(_(E)("TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE",{size:u(K.sizeBytes),count:K.fileCount})),1)]),T.value.installedVersion?d("",!0):(n(),r(o_,{key:0,plugin:T.value,version:K,disabled:D.value||A.value,"install-only":"",onInstalled:B,onBusy:a},null,8,["plugin","version","disabled"]))]))),128))])):(n(!0),c(x,{key:2},__(f.value,K=>(n(),c("article",{key:K.version.version,class:"plugin-detail-update"},[L("h2",aT,[L("span",PT,N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:K.version.version})),1),L("span",UT,N(z(K.version.submittedAt)),1)]),K.html?(n(),c("div",{key:0,class:"global-markdown-html plugin-detail-markdown",innerHTML:K.html},null,8,MT)):(n(),c("p",lT,N(_(E)("TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG")),1))]))),128))]),L("aside",iT,[T.value.category?(n(),c("section",GT,[L("h2",KT,N(_(E)("TXT_CODE_PLUGIN_MARKET_TAGS")),1),L("span",cT,N(T.value.category),1)])):d("",!0),L("section",XT,[L("h2",rT,N(_(E)("TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO")),1),L("dl",dT,[L("div",uT,[L("dt",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_PLUGIN_ID")),1),L("dd",null,N(T.value.name),1)]),L("div",ST,[L("dt",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_VENDOR")),1),L("dd",null,N(((H=T.value.author)==null?void 0:H.displayName)??""),1)]),T.value.latestVersion?(n(),c("div",$T,[L("dt",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_LATEST")),1),L("dd",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:T.value.latestVersion.version})),1)])):d("",!0),T.value.installedVersion?(n(),c("div",mT,[L("dt",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED")),1),L("dd",null,N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:T.value.installedVersion})),1)])):d("",!0)])])])])],64)):d("",!0)]}),_:1})],2))}});const X_=I_(pT,[["__scopeId","data-v-06626bcd"]]),vT={key:1,class:"plugin-market-empty",role:"status"},gT={class:"plugin-market-empty-title"},hT={class:"plugin-market-card-head"},fT={class:"plugin-market-card-heading"},BT={class:"text-h6"},kT={class:"text-caption text-medium-emphasis"},bT={key:0},FT={class:"plugin-market-card-summary text-body-2 mt-2"},VT={key:3,class:"plugin-market-empty plugin-market-empty--filtered",role:"status"},yT={class:"plugin-market-empty-title"},HT=Z({__name:"PluginMarketList",props:{embedded:{type:Boolean}},emits:["select"],setup(O,{expose:G,emit:t}){const M=O,T=t,A=m(!1),D=m(!1),o=m([]),s=m(""),{icons:U,load:v}=K_();let h=0;const b=k(()=>{const u=(s.value??"").trim().toLowerCase();return u?o.value.filter(X=>[X.displayName,X.name,X.summary].some(a=>String(a??"").toLowerCase().includes(u))):o.value});J(b,u=>{var X;for(const a of u)v(a.id,a.hasIcon,(X=a.latestVersion)==null?void 0:X.version)},{immediate:!0});async function y(){const u=++h;A.value=!0;try{const{execute:X}=F_(),a=await X();u===h&&(o.value=a.value??[],D.value=!1)}catch(X){u===h&&(D.value=!0,g.error(Q(X)))}finally{u===h&&(A.value=!1)}}function Y(u){M.embedded&&T("select",u.id)}function f(u,X){!M.embedded||!["Enter"," "].includes(u.key)||(u.preventDefault(),Y(X))}function z(u,X){const a=o.value.find(B=>B.id===u);a&&(a.installedVersion=X)}return G({updateInstalled:z}),p_(y),a_(()=>h++),(u,X)=>(n(),c("main",{class:i_(["plugin-market",{"plugin-market--embedded":O.embedded}])},[P(_(l_),{fluid:"",class:"plugin-market-container"},{default:C(()=>[P(G_,{title:_(E)("TXT_CODE_PLUGIN_MARKET"),icon:"mdi-puzzle-outline"},{search:C(()=>[P(_(v_),{modelValue:s.value,"onUpdate:modelValue":X[0]||(X[0]=a=>s.value=a),label:_(E)("TXT_CODE_PLUGIN_MARKET_SEARCH"),"prepend-inner-icon":"mdi-magnify","hide-details":"",clearable:"",density:"comfortable",variant:"solo-filled"},null,8,["modelValue","label"])]),actions:C(()=>[P(_(V),{variant:"text",loading:A.value,onClick:y},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_REFRESH")),1)]),_:1},8,["loading"])]),_:1},8,["title"]),A.value&&!o.value.length?(n(),r(_(P_),{key:0,indeterminate:"",class:"mb-4"})):d("",!0),!A.value&&!o.value.length?(n(),c("div",vT,[P(_(j),{icon:D.value?"mdi-lan-disconnect":"mdi-puzzle-outline",size:"48",class:"plugin-market-empty-icon"},null,8,["icon"]),L("div",gT,N(D.value?_(E)("TXT_CODE_PLUGIN_MARKET_UNREACHABLE"):_(E)("TXT_CODE_PLUGIN_MARKET_EMPTY")),1)])):b.value.length?(n(),r(_(h_),{key:2,class:"plugin-market-grid"},{default:C(()=>[(n(!0),c(x,null,__(b.value,a=>(n(),r(_(g_),{key:a.id,cols:"12",md:"6",lg:"4"},{default:C(()=>[P(_(n_),{class:"plugin-market-card h-100",elevation:"0",to:O.embedded?void 0:`/market/plugins/${encodeURIComponent(a.id)}`,role:O.embedded?"button":void 0,tabindex:O.embedded?0:void 0,link:"",onClick:B=>Y(a),onKeydown:B=>f(B,a)},{default:C(()=>[P(_(A_),{class:"plugin-market-card-content"},{default:C(()=>{var B;return[L("div",hT,[P(_(U_),{class:"plugin-market-icon",size:"52",rounded:"12px",color:"surface",variant:"flat"},{default:C(()=>[a.hasIcon&&_(U)[a.id]?(n(),r(_(M_),{key:0,src:_(U)[a.id],alt:"",cover:"",transition:"fade-transition",class:"plugin-market-icon-image",onError:l=>delete _(U)[a.id]},null,8,["src","onError"])):a.hasIcon?d("",!0):(n(),r(_(j),{key:1,icon:"mdi-puzzle-outline",size:"28"}))]),_:2},1024),L("div",fT,[L("div",BT,N(a.displayName),1),L("div",kT,[$(N(((B=a.author)==null?void 0:B.displayName)??"")+" ",1),a.category?(n(),c("span",bT,"· "+N(a.category),1)):d("",!0)])])]),L("div",FT,N(a.summary||_(E)("TXT_CODE_PLUGIN_MARKET_NO_SUMMARY")),1)]}),_:2},1024),P(_(D_),{class:"plugin-market-card-actions"},{default:C(()=>[a.latestVersion?(n(),r(_(T_),{key:0,size:"small",variant:"tonal"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_VERSION",{version:a.latestVersion.version})),1)]),_:2},1024)):d("",!0),P(c_,{sides:a.sides},null,8,["sides"]),a.installedVersion?(n(),r(_(T_),{key:1,size:"small",color:"success",variant:"tonal"},{default:C(()=>[$(N(_(E)("TXT_CODE_PLUGIN_MARKET_INSTALLED")),1)]),_:1})):d("",!0)]),_:2},1024)]),_:2},1032,["to","role","tabindex","onClick","onKeydown"])]),_:2},1024))),128))]),_:1})):A.value?d("",!0):(n(),c("div",VT,[P(_(j),{icon:"mdi-magnify",size:"42",class:"plugin-market-empty-icon"}),L("div",yT,N(_(E)("TXT_CODE_NO_DATA")),1)]))]),_:1})],2))}});const r_=I_(HT,[["__scopeId","data-v-7b47151a"]]),YT={class:"desktop-plugin-market"},wT=Z({__name:"DesktopPluginMarket",setup(O){const G=m(),t=m("");function M(D){t.value=D}function T(){t.value=""}function A(D,o){var s;(s=G.value)==null||s.updateInstalled(D,o)}return(D,o)=>(n(),c("div",YT,[f_(P(r_,{ref_key:"pluginList",ref:G,embedded:"",onSelect:M},null,512),[[B_,!t.value]]),t.value?(n(),r(X_,{key:0,"plugin-id":t.value,embedded:"",onBack:T,onInstalled:A},null,8,["plugin-id"])):d("",!0)]))}});const zT=I_(wT,[["__scopeId","data-v-53e84b0f"]]),xT=Z({__name:"PluginMarket",setup(O){return(G,t)=>(n(),r(r_))}}),ZT=Z({__name:"PluginMarketDetail",setup(O){const G=k_(),t=b_(),M=k(()=>String(G.params.pluginId??""));return(T,A)=>(n(),r(X_,{"plugin-id":M.value,onBack:A[0]||(A[0]=D=>_(t).push("/market/plugins"))},null,8,["plugin-id"]))}}),qT="Plugin-Markt",QT="Markt-Adresse",jT="Adresse der Plugin-Markt-Website, von dort kommt die Plugin-Liste",WT="Ungültige Marktadresse: eine http(s)-Adresse ohne Query, Fragment oder Zugangsdaten",JT="Die heruntergeladenen Dateien stimmen nicht mit dem Paket im Markt überein",_E="Das Paket enthält einen ungültigen Dateipfad",TE="von {name}",EE="Abbrechen",eE="Bestätigen",NE="Nodes auswählen",nE="Die Daemon-Hälfte auf diesen Nodes installieren",AE="Die Daemon-Hälfte von diesen Nodes entfernen",DE="offline",IE="Diese Nodes konnten nicht aktualisiert werden: {nodes}",tE="„{name}“ wirklich entfernen?",LE="Das Installationsverzeichnis wird bereits von einem anderen Plugin verwendet",sE="Der Markt enthält noch keine Plugins",OE="Das Paket enthält keine installierbaren Dateien",oE="Installieren",RE="Installiert",CE="Keine Kurzbeschreibung",aE="Aktualisieren",PE="Starten Sie das Panel und die betroffenen Knoten neu, damit die Plugin-Änderungen wirksam werden.",UE="Plugins suchen",ME="Deinstallieren",lE="Deinstalliert",iE="Dieses Plugin ist weiterhin auf anderen Knoten installiert.",GE="Der Markt ist nicht erreichbar; bitte die Markt-Adresse prüfen",KE="v{version}",cE="Plugin-Details",XE="Zurück zum Plugin-Markt",rE="Keine ausführliche Beschreibung verfügbar",dE="Installiert: v{version}",uE="Veröffentlicht: {date}",SE="Größe: {size} · {count} Dateien",$E="Keine Versionshinweise verfügbar",mE="Das Plugin oder die Version wurde nicht gefunden, noch nicht freigegeben oder aus dem Markt entfernt",pE="Readme",vE="Versionen",gE="Tags",hE="Weitere Informationen",fE="Plugin-ID",BE="Anbieter",kE="Neueste",bE="Panel-Plugin",FE="Daemon-Plugin",VE="Panel- und Daemon-Plugin",yE="Änderungen",HE="Dieses Plugin benötigt eine andere Host-API oder Browser-SDK-Version. Aktualisieren Sie zuerst ElementsPanel.",YE="Bitte wählen Sie vor der Installation einen Knoten aus!",wE="This plugin is bundled with the panel and cannot be uninstalled here.",zE="npm install failed. Check the network, registry and package name, then retry.",xE={TXT_CODE_PLUGIN_MARKET:qT,TXT_CODE_PLUGIN_MARKET_ADDR:QT,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:jT,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:WT,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:JT,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:_E,TXT_CODE_PLUGIN_MARKET_BY:TE,TXT_CODE_PLUGIN_MARKET_CANCEL:EE,TXT_CODE_PLUGIN_MARKET_CONFIRM:eE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:NE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:nE,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:AE,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:DE,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:IE,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:tE,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:LE,TXT_CODE_PLUGIN_MARKET_EMPTY:sE,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:OE,TXT_CODE_PLUGIN_MARKET_INSTALL:oE,TXT_CODE_PLUGIN_MARKET_INSTALLED:RE,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:CE,TXT_CODE_PLUGIN_MARKET_REFRESH:aE,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:PE,TXT_CODE_PLUGIN_MARKET_SEARCH:UE,TXT_CODE_PLUGIN_MARKET_UNINSTALL:ME,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:lE,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:iE,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:GE,TXT_CODE_PLUGIN_MARKET_VERSION:KE,TXT_CODE_PLUGIN_MARKET_DETAIL:cE,TXT_CODE_PLUGIN_MARKET_BACK:XE,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:rE,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:dE,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:uE,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:SE,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:$E,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:mE,TXT_CODE_PLUGIN_MARKET_README:pE,TXT_CODE_PLUGIN_MARKET_VERSIONS:vE,TXT_CODE_PLUGIN_MARKET_TAGS:gE,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:hE,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:fE,TXT_CODE_PLUGIN_MARKET_VENDOR:BE,TXT_CODE_PLUGIN_MARKET_LATEST:kE,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:bE,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:FE,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:VE,TXT_CODE_PLUGIN_MARKET_UPDATES:yE,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:HE,TXT_CODE_2de92a5d:YE,TXT_CODE_PLUGIN_MARKET_BUNDLED:wE,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:zE},ZE="Plugin market",qE="Market address",QE="Address of the plugin market website, where the plugin list comes from",jE="Invalid market address: use an http(s) address with no query, fragment or credentials",WE="The downloaded files do not match the package published on the market",JE="The package contains an illegal file path",_e="by {name}",Te="Cancel",Ee="Confirm",ee="Select nodes",Ne="Install the daemon half on these nodes",ne="Remove the daemon half from these nodes",Ae="offline",De="These nodes could not be updated: {nodes}",Ie='Remove "{name}"?',te="That install directory is already used by another plugin",Le="The market has no plugins yet",se="The package contains no installable files",Oe="Install",oe="Installed",Re="No summary",Ce="Refresh",ae="Restart the panel and the affected nodes for the plugin changes to take effect.",Pe="Search plugins",Ue="Uninstall",Me="Uninstalled",le="This plugin is still installed on other nodes.",ie="The market could not be reached; check the market address",Ge="v{version}",Ke="Plugin details",ce="Back to plugin market",Xe="No detailed description available",re="Installed v{version}",de="Published: {date}",ue="Size: {size} · {count} files",Se="No release notes available",$e="The plugin or version was not found, has not been approved, or has been delisted",me="Readme",pe="Versions",ve="Tags",ge="Additional info",he="Plugin ID",fe="Vendor",Be="Latest",ke="Panel plugin",be="Daemon plugin",Fe="Panel + daemon plugin",Ve="Updates",ye="This plugin requires a different host API or browser SDK version. Update ElementsPanel before installing.",He="Please select a node before installing!",Ye="This plugin is bundled with the panel and cannot be uninstalled here.",we="npm install failed. Check the network, registry and package name, then retry.",ze={TXT_CODE_PLUGIN_MARKET:ZE,TXT_CODE_PLUGIN_MARKET_ADDR:qE,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:QE,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:jE,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:WE,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:JE,TXT_CODE_PLUGIN_MARKET_BY:_e,TXT_CODE_PLUGIN_MARKET_CANCEL:Te,TXT_CODE_PLUGIN_MARKET_CONFIRM:Ee,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:ee,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:Ne,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:ne,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Ae,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:De,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:Ie,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:te,TXT_CODE_PLUGIN_MARKET_EMPTY:Le,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:se,TXT_CODE_PLUGIN_MARKET_INSTALL:Oe,TXT_CODE_PLUGIN_MARKET_INSTALLED:oe,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:Re,TXT_CODE_PLUGIN_MARKET_REFRESH:Ce,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:ae,TXT_CODE_PLUGIN_MARKET_SEARCH:Pe,TXT_CODE_PLUGIN_MARKET_UNINSTALL:Ue,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Me,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:le,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:ie,TXT_CODE_PLUGIN_MARKET_VERSION:Ge,TXT_CODE_PLUGIN_MARKET_DETAIL:Ke,TXT_CODE_PLUGIN_MARKET_BACK:ce,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:Xe,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:re,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:de,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:ue,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:Se,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:$e,TXT_CODE_PLUGIN_MARKET_README:me,TXT_CODE_PLUGIN_MARKET_VERSIONS:pe,TXT_CODE_PLUGIN_MARKET_TAGS:ve,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:ge,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:he,TXT_CODE_PLUGIN_MARKET_VENDOR:fe,TXT_CODE_PLUGIN_MARKET_LATEST:Be,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:ke,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:be,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:Fe,TXT_CODE_PLUGIN_MARKET_UPDATES:Ve,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:ye,TXT_CODE_2de92a5d:He,TXT_CODE_PLUGIN_MARKET_BUNDLED:Ye,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:we},xe="Mercado de plugins",Ze="Dirección del mercado",qe="Dirección del sitio del mercado de plugins, de ahí viene la lista",Qe="Dirección de mercado no válida: usa una dirección http(s) sin consulta, fragmento ni credenciales",je="Los archivos descargados no coinciden con el paquete publicado en el mercado",We="El paquete contiene una ruta de archivo no válida",Je="por {name}",_N="Cancelar",TN="Confirmar",EN="Seleccionar nodos",eN="Instalar la mitad del daemon en estos nodos",NN="Eliminar la mitad del daemon de estos nodos",nN="desconectado",AN="No se pudieron actualizar estos nodos: {nodes}",DN="¿Quitar «{name}»?",IN="Ese directorio ya lo usa otro plugin",tN="El mercado aún no tiene plugins",LN="El paquete no contiene archivos instalables",sN="Instalar",ON="Instalado",oN="Sin resumen",RN="Actualizar",CN="Reinicie el panel y los nodos afectados para que los cambios del plugin surtan efecto.",aN="Buscar plugins",PN="Desinstalar",UN="Desinstalado",MN="Este plugin sigue instalado en otros nodos.",lN="No se pudo conectar con el mercado; revisa la dirección",iN="v{version}",GN="Detalles del complemento",KN="Volver al mercado de complementos",cN="No hay una descripción detallada",XN="Instalada v{version}",rN="Publicado: {date}",dN="Tamaño: {size} · {count} archivos",uN="No hay notas de la versión",SN="El complemento o la versión no existe, no se ha aprobado o se ha retirado del mercado",$N="Readme",mN="Versiones",pN="Etiquetas",vN="Información adicional",gN="ID del complemento",hN="Proveedor",fN="Más reciente",BN="Complemento de panel",kN="Complemento de daemon",bN="Complemento de panel y daemon",FN="Novedades",VN="Este complemento requiere otra versión de la API del servidor o del SDK del navegador. Actualiza ElementsPanel primero.",yN="¡Seleccione un nodo antes de instalar!",HN="This plugin is bundled with the panel and cannot be uninstalled here.",YN="npm install failed. Check the network, registry and package name, then retry.",wN={TXT_CODE_PLUGIN_MARKET:xe,TXT_CODE_PLUGIN_MARKET_ADDR:Ze,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:qe,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:Qe,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:je,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:We,TXT_CODE_PLUGIN_MARKET_BY:Je,TXT_CODE_PLUGIN_MARKET_CANCEL:_N,TXT_CODE_PLUGIN_MARKET_CONFIRM:TN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:EN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:eN,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:NN,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:nN,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:AN,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:DN,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:IN,TXT_CODE_PLUGIN_MARKET_EMPTY:tN,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:LN,TXT_CODE_PLUGIN_MARKET_INSTALL:sN,TXT_CODE_PLUGIN_MARKET_INSTALLED:ON,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:oN,TXT_CODE_PLUGIN_MARKET_REFRESH:RN,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:CN,TXT_CODE_PLUGIN_MARKET_SEARCH:aN,TXT_CODE_PLUGIN_MARKET_UNINSTALL:PN,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:UN,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:MN,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:lN,TXT_CODE_PLUGIN_MARKET_VERSION:iN,TXT_CODE_PLUGIN_MARKET_DETAIL:GN,TXT_CODE_PLUGIN_MARKET_BACK:KN,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:cN,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:XN,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:rN,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:dN,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:uN,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:SN,TXT_CODE_PLUGIN_MARKET_README:$N,TXT_CODE_PLUGIN_MARKET_VERSIONS:mN,TXT_CODE_PLUGIN_MARKET_TAGS:pN,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:vN,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:gN,TXT_CODE_PLUGIN_MARKET_VENDOR:hN,TXT_CODE_PLUGIN_MARKET_LATEST:fN,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:BN,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:kN,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:bN,TXT_CODE_PLUGIN_MARKET_UPDATES:FN,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:VN,TXT_CODE_2de92a5d:yN,TXT_CODE_PLUGIN_MARKET_BUNDLED:HN,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:YN},zN="Marché de plugins",xN="Adresse du marché",ZN="Adresse du site du marché de plugins, d'où vient la liste",qN="Adresse de marché invalide : utilisez une adresse http(s) sans requête, fragment ni identifiants",QN="Les fichiers téléchargés ne correspondent pas au paquet publié sur le marché",jN="Le paquet contient un chemin de fichier invalide",WN="par {name}",JN="Annuler",_n="Confirmer",Tn="Choisir les nœuds",En="Installer la moitié démon sur ces nœuds",en="Supprimer la moitié démon de ces nœuds",Nn="hors ligne",nn="Ces nœuds n'ont pas pu être mis à jour : {nodes}",An="Retirer « {name} » ?",Dn="Ce répertoire est déjà utilisé par un autre plugin",In="Le marché ne contient pas encore de plugin",tn="Le paquet ne contient aucun fichier installable",Ln="Installer",sn="Installé",On="Aucun résumé",on="Actualiser",Rn="Redémarrez le panneau et les nœuds concernés pour appliquer les modifications du plugin.",Cn="Rechercher des plugins",an="Désinstaller",Pn="Désinstallé",Un="Ce plugin est toujours installé sur d’autres nœuds.",Mn="Le marché est inaccessible ; vérifiez l'adresse",ln="v{version}",Gn="Détails du plugin",Kn="Retour au marché des plugins",cn="Aucune description détaillée disponible",Xn="Version installée v{version}",rn="Publication : {date}",dn="Taille : {size} · {count} fichiers",un="Aucune note de version disponible",Sn="Le plugin ou la version est introuvable, en attente de validation ou retiré du marché",$n="Readme",mn="Versions",pn="Étiquettes",vn="Informations complémentaires",gn="ID de l'extension",hn="Fournisseur",fn="Dernière",Bn="Extension de panel",kn="Extension de daemon",bn="Extension panel et daemon",Fn="Nouveautés",Vn="Ce plugin nécessite une autre version de l’API hôte ou du SDK navigateur. Mettez d’abord ElementsPanel à jour.",yn="Veuillez sélectionner un nœud avant l'installation!",Hn="This plugin is bundled with the panel and cannot be uninstalled here.",Yn="npm install failed. Check the network, registry and package name, then retry.",wn={TXT_CODE_PLUGIN_MARKET:zN,TXT_CODE_PLUGIN_MARKET_ADDR:xN,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:ZN,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:qN,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:QN,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:jN,TXT_CODE_PLUGIN_MARKET_BY:WN,TXT_CODE_PLUGIN_MARKET_CANCEL:JN,TXT_CODE_PLUGIN_MARKET_CONFIRM:_n,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:Tn,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:En,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:en,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Nn,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:nn,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:An,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:Dn,TXT_CODE_PLUGIN_MARKET_EMPTY:In,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:tn,TXT_CODE_PLUGIN_MARKET_INSTALL:Ln,TXT_CODE_PLUGIN_MARKET_INSTALLED:sn,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:On,TXT_CODE_PLUGIN_MARKET_REFRESH:on,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Rn,TXT_CODE_PLUGIN_MARKET_SEARCH:Cn,TXT_CODE_PLUGIN_MARKET_UNINSTALL:an,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Pn,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Un,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:Mn,TXT_CODE_PLUGIN_MARKET_VERSION:ln,TXT_CODE_PLUGIN_MARKET_DETAIL:Gn,TXT_CODE_PLUGIN_MARKET_BACK:Kn,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:cn,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:Xn,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:rn,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:dn,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:un,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:Sn,TXT_CODE_PLUGIN_MARKET_README:$n,TXT_CODE_PLUGIN_MARKET_VERSIONS:mn,TXT_CODE_PLUGIN_MARKET_TAGS:pn,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:vn,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:gn,TXT_CODE_PLUGIN_MARKET_VENDOR:hn,TXT_CODE_PLUGIN_MARKET_LATEST:fn,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:Bn,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:kn,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:bn,TXT_CODE_PLUGIN_MARKET_UPDATES:Fn,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:Vn,TXT_CODE_2de92a5d:yn,TXT_CODE_PLUGIN_MARKET_BUNDLED:Hn,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:Yn},zn="プラグインマーケット",xn="マーケットのアドレス",Zn="プラグイン一覧の取得元となるマーケットサイトのアドレス",qn="マーケットアドレスが不正です。クエリ・フラグメント・認証情報を含まない http(s) のアドレスを入力してください",Qn="ダウンロードしたファイルがマーケットで公開されているパッケージと一致しません",jn="パッケージに不正なファイルパスが含まれています",Wn="作者: {name}",Jn="キャンセル",_A="確定",TA="ノードを選択",EA="次のノードにデーモン側をインストールします",eA="次のノードからデーモン側を削除します",NA="オフライン",nA="次のノードを更新できませんでした:{nodes}",AA="「{name}」を削除しますか?",DA="そのインストール先ディレクトリは別のプラグインが使用しています",IA="マーケットにはまだプラグインがありません",tA="パッケージにインストールできるファイルがありません",LA="インストール",sA="インストール済み",OA="概要なし",oA="更新",RA="プラグインの変更を反映するには、パネルと対象ノードを再起動してください。",CA="プラグインを検索",aA="アンインストール",PA="アンインストール済み",UA="このプラグインは他のノードにまだインストールされています。",MA="マーケットに接続できません。アドレスを確認してください",lA="v{version}",iA="プラグインの詳細",GA="プラグインマーケットに戻る",KA="詳細な説明はありません",cA="インストール済み v{version}",XA="公開日時:{date}",rA="サイズ:{size} · {count} ファイル",dA="更新内容はありません",uA="プラグインまたはバージョンが存在しないか、未承認または公開停止されています",SA="Readme",$A="バージョン",mA="タグ",pA="追加情報",vA="プラグイン ID",gA="開発元",hA="最新",fA="Panel プラグイン",BA="Daemon プラグイン",kA="Panel・Daemon 両対応プラグイン",bA="更新履歴",FA="このプラグインには別のホスト API またはブラウザー SDK が必要です。先に ElementsPanel を更新してください。",VA="インストールする前にノードを選択してください!",yA="This plugin is bundled with the panel and cannot be uninstalled here.",HA="npm install failed. Check the network, registry and package name, then retry.",YA={TXT_CODE_PLUGIN_MARKET:zn,TXT_CODE_PLUGIN_MARKET_ADDR:xn,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:Zn,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:qn,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:Qn,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:jn,TXT_CODE_PLUGIN_MARKET_BY:Wn,TXT_CODE_PLUGIN_MARKET_CANCEL:Jn,TXT_CODE_PLUGIN_MARKET_CONFIRM:_A,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:TA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:EA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:eA,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:NA,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:nA,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:AA,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:DA,TXT_CODE_PLUGIN_MARKET_EMPTY:IA,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:tA,TXT_CODE_PLUGIN_MARKET_INSTALL:LA,TXT_CODE_PLUGIN_MARKET_INSTALLED:sA,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:OA,TXT_CODE_PLUGIN_MARKET_REFRESH:oA,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:RA,TXT_CODE_PLUGIN_MARKET_SEARCH:CA,TXT_CODE_PLUGIN_MARKET_UNINSTALL:aA,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:PA,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:UA,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:MA,TXT_CODE_PLUGIN_MARKET_VERSION:lA,TXT_CODE_PLUGIN_MARKET_DETAIL:iA,TXT_CODE_PLUGIN_MARKET_BACK:GA,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:KA,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:cA,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:XA,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:rA,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:dA,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:uA,TXT_CODE_PLUGIN_MARKET_README:SA,TXT_CODE_PLUGIN_MARKET_VERSIONS:$A,TXT_CODE_PLUGIN_MARKET_TAGS:mA,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:pA,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:vA,TXT_CODE_PLUGIN_MARKET_VENDOR:gA,TXT_CODE_PLUGIN_MARKET_LATEST:hA,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:fA,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:BA,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:kA,TXT_CODE_PLUGIN_MARKET_UPDATES:bA,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:FA,TXT_CODE_2de92a5d:VA,TXT_CODE_PLUGIN_MARKET_BUNDLED:yA,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:HA},wA="플러그인 마켓",zA="마켓 주소",xA="플러그인 목록을 가져오는 마켓 사이트 주소",ZA="마켓 주소가 올바르지 않습니다. 쿼리, 프래그먼트, 자격 증명이 없는 http(s) 주소를 입력하세요",qA="다운로드한 파일이 마켓에 게시된 패키지와 일치하지 않습니다",QA="패키지에 잘못된 파일 경로가 있습니다",jA="제작자: {name}",WA="취소",JA="확인",_D="노드 선택",TD="다음 노드에 데몬 부분을 설치합니다",ED="다음 노드에서 데몬 부분을 제거합니다",eD="오프라인",ND="다음 노드를 갱신하지 못했습니다: {nodes}",nD='"{name}"을(를) 제거할까요?',AD="해당 설치 디렉터리는 다른 플러그인이 사용 중입니다",DD="마켓에 아직 플러그인이 없습니다",ID="패키지에 설치할 파일이 없습니다",tD="설치",LD="설치됨",sD="요약 없음",OD="새로 고침",oD="플러그인 변경 사항을 적용하려면 패널과 해당 노드를 다시 시작하세요.",RD="플러그인 검색",CD="제거",aD="제거됨",PD="이 플러그인은 다른 노드에 아직 설치되어 있습니다.",UD="마켓에 연결할 수 없습니다. 주소를 확인하세요",MD="v{version}",lD="플러그인 상세 정보",iD="플러그인 마켓으로 돌아가기",GD="상세 설명이 없습니다",KD="설치됨 v{version}",cD="게시일: {date}",XD="크기: {size} · 파일 {count}개",rD="업데이트 내역이 없습니다",dD="플러그인 또는 버전이 없거나, 승인되지 않았거나, 마켓에서 내려갔습니다",uD="Readme",SD="버전",$D="태그",mD="추가 정보",pD="플러그인 ID",vD="제작자",gD="최신",hD="Panel 플러그인",fD="Daemon 플러그인",BD="Panel + Daemon 플러그인",kD="업데이트",bD="이 플러그인에는 다른 호스트 API 또는 브라우저 SDK 버전이 필요합니다. 먼저 ElementsPanel을 업데이트하세요.",FD="설치하기 전에 노드를 선택하십시오!",VD="This plugin is bundled with the panel and cannot be uninstalled here.",yD="npm install failed. Check the network, registry and package name, then retry.",HD={TXT_CODE_PLUGIN_MARKET:wA,TXT_CODE_PLUGIN_MARKET_ADDR:zA,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:xA,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:ZA,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:qA,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:QA,TXT_CODE_PLUGIN_MARKET_BY:jA,TXT_CODE_PLUGIN_MARKET_CANCEL:WA,TXT_CODE_PLUGIN_MARKET_CONFIRM:JA,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:_D,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:TD,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:ED,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:eD,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:ND,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:nD,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:AD,TXT_CODE_PLUGIN_MARKET_EMPTY:DD,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:ID,TXT_CODE_PLUGIN_MARKET_INSTALL:tD,TXT_CODE_PLUGIN_MARKET_INSTALLED:LD,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:sD,TXT_CODE_PLUGIN_MARKET_REFRESH:OD,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:oD,TXT_CODE_PLUGIN_MARKET_SEARCH:RD,TXT_CODE_PLUGIN_MARKET_UNINSTALL:CD,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:aD,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:PD,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:UD,TXT_CODE_PLUGIN_MARKET_VERSION:MD,TXT_CODE_PLUGIN_MARKET_DETAIL:lD,TXT_CODE_PLUGIN_MARKET_BACK:iD,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:GD,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:KD,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:cD,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:XD,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:rD,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:dD,TXT_CODE_PLUGIN_MARKET_README:uD,TXT_CODE_PLUGIN_MARKET_VERSIONS:SD,TXT_CODE_PLUGIN_MARKET_TAGS:$D,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:mD,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:pD,TXT_CODE_PLUGIN_MARKET_VENDOR:vD,TXT_CODE_PLUGIN_MARKET_LATEST:gD,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:hD,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:fD,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:BD,TXT_CODE_PLUGIN_MARKET_UPDATES:kD,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:bD,TXT_CODE_2de92a5d:FD,TXT_CODE_PLUGIN_MARKET_BUNDLED:VD,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:yD},YD="Mercado de plugins",wD="Endereço do mercado",zD="Endereço do site do mercado, de onde vem a lista de plugins",xD="Endereço do mercado inválido: use um endereço http(s) sem query, fragmento ou credenciais",ZD="Os arquivos baixados não correspondem ao pacote publicado no mercado",qD="O pacote contém um caminho de arquivo inválido",QD="por {name}",jD="Cancelar",WD="Confirmar",JD="Selecionar nós",_I="Instalar a metade do daemon nestes nós",TI="Remover a metade do daemon destes nós",EI="offline",eI="Não foi possível atualizar estes nós: {nodes}",NI='Remover "{name}"?',nI="Esse diretório já é usado por outro plugin",AI="O mercado ainda não tem plugins",DI="O pacote não contém arquivos instaláveis",II="Instalar",tI="Instalado",LI="Sem resumo",sI="Atualizar",OI="Reinicie o painel e os nós afetados para que as alterações do plugin tenham efeito.",oI="Buscar plugins",RI="Desinstalar",CI="Desinstalado",aI="Este plugin ainda está instalado em outros nós.",PI="Não foi possível conectar ao mercado; verifique o endereço",UI="v{version}",MI="Detalhes do plugin",lI="Voltar ao mercado de plugins",iI="Nenhuma descrição detalhada disponível",GI="Instalada v{version}",KI="Publicado em: {date}",cI="Tamanho: {size} · {count} arquivos",XI="Nenhuma nota da versão disponível",rI="O plugin ou a versão não foi encontrado, não foi aprovado ou foi retirado do mercado",dI="Readme",uI="Versões",SI="Tags",$I="Informações adicionais",mI="ID do plugin",pI="Fornecedor",vI="Mais recente",gI="Plugin de painel",hI="Plugin de daemon",fI="Plugin de painel e daemon",BI="Novidades",kI="Este plugin requer outra versão da API do host ou do SDK do navegador. Atualize o ElementsPanel primeiro.",bI="Selecione um nó antes de instalar!",FI="This plugin is bundled with the panel and cannot be uninstalled here.",VI="npm install failed. Check the network, registry and package name, then retry.",yI={TXT_CODE_PLUGIN_MARKET:YD,TXT_CODE_PLUGIN_MARKET_ADDR:wD,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:zD,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:xD,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:ZD,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:qD,TXT_CODE_PLUGIN_MARKET_BY:QD,TXT_CODE_PLUGIN_MARKET_CANCEL:jD,TXT_CODE_PLUGIN_MARKET_CONFIRM:WD,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:JD,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:_I,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:TI,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:EI,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:eI,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:NI,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:nI,TXT_CODE_PLUGIN_MARKET_EMPTY:AI,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:DI,TXT_CODE_PLUGIN_MARKET_INSTALL:II,TXT_CODE_PLUGIN_MARKET_INSTALLED:tI,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:LI,TXT_CODE_PLUGIN_MARKET_REFRESH:sI,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:OI,TXT_CODE_PLUGIN_MARKET_SEARCH:oI,TXT_CODE_PLUGIN_MARKET_UNINSTALL:RI,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:CI,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:aI,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:PI,TXT_CODE_PLUGIN_MARKET_VERSION:UI,TXT_CODE_PLUGIN_MARKET_DETAIL:MI,TXT_CODE_PLUGIN_MARKET_BACK:lI,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:iI,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:GI,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:KI,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:cI,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:XI,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:rI,TXT_CODE_PLUGIN_MARKET_README:dI,TXT_CODE_PLUGIN_MARKET_VERSIONS:uI,TXT_CODE_PLUGIN_MARKET_TAGS:SI,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:$I,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:mI,TXT_CODE_PLUGIN_MARKET_VENDOR:pI,TXT_CODE_PLUGIN_MARKET_LATEST:vI,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:gI,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:hI,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:fI,TXT_CODE_PLUGIN_MARKET_UPDATES:BI,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:kI,TXT_CODE_2de92a5d:bI,TXT_CODE_PLUGIN_MARKET_BUNDLED:FI,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:VI},HI="Маркет плагинов",YI="Адрес маркета",wI="Адрес сайта маркета плагинов, откуда берётся список",zI="Некорректный адрес маркета: укажите http(s)-адрес без query, фрагмента и учётных данных",xI="Загруженные файлы не совпадают с пакетом, опубликованным в маркете",ZI="Пакет содержит недопустимый путь",qI="автор: {name}",QI="Отмена",jI="Подтвердить",WI="Выберите узлы",JI="Установить часть демона на эти узлы",_t="Удалить часть демона с этих узлов",Tt="не в сети",Et="Не удалось обновить эти узлы: {nodes}",et="Удалить «{name}»?",Nt="Этот каталог уже занят другим плагином",nt="В маркете пока нет плагинов",At="В пакете нет файлов для установки",Dt="Установить",It="Установлено",tt="Без описания",Lt="Обновить",st="Перезапустите панель и затронутые узлы, чтобы изменения плагина вступили в силу.",Ot="Поиск плагинов",ot="Удалить",Rt="Удалено",Ct="Этот плагин по-прежнему установлен на других узлах.",at="Не удалось подключиться к маркету, проверьте адрес",Pt="v{version}",Ut="Сведения о плагине",Mt="Назад в магазин плагинов",lt="Подробное описание отсутствует",it="Установлена v{version}",Gt="Опубликовано: {date}",Kt="Размер: {size} · Файлов: {count}",ct="Список изменений отсутствует",Xt="Плагин или версия не найдены, ещё не одобрены или сняты с публикации",rt="Readme",dt="Версии",ut="Теги",St="Дополнительная информация",$t="ID плагина",mt="Издатель",pt="Последняя",vt="Плагин панели",gt="Плагин демона",ht="Плагин панели и демона",ft="Обновления",Bt="Плагину нужна другая версия API хоста или SDK браузера. Сначала обновите ElementsPanel.",kt="Пожалуйста, выберите узел перед установкой!",bt="This plugin is bundled with the panel and cannot be uninstalled here.",Ft="npm install failed. Check the network, registry and package name, then retry.",Vt={TXT_CODE_PLUGIN_MARKET:HI,TXT_CODE_PLUGIN_MARKET_ADDR:YI,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:wI,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:zI,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:xI,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:ZI,TXT_CODE_PLUGIN_MARKET_BY:qI,TXT_CODE_PLUGIN_MARKET_CANCEL:QI,TXT_CODE_PLUGIN_MARKET_CONFIRM:jI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:WI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:JI,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:_t,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Tt,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:Et,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:et,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:Nt,TXT_CODE_PLUGIN_MARKET_EMPTY:nt,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:At,TXT_CODE_PLUGIN_MARKET_INSTALL:Dt,TXT_CODE_PLUGIN_MARKET_INSTALLED:It,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:tt,TXT_CODE_PLUGIN_MARKET_REFRESH:Lt,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:st,TXT_CODE_PLUGIN_MARKET_SEARCH:Ot,TXT_CODE_PLUGIN_MARKET_UNINSTALL:ot,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Rt,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:Ct,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:at,TXT_CODE_PLUGIN_MARKET_VERSION:Pt,TXT_CODE_PLUGIN_MARKET_DETAIL:Ut,TXT_CODE_PLUGIN_MARKET_BACK:Mt,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:lt,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:it,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:Gt,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:Kt,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:ct,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:Xt,TXT_CODE_PLUGIN_MARKET_README:rt,TXT_CODE_PLUGIN_MARKET_VERSIONS:dt,TXT_CODE_PLUGIN_MARKET_TAGS:ut,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:St,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:$t,TXT_CODE_PLUGIN_MARKET_VENDOR:mt,TXT_CODE_PLUGIN_MARKET_LATEST:pt,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:vt,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:gt,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:ht,TXT_CODE_PLUGIN_MARKET_UPDATES:ft,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:Bt,TXT_CODE_2de92a5d:kt,TXT_CODE_PLUGIN_MARKET_BUNDLED:bt,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:Ft},yt="ตลาดปลั๊กอิน",Ht="ที่อยู่ตลาด",Yt="ที่อยู่ของเว็บตลาดปลั๊กอิน ซึ่งเป็นแหล่งที่มาของรายการปลั๊กอิน",wt="ที่อยู่ตลาดไม่ถูกต้อง: ใช้ที่อยู่ http(s) ที่ไม่มี query, fragment หรือข้อมูลรับรอง",zt="ไฟล์ที่ดาวน์โหลดไม่ตรงกับแพ็กเกจที่เผยแพร่ในตลาด",xt="แพ็กเกจมีเส้นทางไฟล์ที่ไม่ถูกต้อง",Zt="โดย {name}",qt="ยกเลิก",Qt="ยืนยัน",jt="เลือกโหนด",Wt="ติดตั้งส่วนของดีมอนบนโหนดเหล่านี้",Jt="ลบส่วนของดีมอนออกจากโหนดเหล่านี้",_L="ออฟไลน์",TL="ไม่สามารถอัปเดตโหนดเหล่านี้ได้: {nodes}",EL='ต้องการถอนการติดตั้ง "{name}" หรือไม่?',eL="โฟลเดอร์ติดตั้งนี้ถูกใช้โดยปลั๊กอินอื่นแล้ว",NL="ยังไม่มีปลั๊กอินในตลาด",nL="แพ็กเกจไม่มีไฟล์ที่ติดตั้งได้",AL="ติดตั้ง",DL="ติดตั้งแล้ว",IL="ไม่มีสรุป",tL="รีเฟรช",LL="รีสตาร์ทแผงควบคุมและโหนดที่เกี่ยวข้องเพื่อให้การเปลี่ยนแปลงปลั๊กอินมีผล",sL="ค้นหาปลั๊กอิน",OL="ถอนการติดตั้ง",oL="ถอนการติดตั้งแล้ว",RL="ปลั๊กอินนี้ยังคงติดตั้งอยู่บนโหนดอื่น",CL="ไม่สามารถเชื่อมต่อตลาดได้ กรุณาตรวจสอบที่อยู่ตลาด",aL="v{version}",PL="รายละเอียดปลั๊กอิน",UL="กลับไปยังตลาดปลั๊กอิน",ML="ยังไม่มีคำอธิบายโดยละเอียด",lL="ติดตั้งแล้ว v{version}",iL="เผยแพร่เมื่อ: {date}",GL="ขนาด: {size} · {count} ไฟล์",KL="ยังไม่มีบันทึกการเปลี่ยนแปลง",cL="ไม่พบปลั๊กอินหรือเวอร์ชัน ยังไม่ได้รับอนุมัติ หรือถูกนำออกจากตลาด",XL="Readme",rL="เวอร์ชัน",dL="แท็ก",uL="ข้อมูลเพิ่มเติม",SL="ID ปลั๊กอิน",$L="ผู้พัฒนา",mL="ล่าสุด",pL="ปลั๊กอิน Panel",vL="ปลั๊กอิน Daemon",gL="ปลั๊กอิน Panel และ Daemon",hL="อัปเดต",fL="ปลั๊กอินนี้ต้องใช้ API โฮสต์หรือ SDK เบราว์เซอร์เวอร์ชันอื่น โปรดอัปเดต ElementsPanel ก่อน",BL="โปรดเลือกโหนดก่อนติดตั้ง!",kL="This plugin is bundled with the panel and cannot be uninstalled here.",bL="npm install failed. Check the network, registry and package name, then retry.",FL={TXT_CODE_PLUGIN_MARKET:yt,TXT_CODE_PLUGIN_MARKET_ADDR:Ht,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:Yt,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:wt,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:zt,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:xt,TXT_CODE_PLUGIN_MARKET_BY:Zt,TXT_CODE_PLUGIN_MARKET_CANCEL:qt,TXT_CODE_PLUGIN_MARKET_CONFIRM:Qt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:jt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:Wt,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:Jt,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:_L,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:TL,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:EL,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:eL,TXT_CODE_PLUGIN_MARKET_EMPTY:NL,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:nL,TXT_CODE_PLUGIN_MARKET_INSTALL:AL,TXT_CODE_PLUGIN_MARKET_INSTALLED:DL,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:IL,TXT_CODE_PLUGIN_MARKET_REFRESH:tL,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:LL,TXT_CODE_PLUGIN_MARKET_SEARCH:sL,TXT_CODE_PLUGIN_MARKET_UNINSTALL:OL,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:oL,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:RL,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:CL,TXT_CODE_PLUGIN_MARKET_VERSION:aL,TXT_CODE_PLUGIN_MARKET_DETAIL:PL,TXT_CODE_PLUGIN_MARKET_BACK:UL,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:ML,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:lL,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:iL,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:GL,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:KL,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:cL,TXT_CODE_PLUGIN_MARKET_README:XL,TXT_CODE_PLUGIN_MARKET_VERSIONS:rL,TXT_CODE_PLUGIN_MARKET_TAGS:dL,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:uL,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:SL,TXT_CODE_PLUGIN_MARKET_VENDOR:$L,TXT_CODE_PLUGIN_MARKET_LATEST:mL,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:pL,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:vL,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:gL,TXT_CODE_PLUGIN_MARKET_UPDATES:hL,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:fL,TXT_CODE_2de92a5d:BL,TXT_CODE_PLUGIN_MARKET_BUNDLED:kL,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:bL},VL="Eklenti marketi",yL="Market adresi",HL="Eklenti listesinin geldiği market sitesinin adresi",YL="Geçersiz market adresi: sorgu, parça veya kimlik bilgisi içermeyen bir http(s) adresi girin",wL="İndirilen dosyalar markette yayımlanan paketle eşleşmiyor",zL="Paket geçersiz bir dosya yolu içeriyor",xL="{name} tarafından",ZL="İptal",qL="Onayla",QL="Düğüm seçin",jL="Daemon kısmını bu düğümlere kur",WL="Daemon kısmını bu düğümlerden kaldır",JL="çevrimdışı",_s="Bu düğümler güncellenemedi: {nodes}",Ts='"{name}" kaldırılsın mı?',Es="Bu kurulum dizini başka bir eklenti tarafından kullanılıyor",es="Marketta henüz eklenti yok",Ns="Pakette kurulabilir dosya yok",ns="Kur",As="Kurulu",Ds="Özet yok",Is="Yenile",ts="Eklenti değişikliklerinin etkili olması için paneli ve etkilenen düğümleri yeniden başlatın.",Ls="Eklenti ara",ss="Kaldır",Os="Kaldırıldı",os="Bu eklenti diğer düğümlerde hâlâ yüklü.",Rs="Markete bağlanılamadı; market adresini kontrol edin",Cs="v{version}",as="Eklenti ayrıntıları",Ps="Eklenti mağazasına dön",Us="Ayrıntılı açıklama yok",Ms="Kurulu v{version}",ls="Yayımlanma: {date}",is="Boyut: {size} · {count} dosya",Gs="Sürüm notları yok",Ks="Eklenti veya sürüm bulunamadı, henüz onaylanmadı veya mağazadan kaldırıldı",cs="Readme",Xs="Sürümler",rs="Etiketler",ds="Ek bilgiler",us="Eklenti Kimliği",Ss="Sağlayıcı",$s="En son",ms="Panel eklentisi",ps="Daemon eklentisi",vs="Panel ve daemon eklentisi",gs="Güncellemeler",hs="Bu eklenti farklı bir ana bilgisayar API veya tarayıcı SDK sürümü gerektiriyor. Önce ElementsPanel’i güncelleyin.",fs="Lütfen yüklemeden önce bir düğüm seçin!",Bs="This plugin is bundled with the panel and cannot be uninstalled here.",ks="npm install failed. Check the network, registry and package name, then retry.",bs={TXT_CODE_PLUGIN_MARKET:VL,TXT_CODE_PLUGIN_MARKET_ADDR:yL,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:HL,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:YL,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:wL,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:zL,TXT_CODE_PLUGIN_MARKET_BY:xL,TXT_CODE_PLUGIN_MARKET_CANCEL:ZL,TXT_CODE_PLUGIN_MARKET_CONFIRM:qL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:QL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:jL,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:WL,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:JL,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:_s,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:Ts,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:Es,TXT_CODE_PLUGIN_MARKET_EMPTY:es,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:Ns,TXT_CODE_PLUGIN_MARKET_INSTALL:ns,TXT_CODE_PLUGIN_MARKET_INSTALLED:As,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:Ds,TXT_CODE_PLUGIN_MARKET_REFRESH:Is,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:ts,TXT_CODE_PLUGIN_MARKET_SEARCH:Ls,TXT_CODE_PLUGIN_MARKET_UNINSTALL:ss,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Os,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:os,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:Rs,TXT_CODE_PLUGIN_MARKET_VERSION:Cs,TXT_CODE_PLUGIN_MARKET_DETAIL:as,TXT_CODE_PLUGIN_MARKET_BACK:Ps,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:Us,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:Ms,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:ls,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:is,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:Gs,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:Ks,TXT_CODE_PLUGIN_MARKET_README:cs,TXT_CODE_PLUGIN_MARKET_VERSIONS:Xs,TXT_CODE_PLUGIN_MARKET_TAGS:rs,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:ds,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:us,TXT_CODE_PLUGIN_MARKET_VENDOR:Ss,TXT_CODE_PLUGIN_MARKET_LATEST:$s,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:ms,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:ps,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:vs,TXT_CODE_PLUGIN_MARKET_UPDATES:gs,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:hs,TXT_CODE_2de92a5d:fs,TXT_CODE_PLUGIN_MARKET_BUNDLED:Bs,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:ks},Fs="插件市场",Vs="插件市场地址",ys="插件市场网站的地址,插件列表从这里获取",Hs="插件市场地址无效:请填写不带查询参数、片段或账号密码的 http(s) 地址",Ys="下载的文件与插件市场公布的不一致,请重试",ws="插件包包含非法的文件路径",zs="作者:{name}",xs="取消",Zs="确定",qs="选择节点",Qs="为以下节点安装守护端插件",js="从以下节点移除守护端插件",Ws="离线",Js="以下节点未能完成操作:{nodes}",_O="确定要卸载「{name}」吗?",TO="安装目录已被其他插件占用",EO="插件市场里还没有插件",eO="插件包里没有可安装的文件",NO="安装",nO="已安装",AO="暂无简介",DO="刷新",IO="请重启面板和受影响的节点,使插件变更生效。",tO="搜索插件",LO="卸载",sO="已卸载",OO="此插件仍安装在其他节点上。",oO="无法连接插件市场,请检查插件市场地址",RO="v{version}",CO="插件详情",aO="返回插件市场",PO="暂无详细说明",UO="已安装 v{version}",MO="发布时间:{date}",lO="大小:{size} · {count} 个文件",iO="暂无更新说明",GO="插件或版本不存在、尚未通过审核或已下架",KO="自述",cO="版本",XO="标签",rO="更多信息",dO="插件 ID",uO="开发者",SO="最新",$O="Panel插件",mO="Daemon插件",pO="双端插件",vO="更新",gO="此插件需要其他版本的宿主 API 或浏览器 SDK,请先更新 ElementsPanel。",hO="请选择一个节点再安装!",fO="该插件是面板内置依赖,不能在此卸载",BO="npm 安装失败,请检查网络、registry 或包名后重试",kO={TXT_CODE_PLUGIN_MARKET:Fs,TXT_CODE_PLUGIN_MARKET_ADDR:Vs,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:ys,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:Hs,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:Ys,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:ws,TXT_CODE_PLUGIN_MARKET_BY:zs,TXT_CODE_PLUGIN_MARKET_CANCEL:xs,TXT_CODE_PLUGIN_MARKET_CONFIRM:Zs,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:qs,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:Qs,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:js,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:Ws,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:Js,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:_O,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:TO,TXT_CODE_PLUGIN_MARKET_EMPTY:EO,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:eO,TXT_CODE_PLUGIN_MARKET_INSTALL:NO,TXT_CODE_PLUGIN_MARKET_INSTALLED:nO,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:AO,TXT_CODE_PLUGIN_MARKET_REFRESH:DO,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:IO,TXT_CODE_PLUGIN_MARKET_SEARCH:tO,TXT_CODE_PLUGIN_MARKET_UNINSTALL:LO,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:sO,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:OO,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:oO,TXT_CODE_PLUGIN_MARKET_VERSION:RO,TXT_CODE_PLUGIN_MARKET_DETAIL:CO,TXT_CODE_PLUGIN_MARKET_BACK:aO,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:PO,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:UO,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:MO,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:lO,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:iO,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:GO,TXT_CODE_PLUGIN_MARKET_README:KO,TXT_CODE_PLUGIN_MARKET_VERSIONS:cO,TXT_CODE_PLUGIN_MARKET_TAGS:XO,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:rO,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:dO,TXT_CODE_PLUGIN_MARKET_VENDOR:uO,TXT_CODE_PLUGIN_MARKET_LATEST:SO,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:$O,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:mO,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:pO,TXT_CODE_PLUGIN_MARKET_UPDATES:vO,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:gO,TXT_CODE_2de92a5d:hO,TXT_CODE_PLUGIN_MARKET_BUNDLED:fO,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:BO},bO="插件市場",FO="插件市場位址",VO="插件市場網站的位址,插件清單從這裡取得",yO="插件市場位址無效:請填寫不帶查詢參數、片段或帳號密碼的 http(s) 位址",HO="下載的檔案與插件市場公佈的不一致,請重試",YO="插件包包含非法的檔案路徑",wO="作者:{name}",zO="取消",xO="確定",ZO="選擇節點",qO="為以下節點安裝守護端插件",QO="從以下節點移除守護端插件",jO="離線",WO="以下節點未能完成操作:{nodes}",JO="確定要卸載「{name}」嗎?",_o="安裝目錄已被其他插件佔用",To="插件市場裡還沒有插件",Eo="插件包裡沒有可安裝的檔案",eo="安裝",No="已安裝",no="暫無簡介",Ao="重新整理",Do="請重新啟動面板和受影響的節點,使外掛變更生效。",Io="搜尋插件",to="卸載",Lo="已卸載",so="此插件仍安裝在其他節點上。",Oo="無法連接插件市場,請檢查插件市場位址",oo="v{version}",Ro="外掛程式詳情",Co="返回外掛程式市場",ao="暫無詳細說明",Po="已安裝 v{version}",Uo="發佈時間:{date}",Mo="大小:{size} · {count} 個檔案",lo="暫無更新說明",io="外掛程式或版本不存在、尚未通過審核或已下架",Go="自述",Ko="版本",co="標籤",Xo="更多資訊",ro="外掛 ID",uo="開發者",So="最新",$o="Panel外掛",mo="Daemon外掛",po="雙端外掛",vo="更新",go="此外掛需要其他版本的宿主 API 或瀏覽器 SDK,請先更新 ElementsPanel。",ho="安裝前請選擇一個節點!",fo="該插件是面板內建依賴,不能在此解除安裝",Bo="npm 安裝失敗,請檢查網路、registry 或套件名稱後重試",ko={TXT_CODE_PLUGIN_MARKET:bO,TXT_CODE_PLUGIN_MARKET_ADDR:FO,TXT_CODE_PLUGIN_MARKET_ADDR_DESC:VO,TXT_CODE_PLUGIN_MARKET_ADDR_INVALID:yO,TXT_CODE_PLUGIN_MARKET_BAD_CHECKSUM:HO,TXT_CODE_PLUGIN_MARKET_BAD_PACKAGE:YO,TXT_CODE_PLUGIN_MARKET_BY:wO,TXT_CODE_PLUGIN_MARKET_CANCEL:zO,TXT_CODE_PLUGIN_MARKET_CONFIRM:xO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES:ZO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_INSTALL:qO,TXT_CODE_PLUGIN_MARKET_SELECT_NODES_UNINSTALL:QO,TXT_CODE_PLUGIN_MARKET_NODE_OFFLINE:jO,TXT_CODE_PLUGIN_MARKET_NODE_FAILED:WO,TXT_CODE_PLUGIN_MARKET_CONFIRM_UNINSTALL:JO,TXT_CODE_PLUGIN_MARKET_DIR_TAKEN:_o,TXT_CODE_PLUGIN_MARKET_EMPTY:To,TXT_CODE_PLUGIN_MARKET_EMPTY_PACKAGE:Eo,TXT_CODE_PLUGIN_MARKET_INSTALL:eo,TXT_CODE_PLUGIN_MARKET_INSTALLED:No,TXT_CODE_PLUGIN_MARKET_NO_SUMMARY:no,TXT_CODE_PLUGIN_MARKET_REFRESH:Ao,TXT_CODE_PLUGIN_MARKET_RESTART_REQUIRED:Do,TXT_CODE_PLUGIN_MARKET_SEARCH:Io,TXT_CODE_PLUGIN_MARKET_UNINSTALL:to,TXT_CODE_PLUGIN_MARKET_UNINSTALLED:Lo,TXT_CODE_PLUGIN_MARKET_UNINSTALL_REMAINING:so,TXT_CODE_PLUGIN_MARKET_UNREACHABLE:Oo,TXT_CODE_PLUGIN_MARKET_VERSION:oo,TXT_CODE_PLUGIN_MARKET_DETAIL:Ro,TXT_CODE_PLUGIN_MARKET_BACK:Co,TXT_CODE_PLUGIN_MARKET_NO_DESCRIPTION:ao,TXT_CODE_PLUGIN_MARKET_INSTALLED_VERSION:Po,TXT_CODE_PLUGIN_MARKET_PUBLISHED_AT:Uo,TXT_CODE_PLUGIN_MARKET_PACKAGE_SIZE:Mo,TXT_CODE_PLUGIN_MARKET_NO_CHANGELOG:lo,TXT_CODE_PLUGIN_MARKET_NOT_FOUND:io,TXT_CODE_PLUGIN_MARKET_README:Go,TXT_CODE_PLUGIN_MARKET_VERSIONS:Ko,TXT_CODE_PLUGIN_MARKET_TAGS:co,TXT_CODE_PLUGIN_MARKET_ADDITIONAL_INFO:Xo,TXT_CODE_PLUGIN_MARKET_PLUGIN_ID:ro,TXT_CODE_PLUGIN_MARKET_VENDOR:uo,TXT_CODE_PLUGIN_MARKET_LATEST:So,TXT_CODE_PLUGIN_MARKET_SIDE_PANEL:$o,TXT_CODE_PLUGIN_MARKET_SIDE_DAEMON:mo,TXT_CODE_PLUGIN_MARKET_SIDE_BOTH:po,TXT_CODE_PLUGIN_MARKET_UPDATES:vo,TXT_CODE_PLUGIN_MARKET_INCOMPATIBLE:go,TXT_CODE_2de92a5d:ho,TXT_CODE_PLUGIN_MARKET_BUNDLED:fo,TXT_CODE_PLUGIN_MARKET_NPM_FAILED:Bo},bo={de_de:xE,en_us:ze,es_es:wN,fr_fr:wn,ja_jp:YA,ko_kr:HD,pt_br:yI,ru_ru:Vt,th_th:FL,tr_tr:bs,zh_cn:kO,zh_tw:ko},N_=10,Wo=["console","i18n","routes","desktop"];function Jo(O){O.i18n.define(bo),O.routes.add({path:"/market/plugins",name:E("TXT_CODE_PLUGIN_MARKET"),component:xT,meta:{mainMenu:!0,permission:N_,icon:"mdi-puzzle-outline"}}),O.routes.add({path:"/market/plugins/:pluginId",name:E("TXT_CODE_PLUGIN_MARKET_DETAIL"),component:ZT,meta:{mainMenu:!1,permission:N_,breadcrumbs:[{name:E("TXT_CODE_PLUGIN_MARKET"),path:"/market/plugins",mainMenu:!0,permission:N_}]}}),O.desktop.app({id:"plugin-market",label:()=>E("TXT_CODE_PLUGIN_MARKET"),icon:"mdi-puzzle-outline",color:"#5c6bc0",route:"/market/plugins",component:zT,condition:()=>S_().isAdmin.value,initialWidth:1100,initialHeight:720})}export{Jo as apply,Wo as inject};
|