homebridge-config-ui-x 5.3.1-beta.8 → 5.4.0

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 (153) hide show
  1. package/CHANGELOG.md +14 -4
  2. package/dist/bin/standalone.d.ts +2 -0
  3. package/dist/bin/standalone.js +58 -0
  4. package/dist/bin/standalone.js.map +1 -0
  5. package/dist/modules/platform-tools/terminal/terminal.service.js +26 -26
  6. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  7. package/dist/modules/server/server.service.js +1 -1
  8. package/package.json +4 -4
  9. package/public/assets/monaco-0.21.3/LICENSE +21 -0
  10. package/public/assets/monaco-0.21.3/README.md +96 -0
  11. package/public/assets/monaco-0.21.3/ThirdPartyNotices.txt +283 -0
  12. package/public/assets/monaco-0.21.3/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  13. package/public/assets/monaco-0.21.3/package.json +38 -0
  14. package/public/assets/service-icons/air-purifier.svg +50 -0
  15. package/public/assets/{hap-icons → service-icons}/air-quality-sensor.svg +2 -2
  16. package/public/assets/service-icons/carbon-dioxide-sensor.svg +53 -0
  17. package/public/assets/service-icons/carbon-monoxide-sensor.svg +53 -0
  18. package/public/assets/service-icons/contact-sensor.svg +45 -0
  19. package/public/assets/service-icons/door.svg +28 -0
  20. package/public/assets/service-icons/doorbell.svg +7 -0
  21. package/public/assets/service-icons/fan.svg +15 -0
  22. package/public/assets/service-icons/filter-maintenance.svg +54 -0
  23. package/public/assets/service-icons/garage-door.svg +120 -0
  24. package/public/assets/service-icons/microphone.svg +12 -0
  25. package/public/assets/service-icons/smoke-sensor.svg +38 -0
  26. package/public/assets/service-icons/speaker.svg +28 -0
  27. package/public/assets/service-icons/television.svg +17 -0
  28. package/public/assets/service-icons/washing-machine.svg +34 -0
  29. package/public/assets/service-icons/window-covering.svg +44 -0
  30. package/public/assets/service-icons/window.svg +67 -0
  31. package/public/{chunk-2JIV277Z.js → chunk-2HZOWWRB.js} +1 -1
  32. package/public/{chunk-XWQ3MP3R.js → chunk-2TDOLECC.js} +1 -1
  33. package/public/chunk-2ZM2CO7S.js +1 -0
  34. package/public/{chunk-KKMV35EJ.js → chunk-3JNJJOX6.js} +1 -1
  35. package/public/{chunk-ALZRCF67.js → chunk-3L7PIOD5.js} +1 -1
  36. package/public/{chunk-AKD24HZC.js → chunk-3QBYXJ7T.js} +1 -1
  37. package/public/{chunk-YWMVRJI5.js → chunk-3WCZQYFM.js} +1 -1
  38. package/public/{chunk-N2AJOFIZ.js → chunk-4A6F5427.js} +1 -1
  39. package/public/{chunk-J23T3NRY.js → chunk-4I4YTNGD.js} +1 -1
  40. package/public/{chunk-PWD63BNX.js → chunk-5FOJUOIT.js} +1 -1
  41. package/public/chunk-645YHJEQ.js +4 -0
  42. package/public/{chunk-VQIHIGLC.js → chunk-6BITWEO6.js} +1 -1
  43. package/public/{chunk-25NXLXGL.js → chunk-6HJHVJPI.js} +1 -1
  44. package/public/chunk-6NW4EKE6.js +4 -0
  45. package/public/{chunk-Q5XUVLJA.js → chunk-73PB5ERF.js} +1 -1
  46. package/public/{chunk-IXXVSSF7.js → chunk-7M4GTFPB.js} +1 -1
  47. package/public/{chunk-B2VW3ZQI.js → chunk-7NWB7MN6.js} +1 -1
  48. package/public/chunk-BHQK7H4B.js +1 -0
  49. package/public/{chunk-V5ZUMJ2X.js → chunk-BLNEXUND.js} +1 -1
  50. package/public/{chunk-GR3ILWWZ.js → chunk-BQ7Q4FRF.js} +1 -1
  51. package/public/chunk-CLGDJPWG.js +12 -0
  52. package/public/{chunk-AAPPFSR7.js → chunk-DCEE4BJT.js} +1 -1
  53. package/public/{chunk-RPRM66DV.js → chunk-DYB33NRF.js} +1 -1
  54. package/public/{chunk-WBB65MTJ.js → chunk-EKINPADV.js} +1 -1
  55. package/public/{chunk-UPWD7C23.js → chunk-EQHN6CPG.js} +1 -1
  56. package/public/{chunk-3T4CLJZB.js → chunk-EZQF5CUM.js} +1 -1
  57. package/public/{chunk-GHVVXIDF.js → chunk-F6NZALU5.js} +1 -1
  58. package/public/{chunk-LBAYQDOV.js → chunk-FG5QICVJ.js} +1 -1
  59. package/public/{chunk-3QFXC5X6.js → chunk-FIQUQJTU.js} +1 -1
  60. package/public/{chunk-6YLJWQUB.js → chunk-FKZEDXUZ.js} +1 -1
  61. package/public/chunk-FYDO54CR.js +1 -0
  62. package/public/{chunk-MJK6N6PA.js → chunk-FYI7RHOJ.js} +1 -1
  63. package/public/{chunk-S7AIVWKK.js → chunk-G6KV6PYE.js} +1 -1
  64. package/public/chunk-GNULJZ2P.js +1 -0
  65. package/public/{chunk-H337OZRD.js → chunk-HHGB2T2Q.js} +1 -1
  66. package/public/{chunk-2FTHA637.js → chunk-HO4UVRDI.js} +1 -1
  67. package/public/{chunk-FBTBVR2O.js → chunk-HSAZV5QQ.js} +1 -1
  68. package/public/{chunk-R33OISYU.js → chunk-IAVKQO7M.js} +1 -1
  69. package/public/{chunk-RHCMG64A.js → chunk-JCYDPJQ5.js} +1 -1
  70. package/public/chunk-KLQ6BEKS.js +2 -0
  71. package/public/chunk-KPOP67KE.js +1 -0
  72. package/public/{chunk-VPU5FNT3.js → chunk-KYB236MX.js} +1 -1
  73. package/public/{chunk-23FYLGHC.js → chunk-LJDW32KF.js} +16 -14
  74. package/public/{chunk-F3MG6UU6.js → chunk-M4QDQWSG.js} +1 -1
  75. package/public/chunk-O7RJ6JXM.js +1 -0
  76. package/public/{chunk-CNMZOW2D.js → chunk-OMGXHYZA.js} +1 -1
  77. package/public/{chunk-DSUQJPY2.js → chunk-OSQ37ZQY.js} +1 -1
  78. package/public/{chunk-HWMBWLXB.js → chunk-OW6LBBVH.js} +1 -1
  79. package/public/{chunk-NO7RIAKI.js → chunk-PPSFRNJC.js} +1 -1
  80. package/public/{chunk-GWJ7ISZW.js → chunk-QL5UNVZO.js} +1 -1
  81. package/public/{chunk-EMOJK6NQ.js → chunk-QM6QRTMV.js} +1 -1
  82. package/public/{chunk-76XPFTSX.js → chunk-QZWC7RP4.js} +1 -1
  83. package/public/{chunk-JXNVM6CK.js → chunk-R6KN5Y43.js} +1 -1
  84. package/public/{chunk-UKEZ5GGN.js → chunk-RCYYU6LQ.js} +1 -1
  85. package/public/{chunk-V2JQMGNW.js → chunk-RGXCQLZU.js} +1 -1
  86. package/public/{chunk-S7D4ALZN.js → chunk-RZ4UMDVF.js} +1 -1
  87. package/public/{chunk-7RYLBOQ5.js → chunk-TOI5IERI.js} +1 -1
  88. package/public/{chunk-JAZMMXSA.js → chunk-U4UZ4WQX.js} +1 -1
  89. package/public/{chunk-TJCBCOGJ.js → chunk-U52WKM74.js} +1 -1
  90. package/public/{chunk-JNVGCARV.js → chunk-UFFQKHXE.js} +1 -1
  91. package/public/{chunk-O4DNLPYF.js → chunk-ULWO2VVV.js} +1 -1
  92. package/public/{chunk-IMT3YYMD.js → chunk-V35TPDVW.js} +1 -1
  93. package/public/{chunk-VRIOVBXE.js → chunk-V7OQR5Y4.js} +1 -1
  94. package/public/{chunk-BNM7RGNK.js → chunk-VJOMQ46T.js} +1 -1
  95. package/public/{chunk-OIOLFXMO.js → chunk-VRXR6ACJ.js} +1 -1
  96. package/public/{chunk-V2QWJKFB.js → chunk-WG533VX7.js} +1 -1
  97. package/public/{chunk-RMRJFNIT.js → chunk-YPZJFK3W.js} +1 -1
  98. package/public/chunk-Z6DMMN6D.js +1 -0
  99. package/public/{chunk-BSXHN5WA.js → chunk-ZO74PVYQ.js} +1 -1
  100. package/public/index.html +2 -2
  101. package/public/main-HN6ISZGH.js +1 -0
  102. package/public/media/fa-brands-400-Q3XCMWHQ.woff2 +0 -0
  103. package/public/media/fa-brands-400-R2XQZCET.ttf +0 -0
  104. package/public/media/fa-regular-400-QSNYFYRT.woff2 +0 -0
  105. package/public/media/fa-regular-400-XUOPSR7E.ttf +0 -0
  106. package/public/media/fa-solid-900-5ZUYHGA7.woff2 +0 -0
  107. package/public/media/fa-solid-900-PJNKLK6W.ttf +0 -0
  108. package/public/styles-XESJTHVW.css +1 -0
  109. package/public/assets/hap-icons/air-purifier.svg +0 -62
  110. package/public/assets/hap-icons/carbon-dioxide-sensor.svg +0 -72
  111. package/public/assets/hap-icons/carbon-monoxide-sensor.svg +0 -72
  112. package/public/assets/hap-icons/contact-sensor-closed.svg +0 -36
  113. package/public/assets/hap-icons/contact-sensor-open.svg +0 -81
  114. package/public/assets/hap-icons/door-closed.svg +0 -33
  115. package/public/assets/hap-icons/door-open.svg +0 -49
  116. package/public/assets/hap-icons/doorbell.svg +0 -9
  117. package/public/assets/hap-icons/fan-off.svg +0 -25
  118. package/public/assets/hap-icons/fan-on.svg +0 -25
  119. package/public/assets/hap-icons/filter-maintenance.svg +0 -26
  120. package/public/assets/hap-icons/garage-door.svg +0 -25
  121. package/public/assets/hap-icons/microphone.svg +0 -14
  122. package/public/assets/hap-icons/smoke-sensor.svg +0 -59
  123. package/public/assets/hap-icons/speaker.svg +0 -46
  124. package/public/assets/hap-icons/television.svg +0 -16
  125. package/public/assets/hap-icons/window-closed.svg +0 -86
  126. package/public/assets/hap-icons/window-covering-closed.svg +0 -49
  127. package/public/assets/hap-icons/window-covering-open.svg +0 -44
  128. package/public/assets/hap-icons/window-open.svg +0 -137
  129. package/public/chunk-7CDOEUGY.js +0 -1
  130. package/public/chunk-CPAHENLQ.js +0 -1
  131. package/public/chunk-ESQQ74VV.js +0 -4
  132. package/public/chunk-HEUWGOF3.js +0 -1
  133. package/public/chunk-LPDYQHMD.js +0 -1
  134. package/public/chunk-RJOGO4M5.js +0 -2
  135. package/public/chunk-SPLSJVTN.js +0 -1
  136. package/public/chunk-SW6PIZF7.js +0 -1
  137. package/public/chunk-TTMAUECI.js +0 -12
  138. package/public/chunk-WEVBEUAJ.js +0 -4
  139. package/public/chunk-YL2ITUR4.js +0 -1
  140. package/public/main-I34D7ZNT.js +0 -1
  141. package/public/media/fa-brands-400-WVWUIHCX.woff2 +0 -0
  142. package/public/media/fa-regular-400-I5DJMINO.woff2 +0 -0
  143. package/public/media/fa-solid-900-C5F6UWGT.woff2 +0 -0
  144. package/public/styles-LG2MDN7O.css +0 -1
  145. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/base/worker/workerMain.js +0 -0
  146. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/basic-languages/shell/shell.js +0 -0
  147. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/editor/editor.main.css +0 -0
  148. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/editor/editor.main.js +0 -0
  149. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/editor/editor.main.nls.js +0 -0
  150. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/language/json/jsonMode.js +0 -0
  151. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/language/json/jsonWorker.js +0 -0
  152. /package/public/assets/{monaco → monaco-0.21.3}/min/vs/loader.js +0 -0
  153. /package/public/assets/{hap-icons → service-icons}/robot-vacuum.svg +0 -0
