@duplicati/ngclient 0.0.164 → 0.0.165
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.
- package/{chunk-WZAZENJC.js → chunk-2DSLXKCS.js} +1 -1
- package/{chunk-4GY6ZWN5.js → chunk-2NUXSSQT.js} +1 -1
- package/{chunk-Z5W4ULWF.js → chunk-2QQJ6ZBU.js} +1 -1
- package/{chunk-EOKEY2WO.js → chunk-43UBTE3L.js} +1 -1
- package/{chunk-VNGJCKGG.js → chunk-4M7H3XII.js} +1 -1
- package/{chunk-TBTQMBCJ.js → chunk-5NPUZRFY.js} +1 -1
- package/{chunk-MSASOFXF.js → chunk-5U6T552I.js} +1 -1
- package/{chunk-75C77QFK.js → chunk-A66RJUYO.js} +1 -1
- package/{chunk-Y4GDUNWN.js → chunk-AAIMJHAS.js} +1 -1
- package/{chunk-VEON764K.js → chunk-BB73BKGN.js} +1 -1
- package/{chunk-ZLLXHZQV.js → chunk-D2ZTG4GG.js} +1 -1
- package/{chunk-DF6VTK4B.js → chunk-DQ7EARGM.js} +1 -1
- package/{chunk-7XXYLQEN.js → chunk-EM7XX5OF.js} +1 -1
- package/chunk-F3EXRAZJ.js +1 -0
- package/{chunk-X4KK6R3X.js → chunk-FG7TM7PO.js} +1 -1
- package/chunk-I3AX7HPO.js +1 -0
- package/{chunk-SVQCV5AE.js → chunk-IEGVSOLM.js} +1 -1
- package/{chunk-O5W6EGCB.js → chunk-IME3RCXO.js} +1 -1
- package/{chunk-OHP7HLY2.js → chunk-JEWYZWQN.js} +1 -1
- package/{chunk-EVJEPFC6.js → chunk-JIVJVJKU.js} +1 -1
- package/{chunk-GOFRTODH.js → chunk-KFYMEXS6.js} +1 -1
- package/{chunk-MCOUCF6F.js → chunk-KGO3OR7H.js} +1 -1
- package/{chunk-2VOU6SHS.js → chunk-KIUZUG7C.js} +1 -1
- package/{chunk-XTFTWEJS.js → chunk-KLODM6IK.js} +1 -1
- package/{chunk-JPRQYGHQ.js → chunk-LEYSCNJE.js} +1 -1
- package/{chunk-465L4ZG5.js → chunk-ORLZQJMN.js} +1 -1
- package/{chunk-35KH4G7Y.js → chunk-P2GZAEQX.js} +1 -1
- package/{chunk-D3LEV6WL.js → chunk-PFZG7ACX.js} +1 -1
- package/{chunk-NZDZUPC5.js → chunk-PZOMPDFS.js} +1 -1
- package/{chunk-E5E5ASXG.js → chunk-Q6RATRPG.js} +1 -1
- package/{chunk-DY4NXNVS.js → chunk-QNEJVXLY.js} +1 -1
- package/{chunk-URAI6X74.js → chunk-RVELYERL.js} +1 -1
- package/{chunk-732GPC5D.js → chunk-SDIOWQX7.js} +1 -1
- package/{chunk-4Z72AON4.js → chunk-SQSTMZR3.js} +1 -1
- package/chunk-TCDG7C5J.js +1 -0
- package/{chunk-2CWLIRUP.js → chunk-TVD2HREV.js} +1 -1
- package/{chunk-MPQNBRD5.js → chunk-TX7FNDPL.js} +1 -1
- package/{chunk-W2SSWLYM.js → chunk-UEUGGMU7.js} +1 -1
- package/{chunk-EUVXYJ2O.js → chunk-ULC4PUPL.js} +1 -1
- package/{chunk-W4KOKNGU.js → chunk-UVPLU2YS.js} +1 -1
- package/{chunk-QMHLXETS.js → chunk-VLCXKEIA.js} +1 -1
- package/{chunk-X5BOJXMC.js → chunk-WNP2PFJP.js} +1 -1
- package/{chunk-CZRQ3GX6.js → chunk-XAUZOGDI.js} +1 -1
- package/{chunk-NME5JWZN.js → chunk-Y27QHU4A.js} +1 -1
- package/{chunk-NFIJYWQI.js → chunk-YGVXQBSL.js} +1 -1
- package/{chunk-SXFSAK5L.js → chunk-YIMKL4H6.js} +1 -1
- package/{chunk-ACZQPL4M.js → chunk-ZNZH3TU5.js} +1 -1
- package/{chunk-2QT6CZNW.js → chunk-ZSP3PG56.js} +1 -1
- package/{chunk-RNWKZDZM.js → chunk-ZTM5RK6J.js} +1 -1
- package/index.html +1 -1
- package/main-NIJHUKOR.js +1 -0
- package/package.json +1 -1
- package/chunk-5RQDJUIT.js +0 -1
- package/chunk-XKKT2NP5.js +0 -1
- package/chunk-XUN5TTJC.js +0 -1
- package/main-75X3EGHT.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ue}from"./chunk-XRI2BFC2.js";import{a as Ye}from"./chunk-5KMPTDRJ.js";import{d as se}from"./chunk-2DP4QU4T.js";import{a as Xe}from"./chunk-4Z72AON4.js";import{a as Je}from"./chunk-HVB6ARTT.js";import{b as _e}from"./chunk-WJDMMKWE.js";import{a as L}from"./chunk-QBHHGHBJ.js";import{a as U}from"./chunk-AE7T2DAH.js";import{b as Y}from"./chunk-TC7HZO7D.js";import{B as X,G as we,K as Be,L as xe,O as Ve,U as We,V as ze,b as ve,c as G,e as k,f as w,i as Ae,j as B,l as Ge,o as x,q as V,r as W,s as ke,t as z,u as J,z as ne}from"./chunk-TGNUULAU.js";import{b as h,d as R}from"./chunk-XUN5TTJC.js";import{la as oe}from"./chunk-NXROYR6L.js";import{$b as v,Ac as ye,B as Oe,Bc as be,Cb as T,Db as r,Eb as l,F as j,Fb as c,Gc as ae,H as O,Hc as $e,Ic as De,Jb as $,Kb as D,L as Ce,Mb as q,P as Ne,Q as Z,Rc as le,Sa as d,Sc as A,Tb as S,Ub as g,V as fe,Vb as E,Wb as Re,Xb as Pe,Zb as C,_,cb as M,ea as N,fa as f,hb as he,i as Ee,kc as Ie,nc as K,o as me,pa as p,pc as Le,qc as Me,sc as ee,tc as te,uc as ie,x as re,xb as y,y as Fe,yb as b}from"./chunk-ZBK64QS2.js";var He=new W,Ke=()=>He.group({passphrase:He.control("")}),pe=class a{#t=_(Y);#e=_(P);#n=_(R);#o=_(h);encryptionForm=this.#e.encryptionForm;creatingTemporaryBackup=p(!1);settings=p([]);next(){let i=this.#e.destinationTargetUrl();if(!i)throw new Error("No target URL");this.creatingTemporaryBackup.set(!0);let e=this.encryptionForm.value?.passphrase??null,t=[];e?t.push({Name:"--passphrase",Value:e}):t.push({Name:"--no-encryption",Value:"true"}),this.settings().forEach(o=>{let n=o.Name?.trim();n&&n!=="--"&&(n.startsWith("--")||(n=`--${n}`),t.push({Name:n,Value:o.Value??""}))}),this.#t.postApiV1Backups({requestBody:{Backup:{TargetURL:i,Settings:t}},temporary:!0}).pipe(O(()=>this.creatingTemporaryBackup.set(!1))).subscribe({next:o=>{let n=o.ID;this.#n.navigate([`/restore-draft/${n}`])},error:o=>{console.error(o)}})}back(){this.#e.isFileRestore()?this.#n.navigate(["destination"],{relativeTo:this.#o.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-restore-encryption"]],decls:16,vars:3,consts:()=>{let i;i=$localize`Enter backup passphrase if defined.`;let e;e=$localize`Password`;let t;t=$localize`Advanced options`;let o;o=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Back `;let n;return n=$localize`${"\uFFFD#15\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `,[e,t,o,n,[3,"submit","formGroup"],["for","password"],["type","password","id","password","placeholder",i,"formControlName","passphrase"],["title",""],[3,"optionsChange","options","hasFreeTextSettings"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){e&1&&(r(0,"form",4),C("submit",function(){return t.next()}),r(1,"sh-form-field")(2,"label",5),E(3,0),l(),c(4,"input",6),l(),r(5,"sh-toggle-card"),$(6,7),E(7,1),D(),r(8,"app-options-list",8),ie("optionsChange",function(n){return te(t.settings,n)||(t.settings=n),n}),l()(),r(9,"div",9)(10,"button",10),C("click",function(){return t.back()}),S(11,2),c(12,"sh-icon"),g(),l(),r(13,"button",11),S(14,3),c(15,"sh-icon"),g(),l()()()),e&2&&(T("formGroup",t.encryptionForm),d(8),ee("options",t.settings),T("hasFreeTextSettings",!0))},dependencies:[z,B,G,k,w,x,V,we,J,X,We,Ue],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}"],changeDetection:0})};var et=()=>({standalone:!0});function tt(a,i){a&1&&c(0,"sh-progress-bar",8)}function it(a,i){if(a&1&&(K(0),ae(1,"bytes")),a&2){let e=v().$implicit;Le(" (",$e(1,1,e.FileSizes),") ")}}function ot(a,i){a&1&&(r(0,"span",16),E(1,4),l())}function nt(a,i){if(a&1&&(r(0,"div",15),K(1),ae(2,"date"),y(3,it,2,3),y(4,ot,2,0,"span",16),l()),a&2){let e=i.$implicit;d(),Me(" ",e.Version,": ",De(2,4,e.Time,"medium")," "),d(2),b(e.FileSizes?3:-1),d(),b(e.IsFullBackup===!1?4:-1)}}function st(a,i){a&1&&c(0,"sh-progress-bar",8)}function rt(a,i){if(a&1&&(r(0,"app-file-tree",14)(1,"label",17),E(2,5),l(),c(3,"input",18),l()),a&2){let e=v(2);T("rootPaths",e.rootPaths())("initialNodes",e.initialNodes())("backupSettings",e.backupSettings())("multiSelect",!0)("showFiles",!0)}}function at(a,i){if(a&1){let e=q();r(0,"sh-select",12),C("cleared",function(){N(e);let o=v();return f(o.abortLoading())}),r(1,"input",13),ie("ngModelChange",function(o){N(e);let n=v();return te(n.selectOption,o)||(n.selectOption=o),f(o)}),l(),he(2,nt,5,7,"ng-template"),l(),y(3,st,1,0,"sh-progress-bar",8),y(4,rt,4,5,"app-file-tree",14)}if(a&2){let e=v();T("options",e.versionOptions())("isClearable",!1),d(),ee("ngModel",e.selectOption),T("ngModelOptions",be(6,et)),d(2),b(e.isRepairing()||e.versionOptionsLoading()||e.loadingRootPath()?3:-1),d(),b(e.showFileTree()?4:-1)}}var ue=new W,Qe=()=>ue.group({filesToRestore:ue.control(""),passphrase:ue.control(null)}),de=class a{#t=_(Y);#e=_(P);#n=_(Xe);#o=_(U);#i=_(R);#s=_(h);#l=_(oe);#a=null;#_=null;#r=p([]);selectFilesForm=this.#e.selectFilesForm;selectFilesFormSignal=this.#e.selectFilesFormSignal;selectOption=this.#e.selectOption;backupId=this.#e.backupId;versionOptionsLoading=this.#e.versionOptionsLoading;versionOptions=this.#e.versionOptions;isFileRestore=this.#e.isFileRestore;needsDatabaseRepair=le(()=>this.#e.backup()?.Backup?.IsTemporary??!0);showFileTree=p(!1);backupSettings=p(null);rootPaths=p([]);initialNodes=p([]);loadingRootPath=p(!1);isRepairing=le(()=>this.#r().length>0);loadedVersions=p({});loadingEffect=A(()=>{if(this.versionOptionsLoading())return;let e=this.versionOptions();if(e&&e?.length>0){let t=e[0].Version;this.selectOption.set(t.toString())}});backupSettingsEffect=A(()=>{let i=this.backupId(),e=this.selectOption(),t=this.isRepairing(),o=this.loadedVersions();if(!e||!i)return;let s=this.versionOptions()?.find(Q=>Q.Version===parseInt(e))?.Time??null;if(!s)return;let u=`${i}+${s}`,F=o[u];if(this.needsDatabaseRepair()&&(!F||t))return;let I={id:i+"",time:s};this.backupSettings.set(I),this.getRootPath(I)});repairEffect=A(()=>{if(!this.needsDatabaseRepair())return;let i=this.selectOption(),e=this.versionOptions();if(i){let t=e.find(s=>s.Version===parseInt(i));if(t===void 0)return;let o=this.backupId(),n=`${o}+${t.Time}`;if(this.#_===n||(this.#_=n,this.#r().includes(n)))return;this.#r.update(s=>[...s,n]),this.#t.postApiV1BackupByIdRepairupdate({id:o,requestBody:{only_paths:!0,time:t.Time}}).pipe(Z(this.abortLoading$),O(()=>{this.#_=null})).subscribe(s=>{let u=s.ID;this.#n.waitForTaskToComplete(u).pipe(j(1)).subscribe(()=>{this.#r.update(F=>F.filter(I=>I!==n)),this.loadedVersions.update(F=>(F[n]=!0,F))})})}});getRootPath(i){let e={id:i.id+"",time:i.time,prefixOnly:!0,folderContents:!1},t=i.id+"";this.isRepairing()||this.#a===t||(this.#a=t,this.loadingRootPath.set(!0),this.showFileTree.set(!1),this.#o.hasV2ListOperations()?this.#t.postApiV2BackupListFolder({requestBody:{BackupId:i.id,Time:i.time,Paths:null,PageSize:0,Page:0}}).pipe(Z(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1),this.#a=null})).subscribe({next:o=>{let n=(o.Data??[]).map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}):this.#t.getApiV1BackupByIdFiles(e).pipe(Z(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1)})).subscribe({next:o=>{let n=o.Files.map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}))}abortLoading$=new Ee;abortLoading(){this.showFileTree.set(!1),this.loadingRootPath.set(!1),this.abortLoading$.next(!0)}displayFn(){let i=this.versionOptions();return e=>{if(!e)return"";let t=i?.find(o=>typeof o.Version=="number"&&o.Version.toString()===e);return t?`${t.Version}: ${this.#l.transform(t.Time,"medium")}`:""}}next(){this.#i.navigate(["options"],{relativeTo:this.#s.parent})}back(){this.#e.isFileRestore()?this.#i.navigate(["encryption"],{relativeTo:this.#s.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-select-files"]],features:[ye([oe])],decls:13,vars:3,consts:()=>{let i;i=$localize`Select files`;let e;e=$localize`${"\uFFFD#9\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#9\uFFFD"}:CLOSE_TAG_SH_ICON: ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let t;t=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `;let o;o=$localize`Select an option...`;let n;n=$localize`(partial)`;let s;return s=$localize`Path`,[["formRef",""],i,e,t,n,s,[3,"submit","formGroup"],[1,"title-30"],[1,"indeterminate","primary"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"],["value","Version",3,"cleared","options","isClearable"],["type","text","placeholder",o,3,"ngModelChange","ngModel","ngModelOptions"],[3,"rootPaths","initialNodes","backupSettings","multiSelect","showFiles"],[1,"custom-option"],[1,"partial"],["for","path"],["type","text","id","path","formControlName","filesToRestore"]]},template:function(e,t){if(e&1){let o=q();r(0,"form",6,0),C("submit",function(){return N(o),f(t.next())}),r(2,"h3",7),E(3,1),l(),y(4,tt,1,0,"sh-progress-bar",8)(5,at,5,7),r(6,"div",9)(7,"button",10),C("click",function(){return N(o),f(t.back())}),S(8,2),c(9,"sh-icon"),g(),l(),r(10,"button",11),S(11,3),c(12,"sh-icon"),g(),l()()()}e&2&&(T("formGroup",t.selectFilesForm),d(4),b(t.versionOptionsLoading()?4:5),d(5),Re(t.isFileRestore()?"Back":"Exit"),Pe(8))},dependencies:[ke,B,G,k,w,Ae,z,x,V,se,X,J,Ve,Be,oe,Je],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}.partial[_ngcontent-%COMP%]{color:var(--base-9);font-style:italic}"],changeDetection:0})};var P=class a{#t=_(R);#e=_(h);#n=_(U);#o=_(ne);#i=_(Y);backupId=p(null);backup=p(null);destinationTargetUrl=p(null);selectFilesForm=Qe();optionsForm=Ze();encryptionForm=Ke();optionsFormSignal=_e(this.optionsForm.valueChanges);selectFilesFormSignal=_e(this.selectFilesForm.valueChanges);selectOption=p(null);versionOptionsLoading=p(!1);versionOptions=p([]);isSubmitting=p(!1);isFileRestore=p(!1);isFullWidthPage=p(!1);#s=p("");#l=p(null);#a=null;testSignal=this.#s.asReadonly();testErrorMessage=this.#l.asReadonly();#_=A(()=>{let i=this.destinationTargetUrl(),e=this.#s(),t=this.#a;this.#a=i,!(e==="testing"||t===null||t===i)&&(this.#s.set(""),this.#l.set(null))});init(i,e=!1){this.backupId.set(i),this.isFileRestore.set(e),e&&this.#t.navigate(["/restore-from-files/destination"]),e||this.getBackup()}setTestState(i,e){this.#s.set(i),this.#l.set(e??null)}updateTargetUrl(i){this.destinationTargetUrl.set(i)}submit(){this.isSubmitting.set(!0);let i=this.backupId();this.backup()?.Backup?.IsTemporary??!1?this.#i.postApiV1BackupByIdCopytotemp({id:this.backupId()??""}).subscribe({next:t=>{this.#r(t.ID??"")},error:t=>this.showErrorDialog($localize`An error occurred while copying the backup to a temporary location: ${t.message}`)}):this.#r(i??"")}showErrorDialog(i){this.#o.open(L,{data:{title:$localize`Error occured`,message:i,confirmText:$localize`OK`,cancelText:void 0},closed:e=>{}})}#r(i){let e=this.optionsForm.value,t=this.selectFilesForm.value,o=this.selectOption(),n=this.versionOptions()?.find(s=>s.Version===(o&&parseInt(o)));this.#i.postApiV1BackupByIdRestore({id:i??"",requestBody:{paths:t.filesToRestore?.split("\0").map(s=>s.endsWith("/")||s.endsWith("\\")?`${s}*`:s)??[],passphrase:t.passphrase??null,time:n?.Time,restore_path:e.restoreFromPath,overwrite:e.handleExisting==="overwrite",permissions:e.permissions,skip_metadata:!e.includeMetadata}}).pipe(O(()=>this.isSubmitting.set(!1))).subscribe({next:s=>{this.#t.navigate([`./${s.ID}`,"progress"],{relativeTo:this.#e})},error:s=>{console.error("restore error",s)}})}exit(){this.#o.open(L,{data:{title:$localize`Confirm exit?`,message:$localize`Are you sure you want to exit?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:i=>{i&&(this.#p(),this.#t.navigate(["/"]))}})}getVersionOptions(){this.versionOptions()}loadFilesetsWithRetryv2(i,e=2){return this.#i.postApiV2BackupListFilesets({requestBody:{BackupId:i}}).pipe(Oe(t=>{let o=t?.error?.body?.StatusCode??t?.error?.requestBody?.StatusCode;return o==="EncryptedStorageNoPassphrase"||o==="FolderMissing"||o==="EmptyRemoteFolder"||e===0?me(()=>t):Fe(1e3).pipe(Ne(()=>this.loadFilesetsWithRetryv2(i,e-1)))}))}getBackup(){let i=this.backupId();this.versionOptionsLoading.set(!0),this.#n.hasV2ListOperations()?re([this.#i.getApiV1BackupById({id:i}),this.loadFilesetsWithRetryv2(i)]).pipe(j(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([e,t])=>{if(t.Error)throw new Error(t.Error);if(!(e.Backup?.IsTemporary??!0)&&e?.Backup?.DBPathExists===!1){this.#o.open(L,{data:{title:$localize`Missing Local Database`,message:$localize`The local database for this backup is missing. Please repair or recreate the local database before restoring.`,confirmText:$localize`OK`,cancelText:void 0},closed:n=>{this.#t.navigate(["/backup",i,"database"])}});return}this.versionOptions.set((t.Data??[]).map(n=>({Version:n.Version??-1,IsFullBackup:n.IsFullBackup??void 0,Time:n.Time??"<missing>",FileCount:n.FileCount??void 0,FileSizes:n.FileSizes??void 0}))),this.backup.set(e)},error:e=>{let t=e?.error?.body?.StatusCode??e?.error?.requestBody?.StatusCode,o=t==="EncryptedStorageNoPassphrase",n=t==="FolderMissing",s=t==="EmptyRemoteFolder",u=$localize`An error occurred while loading the backup filesets: ${e.message}`;o&&(u=$localize`The remote storage is encrypted. Please enter the passphrase to access the backup.`),n&&(u=$localize`The backup storage folder was not found.`),s&&(u=$localize`The backup storage folder does not contain any filesets.`),this.#o.open(L,{data:{title:$localize`Failed to load backup filesets`,message:u,confirmText:$localize`OK`,cancelText:void 0},closed:F=>{this.#t.navigate([o?"/restore-from-files/encryption":"/restore-from-files/destination"])}})}}):re([this.#i.getApiV1BackupById({id:i}),this.#i.getApiV1BackupByIdFilesets({id:i}).pipe(Ce(3))]).pipe(j(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([e,t])=>{this.versionOptions.set(t.map(o=>({Version:o.Version??-1,IsFullBackup:(o.IsFullBackup??1)==1,Time:o.Time??"<missing>",FileCount:o.FileCount??void 0,FileSizes:o.FileSizes??void 0}))),this.backup.set(e)}})}#p(){this.selectFilesForm.reset(),this.optionsForm.reset()}static \u0275fac=function(e){return new(e||a)};static \u0275prov=fe({token:a,factory:a.\u0275fac,providedIn:"root"})};var H=new W,Ze=()=>H.group({restoreFrom:H.control("original"),restoreFromPath:H.control(""),handleExisting:H.control("overwrite"),permissions:H.control(!1),includeMetadata:H.control(!0)}),Se=class a{#t=_(P);#e=_(R);#n=_(h);#o=_(U);#i=_(ne);optionsForm=this.#t.optionsForm;optionsFormSignal=this.#t.optionsFormSignal;isSubmitting=this.#t.isSubmitting;goBack(){this.#e.navigate(["select-files"],{relativeTo:this.#n.parent})}submit(){let i=this.#t.selectFilesFormSignal()?.filesToRestore??[];if(i.length>0&&this.optionsFormSignal()?.restoreFrom=="original"&&(i[0].includes("/")?"/":"\\")!==this.#o.systemInfo()?.DirectorySeparator){this.#i.open(L,{data:{title:$localize`Confirm target folder`,message:$localize`This backup was created on another operating system. Restoring files without specifying a destination folder can cause files to be restored in unexpected places. Are you sure you want to continue without choosing a destination folder?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:t=>{t&&this.#t.submit()}});return}this.#t.submit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-advanced-options-settings"]],decls:42,vars:7,consts:()=>{let i;i=$localize`Restore options`;let e;e=$localize`Where do you want to restore files to?`;let t;t=$localize` Original location ${"\uFFFD#9\uFFFD\uFFFD/#9\uFFFD"}:TAG_INPUT:`;let o;o=$localize` Pick location ${"\uFFFD#12\uFFFD\uFFFD/#12\uFFFD"}:TAG_INPUT:`;let n;n=$localize`How do you want to handle existing files?`;let s;s=$localize` Overwrite ${"\uFFFD#22\uFFFD\uFFFD/#22\uFFFD"}:TAG_INPUT:`;let u;u=$localize` Save different versions with timestamp in file name ${"\uFFFD#25\uFFFD\uFFFD/#25\uFFFD"}:TAG_INPUT:`;let F;F=$localize`Metadata settings`;let I;I=$localize` Restore file metadata ${"\uFFFD#31\uFFFD\uFFFD/#31\uFFFD"}:TAG_INPUT:`;let Q;Q=$localize` Restore read/write permissions ${"\uFFFD#34\uFFFD\uFFFD/#34\uFFFD"}:TAG_INPUT:`;let ge;ge=$localize`${"\uFFFD#38\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#38\uFFFD"}:CLOSE_TAG_SH_ICON: Go back `;let Te;return Te=$localize`${"\uFFFD#41\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#41\uFFFD"}:CLOSE_TAG_SH_ICON: Submit `,[["formRef",""],i,e,t,o,n,s,u,F,I,Q,ge,Te,[3,"submit","formGroup"],[1,"title-30"],[3,"disallowToggle"],["title",""],[1,"raised","primary"],["type","radio","name","restoreFrom","value","original","formControlName","restoreFrom"],["type","radio","name","restoreFrom","value","pickLocation","formControlName","restoreFrom"],[3,"disabled","enableCreateFolder"],["for","path"],["type","text","id","path","formControlName","restoreFromPath"],["type","radio","name","handleExisting","value","overwrite","formControlName","handleExisting"],["type","radio","name","handleExisting","value","saveTimestamp","formControlName","handleExisting"],[1,"primary","raised"],["type","checkbox","formControlName","includeMetadata"],["type","checkbox","formControlName","permissions"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){if(e&1){let o=q();r(0,"form",13,0),C("submit",function(){return N(o),f(t.submit())}),r(2,"h3",14),E(3,1),l(),r(4,"app-toggle-card",15),$(5,16),E(6,2),D(),r(7,"sh-radio",17),S(8,3),c(9,"input",18),g(),l(),r(10,"sh-radio",17),S(11,4),c(12,"input",19),g(),l(),r(13,"app-file-tree",20)(14,"label",21),K(15,"Path"),l(),c(16,"input",22),l()(),r(17,"app-toggle-card",15),$(18,16),E(19,5),D(),r(20,"sh-radio",17),S(21,6),c(22,"input",23),g(),l(),r(23,"sh-radio",17),S(24,7),c(25,"input",24),g(),l()(),r(26,"app-toggle-card"),$(27,16),E(28,8),D(),r(29,"sh-toggle",25),S(30,9),c(31,"input",26),g(),l(),r(32,"sh-toggle",25),S(33,10),c(34,"input",27),g(),l()(),r(35,"div",28)(36,"button",29),C("click",function(){return N(o),f(t.goBack())}),S(37,11),c(38,"sh-icon"),g(),l(),r(39,"button",30),S(40,12),c(41,"sh-icon"),g(),l()()()}if(e&2){let o;T("formGroup",t.optionsForm),d(4),T("disallowToggle",!0),d(9),T("disabled",((o=t.optionsFormSignal())==null?null:o.restoreFrom)!=="pickLocation")("enableCreateFolder",!0),d(4),T("disallowToggle",!0),d(22),Ie("loader",t.isSubmitting())}},dependencies:[z,B,G,ve,Ge,k,w,x,V,Ye,se,ze,xe,X,J],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}"],changeDetection:0})};export{Ze as a,Se as b,Ke as c,pe as d,Qe as e,de as f,P as g};
|
|
1
|
+
import{a as Ue}from"./chunk-XRI2BFC2.js";import{a as Ye}from"./chunk-5KMPTDRJ.js";import{d as se}from"./chunk-2DP4QU4T.js";import{a as Xe}from"./chunk-SQSTMZR3.js";import{a as Je}from"./chunk-HVB6ARTT.js";import{b as _e}from"./chunk-WJDMMKWE.js";import{a as L}from"./chunk-QBHHGHBJ.js";import{a as U}from"./chunk-AE7T2DAH.js";import{b as Y}from"./chunk-TC7HZO7D.js";import{B as X,G as we,K as Be,L as xe,O as Ve,U as We,V as ze,b as ve,c as G,e as k,f as w,i as Ae,j as B,l as Ge,o as x,q as V,r as W,s as ke,t as z,u as J,z as ne}from"./chunk-TGNUULAU.js";import{b as h,d as R}from"./chunk-F3EXRAZJ.js";import{la as oe}from"./chunk-NXROYR6L.js";import{$b as v,Ac as ye,B as Oe,Bc as be,Cb as T,Db as r,Eb as l,F as j,Fb as c,Gc as ae,H as O,Hc as $e,Ic as De,Jb as $,Kb as D,L as Ce,Mb as q,P as Ne,Q as Z,Rc as le,Sa as d,Sc as A,Tb as S,Ub as g,V as fe,Vb as E,Wb as Re,Xb as Pe,Zb as C,_,cb as M,ea as N,fa as f,hb as he,i as Ee,kc as Ie,nc as K,o as me,pa as p,pc as Le,qc as Me,sc as ee,tc as te,uc as ie,x as re,xb as y,y as Fe,yb as b}from"./chunk-ZBK64QS2.js";var He=new W,Ke=()=>He.group({passphrase:He.control("")}),pe=class a{#t=_(Y);#e=_(P);#n=_(R);#o=_(h);encryptionForm=this.#e.encryptionForm;creatingTemporaryBackup=p(!1);settings=p([]);next(){let i=this.#e.destinationTargetUrl();if(!i)throw new Error("No target URL");this.creatingTemporaryBackup.set(!0);let e=this.encryptionForm.value?.passphrase??null,t=[];e?t.push({Name:"--passphrase",Value:e}):t.push({Name:"--no-encryption",Value:"true"}),this.settings().forEach(o=>{let n=o.Name?.trim();n&&n!=="--"&&(n.startsWith("--")||(n=`--${n}`),t.push({Name:n,Value:o.Value??""}))}),this.#t.postApiV1Backups({requestBody:{Backup:{TargetURL:i,Settings:t}},temporary:!0}).pipe(O(()=>this.creatingTemporaryBackup.set(!1))).subscribe({next:o=>{let n=o.ID;this.#n.navigate([`/restore-draft/${n}`])},error:o=>{console.error(o)}})}back(){this.#e.isFileRestore()?this.#n.navigate(["destination"],{relativeTo:this.#o.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-restore-encryption"]],decls:16,vars:3,consts:()=>{let i;i=$localize`Enter backup passphrase if defined.`;let e;e=$localize`Password`;let t;t=$localize`Advanced options`;let o;o=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Back `;let n;return n=$localize`${"\uFFFD#15\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `,[e,t,o,n,[3,"submit","formGroup"],["for","password"],["type","password","id","password","placeholder",i,"formControlName","passphrase"],["title",""],[3,"optionsChange","options","hasFreeTextSettings"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){e&1&&(r(0,"form",4),C("submit",function(){return t.next()}),r(1,"sh-form-field")(2,"label",5),E(3,0),l(),c(4,"input",6),l(),r(5,"sh-toggle-card"),$(6,7),E(7,1),D(),r(8,"app-options-list",8),ie("optionsChange",function(n){return te(t.settings,n)||(t.settings=n),n}),l()(),r(9,"div",9)(10,"button",10),C("click",function(){return t.back()}),S(11,2),c(12,"sh-icon"),g(),l(),r(13,"button",11),S(14,3),c(15,"sh-icon"),g(),l()()()),e&2&&(T("formGroup",t.encryptionForm),d(8),ee("options",t.settings),T("hasFreeTextSettings",!0))},dependencies:[z,B,G,k,w,x,V,we,J,X,We,Ue],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}"],changeDetection:0})};var et=()=>({standalone:!0});function tt(a,i){a&1&&c(0,"sh-progress-bar",8)}function it(a,i){if(a&1&&(K(0),ae(1,"bytes")),a&2){let e=v().$implicit;Le(" (",$e(1,1,e.FileSizes),") ")}}function ot(a,i){a&1&&(r(0,"span",16),E(1,4),l())}function nt(a,i){if(a&1&&(r(0,"div",15),K(1),ae(2,"date"),y(3,it,2,3),y(4,ot,2,0,"span",16),l()),a&2){let e=i.$implicit;d(),Me(" ",e.Version,": ",De(2,4,e.Time,"medium")," "),d(2),b(e.FileSizes?3:-1),d(),b(e.IsFullBackup===!1?4:-1)}}function st(a,i){a&1&&c(0,"sh-progress-bar",8)}function rt(a,i){if(a&1&&(r(0,"app-file-tree",14)(1,"label",17),E(2,5),l(),c(3,"input",18),l()),a&2){let e=v(2);T("rootPaths",e.rootPaths())("initialNodes",e.initialNodes())("backupSettings",e.backupSettings())("multiSelect",!0)("showFiles",!0)}}function at(a,i){if(a&1){let e=q();r(0,"sh-select",12),C("cleared",function(){N(e);let o=v();return f(o.abortLoading())}),r(1,"input",13),ie("ngModelChange",function(o){N(e);let n=v();return te(n.selectOption,o)||(n.selectOption=o),f(o)}),l(),he(2,nt,5,7,"ng-template"),l(),y(3,st,1,0,"sh-progress-bar",8),y(4,rt,4,5,"app-file-tree",14)}if(a&2){let e=v();T("options",e.versionOptions())("isClearable",!1),d(),ee("ngModel",e.selectOption),T("ngModelOptions",be(6,et)),d(2),b(e.isRepairing()||e.versionOptionsLoading()||e.loadingRootPath()?3:-1),d(),b(e.showFileTree()?4:-1)}}var ue=new W,Qe=()=>ue.group({filesToRestore:ue.control(""),passphrase:ue.control(null)}),de=class a{#t=_(Y);#e=_(P);#n=_(Xe);#o=_(U);#i=_(R);#s=_(h);#l=_(oe);#a=null;#_=null;#r=p([]);selectFilesForm=this.#e.selectFilesForm;selectFilesFormSignal=this.#e.selectFilesFormSignal;selectOption=this.#e.selectOption;backupId=this.#e.backupId;versionOptionsLoading=this.#e.versionOptionsLoading;versionOptions=this.#e.versionOptions;isFileRestore=this.#e.isFileRestore;needsDatabaseRepair=le(()=>this.#e.backup()?.Backup?.IsTemporary??!0);showFileTree=p(!1);backupSettings=p(null);rootPaths=p([]);initialNodes=p([]);loadingRootPath=p(!1);isRepairing=le(()=>this.#r().length>0);loadedVersions=p({});loadingEffect=A(()=>{if(this.versionOptionsLoading())return;let e=this.versionOptions();if(e&&e?.length>0){let t=e[0].Version;this.selectOption.set(t.toString())}});backupSettingsEffect=A(()=>{let i=this.backupId(),e=this.selectOption(),t=this.isRepairing(),o=this.loadedVersions();if(!e||!i)return;let s=this.versionOptions()?.find(Q=>Q.Version===parseInt(e))?.Time??null;if(!s)return;let u=`${i}+${s}`,F=o[u];if(this.needsDatabaseRepair()&&(!F||t))return;let I={id:i+"",time:s};this.backupSettings.set(I),this.getRootPath(I)});repairEffect=A(()=>{if(!this.needsDatabaseRepair())return;let i=this.selectOption(),e=this.versionOptions();if(i){let t=e.find(s=>s.Version===parseInt(i));if(t===void 0)return;let o=this.backupId(),n=`${o}+${t.Time}`;if(this.#_===n||(this.#_=n,this.#r().includes(n)))return;this.#r.update(s=>[...s,n]),this.#t.postApiV1BackupByIdRepairupdate({id:o,requestBody:{only_paths:!0,time:t.Time}}).pipe(Z(this.abortLoading$),O(()=>{this.#_=null})).subscribe(s=>{let u=s.ID;this.#n.waitForTaskToComplete(u).pipe(j(1)).subscribe(()=>{this.#r.update(F=>F.filter(I=>I!==n)),this.loadedVersions.update(F=>(F[n]=!0,F))})})}});getRootPath(i){let e={id:i.id+"",time:i.time,prefixOnly:!0,folderContents:!1},t=i.id+"";this.isRepairing()||this.#a===t||(this.#a=t,this.loadingRootPath.set(!0),this.showFileTree.set(!1),this.#o.hasV2ListOperations()?this.#t.postApiV2BackupListFolder({requestBody:{BackupId:i.id,Time:i.time,Paths:null,PageSize:0,Page:0}}).pipe(Z(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1),this.#a=null})).subscribe({next:o=>{let n=(o.Data??[]).map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}):this.#t.getApiV1BackupByIdFiles(e).pipe(Z(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1)})).subscribe({next:o=>{let n=o.Files.map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}))}abortLoading$=new Ee;abortLoading(){this.showFileTree.set(!1),this.loadingRootPath.set(!1),this.abortLoading$.next(!0)}displayFn(){let i=this.versionOptions();return e=>{if(!e)return"";let t=i?.find(o=>typeof o.Version=="number"&&o.Version.toString()===e);return t?`${t.Version}: ${this.#l.transform(t.Time,"medium")}`:""}}next(){this.#i.navigate(["options"],{relativeTo:this.#s.parent})}back(){this.#e.isFileRestore()?this.#i.navigate(["encryption"],{relativeTo:this.#s.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-select-files"]],features:[ye([oe])],decls:13,vars:3,consts:()=>{let i;i=$localize`Select files`;let e;e=$localize`${"\uFFFD#9\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#9\uFFFD"}:CLOSE_TAG_SH_ICON: ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let t;t=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `;let o;o=$localize`Select an option...`;let n;n=$localize`(partial)`;let s;return s=$localize`Path`,[["formRef",""],i,e,t,n,s,[3,"submit","formGroup"],[1,"title-30"],[1,"indeterminate","primary"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"],["value","Version",3,"cleared","options","isClearable"],["type","text","placeholder",o,3,"ngModelChange","ngModel","ngModelOptions"],[3,"rootPaths","initialNodes","backupSettings","multiSelect","showFiles"],[1,"custom-option"],[1,"partial"],["for","path"],["type","text","id","path","formControlName","filesToRestore"]]},template:function(e,t){if(e&1){let o=q();r(0,"form",6,0),C("submit",function(){return N(o),f(t.next())}),r(2,"h3",7),E(3,1),l(),y(4,tt,1,0,"sh-progress-bar",8)(5,at,5,7),r(6,"div",9)(7,"button",10),C("click",function(){return N(o),f(t.back())}),S(8,2),c(9,"sh-icon"),g(),l(),r(10,"button",11),S(11,3),c(12,"sh-icon"),g(),l()()()}e&2&&(T("formGroup",t.selectFilesForm),d(4),b(t.versionOptionsLoading()?4:5),d(5),Re(t.isFileRestore()?"Back":"Exit"),Pe(8))},dependencies:[ke,B,G,k,w,Ae,z,x,V,se,X,J,Ve,Be,oe,Je],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}.partial[_ngcontent-%COMP%]{color:var(--base-9);font-style:italic}"],changeDetection:0})};var P=class a{#t=_(R);#e=_(h);#n=_(U);#o=_(ne);#i=_(Y);backupId=p(null);backup=p(null);destinationTargetUrl=p(null);selectFilesForm=Qe();optionsForm=Ze();encryptionForm=Ke();optionsFormSignal=_e(this.optionsForm.valueChanges);selectFilesFormSignal=_e(this.selectFilesForm.valueChanges);selectOption=p(null);versionOptionsLoading=p(!1);versionOptions=p([]);isSubmitting=p(!1);isFileRestore=p(!1);isFullWidthPage=p(!1);#s=p("");#l=p(null);#a=null;testSignal=this.#s.asReadonly();testErrorMessage=this.#l.asReadonly();#_=A(()=>{let i=this.destinationTargetUrl(),e=this.#s(),t=this.#a;this.#a=i,!(e==="testing"||t===null||t===i)&&(this.#s.set(""),this.#l.set(null))});init(i,e=!1){this.backupId.set(i),this.isFileRestore.set(e),e&&this.#t.navigate(["/restore-from-files/destination"]),e||this.getBackup()}setTestState(i,e){this.#s.set(i),this.#l.set(e??null)}updateTargetUrl(i){this.destinationTargetUrl.set(i)}submit(){this.isSubmitting.set(!0);let i=this.backupId();this.backup()?.Backup?.IsTemporary??!1?this.#i.postApiV1BackupByIdCopytotemp({id:this.backupId()??""}).subscribe({next:t=>{this.#r(t.ID??"")},error:t=>this.showErrorDialog($localize`An error occurred while copying the backup to a temporary location: ${t.message}`)}):this.#r(i??"")}showErrorDialog(i){this.#o.open(L,{data:{title:$localize`Error occured`,message:i,confirmText:$localize`OK`,cancelText:void 0},closed:e=>{}})}#r(i){let e=this.optionsForm.value,t=this.selectFilesForm.value,o=this.selectOption(),n=this.versionOptions()?.find(s=>s.Version===(o&&parseInt(o)));this.#i.postApiV1BackupByIdRestore({id:i??"",requestBody:{paths:t.filesToRestore?.split("\0").map(s=>s.endsWith("/")||s.endsWith("\\")?`${s}*`:s)??[],passphrase:t.passphrase??null,time:n?.Time,restore_path:e.restoreFromPath,overwrite:e.handleExisting==="overwrite",permissions:e.permissions,skip_metadata:!e.includeMetadata}}).pipe(O(()=>this.isSubmitting.set(!1))).subscribe({next:s=>{this.#t.navigate([`./${s.ID}`,"progress"],{relativeTo:this.#e})},error:s=>{console.error("restore error",s)}})}exit(){this.#o.open(L,{data:{title:$localize`Confirm exit?`,message:$localize`Are you sure you want to exit?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:i=>{i&&(this.#p(),this.#t.navigate(["/"]))}})}getVersionOptions(){this.versionOptions()}loadFilesetsWithRetryv2(i,e=2){return this.#i.postApiV2BackupListFilesets({requestBody:{BackupId:i}}).pipe(Oe(t=>{let o=t?.error?.body?.StatusCode??t?.error?.requestBody?.StatusCode;return o==="EncryptedStorageNoPassphrase"||o==="FolderMissing"||o==="EmptyRemoteFolder"||e===0?me(()=>t):Fe(1e3).pipe(Ne(()=>this.loadFilesetsWithRetryv2(i,e-1)))}))}getBackup(){let i=this.backupId();this.versionOptionsLoading.set(!0),this.#n.hasV2ListOperations()?re([this.#i.getApiV1BackupById({id:i}),this.loadFilesetsWithRetryv2(i)]).pipe(j(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([e,t])=>{if(t.Error)throw new Error(t.Error);if(!(e.Backup?.IsTemporary??!0)&&e?.Backup?.DBPathExists===!1){this.#o.open(L,{data:{title:$localize`Missing Local Database`,message:$localize`The local database for this backup is missing. Please repair or recreate the local database before restoring.`,confirmText:$localize`OK`,cancelText:void 0},closed:n=>{this.#t.navigate(["/backup",i,"database"])}});return}this.versionOptions.set((t.Data??[]).map(n=>({Version:n.Version??-1,IsFullBackup:n.IsFullBackup??void 0,Time:n.Time??"<missing>",FileCount:n.FileCount??void 0,FileSizes:n.FileSizes??void 0}))),this.backup.set(e)},error:e=>{let t=e?.error?.body?.StatusCode??e?.error?.requestBody?.StatusCode,o=t==="EncryptedStorageNoPassphrase",n=t==="FolderMissing",s=t==="EmptyRemoteFolder",u=$localize`An error occurred while loading the backup filesets: ${e.message}`;o&&(u=$localize`The remote storage is encrypted. Please enter the passphrase to access the backup.`),n&&(u=$localize`The backup storage folder was not found.`),s&&(u=$localize`The backup storage folder does not contain any filesets.`),this.#o.open(L,{data:{title:$localize`Failed to load backup filesets`,message:u,confirmText:$localize`OK`,cancelText:void 0},closed:F=>{this.#t.navigate([o?"/restore-from-files/encryption":"/restore-from-files/destination"])}})}}):re([this.#i.getApiV1BackupById({id:i}),this.#i.getApiV1BackupByIdFilesets({id:i}).pipe(Ce(3))]).pipe(j(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([e,t])=>{this.versionOptions.set(t.map(o=>({Version:o.Version??-1,IsFullBackup:(o.IsFullBackup??1)==1,Time:o.Time??"<missing>",FileCount:o.FileCount??void 0,FileSizes:o.FileSizes??void 0}))),this.backup.set(e)}})}#p(){this.selectFilesForm.reset(),this.optionsForm.reset()}static \u0275fac=function(e){return new(e||a)};static \u0275prov=fe({token:a,factory:a.\u0275fac,providedIn:"root"})};var H=new W,Ze=()=>H.group({restoreFrom:H.control("original"),restoreFromPath:H.control(""),handleExisting:H.control("overwrite"),permissions:H.control(!1),includeMetadata:H.control(!0)}),Se=class a{#t=_(P);#e=_(R);#n=_(h);#o=_(U);#i=_(ne);optionsForm=this.#t.optionsForm;optionsFormSignal=this.#t.optionsFormSignal;isSubmitting=this.#t.isSubmitting;goBack(){this.#e.navigate(["select-files"],{relativeTo:this.#n.parent})}submit(){let i=this.#t.selectFilesFormSignal()?.filesToRestore??[];if(i.length>0&&this.optionsFormSignal()?.restoreFrom=="original"&&(i[0].includes("/")?"/":"\\")!==this.#o.systemInfo()?.DirectorySeparator){this.#i.open(L,{data:{title:$localize`Confirm target folder`,message:$localize`This backup was created on another operating system. Restoring files without specifying a destination folder can cause files to be restored in unexpected places. Are you sure you want to continue without choosing a destination folder?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:t=>{t&&this.#t.submit()}});return}this.#t.submit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-advanced-options-settings"]],decls:42,vars:7,consts:()=>{let i;i=$localize`Restore options`;let e;e=$localize`Where do you want to restore files to?`;let t;t=$localize` Original location ${"\uFFFD#9\uFFFD\uFFFD/#9\uFFFD"}:TAG_INPUT:`;let o;o=$localize` Pick location ${"\uFFFD#12\uFFFD\uFFFD/#12\uFFFD"}:TAG_INPUT:`;let n;n=$localize`How do you want to handle existing files?`;let s;s=$localize` Overwrite ${"\uFFFD#22\uFFFD\uFFFD/#22\uFFFD"}:TAG_INPUT:`;let u;u=$localize` Save different versions with timestamp in file name ${"\uFFFD#25\uFFFD\uFFFD/#25\uFFFD"}:TAG_INPUT:`;let F;F=$localize`Metadata settings`;let I;I=$localize` Restore file metadata ${"\uFFFD#31\uFFFD\uFFFD/#31\uFFFD"}:TAG_INPUT:`;let Q;Q=$localize` Restore read/write permissions ${"\uFFFD#34\uFFFD\uFFFD/#34\uFFFD"}:TAG_INPUT:`;let ge;ge=$localize`${"\uFFFD#38\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#38\uFFFD"}:CLOSE_TAG_SH_ICON: Go back `;let Te;return Te=$localize`${"\uFFFD#41\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#41\uFFFD"}:CLOSE_TAG_SH_ICON: Submit `,[["formRef",""],i,e,t,o,n,s,u,F,I,Q,ge,Te,[3,"submit","formGroup"],[1,"title-30"],[3,"disallowToggle"],["title",""],[1,"raised","primary"],["type","radio","name","restoreFrom","value","original","formControlName","restoreFrom"],["type","radio","name","restoreFrom","value","pickLocation","formControlName","restoreFrom"],[3,"disabled","enableCreateFolder"],["for","path"],["type","text","id","path","formControlName","restoreFromPath"],["type","radio","name","handleExisting","value","overwrite","formControlName","handleExisting"],["type","radio","name","handleExisting","value","saveTimestamp","formControlName","handleExisting"],[1,"primary","raised"],["type","checkbox","formControlName","includeMetadata"],["type","checkbox","formControlName","permissions"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){if(e&1){let o=q();r(0,"form",13,0),C("submit",function(){return N(o),f(t.submit())}),r(2,"h3",14),E(3,1),l(),r(4,"app-toggle-card",15),$(5,16),E(6,2),D(),r(7,"sh-radio",17),S(8,3),c(9,"input",18),g(),l(),r(10,"sh-radio",17),S(11,4),c(12,"input",19),g(),l(),r(13,"app-file-tree",20)(14,"label",21),K(15,"Path"),l(),c(16,"input",22),l()(),r(17,"app-toggle-card",15),$(18,16),E(19,5),D(),r(20,"sh-radio",17),S(21,6),c(22,"input",23),g(),l(),r(23,"sh-radio",17),S(24,7),c(25,"input",24),g(),l()(),r(26,"app-toggle-card"),$(27,16),E(28,8),D(),r(29,"sh-toggle",25),S(30,9),c(31,"input",26),g(),l(),r(32,"sh-toggle",25),S(33,10),c(34,"input",27),g(),l()(),r(35,"div",28)(36,"button",29),C("click",function(){return N(o),f(t.goBack())}),S(37,11),c(38,"sh-icon"),g(),l(),r(39,"button",30),S(40,12),c(41,"sh-icon"),g(),l()()()}if(e&2){let o;T("formGroup",t.optionsForm),d(4),T("disallowToggle",!0),d(9),T("disabled",((o=t.optionsFormSignal())==null?null:o.restoreFrom)!=="pickLocation")("enableCreateFolder",!0),d(4),T("disallowToggle",!0),d(22),Ie("loader",t.isSubmitting())}},dependencies:[z,B,G,ve,Ge,k,w,x,V,Ye,se,ze,xe,X,J],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}"],changeDetection:0})};export{Ze as a,Se as b,Ke as c,pe as d,Qe as e,de as f,P as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ie}from"./chunk-MPQNBRD5.js";import{a as Me}from"./chunk-GNJTDWT4.js";import{a as Re}from"./chunk-75C77QFK.js";import{a as fe}from"./chunk-4Z72AON4.js";import{a as De}from"./chunk-E6DCTQ34.js";import{a as Pe}from"./chunk-AE7T2DAH.js";import{b as Te}from"./chunk-SVQCV5AE.js";import{b as h}from"./chunk-TC7HZO7D.js";import{B as M,D as Ee,G as me,K as Oe,L as Ne,N as Ae,O as Fe,c as ce,e as Se,i as ue,k as de,s as V,u as pe,w as Ce,z as ge}from"./chunk-TGNUULAU.js";import{e as re}from"./chunk-XUN5TTJC.js";import{la as le}from"./chunk-NXROYR6L.js";import{$b as E,Ab as ne,Bb as ie,Bc as x,Cb as m,Db as a,Eb as _,Fb as p,Gc as H,H as $,Hc as ae,Ic as _e,Mb as f,Rc as G,Sa as r,Tb as C,Ub as g,Vb as S,Wc as w,Yb as oe,Zb as c,_ as u,cb as A,ea as O,fa as N,jc as se,kc as R,nc as I,pa as d,pc as k,qc as X,sc as b,tc as y,uc as L,xb as F,yb as P,zb as te}from"./chunk-ZBK64QS2.js";function Ge(o,t){if(o&1){let n=f();a(0,"sh-radio",10),c("click",function(){let i=O(n).$implicit,s=E();return N(s.pauseOption.set(i.value))}),I(1),_()}if(o&2){let n=t.$implicit,e=E();R("active",e.pauseOption()===n.value),r(),k(" ",n.label," ")}}var Be=[{label:$localize`5 minutes`,value:"5m"},{label:$localize`10 minutes`,value:"10m"},{label:$localize`15 minutes`,value:"15m"},{label:$localize`30 minutes`,value:"30m"},{label:$localize`1 hour`,value:"1h"},{label:$localize`4 hours`,value:"4h"},{label:$localize`8 hours`,value:"8h"},{label:$localize`24 hours`,value:"24h"},{label:$localize`Until resumed`,value:void 0}],z=class o{#e=u(h);pauseOptions=d(Be);closed=w();isSubmitting=d(!1);pauseTransfers=d(!1);pauseOption=d(void 0);submit(){this.isSubmitting.set(!0);let t=this.pauseTransfers()||null,n=this.pauseOption();this.#e.postApiV1ServerstatePause({duration:n,pauseTransfers:t}).pipe($(()=>this.isSubmitting.set(!1))).subscribe({next:e=>{this.closed.emit()}})}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-pause-dialog"]],outputs:{closed:"closed"},decls:17,vars:4,consts:()=>{let t;t=$localize`Pause settings`;let n;n=$localize` Also pause transfers `;let e;e=$localize`If you pause transfers they could time out and cause retries or failures.`;let i;i=$localize`Cancel`;let s;return s=$localize` Update settings `,[t,n,e,i,s,["header",""],["content",""],[1,"radios"],[1,"primary","raised",3,"active"],[1,"check-wrap"],[1,"primary","raised",3,"click"],["type","warning"],["footer",""],["shButton","",3,"click"],["shButton","",1,"raised","primary",3,"click"]]},template:function(n,e){n&1&&(a(0,"header",5)(1,"h3"),S(2,0),_()(),a(3,"div",6)(4,"div",7),ne(5,Ge,2,3,"sh-radio",8,te),_(),a(7,"div",9)(8,"sh-checkbox",10),c("click",function(){return e.pauseTransfers.set(!e.pauseTransfers())}),S(9,1),_(),a(10,"sh-alert",11),S(11,2),_()()(),a(12,"footer",12)(13,"button",13),c("click",function(){return e.closed.emit()}),S(14,3),_(),a(15,"button",14),c("click",function(){return e.submit()}),S(16,4),_()()),n&2&&(r(5),ie(e.pauseOptions()),r(3),R("active",e.pauseTransfers()),r(7),R("loader",e.isSubmitting()))},dependencies:[V,Ne,Ee,Ce,M],styles:["[_nghost-%COMP%]{--dialog-p: 1.5rem;display:block}h3[_ngcontent-%COMP%]{font:var(--title-30)}.radios[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.check-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;padding:2rem 0 0}"],changeDetection:0})};var he=()=>["/connect/logon"],Ue=()=>["/settings"];function $e(o,t){if(o&1){let n=f();a(0,"div",7),c("click",function(){O(n);let i=E();return N(i.resetAndRetry())}),C(1,0),p(2,"div",8),g(),_()}}function ke(o,t){o&1&&(a(0,"div",6),C(1,1),p(2,"div",9),g(),_()),o&2&&m("routerLink",x(1,he))}function xe(o,t){o&1&&(a(0,"div",6),C(1,2),p(2,"div",8),g(),_()),o&2&&m("routerLink",x(1,he))}function we(o,t){if(o&1){let n=f();a(0,"div",7),c("click",function(){O(n);let i=E();return N(i.claim())}),C(1,3),p(2,"div",10),g(),_()}}function Ve(o,t){o&1&&(a(0,"div",6),C(1,4),p(2,"div",11),g(),_()),o&2&&m("routerLink",x(1,Ue))}var B=class o{#e=u(De);state=this.#e.state;ngOnInit(){this.#e.refreshRemoteControlStatus()}claim(){let t=this.#e.claimUrl();t&&window.open(t,"_blank")}resetAndRetry(){this.#e.cancelRemoteRegistration(),this.#e.beginRemoteRegistration()}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-remote-connectivity-status"]],decls:5,vars:1,consts:()=>{let t;t=$localize` Click to register ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let n;n=$localize` Registering ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let e;e=$localize` Click to register ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let i;i=$localize` Click to claim ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let s;return s=$localize` Connected ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`,[t,n,e,i,s,[1,"connectivity-status"],[1,"connectivity-status",3,"routerLink"],[1,"connectivity-status",3,"click"],[1,"status"],[1,"status","warning","blinking"],[1,"status","success","blinking"],[1,"status","success"]]},template:function(n,e){if(n&1&&F(0,$e,3,0,"div",5)(1,ke,3,2,"div",6)(2,xe,3,2,"div",6)(3,we,3,0,"div",5)(4,Ve,3,2,"div",6),n&2){let i=e.state()==="unknown"||e.state()==="inactive"||e.state()==="registeringfaulted",s=e.state()==="registeringfaulted",l=e.state()==="registering",T=e.state()==="registered",D=e.state()==="connected"||e.state()==="disabled"||e.state()==="connecting";P(s?0:l?1:i?2:T?3:D?4:-1)}},dependencies:[re],styles:["[_nghost-%COMP%]{display:flex;align-items:center;padding:0 .75rem}.connectivity-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.connectivity-status[_ngcontent-%COMP%]:hover{color:var(--primary-8)}.status[_ngcontent-%COMP%]{width:.625rem;height:.625rem;border-radius:50%;background-color:var(--base-4)}.status.success[_ngcontent-%COMP%]{background-color:var(--success-8)}.status.warning[_ngcontent-%COMP%]{background-color:var(--warn-8)}.status.blinking[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_blinking 1s infinite}@keyframes _ngcontent-%COMP%_blinking{0%{opacity:.2}50%{opacity:1}to{opacity:.2}}"],changeDetection:0})};var ve={Byte:"B",KByte:"KB",MByte:"MB",GByte:"GB",TByte:"TB",PByte:"PB"},ze=["mbps","gbps"],be=8,Z=1024,J=Z*1024,q=J*1024,Q=q*1024,ye=Q*1024,Je={B:1,KB:Z,MB:J,GB:q,TB:Q,PB:ye},Xe=1e3,j=Xe*1e3,K=j*1e3,He=[{threshold:ye,unitPrefix:"PByte"},{threshold:Q,unitPrefix:"TByte"},{threshold:q,unitPrefix:"GByte"},{threshold:J,unitPrefix:"MByte"},{threshold:Z,unitPrefix:"KByte"},{threshold:1,unitPrefix:"Byte"}],U=class o{#e=u(h);closed=w();isSubmitting=d(!1);sizeOptions=d([...ze]);maxUpload=d(0);maxDownload=d(0);maxUploadUnit=d("mbps");maxDownloadUnit=d("mbps");ngOnInit(){this.init()}convertToBitsPerSecondUnits(t,n){let i=t*(Je[n.toUpperCase()]||J)*be;return i===0?{value:0,unit:"mbps"}:i>=K?{value:parseFloat((i/K).toFixed(2)),unit:"gbps"}:{value:parseFloat((i/j).toFixed(2)),unit:"mbps"}}convertFromBitsPerSecondUnits(t,n){let e=0;switch(n){case"gbps":e=t*K;break;case"mbps":e=t*j;break}let i=e/be;if(i===0)return{valueForApi:0,unitPrefixForApi:"Byte"};for(let{threshold:s,unitPrefix:l}of He)if(i>=s)return{valueForApi:Math.round(i/s),unitPrefixForApi:l};return{valueForApi:Math.round(i),unitPrefixForApi:"Byte"}}init(){this.#e.getApiV1Serversettings().subscribe({next:t=>{let n=t?.["max-upload-speed"],e=t?.["max-download-speed"];if(n&&n!==""){let i=n.match(/^(\d+(?:\.\d+)?)([A-Za-z]+)$/);if(i){let s=parseFloat(i[1]),l=i[2],T=this.convertToBitsPerSecondUnits(s,l);this.maxUpload.set(T.value),this.maxUploadUnit.set(T.unit)}else console.warn("Unexpected max-upload-speed format from API:",n),this.resetUpload()}else this.resetUpload();if(e&&e!==""){let i=e.match(/^(\d+(?:\.\d+)?)([A-Za-z]+)$/);if(i){let s=parseFloat(i[1]),l=i[2],T=this.convertToBitsPerSecondUnits(s,l);this.maxDownload.set(T.value),this.maxDownloadUnit.set(T.unit)}else console.warn("Unexpected max-download-speed format from API:",e),this.resetDownload()}else this.resetDownload()},error:t=>{console.error("Failed to get server settings:",t),this.resetDownload(),this.resetUpload()}})}resetDownload(){this.maxDownload.set(0),this.maxDownloadUnit.set("mbps")}resetUpload(){this.maxUpload.set(0),this.maxUploadUnit.set("mbps")}blockDecimalKeys(t){if([".",","].includes(t.key))return t.preventDefault()}cleanupInputAfterPasting(t){t.preventDefault();let n=t.clipboardData?.getData("text/plain");if(!n)return;let e=n.replaceAll(/[\.,]/g,"");t.target.value=e}submit(){this.isSubmitting.set(!0);let t="",n="",e=this.maxUpload()??0,i=this.maxUploadUnit(),s=this.maxDownload()??0,l=this.maxDownloadUnit();if(e>0){let{valueForApi:T,unitPrefixForApi:D}=this.convertFromBitsPerSecondUnits(e,i),v=ve[D];v?t=`${T}${v}`:console.error(`Invalid unit prefix for API submission (upload): ${D}. Defaulting to empty string.`)}if(s){let{valueForApi:T,unitPrefixForApi:D}=this.convertFromBitsPerSecondUnits(s,l),v=ve[D];v?n=`${T}${v}`:console.error(`Invalid unit prefix for API submission (download): ${D}. Defaulting to empty string.`)}this.#e.patchApiV1Serversettings({requestBody:{"max-upload-speed":t,"max-download-speed":n}}).pipe($(()=>this.isSubmitting.set(!1))).subscribe({next:()=>{this.closed.emit(!0)},error:T=>{console.error("Failed to submit throttle settings:",T)}})}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-throttle-settings-dialog"]],outputs:{closed:"closed"},decls:26,vars:10,consts:()=>{let t;t=$localize`Throttle network speed`;let n;n=$localize`We will round bits to the nearest byte value.`;let e;e=$localize`Max upload speed`;let i;i=$localize`Max download speed`;let s;s=$localize`Cancel`;let l;return l=$localize` Update settings `,[t,n,e,i,s,l,["content",""],[1,"column"],[1,"field-row"],["type","number",3,"paste","keydown","ngModelChange","ngModel"],[3,"isClearable","options"],["type","text",3,"ngModelChange","ngModel"],["footer",""],["shButton","",3,"click"],["shButton","",1,"raised","primary",3,"click"]]},template:function(n,e){n&1&&(a(0,"header")(1,"h3"),S(2,0),_(),a(3,"p"),S(4,1),_()(),a(5,"div",6)(6,"div",7)(7,"div",8)(8,"label"),S(9,2),_(),a(10,"sh-form-field")(11,"input",9),c("paste",function(s){return e.cleanupInputAfterPasting(s)})("keydown",function(s){return e.blockDecimalKeys(s)}),L("ngModelChange",function(s){return y(e.maxUpload,s)||(e.maxUpload=s),s}),_()(),a(12,"sh-select",10)(13,"input",11),L("ngModelChange",function(s){return y(e.maxUploadUnit,s)||(e.maxUploadUnit=s),s}),_()()(),a(14,"div",8)(15,"label"),S(16,3),_(),a(17,"sh-form-field")(18,"input",9),c("paste",function(s){return e.cleanupInputAfterPasting(s)})("keydown",function(s){return e.blockDecimalKeys(s)}),L("ngModelChange",function(s){return y(e.maxDownload,s)||(e.maxDownload=s),s}),_()(),a(19,"sh-select",10)(20,"input",11),L("ngModelChange",function(s){return y(e.maxDownloadUnit,s)||(e.maxDownloadUnit=s),s}),_()()()()(),a(21,"footer",12)(22,"button",13),c("click",function(){return e.closed.emit(!1)}),S(23,4),_(),a(24,"button",14),c("click",function(){return e.submit()}),S(25,5),_()()),n&2&&(r(11),b("ngModel",e.maxUpload),r(),m("isClearable",!1)("options",e.sizeOptions()),r(),b("ngModel",e.maxUploadUnit),r(5),b("ngModel",e.maxDownload),r(),m("isClearable",!1)("options",e.sizeOptions()),r(),b("ngModel",e.maxDownloadUnit),r(4),R("loader",e.isSubmitting()))},dependencies:[V,ce,de,Se,ue,me,Fe,M],styles:['[_nghost-%COMP%]{display:block}h3[_ngcontent-%COMP%]{font:var(--title-30)}header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;padding:1rem;gap:.5rem;margin-bottom:1rem}.column[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.field-row[_ngcontent-%COMP%]{display:grid;grid-template-areas:"label label" "input select";grid-template-columns:1fr auto;align-items:center;gap:.5rem;width:100%}.field-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{grid-area:label}.field-row[_ngcontent-%COMP%] sh-form-field[_ngcontent-%COMP%]{grid-area:input}.field-row[_ngcontent-%COMP%] sh-select[_ngcontent-%COMP%]{grid-area:select}'],changeDetection:0})};function Ye(o,t){if(o&1&&(a(0,"div"),I(1),_(),p(2,"sh-progress-bar",11)),o&2){let n=E();r(),X("",n.statusData().actionText," - ",n.statusData().statusText),r(),m("value",n.statusData().progress*100)}}function We(o,t){if(o&1&&(a(0,"div",7),I(1),a(2,"sh-icon"),I(3,"clock"),_(),I(4),H(5,"relativeTime"),H(6,"date"),_()),o&2){let n,e=E();r(),k(" ",(n=e.nextBackup().backup)==null||n.Backup==null?null:n.Backup.Name," - "),r(3),X(" ",ae(5,3,e.nextBackup().time)," at ",_e(6,5,e.nextBackup().time,"shortTime")," ")}}function Ke(o,t){o&1&&(a(0,"div",7),S(1,1),_())}function je(o,t){o&1&&(a(0,"div",8),C(1,2),p(2,"sh-spinner"),g(),_()),o&2&&(r(2),se("--spinner-size","12px")("--spinner-thickness","2px"))}function Ze(o,t){o&1&&p(0,"app-remote-connectivity-status")}function qe(o,t){if(o&1){let n=f();a(0,"button",10),c("click",function(){O(n);let i=E(2);return N(i.abort())}),C(1,3),p(2,"sh-icon"),g(),_()}}function Qe(o,t){if(o&1){let n=f();a(0,"button",10),c("click",function(){O(n);let i=E(2);return N(i.stop())}),C(1,4),p(2,"sh-icon"),g(),_()}}function et(o,t){if(o&1&&F(0,qe,3,0,"button",12)(1,Qe,3,0,"button",12),o&2){let n=E();P(n.isStopping()?0:1)}}function tt(o,t){o&1&&(C(0,0,1),p(1,"sh-icon"),g())}function nt(o,t){o&1&&(C(0,0,2),p(1,"sh-icon"),g())}var Le=new Date,ee=class o{#e=u(h);#t=u(Ie);#n=u(ge);#a=u(Re);#i=u(Te);#_=u(Pe);#o=u(fe);minsAgo=Le.setMinutes(Le.getMinutes()-1);statusData=this.#t.statusData;serverState=this.#t.serverState;clientIsRunning=this.#t.clientIsRunning;isResuming=this.#t.isResuming;runningTask=G(()=>this.#o.serverState()?.ActiveTask?.Item1);isStopping=G(()=>this.runningTask()==this.#s());#s=d(-1);pgState=G(()=>this.#o.serverState());isUsingRelay=this.#i.relayIsEnabled;nextBackup=G(()=>{let t=this.#a.backups();return{backup:this.serverState()?.ProposedSchedule?.[0]?.backup,time:this.serverState()?.ProposedSchedule?.[0]?.Item2}});openThrottleSettingsDialog(){this.#n.open(U,{maxWidth:"550px",width:"100%"})}openPauseDialog(){this.#n.open(z,{maxWidth:"550px",width:"100%"})}pauseResume(){if(this.clientIsRunning()){this.openPauseDialog();return}this.#t.pauseResume().subscribe()}stop(){let t=this.runningTask();t&&(this.#s.set(t),this.#e.postApiV1TaskByTaskidStop({taskid:t}).subscribe())}abort(){let t=this.runningTask();t&&this.#e.postApiV1TaskByTaskidAbort({taskid:t}).subscribe()}ngAfterViewInit(){let t=this.#i.relayIsEnabled()||!this.#_.hasWebSocket()?"longpoll":"websocket";this.#t.setConnectionMethod(t)}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-status-bar"]],decls:16,vars:6,consts:()=>{let t;t=$localize`${"\uFFFD*11:1\uFFFD"}:START_BLOCK_IF:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:pause${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON: Pause ${"\uFFFD/*11:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*12:2\uFFFD"}:START_BLOCK_ELSE:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:play${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON: Resume ${"\uFFFD/*12:2\uFFFD"}:CLOSE_BLOCK_ELSE:`,t=oe(t);let n;n=$localize`No scheduled tasks`;let e;e=$localize` Loading ${"\uFFFD#2\uFFFD"}:START_TAG_SH_SPINNER:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_SPINNER:`;let i;i=$localize`${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:skull${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON: Abort `;let s;return s=$localize`${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:stop${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON: Stop `,[t,n,e,i,s,[1,"current-backup"],[1,"current-backup-progress"],[1,"label"],[1,"label","label-loading"],[1,"current-backup-actions"],["shButton","",3,"click"],[1,"raised","primary",3,"value"],["shButton",""]]},template:function(n,e){if(n&1&&(a(0,"div",5)(1,"div",6),F(2,Ye,3,3)(3,We,7,8,"div",7)(4,Ke,2,0,"div",7)(5,je,3,4,"div",8),_(),a(6,"div",9),F(7,Ze,1,0,"app-remote-connectivity-status"),F(8,et,2,1),a(9,"button",10),c("click",function(){return e.pauseResume()}),C(10,0),F(11,tt,2,0)(12,nt,2,0),g(),_(),a(13,"button",10),c("click",function(){return e.openThrottleSettingsDialog()}),a(14,"sh-icon"),I(15,"speedometer"),_()()()()),n&2){let i;r(2),P((i=e.serverState())!=null&&i.ActiveTask&&(!((i=e.statusData())==null||i.task==null)&&i.task.Status)&&((i=e.statusData())==null||i.task==null?null:i.task.Status)!=="Completed"?2:e.nextBackup().backup||e.nextBackup().time?3:(i=e.serverState())!=null&&i.ActiveTask?5:4),r(5),P(e.isUsingRelay()?-1:7),r(),P(e.runningTask()?8:-1),r(),R("loader",e.isResuming()),r(2),P(e.clientIsRunning()?11:12)}},dependencies:[B,pe,M,Ae,Oe,Me,le],styles:["[_nghost-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:1rem;min-height:3.875rem;border-bottom:1px solid var(--base-4);position:sticky;top:0;z-index:2000;background:var(--base-1)}.current-backup[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;width:100%;gap:.5rem}.current-backup-progress[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;min-width:18.75rem;flex:1 0}.current-backup-progress[_ngcontent-%COMP%] sh-progress-bar[_ngcontent-%COMP%]{max-width:18.75rem;width:100%}.current-backup-progress[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem}.current-backup-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.label-loading[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem}"],changeDetection:0})};export{ee as a};
|
|
1
|
+
import{a as Ie}from"./chunk-TX7FNDPL.js";import{a as Me}from"./chunk-GNJTDWT4.js";import{a as Re}from"./chunk-A66RJUYO.js";import{a as fe}from"./chunk-SQSTMZR3.js";import{a as De}from"./chunk-E6DCTQ34.js";import{a as Pe}from"./chunk-AE7T2DAH.js";import{b as Te}from"./chunk-IEGVSOLM.js";import{b as h}from"./chunk-TC7HZO7D.js";import{B as M,D as Ee,G as me,K as Oe,L as Ne,N as Ae,O as Fe,c as ce,e as Se,i as ue,k as de,s as V,u as pe,w as Ce,z as ge}from"./chunk-TGNUULAU.js";import{e as re}from"./chunk-F3EXRAZJ.js";import{la as le}from"./chunk-NXROYR6L.js";import{$b as E,Ab as ne,Bb as ie,Bc as x,Cb as m,Db as a,Eb as _,Fb as p,Gc as H,H as $,Hc as ae,Ic as _e,Mb as f,Rc as G,Sa as r,Tb as C,Ub as g,Vb as S,Wc as w,Yb as oe,Zb as c,_ as u,cb as A,ea as O,fa as N,jc as se,kc as R,nc as I,pa as d,pc as k,qc as X,sc as b,tc as y,uc as L,xb as F,yb as P,zb as te}from"./chunk-ZBK64QS2.js";function Ge(o,t){if(o&1){let n=f();a(0,"sh-radio",10),c("click",function(){let i=O(n).$implicit,s=E();return N(s.pauseOption.set(i.value))}),I(1),_()}if(o&2){let n=t.$implicit,e=E();R("active",e.pauseOption()===n.value),r(),k(" ",n.label," ")}}var Be=[{label:$localize`5 minutes`,value:"5m"},{label:$localize`10 minutes`,value:"10m"},{label:$localize`15 minutes`,value:"15m"},{label:$localize`30 minutes`,value:"30m"},{label:$localize`1 hour`,value:"1h"},{label:$localize`4 hours`,value:"4h"},{label:$localize`8 hours`,value:"8h"},{label:$localize`24 hours`,value:"24h"},{label:$localize`Until resumed`,value:void 0}],z=class o{#e=u(h);pauseOptions=d(Be);closed=w();isSubmitting=d(!1);pauseTransfers=d(!1);pauseOption=d(void 0);submit(){this.isSubmitting.set(!0);let t=this.pauseTransfers()||null,n=this.pauseOption();this.#e.postApiV1ServerstatePause({duration:n,pauseTransfers:t}).pipe($(()=>this.isSubmitting.set(!1))).subscribe({next:e=>{this.closed.emit()}})}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-pause-dialog"]],outputs:{closed:"closed"},decls:17,vars:4,consts:()=>{let t;t=$localize`Pause settings`;let n;n=$localize` Also pause transfers `;let e;e=$localize`If you pause transfers they could time out and cause retries or failures.`;let i;i=$localize`Cancel`;let s;return s=$localize` Update settings `,[t,n,e,i,s,["header",""],["content",""],[1,"radios"],[1,"primary","raised",3,"active"],[1,"check-wrap"],[1,"primary","raised",3,"click"],["type","warning"],["footer",""],["shButton","",3,"click"],["shButton","",1,"raised","primary",3,"click"]]},template:function(n,e){n&1&&(a(0,"header",5)(1,"h3"),S(2,0),_()(),a(3,"div",6)(4,"div",7),ne(5,Ge,2,3,"sh-radio",8,te),_(),a(7,"div",9)(8,"sh-checkbox",10),c("click",function(){return e.pauseTransfers.set(!e.pauseTransfers())}),S(9,1),_(),a(10,"sh-alert",11),S(11,2),_()()(),a(12,"footer",12)(13,"button",13),c("click",function(){return e.closed.emit()}),S(14,3),_(),a(15,"button",14),c("click",function(){return e.submit()}),S(16,4),_()()),n&2&&(r(5),ie(e.pauseOptions()),r(3),R("active",e.pauseTransfers()),r(7),R("loader",e.isSubmitting()))},dependencies:[V,Ne,Ee,Ce,M],styles:["[_nghost-%COMP%]{--dialog-p: 1.5rem;display:block}h3[_ngcontent-%COMP%]{font:var(--title-30)}.radios[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.check-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;padding:2rem 0 0}"],changeDetection:0})};var he=()=>["/connect/logon"],Ue=()=>["/settings"];function $e(o,t){if(o&1){let n=f();a(0,"div",7),c("click",function(){O(n);let i=E();return N(i.resetAndRetry())}),C(1,0),p(2,"div",8),g(),_()}}function ke(o,t){o&1&&(a(0,"div",6),C(1,1),p(2,"div",9),g(),_()),o&2&&m("routerLink",x(1,he))}function xe(o,t){o&1&&(a(0,"div",6),C(1,2),p(2,"div",8),g(),_()),o&2&&m("routerLink",x(1,he))}function we(o,t){if(o&1){let n=f();a(0,"div",7),c("click",function(){O(n);let i=E();return N(i.claim())}),C(1,3),p(2,"div",10),g(),_()}}function Ve(o,t){o&1&&(a(0,"div",6),C(1,4),p(2,"div",11),g(),_()),o&2&&m("routerLink",x(1,Ue))}var B=class o{#e=u(De);state=this.#e.state;ngOnInit(){this.#e.refreshRemoteControlStatus()}claim(){let t=this.#e.claimUrl();t&&window.open(t,"_blank")}resetAndRetry(){this.#e.cancelRemoteRegistration(),this.#e.beginRemoteRegistration()}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-remote-connectivity-status"]],decls:5,vars:1,consts:()=>{let t;t=$localize` Click to register ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let n;n=$localize` Registering ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let e;e=$localize` Click to register ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let i;i=$localize` Click to claim ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`;let s;return s=$localize` Connected ${"\uFFFD#2\uFFFD"}:START_TAG_DIV:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_DIV:`,[t,n,e,i,s,[1,"connectivity-status"],[1,"connectivity-status",3,"routerLink"],[1,"connectivity-status",3,"click"],[1,"status"],[1,"status","warning","blinking"],[1,"status","success","blinking"],[1,"status","success"]]},template:function(n,e){if(n&1&&F(0,$e,3,0,"div",5)(1,ke,3,2,"div",6)(2,xe,3,2,"div",6)(3,we,3,0,"div",5)(4,Ve,3,2,"div",6),n&2){let i=e.state()==="unknown"||e.state()==="inactive"||e.state()==="registeringfaulted",s=e.state()==="registeringfaulted",l=e.state()==="registering",T=e.state()==="registered",D=e.state()==="connected"||e.state()==="disabled"||e.state()==="connecting";P(s?0:l?1:i?2:T?3:D?4:-1)}},dependencies:[re],styles:["[_nghost-%COMP%]{display:flex;align-items:center;padding:0 .75rem}.connectivity-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.connectivity-status[_ngcontent-%COMP%]:hover{color:var(--primary-8)}.status[_ngcontent-%COMP%]{width:.625rem;height:.625rem;border-radius:50%;background-color:var(--base-4)}.status.success[_ngcontent-%COMP%]{background-color:var(--success-8)}.status.warning[_ngcontent-%COMP%]{background-color:var(--warn-8)}.status.blinking[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_blinking 1s infinite}@keyframes _ngcontent-%COMP%_blinking{0%{opacity:.2}50%{opacity:1}to{opacity:.2}}"],changeDetection:0})};var ve={Byte:"B",KByte:"KB",MByte:"MB",GByte:"GB",TByte:"TB",PByte:"PB"},ze=["mbps","gbps"],be=8,Z=1024,J=Z*1024,q=J*1024,Q=q*1024,ye=Q*1024,Je={B:1,KB:Z,MB:J,GB:q,TB:Q,PB:ye},Xe=1e3,j=Xe*1e3,K=j*1e3,He=[{threshold:ye,unitPrefix:"PByte"},{threshold:Q,unitPrefix:"TByte"},{threshold:q,unitPrefix:"GByte"},{threshold:J,unitPrefix:"MByte"},{threshold:Z,unitPrefix:"KByte"},{threshold:1,unitPrefix:"Byte"}],U=class o{#e=u(h);closed=w();isSubmitting=d(!1);sizeOptions=d([...ze]);maxUpload=d(0);maxDownload=d(0);maxUploadUnit=d("mbps");maxDownloadUnit=d("mbps");ngOnInit(){this.init()}convertToBitsPerSecondUnits(t,n){let i=t*(Je[n.toUpperCase()]||J)*be;return i===0?{value:0,unit:"mbps"}:i>=K?{value:parseFloat((i/K).toFixed(2)),unit:"gbps"}:{value:parseFloat((i/j).toFixed(2)),unit:"mbps"}}convertFromBitsPerSecondUnits(t,n){let e=0;switch(n){case"gbps":e=t*K;break;case"mbps":e=t*j;break}let i=e/be;if(i===0)return{valueForApi:0,unitPrefixForApi:"Byte"};for(let{threshold:s,unitPrefix:l}of He)if(i>=s)return{valueForApi:Math.round(i/s),unitPrefixForApi:l};return{valueForApi:Math.round(i),unitPrefixForApi:"Byte"}}init(){this.#e.getApiV1Serversettings().subscribe({next:t=>{let n=t?.["max-upload-speed"],e=t?.["max-download-speed"];if(n&&n!==""){let i=n.match(/^(\d+(?:\.\d+)?)([A-Za-z]+)$/);if(i){let s=parseFloat(i[1]),l=i[2],T=this.convertToBitsPerSecondUnits(s,l);this.maxUpload.set(T.value),this.maxUploadUnit.set(T.unit)}else console.warn("Unexpected max-upload-speed format from API:",n),this.resetUpload()}else this.resetUpload();if(e&&e!==""){let i=e.match(/^(\d+(?:\.\d+)?)([A-Za-z]+)$/);if(i){let s=parseFloat(i[1]),l=i[2],T=this.convertToBitsPerSecondUnits(s,l);this.maxDownload.set(T.value),this.maxDownloadUnit.set(T.unit)}else console.warn("Unexpected max-download-speed format from API:",e),this.resetDownload()}else this.resetDownload()},error:t=>{console.error("Failed to get server settings:",t),this.resetDownload(),this.resetUpload()}})}resetDownload(){this.maxDownload.set(0),this.maxDownloadUnit.set("mbps")}resetUpload(){this.maxUpload.set(0),this.maxUploadUnit.set("mbps")}blockDecimalKeys(t){if([".",","].includes(t.key))return t.preventDefault()}cleanupInputAfterPasting(t){t.preventDefault();let n=t.clipboardData?.getData("text/plain");if(!n)return;let e=n.replaceAll(/[\.,]/g,"");t.target.value=e}submit(){this.isSubmitting.set(!0);let t="",n="",e=this.maxUpload()??0,i=this.maxUploadUnit(),s=this.maxDownload()??0,l=this.maxDownloadUnit();if(e>0){let{valueForApi:T,unitPrefixForApi:D}=this.convertFromBitsPerSecondUnits(e,i),v=ve[D];v?t=`${T}${v}`:console.error(`Invalid unit prefix for API submission (upload): ${D}. Defaulting to empty string.`)}if(s){let{valueForApi:T,unitPrefixForApi:D}=this.convertFromBitsPerSecondUnits(s,l),v=ve[D];v?n=`${T}${v}`:console.error(`Invalid unit prefix for API submission (download): ${D}. Defaulting to empty string.`)}this.#e.patchApiV1Serversettings({requestBody:{"max-upload-speed":t,"max-download-speed":n}}).pipe($(()=>this.isSubmitting.set(!1))).subscribe({next:()=>{this.closed.emit(!0)},error:T=>{console.error("Failed to submit throttle settings:",T)}})}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-throttle-settings-dialog"]],outputs:{closed:"closed"},decls:26,vars:10,consts:()=>{let t;t=$localize`Throttle network speed`;let n;n=$localize`We will round bits to the nearest byte value.`;let e;e=$localize`Max upload speed`;let i;i=$localize`Max download speed`;let s;s=$localize`Cancel`;let l;return l=$localize` Update settings `,[t,n,e,i,s,l,["content",""],[1,"column"],[1,"field-row"],["type","number",3,"paste","keydown","ngModelChange","ngModel"],[3,"isClearable","options"],["type","text",3,"ngModelChange","ngModel"],["footer",""],["shButton","",3,"click"],["shButton","",1,"raised","primary",3,"click"]]},template:function(n,e){n&1&&(a(0,"header")(1,"h3"),S(2,0),_(),a(3,"p"),S(4,1),_()(),a(5,"div",6)(6,"div",7)(7,"div",8)(8,"label"),S(9,2),_(),a(10,"sh-form-field")(11,"input",9),c("paste",function(s){return e.cleanupInputAfterPasting(s)})("keydown",function(s){return e.blockDecimalKeys(s)}),L("ngModelChange",function(s){return y(e.maxUpload,s)||(e.maxUpload=s),s}),_()(),a(12,"sh-select",10)(13,"input",11),L("ngModelChange",function(s){return y(e.maxUploadUnit,s)||(e.maxUploadUnit=s),s}),_()()(),a(14,"div",8)(15,"label"),S(16,3),_(),a(17,"sh-form-field")(18,"input",9),c("paste",function(s){return e.cleanupInputAfterPasting(s)})("keydown",function(s){return e.blockDecimalKeys(s)}),L("ngModelChange",function(s){return y(e.maxDownload,s)||(e.maxDownload=s),s}),_()(),a(19,"sh-select",10)(20,"input",11),L("ngModelChange",function(s){return y(e.maxDownloadUnit,s)||(e.maxDownloadUnit=s),s}),_()()()()(),a(21,"footer",12)(22,"button",13),c("click",function(){return e.closed.emit(!1)}),S(23,4),_(),a(24,"button",14),c("click",function(){return e.submit()}),S(25,5),_()()),n&2&&(r(11),b("ngModel",e.maxUpload),r(),m("isClearable",!1)("options",e.sizeOptions()),r(),b("ngModel",e.maxUploadUnit),r(5),b("ngModel",e.maxDownload),r(),m("isClearable",!1)("options",e.sizeOptions()),r(),b("ngModel",e.maxDownloadUnit),r(4),R("loader",e.isSubmitting()))},dependencies:[V,ce,de,Se,ue,me,Fe,M],styles:['[_nghost-%COMP%]{display:block}h3[_ngcontent-%COMP%]{font:var(--title-30)}header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;padding:1rem;gap:.5rem;margin-bottom:1rem}.column[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.field-row[_ngcontent-%COMP%]{display:grid;grid-template-areas:"label label" "input select";grid-template-columns:1fr auto;align-items:center;gap:.5rem;width:100%}.field-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{grid-area:label}.field-row[_ngcontent-%COMP%] sh-form-field[_ngcontent-%COMP%]{grid-area:input}.field-row[_ngcontent-%COMP%] sh-select[_ngcontent-%COMP%]{grid-area:select}'],changeDetection:0})};function Ye(o,t){if(o&1&&(a(0,"div"),I(1),_(),p(2,"sh-progress-bar",11)),o&2){let n=E();r(),X("",n.statusData().actionText," - ",n.statusData().statusText),r(),m("value",n.statusData().progress*100)}}function We(o,t){if(o&1&&(a(0,"div",7),I(1),a(2,"sh-icon"),I(3,"clock"),_(),I(4),H(5,"relativeTime"),H(6,"date"),_()),o&2){let n,e=E();r(),k(" ",(n=e.nextBackup().backup)==null||n.Backup==null?null:n.Backup.Name," - "),r(3),X(" ",ae(5,3,e.nextBackup().time)," at ",_e(6,5,e.nextBackup().time,"shortTime")," ")}}function Ke(o,t){o&1&&(a(0,"div",7),S(1,1),_())}function je(o,t){o&1&&(a(0,"div",8),C(1,2),p(2,"sh-spinner"),g(),_()),o&2&&(r(2),se("--spinner-size","12px")("--spinner-thickness","2px"))}function Ze(o,t){o&1&&p(0,"app-remote-connectivity-status")}function qe(o,t){if(o&1){let n=f();a(0,"button",10),c("click",function(){O(n);let i=E(2);return N(i.abort())}),C(1,3),p(2,"sh-icon"),g(),_()}}function Qe(o,t){if(o&1){let n=f();a(0,"button",10),c("click",function(){O(n);let i=E(2);return N(i.stop())}),C(1,4),p(2,"sh-icon"),g(),_()}}function et(o,t){if(o&1&&F(0,qe,3,0,"button",12)(1,Qe,3,0,"button",12),o&2){let n=E();P(n.isStopping()?0:1)}}function tt(o,t){o&1&&(C(0,0,1),p(1,"sh-icon"),g())}function nt(o,t){o&1&&(C(0,0,2),p(1,"sh-icon"),g())}var Le=new Date,ee=class o{#e=u(h);#t=u(Ie);#n=u(ge);#a=u(Re);#i=u(Te);#_=u(Pe);#o=u(fe);minsAgo=Le.setMinutes(Le.getMinutes()-1);statusData=this.#t.statusData;serverState=this.#t.serverState;clientIsRunning=this.#t.clientIsRunning;isResuming=this.#t.isResuming;runningTask=G(()=>this.#o.serverState()?.ActiveTask?.Item1);isStopping=G(()=>this.runningTask()==this.#s());#s=d(-1);pgState=G(()=>this.#o.serverState());isUsingRelay=this.#i.relayIsEnabled;nextBackup=G(()=>{let t=this.#a.backups();return{backup:this.serverState()?.ProposedSchedule?.[0]?.backup,time:this.serverState()?.ProposedSchedule?.[0]?.Item2}});openThrottleSettingsDialog(){this.#n.open(U,{maxWidth:"550px",width:"100%"})}openPauseDialog(){this.#n.open(z,{maxWidth:"550px",width:"100%"})}pauseResume(){if(this.clientIsRunning()){this.openPauseDialog();return}this.#t.pauseResume().subscribe()}stop(){let t=this.runningTask();t&&(this.#s.set(t),this.#e.postApiV1TaskByTaskidStop({taskid:t}).subscribe())}abort(){let t=this.runningTask();t&&this.#e.postApiV1TaskByTaskidAbort({taskid:t}).subscribe()}ngAfterViewInit(){let t=this.#i.relayIsEnabled()||!this.#_.hasWebSocket()?"longpoll":"websocket";this.#t.setConnectionMethod(t)}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=A({type:o,selectors:[["app-status-bar"]],decls:16,vars:6,consts:()=>{let t;t=$localize`${"\uFFFD*11:1\uFFFD"}:START_BLOCK_IF:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:pause${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON: Pause ${"\uFFFD/*11:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*12:2\uFFFD"}:START_BLOCK_ELSE:${"[\uFFFD#1:1\uFFFD|\uFFFD#1:2\uFFFD]"}:START_TAG_SH_ICON:play${"[\uFFFD/#1:1\uFFFD|\uFFFD/#1:2\uFFFD]"}:CLOSE_TAG_SH_ICON: Resume ${"\uFFFD/*12:2\uFFFD"}:CLOSE_BLOCK_ELSE:`,t=oe(t);let n;n=$localize`No scheduled tasks`;let e;e=$localize` Loading ${"\uFFFD#2\uFFFD"}:START_TAG_SH_SPINNER:${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_SPINNER:`;let i;i=$localize`${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:skull${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON: Abort `;let s;return s=$localize`${"\uFFFD#2\uFFFD"}:START_TAG_SH_ICON:stop${"\uFFFD/#2\uFFFD"}:CLOSE_TAG_SH_ICON: Stop `,[t,n,e,i,s,[1,"current-backup"],[1,"current-backup-progress"],[1,"label"],[1,"label","label-loading"],[1,"current-backup-actions"],["shButton","",3,"click"],[1,"raised","primary",3,"value"],["shButton",""]]},template:function(n,e){if(n&1&&(a(0,"div",5)(1,"div",6),F(2,Ye,3,3)(3,We,7,8,"div",7)(4,Ke,2,0,"div",7)(5,je,3,4,"div",8),_(),a(6,"div",9),F(7,Ze,1,0,"app-remote-connectivity-status"),F(8,et,2,1),a(9,"button",10),c("click",function(){return e.pauseResume()}),C(10,0),F(11,tt,2,0)(12,nt,2,0),g(),_(),a(13,"button",10),c("click",function(){return e.openThrottleSettingsDialog()}),a(14,"sh-icon"),I(15,"speedometer"),_()()()()),n&2){let i;r(2),P((i=e.serverState())!=null&&i.ActiveTask&&(!((i=e.statusData())==null||i.task==null)&&i.task.Status)&&((i=e.statusData())==null||i.task==null?null:i.task.Status)!=="Completed"?2:e.nextBackup().backup||e.nextBackup().time?3:(i=e.serverState())!=null&&i.ActiveTask?5:4),r(5),P(e.isUsingRelay()?-1:7),r(),P(e.runningTask()?8:-1),r(),R("loader",e.isResuming()),r(2),P(e.clientIsRunning()?11:12)}},dependencies:[B,pe,M,Ae,Oe,Me,le],styles:["[_nghost-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:1rem;min-height:3.875rem;border-bottom:1px solid var(--base-4);position:sticky;top:0;z-index:2000;background:var(--base-1)}.current-backup[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;width:100%;gap:.5rem}.current-backup-progress[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;min-width:18.75rem;flex:1 0}.current-backup-progress[_ngcontent-%COMP%] sh-progress-bar[_ngcontent-%COMP%]{max-width:18.75rem;width:100%}.current-backup-progress[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem}.current-backup-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.label-loading[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem}"],changeDetection:0})};export{ee as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as v}from"./chunk-
|
|
1
|
+
import{a as v}from"./chunk-ZNZH3TU5.js";import{h as C}from"./chunk-TVD2HREV.js";import"./chunk-5KMPTDRJ.js";import"./chunk-2DP4QU4T.js";import"./chunk-AWXWGD4T.js";import"./chunk-TX7FNDPL.js";import"./chunk-GNJTDWT4.js";import"./chunk-AT6BXXSP.js";import{a as G}from"./chunk-A66RJUYO.js";import"./chunk-SQSTMZR3.js";import"./chunk-6Q6SSTBK.js";import"./chunk-HVB6ARTT.js";import"./chunk-E6DCTQ34.js";import"./chunk-POJT4MSX.js";import{b as h}from"./chunk-WJDMMKWE.js";import"./chunk-QBHHGHBJ.js";import"./chunk-AE7T2DAH.js";import"./chunk-KLODM6IK.js";import"./chunk-IEGVSOLM.js";import{b as L}from"./chunk-TC7HZO7D.js";import{K as M,L as $,Q as I}from"./chunk-TGNUULAU.js";import{b as N,c as O,e as B,f as b}from"./chunk-F3EXRAZJ.js";import"./chunk-VCLWADQK.js";import"./chunk-ATGKEH5N.js";import"./chunk-NXROYR6L.js";import"./chunk-FPPZ4BUR.js";import{$b as D,Ac as E,Cb as d,Db as s,Dc as p,Eb as u,F as f,Fb as r,Sa as n,Sc as k,Tb as c,Ub as _,_ as l,cb as R,nc as A,pc as P,xb as T,yb as g}from"./chunk-ZBK64QS2.js";import"./chunk-EUDKD2JW.js";var y=(a,e)=>[a,e,"general"],U=(a,e)=>[a,e,"destination"],K=(a,e)=>[a,e,"source-data"],w=(a,e)=>[a,e,"schedule"],H=(a,e)=>[a,e,"options"];function J(a,e){if(a&1&&(s(0,"p"),A(1),u()),a&2){let t=D();n(),P("Editing: ",t.backupName())}}function X(a,e){a&1&&r(0,"sh-progress-bar",7)}function x(a,e){a&1&&(s(0,"section"),r(1,"router-outlet"),u())}var m=class a{#t=l(N);#e=l(C);#a=l(G);#i=l(L);isDraft=this.#e.isDraft;isNew=this.#e.isNew;backupId=this.#e.backupId;backupName=this.#e.backupName;finishedLoading=this.#e.finishedLoading;#o=h(this.#t.params);#n=h(this.#t.url);paramsChanged=k(()=>{let e=this.#o()?.id,t=!!this.#n()?.find(i=>i.path==="backup-draft");this.#e.backupId.set(e),e!=="new"?this.getBackup(e,t):this.getDefaults()});getDefaults(){this.#i.getApiV1Backupdefaults().pipe(f(1)).subscribe({next:e=>{let t=e.Backup;t.Settings=[...t.Settings],this.#e.mapGeneralToForm(t),this.#e.mapDestinationToForm(t),this.#e.mapSourceDataToForm(t),this.#e.mapScheduleToForm(e.Schedule),this.#e.mapOptionsToForms(t),this.#e.applicationOptions.set(e.ApplicationOptions),this.#e.backupDefaults.set(e),this.#e.finishedLoading.set(!0)}})}getBackup(e,t=!1){let i=o=>{this.#e.mapScheduleToForm(o.Schedule??null),o.Backup&&(this.#e.mapGeneralToForm(o.Backup),this.#e.mapDestinationToForm(o.Backup),this.#e.mapSourceDataToForm(o.Backup),this.#e.mapOptionsToForms(o.Backup),this.#e.storeMetadata(o.Backup,t)),this.#e.finishedLoading.set(!0)};if(t){this.isDraft.set(t);let o=this.#a.draftBackups().find(F=>F.id===e);if(!o){alert("Backup not found");return}i(o.data)}else this.#i.getApiV1BackupById({id:e}).subscribe({next:i})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=R({type:a,selectors:[["app-backup"]],features:[E([C])],decls:21,vars:22,consts:()=>{let e;e=$localize`${"\uFFFD#6\uFFFD"}:START_TAG_SH_RADIO:${"\uFFFD/#6\uFFFD"}:CLOSE_TAG_SH_RADIO: General `;let t;t=$localize`${"\uFFFD#9\uFFFD"}:START_TAG_SH_RADIO:${"\uFFFD/#9\uFFFD"}:CLOSE_TAG_SH_RADIO: Destination `;let i;i=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_RADIO:${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_RADIO: Source Data `;let o;o=$localize`${"\uFFFD#15\uFFFD"}:START_TAG_SH_RADIO:${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_RADIO: Schedule `;let F;return F=$localize`${"\uFFFD#18\uFFFD"}:START_TAG_SH_RADIO:${"\uFFFD/#18\uFFFD"}:CLOSE_TAG_SH_RADIO: Options `,[e,t,i,o,F,[1,"primary"],["step","","routerLinkActive","active",3,"routerLink"],[1,"indeterminate","primary"]]},template:function(t,i){t&1&&(r(0,"app-status-bar"),s(1,"header"),T(2,J,2,1,"p"),s(3,"sh-stepper",5)(4,"div",6),c(5,0),r(6,"sh-radio"),_(),u(),s(7,"div",6),c(8,1),r(9,"sh-radio"),_(),u(),s(10,"div",6),c(11,2),r(12,"sh-radio"),_(),u(),s(13,"div",6),c(14,3),r(15,"sh-radio"),_(),u(),s(16,"div",6),c(17,4),r(18,"sh-radio"),_(),u()()(),T(19,X,1,0,"sh-progress-bar",7)(20,x,2,0,"section")),t&2&&(n(2),g(i.isNew()?-1:2),n(2),d("routerLink",p(7,y,i.isDraft()?"/backup-draft":"/backup",i.backupId())),n(3),d("routerLink",p(10,U,i.isDraft()?"/backup-draft":"/backup",i.backupId())),n(3),d("routerLink",p(13,K,i.isDraft()?"/backup-draft":"/backup",i.backupId())),n(3),d("routerLink",p(16,w,i.isDraft()?"/backup-draft":"/backup",i.backupId())),n(3),d("routerLink",p(19,H,i.isDraft()?"/backup-draft":"/backup",i.backupId())),n(3),g(i.finishedLoading()?20:19))},dependencies:[O,B,b,v,$,I,M],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%}header[_ngcontent-%COMP%]{padding:1rem 1.5rem;border-bottom:1px solid var(--base-4)}header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:.5rem}header[_ngcontent-%COMP%] sh-stepper[_ngcontent-%COMP%]{width:100%}section[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:center;flex:1 0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:auto}"],changeDetection:0})};export{m as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as K}from"./chunk-
|
|
1
|
+
import{a as K}from"./chunk-A66RJUYO.js";import"./chunk-SQSTMZR3.js";import"./chunk-6Q6SSTBK.js";import{a as z}from"./chunk-QBHHGHBJ.js";import"./chunk-AE7T2DAH.js";import"./chunk-KLODM6IK.js";import"./chunk-IEGVSOLM.js";import{b as J}from"./chunk-TC7HZO7D.js";import{B as U,G as x,H as V,V as j,b as E,c as A,e as R,f as b,j as y,o as B,q as $,r as v,t as G,u as k,x as L,z as w}from"./chunk-TGNUULAU.js";import{d as O,e as M}from"./chunk-F3EXRAZJ.js";import"./chunk-VCLWADQK.js";import"./chunk-ATGKEH5N.js";import"./chunk-NXROYR6L.js";import"./chunk-FPPZ4BUR.js";import{Bc as N,Cb as p,Db as a,Eb as i,Fb as u,H as g,Sa as l,Tb as D,Ub as h,Vb as _,Yb as I,Zb as d,_ as s,cb as f,kc as P,pa as c,xb as C,yb as S}from"./chunk-ZBK64QS2.js";import"./chunk-EUDKD2JW.js";var X=()=>["/"];function H(m,o){m&1&&(a(0,"sh-form-field")(1,"label",14),_(2,3),i(),u(3,"input",15),i())}var F=new v,T=class m{#t=s(L);#o=s(w);#i=s(J);#n=s(K);#e=s(O);isImporting=c(!1);isSecureFile=c(!1);isValid=c(!1);importForm=F.group({config:F.control(""),cmdline:F.control(!1),import_metadata:F.control(!1),direct:F.control(!1),passphrase:F.control("")});selectedFile=c([]);onFileDropped(o){let e=o[0];if(e){let t=new FileReader;this.isSecureFile.set(e.type!=="application/json"),t.onload=this.#r.bind(this),t.readAsArrayBuffer(e)}}#r(o){let e=o.target?.result;this.isSecureFile.set(this.#a(e)!=="json"),this.importForm.patchValue({config:this.#s(e)}),this.isValid.set(this.importForm.value.config!=="")}#a(o){let e=new Uint8Array(o);if(e.length>=5&&e[0]===65&&e[1]===69&&e[2]===83&&e[4]===0)return"aes";try{let t=new TextDecoder().decode(o),n=JSON.parse(t);if(typeof n=="object"&&n!==null)return"json"}catch{}return"unknown"}#s(o){let e=new Uint8Array(o),t=e.byteLength,n="";for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return btoa(n)}submit(){this.isImporting.set(!0);let o=this.importForm.value.direct??!1;this.#i.postApiV1BackupsImport({requestBody:this.importForm.value}).pipe(g(()=>this.isImporting.set(!1))).subscribe({next:e=>{if(o){this.#t.success("Backup imported successfully."),this.#e.navigate(["/"]);return}let t=this.#n.addDraftBackup(e.data);this.#e.navigate(["/backup-draft",t])},error:e=>{let t=e.message||$localize`Unknown error`;this.#o.open(z,{data:{title:$localize`Failed to import backup`,message:t,confirmText:$localize`OK`,cancelText:void 0}})}})}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=f({type:m,selectors:[["app-import"]],decls:19,vars:8,consts:()=>{let o;o=$localize` Import backup configuration ${"\uFFFD#3\uFFFD"}:START_TAG_DIV:${"\uFFFD#4\uFFFD"}:START_TAG_BUTTON:${"[\uFFFD#5\uFFFD|\uFFFD#7\uFFFD]"}:START_TAG_SH_ICON:arrow-left${"[\uFFFD/#5\uFFFD|\uFFFD/#7\uFFFD]"}:CLOSE_TAG_SH_ICON: Back ${"[\uFFFD/#4\uFFFD|\uFFFD/#6\uFFFD]"}:CLOSE_TAG_BUTTON:${"\uFFFD#6\uFFFD"}:START_TAG_BUTTON_1:${"[\uFFFD#5\uFFFD|\uFFFD#7\uFFFD]"}:START_TAG_SH_ICON:download-simple${"[\uFFFD/#5\uFFFD|\uFFFD/#7\uFFFD]"}:CLOSE_TAG_SH_ICON: Import ${"[\uFFFD/#4\uFFFD|\uFFFD/#6\uFFFD]"}:CLOSE_TAG_BUTTON:${"\uFFFD/#3\uFFFD"}:CLOSE_TAG_DIV:`,o=I(o);let e;e=$localize`Import Metadata`;let t;t=$localize`Save now`;let n;return n=$localize`Passphrase`,[o,e,t,n,[1,"actions"],["shButton","","type","button",1,"outlined",3,"routerLink"],["shButton","","type","submit",1,"raised","primary",3,"click","disabled"],["autocomplete","off",3,"formGroup"],["accept",".json,.aes",3,"filesChange","files"],[1,"primary","raised"],["for","importMetadata"],["type","checkbox","formControlName","import_metadata"],["for","direct"],["type","checkbox","formControlName","direct"],["for","passphrase"],["type","password","formControlName","passphrase"]]},template:function(e,t){e&1&&(a(0,"header")(1,"h3"),D(2,0),a(3,"div",4)(4,"button",5),u(5,"sh-icon"),i(),a(6,"button",6),d("click",function(){return t.submit()}),u(7,"sh-icon"),i()(),h(),i()(),a(8,"form",7)(9,"sh-file-upload",8),d("filesChange",function(r){return t.onFileDropped(r)}),i(),C(10,H,4,0,"sh-form-field"),a(11,"sh-toggle",9)(12,"label",10),_(13,1),i(),u(14,"input",11),i(),a(15,"sh-toggle",9)(16,"label",12),_(17,2),i(),u(18,"input",13),i()()),e&2&&(l(4),p("routerLink",N(7,X)),l(2),P("loader",t.isImporting()),p("disabled",t.isImporting()||!t.isValid()),l(2),p("formGroup",t.importForm),l(),p("files",t.selectedFile()),l(),S(t.isSecureFile()?10:-1))},dependencies:[G,y,A,E,R,b,B,$,M,x,k,U,j,V],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;gap:2rem;padding:3rem}h3[_ngcontent-%COMP%]{font:var(--title-30);display:flex;align-items:center;justify-content:space-between}.actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem;max-width:31.25rem}sh-file-upload[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})};export{T as default};
|
package/index.html
CHANGED
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
<body>
|
|
84
84
|
<app-root></app-root>
|
|
85
85
|
<div class="loading">Connecting ...</div>
|
|
86
|
-
<link rel="modulepreload" href="chunk-ISCGGOPN.js"><link rel="modulepreload" href="chunk-
|
|
86
|
+
<link rel="modulepreload" href="chunk-ISCGGOPN.js"><link rel="modulepreload" href="chunk-JEWYZWQN.js"><link rel="modulepreload" href="chunk-J34TTKLN.js"><link rel="modulepreload" href="chunk-TX7FNDPL.js"><link rel="modulepreload" href="chunk-GNJTDWT4.js"><link rel="modulepreload" href="chunk-AT6BXXSP.js"><link rel="modulepreload" href="chunk-A66RJUYO.js"><link rel="modulepreload" href="chunk-SQSTMZR3.js"><link rel="modulepreload" href="chunk-6Q6SSTBK.js"><link rel="modulepreload" href="chunk-HVB6ARTT.js"><script src="polyfills-S663R3NQ.js" type="module"></script><script src="main-NIJHUKOR.js" type="module"></script></body>
|
|
87
87
|
</html>
|
package/main-NIJHUKOR.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as Re,c as Te}from"./chunk-ISCGGOPN.js";import{a as be}from"./chunk-JEWYZWQN.js";import{a as Se}from"./chunk-J34TTKLN.js";import{a as k}from"./chunk-TX7FNDPL.js";import{a as Ce}from"./chunk-GNJTDWT4.js";import{b as ve}from"./chunk-AT6BXXSP.js";import"./chunk-A66RJUYO.js";import"./chunk-SQSTMZR3.js";import{a as P}from"./chunk-6Q6SSTBK.js";import{a as ge}from"./chunk-HVB6ARTT.js";import"./chunk-QBHHGHBJ.js";import{a as L}from"./chunk-AE7T2DAH.js";import"./chunk-KLODM6IK.js";import{a as h,b as v,c as ye,d as I}from"./chunk-IEGVSOLM.js";import{c as fe}from"./chunk-TC7HZO7D.js";import{v as ue,x as he}from"./chunk-TGNUULAU.js";import{c as ae,d as pe,g as ce,h as le,i as me,j as de}from"./chunk-F3EXRAZJ.js";import{a as ee}from"./chunk-VCLWADQK.js";import{a as te,b as oe,c as ne,e as re,f as se,g as ie}from"./chunk-ATGKEH5N.js";import{la as Y,qa as Z}from"./chunk-NXROYR6L.js";import"./chunk-FPPZ4BUR.js";import{A as x,B as G,Fb as z,H as w,Mc as q,N as B,Nc as X,P as R,R as J,Sc as Q,V as M,Y as _,_ as r,cb as K,f as W,i as j,ja as $,n as U,o as F,pa as d,r as S}from"./chunk-ZBK64QS2.js";import"./chunk-EUDKD2JW.js";var E=class e{#o=r(h);#s=r(v);ngOnInit(){this.#s.fetchConfig(),this.#o.clearAllNotCurrentVersion()}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=K({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(o,n){o&1&&z(0,"router-outlet")},dependencies:[ae],encapsulation:2})};var Me={production:!0,baseUrl:"/api",machineServerUrl:"${WS_URL}",defaultTimeout:3e4};var f=new _("ENVIRONMENT");var A=class e{#o=r(fe);isLoaded=d(!1);webmodules=d(null);preload(t=!1){let o=this.#o.getApiV1Webmodules().pipe(J(n=>this.webmodules.set(n)),w(()=>this.isLoaded.set(!0)));if(t)return o;o.subscribe()}static \u0275fac=function(o){return new(o||e)};static \u0275prov=M({token:e,factory:e.\u0275fac,providedIn:"root"})};var Le=()=>{let e=r(I);return e.token()?!0:e.checkProxyAuthed().pipe(R(t=>t?U(!0):e.refreshToken().pipe(S(()=>!0))))},Pe=()=>{let e=r(v),t=r(k),o=r($),n=e.relayIsEnabled()?"longpoll":"websocket",i=[o.get(L).preload(!0),o.get(L).preloadFilterGroups(!0),o.get(A).preload(!0)];return e.configLoaded===null?x(i).pipe(S(()=>n)):e.configLoaded?.pipe(R(()=>x(i)))},Ve=()=>!0,Ie={path:"connect/:typeParam",loadComponent:()=>import("./chunk-4M7H3XII.js")},De=()=>{let e=r(h);return!e.getItem("locale")&&navigator.language&&e.setItem("locale",navigator.language),!0},ke=[{path:"",children:[{path:"login",canActivate:[],loadComponent:()=>import("./chunk-2QQJ6ZBU.js")},{path:"logout",loadComponent:()=>import("./chunk-KIUZUG7C.js")},{path:"",canActivate:[Le],children:[{path:"",canActivate:[Pe,Ve,De],children:[{path:"welcome",loadComponent:()=>import("./chunk-IME3RCXO.js"),children:[{path:"",redirectTo:"select",pathMatch:"full"},{path:"select",loadComponent:()=>import("./chunk-Y27QHU4A.js")},Ie]},{path:"",loadComponent:()=>import("./chunk-P2GZAEQX.js"),children:[{path:"",loadComponent:()=>import("./chunk-UEUGGMU7.js")},Ie,{path:"add-backup",loadComponent:()=>import("./chunk-YGVXQBSL.js")},{path:"backup/:id/export",loadComponent:()=>import("./chunk-Q6RATRPG.js")},{path:"backup/import",loadComponent:()=>import("./chunk-ZTM5RK6J.js")},{path:"backup-draft/:id",loadComponent:()=>import("./chunk-ZSP3PG56.js"),loadChildren:()=>import("./chunk-TCDG7C5J.js")},{path:"backup/:id",loadComponent:()=>import("./chunk-ZSP3PG56.js"),loadChildren:()=>import("./chunk-TCDG7C5J.js")},{path:"backup/:id/log",loadComponent:()=>import("./chunk-5U6T552I.js")},{path:"backup/:id/database",loadComponent:()=>import("./chunk-5NPUZRFY.js")},{path:"backup/:id/commandline",loadComponent:()=>import("./chunk-VLCXKEIA.js")},{path:"backup/:id/commandline/:runId",loadComponent:()=>import("./chunk-KFYMEXS6.js")},{path:"backup/:id/delete",loadComponent:()=>import("./chunk-RVELYERL.js")},{path:"restore",children:[{path:"",loadComponent:()=>import("./chunk-WNP2PFJP.js")},{path:"from-config",loadComponent:()=>import("./chunk-PZOMPDFS.js")}]},{path:"restore-from-files",loadComponent:()=>import("./chunk-XAUZOGDI.js"),loadChildren:()=>import("./chunk-I3AX7HPO.js")},{path:"restore-draft/:id",loadComponent:()=>import("./chunk-XAUZOGDI.js"),loadChildren:()=>import("./chunk-I3AX7HPO.js")},{path:"restore/:id",loadComponent:()=>import("./chunk-XAUZOGDI.js"),loadChildren:()=>import("./chunk-I3AX7HPO.js")},{path:"settings",loadComponent:()=>import("./chunk-D2ZTG4GG.js")},{path:"about",loadComponent:()=>import("./chunk-BB73BKGN.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-AAIMJHAS.js")},{path:"changelog",loadComponent:()=>import("./chunk-4VZNWPWO.js")},{path:"libraries",loadComponent:()=>import("./chunk-E3KF5SRU.js")},{path:"system-info",loadComponent:()=>import("./chunk-K6IL54XE.js")},{path:"server-settings",loadComponent:()=>import("./chunk-H3W2UQY2.js")},{path:"logs",loadChildren:()=>import("./chunk-43UBTE3L.js")},{path:"crashlogs",loadComponent:()=>import("./chunk-RPJFKWMV.js")}]}]}]}]}]}];var V=null,Ee=(e,t)=>{let o=r(I),n=r(pe),i=r(h),l=r(f),s=i.getItem("locale"),u=r(he),p=Re(s),a=e.url==="/api/v1/auth/login",m=e.url==="/api/v1/auth/refresh",C=e.url==="/api/v1/progressstate",y=e.url==="/api/v1/remoteoperation/test",b=e.url==="/api/v1/filesystem/validate",T=e.url.startsWith("/api/v2/"),O=o.token(),D=e,H=e.headers.has("custom-proxy-check")||O===ye;if(O&&e.url.startsWith(l.baseUrl)&&!H){let c=e.headers.set("Authorization",`Bearer ${O}`);s&&s!=="en-US"&&(c=c.set("X-Ui-Language",p)),D=e.clone({headers:c})}return t(D).pipe(S(c=>{if(c.type===4&&c.status===200&&T){let g=c.body;if(g?.Success===!1)throw{status:200,message:g?.Error??"Unknown error",error:{Error:g?.Error??"Unknown error"},requestBody:g}}return c}),G(c=>{let g=c.error?.Error||`Error Code: ${c.status}, Message: ${c.message}`;return!H&&(C&&c.status===404||y||b||u.error(g),m&&c.status===401&&(o.logout(),n.navigate(["/logout"])),!a&&!m&&c.status===401)?(V??=o.refreshToken().pipe(B()),V.pipe(R(()=>t(e.clone({headers:e.headers.set("Authorization",`Bearer ${o.token()}`)}))),w(()=>V=null))):F(()=>({error:c,message:g}))}))};var He="1.0.0",Ae=`portal-proxy-client-${P()}`,We=1,N=class e{#o=1e3;#s=r(f);#t=d("disconnected");#l=d(this.#o);#i=d(!1);#n=d(!1);#a=d(null);isConnectedToMachineServer=this.#n.asReadonly();wsState=this.#t.asReadonly();#p=[];#r={};#e=null;#m=new TextDecoder("utf-8");#c=null;#d=Q(()=>{let t=this.#i(),o=this.#l(),n=this.#a();if(!n||!t||!o||o<this.#o){this.#c&&window.clearInterval(this.#c);return}this.#c=window.setInterval(()=>{this.connectToMachineServer(n)},o)});utf8Atob(t){let o=Uint8Array.from(atob(t),i=>i.charCodeAt(0)),n=this.#m.decode(o);return n?JSON.parse(n):null}connectToMachineServer(t,o){let n=o?.reconnect??!1,i=this.wsState();(i==="disconnected"||i==="error"||n)&&(this.#e?.close(),this.#e=null),!this.#e&&(this.#e=new WebSocket(this.#s.machineServerUrl),this.#t.set("connecting"),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(t),this.#i.set(!0)},this.#e.onerror=()=>{this.#t.set("error")},this.#e.onmessage=l=>{let s=JSON.parse(l.data);if(this.wsState()==="connect"){if(s.type!=="welcome"){this.disconnectFromMachineServer(`Unexpected message type, expected 'welcome' but got '${s.type}'`);return}let p={token:t,publicKey:"",clientVersion:He,protocolVersion:We},a=this.createResponse(s,"authportal",p);this.#t.set("welcome"),this.#e?.send(a)}else if(this.wsState()==="welcome"){if(s.type!=="authportal"){this.disconnectFromMachineServer(`Unexpected message type, expected 'authportal' but got '${s.type}'`);return}var u=JSON.parse(s.payload??"");if(u.accepted===!1){this.disconnectFromMachineServer("Authentication failed");return}for(this.#t.set("authenticated"),this.#n.set(!0);this.#p.length>0;){let p=this.#p.pop();p&&this.#r[p.messageId]&&this.activateCommand(p)}}else if(this.wsState()==="authenticated"){if(s.type!=="command"){console.warn(`Unexpected message type, expected 'command' but got '${s.type}'`);return}let p=this.#r[s.messageId];if(p){if(s.errorMessage){p.reject(s.errorMessage);return}else{let a=JSON.parse(s.payload??"");a.body=a?.body==null?null:this.utf8Atob(a.body),p.resolve(a)}delete this.#r[s.messageId],window.clearTimeout(p.timer)}}})}disconnectFromMachineServer(t=null){t&&console.error(t),this.#e?.close(),this.#e=null,this.#t.set("disconnected"),this.#n.set(!1)}createResponse(t,o,n){let i={from:Ae,to:t.from,type:o,messageId:t.messageId,payload:JSON.stringify(n)};return JSON.stringify(i)}sendCommand(t,o,n,i,l,s,u=5e3){return(this.wsState()==="disconnected"||this.wsState()==="error")&&this.connectToMachineServer(t),new Promise((p,a)=>{let m=P(),y={from:Ae,to:o,type:"command",messageId:m,payload:JSON.stringify({method:n,path:i,body:l,headers:s})},b={resolve:p,reject:a,timer:window.setTimeout(()=>{let T=this.#r[m];T&&(delete this.#r[m],T.reject("Timeout"))},u)};this.#r[m]=b,this.#n()?this.activateCommand(y):this.#p.push(y)})}activateCommand(t){this.#e?.send(JSON.stringify(t))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=M({token:e,factory:e.\u0275fac,providedIn:"root"})};function je(e){if(typeof e!="string")return null;let o=new TextEncoder().encode(e);return window.btoa(String.fromCharCode(...o))}function Ne(e,t,o){let n=e.relayconfigState.config();if(n===null)return o(t);let i=je(t.body),l={};t.headers.keys().forEach(a=>{l[a]=t.headers.get(a)??""});let s=t.headers.get("timeout"),u=s!==null?parseInt(s):e.defaultTimeout;t.url.startsWith("/api/v1/serverstate")&&t.url.includes("longpoll=true")&&(u=1e3*99);let p=e.relayWebsocket.sendCommand(n.accessToken,n.clientId,t.method,t.url,i,l,u);return new W(a=>{p.then(m=>{let C=new te;l!=null&&Object.keys(l).forEach(b=>{C.set(b,l[b])});let y=new oe({body:m.body,status:m.code,statusText:"OK",headers:C});a.next(y),a.complete()}).catch(m=>{a.error(new ne({error:m??"Unknown error",status:0,statusText:m??"Unknown error"}))})})}var Oe=(e,t)=>{let o={relayconfigState:r(v),defaultTimeout:r(f).defaultTimeout,relayWebsocket:r(N)},n=o.relayconfigState.config();if(o.relayconfigState.configLoaded!==null&&n===null){let i=new j;return o.relayconfigState.configLoaded.subscribe(l=>{l&&Ne(o,e,t).subscribe(i)}),i}return Ne(o,e,t)};var xe={providers:[q(),le(ke,de(),me(ce)),re(ie(),se([Oe,Ee])),h,{provide:f,useValue:Me},{provide:X,useValue:Te()},{provide:ue,useValue:{alertVariant:"simple"}},be,k,ve,Z,ge,Y,Ce,Se]};ee(E,xe);
|
package/package.json
CHANGED
package/chunk-5RQDJUIT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-EUDKD2JW.js";var o=[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-MCOUCF6F.js")},{path:"destination",loadComponent:()=>import("./chunk-DF6VTK4B.js")},{path:"source-data",loadComponent:()=>import("./chunk-732GPC5D.js")},{path:"schedule",loadComponent:()=>import("./chunk-EVJEPFC6.js")},{path:"options",loadComponent:()=>import("./chunk-DY4NXNVS.js")}];export{o as default};
|
package/chunk-XKKT2NP5.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-EUDKD2JW.js";var o=[{path:"",redirectTo:"select-files",pathMatch:"full"},{path:"destination",loadComponent:()=>import("./chunk-D3LEV6WL.js")},{path:"encryption",loadComponent:()=>import("./chunk-W4KOKNGU.js")},{path:"select-files",loadComponent:()=>import("./chunk-WZAZENJC.js")},{path:"options",loadComponent:()=>import("./chunk-X4KK6R3X.js")},{path:":taskid/progress",loadComponent:()=>import("./chunk-4GY6ZWN5.js")}],t=o;export{t as default};
|
package/chunk-XUN5TTJC.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as qr}from"./chunk-VCLWADQK.js";import{h as Fr,k as Xe}from"./chunk-NXROYR6L.js";import{$ as Rr,$a as Ar,B as J,C as se,E as Dt,F as ae,Fb as Ur,H as Ge,I as G,J as Nt,K as pr,Lc as jr,M as gr,O as vr,P as b,Q as Ut,Qa as br,Qc as Q,R as y,S,V as C,Vc as kr,Wa as xt,X as mr,Xa as _,Xc as $r,Y as D,Ya as Ir,Z as Qe,Zb as Pr,_ as d,ad as Ze,ba as ue,bb as Lt,ca as P,cb as Tr,cc as _r,d as ur,dc as xr,e as cr,eb as Ie,ec as Lr,ed as Je,f as lr,g as Et,h as Ot,hd as zr,i as z,j as M,ja as yr,kb as X,l as F,la as Sr,m as A,n as h,na as Ke,nb as Er,o as we,ob as Or,p as hr,pa as Ye,q as dr,qa as Cr,qb as Mr,r as v,rb as Dr,s as Ve,sa as be,t as T,ta as Pt,u as Mt,ua as wr,ub as Nr,v as fr,va as _t,w as We,z as W}from"./chunk-ZBK64QS2.js";import{a as l,b as U}from"./chunk-EUDKD2JW.js";var f="primary",$e=Symbol("RouteTitle"),Ft=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function re(t){return new Ft(t)}function Yr(t,n,e){let r=e.path.split("/");if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let i={};for(let o=0;o<r.length;o++){let s=r[o],a=t[o];if(s[0]===":")i[s.substring(1)]=a;else if(s!==a.path)return null}return{consumed:t.slice(0,r.length),posParams:i}}function jn(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!j(t[e],n[e]))return!1;return!0}function j(t,n){let e=t?qt(t):void 0,r=n?qt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let o=0;o<e.length;o++)if(i=e[o],!Zr(t[i],n[i]))return!1;return!0}function qt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function Zr(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,o)=>r[o]===i)}else return t===n}function Jr(t){return t.length>0?t[t.length-1]:null}function H(t){return hr(t)?t:Or(t)?A(Promise.resolve(t)):h(t)}var kn={exact:en,subset:tn},Xr={exact:$n,subset:zn,ignored:()=>!0};function Br(t,n,e){return kn[e.paths](t.root,n.root,e.matrixParams)&&Xr[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function $n(t,n){return j(t,n)}function en(t,n,e){if(!ee(t.segments,n.segments)||!rt(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!en(t.children[r],n.children[r],e))return!1;return!0}function zn(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>Zr(t[e],n[e]))}function tn(t,n,e){return rn(t,n,n.segments,e)}function rn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ee(i,e)||n.hasChildren()||!rt(i,e,r))}else if(t.segments.length===e.length){if(!ee(t.segments,e)||!rt(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!tn(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!ee(t.segments,i)||!rt(t.segments,i,r)||!t.children[f]?!1:rn(t.children[f],n,o,r)}}function rt(t,n,e){return n.every((r,i)=>Xr[e](t[i].parameters,r.parameters))}var $=class{root;queryParams;fragment;_queryParamMap;constructor(n=new g([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=re(this.queryParams),this._queryParamMap}toString(){return Bn.serialize(this)}},g=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return nt(this)}},K=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=re(this.parameters),this._parameterMap}toString(){return on(this)}};function Fn(t,n){return ee(t,n)&&t.every((e,r)=>j(e.parameters,n[r].parameters))}function ee(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function qn(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===f&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==f&&(e=e.concat(n(i,r)))}),e}var ze=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>new ne,providedIn:"root"})}return t})(),ne=class{parse(n){let e=new Ht(n);return new $(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Ae(n.root,!0)}`,r=Wn(n.queryParams),i=typeof n.fragment=="string"?`#${Hn(n.fragment)}`:"";return`${e}${r}${i}`}},Bn=new ne;function nt(t){return t.segments.map(n=>on(n)).join("/")}function Ae(t,n){if(!t.hasChildren())return nt(t);if(n){let e=t.children[f]?Ae(t.children[f],!1):"",r=[];return Object.entries(t.children).forEach(([i,o])=>{i!==f&&r.push(`${i}:${Ae(o,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=qn(t,(r,i)=>i===f?[Ae(t.children[f],!1)]:[`${i}:${Ae(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[f]!=null?`${nt(t)}/${e[0]}`:`${nt(t)}/(${e.join("//")})`}}function nn(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function et(t){return nn(t).replace(/%3B/gi,";")}function Hn(t){return encodeURI(t)}function Bt(t){return nn(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function it(t){return decodeURIComponent(t)}function Hr(t){return it(t.replace(/\+/g,"%20"))}function on(t){return`${Bt(t.path)}${Vn(t.parameters)}`}function Vn(t){return Object.entries(t).map(([n,e])=>`;${Bt(n)}=${Bt(e)}`).join("")}function Wn(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${et(e)}=${et(i)}`).join("&"):`${et(e)}=${et(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var Gn=/^[^\/()?;#]+/;function jt(t){let n=t.match(Gn);return n?n[0]:""}var Qn=/^[^\/()?;=#]+/;function Kn(t){let n=t.match(Qn);return n?n[0]:""}var Yn=/^[^=?&#]+/;function Zn(t){let n=t.match(Yn);return n?n[0]:""}var Jn=/^[^&#]+/;function Xn(t){let n=t.match(Jn);return n?n[0]:""}var Ht=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new g([],{}):new g([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(r[f]=new g(n,e)),r}parseSegment(){let n=jt(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(n),new K(it(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=Kn(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=jt(this.remaining);i&&(r=i,this.capture(r))}n[it(e)]=it(r)}parseQueryParam(n){let e=Zn(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let s=Xn(this.remaining);s&&(r=s,this.capture(r))}let i=Hr(e),o=Hr(r);if(n.hasOwnProperty(i)){let s=n[i];Array.isArray(s)||(s=[s],n[i]=s),s.push(o)}else n[i]=o}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=jt(this.remaining),i=this.remaining[r.length];if(i!=="/"&&i!==")"&&i!==";")throw new S(4010,!1);let o;r.indexOf(":")>-1?(o=r.slice(0,r.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=f);let s=this.parseChildren();e[o]=Object.keys(s).length===1?s[f]:new g([],s),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new S(4011,!1)}};function sn(t){return t.segments.length>0?new g([],{[f]:t}):t}function an(t){let n={};for(let[r,i]of Object.entries(t.children)){let o=an(i);if(r===f&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))n[s]=a;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}let e=new g(t.segments,n);return ei(e)}function ei(t){if(t.numberOfChildren===1&&t.children[f]){let n=t.children[f];return new g(t.segments.concat(n.segments),n.children)}return t}function Y(t){return t instanceof $}function un(t,n,e=null,r=null){let i=cn(t);return ln(i,n,e,r)}function cn(t){let n;function e(o){let s={};for(let u of o.children){let c=e(u);s[u.outlet]=c}let a=new g(o.url,s);return o===t&&(n=a),a}let r=e(t.root),i=sn(r);return n??i}function ln(t,n,e,r){let i=t;for(;i.parent;)i=i.parent;if(n.length===0)return kt(i,i,i,e,r);let o=ti(n);if(o.toRoot())return kt(i,i,new g([],{}),e,r);let s=ri(o,i,t),a=s.processChildren?Ee(s.segmentGroup,s.index,o.commands):dn(s.segmentGroup,s.index,o.commands);return kt(i,s.segmentGroup,a,e,r)}function ot(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function De(t){return typeof t=="object"&&t!=null&&t.outlets}function kt(t,n,e,r,i){let o={};r&&Object.entries(r).forEach(([u,c])=>{o[u]=Array.isArray(c)?c.map(p=>`${p}`):`${c}`});let s;t===n?s=e:s=hn(t,n,e);let a=sn(an(s));return new $(a,o,i)}function hn(t,n,e){let r={};return Object.entries(t.children).forEach(([i,o])=>{o===n?r[i]=e:r[i]=hn(o,n,e)}),new g(t.segments,r)}var st=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&ot(r[0]))throw new S(4003,!1);let i=r.find(De);if(i&&i!==Jr(r))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function ti(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new st(!0,0,t);let n=0,e=!1,r=t.reduce((i,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([u,c])=>{a[u]=typeof c=="string"?c.split("/"):c}),[...i,{outlets:a}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:s===0?(o.split("/").forEach((a,u)=>{u==0&&a==="."||(u==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,o]},[]);return new st(e,n,r)}var he=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function ri(t,n,e){if(t.isAbsolute)return new he(n,!0,0);if(!e)return new he(n,!1,NaN);if(e.parent===null)return new he(e,!0,0);let r=ot(t.commands[0])?0:1,i=e.segments.length-1+r;return ni(e,i,t.numberOfDoubleDots)}function ni(t,n,e){let r=t,i=n,o=e;for(;o>i;){if(o-=i,r=r.parent,!r)throw new S(4005,!1);i=r.segments.length}return new he(r,!1,i-o)}function ii(t){return De(t[0])?t[0].outlets:{[f]:t}}function dn(t,n,e){if(t??=new g([],{}),t.segments.length===0&&t.hasChildren())return Ee(t,n,e);let r=oi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let o=new g(t.segments.slice(0,r.pathIndex),{});return o.children[f]=new g(t.segments.slice(r.pathIndex),t.children),Ee(o,0,i)}else return r.match&&i.length===0?new g(t.segments,{}):r.match&&!t.hasChildren()?Vt(t,n,e):r.match?Ee(t,0,i):Vt(t,n,e)}function Ee(t,n,e){if(e.length===0)return new g(t.segments,{});{let r=ii(e),i={};if(Object.keys(r).some(o=>o!==f)&&t.children[f]&&t.numberOfChildren===1&&t.children[f].segments.length===0){let o=Ee(t.children[f],n,e);return new g(t.segments,o.children)}return Object.entries(r).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(i[o]=dn(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{r[o]===void 0&&(i[o]=s)}),new g(t.segments,i)}}function oi(t,n,e){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return o;let s=t.segments[i],a=e[r];if(De(a))break;let u=`${a}`,c=r<e.length-1?e[r+1]:null;if(i>0&&u===void 0)break;if(u&&c&&typeof c=="object"&&c.outlets===void 0){if(!Wr(u,c,s))return o;r+=2}else{if(!Wr(u,{},s))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function Vt(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let o=e[i];if(De(o)){let u=si(o.outlets);return new g(r,u)}if(i===0&&ot(e[0])){let u=t.segments[n];r.push(new K(u.path,Vr(e[0]))),i++;continue}let s=De(o)?o.outlets[f]:`${o}`,a=i<e.length-1?e[i+1]:null;s&&a&&ot(a)?(r.push(new K(s,Vr(a))),i+=2):(r.push(new K(s,{})),i++)}return new g(r,{})}function si(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=Vt(new g([],{}),0,r))}),n}function Vr(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Wr(t,n,e){return t==e.path&&j(n,e.parameters)}var Oe="imperative",m=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(m||{}),O=class{id;url;constructor(n,e){this.id=n,this.url=e}},ie=class extends O{type=m.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},L=class extends O{urlAfterRedirects;type=m.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},w=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(w||{}),Ne=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(Ne||{}),k=class extends O{reason;code;type=m.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},q=class extends O{reason;code;type=m.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},fe=class extends O{error;target;type=m.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},Ue=class extends O{urlAfterRedirects;state;type=m.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},at=class extends O{urlAfterRedirects;state;type=m.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ut=class extends O{urlAfterRedirects;state;shouldActivate;type=m.GuardsCheckEnd;constructor(n,e,r,i,o){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},ct=class extends O{urlAfterRedirects;state;type=m.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},lt=class extends O{urlAfterRedirects;state;type=m.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ht=class{route;type=m.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},dt=class{route;type=m.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},ft=class{snapshot;type=m.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pt=class{snapshot;type=m.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gt=class{snapshot;type=m.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},vt=class{snapshot;type=m.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var Pe=class{},pe=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function ai(t){return!(t instanceof Pe)&&!(t instanceof pe)}function ui(t,n){return t.providers&&!t._injector&&(t._injector=Lt(t.providers,n,`Route: ${t.path}`)),t._injector??n}function x(t){return t.outlet||f}function ci(t,n){let e=t.filter(r=>x(r)===n);return e.push(...t.filter(r=>x(r)!==n)),e}function me(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var mt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return me(this.route?.snapshot)??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Re(this.rootInjector)}},Re=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new mt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(Qe(ue))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Rt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Wt(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Wt(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=Gt(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return Gt(n,this._root).map(e=>e.value)}};function Wt(t,n){if(t===n.value)return n;for(let e of n.children){let r=Wt(t,e);if(r)return r}return null}function Gt(t,n){if(t===n.value)return[n];for(let e of n.children){let r=Gt(t,e);if(r.length)return r.unshift(n),r}return[]}var E=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function le(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var _e=class extends Rt{snapshot;constructor(n,e){super(n),this.snapshot=e,tr(this,n)}toString(){return this.snapshot.toString()}};function fn(t){let n=li(t),e=new M([new K("",{})]),r=new M({}),i=new M({}),o=new M({}),s=new M(""),a=new B(e,r,o,s,i,f,t,n.root);return a.snapshot=n.root,new _e(new E(a,[]),n)}function li(t){let n={},e={},r={},o=new te([],n,r,"",e,f,t,null,{});return new xe("",new E(o,[]))}var B=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,o,s,a,u){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=u,this.title=this.dataSubject?.pipe(v(c=>c[$e]))??h(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(v(n=>re(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(v(n=>re(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function yt(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:l(l({},n.params),t.params),data:l(l({},n.data),t.data),resolve:l(l(l(l({},t.data),n.data),i?.data),t._resolvedData)}:r={params:l({},t.params),data:l({},t.data),resolve:l(l({},t.data),t._resolvedData??{})},i&&gn(i)&&(r.resolve[$e]=i.title),r}var te=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[$e]}constructor(n,e,r,i,o,s,a,u,c){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=s,this.component=a,this.routeConfig=u,this._resolve=c}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=re(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=re(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},xe=class extends Rt{url;constructor(n,e){super(e),this.url=n,tr(this,e)}toString(){return pn(this._root)}};function tr(t,n){n.value._routerState=t,n.children.forEach(e=>tr(t,e))}function pn(t){let n=t.children.length>0?` { ${t.children.map(pn).join(", ")} } `:"";return`${t.value}${n}`}function $t(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,j(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),j(n.params,e.params)||t.paramsSubject.next(e.params),jn(n.url,e.url)||t.urlSubject.next(e.url),j(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Qt(t,n){let e=j(t.params,n.params)&&Fn(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Qt(t.parent,n.parent))}function gn(t){return typeof t.title=="string"||t.title===null}var vn=new D(""),rr=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=f;activateEvents=new X;deactivateEvents=new X;attachEvents=new X;detachEvents=new X;routerOutletData=$r(void 0);parentContexts=d(Re);location=d(Ir);changeDetector=d(Ze);inputBinder=d(Fe,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=e;let i=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,u=new Kt(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(s,{index:i.length,injector:u,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=Ie({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[be]})}return t})(),Kt=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===B?this.route:n===Re?this.childContexts:n===vn?this.outletData:this.parent.get(n,e)}},Fe=new D(""),nr=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){let{activatedRoute:r}=e,i=Ve([r.queryParams,r.params,r.data]).pipe(b(([o,s,a],u)=>(a=l(l(l({},o),s),a),u===0?h(a):Promise.resolve(a)))).subscribe(o=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==r||r.component===null){this.unsubscribeFromRouteData(e);return}let s=zr(r.component);if(!s){this.unsubscribeFromRouteData(e);return}for(let{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,o[a])});this.outletDataSubscriptions.set(e,i)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac})}return t})(),ir=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=Tr({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&Ur(0,"router-outlet")},dependencies:[rr],encapsulation:2})}return t})();function or(t){let n=t.children&&t.children.map(or),e=n?U(l({},t),{children:n}):l({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==f&&(e.component=ir),e}function hi(t,n,e){let r=Le(t,n._root,e?e._root:void 0);return new _e(r,n)}function Le(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=di(t,n,e);return new E(r,i)}else{if(t.shouldAttach(n.value)){let o=t.retrieve(n.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Le(t,a)),s}}let r=fi(n.value),i=n.children.map(o=>Le(t,o));return new E(r,i)}}function di(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return Le(t,r,i);return Le(t,r)})}function fi(t){return new B(new M(t.url),new M(t.params),new M(t.queryParams),new M(t.fragment),new M(t.data),t.outlet,t.component,t)}var ge=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},mn="ngNavigationCancelingError";function St(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=Y(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=Rn(!1,w.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function Rn(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[mn]=!0,e.cancellationCode=n,e}function pi(t){return yn(t)&&Y(t.url)}function yn(t){return!!t&&t[mn]}var gi=(t,n,e,r)=>v(i=>(new Yt(n,i.targetRouterState,i.currentRouterState,e,r).activate(t),i)),Yt=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),$t(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=le(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],r),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if(i===o)if(i.component){let s=r.getContext(i.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,r);else o&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=le(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,o=le(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=le(e);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new vt(o.value.snapshot))}),n.children.length&&this.forwardEvent(new pt(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,o=e?e.value:null;if($t(i),i===o)if(i.component){let s=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let s=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),$t(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=i,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}},Ct=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},de=class{component;route;constructor(n,e){this.component=n,this.route=e}};function vi(t,n,e){let r=t._root,i=n?n._root:null;return Te(r,i,e,[r.value])}function mi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function ye(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!mr(t)?t:n.get(t):r}function Te(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=le(n);return t.children.forEach(s=>{Ri(s,o[s.value.outlet],e,r.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>Me(a,e.getContext(s),i)),i}function Ri(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let u=yi(s,o,o.routeConfig.runGuardsAndResolvers);u?i.canActivateChecks.push(new Ct(r)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Te(t,n,a?a.children:null,r,i):Te(t,n,e,r,i),u&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new de(a.outlet.component,s))}else s&&Me(n,a,i),i.canActivateChecks.push(new Ct(r)),o.component?Te(t,null,a?a.children:null,r,i):Te(t,null,e,r,i);return i}function yi(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!ee(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ee(t.url,n.url)||!j(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Qt(t,n)||!j(t.queryParams,n.queryParams);case"paramsChange":default:return!Qt(t,n)}}function Me(t,n,e){let r=le(t),i=t.value;Object.entries(r).forEach(([o,s])=>{i.component?n?Me(s,n.children.getContext(o),e):Me(s,null,e):Me(s,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new de(n.outlet.component,i)):e.canDeactivateChecks.push(new de(null,i)):e.canDeactivateChecks.push(new de(null,i))}function qe(t){return typeof t=="function"}function Si(t){return typeof t=="boolean"}function Ci(t){return t&&qe(t.canLoad)}function wi(t){return t&&qe(t.canActivate)}function bi(t){return t&&qe(t.canActivateChild)}function Ii(t){return t&&qe(t.canDeactivate)}function Ai(t){return t&&qe(t.canMatch)}function Sn(t){return t instanceof dr||t?.name==="EmptyError"}var tt=Symbol("INITIAL_VALUE");function ve(){return b(t=>Ve(t.map(n=>n.pipe(ae(1),vr(tt)))).pipe(v(n=>{for(let e of n)if(e!==!0){if(e===tt)return tt;if(e===!1||Ti(e))return e}return!0}),W(n=>n!==tt),ae(1)))}function Ti(t){return Y(t)||t instanceof ge}function Ei(t,n){return T(e=>{let{targetSnapshot:r,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:s}}=e;return s.length===0&&o.length===0?h(U(l({},e),{guardsResult:!0})):Oi(s,r,i,t).pipe(T(a=>a&&Si(a)?Mi(r,o,t,n):h(a)),v(a=>U(l({},e),{guardsResult:a})))})}function Oi(t,n,e,r){return A(t).pipe(T(i=>_i(i.component,i.route,e,n,r)),G(i=>i!==!0,!0))}function Mi(t,n,e,r){return A(n).pipe(se(i=>fr(Ni(i.route.parent,r),Di(i.route,r),Pi(t,i.path,e),Ui(t,i.route,e))),G(i=>i!==!0,!0))}function Di(t,n){return t!==null&&n&&n(new gt(t)),h(!0)}function Ni(t,n){return t!==null&&n&&n(new ft(t)),h(!0)}function Ui(t,n,e){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return h(!0);let i=r.map(o=>We(()=>{let s=me(n)??e,a=ye(o,s),u=wi(a)?a.canActivate(n,t):P(s,()=>a(n,t));return H(u).pipe(G())}));return h(i).pipe(ve())}function Pi(t,n,e){let r=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>mi(s)).filter(s=>s!==null).map(s=>We(()=>{let a=s.guards.map(u=>{let c=me(s.node)??e,p=ye(u,c),R=bi(p)?p.canActivateChild(r,t):P(c,()=>p(r,t));return H(R).pipe(G())});return h(a).pipe(ve())}));return h(o).pipe(ve())}function _i(t,n,e,r,i){let o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!o||o.length===0)return h(!0);let s=o.map(a=>{let u=me(n)??i,c=ye(a,u),p=Ii(c)?c.canDeactivate(t,n,e,r):P(u,()=>c(t,n,e,r));return H(p).pipe(G())});return h(s).pipe(ve())}function xi(t,n,e,r){let i=n.canLoad;if(i===void 0||i.length===0)return h(!0);let o=i.map(s=>{let a=ye(s,t),u=Ci(a)?a.canLoad(n,e):P(t,()=>a(n,e));return H(u)});return h(o).pipe(ve(),Cn(r))}function Cn(t){return cr(y(n=>{if(typeof n!="boolean")throw St(t,n)}),v(n=>n===!0))}function Li(t,n,e,r){let i=n.canMatch;if(!i||i.length===0)return h(!0);let o=i.map(s=>{let a=ye(s,t),u=Ai(a)?a.canMatch(n,e):P(t,()=>a(n,e));return H(u)});return h(o).pipe(ve(),Cn(r))}var je=class{segmentGroup;constructor(n){this.segmentGroup=n||null}},ke=class extends Error{urlTree;constructor(n){super(),this.urlTree=n}};function ce(t){return we(new je(t))}function ji(t){return we(new S(4e3,!1))}function ki(t){return we(Rn(!1,w.GuardRejected))}var Zt=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return h(r);if(i.numberOfChildren>1||!i.children[f])return ji(`${n.redirectTo}`);i=i.children[f]}}applyRedirectCommands(n,e,r,i,o){return $i(e,i,o).pipe(v(s=>{if(s instanceof $)throw new ke(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]==="/")throw new ke(a);return a}))}applyRedirectCreateUrlTree(n,e,r,i){let o=this.createSegmentGroup(n,e.root,r,i);return new $(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o=="string"&&o[0]===":"){let a=o.substring(1);r[i]=e[a]}else r[i]=o}),r}createSegmentGroup(n,e,r,i){let o=this.createSegments(n,e.segments,r,i),s={};return Object.entries(e.children).forEach(([a,u])=>{s[a]=this.createSegmentGroup(n,u,r,i)}),new g(o,s)}createSegments(n,e,r,i){return e.map(o=>o.path[0]===":"?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new S(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function $i(t,n,e){if(typeof t=="string")return h(t);let r=t,{queryParams:i,fragment:o,routeConfig:s,url:a,outlet:u,params:c,data:p,title:R}=n;return H(P(e,()=>r({params:c,data:p,queryParams:i,fragment:o,routeConfig:s,url:a,outlet:u,title:R})))}var Jt={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function zi(t,n,e,r,i){let o=wn(t,n,e);return o.matched?(r=ui(n,r),Li(r,n,e,i).pipe(v(s=>s===!0?o:l({},Jt)))):h(o)}function wn(t,n,e){if(n.path==="**")return Fi(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?l({},Jt):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||Yr)(e,t,n);if(!i)return l({},Jt);let o={};Object.entries(i.posParams??{}).forEach(([a,u])=>{o[a]=u.path});let s=i.consumed.length>0?l(l({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function Fi(t){return{matched:!0,parameters:t.length>0?Jr(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Gr(t,n,e,r){return e.length>0&&Hi(t,e,r)?{segmentGroup:new g(n,Bi(r,new g(e,t.children))),slicedSegments:[]}:e.length===0&&Vi(t,e,r)?{segmentGroup:new g(t.segments,qi(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new g(t.segments,t.children),slicedSegments:e}}function qi(t,n,e,r){let i={};for(let o of e)if(bt(t,n,o)&&!r[x(o)]){let s=new g([],{});i[x(o)]=s}return l(l({},r),i)}function Bi(t,n){let e={};e[f]=n;for(let r of t)if(r.path===""&&x(r)!==f){let i=new g([],{});e[x(r)]=i}return e}function Hi(t,n,e){return e.some(r=>bt(t,n,r)&&x(r)!==f)}function Vi(t,n,e){return e.some(r=>bt(t,n,r))}function bt(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function Wi(t,n,e){return n.length===0&&!t.children[e]}var Xt=class{};function Gi(t,n,e,r,i,o,s="emptyOnly"){return new er(t,n,e,r,i,s,o).recognize()}var Qi=31,er=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,o,s,a){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new Zt(this.urlSerializer,this.urlTree)}noMatchError(n){return new S(4002,`'${n.segmentGroup}'`)}recognize(){let n=Gr(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(n).pipe(v(({children:e,rootSnapshot:r})=>{let i=new E(r,e),o=new xe("",i),s=un(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),{state:o,tree:s}}))}match(n){let e=new te([],Object.freeze({}),Object.freeze(l({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),f,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,n,f,e).pipe(v(r=>({children:r,rootSnapshot:e})),J(r=>{if(r instanceof ke)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof je?this.noMatchError(r):r}))}processSegmentGroup(n,e,r,i,o){return r.segments.length===0&&r.hasChildren()?this.processChildren(n,e,r,o):this.processSegment(n,e,r,r.segments,i,!0,o).pipe(v(s=>s instanceof E?[s]:[]))}processChildren(n,e,r,i){let o=[];for(let s of Object.keys(r.children))s==="primary"?o.unshift(s):o.push(s);return A(o).pipe(se(s=>{let a=r.children[s],u=ci(e,s);return this.processSegmentGroup(n,u,a,s,i)}),gr((s,a)=>(s.push(...a),s)),Dt(null),pr(),T(s=>{if(s===null)return ce(r);let a=bn(s);return Ki(a),h(a)}))}processSegment(n,e,r,i,o,s,a){return A(e).pipe(se(u=>this.processSegmentAgainstRoute(u._injector??n,e,u,r,i,o,s,a).pipe(J(c=>{if(c instanceof je)return h(null);throw c}))),G(u=>!!u),J(u=>{if(Sn(u))return Wi(r,i,o)?h(new Xt):ce(r);throw u}))}processSegmentAgainstRoute(n,e,r,i,o,s,a,u){return x(r)!==s&&(s===f||!bt(i,o,r))?ce(i):r.redirectTo===void 0?this.matchSegmentAgainstRoute(n,i,r,o,s,u):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,o,s,u):ce(i)}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,o,s,a){let{matched:u,parameters:c,consumedSegments:p,positionalParamSegments:R,remainingSegments:N}=wn(e,i,o);if(!u)return ce(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>Qi&&(this.allowRedirects=!1));let V=new te(o,c,Object.freeze(l({},this.urlTree.queryParams)),this.urlTree.fragment,Qr(i),x(i),i.component??i._loadedComponent??null,i,Kr(i)),I=yt(V,a,this.paramsInheritanceStrategy);return V.params=Object.freeze(I.params),V.data=Object.freeze(I.data),this.applyRedirects.applyRedirectCommands(p,i.redirectTo,R,V,n).pipe(b(Z=>this.applyRedirects.lineralizeSegments(i,Z)),T(Z=>this.processSegment(n,r,e,Z.concat(N),s,!1,a)))}matchSegmentAgainstRoute(n,e,r,i,o,s){let a=zi(e,r,i,n,this.urlSerializer);return r.path==="**"&&(e.children={}),a.pipe(b(u=>u.matched?(n=r._injector??n,this.getChildConfig(n,r,i).pipe(b(({routes:c})=>{let p=r._loadedInjector??n,{parameters:R,consumedSegments:N,remainingSegments:V}=u,I=new te(N,R,Object.freeze(l({},this.urlTree.queryParams)),this.urlTree.fragment,Qr(r),x(r),r.component??r._loadedComponent??null,r,Kr(r)),oe=yt(I,s,this.paramsInheritanceStrategy);I.params=Object.freeze(oe.params),I.data=Object.freeze(oe.data);let{segmentGroup:Z,slicedSegments:Tt}=Gr(e,N,V,c);if(Tt.length===0&&Z.hasChildren())return this.processChildren(p,c,Z,I).pipe(v(He=>new E(I,He)));if(c.length===0&&Tt.length===0)return h(new E(I,[]));let xn=x(r)===o;return this.processSegment(p,c,Z,Tt,xn?f:o,!0,I).pipe(v(He=>new E(I,He instanceof E?[He]:[])))}))):ce(e)))}getChildConfig(n,e,r){return e.children?h({routes:e.children,injector:n}):e.loadChildren?e._loadedRoutes!==void 0?h({routes:e._loadedRoutes,injector:e._loadedInjector}):xi(n,e,r,this.urlSerializer).pipe(T(i=>i?this.configLoader.loadChildren(n,e).pipe(y(o=>{e._loadedRoutes=o.routes,e._loadedInjector=o.injector})):ki(e))):h({routes:[],injector:n})}};function Ki(t){t.sort((n,e)=>n.value.outlet===f?-1:e.value.outlet===f?1:n.value.outlet.localeCompare(e.value.outlet))}function Yi(t){let n=t.value.routeConfig;return n&&n.path===""}function bn(t){let n=[],e=new Set;for(let r of t){if(!Yi(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=bn(r.children);n.push(new E(r.value,i))}return n.filter(r=>!e.has(r))}function Qr(t){return t.data||{}}function Kr(t){return t.resolve||{}}function Zi(t,n,e,r,i,o){return T(s=>Gi(t,n,e,r,s.extractedUrl,i,o).pipe(v(({state:a,tree:u})=>U(l({},s),{targetSnapshot:a,urlAfterRedirects:u}))))}function Ji(t,n){return T(e=>{let{targetSnapshot:r,guards:{canActivateChecks:i}}=e;if(!i.length)return h(e);let o=new Set(i.map(u=>u.route)),s=new Set;for(let u of o)if(!s.has(u))for(let c of In(u))s.add(c);let a=0;return A(s).pipe(se(u=>o.has(u)?Xi(u,r,t,n):(u.data=yt(u,u.parent,t).resolve,h(void 0))),y(()=>a++),Nt(1),T(u=>a===s.size?h(e):F))})}function In(t){let n=t.children.map(e=>In(e)).flat();return[t,...n]}function Xi(t,n,e,r){let i=t.routeConfig,o=t._resolve;return i?.title!==void 0&&!gn(i)&&(o[$e]=i.title),We(()=>(t.data=yt(t,t.parent,e).resolve,eo(o,t,n,r).pipe(v(s=>(t._resolvedData=s,t.data=l(l({},t.data),s),null)))))}function eo(t,n,e,r){let i=qt(t);if(i.length===0)return h({});let o={};return A(i).pipe(T(s=>to(t[s],n,e,r).pipe(G(),y(a=>{if(a instanceof ge)throw St(new ne,a);o[s]=a}))),Nt(1),v(()=>o),J(s=>Sn(s)?F:we(s)))}function to(t,n,e,r){let i=me(n)??r,o=ye(t,i),s=o.resolve?o.resolve(n,e):P(i,()=>o(n,e));return H(s)}function zt(t){return b(n=>{let e=t(n);return e?A(e).pipe(v(()=>n)):h(n)})}var sr=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===f);return r}getResolvedTitleForRoute(e){return e.data[$e]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(An),providedIn:"root"})}return t})(),An=(()=>{class t extends sr{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(Qe(qr))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Se=new D("",{providedIn:"root",factory:()=>({})}),Be=new D(""),Tn=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=d(jr);loadComponent(e,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return h(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=H(P(e,()=>r.loadComponent())).pipe(v(On),b(Mn),y(s=>{this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s}),Ge(()=>{this.componentLoaders.delete(r)})),o=new Ot(i,()=>new z).pipe(Et());return this.componentLoaders.set(r,o),o}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return h({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let o=En(r,this.compiler,e,this.onLoadEndListener).pipe(Ge(()=>{this.childrenLoaders.delete(r)})),s=new Ot(o,()=>new z).pipe(Et());return this.childrenLoaders.set(r,s),s}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function En(t,n,e,r){return H(P(e,()=>t.loadChildren())).pipe(v(On),b(Mn),T(i=>i instanceof Ar||Array.isArray(i)?h(i):A(n.compileModuleAsync(i))),v(i=>{r&&r(t);let o,s,a=!1;return Array.isArray(i)?(s=i,a=!0):(o=i.create(e).injector,s=o.get(Be,[],{optional:!0,self:!0}).flat()),{routes:s.map(or),injector:o}}))}function ro(t){return t&&typeof t=="object"&&"default"in t}function On(t){return ro(t)?t.default:t}function Mn(t){return h(t)}var It=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(no),providedIn:"root"})}return t})(),no=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Dn=new D("");var Nn=new D(""),Un=(()=>{class t{currentNavigation=Ye(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=null;events=new z;transitionAbortWithErrorSubject=new z;configLoader=d(Tn);environmentInjector=d(ue);destroyRef=d(Sr);urlSerializer=d(ze);rootContexts=d(Re);location=d(Xe);inputBindingEnabled=d(Fe,{optional:!0})!==null;titleStrategy=d(sr);options=d(Se,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=d(It);createViewTransition=d(Dn,{optional:!0});navigationErrorHandler=d(Nn,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>h(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new ht(i)),r=i=>this.events.next(new dt(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;Q(()=>{this.transitions?.next(U(l({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,abortController:new AbortController,id:r}))})}setupNavigations(e){return this.transitions=new M(null),this.transitions.pipe(W(r=>r!==null),b(r=>{let i=!1;return h(r).pipe(b(o=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",w.SupersededByNewNavigation),F;this.currentTransition=r,this.currentNavigation.set({id:o.id,initialUrl:o.rawUrl,extractedUrl:o.extractedUrl,targetBrowserUrl:typeof o.extras.browserUrl=="string"?this.urlSerializer.parse(o.extras.browserUrl):o.extras.browserUrl,trigger:o.source,extras:o.extras,previousNavigation:this.lastSuccessfulNavigation?U(l({},this.lastSuccessfulNavigation),{previousNavigation:null}):null,abort:()=>o.abortController.abort()});let s=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),a=o.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!s&&a!=="reload")return this.events.next(new q(o.id,this.urlSerializer.serialize(o.rawUrl),"",Ne.IgnoredSameUrlNavigation)),o.resolve(!1),F;if(this.urlHandlingStrategy.shouldProcessUrl(o.rawUrl))return h(o).pipe(b(u=>(this.events.next(new ie(u.id,this.urlSerializer.serialize(u.extractedUrl),u.source,u.restoredState)),u.id!==this.navigationId?F:Promise.resolve(u))),Zi(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),y(u=>{r.targetSnapshot=u.targetSnapshot,r.urlAfterRedirects=u.urlAfterRedirects,this.currentNavigation.update(p=>(p.finalUrl=u.urlAfterRedirects,p));let c=new Ue(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot);this.events.next(c)}));if(s&&this.urlHandlingStrategy.shouldProcessUrl(o.currentRawUrl)){let{id:u,extractedUrl:c,source:p,restoredState:R,extras:N}=o,V=new ie(u,this.urlSerializer.serialize(c),p,R);this.events.next(V);let I=fn(this.rootComponentType).snapshot;return this.currentTransition=r=U(l({},o),{targetSnapshot:I,urlAfterRedirects:c,extras:U(l({},N),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(oe=>(oe.finalUrl=c,oe)),h(r)}else return this.events.next(new q(o.id,this.urlSerializer.serialize(o.extractedUrl),"",Ne.IgnoredByUrlHandlingStrategy)),o.resolve(!1),F}),y(o=>{let s=new at(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot);this.events.next(s)}),v(o=>(this.currentTransition=r=U(l({},o),{guards:vi(o.targetSnapshot,o.currentSnapshot,this.rootContexts)}),r)),Ei(this.environmentInjector,o=>this.events.next(o)),y(o=>{if(r.guardsResult=o.guardsResult,o.guardsResult&&typeof o.guardsResult!="boolean")throw St(this.urlSerializer,o.guardsResult);let s=new ut(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot,!!o.guardsResult);this.events.next(s)}),W(o=>o.guardsResult?!0:(this.cancelNavigationTransition(o,"",w.GuardRejected),!1)),zt(o=>{if(o.guards.canActivateChecks.length!==0)return h(o).pipe(y(s=>{let a=new ct(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}),b(s=>{let a=!1;return h(s).pipe(Ji(this.paramsInheritanceStrategy,this.environmentInjector),y({next:()=>a=!0,complete:()=>{a||this.cancelNavigationTransition(s,"",w.NoDataFromResolver)}}))}),y(s=>{let a=new lt(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}))}),zt(o=>{let s=a=>{let u=[];if(a.routeConfig?.loadComponent){let c=me(a)??this.environmentInjector;u.push(this.configLoader.loadComponent(c,a.routeConfig).pipe(y(p=>{a.component=p}),v(()=>{})))}for(let c of a.children)u.push(...s(c));return u};return Ve(s(o.targetSnapshot.root)).pipe(Dt(null),ae(1))}),zt(()=>this.afterPreactivation()),b(()=>{let{currentSnapshot:o,targetSnapshot:s}=r,a=this.createViewTransition?.(this.environmentInjector,o.root,s.root);return a?A(a).pipe(v(()=>r)):h(r)}),v(o=>{let s=hi(e.routeReuseStrategy,o.targetSnapshot,o.currentRouterState);return this.currentTransition=r=U(l({},o),{targetRouterState:s}),this.currentNavigation.update(a=>(a.targetRouterState=s,a)),r}),y(()=>{this.events.next(new Pe)}),gi(this.rootContexts,e.routeReuseStrategy,o=>this.events.next(o),this.inputBindingEnabled),ae(1),Ut(new lr(o=>{let s=r.abortController.signal,a=()=>o.next();return s.addEventListener("abort",a),()=>s.removeEventListener("abort",a)}).pipe(W(()=>!i&&!r.targetRouterState),y(()=>{this.cancelNavigationTransition(r,r.abortController.signal.reason+"",w.Aborted)}))),y({next:o=>{i=!0,this.lastSuccessfulNavigation=Q(this.currentNavigation),this.events.next(new L(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects))),this.titleStrategy?.updateTitle(o.targetRouterState.snapshot),o.resolve(!0)},complete:()=>{i=!0}}),Ut(this.transitionAbortWithErrorSubject.pipe(y(o=>{throw o}))),Ge(()=>{i||this.cancelNavigationTransition(r,"",w.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),J(o=>{if(this.destroyed)return r.resolve(!1),F;if(i=!0,yn(o))this.events.next(new k(r.id,this.urlSerializer.serialize(r.extractedUrl),o.message,o.cancellationCode)),pi(o)?this.events.next(new pe(o.url,o.navigationBehaviorOptions)):r.resolve(!1);else{let s=new fe(r.id,this.urlSerializer.serialize(r.extractedUrl),o,r.targetSnapshot??void 0);try{let a=P(this.environmentInjector,()=>this.navigationErrorHandler?.(s));if(a instanceof ge){let{message:u,cancellationCode:c}=St(this.urlSerializer,a);this.events.next(new k(r.id,this.urlSerializer.serialize(r.extractedUrl),u,c)),this.events.next(new pe(a.redirectTo,a.navigationBehaviorOptions))}else throw this.events.next(s),o}catch(a){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(a)}}return F}))}))}cancelNavigationTransition(e,r,i){let o=new k(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=Q(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function io(t){return t!==Oe}var Pn=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(oo),providedIn:"root"})}return t})(),wt=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},oo=(()=>{class t extends wt{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Pt(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),_n=(()=>{class t{urlSerializer=d(ze);options=d(Se,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=d(Xe);urlHandlingStrategy=d(It);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new $;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let o=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,s=i??o;return s instanceof $?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=fn(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(so),providedIn:"root"})}return t})(),so=(()=>{class t extends _n{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate")})})}handleRouterEvent(e,r){e instanceof ie?this.updateStateMemento():e instanceof q?this.commitTransition(r):e instanceof Ue?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Pe?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof k&&e.code!==w.SupersededByNewNavigation&&e.code!==w.Redirect?this.restoreHistory(r):e instanceof fe?this.restoreHistory(r,!0):e instanceof L&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:r,id:i}){let{replaceUrl:o,state:s}=r;if(this.location.isCurrentPathEqualTo(e)||o){let a=this.browserPageId,u=l(l({},s),this.generateNgRouterState(i,a));this.location.replaceState(e,"",u)}else{let a=l(l({},s),this.generateNgRouterState(i,this.browserPageId+1));this.location.go(e,"",a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===e.finalUrl&&o===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:r}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Pt(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ar(t,n){t.events.pipe(W(e=>e instanceof L||e instanceof k||e instanceof fe||e instanceof q),v(e=>e instanceof L||e instanceof q?0:(e instanceof k?e.code===w.Redirect||e.code===w.SupersededByNewNavigation:!1)?2:1),W(e=>e!==2),ae(1)).subscribe(()=>{n()})}var ao={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},uo={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Ce=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=d(Er);stateManager=d(_n);options=d(Se,{optional:!0})||{};pendingTasks=d(Cr);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=d(Un);urlSerializer=d(ze);location=d(Xe);urlHandlingStrategy=d(It);injector=d(ue);_events=new z;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=d(Pn);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=d(Be,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!d(Fe,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}eventsSubscription=new ur;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=Q(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof k&&r.code!==w.Redirect&&r.code!==w.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof L)this.navigated=!0;else if(r instanceof pe){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),u=l({browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||io(i.source)},s);this.scheduleNavigation(a,Oe,null,u,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}ai(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Oe,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i)=>{this.navigateToSyncWithBrowser(e,i,r)})}navigateToSyncWithBrowser(e,r,i){let o={replaceUrl:!0},s=i?.navigationId?i:null;if(i){let u=l({},i);delete u.navigationId,delete u.\u0275routerPageId,Object.keys(u).length!==0&&(o.state=u)}let a=this.parseUrl(e);this.scheduleNavigation(a,r,s,o).catch(u=>{this.disposed||this.injector.get(Ke)(u)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return Q(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(or),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:u}=r,c=u?this.currentUrlTree.fragment:s,p=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":p=l(l({},this.currentUrlTree.queryParams),o);break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=o||null}p!==null&&(p=this.removeEmptyProps(p));let R;try{let N=i?i.snapshot:this.routerState.snapshot.root;R=cn(N)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),R=this.currentUrlTree.root}return ln(R,e,p,c??null)}navigateByUrl(e,r={skipLocationChange:!1}){let i=Y(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,Oe,null,r)}navigate(e,r={skipLocationChange:!1}){return co(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=l({},ao):r===!1?i=l({},uo):i=r,Y(e))return Br(this.currentUrlTree,e,i);let o=this.parseUrl(e);return Br(this.currentUrlTree,o,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(e,r,i,o,s){if(this.disposed)return Promise.resolve(!1);let a,u,c;s?(a=s.resolve,u=s.reject,c=s.promise):c=new Promise((R,N)=>{a=R,u=N});let p=this.pendingTasks.add();return ar(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(p))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:u,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(R=>Promise.reject(R))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function co(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new S(4008,!1)}var At=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;reactiveHref=Ye(null);get href(){return Q(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new z;applicationErrorHandler=d(Ke);options=d(Se,{optional:!0});constructor(e,r,i,o,s,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=o,this.el=s,this.locationStrategy=a,this.reactiveHref.set(d(new kr("href"),{optional:!0}));let u=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=u==="a"||u==="area"||!!(typeof customElements=="object"&&customElements.get(u)?.observedAttributes?.includes?.("href")),this.isAnchorElement?this.setTabIndexIfNotOnNativeEl("0"):this.subscribeToNavigationEventsIfNecessary()}subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0||!this.isAnchorElement)return;let e=this.preserveFragment,r=i=>i==="merge"||i==="preserve";e||=r(this.queryParamsHandling),e||=!this.queryParamsHandling&&!r(this.options?.defaultQueryParamsHandling),e&&(this.subscription=this.router.events.subscribe(i=>{i instanceof L&&this.updateHref()}))}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&(this.updateHref(),this.subscribeToNavigationEventsIfNecessary()),this.onChanges.next(this)}routerLinkInput=null;set routerLink(e){e==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(Y(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,o,s){let a=this.urlTree;if(a===null||this.isAnchorElement&&(e!==0||r||i||o||s||typeof this.target=="string"&&this.target!="_self"))return!0;let u={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,u)?.catch(c=>{this.applicationErrorHandler(c)}),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.reactiveHref.set(e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null)}applyAttributeValue(e,r){let i=this.renderer,o=this.el.nativeElement;r!==null?i.setAttribute(o,e,r):i.removeAttribute(o,e)}get urlTree(){return this.routerLinkInput===null?null:Y(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \u0275fac=function(r){return new(r||t)(_(Ce),_(B),wr("tabindex"),_(xt),_(_t),_(Fr))};static \u0275dir=Ie({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&Pr("click",function(s){return i.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&Nr("href",i.reactiveHref(),br)("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Je],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Je],replaceUrl:[2,"replaceUrl","replaceUrl",Je],routerLink:"routerLink"},features:[be]})}return t})(),ho=(()=>{class t{router;element;renderer;cdr;link;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new X;constructor(e,r,i,o,s){this.router=e,this.element=r,this.renderer=i,this.cdr=o,this.link=s,this.routerEventsSubscription=e.events.subscribe(a=>{a instanceof L&&this.update()})}ngAfterContentInit(){h(this.links.changes,h(null)).pipe(Mt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=A(e).pipe(Mt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=fo(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return i=>{let o=i.urlTree;return o?e.isActive(o,r):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)(_(Ce),_(_t),_(xt),_(Ze),_(At,8))};static \u0275dir=Ie({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,o){if(r&1&&_r(o,At,5),r&2){let s;xr(s=Lr())&&(i.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[be]})}return t})();function fo(t){return!!t.paths}var po=new D("");function go(t,...n){return Rr([{provide:Be,multi:!0,useValue:t},[],{provide:B,useFactory:vo,deps:[Ce]},{provide:Mr,multi:!0,useFactory:Ro},n.map(e=>e.\u0275providers)])}function vo(t){return t.routerState.root}function mo(t,n){return{\u0275kind:t,\u0275providers:n}}function Ro(){let t=d(yr);return n=>{let e=t.get(Dr);if(n!==e.components[0])return;let r=t.get(Ce),i=t.get(yo);t.get(So)===1&&r.initialNavigation(),t.get(Co,null,{optional:!0})?.setUpPreloading(),t.get(po,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var yo=new D("",{factory:()=>new z}),So=new D("",{providedIn:"root",factory:()=>1});var Co=new D("");function wo(){return mo(8,[nr,{provide:Fe,useExisting:nr}])}export{L as a,B as b,rr as c,Ce as d,At as e,ho as f,go as g,wo as h};
|
package/main-75X3EGHT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as Ce,c as Se}from"./chunk-ISCGGOPN.js";import{a as ge}from"./chunk-OHP7HLY2.js";import{a as ve}from"./chunk-J34TTKLN.js";import{a as k}from"./chunk-MPQNBRD5.js";import{a as be}from"./chunk-GNJTDWT4.js";import{b as ye}from"./chunk-AT6BXXSP.js";import"./chunk-75C77QFK.js";import"./chunk-4Z72AON4.js";import{a as P}from"./chunk-6Q6SSTBK.js";import{a as he}from"./chunk-HVB6ARTT.js";import"./chunk-QBHHGHBJ.js";import{a as L}from"./chunk-AE7T2DAH.js";import"./chunk-XTFTWEJS.js";import{a as h,b as v,c as fe,d as I}from"./chunk-SVQCV5AE.js";import{c as ue}from"./chunk-TC7HZO7D.js";import{v as me,x as de}from"./chunk-TGNUULAU.js";import{c as ae,d as pe,g as ce,h as le}from"./chunk-XUN5TTJC.js";import{a as ee}from"./chunk-VCLWADQK.js";import{a as te,b as oe,c as ne,e as re,f as se,g as ie}from"./chunk-ATGKEH5N.js";import{la as Y,qa as Z}from"./chunk-NXROYR6L.js";import"./chunk-FPPZ4BUR.js";import{A as x,B as G,Fb as z,H as w,Mc as q,N as B,Nc as X,P as R,R as J,Sc as Q,V as M,Y as _,_ as r,cb as K,f as W,i as j,ja as $,n as U,o as F,pa as d,r as S}from"./chunk-ZBK64QS2.js";import"./chunk-EUDKD2JW.js";var E=class e{#o=r(h);#s=r(v);ngOnInit(){this.#s.fetchConfig(),this.#o.clearAllNotCurrentVersion()}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=K({type:e,selectors:[["app-root"]],decls:1,vars:0,template:function(o,n){o&1&&z(0,"router-outlet")},dependencies:[ae],encapsulation:2})};var Te={production:!0,baseUrl:"/api",machineServerUrl:"${WS_URL}",defaultTimeout:3e4};var f=new _("ENVIRONMENT");var A=class e{#o=r(ue);isLoaded=d(!1);webmodules=d(null);preload(t=!1){let o=this.#o.getApiV1Webmodules().pipe(J(n=>this.webmodules.set(n)),w(()=>this.isLoaded.set(!0)));if(t)return o;o.subscribe()}static \u0275fac=function(o){return new(o||e)};static \u0275prov=M({token:e,factory:e.\u0275fac,providedIn:"root"})};var Oe=()=>{let e=r(I);return e.token()?!0:e.checkProxyAuthed().pipe(R(t=>t?U(!0):e.refreshToken().pipe(S(()=>!0))))},xe=()=>{let e=r(v),t=r(k),o=r($),n=e.relayIsEnabled()?"longpoll":"websocket",i=[o.get(L).preload(!0),o.get(L).preloadFilterGroups(!0),o.get(A).preload(!0)];return e.configLoaded===null?x(i).pipe(S(()=>n)):e.configLoaded?.pipe(R(()=>x(i)))},Le=()=>!0,we={path:"connect/:typeParam",loadComponent:()=>import("./chunk-VNGJCKGG.js")},Pe=()=>{let e=r(h);return!e.getItem("locale")&&navigator.language&&e.setItem("locale",navigator.language),!0},Me=[{path:"",children:[{path:"login",canActivate:[],loadComponent:()=>import("./chunk-Z5W4ULWF.js")},{path:"logout",loadComponent:()=>import("./chunk-2VOU6SHS.js")},{path:"",canActivate:[Oe],children:[{path:"",canActivate:[xe,Le,Pe],children:[{path:"welcome",loadComponent:()=>import("./chunk-O5W6EGCB.js"),children:[{path:"",redirectTo:"select",pathMatch:"full"},{path:"select",loadComponent:()=>import("./chunk-NME5JWZN.js")},we]},{path:"",loadComponent:()=>import("./chunk-35KH4G7Y.js"),children:[{path:"",loadComponent:()=>import("./chunk-W2SSWLYM.js")},we,{path:"add-backup",loadComponent:()=>import("./chunk-NFIJYWQI.js")},{path:"backup/:id/export",loadComponent:()=>import("./chunk-E5E5ASXG.js")},{path:"backup/import",loadComponent:()=>import("./chunk-RNWKZDZM.js")},{path:"backup-draft/:id",loadComponent:()=>import("./chunk-2QT6CZNW.js"),loadChildren:()=>import("./chunk-5RQDJUIT.js")},{path:"backup/:id",loadComponent:()=>import("./chunk-2QT6CZNW.js"),loadChildren:()=>import("./chunk-5RQDJUIT.js")},{path:"backup/:id/log",loadComponent:()=>import("./chunk-MSASOFXF.js")},{path:"backup/:id/database",loadComponent:()=>import("./chunk-TBTQMBCJ.js")},{path:"backup/:id/commandline",loadComponent:()=>import("./chunk-QMHLXETS.js")},{path:"backup/:id/commandline/:runId",loadComponent:()=>import("./chunk-GOFRTODH.js")},{path:"backup/:id/delete",loadComponent:()=>import("./chunk-URAI6X74.js")},{path:"restore",children:[{path:"",loadComponent:()=>import("./chunk-X5BOJXMC.js")},{path:"from-config",loadComponent:()=>import("./chunk-NZDZUPC5.js")}]},{path:"restore-from-files",loadComponent:()=>import("./chunk-CZRQ3GX6.js"),loadChildren:()=>import("./chunk-XKKT2NP5.js")},{path:"restore-draft/:id",loadComponent:()=>import("./chunk-CZRQ3GX6.js"),loadChildren:()=>import("./chunk-XKKT2NP5.js")},{path:"restore/:id",loadComponent:()=>import("./chunk-CZRQ3GX6.js"),loadChildren:()=>import("./chunk-XKKT2NP5.js")},{path:"settings",loadComponent:()=>import("./chunk-ZLLXHZQV.js")},{path:"about",loadComponent:()=>import("./chunk-VEON764K.js"),children:[{path:"",redirectTo:"general",pathMatch:"full"},{path:"general",loadComponent:()=>import("./chunk-Y4GDUNWN.js")},{path:"changelog",loadComponent:()=>import("./chunk-4VZNWPWO.js")},{path:"libraries",loadComponent:()=>import("./chunk-E3KF5SRU.js")},{path:"system-info",loadComponent:()=>import("./chunk-K6IL54XE.js")},{path:"server-settings",loadComponent:()=>import("./chunk-H3W2UQY2.js")},{path:"logs",loadChildren:()=>import("./chunk-EOKEY2WO.js")},{path:"crashlogs",loadComponent:()=>import("./chunk-RPJFKWMV.js")}]}]}]}]}]}];var V=null,Ie=(e,t)=>{let o=r(I),n=r(pe),i=r(h),l=r(f),s=i.getItem("locale"),u=r(de),p=Ce(s),a=e.url==="/api/v1/auth/login",m=e.url==="/api/v1/auth/refresh",C=e.url==="/api/v1/progressstate",y=e.url==="/api/v1/remoteoperation/test",b=e.url==="/api/v1/filesystem/validate",T=e.url.startsWith("/api/v2/"),O=o.token(),D=e,H=e.headers.has("custom-proxy-check")||O===fe;if(O&&e.url.startsWith(l.baseUrl)&&!H){let c=e.headers.set("Authorization",`Bearer ${O}`);s&&s!=="en-US"&&(c=c.set("X-Ui-Language",p)),D=e.clone({headers:c})}return t(D).pipe(S(c=>{if(c.type===4&&c.status===200&&T){let g=c.body;if(g?.Success===!1)throw{status:200,message:g?.Error??"Unknown error",error:{Error:g?.Error??"Unknown error"},requestBody:g}}return c}),G(c=>{let g=c.error?.Error||`Error Code: ${c.status}, Message: ${c.message}`;return!H&&(C&&c.status===404||y||b||u.error(g),m&&c.status===401&&(o.logout(),n.navigate(["/logout"])),!a&&!m&&c.status===401)?(V??=o.refreshToken().pipe(B()),V.pipe(R(()=>t(e.clone({headers:e.headers.set("Authorization",`Bearer ${o.token()}`)}))),w(()=>V=null))):F(()=>({error:c,message:g}))}))};var Ve="1.0.0",ke=`portal-proxy-client-${P()}`,De=1,N=class e{#o=1e3;#s=r(f);#t=d("disconnected");#l=d(this.#o);#i=d(!1);#n=d(!1);#a=d(null);isConnectedToMachineServer=this.#n.asReadonly();wsState=this.#t.asReadonly();#p=[];#r={};#e=null;#m=new TextDecoder("utf-8");#c=null;#d=Q(()=>{let t=this.#i(),o=this.#l(),n=this.#a();if(!n||!t||!o||o<this.#o){this.#c&&window.clearInterval(this.#c);return}this.#c=window.setInterval(()=>{this.connectToMachineServer(n)},o)});utf8Atob(t){let o=Uint8Array.from(atob(t),i=>i.charCodeAt(0)),n=this.#m.decode(o);return n?JSON.parse(n):null}connectToMachineServer(t,o){let n=o?.reconnect??!1,i=this.wsState();(i==="disconnected"||i==="error"||n)&&(this.#e?.close(),this.#e=null),!this.#e&&(this.#e=new WebSocket(this.#s.machineServerUrl),this.#t.set("connecting"),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(t),this.#i.set(!0)},this.#e.onerror=()=>{this.#t.set("error")},this.#e.onmessage=l=>{let s=JSON.parse(l.data);if(this.wsState()==="connect"){if(s.type!=="welcome"){this.disconnectFromMachineServer(`Unexpected message type, expected 'welcome' but got '${s.type}'`);return}let p={token:t,publicKey:"",clientVersion:Ve,protocolVersion:De},a=this.createResponse(s,"authportal",p);this.#t.set("welcome"),this.#e?.send(a)}else if(this.wsState()==="welcome"){if(s.type!=="authportal"){this.disconnectFromMachineServer(`Unexpected message type, expected 'authportal' but got '${s.type}'`);return}var u=JSON.parse(s.payload??"");if(u.accepted===!1){this.disconnectFromMachineServer("Authentication failed");return}for(this.#t.set("authenticated"),this.#n.set(!0);this.#p.length>0;){let p=this.#p.pop();p&&this.#r[p.messageId]&&this.activateCommand(p)}}else if(this.wsState()==="authenticated"){if(s.type!=="command"){console.warn(`Unexpected message type, expected 'command' but got '${s.type}'`);return}let p=this.#r[s.messageId];if(p){if(s.errorMessage){p.reject(s.errorMessage);return}else{let a=JSON.parse(s.payload??"");a.body=a?.body==null?null:this.utf8Atob(a.body),p.resolve(a)}delete this.#r[s.messageId],window.clearTimeout(p.timer)}}})}disconnectFromMachineServer(t=null){t&&console.error(t),this.#e?.close(),this.#e=null,this.#t.set("disconnected"),this.#n.set(!1)}createResponse(t,o,n){let i={from:ke,to:t.from,type:o,messageId:t.messageId,payload:JSON.stringify(n)};return JSON.stringify(i)}sendCommand(t,o,n,i,l,s,u=5e3){return(this.wsState()==="disconnected"||this.wsState()==="error")&&this.connectToMachineServer(t),new Promise((p,a)=>{let m=P(),y={from:ke,to:o,type:"command",messageId:m,payload:JSON.stringify({method:n,path:i,body:l,headers:s})},b={resolve:p,reject:a,timer:window.setTimeout(()=>{let T=this.#r[m];T&&(delete this.#r[m],T.reject("Timeout"))},u)};this.#r[m]=b,this.#n()?this.activateCommand(y):this.#p.push(y)})}activateCommand(t){this.#e?.send(JSON.stringify(t))}static \u0275fac=function(o){return new(o||e)};static \u0275prov=M({token:e,factory:e.\u0275fac,providedIn:"root"})};function He(e){if(typeof e!="string")return null;let o=new TextEncoder().encode(e);return window.btoa(String.fromCharCode(...o))}function Ee(e,t,o){let n=e.relayconfigState.config();if(n===null)return o(t);let i=He(t.body),l={};t.headers.keys().forEach(a=>{l[a]=t.headers.get(a)??""});let s=t.headers.get("timeout"),u=s!==null?parseInt(s):e.defaultTimeout;t.url.startsWith("/api/v1/serverstate")&&t.url.includes("longpoll=true")&&(u=1e3*99);let p=e.relayWebsocket.sendCommand(n.accessToken,n.clientId,t.method,t.url,i,l,u);return new W(a=>{p.then(m=>{let C=new te;l!=null&&Object.keys(l).forEach(b=>{C.set(b,l[b])});let y=new oe({body:m.body,status:m.code,statusText:"OK",headers:C});a.next(y),a.complete()}).catch(m=>{a.error(new ne({error:m??"Unknown error",status:0,statusText:m??"Unknown error"}))})})}var Ae=(e,t)=>{let o={relayconfigState:r(v),defaultTimeout:r(f).defaultTimeout,relayWebsocket:r(N)},n=o.relayconfigState.config();if(o.relayconfigState.configLoaded!==null&&n===null){let i=new j;return o.relayconfigState.configLoaded.subscribe(l=>{l&&Ee(o,e,t).subscribe(i)}),i}return Ee(o,e,t)};var Ne={providers:[q(),ce(Me,le()),re(ie(),se([Ae,Ie])),h,{provide:f,useValue:Te},{provide:X,useValue:Se()},{provide:me,useValue:{alertVariant:"simple"}},ge,k,ye,Z,he,Y,be,ve]};ee(E,Ne);
|