Files
Nexus/web/app/assets/FilesPage-D9LIzMay.js
T
Your Name 51948469c2 build(frontend): track Vite output in Git for Gitea deploy
- 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>
2026-06-03 00:52:44 +08:00

2 lines
17 KiB
JavaScript

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MonacoEditor-BLuyCLbf.js","assets/editor.api2-MWf-eAi-.js","assets/editor-DX2BVZF3.css","assets/index-ngtHwr8t.js","assets/index-wWV5-oYR.css","assets/workers-DLQCZ--h.js","assets/monaco.contribution-Dv8ly9Tx.js","assets/VChip-pM5_2xb4.js","assets/VChip-DNKJRTa0.css","assets/VDialog-v2_KHyRZ.js","assets/VDialog-DP-kc9Gx.css","assets/VSpacer-B9pYUh4l.js","assets/VSpacer-DfbUir7X.css","assets/useSnackbar-D7YOfKok.js"])))=>i.map(i=>d[i]);
import{t as e}from"./VDataTable-D7zAVHfQ.js";import{$n as t,$t as n,A as r,Ar as i,B as a,Cr as o,Ct as s,Er as c,F as l,Gn as ee,Jn as u,Kn as d,L as f,M as p,Mt as te,N as m,Or as h,P as g,Pn as ne,Pt as re,Qn as _,Rt as v,St as y,T as ie,Tt as b,Un as x,V as S,Wn as C,Y as ae,Yn as w,br as T,bt as E,cr as oe,en as D,er as se,gr as O,ir as k,j as ce,k as A,kr as j,ln as M,on as N,ot as P,qn as F,sn as I,st as L,t as R,tr as z,un as B,ur as V,v as le,wt as H,xt as U,yt as W,zt as ue}from"./index-ngtHwr8t.js";import{t as de}from"./useSnackbar-D7YOfKok.js";import{t as G}from"./VDialog-v2_KHyRZ.js";import{a as fe}from"./VSelectionControl-B8N1uBPi.js";import{n as K,t as pe}from"./VRow-DTY9xw0O.js";import{t as q}from"./VSpacer-B9pYUh4l.js";import{t as me}from"./VSelect-dA-HhEp_.js";import{t as he}from"./useServerList-DiBsn_ee.js";import{a as ge}from"./validation-Yxuom3Du.js";import{t as _e}from"./VFileInput-CqnHjMNl.js";var J=B({divider:[Number,String],...M()},`VBreadcrumbsDivider`),Y=N()({name:`VBreadcrumbsDivider`,props:J(),setup(e,{slots:t}){return D(()=>F(`li`,{"aria-hidden":`true`,class:h([`v-breadcrumbs-divider`,e.class]),style:j(e.style)},[t?.default?.()??e.divider])),{}}}),ve=B({active:Boolean,activeClass:String,activeColor:String,color:String,disabled:Boolean,title:String,...M(),...ne(s(),[`width`,`maxWidth`]),...a(),...te({tag:`li`})},`VBreadcrumbsItem`),ye=N()({name:`VBreadcrumbsItem`,props:ve(),setup(e,{slots:n,attrs:r}){let i=S(e,r),a=d(()=>e.active||i.isActive?.value),{dimensionStyles:o}=H(e),{textColorClasses:s,textColorStyles:c}=y(()=>a.value?e.activeColor:e.color);return D(()=>t(e.tag,{class:h([`v-breadcrumbs-item`,{"v-breadcrumbs-item--active":a.value,"v-breadcrumbs-item--disabled":e.disabled,[`${e.activeClass}`]:a.value&&e.activeClass},s.value,e.class]),style:j([c.value,o.value,e.style]),"aria-current":a.value?`page`:void 0},{default:()=>[i.isLink.value?F(`a`,k({class:`v-breadcrumbs-item--link`,onClick:i.navigate.value},i.linkProps),[n.default?.()??e.title]):n.default?.()??e.title]})),{}}}),X=B({activeClass:String,activeColor:String,bgColor:String,color:String,disabled:Boolean,divider:{type:String,default:`/`},icon:n,items:{type:Array,default:()=>[]},...M(),...P(),...W(),...te({tag:`ul`})},`VBreadcrumbs`),be=N()({name:`VBreadcrumbs`,props:X(),setup(e,{slots:n}){let{backgroundColorClasses:r,backgroundColorStyles:i}=U(()=>e.bgColor),{densityClasses:a}=L(e),{roundedClasses:s}=E(e);I({VBreadcrumbsDivider:{divider:o(()=>e.divider)},VBreadcrumbsItem:{activeClass:o(()=>e.activeClass),activeColor:o(()=>e.activeColor),color:o(()=>e.color),disabled:o(()=>e.disabled)}});let c=d(()=>e.items.map(e=>typeof e==`string`?{item:{title:e},raw:e}:{item:e,raw:e}));return D(()=>{let o=!!(n.prepend||e.icon);return t(e.tag,{class:h([`v-breadcrumbs`,r.value,a.value,s.value,e.class]),style:j([i.value,e.style])},{default:()=>[o&&F(`li`,{key:`prepend`,class:`v-breadcrumbs__prepend`},[n.prepend?t(b,{key:`prepend-defaults`,disabled:!e.icon,defaults:{VIcon:{icon:e.icon,start:!0}}},n.prepend):t(ae,{key:`prepend-icon`,start:!0,icon:e.icon},null)]),c.value.map(({item:e,raw:r},i,a)=>F(ee,null,[n.item?.({item:e,index:i})??t(ye,k({key:i,disabled:i>=a.length-1},typeof e==`string`?{title:e}:e),{default:n.title?()=>n.title?.({item:e,index:i}):void 0}),i<a.length-1&&t(Y,null,{default:n.divider?()=>n.divider?.({item:r,index:i}):void 0})])),n.default?.()]})}),{}}}),xe={class:`text-body-2 mr-4`},Se={class:`d-flex align-center ga-2`},Ce={class:`text-medium-emphasis`},we={class:`text-medium-emphasis`},Te={class:`d-flex ga-1`},Z=z({__name:`FilesPage`,setup(n){let a=se(()=>re(()=>import(`./MonacoEditor-BLuyCLbf.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])));function o(e,t){return e===`/`?`/${t}`:`${e}/${t}`}let s=de(),{servers:ee,loadServers:te}=he(),ne=ue(),y=T(null),b=T(`/`),S=T([]),E=T(!1),D=T(!1),k=T(!1),j=T(!1),M=T([]),N=T(!1),P=T(``),I=T(!1),L=T(null),z=T(!1),B=T(``),H=T(null),U=T(!1),W=T(``),J=T(null),Y=T(!1),ve=T(0),ye=T(0),X=T(null),Z=T([]),Ee=d(()=>Z.value.length),De=T(!1),Oe=T(``),ke=T(``),Ae=T(``),je=[{title:`名称`,key:`name`},{title:`大小`,key:`size`,width:120},{title:`修改时间`,key:`modified`,width:180},{title:`权限`,key:`permissions`,width:100},{title:`操作`,key:`actions`,width:200,align:`end`}],Me=d(()=>{let e=b.value.split(`/`).filter(Boolean),t=[{title:`/`,props:{onClick:()=>{b.value=`/`,Q()}}}],n=``;for(let r of e){n+=`/`+r;let e=n;t.push({title:r,props:{onClick:()=>{b.value=e,Q()}}})}return t});async function Q(){if(y.value){E.value=!0;try{let e=await v.post(`/sync/browse`,{server_id:y.value,path:b.value});S.value=Array.isArray(e)?e:e.items||[],S.value.sort((e,t)=>e.type===`directory`&&t.type!==`directory`?-1:e.type!==`directory`&&t.type===`directory`?1:e.name.localeCompare(t.name))}catch{S.value=[],s(`浏览目录失败`,`error`)}finally{E.value=!1}}}function Ne(){b.value=`/`,Q()}function Pe(e,{item:t}){t.type===`directory`&&(b.value=b.value===`/`?`/${t.name}`:`${b.value}/${t.name}`,Q())}function Fe(e,{item:t}){e.preventDefault(),X.value=t,ve.value=e.clientX,ye.value=e.clientY,Y.value=!0}function $(e){if(Y.value=!1,X.value)switch(e){case`edit`:He(X.value);break;case`preview`:Ve(X.value);break;case`download`:Ue(X.value);break;case`rename`:Ie(X.value);break;case`chmod`:Re(X.value);break;case`delete`:We(X.value);break}}function Ie(e){H.value=e,B.value=e.name,z.value=!0}async function Le(){if(!(!y.value||!H.value||!B.value))try{await v.post(`/sync/file-ops`,{server_id:y.value,operation:`rename`,path:o(b.value,H.value.name),new_path:o(b.value,B.value)}),z.value=!1,Q(),s(`重命名成功`)}catch(e){s(e instanceof Error?e.message:`重命名失败`,`error`)}}function Re(e){J.value=e,W.value=``,U.value=!0}async function ze(){if(!(!y.value||!J.value||!W.value))try{await v.post(`/sync/chmod`,{server_id:y.value,path:o(b.value,J.value.name),mode:W.value}),U.value=!1,Q(),s(`权限已修改`)}catch(e){s(e instanceof Error?e.message:`修改权限失败`,`error`)}}async function Be(){if(!(!y.value||!Z.value.length)&&confirm(`确定删除 ${Z.value.length} 个文件?`)){for(let e of Z.value)try{await v.post(`/sync/file-ops`,{server_id:y.value,operation:`delete`,path:o(b.value,e.name)})}catch{}Z.value=[],Q(),s(`批量删除完成`)}}async function Ve(e){if(y.value){I.value=!0;try{let t=await v.post(`/sync/read-file`,{server_id:y.value,path:o(b.value,e.name)});s(typeof t==`string`?t:JSON.stringify(t,null,2),`info`)}catch(e){s(e.message||`读取失败`,`error`)}finally{I.value=!1}}}async function He(e){if(y.value){I.value=!0;try{let t=await v.post(`/sync/read-file`,{server_id:y.value,path:o(b.value,e.name)}),n=typeof t==`string`?t:t.content??JSON.stringify(t,null,2);Oe.value=o(b.value,e.name),ke.value=e.name,Ae.value=n,De.value=!0}catch(e){s(e instanceof Error?e.message:`读取失败`,`error`)}finally{I.value=!1}}}async function Ue(e){if(y.value)try{await v.post(`/sync/download`,{server_id:y.value,path:o(b.value,e.name)}),s(`下载已开始`)}catch(e){s(e.message||`下载失败`,`error`)}}async function We(e){L.value=e,j.value=!0}async function Ge(){if(!(!y.value||!L.value)){I.value=!0;try{await v.post(`/sync/file-ops`,{server_id:y.value,operation:`delete`,path:o(b.value,L.value.name)}),j.value=!1,Q(),s(`已删除`)}catch(e){s(e.message||`删除失败`,`error`)}finally{I.value=!1}}}async function Ke(){if(!(!y.value||!P.value)){I.value=!0;try{await v.post(`/sync/file-ops`,{server_id:y.value,operation:`mkdir`,path:o(b.value,P.value)}),k.value=!1,P.value=``,Q(),s(`目录已创建`)}catch(e){s(e.message||`创建失败`,`error`)}finally{I.value=!1}}}async function qe(){if(!(!y.value||!M.value.length)){N.value=!0;try{let e=new FormData;for(let t of M.value)e.append(`files`,t);e.append(`server_id`,String(y.value)),e.append(`remote_path`,b.value),await v.upload(`/sync/upload`,e),D.value=!1,M.value=[],Q(),s(`上传成功`)}catch(e){s(e.message||`上传失败`,`error`)}finally{N.value=!1}}}function Je(e){return e?e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/1024/1024).toFixed(1)+` MB`:`—`}return oe(()=>{te();let e=ne.query.server_id;e&&(y.value=Number(e),Q())}),(n,o)=>(V(),u(fe,{fluid:``,class:`pa-6`},{default:O(()=>[t(p,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4 pa-4`},{default:O(()=>[t(pe,{align:`center`,dense:``},{default:O(()=>[t(K,{cols:`12`,sm:`4`},{default:O(()=>[t(me,{modelValue:y.value,"onUpdate:modelValue":[o[0]||=e=>y.value=e,Ne],items:c(ee),"item-title":`name`,"item-value":`id`,label:`选择服务器`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-server`},null,8,[`modelValue`,`items`])]),_:1}),t(K,{cols:`12`,sm:`4`},{default:O(()=>[t(R,{modelValue:b.value,"onUpdate:modelValue":o[1]||=e=>b.value=e,label:`路径`,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-folder`,"append-inner-icon":`mdi-arrow-right`,"onClick:appendInner":Q,onKeydown:x(Q,[`enter`])},null,8,[`modelValue`])]),_:1}),t(K,{cols:`12`,sm:`4`,class:`d-flex ga-2 justify-end`},{default:O(()=>[t(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-upload`,onClick:o[2]||=e=>D.value=!0},{default:O(()=>[...o[28]||=[_(`上传`,-1)]]),_:1}),t(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-folder-plus`,onClick:o[3]||=e=>k.value=!0},{default:O(()=>[...o[29]||=[_(`新建目录`,-1)]]),_:1}),t(f,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-refresh`,onClick:Q},{default:O(()=>[...o[30]||=[_(`刷新`,-1)]]),_:1})]),_:1})]),_:1})]),_:1}),t(be,{items:Me.value,class:`pa-0 mb-2`},{divider:O(()=>[...o[31]||=[_(`/`,-1)]]),_:1},8,[`items`]),Ee.value>0?(V(),u(p,{key:0,class:`mb-4`,color:`primary`,variant:`tonal`,rounded:`lg`},{default:O(()=>[t(m,{class:`d-flex align-center py-2`},{default:O(()=>[F(`span`,xe,`已选择 `+i(Ee.value)+` 个文件`,1),t(q),t(f,{size:`small`,variant:`text`,color:`error`,onClick:Be},{default:O(()=>[...o[32]||=[_(`批量删除`,-1)]]),_:1}),t(f,{size:`small`,variant:`text`,onClick:o[4]||=e=>Z.value=[]},{default:O(()=>[...o[33]||=[_(`取消选择`,-1)]]),_:1})]),_:1})]),_:1})):w(``,!0),t(p,{elevation:`0`,border:``,rounded:`lg`},{default:O(()=>[t(e,{modelValue:Z.value,"onUpdate:modelValue":o[5]||=e=>Z.value=e,items:S.value,headers:je,loading:E.value,"show-select":``,hover:``,density:`comfortable`,"item-value":`name`,"onClick:row":Pe,"onContextmenu:row":Fe},{"item.name":O(({item:e})=>[F(`div`,Se,[t(ae,{color:e.type===`directory`?`amber`:`blue`,size:`20`},{default:O(()=>[_(i(e.type===`directory`?`mdi-folder`:`mdi-file-outline`),1)]),_:2},1032,[`color`]),F(`span`,{class:h({"font-weight-medium":e.type===`directory`})},i(e.name),3)])]),"item.size":O(({item:e})=>[F(`span`,Ce,i(e.type===`directory`?`—`:Je(e.size)),1)]),"item.modified":O(({item:e})=>[F(`span`,we,i(e.modified||`—`),1)]),"item.actions":O(({item:e})=>[F(`div`,Te,[e.type===`directory`?w(``,!0):(V(),u(f,{key:0,variant:`text`,size:`x-small`,density:`compact`,color:`primary`,onClick:C(t=>He(e),[`stop`])},{default:O(()=>[...o[34]||=[_(`编辑`,-1)]]),_:1},8,[`onClick`])),e.type===`directory`?w(``,!0):(V(),u(f,{key:1,variant:`text`,size:`x-small`,density:`compact`,onClick:C(t=>Ve(e),[`stop`])},{default:O(()=>[...o[35]||=[_(`查看`,-1)]]),_:1},8,[`onClick`])),e.type===`directory`?w(``,!0):(V(),u(f,{key:2,variant:`text`,size:`x-small`,density:`compact`,onClick:C(t=>Ue(e),[`stop`])},{default:O(()=>[...o[36]||=[_(`下载`,-1)]]),_:1},8,[`onClick`])),t(f,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:C(t=>We(e),[`stop`])},{default:O(()=>[...o[37]||=[_(`删除`,-1)]]),_:1},8,[`onClick`])])]),"no-data":O(()=>[...o[38]||=[F(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无文件`,-1)]]),_:1},8,[`modelValue`,`items`,`loading`])]),_:1}),t(G,{modelValue:D.value,"onUpdate:modelValue":o[8]||=e=>D.value=e,"max-width":`500`},{default:O(()=>[t(p,{border:``},{default:O(()=>[t(g,null,{default:O(()=>[...o[39]||=[_(`上传文件`,-1)]]),_:1}),t(m,null,{default:O(()=>[t(_e,{modelValue:M.value,"onUpdate:modelValue":o[6]||=e=>M.value=e,label:`选择文件`,variant:`outlined`,multiple:``,"show-size":``},null,8,[`modelValue`])]),_:1}),t(l,null,{default:O(()=>[t(q),t(f,{variant:`text`,onClick:o[7]||=e=>D.value=!1},{default:O(()=>[...o[40]||=[_(`取消`,-1)]]),_:1}),t(f,{color:`primary`,variant:`flat`,onClick:qe,loading:N.value},{default:O(()=>[...o[41]||=[_(`上传`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),t(G,{modelValue:k.value,"onUpdate:modelValue":o[11]||=e=>k.value=e,"max-width":`400`},{default:O(()=>[t(p,{border:``},{default:O(()=>[t(g,null,{default:O(()=>[...o[42]||=[_(`新建目录`,-1)]]),_:1}),t(m,null,{default:O(()=>[t(R,{modelValue:P.value,"onUpdate:modelValue":o[9]||=e=>P.value=e,label:`目录名`,variant:`outlined`,density:`compact`},null,8,[`modelValue`])]),_:1}),t(l,null,{default:O(()=>[t(q),t(f,{variant:`text`,onClick:o[10]||=e=>k.value=!1},{default:O(()=>[...o[43]||=[_(`取消`,-1)]]),_:1}),t(f,{color:`primary`,variant:`flat`,onClick:Ke},{default:O(()=>[...o[44]||=[_(`创建`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),t(G,{modelValue:j.value,"onUpdate:modelValue":o[13]||=e=>j.value=e,"max-width":`400`},{default:O(()=>[t(p,{border:``},{default:O(()=>[t(g,null,{default:O(()=>[...o[45]||=[_(`确认删除`,-1)]]),_:1}),t(m,null,{default:O(()=>[o[46]||=_(`确定要删除 `,-1),F(`strong`,null,i(L.value?.name),1),o[47]||=_(` 吗?`,-1)]),_:1}),t(l,null,{default:O(()=>[t(q),t(f,{variant:`text`,onClick:o[12]||=e=>j.value=!1},{default:O(()=>[...o[48]||=[_(`取消`,-1)]]),_:1}),t(f,{color:`error`,variant:`flat`,onClick:Ge},{default:O(()=>[...o[49]||=[_(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),t(G,{modelValue:z.value,"onUpdate:modelValue":o[16]||=e=>z.value=e,"max-width":`400`},{default:O(()=>[t(p,{border:``},{default:O(()=>[t(g,null,{default:O(()=>[...o[50]||=[_(`重命名`,-1)]]),_:1}),t(m,null,{default:O(()=>[t(R,{modelValue:B.value,"onUpdate:modelValue":o[14]||=e=>B.value=e,label:`新名称`,variant:`outlined`,density:`compact`,rules:[c(ge)(`名称`)],autofocus:``,onKeydown:x(Le,[`enter`])},null,8,[`modelValue`,`rules`])]),_:1}),t(l,null,{default:O(()=>[t(q),t(f,{variant:`text`,onClick:o[15]||=e=>z.value=!1},{default:O(()=>[...o[51]||=[_(`取消`,-1)]]),_:1}),t(f,{color:`primary`,variant:`flat`,onClick:Le},{default:O(()=>[...o[52]||=[_(`确定`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),t(G,{modelValue:U.value,"onUpdate:modelValue":o[19]||=e=>U.value=e,"max-width":`400`},{default:O(()=>[t(p,{border:``},{default:O(()=>[t(g,null,{default:O(()=>[...o[53]||=[_(`修改权限`,-1)]]),_:1}),t(m,null,{default:O(()=>[t(R,{modelValue:W.value,"onUpdate:modelValue":o[17]||=e=>W.value=e,label:`权限 (如 755, 644)`,variant:`outlined`,density:`compact`,rules:[c(ge)(`权限`),e=>/^[0-7]{3,4}$/.test(e)||`格式: 3-4位八进制数`],autofocus:``,onKeydown:x(ze,[`enter`])},null,8,[`modelValue`,`rules`])]),_:1}),t(l,null,{default:O(()=>[t(q),t(f,{variant:`text`,onClick:o[18]||=e=>U.value=!1},{default:O(()=>[...o[54]||=[_(`取消`,-1)]]),_:1}),t(f,{color:`primary`,variant:`flat`,onClick:ze},{default:O(()=>[...o[55]||=[_(`确定`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),t(le,{modelValue:Y.value,"onUpdate:modelValue":o[26]||=e=>Y.value=e,target:[ve.value,ye.value],location:`bottom start`},{default:O(()=>[t(ie,{density:`compact`,nav:``},{default:O(()=>[X.value?.type===`directory`?w(``,!0):(V(),u(A,{key:0,"prepend-icon":`mdi-pencil`,onClick:o[20]||=e=>$(`edit`)},{default:O(()=>[t(r,null,{default:O(()=>[...o[56]||=[_(`编辑`,-1)]]),_:1})]),_:1})),X.value?.type===`directory`?w(``,!0):(V(),u(A,{key:1,"prepend-icon":`mdi-eye`,onClick:o[21]||=e=>$(`preview`)},{default:O(()=>[t(r,null,{default:O(()=>[...o[57]||=[_(`查看`,-1)]]),_:1})]),_:1})),X.value?.type===`directory`?w(``,!0):(V(),u(A,{key:2,"prepend-icon":`mdi-download`,onClick:o[22]||=e=>$(`download`)},{default:O(()=>[t(r,null,{default:O(()=>[...o[58]||=[_(`下载`,-1)]]),_:1})]),_:1})),t(ce),t(A,{"prepend-icon":`mdi-file-rename-box`,onClick:o[23]||=e=>$(`rename`)},{default:O(()=>[t(r,null,{default:O(()=>[...o[59]||=[_(`重命名`,-1)]]),_:1})]),_:1}),t(A,{"prepend-icon":`mdi-lock`,onClick:o[24]||=e=>$(`chmod`)},{default:O(()=>[t(r,null,{default:O(()=>[...o[60]||=[_(`修改权限`,-1)]]),_:1})]),_:1}),t(ce),t(A,{"prepend-icon":`mdi-delete`,onClick:o[25]||=e=>$(`delete`)},{default:O(()=>[t(r,{class:`text-error`},{default:O(()=>[...o[61]||=[_(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`target`]),t(c(a),{modelValue:De.value,"onUpdate:modelValue":o[27]||=e=>De.value=e,"file-path":Oe.value,"file-name":ke.value,"file-content":Ae.value,"server-id":y.value??0,onSaved:Q},null,8,[`modelValue`,`file-path`,`file-name`,`file-content`,`server-id`])]),_:1}))}});export{Z as default};