@duplicati/ngclient 0.0.195 → 0.0.196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/assets/dest-icons/dunkel.png +0 -0
  2. package/assets/dest-icons/office365.png +0 -0
  3. package/chunk-26MRZAFB.js +1 -0
  4. package/chunk-26Z7TPJB.js +4 -0
  5. package/{chunk-2CGFRRWO.js → chunk-3K3BYB36.js} +1 -1
  6. package/chunk-3UVBV6B3.js +3 -0
  7. package/chunk-44X4A7WY.js +1 -0
  8. package/chunk-4AQZL2UM.js +1 -0
  9. package/chunk-56MQ46JU.js +1 -0
  10. package/{chunk-FUQM5D63.js → chunk-5LBG6MOL.js} +1 -1
  11. package/{chunk-L4B2T7UE.js → chunk-5VE6P5U5.js} +1 -1
  12. package/{chunk-ONYKQCZU.js → chunk-6LAXPU22.js} +1 -1
  13. package/{chunk-O6J2CI2F.js → chunk-6TZPGZ7P.js} +1 -1
  14. package/{chunk-WC6RBAAY.js → chunk-7AVOHYTE.js} +1 -1
  15. package/{chunk-X52R5Q6W.js → chunk-7LTHH6OG.js} +1 -1
  16. package/{chunk-KANLHRTR.js → chunk-7TWUW4XJ.js} +1 -1
  17. package/{chunk-RZUDIPEJ.js → chunk-A2O2XHOB.js} +1 -1
  18. package/{chunk-XBDCSV3I.js → chunk-AIH3GSIT.js} +1 -1
  19. package/chunk-AODNZLCK.js +2 -0
  20. package/{chunk-4FWSDHOG.js → chunk-B62TPRVG.js} +1 -1
  21. package/{chunk-LZCZIUIC.js → chunk-BABBRM6A.js} +1 -1
  22. package/{chunk-3OE7TSMW.js → chunk-BYUBKTO5.js} +1 -1
  23. package/chunk-C5RNVTX6.js +1 -0
  24. package/{chunk-4SMU6FWN.js → chunk-CFNARBNK.js} +1 -1
  25. package/chunk-D6IP567E.js +1 -0
  26. package/{chunk-XR3MBCW5.js → chunk-EE5SIDTF.js} +1 -1
  27. package/{chunk-OH4MM62T.js → chunk-EYCSUKCD.js} +1 -1
  28. package/chunk-F4ZMF6H4.js +1 -0
  29. package/chunk-G4IFZKMI.js +1 -0
  30. package/{chunk-E2Z56LIA.js → chunk-G6NEOWER.js} +1 -1
  31. package/chunk-GZ5HYA4R.js +1 -0
  32. package/chunk-H45NIIKQ.js +1 -0
  33. package/{chunk-IXIH5IF7.js → chunk-HCSB3IIB.js} +1 -1
  34. package/{chunk-CLRYJLBH.js → chunk-HFZ6MYKF.js} +1 -1
  35. package/{chunk-TIQEZECZ.js → chunk-HOGZ74SB.js} +1 -1
  36. package/{chunk-D45OX6NR.js → chunk-HSHF5HR7.js} +1 -1
  37. package/chunk-HUZXJWCG.js +1 -0
  38. package/chunk-I27PVH6D.js +1 -0
  39. package/{chunk-5YPLB2HT.js → chunk-I2RQR4CB.js} +1 -1
  40. package/chunk-IMHM7ISI.js +2 -0
  41. package/{chunk-XUDS7MYD.js → chunk-KDSMLI73.js} +1 -1
  42. package/chunk-LPAIFT5I.js +11 -0
  43. package/{chunk-S7K2HURB.js → chunk-LTGF4KMG.js} +1 -1
  44. package/{chunk-TCB2ZD6T.js → chunk-MDXSNEQZ.js} +1 -1
  45. package/chunk-MI7UAY44.js +1 -0
  46. package/{chunk-FO4M5ZRY.js → chunk-MMEFBZO4.js} +1 -1
  47. package/chunk-MUFBZIQA.js +1 -0
  48. package/{chunk-S64V7K5F.js → chunk-MZ5COKIP.js} +1 -1
  49. package/chunk-NEC5ZCCT.js +1 -0
  50. package/{chunk-NSGMUBKR.js → chunk-NGNWWP6M.js} +1 -1
  51. package/chunk-NK5WD6WE.js +1 -0
  52. package/{chunk-DZCAUCS4.js → chunk-NNNKIEPR.js} +1 -1
  53. package/chunk-NQAH5AL7.js +1 -0
  54. package/{chunk-VIHMVAQG.js → chunk-O5SO2U6L.js} +1 -1
  55. package/chunk-OKYEX2SC.js +2 -0
  56. package/chunk-P7OUKLCO.js +1 -0
  57. package/{chunk-XURQUV7B.js → chunk-PO3L6MKW.js} +2 -2
  58. package/{chunk-F35HIVN6.js → chunk-POPZ47SS.js} +1 -1
  59. package/{chunk-44IYHRP5.js → chunk-QHBOEY2O.js} +1 -1
  60. package/chunk-QIGELWLA.js +1 -0
  61. package/{chunk-JKZHZHVK.js → chunk-QJUNU5NP.js} +1 -1
  62. package/{chunk-5ZAN5YLF.js → chunk-QLENTLZJ.js} +1 -1
  63. package/{chunk-3BCOQAXR.js → chunk-QTVWYVBT.js} +1 -1
  64. package/{chunk-4ZJ2CTPL.js → chunk-R5YJUVWW.js} +1 -1
  65. package/{chunk-XMEVHAAW.js → chunk-S2RZQVCD.js} +1 -1
  66. package/{chunk-MRTE3AG7.js → chunk-SZUNW4JO.js} +1 -1
  67. package/{chunk-AOMCREUU.js → chunk-T4IKTBRQ.js} +1 -1
  68. package/chunk-TL4WOQKT.js +1 -0
  69. package/{chunk-EBH2BDUS.js → chunk-U2E3ZQUP.js} +1 -1
  70. package/{chunk-ZY46ZFXQ.js → chunk-UK7MV4OF.js} +1 -1
  71. package/chunk-UNLX3IVU.js +1 -0
  72. package/{chunk-V4SUZRAG.js → chunk-UNMDSCAN.js} +1 -1
  73. package/chunk-UTZZ4OCF.js +1 -0
  74. package/chunk-V7OCP4NF.js +1 -0
  75. package/{chunk-TNJ2RJ2V.js → chunk-VDSX2M4H.js} +1 -1
  76. package/{chunk-GBXJU6OY.js → chunk-VFBRHP2H.js} +1 -1
  77. package/chunk-VLC2XPEM.js +1 -0
  78. package/chunk-VVQRXJRI.js +1 -0
  79. package/chunk-WIQPWRZV.js +1 -0
  80. package/{chunk-WVRISZPB.js → chunk-X4GGVQ44.js} +1 -1
  81. package/chunk-XIYAYCFU.js +1 -0
  82. package/chunk-XZH2SXWG.js +1 -0
  83. package/chunk-YHMXLWRX.js +1 -0
  84. package/chunk-Z3PICU3O.js +1 -0
  85. package/{chunk-ENMA37SI.js → chunk-ZHGDQABC.js} +1 -1
  86. package/{chunk-DIJYLB6O.js → chunk-ZU6T3TW3.js} +1 -1
  87. package/chunk-ZWLAV6HO.js +1 -0
  88. package/index.html +1 -1
  89. package/locale/messages.de_CH.json +708 -0
  90. package/locale/messages.de_DE.json +708 -0
  91. package/locale/messages.en.json +777 -1
  92. package/locale/messages.en_GB.json +606 -5
  93. package/locale/messages.es_AR.json +193 -0
  94. package/locale/messages.fr_CA.json +708 -0
  95. package/locale/messages.fr_FR.json +708 -0
  96. package/locale/messages.it_IT.json +708 -0
  97. package/locale/messages.ja.json +169 -0
  98. package/locale/messages.ja_JP.json +3 -4
  99. package/locale/messages.json +777 -1
  100. package/locale/messages.nl_BE.json +708 -0
  101. package/locale/messages.zh-Hans.json +9 -15
  102. package/locale/messages.zh-Hant.json +639 -0
  103. package/locale/messages.zh.json +639 -0
  104. package/locale/messages.zh_CN.json +9 -15
  105. package/locale/messages.zh_HK.json +639 -0
  106. package/{main-EGVXKK35.js → main-7BGVZMHJ.js} +1 -1
  107. package/package.json +1 -1
  108. package/chunk-2JMS6ROE.js +0 -1
  109. package/chunk-3462PHUY.js +0 -1
  110. package/chunk-6GTXSMAH.js +0 -2
  111. package/chunk-6JS32BWJ.js +0 -2
  112. package/chunk-6NFCRY7O.js +0 -1
  113. package/chunk-6U37VGIP.js +0 -1
  114. package/chunk-6XFXDO6Y.js +0 -7
  115. package/chunk-AZHCUEP6.js +0 -1
  116. package/chunk-DCSAOEZR.js +0 -1
  117. package/chunk-E24DEHPH.js +0 -1
  118. package/chunk-EEG6BJZA.js +0 -1
  119. package/chunk-FKMUWCFT.js +0 -1
  120. package/chunk-GEBBLUCV.js +0 -2
  121. package/chunk-H47NYSA5.js +0 -1
  122. package/chunk-HG3JMGZT.js +0 -1
  123. package/chunk-J6BDQXGM.js +0 -1
  124. package/chunk-JB4BH5FG.js +0 -3
  125. package/chunk-JOPFYW6K.js +0 -1
  126. package/chunk-JU3IJWLQ.js +0 -1
  127. package/chunk-LYYUFZ36.js +0 -1
  128. package/chunk-M2VB6FGE.js +0 -1
  129. package/chunk-MPUY3ELB.js +0 -1
  130. package/chunk-NMC6ODBC.js +0 -1
  131. package/chunk-OMCDVUR6.js +0 -1
  132. package/chunk-ONXV5IRS.js +0 -1
  133. package/chunk-P42HQ2IS.js +0 -1
  134. package/chunk-PF77AJOA.js +0 -1
  135. package/chunk-PSU4AIIW.js +0 -1
  136. package/chunk-PT5SA5DK.js +0 -1
  137. package/chunk-RUMIANYF.js +0 -1
  138. package/chunk-SFDEJ4KT.js +0 -1
  139. package/chunk-T5MJYYYR.js +0 -1
  140. package/chunk-VIFNOUPQ.js +0 -1
  141. package/chunk-VRXOIVWD.js +0 -1
  142. package/chunk-WYIQINGL.js +0 -1
  143. package/chunk-XADU2VUM.js +0 -1
  144. package/chunk-YP4LWQJG.js +0 -4
  145. package/chunk-YPP2KQ47.js +0 -1
