2 lines
7.5 KiB
JavaScript
2 lines
7.5 KiB
JavaScript
import{d as P,n as z,p as E,o as a,c as l,F as L,m as R,a as e,q as V,t as j,f as d,T as q,g as u,s as A,b as x,r as y,j as H,h,l as c,k as G,x as J,e as B,v as S,w as M}from"./index-DA3SfkJ3.js";import{u as I}from"./projects-gD83Kd3J.js";import{u as K,H as O}from"./Header-qf9RmNM_.js";import{_ as D,B as C}from"./Button-BSIDh9oJ.js";import{M as T}from"./Modal-CeHY9Rct.js";const Q={class:"tree"},W=["onClick"],X=["onClick"],Y={key:1,class:"tree__icon"},Z={class:"tree__label"},ee=P({__name:"TreeView",props:{nodes:{}},emits:["node-click"],setup(b,{emit:g}){const w=b,s=g,_=y(new Set);z(()=>w.nodes,r=>{r.forEach(o=>{o.type==="folder"&&_.value.add(o.id)})},{immediate:!0});function m(r,o){o.stopPropagation(),_.value.has(r.id)?_.value.delete(r.id):_.value.add(r.id)}function p(r){s("node-click",r)}return(r,o)=>{const f=E("TreeView",!0);return a(),l("ul",Q,[(a(!0),l(L,null,R(b.nodes,n=>(a(),l("li",{key:n.id,class:"tree__item"},[e("div",{class:V(["tree__node",{"tree__node--folder":n.type==="folder"}]),onClick:k=>p(n)},[n.type==="folder"?(a(),l("button",{key:0,class:"tree__toggle",onClick:k=>m(n,k)},[(a(),l("svg",{class:V(["tree__arrow",{"tree__arrow--expanded":_.value.has(n.id)}]),width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[...o[1]||(o[1]=[e("path",{d:"m9 18 6-6-6-6"},null,-1)])],2))],8,X)):(a(),l("span",Y,[...o[2]||(o[2]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e("polyline",{points:"14 2 14 8 20 8"})],-1)])])),e("span",Z,j(n.name),1)],10,W),d(q,{name:"expand"},{default:u(()=>{var k;return[n.type==="folder"&&_.value.has(n.id)&&((k=n.children)!=null&&k.length)?(a(),A(f,{key:0,nodes:n.children,class:"tree__children",onNodeClick:o[0]||(o[0]=$=>s("node-click",$))},null,8,["nodes"])):x("",!0)]}),_:2},1024)]))),128))])}}}),te=D(ee,[["__scopeId","data-v-e9acf25c"]]),oe={class:"sidebar"},se={key:0,class:"sidebar__content"},re={class:"sidebar__project"},ne={class:"sidebar__project-name"},ae={key:0,class:"sidebar__project-desc"},le={class:"sidebar__actions"},ie={class:"sidebar__tree"},de={key:1,class:"sidebar__empty"},ce=P({__name:"Sidebar",emits:["create-folder","create-document"],setup(b,{emit:g}){const w=H(),s=I(),_=g;function m(r){r.type==="document"&&w.push(`/documents/${r.id}`)}function p(){w.push("/dashboard")}return(r,o)=>(a(),l("aside",oe,[e("div",{class:"sidebar__header"},[e("button",{class:"sidebar__back",onClick:p},[...o[2]||(o[2]=[e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"m15 18-6-6 6-6"})],-1),h(" All Projects ",-1)])])]),c(s).currentProject?(a(),l("div",se,[e("div",re,[e("h2",ne,j(c(s).currentProject.name),1),c(s).currentProject.description?(a(),l("p",ae,j(c(s).currentProject.description),1)):x("",!0)]),e("div",le,[d(C,{size:"sm",variant:"ghost",onClick:o[0]||(o[0]=f=>_("create-folder"))},{default:u(()=>[...o[3]||(o[3]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"}),e("line",{x1:"12",y1:"11",x2:"12",y2:"17"}),e("line",{x1:"9",y1:"14",x2:"15",y2:"14"})],-1),h(" New Folder ",-1)])]),_:1}),d(C,{size:"sm",variant:"ghost",onClick:o[1]||(o[1]=f=>_("create-document"))},{default:u(()=>[...o[4]||(o[4]=[e("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e("polyline",{points:"14 2 14 8 20 8"}),e("line",{x1:"12",y1:"11",x2:"12",y2:"17"}),e("line",{x1:"9",y1:"14",x2:"15",y2:"14"})],-1),h(" New Doc ",-1)])]),_:1})]),e("div",ie,[d(te,{nodes:c(s).treeNodes,onNodeClick:m},null,8,["nodes"])])])):(a(),l("div",de,[...o[5]||(o[5]=[e("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})],-1),e("p",null,"Select a project to view its contents",-1)])]))]))}}),ue=D(ce,[["__scopeId","data-v-f979c4be"]]),_e={class:"layout"},me={class:"layout__body"},pe={class:"layout__content"},fe={key:0,class:"loading"},ve={key:1,class:"error"},he={key:2,class:"project"},we={class:"project__welcome"},ke={class:"project__title"},ye={key:0,class:"project__desc"},Ce={class:"form__field"},ge={class:"form__field"},je=P({__name:"ProjectView",setup(b){const g=J(),w=H(),s=I(),_=K(),m=y(!1),p=y(!1),r=y(""),o=y(""),f=y(null),n=y(!1);G(async()=>{const i=g.params.id;await s.fetchProject(i)}),z(()=>g.params.id,async i=>{i&&await s.fetchProject(i)});function k(i){w.push(`/documents/${i}`)}function $(){f.value=null,m.value=!0}function U(){f.value=null,p.value=!0}async function F(){if(!(!r.value.trim()||!s.currentProject)){n.value=!0;try{await s.createFolder(s.currentProject.id,r.value.trim(),f.value),m.value=!1,r.value=""}catch(i){console.error("Failed to create folder:",i)}finally{n.value=!1}}}async function N(){if(!(!o.value.trim()||!s.currentProject)){n.value=!0;try{const i=await _.createDocument(s.currentProject.id,o.value.trim(),"",f.value);p.value=!1,o.value="",await s.fetchProjectTree(s.currentProject.id),k(i.id)}catch(i){console.error("Failed to create document:",i)}finally{n.value=!1}}}return(i,t)=>(a(),l("div",_e,[d(O),e("div",me,[d(ue,{onCreateFolder:$,onCreateDocument:U}),e("main",pe,[c(s).loading?(a(),l("div",fe,[...t[7]||(t[7]=[e("div",{class:"loading__spinner"},null,-1),e("p",null,"Loading project...",-1)])])):c(s).error?(a(),l("div",ve,[e("p",null,j(c(s).error),1),d(C,{variant:"secondary",onClick:t[0]||(t[0]=v=>c(w).push("/dashboard"))},{default:u(()=>[...t[8]||(t[8]=[h(" Back to Dashboard ",-1)])]),_:1})])):c(s).currentProject?(a(),l("div",he,[e("div",we,[e("h1",ke,j(c(s).currentProject.name),1),c(s).currentProject.description?(a(),l("p",ye,j(c(s).currentProject.description),1)):x("",!0),t[9]||(t[9]=e("p",{class:"project__hint"}," Select a document from the sidebar or create a new one to get started. ",-1))])])):x("",!0)])]),d(T,{show:m.value,title:"Create New Folder",onClose:t[3]||(t[3]=v=>m.value=!1)},{footer:u(()=>[d(C,{variant:"secondary",onClick:t[2]||(t[2]=v=>m.value=!1)},{default:u(()=>[...t[11]||(t[11]=[h("Cancel",-1)])]),_:1}),d(C,{variant:"primary",loading:n.value,onClick:F},{default:u(()=>[...t[12]||(t[12]=[h("Create Folder",-1)])]),_:1},8,["loading"])]),default:u(()=>[e("form",{onSubmit:M(F,["prevent"])},[e("div",Ce,[t[10]||(t[10]=e("label",{for:"folder-name",class:"form__label"},"Folder Name",-1)),B(e("input",{id:"folder-name","onUpdate:modelValue":t[1]||(t[1]=v=>r.value=v),type:"text",class:"form__input",placeholder:"My Folder",autofocus:""},null,512),[[S,r.value]])])],32)]),_:1},8,["show"]),d(T,{show:p.value,title:"Create New Document",onClose:t[6]||(t[6]=v=>p.value=!1)},{footer:u(()=>[d(C,{variant:"secondary",onClick:t[5]||(t[5]=v=>p.value=!1)},{default:u(()=>[...t[14]||(t[14]=[h("Cancel",-1)])]),_:1}),d(C,{variant:"primary",loading:n.value,onClick:N},{default:u(()=>[...t[15]||(t[15]=[h("Create Document",-1)])]),_:1},8,["loading"])]),default:u(()=>[e("form",{onSubmit:M(N,["prevent"])},[e("div",ge,[t[13]||(t[13]=e("label",{for:"doc-name",class:"form__label"},"Document Title",-1)),B(e("input",{id:"doc-name","onUpdate:modelValue":t[4]||(t[4]=v=>o.value=v),type:"text",class:"form__input",placeholder:"Untitled Document",autofocus:""},null,512),[[S,o.value]])])],32)]),_:1},8,["show"])]))}}),Fe=D(je,[["__scopeId","data-v-333c564d"]]);export{Fe as default};
|