homebridge-config-ui-x 5.8.1-beta.10 → 5.8.1-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/package.json +1 -1
  3. package/public/{chunk-QD3VVLOS.js → chunk-265KMAKU.js} +1 -1
  4. package/public/{chunk-BI7LP7NL.js → chunk-32PNKEBU.js} +1 -1
  5. package/public/{chunk-GJ4NQ6RR.js → chunk-45JBQ27F.js} +1 -1
  6. package/public/{chunk-6EXUDJK2.js → chunk-4E3TNUZA.js} +1 -1
  7. package/public/{chunk-PKFOUW7F.js → chunk-4FR5IUD6.js} +1 -1
  8. package/public/{chunk-MC3ZSW3C.js → chunk-54MO372V.js} +1 -1
  9. package/public/{chunk-6BSVFS3Z.js → chunk-5RUAAFRN.js} +1 -1
  10. package/public/{chunk-MHXXUKNU.js → chunk-6M4BKXPC.js} +1 -1
  11. package/public/{chunk-OO2PFMUT.js → chunk-72KUFY2I.js} +1 -1
  12. package/public/{chunk-ZL7WGJJW.js → chunk-7AQ3U466.js} +1 -1
  13. package/public/{chunk-2HJ656K2.js → chunk-7NT5O6NB.js} +1 -1
  14. package/public/{chunk-U5XWZU46.js → chunk-B7RSGI3Z.js} +1 -1
  15. package/public/{chunk-KBANEWIP.js → chunk-BG4ME3P7.js} +1 -1
  16. package/public/{chunk-WWOSAPQ6.js → chunk-CXUIQYGD.js} +1 -1
  17. package/public/{chunk-7T3PHJA2.js → chunk-DCHKUJZE.js} +1 -1
  18. package/public/{chunk-XNI3GOWL.js → chunk-E2Y73M2C.js} +1 -1
  19. package/public/{chunk-LLGR6YT6.js → chunk-EDB2UTOB.js} +1 -1
  20. package/public/{chunk-UDI7EA7K.js → chunk-FMVILKMI.js} +1 -1
  21. package/public/{chunk-5IK7S5UY.js → chunk-FMZG46GC.js} +1 -1
  22. package/public/{chunk-6IQUVFAH.js → chunk-GCWIOFO2.js} +20 -20
  23. package/public/{chunk-IMHGEFPQ.js → chunk-GKPSTVMD.js} +1 -1
  24. package/public/{chunk-YJAZ7E5U.js → chunk-GPQF5BVT.js} +1 -1
  25. package/public/{chunk-KRAE3ZV7.js → chunk-HCVBQMPY.js} +1 -1
  26. package/public/{chunk-5HSTGU2S.js → chunk-HOEWVSEV.js} +1 -1
  27. package/public/{chunk-SBX42YGL.js → chunk-IGNYAGV3.js} +1 -1
  28. package/public/{chunk-BPL74ASO.js → chunk-IOQQFCCQ.js} +1 -1
  29. package/public/{chunk-HOVPO47J.js → chunk-IQSWTLDE.js} +1 -1
  30. package/public/{chunk-OTLQZLR6.js → chunk-JFWMDYB2.js} +1 -1
  31. package/public/{chunk-XYQ2P6TQ.js → chunk-JK5YO5KW.js} +1 -1
  32. package/public/chunk-KNKBGJLC.js +1 -0
  33. package/public/{chunk-FSNKYVUR.js → chunk-KR6UKANA.js} +1 -1
  34. package/public/{chunk-HVEA2SOL.js → chunk-KRITOQOP.js} +1 -1
  35. package/public/{chunk-WQPHE2UF.js → chunk-LGE6IIB6.js} +1 -1
  36. package/public/{chunk-C23A5G7X.js → chunk-MGEETPA4.js} +1 -1
  37. package/public/{chunk-NJB7W7XG.js → chunk-MTRIU6D6.js} +1 -1
  38. package/public/{chunk-4GXPXAHY.js → chunk-OATJRYLX.js} +1 -1
  39. package/public/{chunk-AF6WHPSI.js → chunk-PA763GKM.js} +1 -1
  40. package/public/{chunk-BF2MU3RQ.js → chunk-PX4RUPGA.js} +1 -1
  41. package/public/{chunk-ZA7Y6W26.js → chunk-Q5HBBNPS.js} +1 -1
  42. package/public/{chunk-VNVPY4GU.js → chunk-RBK35FRK.js} +1 -1
  43. package/public/{chunk-I4IR5TID.js → chunk-REQ2KDPF.js} +1 -1
  44. package/public/{chunk-7RAE6BDV.js → chunk-RL3JMCBV.js} +1 -1
  45. package/public/{chunk-LCVDYVDC.js → chunk-RNGMPCB7.js} +1 -1
  46. package/public/{chunk-FECLRIF2.js → chunk-RSX7YTWK.js} +1 -1
  47. package/public/{chunk-LUVKT24F.js → chunk-S7APF3RO.js} +1 -1
  48. package/public/{chunk-OAWUW5JK.js → chunk-SCAD3EW6.js} +1 -1
  49. package/public/{chunk-AOMA2RFA.js → chunk-T22TV4MJ.js} +1 -1
  50. package/public/{chunk-OMFAE35M.js → chunk-TIRNCEGL.js} +1 -1
  51. package/public/{chunk-YX6RZUQD.js → chunk-UTPDI7IW.js} +1 -1
  52. package/public/{chunk-GU2LDNRA.js → chunk-VFTAEW2J.js} +1 -1
  53. package/public/{chunk-P47D6YKF.js → chunk-WDOEQLFB.js} +1 -1
  54. package/public/{chunk-LQIV3IVL.js → chunk-YRAXAUQH.js} +1 -1
  55. package/public/{chunk-WKZJCNS6.js → chunk-ZIHUFL2Q.js} +1 -1
  56. package/public/index.html +1 -1
  57. package/public/{main-MGR4YROM.js → main-HY23LZ3Q.js} +1 -1
  58. package/public/chunk-MFJYDGFF.js +0 -1
