homebridge-config-ui-x 4.78.2-beta.10 → 4.78.2-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 (54) hide show
  1. package/CHANGELOG.md +7 -5
  2. package/package.json +3 -3
  3. package/public/assets/hap-icons/speaker.svg +27 -12
  4. package/public/{chunk-SNKJBIOP.js → chunk-2IN45KD3.js} +1 -1
  5. package/public/{chunk-C5RHCAUK.js → chunk-2YGYR6L5.js} +1 -1
  6. package/public/{chunk-OWY3J4XU.js → chunk-3E4EMFC3.js} +1 -1
  7. package/public/{chunk-3JARG26K.js → chunk-4HPGM6HS.js} +1 -1
  8. package/public/chunk-4NFI6L2Y.js +12 -0
  9. package/public/{chunk-ROYACDP2.js → chunk-4W3A6DIF.js} +1 -1
  10. package/public/{chunk-HSWLFIAJ.js → chunk-5PJBGU6S.js} +1 -1
  11. package/public/{chunk-ASKYLUSK.js → chunk-5R56LWCQ.js} +1 -1
  12. package/public/{chunk-HZUGXGIE.js → chunk-5S7TFWYQ.js} +1 -1
  13. package/public/{chunk-45AWUQUI.js → chunk-736HBW22.js} +1 -1
  14. package/public/{chunk-4YRWQX3W.js → chunk-7AR3IBWZ.js} +1 -1
  15. package/public/{chunk-5SZ5GQYS.js → chunk-7DIUENPE.js} +1 -1
  16. package/public/{chunk-RN7GNGXO.js → chunk-BBWTONF5.js} +1 -1
  17. package/public/{chunk-FR5YDBCN.js → chunk-BDWOWDNP.js} +1 -1
  18. package/public/{chunk-22QTGFTJ.js → chunk-BNSPASKE.js} +1 -1
  19. package/public/{chunk-PVP6IVZQ.js → chunk-C2NDMLCJ.js} +1 -1
  20. package/public/{chunk-FHY3NHWQ.js → chunk-COJO762B.js} +1 -1
  21. package/public/{chunk-QH4OYVQX.js → chunk-CSHGXNQ4.js} +1 -1
  22. package/public/{chunk-UJZFMBAF.js → chunk-EXIBAO7N.js} +1 -1
  23. package/public/{chunk-HYGTZ767.js → chunk-FV2LDU2Z.js} +1 -1
  24. package/public/chunk-G4FGZERA.js +1 -0
  25. package/public/{chunk-P2OFHVSW.js → chunk-G6BCH4I7.js} +1 -1
  26. package/public/{chunk-Z73Q5KI4.js → chunk-G7ASN2CT.js} +1 -1
  27. package/public/{chunk-3LKZCKCF.js → chunk-GBYRC5LK.js} +1 -1
  28. package/public/{chunk-JFXQKHPO.js → chunk-GI5ZD4YL.js} +1 -1
  29. package/public/{chunk-IDT6WBAB.js → chunk-GIX5JDE6.js} +1 -1
  30. package/public/{chunk-O3KBZXCW.js → chunk-IYXKWWOZ.js} +1 -1
  31. package/public/{chunk-63UHV4TV.js → chunk-J7CZIM5Y.js} +1 -1
  32. package/public/{chunk-EITS7TXC.js → chunk-J7UVIPMF.js} +1 -1
  33. package/public/{chunk-7ATQ5EBC.js → chunk-JWTBJ52B.js} +1 -1
  34. package/public/{chunk-KC3UX7RJ.js → chunk-OXPPMN4H.js} +1 -1
  35. package/public/chunk-PKTXUGFE.js +4 -0
  36. package/public/{chunk-V7XUKJMZ.js → chunk-PSS4REOR.js} +1 -1
  37. package/public/{chunk-VV5VPBPJ.js → chunk-QNO5NO6N.js} +1 -1
  38. package/public/{chunk-PSCHGWYB.js → chunk-SF7MGKLR.js} +1 -1
  39. package/public/{chunk-HELQ6C4L.js → chunk-TFUWAEXV.js} +1 -1
  40. package/public/{chunk-KUQKJUX5.js → chunk-U6LTV5BY.js} +1 -1
  41. package/public/{chunk-Z565CB6Q.js → chunk-UDTPL4YX.js} +1 -1
  42. package/public/{chunk-LVSOME36.js → chunk-WAALYA6G.js} +1 -1
  43. package/public/{chunk-4T2GN6EO.js → chunk-X54RYJVH.js} +1 -1
  44. package/public/{chunk-EV45AMNT.js → chunk-XCMFVJ2O.js} +1 -1
  45. package/public/{chunk-TKQG3CQ6.js → chunk-XQ3JJREI.js} +1 -1
  46. package/public/{chunk-BU6UAZVK.js → chunk-YCQ4FEJS.js} +1 -1
  47. package/public/{chunk-KBSONIC6.js → chunk-ZGJ4EXWD.js} +1 -1
  48. package/public/index.html +2 -2
  49. package/public/main-WNDNVTGA.js +1 -0
  50. package/public/{styles-YDIK2EDN.css → styles-ZKWHTEN5.css} +1 -1
  51. package/public/chunk-N4XOTXZL.js +0 -12
  52. package/public/chunk-PY6XYKE2.js +0 -1
  53. package/public/chunk-QTPIIYXJ.js +0 -4
  54. package/public/main-PSKITXQI.js +0 -1
package/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
4
4
 
5
- ## v4.79.0 (2025-07-07)
5
+ ## v4.79.0 (2025-07-12)
6
6
 
7
7
  ### ⚠️ Upcoming Deprecations:
8
8
 
@@ -29,14 +29,16 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
29
29
  - add saturation control to lightbulb control modal
30
30
  - add transparency to slider handles in accessory control modals
31
31
  - allow applying a custom service to an accessory's service
32
- - Change between `Switch`, `Outlet`, `Lightbulb`, `Fan`, `Television`, `Valve`, `AirPurifier`, `Heater`, `Cooler`, `Humidifier`, `Dehumidifier` for these accessory types
33
- - Change between `Door`, `Window`, `WindowCovering` for these accessory types
34
- - This can be set in the accessory info modal, more options to come in the future
32
+ - change between `Switch`, `Outlet`, `Lightbulb`, `Fan`, `Television`, `Valve`, `AirPurifier`, `Heater`, `Cooler`, `Humidifier`, `Dehumidifier` for these accessory types
33
+ - change between `Door`, `Window`, `WindowCovering` for these accessory types
34
+ - this can be set in the accessory info modal, more options to come in the future
35
35
  - obtain hb/ui changelog from the most recent github tag
36
36
  - add plugin support button and modal
37
37
  - add plugin search button, hide bar by default
38
38
  - add tab in plugins showing plugin analytics in `iframe`