@@ -0,0 +1 @@
1
+ import{a as n}from"./chunk-F6NZALU5.js";import"./chunk-ZO74PVYQ.js";import{g as r}from"./chunk-6HJHVJPI.js";import"./chunk-Z6DMMN6D.js";import"./chunk-2ZM2CO7S.js";import"./chunk-FYDO54CR.js";import"./chunk-KLQ6BEKS.js";import{ha as o,nb as e}from"./chunk-645YHJEQ.js";var c=[{path:"",loadComponent:()=>import("./chunk-7NWB7MN6.js").then(t=>t.SettingsComponent),canActivate:[n]}],m=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[r.forChild(c),r]})}return t})();var l=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[m]})}return t})();export{l as SettingsModule};
@@ -1 +1 @@
1
- import{g as r}from"./chunk-25NXLXGL.js";import"./chunk-RJOGO4M5.js";import{ha as t,nb as e}from"./chunk-WEVBEUAJ.js";var m=[{path:"",loadComponent:()=>import("./chunk-YL2ITUR4.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};
1
+ import{g as r}from"./chunk-6HJHVJPI.js";import"./chunk-KLQ6BEKS.js";import{ha as t,nb as e}from"./chunk-645YHJEQ.js";var m=[{path:"",loadComponent:()=>import("./chunk-GNULJZ2P.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};
@@ -1 +1 @@
1
- import{A as Q,c as $,d as C,e as B,f as O,g as T,j as w,m as q,p as z,q as D,w as H,x as A,z as G}from"./chunk-VPU5FNT3.js";import{b as K}from"./chunk-BSXHN5WA.js";import{d as U}from"./chunk-25NXLXGL.js";import{b as J}from"./chunk-LPDYQHMD.js";import{m as W}from"./chunk-SPLSJVTN.js";import{b as j}from"./chunk-CPAHENLQ.js";import"./chunk-RJOGO4M5.js";import{Dc as f,Hc as l,Ib as u,Ic as d,Jb as c,M as I,Ob as m,Pb as r,Qb as a,Rb as s,Sc as b,Uc as L,Xa as x,ab as i,bc as E,dc as M,h as y,id as N,kc as v,la as p,lc as F,ld as V,mb as k,qc as g,rc as h,sc as R,w as S,zd as P}from"./chunk-WEVBEUAJ.js";var Y=["password"],Z=["username"],ee=["otp"],te=e=>({background:e}),ie=e=>({anim:e}),X=e=>({"is-invalid":e});function ne(e,_){if(e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",13),a(),s(3,"input",14,0),l(5,"translate"),a(),r(6,"div",8)(7,"span",12),s(8,"i",15),a(),s(9,"input",16,1),l(11,"translate"),a()),e&2){let n=M();i(3),m("placeholder",d(5,4,"users.label_username"))("ngClass",f(8,X,n.form.controls.username.dirty&&n.form.controls.username.errors)),i(6),m("placeholder",d(11,6,"users.label_password"))("ngClass",f(10,X,n.form.controls.password.dirty&&n.form.controls.password.errors))}}function oe(e,_){e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",17),a(),s(3,"input",18,2),l(5,"translate"),a()),e&2&&(i(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function ae(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_credentials")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}function re(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_code")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}var _e=(()=>{class e{$auth=p(K);$cdr=p(L);$router=p(U);$settings=p(J);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=b("password");usernameInput=b("username");otpInput=b("otp");backgroundStyle;invalidCredentials=!1;invalid2faCode=!1;twoFactorCodeRequired=!1;inProgress=!1;form;ngOnInit(){this.form=new T({username:new w(""),password:new w("")}),this.form.valueChanges.pipe(I(500)).subscribe(n=>{let o=this.passwordInput()?.nativeElement.value;o&&o!==n.password&&this.form.controls.password.setValue(o)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}ngAfterViewChecked(){this.$cdr.detectChanges()}onSubmit(){return y(this,null,function*(){this.invalidCredentials=!1,this.invalid2faCode=!1,this.inProgress=!0,document.getElementById("submit-button")?.blur();let n=this.passwordInput()?.nativeElement.value;n&&n!==this.form.get("password").value&&this.form.controls.password.setValue(n);let o=this.usernameInput()?.nativeElement.value;if(o&&o!==this.form.get("username").value&&this.form.controls.username.setValue(o),this.twoFactorCodeRequired){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.get("otp").value&&this.form.controls.username.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(t){t.status===412?(this.form.controls.otp?(this.form.controls.otp.setErrors(["Invalid Code"]),this.invalid2faCode=!0):this.form.addControl("otp",new w("",[C.required,C.minLength(6),C.maxLength(6)])),this.twoFactorCodeRequired=!0,setTimeout(()=>{document.getElementById("form-ota").focus()},100)):this.invalidCredentials=!0}this.inProgress=!1})}setBackground(){return y(this,null,function*(){if(this.$settings.settingsLoaded||(yield S(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let n=`${W.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${n}') center/cover`}})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){o&1&&(v(t.passwordInput,Y,5),v(t.usernameInput,Z,5),v(t.otpInput,ee,5)),o&2&&F(3)},decls:15,vars:18,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","login-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"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-fw","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-fw","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(o,t){o&1&&(r(0,"div",3)(1,"div",4),s(2,"img",5),r(3,"form",6),E("ngSubmit",function(){return t.onSubmit()}),r(4,"h4",7),g(5),l(6,"translate"),a(),u(7,ne,12,12),u(8,oe,6,3,"div",8),u(9,ae,9,6,"div",9),u(10,re,9,6,"div",9),r(11,"div",10)(12,"button",11),g(13),l(14,"translate"),a()()()()()),o&2&&(m("ngStyle",f(14,te,t.backgroundStyle))("ngClass",f(16,ie,!t.backgroundStyle)),i(3),m("formGroup",t.form),i(2),h(d(6,10,"setup.welcome_to_homebridge")),i(2),c(t.twoFactorCodeRequired?-1:7),i(),c(t.twoFactorCodeRequired?8:-1),i(),c(t.invalidCredentials?9:-1),i(),c(t.invalid2faCode?10:-1),i(2),m("disabled",t.form.invalid),i(),R(" ",d(14,12,"form.button_continue")," "))},dependencies:[V,G,q,$,B,O,H,A,Q,z,D,N,P,j],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-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;-o-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%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return e})();export{_e as LoginComponent};
1
+ import{A as Q,c as $,d as C,e as B,f as O,g as T,j as w,m as q,p as z,q as D,w as H,x as A,z as G}from"./chunk-KYB236MX.js";import{b as K}from"./chunk-ZO74PVYQ.js";import{d as U}from"./chunk-6HJHVJPI.js";import{b as J}from"./chunk-Z6DMMN6D.js";import{m as W}from"./chunk-2ZM2CO7S.js";import{b as j}from"./chunk-FYDO54CR.js";import"./chunk-KLQ6BEKS.js";import{Ad as P,Dc as f,Ib as u,Ic as l,Jb as c,Jc as d,M as I,Ob as m,Pb as r,Qb as a,Rb as s,Tc as b,Vc as L,Xa as x,ab as i,bc as E,dc as M,h as y,jd as N,kc as v,la as p,lc as F,mb as k,md as V,qc as g,rc as h,sc as R,w as S}from"./chunk-645YHJEQ.js";var Y=["password"],Z=["username"],ee=["otp"],te=e=>({background:e}),ie=e=>({anim:e}),X=e=>({"is-invalid":e});function ne(e,_){if(e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",13),a(),s(3,"input",14,0),l(5,"translate"),a(),r(6,"div",8)(7,"span",12),s(8,"i",15),a(),s(9,"input",16,1),l(11,"translate"),a()),e&2){let n=M();i(3),m("placeholder",d(5,4,"users.label_username"))("ngClass",f(8,X,n.form.controls.username.dirty&&n.form.controls.username.errors)),i(6),m("placeholder",d(11,6,"users.label_password"))("ngClass",f(10,X,n.form.controls.password.dirty&&n.form.controls.password.errors))}}function oe(e,_){e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",17),a(),s(3,"input",18,2),l(5,"translate"),a()),e&2&&(i(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function ae(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_credentials")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}function re(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_code")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}var _e=(()=>{class e{$auth=p(K);$cdr=p(L);$router=p(U);$settings=p(J);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=b("password");usernameInput=b("username");otpInput=b("otp");backgroundStyle;invalidCredentials=!1;invalid2faCode=!1;twoFactorCodeRequired=!1;inProgress=!1;form;ngOnInit(){this.form=new T({username:new w(""),password:new w("")}),this.form.valueChanges.pipe(I(500)).subscribe(n=>{let o=this.passwordInput()?.nativeElement.value;o&&o!==n.password&&this.form.controls.password.setValue(o)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}ngAfterViewChecked(){this.$cdr.detectChanges()}onSubmit(){return y(this,null,function*(){this.invalidCredentials=!1,this.invalid2faCode=!1,this.inProgress=!0,document.getElementById("submit-button")?.blur();let n=this.passwordInput()?.nativeElement.value;n&&n!==this.form.get("password").value&&this.form.controls.password.setValue(n);let o=this.usernameInput()?.nativeElement.value;if(o&&o!==this.form.get("username").value&&this.form.controls.username.setValue(o),this.twoFactorCodeRequired){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.get("otp").value&&this.form.controls.username.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(t){t.status===412?(this.form.controls.otp?(this.form.controls.otp.setErrors(["Invalid Code"]),this.invalid2faCode=!0):this.form.addControl("otp",new w("",[C.required,C.minLength(6),C.maxLength(6)])),this.twoFactorCodeRequired=!0,setTimeout(()=>{document.getElementById("form-ota").focus()},100)):this.invalidCredentials=!0}this.inProgress=!1})}setBackground(){return y(this,null,function*(){if(this.$settings.settingsLoaded||(yield S(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let n=`${W.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${n}') center/cover`}})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){o&1&&(v(t.passwordInput,Y,5),v(t.usernameInput,Z,5),v(t.otpInput,ee,5)),o&2&&F(3)},decls:15,vars:18,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","login-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"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-fw","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-fw","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(o,t){o&1&&(r(0,"div",3)(1,"div",4),s(2,"img",5),r(3,"form",6),E("ngSubmit",function(){return t.onSubmit()}),r(4,"h4",7),g(5),l(6,"translate"),a(),u(7,ne,12,12),u(8,oe,6,3,"div",8),u(9,ae,9,6,"div",9),u(10,re,9,6,"div",9),r(11,"div",10)(12,"button",11),g(13),l(14,"translate"),a()()()()()),o&2&&(m("ngStyle",f(14,te,t.backgroundStyle))("ngClass",f(16,ie,!t.backgroundStyle)),i(3),m("formGroup",t.form),i(2),h(d(6,10,"setup.welcome_to_homebridge")),i(2),c(t.twoFactorCodeRequired?-1:7),i(),c(t.twoFactorCodeRequired?8:-1),i(),c(t.invalidCredentials?9:-1),i(),c(t.invalid2faCode?10:-1),i(2),m("disabled",t.form.invalid),i(),R(" ",d(14,12,"form.button_continue")," "))},dependencies:[V,G,q,$,B,O,H,A,Q,z,D,N,P,j],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-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;-o-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%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return e})();export{_e as LoginComponent};