mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
2 lines (1 loc) • 11.5 kB
JavaScript
import{am as J,bi as Q,bl as se,ab as z,bB as l,b5 as e,C as ne,aF as O,aj as a,H as oe,J as ue,ai as r,a$ as o,ae as F,aa as d,t as Z,bC as H,bv as M,M as ie,N as re,O as j,Q as q,ac as E,i as I,aX as K,K as de,u as U,G as ce,aO as y,aT as B,a9 as me,aM as pe,U as fe,aG as _e,aD as S,b3 as g,W as ye,Y as T,Z as A,$ as ve,a0 as x,aZ as be}from"./index-BAS7XAoe.js";import{u as he}from"./useLibrary-lubOK0Bg.js";import{_}from"./Label.vue_vue_type_script_setup_true_lang-DJnzkt8b.js";import{_ as P}from"./Textarea.vue_vue_type_script_setup_true_lang-DsmTjQmg.js";import{_ as G}from"./PathTreeSelect.vue_vue_type_script_setup_true_lang-B36Zi8Tg.js";import{u as ge,_ as xe}from"./useConfirmDialog-D9KV7rp5.js";import{J as ke,L as $e,u as Ve,n as we}from"./index-CsJj9qiO.js";import"./PopoverTrigger.vue_vue_type_script_setup_true_lang-DS2w7cXI.js";const Ce={key:0,class:"space-y-4"},Be={class:"space-y-2"},Se={class:"space-y-2"},Ae={class:"flex items-center gap-2"},Fe={class:"flex items-center gap-2"},Ue={key:0,class:"space-y-2"},De={class:"text-muted-foreground text-xs leading-relaxed"},Le={class:"text-muted-foreground text-xs"},He={class:"text-muted-foreground text-xs"},Me={class:"flex items-center gap-2"},Te={class:"flex items-center gap-2"},ze={class:"space-y-2"},Re={class:"space-y-2"},We={class:"space-y-2"},Pe={class:"flex gap-4"},Ee=["checked","onChange"],Ne={class:"text-sm"},Oe=J({__name:"LibraryFormDialog",props:O({open:{type:Boolean},isEdit:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:O(["update:open","save"],["update:modelValue"]),setup(R,{emit:m}){const k=R,w=m,{t:i}=Q(),n=se(R,"modelValue"),C=["super","admin","user"],$=f=>{if(!n.value)return;const t=new Set(n.value.allowedRoles||[]);t.has(f)?t.delete(f):t.add(f),n.value.allowedRoles=[...t]};return(f,t)=>(y(),z(e(ne),{open:k.open,"onUpdate:open":t[13]||(t[13]=s=>w("update:open",s))},{default:l(()=>[a(e(ce),{class:"max-h-[85vh] overflow-y-auto sm:max-w-lg"},{default:l(()=>[a(e(oe),null,{default:l(()=>[a(e(ue),null,{default:l(()=>[r(o(f.isEdit?e(i)("library.editLibrary"):e(i)("library.createLibrary")),1)]),_:1})]),_:1}),n.value?(y(),F("div",Ce,[d("div",Be,[a(e(_),null,{default:l(()=>[r(o(e(i)("common.name")),1)]),_:1}),a(e(Z),{modelValue:n.value.name,"onUpdate:modelValue":t[0]||(t[0]=s=>n.value.name=s),placeholder:e(i)("library.namePlaceholder")},null,8,["modelValue","placeholder"])]),d("div",Se,[a(e(_),null,{default:l(()=>[r(o(e(i)("library.path")),1)]),_:1}),a(G,{modelValue:n.value.path,"onUpdate:modelValue":t[1]||(t[1]=s=>n.value.path=s),placeholder:e(i)("library.pathPlaceholder")},null,8,["modelValue","placeholder"])]),d("div",Ae,[H(d("input",{id:"enableHash","onUpdate:modelValue":t[2]||(t[2]=s=>n.value.enableHash=s),type:"checkbox",class:"size-4 rounded border-input"},null,512),[[M,n.value.enableHash]]),a(e(_),{for:"enableHash"},{default:l(()=>[r(o(e(i)("library.enableHash")),1)]),_:1})]),d("div",Fe,[H(d("input",{id:"enableAutoSync","onUpdate:modelValue":t[3]||(t[3]=s=>n.value.enableAutoSync=s),type:"checkbox",class:"size-4 rounded border-input"},null,512),[[M,n.value.enableAutoSync]]),a(e(_),{for:"enableAutoSync"},{default:l(()=>[r(o(e(i)("library.enableAutoSync")),1)]),_:1})]),n.value.enableAutoSync?(y(),F("div",Ue,[a(e(_),null,{default:l(()=>[r(o(e(i)("library.syncFilterTitle")),1)]),_:1}),d("p",De,o(e(i)("library.syncFilterHint")),1),a(e(ie),{modelValue:n.value.syncFilterMode,"onUpdate:modelValue":t[6]||(t[6]=s=>n.value.syncFilterMode=s)},{default:l(()=>[a(e(re),{class:"grid w-full grid-cols-2"},{default:l(()=>[a(e(j),{value:"blacklist"},{default:l(()=>[r(o(e(i)("library.syncBlacklist")),1)]),_:1}),a(e(j),{value:"whitelist"},{default:l(()=>[r(o(e(i)("library.syncWhitelist")),1)]),_:1})]),_:1}),a(e(q),{value:"blacklist",class:"mt-2 space-y-1"},{default:l(()=>[d("p",Le,o(e(i)("library.syncBlacklistHint")),1),a(e(P),{modelValue:n.value.syncBlacklist,"onUpdate:modelValue":t[4]||(t[4]=s=>n.value.syncBlacklist=s),placeholder:e(i)("library.syncBlacklistPlaceholder"),rows:"6",class:"font-mono text-xs"},null,8,["modelValue","placeholder"])]),_:1}),a(e(q),{value:"whitelist",class:"mt-2 space-y-1"},{default:l(()=>[d("p",He,o(e(i)("library.syncWhitelistHint")),1),a(e(P),{modelValue:n.value.syncWhitelist,"onUpdate:modelValue":t[5]||(t[5]=s=>n.value.syncWhitelist=s),placeholder:e(i)("library.syncWhitelistPlaceholder"),rows:"6",class:"font-mono text-xs"},null,8,["modelValue","placeholder"])]),_:1})]),_:1},8,["modelValue"])])):E("",!0),d("div",Me,[H(d("input",{id:"enableThumbScan","onUpdate:modelValue":t[7]||(t[7]=s=>n.value.enableThumbScan=s),type:"checkbox",class:"size-4 rounded border-input"},null,512),[[M,n.value.enableThumbScan]]),a(e(_),{for:"enableThumbScan"},{default:l(()=>[r(o(e(i)("library.enableThumbScan")),1)]),_:1})]),d("div",Te,[H(d("input",{id:"enableAutoBackup","onUpdate:modelValue":t[8]||(t[8]=s=>n.value.enableAutoBackup=s),type:"checkbox",class:"size-4 rounded border-input"},null,512),[[M,n.value.enableAutoBackup]]),a(e(_),{for:"enableAutoBackup"},{default:l(()=>[r(o(e(i)("library.enableAutoBackup")),1)]),_:1})]),d("div",ze,[a(e(_),null,{default:l(()=>[r(o(e(i)("library.pluginsDir")),1)]),_:1}),a(G,{modelValue:n.value.pluginsDir,"onUpdate:modelValue":t[9]||(t[9]=s=>n.value.pluginsDir=s),placeholder:e(i)("library.pluginsDirPlaceholder")},null,8,["modelValue","placeholder"])]),d("div",Re,[a(e(_),null,{default:l(()=>[r(o(e(i)("common.description")),1)]),_:1}),a(e(P),{modelValue:n.value.description,"onUpdate:modelValue":t[10]||(t[10]=s=>n.value.description=s),placeholder:e(i)("library.descriptionPlaceholder"),rows:"3"},null,8,["modelValue","placeholder"])]),d("div",We,[a(e(_),null,{default:l(()=>[r(o(e(i)("library.allowedRoles")),1)]),_:1}),d("div",Pe,[(y(),F(I,null,K(C,s=>{var v;return d("label",{key:s,class:"flex items-center gap-2"},[d("input",{type:"checkbox",checked:(v=n.value.allowedRoles)==null?void 0:v.includes(s),onChange:W=>$(s),class:"size-4 rounded border-input"},null,40,Ee),d("span",Ne,o(s),1)])}),64))])])])):E("",!0),a(e(de),null,{default:l(()=>[a(e(U),{variant:"outline",onClick:t[11]||(t[11]=s=>w("update:open",!1))},{default:l(()=>[r(o(e(i)("common.cancel")),1)]),_:1}),a(e(U),{onClick:t[12]||(t[12]=s=>w("save"))},{default:l(()=>[r(o(e(i)("common.save")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]))}}),je={class:"space-y-6"},qe={class:"flex items-center justify-between"},Ge={class:"text-2xl font-bold"},Je={class:"flex items-center gap-2"},Qe={class:"relative max-w-sm flex-1"},Ze={class:"rounded-md border"},Ie={class:"flex gap-1"},na=J({__name:"index",setup(R){const{t:m}=Q(),{confirmDialog:k,requireConfirm:w}=ge(),{loadLibraries:i}=he(),n=B([]),C=B(!1),$=B(""),f=B(!1),t=B(null),s=me(()=>{if(!$.value)return n.value;const u=$.value.toLowerCase();return n.value.filter(p=>p.name.toLowerCase().includes(u)||p.path.toLowerCase().includes(u))});async function v(){C.value=!0;try{const u=await S.list();n.value=Array.isArray(u.data)?u.data:[],i()}catch{g.error(m("common.failed"))}finally{C.value=!1}}function W(){return{name:"",path:"",description:"",icon:"",enableHash:!1,enableAutoSync:!1,enableThumbScan:!0,enableAutoBackup:!0,pluginsDir:"",allowedRoles:["super","admin","user"],syncFilterMode:"blacklist",syncBlacklist:"",syncWhitelist:""}}function X(){t.value={...W()},f.value=!0}function Y(u){var p,V,b,c,h,D,L;t.value={...W(),name:u.name,path:u.path,description:u.description??"",icon:u.icon??"",pluginsDir:u.pluginsDir??"",enableHash:((p=u.customFields)==null?void 0:p.enableHash)??!1,enableAutoSync:((V=u.customFields)==null?void 0:V.enableAutoSync)??!1,enableThumbScan:((b=u.customFields)==null?void 0:b.enableThumbScan)??!0,enableAutoBackup:((c=u.customFields)==null?void 0:c.enableAutoBackup)??!0,syncFilterMode:((h=u.customFields)==null?void 0:h.syncFilterMode)==="whitelist"?"whitelist":"blacklist",syncBlacklist:((D=u.customFields)==null?void 0:D.syncBlacklist)??"",syncWhitelist:((L=u.customFields)==null?void 0:L.syncWhitelist)??"",allowedRoles:u.allowedRoles??["super","admin","user"],_id:u.id},f.value=!0}async function ee(){if(t.value)try{const{_id:u,enableHash:p,enableAutoSync:V,enableThumbScan:b,enableAutoBackup:c,syncFilterMode:h,syncBlacklist:D,syncWhitelist:L,...te}=t.value,N={...te,customFields:{enableHash:p,enableAutoSync:V,enableThumbScan:b,enableAutoBackup:c,syncFilterMode:h,syncBlacklist:D,syncWhitelist:L}};u?await S.update(u,N):await S.create(N),g.success(m("common.success")),f.value=!1,await v()}catch{g.error(m("common.failed"))}}async function ae(u){if(await w({description:m("library.deleteOnlyRemoveFromList")}))try{await S.delete(u),g.success(m("common.success")),await v()}catch{g.error(m("common.failed"))}}async function le(u){const p=u.status==="active"?"inactive":"active";try{await S.toggleStatus(u.id,p),g.success(m("common.success")),await v()}catch{g.error(m("common.failed"))}}return pe(v),(u,p)=>{var b;const V=be("Badge");return y(),F("div",je,[d("div",qe,[d("h1",Ge,o(e(m)("library.title")),1),a(e(U),{onClick:X},{default:l(()=>[a(e($e),{class:"mr-2 size-4"}),r(" "+o(e(m)("library.createLibrary")),1)]),_:1})]),d("div",Je,[d("div",Qe,[a(e(ke),{class:"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),a(e(Z),{modelValue:$.value,"onUpdate:modelValue":p[0]||(p[0]=c=>$.value=c),placeholder:e(m)("common.search"),class:"pl-9"},null,8,["modelValue","placeholder"])])]),d("div",Ze,[a(e(fe),null,{default:l(()=>[a(e(ye),null,{default:l(()=>[a(e(T),null,{default:l(()=>[a(e(A),null,{default:l(()=>[r(o(e(m)("common.name")),1)]),_:1}),a(e(A),null,{default:l(()=>[r(o(e(m)("library.path")),1)]),_:1}),a(e(A),null,{default:l(()=>[r(o(e(m)("common.status")),1)]),_:1}),a(e(A),null,{default:l(()=>[r(o(e(m)("library.fileCount")),1)]),_:1}),a(e(A),null,{default:l(()=>[r(o(e(m)("common.actions")),1)]),_:1})]),_:1})]),_:1}),a(e(ve),null,{default:l(()=>[C.value?(y(),z(e(T),{key:0},{default:l(()=>[a(e(x),{colspan:5,class:"py-8 text-center text-muted-foreground"},{default:l(()=>[r(o(e(m)("common.loading")),1)]),_:1})]),_:1})):s.value.length?E("",!0):(y(),z(e(T),{key:1},{default:l(()=>[a(e(x),{colspan:5,class:"py-8 text-center text-muted-foreground"},{default:l(()=>[r(o(e(m)("common.noData")),1)]),_:1})]),_:1})),(y(!0),F(I,null,K(s.value,c=>(y(),z(e(T),{key:c.id},{default:l(()=>[a(e(x),{class:"font-medium"},{default:l(()=>[r(o(c.name),1)]),_:2},1024),a(e(x),{class:"max-w-[200px] truncate text-muted-foreground"},{default:l(()=>[r(o(c.path),1)]),_:2},1024),a(e(x),null,{default:l(()=>[a(V,{class:"cursor-pointer select-none",variant:c.status==="active"?"default":"secondary",onClick:h=>le(c)},{default:l(()=>[r(o(c.status==="active"?e(m)("library.active"):e(m)("library.inactive")),1)]),_:2},1032,["variant","onClick"])]),_:2},1024),a(e(x),null,{default:l(()=>[r(o(c.fileCount),1)]),_:2},1024),a(e(x),null,{default:l(()=>[d("div",Ie,[a(e(U),{variant:"ghost",size:"icon",onClick:h=>Y(c)},{default:l(()=>[a(e(Ve),{class:"size-4"})]),_:2},1032,["onClick"]),a(e(U),{variant:"ghost",size:"icon",onClick:h=>ae(c.id)},{default:l(()=>[a(e(we),{class:"size-4 text-destructive"})]),_:2},1032,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),a(Oe,{modelValue:t.value,"onUpdate:modelValue":p[1]||(p[1]=c=>t.value=c),open:f.value,"is-edit":!!((b=t.value)!=null&&b._id),"onUpdate:open":p[2]||(p[2]=c=>f.value=c),onSave:ee},null,8,["modelValue","open","is-edit"]),a(xe,_e(e(k),{"onUpdate:open":p[3]||(p[3]=c=>e(k).open=c),onConfirm:p[4]||(p[4]=c=>e(k).resolve(!0)),onCancel:p[5]||(p[5]=c=>e(k).resolve(!1))}),null,16)])}}});export{na as default};