UNPKG

homebridge-config-ui-x

Version:

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

2 lines (1 loc) • 13.3 kB
import{a as ae}from"./chunk-GXCQWWJO.js";import{F as de,c as le,j as pe}from"./chunk-NAG4LCT2.js";import{c as Q}from"./chunk-2GN26TCR.js";import{C as oe,D as se,c as X,d as I,e as Y,f as Z,g as ee,j as $,m as te,r as ie,s as ne,z as re}from"./chunk-ORSKS7BY.js";import{b as J}from"./chunk-4NRNA47I.js";import{A as q,C as G,D as j,F as A,H as U,I as K,o as H}from"./chunk-QCMOCU6Q.js";import{Ab as T,Dc as s,Ec as a,Fb as f,Gb as o,Hb as r,Ib as c,Sb as B,Ta as D,Xb as C,Ya as n,Zb as m,aa as w,ga as v,ha as x,hc as N,ic as z,kc as p,lc as u,mb as L,mc as h,n as W,sa as _,x as V,xb as R,yc as O,zb as E}from"./chunk-ZMC752RO.js";import{h as F}from"./chunk-B4AJQJMI.js";var me=()=>["restoring","restarting","restore-complete"];function ue(t,g){if(t&1){let e=B();o(0,"div",5)(1,"h4",6),p(2),s(3,"translate"),r(),c(4,"div",7),s(5,"translate"),o(6,"button",8),C("click",function(){v(e);let i=m();return x(i.onClickGettingStarted())}),p(7),s(8,"translate"),r(),o(9,"a",9),C("click",function(){v(e);let i=m();return x(i.onClickRestoreBackup())}),p(10),s(11,"translate"),r()()}t&2&&(n(2),u(a(3,4,"setup.welcome_to_homebridge")),n(2),f("innerHTML",a(5,6,"setup.intro"),D),n(3),h(" ",a(8,8,"setup.button_get_started")," "),n(3),u(a(11,10,"setup_wizard_restore")))}function ge(t,g){if(t&1){let e=B();o(0,"div",5)(1,"h4",6),p(2),s(3,"translate"),r(),o(4,"div",10),p(5),s(6,"translate"),r(),o(7,"div",11)(8,"form",12),C("ngSubmit",function(){v(e);let i=m();return x(i.createFirstUser())}),o(9,"div",13)(10,"span",14),c(11,"i",15),r(),c(12,"input",16),s(13,"translate"),r(),o(14,"div",13)(15,"span",14),c(16,"i",17),r(),c(17,"input",18),s(18,"translate"),r(),o(19,"div",13)(20,"span",14),c(21,"i",17),r(),c(22,"input",19),s(23,"translate"),r(),o(24,"div",20)(25,"button",21),C("click",function(){v(e);let i=m();return x(i.onClickCancelRestore())}),p(26),s(27,"translate"),r(),o(28,"button",22),p(29),s(30,"translate"),r()()()()()}if(t&2){let e=m();n(2),u(a(3,25,"setup.create_account")),n(3),u(a(6,27,"setup_wizard_create_info")),n(3),f("formGroup",e.createUserForm),n(4),z("is-valid",e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.valid)("is-invalid",e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.invalid),f("readonly",e.loading())("placeholder",a(13,29,"users.label_username")),n(5),z("is-valid",e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.valid)("is-invalid",e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.errors),f("readonly",e.loading())("placeholder",a(18,31,"users.label_password")),n(5),z("is-valid",e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.valid)("is-invalid",e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.errors),f("readonly",e.loading())("placeholder",a(23,33,"users.label_confirm_password")),n(3),f("disabled",e.restoreUploading()),n(),h(" ",a(27,35,"form.button_back")," "),n(2),f("disabled",e.createUserForm.invalid||e.loading()),n(),h(" ",a(30,37,"form.button_continue")," ")}}function _e(t,g){t&1&&(c(0,"i",25),p(1),s(2,"translate")),t&2&&(n(),h(" ",a(2,1,"backup.label_uploading")," "))}function fe(t,g){t&1&&(p(0),s(1,"translate")),t&2&&h(" ",a(1,1,"form.button_continue")," ")}function he(t,g){if(t&1){let e=B();o(0,"div",5)(1,"h4",6),p(2),s(3,"translate"),r(),o(4,"div",10),p(5),s(6,"translate"),r(),o(7,"input",23),C("change",function(i){v(e);let b=m();return x(b.handleRestoreFileInput(i))}),r(),o(8,"div",20)(9,"button",21),C("click",function(){v(e);let i=m();return x(i.onClickCancelRestore())}),p(10),s(11,"translate"),r(),o(12,"button",24),C("click",function(){v(e);let i=m();return x(i.onRestoreBackupClick())}),E(13,_e,3,3)(14,fe,2,3),r()()()}if(t&2){let e=m();n(2),u(a(3,6,"setup_wizard_restore")),n(3),u(a(6,8,"backup.restore_help_one")),n(4),f("disabled",e.restoreUploading()),n(),h(" ",a(11,10,"form.button_back")," "),n(2),f("disabled",e.restoreUploading()||!e.selectedFile()),n(),T(e.restoreUploading()?13:14)}}function be(t,g){t&1&&(p(0),s(1,"translate")),t&2&&h(" ",a(1,1,"setup_wizard_restoring")," ")}function we(t,g){t&1&&(p(0),s(1,"translate")),t&2&&h(" ",a(1,1,"setup_wizard_starting")," ")}function ve(t,g){t&1&&(p(0),s(1,"translate")),t&2&&h(" ",a(1,1,"setup_wizard_complete")," ")}function xe(t,g){t&1&&(o(0,"a",27),p(1),s(2,"translate"),r()),t&2&&(n(),u(a(2,1,"form.button_continue")))}function Ce(t,g){if(t&1&&(o(0,"div",5)(1,"h4",6),E(2,be,2,3)(3,we,2,3)(4,ve,2,3),r(),c(5,"div",26),E(6,xe,3,3,"a",27),r()),t&2){let e=m();n(2),T(e.step()==="restoring"?2:e.step()==="restarting"?3:e.step()==="restore-complete"?4:-1),n(4),T(e.step()==="restore-complete"?6:-1)}}function Se(t,g){t&1&&(o(0,"div",5)(1,"h4",28),p(2),s(3,"translate"),r(),o(4,"div",10),p(5),s(6,"translate"),r(),o(7,"a",29),p(8),s(9,"translate"),r()()),t&2&&(n(2),u(a(3,3,"setup_wizard_complete_title")),n(3),u(a(6,5,"setup_wizard_completed")),n(3),u(a(9,7,"form.button_continue")))}var He=(()=>{class t{$api=w(K);$auth=w(Q);$settings=w(J);$title=w(q);$toastr=w(A);$translate=w(G);$ws=w(ae);step=_("welcome");backgroundStyle=_(void 0);progress=_(1);restoreInProgress=_(!1);restoreStarted=_(!1);restoreFailed=_(!1);loading=_(!1);selectedFile=_(void 0);restoreUploading=_(!1);io;createUserForm=new ee({username:new $("",[I.required]),password:new $("",[I.required,I.minLength(4)]),passwordConfirm:new $("",[I.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 F(this,null,function*(){this.loading.set(!0),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(l){this.loading.set(!1),this.progress.set(50),console.error(l),this.$toastr.error(l.message,this.$translate.instant("toast.title_error"))}})}handleRestoreFileInput(e){let l=e.target.files;l?.length?(this.selectedFile.set(l[0]),this.progress.set(40)):(this.selectedFile.set(void 0),this.progress.set(20))}onRestoreBackupClick(){return F(this,null,function*(){this.restoreUploading.set(!0),this.step.set("restoring"),this.progress.set(60);try{let e=yield this.$api.get("/setup-wizard/get-setup-wizard-token");window.localStorage.setItem(U.jwt.tokenKey,e.access_token),this.$auth.token=e.access_token,this.progress.set(65);let l=new FormData,i=this.selectedFile();l.append("restoreArchive",i,i.name),yield this.$api.post("/backup/restore",l),this.progress.set(70),this.io=this.$ws.connectToNamespace("backup");let b=document.getElementById("output"),S=null;this.io.socket.on("stdout",d=>{d.split(pe).forEach(y=>{if(!y)return;let P=y.replace(le,"").trim();if(!P)return;if(de.test(P))S||(S=document.createElement("div"),b.appendChild(S)),S.textContent=P;else{S&&(S.remove(),S=null);let k=document.createElement("div");k.innerHTML=P,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"),b.appendChild(k)}b.scrollTop=b.scrollHeight})}),this.restoreStarted.set(!0),this.restoreInProgress.set(!0),this.progress.set(75),yield W(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(U.jwt.tokenKey),this.$auth.token=null;let M=document.createElement("div");M.classList.add("orange-text"),M.innerHTML="Starting Homebridge, please wait...",b.appendChild(M),b.scrollTop=b.scrollHeight,yield new Promise(d=>setTimeout(d,3e3)),this.progress.set(88),yield new Promise(d=>setTimeout(d,3e3)),this.progress.set(91),yield new Promise(d=>setTimeout(d,3e3)),this.progress.set(94),yield new Promise(d=>setTimeout(d,3e3)),this.progress.set(97),yield new Promise(d=>setTimeout(d,3e3)),this.progress.set(99);let ce=V(1e3).subscribe(()=>F(this,null,function*(){try{yield this.$api.get("/auth/settings"),ce.unsubscribe(),this.progress.set(100),this.restoreUploading.set(!1),this.step.set("restore-complete")}catch(d){}}))}catch(e){console.error(e),this.restoreUploading.set(!1),this.restoreFailed.set(!0),this.progress.set(20),this.step.set("restore-backup"),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}finally{this.io&&this.io.end?.()}})}setBackground(){return F(this,null,function*(){if(this.$settings.settingsLoaded||(yield W(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let e=`${U.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle.set(`url('${e}') center/cover`)}})}matchPassword(e){let l=e.get("password").value,i=e.get("passwordConfirm").value;return l!==i?(e.get("passwordConfirm").setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||t)};static \u0275cmp=L({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.svg","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"],["href","javascript:void(0)",1,"grey-text",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"],[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"],[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"],[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(l,i){l&1&&(o(0,"div",0)(1,"div",1),c(2,"img",2),o(3,"div",3),c(4,"div",4),r(),E(5,ue,12,12,"div",5)(6,ge,31,39,"div",5)(7,he,15,12,"div",5)(8,Ce,7,2,"div",5)(9,Se,10,9,"div",5),r()()),l&2&&(N("background",i.backgroundStyle()),z("anim",!i.backgroundStyle()),n(4),N("width",`${i.progress()}%`),z("progress-bar-animated",i.loading()||i.restoreUploading()),R("aria-valuenow",i.progress()),n(),T(i.step()==="welcome"?5:i.step()==="create-account"?6:i.step()==="restore-backup"?7:O(10,me).includes(i.step())?8:i.step()==="setup-complete"?9:-1))},dependencies:[H,oe,te,X,Y,Z,re,se,ne,ie,j],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}"],changeDetection:0})}return t})();export{He as SetupWizardComponent};