@duplicati/ngclient 0.0.1 → 0.0.6

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 (197) hide show
  1. package/chunk-22HCWJS5.js +1 -0
  2. package/chunk-24PLBY6C.js +1 -0
  3. package/chunk-3MM4GLBS.js +1 -0
  4. package/chunk-3MTW6FJP.js +1 -0
  5. package/chunk-4FK75Z4C.js +1 -0
  6. package/chunk-4MMHXTNF.js +1 -0
  7. package/chunk-57M4MADC.js +1 -0
  8. package/chunk-6XUWDRDE.js +1 -0
  9. package/chunk-77NTMJCT.js +1 -0
  10. package/chunk-7X6SBNMU.js +1 -0
  11. package/chunk-A66Z6362.js +1 -0
  12. package/chunk-AC6VDRLC.js +1 -0
  13. package/chunk-BNNZKRIC.js +1 -0
  14. package/chunk-CKPPU3GS.js +2 -0
  15. package/chunk-DYANEO5K.js +1 -0
  16. package/chunk-GJTW7UUU.js +1 -0
  17. package/chunk-GMANGOGH.js +1 -0
  18. package/chunk-I6QIKK6M.js +1 -0
  19. package/chunk-IOWSWUHM.js +1 -0
  20. package/chunk-IQSBPGVL.js +1 -0
  21. package/chunk-L47VTK2X.js +1 -0
  22. package/chunk-LVLU6MPQ.js +1 -0
  23. package/chunk-N5US3SKW.js +1 -0
  24. package/chunk-NIMPOFJV.js +1 -0
  25. package/chunk-ORDBF5MR.js +8 -0
  26. package/chunk-PH6AAOK4.js +1 -0
  27. package/chunk-PY5HJ5U2.js +1 -0
  28. package/chunk-QQDSFTZV.js +1 -0
  29. package/chunk-RANWFSNY.js +1 -0
  30. package/chunk-RLJJFBQ2.js +1 -0
  31. package/chunk-S76TN27U.js +1 -0
  32. package/chunk-UTPCUNNU.js +1 -0
  33. package/chunk-VPEVWKGB.js +1 -0
  34. package/chunk-VVUYO7E4.js +1 -0
  35. package/chunk-WLI4RZYL.js +1 -0
  36. package/chunk-X2NZ4CJ5.js +2 -0
  37. package/chunk-XU7PNEZO.js +1 -0
  38. package/chunk-XYJYUMYL.js +1 -0
  39. package/chunk-YRXI477O.js +1 -0
  40. package/chunk-ZD3JEKWI.js +1 -0
  41. package/index.html +15 -0
  42. package/main-5KJRELCN.js +1 -0
  43. package/package.json +3 -40
  44. package/sparkle-ui-assets/fonts/InterTight-VariableFont_wght.ttf +0 -0
  45. package/sparkle-ui-assets/fonts/InterTight-VariableFont_wght.woff2 +0 -0
  46. package/styles-6W7ZCKNM.css +1 -0
  47. package/.dockerignore +0 -13
  48. package/.github/workflows/npm-publish.yml +0 -59
  49. package/.prettierignore +0 -13
  50. package/.prettierrc +0 -12
  51. package/.vscode/extensions.json +0 -4
  52. package/.vscode/launch.json +0 -13
  53. package/.vscode/settings.json +0 -8
  54. package/.vscode/tasks.json +0 -24
  55. package/Dockerfile +0 -38
  56. package/LICENSE +0 -21
  57. package/README.md +0 -27
  58. package/angular.json +0 -98
  59. package/bun.lockb +0 -0
  60. package/openapi-ts.config.ts +0 -13
  61. package/scripts/generate-package-json.ts +0 -15
  62. package/src/app/about/about.component.html +0 -15
  63. package/src/app/about/about.component.scss +0 -19
  64. package/src/app/about/about.component.ts +0 -13
  65. package/src/app/about/changelog/changelog.component.html +0 -3
  66. package/src/app/about/changelog/changelog.component.scss +0 -7
  67. package/src/app/about/changelog/changelog.component.ts +0 -18
  68. package/src/app/about/general/general.component.html +0 -9
  69. package/src/app/about/general/general.component.scss +0 -23
  70. package/src/app/about/general/general.component.ts +0 -30
  71. package/src/app/about/libraries/libraries.component.html +0 -3
  72. package/src/app/about/libraries/libraries.component.scss +0 -7
  73. package/src/app/about/libraries/libraries.component.ts +0 -18
  74. package/src/app/about/logs/logs.component.html +0 -5
  75. package/src/app/about/logs/logs.component.scss +0 -7
  76. package/src/app/about/logs/logs.component.ts +0 -18
  77. package/src/app/about/system-info/system-info.component.html +0 -3
  78. package/src/app/about/system-info/system-info.component.scss +0 -7
  79. package/src/app/about/system-info/system-info.component.ts +0 -17
  80. package/src/app/add-backup/add-backup.component.html +0 -29
  81. package/src/app/add-backup/add-backup.component.scss +0 -38
  82. package/src/app/add-backup/add-backup.component.ts +0 -14
  83. package/src/app/app.component.ts +0 -35
  84. package/src/app/app.config.ts +0 -23
  85. package/src/app/app.routes.ts +0 -121
  86. package/src/app/core/components/file-tree/file-tree.component.html +0 -87
  87. package/src/app/core/components/file-tree/file-tree.component.scss +0 -80
  88. package/src/app/core/components/file-tree/file-tree.component.ts +0 -485
  89. package/src/app/core/components/logo/logo.component.html +0 -22
  90. package/src/app/core/components/logo/logo.component.scss +0 -12
  91. package/src/app/core/components/logo/logo.component.ts +0 -11
  92. package/src/app/core/components/status-bar/status-bar.component.html +0 -38
  93. package/src/app/core/components/status-bar/status-bar.component.scss +0 -27
  94. package/src/app/core/components/status-bar/status-bar.component.ts +0 -33
  95. package/src/app/core/components/status-bar/status-bar.state.ts +0 -182
  96. package/src/app/core/components/toggle-card/toggle-card.component.html +0 -11
  97. package/src/app/core/components/toggle-card/toggle-card.component.scss +0 -49
  98. package/src/app/core/components/toggle-card/toggle-card.component.ts +0 -28
  99. package/src/app/core/interceptors/http.interceptor.ts +0 -69
  100. package/src/app/core/interceptors/websocket.interceptor.ts +0 -66
  101. package/src/app/core/openapi/core/ApiError.ts +0 -21
  102. package/src/app/core/openapi/core/ApiRequestOptions.ts +0 -21
  103. package/src/app/core/openapi/core/ApiResult.ts +0 -7
  104. package/src/app/core/openapi/core/OpenAPI.ts +0 -55
  105. package/src/app/core/openapi/core/request.ts +0 -337
  106. package/src/app/core/openapi/index.ts +0 -6
  107. package/src/app/core/openapi/schemas.gen.ts +0 -3611
  108. package/src/app/core/openapi/services.gen.ts +0 -1460
  109. package/src/app/core/openapi/types.gen.ts +0 -1510
  110. package/src/app/core/pipes/duration.pipe.ts +0 -27
  111. package/src/app/core/pipes/relative-time.pipe.ts +0 -14
  112. package/src/app/core/providers/dayjs.ts +0 -16
  113. package/src/app/core/services/dict.en.ts +0 -0
  114. package/src/app/core/services/dictionary.service.ts +0 -12
  115. package/src/app/core/services/localstorage.token.ts +0 -82
  116. package/src/app/core/services/password-generator.service.ts +0 -39
  117. package/src/app/core/services/relay-websocket.service.ts +0 -268
  118. package/src/app/core/services/timespan-literals.service.ts +0 -25
  119. package/src/app/core/states/app-auth.state.ts +0 -87
  120. package/src/app/core/states/backups.state.ts +0 -71
  121. package/src/app/core/states/relayconfig.state.ts +0 -23
  122. package/src/app/core/states/sysinfo.state.ts +0 -31
  123. package/src/app/core/states/tasks.state.ts +0 -34
  124. package/src/app/core/types/subscribed.ts +0 -7
  125. package/src/app/core/validators/custom.validators.ts +0 -120
  126. package/src/app/create-edit-backup/create-edit-backup.component.html +0 -28
  127. package/src/app/create-edit-backup/create-edit-backup.component.scss +0 -15
  128. package/src/app/create-edit-backup/create-edit-backup.component.ts +0 -33
  129. package/src/app/create-edit-backup/create-edit-backup.state.ts +0 -582
  130. package/src/app/create-edit-backup/destination/destination.component.html +0 -367
  131. package/src/app/create-edit-backup/destination/destination.component.scss +0 -85
  132. package/src/app/create-edit-backup/destination/destination.component.ts +0 -249
  133. package/src/app/create-edit-backup/destination/destination.config.ts +0 -103
  134. package/src/app/create-edit-backup/destination/destination.mapper.ts +0 -177
  135. package/src/app/create-edit-backup/general/general.component.html +0 -108
  136. package/src/app/create-edit-backup/general/general.component.scss +0 -34
  137. package/src/app/create-edit-backup/general/general.component.ts +0 -136
  138. package/src/app/create-edit-backup/options/options.component.html +0 -95
  139. package/src/app/create-edit-backup/options/options.component.scss +0 -42
  140. package/src/app/create-edit-backup/options/options.component.ts +0 -113
  141. package/src/app/create-edit-backup/schedule/schedule.component.html +0 -102
  142. package/src/app/create-edit-backup/schedule/schedule.component.scss +0 -38
  143. package/src/app/create-edit-backup/schedule/schedule.component.ts +0 -137
  144. package/src/app/create-edit-backup/source-data/source-data.component.html +0 -93
  145. package/src/app/create-edit-backup/source-data/source-data.component.scss +0 -41
  146. package/src/app/create-edit-backup/source-data/source-data.component.ts +0 -114
  147. package/src/app/home/backup.const.ts +0 -167
  148. package/src/app/home/home.component.html +0 -98
  149. package/src/app/home/home.component.scss +0 -88
  150. package/src/app/home/home.component.ts +0 -54
  151. package/src/app/layout/layout.component.html +0 -64
  152. package/src/app/layout/layout.component.scss +0 -24
  153. package/src/app/layout/layout.component.ts +0 -51
  154. package/src/app/layout/layout.state.ts +0 -70
  155. package/src/app/login/login.component.html +0 -12
  156. package/src/app/login/login.component.scss +0 -25
  157. package/src/app/login/login.component.ts +0 -34
  158. package/src/app/logout/logout.component.html +0 -1
  159. package/src/app/logout/logout.component.scss +0 -3
  160. package/src/app/logout/logout.component.ts +0 -18
  161. package/src/app/restore/restore.component.html +0 -56
  162. package/src/app/restore/restore.component.scss +0 -37
  163. package/src/app/restore/restore.component.ts +0 -55
  164. package/src/app/restore-flow/options/options.component.html +0 -57
  165. package/src/app/restore-flow/options/options.component.scss +0 -16
  166. package/src/app/restore-flow/options/options.component.ts +0 -58
  167. package/src/app/restore-flow/restore-flow.component.html +0 -14
  168. package/src/app/restore-flow/restore-flow.component.scss +0 -15
  169. package/src/app/restore-flow/restore-flow.component.ts +0 -23
  170. package/src/app/restore-flow/restore-flow.state.ts +0 -120
  171. package/src/app/restore-flow/select-files/select-files.component.html +0 -42
  172. package/src/app/restore-flow/select-files/select-files.component.scss +0 -16
  173. package/src/app/restore-flow/select-files/select-files.component.ts +0 -129
  174. package/src/app/settings/settings.component.html +0 -256
  175. package/src/app/settings/settings.component.scss +0 -106
  176. package/src/app/settings/settings.component.ts +0 -475
  177. package/src/environments/environment-token.ts +0 -4
  178. package/src/environments/environment.prod.ts +0 -6
  179. package/src/environments/environment.ts +0 -6
  180. package/src/index.html +0 -15
  181. package/src/main.ts +0 -6
  182. package/src/proxy.conf.mjs +0 -6
  183. package/src/styles.scss +0 -41
  184. package/tsconfig.app.json +0 -15
  185. package/tsconfig.json +0 -30
  186. /package/{src/assets → assets}/duplicati-logo.png +0 -0
  187. /package/{src/assets → assets}/duplicati-logo.svg +0 -0
  188. /package/{src/assets → assets}/favicon.ico +0 -0
  189. /package/{src/assets → assets}/images/backup.png +0 -0
  190. /package/{src/assets → assets}/images/dark-theme.png +0 -0
  191. /package/{src/assets → assets}/images/folder.png +0 -0
  192. /package/{src/assets → assets}/images/light-theme.png +0 -0
  193. /package/{src/assets → assets}/images/new-backup.png +0 -0
  194. /package/{src/assets → assets}/images/restore.png +0 -0
  195. /package/{src/assets → assets}/images/system-theme.png +0 -0
  196. /package/{src/assets → assets}/spk.css +0 -0
  197. /package/{src/assets → assets}/spk.woff2 +0 -0
