51948469c2
- Stop ignoring web/app/index.html and web/app/assets/ - Bundle index-DBKIQT7H.js from current vite build (~101MB assets) Co-authored-by: Cursor <cursoragent@cursor.com>
2 lines
56 KiB
JavaScript
2 lines
56 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/FileEditorWorkbench-CQ5v4v8u.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/editor.api2-CLbMfXfG.js","assets/editor-DX2BVZF3.css","assets/index-9ZGEqHPG.js","assets/index-DBjsRXm1.css","assets/workers-DM14Vrt9.js","assets/monaco.contribution-U90kcnmz.js","assets/VSelect-AIFszPWO.js","assets/VChip-CTgzb9sy.js","assets/VChip-DNKJRTa0.css","assets/VSelectionControl-D6-x3Otj.js","assets/VSelectionControl-CH0_Bcm2.css","assets/VSelect-ALpjlDrA.css","assets/VDialog-BBAukoFN.js","assets/VDialog-DP-kc9Gx.css","assets/VSpacer-Cu4v-Rar.js","assets/VSpacer-DfbUir7X.css","assets/VTabs-BvKoDczM.js","assets/VTabs-DjRHpLZ2.css","assets/useSnackbar-D7YOfKok.js","assets/remotePath-BY9H9-d2.js","assets/FileEditorWorkbench-BbQnTmJ9.css"])))=>i.map(i=>d[i]);
|
||
import{t as e}from"./VDataTable-mNO8ZwUg.js";import{$n as t,$t as n,Ar as r,At as i,B as a,Bt as o,Ct as s,F as c,Gn as l,It as u,Jn as d,L as f,Lt as p,M as m,Mr as h,Mt as g,N as _,Nn as v,O as y,Or as b,P as x,Pn as S,Rt as C,Sr as w,St as T,Tr as E,Un as D,V as O,Wn as k,Xn as A,Y as j,Yn as M,Zn as N,Zt as P,_ as ee,ar as F,b as te,br as I,bt as ne,dr as L,en as R,er as z,gr as re,hr as ie,j as ae,jr as oe,k as B,ln as se,lr as ce,nr as le,on as ue,or as de,ot as fe,pr as pe,q as me,qn as V,sn as he,sr as ge,st as _e,t as H,tr as ve,un as U,v as ye,vr as W,vt as be,w as xe,wt as Se,x as Ce,xt as we,y as Te,yt as Ee,zt as De}from"./index-9ZGEqHPG.js";import{t as Oe}from"./fileBrowse-D87Kx7nu.js";import{a as ke,i as G,n as Ae,o as je,r as K,t as Me}from"./remotePath-BY9H9-d2.js";import{a as Ne}from"./VSelectionControl-D6-x3Otj.js";import{n as Pe,t as Fe}from"./VRow-DBY5CCN2.js";import{t as q}from"./VSpacer-Cu4v-Rar.js";import{t as Ie}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as Le}from"./useSnackbar-D7YOfKok.js";import{t as Re}from"./VChip-CTgzb9sy.js";import{t as J}from"./VDialog-BBAukoFN.js";import{t as ze}from"./VSelect-AIFszPWO.js";import{t as Be}from"./VCheckbox-Jgl_2qoG.js";import{t as Ve}from"./useServerList-HLawwqZe.js";import{i as He}from"./validation-DMwOxx4a.js";import{t as Ue}from"./VAlert-CYAMaUR9.js";import{t as We}from"./VFileInput-B1J8Wn_c.js";function Ge(e){if(e.type===`symlink`)return`—`;let t=(e.owner??``).trim(),n=(e.group??``).trim();return t?!n||n===t?t:`${t}:${n}`:`—`}function Ke(e){if(e===`root`)return`warning`}function qe(e){let t=[];e.permissions&&t.push(e.permissions),e.mode_octal&&t.push(e.mode_octal);let n=(e.owner??``).trim(),r=(e.group??``).trim();return n&&t.push(r&&r!==n?`${n}:${r}`:n),t.join(` · `)||`—`}var Je=[{label:`文件 644`,mode:`644`,for:`file`},{label:`目录 755`,mode:`755`,for:`directory`},{label:`私密 600`,mode:`600`,for:`file`},{label:`协作 775`,mode:`775`,for:`directory`},{label:`可执行 755`,mode:`755`,for:`file`}],Ye=`docs/deploy/nexus-files-sudoers.example`;function Xe(e){let t=e.toLowerCase();return t.includes(`permission denied`)||t.includes(`operation not permitted`)||t.includes(`无法访问`)||t.includes(`无权限`)||t.includes(`无写入权限`)||t.includes(`读取失败`)||t.includes(`chmod 失败`)}function Ze(e,t){if(!t||t===`root`||e.type!==`file`)return!1;let n=e.permissions??``;if(n.length<10)return!1;let r=(e.owner??``).trim(),i=(e.group??``).trim(),a=n.slice(1,4),o=n.slice(4,7),s=n.slice(7,10);return r===t?!a.includes(`r`):(i&&i===t||!s.includes(`r`))&&!o.includes(`r`)}function Qe(){return`目标机安装示例:${Ye}(复制到 /etc/sudoers.d/nexus-files 后执行 visudo -cf 校验)`}function $e(e){if(e.isRootSsh)return null;let t=[],n=e.unreadableCount??0;if(e.lastReadDeniedPath&&t.push(`无法读取「${e.lastReadDeniedPath}」:当前 SSH 用户无权限。`),n>0&&e.sshUser&&t.push(`当前目录约 ${n} 个文件对 SSH 用户「${e.sshUser}」不可读。`),t.length>0&&(e.filesElevation===`off`?t.push(`此服务器「文件提权」已关闭,不会自动 sudo。`):e.canSudo?e.whitelistOk?t.push(`系统已自动尝试 sudo -n 提权,如仍失败请检查 sudoers 白名单。`):t.push(`已有 sudo 但白名单不完整(须含 bash、chmod、chown、tee、cat 等)。`):t.push(`请配置免密 sudo(NOPASSWD)或使用「一键配置」,或改用 root SSH 用户。`)),!t.length)return null;let r=e.filesElevation===`off`||!e.canSudo||!e.whitelistOk?` ${Qe()}`:``;return{type:!e.canSudo||e.filesElevation===`off`?`error`:`warning`,text:`${t.join(` `)}${r}`}}var et={key:0,class:`text-body-2 mb-3 text-medium-emphasis`},tt={key:1,class:`text-caption mb-4`},nt={class:`d-flex flex-wrap ga-2 mb-4`},rt={class:`d-flex align-center flex-wrap ga-2 mb-2`},it={class:`text-body-2`},at={key:0,class:`text-caption mt-1`},ot={class:`text-caption text-medium-emphasis mb-0`},st=le({__name:`FilePermissionDialog`,props:{modelValue:{type:Boolean},file:{},serverId:{},loading:{type:Boolean}},emits:[`update:modelValue`,`apply`],setup(e,{emit:n}){let r=e,i=n,a=w(``),o=w(``),s=w(``),p=w(null),g=w(!1),v=w(!1),y=V(()=>r.file?.type===`directory`),S=V(()=>r.file?.name??``),C=V(()=>r.file?qe(r.file):``),T=V(()=>{let e=r.file?.type===`directory`?`directory`:`file`;return Je.filter(t=>t.for===e||t.for===`file`)}),E=V(()=>p.value?p.value.is_root||p.value.can_sudo_nopasswd&&p.value.whitelist_ok?`success`:p.value.can_sudo_nopasswd?`warning`:`error`:`info`);re(()=>[r.modelValue,r.file],([e,t])=>{!e||!t||(a.value=t.mode_octal||``,o.value=t.owner||``,s.value=t.group&&t.group!==t.owner?t.group:``,v.value=!1,p.value=null,r.serverId&&k())});function O(e){return e===`off`?`关闭提权`:e===`always_sudo`?`始终 sudo`:`自动 sudo`}async function k(){if(r.serverId){g.value=!0;try{p.value=await u.get(`/servers/${r.serverId}/files-capability`)}catch(e){p.value={ssh_user:``,is_root:!1,files_elevation:`auto_sudo`,can_sudo_nopasswd:!1,whitelist_ok:!1,message:e instanceof Error?e.message:`检测失败`,docs_path:`docs/deploy/nexus-files-sudoers.example`}}finally{g.value=!1}}}function j(e){return t=>!!String(t||``).trim()||`${e}不能为空`}function P(e){return/^[0-7]{3,4}$/.test(String(e||``).trim())||`格式: 3–4 位八进制`}let ee=/^[a-zA-Z0-9_.-]+$/;function F(e){let t=String(e||``).trim();return t?ee.test(t)||`仅允许字母、数字、._-`:!0}function te(e){let t=String(e||``).trim();return t?o.value.trim()?ee.test(t)||`仅允许字母、数字、._-`:`请先填写属主`:!0}function I(e){a.value=e}function ne(){let e=a.value.trim();if(!/^[0-7]{3,4}$/.test(e))return;let t=o.value.trim(),n=s.value.trim(),c=y.value&&v.value;if(c){let t=r.file?.name??`该目录`;if(!window.confirm(`确认对目录「${t}」及其全部子项递归应用权限 ${e}?此操作影响范围大且不可自动撤销。`))return}i(`apply`,{mode:e,owner:t||void 0,group:n||void 0,recursive:c||void 0})}return(n,r)=>(L(),M(J,{"model-value":e.modelValue,"max-width":`520`,"onUpdate:modelValue":r[5]||=e=>i(`update:modelValue`,e)},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...r[6]||=[t(`修改权限`,-1)]]),_:1}),z(_,null,{default:W(()=>[S.value?(L(),N(`p`,et,h(S.value),1)):A(``,!0),C.value?(L(),N(`p`,tt,` 当前:`+h(C.value),1)):A(``,!0),d(`div`,nt,[(L(!0),N(l,null,pe(T.value,e=>(L(),M(Re,{key:e.mode+e.label,size:`small`,variant:`tonal`,color:`primary`,onClick:t=>I(e.mode)},{default:W(()=>[t(h(e.label),1)]),_:2},1032,[`onClick`]))),128))]),z(H,{modelValue:a.value,"onUpdate:modelValue":r[0]||=e=>a.value=e,label:`八进制权限`,variant:`outlined`,density:`compact`,placeholder:`644 / 755`,rules:[j(`权限`),P],class:`mb-2`,onKeydown:D(ne,[`enter`])},null,8,[`modelValue`,`rules`]),z(H,{modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,label:`属主(可选)`,variant:`outlined`,density:`compact`,placeholder:`www`,rules:[F],class:`mb-2`},null,8,[`modelValue`,`rules`]),z(H,{modelValue:s.value,"onUpdate:modelValue":r[2]||=e=>s.value=e,label:`属组(可选)`,variant:`outlined`,density:`compact`,placeholder:`www`,rules:[te],class:`mb-2`},null,8,[`modelValue`,`rules`]),y.value?(L(),M(Be,{key:2,modelValue:v.value,"onUpdate:modelValue":r[3]||=e=>v.value=e,label:`同时修改子项(递归 chmod/chown)`,density:`compact`,"hide-details":``,color:`warning`,class:`mb-2`},null,8,[`modelValue`])):A(``,!0),z(ae,{class:`my-4`}),d(`div`,rt,[r[8]||=d(`span`,{class:`text-caption text-medium-emphasis`},`提权能力`,-1),z(f,{size:`small`,variant:`tonal`,loading:g.value,disabled:!e.serverId,onClick:k},{default:W(()=>[...r[7]||=[t(` 检测提权能力 `,-1)]]),_:1},8,[`loading`,`disabled`])]),p.value?(L(),M(Ue,{key:3,type:E.value,variant:`tonal`,density:`compact`,class:`mb-2`},{default:W(()=>[d(`div`,it,h(p.value.message),1),p.value.ssh_user?(L(),N(`div`,at,` SSH 用户:`+h(p.value.ssh_user)+` · 策略:`+h(O(p.value.files_elevation)),1)):A(``,!0)]),_:1},8,[`type`])):A(``,!0),d(`p`,ot,[r[9]||=t(` 非 root 用户写/chmod 失败时将按服务器策略尝试 `,-1),r[10]||=d(`code`,null,`sudo -n`,-1),t(`。 `+h(b(Qe)()),1)])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:r[4]||=e=>i(`update:modelValue`,!1)},{default:W(()=>[...r[11]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,loading:e.loading,onClick:ne},{default:W(()=>[...r[12]||=[t(`应用`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),Y=w(null);function ct(){let e=V(()=>Y.value!==null),t=V(()=>Y.value?`${Y.value.mode===`cut`?`已剪切`:`已复制`} ${Y.value.paths.length} 项`:``);function n(e,t,n){if(!n.length)return!1;let r=[...new Set(n.map(e=>G(e)))];return Y.value={mode:e,serverId:t,paths:r,label:r.map(e=>e.split(`/`).pop()||e).join(`, `)},!0}function r(){Y.value=null}function i(e){return!!(Y.value&&e&&Y.value.serverId===e)}function a(e,t){let n=G(t);for(let t of e){let e=G(t);if(n===e)return`「${e.split(`/`).pop()||e}」与目标路径相同,无需粘贴`;if(n.startsWith(`${e}/`))return`不能粘贴到源目录「${e}」的内部`}return null}async function o(e){let t=Y.value;if(!t)throw Error(`剪贴板为空`);let n=G(e),i=a(t.paths,n);if(i)throw Error(i);let o=t.mode===`cut`?`move`:`copy`;await u.post(`/sync/file-clipboard`,{server_id:t.serverId,mode:o,sources:t.paths,dest_dir:n}),t.mode===`cut`&&r()}return{clipboard:Y,hasClipboard:e,clipboardSummary:t,setFromSelection:n,clear:r,canPasteOnServer:i,validatePasteTarget:a,pasteToDirectory:o}}function lt(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t===`INPUT`||t===`TEXTAREA`||e.isContentEditable}function ut(e,t,n){function r(r){if(!lt(r.target)){if(r.key===`F5`){r.preventDefault(),e.refresh();return}if(r.key===`Backspace`){r.preventDefault(),e.goUp();return}if(r.key===`F2`&&t.value.length===1){r.preventDefault(),e.renameSelection();return}if(r.key===`Delete`&&t.value.length>0&&(r.preventDefault(),e.deleteSelection()),(r.ctrlKey||r.metaKey)&&r.key.toLowerCase()===`a`){r.preventDefault(),e.selectAll();return}if((r.ctrlKey||r.metaKey)&&r.key.toLowerCase()===`c`){t.value.length>0&&(r.preventDefault(),e.copySelection());return}if((r.ctrlKey||r.metaKey)&&r.key.toLowerCase()===`x`){t.value.length>0&&(r.preventDefault(),e.cutSelection());return}(r.ctrlKey||r.metaKey)&&r.key.toLowerCase()===`v`&&n.value&&(r.preventDefault(),e.pasteClipboard())}}ce(()=>window.addEventListener(`keydown`,r)),ge(()=>window.removeEventListener(`keydown`,r))}var dt=`nexus:files:last_server_id`,ft=`nexus:files-hint-dismissed`;function pt(e,t){return`${e}:${t}`}var X=p(`files`,()=>{let e=w(null),t=w(Me),n=w([]),r=w(!1),i=w(``),a=w(null),o=w(null),s=w(!1),c=w(!1),l=w(!1),u=w(!1),d=w(!1),f=w(!1),p=new Map;function m(e,t){let n=p.get(pt(e,t));return n?Date.now()-n.at>5e3?(p.delete(pt(e,t)),null):n.items:null}function h(e,t,n){let r=pt(e,t);if(p.set(r,{items:n,at:Date.now()}),p.size>50){let e=[...p.entries()].sort((e,t)=>e[1].at-t[1].at)[0];e&&p.delete(e[0])}}function g(e,t){if(e==null){p.clear();return}if(t==null){let t=`${e}:`;for(let e of[...p.keys()])e.startsWith(t)&&p.delete(e);return}p.delete(pt(e,t))}function _(){o.value=null,s.value=!1,l.value=!1}return{selectedServer:e,currentPath:t,files:n,loading:r,browseError:i,filesCapability:a,lastReadDeniedPath:o,accessHintDismissed:s,setupSudoLoading:c,setupSudoDone:l,pageReady:u,routeReady:d,initing:f,getCached:m,setCached:h,invalidateCache:g,resetForServerChange:_}}),mt={directory:0,symlink:1,file:2};function ht(e,t,n){let r=n===`asc`?1:-1;return[...e].sort((e,n)=>{let i=mt[e.type]??9,a=mt[n.type]??9;if(i!==a)return i-a;let o=0;return o=t===`name`?e.name.localeCompare(n.name):t===`size`?(e.size??0)-(n.size??0):(e.modified??``).localeCompare(n.modified??``),o*r})}var gt=[{title:`全部`,value:``},{title:`.conf / .ini`,value:`conf,ini`},{title:`.log`,value:`log`},{title:`.sh`,value:`sh`},{title:`.py`,value:`py`},{title:`.json`,value:`json`},{title:`.yml / .yaml`,value:`yml,yaml`},{title:`.txt`,value:`txt`},{title:`.php`,value:`php`},{title:`.js / .ts`,value:`js,ts`}];function Z(e,t){if(!t)return!0;let n=e.toLowerCase();return t.split(`,`).some(e=>n.endsWith(`.${e.trim()}`))}function Q(e){let t=e.toLowerCase();return t.endsWith(`.tar.gz`)||t.endsWith(`.tgz`)||t.endsWith(`.zip`)}var _t=300*1024,vt=2*1024*1024,yt=40,bt=4,$=new Map;function xt(e,t){return`${e}:${G(t)}`}function St(e){let t=G(e),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)||`/`}function Ct(){$.clear()}function wt(e,t){let n=G(t);for(let t of[...$.keys()]){if(!t.startsWith(`${e}:`)){$.delete(t);continue}St(t.slice(`${e}:`.length))!==n&&$.delete(t)}}function Tt(e,t){$.delete(xt(e,t))}function Et(e){if(e.type!==`file`)return!1;let t=e.size??0;return t>0&&t<=307200}function Dt(e){return e!=null&&e>0&&e>2097152}function Ot(e){return typeof e==`string`?e:e.content??JSON.stringify(e,null,2)}async function kt(e,t,n=_t){let r=xt(e,t),i=$.get(r);if(i!==void 0)return i;let a=Ot(await u.post(`/sync/read-file`,{server_id:e,path:G(t),max_size:n}));return $.set(r,a),a}function At(e,t,n){let r=n.filter(Et).sort((e,t)=>(e.size??0)-(t.size??0)).slice(0,yt);if(!r.length)return;let i=0,a=async()=>{for(;i<r.length;){let n=r[i++],a=K(t,n.name),o=xt(e,a);if(!$.has(o))try{await kt(e,a)}catch{}}},o=Math.min(bt,r.length);Promise.all(Array.from({length:o},()=>a()))}function jt(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)}function Mt(e){let t=Le(),{selectedServer:n,currentPath:r}=C(X()),{selectedFiles:i,selectedAbsolutePaths:a,clearSelection:o}=e.selection,{setFromSelection:s,canPasteOnServer:c,pasteToDirectory:l}=ct(),d=w(!1),f=w(!1),p=w(!1),m=w(``),h=w(!1),g=w(!1),_=w(``),v=w(`tar.gz`),y=w([]),b=w(!1),x=w(``),S=w(`.`),T=w(!1),E=w([]),D=w(!1),O=w(``),k=e.actionLoading??w(!1),A=w(null),j=w(!1),M=w(``),N=w(null),P=w(!1),ee=w(!1),F=w(null),te=w(!1),I=w(0),ne=w(0),L=w(null);function R(e){if(e)return G(e);let t=i.value.filter(e=>e.type===`directory`);return t.length===1&&i.value.length===1?K(r.value,t[0].name):G(r.value)}let z=V(()=>{let e=R();return e===G(r.value)?`当前目录`:e});function re(e){if(!n.value)return;let r=a(e);if(!r.length){t(`请先选择文件或目录`,`warning`);return}s(`copy`,n.value,r)&&t(`已复制 ${r.length} 项`)}function ie(e){if(!n.value)return;let r=a(e);if(!r.length){t(`请先选择文件或目录`,`warning`);return}s(`cut`,n.value,r)&&t(`已剪切 ${r.length} 项`)}async function ae(r){if(!n.value){t(`请先选择服务器`,`warning`);return}if(!c(n.value)){t(`剪贴板为空或服务器不一致`,`warning`);return}let i=R(r);k.value=!0;try{await l(i),o(),e.invalidateAfterMutation(i),await e.browse({force:!0}),t(`已粘贴到 ${i}`)}catch(e){t(e instanceof Error?e.message:`粘贴失败`,`error`)}finally{k.value=!1}}async function oe(e){if(d.value=!1,!n.value){t(`请先选择服务器`,`warning`);return}let r=e.dataTransfer?.files;r?.length&&(E.value=Array.from(r),await be())}function B(t){if(te.value=!1,!L.value)return;let n=L.value;switch(t){case`open`:e.openEntry(n);break;case`copy`:re([n]);break;case`cut`:ie([n]);break;case`paste`:ae();break;case`pasteInto`:n.type===`directory`&&ae(K(r.value,n.name));break;case`edit`:e.editFile(n);break;case`preview`:e.previewFile(n);break;case`download`:ve(n);break;case`copyPath`:se(n);break;case`terminal`:e.openInTerminal();break;case`compress`:ce([n]);break;case`decompress`:le(n);break;case`rename`:me(n);break;case`chmod`:ge(n);break;case`delete`:U(n);break}}async function se(e){let n=K(r.value,e.name);try{await navigator.clipboard.writeText(n),t(`路径已复制`)}catch{t(`复制失败`,`error`)}}function ce(e){if(!n.value)return;let a=e?.length?e:i.value.length?i.value:[];if(!a.length){t(`请选择要压缩的文件或目录`,`warning`);return}y.value=a.map(e=>K(r.value,e.name));let o=a.length===1?a[0].name.replace(/\.[^.]+$/,``):`archive`;_.value=K(r.value,`${o}.tar.gz`),v.value=`tar.gz`,g.value=!0}function le(e){if(n.value){if(!Q(e.name)){t(`仅支持 .tar.gz / .tgz / .zip`,`warning`);return}x.value=K(r.value,e.name),S.value=r.value,b.value=!0}}async function ue(){if(!(!n.value||!y.value.length||!_.value)){k.value=!0;try{let r=_.value;v.value===`zip`&&!r.endsWith(`.zip`)&&(r=r.replace(/\.tar\.gz$/i,`.zip`),r.endsWith(`.zip`)||(r+=`.zip`)),await u.post(`/sync/compress`,{server_id:n.value,paths:y.value,dest:r,format:v.value}),g.value=!1,o(),e.invalidateAfterMutation(),await e.browse({force:!0}),t(`压缩完成`)}catch(e){t(e instanceof Error?e.message:`压缩失败`,`error`)}finally{k.value=!1}}}async function fe(){if(!(!n.value||!x.value)){k.value=!0;try{await u.post(`/sync/decompress`,{server_id:n.value,path:x.value,dest:S.value||`.`}),b.value=!1,e.invalidateAfterMutation(),await e.browse({force:!0}),t(`解压完成`)}catch(e){t(e instanceof Error?e.message:`解压失败`,`error`)}finally{k.value=!1}}}async function pe(){if(!n.value||!m.value)return;let i=je(m.value);if(i!==!0){t(i,`warning`);return}let a=m.value,o=K(r.value,a);k.value=!0;try{await u.post(`/sync/write-file`,{server_id:n.value,path:o,content:``}),p.value=!1,m.value=``,Tt(n.value,o),e.invalidateAfterMutation(),await e.browse({force:!0}),t(`文件已创建`),await de(),e.editorWorkbench.value?.openFile({path:o,name:a,content:``})}catch(e){t(e instanceof Error?e.message:`创建失败`,`error`)}finally{k.value=!1}}function me(e){N.value=e,M.value=e.name,j.value=!0}async function he(){if(!(!n.value||!N.value||!M.value))try{await u.post(`/sync/file-ops`,{server_id:n.value,operation:`rename`,path:K(r.value,N.value.name),new_path:K(r.value,M.value)}),j.value=!1,e.invalidateAfterMutation(),await e.browse({force:!0}),t(`重命名成功`)}catch(e){t(e instanceof Error?e.message:`重命名失败`,`error`)}}function ge(e){F.value=e,P.value=!0}async function _e(i){if(!(!n.value||!F.value)){ee.value=!0;try{await u.post(`/sync/chmod`,{server_id:n.value,path:K(r.value,F.value.name),mode:i.mode,owner:i.owner,group:i.group,recursive:i.recursive??!1}),P.value=!1,e.invalidateAfterMutation(),await e.browse({force:!0}),t(`权限已修改`)}catch(e){t(e instanceof Error?e.message:`修改权限失败`,`error`)}finally{ee.value=!1}}}async function H(){if(!n.value||!i.value.length||!confirm(`确定删除 ${i.value.length} 个文件?`))return;let a=0,s=0;for(let e of i.value)try{await u.post(`/sync/file-ops`,{server_id:n.value,operation:`delete`,path:K(r.value,e.name)}),a++}catch{s++}o(),e.invalidateAfterMutation(),await e.browse({force:!0}),s===0?t(`已删除 ${a} 项`):t(`删除完成:成功 ${a},失败 ${s}`,s>0?`warning`:`success`)}async function ve(e){if(n.value)try{let i=K(r.value,e.name),{blob:a,filename:o}=await u.download(`/sync/download`,{server_id:n.value,path:i});jt(a,o),t(`已下载 ${o}`)}catch(e){t(e instanceof Error?e.message:`下载失败`,`error`)}}async function U(e){A.value=e,T.value=!0}async function ye(){if(!(!n.value||!A.value)){k.value=!0;try{await u.post(`/sync/file-ops`,{server_id:n.value,operation:`delete`,path:K(r.value,A.value.name)}),T.value=!1,e.invalidateAfterMutation(),await e.browse({force:!0}),t(`已删除`)}catch(e){t(e instanceof Error?e.message:`删除失败`,`error`)}finally{k.value=!1}}}async function W(){if(!n.value||!O.value)return;let i=je(O.value);if(i!==!0){t(i,`warning`);return}k.value=!0;try{await u.post(`/sync/file-ops`,{server_id:n.value,operation:`mkdir`,path:K(r.value,O.value)}),h.value=!1,O.value=``,e.invalidateAfterMutation(),await e.browse({force:!0}),t(`目录已创建`)}catch(e){t(e instanceof Error?e.message:`创建失败`,`error`)}finally{k.value=!1}}async function be(){if(!(!n.value||!E.value.length)){D.value=!0;try{let i=new FormData;for(let e of E.value)i.append(`files`,e);i.append(`server_id`,String(n.value)),i.append(`remote_path`,r.value),await u.upload(`/sync/upload`,i),f.value=!1,E.value=[],e.invalidateAfterMutation(),await e.browse({force:!0}),t(`上传成功`)}catch(e){t(e instanceof Error?e.message:`上传失败`,`error`)}finally{D.value=!1}}}function xe(e){return e instanceof HTMLElement?!!e.closest(`button, a, input, .v-checkbox, .v-selection-control`):!1}function Se(e){let t=e.item;return{class:t.type===`directory`?`files-row--dir`:void 0,style:{cursor:t.type===`directory`||t.type===`symlink`?`pointer`:`default`},onClick:e=>{xe(e.target)||e.detail===1&&Ce(e,{item:t})},onDblclick:e=>{xe(e.target)||we(e,{item:t})},onContextmenu:e=>{xe(e.target)||Te(e,{item:t})}}}function Ce(t,{item:n}){(n.type===`directory`||n.type===`symlink`)&&e.openEntry(n)}function we(t,{item:n}){n.type===`file`&&e.editFile(n)}function Te(e,{item:t}){e.preventDefault(),L.value=t,I.value=e.clientX,ne.value=e.clientY,te.value=!0}return{dropActive:d,showUpload:f,showNewFile:p,newFileName:m,showMkdir:h,showCompress:g,compressDest:_,compressFormat:v,compressPaths:y,showDecompress:b,decompressSource:x,decompressDest:S,showFileDelete:T,uploadFiles:E,uploading:D,mkdirName:O,actionLoading:k,deletingFile:A,showRename:j,newName:M,renamingFile:N,showChmod:P,chmodLoading:ee,chmodFile:F,showContextMenu:te,contextX:I,contextY:ne,contextFile:L,copyToClipboard:re,cutToClipboard:ie,pasteClipboard:ae,onDropFiles:oe,contextAction:B,openCompressDialog:ce,openDecompressDialog:le,doCompress:ue,doDecompress:fe,doNewFile:pe,startRename:me,doRename:he,startChmod:ge,doChmod:_e,batchDelete:H,downloadFile:ve,confirmDeleteFile:U,doDeleteFile:ye,doMkdir:W,doUpload:be,fileRowProps:Se,pasteDestLabel:z}}var Nt=0,Pt=null,Ft=``;function It(e){return e.includes(`No such file or directory`)||e.includes(`not a directory`)}function Lt(e,t){return It(e)?`路径不存在:${t},请检查服务器「target_path」设置`:e.includes(`Permission denied`)||e.includes(`Operation not permitted`)?`无读取权限(${t})`:e}function Rt(e){let t=Le(),n=De(),r=o(),i=X(),{selectedServer:a,currentPath:s,files:c,loading:l,browseError:d,pageReady:f,filesCapability:p}=C(i);function m(){let e={...n.query};a.value?(e.server_id=String(a.value),e.path=s.value===`/www/wwwroot`?void 0:s.value):(delete e.server_id,delete e.path),r.replace({query:e})}let h=V(()=>f.value?a.value?d.value?d.value:e?.value.trim()?`无匹配文件`:p.value?.is_root?`目录为空(${s.value}),可在上方修改路径或到「服务器」核对 target_path`:`目录为空(${s.value})`:`请先选择服务器`:`正在加载…`);async function g(e){if(!a.value)return;let n=G(s.value),r=a.value,o=`${r}:${n}`;if(!e?.force){let e=i.getCached(r,n);if(e){c.value=e,d.value=``,l.value=!1,m();return}}if(Pt&&Ft===o)return Pt;Ft=o;let f=++Nt;return l.value=!0,s.value=n,Pt=(async()=>{try{let e=await u.post(`/sync/browse`,{server_id:r,path:n});if(f!==Nt)return;let{items:a,error:o}=Oe(e);if(o&&It(o)&&n!==`/`){d.value=``,l.value=!1;let e=ke(n);if(e){t(`路径 "${n}" 不存在,已自动跳转到上级目录`,`info`),s.value=e,g();return}}d.value=o?Lt(o,n):``,o&&!It(o)&&t(Lt(o,n),`warning`),c.value=a,o||i.setCached(r,n,a),r&&a.length&&(wt(r,n),At(r,n,a))}catch{if(f!==Nt)return;c.value=[],t(`浏览目录失败`,`error`)}finally{f===Nt&&(l.value=!1,m()),Ft===o&&(Pt=null,Ft=``)}})(),Pt}function _(){if(!a.value){t(`请先选择服务器`,`warning`);return}s.value=G(s.value),i.invalidateCache(a.value,s.value),g({force:!0})}function v(e){if(!a.value)return;let t=e??s.value;i.invalidateCache(a.value,G(t)),Ct()}return{emptyHint:h,browse:g,browseCurrent:_,invalidateAfterMutation:v}}function zt(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`:`—`}function Bt(e){let t=Le(),{selectedServer:n,currentPath:r,lastReadDeniedPath:i,accessHintDismissed:a}=C(X()),o=w(!1),s=w(``),c=w(``),l=w(!1),u=w(null);function d(e,n){return Dt(e.size)?(t(`文件超过 2MB(${zt(e.size)}),无法${n},请下载或使用终端`,`warning`),!0):!1}function f(t){n.value&&t&&Tt(n.value,t),e.invalidateAfterMutation(),e.browse({force:!0})}async function p(e){if(!n.value||d(e,`查看`))return;let u=K(r.value,e.name);s.value=e.name,c.value=``,l.value=!0,o.value=!0,(e.size??0)>307200&&t(`文件较大(${zt(e.size)}),正在加载…`,`info`);try{c.value=await kt(n.value,u,2097152)||`(空文件)`}catch(n){let r=n instanceof Error?n.message:`读取失败`;c.value=r,Xe(r)&&(i.value=e.name,a.value=!1),t(r,`error`)}finally{l.value=!1}}async function m(o){if(n.value&&!d(o,`编辑`)){(o.size??0)>307200&&t(`文件较大(${zt(o.size)}),正在加载…`,`info`),e.actionLoading.value=!0;try{let e=K(r.value,o.name),t=await kt(n.value,e,vt);await de(),u.value?.openFile({path:e,name:o.name,content:t})}catch(e){let n=e instanceof Error?e.message:`读取失败`;Xe(n)&&(i.value=o.name,a.value=!1),t(n,`error`)}finally{e.actionLoading.value=!1}}}return{showPreview:o,previewTitle:s,previewContent:c,previewLoading:l,editorWorkbench:u,previewFile:p,editFile:m,onEditorSaved:f,formatSize:zt}}function Vt(e){let t=Le(),n=De(),r=o(),{servers:i,loadServers:a}=Ve(),s=X(),{selectedServer:c,currentPath:l,pageReady:u,routeReady:d,initing:f,accessHintDismissed:p}=C(s),m=V(()=>Ae(l.value)),h=V(()=>ke(l.value)!==null);function g(e){if(e==null)return Me;let t=i.value.find(t=>t.id===e)?.target_path?.trim();return t?G(t):Me}function _(){let e=n.query.path;return typeof e==`string`&&e.trim()?G(e):g(c.value)}function v(){let e=n.query.server_id;if(e){let t=Number(e);if(Number.isFinite(t)&&i.value.some(e=>e.id===t))return t}let t=sessionStorage.getItem(dt);if(t){let e=Number(t);if(Number.isFinite(e)&&i.value.some(t=>t.id===e))return e}return i.value[0]?.id??null}function y(n){if(!c.value){t(`请先选择服务器`,`warning`);return}l.value=G(n),e.clearSelection(),e.browse()}function b(e){if(e.type===`directory`){y(K(l.value,e.name));return}if(e.type===`symlink`){let n=e.link_target?.trim();n?.startsWith(`/`)?y(n):t(n?`符号链接 → ${n}`:`相对符号链接(请在终端中打开)`,`info`)}}function x(){let e=ke(l.value);e!=null&&y(e)}function S(e){let t=m.value[e];t&&!t.disabled&&y(t.path)}function w(){c.value&&r.push({path:`/terminal`,query:{server_id:String(c.value),path:l.value||`/`}})}function T(){f.value||(c.value&&sessionStorage.setItem(dt,String(c.value)),s.invalidateCache(),l.value=g(c.value),e.clearSelection(),s.resetForServerChange(),sessionStorage.removeItem(ft),e.refreshFilesCapability(),e.browse({force:!0}))}return ce(async()=>{f.value=!0;try{if(await a(),sessionStorage.getItem(`nexus:files-hint-dismissed`)&&(p.value=!0),!i.value.length){t(`暂无可用服务器,请先在「服务器」页添加`,`warning`),u.value=!0;return}let r=v();if(r==null){u.value=!0;return}c.value=r;let o=n.query.path;l.value=typeof o==`string`&&o?G(o):g(r),await e.refreshFilesCapability(),await e.browse(),u.value=!0,d.value=!0}finally{f.value=!1}}),re(()=>n.query.server_id,t=>{d.value&&t&&Number(t)!==c.value&&(c.value=Number(t),l.value=_(),s.resetForServerChange(),e.refreshFilesCapability(),e.browse({force:!0}))}),re(()=>n.query.path,()=>{if(!d.value||!c.value)return;let t=_();t!==G(l.value)&&(l.value=t,e.clearSelection(),e.browse())}),{serverList:i,breadcrumbs:m,canGoUp:h,navigateToPath:y,openEntry:b,goUp:x,onBreadcrumbClick:S,openInTerminal:w,onServerChange:T,defaultPathForServer:g}}function Ht(e){let t=Le(),{selectedServer:n,files:r,browseError:i,filesCapability:a,lastReadDeniedPath:o,accessHintDismissed:s,setupSudoLoading:c,setupSudoDone:l}=C(X()),d=V(()=>a.value?.ssh_user??null),f=V(()=>{let e=d.value;return e?r.value.filter(t=>Ze(t,e)).length:0}),p=V(()=>{if(s.value||!n.value||i.value&&It(i.value))return null;let e=a.value;return $e({sshUser:e?.ssh_user,canSudo:e?.can_sudo_nopasswd??!1,whitelistOk:e?.whitelist_ok??!1,isRootSsh:e?.is_root??!1,filesElevation:e?.files_elevation,capabilityMessage:e?.message,lastReadDeniedPath:o.value,unreadableCount:f.value})});function m(){s.value=!0,sessionStorage.setItem(ft,`1`)}async function h(){if(!n.value){a.value=null;return}try{a.value=await u.get(`/servers/${n.value}/files-capability`)}catch{a.value=null}}async function g(){if(n.value){c.value=!0;try{let r=await u.post(`/servers/${n.value}/setup-files-sudo`,{});l.value=!0,t(r.message||`sudoers 配置成功,文件管理器现在可自动提权`,`success`),m(),await h(),await e.browse({force:!0})}catch(e){t(`一键配置失败:${e instanceof Error?e.message:`配置失败`}`,`error`)}finally{c.value=!1}}}return{sshUserForFiles:d,filesAccessHint:p,dismissFilesAccessHint:m,refreshFilesCapability:h,setupFilesSudo:g}}function Ut(){let{currentPath:e}=C(X()),t=w([]),n=V(()=>t.value.length);function r(){t.value=[]}function i(n){return(n?.length?n:t.value).map(t=>K(e.value,t.name))}return{selectedFiles:t,selectedFileCount:n,clearSelection:r,selectedAbsolutePaths:i}}function Wt(){let e=w(``),t=w(``),n=w(`name`),r=[{title:`名称`,value:`name`},{title:`大小`,value:`size`},{title:`修改时间`,value:`modified`}],{selectedServer:i,currentPath:a,files:o,loading:s,browseError:c,pageReady:l,setupSudoLoading:u,setupSudoDone:d}=C(X()),f=Ut(),{selectedFiles:p,selectedFileCount:m,clearSelection:h}=f,{emptyHint:g,browse:_,browseCurrent:v,invalidateAfterMutation:y}=Rt(e),b=Ht({browse:_}),{sshUserForFiles:x,filesAccessHint:S,dismissFilesAccessHint:T,setupFilesSudo:E}=b,D=Vt({browse:_,refreshFilesCapability:b.refreshFilesCapability,clearSelection:h}),O=w(!1),k=Bt({browse:_,invalidateAfterMutation:y,actionLoading:O}),A=Mt({browse:_,invalidateAfterMutation:y,selection:f,openEntry:D.openEntry,editFile:k.editFile,previewFile:k.previewFile,openInTerminal:D.openInTerminal,editorWorkbench:k.editorWorkbench,actionLoading:O}),{hasClipboard:j,clipboardSummary:M,canPasteOnServer:N}=ct(),P=V(()=>N(i.value)),ee=V(()=>{let r=ht(o.value,n.value,`asc`),i=t.value;i&&(r=r.filter(e=>Z(e.name,i)));let a=e.value.trim().toLowerCase();return a&&(r=r.filter(e=>e.name.toLowerCase().includes(a))),r}),F=V(()=>{let e=o.value.filter(e=>e.type===`directory`).length,t=o.value.filter(e=>e.type===`file`).length,n=o.value.filter(e=>e.type===`symlink`).length,r=o.value.filter(Et).length,i=[`${e} 个目录`,`${t} 个文件`];return n&&i.push(`${n} 个链接`),r&&i.push(`${r} 个 ≤300KB 可预加载`),`${i.join(`,`)} · ${a.value}`});function te(e){return Q(e)}function I(e){return e.type===`directory`?`mdi-folder`:e.type===`symlink`?`mdi-link-variant`:`mdi-file-outline`}function ne(e){return e.type===`directory`?`amber`:e.type===`symlink`?`teal`:`blue`}function L(e){return e.type===`file`}return ut({refresh:v,goUp:D.goUp,renameSelection:()=>{p.value.length===1&&A.startRename(p.value[0])},deleteSelection:()=>{p.value.length>0&&A.batchDelete()},selectAll:()=>{p.value=[...ee.value]},copySelection:()=>A.copyToClipboard(),cutSelection:()=>A.cutToClipboard(),pasteClipboard:()=>{A.pasteClipboard()}},p,P),{FILE_EXT_FILTERS:gt,validatePathSegment:je,required:He,fileFilter:e,extFilter:t,sortBy:n,sortOptions:r,selectedServer:i,currentPath:a,loading:s,browseError:c,pageReady:l,setupSudoLoading:u,setupSudoDone:d,serverList:D.serverList,onServerChange:D.onServerChange,browseCurrent:v,filesAccessHint:S,dismissFilesAccessHint:T,setupFilesSudo:E,sshUserForFiles:x,statusSummary:F,hasClipboard:j,clipboardSummary:M,pasteDestLabel:A.pasteDestLabel,canPasteHere:P,breadcrumbs:D.breadcrumbs,onBreadcrumbClick:D.onBreadcrumbClick,canGoUp:D.canGoUp,goUp:D.goUp,selectedFiles:p,selectedFileCount:m,displayedFiles:ee,fileHeaders:[{title:`名称`,key:`name`},{title:`归属`,key:`owner`,width:110,sortable:!1},{title:`大小`,key:`size`,width:120},{title:`修改时间`,key:`modified`,width:180},{title:`操作`,key:`actions`,width:200,align:`end`}],fileRowProps:A.fileRowProps,dropActive:A.dropActive,onDropFiles:A.onDropFiles,emptyHint:g,entryIcon:I,entryIconColor:ne,isEntryLikelyUnreadable:Ze,formatOwnerChip:Ge,ownerChipColor:Ke,permissionTooltip:qe,formatSize:k.formatSize,isRegularFile:L,isArchiveName:te,showUpload:A.showUpload,uploadFiles:A.uploadFiles,uploading:A.uploading,doUpload:A.doUpload,showNewFile:A.showNewFile,newFileName:A.newFileName,doNewFile:A.doNewFile,showMkdir:A.showMkdir,mkdirName:A.mkdirName,doMkdir:A.doMkdir,showFileDelete:A.showFileDelete,deletingFile:A.deletingFile,doDeleteFile:A.doDeleteFile,showRename:A.showRename,newName:A.newName,doRename:A.doRename,showChmod:A.showChmod,chmodFile:A.chmodFile,chmodLoading:A.chmodLoading,doChmod:A.doChmod,showCompress:A.showCompress,compressDest:A.compressDest,compressFormat:A.compressFormat,compressPaths:A.compressPaths,doCompress:A.doCompress,showDecompress:A.showDecompress,decompressSource:A.decompressSource,decompressDest:A.decompressDest,doDecompress:A.doDecompress,showContextMenu:A.showContextMenu,contextX:A.contextX,contextY:A.contextY,contextFile:A.contextFile,contextAction:A.contextAction,actionLoading:O,batchDelete:A.batchDelete,openCompressDialog:A.openCompressDialog,showPreview:k.showPreview,previewTitle:k.previewTitle,previewContent:k.previewContent,previewLoading:k.previewLoading,editorWorkbench:k.editorWorkbench,onEditorSaved:k.onEditorSaved,navigateToPath:D.navigateToPath,pasteClipboard:A.pasteClipboard,editFile:k.editFile,previewFile:k.previewFile,downloadFile:A.downloadFile,confirmDeleteFile:A.confirmDeleteFile,openInTerminal:D.openInTerminal}}var Gt=U({divider:[Number,String],...se()},`VBreadcrumbsDivider`),Kt=ue()({name:`VBreadcrumbsDivider`,props:Gt(),setup(e,{slots:t}){return R(()=>d(`li`,{"aria-hidden":`true`,class:r([`v-breadcrumbs-divider`,e.class]),style:oe(e.style)},[t?.default?.()??e.divider])),{}}}),qt=U({active:Boolean,activeClass:String,activeColor:String,color:String,disabled:Boolean,title:String,...se(),...S(T(),[`width`,`maxWidth`]),...a(),...i({tag:`li`})},`VBreadcrumbsItem`),Jt=ue()({name:`VBreadcrumbsItem`,props:qt(),setup(e,{slots:t,attrs:n}){let i=O(e,n),a=V(()=>e.active||i.isActive?.value),{dimensionStyles:o}=s(e),{textColorClasses:c,textColorStyles:l}=we(()=>a.value?e.activeColor:e.color);return R(()=>z(e.tag,{class:r([`v-breadcrumbs-item`,{"v-breadcrumbs-item--active":a.value,"v-breadcrumbs-item--disabled":e.disabled,[`${e.activeClass}`]:a.value&&e.activeClass},c.value,e.class]),style:oe([l.value,o.value,e.style]),"aria-current":a.value?`page`:void 0},{default:()=>[i.isLink.value?d(`a`,F({class:`v-breadcrumbs-item--link`,onClick:i.navigate.value},i.linkProps),[t.default?.()??e.title]):t.default?.()??e.title]})),{}}}),Yt=U({activeClass:String,activeColor:String,bgColor:String,color:String,disabled:Boolean,divider:{type:String,default:`/`},icon:n,items:{type:Array,default:()=>[]},...se(),...fe(),...be(),...i({tag:`ul`})},`VBreadcrumbs`),Xt=ue()({name:`VBreadcrumbs`,props:Yt(),setup(e,{slots:t}){let{backgroundColorClasses:n,backgroundColorStyles:i}=ne(()=>e.bgColor),{densityClasses:a}=_e(e),{roundedClasses:o}=Ee(e);he({VBreadcrumbsDivider:{divider:E(()=>e.divider)},VBreadcrumbsItem:{activeClass:E(()=>e.activeClass),activeColor:E(()=>e.activeColor),color:E(()=>e.color),disabled:E(()=>e.disabled)}});let s=V(()=>e.items.map(e=>typeof e==`string`?{item:{title:e},raw:e}:{item:e,raw:e}));return R(()=>{let c=!!(t.prepend||e.icon);return z(e.tag,{class:r([`v-breadcrumbs`,n.value,a.value,o.value,e.class]),style:oe([i.value,e.style])},{default:()=>[c&&d(`li`,{key:`prepend`,class:`v-breadcrumbs__prepend`},[t.prepend?z(Se,{key:`prepend-defaults`,disabled:!e.icon,defaults:{VIcon:{icon:e.icon,start:!0}}},t.prepend):z(j,{key:`prepend-icon`,start:!0,icon:e.icon},null)]),s.value.map(({item:e,raw:n},r,i)=>d(l,null,[t.item?.({item:e,index:r})??z(Jt,F({key:r,disabled:r>=i.length-1},typeof e==`string`?{title:e}:e),{default:t.title?()=>t.title?.({item:e,index:r}):void 0}),r<i.length-1&&z(Kt,null,{default:t.divider?()=>t.divider?.({item:n,index:r}):void 0})])),t.default?.()]})}),{}}}),Zt=U({id:String,interactive:Boolean,text:String,...v(te({closeOnBack:!1,location:`end`,locationStrategy:`connected`,eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:`auto`,scrim:!1,scrollStrategy:`reposition`,transition:null}),[`absolute`,`retainFocus`,`captureFocus`,`disableInitialFocus`])},`VTooltip`),Qt=ue()({name:`VTooltip`,props:Zt(),emits:{"update:modelValue":e=>!0},setup(e,{slots:t}){let n=P(e,`modelValue`),{scopeId:r}=Ce(),i=ie(),a=E(()=>e.id||`v-tooltip-${i}`),o=w(),s=V(()=>e.location.split(` `).length>1?e.location:e.location+` center`),c=V(()=>e.origin===`auto`||e.origin===`overlap`||e.origin.split(` `).length>1||e.location.split(` `).length>1?e.origin:e.origin+` center`),l=E(()=>e.transition==null?n.value?`scale-transition`:`fade-transition`:e.transition),u=V(()=>F({"aria-describedby":a.value},e.activatorProps));return R(()=>{let i=Te.filterProps(e);return z(Te,F({ref:o,class:[`v-tooltip`,{"v-tooltip--interactive":e.interactive},e.class],style:e.style,id:a.value},i,{modelValue:n.value,"onUpdate:modelValue":e=>n.value=e,transition:l.value,absolute:!0,location:s.value,origin:c.value,role:`tooltip`,activatorProps:u.value,_disableGlobalStack:!0},r),{activator:t.activator,default:(...n)=>t.default?.(...n)??e.text})}),ye({},o)}}),$t={class:`d-flex flex-wrap align-center justify-space-between ga-2`},en={class:`text-caption text-medium-emphasis mb-2 d-flex flex-wrap align-center ga-2`},tn={class:`text-body-2 mr-4`},nn={class:`d-flex align-center ga-2 min-w-0`},rn={class:`min-w-0`},an={key:0,class:`text-caption text-medium-emphasis text-truncate`},on={class:`text-medium-emphasis`},sn={class:`text-medium-emphasis`},cn={class:`d-flex ga-1`},ln={key:0,class:`text-center text-medium-emphasis py-8`},un={key:0,class:`text-caption mt-2 text-disabled`},dn={class:`text-body-2 mb-3`},fn={class:`text-body-2 mb-2 text-truncate`},pn={class:`text-truncate`},mn={key:1,class:`files-preview-body text-body-2`},hn=Ie(le({__name:`FilesPage`,setup(n){let i=ve(()=>g(()=>import(`./FileEditorWorkbench-CQ5v4v8u.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]))),{FILE_EXT_FILTERS:a,validatePathSegment:o,required:s,fileFilter:l,extFilter:u,sortBy:p,sortOptions:v,selectedServer:S,currentPath:C,loading:w,browseError:T,pageReady:E,setupSudoLoading:O,setupSudoDone:P,serverList:te,onServerChange:ne,browseCurrent:R,filesAccessHint:re,dismissFilesAccessHint:ie,setupFilesSudo:oe,sshUserForFiles:se,statusSummary:ce,hasClipboard:le,clipboardSummary:ue,pasteDestLabel:de,canPasteHere:fe,breadcrumbs:pe,onBreadcrumbClick:V,canGoUp:he,goUp:ge,selectedFiles:_e,selectedFileCount:U,displayedFiles:ye,fileHeaders:be,fileRowProps:Se,dropActive:Ce,onDropFiles:we,emptyHint:Te,entryIcon:Ee,entryIconColor:De,isEntryLikelyUnreadable:Oe,formatOwnerChip:ke,ownerChipColor:G,permissionTooltip:Ae,formatSize:je,isRegularFile:K,isArchiveName:Me,showUpload:Ie,uploadFiles:Le,uploading:Be,doUpload:Ve,showNewFile:He,newFileName:Ge,doNewFile:Ke,showMkdir:qe,mkdirName:Je,doMkdir:Ye,showFileDelete:Xe,deletingFile:Ze,doDeleteFile:Qe,showRename:$e,newName:et,doRename:tt,showChmod:nt,chmodFile:rt,chmodLoading:it,doChmod:at,showCompress:ot,compressDest:Y,compressFormat:ct,compressPaths:lt,doCompress:ut,showDecompress:dt,decompressSource:ft,decompressDest:pt,doDecompress:X,showContextMenu:mt,contextX:ht,contextY:gt,contextFile:Z,contextAction:Q,actionLoading:_t,batchDelete:vt,openCompressDialog:yt,showPreview:bt,previewTitle:$,previewContent:xt,previewLoading:St,editorWorkbench:Ct,onEditorSaved:wt,navigateToPath:Tt,pasteClipboard:Et,editFile:Dt,previewFile:Ot,downloadFile:kt,confirmDeleteFile:At,openInTerminal:jt}=Wt();return(n,g)=>(L(),M(Ne,{fluid:``,class:`pa-6`},{default:W(()=>[z(m,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4 pa-4`},{default:W(()=>[z(Fe,{align:`center`,dense:``},{default:W(()=>[z(Pe,{cols:`12`,sm:`4`},{default:W(()=>[z(ze,{modelValue:b(S),"onUpdate:modelValue":[g[0]||=e=>I(S)?S.value=e:null,b(ne)],items:b(te),"item-title":`name`,"item-value":`id`,label:`选择服务器`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-server`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`])]),_:1}),z(Pe,{cols:`12`,sm:`4`},{default:W(()=>[z(H,{modelValue:b(C),"onUpdate:modelValue":g[1]||=e=>I(C)?C.value=e:null,label:`路径`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-folder`,"append-inner-icon":`mdi-arrow-right`,"onClick:appendInner":b(R),onKeydown:D(b(R),[`enter`])},null,8,[`modelValue`,`onClick:appendInner`,`onKeydown`])]),_:1}),z(Pe,{cols:`12`,sm:`3`},{default:W(()=>[z(H,{modelValue:b(l),"onUpdate:modelValue":g[2]||=e=>I(l)?l.value=e:null,label:`筛选文件名`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-magnify`,clearable:``,"hide-details":``},null,8,[`modelValue`])]),_:1}),z(Pe,{cols:`12`,sm:`3`},{default:W(()=>[z(ze,{modelValue:b(u),"onUpdate:modelValue":g[3]||=e=>I(u)?u.value=e:null,items:b(a),"item-title":`title`,"item-value":`value`,label:`类型`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``},null,8,[`modelValue`,`items`])]),_:1}),z(Pe,{cols:`12`,sm:`2`},{default:W(()=>[z(ze,{modelValue:b(p),"onUpdate:modelValue":g[4]||=e=>I(p)?p.value=e:null,items:b(v),"item-title":`title`,"item-value":`value`,label:`排序`,variant:`outlined`,density:`compact`,"hide-details":``},null,8,[`modelValue`,`items`])]),_:1}),z(Pe,{cols:`12`,class:`d-flex ga-2 flex-wrap justify-end`},{default:W(()=>[z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-upload`,onClick:g[5]||=e=>Ie.value=!0},{default:W(()=>[...g[58]||=[t(`上传`,-1)]]),_:1}),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-file-plus`,disabled:!b(S),onClick:g[6]||=e=>He.value=!0},{default:W(()=>[...g[59]||=[t(`新建文件`,-1)]]),_:1},8,[`disabled`]),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-folder-plus`,onClick:g[7]||=e=>qe.value=!0},{default:W(()=>[...g[60]||=[t(`新建目录`,-1)]]),_:1}),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-zip-box`,disabled:!b(S)||!b(U),onClick:g[8]||=e=>b(yt)()},{default:W(()=>[...g[61]||=[t(` 压缩 `,-1)]]),_:1},8,[`disabled`]),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-content-paste`,disabled:!b(fe),onClick:g[9]||=()=>b(Et)()},{default:W(()=>[...g[62]||=[t(` 粘贴 `,-1)]]),_:1},8,[`disabled`]),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-arrow-up`,disabled:!b(he),onClick:b(ge)},{default:W(()=>[...g[63]||=[t(` 上级 `,-1)]]),_:1},8,[`disabled`,`onClick`]),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-refresh`,onClick:b(R)},{default:W(()=>[...g[64]||=[t(`刷新`,-1)]]),_:1},8,[`onClick`]),z(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-console`,disabled:!b(S),onClick:b(jt)},{default:W(()=>[...g[65]||=[t(` 终端 `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:1})]),_:1})]),_:1}),b(re)?(L(),M(Ue,{key:0,type:b(re).type,variant:`tonal`,closable:``,prominent:``,density:`comfortable`,class:`mb-4`,icon:`mdi-shield-lock-outline`,"onClick:close":b(ie)},{default:W(()=>[d(`div`,$t,[d(`span`,null,h(b(re).text.split(`目标机安装示例`)[0].trim()),1),b(se)&&b(se)!==`root`?(L(),M(f,{key:0,size:`small`,variant:`flat`,color:`primary`,"prepend-icon":`mdi-auto-fix`,loading:b(O),disabled:b(P),onClick:k(b(oe),[`stop`])},{default:W(()=>[t(h(b(P)?`已配置`:`一键配置 sudo 权限`),1)]),_:1},8,[`loading`,`disabled`,`onClick`])):A(``,!0)])]),_:1},8,[`type`,`onClick:close`])):A(``,!0),d(`div`,en,[d(`span`,null,h(b(ce)),1),b(T)?(L(),M(Re,{key:0,size:`x-small`,color:`warning`,variant:`tonal`},{default:W(()=>[t(h(b(T)),1)]),_:1})):A(``,!0),b(le)?(L(),M(Re,{key:1,size:`x-small`,color:`info`,variant:`tonal`,class:`cursor-pointer`,onClick:g[10]||=()=>b(Et)()},{default:W(()=>[t(h(b(ue))+` → `+h(b(de))+` · Ctrl+V 粘贴 `,1)]),_:1})):A(``,!0)]),z(Xt,{items:b(pe),class:`pa-0 mb-2`},{item:W(({item:e,index:n})=>[z(Jt,{disabled:e.disabled,class:r({"text-primary":!e.disabled,"cursor-pointer":!e.disabled}),onClick:e=>b(V)(n)},{default:W(()=>[t(h(e.title),1)]),_:2},1032,[`disabled`,`class`,`onClick`])]),divider:W(()=>[...g[66]||=[t(`/`,-1)]]),_:1},8,[`items`]),b(U)>0?(L(),M(m,{key:1,class:`mb-4`,color:`primary`,variant:`tonal`,rounded:`lg`},{default:W(()=>[z(_,{class:`d-flex align-center py-2`},{default:W(()=>[d(`span`,tn,`已选择 `+h(b(U))+` 个文件`,1),z(q),z(f,{size:`small`,variant:`text`,color:`error`,onClick:b(vt)},{default:W(()=>[...g[67]||=[t(`批量删除`,-1)]]),_:1},8,[`onClick`]),z(f,{size:`small`,variant:`text`,onClick:g[11]||=e=>_e.value=[]},{default:W(()=>[...g[68]||=[t(`取消选择`,-1)]]),_:1})]),_:1})]),_:1})):A(``,!0),z(m,{elevation:`0`,border:``,rounded:`lg`,class:r({"files-drop-active":b(Ce)}),onDragenter:g[13]||=k(e=>Ce.value=!0,[`prevent`]),onDragover:g[14]||=k(e=>Ce.value=!0,[`prevent`]),onDragleave:g[15]||=k(e=>Ce.value=!1,[`prevent`]),onDrop:k(b(we),[`prevent`])},{default:W(()=>[z(e,{modelValue:b(_e),"onUpdate:modelValue":g[12]||=e=>I(_e)?_e.value=e:null,items:b(ye),headers:b(be),loading:b(w),"show-select":``,"return-object":``,hover:``,density:`comfortable`,"item-value":`name`,"row-props":b(Se)},{"item.name":W(({item:e})=>[d(`div`,nn,[z(j,{color:b(De)(e),size:`20`},{default:W(()=>[t(h(b(Ee)(e)),1)]),_:2},1032,[`color`]),b(Oe)(e,b(se))?(L(),M(j,{key:0,size:`18`,color:`warning`,title:`当前 SSH 用户可能无法读取`},{default:W(()=>[...g[69]||=[t(` mdi-shield-lock `,-1)]]),_:1})):A(``,!0),d(`div`,rn,[d(`span`,{class:r({"font-weight-medium":e.type===`directory`})},h(e.name),3),e.type===`symlink`&&e.link_target?(L(),N(`div`,an,` → `+h(e.link_target),1)):A(``,!0)])])]),"item.owner":W(({item:e})=>[z(Qt,{text:b(Ae)(e),location:`top`},{activator:W(({props:n})=>[z(Re,F(n,{size:`small`,variant:`tonal`,color:b(G)(e.owner||``),class:`text-none`}),{default:W(()=>[t(h(b(ke)(e)),1)]),_:2},1040,[`color`])]),_:2},1032,[`text`])]),"item.size":W(({item:e})=>[d(`span`,on,h(e.type===`directory`?`—`:b(je)(e.size)),1)]),"item.modified":W(({item:e})=>[d(`span`,sn,h(e.modified||`—`),1)]),"item.actions":W(({item:e})=>[d(`div`,cn,[b(K)(e)?(L(),M(f,{key:0,variant:`text`,size:`x-small`,density:`compact`,color:`primary`,onClick:k(t=>b(Dt)(e),[`stop`])},{default:W(()=>[...g[70]||=[t(`编辑`,-1)]]),_:1},8,[`onClick`])):A(``,!0),b(K)(e)?(L(),M(f,{key:1,variant:`text`,size:`x-small`,density:`compact`,onClick:k(t=>b(Ot)(e),[`stop`])},{default:W(()=>[...g[71]||=[t(`查看`,-1)]]),_:1},8,[`onClick`])):A(``,!0),b(K)(e)?(L(),M(f,{key:2,variant:`text`,size:`x-small`,density:`compact`,onClick:k(t=>b(kt)(e),[`stop`])},{default:W(()=>[...g[72]||=[t(`下载`,-1)]]),_:1},8,[`onClick`])):A(``,!0),z(f,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:k(t=>b(At)(e),[`stop`])},{default:W(()=>[...g[73]||=[t(`删除`,-1)]]),_:1},8,[`onClick`])])]),"no-data":W(()=>[b(E)&&!b(w)?(L(),N(`div`,ln,[z(j,{size:`40`,class:`mb-2`},{default:W(()=>[...g[74]||=[t(`mdi-folder-open-outline`,-1)]]),_:1}),d(`div`,null,h(b(Te)),1),b(S)?(L(),N(`div`,un,` 单击目录进入 · 双击文件编辑 · Ctrl+A 全选 · Ctrl+C/V 复制粘贴 `)):A(``,!0)])):A(``,!0)]),_:1},8,[`modelValue`,`items`,`headers`,`loading`,`row-props`])]),_:1},8,[`class`,`onDrop`]),z(J,{modelValue:b(Ie),"onUpdate:modelValue":g[18]||=e=>I(Ie)?Ie.value=e:null,"max-width":`500`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[75]||=[t(`上传文件`,-1)]]),_:1}),z(_,null,{default:W(()=>[z(We,{modelValue:b(Le),"onUpdate:modelValue":g[16]||=e=>I(Le)?Le.value=e:null,label:`选择文件`,variant:`outlined`,multiple:``,"show-size":``},null,8,[`modelValue`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[17]||=e=>Ie.value=!1},{default:W(()=>[...g[76]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,onClick:b(Ve),loading:b(Be)},{default:W(()=>[...g[77]||=[t(`上传`,-1)]]),_:1},8,[`onClick`,`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(J,{modelValue:b(He),"onUpdate:modelValue":g[21]||=e=>I(He)?He.value=e:null,"max-width":`400`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[78]||=[t(`新建文件`,-1)]]),_:1}),z(_,null,{default:W(()=>[z(H,{modelValue:b(Ge),"onUpdate:modelValue":g[19]||=e=>I(Ge)?Ge.value=e:null,label:`文件名`,variant:`outlined`,density:`compact`,rules:[b(o)],placeholder:`example.conf`,autofocus:``,onKeydown:D(b(Ke),[`enter`])},null,8,[`modelValue`,`rules`,`onKeydown`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[20]||=e=>He.value=!1},{default:W(()=>[...g[79]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,loading:b(_t),onClick:b(Ke)},{default:W(()=>[...g[80]||=[t(`创建`,-1)]]),_:1},8,[`loading`,`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(J,{modelValue:b(qe),"onUpdate:modelValue":g[24]||=e=>I(qe)?qe.value=e:null,"max-width":`400`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[81]||=[t(`新建目录`,-1)]]),_:1}),z(_,null,{default:W(()=>[z(H,{modelValue:b(Je),"onUpdate:modelValue":g[22]||=e=>I(Je)?Je.value=e:null,label:`目录名`,variant:`outlined`,density:`compact`,rules:[b(o)],onKeydown:D(b(Ye),[`enter`])},null,8,[`modelValue`,`rules`,`onKeydown`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[23]||=e=>qe.value=!1},{default:W(()=>[...g[82]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,onClick:b(Ye)},{default:W(()=>[...g[83]||=[t(`创建`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(J,{modelValue:b(Xe),"onUpdate:modelValue":g[26]||=e=>I(Xe)?Xe.value=e:null,"max-width":`400`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[84]||=[t(`确认删除`,-1)]]),_:1}),z(_,null,{default:W(()=>[g[85]||=t(`确定要删除 `,-1),d(`strong`,null,h(b(Ze)?.name),1),g[86]||=t(` 吗?`,-1)]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[25]||=e=>Xe.value=!1},{default:W(()=>[...g[87]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`error`,variant:`flat`,onClick:b(Qe)},{default:W(()=>[...g[88]||=[t(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(J,{modelValue:b($e),"onUpdate:modelValue":g[29]||=e=>I($e)?$e.value=e:null,"max-width":`400`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[89]||=[t(`重命名`,-1)]]),_:1}),z(_,null,{default:W(()=>[z(H,{modelValue:b(et),"onUpdate:modelValue":g[27]||=e=>I(et)?et.value=e:null,label:`新名称`,variant:`outlined`,density:`compact`,rules:[b(s)(`名称`)],autofocus:``,onKeydown:D(b(tt),[`enter`])},null,8,[`modelValue`,`rules`,`onKeydown`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[28]||=e=>$e.value=!1},{default:W(()=>[...g[90]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,onClick:b(tt)},{default:W(()=>[...g[91]||=[t(`确定`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(st,{modelValue:b(nt),"onUpdate:modelValue":g[30]||=e=>I(nt)?nt.value=e:null,file:b(rt),"server-id":b(S),loading:b(it),onApply:b(at)},null,8,[`modelValue`,`file`,`server-id`,`loading`,`onApply`]),z(J,{modelValue:b(ot),"onUpdate:modelValue":g[34]||=e=>I(ot)?ot.value=e:null,"max-width":`440`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[92]||=[t(`压缩`,-1)]]),_:1}),z(_,null,{default:W(()=>[d(`p`,dn,`将压缩 `+h(b(lt).length)+` 项到当前目录`,1),z(H,{modelValue:b(Y),"onUpdate:modelValue":g[31]||=e=>I(Y)?Y.value=e:null,label:`压缩包路径`,variant:`outlined`,density:`compact`},null,8,[`modelValue`]),z(ze,{modelValue:b(ct),"onUpdate:modelValue":g[32]||=e=>I(ct)?ct.value=e:null,items:[{title:`tar.gz`,value:`tar.gz`},{title:`zip`,value:`zip`}],"item-title":`title`,"item-value":`value`,label:`格式`,variant:`outlined`,density:`compact`},null,8,[`modelValue`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[33]||=e=>ot.value=!1},{default:W(()=>[...g[93]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,loading:b(_t),onClick:b(ut)},{default:W(()=>[...g[94]||=[t(`压缩`,-1)]]),_:1},8,[`loading`,`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(J,{modelValue:b(dt),"onUpdate:modelValue":g[37]||=e=>I(dt)?dt.value=e:null,"max-width":`440`},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,null,{default:W(()=>[...g[95]||=[t(`解压`,-1)]]),_:1}),z(_,null,{default:W(()=>[d(`p`,fn,h(b(ft)),1),z(H,{modelValue:b(pt),"onUpdate:modelValue":g[35]||=e=>I(pt)?pt.value=e:null,label:`解压到目录`,variant:`outlined`,density:`compact`},null,8,[`modelValue`])]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[36]||=e=>dt.value=!1},{default:W(()=>[...g[96]||=[t(`取消`,-1)]]),_:1}),z(f,{color:`primary`,variant:`flat`,loading:b(_t),onClick:b(X)},{default:W(()=>[...g[97]||=[t(`解压`,-1)]]),_:1},8,[`loading`,`onClick`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(ee,{modelValue:b(mt),"onUpdate:modelValue":g[53]||=e=>I(mt)?mt.value=e:null,target:[b(ht),b(gt)],location:`bottom start`},{default:W(()=>[z(xe,{density:`compact`,nav:``},{default:W(()=>[b(Z)&&b(Z).type===`directory`?(L(),M(y,{key:0,"prepend-icon":`mdi-folder-open`,onClick:g[38]||=e=>b(Q)(`open`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[98]||=[t(`打开`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)&&b(K)(b(Z))?(L(),M(y,{key:1,"prepend-icon":`mdi-pencil`,onClick:g[39]||=e=>b(Q)(`edit`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[99]||=[t(`编辑`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)&&b(K)(b(Z))?(L(),M(y,{key:2,"prepend-icon":`mdi-eye`,onClick:g[40]||=e=>b(Q)(`preview`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[100]||=[t(`查看`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)&&b(K)(b(Z))?(L(),M(y,{key:3,"prepend-icon":`mdi-download`,onClick:g[41]||=e=>b(Q)(`download`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[101]||=[t(`下载`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)?(L(),M(y,{key:4,"prepend-icon":`mdi-content-copy`,onClick:g[42]||=e=>b(Q)(`copy`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[102]||=[t(`复制 (Ctrl+C)`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)?(L(),M(y,{key:5,"prepend-icon":`mdi-content-cut`,onClick:g[43]||=e=>b(Q)(`cut`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[103]||=[t(`剪切 (Ctrl+X)`,-1)]]),_:1})]),_:1})):A(``,!0),z(y,{"prepend-icon":`mdi-content-paste`,disabled:!b(fe),onClick:g[44]||=e=>b(Q)(`paste`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[104]||=[t(`粘贴到当前目录 (Ctrl+V)`,-1)]]),_:1})]),_:1},8,[`disabled`]),b(Z)?.type===`directory`&&b(fe)?(L(),M(y,{key:6,"prepend-icon":`mdi-folder-arrow-down`,onClick:g[45]||=e=>b(Q)(`pasteInto`)},{default:W(()=>[z(B,null,{default:W(()=>[t(`粘贴到「`+h(b(Z).name)+`」`,1)]),_:1})]),_:1})):A(``,!0),z(y,{"prepend-icon":`mdi-link-variant`,onClick:g[46]||=e=>b(Q)(`copyPath`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[105]||=[t(`复制路径`,-1)]]),_:1})]),_:1}),z(y,{"prepend-icon":`mdi-console`,onClick:g[47]||=e=>b(Q)(`terminal`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[106]||=[t(`终端`,-1)]]),_:1})]),_:1}),z(ae),b(Z)&&(b(K)(b(Z))||b(Z).type===`directory`)?(L(),M(y,{key:7,"prepend-icon":`mdi-zip-box`,onClick:g[48]||=e=>b(Q)(`compress`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[107]||=[t(`压缩`,-1)]]),_:1})]),_:1})):A(``,!0),b(Z)&&b(Me)(b(Z).name)?(L(),M(y,{key:8,"prepend-icon":`mdi-package-up`,onClick:g[49]||=e=>b(Q)(`decompress`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[108]||=[t(`解压`,-1)]]),_:1})]),_:1})):A(``,!0),z(ae),z(y,{"prepend-icon":`mdi-file-rename-box`,onClick:g[50]||=e=>b(Q)(`rename`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[109]||=[t(`重命名`,-1)]]),_:1})]),_:1}),z(y,{"prepend-icon":`mdi-lock`,onClick:g[51]||=e=>b(Q)(`chmod`)},{default:W(()=>[z(B,null,{default:W(()=>[...g[110]||=[t(`修改权限`,-1)]]),_:1})]),_:1}),z(ae),z(y,{"prepend-icon":`mdi-delete`,onClick:g[52]||=e=>b(Q)(`delete`)},{default:W(()=>[z(B,{class:`text-error`},{default:W(()=>[...g[111]||=[t(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`target`]),z(J,{modelValue:b(bt),"onUpdate:modelValue":g[56]||=e=>I(bt)?bt.value=e:null,"max-width":`900`,scrollable:``},{default:W(()=>[z(m,{border:``},{default:W(()=>[z(x,{class:`d-flex align-center`},{default:W(()=>[d(`span`,pn,h(b($)),1),z(q),z(f,{icon:`mdi-close`,variant:`text`,onClick:g[54]||=e=>bt.value=!1})]),_:1}),z(ae),z(_,{style:{"max-height":`70vh`}},{default:W(()=>[b(St)?(L(),M(me,{key:0,indeterminate:``,class:`mb-2`})):(L(),N(`pre`,mn,h(b(xt)),1))]),_:1}),z(c,null,{default:W(()=>[z(q),z(f,{variant:`text`,onClick:g[55]||=e=>bt.value=!1},{default:W(()=>[...g[112]||=[t(`关闭`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),z(b(i),{ref_key:`editorWorkbench`,ref:Ct,"server-id":b(S)??0,"current-path":b(C),onSaved:g[57]||=e=>b(wt)(e),onPathChange:b(Tt),onPasteTarget:b(Et)},null,8,[`server-id`,`current-path`,`onPathChange`,`onPasteTarget`])]),_:1}))}}),[[`__scopeId`,`data-v-350f7e4d`]]);export{hn as default}; |