@@ -1 +1 @@
1
- import{b as ke,c as Ae}from"./chunk-GEBBLUCV.js";import{a as Te}from"./chunk-JKZHZHVK.js";import{a as Ie}from"./chunk-TCB2ZD6T.js";import{a as k}from"./chunk-VIHMVAQG.js";import{a as Me}from"./chunk-44IYHRP5.js";import{b as Ee}from"./chunk-OMCDVUR6.js";import"./chunk-4FWSDHOG.js";import{a as D}from"./chunk-6Q6SSTBK.js";import{a as Re}from"./chunk-MRTE3AG7.js";import"./chunk-D45OX6NR.js";import"./chunk-FUQM5D63.js";import"./chunk-DIJYLB6O.js";import{a as H}from"./chunk-P42HQ2IS.js";import{a as h,b as be,c as C,d as we,e as I}from"./chunk-KANLHRTR.js";import{v as ve,x as Ce}from"./chunk-V4SUZRAG.js";import{a as ye,d as Se}from"./chunk-4SMU6FWN.js";import{c as me,d as de,g as ue,h as he,i as fe,j as ge}from"./chunk-VRXOIVWD.js";import{a as re}from"./chunk-L4B2T7UE.js";import{a as se,b as ie,c as ae,e as pe,f as ce,g as le}from"./chunk-XURQUV7B.js";import{fa as oe,ka as ne}from"./chunk-WC6RBAAY.js";import"./chunk-XUDS7MYD.js";import{Bb as Z,E as M,I as K,Ic as ee,Jc as te,K as T,M as _,R as v,U as q,W as s,cb as Y,da as z,ea as X,f as W,g as $,l as G,la as d,m as B,na as Q,p as w,y as P,z as J}from"./chunk-YP4LWQJG.js";import"./chunk-7CGTOI24.js";var A=class e{#e=s(h);#a=s(C);ngOnInit(){be(),this.#a.fetchConfig(),this.#e.clearAllNotCurrentVersion()}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=Y({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(o,n){o&1&&Z(0,"router-outlet")},dependencies:[me],encapsulation:2})};var Ne={production:!0,baseUrl:"/api",machineServerUrl:"${WS_URL}",defaultTimeout:3e4};var f=new q("ENVIRONMENT");var N=class e{#e=s(Se);isLoaded=d(!1);webmodules=d(null);preload(t=!1){let o=this.#e.getApiV1Webmodules().pipe(_(n=>this.webmodules.set(n)),M(()=>this.isLoaded.set(!0)));if(t)return o;o.subscribe()}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};var Fe=()=>{let e=s(I);return e.token()?!0:e.checkProxyAuthed().pipe(T(t=>t?G(!0):e.refreshToken().pipe(w(()=>!0))))},We=()=>{let e=s(C),t=s(k),o=s(z),n=e.relayIsEnabled()?"longpoll":"websocket",a=[o.get(H).preload(!0),o.get(H).preloadFilterGroups(!0),o.get(N).preload(!0)];return e.configLoaded===null?P(a).pipe(w(()=>n)):e.configLoaded?.pipe(T(()=>P(a)))},$e=()=>!0,Oe={path:"connect/:typeParam",loadComponent:()=>import("./chunk-DZCAUCS4.js")},Ge=()=>{let e=s(h);return!e.getItem("locale")&&navigator.language&&e.setItem("locale",navigator.language),!0},xe=[{path:"",children:[{path:"login",canActivate:[],loadComponent:()=>import("./chunk-TIQEZECZ.js")},{path:"logout",loadComponent:()=>import("./chunk-XR3MBCW5.js")},{path:"",canActivate:[Fe],children:[{path:"",canActivate:[We,$e,Ge],children:[{path:"welcome",loadComponent:()=>import("./chunk-NSGMUBKR.js"),children:[{path:"",redirectTo:"select",pathMatch:"full"},{path:"select",loadComponent:()=>import("./chunk-XBDCSV3I.js")},Oe]},{path:"",loadComponent:()=>import("./chunk-E2Z56LIA.js"),children:[{path:"",loadComponent:()=>import("./chunk-6U37VGIP.js")},Oe,{path:"add-backup",loadComponent:()=>import("./chunk-CLRYJLBH.js")},{path:"backup/:id/export",loadComponent:()=>import("./chunk-ZY46ZFXQ.js")},{path:"backup/import",loadComponent:()=>import("./chunk-5ZAN5YLF.js")},{path:"backup-draft/:id",loadComponent:()=>import("./chunk-M2VB6FGE.js"),loadChildren:()=>import("./chunk-PF77AJOA.js")},{path:"backup/:id",loadComponent:()=>import("./chunk-M2VB6FGE.js"),loadChildren:()=>import("./chunk-PF77AJOA.js")},{path:"backup/:id/log",loadComponent:()=>import("./chunk-WVRISZPB.js")},{path:"backup/:id/database",loadComponent:()=>import("./chunk-O6J2CI2F.js")},{path:"backup/:id/commandline",loadComponent:()=>import("./chunk-JB4BH5FG.js")},{path:"backup/:id/commandline/:runId",loadComponent:()=>import("./chunk-JOPFYW6K.js")},{path:"backup/:id/delete",loadComponent:()=>import("./chunk-EBH2BDUS.js")},{path:"restore",children:[{path:"",loadComponent:()=>import("./chunk-3BCOQAXR.js")},{path:"from-config",loadComponent:()=>import("./chunk-RZUDIPEJ.js")}]},{path:"restore-from-files",loadComponent:()=>import("./chunk-WYIQINGL.js"),loadChildren:()=>import("./chunk-EEG6BJZA.js")},{path:"restore-draft/:id",loadComponent:()=>import("./chunk-WYIQINGL.js"),loadChildren:()=>import("./chunk-EEG6BJZA.js")},{path:"restore/:id",loadComponent:()=>import("./chunk-WYIQINGL.js"),loadChildren:()=>import("./chunk-EEG6BJZA.js")},{path:"settings",loadComponent:()=>import("./chunk-6JS32BWJ.js")},{path:"about",loadComponent:()=>import("./chunk-S7K2HURB.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-5YPLB2HT.js")},{path:"changelog",loadComponent:()=>import("./chunk-3OE7TSMW.js")},{path:"libraries",loadComponent:()=>import("./chunk-4ZJ2CTPL.js")},{path:"system-info",loadComponent:()=>import("./chunk-2CGFRRWO.js")},{path:"server-settings",loadComponent:()=>import("./chunk-AOMCREUU.js")},{path:"logs",loadChildren:()=>import("./chunk-LYYUFZ36.js")},{path:"crashlogs",loadComponent:()=>import("./chunk-GBXJU6OY.js")}]}]}]}]}]}];var U=null,Le=(e,t)=>{let o=s(I),n=s(de),a=s(h),p=s(f),i=a.getItem("locale"),u=s(Ce),c=ke(i),r=ye.BASE||"",m=e.url===`${r}/api/v1/auth/login`,S=e.url===`${r}/api/v1/auth/logout`,g=e.url===`${r}/api/v1/auth/refresh`,b=e.url===`${r}/api/v1/progressstate`,E=e.url===`${r}/api/v1/remoteoperation/test`,Ue=e.url===`${r}/api/v1/filesystem/validate`,je=e.url.startsWith(`${r}/api/v2/`),L=o.token(),j=e,F=e.headers.has("custom-proxy-check")||L===we;if(L&&e.url.startsWith(r+p.baseUrl)&&!F){let l=e.headers.set("Authorization",`Bearer ${L}`);i&&i!=="en-US"&&(l=l.set("X-Ui-Language",c)),j=e.clone({headers:l})}return t(j).pipe(w(l=>{if(l.type===4&&l.status===200&&je){let y=l.body;if(y?.Success===!1)throw{status:200,message:y?.Error??"Unknown error",error:{Error:y?.Error??"Unknown error"},requestBody:y}}return l}),J(l=>{let y=l.error?.Error||`Error Code: ${l.status}, Message: ${l.message}`;if(!F){let R=!0;if((b&&l.status===404||E||Ue)&&(R=!1),g&&l.status===401&&(R=!1,o.logout(),n.navigate(["/logout"])),!m&&!g&&!S&&l.status===401)return R=!1,U??=o.refreshToken().pipe(K()),U.pipe(T(()=>t(e.clone({headers:e.headers.set("Authorization",`Bearer ${o.token()}`)}))),M(()=>U=null));R&&u.error(y)}return B(()=>({error:l,message:y}))}))};var O=class e{#e=s(X);showError(t){let o=this.#e.querySelector("body > .loading");if(!o)return;o.classList.add("has-error"),o.innerHTML="";let n=this.#e.createElement("div");n.classList.add("loading-title"),n.textContent="Unable to connect";let a=this.#e.createElement("div");a.classList.add("loading-error"),a.textContent=t||"Unknown error";let p=this.#e.createElement("button");p.type="button",p.classList.add("retry-button"),p.textContent="Retry",p.addEventListener("click",()=>{this.#e.defaultView?.location.reload()}),o.append(n,a,p)}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};var Be="1.0.0",Pe=`portal-proxy-client-${D()}`,Je=1,x=class e{#e=1e3;#a=s(f);#d=s(O);#o=d("disconnected");#u=d(this.#e);#p=d(!1);#n=d(!1);#c=d(null);#s=!1;isConnectedToMachineServer=this.#n.asReadonly();wsState=this.#o.asReadonly();#l=[];#r={};#t=null;#h=new TextDecoder("utf-8");#m=null;#g=Q(()=>{let t=this.#p(),o=this.#u(),n=this.#c();if(!n||!t||!o||o<this.#e){this.#m&&window.clearInterval(this.#m);return}this.#m=window.setInterval(()=>{this.connectToMachineServer(n)},o)});#i(t){this.#s||(this.#s=!0,this.#d.showError(t||"Unable to connect to the server."))}#f(){this.#s||(this.#s=!0)}utf8Atob(t){let o=Uint8Array.from(atob(t),a=>a.charCodeAt(0)),n=this.#h.decode(o);return n?JSON.parse(n):null}connectToMachineServer(t,o){let n=o?.reconnect??!1,a=this.wsState();(a==="disconnected"||a==="error"||n)&&(this.#t?.close(),this.#t=null),!this.#t&&(this.#s=!1,this.#t=new WebSocket(this.#a.machineServerUrl),this.#o.set("connecting"),this.#t.onopen=()=>{this.#o.set("connect"),this.#n.set(!0),this.#p.set(!1),this.#c.set(null)},this.#t.onclose=()=>{this.#o.set("disconnected"),this.#n.set(!1),this.#c.set(t),this.#p.set(!0)},this.#t.onerror=()=>{this.#o.set("error")},this.#t.onmessage=p=>{let i=JSON.parse(p.data);if(this.wsState()==="connect"){if(i.type!=="welcome"){this.disconnectFromMachineServer(`Unexpected message type, expected 'welcome' but got '${i.type}'`);return}let c={token:t,publicKey:"",clientVersion:Be,protocolVersion:Je},r=this.createResponse(i,"authportal",c);this.#o.set("welcome"),this.#t?.send(r)}else if(this.wsState()==="welcome"){if(i.type!=="authportal"){this.disconnectFromMachineServer(`Unexpected message type, expected 'authportal' but got '${i.type}'`);return}var u=JSON.parse(i.payload??"");if(u.accepted===!1){this.#i("Authentication failed"),this.disconnectFromMachineServer("Authentication failed");return}for(this.#o.set("authenticated"),this.#n.set(!0);this.#l.length>0;){let c=this.#l.pop();c&&this.#r[c.messageId]&&this.activateCommand(c)}}else if(this.wsState()==="authenticated"){if(i.type!=="command"){console.warn(`Unexpected message type, expected 'command' but got '${i.type}'`);return}let c=this.#r[i.messageId];if(c){if(i.errorMessage)this.#i(i.errorMessage),c.reject(i.errorMessage);else{let r=JSON.parse(i.payload??"");r.statusCode>=400?this.#i(r.body||`Initial request failed with status code ${r.statusCode}`):this.#f(),r.body=r?.body==null?null:this.utf8Atob(r.body),c.resolve(r)}delete this.#r[i.messageId],window.clearTimeout(c.timer)}}})}disconnectFromMachineServer(t=null){t&&console.error(t),this.#t?.close(),this.#t=null,this.#o.set("disconnected"),this.#n.set(!1)}createResponse(t,o,n){let a={from:Pe,to:t.from,type:o,messageId:t.messageId,payload:JSON.stringify(n)};return JSON.stringify(a)}sendCommand(t,o,n,a,p,i,u=5e3){return(this.wsState()==="disconnected"||this.wsState()==="error")&&this.connectToMachineServer(t),new Promise((c,r)=>{let m=D(),g={from:Pe,to:o,type:"command",messageId:m,payload:JSON.stringify({method:n,path:a,body:p,headers:i})},b={resolve:c,reject:r,timer:window.setTimeout(()=>{let E=this.#r[m];E&&(delete this.#r[m],this.#i("The request timed out before receiving a response."),E.reject("Timeout"))},u)};this.#r[m]=b,this.#n()?this.activateCommand(g):this.#l.push(g)})}activateCommand(t){this.#t?.send(JSON.stringify(t))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};function Ke(e){if(typeof e!="string")return null;let o=new TextEncoder().encode(e);return window.btoa(String.fromCharCode(...o))}function He(e,t,o){let n=e.relayconfigState.config();if(n===null)return o(t);let a=Ke(t.body),p={};t.headers.keys().forEach(r=>{p[r]=t.headers.get(r)??""});let i=t.headers.get("timeout"),u=i!==null?parseInt(i):e.defaultTimeout;t.url.startsWith("/api/v1/serverstate")&&t.url.includes("longpoll=true")&&(u=1e3*99);let c=e.relayWebsocket.sendCommand(n.accessToken,n.clientId,t.method,t.url,a,p,u);return new W(r=>{c.then(m=>{let S=new se;p!=null&&Object.keys(p).forEach(b=>{S.set(b,p[b])});let g=new ie({body:m.body,status:m.statusCode,statusText:"OK",headers:S});r.next(g),r.complete()}).catch(m=>{r.error(new ae({error:m??"Unknown error",status:0,statusText:m??"Unknown error"}))})})}var De=(e,t)=>{let o={relayconfigState:s(C),defaultTimeout:s(f).defaultTimeout,relayWebsocket:s(x)},n=o.relayconfigState.config();if(o.relayconfigState.configLoaded!==null&&n===null){let a=new $;return o.relayconfigState.configLoaded.subscribe(p=>{p&&He(o,e,t).subscribe(a)}),a}return He(o,e,t)};var Ve={providers:[ee(),he(xe,ge(),fe(ue)),pe(le(),ce([De,Le])),h,{provide:f,useValue:Ne},{provide:te,useValue:Ae()},{provide:ve,useValue:{alertVariant:"simple"}},Te,k,Ee,ne,Re,oe,Me,Ie]};re(A,Ve);
1
+ import{b as ke,c as Ae}from"./chunk-AODNZLCK.js";import{a as Te}from"./chunk-QJUNU5NP.js";import{a as Ie}from"./chunk-MDXSNEQZ.js";import{a as k}from"./chunk-O5SO2U6L.js";import{a as Me}from"./chunk-QHBOEY2O.js";import{b as Ee}from"./chunk-NK5WD6WE.js";import"./chunk-B62TPRVG.js";import{a as D}from"./chunk-6Q6SSTBK.js";import{a as Re}from"./chunk-SZUNW4JO.js";import"./chunk-HSHF5HR7.js";import"./chunk-5LBG6MOL.js";import"./chunk-ZU6T3TW3.js";import{a as H}from"./chunk-HUZXJWCG.js";import{a as h,b as be,c as C,d as we,e as I}from"./chunk-7TWUW4XJ.js";import{v as ve,x as Ce}from"./chunk-UNMDSCAN.js";import{a as ye,d as Se}from"./chunk-CFNARBNK.js";import{c as me,d as de,g as ue,h as he,i as fe,j as ge}from"./chunk-I27PVH6D.js";import{a as re}from"./chunk-5VE6P5U5.js";import{a as se,b as ie,c as ae,e as pe,f as ce,g as le}from"./chunk-PO3L6MKW.js";import{fa as oe,ka as ne}from"./chunk-7AVOHYTE.js";import"./chunk-KDSMLI73.js";import{Bb as Z,E as M,I as K,Ic as ee,Jc as te,K as T,M as _,R as v,U as q,W as s,cb as Y,da as z,ea as X,f as W,g as $,l as G,la as d,m as B,na as Q,p as w,y as P,z as J}from"./chunk-26Z7TPJB.js";import"./chunk-7CGTOI24.js";var A=class e{#e=s(h);#a=s(C);ngOnInit(){be(),this.#a.fetchConfig(),this.#e.clearAllNotCurrentVersion()}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=Y({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(o,n){o&1&&Z(0,"router-outlet")},dependencies:[me],encapsulation:2})};var Ne={production:!0,baseUrl:"/api",machineServerUrl:"${WS_URL}",defaultTimeout:3e4};var f=new q("ENVIRONMENT");var N=class e{#e=s(Se);isLoaded=d(!1);webmodules=d(null);preload(t=!1){let o=this.#e.getApiV1Webmodules().pipe(_(n=>this.webmodules.set(n)),M(()=>this.isLoaded.set(!0)));if(t)return o;o.subscribe()}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};var Fe=()=>{let e=s(I);return e.token()?!0:e.checkProxyAuthed().pipe(T(t=>t?G(!0):e.refreshToken().pipe(w(()=>!0))))},We=()=>{let e=s(C),t=s(k),o=s(z),n=e.relayIsEnabled()?"longpoll":"websocket",a=[o.get(H).preload(!0),o.get(H).preloadFilterGroups(!0),o.get(N).preload(!0)];return e.configLoaded===null?P(a).pipe(w(()=>n)):e.configLoaded?.pipe(T(()=>P(a)))},$e=()=>!0,Oe={path:"connect/:typeParam",loadComponent:()=>import("./chunk-NNNKIEPR.js")},Ge=()=>{let e=s(h);return!e.getItem("locale")&&navigator.language&&e.setItem("locale",navigator.language),!0},xe=[{path:"",children:[{path:"login",canActivate:[],loadComponent:()=>import("./chunk-HOGZ74SB.js")},{path:"logout",loadComponent:()=>import("./chunk-EE5SIDTF.js")},{path:"",canActivate:[Fe],children:[{path:"",canActivate:[We,$e,Ge],children:[{path:"welcome",loadComponent:()=>import("./chunk-NGNWWP6M.js"),children:[{path:"",redirectTo:"select",pathMatch:"full"},{path:"select",loadComponent:()=>import("./chunk-AIH3GSIT.js")},Oe]},{path:"",loadComponent:()=>import("./chunk-G6NEOWER.js"),children:[{path:"",loadComponent:()=>import("./chunk-F4ZMF6H4.js")},Oe,{path:"add-backup",loadComponent:()=>import("./chunk-HFZ6MYKF.js")},{path:"backup/:id/export",loadComponent:()=>import("./chunk-UK7MV4OF.js")},{path:"backup/import",loadComponent:()=>import("./chunk-QLENTLZJ.js")},{path:"backup-draft/:id",loadComponent:()=>import("./chunk-H45NIIKQ.js"),loadChildren:()=>import("./chunk-VVQRXJRI.js")},{path:"backup/:id",loadComponent:()=>import("./chunk-H45NIIKQ.js"),loadChildren:()=>import("./chunk-VVQRXJRI.js")},{path:"backup/:id/log",loadComponent:()=>import("./chunk-X4GGVQ44.js")},{path:"backup/:id/database",loadComponent:()=>import("./chunk-6TZPGZ7P.js")},{path:"backup/:id/commandline",loadComponent:()=>import("./chunk-3UVBV6B3.js")},{path:"backup/:id/commandline/:runId",loadComponent:()=>import("./chunk-GZ5HYA4R.js")},{path:"backup/:id/delete",loadComponent:()=>import("./chunk-U2E3ZQUP.js")},{path:"restore",children:[{path:"",loadComponent:()=>import("./chunk-QTVWYVBT.js")},{path:"from-config",loadComponent:()=>import("./chunk-A2O2XHOB.js")}]},{path:"restore-from-files",loadComponent:()=>import("./chunk-WIQPWRZV.js"),loadChildren:()=>import("./chunk-QIGELWLA.js")},{path:"restore-draft/:id",loadComponent:()=>import("./chunk-WIQPWRZV.js"),loadChildren:()=>import("./chunk-QIGELWLA.js")},{path:"restore/:id",loadComponent:()=>import("./chunk-WIQPWRZV.js"),loadChildren:()=>import("./chunk-QIGELWLA.js")},{path:"settings",loadComponent:()=>import("./chunk-OKYEX2SC.js")},{path:"about",loadComponent:()=>import("./chunk-LTGF4KMG.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-I2RQR4CB.js")},{path:"changelog",loadComponent:()=>import("./chunk-BYUBKTO5.js")},{path:"libraries",loadComponent:()=>import("./chunk-R5YJUVWW.js")},{path:"system-info",loadComponent:()=>import("./chunk-3K3BYB36.js")},{path:"server-settings",loadComponent:()=>import("./chunk-T4IKTBRQ.js")},{path:"logs",loadChildren:()=>import("./chunk-26MRZAFB.js")},{path:"crashlogs",loadComponent:()=>import("./chunk-VFBRHP2H.js")}]}]}]}]}]}];var U=null,Le=(e,t)=>{let o=s(I),n=s(de),a=s(h),p=s(f),i=a.getItem("locale"),u=s(Ce),c=ke(i),r=ye.BASE||"",m=e.url===`${r}/api/v1/auth/login`,S=e.url===`${r}/api/v1/auth/logout`,g=e.url===`${r}/api/v1/auth/refresh`,b=e.url===`${r}/api/v1/progressstate`,E=e.url===`${r}/api/v1/remoteoperation/test`,Ue=e.url===`${r}/api/v1/filesystem/validate`,je=e.url.startsWith(`${r}/api/v2/`),L=o.token(),j=e,F=e.headers.has("custom-proxy-check")||L===we;if(L&&e.url.startsWith(r+p.baseUrl)&&!F){let l=e.headers.set("Authorization",`Bearer ${L}`);i&&i!=="en-US"&&(l=l.set("X-Ui-Language",c)),j=e.clone({headers:l})}return t(j).pipe(w(l=>{if(l.type===4&&l.status===200&&je){let y=l.body;if(y?.Success===!1)throw{status:200,message:y?.Error??"Unknown error",error:{Error:y?.Error??"Unknown error"},requestBody:y}}return l}),J(l=>{let y=l.error?.Error||`Error Code: ${l.status}, Message: ${l.message}`;if(!F){let R=!0;if((b&&l.status===404||E||Ue)&&(R=!1),g&&l.status===401&&(R=!1,o.logout(),n.navigate(["/logout"])),!m&&!g&&!S&&l.status===401)return R=!1,U??=o.refreshToken().pipe(K()),U.pipe(T(()=>t(e.clone({headers:e.headers.set("Authorization",`Bearer ${o.token()}`)}))),M(()=>U=null));R&&u.error(y)}return B(()=>({error:l,message:y}))}))};var O=class e{#e=s(X);showError(t){let o=this.#e.querySelector("body > .loading");if(!o)return;o.classList.add("has-error"),o.innerHTML="";let n=this.#e.createElement("div");n.classList.add("loading-title"),n.textContent="Unable to connect";let a=this.#e.createElement("div");a.classList.add("loading-error"),a.textContent=t||"Unknown error";let p=this.#e.createElement("button");p.type="button",p.classList.add("retry-button"),p.textContent="Retry",p.addEventListener("click",()=>{this.#e.defaultView?.location.reload()}),o.append(n,a,p)}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};var Be="1.0.0",Pe=`portal-proxy-client-${D()}`,Je=1,x=class e{#e=1e3;#a=s(f);#d=s(O);#o=d("disconnected");#u=d(this.#e);#p=d(!1);#n=d(!1);#c=d(null);#s=!1;isConnectedToMachineServer=this.#n.asReadonly();wsState=this.#o.asReadonly();#l=[];#r={};#t=null;#h=new TextDecoder("utf-8");#m=null;#g=Q(()=>{let t=this.#p(),o=this.#u(),n=this.#c();if(!n||!t||!o||o<this.#e){this.#m&&window.clearInterval(this.#m);return}this.#m=window.setInterval(()=>{this.connectToMachineServer(n)},o)});#i(t){this.#s||(this.#s=!0,this.#d.showError(t||"Unable to connect to the server."))}#f(){this.#s||(this.#s=!0)}utf8Atob(t){let o=Uint8Array.from(atob(t),a=>a.charCodeAt(0)),n=this.#h.decode(o);return n?JSON.parse(n):null}connectToMachineServer(t,o){let n=o?.reconnect??!1,a=this.wsState();(a==="disconnected"||a==="error"||n)&&(this.#t?.close(),this.#t=null),!this.#t&&(this.#s=!1,this.#t=new WebSocket(this.#a.machineServerUrl),this.#o.set("connecting"),this.#t.onopen=()=>{this.#o.set("connect"),this.#n.set(!0),this.#p.set(!1),this.#c.set(null)},this.#t.onclose=()=>{this.#o.set("disconnected"),this.#n.set(!1),this.#c.set(t),this.#p.set(!0)},this.#t.onerror=()=>{this.#o.set("error")},this.#t.onmessage=p=>{let i=JSON.parse(p.data);if(this.wsState()==="connect"){if(i.type!=="welcome"){this.disconnectFromMachineServer(`Unexpected message type, expected 'welcome' but got '${i.type}'`);return}let c={token:t,publicKey:"",clientVersion:Be,protocolVersion:Je},r=this.createResponse(i,"authportal",c);this.#o.set("welcome"),this.#t?.send(r)}else if(this.wsState()==="welcome"){if(i.type!=="authportal"){this.disconnectFromMachineServer(`Unexpected message type, expected 'authportal' but got '${i.type}'`);return}var u=JSON.parse(i.payload??"");if(u.accepted===!1){this.#i("Authentication failed"),this.disconnectFromMachineServer("Authentication failed");return}for(this.#o.set("authenticated"),this.#n.set(!0);this.#l.length>0;){let c=this.#l.pop();c&&this.#r[c.messageId]&&this.activateCommand(c)}}else if(this.wsState()==="authenticated"){if(i.type!=="command"){console.warn(`Unexpected message type, expected 'command' but got '${i.type}'`);return}let c=this.#r[i.messageId];if(c){if(i.errorMessage)this.#i(i.errorMessage),c.reject(i.errorMessage);else{let r=JSON.parse(i.payload??"");r.statusCode>=400?this.#i(r.body||`Initial request failed with status code ${r.statusCode}`):this.#f(),r.body=r?.body==null?null:this.utf8Atob(r.body),c.resolve(r)}delete this.#r[i.messageId],window.clearTimeout(c.timer)}}})}disconnectFromMachineServer(t=null){t&&console.error(t),this.#t?.close(),this.#t=null,this.#o.set("disconnected"),this.#n.set(!1)}createResponse(t,o,n){let a={from:Pe,to:t.from,type:o,messageId:t.messageId,payload:JSON.stringify(n)};return JSON.stringify(a)}sendCommand(t,o,n,a,p,i,u=5e3){return(this.wsState()==="disconnected"||this.wsState()==="error")&&this.connectToMachineServer(t),new Promise((c,r)=>{let m=D(),g={from:Pe,to:o,type:"command",messageId:m,payload:JSON.stringify({method:n,path:a,body:p,headers:i})},b={resolve:c,reject:r,timer:window.setTimeout(()=>{let E=this.#r[m];E&&(delete this.#r[m],this.#i("The request timed out before receiving a response."),E.reject("Timeout"))},u)};this.#r[m]=b,this.#n()?this.activateCommand(g):this.#l.push(g)})}activateCommand(t){this.#t?.send(JSON.stringify(t))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"})};function Ke(e){if(typeof e!="string")return null;let o=new TextEncoder().encode(e);return window.btoa(String.fromCharCode(...o))}function He(e,t,o){let n=e.relayconfigState.config();if(n===null)return o(t);let a=Ke(t.body),p={};t.headers.keys().forEach(r=>{p[r]=t.headers.get(r)??""});let i=t.headers.get("timeout"),u=i!==null?parseInt(i):e.defaultTimeout;t.url.startsWith("/api/v1/serverstate")&&t.url.includes("longpoll=true")&&(u=1e3*99);let c=e.relayWebsocket.sendCommand(n.accessToken,n.clientId,t.method,t.url,a,p,u);return new W(r=>{c.then(m=>{let S=new se;p!=null&&Object.keys(p).forEach(b=>{S.set(b,p[b])});let g=new ie({body:m.body,status:m.statusCode,statusText:"OK",headers:S});r.next(g),r.complete()}).catch(m=>{r.error(new ae({error:m??"Unknown error",status:0,statusText:m??"Unknown error"}))})})}var De=(e,t)=>{let o={relayconfigState:s(C),defaultTimeout:s(f).defaultTimeout,relayWebsocket:s(x)},n=o.relayconfigState.config();if(o.relayconfigState.configLoaded!==null&&n===null){let a=new $;return o.relayconfigState.configLoaded.subscribe(p=>{p&&He(o,e,t).subscribe(a)}),a}return He(o,e,t)};var Ve={providers:[ee(),he(xe,ge(),fe(ue)),pe(le(),ce([De,Le])),h,{provide:f,useValue:Ne},{provide:te,useValue:Ae()},{provide:ve,useValue:{alertVariant:"simple"}},Te,k,Ee,ne,Re,oe,Me,Ie]};re(A,Ve);
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.195",
2
+ "version": "0.0.196",
3
3
  "name": "@duplicati/ngclient",
4
4
  "license": "MIT",
5
5
  "contributors": [
package/chunk-2JMS6ROE.js DELETED
@@ -1 +0,0 @@
1
- import{a as He}from"./chunk-D45OX6NR.js";import{a as je}from"./chunk-P42HQ2IS.js";import{A as $e,B as de,H as J,J as Be,K as ke,L as Ve,P as We,W as Ge,a as ae,c as G,e as z,i as j,k as ce,s as H,u as Ie,y as Ae,z as Le}from"./chunk-V4SUZRAG.js";import{c as ze}from"./chunk-4SMU6FWN.js";import{_ as Re}from"./chunk-WC6RBAAY.js";import{$ as N,Ab as d,Bb as oe,E as ue,Fb as Pe,Gb as be,Gc as we,Hb as pe,Ib as A,Mc as x,Pa as u,Pb as Me,Qb as Ne,Qc as ge,Rb as I,Rc as C,Sb as q,Sc as he,Tb as K,Vb as D,W as ee,Xb as p,Yb as W,Zb as O,aa as S,cb as V,cc as Se,dc as ve,ec as _e,fc as re,gc as R,hb as U,jc as M,kc as Oe,l as fe,la as T,lc as Fe,mc as ye,na as w,oc as L,p as Z,pc as $,qc as B,rb as te,sb as F,tb as y,ub as Ee,v as Ce,wb as ie,wc as se,xb as ne,xc as De,yb as b,yc as le,z as Te,zb as c,zc as xe}from"./chunk-YP4LWQJG.js";import{a as Q,b as Y}from"./chunk-7CGTOI24.js";var Ze=[[["label"]],[["","prefix",""]],[["","suffix",""]]],et=["label","[prefix]","[suffix]"];function tt(o,t){if(o&1&&M(0),o&2){let e=t.$implicit,i=p();ye("",e.label,"",i.hasPerSecond()?"/s":"")}}var it=["throttle-upload","throttle-download"],nt=[{value:"B",label:"Bytes"},{value:"KB",label:"KB"},{value:"MB",label:"MB"},{value:"GB",label:"GB"},{value:"TB",label:"TB"},{value:"PB",label:"PB"}],ot=o=>{if(!o||typeof o!="string"||o.length===0)return{size:0,unit:"MB"};let t=o.match(/^(\d+)(bytes|kb|mb|gb|tb|pb|b|kib|mib|gib|tib|pib)$/i);return t&&(t[2].toUpperCase()==="B"||t[2].toUpperCase()==="BYTES")?{size:1,unit:"KB"}:{size:t?parseInt(t[1],10):0,unit:t?t[2].toUpperCase():"MB"}},Je=class o{customId=C();inputType=C();timespan=T(0);unit=T("MB");sizeOptions=T(nt);readonly=T(!1);hasPerSecond=x(()=>{let t=this.inputType();return t&&it.includes(t)});onChange=()=>{};onTouched=()=>{};onChangeEffect=w(()=>{this.onChange(this.getValue())});writeValue(t){if(t){let e=ot(t);e?queueMicrotask(()=>{this.timespan.set(e.size),this.unit.set(e.unit)}):(this.timespan.set(0),this.unit.set("MB"))}else this.timespan.set(0),this.unit.set("MB")}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.readonly.set(t)}getValue(){return`${this.timespan()}${this.unit()}`}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=V({type:o,selectors:[["app-size"]],inputs:{customId:[1,"customId"],inputType:[1,"inputType"]},features:[se([{provide:ae,useExisting:o,multi:!0}])],ngContentSelectors:et,decls:9,vars:10,consts:[[1,"label"],["type","number",3,"ngModelChange","id","ngModel","disabled"],["value","value","label","label",3,"options","readonly","isClearable"],["type","text",3,"ngModelChange","ngModel"]],template:function(e,i){e&1&&(W(Ze),c(0,"div",0),O(1,0,["ngProjectAs","label",5,["label"]]),d(),c(2,"sh-form-field")(3,"input",1),B("ngModelChange",function(r){return $(i.timespan,r)||(i.timespan=r),r}),d(),O(4,1),O(5,2),d(),c(6,"sh-select",2)(7,"input",3),B("ngModelChange",function(r){return $(i.unit,r)||(i.unit=r),r}),d(),U(8,tt,1,2,"ng-template"),d()),e&2&&(u(2),te("readonly",i.readonly()||void 0),u(),b("id",i.customId()),L("ngModel",i.timespan),b("disabled",i.readonly()),u(3),re("--miw",0),b("options",i.sizeOptions())("readonly",i.readonly())("isClearable",!1),u(),L("ngModel",i.unit))},dependencies:[We,J,H,G,ce,z,j],styles:['[_nghost-%COMP%]{display:grid;grid-template-areas:"label label" "input unit";grid-template-columns:3fr 1fr;gap:.5rem;align-items:flex-end}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{grid-area:label;grid-column:1/-1}[_nghost-%COMP%] sh-form-field[_ngcontent-%COMP%]{grid-area:input}[_nghost-%COMP%] sh-select[_ngcontent-%COMP%]{grid-area:unit}'],changeDetection:0})};var rt=["treeContainer"],st=["formRef"],lt=[[["label"]],[["label"]],[["input"]]],at=["label","label","input"],ct=o=>({children:o,level:0}),Ke=o=>({$implicit:o}),dt=(o,t)=>({children:o,level:t}),ut=()=>({maxWidth:"700px",width:"100%"}),pt=(o,t)=>t.id;function _t(o,t){if(o&1){let e=A();c(0,"sh-button-group",10)(1,"button",20),D("click",function(){N(e);let n=p();return S(n.pathDiscoveryMethod.set("browse"))}),I(2,4),d(),c(3,"button",20),D("click",function(){N(e);let n=p();return S(n.pathDiscoveryMethod.set("path"))}),I(4,5),d()()}if(o&2){let e=p();u(),R("active",e.pathDiscoveryMethod()==="browse"),u(2),R("active",e.pathDiscoveryMethod()==="path")}}function gt(o,t){o&1&&oe(0,"sh-progress-bar",13)}function ht(o,t){o&1&&(c(0,"sh-icon",25),M(1,"caret-down"),d())}function mt(o,t){o&1&&oe(0,"sh-icon",25)}function ft(o,t){o&1&&(c(0,"sh-icon",25),M(1,"caret-right"),d())}function Ct(o,t){o&1&&(c(0,"sh-icon",23),M(1,"folder-open"),d())}function Tt(o,t){o&1&&(c(0,"sh-icon",23),M(1,"folder-user"),d())}function Et(o,t){o&1&&(c(0,"sh-icon",23),M(1,"file"),d())}function Pt(o,t){o&1&&(c(0,"sh-icon",23),M(1,"folder"),d())}function bt(o,t){if(o&1&&(F(0,ht,2,0,"sh-icon",25)(1,mt,1,0,"sh-icon",25)(2,ft,2,0,"sh-icon",25),F(3,Ct,2,0,"sh-icon",23)(4,Tt,2,0,"sh-icon",23)(5,Et,2,0,"sh-icon",23)(6,Pt,2,0,"sh-icon",23)),o&2){let e=p(2).$implicit;y(e.children.length?0:e.cls==="file"?1:2),u(3),y(e.children.length?3:e.id==="%HOME%"?4:e.cls==="file"?5:6)}}function Mt(o,t){o&1&&(c(0,"sh-icon",23),M(1,"desktop-tower"),d())}function Nt(o,t){o&1&&pe(0)}function St(o,t){if(o&1&&U(0,Nt,1,0,"ng-container",14),o&2){let e=p(2).$implicit,i=p().$implicit;p();let n=_e(7);b("ngTemplateOutlet",n)("ngTemplateOutletContext",le(5,Ke,xe(2,dt,e.children,i.level+1)))}}function vt(o,t){if(o&1){let e=A();c(0,"div",21,3),D("click",function(){N(e);let n=p().$implicit,r=p(2);return S(r.toggleNode(n.id,n))}),c(2,"div",22),F(3,bt,7,2)(4,Mt,2,0,"sh-icon",23),d(),c(5,"div",24),D("click",function(n){N(e);let r=p().$implicit,a=p(2);return S(a.toggleSelectedNode(n,r))}),M(6),d()(),F(7,St,1,7,"ng-container")}if(o&2){let e=p().$implicit,i=p().$implicit,n=p();R("accepted",e.accepted===!0)("active",e.evalState===n.TreeEvalEnum.Included)("indeterminate",e.isIndeterminate)("open",e.children.length)("usually-hidden",e.hidden)("root",i.level===0),u(2),R("file",e.cls==="file"),u(),y(e.id!=="/"?3:4),u(3),Fe(" ",e.text," "),u(),y(e.children.length>0?7:-1)}}function Ot(o,t){if(o&1&&F(0,vt,8,17),o&2){let e=t.$implicit,i=p(2);y(e.hidden&&i._showHiddenNodes()||!e.hidden?0:-1)}}function Ft(o,t){if(o&1&&(c(0,"sh-list"),ie(1,Ot,1,1,null,null,pt),d()),o&2){let e=t.$implicit;re("padding-left",e.level*.25,"rem"),u(),ne(e.children)}}function yt(o,t){o&1&&pe(0)}function Dt(o,t){if(o&1){let e=A();c(0,"sh-toggle",26),D("click",function(){N(e);let n=p();return S(n._showHiddenNodes.set(!n._showHiddenNodes()))}),I(1,6),d()}if(o&2){let e=p();R("active",e._showHiddenNodes()),u(),q(e.showFiles()?"files":"folders"),K(1)}}function xt(o,t){if(o&1){let e=A();c(0,"button",27),D("click",function(){N(e);let n=p();return S(n.openCreateFolderDialog())}),I(1,7),d()}if(o&2){let e=p();b("disabled",!e.isCurrentPathFolder())}}function wt(o,t){if(o&1){let e=A();c(0,"sh-dialog",28),B("isOpenChange",function(n){N(e);let r=p();return $(r.createFolderDialogOpen,n)||(r.createFolderDialogOpen=n),S(n)}),c(1,"header",29)(2,"h2"),I(3,8),d()(),c(4,"div",30)(5,"div"),M(6," Folder will be created under "),c(7,"pre"),M(8),d()(),c(9,"sh-form-field")(10,"textarea",31),B("ngModelChange",function(n){N(e);let r=p();return $(r.createFolderPath,n)||(r.createFolderPath=n),S(n)}),d()()(),c(11,"footer",32)(12,"button",33),D("click",function(){N(e);let n=p();return S(n.closeCreateFolderDialog(!1))}),M(13,"Cancel"),d(),c(14,"button",34),D("click",function(){N(e);let n=p();return S(n.closeCreateFolderDialog(!0))}),Me(15,9),oe(16,"sh-icon"),Ne(),d()()()}if(o&2){let e,i=p();L("isOpen",i.createFolderDialogOpen),b("options",De(5,ut)),u(8),Oe(i.currentPath()),u(2),L("ngModel",i.createFolderPath),u(4),b("disabled",!((e=i.createFolderPath())!=null&&e.length))}}var Qe=(r=>(r[r.ExcludedByParent=-2]="ExcludedByParent",r[r.Excluded=-1]="Excluded",r[r.None=0]="None",r[r.Included=1]="Included",r[r.IncludedByParent=2]="IncludedByParent",r))(Qe||{}),v="/",me=class o{#e=ee(ze);#n=ee(je);#c=ee(Le);multiSelect=C(!1);disabled=C(!1);showFiles=C(!1);selectFiles=C(!1);accepts=C(null);startingPath=C(null);rootPaths=C([]);initialNodes=C([]);backupSettings=C(null);pathRefreshTrigger=C(!1);showHiddenNodes=C(!1);enableCreateFolder=C(!1);hideShortcuts=C(!1);includes=ge();excludes=ge();_showHiddenNodes=T(!1);createFolderDialogOpen=T(!1);createFolderPath=T(null);treeContainerRef=he("treeContainer");formRef=he("formRef");pathDiscoveryMethod=T("browse");isLoading=T(!1);currentPath=T("/");#o=T(null);treeSearchQuery=T("");treeNodes=T([]);pathDelimiter=x(()=>this.#n.systemInfo()?.DirectorySeparator??"");filterGroups=this.#n.filterGroups();isByBackupSettings=x(()=>{let t=this.backupSettings();return!(t===void 0||t?.id===void 0||t?.time===void 0)});searchableTreeNodes=x(()=>{let t=this.treeSearchQuery();return t?this.treeNodes().filter(e=>e.text?.toLowerCase().includes(t.toLowerCase())):this.treeNodes()});TreeEvalEnum=Qe;treeStructure=x(()=>{let t=this.showHiddenNodes(),e=this.currentPath().split("\0").filter(l=>l!==""&&l!==v),i=structuredClone(e);for(let l=0;l<i.length;l++){let f=i[l].slice(1);if(f.startsWith("{")&&f.endsWith("}")){let g=f.slice(1,-1),h=this.filterGroups?.FilterGroups[g];if(h&&h.length){let E=h.map(P=>`-${P}`);i.splice(l,1,...E)}}}let n=this.searchableTreeNodes(),r=this.rootPaths(),a=this.accepts(),m=this.pathDelimiter(),s=[];return r.length>0?s=r.map(l=>{let _=this.#r(i,l,"folder",null);return{id:l,resolvedpath:l,text:l,parentPath:"",children:[],evalState:_,isIndeterminate:!1,cls:this.#t(l,m)?"folder":"file"}}):s=[{id:v,resolvedpath:v,text:$localize`Computer`,parentPath:"",children:[],evalState:0,isIndeterminate:!1,cls:"folder"}],s.map(l=>{let _=new Map;if(!l.id)return;let f=l.id;a&&(l.accepted=!0),_.set(f,l);let g=r.length>0?n.filter(h=>h.parentPath.startsWith(f)):n;for(let h of g){if(!h.id)continue;let E=h.id;if(!h.cls||_.has(E))continue;let P=_.get(h.parentPath),X=h.hidden===!0&&t?0:this.#r(i,E,h.cls,P),k=Y(Q({},h),{isIndeterminate:this.isIndeterminate(i,E),evalState:X,children:[]});a&&(k.accepted=this.matchAccepts(a,k)),_.set(E,k),P&&P.children.push(k)}return l}),s});#d(t){let e=this.pathDelimiter();return t?t.endsWith(e)||t===v?t:t+e:v}#r(t,e,i,n){if(n&&n.evalState===-1)return-2;let r=0,a=this.pathDelimiter(),m=t.filter(_=>!_.startsWith("-")&&!_.startsWith("+")),s=t.filter(_=>_.startsWith("-")||_.startsWith("+")),l=this.multiSelect();if(m.length===0)return r;for(let _=0;_<m.length;_++){let f=m[_];if(e===f){r=1;break}if(!l||!this.#t(f,a))continue;if(e?.startsWith(f)){r=1;break}}if(s.length===0)return r;for(let _=0;_<s.length;_++){let f=s[_],g=f.slice(1),h=f.startsWith("-")?-1:1;if(this.#t(g,a)){if(i!=="folder")continue;if(e===g){r=h;break}}if(g.startsWith("*")&&g.endsWith(`*${a}`)){if(i!=="folder")continue;let P=g.slice(1,-2);if(P==="")break;if(e?.includes(P+a)){r=h;break}}if(g.startsWith("[.*")&&g.endsWith(`[^\\${a}]*]`)){if(i!=="file")continue;let P=g.slice(3,-7);if(new RegExp(P).test(e)){r=h;break}}if(g.startsWith("[")&&g.endsWith("]")){let P=g.slice(1,-1),X=this.translateCSharpRegex(P);if(new RegExp(`${X}`).test(e)){r=h;break}}if(g.startsWith("*.")){if(i!=="file"||g.replace("*.","").length===0)continue;if(this.#s(e,g,!0)){r=h;break}}if(g==="")continue;if(g===e){r=h;break}if(this.#s(e,g,!0)){r=h;break}}return r}translateCSharpRegex(t){let e=t;e=e.replace(/^@/,"");let i=/\(\?<(?<name>\w+)>(?<pattern>[^)]+)\)/g;return e=e.replace(i,(n,r,a)=>`(${a})`),e=e.replace(/\\/g,"\\\\"),e}isIndeterminate(t,e){return t.filter(i=>!i.startsWith("-")&&this.#t(i,this.pathDelimiter())).some(i=>i.startsWith(e))}isCurrentPathFolder(){let t=this.currentPath();return t?t.endsWith(this.pathDelimiter())||t.startsWith("%")&&t.endsWith("%")&&!t.includes(this.pathDelimiter()):!1}#s(t,e,i=!1){let n=e.replace(/\*/g,".*").replace(/\?/g,".").replace(/\[!([^\]]+)\]/g,"[^$1]");return new RegExp(`${n}${i?"$":""}`).test(t)}showHiddenNodesEffect=w(()=>this._showHiddenNodes.set(this.showHiddenNodes()));pathDiscoveryMethodEffect=w(()=>{let t=this.pathDiscoveryMethod(),e=this.#o();t==="browse"&&e&&this.currentPath.set(e.value)});matchAccepts(t,e){if(!t||e.cls==="folder"||e.id===v)return!0;let i=t.split(",");if(i.length===0)return!0;let n="."+e.id.slice(e.id.indexOf("."));return n?i.some(r=>n.endsWith(r)):!1}currentPathEffect=w(()=>{let t=this.#o();t&&(t.value=this.currentPath(),t.dispatchEvent(new Event("input")))});inputValueChangeAbortController=null;inputRefEffect=w(()=>{let t=this.formRef()?.nativeElement?.querySelector("input");t&&(this.#u(t),this.inputValueChangeAbortController&&this.inputValueChangeAbortController.abort(),this.inputValueChangeAbortController=new AbortController,t.addEventListener("inputValueChanged",e=>{this.currentPath.set(e.detail.value)},{signal:this.inputValueChangeAbortController.signal}),this.#o.set(t),t.autocomplete="off")});ngOnInit(){let t=this.startingPath();if(t)this.currentPath.set(t),this.#g(t);else{let e=this.rootPaths(),i=this.initialNodes();e&&e.length>0?(i&&i.length>0&&this.treeNodes.set(i.map(n=>({id:n.id,leaf:n.leaf,cls:n.cls,text:n.text,iconCls:n.iconCls,fileSize:n.fileSize,resolvedpath:n.resolvedpath,parentPath:this.getParentPath(n.id??"")}))),this.#i(null,e[0])):this.#i(null,v)}}getParentPath(t){let e=this.pathDelimiter(),i=t.split(e);return i.length<=1?v:(i.pop(),i.length!==0&&i.pop(),i.join(e)+e)}toggleSelectedNode(t,e){if(e.id===v||(t.stopPropagation(),e.evalState===-2))return;if(this.selectFiles()&&e.cls==="folder"){this.toggleNode(e.id,e);return}if(this.accepts()&&!e.accepted)return;let n=this.currentPath().split("\0").filter(s=>s!==""&&s!==v),a=this.isChildOfSelected(e)?`-${e.id}`:e.id,m=this.#t(e.id,this.pathDelimiter());if(this.multiSelect())if(n.includes(e.id))this.currentPath.set(n.filter(s=>s!==e.id&&!(m&&s.startsWith(a))).join("\0"));else if(n.some(s=>s==a))this.currentPath.set(n.filter(s=>s!==a).join("\0"));else{let s=m?n.filter(l=>!l.startsWith(e.id)):n;this.currentPath.set([...s,a].join("\0"))}else n.includes(e.id)?this.currentPath.set(n.filter(s=>s!==e.id).join("\0")):this.currentPath.set(e.id)}isChildOfSelected(t){return this.currentPath().split("\0").filter(i=>i!==""&&i!==v&&this.#t(i,this.pathDelimiter())).some(i=>t.id?.startsWith(i)||`-${t.id}`.startsWith(i))}toggleNode(t,e=null){e?.cls==="folder"&&(e?.children.length?this.treeNodes.update(i=>i.filter(n=>!n.id?.startsWith(e.id)||n.id===e.id)):this.#i(e,t))}openCreateFolderDialog(){return this.createFolderPath.set(null),this.createFolderDialogOpen.set(!0),!1}closeCreateFolderDialog(t){if(t&&this.createFolderPath()?.length&&this.isCurrentPathFolder()){let e=this.createFolderPath()?.trim();if(e){let i=this.currentPath(),n=this.#d(e),r=i+n;this.#e.postApiV1RemoteoperationCreate({requestBody:{path:"file://"+r}}).subscribe({next:()=>{this.currentPath.set(r),this.#i(null,i),setTimeout(()=>{this.#l()},500),this.createFolderDialogOpen.set(!1)},error:a=>{let m=a?.message?.match(/user-information\s*:\s*(.*?)(?:\s*,|$)/i),s=m?m[1]:a?.message||$localize`An error occurred while trying to create the folder.`;this.#c.open(He,{data:{title:$localize`Cannot create folder`,message:s,confirmText:$localize`OK`,cancelText:void 0}})}})}}else this.createFolderDialogOpen.set(!1);return!1}#l(){setTimeout(()=>{let e=this.treeContainerRef()?.nativeElement?.querySelector(".active");e&&e.scrollIntoView({behavior:"smooth",block:"center"})},100)}#u(t){return Object.defineProperty(t,"value",{configurable:!0,get(){return Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value").get.call(this)},set(e){return Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value").set.call(this,e),this.dispatchEvent(new CustomEvent("inputValueChanged",{bubbles:!0,cancelable:!0,detail:{value:e}})),e}}),t}#p(t){return this.#e.postApiV1Filesystem({showHidden:!0,requestBody:{path:t},onlyFolders:!this.showFiles()})}#_(t){let e=this.backupSettings();if(this.#n.hasV2ListOperations())return this.#e.postApiV2BackupListFolder({requestBody:{BackupId:e.id,Time:e.time,Paths:t?[t]:null,PageSize:0,Page:0}}).pipe(Z(i=>i.Data??[]));{let i={id:e.id+"",prefixOnly:!1,folderContents:!0,time:e.time,filter:t?"@"+t:void 0};return this.#e.getApiV1BackupByIdFiles(i).pipe(Z(n=>n.Files??[]))}}#a(t){return this.isByBackupSettings()?this.#_(t):this.#p(t)}#g(t){let e=this.pathDelimiter(),i=t.split("\0").filter(s=>s.startsWith("-")).map(s=>s.slice(1,-1)),r=t.split("\0").filter(s=>!s.startsWith("-")).filter(Boolean).map(s=>{let l=s.split(e);return l.at(-1)!==""&&l.pop(),l}),a=[v];r.forEach(s=>{s.forEach((l,_)=>{let f=s.slice(0,_+1).join(e);f!==""&&(a.includes(f)||a.push(f))})}),this.isLoading.set(!0);let m=a.map(s=>this.#a(s).pipe(Z(l=>({status:"success",value:l,url:s})),Te(l=>fe({status:"error",value:l,url:s}))));Ce(m).pipe(ue(()=>this.isLoading.set(!1))).subscribe({next:s=>{let l=s.filter(f=>f.status==="success"),_=s.filter(f=>f.status==="error");this.treeNodes.update(f=>{let g=l.flatMap(E=>Array.isArray(E.value)?E.value.map(P=>Y(Q({},P),{parentPath:E.url})):[]),h=[...new Map([...f,...g].map(E=>[E.id,E])).values()];return this.#l(),this.hideShortcuts()?h.filter(E=>!E.id.startsWith("%")):h})}})}#t(t,e){return t.startsWith("%")&&t.endsWith("%")||t.endsWith(e)}#i(t=null,e=v){let i=this.pathDelimiter();this.isLoading.set(!0),this.#a(e).pipe(ue(()=>this.isLoading.set(!1))).subscribe({next:n=>{let r=this.isByBackupSettings()?n.map(a=>({text:a.Path.split(i).filter(m=>m!=="").pop(),id:a.Path,cls:this.#t(a.Path,i)?"folder":"file",leaf:t!==null,resolvedpath:a.Path,hidden:!1})):n;this.treeNodes.update(a=>{let m=r.map(l=>{let _=this.#t(l.id,i)?"folder":"file";return Y(Q({},l),{cls:_,parentPath:e})}),s=[...new Map([...a,...m].map(l=>[l.id,l])).values()];return this.hideShortcuts()?s.filter(l=>!l.id.startsWith("%")):s})}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=V({type:o,selectors:[["app-file-tree"]],viewQuery:function(e,i){e&1&&Se(i.treeContainerRef,rt,5)(i.formRef,st,5),e&2&&ve(2)},hostVars:2,hostBindings:function(e,i){e&2&&R("disabled",i.disabled())},inputs:{multiSelect:[1,"multiSelect"],disabled:[1,"disabled"],showFiles:[1,"showFiles"],selectFiles:[1,"selectFiles"],accepts:[1,"accepts"],startingPath:[1,"startingPath"],rootPaths:[1,"rootPaths"],initialNodes:[1,"initialNodes"],backupSettings:[1,"backupSettings"],pathRefreshTrigger:[1,"pathRefreshTrigger"],showHiddenNodes:[1,"showHiddenNodes"],enableCreateFolder:[1,"enableCreateFolder"],hideShortcuts:[1,"hideShortcuts"]},outputs:{includes:"includes",excludes:"excludes"},ngContentSelectors:at,decls:18,vars:17,consts:()=>{let t;t=$localize` Browse path `;let e;e=$localize` Manually type path `;let i;i=$localize` Show hidden ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let n;n=$localize` Create folder `;let r;r=$localize`Enter new folder path`;let a;return a=$localize` Create folder ${"\uFFFD#16\uFFFD"}:START_TAG_SH_ICON:folder-plus${"\uFFFD/#16\uFFFD"}:CLOSE_TAG_SH_ICON:`,[["treeContainer",""],["recursiveTree",""],["formRef",""],["treeNode",""],t,e,i,n,r,a,[1,"type-b","small"],[1,"section"],[1,"browse-files"],[1,"indeterminate","primary"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"footer"],[1,"primary","raised","browse-files-toggle",3,"active"],["shButton","","type","button",1,"small","create-folder",3,"disabled"],[1,"form-field"],[3,"isOpen","options"],["type","button",3,"click"],["action","",3,"click"],[1,"icon"],[1,"primary"],[1,"text",3,"click"],[1,"small"],[1,"primary","raised","browse-files-toggle",3,"click"],["shButton","","type","button",1,"small","create-folder",3,"click","disabled"],[3,"isOpenChange","isOpen","options"],["header",""],["content",""],["id","targetUrl","autocomplete","off",3,"ngModelChange","ngModel"],["footer",""],["shButton","","type","button",3,"click"],["shButton","",1,"raised","primary",3,"click","disabled"]]},template:function(e,i){if(e&1&&(W(lt),F(0,_t,5,4,"sh-button-group",10),c(1,"div",11),O(2,0,["ngProjectAs","label",5,["label"]]),c(3,"div",12,0),F(5,gt,1,0,"sh-progress-bar",13),U(6,Ft,3,2,"ng-template",null,1,we)(8,yt,1,0,"ng-container",14),d(),c(9,"div",15),F(10,Dt,2,3,"sh-toggle",16),F(11,xt,2,1,"button",17),d()(),c(12,"div",18,2)(14,"sh-form-field"),O(15,1,["ngProjectAs","label",5,["label"]]),O(16,2,["ngProjectAs","input",5,["input"]]),d()(),F(17,wt,17,6,"sh-dialog",19)),e&2){let n=_e(7);y(i.multiSelect()?-1:0),u(),R("hidden",i.pathDiscoveryMethod()!=="browse"),u(2),R("visualize-accepted",i.accepts()),u(2),y(i.isLoading()?5:-1),u(3),b("ngTemplateOutlet",n)("ngTemplateOutletContext",le(15,Ke,le(13,ct,i.treeStructure()))),u(2),y(!i.accepts()&&!i.isByBackupSettings()?10:-1),u(),y(i.enableCreateFolder()?11:-1),u(),R("hidden",i.pathDiscoveryMethod()!=="path"),u(5),y(i.createFolderDialogOpen()?17:-1)}},dependencies:[de,$e,Ge,Ie,J,Be,Ve,Ae,Re,H,G,z,j],styles:['[_nghost-%COMP%]{display:flex;flex-direction:column;gap:1rem}.disabled[_nghost-%COMP%]{opacity:.5;-webkit-user-select:none;user-select:none;pointer-events:none;position:relative}.disabled[_nghost-%COMP%]:before{content:"";position:absolute;inset:0;background:transparent}.fill[_nghost-%COMP%]{height:auto;overflow:hidden;flex:1 0}.fill[_nghost-%COMP%] .section[_ngcontent-%COMP%]{height:auto;overflow:hidden;flex:1 0;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;grid-template-areas:"label toggle" "tree tree"}.fill[_nghost-%COMP%] .browse-files[_ngcontent-%COMP%]{resize:none;height:initial;grid-area:tree}.fill[_nghost-%COMP%] label[_ngcontent-%COMP%]{grid-area:label}.fill[_nghost-%COMP%] sh-toggle[_ngcontent-%COMP%]{grid-area:toggle;flex-direction:row-reverse}.section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.form-field.hidden[_ngcontent-%COMP%]{display:none}.browse-files[_ngcontent-%COMP%]{display:flex;gap:.5rem;padding:.5rem 1rem;height:12.5rem;border:1px solid var(--base-4);border-radius:var(--shape-3);overflow:auto;resize:vertical;background:var(--base-1);position:relative}.browse-files[_ngcontent-%COMP%] sh-progress-bar[_ngcontent-%COMP%]{position:absolute;top:0;left:0;right:0}.browse-files.visualize-accepted[_ngcontent-%COMP%] [action][_ngcontent-%COMP%]:not(.accepted){opacity:.5}.browse-files.visualize-accepted[_ngcontent-%COMP%] [action].accepted[_ngcontent-%COMP%]{opacity:1}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%]{--list-active-bg: var(--base-3);gap:.125rem;padding:0;height:min-content;min-width:min-content}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action][_ngcontent-%COMP%]{padding:0;gap:0;border:1px solid transparent}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].active[_ngcontent-%COMP%]{border-color:transparent;--list-active-bg: var(--primary-2)}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].indeterminate[_ngcontent-%COMP%]{border-color:var(--primary-4)}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].usually-hidden[_ngcontent-%COMP%]{opacity:.6}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].root[_ngcontent-%COMP%]{gap:.25rem}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].root[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]:has(sh-icon:nth-child(2)){width:3rem}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action].root[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:1.5rem}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action][_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{flex:1 0;height:100%;width:max-content;display:flex;align-items:center}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action][_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:3rem;gap:.25rem;height:1.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer}.browse-files[_ngcontent-%COMP%] sh-list[_ngcontent-%COMP%] [action][_ngcontent-%COMP%] .icon.file[_ngcontent-%COMP%]{width:3rem;padding:0 .25rem}.browse-files-toggle[_ngcontent-%COMP%]{color:var(--base-9)}.hidden[_ngcontent-%COMP%]{display:none}.footer[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center}'],changeDetection:0})};var Rt=[[["label"]],[["","prefix",""]],[["","suffix",""]]],It=["label","[prefix]","[suffix]"];function At(o,t){if(o&1){let e=A();c(0,"button",7),D("click",function(){let n=N(e).$implicit,r=p();return S(r.updateUnit(n.value))}),I(1,1),d()}if(o&2){let e=t.$implicit;u(),q(e.label),K(1)}}var Lt=[{value:"s",label:$localize`Seconds`},{value:"m",label:$localize`Minutes`},{value:"h",label:$localize`Hours`}],$t=[{value:"Y",label:$localize`Years`},{value:"M",label:$localize`Months`},{value:"W",label:$localize`Weeks`},{value:"D",label:$localize`Days`}],Bt=["retry-delay","web-timeout","read-write-timeout","run-script-timeout","list-timeout","short-timeout"],Ye=class o{customId=C();inputType=C();timespan=T(0);#e="D";unit=T(this.#e);unitLabel=x(()=>{let t=this.timeOptions(),e=t.findIndex(i=>i.value===this.unit());return t[e]?.label??this.unit()});isShortTime=x(()=>{let t=this.inputType();return t&&Bt.includes(t.replace("--",""))});timeOptions=x(()=>this.isShortTime()?Lt:$t);readonly=T(!1);onChange=()=>{};onTouched=()=>{};onChangeEffect=w(()=>{this.onChange(this.getValue())});inputTypeEffect=w(()=>{let t=this.timeOptions(),e=this.isShortTime()?"s":"D";this.#e=e,this.unit.set(e)});updateUnit(t){this.unit.set(t)}writeValue(t){let e=this.isShortTime();if(t){let i=e?/(\d+)([smh])/i:/^(\d+)([YMWD])$/i,n=t.match(i);n?(this.timespan.set(parseInt(n[1],10)),this.unit.set(n[2])):(this.timespan.set(0),this.unit.set(this.#e))}else this.timespan.set(0),this.unit.set(this.#e)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.readonly.set(t)}getValue(){return`${this.timespan()}${this.unit()}`}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=V({type:o,selectors:[["app-timespan"]],inputs:{customId:[1,"customId"],inputType:[1,"inputType"]},features:[se([{provide:ae,useExisting:o,multi:!0}])],ngContentSelectors:It,decls:11,vars:6,consts:()=>{let t;t=$localize`${"\uFFFD0\uFFFD"}:INTERPOLATION:`;let e;return e=$localize`${"\uFFFD0\uFFFD"}:INTERPOLATION:`,[t,e,["type","number",3,"ngModelChange","id","ngModel","disabled"],[3,"openIndicator"],["shButton","","type","button",1,"trigger"],["menu",""],["shButton","","type","button",1,"small"],["shButton","","type","button",1,"small",3,"click"]]},template:function(e,i){e&1&&(W(Rt),O(0,0,["ngProjectAs","label",5,["label"]]),c(1,"sh-form-field")(2,"input",2),B("ngModelChange",function(r){return $(i.timespan,r)||(i.timespan=r),r}),d(),O(3,1),O(4,2),d(),c(5,"sh-menu",3)(6,"button",4),I(7,0),d(),Pe(8,5),ie(9,At,2,1,"button",6,Ee),be(),d()),e&2&&(u(),te("readonly",i.readonly()||void 0),u(),b("id",i.customId()),L("ngModel",i.timespan),b("disabled",i.readonly()),u(3),b("openIndicator",!0),u(2),q(i.unitLabel()),K(7),u(2),ne(i.timeOptions()))},dependencies:[ke,J,H,G,ce,z,j,de],styles:['[_nghost-%COMP%]{display:grid;grid-template-areas:"label label" "input unit";grid-template-columns:3fr 1fr;gap:.5rem;align-items:flex-end}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{grid-area:label;grid-column:1/-1}[_nghost-%COMP%] sh-form-field[_ngcontent-%COMP%]{grid-area:input}[_nghost-%COMP%] sh-menu[_ngcontent-%COMP%]{grid-area:unit}[_nghost-%COMP%] sh-menu[_ngcontent-%COMP%] button.trigger[_ngcontent-%COMP%]{width:100%}'],changeDetection:0})};export{nt as a,ot as b,Je as c,me as d,Ye as e};
package/chunk-3462PHUY.js DELETED
@@ -1 +0,0 @@
1
- import{m as a,n as b}from"./chunk-6XFXDO6Y.js";import"./chunk-E24DEHPH.js";import"./chunk-2JMS6ROE.js";import"./chunk-6GTXSMAH.js";import"./chunk-ONYKQCZU.js";import"./chunk-6Q6SSTBK.js";import"./chunk-ONXV5IRS.js";import"./chunk-X52R5Q6W.js";import"./chunk-D45OX6NR.js";import"./chunk-PT5SA5DK.js";import"./chunk-TNJ2RJ2V.js";import"./chunk-DIJYLB6O.js";import"./chunk-P42HQ2IS.js";import"./chunk-KANLHRTR.js";import"./chunk-V4SUZRAG.js";import"./chunk-4SMU6FWN.js";import"./chunk-VRXOIVWD.js";import"./chunk-L4B2T7UE.js";import"./chunk-XURQUV7B.js";import"./chunk-WC6RBAAY.js";import"./chunk-XUDS7MYD.js";import"./chunk-YP4LWQJG.js";import"./chunk-7CGTOI24.js";export{a as createSourceDataForm,b as default};
package/chunk-6GTXSMAH.js DELETED
@@ -1,2 +0,0 @@
1
- import{d as P,r as O}from"./chunk-V4SUZRAG.js";import{c as B}from"./chunk-4SMU6FWN.js";import{E as L,Mc as w,R as I,W as N,la as b,p as f}from"./chunk-YP4LWQJG.js";import{a,b as D}from"./chunk-7CGTOI24.js";var y=class{constructor(t){this.loader=t}_data=b(void 0);_isLoading=!1;_loaded=!1;load(){return!this._loaded&&!this._isLoading&&(this._isLoading=!0,this.loader().pipe(L(()=>this._isLoading=!1)).subscribe(t=>{this._data.set(t),this._loaded=!0})),this._data.asReadonly()}value(){return this._data.asReadonly()}isLoading(){return this._isLoading}isLoaded(){return this._loaded}reset(){this._data.set(void 0),this._loaded=!1}};var d=class e{#e=N(B);#o=new y(()=>this.getS3Config("Providers"));#n=new y(()=>this.getS3Config("Regions"));#r=new y(()=>this.getS3Config("RegionHosts"));#s=new y(()=>this.getS3Config("StorageClasses"));#i=w(()=>{let t=this.#o.value()(),o=this.#r.value()(),r=[...t??[],...o?.map(n=>({key:`Amazon ${n.key}`,value:n.value}))??[]];return Array.from(new Map(r.map(n=>[n.value,n])).values())});#a=new y(()=>this.getStorjConfig("Satellites"));#l=new y(()=>this.getStorjConfig("AuthenticationMethods"));#c=new y(()=>this.getOpenstackConfig("Providers"));#p=new y(()=>this.getOpenstackConfig("Versions"));#u=new y(()=>this.getGcsConfig("Locations"));#m=new y(()=>this.getGcsConfig("StorageClasses"));getS3AllProviders(){return this.#o.load(),this.#r.load(),this.#i}getS3ProvidersFiltered(t){return w(()=>this.getS3AllProviders()().filter(t))}getS3Providers(){return this.#o.load()}getS3Regions(){return this.#n.load()}getS3RegionHosts(){return this.#r.load()}getS3StorageClasses(){return this.#s.load()}getStorjSatellites(){return this.#a.load()}getStorjAuthenticationMethods(){return this.#l.load()}getOpenstackProviders(){return this.#c.load()}getOpenstackVersions(){return this.#p.load()}getGcsLocations(){return this.#u.load()}getGcsStorageClasses(){return this.#m.load()}getS3Config(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"s3-getconfig",requestBody:{"s3-config":t}}).pipe(f(o=>this.#t(o)))}createS3IamUser(t,o){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"s3-iamconfig",requestBody:{"s3-operation":"CanCreateUser","s3-username":t,"s3-password":o}})}createS3PolicyIAM(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"s3-iamconfig",requestBody:{"s3-operation":"GetPolicyDoc",path:t}})}getStorjConfig(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"storj-getconfig",requestBody:{"storj-config":t}}).pipe(f(o=>this.#t(o)))}getOpenstackConfig(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"openstack-getconfig",requestBody:{"openstack-config":t}}).pipe(f(o=>this.#t(o)))}getGcsConfig(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"gcs-getconfig",requestBody:{"gcs-config":t}}).pipe(f(o=>this.#t(o)))}#t(t){return(t.Result&&typeof t.Result=="object"&&Object.entries(t.Result).map(([o,r])=>({key:o,value:r})))??[]}getDuplicatiStorageBackups(t){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"duplicati-list-backups",requestBody:{action:"ListBackups",url:t}}).pipe(f(o=>this.#t(o)),f(o=>o.find(r=>r.key==="folders")?.value),f(o=>JSON.parse(o)))}getFilenApiKey(t,o){return this.#e.postApiV1WebmoduleByModulekey({modulekey:"filen-get-api-key",requestBody:{"filen-operation":"GetApiKey","backup-id":o??"",url:t}}).pipe(f(r=>this.#t(r)),f(r=>r.find(n=>n.key==="api-key")?.value))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=I({token:e,factory:e.\u0275fac,providedIn:"root"})};var s=new O,p={type:"error",message:$localize`Using a leading slash is most likely wrong, and will result in objects being created with a leading slash in the name.`},U={description:$localize`Unknown destination type`,icon:"assets/dest-icons/file-system.png",isDefaultEntry:!0,customFields:{path:{type:"String",name:"path",doubleSlash:p,shortDescription:$localize`Path`,formElement:e=>s.control(e??"")}},mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>{let n=o.startsWith(`${e}:///`)?o.split(`${e}:///`)[1]:o.split(`${e}://`)[1];return a({destinationType:e,custom:{path:n.split("?")[0]}},l(e,t))}}},v={key:"s3",displayName:$localize`S3 Compatible`,description:$localize`Store backups in any S3 compatible bucket.`,icon:"assets/dest-icons/s3compat.png",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"s3-server-name",order:1,shortDescription:$localize`Server`,longDescription:$localize`The hostname of the S3 compatible server to connect to`,type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3AllProviders(),isMandatory:!0,formElement:e=>s.control(e??"")},{name:"auth-username",isMandatory:!0},{name:"auth-password",isMandatory:!0},{name:"use-ssl"}],advancedFields:[{name:"s3-client",type:"Enumeration",loadOptions:()=>b([{key:"AWS Library",value:"aws"},{key:"MinIO Library",value:"minio"}]),validate:e=>({type:"warning",message:$localize`Invalid client selected`})}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))}}},F=[{key:"file",displayName:$localize`File system`,description:$localize`Store backups on your local file system.`,icon:"assets/dest-icons/file-system.png",searchTerms:"local disk harddrive localdisk filesystem unc server share drive",sortOrder:100,customFields:{path:{type:"FolderTree",name:"path",doubleSlash:p,shortDescription:$localize`File path`,longDescription:$localize`The path to store the backup`,formElement:e=>s.control(e??""),isMandatory:!0}},mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>{let r=o.startsWith("file:///"),n=decodeURIComponent(r?o.split("file:///")[1]:o.split("file://")[1]),u=n.slice(1).startsWith(":\\")||n.slice(1).startsWith(":/")||n.startsWith("\\\\")?n:"/"+n;return a({destinationType:e,custom:{path:u.split("?")[0]}},l(e,t))}}},{key:"duplicati",displayName:$localize`Duplicati Storage`,description:$localize`Store backups with Duplicati Storage.`,icon:"assets/dest-icons/duplicati.png",searchTerms:"duplicati internal built-in",sortOrder:-2,dynamicFields:[{name:"duplicati-backup-id",type:"DuplicatiBackupId",isMandatory:!0,shortDescription:$localize`Unique Backup ID`,longDescription:$localize`A unique identifier for the backup job. It is recommended to not change this value.`}],mapper:{to:e=>c(e,null,null,null),from:(e,t,o)=>a({destinationType:e},l(e,t)),default:e=>e&&e.length>0?`duplicati://?duplicati-backup-id=${encodeURIComponent(e)}`:"duplicati://"}},{key:"ssh",displayName:$localize`SSH`,description:$localize`Store backups with SSH.`,icon:"assets/dest-icons/ssh.png",searchTerms:"sftp scp secure shell",sortOrder:80,customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`The server to connect to`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`The port to connect to`,formElement:e=>s.control(e??"",[P.required,P.max(65535)])},path:{type:"Path",name:"path",shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,doubleSlash:{type:"warning",message:$localize`Using a leading slash makes the path absolute, pointing to the root of the filesystem.`},formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",isMandatory:!0}],advancedFields:[{type:"FileTree",name:"ssh-keyfile",accepts:".key,",shortDescription:$localize`This is a path to a private key file locally on the machine`,longDescription:$localize`This is a path to a private key file locally on the machine`},{type:"FreeText",name:"ssh-key",shortDescription:$localize`SSH private key`,longDescription:$localize`An SSH private key. Supported formats are OpenSSL, OpenSSH, PuTTY, and PEM.`}],mapper:{to:e=>{let{server:t,port:o,path:r}=e.custom;return c(e,t,o,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"s3",displayName:$localize`S3 Compatible`,description:$localize`Store backups in any S3 compatible bucket.`,icon:"assets/dest-icons/s3compat.png",searchTerms:"spaces cloud digitalocean cloudian minio linode bunnycdn oracle cloudflare alibaba huawei tencent baidu jd ucloud qiniu aliyun tcloud tencent ",sortOrder:90,customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"s3-server-name",order:1,shortDescription:$localize`Server`,longDescription:$localize`The hostname of the S3 compatible server to connect to`,type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3AllProviders(),isMandatory:!0,formElement:e=>s.control(e??"")},{name:"use-ssl",order:2},{name:"auth-username",isMandatory:!0},{name:"auth-password",isMandatory:!0}],advancedFields:[{name:"s3-client",type:"Enumeration",loadOptions:()=>b([{key:"AWS Library",value:"aws"},{key:"MinIO Library",value:"minio"}])},{name:"s3-storage-class",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3StorageClasses()},{name:"s3-location-constraint",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3Regions()}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))}}},{key:"s3",customKey:"s3-aws",displayName:$localize`Amazon S3`,description:$localize`Store backups in Amazon S3.`,icon:"assets/dest-icons/aws.png",searchTerms:"amazon aws",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"s3-server-name",order:1,shortDescription:$localize`Server`,longDescription:$localize`The hostname of the S3 compatible server to connect to`,type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3ProvidersFiltered(t=>t.value.endsWith(".amazonaws.com")),isMandatory:!0,formElement:e=>s.control(e??"")},{name:"use-ssl",order:2},{name:"auth-username",isMandatory:!0},{name:"auth-password",isMandatory:!0}],advancedFields:[{name:"s3-client",type:"Enumeration",loadOptions:()=>b([{key:"AWS Library",value:"aws"},{key:"MinIO Library",value:"minio"}])},{name:"s3-storage-class",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3StorageClasses()},{name:"s3-location-constraint",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getS3Regions()}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return e.dynamic["s3-server-name"]?.endsWith(".amazonaws.com")&&(e.destinationType="s3"),c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))},default:e=>"s3-aws://?use-ssl=true",intercept:e=>e.searchParams.get("s3-server-name")?.endsWith(".amazonaws.com")??!1}},{key:"gcs",displayName:$localize`Google Cloud Storage`,description:$localize`Store backups in Google Cloud Storage.`,icon:"assets/dest-icons/google-cloud.png",oauthField:"authid",searchTerms:"gcp googlecloud",sortOrder:70,customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0,longDescription:$localize`An OAuth token with access to the Google Cloud Storage. Not required if service account JSON is provided.`}],advancedFields:[{name:"gcs-location",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getGcsLocations()},{name:"gcs-storage-class",type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getGcsStorageClasses()},{name:"gcs-service-account-file",type:"FileTree",accepts:".json,",shortDescription:$localize`Service account JSON file`,longDescription:$localize`Pick the path to a file with service account JSON.`},{name:"gcs-service-account-json",type:"FreeText",shortDescription:$localize`Service account JSON`,longDescription:$localize`Paste the service account JSON here.`}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))}}},{key:"googledrive",displayName:$localize`Google Drive`,description:$localize`Store backups in Google Drive.`,icon:"assets/dest-icons/google-drive.png",oauthField:"authid",searchTerms:"gdrive",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",type:"Password",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"pcloud",displayName:$localize`pCloud`,description:$localize`Store backups in pCloud.`,icon:"assets/dest-icons/pcloud.png",oauthField:"authid",customFields:{server:{type:"Enumeration",name:"server",loadOptions:()=>b([{key:"pCloud Global",value:"api.pcloud.com"},{key:"pCloud Europe",value:"eapi.pcloud.com"}]),shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Folder path`,longDescription:$localize`Folder path`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",type:"Password",oauthVersion:2,isMandatory:!0}],mapper:{to:e=>{let{server:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{server:r,path:n}=m(t);return a({destinationType:e,custom:{server:r,path:n}},l(e,t))}}},{key:"azure",displayName:$localize`Azure Blob Storage`,description:$localize`Store backups in Azure Blob Storage.`,icon:"assets/dest-icons/azure.png",searchTerms:"microsoft ms",sortOrder:60,customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Container name`,longDescription:$localize`Container name`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Account name`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Access key`,isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"onedrivev2",displayName:$localize`OneDrive`,description:$localize`Store backups in OneDrive.`,icon:"assets/dest-icons/one-drive.png",oauthField:"authid",searchTerms:"micorsoft ms",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"od4b",displayName:$localize`OneDrive Business`,description:$localize`Store backups in OneDrive Business.`,icon:"assets/dest-icons/one-drive.png",searchTerms:"microsoft ms",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Account name`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Access key`,isMandatory:!0}],mapper:{to:e=>{let{port:t,server:o,path:r}=e.custom;return c(e,o,t,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"mssp",displayName:$localize`Microsoft SharePoint`,description:$localize`Store backups in Microsoft SharePoint.`,icon:"assets/dest-icons/sharepoint.png",searchTerms:"microsoft ms",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"String",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Account name`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Access key`,isMandatory:!0}],mapper:{to:e=>{let{port:t,server:o,path:r}=e.custom;return c(e,o,t,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"sharepoint",displayName:$localize`Microsoft SharePoint v2`,description:$localize`Store backups in Microsoft SharePoint.`,icon:"assets/dest-icons/sharepoint.png",oauthField:"authid",searchTerms:"microsoft ms",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"site-id",isMandatory:!0},{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"dropbox",displayName:$localize`Dropbox`,description:$localize`Store backups in Dropbox.`,icon:"assets/dest-icons/dropbox.png",oauthField:"authid",searchTerms:"dbx",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"box",displayName:$localize`Box.com`,description:$localize`Store backups in Box.com.`,icon:"assets/dest-icons/box-com.png",oauthField:"authid",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"jottacloud",displayName:$localize`Jottacloud`,description:$localize`Store backups in Jottacloud.`,icon:"assets/dest-icons/jottacloud.png",oauthField:"authid",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"b2",displayName:$localize`B2 Cloud Storage`,description:$localize`Store backups in B2 Cloud Storage.`,icon:"assets/dest-icons/backblaze.png",searchTerms:"backblaze",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0,validate:e=>{function t(o){if(!o)return!1;let r=o.length;return!(r<6||r>63||!/^[a-zA-Z0-9.-]+$/.test(o)||!/^[a-zA-Z0-9]/.test(o)||!/[a-zA-Z0-9]$/.test(o)||/^\d{1,3}(\.\d{1,3}){3}$/.test(o)||/(\.\.)|(\.-)|(-\.)/.test(o)||o.toLowerCase().startsWith("b2-"))}return t(e)?null:{type:"error",message:$localize`Invalid bucket name.`}}},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path in the bucket`,longDescription:$localize`Path in the bucket`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Application ID`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Application Key`,isMandatory:!0}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))}}},{key:"e2",displayName:$localize`IDrive e2`,description:$localize`Store backups in IDrive e2.`,icon:"assets/dest-icons/idrive-e2.png",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,longDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"String",name:"path",doubleSlash:p,shortDescription:$localize`Path in the bucket`,longDescription:$localize`Path in the bucket`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Access ID`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Access Secret`,isMandatory:!0}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom;return c(e,t,null,o)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{bucket:r,path:n}},l(e,t))}}},{key:"mega",displayName:$localize`Mega.nz`,description:$localize`Store backups in Mega.nz.`,icon:"assets/dest-icons/mega-nz.png",sortOrder:-1,customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Username`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Password`,isMandatory:!0}],mapper:{to:e=>{let t=e.custom.path;return c(e,null,null,t)},from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"msgroup",displayName:$localize`Microsoft Office 365 Group`,description:$localize`Store backups in Microsoft Office 365 Group.`,icon:"assets/dest-icons/office-365.png",oauthField:"authid",searchTerms:"ms",customFields:{groupEmail:{type:"Email",name:"groupEmail",shortDescription:$localize`Group email`,longDescription:$localize`Group email`,formElement:e=>s.control(e??"",[P.email]),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"authid",isMandatory:!0}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"cloudfiles",displayName:$localize`Rackspace CloudFiles`,description:$localize`Store backups in Rackspace CloudFiles.`,icon:"assets/dest-icons/rackspace.png",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Username`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Password`,isMandatory:!0}],mapper:{to:e=>{let{port:t,server:o,path:r}=e.custom;return c(e,o,t,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"rclone",displayName:$localize`Rclone`,description:$localize`Store backups in Rclone.`,icon:"assets/dest-icons/rclone.png",searchTerms:"rcl",dynamicFields:[{name:"rclone-local-repository",shortDescription:$localize`Local repository`,defaultValue:""},{name:"rclone-remote-repository",shortDescription:$localize`Remote repository`,defaultValue:""},{name:"rclone-remote-path",type:"Path",shortDescription:$localize`Path on remote repository`,defaultValue:""}],mapper:{to:e=>{let t=e.dynamic["rclone-remote-repository"],o=e.dynamic["rclone-remote-path"],r=Object.entries(e.dynamic).filter(([n])=>!["rclone-remote-repository","rclone-remote-path"].includes(n));return M(e.destinationType??"rclone",t,null,o,[...Object.entries(e.advanced??{}),...r])},from:(e,t,o)=>{let{advanced:r,dynamic:n}=l(e,t),{bucket:i,path:u}=m(t);return{destinationType:e,dynamic:a({"rclone-remote-repository":i,"rclone-remote-path":u},n),advanced:a({},r)}}}},{key:"openstack",displayName:$localize`OpenStack Object Storage`,description:$localize`Store backups in OpenStack Object Storage.`,icon:"assets/dest-icons/open-stack.png",searchTerms:"swift",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket`,longDescription:$localize`Bucket`,formElement:e=>s.control(e??""),isMandatory:!0}},dynamicFields:[{name:"openstack-authuri",shortDescription:$localize`Auth URI`,type:"Enumeration",loadOptions:e=>e.get(d).getOpenstackProviders(),isMandatory:!0},{name:"openstack-version",shortDescription:$localize`Version`,type:"Enumeration",loadOptions:e=>e.get(d).getOpenstackVersions()},{name:"openstack-domain-name",type:"Hostname",shortDescription:$localize`Domain name`},{name:"openstack-tenant-name",shortDescription:$localize`Tenant name`},{name:"openstack-region",shortDescription:$localize`Region`}],mapper:{to:e=>{let{bucket:t}=e.custom;return c(e,t,null,null)},from:(e,t,o)=>{let{bucket:r,path:n}=m(t);return a({destinationType:e,custom:{path:n,bucket:r}},l(e,t))}}},{key:"webdav",displayName:$localize`WebDAV`,description:$localize`Store backups in WebDAV.`,icon:"assets/dest-icons/webdav.png",searchTerms:"web dav",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"use-ssl",shortDescription:$localize`Use SSL`},{name:"auth-username",shortDescription:$localize`Username`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Password`,isMandatory:!0}],mapper:{to:e=>{let{server:t,port:o,path:r}=e.custom;return c(e,t,o,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"aftp",displayName:$localize`Alternative FTP`,description:$localize`Store backups in FTP.`,icon:"assets/dest-icons/ftp.png",searchTerms:"alt file transfer protocol ftps",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,doubleSlash:{type:"warning",message:$localize`Using a leading slash makes the path absolute, pointing to the root of the filesystem.`},formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Username`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Password`,isMandatory:!0}],mapper:{to:e=>{let{server:t,port:o,path:r}=e.custom;return c(e,t,o,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"ftp",displayName:$localize`FTP`,description:$localize`Store backups in FTP.`,icon:"assets/dest-icons/ftp.png",searchTerms:"file transfer protocol ftps",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,doubleSlash:{type:"warning",message:$localize`Using a leading slash makes the path absolute, pointing to the root of the filesystem.`},formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",shortDescription:$localize`Username`,isMandatory:!0},{name:"auth-password",shortDescription:$localize`Password`,isMandatory:!0}],mapper:{to:e=>{let{port:t,server:o,path:r}=e.custom;return c(e,o,t,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"sia",displayName:$localize`Sia Decentrilized Cloud`,description:$localize`Store backups in Sia Decentrilized Cloud.`,icon:"assets/dest-icons/sia-cloud.png",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0}},dynamicFields:["sia-targetpath","sia-password","sia-redundancy"],mapper:{to:e=>{let t=e.custom.server,o=e.dynamic["sia-targetpath"],r=[...Object.entries(e.advanced),...Object.entries(e.dynamic).filter(([n])=>n!=="sia-targetpath")];return M(e.destinationType??"sia",t,null,o,r)},from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"cos",displayName:$localize`Tencent COS`,description:$localize`Store backups in Tencent COS.`,icon:"assets/dest-icons/tencent-cloud.png",customFields:{bucket:{name:"bucket",type:"Bucketname",shortDescription:$localize`Bucket`,isMandatory:!0,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"cos-region",shortDescription:$localize`Region`},{name:"cos-app-id",shortDescription:$localize`COS App Id`,isMandatory:!0},{name:"cos-secret-id",shortDescription:$localize`COS Secret Id`,isMandatory:!0},{name:"cos-secret-key",shortDescription:$localize`COS Secret Key`,isMandatory:!0}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom,r=D(a({},e),{advanced:D(a({},e.advanced),{"cos-bucket":t})});return c(r,null,null,o)},from:(e,t,o)=>{let r=l(e,t),n=r.advanced["cos-bucket"];return delete r.advanced["cos-bucket"],a({destinationType:e,custom:{path:g(t),bucket:n}},r)}}},{key:"tahoe",displayName:$localize`Tahoe LAFS`,description:$localize`Store backups in Tahoe LAFS.`,icon:"assets/dest-icons/tahoelafs.png",searchTerms:"least authority file system",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},port:{type:"Integer",name:"port",shortDescription:$localize`Port`,longDescription:$localize`Port`,formElement:e=>s.control(e??"")},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"use-ssl",shortDescription:$localize`Use SSL`}],mapper:{to:e=>{let{server:t,port:o,path:r}=e.custom;return c(e,t,o,r)},from:(e,t,o)=>{let{server:r,port:n,path:i}=m(t);return a({destinationType:e,custom:{server:r,port:n,path:i}},l(e,t))}}},{key:"smb",displayName:$localize`Windows Share (SMB)`,description:$localize`Store backups on SMB storage.`,icon:"assets/dest-icons/smb.png",searchTerms:"cifs samba",customFields:{server:{type:"Hostname",name:"server",shortDescription:$localize`Server`,longDescription:$localize`Server`,formElement:e=>s.control(e??""),isMandatory:!0},share:{type:"Hostname",name:"share",shortDescription:$localize`Share Name`,longDescription:$localize`Share Name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on server`,longDescription:$localize`Path on server`,formElement:e=>s.control(e??"")}},dynamicFields:["transport",{name:"auth-username",isMandatory:!0},{name:"auth-password",isMandatory:!0},"auth-domain"],mapper:{to:e=>{let{share:t,server:o,path:r}=e.custom;return c(e,o,null,E(t,r))},from:(e,t,o)=>{let{server:r,path:n}=m(t),i=n.split("/")[0],u=n.split("/").slice(1).join("/");return a({destinationType:e,custom:{server:r,share:i,path:u}},l(e,t))}}},{key:"cifs",displayName:$localize`CIFS (deprecated)`,description:$localize`Same as SMB backend, but with a different name. Use SMB instead.`,icon:"assets/dest-icons/smb.png",sortOrder:-1,mapper:U.mapper},{key:"filen",displayName:$localize`Filen.io`,description:$localize`Store backups in Filen.io.`,icon:"assets/dest-icons/filen.png",customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on Filen`,longDescription:$localize`Path on Filen`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"auth-username",isMandatory:!0},{name:"auth-password",isMandatory:!0},{name:"two-factor-code",type:"Filen2FACode"}],mapper:{to:e=>c(e,null,null,e.custom.path),from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"filejump",displayName:$localize`Filejump`,description:$localize`Store backups in Filejump.`,icon:"assets/dest-icons/file-jump.png",sortOrder:-1,customFields:{path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path on Filejump`,longDescription:$localize`Path on Filejump`,formElement:e=>s.control(e??"")}},dynamicFields:[{type:"Password",name:"api-token",shortDescription:$localize`API Token`,longDescription:$localize`Filejump API Token`,formElement:e=>s.control(e??""),isMandatory:!0}],mapper:{to:e=>{let{path:t}=e.custom;return c(e,null,null,t)},from:(e,t,o)=>a({destinationType:e,custom:{path:g(t)}},l(e,t))}},{key:"storj",customKey:"storjAccessGrant",displayName:$localize`Storj Access Grant`,description:$localize`Store backups in Storj Access Grant.`,icon:"assets/dest-icons/storj.png",dynamicFields:[{name:"storj-shared-access",shortDescription:$localize`Access Grant`,isMandatory:!0},{name:"storj-bucket",type:"Bucketname",shortDescription:$localize`Bucket`,isMandatory:!0},{name:"storj-folder",type:"Path",shortDescription:$localize`Path on server`,doubleSlash:p},{name:"storj-satellite",shortDescription:$localize`Satellite`,type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getStorjSatellites(),isMandatory:!0}],mapper:{to:e=>{let t={"storj-auth-method":"Acccess grant"};return`storj://storj.io/config${V([...Object.entries(e.advanced),...Object.entries(e.dynamic),...Object.entries(t)])}`},from:(e,t,o)=>{let r=l(e,t);return delete r.advanced["storj-auth-method"],a({destinationType:e},r)},intercept:e=>e.protocol!=="storj:"?!1:!!(e.searchParams.get("storj-shared-access")||e.searchParams.get("storj-auth-method")==="Acccess grant"),default:()=>"storj://?storj-shared-access=&storj-auth-method=Acccess+grant"}},{key:"storj",customKey:"storjApiKey",displayName:$localize`Storj API Key`,description:$localize`Store backups in Storj API Key.`,icon:"assets/dest-icons/storj.png",dynamicFields:[{name:"storj-satellite",shortDescription:$localize`Satellite`,type:"NonValidatedSelectableString",loadOptions:e=>e.get(d).getStorjSatellites(),isMandatory:!0},{name:"storj-api-key",shortDescription:$localize`API Key`,isMandatory:!0},{name:"storj-secret",shortDescription:$localize`Secret`,isMandatory:!0},{name:"storj-bucket",type:"Bucketname",shortDescription:$localize`Bucket`,isMandatory:!0},{name:"storj-folder",type:"Path",shortDescription:$localize`Path on server`,doubleSlash:p}],mapper:{to:e=>{let t={"storj-auth-method":"API key"};return`storj://storj.io/config${V([...Object.entries(e.advanced),...Object.entries(e.dynamic),...Object.entries(t)])}`},from:(e,t,o)=>{let r=l("storjApiKey",t);return delete r.advanced["storj-auth-method"],a({destinationType:e},r)},intercept:e=>e.protocol!=="storj:"?!1:!!(e.searchParams.get("storj-api-key")||e.searchParams.get("storj-secret")||e.searchParams.get("storj-auth-method")==="API key"),default:()=>"storj://?storj-api-key=&storj-secret=&storj-auth-method=API+key"}},{key:"aliyunoss",displayName:$localize`Aliyun OSS`,description:$localize`Store backups in Aliyun OSS`,icon:"assets/dest-icons/aliyun.png",customFields:{bucket:{type:"Bucketname",name:"bucket",shortDescription:$localize`Bucket name`,formElement:e=>s.control(e??""),isMandatory:!0},path:{type:"Path",name:"path",doubleSlash:p,shortDescription:$localize`Path in bucket`,longDescription:$localize`Path in bucket`,formElement:e=>s.control(e??"")}},dynamicFields:[{name:"oss-endpoint",isMandatory:!0},{name:"oss-access-key-id",isMandatory:!0},{name:"oss-access-key-secret",isMandatory:!0}],mapper:{to:e=>{let{bucket:t,path:o}=e.custom,r=D(a({},e),{advanced:D(a({},e.advanced),{"oss-bucket-name":t})});return c(r,null,null,o)},from:(e,t,o)=>{let r=l(e,t),n=r.advanced["oss-bucket-name"];return delete r.advanced["oss-bucket-name"],a({destinationType:e,custom:{path:g(t),bucket:n}},r)}}},h("rabata","Rabata.io",null,"assets/dest-icons/rabata.png",[".rabata.io"]),h("wasabi","Wasabi Hot Storage",null,"assets/dest-icons/wasabi.png",[".wasabisys.com"]),h("impossiblecloud","Impossible Cloud",null,"assets/dest-icons/impossiblecloud.png",[".impossibleapi.net"]),h("scaleway","Scaleway",null,"assets/dest-icons/scaleway.png",[".scw.cloud"]),h("hosteurope","Hosteurope",null,"assets/dest-icons/hosteurope.png",[".hosteurope.de"]),h("dunkel","Dunkel",null,"assets/dest-icons/dunkel.png",[".dunkel.de"]),h("dreamhost","DreamHost",null,"assets/dest-icons/dreamhost.png",[".dreamhost.com"]),h("dincloud","dinCloud",null,"assets/dest-icons/dincloud.png",[".dincloud.com"]),h("polisystems","Poli Systems",null,"assets/dest-icons/polisystems.png",[".polisystems.ch"]),h("ibmcos","IBM COS",null,"assets/dest-icons/ibmcos.png",[".softlayer.net"]),h("storadera","Storadera",null,"assets/dest-icons/storadera.png",[".storadera.com"]),h("infomaniak","Infomaniak",null,"assets/dest-icons/infomaniak.png",[".infomaniak.com",".infomaniak.cloud"]),h("sakuracloud","\u3055\u304F\u3089\u306E\u30AF\u30E9\u30A6\u30C9",null,"assets/dest-icons/sakuracloud.png",[".sakurastorage.jp"]),h("seagatelyve","Seagate Lyve",null,"assets/dest-icons/seagatelyve.png",[".lyvecloud.seagate.com"]),h("internxt","Internxt",null,"assets/dest-icons/internxt.png",[".internxt.com"])],ge={".amazonaws.com":"Amazon S3",".impossibleapi.net":"Impossible Cloud S3",".scw.cloud":"Scaleway S3",".hosteurope.de":"Hosteurope S3",".dunkel.de":"Dunkel S3",".dreamhost.com":"DreamHost S3",".dincloud.com":"dinCloud S3",".polisystems.ch":"Poli Systems S3",".softlayer.net":"IBM COS (S3)",".storadera.com":"Storadera S3",".wasabisys.com":"Wasabi S3",".infomaniak.com":"Infomaniak S3",".infomaniak.cloud":"Infomaniak S3",".sakurastorage.jp":"\u3055\u304F\u3089\u306E\u30AF\u30E9\u30A6\u30C9 S3",".lyvecloud.seagate.com":"Seagate Lyve S3",".digitaloceanspaces.com":"DigitalOcean S3",".backblazeb2.com":"Backblaze B2 S3",".cloudian.com":"Cloudian S3",".min.io":"MinIO S3",".linodeobjects.com":"Linode S3",".bunnycdn.com":"BunnyCDN S3",".azure.com":"Microsoft Azure S3",".googleapis.com":"Google Cloud Storage S3",".ibm.com":"IBM Cloud S3",".oracle.com":"Oracle Cloud S3",".cloudflare.com":"Cloudflare S3",".alibaba.com":"Alibaba Cloud S3",".huawei.com":"Huawei Cloud S3",".tencent.com":"Tencent Cloud S3",".baidu.com":"Baidu Cloud S3",".jd.com":"JD Cloud S3",".ucloud.cn":"UCloud S3",".qiniu.com":"Qiniu Cloud S3",".aliyuncs.com":"Aliyun S3",".tcloud.com":"TCloud S3",".tencentcloudapi.com":"Tencent Cloud S3",".rabata.io":"Rabata S3",".internxt.com":"Internxt S3"};var x=new O,$=class{host;hostname;exactHostname;pathname;port;protocol;search;username;password;searchParams;originalUrl;constructor(t){let o=new URL(t);this.originalUrl=t,this.host=o.host,this.hostname=o.hostname,this.exactHostname=this.extractExactHostname(t),this.pathname=o.pathname,this.port=o.port,this.protocol=o.protocol,this.search=o.search,this.username=o.username,this.password=o.password,this.searchParams=o.searchParams}extractExactHostname(t){let o=t.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/(?:[^@\/?#]*@)?([^:\/?#]+)/);return o?o[1]:""}};function c(e,t,o,r){return M(e.destinationType??"file",t,o,r,[...Object.entries(e.advanced),...Object.entries(e.dynamic)])}function M(e,t,o,r,n){let i=V(n),u=encodeURIComponent(R(t)),k=u==""?"":u+H(o),S=r??"",A=S.slice(1).startsWith(":\\")&&e=="file"?"file:///":`${e}://`,z=E(k,W(S));return`${A}${z}${i}`}function T(e){return e==null||e===""?"":e.startsWith("/")?e.substring(1):e}function E(...e){if(e.length===0)return"";if(e.length===1)return e[0]??"";let t="";for(let o of e)o==null||o===""||(t+=t.endsWith("/")||t==""?o:"/"+o);return t}function W(e){return e.split("/").map(encodeURIComponent).join("/")}function g(e){if(e==null||e==="")return"";if(typeof e=="string")try{e=new $(e)}catch{return""}return decodeURIComponent(e.exactHostname??"")+decodeURIComponent(e.pathname=="/"?"":e.pathname??"")}function R(e){return e==null||e===""?"":e.endsWith("/")?e.substring(0,e.length-1):e}function H(e){return e==null||e===""?"":":"+e.toString()}function _(e){try{let o=new $(e),r=F.find(n=>n.mapper.intercept?.(o));if(r)return r}catch{}let t=e.split("://")[0];return C(t)}function C(e){return F.find(o=>o.key===e||o.customKey===e)??F.find(o=>`${o.key}s`===e)??null??a({key:e,displayName:e},U)}function ve(e){return F.filter(t=>t.key===e||t.customKey===e)}function m(e){return{bucket:decodeURIComponent(e.exactHostname),server:decodeURIComponent(e.hostname),port:e.port,path:T(decodeURIComponent(e.pathname))}}function l(e,t){let o={},r={},n=C(e);return t.searchParams.forEach((i,u)=>{n?.dynamicFields?.some(S=>S===u||S?.name===u)?r[u]=decodeURIComponent(i):o[u]=decodeURIComponent(i)}),{advanced:o,dynamic:r}}function V(e,t=!1){let o=e.map(([n,i])=>`${n}=${i?encodeURIComponent(i.toString()):""}`).join("&");return o?(t?"":"?")+o:""}function Fe(e){let t=e.destinationType??"";return C(t)?.mapper.to(e)??""}function Pe(e){let t=e.split("://")[0],o=e.split("://")[1],r=t==="file"?"http://dummy":o==""||o.startsWith("?")?`${t}://`+o:"http://"+o;if(!o)return null;if(o.startsWith("%")&&t==="file")return C(t).mapper.from(t,new $("http://localhost"),e);let n=_(e),i="";`${n.key}s`===t&&(i+=r.indexOf("?")===-1?"?":"&",i+="use-ssl=true",e=n.key+e.substring(t.length)),t==="file"&&o.indexOf("?")!==-1&&(i+=i.indexOf("?")===-1?"?":"&",i+=o.split("?")[1]??"");try{let u=new $(r+i);if(u.host==="undefined")return null;let k=o.split("?")[0].split("/")[0],S=u.host!=""&&!isNaN(Number(u.host.replaceAll(".",""))),G=k.split("."),A=G.length===4&&G.every(z=>z.length&&z.length<=3&&!isNaN(Number(z))&&parseInt(z)<=255);return S&&!A?null:n.mapper.from(n.key,u,e)}catch(u){return console.error("Error while parsing target path",e,r+i,u),null}}function j(e){return typeof e!="string"||!e.trim()?[]:e.split(`
2
- `).map(t=>t.trim()).filter(t=>t).map(t=>{let[o,...r]=t.split("="),n=r.join("=").trim();return o.trim()?[o.trim(),n]:null}).filter(t=>t!==null)}function Oe(e){return j(e).map(([t,o])=>({Name:t,Value:o}))}function Me(e){return Object.fromEntries(j(e))}function Ve(e){if(!e)return!1;let t=e.length;return!(t<3||t>63||!/^[a-z0-9.-]+$/.test(e)||!/^[a-z0-9]/.test(e)||!/[a-z0-9]$/.test(e)||/^\d{1,3}(\.\d{1,3}){3}$/.test(e)||/(\.\.)|(\.-)|(-\.)/.test(e))}function Ce(e){if(!e||e.length>253)return!1;let t=e.split(".");for(let o of t)if(!o||o.length>63||!/^[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?$/.test(o))return!1;return!0}function h(e,t,o,r,n){return D(a({},v),{customKey:`s3-${e}`,icon:r??v.icon,displayName:$localize`${t} (S3)`,description:o??$localize`Store backups in ${t} storage.`,dynamicFields:[...(v.dynamicFields??[]).filter(i=>i?.name!=="s3-server-name"),{name:"s3-server-name",order:1,shortDescription:$localize`Server`,longDescription:$localize`The hostname of the ${t} endpoint`,type:"NonValidatedSelectableString",loadOptions:i=>i.get(d).getS3ProvidersFiltered(u=>n.some(k=>u.value.endsWith(k))),isMandatory:!0,formElement:i=>x.control(i??"")}],mapper:D(a({},v.mapper),{to:i=>{let{bucket:u,path:k}=i.custom;return n.some(S=>i.dynamic["s3-server-name"]?.endsWith(S))&&(i.destinationType="s3"),c(i,u,null,k)},default:i=>`s3-${e}://?use-ssl=true`,intercept:i=>n.some(u=>i.searchParams.get("s3-server-name")?.endsWith(u))??!1})})}export{d as a,_ as b,C as c,ve as d,Fe as e,Pe as f,Oe as g,Me as h,Ve as i,Ce as j,ge as k};
package/chunk-6JS32BWJ.js DELETED
@@ -1,2 +0,0 @@
1
- import{a as Gt}from"./chunk-S64V7K5F.js";import{a as Ft}from"./chunk-SFDEJ4KT.js";import{a as $t}from"./chunk-GEBBLUCV.js";import"./chunk-VIHMVAQG.js";import"./chunk-44IYHRP5.js";import"./chunk-OMCDVUR6.js";import"./chunk-4FWSDHOG.js";import"./chunk-6Q6SSTBK.js";import"./chunk-MRTE3AG7.js";import{a as te}from"./chunk-ONXV5IRS.js";import"./chunk-X52R5Q6W.js";import{a as le}from"./chunk-D45OX6NR.js";import"./chunk-FUQM5D63.js";import{a as x}from"./chunk-PT5SA5DK.js";import"./chunk-TNJ2RJ2V.js";import"./chunk-DIJYLB6O.js";import{a as Rt}from"./chunk-P42HQ2IS.js";import{a as Ct,c as gt}from"./chunk-KANLHRTR.js";import{B as w,E as pt,G as Nt,H as ee,L as mt,M as ft,N as It,P as Pt,W as Mt,Y as Ot,c as q,e as K,i as j,m as ut,s as Q,t as Y,u as b,w as Z,z as Et}from"./chunk-V4SUZRAG.js";import{c as ht}from"./chunk-4SMU6FWN.js";import"./chunk-VRXOIVWD.js";import"./chunk-L4B2T7UE.js";import"./chunk-XURQUV7B.js";import"./chunk-WC6RBAAY.js";import"./chunk-XUDS7MYD.js";import{$ as u,Ab as o,Bb as m,E as F,Ib as P,Ma as at,Mc as v,Pa as l,Pb as M,Qb as O,Rb as _,Sb as B,Sc as dt,Tb as H,Ub as J,Vb as d,W as R,Xb as S,a as it,aa as E,b as ot,c as st,cb as D,cc as Tt,dc as St,gc as I,hb as se,ib as lt,jc as $,kc as W,la as c,lc as ae,na as k,oc as A,pb as _t,pc as L,qb as rt,qc as y,sb as C,tb as g,uc as ct,xc as X,yb as N,zb as s}from"./chunk-YP4LWQJG.js";import"./chunk-7CGTOI24.js";var Dt=["formRef"],bt=()=>[import("./chunk-MPUY3ELB.js").then(n=>n.OptionsListComponent)];function wt(n,t){n&1&&(s(0,"sh-alert",3),_(1,1),o())}function xt(n,t){if(n&1){let e=P();s(0,"app-options-list",5),y("optionsChange",function(a){u(e);let T=S();return L(T.settings,a)||(T.settings=a),E(a)}),o()}if(n&2){let e=S();A("options",e.settings),N("hasFreeTextSettings",!0)}}var V=class n{#e=R(x);#n=R(ht);formRef=dt.required("formRef");settings=c([]);isSubmitting=c(!1);isLoadingOptions=c(!0);saved=c(!1);lastRecievedServerSettings=c({});serverSettingsEffect=k(()=>{let t=this.#e.serverSettings();if(t===void 0)return;this.lastRecievedServerSettings.set(t),this.isLoadingOptions.set(!0);let e=Object.entries(t);e.forEach(([i,a],T)=>{if(i.startsWith("--")){let f=i.substring(2);this.settings.update(p=>(p.some(h=>h.Name===f||h.Name===i)||p.push({Name:i,Value:a}),p))}T===e.length-1&&this.isLoadingOptions.set(!1)})});submit(){this.isSubmitting.set(!0);let t=this.settings(),e=this.lastRecievedServerSettings(),i=t.map(p=>p.Name?.startsWith("--")?p.Name:`--${p.Name}`),T=Object.keys(e).filter(p=>p.startsWith("--")).filter(p=>!i.includes(p)),f=t.reduce((p,h)=>{let G=h.Name?.startsWith("--")?h.Name:`--${h.Name}`;return p[G]=h.Value,p},{});T.forEach(p=>{f[p]=null}),this.#n.patchApiV1Serversettings({requestBody:f}).pipe(F(()=>this.isSubmitting.set(!1))).subscribe({next:()=>{this.#e.refreshServerSettings(),this.saved.set(!0),setTimeout(()=>{this.saved.set(!1)},3e3)}})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=D({type:n,selectors:[["app-advanced-options-settings"]],viewQuery:function(e,i){e&1&&Tt(i.formRef,Dt,5),e&2&&St()},decls:8,vars:4,consts:()=>{let t;t=$localize`${"\uFFFD#4\uFFFD"}:START_TAG_SH_ICON:floppy-disk${"\uFFFD/#4\uFFFD"}:CLOSE_TAG_SH_ICON: Save settings `;let e;return e=$localize`Settings saved`,[t,e,[1,"actions"],[1,"success"],["shButton","","type","button",1,"raised","primary",3,"click"],[3,"optionsChange","options","hasFreeTextSettings"]]},template:function(e,i){e&1&&(s(0,"div",2),C(1,wt,2,0,"sh-alert",3),s(2,"button",4),d("click",function(){return i.submit()}),M(3,0),m(4,"sh-icon"),O(),o()(),lt(5,xt,1,2),_t(6,5,bt)),e&2&&(l(),g(i.saved()?1:-1),l(),I("loader",i.isSubmitting()),l(4),rt(!i.isLoadingOptions()))},dependencies:[Y,w,b,Z],styles:["[_nghost-%COMP%]{display:block;width:100%;max-width:40.625rem;justify-self:flex-end}.actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;justify-content:flex-end;margin-bottom:.5rem}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-wrap[_ngcontent-%COMP%]{display:grid;grid-template-columns:2fr 2.5rem;gap:.5rem;align-items:flex-end}.remote-volume-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.remote-volume-wrap[_ngcontent-%COMP%] p.warning[_ngcontent-%COMP%]{color:#7d7d00}.row-inputs[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:.5rem}.row-inputs[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1 0}.advanced-option[_ngcontent-%COMP%]{display:grid;gap:.5rem;grid-template-columns:1fr 1fr 2.5rem;align-items:flex-end}"],changeDetection:0})};function Jt(n,t){if(n&1){let e=P();s(0,"sh-form-field",12)(1,"input",13),y("ngModelChange",function(a){u(e);let T=S(2);return L(T.registerUrl,a)||(T.registerUrl=a),E(a)}),o()(),s(2,"button",14),d("click",function(){u(e);let a=S(2);return E(a.register())}),_(3,0),o()}if(n&2){let e=S(2);l(),A("ngModel",e.registerUrl)}}function Xt(n,t){if(n&1&&(s(0,"div",9)(1,"label"),_(2,1),o(),s(3,"a",15),$(4),o()()),n&2){let e=S(2);l(3),N("href",ct(e.claimUrl()),at),l(),W(e.claimUrl())}}function Vt(n,t){n&1&&(s(0,"div",9)(1,"label"),_(2,2),o()())}function zt(n,t){if(n&1){let e=P();s(0,"button",14),d("click",function(){u(e);let a=S(2);return E(a.cancel())}),_(1,3),o()}}function Ut(n,t){if(n&1){let e=P();s(0,"button",14),d("click",function(){u(e);let a=S(2);return E(a.disable())}),_(1,4),o()}}function Bt(n,t){if(n&1){let e=P();s(0,"button",14),d("click",function(){u(e);let a=S(2);return E(a.enable())}),_(1,5),o(),s(2,"button",16),d("click",function(){u(e);let a=S(2);return E(a.delete())}),_(3,6),o()}}function Ht(n,t){n&1&&(M(0,7,1),m(1,"sh-icon"),O())}function Wt(n,t){n&1&&(M(0,7,2),m(1,"sh-icon"),O())}function qt(n,t){if(n&1){let e=P();s(0,"sh-chip",17),d("click",function(){u(e);let a=S(2);return E(a.copyReportingUrl())}),M(1,7),C(2,Ht,2,0,"sh-icon")(3,Wt,2,0,"sh-icon"),O(),o()}if(n&2){let e=S(2);l(2),g(e.copiedReportingUrl()===!0?2:3)}}function Kt(n,t){if(n&1&&(s(0,"div",8),C(1,Jt,4,1),C(2,Xt,5,3,"div",9),C(3,Vt,3,0,"div",9),C(4,zt,2,0,"button",10),C(5,Ut,2,0,"button",10),C(6,Bt,4,0),C(7,qt,4,1,"sh-chip",11),o()),n&2){let e=S();l(),g(e.state()==="inactive"?1:-1),l(),g(e.state()==="registered"?2:-1),l(),g(e.state()==="registering"?3:-1),l(),g(e.state()==="registering"||e.state()==="registeringfaulted"||e.state()==="registered"?4:-1),l(),g(e.state()==="connected"||e.state()==="connecting"?5:-1),l(),g(e.state()==="disabled"?6:-1),l(),g(e.additionalReportingUrl()!==""?7:-1)}}var ne=class n{#e=R(te);#n=R(x);state=this.#e.state;claimUrl=this.#e.claimUrl;registerUrl=this.#e.registerUrl;additionalReportingUrl=v(()=>{let t=this.#n.serverSettings();return this.#e.state()==="inactive"?"":t&&t["additional-report-url"]||""});copiedReportingUrl=c(!1);ngOnInit(){this.#e.refreshRemoteControlStatus()}cancel(){this.#e.cancelRemoteRegistration()}register(){this.#e.beginRemoteRegistration()}disable(){this.#e.disableRemoteControl()}enable(){this.#e.enableRemoteControl()}delete(){this.#e.deleteRemoteControl()}copyReportingUrl(){let t=this.additionalReportingUrl();t&&(this.copiedReportingUrl.set(!0),setTimeout(()=>this.copiedReportingUrl.set(!1),2e3),navigator.clipboard.writeText(t))}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=D({type:n,selectors:[["app-remote-control"]],decls:1,vars:1,consts:()=>{let t;t=$localize`Register on console`;let e;e=$localize`Machine is now registered, open this link to add it to your account:`;let i;i=$localize`Registering, please wait...`;let a;a=$localize`Cancel registration`;let T;T=$localize`Disable console connection`;let f;f=$localize`Enable console connection`;let p;p=$localize` Delete console connection setup `;let h;return h=$localize` Reporting configured by server ${"\uFFFD*2:1\uFFFD"}:START_BLOCK_IF:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:check${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON:${"\uFFFD/*2:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*3:2\uFFFD"}:START_BLOCK_ELSE:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:copy${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON:${"\uFFFD/*3:2\uFFFD"}:CLOSE_BLOCK_ELSE:`,h=J(h),[t,e,i,a,T,f,p,h,[1,"field-row"],[1,"field-col"],["type","button","shButton","",1,"raised"],[1,"reporting-url","primary","simple"],["label","Registration URL","for","remoteControlRegisterUrl"],["type","text","sh-input","","id","remoteControlRegisterUrl","name","remoteControlRegisterUrl",3,"ngModelChange","ngModel"],["type","button","shButton","",1,"raised",3,"click"],["target","_blank",3,"href"],["type","button","shButton","",1,"raised","error",3,"click"],[1,"reporting-url","primary","simple",3,"click"]]},template:function(e,i){e&1&&C(0,Kt,8,7,"div",8),e&2&&g(i.state()!=="unknown"?0:-1)},dependencies:[Q,q,K,j,ee,w,pt,b],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] button[_ngcontent-%COMP%]{white-space:nowrap}.field-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;width:100%}.field-row[_ngcontent-%COMP%] sh-form-field[_ngcontent-%COMP%], .field-row[_ngcontent-%COMP%] sh-select[_ngcontent-%COMP%]{flex:1 0}.reporting-url[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:.25rem}"],changeDetection:0})};function yt(...n){let t=c(...n);return Object.defineProperty(t,"value",{get:t.asReadonly(),set:t.set.bind(t)})}var ie=()=>({standalone:!0});function jt(n,t){if(n&1&&(s(0,"label"),M(1,35),m(2,"sh-icon",83),O(),o()),n&2){let e=S(3);l(2),N("shTooltip",e.remoteControlTooltip())}}function Qt(n,t){if(n&1&&(s(0,"label"),M(1,36),m(2,"sh-icon",83),O(),o()),n&2){let e=S(3);l(2),N("shTooltip",e.remoteControlTooltip())}}function Yt(n,t){if(n&1&&(s(0,"label"),M(1,37),m(2,"sh-icon",83),O(),o()),n&2){let e=S(3);l(2),N("shTooltip",e.connectionStatusIndicatorTooltip())}}function Zt(n,t){if(n&1&&(s(0,"label"),M(1,38),m(2,"sh-icon",83),O(),o()),n&2){let e=S(3);l(2),N("shTooltip",e.connectionStatusIndicatorTooltip())}}function en(n,t){if(n&1){let e=P();s(0,"section")(1,"div",59)(2,"h3"),_(3,33),o(),s(4,"p"),_(5,34),o()(),s(6,"div",82)(7,"sh-toggle",71),d("click",function(){u(e);let a=S(2);return E(a.toggleConsoleControl())}),C(8,jt,3,1,"label")(9,Qt,3,1,"label"),o(),s(10,"sh-toggle",71),d("click",function(){u(e);let a=S(2);return E(a.saveHideConsoleConnectionStatus())}),C(11,Yt,3,1,"label")(12,Zt,3,1,"label"),o()()()}if(n&2){let e=S(2);l(7),I("active",!e.consoleControlDisabled()),l(),g(e.consoleControlDisabled()?8:9),l(2),I("active",!e.hideConsoleConnectionStatus()),l(),g(e.hideConsoleConnectionStatus()?11:12)}}function tn(n,t){n&1&&(s(0,"label"),_(1,41),o())}function nn(n,t){n&1&&(s(0,"label"),_(1,42),o())}function on(n,t){if(n&1){let e=P();s(0,"section")(1,"div",59)(2,"h3"),_(3,39),o(),s(4,"p"),_(5,40),o()(),s(6,"div",60)(7,"sh-toggle",71),d("click",function(){u(e);let a=S(2);return E(a.saveHideConsoleConnectionStatus())}),C(8,tn,2,0,"label")(9,nn,2,0,"label"),o()()()}if(n&2){let e=S(2);l(7),I("active",!e.hideConsoleConnectionStatus()),l(),g(e.hideConsoleConnectionStatus()?8:9)}}function sn(n,t){if(n&1&&(s(0,"section")(1,"div",59)(2,"h3"),_(3,32),o(),s(4,"p"),$(5),o()(),s(6,"div",60),m(7,"app-remote-control"),o()(),C(8,en,13,6,"section")(9,on,10,3,"section")),n&2){let e=S();l(5),W(e.remoteControlStatus()),l(3),g(e.remoteControlState()!="inactive"?8:9)}}function an(n,t){n&1&&(s(0,"sh-icon",88),$(1,"check"),o())}function ln(n,t){n&1&&(s(0,"sh-icon",89),$(1,"prohibit"),o())}function _n(n,t){if(n&1){let e=P();s(0,"button",93),d("click",function(){u(e);let a=S(2);return E(a.updatePassphrase())}),_(1,46),o()}if(n&2){let e=S(2);I("loader",e.isUpdating())}}function rn(n,t){if(n&1){let e=P();s(0,"button",94),d("click",function(){u(e);let a=S(2);return E(a.updatePassphrase())}),_(1,47),o()}if(n&2){let e=S(2);I("loader",e.isUpdating()),N("disabled",!0)}}function Tn(n,t){if(n&1){let e=P();s(0,"sh-form-field")(1,"label",84),_(2,43),o(),s(3,"input",85),y("ngModelChange",function(a){u(e);let T=S();return L(T.passphrase,a)||(T.passphrase=a),E(a)}),o()(),s(4,"sh-form-field")(5,"label",86),_(6,44),o(),s(7,"input",87),y("ngModelChange",function(a){u(e);let T=S();return L(T.repeatPassphrase,a)||(T.repeatPassphrase=a),E(a)}),o(),C(8,an,2,0,"sh-icon",88)(9,ln,2,0,"sh-icon",89),o(),s(10,"div",65)(11,"button",90),d("click",function(){u(e);let a=S();return E(a.cancelPasswordChange())}),_(12,45),o(),C(13,_n,2,2,"button",91)(14,rn,2,3,"button",92),o()}if(n&2){let e=S();l(3),A("ngModel",e.passphrase),l(4),N("disabled",e.passphrase().length===0),A("ngModel",e.repeatPassphrase),l(),g(e.passphrase().length!==0&&e.passphrase()===e.repeatPassphrase()?8:9),l(3),I("loader",e.isUpdating()),l(2),g(e.passphrase().length!==0&&e.passphrase()===e.repeatPassphrase()?13:14)}}function Sn(n,t){n&1&&(s(0,"sh-icon",95),$(1,"check"),o())}function cn(n,t){if(n&1){let e=P();s(0,"div",65)(1,"button",90),d("click",function(){u(e);let a=S();return E(a.openPassphraseForm())}),_(2,48),o(),C(3,Sn,2,0,"sh-icon",95),o()}if(n&2){let e=S();l(3),g(e.passwordUpdated()?3:-1)}}function dn(n,t){n&1&&(M(0,11,1),m(1,"span"),O())}function Cn(n,t){n&1&&(M(0,11,2),m(1,"span"),O())}function gn(n,t){if(n&1){let e=P();s(0,"sh-form-field")(1,"label",96),_(2,49),o(),s(3,"textarea",97),y("ngModelChange",function(a){u(e);let T=S();return L(T.allowedHostnames,a)||(T.allowedHostnames=a),E(a)}),o()(),s(4,"sh-alert",98),_(5,50),o(),s(6,"button",93),d("click",function(){u(e);let a=S();return E(a.updateAllowedHostnames())}),_(7,51),o()}if(n&2){let e=S();l(3),A("ngModel",e.allowedHostnames),l(3),I("loader",e.updatingAllowedHosts())}}function un(n,t){if(n&1){let e=P();s(0,"section")(1,"div",59)(2,"h3"),_(3,52),o(),s(4,"p"),_(5,53),o()(),s(6,"div",60)(7,"sh-select",99)(8,"input",67),d("ngModelChange",function(a){u(e);let T=S();return E(T.updatePowerMode(a))}),o()()()()}if(n&2){let e=S();l(7),N("options",e.powerModeOptions())("isClearable",!1),l(),N("ngModel",e.powerModeCtrl())("ngModelOptions",X(4,ie))}}function En(n,t){if(n&1&&(s(0,"p"),_(1,54),o()),n&2){let e,i=S();l(),B((e=i.sysinfo())==null?null:e.ServerVersionName),H(1)}}function pn(n,t){n&1&&m(0,"sh-progress-bar",72)}function Nn(n,t){if(n&1&&$(0),n&2){let e=t.$implicit;ae(" ",e.label," ")}}function mn(n,t){if(n&1&&$(0),n&2){let e=t.$implicit;ae(" ",e.label," ")}}function fn(n,t){if(n&1){let e=P();s(0,"section")(1,"div",59)(2,"h3"),_(3,55),o(),s(4,"p"),M(5,56),m(6,"a",100)(7,"br")(8,"br"),O(),o()(),s(9,"div",60)(10,"sh-select",101)(11,"input",67),d("ngModelChange",function(a){u(e);let T=S();return E(T.updateUsageStatistics(a))}),o(),se(12,mn,1,1,"ng-template"),o()()()}if(n&2){let e=S();l(10),N("options",e.usageStatisticsOptions())("isLoading",e.updatingUsageStatistics()),l(),N("ngModel",e.usageStatistics())("ngModelOptions",X(4,ie))}}function In(n,t,e){let i=yt(n),a=i[it];e?.equal&&(a.equal=e.equal);let T;return i.set=f=>{clearTimeout(T),T=setTimeout(()=>ot(a,f),t)},i.update=f=>{clearTimeout(T),T=setTimeout(()=>st(a,f),t)},i}var Pn=[{value:"none",label:$localize`None`},{value:"s",label:$localize`Seconds`},{value:"m",label:$localize`Minutes`},{value:"h",label:$localize`Hours`}],vt=[{value:"none",label:$localize`System default ($value)`},{value:"information",label:$localize`Usage statistics, warnings, errors, and crashes`},{value:"warning",label:$localize`Warnings, errors and crashes`},{value:"error",label:$localize`Errors and crashes`},{value:"crash",label:$localize`Crashes only`},{value:"disabled",label:$localize`None / disabled`}],_e=class n{#e=R(Et);#n=R(Gt);#i=R(Rt);#t=R(x);#s=R(te);#T=R(gt);#a=R(Ct);#l=this.#a.getItem("locale")??"en-US";sysinfo=this.#i.systemInfo;isDarkMode=this.#n.isDarkMode;editAs=c("list");previousLang=this.#l;langCtrl=c(this.#l);powerModeCtrl=c("");usageStatistics=c("");updatingUsageStatistics=c(!1);remoteControlStatus=this.#s.status;remoteControlState=this.#s.state;updatingChannel=c(!1);updateChannel=c("");isUsingRelay=this.#T.relayIsEnabled;defaultClient=c(this.#S());usageStatisticsDisabled=v(()=>(this.#i.systemInfo()?.DefaultUsageReportLevel??"").toLowerCase()==="disabled");#c=k(()=>{let t=this.#i.systemInfo()?.DefaultUsageReportLevel??"",e=vt;e[0].label=$localize`System default (${t})`,this.usageStatisticsOptions.set(e)});remoteControlTooltip=c($localize`Disabling console control will disable remote access to this machine from the console, but will keep the
2
- registration intact and allow pushing settings from the console.`);connectionStatusIndicatorTooltip=c($localize`Hides the connection status indicator in the status bar. Useful if you are not using the remote console.`);setNewChannel(t){let e=this.updateChannel();this.updateChannel.set(t),this.#t.setUpdateChannel(t).pipe(F(()=>this.updatingChannel.set(!1))).subscribe()}allowRemoteAccess=c(!1);allowedHostnames=c("");loadedAllowedHostnames=c("");updatingRemoteAccess=c(!1);updatingAllowedHosts=c(!1);updatingConsoleControl=c(!1);consoleControlDisabled=c(!1);hideConsoleConnectionStatus=this.#t.isConsoleConnectionStatusHidden;updateRemoteAccess(){let e=!this.allowRemoteAccess();this.allowRemoteAccess.set(e),this.#t.setRemoteAccessInterface(e?"any":"loopback").pipe(F(()=>this.updatingRemoteAccess.set(!1))).subscribe()}updateAllowedHostnames(){let t=this.allowedHostnames();this.updatingAllowedHosts.set(!0),this.#t.setRemoteAccessAllowedHostnames(t).pipe(F(()=>this.updatingAllowedHosts.set(!1))).subscribe()}toggleConsoleControl(){let e=!this.consoleControlDisabled();this.updatingConsoleControl.set(!0),this.#t.setDisableConsoleControl(e).pipe(F(()=>this.updatingConsoleControl.set(!1))).subscribe()}updatingDisableTrayIconLogin=c(!1);disableTrayIconLogin=c(!1);saveDisableTrayIconLogin(){let e=!this.disableTrayIconLogin();this.updatingDisableTrayIconLogin.set(!0),this.#t.setDisableTrayIconLogin(e).pipe(F(()=>this.updatingDisableTrayIconLogin.set(!1))).subscribe()}updatingHideConsoleConnectionStatus=c(!1);saveHideConsoleConnectionStatus(){let e=!this.hideConsoleConnectionStatus();this.updatingHideConsoleConnectionStatus.set(!0),this.#t.setHideConsoleConnectionStatus(e).pipe(F(()=>this.updatingHideConsoleConnectionStatus.set(!1))).subscribe()}showPassphraseForm=c(!1);isUpdating=c(!1);passphrase=c("");repeatPassphrase=c("");passwordUpdated=c(!1);updatePassphrase(){this.passphrase()===this.repeatPassphrase()&&(this.isUpdating.set(!0),this.#t.setRemoteAccessPassword(this.passphrase()).pipe(F(()=>this.isUpdating.set(!1))).subscribe({next:()=>{this.showPassphraseForm.set(!1),this.passwordUpdated.set(!0),setTimeout(()=>{this.passwordUpdated.set(!1)},3e3)}}))}openPassphraseForm(){this.showPassphraseForm.set(!0)}cancelPasswordChange(){this.showPassphraseForm.set(!1)}languageOptions=c($t);powerModeOptions=v(()=>{let t=this.#i.systemInfo();return!t?.PowerModeProviders||t.PowerModeProviders.filter(e=>e!==""&&e!=="None").length==0?[]:t.PowerModeProviders.map(e=>({value:e==""?"default":e,label:e===""?$localize`Default`:e}))});usageStatisticsOptions=c(vt);timeTypeOptions=c(Pn);timeType=c("none");timeValue=In(0,300);timeRange=v(()=>this.timeType()==="h"?[1,24]:[1,60]);updateLocale(t){!t||t===""||t===this.previousLang||(this.#a.setItem("locale",t),window.location.reload())}updateTimeValue(t){this.timeValue.set(t),this.#_()}updateTimeType(t){this.timeType()==="none"&&this.timeValue.set(1),this.timeType.set(t),this.#_()}#o;#_(){this.#o&&clearTimeout(this.#o),this.#o=setTimeout(()=>{let t=this.timeValue(),e=this.timeType(),i=e==="none"||t===0?"":`${t}${e}`;i!==this.#t.serverSettings()?.["startup-delay"]&&this.#t.setStartupDelay(i).subscribe()},1e3)}updateUsageStatistics(t){let e=this.usageStatistics();!t||t===""||t===e||(this.usageStatistics.set(t),this.updatingUsageStatistics.set(!0),this.#t.setUsageReporterLevel(t).subscribe())}updatePowerMode(t){this.powerModeCtrl()!==t&&(t==="default"&&(t=""),this.#t.setPowerModeProvider(t).subscribe())}serverSettingsEffect=k(()=>{let t=this.#t.serverSettings();if(t===void 0)return;let e=t["startup-delay"],i=e.slice(-1),a=e.slice(0,-1),T=["s","m","h"];this.disableTrayIconLogin.set(t["disable-tray-icon-login"]!=="False"),this.updateChannel.set(t["update-channel"]),this.allowRemoteAccess.set(t["server-listen-interface"]==="any"),this.allowedHostnames.set(t["allowed-hostnames"]),this.loadedAllowedHostnames.set(t["allowed-hostnames"]),this.consoleControlDisabled.set(t["disable-console-control"]==="True"),this.usageStatistics.set(t["usage-reporter-level"]===""?"none":t["usage-reporter-level"]),this.timeType.set(e==""?"none":T.includes(i)?i:"none"),this.timeValue.set(e==""?0:parseInt(a));let f=t["power-mode-provider"]===""||t["power-mode-provider"]==null?"default":t["power-mode-provider"];this.powerModeCtrl.set(f)});setDarkMode(){this.#n.setDarkMode()}setLightMode(){this.#n.setLightMode()}changeDefaultClientTo(t){this.defaultClient()!==t&&(t==="ngax"?this.#e.open(le,{data:{title:$localize`Use legacy UI by default`,message:$localize`Are you sure you want to use the legacy user interface by default? This is not recommended unless you have a specific reason.`,confirmText:$localize`Use legacy UI by default`,cancelText:$localize`Cancel`},closed:e=>{e&&(window.location.href="/ngax",this.#r(t))}}):this.#r(t))}openLegacyUI(){this.#e.open(le,{data:{title:$localize`Open legacy UI`,message:$localize`Are you sure you want to open the legacy user interface? This is not recommended unless you have a specific reason.`,confirmText:$localize`Open legacy UI`,cancelText:$localize`Cancel`},closed:t=>{t&&window.open("/ngax","_blank")}})}#r(t){var e=new Date;e.setTime(e.getTime()+2160*60*60*1e3),document.cookie="default-client="+t+"; expires="+e.toUTCString()+"; path=/",this.defaultClient.set(t)}#S(){let t=document.cookie.split(";");for(let e=0;e<t.length;e++){let i=t[e].trim();if(i.startsWith("default-client="))return i.substring(15)}return"ngclient"}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=D({type:n,selectors:[["app-settings"]],decls:128,vars:44,consts:()=>{let t;t=$localize`Settings`;let e;e=$localize`Configure your backup settings.`;let i;i=$localize`Color theme`;let a;a=$localize`Customize your application theme`;let T;T=$localize`Passwords`;let f;f=$localize`Change server passphrase`;let p;p=$localize`Language`;let h;h=$localize`Select a language for the platform`;let G;G=$localize`Use legacy interface`;let re;re=$localize`Use the old user interface, not recommended unless you have a specific reason.`;let Te;Te=$localize`${"\uFFFD#46\uFFFD"}:START_TAG_SH_ICON:arrow-square-right${"\uFFFD/#46\uFFFD"}:CLOSE_TAG_SH_ICON: Open legacy UI `;let z;z=$localize`${"\uFFFD#49\uFFFD"}:START_TAG_SH_ICON:swap${"\uFFFD/#49\uFFFD"}:CLOSE_TAG_SH_ICON:${"\uFFFD*50:1\uFFFD"}:START_BLOCK_IF:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SPAN:Default is legacy UI${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SPAN:${"\uFFFD/*50:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*51:2\uFFFD"}:START_BLOCK_ELSE:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SPAN:Default is current UI${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SPAN:${"\uFFFD/*51:2\uFFFD"}:CLOSE_BLOCK_ELSE:`,z=J(z);let Se;Se=$localize`Allow remote access (requires restart)`;let ce;ce=$localize` By allowing remote access, the server listens to requests from any machine on your network. If you enable this option, make sure you are always using the computer on a secure firewall protected network. `;let de;de=$localize`Allow remote access`;let Ce;Ce=$localize`Prevent tray icon automatic log-in`;let ge;ge=$localize` By default, the tray icon will open the user interface with a token that unlocks the user interface. This ensures that you can access the user interface from the tray icon, while requiring others to enter a password. If you prefer having to type in the password, even when accessing the user interface from the tray icon, enable this option. `;let ue;ue=$localize`Prevent tray icon automatic log-in`;let Ee;Ee=$localize`Update channel`;let pe;pe=$localize` Default (${"\uFFFD0\uFFFD"}:INTERPOLATION:) `;let Ne;Ne=$localize`Same as the base install version: ${"\uFFFD0\uFFFD"}:INTERPOLATION:`;let me;me=$localize`Stable`;let fe;fe=$localize`Official stable release.`;let Ie;Ie=$localize`Beta`;let Pe;Pe=$localize` Try out the new features that we are working on. Test a backup and restore before using this in production environments. `;let Me;Me=$localize` Experimental `;let Oe;Oe=$localize`Early previews of new features. Not for use with important data.`;let he;he=$localize`Canary`;let Re;Re=$localize`Builds for developers and testers only. Not for use with important data.`;let Ge;Ge=$localize`Pause after startup or hibernation`;let Fe;Fe=$localize` Duplicati will run when started, but will remain in paused state for the duration. Duplicati will occupy minimal system resources and no backups will be run. `;let $e;$e=$localize`Advanced options`;let Ae;Ae=$localize`Connect to console`;let Le;Le=$localize`Configure console control`;let ye;ye=$localize` You can control various settings for the remote console connection. If you are not using the console, you can also hide the connection status indicator. `;let ve;ve=$localize` Remote control disabled ${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:info${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON:`;let De;De=$localize` Remote control enabled ${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:info${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON:`;let be;be=$localize` Console connection status is hidden ${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:info${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON:`;let we;we=$localize` Console connection status is visible ${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:info${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON:`;let xe;xe=$localize`Toggle console connection status`;let ke;ke=$localize`Toggle the visibility of the console connection status indicator.`;let Je;Je=$localize`Console connection status is hidden`;let Xe;Xe=$localize`Console connection status is visible`;let Ve;Ve=$localize`Enter new password`;let ze;ze=$localize`Repeat password`;let oe;oe=$localize`Password have to be filled and have to match`;let Ue;Ue=$localize`Passphrase`;let Be;Be=$localize`Repeat passphrase`;let He;He=$localize`Cancel`;let We;We=$localize` Update passphrase `;let qe;qe=$localize` Update passphrase `;let Ke;Ke=$localize`Change password`;let je;je=$localize`Allowed hostnames`;let Qe;Qe=$localize` To prevent various DNS based attacks, Duplicati limits the allowed hostnames to the ones listed here. Direct IP access and localhost is always allowed. Multiple hostnames can be supplied with a semicolon separator. If any of the allowed hostnames is an asterisk (*), all hostnames are allowed and this feature is disabled. If the field is empty, only IP address and localhost access is allowed. `;let Ye;Ye=$localize` Update allowed hostnames `;let Ze;Ze=$localize`Power mode provider`;let et;et=$localize` The power mode provider monitors the system for when it enters a low power state and pauses Duplicati. When the system resumes, Duplicati will resume as well. Choosing the None option disables detection of low power states and Duplicati will run all the time. `;let tt;tt=$localize`Installed version: ${"\uFFFD0\uFFFD"}:INTERPOLATION:`;let nt;nt=$localize`Usage statistics`;let U;return U=$localize` Usage reports help us improve the user experience and evaluate impact of new features. We use them to generate ${"\uFFFD#6\uFFFD"}:START_LINK:public usage statistics.${"\uFFFD/#6\uFFFD"}:CLOSE_LINK:${"[\uFFFD#7\uFFFD\uFFFD/#7\uFFFD|\uFFFD#8\uFFFD\uFFFD/#8\uFFFD]"}:LINE_BREAK:${"[\uFFFD#7\uFFFD\uFFFD/#7\uFFFD|\uFFFD#8\uFFFD\uFFFD/#8\uFFFD]"}:LINE_BREAK: All usage reports are sent anonymously and do not contain any personal information. They contain information about hardware and operating system, the type of backend, backup duration, overall size of source data and similar data. They do not contain paths, filenames, usernames, passwords or similar sensitive information. `,U=J(U),[t,e,i,a,T,f,p,h,G,re,Te,z,Se,ce,de,Ce,ge,ue,Ee,pe,Ne,me,fe,Ie,Pe,Me,Oe,he,Re,Ge,Fe,$e,Ae,Le,ye,ve,De,be,we,xe,ke,Je,Xe,Ue,Be,He,We,qe,Ke,je,Qe,Ye,Ze,et,tt,nt,U,[1,"content"],[1,"title"],[1,"left"],[1,"right"],[1,"themes"],["src","assets/images/light-theme.png","alt","light theme",3,"click"],["src","assets/images/dark-theme.png","alt","dark theme",3,"click"],[1,"right","passphrase-form"],[1,"actions"],["value","value","label","label",3,"options","isClearable","inlineSearch"],["type","text",3,"ngModelChange","ngModel","ngModelOptions"],[1,"right","buttons"],["shButton","",1,"primary",3,"click"],[1,"right","remote-access-form"],[1,"primary","raised",3,"click"],[1,"indeterminate","primary"],[1,"right","radios"],[1,"radio-option",3,"click"],[1,"primary","raised"],[1,"field-row"],[1,"raised","primary",3,"unit"],["type","range",3,"ngModelChange","min","max","disabled","ngModel","ngModelOptions"],["label","label","value","value",3,"options","isClearable"],["type","text",3,"ngModelChange","ngModel"],[1,"advanced-settings"],[1,"right","multiple"],["suffix","",3,"shTooltip"],["for","password"],["type","password","name","password","autocomplete","disabled","placeholder",Ve,"tabindex","1",3,"ngModelChange","ngModel"],["for","repeatPassword"],["type","password","name","repeatPassword","autocomplete","disabled","placeholder",ze,"tabindex","2",3,"ngModelChange","disabled","ngModel"],["suffix","",1,"sh-success"],["suffix",""],["shButton","",3,"click"],["shButton","",1,"raised","primary",3,"loader"],["shButton","","shTooltip",oe,1,"raised","primary",3,"loader","disabled"],["shButton","",1,"raised","primary",3,"click"],["shButton","","shTooltip",oe,1,"raised","primary",3,"click","disabled"],[1,"sh-success"],["for","allowedHostnames"],["type","text","id","allowedHostnames",3,"ngModelChange","ngModel"],["type","primary"],["value","value","label","label",3,"options","isClearable"],["href","#"],["label","label","value","value",3,"options","isLoading"]]},template:function(e,i){if(e&1&&(m(0,"app-status-bar"),s(1,"div",57)(2,"header")(3,"div",58)(4,"h2"),_(5,0),o(),s(6,"p"),_(7,1),o()()(),C(8,sn,10,2),s(9,"section")(10,"div",59)(11,"h3"),_(12,2),o(),s(13,"p"),_(14,3),o()(),s(15,"div",60)(16,"div",61)(17,"img",62),d("click",function(){return i.setLightMode()}),o(),s(18,"img",63),d("click",function(){return i.setDarkMode()}),o()()()(),s(19,"section")(20,"div",59)(21,"h3"),_(22,4),o(),s(23,"p"),_(24,5),o()(),s(25,"div",64),C(26,Tn,15,7)(27,cn,4,1,"div",65),o()(),s(28,"section")(29,"div",59)(30,"h3"),_(31,6),o(),s(32,"p"),_(33,7),o()(),s(34,"div",60)(35,"sh-select",66)(36,"input",67),d("ngModelChange",function(T){return i.updateLocale(T)}),o()()()(),s(37,"section")(38,"div",59)(39,"h3"),_(40,8),o(),s(41,"p"),_(42,9),o()(),s(43,"div",68)(44,"button",69),d("click",function(){return i.openLegacyUI()}),M(45,10),m(46,"sh-icon"),O(),o(),s(47,"button",69),d("click",function(){return i.changeDefaultClientTo(i.defaultClient()==="ngclient"?"ngax":"ngclient")}),M(48,11),m(49,"sh-icon"),C(50,dn,2,0,"span")(51,Cn,2,0,"span"),O(),o()()(),s(52,"section")(53,"div",59)(54,"h3"),_(55,12),o(),s(56,"p"),_(57,13),o()(),s(58,"div",70)(59,"sh-toggle",71),d("click",function(){return i.updateRemoteAccess()}),s(60,"label"),_(61,14),o()(),C(62,gn,8,3),o()(),s(63,"section")(64,"div",59)(65,"h3"),_(66,15),o(),s(67,"p"),_(68,16),o()(),s(69,"div",60)(70,"sh-toggle",71),d("click",function(){return i.saveDisableTrayIconLogin()}),s(71,"label"),_(72,17),o()()()(),C(73,un,9,5,"section"),s(74,"section")(75,"div",59)(76,"h3"),_(77,18),o(),C(78,En,2,1,"p"),C(79,pn,1,0,"sh-progress-bar",72),o(),s(80,"div",73)(81,"div",74),d("click",function(){return i.setNewChannel("")}),s(82,"sh-radio",75),_(83,19),o(),s(84,"p"),_(85,20),o()(),s(86,"div",74),d("click",function(){return i.setNewChannel("stable")}),s(87,"sh-radio",75),_(88,21),o(),s(89,"p"),_(90,22),o()(),s(91,"div",74),d("click",function(){return i.setNewChannel("beta")}),s(92,"sh-radio",75),_(93,23),o(),s(94,"p"),_(95,24),o()(),s(96,"div",74),d("click",function(){return i.setNewChannel("experimental")}),s(97,"sh-radio",75),_(98,25),o(),s(99,"p"),_(100,26),o()(),s(101,"div",74),d("click",function(){return i.setNewChannel("canary")}),s(102,"sh-radio",75),_(103,27),o(),s(104,"p"),_(105,28),o()()()(),s(106,"section")(107,"div",59)(108,"h3"),_(109,29),o(),s(110,"p"),_(111,30),o()(),s(112,"div",60)(113,"div",76)(114,"sh-range-slider",77)(115,"input",78),y("ngModelChange",function(T){return L(i.timeValue,T)||(i.timeValue=T),T}),d("ngModelChange",function(T){return i.updateTimeValue(T)}),o()(),s(116,"sh-select",79)(117,"input",80),d("ngModelChange",function(T){return i.updateTimeType(T)}),o(),se(118,Nn,1,1,"ng-template"),o()()()(),C(119,fn,13,5,"section"),o(),m(120,"sh-divider"),s(121,"div",57)(122,"section")(123,"div",81)(124,"h3"),_(125,31),o(),m(126,"app-advanced-options-settings"),o()()(),m(127,"sh-divider")),e&2){let a,T,f;l(8),g(i.isUsingRelay()?-1:8),l(9),I("active",!i.isDarkMode()),l(),I("active",i.isDarkMode()),l(8),g(i.showPassphraseForm()?26:27),l(9),N("options",i.languageOptions())("isClearable",!1)("inlineSearch",!0),l(),N("ngModel",i.langCtrl())("ngModelOptions",X(42,ie)),l(14),g(i.defaultClient()==="ngax"?50:51),l(9),I("active",i.allowRemoteAccess()),l(3),g(i.allowRemoteAccess()?62:-1),l(8),I("active",i.disableTrayIconLogin()),l(3),g(i.powerModeOptions().length>0?73:-1),l(5),g((a=i.sysinfo())!=null&&a.ServerVersion?78:-1),l(),g(i.updatingChannel()?79:-1),l(3),I("active",i.updateChannel()===""),l(),B((T=i.sysinfo())==null?null:T.DefaultUpdateChannel),H(83),l(2),B((f=i.sysinfo())==null?null:f.ServerVersionType),H(85),l(2),I("active",i.updateChannel()==="stable"),l(5),I("active",i.updateChannel()==="beta"),l(5),I("active",i.updateChannel()==="experimental"),l(5),I("active",i.updateChannel()==="canary"),l(12),N("unit",i.timeType()==="none"?"s":i.timeType()),l(),N("min",i.timeRange()[0])("max",i.timeRange()[1])("disabled",i.timeType()==="none"),A("ngModel",i.timeValue),N("ngModelOptions",X(43,ie)),l(),N("options",i.timeTypeOptions())("isClearable",!1),l(),N("ngModel",i.timeType()),l(2),g(i.usageStatisticsDisabled()?-1:119)}},dependencies:[Q,q,ut,K,j,Y,Ft,ne,V,w,ft,It,mt,Mt,Ot,ee,b,Nt,Z,Pt],styles:["[_nghost-%COMP%]{display:block}.content[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:0 2rem 2rem}header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:2rem 0;background:var(--base-1);border-bottom:1px solid var(--base-4)}header[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}section[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:2rem 0;border-top:1px solid var(--base-4)}section[_ngcontent-%COMP%]:first-of-type{border-top:0}section[_ngcontent-%COMP%] .left[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;align-items:flex-start}section[_ngcontent-%COMP%] .left[_ngcontent-%COMP%] sh-button-group[_ngcontent-%COMP%]{margin-top:.25rem}section[_ngcontent-%COMP%] .left[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{text-wrap:balance;width:50%}.passphrase-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.passphrase-form[_ngcontent-%COMP%] .actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.remote-access-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.themes[_ngcontent-%COMP%]{display:flex;gap:.5rem}.themes[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:15rem;border-radius:var(--shape-3);cursor:pointer}.themes[_ngcontent-%COMP%] img.active[_ngcontent-%COMP%]{border:2px solid var(--primary-8)}.radios[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.radio-option[_ngcontent-%COMP%]{cursor:pointer}.radio-option[_ngcontent-%COMP%] sh-radio[_ngcontent-%COMP%]{color:var(--base-8);margin-bottom:.25rem}.radio-option[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{text-wrap:balance;color:var(--base-9)}.field-col[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.field-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;width:100%}.field-row[_ngcontent-%COMP%] sh-form-field[_ngcontent-%COMP%], .field-row[_ngcontent-%COMP%] sh-select[_ngcontent-%COMP%]{flex:1 0}.advanced-settings[_ngcontent-%COMP%]{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:1rem}.right.buttons[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:1rem}.right.multiple[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}"],changeDetection:0})};export{In as debounceSignal,_e as default};
package/chunk-6NFCRY7O.js DELETED
@@ -1 +0,0 @@
1
- import{a}from"./chunk-44IYHRP5.js";import"./chunk-OMCDVUR6.js";import"./chunk-WC6RBAAY.js";import"./chunk-XUDS7MYD.js";import"./chunk-YP4LWQJG.js";import"./chunk-7CGTOI24.js";export{a as RelativeTimePipe};
package/chunk-6U37VGIP.js DELETED
@@ -1 +0,0 @@
1
- import{a as cn}from"./chunk-SFDEJ4KT.js";import{b as ee,k as rn}from"./chunk-6GTXSMAH.js";import{a as an}from"./chunk-VIHMVAQG.js";import"./chunk-44IYHRP5.js";import"./chunk-OMCDVUR6.js";import{a as _n}from"./chunk-4FWSDHOG.js";import"./chunk-6Q6SSTBK.js";import"./chunk-MRTE3AG7.js";import{a as ln}from"./chunk-ONXV5IRS.js";import"./chunk-X52R5Q6W.js";import"./chunk-D45OX6NR.js";import{a as on}from"./chunk-FUQM5D63.js";import"./chunk-PT5SA5DK.js";import"./chunk-TNJ2RJ2V.js";import"./chunk-DIJYLB6O.js";import"./chunk-P42HQ2IS.js";import"./chunk-KANLHRTR.js";import{A as je,B as Z,C as We,E as qe,G as Qe,K as Ye,L as Ze,S as en,T as nn,u as Y}from"./chunk-V4SUZRAG.js";import{c as tn}from"./chunk-4SMU6FWN.js";import{e as Q}from"./chunk-VRXOIVWD.js";import"./chunk-L4B2T7UE.js";import"./chunk-XURQUV7B.js";import"./chunk-WC6RBAAY.js";import"./chunk-XUDS7MYD.js";import{$ as N,Ab as i,Bb as C,Cc as P,Dc as G,E as j,Ec as h,Fb as O,Gb as m,Gc as q,Hb as f,Ib as A,Ma as J,Pa as a,Pb as c,Qb as s,Rb as T,Sb as L,Tb as H,Ub as W,Vb as D,W as x,Xb as r,aa as M,cb as Xe,ec as U,gc as R,hb as I,ib as Je,jc as u,la as X,lc as S,na as ve,oc as Ve,pb as we,pc as Ue,qb as ze,qc as Ke,sb as g,tb as p,ub as w,wb as z,xb as V,xc as K,yb as E,yc as $,zb as o}from"./chunk-YP4LWQJG.js";import"./chunk-7CGTOI24.js";var un=()=>[Q,import("./chunk-RUMIANYF.js").then(e=>e.NgTemplateOutlet),Z,Y,qe,nn,en,import("./chunk-JU3IJWLQ.js").then(e=>e.DurationFormatPipe),import("./chunk-DCSAOEZR.js").then(e=>e.BytesPipe),import("./chunk-6NFCRY7O.js").then(e=>e.RelativeTimePipe)],Fn=()=>["/add-backup"],Cn=()=>["/restore"],sn=e=>({$implicit:e}),Tn=()=>["/backup/new"],En=e=>["/backup",e],dn=e=>["/restore",e],gn=e=>["/backup",e,"export"],pn=e=>["/backup",e,"delete"],Sn=e=>["/backup",e,"database"],On=e=>["/backup",e,"commandline"],mn=e=>["/backup",e,"log"];function Nn(e,t){e&1&&T(0,11,1)}function Mn(e,t){e&1&&T(0,11,2)}function In(e,t){if(e&1&&T(0,11,3),e&2){let n=r(2);L(n.timeType()),H(0)}}function Pn(e,t){if(e&1){let n=A();o(0,"button",56),D("click",function(){let F=N(n).$implicit,d=r(3);return M(d.sortByColumn.set(F.value))}),T(1,15),i()}if(e&2){let n=t.$implicit,_=r(3);R("active",_.orderBy()===n.value),a(),L(n.label),H(1)}}function fn(e,t){if(e&1&&(o(0,"sh-menu",57)(1,"button",58),c(2,14),C(3,"strong")(4,"sh-icon"),s(),i(),O(5,59),z(6,Pn,2,3,"button",60,w),m(),i()),e&2){let n=r(2);a(4),L(n.orderBy()),H(2),a(2),V(n.sortOrderOptions())}}function Dn(e,t){if(e&1){let n=A();o(0,"div",54)(1,"sh-button-group",55)(2,"button",56),D("click",function(){N(n);let F=r();return M(F.viewMode.set("list"))}),c(3,9),C(4,"sh-icon"),s(),i(),o(5,"button",56),D("click",function(){N(n);let F=r();return M(F.viewMode.set("details"))}),c(6,10),C(7,"sh-icon"),s(),i()(),o(8,"sh-menu",57)(9,"button",58),c(10,11),o(11,"strong"),g(12,Nn,1,0)(13,Mn,1,0)(14,In,1,1),i(),C(15,"sh-icon"),s(),i(),O(16,59),o(17,"button",56),D("click",function(){N(n);let F=r();return M(F.setTimeType("relative"))}),T(18,12),i(),o(19,"button",56),D("click",function(){N(n);let F=r();return M(F.setTimeType("actual"))}),T(20,13),i(),m(),i(),g(21,fn,8,1,"sh-menu",57),i()}if(e&2){let n=r();a(2),R("active",n.viewMode()==="list"),a(3),R("active",n.viewMode()==="details"),a(7),p(n.timeType()=="relative"?12:n.timeType()=="actual"?13:14),a(9),p(n.viewMode()==="list"?21:-1)}}function $n(e,t){if(e&1){let n=A();o(0,"div",65)(1,"div",50)(2,"h3"),u(3),o(4,"sh-chip"),C(5,"img",67),u(6),i()()(),o(7,"div",68)(8,"sh-chip",69),T(9,16),i()(),o(10,"div",54)(11,"button",70),D("click",function(){N(n);let F=r().$implicit,d=r(4);return M(d.openInConsole(F))}),c(12,17),C(13,"sh-icon"),s(),i()()()}if(e&2){let n=r().$implicit,_=r(4);a(3),S(" ",n.Backup.Name??_.MISSING_BACKUP_NAME," "),a(2),E("src",_.getBackendIcon(n.Backup.TargetURL),J),a(),S(" ",_.getBackendType(n.Backup.TargetURL)," ")}}function Rn(e,t){if(e&1&&(o(0,"p")(1,"span"),T(2,23),i(),u(3),P(4,"relativeTime"),i()),e&2){let n=r(2).$implicit,_=r(4);a(3),S(" ",h(4,1,n.Schedule.Time,_.timeType()==="actual")," ")}}function hn(e,t){if(e&1&&(u(0),P(1,"durationFormat")),e&2){let n=r(2).$implicit,_=r(4);S(" ",h(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.LastBackupDuration,_.timeType()==="actual")," ")}}function An(e,t){e&1&&(O(0),u(1,"-"),m())}function Ln(e,t){if(e&1&&(u(0),P(1,"bytes")),e&2){let n=r(2).$implicit;S(" ",G(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.SourceFilesSize)," ")}}function Hn(e,t){e&1&&(O(0),u(1,"-"),m())}function xn(e,t){if(e&1&&(u(0),P(1,"bytes")),e&2){let n=r(2).$implicit;S(" ",G(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.TargetFilesSize)," ")}}function Gn(e,t){e&1&&(O(0),u(1,"-"),m())}function kn(e,t){e&1&&(o(0,"sh-chip",69),T(1,24),i())}function yn(e,t){e&1&&f(0)}function Bn(e,t){if(e&1&&(o(0,"div",66)(1,"div",50)(2,"h3"),u(3),o(4,"sh-chip"),C(5,"img",67),u(6),i()(),o(7,"p")(8,"span"),T(9,18),i(),u(10),P(11,"relativeTime"),i(),g(12,Rn,5,4,"p"),o(13,"p")(14,"span"),T(15,19),i(),g(16,hn,2,4)(17,An,2,0,"ng-container"),i(),o(18,"p")(19,"span"),T(20,20),i(),g(21,Ln,2,3)(22,Hn,2,0,"ng-container"),i(),o(23,"p")(24,"span"),T(25,21),i(),g(26,xn,2,3)(27,Gn,2,0,"ng-container"),i()(),o(28,"div",68)(29,"sh-chip",71),T(30,22),i(),g(31,kn,2,0,"sh-chip",69),i(),o(32,"div",54),I(33,yn,1,0,"ng-container",72),i()()),e&2){let n=r().$implicit,_=r(4),F=U(33);a(3),S(" ",n.Backup.Name??_.MISSING_BACKUP_NAME," "),a(2),E("src",_.getBackendIcon(n.Backup.TargetURL),J),a(),S(" ",_.getBackendType(n.Backup.TargetURL)," "),a(4),S(" ",h(11,13,n.Backup.Metadata==null?null:n.Backup.Metadata.LastBackupFinished,_.timeType()==="actual")," "),a(2),p(!(n==null||n.Schedule==null)&&n.Schedule.Time?12:-1),a(4),p(n.Backup.Metadata!=null&&n.Backup.Metadata.LastBackupDuration?16:17),a(5),p(n.Backup.Metadata!=null&&n.Backup.Metadata.SourceFilesSize?21:22),a(5),p(n.Backup.Metadata!=null&&n.Backup.Metadata.TargetFilesSize?26:27);let d=_.getBackupVersionCount(n);a(4),L(d)(d),H(30),a(),p(n.Backup.ExternalID?31:-1),a(2),E("ngTemplateOutlet",F)("ngTemplateOutletContext",$(16,sn,n))}}function bn(e,t){if(e&1&&g(0,$n,14,3,"div",65)(1,Bn,34,18,"div",66),e&2){let n=t.$implicit;p(n.Backup.ExternalID?0:1)}}function vn(e,t){if(e&1&&z(0,bn,2,1,null,null,w),e&2){let n=r(3);V(n.backups())}}function Xn(e,t){e&1&&(o(0,"div",64),c(1,25),o(2,"button",73),C(3,"sh-icon"),i(),s(),i()),e&2&&(a(2),E("routerLink",K(1,Tn)))}function Jn(e,t){if(e&1&&(o(0,"div",63),g(1,vn,2,0)(2,Xn,4,2,"div",64),i()),e&2){let n=r(2);R("fallback",n.backups().length===0),a(),p(n.backups().length?1:2)}}function wn(e,t){e&1&&(c(0,26,1),f(1),s())}function zn(e,t){e&1&&(c(0,27,1),f(1),s())}function Vn(e,t){e&1&&(c(0,28,1),f(1),s())}function Un(e,t){e&1&&(c(0,29,1),f(1),s())}function Kn(e,t){e&1&&(c(0,30,1),f(1),s())}function jn(e,t){e&1&&(c(0,31,1),f(1),s())}function Wn(e,t){e&1&&(c(0,32,1),f(1),s())}function qn(e,t){if(e&1&&(u(0),P(1,"relativeTime")),e&2){let n=r().$implicit,_=r(3);S(" ",h(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.LastBackupDate,_.timeType()==="actual")," ")}}function Qn(e,t){e&1&&(O(0),u(1,"-"),m())}function Yn(e,t){if(e&1&&(u(0),P(1,"relativeTime")),e&2){let n=r().$implicit,_=r(3);S(" ",h(1,1,n.Schedule.Time,_.timeType()==="actual")," ")}}function Zn(e,t){e&1&&(O(0),u(1,"-"),m())}function et(e,t){if(e&1&&(u(0),P(1,"durationFormat")),e&2){let n=r().$implicit,_=r(3);S(" ",h(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.LastBackupDuration,_.timeType()==="actual")," ")}}function nt(e,t){e&1&&(O(0),u(1,"-"),m())}function tt(e,t){if(e&1&&(u(0),P(1,"bytes")),e&2){let n=r().$implicit;S(" ",G(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.SourceFilesSize)," ")}}function it(e,t){e&1&&(O(0),u(1,"-"),m())}function ot(e,t){if(e&1&&(u(0),P(1,"bytes")),e&2){let n=r().$implicit;S(" ",G(1,1,n.Backup.Metadata==null?null:n.Backup.Metadata.TargetFilesSize)," ")}}function _t(e,t){e&1&&(O(0),u(1,"-"),m())}function at(e,t){e&1&&f(0)}function lt(e,t){if(e&1&&(o(0,"tr")(1,"td"),u(2),i(),o(3,"td")(4,"sh-chip",84),C(5,"img",67),u(6),i()(),o(7,"td"),g(8,qn,2,4)(9,Qn,2,0,"ng-container"),i(),o(10,"td"),g(11,Yn,2,4)(12,Zn,2,0,"ng-container"),i(),o(13,"td"),g(14,et,2,4)(15,nt,2,0,"ng-container"),i(),o(16,"td"),g(17,tt,2,3)(18,it,2,0,"ng-container"),i(),o(19,"td"),g(20,ot,2,3)(21,_t,2,0,"ng-container"),i(),o(22,"td")(23,"span"),T(24,35),i()(),o(25,"td"),I(26,at,1,0,"ng-container",72),i()()),e&2){let n=t.$implicit,_=r(3),F=U(33);a(2),S(" ",n.Backup.Name??_.MISSING_BACKUP_NAME," "),a(3),E("src",_.getBackendIcon(n.Backup.TargetURL),J),a(),S(" ",_.getBackendType(n.Backup.TargetURL)," "),a(2),p(n.Backup.Metadata!=null&&n.Backup.Metadata.LastBackupDate?8:9),a(3),p(!(n==null||n.Schedule==null)&&n.Schedule.Time?11:12),a(3),p(n.Backup.Metadata!=null&&n.Backup.Metadata.LastBackupDuration?14:15),a(3),p(n.Backup.Metadata!=null&&n.Backup.Metadata.SourceFilesSize?17:18),a(3),p(n.Backup.Metadata!=null&&n.Backup.Metadata.TargetFilesSize?20:21);let d=_.getBackupVersionCount(n);a(4),L(d)(d),H(24),a(2),E("ngTemplateOutlet",F)("ngTemplateOutletContext",$(12,sn,n))}}function rt(e,t){if(e&1){let n=A();o(0,"sh-table",74),Ke("sortByColumnChange",function(F){N(n);let d=r(2);return Ue(d.sortByColumn,F)||(d.sortByColumn=F),M(F)}),o(1,"tr",75)(2,"th",76),c(3,26),I(4,wn,2,0,"ng-container",77),s(),i(),o(5,"th",78),c(6,27),I(7,zn,2,0,"ng-container",77),s(),i(),o(8,"th",79),c(9,28),I(10,Vn,2,0,"ng-container",77),s(),i(),o(11,"th",80),c(12,29),I(13,Un,2,0,"ng-container",77),s(),i(),o(14,"th",81),c(15,30),I(16,Kn,2,0,"ng-container",77),s(),i(),o(17,"th",82),c(18,31),I(19,jn,2,0,"ng-container",77),s(),i(),o(20,"th",83),c(21,32),I(22,Wn,2,0,"ng-container",77),s(),i(),o(23,"th"),T(24,33),i(),o(25,"th"),T(26,34),i()(),z(27,lt,27,14,"tr",null,w),i()}if(e&2){let n=r(2),_=U(35);E("data",n.backups())("loading",n.backupsLoading()),Ve("sortByColumn",n.sortByColumn),a(4),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(3),E("ngTemplateOutlet",_),a(5),V(n.backups())}}function ct(e,t){if(e&1&&g(0,Jn,3,3,"div",61)(1,rt,29,10,"sh-table",62),e&2){let n=r();p(n.viewMode()==="list"?0:n.viewMode()==="details"?1:-1)}}function st(e,t){e&1&&(o(0,"div",85),C(1,"sh-progress-bar",86),o(2,"div",50)(3,"h3"),T(4,36),i()()())}function ut(e,t){e&1&&T(0,37,1)}function Ft(e,t){e&1&&(o(0,"sh-icon"),u(1,"check"),i())}function Ct(e,t){e&1&&(o(0,"sh-icon"),u(1,"dots-three-vertical"),i())}function Tt(e,t){if(e&1){let n=A();o(0,"button",87),D("click",function(){let F=N(n).$implicit,d=r();return M(d.startBackup(F.Backup.ID))}),c(1,37),C(2,"sh-icon"),g(3,ut,1,0),s(),i(),o(4,"button",88)(5,"sh-icon"),u(6,"pencil-simple"),i()(),o(7,"sh-menu")(8,"button",51),g(9,Ft,2,0,"sh-icon")(10,Ct,2,0,"sh-icon"),i(),O(11,59),o(12,"h3",89),u(13,"Operations"),i(),o(14,"button",90),c(15,38),C(16,"sh-icon"),s(),i(),o(17,"button",90),c(18,39),C(19,"sh-icon"),s(),i(),o(20,"button",90),c(21,40),C(22,"sh-icon"),s(),i(),C(23,"sh-divider"),o(24,"h3",89),T(25,41),i(),o(26,"button",90),c(27,42),C(28,"sh-icon"),s(),i(),o(29,"button",56),D("click",function(){let F=N(n).$implicit,d=r();return M(d.verifyFiles(F.Backup.ID))}),c(30,43),C(31,"sh-icon"),s(),i(),o(32,"button",56),D("click",function(){let F=N(n).$implicit,d=r();return M(d.compressBackup(F.Backup.ID))}),c(33,44),C(34,"sh-icon"),s(),i(),o(35,"button",90),c(36,45),C(37,"sh-icon"),s(),i(),C(38,"sh-divider"),o(39,"h3",89),T(40,46),i(),o(41,"button",90),c(42,47),C(43,"sh-icon"),s(),i(),m(),i()}if(e&2){let n=t.$implicit,_=r();R("loader",_.startingBackup()===n.Backup.ID),a(3),p(_.viewMode()==="list"?3:-1),a(),E("routerLink",$(15,En,n.Backup.ID)),a(4),R("loader",_.loadingId()===n.Backup.ID)("success",_.successId()===n.Backup.ID),a(),p(_.successId()===n.Backup.ID?9:10),a(5),E("routerLink",$(17,dn,n.Backup.ID)),a(3),E("routerLink",$(19,gn,n.Backup.ID)),a(3),E("routerLink",$(21,pn,n.Backup.ID)),a(6),E("routerLink",$(23,Sn,n.Backup.ID)),a(9),E("routerLink",$(25,On,n.Backup.ID)),a(6),E("routerLink",$(27,mn,n.Backup.ID))}}function Et(e,t){e&1&&(o(0,"sh-icon",91),u(1,"funnel-simple"),i(),o(2,"sh-icon",92),u(3,"sort-ascending"),i(),o(4,"sh-icon",93),u(5,"sort-descending"),i())}var dt={file:{Display:$localize`Local`,Icon:null}},ne=class e{#n=x(tn);#t=x(an);#e=x(_n);#i=x(ln);MISSING_BACKUP_NAME=$localize`Backup name missing`;sortOrderOptions=this.#e.orderByOptions;orderBy=this.#e.orderBy;backups=this.#e.backups;backupsLoading=this.#e.backupsLoading;startingBackup=this.#e.startingBackup;deletingBackup=this.#e.deletingBackup;timeType=this.#e.timeType;viewMode=on("viewMode","list");sortByColumn=X(this.#e.orderBy());loadingId=X(null);successId=X(null);sortEffect=ve(()=>this.#e.setOrderBy(this.sortByColumn()));ngOnInit(){this.#e.getBackups(!0)}openInConsole(t){console.log(t);let n=t.Backup.ExternalID?.split(":")[1];if(!n){console.error("Backup does not have an external ID");return}this.#i.openConsole("/app/machines/configurations/"+n)}setOrderBy(t){this.#e.setOrderBy(t)}setTimeType(t){this.#e.setTimeType(t)}startBackup(t){this.#t.resumeDialogCheck(()=>this.#e.startBackup(t))}getBackendIcon(t){return t?ee(t).icon??"database":""}getBackendType(t){if(!t)return"";let n=ee(t);if(!n)return"";let _=dt[n.key];if(_?.Display)return _.Display;if(n.key==="s3"){let F="http://null?"+t.split("?")[1],k=new URL(F).searchParams.get("s3-server-name")?.toLowerCase()??"";for(let[y,B]of Object.entries(rn))if(k.endsWith(y))return B}return n.displayName}getBackupVersionCount(t){return parseInt(t?.Backup?.Metadata?.BackupListCount??"",10)||0}verifyFiles(t){this.loadingId.set(t),this.#n.postApiV1BackupByIdVerify({id:t}).pipe(j(()=>this.loadingId.set(null))).subscribe({next:()=>{this.successId.set(t),setTimeout(()=>this.successId.set(null),2e3)}})}compressBackup(t){this.loadingId.set(t),this.#n.postApiV1BackupByIdCompact({id:t}).pipe(j(()=>this.loadingId.set(null))).subscribe({next:()=>{this.successId.set(t),setTimeout(()=>this.successId.set(null),2e3)}})}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Xe({type:e,selectors:[["app-home"]],decls:36,vars:6,consts:()=>{let t;t=$localize`Backups`;let n;n=$localize`Keep your data safe at your chosen destination.`;let _;_=$localize` Create ${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:plus${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON:`;let F;F=$localize`Restores`;let d;d=$localize`Recover your files from any backup set.`;let k;k=$localize` Start ${"\uFFFD#22\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#22\uFFFD"}:CLOSE_TAG_SH_ICON:`;let y;y=$localize`My backups`;let B;B=$localize`${"\uFFFD#4\uFFFD"}:START_TAG_SH_ICON:rows${"\uFFFD/#4\uFFFD"}:CLOSE_TAG_SH_ICON: List `;let te;te=$localize`${"\uFFFD#7\uFFFD"}:START_TAG_SH_ICON:list${"\uFFFD/#7\uFFFD"}:CLOSE_TAG_SH_ICON: Details `;let ie;ie=$localize` Time: ${"\uFFFD#11\uFFFD"}:START_TAG_STRONG:${"\uFFFD*12:1\uFFFD"}:START_BLOCK_IF: Relative ${"\uFFFD/*12:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*13:2\uFFFD"}:START_BLOCK_ELSE_IF: Actual ${"\uFFFD/*13:2\uFFFD"}:CLOSE_BLOCK_ELSE_IF:${"\uFFFD*14:3\uFFFD"}:START_BLOCK_ELSE: ${"\uFFFD0:3\uFFFD"}:INTERPOLATION: ${"\uFFFD/*14:3\uFFFD"}:CLOSE_BLOCK_ELSE:${"\uFFFD/#11\uFFFD"}:CLOSE_TAG_STRONG:${"\uFFFD#15\uFFFD"}:START_TAG_SH_ICON:clock${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_ICON:`;let oe;oe=$localize`Relative time`;let _e;_e=$localize`Actual time`;let ae;ae=$localize` Order by: ${"\uFFFD#3\uFFFD"}:START_TAG_STRONG:${"\uFFFD0\uFFFD"}:INTERPOLATION:${"\uFFFD/#3\uFFFD"}:CLOSE_TAG_STRONG:${"\uFFFD#4\uFFFD"}:START_TAG_SH_ICON:arrows-down-up${"\uFFFD/#4\uFFFD"}:CLOSE_TAG_SH_ICON:`;let le;le=$localize` ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let re;re=$localize`Externally managed`;let ce;ce=$localize` Edit in console ${"\uFFFD#13\uFFFD"}:START_TAG_SH_ICON:arrow-up-right${"\uFFFD/#13\uFFFD"}:CLOSE_TAG_SH_ICON:`;let se;se=$localize`Last successful backup:`;let ue;ue=$localize`Duration:`;let Fe;Fe=$localize`Source:`;let Ce;Ce=$localize`Destination:`;let b;b=$localize`{VAR_PLURAL, plural, =0 {No version yet} =1 {1 Version} other {{INTERPOLATION} Versions}}`,b=W(b,{INTERPOLATION:"\uFFFD1\uFFFD",VAR_PLURAL:"\uFFFD0\uFFFD"});let Te;Te=$localize` ${b}:ICU@@6502601490918455200: `;let Ee;Ee=$localize`Next scheduled run:`;let de;de=$localize`Externally managed`;let ge;ge=$localize` No backups found ${"\uFFFD#2\uFFFD"}:START_TAG_BUTTON: Click to create one now ${"\uFFFD#3\uFFFD"}:START_TAG_SH_ICON:plus${"\uFFFD/#3\uFFFD"}:CLOSE_TAG_SH_ICON:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_BUTTON:`;let pe;pe=$localize` Backup ${"\uFFFD*4:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*4:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Se;Se=$localize` Type ${"\uFFFD*7:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*7:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Oe;Oe=$localize` Last backup ${"\uFFFD*10:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*10:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let me;me=$localize` Next run ${"\uFFFD*13:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*13:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Ne;Ne=$localize` Duration ${"\uFFFD*16:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*16:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Me;Me=$localize` Source ${"\uFFFD*19:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*19:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Ie;Ie=$localize` Destination ${"\uFFFD*22:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_NG_CONTAINER:${"\uFFFD/#1:1\uFFFD\uFFFD/*22:1\uFFFD"}:CLOSE_TAG_NG_CONTAINER:`;let Pe;Pe=$localize`Version`;let fe;fe=$localize`Actions`;let v;v=$localize`{VAR_PLURAL, plural, =0 {No versions} =1 {1 Version} other {{INTERPOLATION} Versions}}`,v=W(v,{INTERPOLATION:"\uFFFD1\uFFFD",VAR_PLURAL:"\uFFFD0\uFFFD"});let De;De=$localize` ${v}:ICU@@3521773141017690117: `;let $e;$e=$localize`Loading backups...`;let Re;Re=$localize`${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:play-circle${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON:${"\uFFFD*3:1\uFFFD"}:START_BLOCK_IF: Start ${"\uFFFD/*3:1\uFFFD"}:CLOSE_BLOCK_IF:`;let he;he=$localize`${"\uFFFD#16\uFFFD"}:START_TAG_SH_ICON:clock-counter-clockwise${"\uFFFD/#16\uFFFD"}:CLOSE_TAG_SH_ICON: Restore `;let Ae;Ae=$localize`${"\uFFFD#19\uFFFD"}:START_TAG_SH_ICON:export${"\uFFFD/#19\uFFFD"}:CLOSE_TAG_SH_ICON: Export `;let Le;Le=$localize`${"\uFFFD#22\uFFFD"}:START_TAG_SH_ICON:x-circle${"\uFFFD/#22\uFFFD"}:CLOSE_TAG_SH_ICON: Delete `;let He;He=$localize`Advanced`;let xe;xe=$localize`${"\uFFFD#28\uFFFD"}:START_TAG_SH_ICON:database${"\uFFFD/#28\uFFFD"}:CLOSE_TAG_SH_ICON: Database `;let Ge;Ge=$localize`${"\uFFFD#31\uFFFD"}:START_TAG_SH_ICON:check-square-offset${"\uFFFD/#31\uFFFD"}:CLOSE_TAG_SH_ICON: Verify files `;let ke;ke=$localize`${"\uFFFD#34\uFFFD"}:START_TAG_SH_ICON:file-archive${"\uFFFD/#34\uFFFD"}:CLOSE_TAG_SH_ICON: Compress now `;let ye;ye=$localize`${"\uFFFD#37\uFFFD"}:START_TAG_SH_ICON:terminal-window${"\uFFFD/#37\uFFFD"}:CLOSE_TAG_SH_ICON: Commandline `;let Be;Be=$localize`Reporting`;let be;return be=$localize`${"\uFFFD#43\uFFFD"}:START_TAG_SH_ICON:notepad${"\uFFFD/#43\uFFFD"}:CLOSE_TAG_SH_ICON: Log `,[["actions",""],["sortIcons",""],t,n,_,F,d,k,y,B,te,ie,oe,_e,ae,le,re,ce,se,ue,Fe,Ce,Te,Ee,de,ge,pe,Se,Oe,me,Ne,Me,Ie,Pe,fe,De,$e,Re,he,Ae,Le,He,xe,Ge,ke,ye,Be,be,[1,"type-a","actionable",3,"routerLink"],["src","assets/images/backup.png","alt","","width","48px"],[1,"text"],["type","button","shButton",""],["src","assets/images/restore.png","alt","","width","48px"],[1,"content"],[1,"actions"],[1,"small","type-b"],["type","button",3,"click"],[1,"table-overview"],["type","button","shButton","",1,"small"],["menu",""],["type","button",3,"active"],[1,"backups",3,"fallback"],[1,"type-b",3,"data","loading","sortByColumn"],[1,"backups"],[1,"no-backups"],[1,"backup","externaly-managed"],[1,"backup"],["alt","",1,"provider-icon",3,"src"],[1,"tags"],[1,"simple","primary"],["type","button","shButton","",3,"click"],[1,"simple","success"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["shButton","",1,"primary","raised",3,"routerLink"],[1,"type-b",3,"sortByColumnChange","data","loading","sortByColumn"],["thead",""],["shSort","name"],[4,"ngTemplateOutlet"],["shSort","type"],["shSort","lastrun"],["shSort","nextrun"],["shSort","duration"],["shSort","sourcesize"],["shSort","destinationsize"],[1,"small"],[1,"loading-list"],[1,"indeterminate","primary"],["shButton","",3,"click"],["type","button","shButton","",3,"routerLink"],["title",""],["type","button",3,"routerLink"],[1,"filter"],[1,"asc"],[1,"desc"]]},template:function(n,_){n&1&&(C(0,"app-status-bar"),o(1,"section")(2,"header")(3,"sh-card",48),C(4,"img",49),o(5,"div",50)(6,"h3"),T(7,2),i(),o(8,"p"),T(9,3),i()(),o(10,"button",51),c(11,4),C(12,"sh-icon"),s(),i()(),o(13,"sh-card",48),C(14,"img",52),o(15,"div",50)(16,"h3"),T(17,5),i(),o(18,"p"),T(19,6),i()(),o(20,"button",51),c(21,7),C(22,"sh-icon"),s(),i()()(),o(23,"div",53)(24,"h2"),O(25),T(26,8),m(),g(27,Dn,22,6,"div",54),i(),Je(28,ct,2,1)(29,st,5,0),we(30,28,un,null,29),i()(),I(32,Tt,44,29,"ng-template",null,0,q)(34,Et,6,0,"ng-template",null,1,q)),n&2&&(a(3),E("routerLink",K(4,Fn)),a(10),E("routerLink",K(5,Cn)),a(14),p(_.backups().length>0?27:-1),a(3),ze(!_.backupsLoading()))},dependencies:[Q,cn,We,Z,Y,Qe,Ye,Ze,je],styles:["[_nghost-%COMP%]{display:block}h2[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;padding:2rem 0}header[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;padding:0 2rem;gap:1rem}sh-card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem}sh-card[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{flex:1 0;display:flex;flex-direction:column;gap:.25rem}.content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{padding:0 2rem}sh-menu[_ngcontent-%COMP%]{color:red}.backups[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:0 2rem;gap:.5rem}.backups.fallback[_ngcontent-%COMP%]{justify-content:center;align-items:center;padding:4rem;border:1px solid var(--base-4);background:var(--base-2);border-radius:var(--shape-2);width:calc(100% - 4rem);margin:0 auto}.no-backups[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;align-items:center}.backup[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:2rem;gap:1rem;border:1px solid var(--base-4);border-radius:var(--shape-3);box-shadow:var(--box-shadow-10)}.backup[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:40%}.backup[_ngcontent-%COMP%] .text[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.backup[_ngcontent-%COMP%] .text[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] sh-icon[_ngcontent-%COMP%]{color:var(--base-8)}.backup[_ngcontent-%COMP%] .text[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font:var(--paragraph-30);color:var(--base-8)}.backup[_ngcontent-%COMP%] .text[_ngcontent-%COMP%] p[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--base-12)}.backup[_ngcontent-%COMP%] .tags[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:column;gap:.5rem}.provider-icon[_ngcontent-%COMP%]{width:1.25rem;height:1.25rem}.actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.sortable[_ngcontent-%COMP%]{-webkit-user-select:none;user-select:none}.sortable[_ngcontent-%COMP%] sh-icon[_ngcontent-%COMP%]{margin-left:.5rem;font-size:1rem;justify-self:flex-end;display:none}.sortable[_ngcontent-%COMP%]:not(.sort-asc):not(.sort-desc) sh-icon.filter[_ngcontent-%COMP%]{display:block}.sortable.sort-asc[_ngcontent-%COMP%] sh-icon.asc[_ngcontent-%COMP%]{display:block;color:var(--base-12)}.sortable.sort-desc[_ngcontent-%COMP%] sh-icon.desc[_ngcontent-%COMP%]{display:block;color:var(--base-12)}.actionable[_ngcontent-%COMP%]{cursor:pointer}.actionable[_ngcontent-%COMP%]:after{transition:inset .1s linear}.actionable[_ngcontent-%COMP%]:hover{--card-shp: 0}"],changeDetection:0})};export{ne as default};