@@ -1 +1 @@
1
- import{h as r}from"./chunk-NKVA4YGF.js";import{eb as e,ja as t}from"./chunk-YYORCSG2.js";var u=[{path:"",loadComponent:()=>import("./chunk-LQIV3IVL.js").then(o=>o.LogsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(u),r]})}return o})();var p=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{p as LogsModule};
1
+ import{h as r}from"./chunk-NKVA4YGF.js";import{eb as e,ja as t}from"./chunk-YYORCSG2.js";var u=[{path:"",loadComponent:()=>import("./chunk-YRAXAUQH.js").then(o=>o.LogsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(u),r]})}return o})();var p=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{p as LogsModule};
@@ -1 +1 @@
1
- import{a as B}from"./chunk-XYQ2P6TQ.js";import{n as $,t as k}from"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import{e as P}from"./chunk-NKVA4YGF.js";import{b as V}from"./chunk-KBANEWIP.js";import{k as y,l as T,n as I,q as O}from"./chunk-YJAZ7E5U.js";import{$b as S,Ib as b,Lb as m,Nb as h,Qa as i,_b as c,ac as d,db as x,na as p,qb as f,rb as v,rc as a,sa as u,sc as s,ta as _,wb as g,xb as o,yb as r,zb as C}from"./chunk-YYORCSG2.js";function H(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.restartServer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.linux.label_restart_server")," "))}function D(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.shutdownServer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.linux.label_shutdown_server")," "))}function R(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.dockerRestartContainer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.docker.restart_container")," "))}var K=(()=>{class e{$api=p(O);$modal=p($);$router=p(P);$settings=p(V);$toastr=p(I);$translate=p(y);canShutdownRestartHost=this.$settings.env.canShutdownRestartHost;runningInDocker=this.$settings.env.runningInDocker;ngOnInit(){let t=this.$translate.instant("menu.restart.title");this.$settings.setPageTitle(t)}restartHomebridge(){this.$router.navigate(["/restart"])}restartHomebridgeService(){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:t=>{console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}restartServer(){this.$router.navigate(["/platform-tools/linux/restart-server"])}shutdownServer(){let t=this.$modal.open(B,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("menu.linux.label_shutdown_server"),t.componentInstance.message=this.$translate.instant("menu.linux.label_shutdown_modal"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.faIconClass="fa fa-power-off primary-text",t.result.then(()=>{this.$router.navigate(["/platform-tools/linux/shutdown-server"])}).catch(()=>{})}dockerRestartContainer(){this.$router.navigate(["/platform-tools/docker/restart-container"])}static \u0275fac=function(l){return new(l||e)};static \u0275cmp=x({type:e,selectors:[["ng-component"]],decls:19,vars:16,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"w-100","text-center","my-5"],["type","button",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click"],["type","button","container","body","triggers","hover",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click","openDelay","ngbTooltip"]],template:function(l,n){l&1&&(o(0,"div",0)(1,"h3",1),c(2),a(3,"translate"),r()(),o(4,"div",2)(5,"div",3),C(6,"i",4),r(),o(7,"p",5)(8,"button",6),m("click",function(){return n.restartHomebridge()}),c(9),a(10,"translate"),r()(),o(11,"p",5)(12,"button",7),a(13,"translate"),m("click",function(){return n.restartHomebridgeService()}),c(14),a(15,"translate"),r()(),f(16,H,4,3,"p",5),f(17,D,4,3,"p",5),f(18,R,4,3,"p",5),r()),l&2&&(i(2),S(s(3,8,"menu.restart.title")),i(7),d(" ",s(10,10,"menu.hbrestart.confirm_hb")," "),i(3),g("openDelay",150)("ngbTooltip",s(13,12,"reset.force_restart_hb_help_text")),i(2),d(" ",s(15,14,"menu.hbrestart.confirm_ui")," "),i(2),v(n.canShutdownRestartHost?16:-1),i(),v(n.canShutdownRestartHost?17:-1),i(),v(n.runningInDocker?18:-1))},dependencies:[k,T],encapsulation:2})}return e})();export{K as PowerOptionsComponent};
1
+ import{a as B}from"./chunk-JK5YO5KW.js";import{n as $,t as k}from"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import{e as P}from"./chunk-NKVA4YGF.js";import{b as V}from"./chunk-BG4ME3P7.js";import{k as y,l as T,n as I,q as O}from"./chunk-GPQF5BVT.js";import{$b as S,Ib as b,Lb as m,Nb as h,Qa as i,_b as c,ac as d,db as x,na as p,qb as f,rb as v,rc as a,sa as u,sc as s,ta as _,wb as g,xb as o,yb as r,zb as C}from"./chunk-YYORCSG2.js";function H(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.restartServer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.linux.label_restart_server")," "))}function D(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.shutdownServer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.linux.label_shutdown_server")," "))}function R(e,w){if(e&1){let t=b();o(0,"p",5)(1,"button",6),m("click",function(){u(t);let n=h();return _(n.dockerRestartContainer())}),c(2),a(3,"translate"),r()()}e&2&&(i(2),d(" ",s(3,1,"menu.docker.restart_container")," "))}var K=(()=>{class e{$api=p(O);$modal=p($);$router=p(P);$settings=p(V);$toastr=p(I);$translate=p(y);canShutdownRestartHost=this.$settings.env.canShutdownRestartHost;runningInDocker=this.$settings.env.runningInDocker;ngOnInit(){let t=this.$translate.instant("menu.restart.title");this.$settings.setPageTitle(t)}restartHomebridge(){this.$router.navigate(["/restart"])}restartHomebridgeService(){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:t=>{console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}restartServer(){this.$router.navigate(["/platform-tools/linux/restart-server"])}shutdownServer(){let t=this.$modal.open(B,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("menu.linux.label_shutdown_server"),t.componentInstance.message=this.$translate.instant("menu.linux.label_shutdown_modal"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.faIconClass="fa fa-power-off primary-text",t.result.then(()=>{this.$router.navigate(["/platform-tools/linux/shutdown-server"])}).catch(()=>{})}dockerRestartContainer(){this.$router.navigate(["/platform-tools/docker/restart-container"])}static \u0275fac=function(l){return new(l||e)};static \u0275cmp=x({type:e,selectors:[["ng-component"]],decls:19,vars:16,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"w-100","text-center","my-5"],["type","button",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click"],["type","button","container","body","triggers","hover",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click","openDelay","ngbTooltip"]],template:function(l,n){l&1&&(o(0,"div",0)(1,"h3",1),c(2),a(3,"translate"),r()(),o(4,"div",2)(5,"div",3),C(6,"i",4),r(),o(7,"p",5)(8,"button",6),m("click",function(){return n.restartHomebridge()}),c(9),a(10,"translate"),r()(),o(11,"p",5)(12,"button",7),a(13,"translate"),m("click",function(){return n.restartHomebridgeService()}),c(14),a(15,"translate"),r()(),f(16,H,4,3,"p",5),f(17,D,4,3,"p",5),f(18,R,4,3,"p",5),r()),l&2&&(i(2),S(s(3,8,"menu.restart.title")),i(7),d(" ",s(10,10,"menu.hbrestart.confirm_hb")," "),i(3),g("openDelay",150)("ngbTooltip",s(13,12,"reset.force_restart_hb_help_text")),i(2),d(" ",s(15,14,"menu.hbrestart.confirm_ui")," "),i(2),v(n.canShutdownRestartHost?16:-1),i(),v(n.canShutdownRestartHost?17:-1),i(),v(n.runningInDocker?18:-1))},dependencies:[k,T],encapsulation:2})}return e})();export{K as PowerOptionsComponent};
@@ -1 +1 @@
1
- import{a as n}from"./chunk-WQPHE2UF.js";import{h as i}from"./chunk-NKVA4YGF.js";import"./chunk-KBANEWIP.js";import"./chunk-YJAZ7E5U.js";import{eb as r,ja as o}from"./chunk-YYORCSG2.js";var a=[{path:"",loadComponent:()=>import("./chunk-MHXXUKNU.js").then(t=>t.SetupWizardComponent)}],u=(()=>{class t{static \u0275fac=function(e){return new(e||t)};static \u0275mod=r({type:t});static \u0275inj=o({imports:[i.forChild(a),i]})}return t})();var l=(()=>{class t{static \u0275fac=function(e){return new(e||t)};static \u0275mod=r({type:t});static \u0275inj=o({providers:[n],imports:[u]})}return t})();export{l as SetupWizardModule};
1
+ import{a as n}from"./chunk-LGE6IIB6.js";import{h as i}from"./chunk-NKVA4YGF.js";import"./chunk-BG4ME3P7.js";import"./chunk-GPQF5BVT.js";import{eb as r,ja as o}from"./chunk-YYORCSG2.js";var a=[{path:"",loadComponent:()=>import("./chunk-6M4BKXPC.js").then(t=>t.SetupWizardComponent)}],u=(()=>{class t{static \u0275fac=function(e){return new(e||t)};static \u0275mod=r({type:t});static \u0275inj=o({imports:[i.forChild(a),i]})}return t})();var l=(()=>{class t{static \u0275fac=function(e){return new(e||t)};static \u0275mod=r({type:t});static \u0275inj=o({providers:[n],imports:[u]})}return t})();export{l as SetupWizardModule};
@@ -1,4 +1,4 @@
1
- import{a as xt}from"./chunk-RM3JSPOW.js";import{b as B,e as vt,f as $t,g as Rt,h as kt}from"./chunk-2HJ656K2.js";import{a as bt,b as _t}from"./chunk-CQLJRFML.js";import{a as Ct}from"./chunk-KYFLQ7R3.js";import{a as It}from"./chunk-BIXWXEEW.js";import{m as ut,n as ht,t as R}from"./chunk-PELXH4TO.js";import{B as mt,C as ft,c as ct,e as pt,l as gt}from"./chunk-YLFJH4ZN.js";import{c as yt,e as F}from"./chunk-NKVA4YGF.js";import{b as wt}from"./chunk-KBANEWIP.js";import{k as O,l as H,n as N,q as U}from"./chunk-YJAZ7E5U.js";import{$b as M,Ib as S,Lb as b,Nb as p,Qa as o,Qc as lt,Xc as dt,Yb as st,Za as tt,_b as y,a as j,ac as V,b as W,d as X,db as I,fc as ot,g as Z,gc as rt,h as $,hc as at,mc as K,na as m,pb as C,qb as k,rb as x,rc as r,sa as u,sc as l,ta as h,tb as et,tc as G,ub as it,vb as nt,wb as f,x as E,xb as a,yb as d,zb as g}from"./chunk-YYORCSG2.js";var Tt=Z(Rt(),1);var St=Z(It(),1);var Et=(s,w)=>({"fa-trash":s,"fa-cog fa-spin":w});function Ht(s,w){s&1&&(a(0,"div",13),g(1,"i",20),d())}function Nt(s,w){if(s&1){let t=S();a(0,"li",9)(1,"span"),y(2),r(3,"date"),g(4,"br"),a(5,"span",21),y(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.restore(i.id))}),g(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.download(i.id))}),g(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.delete(i.id))}),g(20,"i",24),d()()()}if(s&2){let t=w.$implicit,e=p(2);o(2),V(" ",G(3,15,t.timestamp,"mediumDate")),o(4),M(G(7,18,t.timestamp,"shortTime")),o(3),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(10,21,"config.restore.copy_to_editor"))("openDelay",150),C("aria-label",l(11,23,"config.restore.copy_to_editor")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(14,25,"form.button_download"))("openDelay",150),C("aria-label",l(15,27,"form.button_download")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(18,29,"form.button_delete"))("openDelay",150),C("aria-label",l(19,31,"form.button_delete")),o(3),f("ngClass",K(33,Et,t.id!==e.deleting,t.id===e.deleting))}}function Ft(s,w){if(s&1){let t=S();a(0,"ul",14),it(1,Nt,21,36,"li",9,et),a(3,"li",9)(4,"span"),y(5),r(6,"translate"),g(7,"br"),a(8,"span",21),y(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),b("click",function(){u(t);let i=p();return h(i.deleteAllBackups())}),g(15,"i",24),d()()()()}if(s&2){let t=p();o(),nt(t.backupList),o(4),V(" ",l(6,7,"form.button_delete_all")),o(4),V(" ",l(10,9,"common.labels.no_confirmation")," "),o(3),f("disabled",t.clicked||t.deleting)("ngbTooltip",l(13,11,"form.button_delete_all"))("openDelay",150),C("aria-label",l(14,13,"form.button_delete")),o(3),f("ngClass",K(15,Et,t.deleting!=="all",t.deleting==="all"))}}var Mt=(()=>{class s{$activeModal=m(ut);$api=m(U);$router=m(F);$toastr=m(N);$translate=m(O);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return $(this,null,function*(){try{let t=yield E(this.$api.get("/config-editor/backups"));this.loading=!1,this.backupList=t}catch(t){this.loading=!1,console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return $(this,null,function*(){this.clicked=!0;try{let e=yield E(this.$api.get(`/config-editor/backups/${t}`)),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),v=`config-backup-${t}.json`;(0,St.saveAs)(n,v),this.clicked=!1}catch(e){this.clicked=!1,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return $(this,null,function*(){this.deleting=t;try{yield E(this.$api.delete(`/config-editor/backups/${t}`)),yield this.getConfigBackups(),this.deleting=null}catch(e){this.deleting=null,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return $(this,null,function*(){this.deleting="all";try{yield E(this.$api.delete("/config-editor/backups")),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList=[],this.deleting=null}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting=null}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=I({type:s,selectors:[["ng-component"]],inputs:{currentConfig:"currentConfig",fromSettings:"fromSettings"},decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-cog","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas",3,"ngClass"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),y(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),b("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),g(9,"i",6),d(),a(10,"ul",7)(11,"li"),y(12),r(13,"translate"),d(),a(14,"li"),y(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),y(21),r(22,"translate"),d(),g(23,"br"),a(24,"small",10),y(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),g(29,"i",12),d()()(),k(30,Ht,2,0,"div",13)(31,Ft,16,18,"ul",14),d(),a(32,"div",15),g(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),b("click",function(){return i.dismissModal()}),y(37),r(38,"translate"),d()(),g(39,"div",19),d()()),e&2&&(o(3),M(l(4,13,"config.restore.title")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(6,15,"form.button_close")),o(7),M(l(13,17,"config.restore.help_1")),o(3),M(l(16,19,"config.restore.help_2")),o(6),M(l(22,21,"form.button_download")),o(4),M(l(26,23,"config.restore.download")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(28,25,"backup.backup_now")),o(3),x(i.loading?30:i.backupList.length?31:-1),o(5),f("disabled",i.clicked||i.deleting),C("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[R,lt,ft,dt,H],encapsulation:2})}return s})();function Ut(s,w){if(s&1){let t=S();a(0,"button",13),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onCancelRestore())}),g(3,"i",14),d()}if(s&2){let t=p();f("disabled",t.saveInProgress)("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),C("aria-label",l(2,6,"form.button_cancel"))}}function qt(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onRestore())}),g(3,"i",16),d()}s&2&&(f("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),C("aria-label",l(2,5,"form.button_restore")))}function zt(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.toggleSideBySide())}),g(3,"i",17),d()}if(s&2){let t=p();f("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),C("aria-label",l(2,9,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),st("fa-columns",!t.renderSideBySide)("fa-bars",t.renderSideBySide)}}function Jt(s,w){s&1&&g(0,"i",8)}function Lt(s,w){s&1&&g(0,"i",9)}function Wt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-editor",18),b("onInit",function(i){u(t);let n=p();return h(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("model",t.monacoEditorModel)}}function Kt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-diff-editor",19),b("onInit",function(i){u(t);let n=p();return h(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Gt(s,w){if(s&1){let t=S();a(0,"textarea",20),at("ngModelChange",function(i){u(t);let n=p();return rt(n.homebridgeConfig,i)||(n.homebridgeConfig=i),h(i)}),y(1," "),d()}if(s&2){let t=p();ot("ngModel",t.homebridgeConfig)}}var Te=(()=>{class s{$api=m(U);$md=m(Ct);$modal=m(ht);$monacoEditor=m(xt);$renderer=m(tt);$route=m(yt);$router=m(F);$settings=m(wt);$toastr=m(N);$translate=m(O);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=!1;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide,renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig=n.config,this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>this.setMonacoEditorModel()});let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}onEditorInit(t){window.editor=t,this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig||""),n&&n.setValue(this.homebridgeConfig||"{}")}}}onSave(){return $(this,null,function*(){if(!this.saveInProgress){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress=!0;try{if(!this.isMobile){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress=!1,this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig=this.monacoEditor.getModel().getValue()}let t=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(t,null,4),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}onRestore(t=!1){let e=this.$modal.open(Mt,{size:"lg",backdrop:"static"});e.componentInstance.currentConfig=this.homebridgeConfig,e.componentInstance.fromSettings=t,e.result.then(i=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig,this.updateDiffModels()),this.$api.get(`/config-editor/backups/${i}`).subscribe({next:n=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(n,null,4),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:n=>{console.error(n),this.$toastr.error(n.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig=this.originalConfig,this.originalConfig="",this.renderSideBySide&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide=!this.renderSideBySide,this.editorOptions=W(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let v=window.monaco.editor.getModel(i);v&&v.dispose();let T=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(A=>A.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:T})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[e])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
1
+ import{a as xt}from"./chunk-RM3JSPOW.js";import{b as B,e as vt,f as $t,g as Rt,h as kt}from"./chunk-7NT5O6NB.js";import{a as bt,b as _t}from"./chunk-CQLJRFML.js";import{a as Ct}from"./chunk-KYFLQ7R3.js";import{a as It}from"./chunk-BIXWXEEW.js";import{m as ut,n as ht,t as R}from"./chunk-PELXH4TO.js";import{B as mt,C as ft,c as ct,e as pt,l as gt}from"./chunk-YLFJH4ZN.js";import{c as yt,e as F}from"./chunk-NKVA4YGF.js";import{b as wt}from"./chunk-BG4ME3P7.js";import{k as O,l as H,n as N,q as U}from"./chunk-GPQF5BVT.js";import{$b as M,Ib as S,Lb as b,Nb as p,Qa as o,Qc as lt,Xc as dt,Yb as st,Za as tt,_b as y,a as j,ac as V,b as W,d as X,db as I,fc as ot,g as Z,gc as rt,h as $,hc as at,mc as K,na as m,pb as C,qb as k,rb as x,rc as r,sa as u,sc as l,ta as h,tb as et,tc as G,ub as it,vb as nt,wb as f,x as E,xb as a,yb as d,zb as g}from"./chunk-YYORCSG2.js";var Tt=Z(Rt(),1);var St=Z(It(),1);var Et=(s,w)=>({"fa-trash":s,"fa-cog fa-spin":w});function Ht(s,w){s&1&&(a(0,"div",13),g(1,"i",20),d())}function Nt(s,w){if(s&1){let t=S();a(0,"li",9)(1,"span"),y(2),r(3,"date"),g(4,"br"),a(5,"span",21),y(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.restore(i.id))}),g(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.download(i.id))}),g(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.delete(i.id))}),g(20,"i",24),d()()()}if(s&2){let t=w.$implicit,e=p(2);o(2),V(" ",G(3,15,t.timestamp,"mediumDate")),o(4),M(G(7,18,t.timestamp,"shortTime")),o(3),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(10,21,"config.restore.copy_to_editor"))("openDelay",150),C("aria-label",l(11,23,"config.restore.copy_to_editor")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(14,25,"form.button_download"))("openDelay",150),C("aria-label",l(15,27,"form.button_download")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(18,29,"form.button_delete"))("openDelay",150),C("aria-label",l(19,31,"form.button_delete")),o(3),f("ngClass",K(33,Et,t.id!==e.deleting,t.id===e.deleting))}}function Ft(s,w){if(s&1){let t=S();a(0,"ul",14),it(1,Nt,21,36,"li",9,et),a(3,"li",9)(4,"span"),y(5),r(6,"translate"),g(7,"br"),a(8,"span",21),y(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),b("click",function(){u(t);let i=p();return h(i.deleteAllBackups())}),g(15,"i",24),d()()()()}if(s&2){let t=p();o(),nt(t.backupList),o(4),V(" ",l(6,7,"form.button_delete_all")),o(4),V(" ",l(10,9,"common.labels.no_confirmation")," "),o(3),f("disabled",t.clicked||t.deleting)("ngbTooltip",l(13,11,"form.button_delete_all"))("openDelay",150),C("aria-label",l(14,13,"form.button_delete")),o(3),f("ngClass",K(15,Et,t.deleting!=="all",t.deleting==="all"))}}var Mt=(()=>{class s{$activeModal=m(ut);$api=m(U);$router=m(F);$toastr=m(N);$translate=m(O);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return $(this,null,function*(){try{let t=yield E(this.$api.get("/config-editor/backups"));this.loading=!1,this.backupList=t}catch(t){this.loading=!1,console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return $(this,null,function*(){this.clicked=!0;try{let e=yield E(this.$api.get(`/config-editor/backups/${t}`)),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),v=`config-backup-${t}.json`;(0,St.saveAs)(n,v),this.clicked=!1}catch(e){this.clicked=!1,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return $(this,null,function*(){this.deleting=t;try{yield E(this.$api.delete(`/config-editor/backups/${t}`)),yield this.getConfigBackups(),this.deleting=null}catch(e){this.deleting=null,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return $(this,null,function*(){this.deleting="all";try{yield E(this.$api.delete("/config-editor/backups")),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList=[],this.deleting=null}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting=null}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=I({type:s,selectors:[["ng-component"]],inputs:{currentConfig:"currentConfig",fromSettings:"fromSettings"},decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-cog","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas",3,"ngClass"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),y(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),b("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),g(9,"i",6),d(),a(10,"ul",7)(11,"li"),y(12),r(13,"translate"),d(),a(14,"li"),y(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),y(21),r(22,"translate"),d(),g(23,"br"),a(24,"small",10),y(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),g(29,"i",12),d()()(),k(30,Ht,2,0,"div",13)(31,Ft,16,18,"ul",14),d(),a(32,"div",15),g(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),b("click",function(){return i.dismissModal()}),y(37),r(38,"translate"),d()(),g(39,"div",19),d()()),e&2&&(o(3),M(l(4,13,"config.restore.title")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(6,15,"form.button_close")),o(7),M(l(13,17,"config.restore.help_1")),o(3),M(l(16,19,"config.restore.help_2")),o(6),M(l(22,21,"form.button_download")),o(4),M(l(26,23,"config.restore.download")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(28,25,"backup.backup_now")),o(3),x(i.loading?30:i.backupList.length?31:-1),o(5),f("disabled",i.clicked||i.deleting),C("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[R,lt,ft,dt,H],encapsulation:2})}return s})();function Ut(s,w){if(s&1){let t=S();a(0,"button",13),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onCancelRestore())}),g(3,"i",14),d()}if(s&2){let t=p();f("disabled",t.saveInProgress)("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),C("aria-label",l(2,6,"form.button_cancel"))}}function qt(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onRestore())}),g(3,"i",16),d()}s&2&&(f("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),C("aria-label",l(2,5,"form.button_restore")))}function zt(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.toggleSideBySide())}),g(3,"i",17),d()}if(s&2){let t=p();f("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),C("aria-label",l(2,9,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),st("fa-columns",!t.renderSideBySide)("fa-bars",t.renderSideBySide)}}function Jt(s,w){s&1&&g(0,"i",8)}function Lt(s,w){s&1&&g(0,"i",9)}function Wt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-editor",18),b("onInit",function(i){u(t);let n=p();return h(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("model",t.monacoEditorModel)}}function Kt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-diff-editor",19),b("onInit",function(i){u(t);let n=p();return h(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Gt(s,w){if(s&1){let t=S();a(0,"textarea",20),at("ngModelChange",function(i){u(t);let n=p();return rt(n.homebridgeConfig,i)||(n.homebridgeConfig=i),h(i)}),y(1," "),d()}if(s&2){let t=p();ot("ngModel",t.homebridgeConfig)}}var Te=(()=>{class s{$api=m(U);$md=m(Ct);$modal=m(ht);$monacoEditor=m(xt);$renderer=m(tt);$route=m(yt);$router=m(F);$settings=m(wt);$toastr=m(N);$translate=m(O);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=!1;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide,renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig=n.config,this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>this.setMonacoEditorModel()});let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}onEditorInit(t){window.editor=t,this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig||""),n&&n.setValue(this.homebridgeConfig||"{}")}}}onSave(){return $(this,null,function*(){if(!this.saveInProgress){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress=!0;try{if(!this.isMobile){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress=!1,this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig=this.monacoEditor.getModel().getValue()}let t=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(t,null,4),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}onRestore(t=!1){let e=this.$modal.open(Mt,{size:"lg",backdrop:"static"});e.componentInstance.currentConfig=this.homebridgeConfig,e.componentInstance.fromSettings=t,e.result.then(i=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig,this.updateDiffModels()),this.$api.get(`/config-editor/backups/${i}`).subscribe({next:n=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(n,null,4),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:n=>{console.error(n),this.$toastr.error(n.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig=this.originalConfig,this.originalConfig="",this.renderSideBySide&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide=!this.renderSideBySide,this.editorOptions=W(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let v=window.monaco.editor.getModel(i);v&&v.dispose();let T=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(A=>A.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:T})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[e])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
2
2
  `).map(e=>` ${e}`).join(`
3
3
  `),setTimeout(()=>{let e=this.monacoEditor.getModel().findMatches(t);if(e.length){let i=e[0].range,n=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:n,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let t=monaco.Uri.parse("a://homebridge/config.json"),e=kt(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported});window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[t.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:j({name:{type:"string",title:this.$translate.instant("settings.name"),description:`The Homebridge instance name.
4
4
  This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",title:this.$translate.instant("users.label_username"),description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
@@ -1 +1 @@
1
- import{c as t}from"./chunk-ZL7WGJJW.js";import{b as i}from"./chunk-J6Q2DPRL.js";import{eb as r,ja as o}from"./chunk-YYORCSG2.js";var f=(()=>{class e{static \u0275fac=function(s){return new(s||e)};static \u0275mod=r({type:e});static \u0275inj=o({providers:[t],imports:[i]})}return e})();export{f as a};
1
+ import{c as t}from"./chunk-7AQ3U466.js";import{b as i}from"./chunk-J6Q2DPRL.js";import{eb as r,ja as o}from"./chunk-YYORCSG2.js";var f=(()=>{class e{static \u0275fac=function(s){return new(s||e)};static \u0275mod=r({type:e});static \u0275inj=o({providers:[t],imports:[i]})}return e})();export{f as a};
@@ -1 +1 @@
1
- import{a as l}from"./chunk-GJ4NQ6RR.js";import{a as m}from"./chunk-XYQ2P6TQ.js";import{n as s}from"./chunk-PELXH4TO.js";import{b as o}from"./chunk-KBANEWIP.js";import{k as i}from"./chunk-YJAZ7E5U.js";import{ia as r,na as n}from"./chunk-YYORCSG2.js";var I=(()=>{class e{$terminal=n(l);$settings=n(o);$modal=n(s);$translate=n(i);handleBeforeUnload(t){if(!this.$settings.env.terminal?.persistence&&!this.$settings.env.terminal?.hideWarning&&this.$terminal.hasActiveSession()&&this.$terminal.hasUserTypedInSession()){let a=this.$translate.instant("platform.terminal.terminate_unload");return t.preventDefault(),t.returnValue=a,a}}canDeactivate(){if(this.$settings.env.terminal?.persistence||this.$settings.env.terminal?.hideWarning||!this.$terminal.hasActiveSession()||!this.$terminal.hasUserTypedInSession())return!0;let t=this.$modal.open(m,{size:"lg",backdrop:"static"});return t.componentInstance.title=this.$translate.instant("platform.terminal.terminate_title"),t.componentInstance.message=this.$translate.instant("platform.terminal.terminate_message_1"),t.componentInstance.message2=this.$translate.instant("platform.terminal.terminate_message_2"),t.componentInstance.message3=this.$translate.instant("common.phrases.are_you_sure"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.confirmButtonClass="btn-primary",t.componentInstance.faIconClass="fas fa-exclamation-triangle text-warning",t.result.then(()=>!0).catch(()=>!1)}static \u0275fac=function(a){return new(a||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{I as a};
1
+ import{a as l}from"./chunk-45JBQ27F.js";import{a as m}from"./chunk-JK5YO5KW.js";import{n as s}from"./chunk-PELXH4TO.js";import{b as o}from"./chunk-BG4ME3P7.js";import{k as i}from"./chunk-GPQF5BVT.js";import{ia as r,na as n}from"./chunk-YYORCSG2.js";var I=(()=>{class e{$terminal=n(l);$settings=n(o);$modal=n(s);$translate=n(i);handleBeforeUnload(t){if(!this.$settings.env.terminal?.persistence&&!this.$settings.env.terminal?.hideWarning&&this.$terminal.hasActiveSession()&&this.$terminal.hasUserTypedInSession()){let a=this.$translate.instant("platform.terminal.terminate_unload");return t.preventDefault(),t.returnValue=a,a}}canDeactivate(){if(this.$settings.env.terminal?.persistence||this.$settings.env.terminal?.hideWarning||!this.$terminal.hasActiveSession()||!this.$terminal.hasUserTypedInSession())return!0;let t=this.$modal.open(m,{size:"lg",backdrop:"static"});return t.componentInstance.title=this.$translate.instant("platform.terminal.terminate_title"),t.componentInstance.message=this.$translate.instant("platform.terminal.terminate_message_1"),t.componentInstance.message2=this.$translate.instant("platform.terminal.terminate_message_2"),t.componentInstance.message3=this.$translate.instant("common.phrases.are_you_sure"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.confirmButtonClass="btn-primary",t.componentInstance.faIconClass="fas fa-exclamation-triangle text-warning",t.result.then(()=>!0).catch(()=>!1)}static \u0275fac=function(a){return new(a||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{I as a};
@@ -1 +1 @@
1
- import{a as _}from"./chunk-GU2LDNRA.js";import{a as E}from"./chunk-GJ4NQ6RR.js";import"./chunk-O6NBNFQY.js";import"./chunk-XYQ2P6TQ.js";import"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import"./chunk-OTLQZLR6.js";import"./chunk-UDI7EA7K.js";import{b as S}from"./chunk-KBANEWIP.js";import{k as w,l as C}from"./chunk-YJAZ7E5U.js";import{$b as T,Ab as l,Bb as m,Cb as h,Cc as b,Lb as v,Pa as o,Qa as c,Ub as f,Vb as g,_b as p,db as u,n as d,na as r,rc as y,sc as $}from"./chunk-YYORCSG2.js";var B=["terminaloutput"],G=(()=>{class a{$terminal=r(E);$settings=r(S);$navigationGuard=r(_);$translate=r(w);resizeEvent=new d;termTarget=b("terminaloutput");onWindowResize(){this.resizeEvent.next(void 0)}onBeforeUnload(i){return this.$navigationGuard.handleBeforeUnload(i)}onWindowFocus(){this.activateTerminal()}onClick(){this.activateTerminal()}activateTerminal(){this.$terminal.isTerminalReady()&&this.$terminal.term&&this.$terminal.term.focus()}ngOnInit(){let i=this.$translate.instant("menu.linux.label_terminal");this.$settings.setPageTitle(i),window.document.querySelector("body").classList.add("bg-black"),this.$terminal.isTerminalReady()&&this.$terminal.destroyTerminal(),this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()?this.$terminal.reconnectTerminal(this.termTarget(),{},this.resizeEvent):(!this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()&&this.$terminal.destroyPersistentSession(),this.$terminal.startTerminal(this.termTarget(),{},this.resizeEvent)),setTimeout(()=>{this.activateTerminal()},100)}ngAfterViewInit(){document.addEventListener("visibilitychange",this.onVisibilityChange.bind(this))}onVisibilityChange(){!document.hidden&&this.$terminal.isTerminalReady()&&setTimeout(()=>{this.activateTerminal()},100)}canDeactivate(){return this.$navigationGuard.canDeactivate()}ngOnDestroy(){document.removeEventListener("visibilitychange",this.onVisibilityChange.bind(this)),window.document.querySelector("body").classList.remove("bg-black"),this.$settings.env.terminal?.persistence?this.$terminal.detachTerminal():this.$terminal.destroyPersistentSession()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=u({type:a,selectors:[["ng-component"]],viewQuery:function(e,t){e&1&&f(t.termTarget,B,5),e&2&&g()},hostBindings:function(e,t){e&1&&v("resize",function(n){return t.onWindowResize(n)},o)("beforeunload",function(n){return t.onBeforeUnload(n)},o)("focus",function(n){return t.onWindowFocus(n)},o)("click",function(n){return t.onClick(n)})},decls:8,vars:3,consts:[["terminaloutput",""],[1,"row","mb-3"],[1,"col-12"],[1,"primary-text","m-0"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","docker-terminal",1,"align-self-end","w-100","h-100","mb-1"]],template:function(e,t){e&1&&(l(0,"div",1)(1,"div",2)(2,"h3",3),p(3),y(4,"translate"),m()()(),l(5,"div",4),h(6,"div",5,0),m()),e&2&&(c(3),T($(4,1,"menu.linux.label_terminal")))},dependencies:[C],encapsulation:2})}return a})();export{G as TerminalComponent};
1
+ import{a as _}from"./chunk-VFTAEW2J.js";import{a as E}from"./chunk-45JBQ27F.js";import"./chunk-O6NBNFQY.js";import"./chunk-JK5YO5KW.js";import"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import"./chunk-JFWMDYB2.js";import"./chunk-FMVILKMI.js";import{b as S}from"./chunk-BG4ME3P7.js";import{k as w,l as C}from"./chunk-GPQF5BVT.js";import{$b as T,Ab as l,Bb as m,Cb as h,Cc as b,Lb as v,Pa as o,Qa as c,Ub as f,Vb as g,_b as p,db as u,n as d,na as r,rc as y,sc as $}from"./chunk-YYORCSG2.js";var B=["terminaloutput"],G=(()=>{class a{$terminal=r(E);$settings=r(S);$navigationGuard=r(_);$translate=r(w);resizeEvent=new d;termTarget=b("terminaloutput");onWindowResize(){this.resizeEvent.next(void 0)}onBeforeUnload(i){return this.$navigationGuard.handleBeforeUnload(i)}onWindowFocus(){this.activateTerminal()}onClick(){this.activateTerminal()}activateTerminal(){this.$terminal.isTerminalReady()&&this.$terminal.term&&this.$terminal.term.focus()}ngOnInit(){let i=this.$translate.instant("menu.linux.label_terminal");this.$settings.setPageTitle(i),window.document.querySelector("body").classList.add("bg-black"),this.$terminal.isTerminalReady()&&this.$terminal.destroyTerminal(),this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()?this.$terminal.reconnectTerminal(this.termTarget(),{},this.resizeEvent):(!this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()&&this.$terminal.destroyPersistentSession(),this.$terminal.startTerminal(this.termTarget(),{},this.resizeEvent)),setTimeout(()=>{this.activateTerminal()},100)}ngAfterViewInit(){document.addEventListener("visibilitychange",this.onVisibilityChange.bind(this))}onVisibilityChange(){!document.hidden&&this.$terminal.isTerminalReady()&&setTimeout(()=>{this.activateTerminal()},100)}canDeactivate(){return this.$navigationGuard.canDeactivate()}ngOnDestroy(){document.removeEventListener("visibilitychange",this.onVisibilityChange.bind(this)),window.document.querySelector("body").classList.remove("bg-black"),this.$settings.env.terminal?.persistence?this.$terminal.detachTerminal():this.$terminal.destroyPersistentSession()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=u({type:a,selectors:[["ng-component"]],viewQuery:function(e,t){e&1&&f(t.termTarget,B,5),e&2&&g()},hostBindings:function(e,t){e&1&&v("resize",function(n){return t.onWindowResize(n)},o)("beforeunload",function(n){return t.onBeforeUnload(n)},o)("focus",function(n){return t.onWindowFocus(n)},o)("click",function(n){return t.onClick(n)})},decls:8,vars:3,consts:[["terminaloutput",""],[1,"row","mb-3"],[1,"col-12"],[1,"primary-text","m-0"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","docker-terminal",1,"align-self-end","w-100","h-100","mb-1"]],template:function(e,t){e&1&&(l(0,"div",1)(1,"div",2)(2,"h3",3),p(3),y(4,"translate"),m()()(),l(5,"div",4),h(6,"div",5,0),m()),e&2&&(c(3),T($(4,1,"menu.linux.label_terminal")))},dependencies:[C],encapsulation:2})}return a})();export{G as TerminalComponent};
@@ -1 +1 @@
1
- import{a as N}from"./chunk-NJB7W7XG.js";import"./chunk-O6NBNFQY.js";import{a as P}from"./chunk-BIXWXEEW.js";import{a as h}from"./chunk-XYQ2P6TQ.js";import{n as z,t as D}from"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import"./chunk-OTLQZLR6.js";import{b as M}from"./chunk-UDI7EA7K.js";import{b as H}from"./chunk-KBANEWIP.js";import{k as E,l as A,n as F,q as V}from"./chunk-YJAZ7E5U.js";import{$b as B,Cc as k,Ib as T,Lb as p,Nb as b,Pa as $,Qa as l,Ub as L,Vb as S,_b as I,db as y,g as O,h as v,n as w,na as o,pb as u,qb as x,rb as C,rc as s,sa as d,sc as a,ta as g,wb as f,xb as c,yb as r,zb as m}from"./chunk-YYORCSG2.js";var j=O(P(),1);var Q=["logoutput"];function W(i,R){if(i&1){let t=T();c(0,"div",4)(1,"button",7),s(2,"translate"),s(3,"translate"),p("click",function(){d(t);let n=b();return g(n.downloadLogFile())}),m(4,"i",8),r(),c(5,"button",9),s(6,"translate"),s(7,"translate"),p("click",function(){d(t);let n=b();return g(n.truncateLogFile())}),m(8,"i",10),r()()}i&2&&(l(),f("openDelay",150)("ngbTooltip",a(2,6,"form.button_download")),u("aria-label",a(3,8,"form.button_download")),l(4),f("openDelay",150)("ngbTooltip",a(6,10,"form.button_delete")),u("aria-label",a(7,12,"form.button_delete")))}var st=(()=>{class i{$api=o(V);$auth=o(M);$log=o(N);$modal=o(z);$settings=o(H);$toastr=o(F);$translate=o(E);termTarget=k("logoutput");resizeEvent=new w;isAdmin=this.$auth.user.admin;onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){let t=this.$translate.instant("menu.linux.label_logs");this.$settings.setPageTitle(t),window.document.querySelector("body").classList.add("bg-black"),this.$log.startTerminal(this.termTarget(),{allowProposedApi:!0},this.resizeEvent)}ngOnDestroy(){window.document.querySelector("body").classList.remove("bg-black"),this.$log.destroyTerminal()}downloadLogFile(){let t=this.$modal.open(h,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download",{observe:"response",responseType:"blob"}).subscribe({next:e=>{(0,j.saveAs)(e.body,"homebridge.log.txt")},error:e=>v(this,null,function*(){let n;try{n=JSON.parse(yield e.error.text()).message}catch(_){console.error(_)}this.$toastr.error(n||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}truncateLogFile(){let t=this.$modal.open(h,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_truncate_log_file"),t.componentInstance.message=this.$translate.instant("logs.truncate_log_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_delete"),t.componentInstance.confirmButtonClass="btn-danger",t.componentInstance.faIconClass="fas fa-circle-exclamation primary-text",t.result.then(()=>{this.$api.put("/platform-tools/hb-service/log/truncate",{}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("logs.log_file_truncated"),this.$translate.instant("toast.title_success")),this.$log.term.clear()},error:e=>{console.error(e),this.$toastr.error(e.error?.message||this.$translate.instant("logs.truncate.error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=y({type:i,selectors:[["ng-component"]],viewQuery:function(e,n){e&1&&L(n.termTarget,Q,5),e&2&&S()},hostBindings:function(e,n){e&1&&p("resize",function(q){return n.onWindowResize(q)},$)},decls:9,vars:4,consts:[["logoutput",""],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","log-output",1,"align-self-end","w-100","h-100","mb-1"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-download"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-0",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-trash-alt"]],template:function(e,n){e&1&&(c(0,"div",1)(1,"div",2)(2,"h3",3),I(3),s(4,"translate"),r()(),x(5,W,9,14,"div",4),r(),c(6,"div",5),m(7,"div",6,0),r()),e&2&&(l(3),B(a(4,2,"menu.linux.label_logs")),l(2),C(n.isAdmin?5:-1))},dependencies:[D,A],encapsulation:2})}return i})();export{st as LogsComponent};
1
+ import{a as N}from"./chunk-MTRIU6D6.js";import"./chunk-O6NBNFQY.js";import{a as P}from"./chunk-BIXWXEEW.js";import{a as h}from"./chunk-JK5YO5KW.js";import{n as z,t as D}from"./chunk-PELXH4TO.js";import"./chunk-YLFJH4ZN.js";import"./chunk-JFWMDYB2.js";import{b as M}from"./chunk-FMVILKMI.js";import{b as H}from"./chunk-BG4ME3P7.js";import{k as E,l as A,n as F,q as V}from"./chunk-GPQF5BVT.js";import{$b as B,Cc as k,Ib as T,Lb as p,Nb as b,Pa as $,Qa as l,Ub as L,Vb as S,_b as I,db as y,g as O,h as v,n as w,na as o,pb as u,qb as x,rb as C,rc as s,sa as d,sc as a,ta as g,wb as f,xb as c,yb as r,zb as m}from"./chunk-YYORCSG2.js";var j=O(P(),1);var Q=["logoutput"];function W(i,R){if(i&1){let t=T();c(0,"div",4)(1,"button",7),s(2,"translate"),s(3,"translate"),p("click",function(){d(t);let n=b();return g(n.downloadLogFile())}),m(4,"i",8),r(),c(5,"button",9),s(6,"translate"),s(7,"translate"),p("click",function(){d(t);let n=b();return g(n.truncateLogFile())}),m(8,"i",10),r()()}i&2&&(l(),f("openDelay",150)("ngbTooltip",a(2,6,"form.button_download")),u("aria-label",a(3,8,"form.button_download")),l(4),f("openDelay",150)("ngbTooltip",a(6,10,"form.button_delete")),u("aria-label",a(7,12,"form.button_delete")))}var st=(()=>{class i{$api=o(V);$auth=o(M);$log=o(N);$modal=o(z);$settings=o(H);$toastr=o(F);$translate=o(E);termTarget=k("logoutput");resizeEvent=new w;isAdmin=this.$auth.user.admin;onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){let t=this.$translate.instant("menu.linux.label_logs");this.$settings.setPageTitle(t),window.document.querySelector("body").classList.add("bg-black"),this.$log.startTerminal(this.termTarget(),{allowProposedApi:!0},this.resizeEvent)}ngOnDestroy(){window.document.querySelector("body").classList.remove("bg-black"),this.$log.destroyTerminal()}downloadLogFile(){let t=this.$modal.open(h,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download",{observe:"response",responseType:"blob"}).subscribe({next:e=>{(0,j.saveAs)(e.body,"homebridge.log.txt")},error:e=>v(this,null,function*(){let n;try{n=JSON.parse(yield e.error.text()).message}catch(_){console.error(_)}this.$toastr.error(n||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}truncateLogFile(){let t=this.$modal.open(h,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_truncate_log_file"),t.componentInstance.message=this.$translate.instant("logs.truncate_log_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_delete"),t.componentInstance.confirmButtonClass="btn-danger",t.componentInstance.faIconClass="fas fa-circle-exclamation primary-text",t.result.then(()=>{this.$api.put("/platform-tools/hb-service/log/truncate",{}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("logs.log_file_truncated"),this.$translate.instant("toast.title_success")),this.$log.term.clear()},error:e=>{console.error(e),this.$toastr.error(e.error?.message||this.$translate.instant("logs.truncate.error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=y({type:i,selectors:[["ng-component"]],viewQuery:function(e,n){e&1&&L(n.termTarget,Q,5),e&2&&S()},hostBindings:function(e,n){e&1&&p("resize",function(q){return n.onWindowResize(q)},$)},decls:9,vars:4,consts:[["logoutput",""],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","log-output",1,"align-self-end","w-100","h-100","mb-1"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-download"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-0",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-trash-alt"]],template:function(e,n){e&1&&(c(0,"div",1)(1,"div",2)(2,"h3",3),I(3),s(4,"translate"),r()(),x(5,W,9,14,"div",4),r(),c(6,"div",5),m(7,"div",6,0),r()),e&2&&(l(3),B(a(4,2,"menu.linux.label_logs")),l(2),C(n.isAdmin?5:-1))},dependencies:[D,A],encapsulation:2})}return i})();export{st as LogsComponent};
@@ -1 +1 @@
1
- import{a as P}from"./chunk-OTLQZLR6.js";import"./chunk-UDI7EA7K.js";import{e as D}from"./chunk-NKVA4YGF.js";import{b as F}from"./chunk-KBANEWIP.js";import{k as E,l as R,n as B,q as U}from"./chunk-YJAZ7E5U.js";import{$b as p,Ec as I,Ib as S,Lb as k,Nb as u,Qa as r,Qc as O,_b as a,ac as x,db as y,h as b,lc as T,mc as g,na as d,qb as h,rb as _,rc as l,sa as $,sc as c,ta as w,wb as f,x as C,xb as s,yb as n,zb as v}from"./chunk-YYORCSG2.js";var W=(e,m)=>({"fas fa-spinner fa-spin":e,"far fa-check-circle":m}),M=e=>({"grey-text":e}),V=(e,m)=>({"far fa-circle":e,"fas fa-spinner fa-spin":m});function j(e,m){if(e&1&&(s(0,"div",7),a(1),n()),e&2){let t=u();r(),p(t.error)}}function q(e,m){if(e&1&&(s(0,"p",9),a(1),l(2,"translate"),n(),s(3,"div",10)(4,"div",11)(5,"span"),v(6,"i",12),a(7),l(8,"translate"),n()(),s(9,"div",11)(10,"span",12),v(11,"i",12),a(12),l(13,"translate"),n()()()),e&2){let t=u();r(),p(c(2,6,"restart.please_wait_while_server_restarts")),r(5),f("ngClass",g(12,W,!t.uiOnline,t.uiOnline)),r(),x(" ",c(8,8,"restart.ui_online")," "),r(3),f("ngClass",T(15,M,!t.uiOnline)),r(),f("ngClass",g(17,V,!t.uiOnline,t.uiOnline)),r(),x(" ",c(13,10,"restart.service_ready")," ")}}function z(e,m){if(e&1){let t=S();s(0,"p",15)(1,"button",16),k("click",function(){$(t);let o=u(2);return w(o.viewLogs())}),a(2),l(3,"translate"),n()()}e&2&&(r(2),p(c(3,1,"menu.tooltip_view_logs")))}function A(e,m){if(e&1&&(s(0,"div",8)(1,"p"),a(2),l(3,"translate"),n(),s(4,"p",13),a(5),l(6,"translate"),s(7,"span",14),a(8),n()(),h(9,z,4,3,"p",15),n()),e&2){let t=u();r(2),p(c(3,4,"restart.server_is_taking_long_time_to_restart")),r(3),x(" ",c(6,6,"restart.label_restart_command_executed"),": "),r(3),p(t.resp.command||"End Process"),r(),_(t.uiOnline?9:-1)}}var et=(()=>{class e{$api=d(U);$router=d(D);$settings=d(F);$toastr=d(B);$translate=d(E);$ws=d(P);checkTimeout;checkDelay;io;webrootChanged=!1;uiOnline=!1;error=!1;resp={};timeout=!1;ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline=!0,this.checkIfServerUp()):this.performRestart()}viewLogs(){this.$router.navigate(["/logs"])}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}performRestart(){return b(this,null,function*(){try{let t=this.$settings.originalWebroot||"",i=this.$settings.webroot||"";this.webrootChanged=t!==i&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield C(this.$api.put("/server/webroot",{webroot:i}))),this.$api.put("/server/restart",{}).subscribe({next:o=>{this.resp=o,this.checkIfServerUp(),o.restartingUI||(this.uiOnline=!0)},error:o=>{console.error(o),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}catch(t){console.error("Failed to update webroot:",t),this.$api.put("/server/restart",{}).subscribe({next:i=>{this.resp=i,this.checkIfServerUp(),i.restartingUI||(this.uiOnline=!0)},error:i=>{console.error(i),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",t=>{if(this.uiOnline=!0,t.status==="ok"||t.status==="pending")if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!I()){let i=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=i?`/${i}/`:"/"}else this.$router.navigate(["/"])})},7e3),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},4e4)}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=y({type:e,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[3,"ngClass"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(i,o){i&1&&(s(0,"div",0)(1,"h3",1),a(2),l(3,"translate"),n()(),s(4,"div",2)(5,"div",3),v(6,"i",4),n(),s(7,"div",5)(8,"h4",6),a(9),l(10,"translate"),n(),h(11,j,2,1,"div",7)(12,q,14,20),h(13,A,10,8,"div",8),n()()),i&2&&(r(2),p(c(3,4,"menu.restart.title")),r(7),p(c(10,6,"restart.title_restart")),r(2),_(o.error?11:12),r(2),_(o.timeout?13:-1))},dependencies:[O,R],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return e})();export{et as RestartComponent};
1
+ import{a as P}from"./chunk-JFWMDYB2.js";import"./chunk-FMVILKMI.js";import{e as D}from"./chunk-NKVA4YGF.js";import{b as F}from"./chunk-BG4ME3P7.js";import{k as E,l as R,n as B,q as U}from"./chunk-GPQF5BVT.js";import{$b as p,Ec as I,Ib as S,Lb as k,Nb as u,Qa as r,Qc as O,_b as a,ac as x,db as y,h as b,lc as T,mc as g,na as d,qb as h,rb as _,rc as l,sa as $,sc as c,ta as w,wb as f,x as C,xb as s,yb as n,zb as v}from"./chunk-YYORCSG2.js";var W=(e,m)=>({"fas fa-spinner fa-spin":e,"far fa-check-circle":m}),M=e=>({"grey-text":e}),V=(e,m)=>({"far fa-circle":e,"fas fa-spinner fa-spin":m});function j(e,m){if(e&1&&(s(0,"div",7),a(1),n()),e&2){let t=u();r(),p(t.error)}}function q(e,m){if(e&1&&(s(0,"p",9),a(1),l(2,"translate"),n(),s(3,"div",10)(4,"div",11)(5,"span"),v(6,"i",12),a(7),l(8,"translate"),n()(),s(9,"div",11)(10,"span",12),v(11,"i",12),a(12),l(13,"translate"),n()()()),e&2){let t=u();r(),p(c(2,6,"restart.please_wait_while_server_restarts")),r(5),f("ngClass",g(12,W,!t.uiOnline,t.uiOnline)),r(),x(" ",c(8,8,"restart.ui_online")," "),r(3),f("ngClass",T(15,M,!t.uiOnline)),r(),f("ngClass",g(17,V,!t.uiOnline,t.uiOnline)),r(),x(" ",c(13,10,"restart.service_ready")," ")}}function z(e,m){if(e&1){let t=S();s(0,"p",15)(1,"button",16),k("click",function(){$(t);let o=u(2);return w(o.viewLogs())}),a(2),l(3,"translate"),n()()}e&2&&(r(2),p(c(3,1,"menu.tooltip_view_logs")))}function A(e,m){if(e&1&&(s(0,"div",8)(1,"p"),a(2),l(3,"translate"),n(),s(4,"p",13),a(5),l(6,"translate"),s(7,"span",14),a(8),n()(),h(9,z,4,3,"p",15),n()),e&2){let t=u();r(2),p(c(3,4,"restart.server_is_taking_long_time_to_restart")),r(3),x(" ",c(6,6,"restart.label_restart_command_executed"),": "),r(3),p(t.resp.command||"End Process"),r(),_(t.uiOnline?9:-1)}}var et=(()=>{class e{$api=d(U);$router=d(D);$settings=d(F);$toastr=d(B);$translate=d(E);$ws=d(P);checkTimeout;checkDelay;io;webrootChanged=!1;uiOnline=!1;error=!1;resp={};timeout=!1;ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline=!0,this.checkIfServerUp()):this.performRestart()}viewLogs(){this.$router.navigate(["/logs"])}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}performRestart(){return b(this,null,function*(){try{let t=this.$settings.originalWebroot||"",i=this.$settings.webroot||"";this.webrootChanged=t!==i&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield C(this.$api.put("/server/webroot",{webroot:i}))),this.$api.put("/server/restart",{}).subscribe({next:o=>{this.resp=o,this.checkIfServerUp(),o.restartingUI||(this.uiOnline=!0)},error:o=>{console.error(o),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}catch(t){console.error("Failed to update webroot:",t),this.$api.put("/server/restart",{}).subscribe({next:i=>{this.resp=i,this.checkIfServerUp(),i.restartingUI||(this.uiOnline=!0)},error:i=>{console.error(i),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",t=>{if(this.uiOnline=!0,t.status==="ok"||t.status==="pending")if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!I()){let i=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=i?`/${i}/`:"/"}else this.$router.navigate(["/"])})},7e3),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},4e4)}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=y({type:e,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[3,"ngClass"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(i,o){i&1&&(s(0,"div",0)(1,"h3",1),a(2),l(3,"translate"),n()(),s(4,"div",2)(5,"div",3),v(6,"i",4),n(),s(7,"div",5)(8,"h4",6),a(9),l(10,"translate"),n(),h(11,j,2,1,"div",7)(12,q,14,20),h(13,A,10,8,"div",8),n()()),i&2&&(r(2),p(c(3,4,"menu.restart.title")),r(7),p(c(10,6,"restart.title_restart")),r(2),_(o.error?11:12),r(2),_(o.timeout?13:-1))},dependencies:[O,R],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return e})();export{et as RestartComponent};
package/public/index.html CHANGED
@@ -20,5 +20,5 @@
20
20
 
21
21
  <body>
22
22
  <app-root></app-root>
23
- <link rel="modulepreload" href="chunk-BF2MU3RQ.js"><link rel="modulepreload" href="chunk-C23A5G7X.js"><link rel="modulepreload" href="chunk-RM3JSPOW.js"><link rel="modulepreload" href="chunk-YX6RZUQD.js"><link rel="modulepreload" href="chunk-WQPHE2UF.js"><link rel="modulepreload" href="chunk-5IK7S5UY.js"><link rel="modulepreload" href="chunk-4GXPXAHY.js"><link rel="modulepreload" href="chunk-HW3MSWTY.js"><link rel="modulepreload" href="chunk-ZL7WGJJW.js"><link rel="modulepreload" href="chunk-U5XWZU46.js"><script src="polyfills-5KWHJ7II.js" type="module" crossorigin="use-credentials"></script><script src="main-MGR4YROM.js" type="module" crossorigin="use-credentials"></script></body>
23
+ <link rel="modulepreload" href="chunk-PX4RUPGA.js"><link rel="modulepreload" href="chunk-MGEETPA4.js"><link rel="modulepreload" href="chunk-RM3JSPOW.js"><link rel="modulepreload" href="chunk-UTPDI7IW.js"><link rel="modulepreload" href="chunk-LGE6IIB6.js"><link rel="modulepreload" href="chunk-FMZG46GC.js"><link rel="modulepreload" href="chunk-OATJRYLX.js"><link rel="modulepreload" href="chunk-HW3MSWTY.js"><link rel="modulepreload" href="chunk-7AQ3U466.js"><link rel="modulepreload" href="chunk-B7RSGI3Z.js"><script src="polyfills-5KWHJ7II.js" type="module" crossorigin="use-credentials"></script><script src="main-HY23LZ3Q.js" type="module" crossorigin="use-credentials"></script></body>
24
24
  </html>