UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

2 lines (1 loc) 33.7 kB
import{A as Ht}from"./chunk-E32J777S.js";import{c as X,d as Le,h as ee,m as ue}from"./chunk-RTNEBRKJ.js";import{a as Ut}from"./chunk-HGODIZTV.js";import{b as Bt}from"./chunk-6WMXMIE4.js";import{l as Dt,n as Pt,o as Rt,p as Nt,q as H,r as $t,s as K,w as Ot}from"./chunk-B6HQYQYG.js";import{a as Mt,b as Ft}from"./chunk-GWRAGN3M.js";import{b as Q}from"./chunk-27Z3SYRL.js";import{$a as de,Ba as he,Ca as At,Cb as Y,Db as f,Gb as It,Hb as wt,Ib as xt,Ja as Ie,K as Ct,Mb as xe,N as kt,Na as N,Nb as U,Ob as y,Pb as Tt,W as ce,Wa as Et,gb as bt,ib as vt,s as at,t as lt,tb as yt,w as pt,x as ct,y as mt,ya as C}from"./chunk-O3YLAEVE.js";import{d as se}from"./chunk-QHJT5H4M.js";import{Bb as oe,Cd as rt,Dd as ot,Eb as D,Ed as le,Ee as ft,G as _e,Gb as u,Gf as gt,Jd as pe,Kd as st,L as $e,Oa as l,Od as ht,Pc as je,Qa as Ce,Qb as He,Ra as Be,Rb as J,Sb as P,Tb as c,Ub as W,Vb as M,Wb as Ke,Xb as Ee,Yb as be,Yc as Z,Yf as _t,Zb as ve,ab as re,cc as G,ea as R,ed as qe,f as Re,fd as We,gc as Ve,ha as Oe,hd as ae,ia as ne,ie as dt,ja as d,jd as Ge,kc as b,kd as Ze,lb as A,ld as ye,le as ut,mb as E,mc as v,nb as Ue,nd as _,oa as j,od as Ye,p as z,pa as q,pb as ke,pd as Xe,qb as Ae,qd as ze,qg as me,ra as Me,rb as m,rg as we,sb as s,sd as Je,sg as Lt,t as Ne,tb as a,td as Qe,tg as B,ub as g,ud as et,v as S,vd as tt,wd as it,xa as Fe,xd as nt,yf as St}from"./chunk-D55YR5X7.js";import{n as F}from"./chunk-DM4NXKEP.js";import{a as I,b as T,d as Pe}from"./chunk-KAVP6UXH.js";var $={BASE:`${ce}/link`,LINK:"link",VALIDATION:"validation",ACCESS:"access",DOWNLOAD:"download",AUTH:"auth"},Kt=`${$.BASE}/${$.VALIDATION}`,Vt=`${$.BASE}/${$.ACCESS}`,jt=`${$.BASE}/${$.DOWNLOAD}`,qt=`${$.BASE}/${$.AUTH}`;var h={BASE:`${ce}/shares`,LIST:"list",CHILDREN:"children",LINKS:"links",LINKS_LIST:"links/list",LINKS_UUID:"links/uuid"},Wt=`${h.BASE}/${h.LIST}`,te=`${h.BASE}/${h.LINKS}`,Gt=`${h.BASE}/${h.LINKS_LIST}`,Zt=`${h.BASE}/${h.LINKS_UUID}`;var Yt=new Oe("WindowToken",typeof window<"u"&&window.document?{providedIn:"root",factory:()=>window}:{providedIn:"root",factory:()=>{}});var Xt=(()=>{class o{constructor(i,e,t){this.ngZone=i,this.document=e,this.window=t,this.copySubject=new Re,this.copyResponse$=this.copySubject.asObservable(),this.config={}}configure(i){this.config=i}copy(i){if(!this.isSupported||!i)return this.pushCopyResponse({isSuccess:!1,content:i});let e=this.copyFromContent(i);return e?this.pushCopyResponse({content:i,isSuccess:e}):this.pushCopyResponse({isSuccess:!1,content:i})}get isSupported(){return!!this.document.queryCommandSupported&&!!this.document.queryCommandSupported("copy")&&!!this.window}isTargetValid(i){if(i instanceof HTMLInputElement||i instanceof HTMLTextAreaElement){if(i.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');return!0}throw new Error("Target should be input or textarea")}copyFromInputElement(i,e=!0){try{this.selectTarget(i);let t=this.copyText();return this.clearSelection(e?i:void 0,this.window),t&&this.isCopySuccessInIE11()}catch{return!1}}isCopySuccessInIE11(){let i=this.window.clipboardData;return!(i&&i.getData&&!i.getData("Text"))}copyFromContent(i,e=this.document.body){if(this.tempTextArea&&!e.contains(this.tempTextArea)&&this.destroy(this.tempTextArea.parentElement||void 0),!this.tempTextArea){this.tempTextArea=this.createTempTextArea(this.document,this.window);try{e.appendChild(this.tempTextArea)}catch{throw new Error("Container should be a Dom element")}}this.tempTextArea.value=i;let t=this.copyFromInputElement(this.tempTextArea,!1);return this.config.cleanUpAfterCopy&&this.destroy(this.tempTextArea.parentElement||void 0),t}destroy(i=this.document.body){this.tempTextArea&&(i.removeChild(this.tempTextArea),this.tempTextArea=void 0)}selectTarget(i){return i.select(),i.setSelectionRange(0,i.value.length),i.value.length}copyText(){return this.document.execCommand("copy")}clearSelection(i,e){i&&i.focus(),e.getSelection()?.removeAllRanges()}createTempTextArea(i,e){let t=i.documentElement.getAttribute("dir")==="rtl",n;n=i.createElement("textarea"),n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";let p=e.pageYOffset||i.documentElement.scrollTop;return n.style.top=p+"px",n.setAttribute("readonly",""),n}pushCopyResponse(i){this.copySubject.observers.length>0&&this.ngZone.run(()=>{this.copySubject.next(i)})}pushCopyReponse(i){this.pushCopyResponse(i)}}return o.\u0275fac=function(i){return new(i||o)(ne(Be),ne(Me),ne(Yt,8))},o.\u0275prov=R({token:o,factory:o.\u0275fac,providedIn:"root"}),o})();var Te=(function(o){return o[o.COMMON=0]="COMMON",o[o.LINK=1]="LINK",o})(Te||{}),zt=Object.values(C).filter(o=>o!==C.SHARE_INSIDE).sort().join(":");function ni(o,r){if(o&1&&g(0,"fa-icon",2),o&2){let i=u();P(i.repository.class),He("min-width",i.galleryMode.dimensions/3,"px")("min-height",i.galleryMode.dimensions/3,"px")("font-size",i.galleryMode.faSize/1.8,"px"),m("icon",i.repository.icon)}}function ri(o,r){if(o&1&&g(0,"fa-icon",5),o&2){let i=u(2);P(i.repository.class),m("icon",i.repository.icon)}}function oi(o,r){if(o&1&&(c(0),b(1,"translate")),o&2){let i=u(2);M(" ",v(1,1,i.repository.label,i.locale.language)," ")}}function si(o,r){if(o&1&&c(0),o&2){let i=u(2);M(" ",i.repository.label," ")}}function ai(o,r){if(o&1&&(s(0,"div",1),A(1,ri,1,3,"fa-icon",3),s(2,"span",4),A(3,oi,2,4)(4,si,1,1),a()()),o&2){let i=u();l(),E(i.showIcon?1:-1),l(2),E(i.repository.translate?3:4)}}var Jt=(()=>{let r=class r{constructor(){this.showIcon=!0,this.showFullPath=!1,this.locale=d(le),this.layout=d(Y),this.unknownRepository={icon:ht,label:"",class:"circle-primary-icon",translate:!1}}ngOnInit(){this.setRepository()}ngOnChanges(){this.setRepository()}setRepository(){this.share.parent?.id||this.share.parent?.id===0?this.repository={icon:U.SHARES,label:this.share.parent.name,class:"circle-purple-icon",translate:!1}:this.share.file?.ownerId?this.repository={icon:U.PERSONAL,label:xe.PERSONAL_FILES,class:"circle-primary-icon",translate:!0}:this.share.file?.space?.alias?this.repository={icon:U.SPACES,label:`${this.share.file.space.name}`,class:"circle-primary-icon",translate:!1}:this.share.externalPath?this.repository={icon:U.EXTERNAL,label:"External",class:"circle-primary-icon",translate:!0}:this.repository=I({},this.unknownRepository),this.showFullPath&&this.setFullPath()}setFullPath(){if(!this.repository.label)return;let e=this.share.file?.path?this.share.file.path.split("/").filter(t=>t&&t!=="."):[];this.share.parent?.id&&!this.share.file?.id&&this.share.file?.path.indexOf("/")===-1?e.shift():this.share.file?.space?.alias&&this.share.file.space?.root?.alias&&(e.length?e.unshift(this.share.file.space.root.name):e.push(this.share.file.space.root.name)),this.repository.label===xe.PERSONAL_FILES&&(this.repository.label=this.layout.translateString(this.repository.label)),e.length&&(this.repository.label=`${this.repository.label}/${e.join("/")}`)}};r.\u0275fac=function(t){return new(t||r)},r.\u0275cmp=re({type:r,selectors:[["app-share-repository"]],inputs:{share:"share",galleryMode:"galleryMode",showIcon:"showIcon",showFullPath:"showFullPath"},features:[Fe],decls:2,vars:1,consts:[[3,"icon","class","min-width","min-height","font-size"],[1,"d-flex","align-items-center","overflow-wrap-and-whitespace"],[3,"icon"],[1,"me-2",3,"icon","class"],["draggable","false",1,"no-pointer-events"],[1,"me-2",3,"icon"]],template:function(t,n){t&1&&A(0,ni,1,9,"fa-icon",0)(1,ai,5,2,"div",1),t&2&&E(n.galleryMode?0:1)},dependencies:[me,pe],encapsulation:2});let o=r;return o})();function Se(o){o.file?.id?(o.file.isDir&&(o.file.mime=o.parent?.alias?Le:X),o.mimeUrl=ee(o.file.mime)):o.mimeUrl=ee(o.parent?.alias?Le:X)}function Qt(o){let r,i=o.file.path?o.file.path.split("/").filter(t=>t&&t!=="."):[];if(o.parent?.id){if(!i.length)return[y.SPACES_SHARES,o.parent.alias];r=`${y.SPACES_SHARES}/${o.parent.alias}`}else o.file.space?.alias?o.file.inTrash?r=`${y.SPACES_TRASH}/${o.file.space.alias}`:(r=`${y.SPACES_FILES}/${o.file.space.alias}`,o.file.space?.root?.alias&&(i.length?r=`${r}/${o.file.space.root.alias}`:i.push(o.file.space.root.name))):o.file?.ownerId?r=`${o.file.inTrash?y.PERSONAL_TRASH:y.PERSONAL_FILES}`:console.warn("unable to find the right file path",o);let e=i.pop();return r&&i.length&&(r=`${r}/${i.join("/")}`),[r,e]}var w=class{constructor(r){this.members=[],this.links=[],this.hPerms={},this.setMembers(N("members",r),r.externalPath||r.file?.isDir?[C.SHARE_INSIDE]:[]),Object.assign(this,r),Se(this),this.checkFile(),this.setPermissions()}fallBackMimeUrl(){this.mimeUrl=ue}setMembers(r,i){if(r)for(let e of r)e.linkId?this.links.push(new K(e,[...i,C.SHARE_OUTSIDE])):this.members.push(new K(e,i))}checkFile(){this.file&&(!this.file.path&&this.file.space.root?.name&&(this.file.path=this.file.space.root.name,this.file.name=this.file.space.root.name),this.file.permissions&&(this.file.permissions=this.file.permissions.split(":").filter(r=>r===C.SHARE_INSIDE||r===C.ADD&&this.file.id&&!this.file.isDir?!1:!(r===C.DELETE&&this.file.id&&!this.file.isDir)).join(":")))}setPermissions(){typeof this.file?.permissions=="string"?this.hPerms=H(this.file.permissions):this.externalPath&&(this.hPerms=H(zt))}};var ei=(()=>{let r=class r{constructor(){this.http=d(Z),this.router=d(se)}getShare(e){return this.http.get(`${h.BASE}/${e}`).pipe(S(t=>new w(t)))}createShare(e){return this.http.post(h.BASE,e).pipe(S(t=>new w(t)))}updateShare(e){return this.http.put(`${h.BASE}/${e.id}`,e).pipe(S(t=>new w(t)))}deleteShare(e){return this.http.delete(`${h.BASE}/${e}`)}listShares(){return this.http.get(Wt)}getShareChild(e,t){return this.http.get(`${h.BASE}/${e}/${h.CHILDREN}/${t}`).pipe(S(n=>new w(n)))}updateShareChild(e,t,n){return this.http.put(`${h.BASE}/${e}/${h.CHILDREN}/${t}`,n).pipe(S(p=>new w(p)))}deleteShareChild(e,t){return this.http.delete(`${h.BASE}/${e}/${h.CHILDREN}/${t}`)}listChildShares(e){return this.http.get(`${h.BASE}/${e}/${h.CHILDREN}`)}initShareFromFile(e,t,n=!1,p=!1){let k,x=null,L=I({id:0,name:"",createdAt:new Date,modifiedAt:new Date,storageIndexing:!0,enabled:!0},n?{parent:{id:0,ownerId:0,alias:t.space.alias,name:t.space.name}}:{});if(t){p&&(x=t.root.id);let De=null;(t?.root?.owner.login===e.login||!t?.space?.alias)&&(t.space=null,De=e.id),k=new w(T(I({},L),{name:t.name,file:T(I({},t),{path:p?".":Et(t.path,2),ownerId:De})}))}else k=new w(L);return[k,x]}goTo(e){if(!e.id)return Ne(z(!1));if(e.externalPath&&!e.parent?.id)return this.router.navigate([y.SPACES_SHARES],{queryParams:{select:e.name}});if(e.parent?.id&&!e.file?.id&&e.file?.path.indexOf("/")===-1)return this.router.navigate([y.SPACES_SHARES],{queryParams:{select:e.parent.name}});{let[t,n]=Qt(e);return this.router.navigate([t],{queryParams:{select:n}})}}};r.\u0275fac=function(t){return new(t||r)},r.\u0275prov=R({token:r,factory:r.\u0275fac,providedIn:"root"});let o=r;return o})();var O=class{constructor(r){this.hTimeExpirationAgo=0,this.hPerms={},this.newly=0,Object.assign(this,r),Se(this),this.updatePermission(),this.updateTimes()}fallBackMimeUrl(){this.mimeUrl=ue}updatePermission(){this.hPerms=H(this.link.permissions)}updateTimes(){if(this.hTimeAccessAgo=F(this.link.currentAccess).fromNow(!0),this.newly=de(this.link.currentAccess),this.link.expiresAt){this.link.expiresAt=new Date(F(this.link.expiresAt).local().format("YYYY-MM-DD"));let r=Math.max(0,F(this.link.expiresAt).diff(F(),"hours"));r===0?this.hTimeExpirationAgo=0:r<=24?this.hTimeExpirationAgo=1:this.hTimeExpirationAgo=Math.round(r/24)+1}else this.hTimeExpirationAgo=0}};var V=class{constructor(r){this.roots=[],this.managers=[],this.members=[],this.links=[],this.hPerms={},this.newly=0,this.hPerms=H(r.permissions),this.setMembers(N("members",r)),this.setRoots(N("roots",r)),Object.assign(this,r),this.hTimeAgo=F(this.modifiedAt).fromNow(!0),this.newly=de(this.modifiedAt),this.sort()}addRoot(r,i=!1){r.hPerms=Rt(r.permissions,[C.SHARE_INSIDE]),r.owner?.login&&(r.owner.avatarUrl=yt(r.owner.login)),r.file.mimeUrl=ee(r.file?.mime?r.file.mime:X),i?this.roots.unshift(r):this.roots.push(r),r.isDir=r.file.mime===X||!!r.externalPath}havePermission(r){return this.permissions.indexOf(r)>-1}setMembers(r){if(r)for(let i of r){let e=new K(i);e.isLink?this.links.push(e):e.spaceRole===he.IS_MANAGER?this.managers.push(e):this.members.push(e)}}setRoots(r){if(r)for(let i of r)this.addRoot(i)}sort(){Q(this.roots,"createdAt",!1),Q(this.managers,"createdAt",!1),Q(this.members,"createdAt",!1),Q(this.links,"createdAt",!1)}};var ti=(()=>{let r=class r{constructor(){this.http=d(Z)}listSpaces(){return this.http.get(It).pipe(S(e=>e.map(t=>new V(t))))}getSpace(e){return this.http.get(`${f.BASE}/${e}`).pipe(S(t=>new V(t)))}getUserSpaceRoots(e){return this.http.get(`${f.BASE}/${e}/${f.ROOTS}`)}createUserSpaceRoots(e,t){return this.http.post(`${f.BASE}/${e}/${f.ROOTS}`,t)}updateUserSpaceRoots(e,t){return this.http.put(`${f.BASE}/${e}/${f.ROOTS}`,t)}updateSpace(e){return this.http.put(`${f.BASE}/${e.id}`,e).pipe(S(t=>t?new V(t):null))}createSpace(e){return this.http.post(f.BASE,e).pipe(S(t=>(t.permissions=At,new V(t))))}deleteSpace(e,t){return this.http.request("delete",`${f.BASE}/${e}`,{body:t})}searchSpaces(e){return this.http.request("search",f.BASE,{body:e})}listSpaceShares(e){return this.http.get(`${f.BASE}/${e}/${f.SHARES}`)}getSpaceShare(e,t){return this.http.get(`${f.BASE}/${e}/${f.SHARES}/${t}`).pipe(S(n=>new w(n)))}updateSpaceShare(e,t){return this.http.put(`${f.BASE}/${e}/${f.SHARES}/${t.id}`,t).pipe(S(n=>new w(n)))}deleteSpaceShare(e,t){return this.http.delete(`${f.BASE}/${e}/${f.SHARES}/${t}`)}getSpaceShareLink(e,t){return this.http.get(`${f.BASE}/${e}/${f.LINKS}/${t}`).pipe(S(n=>new O(n)))}listTrashBins(){return this.http.get(wt)}checkSpaceRootPath(e){return this.http.post(xt,{path:e})}};r.\u0275fac=function(t){return new(t||r)},r.\u0275prov=R({token:r,factory:r.\u0275fac,providedIn:"root"});let o=r;return o})();var pi=o=>({dateInputFormat:"YYYY-MM-DD",containerClass:"theme-dark-blue",returnFocusToInput:!0,minDate:o,showWeekNumbers:!1}),ci=(o,r)=>r.key;function mi(o,r){o&1&&(s(0,"span",4),c(1,"Edit link"),a())}function hi(o,r){o&1&&(s(0,"span",4),c(1,"New link"),a())}function di(o,r){o&1&&g(0,"div",54)}function ui(o,r){if(o&1){let i=oe();s(0,"button",53),b(1,"translate"),ve("ngModelChange",function(t){let n=j(i).$implicit,p=u(3);return be(p.permissions[n.key],t)||(p.permissions[n.key]=t),q(t)}),D("ngModelChange",function(){j(i);let t=u(3);return q(t.onPermissionChange())}),g(2,"fa-icon",50),a(),A(3,di,1,0,"div",54)}if(o&2){let i=r.$implicit,e=r.$index,t=r.$count,n=u(3);Ee("ngModel",n.permissions[i.key]),m("tooltip",v(1,4,n.SPACES_PERMISSIONS_TEXT[i.key].text,n.locale.language)),l(2),m("icon",n.SPACES_PERMISSIONS_TEXT[i.key].icon),l(),E(e===t-1?3:-1)}}function fi(o,r){if(o&1&&(ke(0,ui,4,7,null,null,ci),b(2,"keyvalue")),o&2){let i=u(2);Ae(v(2,0,i.permissions,i.originalOrderKeyValue))}}function Si(o,r){if(o&1&&(s(0,"div",51),g(1,"app-share-repository",55),a()),o&2){let i=u(2);l(),m("share",i.share)("showIcon",!0)("showFullPath",!0)}}function gi(o,r){if(o&1){let i=oe();s(0,"div",44),g(1,"fa-icon",45),s(2,"div",46)(3,"span"),c(4),a(),s(5,"span",47),c(6),a()(),s(7,"div",48),A(8,fi,3,3),s(9,"button",49),b(10,"translate"),D("click",function(){j(i);let t=u();return q(t.toggleRequireAuth())}),g(11,"fa-icon",50),a(),s(12,"button",49),b(13,"translate"),D("click",function(){j(i);let t=u();return q(t.copyToClipboard())}),g(14,"fa-icon",50),a()()(),A(15,Si,2,3,"div",51),g(16,"hr",52)}if(o&2){let i=u();l(),m("icon",i.icons.links),l(3),W(i.linkForm.value.name||i.linkForm.value.shareName),l(2),W(i.linkForm.value.email),l(2),E(i.share&&i.permissions?8:-1),l(),P(G("btn btn-sm ",i.linkForm.value.requireAuth?"btn-success":"btn-warning")),m("tooltip",v(10,15,"Password",i.locale.language)),l(2),m("icon",i.linkForm.value.requireAuth?i.icons.faLock:i.icons.faLockOpen),l(),P(G("btn btn-sm ms-2 ",i.linkWasCopied?"btn-info":"btn-secondary")),m("tooltip",v(13,18,"Copy link",i.locale.language)),l(2),m("icon",i.linkWasCopied?i.icons.faClipboardCheck:i.icons.faClipboard),l(),E(i.share?15:-1)}}function _i(o,r){if(o&1&&(s(0,"span"),c(1),a()),o&2){let i=u();P(G("badge rounded-pill ",(i.share?i.share.link.nbAccess:i.link.nbAccess)>=i.linkForm.value.limitAccess?"bg-danger":"bg-success")),l(),Ke(" ",i.share?i.share.link.nbAccess:i.link.nbAccess,"/",i.linkForm.value.limitAccess," ")}}function Ci(o,r){if(o&1&&(s(0,"span",20),c(1),a()),o&2){let i=u();l(),W(i.share?i.share.link.nbAccess:i.link.nbAccess)}}function ki(o,r){if(o&1&&(s(0,"div",27)(1,"label",56),c(2,"Share name"),a(),g(3,"input",57),b(4,"translate"),a(),s(5,"div",27)(6,"label",58),c(7,"Share description"),a(),g(8,"input",59),b(9,"translate"),a()),o&2){let i=u();l(3),J("is-invalid",i.linkForm.controls.shareName.invalid),m("placeholder",v(4,4,"Share name",i.locale.language)),l(5),m("placeholder",v(9,7,"Share description",i.locale.language))}}function Ai(o,r){if(o&1&&(s(0,"option",30),c(1),a()),o&2){let i=r.$implicit,e=u();m("ngValue",i),l(),W(e.i18nLanguageText[i])}}function Ei(o,r){if(o&1&&(s(0,"div",37),g(1,"app-password-strength-bar",60),a()),o&2){let i=u();l(),m("passwordToCheck",i.password)}}function bi(o,r){if(o&1){let i=oe();s(0,"button",61),D("click",function(){j(i);let t=u();return q(t.confirmDeletion=!0)}),c(1," Remove "),a()}if(o&2){let i=u();m("disabled",i.confirmDeletion)}}var ge=(()=>{let r=class r{constructor(){this.layout=d(Y),this.parentSpaceId=null,this.isSharesRepo=!1,this.inSharesList=!1,this.submitEvent=new Ce,this.shareChange=new Ce,this.locale=d(le),this.confirmDeletion=!1,this.submitted=!1,this.SPACES_PERMISSIONS_TEXT=Tt,this.originalOrderKeyValue=bt,this.icons={faEye:dt,faEyeSlash:_t,links:U.LINKS,faClipboard:ft,faClipboardCheck:ut,faLock:gt,faLockOpen:St},this.languages=this.layout.getLanguages(),this.minDate=Ie(),this.defaultPassword=this.layout.translateString(Ct),this.passwordMinLength=8,this.password="",this.linkIsExpired=!1,this.linkIsHovered=!1,this.linkWasCopied=!1,this.i18nLanguageText=kt,this.userService=d(Ot),this.sharesService=d(ei),this.linksService=d(ii),this.spacesService=d(ti),this.minDate.setDate(this.minDate.getDate()+1)}ngOnInit(){this.link?this.initLink():this.file?this.initFile():this.initShareLink(),this.linkForm.value.requireAuth&&(this.password=this.defaultPassword),this.linkForm.value.expiresAt&&this.isLinkIsExpired(this.share?this.share.link.expiresAt:this.link.expiresAt),this.linkForm.controls.expiresAt.valueChanges.subscribe(e=>this.isLinkIsExpired(e))}onPermissionChange(){let e=$t(this.permissions);this.linkForm.controls.permissions.setValue(e),e!==this.share.link.permissions?this.linkForm.controls.permissions.markAsDirty():this.linkForm.controls.permissions.markAsPristine()}toggleRequireAuth(){this.linkForm.controls.requireAuth.setValue(!this.linkForm.value.requireAuth),this.linkForm.controls.requireAuth.markAsDirty()}copyToClipboard(){this.linksService.copyLinkToClipboard(this.share?this.share.link.uuid:this.link.uuid),this.linkWasCopied=!0,this.layout.sendNotification("info","Link copied",this.linkForm.value.name||this.linkForm.value.shareName),setTimeout(()=>this.linkWasCopied=!1,3e3)}onCancel(){this.confirmDeletion?this.confirmDeletion=!1:this.layout.closeDialog()}onSubmit(){if(this.submitted=!0,this.confirmDeletion){(this.parentSpaceId?this.spacesService.deleteSpaceShare(this.parentSpaceId,this.share.id):this.sharesService.deleteShare(this.share.id)).subscribe({next:()=>{this.layout.sendNotification("success","Link deleted",this.share.link.name||this.share.name),this.shareChange.emit(["delete",this.share]),this.layout.closeDialog()},error:p=>{this.layout.sendNotification("error","Delete share",this.share.name,p),this.layout.closeDialog()}});return}if(this.file?.id){let t=this.share,{link:n}=t,p=Pe(t,["link"]),k=T(I(I({},n),this.linkForm.value),{password:this.mustIncludePassword()?this.password:void 0});p.name=N("shareName",k),p.description=N("shareDescription",k);let x=this.linksService.shareLinkGuestToMember(-1,-1,k);this.sharesService.createShare(T(I({},p),{type:Te.LINK,links:[x]})).subscribe({next:L=>{this.shareChange.emit(["add",L]),this.layout.sendNotification("success","Link created",n.name||L.name),this.layout.closeDialog()},error:L=>{this.layout.sendNotification("error","Link error",this.share.name,L),this.layout.closeDialog()}});return}let e={};for(let n in this.linkForm.controls)this.linkForm.controls[n].dirty&&(e[n]=this.linkForm.controls[n].value);if(this.mustIncludePassword()&&(e.password=this.password),this.share?.id){Object.keys(e).length&&this.linksService.updateLinkFromSpaceOrShare(this.share.link.id,this.share.id,Lt.SHARE,e).subscribe({next:n=>{this.share.name=this.linkForm.value.shareName,this.share.description=this.linkForm.value.shareDescription,this.share.link=Object.assign(this.share.link,n),this.share.updateTimes(),this.share.updatePermission(),this.shareChange.emit(["update",this.share]),this.layout.closeDialog()},error:n=>{this.layout.sendNotification("error","Link error",this.share.link.name||this.share.name,n),this.layout.closeDialog()}}),this.layout.closeDialog();return}this.submitEvent.emit(e)}initFile(){let e=this.sharesService.initShareFromFile(this.userService.user,this.file,this.isSharesRepo,this.inSharesList)[0];this.share=T(I({},e),{link:{id:-1,userId:-1,uuid:"",isActive:!0,requireAuth:!1,permissions:"",nbAccess:0,limitAccess:0}}),this.linksService.genUUID().subscribe(t=>this.share.link.uuid=t),this.initShareLink(),this.onPermissionChange()}initShareLink(){this.linkForm=new ye({shareName:new _(this.share.name,ae.required),shareDescription:new _(this.share.description||""),name:new _(this.share.link?.name||""),email:new _(this.share.link?.email||"",ae.email),language:new _(this.share.link.language||null),limitAccess:new _(this.share.link.limitAccess||null),expiresAt:new _(this.share.link.expiresAt||null),requireAuth:new _(this.share.link.requireAuth||!1),permissions:new _(this.share.link.permissions),isActive:new _(this.share.link.isActive)}),this.permissions=Nt(this.share.file.permissions,this.share.link.permissions,[C.SHARE_INSIDE,C.SHARE_OUTSIDE,...this.share.file.isDir?[]:[C.DELETE,C.ADD]])}initLink(){this.linkForm=new ye({shareName:new _(""),shareDescription:new _(""),name:new _(this.link.name||""),email:new _(this.link.email||"",ae.email),language:new _(this.link.language||null),limitAccess:new _(this.link.limitAccess||null),expiresAt:new _(this.link.expiresAt||null),requireAuth:new _(this.link.requireAuth||!1),permissions:new _(this.link.permissions),isActive:new _(this.link.isActive)}),this.link.id||(this.linkForm.controls.name.markAsDirty(),this.linkForm.controls.isActive.markAsDirty())}isLinkIsExpired(e){if(e==null){if(this.linkIsExpired=!1,e===null)return;this.linkForm.controls.expiresAt.setValue(null)}this.linkIsExpired=Ie()>=e}mustIncludePassword(){return!!this.password.length&&this.password!==this.defaultPassword}};r.\u0275fac=function(t){return new(t||r)},r.\u0275cmp=re({type:r,selectors:[["app-link-dialog"]],inputs:{share:"share",parentSpaceId:"parentSpaceId",link:"link",file:"file",isSharesRepo:"isSharesRepo",inSharesList:"inSharesList"},outputs:{submitEvent:"submitEvent",shareChange:"shareChange"},decls:73,vars:52,consts:[[1,"modal-header","align-items-center"],[1,"modal-title"],[1,"me-2",3,"icon"],[1,"modal-title","ms-auto"],["l10nTranslate",""],["aria-label","Close","type","button",1,"btn-close","btn-close-white","ms-2",3,"click"],[1,"modal-body"],["autocomplete","off",3,"formGroup"],[1,"d-flex"],[1,"d-flex","flex-column","flex-grow-1"],[1,"d-flex","align-items-center","cursor-pointer","py-2",3,"mouseover","mouseleave","focus","click"],["for","link","l10nTranslate",""],["id","link",1,"ms-auto"],[1,"d-flex","align-items-center","py-2"],["for","state","l10nTranslate","",1,"cursor-pointer","me-auto"],[1,"d-flex","align-items-center","form-check","form-switch","cursor-pointer"],["id","state","formControlName","isActive","type","checkbox","role","button",1,"form-check-input"],["for","access","l10nTranslate",""],["id","access",1,"ms-auto"],[3,"class"],[1,"badge","rounded-pill","bg-success"],[1,"d-flex","align-items-center"],["for","guestName","l10nTranslate",""],["id","guestName","formControlName","name","type","text",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder"],[1,"d-flex","align-items-center","justify-content-between","px-0"],["for","guestEmail","l10nTranslate",""],["id","guestEmail","autocomplete","off","formControlName","email","type","email",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder"],[1,"d-flex","align-items-center","justify-content-between"],["for","guestLanguage","l10nTranslate",""],["id","guestLanguage","formControlName","language",1,"form-control","form-select","form-select-sm","ms-auto","w-50"],[3,"ngValue"],["for","limitAccess","l10nTranslate",""],["id","limitAccess","formControlName","limitAccess","min","1","type","number",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder"],["for","expiration","l10nTranslate",""],["bsDatepicker","","id","expiration","formControlName","expiresAt","placement","left","type","text",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder","bsConfig"],[1,"d-flex","align-items-center","px-0"],["for","requireAuth","translate","",1,"cursor-pointer","me-auto"],[1,"d-flex","align-items-center","d-none","d-sm-flex","mx-auto"],["id","requireAuth","formControlName","requireAuth","type","checkbox","role","button",1,"form-check-input"],["placeholder","Set a password",2,"width","45%",3,"passwordChange","isRequired","disabled","passwordMinLength","password","showGenerator"],[1,"modal-footer"],["type","button","l10nTranslate","",1,"btn","btn-sm","btn-danger",3,"disabled"],["data-dismiss","modal","type","button","l10nTranslate","",1,"btn","btn-sm","btn-secondary","ms-auto",3,"click"],["type","button","l10nTranslate","",3,"click","disabled"],[1,"d-flex","flex-fill","align-items-center"],[1,"circle-primary-icon","me-2",3,"icon"],[1,"d-flex","flex-column","overflow-wrap-and-whitespace","me-2"],[1,"fs-xxxs"],[1,"d-flex","ms-auto"],["container","body","type","button",3,"click","tooltip"],["size","lg",3,"icon"],[1,"d-flex","align-items-center","d-none","d-sm-flex","py-2"],[1,"my-2"],["btnCheckbox","","type","button",1,"btn","btn-sm","btn-custom","me-0","ms-2",3,"ngModelChange","ngModel","tooltip"],[1,"vr","mx-2"],["id","file",3,"share","showIcon","showFullPath"],["for","shareName","l10nTranslate",""],["id","shareName","formControlName","shareName","type","email",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder"],["for","shareDescription","l10nTranslate",""],["id","shareDescription","formControlName","shareDescription","type","email",1,"form-control","form-control-sm","ms-auto","w-50",3,"placeholder"],[3,"passwordToCheck"],["type","button","l10nTranslate","",1,"btn","btn-sm","btn-danger",3,"click","disabled"]],template:function(t,n){t&1&&(s(0,"div",0)(1,"h4",1),g(2,"fa-icon",2),s(3,"span"),c(4),a()(),s(5,"h4",3),A(6,mi,2,0,"span",4)(7,hi,2,0,"span",4),a(),s(8,"button",5),D("click",function(){return n.layout.closeDialog()}),a()(),s(9,"div",6),A(10,gi,17,21),s(11,"form",7)(12,"div",8)(13,"div",9)(14,"div",10),D("mouseover",function(){return n.linkIsHovered=!0})("mouseleave",function(){return n.linkIsHovered=!1})("focus",function(){return n.linkIsHovered=!0})("click",function(){return n.copyToClipboard()}),s(15,"label",11),c(16,"Link"),a(),s(17,"span",12),c(18),a()(),s(19,"div",13)(20,"label",14),c(21,"Active"),a(),s(22,"div",15),g(23,"input",16),s(24,"span"),c(25),b(26,"translate"),a()()(),s(27,"div",13)(28,"label",17),c(29,"Current access count"),a(),s(30,"span",18),A(31,_i,2,5,"span",19)(32,Ci,2,1,"span",20),a()(),A(33,ki,10,10),s(34,"div",21)(35,"label",22),c(36,"Guest name"),a(),g(37,"input",23),b(38,"translate"),a(),s(39,"div",24)(40,"label",25),c(41,"Guest email"),a(),g(42,"input",26),b(43,"translate"),a(),s(44,"div",27)(45,"label",28),c(46,"Guest language"),a(),s(47,"select",29),ke(48,Ai,2,2,"option",30,Ue),a()(),s(50,"div",27)(51,"label",31),c(52,"Limit access"),a(),g(53,"input",32),b(54,"translate"),a(),s(55,"div",27)(56,"label",33),c(57,"Expiration"),a(),g(58,"input",34),b(59,"translate"),a(),s(60,"div",35)(61,"label",36),c(62,"Password"),a(),A(63,Ei,2,1,"div",37),s(64,"div",15),g(65,"input",38),a(),s(66,"app-input-password",39),ve("passwordChange",function(k){return be(n.password,k)||(n.password=k),k}),a()()()()()(),s(67,"div",40),A(68,bi,2,1,"button",41),s(69,"button",42),D("click",function(){return n.onCancel()}),c(70,"Cancel"),a(),s(71,"button",43),D("click",function(){return n.onSubmit()}),c(72),a()()),t&2&&(l(2),m("icon",n.icons.links),l(2),W(n.linkForm.value.name||n.linkForm.value.shareName),l(2),E(n.share!=null&&n.share.id||n.link!=null&&n.link.id?6:7),l(4),E(n.share||n.link?10:-1),l(),m("formGroup",n.linkForm),l(6),J("text-primary",n.linkIsHovered),l(),M(" ",n.share?n.share.link.uuid:n.link.uuid," "),l(6),P(G("badge rounded-pill ms-3 ",n.linkForm.value.isActive?"bg-primary":"bg-danger")),l(),M(" ",v(26,35,n.linkForm.value.isActive?"yes":"no",n.locale.language)," "),l(6),E(n.linkForm.value.limitAccess?31:32),l(2),E(n.share?33:-1),l(4),m("placeholder",v(38,38,"Guest name",n.locale.language)),l(5),J("is-invalid",n.linkForm.controls.email.invalid),m("placeholder",v(43,41,"Guest email",n.locale.language)),l(6),Ae(n.languages),l(5),m("placeholder",v(54,44,"Unlimited",n.locale.language)),l(5),J("text-danger",n.linkIsExpired),m("placeholder",v(59,47,"Never expires",n.locale.language))("bsConfig",Ve(50,pi,n.minDate)),l(5),E(n.linkForm.value.requireAuth&&n.password!==n.defaultPassword?63:-1),l(3),m("isRequired",n.linkForm.value.requireAuth)("disabled",!n.linkForm.value.requireAuth)("passwordMinLength",n.passwordMinLength),Ee("password",n.password),m("showGenerator",!0),l(2),E(n.share!=null&&n.share.id?68:-1),l(3),P(G("btn btn-sm ",n.confirmDeletion?"btn-danger":"btn-primary")),m("disabled",n.linkForm.invalid||n.linkForm.controls.requireAuth.value&&n.password.length<n.passwordMinLength||n.submitted),l(),M(" ",n.confirmDeletion?"Confirm deletion":"Confirm"," "))},dependencies:[me,st,mt,pt,ct,Ft,Mt,rt,Xe,tt,it,We,ze,qe,et,Ge,Ze,nt,Ye,Dt,lt,at,ot,Je,Qe,Jt,Ut,je,pe],encapsulation:2});let o=r;return o})();var ii=(()=>{let r=class r{constructor(){this.router=d(se),this.http=d(Z),this.layout=d(Y),this.authService=d(Bt),this.clipboard=d(Xt),this.filesService=d(Ht)}shareLinksList(){return this.http.get(Gt).pipe(S(e=>e.map(t=>new O(t))))}shareLink(e){return this.http.get(`${te}/${e}`).pipe(S(t=>new O(t)))}shareLinkChild(e,t){return this.http.get(`${te}/${e}/${h.CHILDREN}/${t}`).pipe(S(n=>new O(n)))}linkFromSpaceOrShare(e,t,n){return this.http.get(`${te}/${e}/${n}/${t}`)}linkValidation(e){return this.http.get(`${Kt}/${e}`).pipe(S(t=>t.ok?t.link:(t.error&&(t.error===we.UNAUTHORIZED?this.router.navigate([`${B.LINK}/${e}/${B.AUTH}`]).catch(console.error):this.router.navigate([`${B.LINK}/${e}/${t.error}`]).catch(console.error)),!1)),_e(()=>(this.authService.logout(),z(!1))))}linkAccessOrView(e,t,n){this.http.get(`${Vt}/${e}`).subscribe(p=>{p.token?this.authService.initUserFromResponse(p):this.authService.initUser(p),n?this.filesService.openViewerDialog(n,[],t.share.permissions).catch(console.error):t.space?this.router.navigate([y.SPACES_FILES,t.space.alias]).catch(console.error):t.share.isDir?this.router.navigate([y.SPACES_SHARES,t.share.alias]).catch(console.error):this.router.navigate([y.SPACES_SHARES],{queryParams:{select:t.share.alias}}).catch(console.error)})}linkDownload(e){vt(`${jt}/${e}`)}linkAuthentication(e,t){return this.http.post(`${qt}/${e}`,{password:t}).pipe(S(n=>(this.authService.initUserFromResponse(n),this.router.navigate([`${B.LINK}/${e}`]).catch(console.error),!0)),_e(n=>(n.error.message===we.UNAUTHORIZED?this.layout.sendNotification("error","Link","Bad password"):this.router.navigate([`${B.LINK}/${e}/${n.error.message}`]).catch(console.error),z(!1))))}copyLinkToClipboard(e){this.clipboard.copyFromContent(this.genLink(e))}genUUID(){return this.http.get(Zt).pipe(S(e=>e.uuid))}createLinkDialog(e){this.genUUID().subscribe(t=>{let n=this.layout.openDialog(ge,"md",{initialState:{link:{name:e.name,uuid:t,isActive:!0,nbAccess:0}}});this.subscribeToSubmitLinkModal(n,e)})}updateLinkFromSpaceOrShare(e,t,n,p){return this.http.put(`${te}/${e}/${n}/${t}`,p)}editLinkDialog(e,t,n){if(t.id===0||e?.linkSettings?.uuid){let p=this.layout.openDialog(ge,"md",{initialState:{link:e.linkSettings}});this.subscribeToSubmitLinkModal(p,t,e)}else this.linkFromSpaceOrShare(e.linkId,t.id,n).subscribe({next:p=>{let k=this.layout.openDialog(ge,"md",{initialState:{link:T(I({},p),{permissions:e.permissions})}});this.subscribeToSubmitLinkModal(k,t,e)},error:p=>this.layout.sendNotification("error","Link error",e.name||t.name,p)})}shareLinkGuestToMember(e,t,n){return new K({id:e,linkId:t,name:n.name,description:n.email,createdAt:n.createdAt,permissions:n.permissions,type:Pt.LINK,spaceRole:he.IS_MEMBER,linkSettings:n},[C.SHARE_INSIDE,C.SHARE_OUTSIDE])}subscribeToSubmitLinkModal(e,t,n){e.content.submitEvent.pipe($e(1)).subscribe(p=>{if(Object.keys(p).length){let k=Object.assign(e.content.link,p),x=this.shareLinkGuestToMember(k.userId||-(t.links.length+1),n?.linkId||-(t.links.length+1),k);x.linkId?t.links=[x,...t.links.filter(L=>L.linkId!==x.linkId)]:t.links=[x,...t.links]}e.content.layout.closeDialog()})}genLink(e){return`${document.location.origin}/#/${B.LINK}/${e}`}};r.\u0275fac=function(t){return new(t||r)},r.\u0275prov=R({token:r,factory:r.\u0275fac,providedIn:"root"});let o=r;return o})();export{Xt as a,Te as b,Jt as c,Se as d,w as e,ei as f,V as g,ti as h,ge as i,ii as j};