UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

1 lines • 14.2 kB
import {d as dr}from'./chunk-KTYlT6lA.js';import {e,_,$ as $$1}from'./chunk-WUyBXYN7.js';import {g,X as I3,a as ae,Z as m,z as zt,a0 as x8,a1 as M0,a2 as bf,n as ne,W,$,S as Se$1,v as ve$1,E,c as Eo,F as Fn,a3 as TD,A as An,a4 as w,a5 as x,J as Ja,j as a$,K as Kn,d as zn,Y as Ye$1,e as Hn,L as Ln,f as pt,i as Jn,C as Cn,_ as _n,k as K8,m as La,o as dy,R as Rd,u as Re,w as Kt,x as Cy,y as ie,a6 as vr,O as Oe,a7 as s_,a8 as nc,s as At,t as f_,q as rc,N as Ny,G as h_,D as ly,I as Rt,Q as KC,U as ye$1,T as JC,a9 as Go,aa as Wo,V as Ha}from'./main-ONDCASUV.js';var we=()=>["restoring","restarting","restore-complete"];function xe(t,f){if(t&1){let e=nc();La(0,"div",5)(1,"h4",6),At(2),f_(3,"translate"),Rd(),dy(4,"div",7),f_(5,"translate"),La(6,"button",8),rc("click",function(){Go(e);let i=ye$1();return Wo(i.onClickGettingStarted())}),At(7),f_(8,"translate"),Rd(),La(9,"button",9),rc("click",function(){Go(e);let i=ye$1();return Wo(i.onClickRestoreBackup())}),At(10),f_(11,"translate"),Rd()();}t&2&&(ie(2),Ny(h_(3,4,"setup.welcome_to_homebridge")),ie(2),ly("innerHTML",h_(5,6,"setup.intro"),Ha),ie(3),Rt(" ",h_(8,8,"setup.button_get_started")," "),ie(3),Rt(" ",h_(11,10,"setup_wizard_restore")," "));}function Ce(t,f){if(t&1){let e=nc();La(0,"div",5)(1,"h4",6),At(2),f_(3,"translate"),Rd(),La(4,"div",10),At(5),f_(6,"translate"),Rd(),La(7,"div",11)(8,"form",12),rc("ngSubmit",function(){Go(e);let i=ye$1();return Wo(i.createFirstUser())}),La(9,"div",13)(10,"span",14),dy(11,"i",15),Rd(),dy(12,"input",16),f_(13,"translate"),KC(),Rd(),La(14,"div",13)(15,"span",14),dy(16,"i",17),Rd(),dy(17,"input",18),f_(18,"translate"),KC(),Rd(),La(19,"div",13)(20,"span",14),dy(21,"i",17),Rd(),dy(22,"input",19),f_(23,"translate"),KC(),Rd(),La(24,"div",20)(25,"button",21),rc("click",function(){Go(e);let i=ye$1();return Wo(i.onClickCancelRestore())}),At(26),f_(27,"translate"),Rd(),La(28,"button",22),At(29),f_(30,"translate"),Rd()()()()();}if(t&2){let e=ye$1();ie(2),Ny(h_(3,25,"setup.create_account")),ie(3),Ny(h_(6,27,"setup_wizard_create_info")),ie(3),ly("formGroup",e.createUserForm),ie(4),Cy("is-valid",e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.valid)("is-invalid",e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.invalid),ly("readonly",e.loading())("placeholder",h_(13,29,"users.label_username")),JC(),ie(5),Cy("is-valid",e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.valid)("is-invalid",e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.errors),ly("readonly",e.loading())("placeholder",h_(18,31,"users.label_password")),JC(),ie(5),Cy("is-valid",e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.valid)("is-invalid",e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.errors),ly("readonly",e.loading())("placeholder",h_(23,33,"users.label_confirm_password")),JC(),ie(3),ly("disabled",e.restoreUploading()),ie(),Rt(" ",h_(27,35,"form.button_back")," "),ie(2),ly("disabled",e.createUserForm.invalid||e.loading()),ie(),Rt(" ",h_(30,37,"form.button_continue")," ");}}function ve(t,f){t&1&&(dy(0,"i",25),At(1),f_(2,"translate")),t&2&&(ie(),Rt(" ",h_(2,1,"backup.label_uploading")," "));}function Se(t,f){t&1&&(At(0),f_(1,"translate")),t&2&&Rt(" ",h_(1,1,"form.button_continue")," ");}function ye(t,f){if(t&1){let e=nc();La(0,"div",5)(1,"h4",6),At(2),f_(3,"translate"),Rd(),La(4,"div",10),At(5),f_(6,"translate"),Rd(),La(7,"input",23),rc("change",function(i){Go(e);let u=ye$1();return Wo(u.handleRestoreFileInput(i))}),Rd(),La(8,"div",20)(9,"button",21),rc("click",function(){Go(e);let i=ye$1();return Wo(i.onClickCancelRestore())}),At(10),f_(11,"translate"),Rd(),La(12,"button",24),rc("click",function(){Go(e);let i=ye$1();return Wo(i.onRestoreBackupClick())}),Re(13,ve,3,3)(14,Se,2,3),Rd()()();}if(t&2){let e=ye$1();ie(2),Ny(h_(3,6,"setup_wizard_restore")),ie(3),Ny(h_(6,8,"backup.restore_help_one")),ie(4),ly("disabled",e.restoreUploading()),ie(),Rt(" ",h_(11,10,"form.button_back")," "),ie(2),ly("disabled",e.restoreUploading()||!e.selectedFile()),ie(),Oe(e.restoreUploading()?13:14);}}function ke(t,f){t&1&&(At(0),f_(1,"translate")),t&2&&Rt(" ",h_(1,1,"setup_wizard_restoring")," ");}function ze(t,f){t&1&&(At(0),f_(1,"translate")),t&2&&Rt(" ",h_(1,1,"setup_wizard_starting")," ");}function Fe(t,f){t&1&&(At(0),f_(1,"translate")),t&2&&Rt(" ",h_(1,1,"setup_wizard_complete")," ");}function Ee(t,f){t&1&&(La(0,"a",27),At(1),f_(2,"translate"),Rd()),t&2&&(ie(),Ny(h_(2,1,"form.button_continue")));}function Te(t,f){if(t&1&&(La(0,"div",5)(1,"h4",6),Re(2,ke,2,3)(3,ze,2,3)(4,Fe,2,3),Rd(),dy(5,"div",26),Re(6,Ee,3,3,"a",27),Rd()),t&2){let e=ye$1();ie(2),Oe(e.step()==="restoring"?2:e.step()==="restarting"?3:e.step()==="restore-complete"?4:-1),ie(4),Oe(e.step()==="restore-complete"?6:-1);}}function $e(t,f){t&1&&(La(0,"div",5)(1,"h4",28),At(2),f_(3,"translate"),Rd(),La(4,"div",10),At(5),f_(6,"translate"),Rd(),La(7,"a",29),At(8),f_(9,"translate"),Rd()()),t&2&&(ie(2),Ny(h_(3,3,"setup_wizard_complete_title")),ie(3),Ny(h_(6,5,"setup_wizard_completed")),ie(3),Ny(h_(9,7,"form.button_continue")));}var Ye=(()=>{class t{$api=g(I3);$auth=g(ae);$errors=g(m);$settings=g(zt);$title=g(x8);$toastr=g(M0);$translate=g(bf);$ws=g(dr);destroyRef=g(ne);step=W("welcome");backgroundStyle=W(void 0);progress=W(1);restoreInProgress=W(false);restoreStarted=W(false);restoreFailed=W(false);loading=W(false);selectedFile=W(void 0);restoreUploading=W(false);io;createUserForm=new $({username:new Se$1("",[ve$1.required]),password:new Se$1("",[ve$1.required,ve$1.minLength(4)]),passwordConfirm:new Se$1("",[ve$1.required])},this.matchPassword);ngOnInit(){this.$title.setTitle(this.$translate.instant("setup_wizard_page_title")),this.setBackground();}onClickGettingStarted(){this.step.set("create-account"),this.progress.set(50);}onClickRestoreBackup(){this.step.set("restore-backup"),this.progress.set(20);}onClickCancelRestore(){this.selectedFile.set(void 0),this.step.set("welcome"),this.progress.set(1);}createFirstUser(){return E(this,null,function*(){this.loading.set(true),this.progress.set(75);let e=this.createUserForm.getRawValue();e.name=e.username;try{yield this.$api.post("/setup-wizard/create-first-user",e),this.$settings.env.setupWizardComplete=!0,this.progress.set(100),this.loading.set(!1),yield this.$auth.login({username:e.username,password:e.password}),this.step.set("setup-complete");}catch(o){this.loading.set(false),this.progress.set(50),console.error(o),this.$toastr.error(this.$errors.toToastMessage(o),this.$translate.instant("toast.title_error"));}})}handleRestoreFileInput(e){let o=e.target.files;if(o?.length){let i=o[0];if(i.size>globalThis.backup.maxBackupSize){e.target.value="",this.selectedFile.set(void 0),this.progress.set(20),this.$toastr.error(this.$translate.instant("backup.backup_exceeds_max_size",{maxBackupSizeText:globalThis.backup.maxBackupSizeText,size:`${(i.size/(1024*1024)).toFixed(1)}MB`}),this.$translate.instant("toast.title_error"));return}this.selectedFile.set(i),this.progress.set(40);}else this.selectedFile.set(void 0),this.progress.set(20);}onRestoreBackupClick(){return E(this,null,function*(){this.restoreUploading.set(true),this.step.set("restoring"),this.progress.set(60);try{let e$1=yield this.$api.get("/setup-wizard/get-setup-wizard-token");window.localStorage.setItem(Eo.jwt.tokenKey,e$1.access_token),this.$auth.token=e$1.access_token,this.progress.set(65);let o=new FormData,i=this.selectedFile();o.append("restoreArchive",i,i.name),yield this.$api.post("/backup/restore",o),this.progress.set(70),this.io=this.$ws.connectToNamespace("backup");let u=document.getElementById("output"),d=null;this.io.socket.on("stdout",c=>{c.split(e).forEach(y=>{if(!y)return;let B=y.replace(_,"").trim();if(!B)return;if($$1.test(B))d||(d=document.createElement("div"),u.appendChild(d)),d.textContent=B;else {d&&(d.remove(),d=null);let k=document.createElement("div");k.textContent=B,y.includes("[0;31m")?k.classList.add("red-text"):y.includes("[0;32m")?k.classList.add("green-text"):y.includes("[0;33m")?k.classList.add("orange-text"):y.includes("[0;36m")&&k.classList.add("cyan-text"),u.appendChild(k);}u.scrollTop=u.scrollHeight;});}),this.restoreStarted.set(!0),this.restoreInProgress.set(!0),this.progress.set(75),yield Fn(this.io.request("do-restore")),this.progress.set(80),this.restoreInProgress.set(!1),yield this.$api.put("/backup/restart",{}),this.step.set("restarting"),this.progress.set(85),window.localStorage.removeItem(Eo.jwt.tokenKey),this.$auth.token=null;let N=document.createElement("div");N.classList.add("orange-text"),N.innerHTML="Starting Homebridge, please wait...",u.appendChild(N),u.scrollTop=u.scrollHeight,yield new Promise(c=>setTimeout(c,3e3)),this.progress.set(88),yield new Promise(c=>setTimeout(c,3e3)),this.progress.set(91),yield new Promise(c=>setTimeout(c,3e3)),this.progress.set(94),yield new Promise(c=>setTimeout(c,3e3)),this.progress.set(97),yield new Promise(c=>setTimeout(c,3e3)),this.progress.set(99);let be=TD(1e3).pipe(An(this.destroyRef)).subscribe(()=>E(this,null,function*(){try{yield this.$api.get("/auth/settings"),be.unsubscribe(),this.progress.set(100),this.restoreUploading.set(!1),this.step.set("restore-complete");}catch(c){}}));}catch(e){console.error(e),this.restoreUploading.set(false),this.restoreFailed.set(true),this.progress.set(20),this.step.set("restore-backup"),this.$toastr.error(this.$errors.toToastMessage(e),this.$translate.instant("toast.title_error"));}finally{this.io&&this.io.end?.();}})}setBackground(){return E(this,null,function*(){if(this.$settings.settingsLoaded||(yield Fn(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let e=`${Eo.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle.set(`url('${e}') center/cover`);}})}matchPassword(e){let o=e.get("passwordConfirm"),i=e.get("password").value,u=o.value,d=w({},o.errors??{});return delete d.matchPassword,i!==u?(o.setErrors(x(w({},d),{matchPassword:true})),{matchPassword:true}):(o.setErrors(Object.keys(d).length?d:null),null)}static \u0275fac=function(o){return new(o||t)};static \u0275cmp=Ja({type:t,selectors:[["app-setup-wizard"]],decls:10,vars:11,consts:[[1,"setup-container","gradient","d-flex","align-items-start","justify-content-center"],[1,"w-100","setup-card","d-flex","py-4","flex-column"],["ngSrc","assets/homebridge-color-round.webp","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],[1,"progress","w-100","my-4"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","progress-bar-striped","bg-success"],[1,"w-100","d-flex","flex-column","align-items-center","mb-2"],[1,"mb-3","text-center"],[1,"mb-4","small","grey-text","text-center",3,"innerHTML"],["type","button",1,"btn","btn-lg","btn-primary","mb-4",3,"click"],["type","button",1,"btn","btn-link","grey-text","p-0",3,"click"],[1,"mb-4","small","grey-text","text-center"],[1,"w-100"],["novalidate","",3,"ngSubmit","formGroup"],[1,"input-group","mb-4"],[1,"input-group-text","custom-input"],["aria-hidden","true",1,"fas","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none","tabindex","0","required","",1,"form-control","custom-input",3,"readonly","placeholder"],["aria-hidden","true",1,"fas","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","new-password","tabindex","0","required","",1,"form-control","custom-input",3,"readonly","placeholder"],["formControlName","passwordConfirm","type","password","id","form-pass-confirm","autocomplete","new-password","tabindex","0","required","",1,"form-control","custom-input",3,"readonly","placeholder"],[1,"mt-3","w-100","d-flex","justify-content-between"],["type","button",1,"btn","btn-elegant","ms-0",3,"click","disabled"],["type","submit",1,"btn","btn-primary",3,"disabled"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz",1,"form-control","custom-input","mb-3",3,"change"],["type","button",1,"btn","btn-primary","me-0",3,"click","disabled"],["aria-hidden","true",1,"fas","fa-circle-notch","fa-spin"],["id","output",1,"font-monospace","small","alert","alert-info","w-100","text-start","mt-1","mb-0"],["href","/login",1,"btn","btn-lg","btn-primary","mt-4"],[1,"mb-3"],["href","/",1,"btn","btn-lg","btn-primary"]],template:function(o,i){o&1&&(La(0,"div",0)(1,"div",1),dy(2,"img",2),La(3,"div",3),dy(4,"div",4),Rd(),Re(5,xe,12,12,"div",5)(6,Ce,31,39,"div",5)(7,ye,15,12,"div",5)(8,Te,7,2,"div",5)(9,$e,10,9,"div",5),Rd()()),o&2&&(Kt("background",i.backgroundStyle()),Cy("anim",!i.backgroundStyle()),ie(4),Kt("width",`${i.progress()}%`),Cy("progress-bar-animated",i.loading()||i.restoreUploading()),vr("aria-valuenow",i.progress()),ie(),Oe(i.step()==="welcome"?5:i.step()==="create-account"?6:i.step()==="restore-backup"?7:s_(10,we).includes(i.step())?8:i.step()==="setup-complete"?9:-1));},dependencies:[a$,Kn,zn,Ye$1,Hn,Ln,pt,Jn,Cn,_n,K8],styles:[".setup-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.setup-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.setup-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width:575px){.setup-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}.progress[_ngcontent-%COMP%]{background-color:#ddd}#output[_ngcontent-%COMP%]{height:200px;overflow-y:scroll;white-space:pre-wrap}"]})}return t})();export{Ye as SetupWizardComponent};