@@ -0,0 +1 @@
1
+ import{$ as f,Cb as V,Db as L,Fb as b,Gb as J,Hb as K,Lb as m,Qa as _,T as $,Ta as U,Wa as c,Xa as F,Ya as D,Z as T,a as B,b as R,bb as I,bc as k,db as X,dc as O,eb as W,fb as H,gb as q,hb as A,ib as z,ja as d,jb as G,ka as u,kb as Y,lb as l,mb as a,mc as Z,nb as M,oa as Q,rb as E,sb as v,tb as p,ua as N,ub as g,va as S,vb as r,wa as P}from"./chunk-ORDBF5MR.js";var y=["*"];var te=["spk-button",""],ie=["inputWrap"];var ne=[[["label"]],[["","spkPrefix",""]],[["","spkTextPrefix",""]],[["input"]],[["textarea"]],[["","spkTextSuffix",""]],[["","spkSuffix",""]],[["","spkError",""]],[["","spkHint",""]]],oe=["label","[spkPrefix]","[spkTextPrefix]","input","textarea","[spkTextSuffix]","[spkSuffix]","[spkError]","[spkHint]"],se=["actionRef"],re=["menuRef"],le=["*",[["","menu",""]]],ae=["*","[menu]"];var ce=["optionsRef"],pe=["formFieldWrapper"],de=[[["label"]],[["input"]],[["","deselect-indicator",""]],[["","search-indicator",""]],[["","open-indicator",""]],[["","placeholder-text",""]],[["","options",""]]],ue=["label","input","[deselect-indicator]","[search-indicator]","[open-indicator]","[placeholder-text]","[options]"];function he(n,x){if(n&1){let e=E();l(0,"spk-chip",11),v("click",function(i){let o=d(e).$implicit,s=p(3);return u(s.toggleOption(o,i))}),b(1),l(2,"spk-icon"),b(3,"x-circle"),a()()}if(n&2){let e,t=x.$implicit,i=p(3);X("ngClass",i.chipClass()),_(),K(" ",(e=(e=i.displayFn())==null?null:e(t))!==null&&e!==void 0?e:t," ")}}function fe(n,x){if(n&1&&G(0,he,4,2,"spk-chip",10,z),n&2){let e=p(2);Y(e.inputValue().split(","))}}function me(n,x){if(n&1&&(l(0,"div",5),I(1,fe,2,0),a()),n&2){let e=p();_(),A(e.inputValue().length>0?1:-1)}}function ge(n,x){if(n&1&&(l(0,"div",5),b(1),a()),n&2){let e=p();_(),J(e._displayValue())}}function ve(n,x){if(n&1){let e=E();l(0,"div",12),v("click",function(i){d(e);let o=p();return u(o.deselect(i))}),r(1,2),l(2,"spk-icon",13),b(3,"x-circle"),a()()}}function Se(n,x){n&1&&(l(0,"div",7),r(1,3),l(2,"spk-icon",13),b(3,"magnifying-glass"),a()())}function Ce(n,x){if(n&1&&(l(0,"div",14),r(1,4),l(2,"spk-icon",13),b(3,"caret-down"),a()()),n&2){let e=p();H("open",e.isOpen())}}function _e(n,x){if(n&1){let e=E();l(0,"div",15,2)(2,"div",16),v("click",function(){d(e);let i=p();return u(i.close())}),a(),l(3,"div",17)(4,"div",18),r(5,5),a(),r(6,6),a()()}if(n&2){let e=p();q(e.optionsStyle()),H("active",e.delayedIsOpen())}}var ke=["dragImageElement"],ye=[[["","sidenav",""]],[["","sidenav-closed-topbar",""]],"*"],xe=["[sidenav]","[sidenav-closed-topbar]","*"];function we(n,x){if(n&1){let e=E();l(0,"div",7),v("drop",function(i){d(e);let o=p();return u(o.drop(i))})("dragover",function(i){d(e);let o=p();return u(o.dragOver(i))})("dragenter",function(){d(e);let i=p();return u(i.dragEnter())})("dragleave",function(){d(e);let i=p();return u(i.dragLeave())}),a()}}function De(n,x){if(n&1){let e=E();l(0,"div",8),v("dragstart",function(i){d(e);let o=p();return u(o.dragStart(i))})("dragend",function(i){d(e);let o=p();return u(o.dragEnd(i))})("drag",function(i){d(e);let o=p();return u(o.drag(i))})("touchstart",function(i){d(e);let o=p();return u(o.touchStart(i))})("touchmove",function(i){d(e);let o=p();return u(o.touchMove(i))})("touchend",function(i){d(e);let o=p();return u(o.touchEnd(i))})("touchcancel",function(i){d(e);let o=p();return u(o.touchCancel(i))}),a()}}var ee=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-icon"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})();var Ye=(()=>{class n{constructor(){this.alertHistory=c([]),this.alertHistoryIsOpen=c(!1),this.alertHistoryIsHidden=c(!0)}error(e){this.addAlert({type:"error",title:e??"An error occured"})}success(e){this.addAlert({type:"success",title:e})}question(e){this.addAlert({type:"question",title:e})}warning(e){this.addAlert({type:"warning",title:e})}info(e){this.addAlert({type:"primary",title:e})}addAlert(e){let t=crypto.randomUUID();this.alertHistory.update(i=>[R(B({},e),{isOpen:!0,animateIn:!0,animateOut:!1,id:t}),...i]),setTimeout(()=>{this.alertHistory.update(i=>i.map(o=>R(B({},o),{animateIn:o.id===t?!1:o.animateIn})))},40),setTimeout(()=>{this.hideAlert(t)},2500)}removeAlert(e){this.alertHistory.update(t=>t.map(i=>R(B({},i),{animateOut:i.id===e?!1:i.animateOut}))),setTimeout(()=>{this.alertHistory.update(t=>t.filter(i=>i.id!==e))},300)}hideAlert(e){this.alertHistory.update(t=>t.map(i=>R(B({},i),{isOpen:i.id===e?!1:i.isOpen})))}setHidden(e){this.alertHistoryIsHidden.set(e)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=$({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})(),Je=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-button-group"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})(),Ke=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["","spk-button",""]],standalone:!0,features:[m],attrs:te,ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})(),Ze=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-card"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})(),et=(()=>{class n{#e=T(P);onClick(){this.#e.nativeElement.querySelector("input")&&this.#e.nativeElement.querySelector("input").focus()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-checkbox"]],hostBindings:function(t,i){t&1&&v("click",function(){return i.onClick()})},standalone:!0,features:[m],ngContentSelectors:y,decls:4,vars:0,consts:[[1,"box"],[1,"inherit"]],template:function(t,i){t&1&&(g(),l(0,"div",0)(1,"spk-icon",1),b(2,"check"),a()(),r(3))},dependencies:[ee],encapsulation:2,changeDetection:0})}}return n})(),Ee=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-chip"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})();var be=(()=>{class n{#e=T(P);onClick(){this.#e.nativeElement.querySelector("input")&&this.#e.nativeElement.querySelector("input").focus(),this.#e.nativeElement.querySelector("textarea")&&this.#e.nativeElement.querySelector("textarea").focus()}ngOnInit(){let e=CSS.supports("field-sizing","content"),t=this.#e.nativeElement.querySelector("textarea");if(!e&&t!==null){let h=function(){s.style.height="auto",s.style.height=s.scrollHeight+"px"},w=function(){window.setTimeout(h,0)};var i=h,o=w;let s=this.#e.nativeElement.querySelector("textarea");s.addEventListener("change",h),s.addEventListener("cut",w),s.addEventListener("paste",w),s.addEventListener("drop",w),s.addEventListener("keydown",w),s.focus(),s.select(),h()}}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-form-field"]],hostBindings:function(t,i){t&1&&v("click",function(){return i.onClick()})},standalone:!0,features:[m],ngContentSelectors:oe,decls:16,vars:0,consts:[[1,"input-wrap"],[1,"prefix"],[1,"prefix-spacer"],[1,"suffix-spacer"],[1,"helpers"],[1,"error"],[1,"hint"]],template:function(t,i){t&1&&(g(ne),r(0),l(1,"div",0)(2,"div",1),r(3,1),r(4,2),a(),M(5,"div",2),r(6,3),r(7,4),r(8,5),M(9,"div",3),r(10,6),a(),l(11,"div",4)(12,"div",5),r(13,7),a(),l(14,"div",6),r(15,8),a()())},encapsulation:2,changeDetection:0})}}return n})(),tt=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-list"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})(),it=(()=>{class n{constructor(){this.injector=T(Q),this.#e=8,this.above=S(!1),this.right=S(!1),this.closeAction=N(),this.isActive=D(!1),this.optionInFocus=D(null),this.actionRef=F.required("actionRef"),this.menuRef=F.required("menuRef"),this.menuEl=k(()=>this.menuRef()?.nativeElement),this.menuStyle=c({left:"0px",top:"0px"}),this.optionsElTrigger=c(!1),this.options=k(()=>{let e=this.menuEl().querySelectorAll("[option]:not([disabled])");return this.optionsElTrigger(),this.isActive(),Array.from(e)}),this.#t=c(null),this.optionElementInFocus=D(null),this.#l=c(null),this.selectedOption=D(null),this.selectedOptionIndex=D(null),this.#r=document.getElementsByTagName("body")[0],this.optionInFocusEffect=O(()=>{if(this.optionInFocus()===null&&this.#t()){this.#t()?.classList.remove("focused");return}if(this.options().length===0||this.optionInFocus()===null)return;let e=this.options().at(this.optionInFocus());this.#t()&&this.#t()?.classList.remove("focused"),e?(e.classList.add("focused"),e.scrollIntoView({block:"nearest"}),this.#t.set(e),this.optionElementInFocus.set(e)):this.optionElementInFocus.set(null)},{allowSignalWrites:!0,injector:this.injector}),this.controller=null,this.whenActive=O(()=>{this.isActive()?(this.setNewController(),this.#a(),this.calculateMenuPosition(),setTimeout(()=>{let e=this.options().findIndex(t=>t.getAttribute("value")===this.selectedOption()?.getAttribute("value"));this.optionInFocus()===null&&this.optionInFocus.set(e>-1?e:0)},0),window.addEventListener("resize",()=>this.calculateMenuPosition(),{signal:this.controller?.signal}),window.addEventListener("scroll",()=>this.calculateMenuPosition(),{signal:this.controller?.signal}),window.addEventListener("keydown",e=>{e.key==="ArrowDown"?this.optionInFocus()===null||this.optionInFocus()===this.options().length-1?this.optionInFocus.set(0):this.optionInFocus.set(this.optionInFocus()+1):e.key==="ArrowUp"?this.optionInFocus()===null||this.optionInFocus()===0?this.optionInFocus.set(this.options().length-1):this.optionInFocus.set(this.optionInFocus()-1):e.key==="Enter"?(this.optionElementInFocus()&&this.selectOption(this.optionElementInFocus()),this.close("selected")):e.key==="Escape"?this.close("closed"):setTimeout(()=>{this.optionInFocus.set(0),this.optionsElTrigger.set(!this.optionsElTrigger())},0)},{signal:this.controller?.signal})):this.#s()},{allowSignalWrites:!0,injector:this.injector})}#e;#t;#l;#r;setNewController(){this.controller?.abort(),this.controller=new AbortController}deselectOption(){this.#l.set(null),this.selectedOption.set(null),this.selectedOptionIndex.set(null)}setSelectedOption(e){let t=this.options().find(i=>i.hasAttribute("value")&&i.getAttribute("value")===e);t&&this.selectOption(t)}selectOption(e){this.selectedOption()&&this.#l.set(this.selectedOption()),this.selectedOption.set(e),this.selectedOptionIndex.set(this.options().indexOf(e)),e.dispatchEvent(new Event("click",{bubbles:!0,cancelable:!0}))}selectCurrentOption(){let e=this.selectedOptionIndex(),t=this.options().at(e);t&&this.selectOption(t)}#a(){this.#r.appendChild(this.menuEl())}#s(){this.#r.removeChild(this.menuEl())}ngOnInit(){this.#a()}toggle(){this.isActive.set(!this.isActive())}close(e="closed"){this.controller?.abort(),this.isActive.set(!1),this.closeAction.emit(e)}calculateMenuPosition(){if(this.isActive()){let e=this.actionRef()?.nativeElement.getBoundingClientRect(),t=this.menuEl().getBoundingClientRect(),i=e.left,o=e.bottom,s=i,h=o+this.#e,w=s+t.width>window.innerWidth,j=h+t.height>window.innerHeight;if(this.above()){let C=e.top-t.height-this.#e;C>=0&&(h=C)}else j&&(h=e.top-t.height-this.#e);if(this.right()){let C=e.right-t.width;C>=0&&(s=C)}else w&&(h=j?e.top+e.height-t.height:e.top,s=e.left-t.width-this.#e);this.menuStyle.set({left:s+"px",top:h+"px"})}}ngOnDestroy(){this.#r.contains(this.menuEl())&&this.#s()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-menu"]],viewQuery:function(t,i){t&1&&(V(i.actionRef,se,5),V(i.menuRef,re,5)),t&2&&L(2)},hostVars:2,hostBindings:function(t,i){t&2&&H("active",i.isActive())},inputs:{above:[1,"above"],right:[1,"right"],isActive:[1,"isActive"],optionInFocus:[1,"optionInFocus"],optionElementInFocus:[1,"optionElementInFocus"],selectedOption:[1,"selectedOption"],selectedOptionIndex:[1,"selectedOptionIndex"]},outputs:{closeAction:"closeAction",isActive:"isActiveChange",optionInFocus:"optionInFocusChange",optionElementInFocus:"optionElementInFocusChange",selectedOption:"selectedOptionChange",selectedOptionIndex:"selectedOptionIndexChange"},standalone:!0,features:[m],ngContentSelectors:ae,decls:8,vars:4,consts:[["actionRef",""],["menuRef",""],[1,"action",3,"click"],[1,"sparkle-popup-menu"],[1,"sparkle-menu-backdrop",3,"click"],[1,"sparkle-options",3,"click"]],template:function(t,i){if(t&1){let o=E();g(le),l(0,"div",2,0),v("click",function(){return d(o),u(i.toggle())}),r(2),a(),l(3,"div",3,1)(5,"div",4),v("click",function(){return d(o),u(i.close("closed"))}),a(),l(6,"div",5),v("click",function(){return d(o),u(i.close("selected"))}),r(7,1),a()()}t&2&&(_(3),q(i.menuStyle()),H("active",i.isActive()))},encapsulation:2,changeDetection:0})}}return n})(),nt=(()=>{class n{constructor(){this.value=S(void 0)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-progress-bar"]],inputs:{value:[1,"value"]},standalone:!0,features:[m],decls:1,vars:2,consts:[[1,"progress-bar"]],template:function(t,i){t&1&&M(0,"div",0),t&2&&W("width",i.value(),"%")},encapsulation:2,changeDetection:0})}}return n})(),ot=(()=>{class n{#e=T(P);onClick(){this.#e.nativeElement.querySelector("input")&&this.#e.nativeElement.querySelector("input").focus()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-radio"]],hostBindings:function(t,i){t&1&&v("click",function(){return i.onClick()})},standalone:!0,features:[m],ngContentSelectors:y,decls:2,vars:0,consts:[[1,"radio"]],template:function(t,i){t&1&&(g(),M(0,"div",0),r(1))},encapsulation:2,changeDetection:0})}}return n})();var st=(()=>{class n{constructor(){this.value=S(null)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-option"]],inputs:{value:[1,"value"]},standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})(),Oe=["primary","accent","tertiary","warn","success"],rt=(()=>{class n{constructor(){this.#e=8,this.#t=T(U),this.#l=document.getElementsByTagName("body")[0],this.#r=T(P),this.optionsRef=F("optionsRef"),this.formFieldWrapperRef=F.required("formFieldWrapper"),this.inputWrapRef=F.required("inputWrap"),this.inputValue=D(""),this.selectMultiple=S(!1),this.hideClearButton=S(!1),this.displayValue=S(""),this.displayFn=S(null),this.above=S(!1),this.right=S(!1),this.#a=c(!1),this.#s=c(!1),this.#i=c(null),this.#c=c(""),this.#d=c(-1),this.#p=c(!1),this.#n=c(-1),this.isOpen=c(!1),this.delayedIsOpen=c(!1),this.optionsStyle=c({left:"0px",top:"0px"}),this.isSearchInput=k(()=>this.#i()?.type==="search"),this.optionsEl=k(()=>this.optionsRef()?.nativeElement),this.#o=k(()=>{this.#s();let e=this.optionsRef()?.nativeElement.querySelectorAll("option"),t=this.optionsRef()?.nativeElement.querySelectorAll("spk-option");return e?.length?Array.from(e):t?.length?Array.from(t):[]}),this.chipClass=k(()=>Array.from(this.#r.nativeElement.classList).filter(e=>Oe.includes(e)).join(" ")),this._displayValue=k(()=>this.displayFn()?this.displayFn()(this.inputValue()):this.displayValue()??this.inputValue()),this.selectedOption=k(()=>this.#c()?this.#o().find(e=>e.getAttribute("value")===this.#c()):null),this.optionsOpenController=null,this.inputController=null,this.clickController=null,this.inputAbortController=null,this.#g=O(()=>{this.#a();let e=this.#r.nativeElement.querySelector("input");e&&(this.#D(e),e.addEventListener("inputValueChanged",t=>{this.inputValue.set(t.detail.value),this.selectMultiple()&&this.#f()}),this.#i.set(e),e.autocomplete="off",typeof e.value=="string"&&this.inputValue.set(e.value))},{allowSignalWrites:!0}),this.#v=O(()=>{this.inputController&&this.inputController.abort(),this.inputController=new AbortController;let e=this.#i();e&&(e.addEventListener("focus",t=>this.open(t),{signal:this.inputController?.signal}),e.addEventListener("keydown",t=>{(this.selectMultiple()||!this.isSearchInput())&&t.preventDefault(),t.key==="Escape"?this.close():t.key==="ArrowDown"?this.#n()===null||this.#n()<0||this.#n()===this.#o().length-1?this.#n.set(this.#d()):this.#n.set(this.#n()+1):t.key==="ArrowUp"?this.#n()===null||this.#n()<0||this.#n()===0?this.#n.set(this.#o().length-1):this.#n.set(this.#n()-1):t.key==="Enter"?this.#n()>-1&&this.selected(this.getOptionElement(this.#n())):t.key==="Tab"&&this.close(!0)},{signal:this.inputController?.signal}))}),this.#S=O(()=>{this.isOpen()&&this.#y(),setTimeout(()=>{this.delayedIsOpen.set(this.isOpen())},0)}),this.#C=O(()=>{let e=this.inputValue();this.#i()&&(this.#i().value=e??"",this.#i().dispatchEvent(new Event("input")))},{allowSignalWrites:!0}),this.#u=new MutationObserver(e=>{for(var t of e)t.type=="childList"&&t.target.classList.contains("input")&&this.#a.set(!this.#a()),t.type==="attributes"&&t.attributeName})}#e;#t;#l;#r;#a;#s;#i;#c;#d;#p;#n;#o;#g;#v;#S;#C;ngOnInit(){this.#m(),this.#u.observe(this.inputWrapRef().nativeElement,{attributes:!0,childList:!0,subtree:!0})}getOptionElement(e){return this.#o()[e]}deselect(e,t=!1){e?.stopPropagation(),this.#i()&&(this.#i().value="",this.#i().dispatchEvent(new Event("input"))),this.#n.set(this.#d()),this.#p.set(!1),(t||!this.selectMultiple())&&(this.isOpen.set(!1),this.#i()?.blur())}selected(e){if(!e)return;let t=(e.getAttribute("value")||e.getAttribute("ng-reflect-value"))??"",i=this.#o().indexOf(e);if(e.hasAttribute("deselect"))return this.deselect(null,!0);if(this.#n.set(i),e&&!this.selectMultiple()){this.inputValue.set(t);for(let o=0;o<this.#o().length;o++){let s=this.#o()[o];s.getAttribute("value")===t?this.#t.setAttribute(s,"selected","selected"):this.#t.removeAttribute(s,"selected")}}else e&&this.selectMultiple()&&(this.inputValue().includes(t)?(this.#t.removeAttribute(e,"selected"),this.toggleOption(t)):(this.#t.setAttribute(e,"selected","selected"),this.inputValue.set(this.inputValue().length?`${this.inputValue()},${t}`:t)));this.#p.set(!1),this.selectMultiple()?setTimeout(()=>this.#i()?.focus()):(this.isOpen.set(!1),this.#i()?.blur())}toggleOption(e,t){t&&(t.preventDefault(),t.stopPropagation()),this.inputValue.set(this.inputValue().startsWith(e+",")?this.inputValue().replace(e+",",""):this.inputValue().includes(","+e)?this.inputValue().replace(","+e,""):this.inputValue().replace(e,""))}close(e=!1){this.isSearchInput()&&this.#c()&&setTimeout(()=>this.inputValue.set(this.#c())),this.#w(),this.isOpen.set(!1),this.#p.set(!1),e||this.#i()?.blur(),this.#b(),this.#k()}open(e){e.preventDefault(),this.isOpen.set(!0),this.#m(),this.isSearchInput()&&!this.#p()?(this.#c.set(this.inputValue()),this.inputValue.set(""),this.#i().focus(),this.#i().value="",this.#i().dispatchEvent(new Event("input")),this.#n.set(-1)):(this.isSearchInput()||this.selectMultiple())&&this.#i().focus(),this.#p.set(!0),this.#E(),this.#_(),this.#s.set(!this.#s()),this.#f()}#_(){this.clickController&&this.clickController.abort(),this.clickController=new AbortController,window.addEventListener("click",e=>{if(!e.target)return;let t=e.target.closest("option"),i=e.target.closest("spk-option"),o=t||i;this.#o().indexOf(o)>-1&&this.selected(o)},{signal:this.clickController?.signal})}#k(){this.clickController&&this.clickController.abort()}#y(){for(let e=0;e<this.#o().length;e++){let t=this.#o()[e];this.#t.removeClass(t,"focused"),this.#n()===e&&(this.#t.addClass(t,"focused"),t.scrollIntoView({block:"center"}))}}#f(){let e=this.#i();if(!e)return;this.inputValue.set(e.value);let t=e.value.split(",");setTimeout(()=>{let i=this.#o();for(let o=0;o<i.length;o++){let s=i[o].getAttribute("ng-reflect-value");s&&t.includes(s)?this.#t.setAttribute(i[o],"selected","selected"):this.#t.removeAttribute(i[o],"selected")}})}#m(){setTimeout(()=>{this.optionsEl()&&(this.#t.appendChild(this.#l,this.optionsEl()),this.#d.set(this.#x()),this.#s.set(!this.#s()))})}#x(){let e=this.#o();for(let t=0;t<e.length;t++)if(!e[t].hasAttribute("deselect"))return t;return-1}#w(){setTimeout(()=>{this.optionsEl()&&(this.#t.removeChild(this.#l,this.optionsEl()),this.#s.set(!this.#s()))})}#u;#D(e){return Object.defineProperty(e,"value",{configurable:!0,get(){return Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value").get.call(this)},set(t){Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value").set.call(this,t);let o=new CustomEvent("inputValueChanged",{bubbles:!0,cancelable:!0,detail:{value:t}});return this.dispatchEvent(o),t}}),e}#E(){this.optionsOpenController=new AbortController,setTimeout(()=>this.#h()),window.addEventListener("resize",()=>this.#h(),{signal:this.optionsOpenController?.signal}),window.addEventListener("scroll",()=>this.#h(),{signal:this.optionsOpenController?.signal})}#b(){this.optionsOpenController&&this.optionsOpenController.abort()}#h(){if(this.optionsEl()){let e=this.formFieldWrapperRef()?.nativeElement.getBoundingClientRect(),t=this.optionsEl().getBoundingClientRect(),i=e.left,o=e.bottom,s=i,h=o+this.#e,w=s+t.width>window.innerWidth,j=h+t.height>window.innerHeight;if(this.above()){let C=e.top-t.height-this.#e;C>=0&&(h=C)}else j&&(h=e.top-t.height-this.#e);if(this.right()){let C=e.right-t.width;C>=0&&(s=C)}else w&&(h=j?e.top+e.height-t.height:e.top,s=e.left-t.width-this.#e);this.optionsStyle.set({left:s+"px",top:h+"px"})}}ngOnDestroy(){this.clickController&&this.clickController.abort(),this.inputController&&this.inputController.abort(),this.optionsOpenController&&this.optionsOpenController.abort(),this.#u.disconnect()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-select"]],viewQuery:function(t,i){t&1&&(V(i.optionsRef,ce,5),V(i.formFieldWrapperRef,pe,5),V(i.inputWrapRef,ie,5)),t&2&&L(3)},inputs:{inputValue:[1,"inputValue"],selectMultiple:[1,"selectMultiple"],hideClearButton:[1,"hideClearButton"],displayValue:[1,"displayValue"],displayFn:[1,"displayFn"],above:[1,"above"],right:[1,"right"]},outputs:{inputValue:"inputValueChange"},standalone:!0,features:[m],ngContentSelectors:ue,decls:13,vars:3,consts:[["formFieldWrapper",""],["inputWrap",""],["optionsRef",""],[3,"click"],["ngProjectAs","input",5,["input"],1,"input"],[1,"display-value"],["spkSuffix","",1,"deselect-indicator"],["spkSuffix","",1,"search-indicator"],["spkSuffix","",1,"select-open-indicator",3,"open"],[1,"sparkle-popup-menu",3,"active","style"],[1,"small","simple",3,"ngClass"],[1,"small","simple",3,"click","ngClass"],["spkSuffix","",1,"deselect-indicator",3,"click"],[1,"default-indicator"],["spkSuffix","",1,"select-open-indicator"],[1,"sparkle-popup-menu"],[1,"sparkle-options-backdrop",3,"click"],[1,"sparkle-options"],[1,"sparkle-options-placerholder"]],template:function(t,i){if(t&1){let o=E();g(de),l(0,"div",null,0)(2,"spk-form-field",3),v("click",function(h){return d(o),u(i.open(h))}),r(3,0,["ngProjectAs","label",5,["label"]]),l(4,"div",4,1),I(6,me,2,1,"div",5)(7,ge,2,1,"div",5),r(8,1),a(),I(9,ve,4,0,"div",6)(10,Se,4,0,"div",7)(11,Ce,4,2,"div",8),a()(),I(12,_e,7,4,"div",9)}t&2&&(_(6),A(i.selectMultiple()?6:i._displayValue()&&i.isSearchInput()&&!i.isOpen()||i._displayValue()&&!i.isSearchInput()?7:-1),_(3),A((i.inputValue()&&!i.isOpen()&&i.inputValue().length>0||i.selectedOption())&&!i.hideClearButton()?9:i.isSearchInput()&&!i.selectedOption()?10:11),_(3),A(i.isOpen()?12:-1))},dependencies:[be,ee,Ee,Z],encapsulation:2,changeDetection:0})}}return n})(),lt=(()=>{class n{constructor(){this.openWidth=280,this.openWidthTreshold=this.openWidth*.9,this.disableDrag=S(!1),this.isOpen=D(!1),this.dragImageElement=F.required("dragImageElement"),this.dragIsEnding=c(!1),this.dragIsOnScreen=c(!0),this.isDragging=c(!1),this.dragPositionX=c(0),this.dragActualPositionX=k(()=>{let e=this.dragPositionX(),t=.32;return e>this.openWidthTreshold?this.openWidthTreshold+(e-this.openWidthTreshold)*t:e}),this.draggingStyle=k(()=>this.isDragging()?`translateX(${this.dragActualPositionX()}px)`:this.isOpen()?`translateX(${this.openWidth}px)`:"translateX(0px)"),this.draggingEffect=O(()=>{this.isDragging()&&document.body.classList.add("dragging")})}drop(e){e.stopPropagation(),this.#e(e.clientX)}#e(e){this.isDragging.set(!1),e<=0?this.isOpen.set(!1):e>this.openWidthTreshold?this.isOpen.set(!0):e<this.openWidthTreshold&&(!this.isOpen()&&e<this.openWidthTreshold*.6?this.isOpen.set(!0):this.isOpen.set(!1))}dragEnd(e){(e.clientX<0||!this.dragIsOnScreen())&&this.#e(0)}dragEnter(){this.dragIsOnScreen.set(!0)}dragLeave(){this.dragIsOnScreen.set(!1)}dragOver(e){e.preventDefault(),this.#t(e)}dragStart(e){e.stopPropagation(),this.isDragging.set(!0),this.#t(e)}#t(e){e.dataTransfer?.setDragImage(this.dragImageElement().nativeElement,0,0)}drag(e){e.stopPropagation(),setTimeout(()=>{this.isDragging()&&this.dragIsOnScreen()&&this.dragPositionX.set(e.clientX)}),this.#t(e)}touchStart(e){e.stopPropagation(),this.isDragging.set(!0)}touchMove(e){e.stopPropagation(),setTimeout(()=>{this.isDragging()&&this.dragIsOnScreen()&&this.dragPositionX.set(e.touches[0].clientX)})}touchEnd(e){e.stopPropagation(),this.#e(e.changedTouches[0].clientX)}touchCancel(e){e.stopPropagation(),this.isDragging.set(!1)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-sidenav"]],viewQuery:function(t,i){t&1&&V(i.dragImageElement,ke,5),t&2&&L()},hostVars:4,hostBindings:function(t,i){t&2&&H("open",i.isOpen())("is-dragging",i.isDragging())},inputs:{disableDrag:[1,"disableDrag"],isOpen:[1,"isOpen"]},outputs:{isOpen:"isOpenChange"},standalone:!0,features:[m],ngContentSelectors:xe,decls:11,vars:4,consts:[["dragImageElement",""],[1,"drag-image"],[1,"dropping-surface"],[1,"sidenav"],[1,"main-wrap"],["draggable","true",1,"dragable"],[1,"closed-topbar"],[1,"dropping-surface",3,"drop","dragover","dragenter","dragleave"],["draggable","true",1,"dragable",3,"dragstart","dragend","drag","touchstart","touchmove","touchend","touchcancel"]],template:function(t,i){t&1&&(g(ye),M(0,"div",1,0),I(2,we,1,0,"div",2),l(3,"div",3),r(4),a(),l(5,"div",4),I(6,De,1,0,"div",5),l(7,"div",6),r(8,1),a(),l(9,"main"),r(10,2),a()()),t&2&&(_(2),A(i.isDragging()?2:-1),_(3),W("transform",i.draggingStyle()),_(),A(i.disableDrag()?-1:6))},encapsulation:2,changeDetection:0})}}return n})();var at=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-stepper"]],standalone:!0,features:[m],ngContentSelectors:y,decls:1,vars:0,template:function(t,i){t&1&&(g(),r(0))},encapsulation:2,changeDetection:0})}}return n})();var ct=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=f({type:n,selectors:[["spk-toggle"]],standalone:!0,features:[m],ngContentSelectors:y,decls:3,vars:0,consts:[[1,"box"],[1,"knob"]],template:function(t,i){t&1&&(g(),l(0,"div",0),M(1,"div",1),a(),r(2))},encapsulation:2,changeDetection:0})}}return n})();export{ee as a,Ye as b,Je as c,Ke as d,Ze as e,et as f,Ee as g,be as h,tt as i,it as j,nt as k,ot as l,st as m,rt as n,lt as o,at as p,ct as q};
@@ -0,0 +1 @@
1
+ import{d as c}from"./chunk-S76TN27U.js";import{b as l,d as m,e as p}from"./chunk-N5US3SKW.js";import"./chunk-PY5HJ5U2.js";import{$ as a,Fb as n,Lb as s,lb as e,mb as t,nb as u}from"./chunk-ORDBF5MR.js";var i=class r{static \u0275fac=function(o){return new(o||r)};static \u0275cmp=a({type:r,selectors:[["app-about"]],standalone:!0,features:[s],decls:13,vars:0,consts:[[1,"nav"],["spk-button","","routerLink","/about/general","routerLinkActive","primary",1,"raised"],["spk-button","","routerLink","/about/changelog","routerLinkActive","primary",1,"raised"],["spk-button","","routerLink","/about/libraries","routerLinkActive","primary",1,"raised"],["spk-button","","routerLink","/about/system-info","routerLinkActive","primary",1,"raised"],["spk-button","","routerLink","/about/logs","routerLinkActive","primary",1,"raised"]],template:function(o,b){o&1&&(e(0,"div",0)(1,"button",1),n(2,"General"),t(),e(3,"button",2),n(4,"Changelog"),t(),e(5,"button",3),n(6,"Libraries"),t(),e(7,"button",4),n(8,"System info"),t(),e(9,"button",5),n(10,"Logs"),t()(),e(11,"section"),u(12,"router-outlet"),t())},dependencies:[c,l,m,p],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;gap:0;padding:2.5rem}.nav[_ngcontent-%COMP%]{display:flex;gap:.5rem}section[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:2rem 0}"],changeDetection:0})};export{i as default};
@@ -0,0 +1 @@
1
+ import{b}from"./chunk-ZD3JEKWI.js";import{a as u}from"./chunk-PH6AAOK4.js";import{$ as s,Fb as n,Gb as l,Lb as c,Qa as p,Qb as m,Rb as d,Z as a,lb as t,mb as i,pc as f}from"./chunk-ORDBF5MR.js";var r=class o{#e=a(u);licenses=b(this.#e.getApiV1Licenses());static \u0275fac=function(e){return new(e||o)};static \u0275cmp=s({type:o,selectors:[["app-libraries"]],standalone:!0,features:[c],decls:5,vars:3,template:function(e,C){e&1&&(t(0,"h3"),n(1,"Libraries"),i(),t(2,"pre"),n(3),m(4,"json"),i()),e&2&&(p(3),l(d(4,1,C.licenses())))},dependencies:[f],styles:["[_nghost-%COMP%]{display:block}h3[_ngcontent-%COMP%]{font:var(--title-30)}"],changeDetection:0})};export{r as default};
@@ -0,0 +1 @@
1
+ import{c as a,d as b}from"./chunk-4MMHXTNF.js";import"./chunk-AC6VDRLC.js";import"./chunk-57M4MADC.js";import"./chunk-ZD3JEKWI.js";import"./chunk-7X6SBNMU.js";import"./chunk-S76TN27U.js";import"./chunk-N5US3SKW.js";import"./chunk-PY5HJ5U2.js";import"./chunk-PH6AAOK4.js";import"./chunk-ORDBF5MR.js";export{a as createRestoreSelectFilesForm,b as default};
@@ -0,0 +1 @@
1
+ import{a as Ue,b as ge}from"./chunk-57M4MADC.js";import{b as Se}from"./chunk-ZD3JEKWI.js";import{a as we,b as H,c as he,d as Y,e as Z,f as J,g as ue,i as X,j as _e,k as Le,l as ee,m as te,n as ne,o as I,q as ie}from"./chunk-7X6SBNMU.js";import{a as Ce}from"./chunk-LVLU6MPQ.js";import{a as oe,d as fe,f as ft,h as ae,j as ze,m as Ct,n as re,q as De}from"./chunk-S76TN27U.js";import{a as K,c as M}from"./chunk-N5US3SKW.js";import{a as gt}from"./chunk-PH6AAOK4.js";import{$ as z,Cb as j,Db as q,Eb as xe,F as lt,Fb as l,Gb as G,Hb as A,I as ye,Jb as ct,Lb as Q,N as st,Nb as Be,Pb as $e,Qa as s,T as be,Tb as dt,Wa as S,Xa as U,Z as h,a as se,b as Me,bb as f,bc as W,c as rt,cb as $,db as d,fb as mt,hb as _,ib as w,ja as C,jb as D,ka as g,kb as T,lb as a,mb as o,nb as p,nc as ut,ob as k,pb as v,qb as Re,rb as b,sb as y,tb as m,wb as me,wc as _t,xb as O,yb as pt}from"./chunk-ORDBF5MR.js";var je=class t{fromString(n){if(!n)return null;let e=n.match(/(\d+)([smhDWMY])/);return e&&{value:parseInt(e[1]),unit:e[2]}}toString(n,e){return`${n}${e}`}static \u0275fac=function(e){return new(e||t)};static \u0275prov=be({token:t,factory:t.\u0275fac,providedIn:"root"})};var ve=new I,Pe={file:{customFields:{path:{type:"file-tree",name:"path",shortDescription:"File path",longDescription:"The path to store the backup",formElement:t=>ve.control(t??"")}}},ssh:{customFields:{server:{type:"String",name:"server",shortDescription:"Server",longDescription:"The server to connect to",formElement:t=>ve.control(t??"")},port:{type:"Integer",name:"port",shortDescription:"Port",longDescription:"The port to connect to",formElement:t=>ve.control(t??"")},path:{type:"Path",name:"path",shortDescription:"File path on the server",longDescription:"File path on the server",formElement:t=>ve.control(t??"")}},dynamicFields:["auth-username"]},s3:{customFields:{path:{type:"Path",name:"path",shortDescription:"File path on the server",longDescription:"File path on the server",formElement:t=>ve.control(t??"")},bucket:{type:"String",name:"bucket",shortDescription:"Bucket name",longDescription:"Bucket name",formElement:t=>ve.control(t??"")}},dynamicFields:["use-ssl","s3-server-name","auth-username","auth-password"]},gcs:{dynamicFields:["gcs-location","gcs-storage-class","authid"]},googledrive:{oauthField:"authid",customFields:{path:{type:"Path",name:"path",shortDescription:"File path on the server",longDescription:"File path on the server",formElement:t=>ve.control(t??"")}},dynamicFields:["authid"]}};function Te(t,n){let e={},i={};return n.searchParams.forEach((r,c)=>{Pe[t].dynamicFields?.includes(c)?i[c]=decodeURIComponent(r):e[c]=decodeURIComponent(r)}),{advanced:e,dynamic:i}}function Ie(t){let n=t.map(([e,i])=>`${e}=${i?encodeURIComponent(i.toString()):""}`).join("&");return n?"?"+n:""}var Ee={file:{to:t=>{let n=Ie([...Object.entries(t.advanced),...Object.entries(t.dynamic)]);return`${t.destinationType}://${t.custom.path}${n}`},from:(t,n,e)=>{let i=e.indexOf("file:///")===0,r=e.split(i?"///":"//")[1].substring(0,1)+n.hostname.substring(1);return se({destinationType:t,custom:{path:`${i?"/":""}${r}${n.pathname}`}},Te(t,n))}},ssh:{to:t=>{let n=Ie([...Object.entries(t.advanced),...Object.entries(t.dynamic)]);return`${t.destinationType}://${t.custom.server}${t.custom.port?":"+t.custom.port:""}${t.custom.path.startsWith("/")?t.custom.path:"/"+t.custom.path}${n}`},from:(t,n,e)=>se({destinationType:t,custom:{server:n.hostname,port:n.port,path:n.pathname}},Te(t,n))},s3:{to:t=>{let n=Ie([...Object.entries(t.advanced),...Object.entries(t.dynamic)]);return`${t.destinationType}://${t.custom.bucket}${t.custom.path}${n}`},from:(t,n,e)=>se({destinationType:t,custom:{path:n.pathname,bucket:n.hostname}},Te(t,n))},gcs:{to:t=>{let n=t.dynamic["gcs-location"]??"";delete t.dynamic["gcs-location"];let e=Ie([...Object.entries(t.advanced),...Object.entries(t.dynamic)]);return`${t.destinationType}://${n}${e}`},from:(t,n,e)=>{let{advanced:i,dynamic:r}=Te(t,n);return{destinationType:t,advanced:i,dynamic:Me(se({},r),{"gcs-location":n.hostname+n.pathname})}}},googledrive:{to:t=>{let n=t.custom.path,e=Ie([...Object.entries(t.advanced),...Object.entries(t.dynamic)]);return`${t.destinationType}://${n}${e}`},from:(t,n,e)=>{let i=e.replace("googledrive://","");return se({destinationType:t,custom:{path:i}},Te(t,n))}},fallbackMapper:{to:t=>"",from:(t,n,e)=>se({destinationType:t},Te(t,n))}};function Oe(t){let n=t.destinationType;return!n||!Ee.hasOwnProperty(n)?Ee.fallbackMapper.to(t)??"":Ee[n].to(t)??""}function yt(t){let n=URL.canParse(t),e=t.split("://")[0],i="http://"+t.split("://")[1],r=new URL(i);if(!Ee.hasOwnProperty(e))return Ee.fallbackMapper.from(e,r);if(!n)throw new Error("Invalid target path");return Ee[e].from(e,r,t)}var Dt=/[a-zA-Z0-9_\-\+\.]/,qe=class t{generate(n,e=Dt){let i=this;return Array.apply(null,{length:n}).map(()=>{let r;for(;;)if(r=String.fromCharCode(i.#e()),e.test(r))return r},this).join("")}#e(){if(window.crypto&&window.crypto.getRandomValues){let n=new Uint8Array(1);return window.crypto.getRandomValues(n),n[0]}else if(window.msCrypto&&window.msCrypto.getRandomValues){let n=new Uint8Array(1);return window.msCrypto.getRandomValues(n),n[0]}else return Math.floor(Math.random()*256)}static \u0275fac=function(e){return new(e||t)};static \u0275prov=be({token:t,factory:t.\u0275fac,providedIn:"root"})};function Ye(t,n,e="conditional"){return i=>{if(!i.parent)return null;let r=null;if(t(i.parent)&&(r=(Array.isArray(n)?n:[n]).find(F=>F(i)!==null)??null),e&&r){let c={};c[e]=r,r=c}return r}}function xt(){return t=>(t.parent&&Object.values(t.parent.controls).forEach(n=>{n!==t&&n.updateValueAndValidity()}),null)}var Tt=["formRef"];function Et(t,n){if(t&1&&(a(0,"option",14),l(1),o()),t&2){let e=n.$implicit;d("value",e.Key),s(),G(e.DisplayName)}}function Ot(t,n){t&1&&(a(0,"spk-icon"),l(1,"eye-slash"),o(),l(2," hide "))}function Nt(t,n){t&1&&(a(0,"spk-icon"),l(1,"eye"),o(),l(2," show "))}function Vt(t,n){t&1&&(a(0,"spk-icon",23),l(1,"check"),o())}function Pt(t,n){t&1&&(a(0,"spk-icon"),l(1,"copy"),o())}function It(t,n){if(t&1){let e=b();a(0,"button",22),y("click",function(){C(e);let r=m(3);return g(r.copyPassword())}),f(1,Vt,2,0,"spk-icon",23)(2,Pt,2,0,"spk-icon"),l(3),o()}if(t&2){let e=m(3);s(),_(e.copiedPassword()?1:2),s(2),A(" ",e.copiedPassword()?"Copied":"Copy"," password ")}}function Gt(t,n){if(t&1){let e=b();a(0,"div",15)(1,"spk-form-field")(2,"label",16),l(3,"Create a password"),o(),p(4,"input",17),o(),a(5,"spk-form-field"),p(6,"input",18),o(),a(7,"div",19)(8,"button",20),y("click",function(){C(e);let r=m(2);return g(r.showPassword.set(!r.showPassword()))}),f(9,Ot,3,0)(10,Nt,3,0),o(),a(11,"button",20),y("click",function(){C(e);let r=m(2);return g(r.generatePassword())}),a(12,"spk-icon"),l(13,"password"),o(),l(14," Generate password "),o(),f(15,It,4,2,"button",21),o()()}if(t&2){let e=m(2);s(4),d("type",e.showPassword()?"text":"password"),s(2),d("type",e.showPassword()?"text":"password"),s(3),_(e.showPassword()?9:10),s(6),_(e.showCopyPassword()?15:-1)}}function At(t,n){if(t&1&&(a(0,"spk-select",10)(1,"label",11),l(2,"Encryption"),o(),p(3,"input",12),k(4,13),D(5,Et,2,2,"option",14,w),v(),o(),f(7,Gt,16,4,"div",15)),t&2){let e,i=m();d("displayValue",i.displayFn((e=i.generalForm.value.encryption)!==null&&e!==void 0?e:"")),s(5),T(i.encryptionOptions()),s(2),_(i.encryptionFieldSignal()!=="none"?7:-1)}}var Ne=new I,ht=(t={name:"",description:"",encryption:"none",password:"",repeatPassword:""})=>Ne.group({name:Ne.control(t.name,[he.required]),description:Ne.control(t.description),encryption:Ne.control(t.encryption,[he.required,xt()]),password:Ne.control(t.password,[Ye(n=>n?.value.encryption!=="none",[he.required])]),repeatPassword:Ne.control(t.repeatPassword,[Ye(n=>n?.value.encryption!=="none",[he.required])])}),Je={Key:"none",DisplayName:"None"},Ze=class t{#e=h(M);#t=h(K);#n=h(qe);#i=h(R);#o=h(Ce);formRef=U.required("formRef");generalForm=this.#i.generalForm;encryptionFieldSignal=this.#i.encryptionFieldSignal;encryptionOptions=this.#i.encryptionOptions;isNew=this.#i.isNew;showPassword=S(!1);copiedPassword=S(!1);showCopyPassword=S(!1);ngOnInit(){this.formRef().nativeElement.focus()}exit(){this.#i.exit()}async copyPassword(){let n=this.generalForm.controls.password.value;await this.#a(n??""),this.copiedPassword.set(!0)}async#a(n){try{await navigator.clipboard.writeText(n)}catch{try{let i=document.createElement("textarea");i.value=n,document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i)}catch(i){console.error("Failed to copy text: ",i)}}}displayFn(n){let e=this.#o.systemInfo()?.EncryptionModules??[],i=[Je,...e].find(r=>r.Key===n);return i?`${i.DisplayName}`:""}generatePassword(){this.copiedPassword.set(!1);let n=this.#n.generate(16);this.generalForm.controls.password.setValue(n),this.generalForm.controls.repeatPassword.setValue(n),this.showCopyPassword.set(!0)}next(){this.#e.navigate(["destination"],{relativeTo:this.#t.parent})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=z({type:t,selectors:[["app-general"]],viewQuery:function(e,i){e&1&&j(i.formRef,Tt,5),e&2&&q()},standalone:!0,features:[Q],decls:23,vars:4,consts:[["formRef",""],["autocomplete","off",3,"submit","formGroup"],[1,"title-30"],["for","backupName"],["type","text","tabindex","1","placeholder","Your backup name","formControlName","name"],["for","backupDescription"],["id","backupDescription","tabindex","2","placeholder","Your backup description","formControlName","description"],[1,"form-actions"],["spk-button","",3,"click"],["spk-button","","type","submit",1,"raised","primary",3,"disabled"],[3,"displayValue"],["for","encryption"],["type","text","id","encryption","tabindex","3","placeholder","Encryption","formControlName","encryption"],["options",""],[3,"value"],[1,"passwords"],["for","password"],["id","password","tabindex","4","placeholder","Password","formControlName","password",3,"type"],["id","repeatPassword","tabindex","5","placeholder","Repeat password","formControlName","repeatPassword",3,"type"],[1,"password-actions"],["spk-button","","type","button",1,"small",3,"click"],["spk-button","","type","button",1,"small","copy"],["spk-button","","type","button",1,"small","copy",3,"click"],[1,"spk-success"]],template:function(e,i){if(e&1){let r=b();a(0,"form",1,0),y("submit",function(){return C(r),g(i.next())}),a(2,"h3",2),l(3,"General backup settings"),o(),a(4,"spk-form-field")(5,"label",3),l(6,"Backup name"),o(),p(7,"input",4),o(),a(8,"spk-form-field")(9,"label",5),l(10,"Backup description"),o(),p(11,"textarea",6),o(),f(12,At,8,2),a(13,"div",7)(14,"button",8),y("click",function(){return C(r),g(i.exit())}),a(15,"spk-icon"),l(16,"arrow-left"),o(),l(17," Exit "),o(),a(18,"div")(19,"button",9)(20,"spk-icon"),l(21,"arrow-right"),o(),l(22," Continue "),o()()()()}e&2&&(d("formGroup",i.generalForm),s(12),_(i.isNew()?12:-1),s(6),$("spk-tooltip-primary",i.generalForm.valid&&i.encryptionFieldSignal()==="none"||i.copiedPassword()?void 0:"Remember to copy the password"),s(),d("disabled",i.generalForm.invalid||i.encryptionFieldSignal()!=="none"&&i.showCopyPassword()&&!i.copiedPassword()))},dependencies:[ie,J,te,ne,H,Y,Z,X,ee,ae,re,fe,oe],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.passwords[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.password-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.copy[_ngcontent-%COMP%] spk-icon.spk-success[_ngcontent-%COMP%]{color:var(--success-500)}"],changeDetection:0})};var Mt=["formRef"];function Rt(t,n){if(t&1&&(a(0,"option",9),l(1),o()),t&2){let e=n.$implicit;d("value",e),s(),G(e)}}function Bt(t,n){if(t&1&&(a(0,"option",9),l(1),o()),t&2){let e=n.$implicit;d("value",e),s(),G(e)}}function $t(t,n){if(t&1){let e=b();a(0,"button",22),y("click",function(){let r=C(e).$implicit,c=m();return g(c.addNewOption(r))}),l(1),o()}if(t&2){let e=n.$implicit;s(),G(e.Name)}}function Lt(t,n){t&1&&(a(0,"label",23),l(1,"Name"),o())}function zt(t,n){t&1&&(a(0,"label",25),l(1,"Value"),o())}function Ut(t,n){if(t&1){let e=b();a(0,"div",18)(1,"spk-form-field"),f(2,Lt,2,0,"label",23),p(3,"input",24),o(),a(4,"spk-form-field"),f(5,zt,2,0,"label",25),p(6,"input",26),o(),a(7,"button",27),y("click",function(){let r=C(e).$index,c=m();return g(c.optionsForm.controls.advancedOptions.removeAt(r))}),a(8,"spk-icon"),l(9,"x-circle"),o()()()}if(t&2){let e=n.$implicit,i=n.$index;d("formGroup",e),s(2),_(i===0?2:-1),s(3),_(i===0?5:-1)}}var pe=new I,jt=["Bytes","KB","MB","GB","TB","PB"],qt=["Local folder","Local drive","Remote drive","Cloud drive"],St=(t={remoteVolumeSize:0,size:"GB",backupRetention:"Local folder",advancedOptions:[]})=>pe.group({remoteVolumeSize:pe.group({size:pe.control(t.remoteVolumeSize),unit:pe.control(t.size)}),backupRetention:pe.control(t.backupRetention),advancedOptions:pe.array([])}),et=(t,n)=>pe.group({name:pe.control(t),value:pe.control(n)}),Xe=class t{#e=h(Ce);#t=h(R);#n=h(M);#i=h(K);formRef=U.required("formRef");optionsForm=this.#t.optionsForm;sizeOptions=S(jt);rentationOptions=S(qt);selectionAdvancedOptions=Se(this.optionsForm.controls.advancedOptions.valueChanges.pipe(st([])));advancedOptions=S(this.#e.systemInfo()?.Options??[]);nonSelectedAdvancedOptions=W(()=>this.advancedOptions().filter(n=>this.selectionAdvancedOptions()?.findIndex(e=>e.name===n.Name)===-1));addNewOption(n){this.optionsForm.controls.advancedOptions.push(et(n.Name,n.DefaultValue))}displayFn(){let n=this.advancedOptions();return e=>{let i=n.find(r=>r.Name===e);return i?`${i.Name}`:""}}goBack(){this.#n.navigate(["schedule"],{relativeTo:this.#i.parent})}submit(){this.#t.submit()}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=z({type:t,selectors:[["app-options"]],viewQuery:function(e,i){e&1&&j(i.formRef,Mt,5),e&2&&q()},standalone:!0,features:[Q],decls:49,vars:2,consts:[["formRef",""],[3,"submit","formGroup"],[1,"title-30"],[1,"remote-volume-wrap"],["formGroupName","remoteVolumeSize",1,"row-inputs"],["for","size"],["type","number","id","size","formControlName","size"],["type","text","placeholder","Select an option...","formControlName","unit"],["options",""],[3,"value"],["href","#",1,"spk-primary"],["type","text","placeholder","Local folder or drive","formControlName","backupRetention"],[3,"disallowToggle"],["title",""],["spk-button","","type","button",1,"outlined","small"],["menu",""],["spk-menu-item","","type","button"],["formArrayName","advancedOptions"],[1,"advanced-option",3,"formGroup"],[1,"form-actions"],["spk-button","","type","button",3,"click"],["spk-button","","type","submit",1,"raised","primary"],["spk-menu-item","","type","button",3,"click"],["for","name"],["type","text","id","name","formControlName","name"],["for","value"],["type","text","id","value","formControlName","value"],["spk-button","","type","button",1,"icon",3,"click"]],template:function(e,i){if(e&1){let r=b();a(0,"form",1,0),y("submit",function(){return C(r),g(i.submit())}),a(2,"h3",2),l(3,"Options"),o(),a(4,"div",3)(5,"div",4)(6,"spk-form-field")(7,"label",5),l(8,"Remote volume size"),o(),p(9,"input",6),o(),a(10,"spk-select"),p(11,"input",7),k(12,8),D(13,Rt,2,2,"option",9,w),v(),o()(),a(15,"p"),l(16," The backups will be split up into multiple files called volumes. Here you can set the maximum size of the individual volume files. "),a(17,"a",10),l(18,"Read more"),o()()(),a(19,"spk-select")(20,"label",5),l(21,"Backup retention"),o(),p(22,"input",11),k(23,8),D(24,Bt,2,2,"option",9,w),v(),o(),a(26,"app-toggle-card",12),k(27,13),l(28," Advanced options "),a(29,"spk-menu")(30,"button",14),l(31," Add advanced option "),a(32,"spk-icon"),l(33,"plus"),o()(),k(34,15),D(35,$t,2,1,"button",16,w),v(),o(),v(),k(37,17),D(38,Ut,10,3,"div",18,w),v(),o(),a(40,"div",19)(41,"button",20),y("click",function(){return C(r),g(i.goBack())}),a(42,"spk-icon"),l(43,"arrow-left"),o(),l(44," Go back "),o(),a(45,"button",21)(46,"spk-icon"),l(47,"arrow-right"),o(),l(48," Submit "),o()()()}e&2&&(d("formGroup",i.optionsForm),s(13),T(i.sizeOptions()),s(11),T(i.rentationOptions()),s(2),d("disallowToggle",!0),s(9),T(i.nonSelectedAdvancedOptions()),s(3),T(i.optionsForm.controls.advancedOptions.controls))},dependencies:[ie,J,te,ne,H,ue,Y,Z,X,ee,_e,Le,ze,re,fe,oe,ae,ge],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.remote-volume-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.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 40px;align-items:flex-end}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};var Qt=["formRef"];function Wt(t,n){if(t&1&&(a(0,"option",24),l(1),o()),t&2){let e=n.$implicit;d("value",e.key),s(),G(e.label)}}function Kt(t,n){if(t&1){let e=b();a(0,"div",11)(1,"spk-form-field")(2,"label",12),l(3,"Next time"),o(),a(4,"input",13,1),y("focus",function(){C(e);let r=xe(5);return g(r.showPicker())}),o(),a(6,"spk-icon",14),l(7,"clock"),o()(),a(8,"spk-form-field"),p(9,"label",15),a(10,"input",16,2),y("focus",function(){C(e);let r=xe(11);return g(r.showPicker())}),o(),a(12,"spk-icon",14),l(13,"calendar"),o()()(),k(14,17),a(15,"div",18)(16,"spk-form-field")(17,"label",19),l(18,"Run again every"),o(),p(19,"input",20),o(),a(20,"spk-select",21),p(21,"input",22),k(22,23),D(23,Wt,2,2,"option",24,w),v(),o()(),a(25,"app-toggle-card",25),k(26,26),l(27,"Allowed days"),v(),a(28,"div",27)(29,"spk-toggle",6),l(30," Monday "),p(31,"input",28),o(),a(32,"spk-toggle",6),l(33," Tuesday "),p(34,"input",29),o(),a(35,"spk-toggle",6),l(36," Wednesday "),p(37,"input",30),o(),a(38,"spk-toggle",6),l(39," Thursday "),p(40,"input",31),o(),a(41,"spk-toggle",6),l(42," Friday "),p(43,"input",32),o(),a(44,"spk-toggle",6),l(45," Saturday "),p(46,"input",33),o(),a(47,"spk-toggle",6),l(48," Sunday "),p(49,"input",34),o()()(),v()}if(t&2){let e=m();s(20),d("displayFn",e.displayFn),s(3),T(e.unitOptions),s(2),d("disallowToggle",!0)}}var V=new I,kt=[{key:"s",label:"Seconds"},{key:"m",label:"Minutes"},{key:"h",label:"Hours"},{key:"D",label:"Days"},{key:"W",label:"Weeks"},{key:"M",label:"Months"},{key:"Y",label:"Years"}],vt=(t={autoRun:!1,nextTime:{time:"13:00",date:new Date().toISOString().split("T")[0]},runAgain:{repeatValue:1,repeatUnit:"D",allowedDays:{mon:!1,tue:!1,wed:!1,thu:!1,fri:!1,sat:!1,sun:!1}}})=>V.group({autoRun:V.control(t.autoRun),nextTime:V.group({time:V.control(t.nextTime.time),date:V.control(t.nextTime.date)}),runAgain:V.group({repeatValue:V.control(t.runAgain.repeatValue),repeatUnit:V.control(t.runAgain.repeatUnit),allowedDays:V.group({mon:V.control(t.runAgain.allowedDays.mon),tue:V.control(t.runAgain.allowedDays.tue),wed:V.control(t.runAgain.allowedDays.wed),thu:V.control(t.runAgain.allowedDays.thu),fri:V.control(t.runAgain.allowedDays.fri),sat:V.control(t.runAgain.allowedDays.sat),sun:V.control(t.runAgain.allowedDays.sun)})})}),tt=class t{#e=h(R);#t=h(M);#n=h(K);formRef=U.required("formRef");scheduleForm=this.#e.scheduleForm;scheduleFormSignal=this.#e.scheduleFormSignal;unitOptions=kt;displayFn(n){let e=kt.find(i=>i.key===n);return e?`${e.label}`:""}goBack(){this.#t.navigate(["source-data"],{relativeTo:this.#n.parent})}next(){this.#t.navigate(["options"],{relativeTo:this.#n.parent})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=z({type:t,selectors:[["app-schedule"]],viewQuery:function(e,i){e&1&&j(i.formRef,Qt,5),e&2&&q()},standalone:!0,features:[Q],decls:20,vars:2,consts:[["formRef",""],["timeRef",""],["dateRef",""],[3,"submit","formGroup"],[1,"title-30"],[1,"toggle-wrap"],[1,"raised","primary"],["type","checkbox","formControlName","autoRun"],[1,"form-actions"],["spk-button","","type","button",3,"click"],["spk-button","","type","submit",1,"raised","primary"],["formGroupName","nextTime",1,"row-inputs"],["for","time"],["type","time","id","time","formControlName","time",3,"focus"],["spkSuffix",""],["for","date"],["type","date","id","date","formControlName","date",3,"focus"],["formGroupName","runAgain"],[1,"row-inputs"],["for","repeatValue"],["type","number","id","repeatValue","formControlName","repeatValue"],[3,"displayFn"],["type","text","id","repeatUnit","formControlName","repeatUnit"],["options",""],[3,"value"],["formGroupName","allowedDays",3,"disallowToggle"],["title",""],[1,"days-wrap"],["type","checkbox","formControlName","mon"],["type","checkbox","formControlName","tue"],["type","checkbox","formControlName","wed"],["type","checkbox","formControlName","thu"],["type","checkbox","formControlName","fri"],["type","checkbox","formControlName","sat"],["type","checkbox","formControlName","sun"]],template:function(e,i){if(e&1){let r=b();a(0,"form",3,0),y("submit",function(){return C(r),g(i.next())}),a(2,"h3",4),l(3,"Schedule"),o(),a(4,"div",5)(5,"spk-toggle",6),l(6," Automatically run backups "),p(7,"input",7),o(),a(8,"p"),l(9,"If a date was missed, the job will run as soon as possible."),o()(),f(10,Kt,50,2),a(11,"div",8)(12,"button",9),y("click",function(){return C(r),g(i.goBack())}),a(13,"spk-icon"),l(14,"arrow-left"),o(),l(15," Go back "),o(),a(16,"button",10)(17,"spk-icon"),l(18,"arrow-right"),o(),l(19," Continue "),o()()()}if(e&2){let r;d("formGroup",i.scheduleForm),s(10),_((r=i.scheduleFormSignal())!=null&&r.autoRun?-1:10)}},dependencies:[ie,J,te,ne,H,ue,we,Y,Z,X,ee,_e,ae,re,De,oe,fe,ge],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.toggle-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.row-inputs[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:.5rem}.row-inputs[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1 0}.days-wrap[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};var Ht=["formRef"];function Yt(t,n){if(t&1&&(a(0,"option",21),l(1),o()),t&2){let e=n.$implicit;d("value",e),s(),G(e)}}function Zt(t,n){if(t&1&&(a(0,"div",14)(1,"spk-form-field"),p(2,"input",18),o(),a(3,"spk-select"),p(4,"input",19),k(5,20),D(6,Yt,2,2,"option",21,w),v(),o()()),t&2){let e=m(2);s(6),T(e.sizeOptions())}}function Jt(t,n){if(t&1){let e=b();a(0,"form",2,0),y("submit",function(){C(e);let r=m();return g(r.next())}),a(2,"h3",3),l(3,"Source Data"),o(),a(4,"app-file-tree",4)(5,"label",5),l(6,"Folder path"),o(),p(7,"input",6),o(),a(8,"app-toggle-card",7),k(9,8),l(10,"Exclude"),v(),a(11,"spk-toggle",9),l(12," Hidden files "),p(13,"input",10),o(),a(14,"spk-toggle",9),l(15," System files "),p(16,"input",11),o(),a(17,"spk-toggle",9),l(18," Temporary files "),p(19,"input",12),o(),a(20,"spk-toggle",13),y("click",function(){C(e);let r=m();return g(r.toggleFilesLargerThan())}),l(21," Files larger than "),o(),f(22,Zt,8,0,"div",14),o(),a(23,"div",15)(24,"button",16),y("click",function(){C(e);let r=m();return g(r.goBack())}),a(25,"spk-icon"),l(26,"arrow-left"),o(),l(27," Go back "),o(),a(28,"button",17)(29,"spk-icon"),l(30,"arrow-right"),o(),l(31," Continue "),o()()()}if(t&2){let e=m();d("formGroup",e.sourceDataForm),s(4),d("multiSelect",!0)("startingPath",e.getPath()),s(4),d("isActive",!0),s(12),mt("active",e.filesLargerThan()),s(2),_(e.filesLargerThan()?22:-1)}}var ce=new I,Xt=["Bytes","KB","MB","GB","TB","PB"],en=["Contains","Does not contain","Is greater than","Is less than"];var Ft=(t={path:"",excludes:{hidden:!1,system:!1,temporary:!1,filesLargerThan:null}})=>ce.group({path:ce.control(t.path),excludes:ce.group({hidden:ce.control(t.excludes.hidden),system:ce.control(t.excludes.system),temporary:ce.control(t.excludes.temporary),filesLargerThan:ce.group({size:ce.control(null),unit:ce.control(null)})})}),nt=class t{#e=h(R);#t=h(M);#n=h(K);formRef=U.required("formRef");sourceDataForm=this.#e.sourceDataForm;sourceDataFormSignal=this.#e.sourceDataFormSignal;destinationIsLoaded=this.#e.destinationIsLoaded;filesLargerThan=W(()=>this.sourceDataFormSignal()?.excludes?.filesLargerThan?.size!==null);sizeOptions=S(Xt);expressionOptions=S(en);getPath(){return this.sourceDataForm.value.path??null}toggleFilesLargerThan(){this.sourceDataForm.controls.excludes.value.filesLargerThan?.size===null?this.sourceDataForm.controls.excludes.controls.filesLargerThan.setValue({size:50,unit:"MB"}):this.sourceDataForm.controls.excludes.controls.filesLargerThan.setValue({size:null,unit:null})}goBack(){this.#t.navigate(["destination"],{relativeTo:this.#n.parent})}next(){this.#t.navigate(["schedule"],{relativeTo:this.#n.parent})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=z({type:t,selectors:[["app-source-data"]],viewQuery:function(e,i){e&1&&j(i.formRef,Ht,5),e&2&&q()},standalone:!0,features:[Q],decls:1,vars:1,consts:[["formRef",""],[3,"formGroup"],[3,"submit","formGroup"],[1,"title-30"],[3,"multiSelect","startingPath"],["for","path"],["type","text","id","path","tabindex","4","placeholder","Path","formControlName","path"],["formGroupName","excludes",3,"isActive"],["title",""],[1,"raised","primary"],["type","checkbox","placeholder","Hidden files","formControlName","hidden"],["type","checkbox","placeholder","System files","formControlName","system"],["type","checkbox","placeholder","Temporary files","formControlName","temporary"],[1,"raised","primary",3,"click"],["formGroupName","filesLargerThan",1,"row-inputs"],[1,"form-actions"],["spk-button","","type","button",3,"click"],["spk-button","","type","submit",1,"raised","primary"],["type","number","formControlName","size"],["type","text","formControlName","unit","placeholder","Select an option..."],["options",""],[3,"value"]],template:function(e,i){e&1&&f(0,Jt,32,7,"form",1),e&2&&_(i.destinationIsLoaded()?0:-1)},dependencies:[ie,J,te,ne,H,ue,we,Y,Z,X,ee,_e,ae,oe,fe,re,De,Ue,ge],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.row-inputs[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr min-content;gap:.5rem}.filter-inputs[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-end}.filter-inputs[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1 0}.filter-inputs[_ngcontent-%COMP%] .filter-removal[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:center;justify-content:center;height:2.5rem;flex:0 0}"],changeDetection:0})};var L=new I,R=class t{#e=h(M);#t=h(Ce);#n=h(gt);#i=h(je);destinationOptions=this.#t.backendModules;backupId=S(null);isSubmitting=S(!1);loadingBackup=S(!1);loadingDefaults=S(!0);destinationIsLoaded=S(!1);isNew=W(()=>this.backupId()==="new");backupDefaults=S(null);generalForm=ht();sourceDataForm=Ft();scheduleForm=vt();destinationForm=bt();optionsForm=St();selectedAdvancedFormPair=S([]);notSelectedAdvancedFormPair=S([]);destinationFormPair=S({oauthField:null,custom:[],dynamic:[],advanced:[]});sourceDataFormSignal=Se(this.sourceDataForm.valueChanges);destinationFormSignal=Se(this.destinationForm.valueChanges);encryptionFieldSignal=Se(this.generalForm.controls.encryption.valueChanges);scheduleFormSignal=Se(this.scheduleForm.valueChanges);encryptionOptions=W(()=>{let n=this.#t.systemInfo()?.EncryptionModules??[];return[Je,...n]});init(n="new"){this.backupId.set(n),n!=="new"?this.getBackup(n):this.getDefaults()}submit(){this.isSubmitting.set(!0);let n=this.#m(),e=this.backupId();e==="new"||!e?this.#n.postApiV1Backups({requestBody:n}).pipe(ye(()=>this.isSubmitting.set(!1))).subscribe({next:i=>{console.log("submitted res",i),this.exit()},error:i=>{console.error("submitted error",i)}}):this.#n.putApiV1BackupById({id:e,requestBody:n}).pipe(ye(()=>this.isSubmitting.set(!1))).subscribe({next:i=>{console.log("submitted res",i),this.exit()},error:i=>{console.error("submitted error",i)}})}exit(){this.#d(),this.#e.navigate(["/"])}getDefaults(){this.loadingDefaults.set(!0),this.#n.getApiV1Backupdefaults().pipe(lt(1),ye(()=>this.loadingDefaults.set(!1))).subscribe({next:n=>{this.#r(n.Schedule),this.#s(n.Backup),this.backupDefaults.set(n),this.destinationIsLoaded.set(!0)}})}getBackup(n){this.loadingBackup.set(!0),this.#n.getApiV1BackupById({id:n}).pipe(ye(()=>this.loadingBackup.set(!1))).subscribe({next:e=>{this.#r(e.Schedule??null),e.Backup&&(this.#l(e.Backup),this.#a(e.Backup),this.#o(e.Backup),this.#s(e.Backup)),this.destinationIsLoaded.set(!0)}})}#o(n){let e=n.Sources??"",i=n.Filters?.map(N=>`${N.Include?"":"-"}${N.Expression}`)??[],r=n.Settings?.find(N=>N.Name==="--exclude-files-attributes")?.Value??"",c=n.Settings?.find(N=>N.Name==="--skip-files-larger-than")??null,F=c?.Value.replace(/[0-9]/g,"")??null,B=c?.Value.replace(/[^0-9]/g,"")??null,le={path:[...e,...i].join("\0"),excludes:{hiddenFiles:r.includes("hidden"),systemFiles:r.includes("system"),tempFiles:r.includes("temporary"),filesLargerThan:F&&B?{size:parseInt(B),unit:F.toUpperCase()}:null}};this.sourceDataForm.patchValue(le)}#a(n){let e=n.TargetURL?yt(n.TargetURL):null;e&&this.addDestinationFormGroup(e.destinationType,{custom:e.custom,dynamic:e.dynamic,advanced:e.advanced})}#l(n){let e=n.Settings?.find(r=>r.Name==="encryption-module"),i=e?.Value&&e.Value.length?e.Value:"none";this.generalForm.patchValue({name:n.Name??"",description:n.Description??"",encryption:i})}#r(n){if(!n){this.scheduleForm.patchValue({autoRun:!0});return}let e=this.#i.fromString(n.Repeat)??null,r={nextTime:this.#c(n.Time),runAgain:{repeatValue:e?.value??1,repeatUnit:e?.unit??"D",allowedDays:{mon:n.AllowedDays?.includes("mon")??!1,tue:n.AllowedDays?.includes("tue")??!1,wed:n.AllowedDays?.includes("wed")??!1,thu:n.AllowedDays?.includes("thu")??!1,fri:n.AllowedDays?.includes("fri")??!1,sat:n.AllowedDays?.includes("sat")??!1,sun:n.AllowedDays?.includes("sun")??!1}}};this.scheduleForm.patchValue(r)}#s(n){let e=["--no-encryption","--exclude-files-attributes","--skip-files-larger-than"];n.Settings?.forEach(i=>{if(i.Name==="encryption-module")return this.generalForm.controls.encryption.setValue(i.Value??"None");i.Name&&e.includes(i.Name)||i.Name&&i.Value&&this.optionsForm.controls.advancedOptions.push(et(i.Name,i.Value))})}mapPub(){this.#m()}#m(){let n=this.generalForm.value,e=this.optionsForm.value,i=this.scheduleForm.value,r=this.sourceDataForm.value,F=this.destinationForm.value.destinations?.length?this.#p(this.destinationForm.controls.destinations):[],B=null;i.runAgain?.repeatUnit&&i.runAgain?.repeatValue&&(B=this.#i.toString(i.runAgain.repeatValue,i.runAgain.repeatUnit));let le=i.runAgain?.allowedDays?Object.entries(i.runAgain?.allowedDays).filter(([x,E])=>E).map(([x,E])=>x):[],N=r.path?.split("\0")??[],Ge=e.advancedOptions?.map(x=>({Name:x.name??null,Value:x.value&&x.value.length?x.value.toString():null}))??[],Fe=[n.encryption==="none"?{Name:"--no-encryption",Value:"True"}:{Name:"encryption-module",Value:n.encryption??null},...Ge.filter(x=>x.Name&&x.Value)],P=Object.entries(r.excludes??{}).filter(([x,E])=>E&&x!=="filesLargerThan").map(([x])=>x),u=r.excludes?.filesLargerThan;return P.length&&Fe.push({Name:"--exclude-files-attributes",Value:P.join(",")}),u&&u.size!==null&&u.unit!==null&&Fe.push({Name:"--skip-files-larger-than",Value:`${u.size}${u.unit}`}),{Backup:{Name:n.name,Description:n.description,TargetURL:F[0]??null,Sources:N.filter(x=>!x.startsWith("-")),Settings:Fe,Filters:N.filter(x=>x.startsWith("-")).map((x,E)=>({Order:E,Include:!1,Expression:x.slice(1)}))},Schedule:i.autoRun?null:{Repeat:B,Time:i.nextTime?.date?new Date(`${i.nextTime.date}T${i.nextTime?.time||"00:00:00"}`).toISOString():null,AllowedDays:le}}}#p(n){return n.controls.map(e=>{if(!e.controls.advanced)return Oe(e.value);let i=Object.keys(e.controls.advanced.controls).filter(r=>e.controls.advanced.controls[r].dirty);return Oe(Me(se({},e.value),{advanced:i.reduce((r,c)=>(r[c]=e.controls.advanced.controls[c].value,r),{})}))})}#c(n){if(!n||n?.indexOf("T")===-1)return{time:n??"13:00"};let e=new Date(n),i={time:`${(""+e.getHours()).padStart(2,"0")}:${(""+e.getMinutes()).padStart(2,"0")}`};return n.indexOf("T")!==-1&&(i.date=e.toISOString().split("T")[0]),i}addDestinationFormGroup(n,e){let i=this.destinationOptions().find(P=>P.Key===n);if(!i||!i.Options)return;let r=Pe.hasOwnProperty(n)&&Pe[n],c=r&&r.customFields?r.customFields:{},F=r&&r.dynamicFields?r.dynamicFields:[],B=r&&r.advancedFields?r.advancedFields:[],le=r&&r.oauthField?r.oauthField:null;this.destinationFormPair.set({oauthField:le,custom:[],dynamic:[],advanced:[]}),this.selectedAdvancedFormPair.set([]);let N=L.group({}),Ge=L.group({}),He=L.group({});if(c)for(n in c){let Fe=c[n],{formElement:P}=Fe,u=rt(Fe,["formElement"]);N.addControl(n,P(e?.custom[n])),this.destinationFormPair.update(x=>(x.custom.push(u),x))}for(let P=0;P<i.Options.length;P++){let u=i.Options[P];if(u.Deprecated)continue;let x=F.includes(u.Name),E=x?Ge:He;this.destinationFormPair.update(Ve=>(Ve[x?"dynamic":"advanced"].push({name:u.Name,type:u.Type,shortDescription:u.ShortDescription??void 0,longDescription:u.LongDescription??void 0,options:u.ValidValues}),Ve));let de=(x?e?.dynamic[u.Name]:e?.advanced[u.Name])??u.DefaultValue;if(u.Type==="String"||u.Type==="Password"||u.Type==="Enumeration"||u.Type==="Path"){E.addControl(u.Name,L.control(de));continue}if(u.Type==="Size"){let Ve=de.replace(/[0-9]/g,""),at=de.replace(/[^0-9]/g,"");E.addControl(u.Name,L.group({size:L.control(at?parseInt(at):50),unit:L.control(Ve?Ve.toUpperCase():"MB")}))}if(u.Type==="Integer"){E.addControl(u.Name,L.control(de?parseInt(de):0));continue}if(u.Type==="Boolean"){E.addControl(u.Name,L.control(de==="true"));continue}if(u.Type==="Flags"){E.addControl(u.Name,L.control(de??""));continue}u.Type==="Timespan"&&E.addControl(u.Name,L.control(de,[he.pattern(/([-+]?\d{1,3}[smhDWMY])+/)]))}this.destinationForm.controls.destinations.length!==0&&this.destinationForm.controls.destinations.removeAt(0),this.destinationFormPair.update(P=>({oauthField:P.oauthField,custom:P.custom,dynamic:P.dynamic.sort((u,x)=>F.indexOf(u.name)-F.indexOf(x.name)),advanced:P.advanced.sort((u,x)=>{let E=B.indexOf(u.name),Ae=B.indexOf(x.name);return E===-1&&Ae!==-1?1:E!==-1&&Ae===-1?-1:E-Ae})})),this.notSelectedAdvancedFormPair.set(this.destinationFormPair().advanced),this.destinationForm.controls.destinations.push(wt({key:i.Key,customGroup:N,dynamicGroup:Ge,advancedGroup:He}))}#d(){this.generalForm.reset(),this.sourceDataForm.reset(),this.scheduleForm.reset(),this.destinationForm.reset(),this.optionsForm.reset()}static \u0275fac=function(e){return new(e||t)};static \u0275prov=be({token:t,factory:t.\u0275fac,providedIn:"root"})};var tn=["formRef"],nn=(t,n,e,i)=>({destination:t,destinationType:n,index:e,formGroupName:"custom",oauthField:i}),ot=t=>({$implicit:t}),on=(t,n,e,i)=>({destination:t,destinationType:n,index:e,formGroupName:"dynamic",oauthField:i}),an=(t,n,e,i)=>({destination:t,destinationType:n,index:e,formGroupName:"advanced",oauthField:i});function rn(t,n){if(t&1){let e=b();a(0,"p",9),y("click",function(){C(e);let r=m(2);return g(r.removeDestinationFormGroup(r.destinationCount()-1))}),l(1," Wanna select another destination? "),a(2,"span",10),l(3,"Click here"),o()()}}function ln(t,n){if(t&1){let e=b();a(0,"div",11)(1,"div",12),y("click",function(){C(e);let r=m(2);return g(r.addDestinationFormGroup("file"))}),a(2,"h3"),l(3,"File system"),o(),a(4,"p"),l(5,"Store backups on your local file system."),o()(),a(6,"div",12),y("click",function(){C(e);let r=m(2);return g(r.addDestinationFormGroup("gcs"))}),a(7,"h3"),l(8,"Google Cloud Storage"),o(),a(9,"p"),l(10,"Store backups in Google Cloud Storage."),o()(),a(11,"div",12),y("click",function(){C(e);let r=m(2);return g(r.addDestinationFormGroup("s3"))}),a(12,"h3"),l(13,"S3 compatible bucket"),o(),a(14,"p"),l(15,"Store backups in any S3 compatible bucket."),o()(),a(16,"div",12),y("click",function(){C(e);let r=m(2);return g(r.addDestinationFormGroup("ssh"))}),a(17,"h3"),l(18,"SSH"),o(),a(19,"p"),l(20,"Store backups in SSH."),o()(),a(21,"div",12),y("click",function(){C(e);let r=m(2);return g(r.addDestinationFormGroup("googledrive"))}),a(22,"h3"),l(23,"Google Drive"),o(),a(24,"p"),l(25,"Store backups in Google Drive."),o()()(),a(26,"p"),l(27,"More destinations are coming soon."),o()}}function sn(t,n){t&1&&Re(0)}function mn(t,n){if(t&1&&f(0,sn,1,0,"ng-container",15),t&2){let e,i=n.$implicit,r=n.$index;m(2);let c=xe(6),F=m(2);d("ngTemplateOutlet",c)("ngTemplateOutletContext",Be(7,ot,$e(2,nn,i,(e=F.destinationFormSignal())==null||e.destinations==null||e.destinations[0]==null?null:e.destinations[0].destinationType,r,F.destinationFormPair().oauthField)))}}function pn(t,n){if(t&1&&(k(0),D(1,mn,1,9,"ng-container",null,w),v()),t&2){let e=m(3);s(),T(e.destinationFormPair().custom)}}function cn(t,n){t&1&&Re(0)}function dn(t,n){if(t&1&&f(0,cn,1,0,"ng-container",15),t&2){let e,i=n.$implicit,r=n.$index;m(2);let c=xe(6),F=m(2);d("ngTemplateOutlet",c)("ngTemplateOutletContext",Be(7,ot,$e(2,on,i,(e=F.destinationFormSignal())==null||e.destinations==null||e.destinations[0]==null?null:e.destinations[0].destinationType,r,F.destinationFormPair().oauthField)))}}function un(t,n){if(t&1&&(k(0),D(1,dn,1,9,"ng-container",null,w),v()),t&2){let e=m(3);s(),T(e.destinationFormPair().dynamic)}}function _n(t,n){if(t&1){let e=b();a(0,"button",20),y("click",function(){let r=C(e).$implicit,c=m(4);return g(c.addAdvancedFormPair(r))}),l(1),o()}if(t&2){let e=n.$implicit;s(),A(" ",e.name," ")}}function fn(t,n){t&1&&Re(0)}function Cn(t,n){if(t&1&&f(0,fn,1,0,"ng-container",15),t&2){let e,i=n.$implicit,r=n.$index;m(2);let c=xe(6),F=m(2);d("ngTemplateOutlet",c)("ngTemplateOutletContext",Be(7,ot,$e(2,an,i,(e=F.destinationFormSignal())==null||e.destinations==null||e.destinations[0]==null?null:e.destinations[0].destinationType,r,F.destinationFormPair().oauthField)))}}function gn(t,n){if(t&1&&(a(0,"app-toggle-card",14),k(1,16),l(2," Advanced options "),a(3,"spk-menu")(4,"button",17),l(5," Add advanced option "),a(6,"spk-icon"),l(7,"plus"),o()(),k(8,18),D(9,_n,2,1,"button",19,w),v(),o(),v(),k(11),D(12,Cn,1,9,"ng-container",null,w),v(),o()),t&2){let e=m(3);d("disallowToggle",!0),s(9),T(e.notSelectedAdvancedFormPair()),s(3),T(e.selectedAdvancedFormPair())}}function yn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function xn(t,n){if(t&1&&(a(0,"app-file-tree",22)(1,"label",26),l(2),f(3,yn,2,1,"spk-icon",27),o(),p(4,"input",28),o()),t&2){let e,i=m().$implicit,r=m(3);d("startingPath",r.getFormFieldValue(i.index,i.formGroupName,i.destination.name)),s(),pt("for","destination-",i.formGroupName,"-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name)}}function hn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function Sn(t,n){t&1&&(a(0,"spk-icon",29),l(1,"link"),o())}function kn(t,n){t&1&&(a(0,"spk-icon",29),l(1,"textbox"),o())}function vn(t,n){if(t&1&&(a(0,"spk-form-field")(1,"label",26),l(2),f(3,hn,2,1,"spk-icon",27),o(),p(4,"input",28),f(5,Sn,2,0,"spk-icon",29)(6,kn,2,0,"spk-icon",29),o()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name),s(),_(i.destination.type==="Path"?5:6)}}function Fn(t,n){if(t&1){let e=b();a(0,"span",33),y("click",function(){C(e);let r=m(2).$implicit,c=m(3);return g(c.oauthStartTokenCreation(r.destinationType))}),l(1,"AuthID"),o()}}function bn(t,n){t&1&&(a(0,"spk-icon",29),l(1,"password"),o())}function wn(t,n){if(t&1){let e=b();a(0,"spk-icon",34),y("click",function(){C(e);let r=m(2).$implicit;return g(r.destination.showPassword=!r.destination.showPassword)}),l(1," eye "),o()}}function Dn(t,n){if(t&1){let e=b();a(0,"spk-icon",34),y("click",function(){C(e);let r=m(2).$implicit;return g(r.destination.showPassword=!r.destination.showPassword)}),l(1," eye-slash "),o()}}function Tn(t,n){if(t&1&&(a(0,"spk-form-field")(1,"label",26),l(2),o(),p(3,"input",30),f(4,Fn,2,0,"span",31)(5,bn,2,0,"spk-icon",29)(6,wn,2,0,"spk-icon",32)(7,Dn,2,0,"spk-icon",32),o()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),ct(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," -- ",i.oauthField," ",i.destinationType," ",i.destination.name," "),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name),d("type",i.destination.showPassword?"text":"password"),s(),_(i.oauthField===i.destination.name?4:5),s(2),_(i.destination.showPassword?6:7)}}function En(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function On(t,n){if(t&1&&(a(0,"option",37),l(1),o()),t&2){let e=n.$implicit;d("value",e),s(),G(e)}}function Nn(t,n){if(t&1&&(a(0,"spk-select")(1,"label",26),l(2),f(3,En,2,1,"spk-icon",27),o(),p(4,"input",35),k(5,36),D(6,On,2,2,"option",37,w),v(),o()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name),s(2),T(i.destination.options)}}function Vn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function Pn(t,n){if(t&1&&(a(0,"option",37),l(1),o()),t&2){let e=n.$implicit;d("value",e),s(),G(e)}}function In(t,n){if(t&1&&(a(0,"div",23)(1,"label",26),l(2),f(3,Vn,2,1,"spk-icon",27),o(),a(4,"div",38)(5,"spk-form-field"),p(6,"input",39),a(7,"spk-icon",29),l(8,"resize"),o()(),a(9,"spk-select"),p(10,"label")(11,"input",40),k(12,36),D(13,Pn,2,2,"option",37,w),v(),o()()()),t&2){let e,i=m().$implicit,r=m(3);d("formGroupName",i.destination.name),s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(3),O("id","destination-",i.formGroupName,"-",i.index,""),s(7),T(r.sizeOptions())}}function Gn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function An(t,n){if(t&1&&(a(0,"spk-form-field")(1,"label",26),l(2),f(3,Gn,2,1,"spk-icon",27),o(),p(4,"input",41),a(5,"spk-icon",29),l(6,"numpad"),o()()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name)}}function Mn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function Rn(t,n){if(t&1&&(a(0,"spk-toggle",24)(1,"label",26),l(2),f(3,Mn,2,1,"spk-icon",27),o(),p(4,"input",42),o()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name)}}function Bn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function $n(t,n){t&1&&(a(0,"spk-option",44),l(1,"None"),o()),t&2&&d("value","None")}function Ln(t,n){if(t&1&&(a(0,"spk-option",37),l(1),p(2,"spk-checkbox",45),o()),t&2){let e=m().$implicit;d("value",e),s(),A(" ",e," ")}}function zn(t,n){if(t&1&&f(0,$n,2,1,"spk-option",44)(1,Ln,3,2,"spk-option",37),t&2){let e=n.$implicit;_(e==="None"?0:1)}}function Un(t,n){if(t&1&&(a(0,"spk-select",25)(1,"label",26),l(2),f(3,Bn,2,1,"spk-icon",27),o(),p(4,"input",43),k(5,36),D(6,zn,2,1,null,null,w),v(),o()),t&2){let e,i=m().$implicit;d("selectMultiple",!0),s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),me("formControlName",i.destination.name),s(2),T(i.destination.options)}}function jn(t,n){if(t&1&&(a(0,"spk-icon",27),l(1," question "),o()),t&2){let e=m(2).$implicit;$("spk-tooltip-primary",e.destination.longDescription)}}function qn(t,n){if(t&1&&(a(0,"spk-form-field")(1,"label",26),l(2),f(3,jn,2,1,"spk-icon",27),o(),p(4,"input",28)(5,"span",46),o()),t&2){let e,i=m().$implicit;s(),O("for","destination-",i.formGroupName,"-",i.index,""),s(),A(" ",(e=i.destination.shortDescription)!==null&&e!==void 0?e:i.destination.name," "),s(),_(i.destination.longDescription?3:-1),s(),O("id","destination-",i.formGroupName,"-",i.index,""),me("formControlName",i.destination.name)}}function Qn(t,n){if(t&1&&(k(0,21),f(1,xn,5,11,"app-file-tree",22)(2,vn,7,10,"spk-form-field")(3,Tn,8,14,"spk-form-field")(4,Nn,8,9,"spk-select")(5,In,15,9,"div",23)(6,An,7,9,"spk-form-field")(7,Rn,5,9,"spk-toggle",24)(8,Un,8,7,"spk-select",25)(9,qn,6,9,"spk-form-field"),v()),t&2){let e=n.$implicit;d("formGroupName",e.formGroupName),s(),_(e.destination.type==="file-tree"?1:e.destination.type==="String"||e.destination.type==="Path"?2:e.destination.type==="Password"?3:e.destination.type==="Enumeration"?4:e.destination.type==="Size"?5:e.destination.type==="Integer"?6:e.destination.type==="Boolean"?7:e.destination.type==="Flags"?8:e.destination.type==="Timespan"?9:-1)}}function Wn(t,n){if(t&1&&(k(0,5)(1,13),f(2,pn,3,0,"ng-container")(3,un,3,0,"ng-container")(4,gn,14,1,"app-toggle-card",14)(5,Qn,10,2,"ng-template",null,1,dt),v()()),t&2){let e=m(2);s(2),_(e.destinationFormPair().custom.length?2:-1),s(),_(e.destinationFormPair().dynamic.length?3:-1),s(),_(e.destinationFormPair().advanced.length?4:-1)}}function Kn(t,n){if(t&1){let e=b();a(0,"form",3,0),y("submit",function(){C(e);let r=m();return g(r.next())}),a(2,"header")(3,"h3",4),l(4,"Backup destination"),o(),f(5,rn,4,0,"p"),o(),f(6,ln,28,0)(7,Wn,7,3,"ng-container",5),a(8,"div",6)(9,"button",7),y("click",function(){C(e);let r=m();return g(r.goBack())}),a(10,"spk-icon"),l(11,"arrow-left"),o(),l(12," Go back "),o(),a(13,"button",8)(14,"spk-icon"),l(15,"arrow-right"),o(),l(16," Continue "),o()()()}if(t&2){let e,i=m();d("formGroup",i.destinationForm),s(5),_(i.destinationCount()>0?5:-1),s(),_(i.destinationCount()===0?6:-1),s(),_(!((e=i.destinationFormSignal())==null||e.destinations==null)&&e.destinations.length?7:-1)}}var Hn=["Bytes","KB","MB","GB","TB","PB"],Ke=new I,bt=(t={destinations:[]})=>Ke.group({destinations:Ke.array(t.destinations)}),wt=({key:t,customGroup:n,dynamicGroup:e,advancedGroup:i})=>Ke.group({destinationType:Ke.control(t),custom:n,dynamic:e,advanced:i}),it=class t{#e=h(M);#t=h(K);#n=h(Ce);#i=h(_t);#o=h(R);formRef=U.required("formRef");sysIsLoaded=this.#n.isLoaded;destinationIsLoaded=this.#o.destinationIsLoaded;destinationForm=this.#o.destinationForm;destinationFormPair=this.#o.destinationFormPair;selectedAdvancedFormPair=this.#o.selectedAdvancedFormPair;notSelectedAdvancedFormPair=this.#o.notSelectedAdvancedFormPair;destinationOptions=this.#o.destinationOptions;destinationFormSignal=this.#o.destinationFormSignal;destinationCount=W(()=>this.destinationFormSignal()?.destinations?.length??0);sizeOptions=S(Hn);getFormFieldValue(n,e,i){return((this.destinationForm.controls.destinations.controls?.[n]).controls?.[e]).controls[i].value}addDestinationFormGroup(n){this.#o.addDestinationFormGroup(n)}addAdvancedFormPair(n){this.selectedAdvancedFormPair.update(e=>(e.push(n),e)),this.notSelectedAdvancedFormPair.update(e=>(e=e.filter(i=>i.name!==n.name),e))}targetUrl=W(()=>{let n=this.destinationFormSignal()?.destinations?.[0];return n?Oe(n):""});mapToTargetUrl(n){return Oe(n.value)}removeDestinationFormGroup(n){this.destinationForm.controls.destinations.removeAt(n)}displayFn(n){let e=this.destinationOptions().find(i=>i.Key===n);return e?`${e.DisplayName}`:""}goBack(){this.#e.navigate(["general"],{relativeTo:this.#t.parent})}next(){this.#e.navigate(["source-data"],{relativeTo:this.#t.parent})}#a=S("https://duplicati-oauth-handler.appspot.com/").asReadonly();#l=S(Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).asReadonly();#r=S(!1);#s=S(null);keyCreation(){}oauthStartTokenCreation(n){this.#r.set(!0);let e=450,i=600,r=this.#a()+"?type="+n+"&token="+this.#l(),c=screen.width/2-e/2,F=screen.height/2-i/2,B=window.open(r,"_blank","height="+i+",width="+e+",menubar=0,status=0,titlebar=0,toolbar=0,left="+c+",top="+F);B?.addEventListener("blur",le=>{console.log("event blur",le)}),B?.addEventListener("beforeunload",le=>{console.log("event beforeunload",le),this.#i.get(this.#a()+"fetch?callback=JSON_CALLBACK",{params:{token:this.#l()}}).pipe(ye(()=>this.#r.set(!1))).subscribe({next:N=>{console.log("res",N),N?.authid&&this.#s.set(N.authid)}})})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=z({type:t,selectors:[["app-destination"]],viewQuery:function(e,i){e&1&&j(i.formRef,tn,5),e&2&&q()},standalone:!0,features:[Q],decls:1,vars:1,consts:[["formRef",""],["fieldTemplate",""],[3,"formGroup"],[3,"submit","formGroup"],[1,"title-30"],["formArrayName","destinations"],[1,"form-actions"],["spk-button","","type","button",3,"click"],["spk-button","","type","submit",1,"raised","primary"],[3,"click"],[1,"spk-primary"],[1,"most-common-destinations"],[1,"tile",3,"click"],["formGroupName","0"],[3,"disallowToggle"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["title",""],["spk-button","","type","button",1,"outlined","small"],["menu",""],["spk-menu-item","","type","button"],["spk-menu-item","","type","button",3,"click"],[3,"formGroupName"],[3,"startingPath"],[1,"form-column",3,"formGroupName"],[1,"primary","raised"],[1,"primary",3,"selectMultiple"],[3,"for"],["spk-tooltip-right",""],["type","text",3,"id","formControlName"],["spkPrefix",""],[3,"type","id","formControlName"],["spkPrefix","",1,"link"],["spkSuffix","",1,"clickable"],["spkPrefix","",1,"link",3,"click"],["spkSuffix","",1,"clickable",3,"click"],["type","search",3,"id","formControlName"],["options",""],[3,"value"],[1,"form-row"],["type","number","formControlName","size",3,"id"],["type","search","formControlName","unit"],["type","number",3,"id","formControlName"],["type","checkbox",3,"id","formControlName"],["type","text","id","text",3,"formControlName"],["deselect","",3,"value"],[1,"raised","primary"],["spkError",""]],template:function(e,i){e&1&&f(0,Kn,17,4,"form",2),e&2&&_(i.destinationOptions().length&&i.sysIsLoaded()&&i.destinationIsLoaded()?0:-1)},dependencies:[ie,J,te,ne,H,ue,we,Y,Z,X,ee,_e,Le,ut,ae,re,ze,ft,Ct,oe,De,ge,Ue],styles:["[_nghost-%COMP%]{display:block}header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.form-column[_ngcontent-%COMP%]{display:flex;flex-direction:column}.form-column[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem}.form-column[_ngcontent-%COMP%] spk-icon[_ngcontent-%COMP%]{font-size:1rem}.form-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:2fr 1fr;gap:.5rem;align-items:flex-end}.clickable[_ngcontent-%COMP%]{cursor:pointer;color:var(--primary-500)}.most-common-destinations[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.most-common-destinations[_ngcontent-%COMP%] .tile[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;padding:1rem;border:1px solid var(--base-level-40);border-radius:var(--shape-3);box-shadow:var(--shadow-1);background-color:var(--base-level-20);cursor:pointer}.most-common-destinations[_ngcontent-%COMP%] .tile[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font:var(--paragraph-10);margin:0}[spkprefix].link[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:var(--primary-500)}"],changeDetection:0})};export{bt as a,wt as b,it as c,ht as d,Je as e,Ze as f,St as g,et as h,Xe as i,vt as j,tt as k,Ft as l,nt as m,R as n};
@@ -0,0 +1,2 @@
1
+ import{b as M}from"./chunk-ZD3JEKWI.js";import{k as b}from"./chunk-S76TN27U.js";import{c as S}from"./chunk-PY5HJ5U2.js";import{a as k}from"./chunk-PH6AAOK4.js";import{$ as m,Fb as h,I as p,Lb as v,Ma as c,Qa as g,Wa as f,Z as i,bb as d,db as u,hb as C,lb as y,mb as o,nb as r,u as l}from"./chunk-ORDBF5MR.js";function D(n,e){n&1&&r(0,"spk-progress-bar",0)}var a=class n{#e=i(S);#n=i(k);isLoading=f(!0);generalInfo=M(this.#n.getApiV1Acknowledgements().pipe(l(e=>e.Acknowledgements?this.#e.bypassSecurityTrustHtml(e.Acknowledgements.replace(/\r/g,`
2
+ `)):""),p(()=>this.isLoading.set(!1))));static \u0275fac=function(t){return new(t||n)};static \u0275cmp=m({type:n,selectors:[["app-general"]],standalone:!0,features:[v],decls:5,vars:2,consts:[[1,"indeterminate","primary"],[3,"innerHTML"]],template:function(t,s){t&1&&(d(0,D,1,0,"spk-progress-bar",0),y(1,"section")(2,"h3"),h(3,"General"),o(),r(4,"div",1),o()),t&2&&(C(s.isLoading()?0:-1),g(4),u("innerHTML",s.generalInfo(),c))},dependencies:[b],styles:["[_nghost-%COMP%]{display:block;position:relative}h3[_ngcontent-%COMP%]{font:var(--title-30)}section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}spk-progress-bar[_ngcontent-%COMP%]{position:absolute;top:0;left:0;right:0}"],changeDetection:0})};export{a as default};
@@ -0,0 +1 @@
1
+ import{a as c}from"./chunk-24PLBY6C.js";import{c as h}from"./chunk-N5US3SKW.js";import{a as u}from"./chunk-PH6AAOK4.js";import{F as t,Q as i,T as l,Wa as n,Z as s,dc as a}from"./chunk-ORDBF5MR.js";var m=class r{#t=s(c);#i=s(h);#s=s(u);#e=n(this.#t.getItemParsed("token")??null);#r=n(this.#t.getItemParsed("tokenSetTime")??null);tokenSetTime=this.#r.asReadonly();token=this.#e.asReadonly();#o=a(()=>{if(!this.#e()){this.#t.clearAll(),this.#i.navigate(["/login"]);return}let e=Date.now();this.#t.setItemParsed("tokenSetTime",e),this.#t.setItemParsed("token",this.#e()),this.#r.set(this.#e()?e:null)},{allowSignalWrites:!0});login(e="helloworld"){return this.#s.postApiV1AuthLogin({requestBody:{Password:e,RememberMe:!0}}).pipe(t(1),i(o=>this.#e.set(o.AccessToken??null)))}refreshToken(){return this.#s.postApiV1AuthRefresh().pipe(t(1),i(e=>this.#e.set(e.AccessToken??null)))}logout(){this.#s.postApiV1AuthRefreshLogout().pipe(t(1),i(e=>{this.#e.set(null),this.#t.clearAll(),this.#i.navigate(["/login"])})).subscribe({error:e=>{this.#e.set(null),this.#t.clearAll(),this.#i.navigate(["/login"])}})}static \u0275fac=function(o){return new(o||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};export{m as a};
@@ -0,0 +1 @@
1
+ import{a as N}from"./chunk-22HCWJS5.js";import{a as M}from"./chunk-A66Z6362.js";import{k as V}from"./chunk-S76TN27U.js";import{a as O,b as L}from"./chunk-PH6AAOK4.js";import{$ as _,Fb as m,I as h,Ib as b,Lb as A,O as I,Qa as l,Qb as E,Rb as R,T as C,Wa as i,Z as r,a as k,b as S,bb as T,bc as d,ca as x,db as u,dc as P,hb as w,lb as o,mb as p,nb as c,q as B,tb as v,u as D}from"./chunk-ORDBF5MR.js";var f=class s{#t=r(N);transform(e,...t){return this.#t(e).fromNow()}static \u0275fac=function(t){return new(t||s)};static \u0275pipe=x({name:"appRelativeTime",type:s,pure:!0,standalone:!0})};var g=class s{#t=1e3;#d=r(L);#o=r(O);#n=r(M);#e=i(!1);#i=i(!1);#p=i(this.#t);#u=i(null);#r=i(!1);#a=i(!1);#s=i(null);#f=i(!1);statusData=this.#u.asReadonly();serverState=d(()=>{let e=this.#s();return e?(e.ProposedSchedule=e?.ProposedSchedule?.map(t=>{let a=t.Item1?this.#n.getBackupById(t.Item1):null;return S(k({},t),{backup:a})}),e):null});isFetching=this.#i.asReadonly();#l=null;#g=P(()=>{let e=this.#e(),t=this.#p();if(!e||!t||t<this.#t){this.#l&&window.clearInterval(this.#l);return}this.#l=window.setInterval(()=>{this.#m()},t)});start(){this.#r.set(!0),this.#c()}stop(){this.#r.set(!1)}startPollingProgress(){this.#m(),this.#e.set(!0)}stopPollingProgress(){this.#e.set(!1)}setProgressStatePollingInterval(e){if(e<this.#t){console.error(`Polling interval must be at least ${this.#t}ms`);return}this.#p.set(e)}serverStateEffect=P(()=>{if(this.#f()){this.stopPollingProgress();return}!this.#a()&&this.#r()?setTimeout(()=>{this.startPollingProgress(),this.#c()},1e3):this.stopPollingProgress()},{allowSignalWrites:!0});#c(){if(this.#a())return;this.#a.set(!0);let e=this.#s()?.LastEventID,t=e==null?{}:{lastEventId:e,longpoll:!0,duration:"299s"};this.#o.getApiV1Serverstate(t).pipe(h(()=>this.#a.set(!1))).subscribe({next:a=>{this.#s()?.LastDataUpdateID!==a.LastDataUpdateID&&this.#n.getBackups(),this.#s.set(a)}})}#m(){this.#i.set(!0),this.#d.getApiV1Progressstate().pipe(I(e=>{let t=e.TaskID??null;return t===null?B(e):this.#o.getApiV1TaskByTaskid({taskid:t}).pipe(D(a=>S(k({},e),{task:a??null})))}),h(()=>this.#i.set(!1))).subscribe({next:e=>{let t=e.TaskID??null,a=e.BackupID??null;if(t!==null&&a!==null){let n=this.#n.getBackupById(a);e.backup=n}e.task?.Status==="Completed"?this.#e.set(!1):this.#e.set(!0),this.#u.set(e)}})}static \u0275fac=function(t){return new(t||s)};static \u0275prov=C({token:s,factory:s.\u0275fac,providedIn:"root"})};function G(s,e){if(s&1&&(o(0,"div",2),m(1),p(),c(2,"spk-progress-bar",3)),s&2){let t,a,n=v();l(),b("",(t=n.statusData())==null||t.task==null?null:t.task.Status," - ",(t=n.statusData())==null||t.backup==null||t.backup.Backup==null?null:t.backup.Backup.Name,""),l(),u("value",(a=n.statusData())!=null&&a.OverallProgress?((a=n.statusData())==null?null:a.OverallProgress)*100:3)}}function F(s,e){if(s&1&&(o(0,"div",2),m(1),E(2,"appRelativeTime"),p(),c(3,"spk-progress-bar",4)),s&2){let t,a=v();l(),b("",(t=a.nextBackup().backup)==null||t.Backup==null?null:t.Backup.Name," - ",R(2,3,a.nextBackup().time),""),l(2),u("value",3)}}function J(s,e){s&1&&(o(0,"div",2),m(1,"No scheduled tasks"),p(),c(2,"spk-progress-bar",4)),s&2&&(l(2),u("value",3))}function U(s,e){s&1&&(o(0,"div",2),m(1,"Loading..."),p(),c(2,"spk-progress-bar",4)),s&2&&(l(2),u("value",3))}var y=class s{#t=r(g);statusData=this.#t.statusData;serverState=this.#t.serverState;nextBackup=d(()=>({backup:this.serverState()?.ProposedSchedule?.[0]?.backup,time:this.serverState()?.ProposedSchedule?.[0]?.Item2}));ngOnInit(){this.#t.start()}ngOnDestroy(){this.#t.stop()}static \u0275fac=function(t){return new(t||s)};static \u0275cmp=_({type:s,selectors:[["app-status-bar"]],standalone:!0,features:[A],decls:6,vars:1,consts:[[1,"current-backup"],[1,"current-backup-progress"],[1,"label"],[1,"raised","primary",3,"value"],[1,"raised",3,"value"]],template:function(t,a){if(t&1&&(o(0,"div",0)(1,"div",1),T(2,G,3,3)(3,F,4,5)(4,J,3,1)(5,U,3,1),p()()),t&2){let n;l(2),w(!((n=a.statusData())==null||n.task==null)&&n.task.Status&&((n=a.statusData())==null||n.task==null?null:n.task.Status)!=="Completed"?2:a.nextBackup()?3:!a.statusData()||((n=a.statusData())==null||n.task==null?null:n.task.Status)==="Completed"?4:5)}},dependencies:[V,f],styles:["[_nghost-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--base-level-40)}.current-backup[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.current-backup-progress[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;min-width:18.75rem}.current-backup-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}"],changeDetection:0})};export{y as a};
@@ -0,0 +1 @@
1
+ import{a as f}from"./chunk-XYJYUMYL.js";import"./chunk-22HCWJS5.js";import"./chunk-A66Z6362.js";import{a as u,d as g,e as k}from"./chunk-S76TN27U.js";import{d as l}from"./chunk-N5US3SKW.js";import"./chunk-PY5HJ5U2.js";import"./chunk-PH6AAOK4.js";import{$ as r,Fb as t,Lb as s,Mb as m,Qa as c,db as d,lb as e,mb as n,nb as i}from"./chunk-ORDBF5MR.js";var b=()=>["/backup/new"],o=class p{static \u0275fac=function(a){return new(a||p)};static \u0275cmp=r({type:p,selectors:[["app-add-backup"]],standalone:!0,features:[s],decls:15,vars:2,consts:[[1,"backup-types"],[1,"type-a"],["src","/assets/images/new-backup.png"],["spk-button","",1,"raised","primary",3,"routerLink"]],template:function(a,x){a&1&&(i(0,"app-status-bar"),e(1,"section")(2,"h2"),t(3,"Add a new backup"),n(),e(4,"div",0)(5,"spk-card",1),i(6,"img",2),e(7,"h3"),t(8,"New backup"),n(),e(9,"p"),t(10,"Configure a new backup. Choose your destination, source data and schedule."),n(),e(11,"button",3),t(12," Add a new backup "),e(13,"spk-icon"),t(14,"plus"),n()()()()()),a&2&&(c(11),d("routerLink",m(1,b)))},dependencies:[f,g,k,u,l],styles:["[_nghost-%COMP%]{display:block}section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:column;gap:2rem;padding:2rem 0}div.backup-types[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr;gap:1rem;max-width:700px}spk-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:1rem;padding-bottom:3rem}spk-card[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:300px}spk-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{text-wrap:balance;text-align:center;width:75%}"],changeDetection:0})};export{o as default};
@@ -0,0 +1 @@
1
+ import{R as a,Wa as b,Z as d,bc as g,cc as y,dc as h,ha as l,n as f,oa as v,pa as c}from"./chunk-ORDBF5MR.js";function p(s,e){!e?.injector&&l(p);let n=e?.injector??d(v),o=new f(1),i=h(()=>{let t;try{t=s()}catch(u){y(()=>o.error(u));return}y(()=>o.next(t))},{injector:n,manualCleanup:!0});return n.get(c).onDestroy(()=>{i.destroy(),o.complete()}),o.asObservable()}function m(s,e){let n=!e?.manualCleanup;n&&!e?.injector&&l(m);let o=n?e?.injector?.get(c)??d(c):null,i=w(e?.equal),t;e?.requireSync?t=b({kind:0},{equal:i}):t=b({kind:1,value:e?.initialValue},{equal:i});let u=s.subscribe({next:r=>t.set({kind:1,value:r}),error:r=>{if(e?.rejectErrors)throw r;t.set({kind:2,error:r})}});if(e?.requireSync&&t().kind===0)throw new a(601,!1);return o?.onDestroy(u.unsubscribe.bind(u)),g(()=>{let r=t();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new a(601,!1)}},{equal:e?.equal})}function w(s=Object.is){return(e,n)=>e.kind===1&&n.kind===1&&s(e.value,n.value)}export{p as a,m as b};
package/index.html ADDED
@@ -0,0 +1,15 @@
1
+ <!doctype html>
2
+ <html lang="en" data-critters-container>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Duplicati Client</title>
6
+ <base href="/">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <!-- <link rel="icon" type="image/x-icon" href="favicon.ico" /> -->
9
+ <link rel="icon" href="/assets/duplicati-logo.png">
10
+ <link rel="stylesheet" href="/assets/spk.css">
11
+ <style>:root{--font-size:16px;font-size:var(--font-size)}html body{--sparkle-light:initial;--sparkle-dark: ;color-scheme:light dark;--primary-50:#eff6ff;--primary-rgb-50:239,246,255;--primary-contrast-50:var(--dark-primary-text);--primary-100:#dbeafe;--primary-rgb-100:219,234,254;--primary-contrast-100:var(--dark-primary-text);--primary-200:#bfdbfe;--primary-rgb-200:191,219,254;--primary-contrast-200:var(--dark-primary-text);--primary-300:#93c5fd;--primary-rgb-300:147,197,253;--primary-contrast-300:var(--dark-primary-text);--primary-400:#60a5fa;--primary-rgb-400:96,165,250;--primary-contrast-400:var(--dark-primary-text);--primary-500:#3b82f6;--primary-rgb-500:59,130,246;--primary-contrast-500:var(--light-primary-text);--primary-600:#2563eb;--primary-rgb-600:37,99,235;--primary-contrast-600:var(--light-primary-text);--primary-700:#1d4ed8;--primary-rgb-700:29,78,216;--primary-contrast-700:var(--light-primary-text);--primary-800:#1e40af;--primary-rgb-800:30,64,175;--primary-contrast-800:var(--light-primary-text);--primary-900:#1e3a8a;--primary-rgb-900:30,58,138;--primary-contrast-900:var(--light-primary-text);--primary-950:#172554;--primary-rgb-950:23,37,84;--primary-contrast-950:var(--light-primary-text);--accent-50:#f5f3ff;--accent-rgb-50:245,243,255;--accent-contrast-50:var(--dark-primary-text);--accent-100:#ede9fe;--accent-rgb-100:237,233,254;--accent-contrast-100:var(--dark-primary-text);--accent-200:#ddd6fe;--accent-rgb-200:221,214,254;--accent-contrast-200:var(--dark-primary-text);--accent-300:#c4b5fd;--accent-rgb-300:196,181,253;--accent-contrast-300:var(--dark-primary-text);--accent-400:#a78bfa;--accent-rgb-400:167,139,250;--accent-contrast-400:var(--dark-primary-text);--accent-500:#8b5cf6;--accent-rgb-500:139,92,246;--accent-contrast-500:var(--light-primary-text);--accent-600:#7c3aed;--accent-rgb-600:124,58,237;--accent-contrast-600:var(--light-primary-text);--accent-700:#6d28d9;--accent-rgb-700:109,40,217;--accent-contrast-700:var(--light-primary-text);--accent-800:#5b21b6;--accent-rgb-800:91,33,182;--accent-contrast-800:var(--light-primary-text);--accent-900:#4c1d95;--accent-rgb-900:76,29,149;--accent-contrast-900:var(--light-primary-text);--accent-950:#2e1065;--accent-rgb-950:46,16,101;--accent-contrast-950:var(--light-primary-text);--tertiary-50:#fffbeb;--tertiary-rgb-50:255,251,235;--tertiary-contrast-50:var(--dark-primary-text);--tertiary-100:#fef3c7;--tertiary-rgb-100:254,243,199;--tertiary-contrast-100:var(--dark-primary-text);--tertiary-200:#fde68a;--tertiary-rgb-200:253,230,138;--tertiary-contrast-200:var(--dark-primary-text);--tertiary-300:#fcd34d;--tertiary-rgb-300:252,211,77;--tertiary-contrast-300:var(--dark-primary-text);--tertiary-400:#fbbf24;--tertiary-rgb-400:251,191,36;--tertiary-contrast-400:var(--light-primary-text);--tertiary-500:#f59e0b;--tertiary-rgb-500:245,158,11;--tertiary-contrast-500:var(--light-primary-text);--tertiary-600:#d97706;--tertiary-rgb-600:217,119,6;--tertiary-contrast-600:var(--light-primary-text);--tertiary-700:#b45309;--tertiary-rgb-700:180,83,9;--tertiary-contrast-700:var(--light-primary-text);--tertiary-800:#92400e;--tertiary-rgb-800:146,64,14;--tertiary-contrast-800:var(--light-primary-text);--tertiary-900:#78350f;--tertiary-rgb-900:120,53,15;--tertiary-contrast-900:var(--light-primary-text);--tertiary-950:#451a03;--tertiary-rgb-950:69,26,3;--tertiary-contrast-950:var(--light-primary-text);--grey-50:#fafafa;--grey-rgb-50:250,250,250;--grey-contrast-50:var(--dark-primary-text);--grey-100:#f4f4f5;--grey-rgb-100:244,244,245;--grey-contrast-100:var(--dark-primary-text);--grey-200:#e4e4e7;--grey-rgb-200:228,228,231;--grey-contrast-200:var(--dark-primary-text);--grey-300:#d4d4d8;--grey-rgb-300:212,212,216;--grey-contrast-300:var(--dark-primary-text);--grey-400:#a1a1aa;--grey-rgb-400:161,161,170;--grey-contrast-400:var(--dark-primary-text);--grey-500:#71717a;--grey-rgb-500:113,113,122;--grey-contrast-500:var(--light-primary-text);--grey-600:#52525b;--grey-rgb-600:82,82,91;--grey-contrast-600:var(--light-primary-text);--grey-700:#3f3f46;--grey-rgb-700:63,63,70;--grey-contrast-700:var(--light-primary-text);--grey-750:#2f2f31;--grey-rgb-750:47,47,49;--grey-contrast-750:var(--light-primary-text);--grey-800:#27272a;--grey-rgb-800:39,39,42;--grey-contrast-800:var(--light-primary-text);--grey-900:#18181b;--grey-rgb-900:24,24,27;--grey-contrast-900:var(--light-primary-text);--grey-950:#09090b;--grey-rgb-950:9,9,11;--grey-contrast-950:var(--light-primary-text);--warn-50:#fef2f2;--warn-rgb-50:254,242,242;--warn-contrast-50:var(--dark-primary-text);--warn-100:#fee2e2;--warn-rgb-100:254,226,226;--warn-contrast-100:var(--dark-primary-text);--warn-200:#fecaca;--warn-rgb-200:254,202,202;--warn-contrast-200:var(--dark-primary-text);--warn-300:#fca5a5;--warn-rgb-300:252,165,165;--warn-contrast-300:var(--dark-primary-text);--warn-400:#f87171;--warn-rgb-400:248,113,113;--warn-contrast-400:var(--light-primary-text);--warn-500:#ef4444;--warn-rgb-500:239,68,68;--warn-contrast-500:var(--light-primary-text);--warn-600:#dc2626;--warn-rgb-600:220,38,38;--warn-contrast-600:var(--light-primary-text);--warn-700:#b91c1c;--warn-rgb-700:185,28,28;--warn-contrast-700:var(--light-primary-text);--warn-800:#991b1b;--warn-rgb-800:153,27,27;--warn-contrast-800:var(--light-primary-text);--warn-900:#7f1d1d;--warn-rgb-900:127,29,29;--warn-contrast-900:var(--light-primary-text);--warn-950:#450a0a;--warn-rgb-950:69,10,10;--warn-contrast-950:var(--light-primary-text);--success-50:#ecfdf5;--success-rgb-50:236,253,245;--success-contrast-50:var(--dark-primary-text);--success-100:#d1fae5;--success-rgb-100:209,250,229;--success-contrast-100:var(--dark-primary-text);--success-200:#a7f3d0;--success-rgb-200:167,243,208;--success-contrast-200:var(--dark-primary-text);--success-300:#6ee7b7;--success-rgb-300:110,231,183;--success-contrast-300:var(--dark-primary-text);--success-400:#34d399;--success-rgb-400:52,211,153;--success-contrast-400:var(--light-primary-text);--success-500:#10b981;--success-rgb-500:16,185,129;--success-contrast-500:var(--light-primary-text);--success-600:#059669;--success-rgb-600:5,150,105;--success-contrast-600:var(--light-primary-text);--success-700:#047857;--success-rgb-700:4,120,87;--success-contrast-700:var(--light-primary-text);--success-800:#065f46;--success-rgb-800:6,95,70;--success-contrast-800:var(--light-primary-text);--success-900:#064e3b;--success-rgb-900:6,78,59;--success-contrast-900:var(--light-primary-text);--success-950:#022c22;--success-rgb-950:2,44,34;--success-contrast-950:var(--light-primary-text);--display-10:600 5rem / normal Inter Tight, sans-serif;--display-20:600 4.5rem / normal Inter Tight, sans-serif;--display-30:600 4rem / normal Inter Tight, sans-serif;--display-40:600 3.5rem / normal Inter Tight, sans-serif;--display-50:600 3rem / normal Inter Tight, sans-serif;--title-10:500 2.5rem / normal Inter Tight, sans-serif;--title-20:500 2rem / normal Inter Tight, sans-serif;--title-30:500 1.5rem / normal Inter Tight, sans-serif;--title-10B:600 2.5rem / normal Inter Tight, sans-serif;--title-20B:600 2rem / normal Inter Tight, sans-serif;--title-30B:600 1.5rem / normal Inter Tight, sans-serif;--paragraph-10:500 1.125rem / normal Inter Tight, sans-serif;--paragraph-20:500 1rem / normal Inter Tight, sans-serif;--paragraph-30:500 .875rem / normal Inter Tight, sans-serif;--paragraph-40:500 .75rem / normal Inter Tight, sans-serif;--paragraph-10B:600 1.125rem / normal Inter Tight, sans-serif;--paragraph-20B:600 1rem / normal Inter Tight, sans-serif;--paragraph-30B:600 .875rem / normal Inter Tight, sans-serif;--paragraph-40B:600 .75rem / normal Inter Tight, sans-serif;--shape-1:.25rem;--shape-2:.5rem;--shape-3:.75rem;--shape-4:1rem;--shape-5:1.25rem;--box-shadow-10:0 1px 2px 0 rgba(18, 18, 23, .07);--box-shadow-20:0 1px 3px 0 rgba(18, 18, 23, .1);--box-shadow-30:0 1px 4px -1px rgba(18, 18, 23, .08);--box-shadow-35:0 4px 6px -1px rgba(18, 18, 23, .08);--box-shadow-40:0 10px 15px -3px rgba(18, 18, 23, .08);--box-shadow-50:0 20px 25px -5px rgba(18, 18, 23, .1);--box-shadow-60:0 25px 50px -12px rgba(18, 18, 23, .25);--base-level-10:var(--sparkle-light, #fff) var(--sparkle-dark, var(--grey-950));--base-level-20:var(--sparkle-light, var(--grey-50)) var(--sparkle-dark, var(--grey-900));--base-level-30:var(--sparkle-light, var(--grey-100)) var(--sparkle-dark, var(--grey-900));--base-level-30R:var(--sparkle-light, var(--grey-900)) var(--sparkle-dark, var(--grey-100));--base-level-40:var(--sparkle-light, var(--grey-200)) var(--sparkle-dark, var(--grey-700));--base-level-50:var(--sparkle-light, var(--grey-300)) var(--sparkle-dark, var(--grey-800));--base-level-60:var(--sparkle-light, var(--grey-500)) var(--sparkle-dark, var(--grey-400));--base-level-60R:var(--sparkle-light, var(--grey-400)) var(--sparkle-dark, var(--grey-500));--base-level-70:var(--sparkle-light, var(--grey-900)) var(--sparkle-dark, #fff);--base-level-70R:var(--sparkle-light, #fff) var(--sparkle-dark, var(--grey-900));--base-gradient-20:linear-gradient(180deg, var(--grey-400) 0%, var(--grey-500) 50%);--base-gradient-30:linear-gradient(180deg, var(--grey-300) 0%, var(--grey-500) 50%);--base-gradient-60:linear-gradient(180deg, var(--grey-700) 0%, var(--grey-900) 50%);--base-gradient-70:linear-gradient(180deg, var(--grey-600) 0%, var(--grey-900) 50%);--primary-level-20:var(--sparkle-light, var(--primary-50)) var(--sparkle-dark, var(--primary-950));--primary-level-30:var(--sparkle-light, var(--primary-100)) var(--sparkle-dark, var(--primary-900));--primary-level-40:var(--sparkle-light, var(--primary-200)) var(--sparkle-dark, var(--primary-800));--primary-level-50:var(--sparkle-light, var(--primary-300)) var(--sparkle-dark, var(--primary-800));--primary-level-50R:var(--sparkle-light, var(--primary-800)) var(--sparkle-dark, var(--primary-300));--primary-level-80:var(--sparkle-light, var(--primary-900)) var(--sparkle-dark, var(--primary-300));--primary-gradient-20:linear-gradient(180deg, var(--primary-400) 0%, var(--primary-500) 50%);--primary-gradient-30:linear-gradient(180deg, var(--primary-300) 0%, var(--primary-500) 50%);--accent-level-20:var(--sparkle-light, var(--accent-50)) var(--sparkle-dark, var(--accent-950));--accent-level-30:var(--sparkle-light, var(--accent-100)) var(--sparkle-dark, var(--accent-900));--accent-level-40:var(--sparkle-light, var(--accent-200)) var(--sparkle-dark, var(--accent-800));--accent-level-50:var(--sparkle-light, var(--accent-300)) var(--sparkle-dark, var(--accent-800));--accent-level-50R:var(--sparkle-light, var(--accent-800)) var(--sparkle-dark, var(--accent-300));--accent-level-80:var(--sparkle-light, var(--accent-900)) var(--sparkle-dark, var(--accent-300));--accent-gradient-20:linear-gradient(180deg, var(--accent-400) 0%, var(--accent-500) 50%);--accent-gradient-30:linear-gradient(180deg, var(--accent-300) 0%, var(--accent-500) 50%);--tertiary-level-20:var(--sparkle-light, var(--tertiary-50)) var(--sparkle-dark, var(--tertiary-950));--tertiary-level-30:var(--sparkle-light, var(--tertiary-100)) var(--sparkle-dark, var(--tertiary-900));--tertiary-level-40:var(--sparkle-light, var(--tertiary-200)) var(--sparkle-dark, var(--tertiary-800));--tertiary-level-50:var(--sparkle-light, var(--tertiary-300)) var(--sparkle-dark, var(--tertiary-800));--tertiary-level-50R:var(--sparkle-light, var(--tertiary-800)) var(--sparkle-dark, var(--tertiary-300));--tertiary-level-80:var(--sparkle-light, var(--tertiary-900)) var(--sparkle-dark, var(--tertiary-300));--tertiary-gradient-20:linear-gradient(180deg, var(--tertiary-400) 0%, var(--tertiary-500) 50%);--tertiary-gradient-30:linear-gradient(180deg, var(--tertiary-300) 0%, var(--tertiary-500) 50%);--warn-level-20:var(--sparkle-light, var(--warn-50)) var(--sparkle-dark, var(--warn-950));--warn-level-30:var(--sparkle-light, var(--warn-100)) var(--sparkle-dark, var(--warn-900));--warn-level-40:var(--sparkle-light, var(--warn-200)) var(--sparkle-dark, var(--warn-800));--warn-level-50:var(--sparkle-light, var(--warn-300)) var(--sparkle-dark, var(--warn-800));--warn-level-50R:var(--sparkle-light, var(--warn-800)) var(--sparkle-dark, var(--warn-300));--warn-level-80:var(--sparkle-light, var(--warn-900)) var(--sparkle-dark, var(--warn-300));--warn-gradient-20:linear-gradient(180deg, var(--warn-400) 0%, var(--warn-500) 50%);--warn-gradient-30:linear-gradient(180deg, var(--warn-300) 0%, var(--warn-500) 50%);--success-level-20:var(--sparkle-light, var(--success-50)) var(--sparkle-dark, var(--success-950));--success-level-30:var(--sparkle-light, var(--success-100)) var(--sparkle-dark, var(--success-900));--success-level-40:var(--sparkle-light, var(--success-200)) var(--sparkle-dark, var(--success-800));--success-level-50:var(--sparkle-light, var(--success-300)) var(--sparkle-dark, var(--success-800));--success-level-50R:var(--sparkle-light, var(--success-800)) var(--sparkle-dark, var(--success-300));--success-level-80:var(--sparkle-light, var(--success-900)) var(--sparkle-dark, var(--success-300));--success-gradient-20:linear-gradient(180deg, var(--success-400) 0%, var(--success-500) 50%);--success-gradient-30:linear-gradient(180deg, var(--success-300) 0%, var(--success-500) 50%);--dark-primary-text:var(--grey-900);--light-primary-text:#fff}*{box-sizing:border-box}html,body,app-root{width:100vw;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--base-level-20)}body{margin:0;font:var(--paragraph-30);color:var(--base-level-70)}</style><link rel="stylesheet" href="styles-6W7ZCKNM.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-6W7ZCKNM.css"></noscript></head>
12
+ <body>
13
+ <app-root></app-root>
14
+ <link rel="modulepreload" href="chunk-XU7PNEZO.js"><link rel="modulepreload" href="chunk-24PLBY6C.js"><link rel="modulepreload" href="chunk-22HCWJS5.js"><link rel="modulepreload" href="chunk-S76TN27U.js"><link rel="modulepreload" href="chunk-N5US3SKW.js"><link rel="modulepreload" href="chunk-PY5HJ5U2.js"><link rel="modulepreload" href="chunk-PH6AAOK4.js"><link rel="modulepreload" href="chunk-ORDBF5MR.js"><script src="main-5KJRELCN.js" type="module"></script></body>
15
+ </html>
@@ -0,0 +1 @@
1
+ import{a as z}from"./chunk-XU7PNEZO.js";import{a as b}from"./chunk-24PLBY6C.js";import{b as G}from"./chunk-22HCWJS5.js";import{b as _}from"./chunk-S76TN27U.js";import{a as L,b as $,c as K,f as W,g as B}from"./chunk-N5US3SKW.js";import{a as J}from"./chunk-PY5HJ5U2.js";import"./chunk-PH6AAOK4.js";import{$ as A,C as k,Lb as x,O as w,T as v,W as N,Wa as l,Z as i,Zb as V,dc as P,i as I,nb as O,r as E,uc as j,vc as F,xc as H,yc as D,zc as U}from"./chunk-ORDBF5MR.js";var q={production:!0,baseUrl:"http://localhost:8200",machineServerUrl:"${WS_URL}",defaultTimeout:3e4};var m=new N("ENVIRONMENT");var Z=[{path:"",children:[{path:"login",loadComponent:()=>import("./chunk-IQSBPGVL.js")},{path:"logout",loadComponent:()=>import("./chunk-CKPPU3GS.js")},{path:"",loadComponent:()=>import("./chunk-L47VTK2X.js"),children:[{path:"",loadComponent:()=>import("./chunk-IOWSWUHM.js")},{path:"add-backup",loadComponent:()=>import("./chunk-YRXI477O.js")},{path:"backup/:id",loadComponent:()=>import("./chunk-6XUWDRDE.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-DYANEO5K.js")},{path:"destination",loadComponent:()=>import("./chunk-RLJJFBQ2.js")},{path:"source-data",loadComponent:()=>import("./chunk-3MM4GLBS.js")},{path:"schedule",loadComponent:()=>import("./chunk-GJTW7UUU.js")},{path:"options",loadComponent:()=>import("./chunk-QQDSFTZV.js")}]},{path:"restore",loadComponent:()=>import("./chunk-NIMPOFJV.js")},{path:"restore-flow/:id",loadComponent:()=>import("./chunk-77NTMJCT.js"),children:[{path:"",redirectTo:"select-files",pathMatch:"full"},{path:"select-files",loadComponent:()=>import("./chunk-VVUYO7E4.js")},{path:"options",loadComponent:()=>import("./chunk-BNNZKRIC.js")}]},{path:"settings",loadComponent:()=>import("./chunk-4FK75Z4C.js")},{path:"about",loadComponent:()=>import("./chunk-UTPCUNNU.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-X2NZ4CJ5.js")},{path:"changelog",loadComponent:()=>import("./chunk-I6QIKK6M.js")},{path:"libraries",loadComponent:()=>import("./chunk-VPEVWKGB.js")},{path:"system-info",loadComponent:()=>import("./chunk-3MTW6FJP.js")},{path:"logs",loadComponent:()=>import("./chunk-RANWFSNY.js")}]}]}]}];var g=0,Q=(t,o)=>{let e=i(z),s=i(K),p=i(m),r=i(_),c=t;return e.tokenSetTime()&&Date.now()-e.tokenSetTime()>15*60*1e3&&g<1?(g++,e.refreshToken().pipe(w(n=>(c=t.clone({headers:t.headers.set("Authorization",`Bearer ${n.AccessToken}`)}),o(c))))):(e.token()&&t.url.startsWith(p.baseUrl)&&(c=t.clone({headers:t.headers.set("Authorization",`Bearer ${e.token()}`)})),o(c).pipe(k(n=>{if(r.error(n.message),n.status===401&&g<1)return g++,e.refreshToken().pipe(w(()=>o(t.clone({headers:t.headers.set("Authorization",`Bearer ${e.token()}`)}))));n.status===401&&(s.navigate(["/logout"]),g=0);let a=`Error Code: ${n.status}, Message: ${n.message}`;return E(()=>a)})))};var oe="1.0.0",X="portal-proxy-client",ne=1,R=class t{#o=1e3;#s=i(m);#t=l("disconnected");#l=l(this.#o);#i=l(!1);#n=l(!1);#a=l(null);isConnectedToMachineServer=this.#n.asReadonly();wsState=this.#t.asReadonly();#p=[];#r={};#e=null;#m=new TextDecoder("utf-8");#c=null;#d=P(()=>{let o=this.#i(),e=this.#l(),s=this.#a();if(!s||!o||!e||e<this.#o){this.#c&&window.clearInterval(this.#c);return}this.#c=window.setInterval(()=>{this.connectToMachineServer(s)},e)});utf8Atob(o){let e=Uint8Array.from(atob(o),p=>p.charCodeAt(0)),s=this.#m.decode(e);return s?JSON.parse(s):null}connectToMachineServer(o,e){let s=e?.reconnect??!1;this.#e&&this.wsState()==="authenticated"&&!s||(this.#e&&this.wsState()!=="authenticated"&&this.#e.close(),this.#e=new WebSocket(this.#s.machineServerUrl),this.#e.onopen=()=>{this.#t.set("connect"),this.#n.set(!0),this.#i.set(!1),this.#a.set(null)},this.#e.onclose=()=>{this.#t.set("disconnected"),this.#n.set(!1),this.#a.set(o),this.#i.set(!0)},this.#e.onerror=()=>{this.#t.set("error")},this.#e.onmessage=p=>{let r=JSON.parse(p.data);if(this.wsState()==="connect"){if(r.type!=="welcome"){this.disconnectFromMachineServer(`Unexpected message type, expected 'welcome' but got '${r.type}'`);return}let n={token:o,publicKey:"",clientVersion:oe,protocolVersion:ne},a=this.createResponse(r,"authportal",n);this.#t.set("welcome"),this.#e?.send(a)}else if(this.wsState()==="welcome"){if(r.type!=="authportal"){this.disconnectFromMachineServer(`Unexpected message type, expected 'authportal' but got '${r.type}'`);return}var c=JSON.parse(r.payload??"");if(c.accepted===!1){this.disconnectFromMachineServer("Authentication failed");return}for(this.#t.set("authenticated"),this.#n.set(!0);this.#p.length>0;){let n=this.#p.pop();n&&this.#r[n.messageId]&&this.activateCommand(n)}}else if(this.wsState()==="authenticated"){if(r.type!=="command"){console.warn(`Unexpected message type, expected 'command' but got '${r.type}'`);return}let n=this.#r[r.messageId];if(n){if(r.errorMessage){n.reject(r.errorMessage);return}else{let a=JSON.parse(r.payload??"");a.body=a?.body==null?null:this.utf8Atob(a.body),n.resolve(a)}delete this.#r[r.messageId],window.clearTimeout(n.timer)}}})}disconnectFromMachineServer(o=null){o&&console.error(o),this.#e?.close(),this.#e=null,this.#t.set("disconnected"),this.#n.set(!1)}createResponse(o,e,s){let p={from:X,to:o.from,type:e,messageId:o.messageId,payload:JSON.stringify(s)};return JSON.stringify(p)}sendCommand(o,e,s,p,r,c,n=5e3){return(this.wsState()==="disconnected"||this.wsState()==="error")&&this.connectToMachineServer(o),new Promise((a,T)=>{let d=crypto.randomUUID(),f={from:X,to:e,type:"command",messageId:d,payload:JSON.stringify({method:s,path:p,body:r,headers:c})},y={resolve:a,reject:T,timer:window.setTimeout(()=>{let C=this.#r[d];C&&(delete this.#r[d],C.reject("Timeout"))},n)};this.#r[d]=y,this.#n()?this.activateCommand(f):this.#p.push(f)})}activateCommand(o){this.#e?.send(JSON.stringify(o))}static \u0275fac=function(e){return new(e||t)};static \u0275prov=v({token:t,factory:t.\u0275fac,providedIn:"root"})};var u=class t{#o=l(null);config=this.#o.asReadonly();setConfig(o){this.#o.set(o)}clearConfig(){this.#o.set(null)}static \u0275fac=function(e){return new(e||t)};static \u0275prov=v({token:t,factory:t.\u0275fac,providedIn:"root"})};function re(t){if(typeof t!="string")return null;let e=new TextEncoder().encode(t);return window.btoa(String.fromCharCode(...e))}var ee=(t,o)=>{let s=i(u).config(),p=i(m);if(s===null)return o(t);let r=i(R),c=re(t.body),n={};t.headers.keys().forEach(h=>{n[h]=t.headers.get(h)??""});let a=t.headers.get("timeout"),T=a!==null?parseInt(a):p.defaultTimeout,d=r.sendCommand(s.accessToken,s.clientId,t.method,t.url,c,n,T);return new I(h=>{d.then(f=>{let y=new j;n!=null&&Object.keys(n).forEach(M=>{y.set(M,n[M])});let C=new F({body:f.body,status:f.code,statusText:"OK",headers:y});h.next(C),h.complete()})})};var te={providers:[V(),W(Z,B()),H(U(),D([ee,Q])),b,{provide:m,useValue:q},G]};var S=class t{#o=i(b);#s=i(L);#t=i(u);sub=null;ngOnInit(){this.sub=this.#s.queryParams.subscribe(({accessToken:o,clientId:e})=>{o?.length&&e?.length&&this.#t.setConfig({accessToken:o,clientId:e})}),this.#o.clearAllNotCurrentVersion()}ngOnDestroy(){this.sub?.unsubscribe()}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["app-root"]],standalone:!0,features:[x],decls:1,vars:0,template:function(e,s){e&1&&O(0,"router-outlet")},dependencies:[$],encapsulation:2})};J(S,te).catch(t=>console.error(t));
package/package.json CHANGED
@@ -1,46 +1,9 @@
1
1
  {
2
+ "version": "0.0.6",
2
3
  "name": "@duplicati/ngclient",
3
- "version": "0.0.1",
4
4
  "license": "MIT",
5
5
  "contributors": [
6
6
  "sp90",
7
7
  "kenkendk"
8
- ],
9
- "scripts": {
10
- "gen:package-json": "bun scripts/generate-package-json.ts",
11
- "gen:font": "bunx sparkle-fg --src='./src' --out='./src/assets' --rootPath='/assets/'",
12
- "watch:font": "bunx sparkle-fg --src='./src' --out='./src/assets' --rootPath='/assets/' --watch",
13
- "ng": "ng",
14
- "start": "bun run watch:font & ng serve",
15
- "build": "bun run gen:font & ng build",
16
- "build:dev": "bun run gen:font && ng build --configuration development",
17
- "build:prod": "bun run gen:font & ng build --configuration production",
18
- "watch": "bun run watch:font & ng build --watch --configuration development",
19
- "gen:openapi": "openapi-ts"
20
- },
21
- "dependencies": {
22
- "@angular/animations": "^18.2.0",
23
- "@angular/cdk": "^18.2.0",
24
- "@angular/common": "^18.2.0",
25
- "@angular/compiler": "^18.2.0",
26
- "@angular/core": "^18.2.0",
27
- "@angular/forms": "^18.2.0",
28
- "@angular/material": "^18.2.0",
29
- "@angular/platform-browser": "^18.2.0",
30
- "@angular/platform-browser-dynamic": "^18.2.0",
31
- "@angular/router": "^18.2.0",
32
- "@sparkle-ui/core": "^0.1.103",
33
- "dayjs": "^1.11.13",
34
- "ngxtension": "^4.0.0",
35
- "rxjs": "~7.8.0",
36
- "tslib": "^2.3.0"
37
- },
38
- "devDependencies": {
39
- "@angular-devkit/build-angular": "^18.2.0",
40
- "@angular/cli": "^18.2.0",
41
- "@angular/compiler-cli": "^18.2.0",
42
- "@hey-api/openapi-ts": "^0.52.9",
43
- "prettier": "^3.3.3",
44
- "typescript": "~5.5.2"
45
- }
46
- }
8
+ ]
9
+ }