import{Dr as e,Fr as t,Gn as n,Ir as r,J as i,Jn as a,Kn as o,L as s,Lr as c,Lt as l,M as u,N as d,Nr as f,P as p,Qn as m,Xn as h,Y as g,Yn as _,br as v,er as y,fr as b,j as x,mr as S,q as C,rr as w,tr as T,vr as E,w as D}from"./index-D6kmN0iw.js";import{t as O}from"./fileBrowse-D87Kx7nu.js";import{i as k,r as A,t as j}from"./remotePath-BY9H9-d2.js";import{t as M}from"./VSpacer-D_GqDOug.js";import{t as N}from"./_plugin-vue_export-helper-BDNMzG2s.js";var P={key:1,class:`file-dir-tree-embedded-bar d-flex align-center px-2 py-1`},F={key:0,class:`text-caption text-medium-emphasis pa-3`},I=[`onClick`],L=[`onClick`,`onContextmenu`],R=N(w({__name:`FileDirectoryTree`,props:{serverId:{},currentPath:{},embedded:{type:Boolean}},emits:[`navigate`,`paste-target`],setup(w,{emit:N}){let R=w,z=N,B=e(!1),V=e(null),H=e(new Set([j])),U=e(new Map),W=a(()=>{let e=[],t=(n,r)=>{let i=U.value.get(n)??[];for(let n of i)e.push({...n,depth:r}),H.value.has(n.path)&&t(n.path,r+1)};return t(j,0),e});async function G(e){if(!R.serverId)return[];let{items:t}=O(await l.post(`/sync/browse`,{server_id:R.serverId,path:k(e)}));return t.filter(e=>e.type===`directory`).sort((e,t)=>e.name.localeCompare(t.name)).map(t=>({path:A(e,t.name),name:t.name,depth:0,hasChildren:!0,loaded:!1}))}async function K(e){if(R.serverId){V.value=e;try{let t=await G(e);U.value.set(e,t);let n=U.value;t.forEach(e=>{n.has(e.path)||n.set(e.path,[])})}finally{V.value=null}}}async function q(){if(R.serverId){B.value=!0,U.value=new Map,H.value=new Set([j]);try{await K(j),U.value.get(j)?.forEach(e=>{U.value.set(e.path,[])})}finally{B.value=!1}}}async function J(e){if(H.value.has(e.path)){H.value.delete(e.path);return}U.value.has(e.path)||await K(e.path),H.value.add(e.path)}function Y(e){let t=k(e);if(t===`/www/wwwroot`)return;let n=t.split(`/`).filter(Boolean),r=``;for(let e of n)r=r?`${r}/${e}`:`/${e}`,H.value.add(r);H.value.add(j)}E(()=>R.serverId,e=>{e?q():(U.value=new Map,H.value=new Set)},{immediate:!0});async function X(e){if(!R.serverId)return;let t=k(e);if(Y(t),U.value.has(`/www/wwwroot`)||await K(j),t===`/www/wwwroot`)return;let n=(`/www/wwwroot`.endsWith(`/`),j),r=(t.startsWith(n)?t.slice(n.length):t).split(`/`).filter(Boolean),i=j;for(let e of r)U.value.has(i)||await K(i),i=A(i,e)}return E(()=>R.currentPath,e=>{e&&X(e)}),(e,a)=>(b(),h(u,{border:``,rounded:`lg`,class:t([`file-dir-tree d-flex flex-column`,{"file-dir-tree--embedded":w.embedded}])},{default:v(()=>[w.embedded?(b(),m(`div`,P,[T(g,{size:`16`,class:`mr-1 text-medium-emphasis`},{default:v(()=>[...a[2]||=[y(`mdi-file-tree`,-1)]]),_:1}),a[3]||=_(`span`,{class:`text-caption text-medium-emphasis`},`目录`,-1),T(M),T(s,{icon:`mdi-refresh`,size:`x-small`,variant:`text`,disabled:!w.serverId,onClick:q},null,8,[`disabled`])])):(b(),h(p,{key:0,class:`text-subtitle-2 py-2 px-3 d-flex align-center`},{default:v(()=>[T(g,{size:`18`,class:`mr-1`},{default:v(()=>[...a[0]||=[y(`mdi-file-tree`,-1)]]),_:1}),a[1]||=y(` 目录 `,-1),T(M),T(s,{icon:`mdi-refresh`,size:`x-small`,variant:`text`,disabled:!w.serverId,onClick:q},null,8,[`disabled`])]),_:1})),T(x),T(d,{class:`file-dir-tree-body pa-0 flex-grow-1`},{default:v(()=>[w.serverId?B.value?(b(),h(C,{key:1,indeterminate:``})):(b(),h(D,{key:2,density:`compact`,nav:``,class:`py-0`},{default:v(()=>[(b(!0),m(o,null,S(W.value,e=>(b(),m(`div`,{key:e.path,class:`file-dir-tree-row d-flex align-center`,style:r({paddingLeft:`${8+e.depth*14}px`})},[_(`button`,{type:`button`,class:`file-dir-tree-toggle`,onClick:n(t=>J(e),[`stop`])},[V.value===e.path?(b(),h(i,{key:0,indeterminate:``,size:`14`,width:`2`})):(b(),h(g,{key:1,size:`16`},{default:v(()=>[y(c(H.value.has(e.path)?`mdi-chevron-down`:`mdi-chevron-right`),1)]),_:2},1024))],8,I),_(`button`,{type:`button`,class:t([`file-dir-tree-label text-body-2 text-truncate`,{"file-dir-tree-label--active":f(k)(w.currentPath)===e.path}]),onClick:t=>z(`navigate`,e.path),onContextmenu:n(t=>z(`paste-target`,e.path),[`prevent`])},[T(g,{size:`14`,class:`mr-1`},{default:v(()=>[...a[4]||=[y(`mdi-folder-outline`,-1)]]),_:1}),y(` `+c(e.name),1)],42,L)],4))),128))]),_:1})):(b(),m(`div`,F,`请先选择服务器`))]),_:1})]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-0bdd7943`]]);export{R as default};