39
- - show `npm` version with node version where available
39
+ - add option to show `npm` version with node version
40
+ - this can be enabled in the update info widget settings by clicking the spanner icon in the top right corner of the widget on hover (from a desktop, when in unlocked mode)
41
+ - add control modal for smart speaker accessories
40
42
  - custom service changing - add more to group one
41
43
 
42
44
  ### Other Changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-config-ui-x",
3
3
  "displayName": "Homebridge UI",
4
- "version": "4.78.2-beta.10",
4
+ "version": "4.78.2-beta.11",
5
5
  "description": "A web based management, configuration and control platform for Homebridge.",
6
6
  "author": "oznu <dev@oz.nu>",
7
7
  "license": "MIT",
@@ -122,10 +122,10 @@
122
122
  "devDependencies": {
123
123
  "@antfu/eslint-config": "^4.16.2",
124
124
  "@nestjs/testing": "^10.4.19",
125
- "@prettier/plugin-xml": "^3.4.1",
125
+ "@prettier/plugin-xml": "^3.4.2",
126
126
  "@types/fs-extra": "^11.0.4",
127
127
  "@types/lodash": "^4.17.20",
128
- "@types/node": "^24.0.10",
128
+ "@types/node": "^24.0.11",
129
129
  "@types/node-schedule": "^2.1.7",
130
130
  "@types/passport-jwt": "^4.0.1",
131
131
  "@types/semver": "^7.7.0",
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
1
  <svg
3
2
  width="32px"
4
3
  height="32px"
@@ -6,26 +5,42 @@
6
5
  version="1.1"
7
6
  xmlns="http://www.w3.org/2000/svg"
8
7
  xmlns:xlink="http://www.w3.org/1999/xlink"
9
- xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"
10
8
  >
11
- <!-- Created with Method Draw, but modified - http://github.com/duopixel/Method-Draw/ -->
12
- <g>
13
- <title>background</title>
14
- <rect fill="none" id="canvas_background" height="34" width="34" y="-1" x="-1" />
15
- <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
16
- <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%" />
17
- </g>
18
- </g>
19
9
  <g>
20
10
  <title>speaker</title>
11
+ <!-- Speaker path -->
21
12
  <path
22
13
  stroke="#7F7F7F"
23
- id="svg_12"
24
- d="m2.63366,10.44981l0,11.04296l6.25803,0l8.3897,7.72829l0,-26.49955l-8.38553,7.7283l-6.26221,0zm19.22659,12.09743c1.7013,-1.70615 2.7538,-4.07114 2.75518,-6.67943c0.00138,-2.60829 -1.05806,-4.98158 -2.75796,-6.68786m3.20067,16.57845c2.51718,-2.53001 4.07787,-6.03471 4.07506,-9.89195c0.00141,-3.86001 -1.55925,-7.3675 -4.08062,-9.8947"
14
+ id="speaker"
15
+ d="m2.63366,10.44981l0,11.04296l6.25803,0l8.3897,7.72829l0,-26.49955l-8.38553,7.7283l-6.26221,0z"
16
+ fill-opacity="null"
17
+ stroke-opacity="null"
18
+ stroke-width="2.0"
19
+ fill="none"
20
+ />
21
+
22
+ <!-- First wave -->
23
+ <path
24
+ stroke="none"
25
+ id="wave1"
26
+ d="m21.86025,22.54724c1.7013,-1.70615 2.7538,-4.07114 2.75518,-6.67943c0.00138,-2.60829 -1.05806,-4.98158 -2.75796,-6.68786"
27
+ fill-opacity="null"
28
+ stroke-opacity="null"
29
+ stroke-width="2.0"
30
+ fill="none"
31
+ class="wave"
32
+ />
33
+
34
+ <!-- Second wave -->
35
+ <path
36
+ stroke="none"
37
+ id="wave2"
38
+ d="m25.06092,26.02826c2.51718,-2.53001 4.07787,-6.03471 4.07506,-9.89195c0.00141,-3.86001 -1.55925,-7.3675 -4.08062,-9.8947"
25
39
  fill-opacity="null"
26
40
  stroke-opacity="null"
27
41
  stroke-width="2.0"
28
42
  fill="none"
43
+ class="wave"
29
44
  />
30
45
  </g>
31
46
  </svg>
@@ -1 +1 @@
1
- import{a as ne}from"./chunk-7EQ4BJZB.js";import{g as O,m as G,n as te}from"./chunk-CF2ZN7LY.js";import{A,b as Z,c as I,d as x,e as F,f as P,g as V,j as w,m as z,o as q,p as R,q as L,x as ee,z as N}from"./chunk-T252YJXA.js";import{b as Q}from"./chunk-ASKYLUSK.js";import{b as ie}from"./chunk-X7PVYZAE.js";import{a as ce}from"./chunk-BU6UAZVK.js";import{k as U,n as k}from"./chunk-HZUGXGIE.js";import{a as S,b as $}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as o,Cc as s,Dc as Y,Hb as u,Ib as h,Jb as g,Lb as K,Mb as W,Nb as X,Ob as f,Pb as i,Qb as n,Rb as d,Vb as M,Yb as b,Zb as v,ab as e,cd as j,g as pe,kc as m,la as c,lc as p,mb as E,mc as C,ra as B,sa as T,xc as D}from"./chunk-SKZUTSHE.js";function ue(r,y){r&1&&(i(0,"ngb-alert",13)(1,"p",20),m(2),o(3,"translate"),n()()),r&2&&(f("dismissible",!1),e(2),p(s(3,2,"login.invalid_password")))}var re=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);invalidCredentials=!1;formGroup=new V({password:new w("",[x.required])});disable2fa(){this.invalidCredentials=!1,this.$api.post("/users/otp/deactivate",this.formGroup.value).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.setup_2fa_disable_success"),this.$translate.instant("toast.title_success"))},error:()=>{this.formGroup.setValue({password:""}),this.invalidCredentials=!0}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],decls:34,vars:27,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","password","autocomplete","current-password",1,"form-control","custom-input",3,"formControl","placeholder"],["type","error",1,"mt-3","mb-0",3,"dismissible"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"mb-0"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),n(),i(5,"button",3),o(6,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(7,"div",4)(8,"div",5),d(9,"i",6),n(),i(10,"ul",7)(11,"li"),m(12),o(13,"translate"),n()(),i(14,"ul",8)(15,"li",9)(16,"label",10),m(17),o(18,"translate"),n(),i(19,"div",11),d(20,"input",12),o(21,"translate"),n()()(),h(22,ue,4,4,"ngb-alert",13),n(),i(23,"div",14)(24,"div",15)(25,"button",16),o(26,"translate"),b("click",function(){return l.dismissModal()}),m(27),o(28,"translate"),n()(),d(29,"div",17),i(30,"div",18)(31,"button",19),b("click",function(){return l.disable2fa()}),m(32),o(33,"translate"),n()()()()),a&2&&(e(3),p(s(4,11,"users.setup_2fa_disable")),e(2),u("aria-label",s(6,13,"form.button_close")),e(7),p(s(13,15,"users.setup_2fa_disable_current_password")),e(5),p(s(18,17,"users.label_password")),e(3),f("formControl",l.formGroup.controls.password)("placeholder",s(21,19,"users.label_password")),e(2),g(l.invalidCredentials&&!l.formGroup.controls.password.value?22:-1),e(3),u("aria-label",s(26,21,"form.button_close")),e(2),C(" ",s(28,23,"form.button_close")," "),e(4),f("disabled",l.formGroup.invalid),e(),C(" ",s(33,25,"form.button_disable")," "))},dependencies:[N,I,F,A,q,$,O],encapsulation:2})}return r})();var ae=pe(ce(),1);var fe=r=>({timeDiffError:r});function be(r,y){r&1&&(i(0,"li"),m(1),o(2,"translate"),n()),r&2&&(e(),p(s(2,1,"users.setup_2fa_scan_qr_code")))}function _e(r,y){if(r&1&&(i(0,"ngb-alert",8)(1,"p",16),m(2),o(3,"translate"),n(),i(4,"p",17),m(5),o(6,"translate"),n()()),r&2){let t=v();f("dismissible",!1),e(2),p(s(3,3,"users.setup_2fa_cannot_setup_2fa")),e(3),p(Y(6,5,"users.setup_2fa_server_time_out",D(8,fe,t.timeDiffError)))}}function ve(r,y){if(r&1&&(i(0,"ul",9)(1,"li",18)(2,"div",19),d(3,"app-qrcode",20),n()(),i(4,"li",21)(5,"label",22),m(6),o(7,"translate"),n(),i(8,"div",23),d(9,"input",24),n()()()),r&2){let t=v();e(3),f("data",t.otpString),e(3),p(s(7,3,"users.setup_2fa_enter_code")),e(3),f("formControl",t.formGroup.controls.code)}}function xe(r,y){if(r&1){let t=M();i(0,"button",25),o(1,"translate"),b("click",function(){B(t);let l=v();return T(l.dismissModal())}),m(2),o(3,"translate"),n()}r&2&&(u("aria-label",s(1,2,"form.button_close")),e(2),C(" ",s(3,4,"form.button_close")," "))}function we(r,y){if(r&1){let t=M();i(0,"button",25),o(1,"translate"),b("click",function(){B(t);let l=v();return T(l.dismissModal())}),m(2),o(3,"translate"),n()}r&2&&(u("aria-label",s(1,2,"form.button_close")),e(2),C(" ",s(3,4,"form.button_close")," "))}function Ce(r,y){if(r&1){let t=M();i(0,"button",26),b("click",function(){B(t);let l=v();return T(l.enable2fa())}),m(1),o(2,"translate"),n()}if(r&2){let t=v();f("disabled",t.formGroup.invalid),e(),C(" ",s(2,2,"form.button_enable")," ")}}var oe=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);user;timeDiffError=null;otpString;formGroup=new V({code:new w("",[x.required,x.minLength(6),x.maxLength(6)])});ngOnInit(){this.$api.post("/users/otp/setup",{}).subscribe({next:t=>{this.checkTimeDiff(t.timestamp),this.timeDiffError||(this.otpString=t.otpauth)},error:t=>{this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}enable2fa(){this.$api.post("/users/otp/activate",this.formGroup.value).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.setup_2fa_enabled_success"),this.$translate.instant("toast.title_success")),this.$activeModal.close()},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(t){let a=(0,ae.default)(t).diff(new Date,"millisecond");a<-5e3||a>5e3?this.timeDiffError=a:this.timeDiffError=null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:24,vars:15,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],["type","error",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fw-bold","mb-1"],[1,"mb-0"],[1,"list-group-item","text-center"],[1,"text-center","w-100","d-flex","justify-content-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control","custom-input",3,"formControl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),n(),i(5,"button",3),o(6,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(7,"div",4)(8,"div",5),d(9,"i",6),n(),i(10,"ul",7)(11,"li"),m(12),o(13,"translate"),n(),h(14,be,3,3,"li"),n(),h(15,_e,7,10,"ngb-alert",8),h(16,ve,10,5,"ul",9),n(),i(17,"div",10)(18,"div",11),h(19,xe,4,6,"button",12),n(),i(20,"div",13),h(21,we,4,6,"button",12),n(),i(22,"div",14),h(23,Ce,3,4,"button",15),n()()()),a&2&&(e(3),p(s(4,9,"users.setup_2fa")),e(2),u("aria-label",s(6,11,"form.button_close")),e(7),p(s(13,13,"users.setup_2fa_warning")),e(2),g(l.timeDiffError?-1:14),e(),g(l.timeDiffError?15:-1),e(),g(l.timeDiffError?-1:16),e(3),g(l.timeDiffError?-1:19),e(2),g(l.timeDiffError?21:-1),e(2),g(l.timeDiffError?-1:23))},dependencies:[O,ne,N,I,F,ee,A,q,$],encapsulation:2})}return r})();var se=r=>({"is-invalid":r}),le=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);form=new V({username:new w("",[x.required]),name:new w("",[x.required]),password:new w("",[x.compose([x.required,x.minLength(4)])]),passwordConfirm:new w("",[x.required]),admin:new w(!0)},this.matchPassword);onSubmit({value:t}){this.$api.post("/users",t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_added_new_user"),this.$translate.instant("toast.title_success"))},error:a=>{this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let a=t.get("password").value,l=t.get("passwordConfirm").value;if(a!==l)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],decls:58,vars:50,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-user-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input",3,"ngClass"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input",3,"ngClass"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"form",1),b("ngSubmit",function(){return l.onSubmit(l.form)}),i(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),n(),i(6,"button",4),o(7,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(8,"div",5)(9,"div",6),d(10,"i",7),n(),i(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),n(),i(16,"div",11),d(17,"input",12),o(18,"translate"),n()(),i(19,"li",9)(20,"label",13),m(21),o(22,"translate"),n(),i(23,"div",11),d(24,"input",14),o(25,"translate"),n()(),i(26,"li",9)(27,"label",15),m(28),o(29,"translate"),n(),i(30,"div",11),d(31,"input",16),o(32,"translate"),n()(),i(33,"li",9)(34,"label",17),m(35),o(36,"translate"),n(),i(37,"div",11),d(38,"input",18),o(39,"translate"),n()(),i(40,"li",19)(41,"span",20),m(42),o(43,"translate"),n(),i(44,"div",21),d(45,"input",22),o(46,"translate"),d(47,"label",23),n()()()(),i(48,"div",24)(49,"div",20)(50,"button",25),b("click",function(){return l.dismissModal()}),m(51),o(52,"translate"),n()(),d(53,"div",26),i(54,"div",27)(55,"button",28),m(56),o(57,"translate"),n()()()()()),a&2&&(e(),f("formGroup",l.form),e(3),p(s(5,18,"users.title_add_user")),e(2),u("aria-label",s(7,20,"form.button_close")),e(8),p(s(15,22,"users.label_username")),e(3),u("aria-label",s(18,24,"users.label_username")),e(4),p(s(22,26,"users.label_full_name")),e(3),u("aria-label",s(25,28,"users.label_full_name")),e(4),p(s(29,30,"users.label_password")),e(3),f("ngClass",D(46,se,l.form.controls.password.dirty&&l.form.controls.password.errors)),u("aria-label",s(32,32,"users.label_password")),e(4),p(s(36,34,"users.label_confirm_password")),e(3),f("ngClass",D(48,se,l.form.controls.passwordConfirm.dirty&&l.form.controls.passwordConfirm.errors)),u("aria-label",s(39,36,"users.label_confirm_password")),e(4),p(s(43,38,"users.label_admin_user")),e(3),u("aria-label",s(46,40,"users.label_admin_user")),e(6),C(" ",s(52,42,"form.button_close")," "),e(4),f("disabled",!l.form.valid),e(),C(" ",s(57,44,"form.button_save")," "))},dependencies:[N,z,I,F,P,A,R,L,j,$],encapsulation:2})}return r})();var me=r=>({"is-invalid":r});function he(r,y){if(r&1&&(i(0,"li",9)(1,"label",27),m(2),o(3,"translate"),n(),i(4,"div",11),d(5,"input",28),o(6,"translate"),n()()),r&2){let t=v();e(2),p(s(3,3,"users.label_confirm_password")),e(3),f("ngClass",D(7,me,t.form.controls.passwordConfirm.dirty&&t.form.controls.passwordConfirm.errors)),u("aria-label",s(6,5,"users.label_confirm_password"))}}var de=(()=>{class r{$activeModal=c(G);$api=c(k);$auth=c(Q);$toastr=c(U);$translate=c(S);user;isCurrentUser=!1;form=new V({username:new w("",[x.required]),name:new w("",[x.required]),password:new w(""),passwordConfirm:new w(""),admin:new w(!0)},this.matchPassword);ngOnInit(){this.isCurrentUser=this.$auth.user.username===this.user.username,this.form.patchValue(this.user)}onSubmit({value:t}){this.$api.patch(`/users/${this.user.id}`,t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_updated_user"),this.$translate.instant("toast.title_success")),this.isCurrentUser&&t.username!==this.$auth.user.username&&this.$auth.logout()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let a=t.get("password").value,l=t.get("passwordConfirm").value;if(a!==l)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:52,vars:42,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-user-pen","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input",3,"ngClass"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input",3,"ngClass"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"form",1),b("ngSubmit",function(){return l.onSubmit(l.form)}),i(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),n(),i(6,"button",4),o(7,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(8,"div",5)(9,"div",6),d(10,"i",7),n(),i(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),n(),i(16,"div",11),d(17,"input",12),o(18,"translate"),n()(),i(19,"li",9)(20,"label",13),m(21),o(22,"translate"),n(),i(23,"div",11),d(24,"input",14),o(25,"translate"),n()(),i(26,"li",9)(27,"label",15),m(28),o(29,"translate"),n(),i(30,"div",11),d(31,"input",16),o(32,"translate"),n()(),h(33,he,7,9,"li",9),i(34,"li",17)(35,"span",18),m(36),o(37,"translate"),n(),i(38,"div",19),d(39,"input",20),o(40,"translate"),d(41,"label",21),n()()()(),i(42,"div",22)(43,"div",18)(44,"button",23),b("click",function(){return l.dismissModal()}),m(45),o(46,"translate"),n()(),d(47,"div",24),i(48,"div",25)(49,"button",26),m(50),o(51,"translate"),n()()()()()),a&2&&(e(),f("formGroup",l.form),e(3),p(s(5,16,"users.title_edit_user")),e(2),u("aria-label",s(7,18,"form.button_close")),e(8),p(s(15,20,"users.label_username")),e(3),u("aria-label",s(18,22,"users.label_username")),e(4),p(s(22,24,"users.label_full_name")),e(3),u("aria-label",s(25,26,"users.label_full_name")),e(4),p(s(29,28,"users.label_new_password")),e(3),f("ngClass",D(40,me,l.form.controls.password.dirty&&l.form.controls.password.errors)),u("aria-label",s(32,30,"users.label_new_password")),e(2),g(l.form.controls.password.value?33:-1),e(3),p(s(37,32,"users.label_admin_user")),e(3),u("aria-label",s(40,34,"users.label_admin_user")),e(6),C(" ",s(46,36,"form.button_close")," "),e(4),f("disabled",!l.form.valid),e(),C(" ",s(51,38,"form.button_save")," "))},dependencies:[N,z,I,Z,F,P,A,R,L,j,$],encapsulation:2})}return r})();function ge(r,y){if(r&1){let t=M();i(0,"button",21),b("click",function(){B(t);let l=v().$implicit,_=v();return T(_.setup2fa(l))}),m(1),o(2,"translate"),n()}r&2&&(e(),p(s(2,1,"users.setup_2fa")))}function ye(r,y){if(r&1){let t=M();i(0,"button",17),b("click",function(){B(t);let l=v().$implicit,_=v();return T(_.disable2fa(l))}),m(1),o(2,"translate"),n()}r&2&&(e(),C(" ",s(2,1,"users.setup_2fa_disable")," "))}function Ee(r,y){if(r&1){let t=M();i(0,"div",7)(1,"div",8)(2,"div",9)(3,"div",10)(4,"span",11),d(5,"h4",12)(6,"h5",13),n()(),i(7,"div",14),h(8,ge,3,3,"button",15),h(9,ye,3,3,"button",16),i(10,"div")(11,"button",17),o(12,"translate"),b("click",function(){let l=B(t).$implicit,_=v();return T(_.openEditUser(l))}),d(13,"i",18),n(),i(14,"button",19),o(15,"translate"),b("click",function(){let l=B(t).$implicit,_=v();return T(_.deleteUser(l.id))}),d(16,"i",20),n()()()()()()}if(r&2){let t=y.$implicit,a=v();e(5),f("innerText",t.name),e(),f("innerText",t.username),e(2),g(a.username===t.username&&!t.otpActive?8:-1),e(),g(a.username===t.username&&t.otpActive?9:-1),e(2),u("aria-label",s(12,7,"form.button_edit")),e(3),f("disabled",a.username===t.username),u("aria-label",s(15,9,"form.button_delete"))}}var ht=(()=>{class r{$api=c(k);$auth=c(Q);$modal=c(te);$route=c(ie);$toastr=c(U);$translate=c(S);homebridgeUsers;username=this.$auth.user.username;ngOnInit(){this.$route.data.subscribe(t=>{this.homebridgeUsers=t.homebridgeUsers})}reloadUsers(){return this.$api.get("/users").subscribe(t=>{this.homebridgeUsers=t})}openAddNewUser(){this.$modal.open(le,{size:"lg",backdrop:"static"}).result.finally(()=>{this.reloadUsers()})}openEditUser(t){let a=this.$modal.open(de,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}deleteUser(t){this.$api.delete(`/users/${t}`).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.toast_user_deleted"),this.$translate.instant("toast.title_success")),this.reloadUsers()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_delete_user"),this.$translate.instant("toast.title_error"))}})}setup2fa(t){let a=this.$modal.open(oe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}disable2fa(t){let a=this.$modal.open(re,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["app-users"]],decls:12,vars:6,consts:[[1,"row","mb-3"],[1,"col-9"],[1,"primary-text","m-0"],[1,"col-3","text-end"],[1,"btn","btn-elegant","waves-effect","m-0",3,"click"],[1,"fas","fa-fw","fa-user-plus"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[3,"innerText"],[1,"small","text-truncate","primary-text",3,"innerText"],[1,"d-flex","flex-row","justify-content-between"],[1,"btn","btn-primary","m-0"],[1,"btn","btn-elegant","m-0"],[1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-user-pen"],[1,"btn","btn-danger","m-0","ms-2",3,"click","disabled"],[1,"fas","fa-fw","fa-trash"],[1,"btn","btn-primary","m-0",3,"click"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h3",2),m(3),o(4,"translate"),n()(),i(5,"div",3)(6,"button",4),o(7,"translate"),b("click",function(){return l.openAddNewUser()}),d(8,"i",5),n()()(),i(9,"div",6),W(10,Ee,17,11,"div",7,K),n()),a&2&&(e(3),p(s(4,2,"users.title_users")),e(3),u("aria-label",s(7,4,"users.button_add_user")),e(4),X(l.homebridgeUsers))},dependencies:[$],encapsulation:2})}return r})();export{ht as UsersComponent};
1
+ import{a as ne}from"./chunk-7EQ4BJZB.js";import{g as O,m as G,n as te}from"./chunk-CF2ZN7LY.js";import{A,b as Z,c as I,d as x,e as F,f as P,g as V,j as w,m as z,o as q,p as R,q as L,x as ee,z as N}from"./chunk-T252YJXA.js";import{b as Q}from"./chunk-5R56LWCQ.js";import{b as ie}from"./chunk-X7PVYZAE.js";import{a as ce}from"./chunk-YCQ4FEJS.js";import{k as U,n as k}from"./chunk-5S7TFWYQ.js";import{a as S,b as $}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as o,Cc as s,Dc as Y,Hb as u,Ib as h,Jb as g,Lb as K,Mb as W,Nb as X,Ob as f,Pb as i,Qb as n,Rb as d,Vb as M,Yb as b,Zb as v,ab as e,cd as j,g as pe,kc as m,la as c,lc as p,mb as E,mc as C,ra as B,sa as T,xc as D}from"./chunk-SKZUTSHE.js";function ue(r,y){r&1&&(i(0,"ngb-alert",13)(1,"p",20),m(2),o(3,"translate"),n()()),r&2&&(f("dismissible",!1),e(2),p(s(3,2,"login.invalid_password")))}var re=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);invalidCredentials=!1;formGroup=new V({password:new w("",[x.required])});disable2fa(){this.invalidCredentials=!1,this.$api.post("/users/otp/deactivate",this.formGroup.value).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.setup_2fa_disable_success"),this.$translate.instant("toast.title_success"))},error:()=>{this.formGroup.setValue({password:""}),this.invalidCredentials=!0}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],decls:34,vars:27,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","password","autocomplete","current-password",1,"form-control","custom-input",3,"formControl","placeholder"],["type","error",1,"mt-3","mb-0",3,"dismissible"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"mb-0"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),n(),i(5,"button",3),o(6,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(7,"div",4)(8,"div",5),d(9,"i",6),n(),i(10,"ul",7)(11,"li"),m(12),o(13,"translate"),n()(),i(14,"ul",8)(15,"li",9)(16,"label",10),m(17),o(18,"translate"),n(),i(19,"div",11),d(20,"input",12),o(21,"translate"),n()()(),h(22,ue,4,4,"ngb-alert",13),n(),i(23,"div",14)(24,"div",15)(25,"button",16),o(26,"translate"),b("click",function(){return l.dismissModal()}),m(27),o(28,"translate"),n()(),d(29,"div",17),i(30,"div",18)(31,"button",19),b("click",function(){return l.disable2fa()}),m(32),o(33,"translate"),n()()()()),a&2&&(e(3),p(s(4,11,"users.setup_2fa_disable")),e(2),u("aria-label",s(6,13,"form.button_close")),e(7),p(s(13,15,"users.setup_2fa_disable_current_password")),e(5),p(s(18,17,"users.label_password")),e(3),f("formControl",l.formGroup.controls.password)("placeholder",s(21,19,"users.label_password")),e(2),g(l.invalidCredentials&&!l.formGroup.controls.password.value?22:-1),e(3),u("aria-label",s(26,21,"form.button_close")),e(2),C(" ",s(28,23,"form.button_close")," "),e(4),f("disabled",l.formGroup.invalid),e(),C(" ",s(33,25,"form.button_disable")," "))},dependencies:[N,I,F,A,q,$,O],encapsulation:2})}return r})();var ae=pe(ce(),1);var fe=r=>({timeDiffError:r});function be(r,y){r&1&&(i(0,"li"),m(1),o(2,"translate"),n()),r&2&&(e(),p(s(2,1,"users.setup_2fa_scan_qr_code")))}function _e(r,y){if(r&1&&(i(0,"ngb-alert",8)(1,"p",16),m(2),o(3,"translate"),n(),i(4,"p",17),m(5),o(6,"translate"),n()()),r&2){let t=v();f("dismissible",!1),e(2),p(s(3,3,"users.setup_2fa_cannot_setup_2fa")),e(3),p(Y(6,5,"users.setup_2fa_server_time_out",D(8,fe,t.timeDiffError)))}}function ve(r,y){if(r&1&&(i(0,"ul",9)(1,"li",18)(2,"div",19),d(3,"app-qrcode",20),n()(),i(4,"li",21)(5,"label",22),m(6),o(7,"translate"),n(),i(8,"div",23),d(9,"input",24),n()()()),r&2){let t=v();e(3),f("data",t.otpString),e(3),p(s(7,3,"users.setup_2fa_enter_code")),e(3),f("formControl",t.formGroup.controls.code)}}function xe(r,y){if(r&1){let t=M();i(0,"button",25),o(1,"translate"),b("click",function(){B(t);let l=v();return T(l.dismissModal())}),m(2),o(3,"translate"),n()}r&2&&(u("aria-label",s(1,2,"form.button_close")),e(2),C(" ",s(3,4,"form.button_close")," "))}function we(r,y){if(r&1){let t=M();i(0,"button",25),o(1,"translate"),b("click",function(){B(t);let l=v();return T(l.dismissModal())}),m(2),o(3,"translate"),n()}r&2&&(u("aria-label",s(1,2,"form.button_close")),e(2),C(" ",s(3,4,"form.button_close")," "))}function Ce(r,y){if(r&1){let t=M();i(0,"button",26),b("click",function(){B(t);let l=v();return T(l.enable2fa())}),m(1),o(2,"translate"),n()}if(r&2){let t=v();f("disabled",t.formGroup.invalid),e(),C(" ",s(2,2,"form.button_enable")," ")}}var oe=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);user;timeDiffError=null;otpString;formGroup=new V({code:new w("",[x.required,x.minLength(6),x.maxLength(6)])});ngOnInit(){this.$api.post("/users/otp/setup",{}).subscribe({next:t=>{this.checkTimeDiff(t.timestamp),this.timeDiffError||(this.otpString=t.otpauth)},error:t=>{this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}enable2fa(){this.$api.post("/users/otp/activate",this.formGroup.value).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.setup_2fa_enabled_success"),this.$translate.instant("toast.title_success")),this.$activeModal.close()},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(t){let a=(0,ae.default)(t).diff(new Date,"millisecond");a<-5e3||a>5e3?this.timeDiffError=a:this.timeDiffError=null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:24,vars:15,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],["type","error",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fw-bold","mb-1"],[1,"mb-0"],[1,"list-group-item","text-center"],[1,"text-center","w-100","d-flex","justify-content-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control","custom-input",3,"formControl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),n(),i(5,"button",3),o(6,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(7,"div",4)(8,"div",5),d(9,"i",6),n(),i(10,"ul",7)(11,"li"),m(12),o(13,"translate"),n(),h(14,be,3,3,"li"),n(),h(15,_e,7,10,"ngb-alert",8),h(16,ve,10,5,"ul",9),n(),i(17,"div",10)(18,"div",11),h(19,xe,4,6,"button",12),n(),i(20,"div",13),h(21,we,4,6,"button",12),n(),i(22,"div",14),h(23,Ce,3,4,"button",15),n()()()),a&2&&(e(3),p(s(4,9,"users.setup_2fa")),e(2),u("aria-label",s(6,11,"form.button_close")),e(7),p(s(13,13,"users.setup_2fa_warning")),e(2),g(l.timeDiffError?-1:14),e(),g(l.timeDiffError?15:-1),e(),g(l.timeDiffError?-1:16),e(3),g(l.timeDiffError?-1:19),e(2),g(l.timeDiffError?21:-1),e(2),g(l.timeDiffError?-1:23))},dependencies:[O,ne,N,I,F,ee,A,q,$],encapsulation:2})}return r})();var se=r=>({"is-invalid":r}),le=(()=>{class r{$activeModal=c(G);$api=c(k);$toastr=c(U);$translate=c(S);form=new V({username:new w("",[x.required]),name:new w("",[x.required]),password:new w("",[x.compose([x.required,x.minLength(4)])]),passwordConfirm:new w("",[x.required]),admin:new w(!0)},this.matchPassword);onSubmit({value:t}){this.$api.post("/users",t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_added_new_user"),this.$translate.instant("toast.title_success"))},error:a=>{this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let a=t.get("password").value,l=t.get("passwordConfirm").value;if(a!==l)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],decls:58,vars:50,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-user-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input",3,"ngClass"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input",3,"ngClass"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"form",1),b("ngSubmit",function(){return l.onSubmit(l.form)}),i(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),n(),i(6,"button",4),o(7,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(8,"div",5)(9,"div",6),d(10,"i",7),n(),i(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),n(),i(16,"div",11),d(17,"input",12),o(18,"translate"),n()(),i(19,"li",9)(20,"label",13),m(21),o(22,"translate"),n(),i(23,"div",11),d(24,"input",14),o(25,"translate"),n()(),i(26,"li",9)(27,"label",15),m(28),o(29,"translate"),n(),i(30,"div",11),d(31,"input",16),o(32,"translate"),n()(),i(33,"li",9)(34,"label",17),m(35),o(36,"translate"),n(),i(37,"div",11),d(38,"input",18),o(39,"translate"),n()(),i(40,"li",19)(41,"span",20),m(42),o(43,"translate"),n(),i(44,"div",21),d(45,"input",22),o(46,"translate"),d(47,"label",23),n()()()(),i(48,"div",24)(49,"div",20)(50,"button",25),b("click",function(){return l.dismissModal()}),m(51),o(52,"translate"),n()(),d(53,"div",26),i(54,"div",27)(55,"button",28),m(56),o(57,"translate"),n()()()()()),a&2&&(e(),f("formGroup",l.form),e(3),p(s(5,18,"users.title_add_user")),e(2),u("aria-label",s(7,20,"form.button_close")),e(8),p(s(15,22,"users.label_username")),e(3),u("aria-label",s(18,24,"users.label_username")),e(4),p(s(22,26,"users.label_full_name")),e(3),u("aria-label",s(25,28,"users.label_full_name")),e(4),p(s(29,30,"users.label_password")),e(3),f("ngClass",D(46,se,l.form.controls.password.dirty&&l.form.controls.password.errors)),u("aria-label",s(32,32,"users.label_password")),e(4),p(s(36,34,"users.label_confirm_password")),e(3),f("ngClass",D(48,se,l.form.controls.passwordConfirm.dirty&&l.form.controls.passwordConfirm.errors)),u("aria-label",s(39,36,"users.label_confirm_password")),e(4),p(s(43,38,"users.label_admin_user")),e(3),u("aria-label",s(46,40,"users.label_admin_user")),e(6),C(" ",s(52,42,"form.button_close")," "),e(4),f("disabled",!l.form.valid),e(),C(" ",s(57,44,"form.button_save")," "))},dependencies:[N,z,I,F,P,A,R,L,j,$],encapsulation:2})}return r})();var me=r=>({"is-invalid":r});function he(r,y){if(r&1&&(i(0,"li",9)(1,"label",27),m(2),o(3,"translate"),n(),i(4,"div",11),d(5,"input",28),o(6,"translate"),n()()),r&2){let t=v();e(2),p(s(3,3,"users.label_confirm_password")),e(3),f("ngClass",D(7,me,t.form.controls.passwordConfirm.dirty&&t.form.controls.passwordConfirm.errors)),u("aria-label",s(6,5,"users.label_confirm_password"))}}var de=(()=>{class r{$activeModal=c(G);$api=c(k);$auth=c(Q);$toastr=c(U);$translate=c(S);user;isCurrentUser=!1;form=new V({username:new w("",[x.required]),name:new w("",[x.required]),password:new w(""),passwordConfirm:new w(""),admin:new w(!0)},this.matchPassword);ngOnInit(){this.isCurrentUser=this.$auth.user.username===this.user.username,this.form.patchValue(this.user)}onSubmit({value:t}){this.$api.patch(`/users/${this.user.id}`,t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_updated_user"),this.$translate.instant("toast.title_success")),this.isCurrentUser&&t.username!==this.$auth.user.username&&this.$auth.logout()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let a=t.get("password").value,l=t.get("passwordConfirm").value;if(a!==l)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:52,vars:42,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-user-pen","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input",3,"ngClass"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input",3,"ngClass"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"form",1),b("ngSubmit",function(){return l.onSubmit(l.form)}),i(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),n(),i(6,"button",4),o(7,"translate"),b("click",function(){return l.dismissModal()}),n()(),i(8,"div",5)(9,"div",6),d(10,"i",7),n(),i(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),n(),i(16,"div",11),d(17,"input",12),o(18,"translate"),n()(),i(19,"li",9)(20,"label",13),m(21),o(22,"translate"),n(),i(23,"div",11),d(24,"input",14),o(25,"translate"),n()(),i(26,"li",9)(27,"label",15),m(28),o(29,"translate"),n(),i(30,"div",11),d(31,"input",16),o(32,"translate"),n()(),h(33,he,7,9,"li",9),i(34,"li",17)(35,"span",18),m(36),o(37,"translate"),n(),i(38,"div",19),d(39,"input",20),o(40,"translate"),d(41,"label",21),n()()()(),i(42,"div",22)(43,"div",18)(44,"button",23),b("click",function(){return l.dismissModal()}),m(45),o(46,"translate"),n()(),d(47,"div",24),i(48,"div",25)(49,"button",26),m(50),o(51,"translate"),n()()()()()),a&2&&(e(),f("formGroup",l.form),e(3),p(s(5,16,"users.title_edit_user")),e(2),u("aria-label",s(7,18,"form.button_close")),e(8),p(s(15,20,"users.label_username")),e(3),u("aria-label",s(18,22,"users.label_username")),e(4),p(s(22,24,"users.label_full_name")),e(3),u("aria-label",s(25,26,"users.label_full_name")),e(4),p(s(29,28,"users.label_new_password")),e(3),f("ngClass",D(40,me,l.form.controls.password.dirty&&l.form.controls.password.errors)),u("aria-label",s(32,30,"users.label_new_password")),e(2),g(l.form.controls.password.value?33:-1),e(3),p(s(37,32,"users.label_admin_user")),e(3),u("aria-label",s(40,34,"users.label_admin_user")),e(6),C(" ",s(46,36,"form.button_close")," "),e(4),f("disabled",!l.form.valid),e(),C(" ",s(51,38,"form.button_save")," "))},dependencies:[N,z,I,Z,F,P,A,R,L,j,$],encapsulation:2})}return r})();function ge(r,y){if(r&1){let t=M();i(0,"button",21),b("click",function(){B(t);let l=v().$implicit,_=v();return T(_.setup2fa(l))}),m(1),o(2,"translate"),n()}r&2&&(e(),p(s(2,1,"users.setup_2fa")))}function ye(r,y){if(r&1){let t=M();i(0,"button",17),b("click",function(){B(t);let l=v().$implicit,_=v();return T(_.disable2fa(l))}),m(1),o(2,"translate"),n()}r&2&&(e(),C(" ",s(2,1,"users.setup_2fa_disable")," "))}function Ee(r,y){if(r&1){let t=M();i(0,"div",7)(1,"div",8)(2,"div",9)(3,"div",10)(4,"span",11),d(5,"h4",12)(6,"h5",13),n()(),i(7,"div",14),h(8,ge,3,3,"button",15),h(9,ye,3,3,"button",16),i(10,"div")(11,"button",17),o(12,"translate"),b("click",function(){let l=B(t).$implicit,_=v();return T(_.openEditUser(l))}),d(13,"i",18),n(),i(14,"button",19),o(15,"translate"),b("click",function(){let l=B(t).$implicit,_=v();return T(_.deleteUser(l.id))}),d(16,"i",20),n()()()()()()}if(r&2){let t=y.$implicit,a=v();e(5),f("innerText",t.name),e(),f("innerText",t.username),e(2),g(a.username===t.username&&!t.otpActive?8:-1),e(),g(a.username===t.username&&t.otpActive?9:-1),e(2),u("aria-label",s(12,7,"form.button_edit")),e(3),f("disabled",a.username===t.username),u("aria-label",s(15,9,"form.button_delete"))}}var ht=(()=>{class r{$api=c(k);$auth=c(Q);$modal=c(te);$route=c(ie);$toastr=c(U);$translate=c(S);homebridgeUsers;username=this.$auth.user.username;ngOnInit(){this.$route.data.subscribe(t=>{this.homebridgeUsers=t.homebridgeUsers})}reloadUsers(){return this.$api.get("/users").subscribe(t=>{this.homebridgeUsers=t})}openAddNewUser(){this.$modal.open(le,{size:"lg",backdrop:"static"}).result.finally(()=>{this.reloadUsers()})}openEditUser(t){let a=this.$modal.open(de,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}deleteUser(t){this.$api.delete(`/users/${t}`).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.toast_user_deleted"),this.$translate.instant("toast.title_success")),this.reloadUsers()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_delete_user"),this.$translate.instant("toast.title_error"))}})}setup2fa(t){let a=this.$modal.open(oe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}disable2fa(t){let a=this.$modal.open(re,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=E({type:r,selectors:[["app-users"]],decls:12,vars:6,consts:[[1,"row","mb-3"],[1,"col-9"],[1,"primary-text","m-0"],[1,"col-3","text-end"],[1,"btn","btn-elegant","waves-effect","m-0",3,"click"],[1,"fas","fa-fw","fa-user-plus"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[3,"innerText"],[1,"small","text-truncate","primary-text",3,"innerText"],[1,"d-flex","flex-row","justify-content-between"],[1,"btn","btn-primary","m-0"],[1,"btn","btn-elegant","m-0"],[1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-user-pen"],[1,"btn","btn-danger","m-0","ms-2",3,"click","disabled"],[1,"fas","fa-fw","fa-trash"],[1,"btn","btn-primary","m-0",3,"click"]],template:function(a,l){a&1&&(i(0,"div",0)(1,"div",1)(2,"h3",2),m(3),o(4,"translate"),n()(),i(5,"div",3)(6,"button",4),o(7,"translate"),b("click",function(){return l.openAddNewUser()}),d(8,"i",5),n()()(),i(9,"div",6),W(10,Ee,17,11,"div",7,K),n()),a&2&&(e(3),p(s(4,2,"users.title_users")),e(3),u("aria-label",s(7,4,"users.button_add_user")),e(4),X(l.homebridgeUsers))},dependencies:[$],encapsulation:2})}return r})();export{ht as UsersComponent};
@@ -1 +1 @@
1
- import{g as i}from"./chunk-X7PVYZAE.js";import"./chunk-SRP6QX5M.js";import{ha as t,nb as e}from"./chunk-SKZUTSHE.js";var d=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"docker",loadChildren:()=>import("./chunk-HELQ6C4L.js").then(o=>o.DockerModule)},{path:"linux",loadChildren:()=>import("./chunk-EV45AMNT.js").then(o=>o.LinuxModule)},{path:"terminal",loadChildren:()=>import("./chunk-HSWLFIAJ.js").then(o=>o.TerminalModule)}],l=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[i.forChild(d),i]})}return o})();var p=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[l]})}return o})();export{p as PlatformToolsModule};
1
+ import{g as i}from"./chunk-X7PVYZAE.js";import"./chunk-SRP6QX5M.js";import{ha as t,nb as e}from"./chunk-SKZUTSHE.js";var d=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"docker",loadChildren:()=>import("./chunk-TFUWAEXV.js").then(o=>o.DockerModule)},{path:"linux",loadChildren:()=>import("./chunk-XCMFVJ2O.js").then(o=>o.LinuxModule)},{path:"terminal",loadChildren:()=>import("./chunk-5PJBGU6S.js").then(o=>o.TerminalModule)}],l=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[i.forChild(d),i]})}return o})();var p=(()=>{class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[l]})}return o})();export{p as PlatformToolsModule};
@@ -1 +1 @@
1
- import{t as k}from"./chunk-CF2ZN7LY.js";import"./chunk-T252YJXA.js";import{d as P}from"./chunk-X7PVYZAE.js";import{b as I}from"./chunk-BU6UAZVK.js";import{k as $,n as O}from"./chunk-HZUGXGIE.js";import{a as y,b as T}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as a,Cc as s,Ib as f,Jb as v,Ob as h,Pb as o,Qb as r,Rb as C,Vb as w,Yb as m,Zb as b,ab as i,kc as l,la as c,lc as S,mb as g,mc as d,ra as u,sa as _}from"./chunk-SKZUTSHE.js";function E(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.restartServer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.linux.label_restart_server")," "))}function H(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.shutdownServer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.linux.label_shutdown_server")," "))}function B(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.dockerRestartContainer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.docker.restart_container")," "))}var G=(()=>{class t{$api=c(O);$router=c(P);$settings=c(I);$toastr=c($);$translate=c(y);canShutdownRestartHost=this.$settings.env.canShutdownRestartHost;runningInDocker=this.$settings.env.runningInDocker;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:n=>{console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error"))}})}restartServer(){this.$router.navigate(["/platform-tools/linux/restart-server"])}shutdownServer(){this.$router.navigate(["/platform-tools/linux/shutdown-server"])}dockerRestartContainer(){this.$router.navigate(["/platform-tools/docker/restart-container"])}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=g({type:t,selectors:[["ng-component"]],decls:19,vars:15,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-fw","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","openDelay","150","triggers","hover",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click","ngbTooltip"]],template:function(p,e){p&1&&(o(0,"div",0)(1,"h3",1),l(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 e.restartHomebridge()}),l(9),a(10,"translate"),r()(),o(11,"p",5)(12,"button",7),a(13,"translate"),m("click",function(){return e.restartHomebridgeService()}),l(14),a(15,"translate"),r()(),f(16,E,4,3,"p",5),f(17,H,4,3,"p",5),f(18,B,4,3,"p",5),r()),p&2&&(i(2),S(s(3,7,"menu.restart.title")),i(7),d(" ",s(10,9,"menu.hbrestart.confirm_hb")," "),i(3),h("ngbTooltip",s(13,11,"reset.force_restart_hb_help_text")),i(2),d(" ",s(15,13,"menu.hbrestart.confirm_ui")," "),i(2),v(e.canShutdownRestartHost?16:-1),i(),v(e.canShutdownRestartHost?17:-1),i(),v(e.runningInDocker?18:-1))},dependencies:[k,T],encapsulation:2})}return t})();export{G as PowerOptionsComponent};
1
+ import{t as k}from"./chunk-CF2ZN7LY.js";import"./chunk-T252YJXA.js";import{d as P}from"./chunk-X7PVYZAE.js";import{b as I}from"./chunk-YCQ4FEJS.js";import{k as $,n as O}from"./chunk-5S7TFWYQ.js";import{a as y,b as T}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as a,Cc as s,Ib as f,Jb as v,Ob as h,Pb as o,Qb as r,Rb as C,Vb as w,Yb as m,Zb as b,ab as i,kc as l,la as c,lc as S,mb as g,mc as d,ra as u,sa as _}from"./chunk-SKZUTSHE.js";function E(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.restartServer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.linux.label_restart_server")," "))}function H(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.shutdownServer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.linux.label_shutdown_server")," "))}function B(t,x){if(t&1){let n=w();o(0,"p",5)(1,"button",6),m("click",function(){u(n);let e=b();return _(e.dockerRestartContainer())}),l(2),a(3,"translate"),r()()}t&2&&(i(2),d(" ",s(3,1,"menu.docker.restart_container")," "))}var G=(()=>{class t{$api=c(O);$router=c(P);$settings=c(I);$toastr=c($);$translate=c(y);canShutdownRestartHost=this.$settings.env.canShutdownRestartHost;runningInDocker=this.$settings.env.runningInDocker;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:n=>{console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error"))}})}restartServer(){this.$router.navigate(["/platform-tools/linux/restart-server"])}shutdownServer(){this.$router.navigate(["/platform-tools/linux/shutdown-server"])}dockerRestartContainer(){this.$router.navigate(["/platform-tools/docker/restart-container"])}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=g({type:t,selectors:[["ng-component"]],decls:19,vars:15,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-fw","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","openDelay","150","triggers","hover",1,"btn","btn-primary","p-3","my-0",2,"width","85%",3,"click","ngbTooltip"]],template:function(p,e){p&1&&(o(0,"div",0)(1,"h3",1),l(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 e.restartHomebridge()}),l(9),a(10,"translate"),r()(),o(11,"p",5)(12,"button",7),a(13,"translate"),m("click",function(){return e.restartHomebridgeService()}),l(14),a(15,"translate"),r()(),f(16,E,4,3,"p",5),f(17,H,4,3,"p",5),f(18,B,4,3,"p",5),r()),p&2&&(i(2),S(s(3,7,"menu.restart.title")),i(7),d(" ",s(10,9,"menu.hbrestart.confirm_hb")," "),i(3),h("ngbTooltip",s(13,11,"reset.force_restart_hb_help_text")),i(2),d(" ",s(15,13,"menu.hbrestart.confirm_ui")," "),i(2),v(e.canShutdownRestartHost?16:-1),i(),v(e.canShutdownRestartHost?17:-1),i(),v(e.runningInDocker?18:-1))},dependencies:[k,T],encapsulation:2})}return t})();export{G as PowerOptionsComponent};