Files
aaPanel/BTPanel/static/vite/js/feature-FilePicker.js
T
2026-08-13 18:24:50 +08:00

31 lines
10 KiB
JavaScript

;(() => {
const stylesheetSelector = "link[rel=stylesheet]"
const loaded = new Set(Array.from(document.querySelectorAll(stylesheetSelector)).map(link => link.href))
const version = "1786507437784"
const findLoadedLink = href => Array.from(document.querySelectorAll(stylesheetSelector)).find(link => link.href === href)
const removeAfterLoad = (freshLink, staleLink) => {
const remove = () => staleLink.remove()
if (freshLink.sheet) {
requestAnimationFrame(remove)
return
}
freshLink.addEventListener("load", remove, { once: true })
}
for (const link of Array.from(document.querySelectorAll(stylesheetSelector))) {
const url = new URL(link.href, location.href)
if (url.origin !== location.origin || url.searchParams.get("v") === version) continue
url.searchParams.set("v", version)
if (loaded.has(url.href)) {
const freshLink = findLoadedLink(url.href)
if (freshLink && freshLink !== link) removeAfterLoad(freshLink, link)
continue
}
const freshLink = document.createElement("link")
freshLink.rel = "stylesheet"
freshLink.href = url.href
link.parentNode?.insertBefore(freshLink, link.nextSibling)
loaded.add(url.href)
removeAfterLoad(freshLink, link)
}
})();
import{r as e}from"./rolldown-runtime.js?v=1786507437784";import{Cn as t,Dn as n,En as r,In as i,Jn as a,Ln as o,Or as s,Sn as c,Xn as ee,ar as l,bn as u,br as d,cr as f,dn as p,ei as m,f as h,hr as g,kn as _,lr as v,mn as y,nn as b,rr as x,un as S,xn as C,yn as w,zn as T}from"./vendor-utils.js?v=1786507437784";import{l as te}from"./vendor-vue.js?v=1786507437784";import{K as E,St as D,Y as O,gt as k,q as A,x as j,xt as M}from"./vendor-naive.js?v=1786507437784";import{Zf as N,yp as P,zf as F}from"./app.js?v=1786507437784";import{Ef as I,Tf as L,jf as R}from"./app-shared.js?v=1786507437784";b();var z={class:`path-dir`},B=[`onClick`],V={class:`path-dir`},H={class:`flex-1`},U=F(_({__name:`navigator`,props:{path:{default:``},pathModifiers:{}},emits:o([`change`,`refresh`],[`update:path`]),setup(e,{emit:r}){let i=r,{t:o}=te(),c=x(e,`path`),_=l(`pathListRef`),b=d(``),E=d(0);h(_,([e])=>{e&&(E.value=e.contentRect.width)});let O=w(()=>c.value.split(`/`).filter(Boolean).map((e,t)=>({name:e,originalIndex:t}))),j=e=>`/${O.value.slice(0,Math.max(0,e)).map(e=>e.name).join(`/`)}`,N={rootItem:80,arrow:20,padding:12,maxText:150,char:8},P=w(()=>{if(!E.value||O.value.length===0)return O.value;let e=E.value-N.rootItem,t=[...O.value].reverse(),n=[];for(let r of t){let t=Math.min(r.name.length*N.char,N.maxText)+N.arrow+N.padding;if(e<t)break;n.unshift(r),e-=t}return n}),F=w(()=>P.value.length<O.value.length),I=w(()=>{let e=O.value.map(e=>({key:e.originalIndex,label:e.name,icon:()=>n(`i`,{class:`i-custom:file-dir text-16px`},null)}));return e.unshift({key:`/`,label:o(`FolderPicker.RootDir`),icon:()=>n(`i`,{class:`i-custom:file-dir text-16px`},null)}),e}),L=()=>{c.value=j(O.value.length-1),i(`change`,c.value)},R=(e,t)=>{typeof e==`number`?c.value=j(e+1):e===`/`&&(c.value=`/`),i(`change`,c.value),t==null||t.stopPropagation()},U=e=>{R(e)},W=d(!0),G=l(`inputRef`),ne=async()=>{var e;W.value=!1,b.value=c.value,await T(),(e=G.value)==null||e.focus()},K=()=>{W.value=!0,b.value!==c.value&&(c.value=b.value,i(`change`,b.value))},q=()=>{var e;(e=G.value)==null||e.blur()},J=()=>{i(`refresh`)};return(e,r)=>{let i=k,c=A,l=D,d=M;return a(),C(d,null,{default:f(()=>[n(i,{class:`nav-btn`,onClick:L},{default:f(()=>[...r[3]||(r[3]=[u(`i`,{class:`i-common-back text-14px`},null,-1)])]),_:1}),v(u(`div`,{ref_key:`pathListRef`,ref:_,class:`path-list`,onClick:ne},[n(c,{trigger:`click`,placement:`bottom-start`,options:s(I),onSelect:U},{default:f(()=>[v(u(`div`,{class:`path-item`,onClick:r[0]||(r[0]=e=>e.stopPropagation())},[...r[4]||(r[4]=[u(`div`,{class:`path-dir`},[u(`i`,{class:`i-file-dir text-16px`})],-1),u(`div`,{class:`path-arrow reversal`},[u(`i`,{class:`i-common-arrow-right`})],-1)])],512),[[S,s(F)]])]),_:1},8,[`options`]),v(u(`div`,{class:`path-item`,onClick:r[1]||(r[1]=e=>R(`/`,e))},[u(`div`,z,m(s(o)(`FolderPicker.RootDir`)),1),r[5]||(r[5]=u(`div`,{class:`path-arrow`},[u(`i`,{class:`i-common-arrow-right`})],-1))],512),[[S,!s(F)]]),(a(!0),t(y,null,ee(s(P),(e,n)=>(a(),t(`div`,{key:`${e.name}_${n}`,class:`path-item`,onClick:t=>R(e.originalIndex,t)},[u(`div`,V,m(e.name),1),r[6]||(r[6]=u(`div`,{class:`path-arrow`},[u(`i`,{class:`i-common-arrow-right`})],-1))],8,B))),128))],512),[[S,s(W)]]),v(u(`div`,H,[n(l,{ref_key:`inputRef`,ref:G,value:s(b),"onUpdate:value":r[2]||(r[2]=e=>g(b)?b.value=e:null),placeholder:s(o)(`FolderPicker.PathPlaceholder`),onBlur:K,onKeydown:p(q,[`enter`])},null,8,[`value`,`placeholder`])],512),[[S,!s(W)]]),n(i,{class:`nav-btn`,onClick:J},{default:f(()=>[...r[7]||(r[7]=[u(`i`,{class:`i-common-refresh text-14px`},null,-1)])]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-3fa6b1c3`]]);b();var W={class:`folder-picker`},G={class:`header`},ne={class:`header-content`},K={class:`navigator-wrapper`},q={class:`search-wrapper`},J={class:`toolbar`},re={class:`main-content`},ie={class:`sidebar`},ae={class:`dist-list`},oe=[`onClick`],se={class:`item-info`},ce={class:`name`},le={class:`size`},ue={class:`file-list-container`},de={class:`folder-picker-footer`},fe={class:`flex items-center gap-10px pl-96px`},pe={class:`w-240px`},me={class:`flex gap-10px`};function Y(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!i(e)}var X=_({__name:`index`,props:{path:{default:`/www/wwwroot`},checkedType:{default:()=>[`dir`]},callback:{}},emits:[`close`],setup(e,{emit:i}){let o=e,l=i,{t:h}=te(),_=d(null),v=d(o.path),b=d(!1),x=d(null),S=d(``),C=d([]),A=d(``),M=d([]),F=d(null),z=d(``),B=d(null),V=e=>{F.value||(F.value=e,z.value=``,M.value.unshift({filename:`__creating__`,path:``,modify_time:0,permission:``,owner:``,type:e,isCreate:!0}),T(()=>{var e;(e=B.value)==null||e.focus()}))},H=()=>{F.value&&M.value.shift(),F.value=null,z.value=``},X=async()=>{if(z.value){b.value=!0;try{let e=v.value===`/`?`/`:`${v.value}/`;F.value===`file`?await I({path:e+z.value}):await L({path:e+z.value}),H(),Q()}finally{b.value=!1}}},Z=w(()=>{let e=S.value.split(`/`).filter(Boolean);return e.length>0?e[e.length-1]:``}),Q=async()=>{b.value=!0;try{let{message:e}=await R({path:v.value,disk:!0,search:A.value});if(P(e)){let t=e.PATH,n=[];e.DIR.forEach(e=>{n.push(he(e,`dir`,t))}),e.FILES.forEach(e=>{n.push(he(e,`file`,t))}),M.value=n,v.value=t,o.checkedType.includes(`dir`)?S.value=t:S.value=``,e.DISK&&(C.value=e.DISK),x.value=null,T(()=>{var e;(e=_.value)==null||e.scrollTo({top:0})})}}finally{b.value=!1}},he=(e,t,n)=>{let r=e.split(`;`),i=r[0],a=Number(r[2]),o=r[3],s=r[4];return{path:(n===`/`?`/`:`${n}/`)+i,filename:i,modify_time:a,permission:o,owner:s,type:t}},ge=()=>{A.value=``,Q()},_e=e=>{v.value=e,A.value=``,Q()},$=()=>{T(()=>{Q()})},ve=e=>{if(e.isCreate)return{};let t=o.checkedType.includes(e.type),n=o.checkedType.length===1&&o.checkedType[0]===`file`;return{class:[`cursor-pointer`,x.value===e.filename?`selected-row`:``],onClick:()=>{if(n&&e.type===`dir`){v.value=`${v.value}/${e.filename}`.replace(`//`,`/`),A.value=``,Q();return}if(t){if(x.value===e.filename){x.value=null,S.value=``;return}x.value=e.filename,S.value=e.path}},onDblclick:()=>{n&&e.type===`dir`||e.type===`dir`&&(v.value=`${v.value}/${e.filename}`.replace(`//`,`/`),A.value=``,Q())}}},ye=[{title:()=>h(`FolderPicker.Name`),key:`name`,colSpan:e=>e.isCreate?3:1,render(e){if(e.isCreate){let e,t;return n(`div`,{class:`flex items-center gap-16px`},[n(`div`,{class:`flex items-center gap-8px`},[n(`i`,{class:[`text-18px`,F.value===`dir`?`i-file-dir`:`i-file-file text-base`]},null),n(`div`,{class:`w-220px`},[n(D,{ref:B,value:z.value,onUpdateValue:e=>z.value=e,size:`small`,autofocus:!0,placeholder:h(`FolderPicker.NamePlaceholder`),onKeydown:e=>{e.key===`Enter`&&X()}},null)])]),n(`div`,{class:`flex items-center gap-8px`},[n(k,{size:`small`,type:`primary`,onClick:X},Y(e=h(`FolderPicker.Create`))?e:{default:()=>[e]}),n(k,{size:`small`,onClick:H},Y(t=h(`Public.Btn.Cancel`))?t:{default:()=>[t]})])])}return n(`div`,{class:`flex items-center gap-8px`},[n(`i`,{class:[`text-18px`,e.type===`dir`?`i-file-dir`:`i-file-file text-base`]},null),n(`div`,{class:`w-0 flex-1 leading-18px`},[n(O,null,{default:()=>[e.filename]})])])}},{title:()=>h(`FolderPicker.ModifyTime`),key:`modify_time`,width:180,render(e){return e.isCreate?null:N(e.modify_time)}},{title:()=>h(`FolderPicker.PermissionOwner`),key:`permission`,width:150,render(e){return e.isCreate?null:`${e.permission} / ${e.owner}`}}];Q();let be=()=>{var e;let t=S.value,n=t.substring(t.lastIndexOf(`/`)+1),r=M.value.find(e=>e.filename===n);(e=o.callback)==null||e.call(o,t,r),xe()},xe=()=>{l(`close`)};return(e,i)=>{let o=j,l=E;return a(),t(`div`,W,[u(`div`,G,[u(`div`,ne,[u(`div`,K,[n(U,{path:s(v),"onUpdate:path":i[0]||(i[0]=e=>g(v)?v.value=e:null),onChange:ge,onRefresh:$},null,8,[`path`])]),u(`div`,q,[n(s(D),{value:s(A),"onUpdate:value":i[1]||(i[1]=e=>g(A)?A.value=e:null),clearable:``,placeholder:s(h)(`FolderPicker.SearchPlaceholder`),onKeydown:p($,[`enter`]),onClear:$},{suffix:f(()=>[u(`i`,{class:`i-common-search search-icon`,onClick:$})]),_:1},8,[`value`,`placeholder`])])]),u(`div`,J,[n(s(k),{size:`small`,onClick:i[2]||(i[2]=e=>V(`file`))},{default:f(()=>[r(m(s(h)(`FolderPicker.NewFile`)),1)]),_:1}),n(s(k),{size:`small`,onClick:i[3]||(i[3]=e=>V(`dir`))},{default:f(()=>[r(m(s(h)(`file.buttonGroup.createOptions.newDirectory`)),1)]),_:1})])]),u(`div`,re,[u(`div`,ie,[n(o,null,{default:f(()=>[u(`div`,ae,[(a(!0),t(y,null,ee(s(C),e=>(a(),t(`div`,{key:e.path,class:`dist-item`,onClick:t=>_e(e.path)},[i[4]||(i[4]=u(`i`,{class:`disk-icon i-file-disk`},null,-1)),u(`div`,se,[u(`div`,ce,[n(s(O),null,{default:f(()=>[r(m(e.path),1)]),_:2},1024)]),u(`div`,le,` (`+m(e.size[0])+`) `,1)])],8,oe))),128))])]),_:1})]),u(`div`,ue,[n(l,{ref_key:`tableRef`,ref:_,"flex-height":``,columns:ye,data:s(M),class:`file-table`,"row-props":ve,bordered:!1,"virtual-scroll":!0,loading:s(b)},null,8,[`data`,`loading`])])]),u(`div`,de,[u(`div`,fe,[s(Z)?(a(),t(y,{key:0},[u(`span`,null,m(s(h)(`FolderPicker.CurrentSelection`)),1),u(`div`,pe,[n(s(D),{value:s(Z),readonly:``,size:`small`},null,8,[`value`])])],64)):c(``,!0)]),u(`div`,me,[n(s(k),{class:`cancel-btn`,size:`small`,onClick:xe},{default:f(()=>[r(m(s(h)(`Public.Btn.Cancel`)),1)]),_:1}),n(s(k),{type:`primary`,size:`small`,disabled:!s(S),onClick:be},{default:f(()=>[r(m(s(h)(`Public.Btn.Confirm`)),1)]),_:1},8,[`disabled`])])])])}}}),Z=e({default:()=>Q}),Q=F(X,[[`__scopeId`,`data-v-07327c2c`]]);export{U as n,Z as t};