var te=Object.defineProperty,ae=Object.defineProperties;var se=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var oe=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var F=(u,t,l)=>t in u?te(u,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):u[t]=l,q=(u,t)=>{for(var l in t||(t={}))oe.call(t,l)&&F(u,l,t[l]);if(U)for(var l of U(t))ne.call(t,l)&&F(u,l,t[l]);return u},G=(u,t)=>ae(u,se(t));import{a as x,d as le,B as w,a0 as E,J as O,k as D,L as R,M as A,T as ce,r as d,o as L,l as H,w as i,h as $,i as S,t as C,u as o,f as n,m as J,j as ie,U as re,e as de,F as ue}from"./vendor.d12b5734.js";import{h as P,u as X,c as K,j as pe}from"./main.c7bd6c0e.js";import{u as Q}from"./disk.40fc971f.js";const W=(u=!1)=>{const t=u?window.pinia.defineStore:le,{global:l}=window.i18n;return t({id:"backup",state:()=>({backups:[],currentBackupData:{option:"full",selected_disk:null}}),actions:{fetchBackups(b){return new Promise((c,s)=>{x.get("/api/v1/backups",{params:b}).then(e=>{this.backups=e.data.data,c(e)}).catch(e=>{P(e),s(e)})})},createBackup(b){return new Promise((c,s)=>{x.post("/api/v1/backups",b).then(e=>{X().showNotification({type:"success",message:l.t("settings.backup.created_message")}),c(e)}).catch(e=>{P(e),s(e)})})},removeBackup(b){return new Promise((c,s)=>{x.delete(`/api/v1/backups/${b.disk}`,{params:b}).then(e=>{X().showNotification({type:"success",message:l.t("settings.backup.deleted_message")}),c(e)}).catch(e=>{P(e),s(e)})})}}})()},ke={class:"flex justify-between w-full"},me=["onSubmit"],fe={class:"p-6"},_e={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},be={setup(u){w(null),w(!1);let t=w(!1),l=w(!1);const b=E(["full","only-db","only-files"]),c=W(),s=K(),e=Q(),{t:f}=O(),_=D(()=>s.active&&s.componentName==="BackupModal"),M=D(()=>e.disks.map(r=>G(q({},r),{name:r.name+" \u2014 ["+r.driver+"]"}))),V=D(()=>({currentBackupData:{option:{required:R.withMessage(f("validation.required"),A)},selected_disk:{required:R.withMessage(f("validation.required"),A)}}})),g=ce(V,D(()=>c));async function N(){if(g.value.currentBackupData.$touch(),g.value.currentBackupData.$invalid)return!0;let r={option:c.currentBackupData.option,file_disk_id:c.currentBackupData.selected_disk.id};try{t.value=!0,(await c.createBackup(r)).data&&(t.value=!1,s.refreshData&&s.refreshData(),s.closeModal())}catch{t.value=!1}}async function j(){l.value=!0;let r=await e.fetchDisks({limit:"all"});c.currentBackupData.selected_disk=r.data.data[0],l.value=!1}function I(){s.closeModal(),setTimeout(()=>{g.value.$reset(),c.$reset()})}return(r,h)=>{const a=d("BaseIcon"),p=d("BaseMultiselect"),m=d("BaseInputGroup"),k=d("BaseInputGrid"),y=d("BaseButton"),T=d("BaseModal");return L(),H(T,{show:o(_),onClose:I,onOpen:j},{header:i(()=>[$("div",ke,[S(C(o(s).title)+" ",1),n(a,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:I})])]),default:i(()=>[$("form",{onSubmit:re(N,["prevent"])},[$("div",fe,[n(k,{layout:"one-column"},{default:i(()=>[n(m,{label:r.$t("settings.backup.select_backup_type"),error:o(g).currentBackupData.option.$error&&o(g).currentBackupData.option.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:i(()=>[n(p,{modelValue:o(c).currentBackupData.option,"onUpdate:modelValue":h[0]||(h[0]=v=>o(c).currentBackupData.option=v),options:o(b),"can-deselect":!1,placeholder:r.$t("settings.backup.select_backup_type"),searchable:""},null,8,["modelValue","options","placeholder"])]),_:1},8,["label","error"]),n(m,{label:r.$t("settings.disk.select_disk"),error:o(g).currentBackupData.selected_disk.$error&&o(g).currentBackupData.selected_disk.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:i(()=>[n(p,{modelValue:o(c).currentBackupData.selected_disk,"onUpdate:modelValue":h[1]||(h[1]=v=>o(c).currentBackupData.selected_disk=v),"content-loading":o(l),options:o(M),searchable:!0,"allow-empty":!1,label:"name","value-prop":"id",placeholder:r.$t("settings.disk.select_disk"),"track-by":"id",object:""},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","error"])]),_:1})]),$("div",_e,[n(y,{class:"mr-3",variant:"primary-outline",type:"button",onClick:I},{default:i(()=>[S(C(r.$t("general.cancel")),1)]),_:1}),n(y,{loading:o(t),disabled:o(t),variant:"primary",type:"submit"},{left:i(v=>[o(t)?ie("",!0):(L(),H(a,{key:0,name:"SaveIcon",class:J(v.class)},null,8,["class"]))]),default:i(()=>[S(" "+C(r.$t("general.create")),1)]),_:1},8,["loading","disabled"])])],40,me)]),_:1},8,["show"])}}},ge={class:"grid my-14 md:grid-cols-3"},Be={class:"inline-block"},De={setup(u){const t=pe(),l=W(),b=K(),c=Q(),{t:s}=O(),e=E({selected_disk:{driver:"local"}}),f=w("");let _=w(!0);const M=D(()=>[{key:"path",label:s("settings.backup.path"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:s("settings.backup.created_at"),tdClass:"font-medium text-gray-900"},{key:"size",label:s("settings.backup.size"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),V=D(()=>c.disks.map(a=>G(q({},a),{name:a.name+" \u2014 ["+a.driver+"]"})));j();function g(a){t.openDialog({title:s("general.are_you_sure"),message:s("settings.backup.backup_confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async p=>{if(p){let m={disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:a.path},k=await l.removeBackup(m);if(k.data.success||k.data.backup)return f.value&&f.value.refresh(),!0}})}function N(){setTimeout(()=>{f.value.refresh()},100)}async function j(){_.value=!0;let a=await c.fetchDisks({limit:"all"});a.data.error,e.selected_disk=a.data.data.find(p=>p.set_as_default==0),_.value=!1}async function I({page:a,filter:p,sort:m}){let k={disk:e.selected_disk.driver,filed_disk_id:e.selected_disk.id};_.value=!0;let y=await l.fetchBackups(k);return _.value=!1,{data:y.data.backups,pagination:{totalPages:1,currentPage:1}}}async function r(){b.openModal({title:s("settings.backup.create_backup"),componentName:"BackupModal",refreshData:f.value&&f.value.refresh,size:"sm"})}async function h(a){_.value=!0,window.axios({method:"GET",url:"/api/v1/download-backup",responseType:"blob",params:{disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:a.path}}).then(p=>{const m=window.URL.createObjectURL(new Blob([p.data])),k=document.createElement("a");k.href=m,k.setAttribute("download",a.path.split("/")[1]),document.body.appendChild(k),k.click(),_.value=!1}).catch(p=>{_.value=!1})}return(a,p)=>{const m=d("BaseIcon"),k=d("BaseButton"),y=d("BaseMultiselect"),T=d("BaseInputGroup"),v=d("BaseDropdownItem"),Y=d("BaseDropdown"),Z=d("BaseTable"),ee=d("BaseSettingCard");return L(),de(ue,null,[n(be),n(ee,{title:a.$tc("settings.backup.title",1),description:a.$t("settings.backup.description")},{action:i(()=>[n(k,{variant:"primary-outline",onClick:r},{left:i(B=>[n(m,{class:J(B.class),name:"PlusIcon"},null,8,["class"])]),default:i(()=>[S(" "+C(a.$t("settings.backup.new_backup")),1)]),_:1})]),default:i(()=>[$("div",ge,[n(T,{label:a.$t("settings.disk.select_disk"),"content-loading":o(_)},{default:i(()=>[n(y,{modelValue:o(e).selected_disk,"onUpdate:modelValue":p[0]||(p[0]=B=>o(e).selected_disk=B),"content-loading":o(_),options:o(V),"track-by":"id",placeholder:a.$t("settings.disk.select_disk"),label:"name",searchable:!0,object:"",class:"w-full","value-prop":"id",onSelect:N},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"])]),n(Z,{ref:(B,z)=>{z.table=B,f.value=B},class:"mt-10","show-filter":!1,data:I,columns:o(M)},{"cell-actions":i(({row:B})=>[n(Y,null,{activator:i(()=>[$("div",Be,[n(m,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:i(()=>[n(v,{onClick:z=>h(B.data)},{default:i(()=>[n(m,{name:"CloudDownloadIcon",class:"mr-3 text-gray-600"}),S(" "+C(a.$t("general.download")),1)]),_:2},1032,["onClick"]),n(v,{onClick:z=>g(B.data)},{default:i(()=>[n(m,{name:"TrashIcon",class:"mr-3 text-gray-600"}),S(" "+C(a.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{De as default};