homebridge-config-ui-x 5.0.0-beta.0 → 5.0.0-beta.10

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 (150) hide show
  1. package/CHANGELOG.md +19 -5
  2. package/README.md +6 -8
  3. package/dist/bin/fork.js +17 -7
  4. package/dist/bin/fork.js.map +1 -1
  5. package/dist/bin/hb-service.js +17 -7
  6. package/dist/bin/hb-service.js.map +1 -1
  7. package/dist/bin/platforms/darwin.js +8 -1
  8. package/dist/bin/platforms/darwin.js.map +1 -1
  9. package/dist/bin/standalone.js +17 -7
  10. package/dist/bin/standalone.js.map +1 -1
  11. package/dist/index.js +17 -7
  12. package/dist/index.js.map +1 -1
  13. package/dist/modules/config-editor/config-editor.controller.d.ts +1 -1
  14. package/dist/modules/config-editor/config-editor.service.d.ts +1 -1
  15. package/package.json +6 -7
  16. package/public/3rdpartylicenses.txt +551 -551
  17. package/public/assets/plugin-ui-utils/ui.js +38 -19
  18. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  19. package/public/chunk-26EWO6RG.js +1 -0
  20. package/public/chunk-3IX3CLER.js +1 -0
  21. package/public/chunk-3ZJBUXFZ.js +20 -0
  22. package/public/chunk-4DDKOVAZ.js +1 -0
  23. package/public/chunk-4IGKXTSE.js +6 -0
  24. package/public/chunk-4PAHKWW6.js +1 -0
  25. package/public/chunk-4SMDEHVB.js +1 -0
  26. package/public/chunk-4X4WE4X3.js +1 -0
  27. package/public/chunk-57O4WFHV.js +1 -0
  28. package/public/chunk-5LGVFGMP.js +1 -0
  29. package/public/chunk-6FLZSYP2.js +1 -0
  30. package/public/chunk-6HVQYFKM.js +1 -0
  31. package/public/chunk-6I5NOTAK.js +5 -0
  32. package/public/chunk-6TCHCTXZ.js +1 -0
  33. package/public/chunk-7EUQWCP5.js +2 -0
  34. package/public/chunk-7RD3ANA6.js +1 -0
  35. package/public/chunk-AEZNVJNA.js +1 -0
  36. package/public/{chunk-THFLPY67.js → chunk-BKUGARB4.js} +1 -1
  37. package/public/chunk-BPMSJ2VF.js +1 -0
  38. package/public/chunk-BSD4FVOE.js +4 -0
  39. package/public/chunk-C3OLDXDF.js +1 -0
  40. package/public/{chunk-GNQUXZMN.js → chunk-CCUID66K.js} +1 -1
  41. package/public/chunk-CKJ7WSCY.js +1 -0
  42. package/public/chunk-DW3VS3AJ.js +1 -0
  43. package/public/chunk-EA5J2VEJ.js +1 -0
  44. package/public/chunk-FBHAKNKK.js +1 -0
  45. package/public/chunk-FTBDA6VV.js +1 -0
  46. package/public/chunk-FX2G7EKQ.js +1 -0
  47. package/public/chunk-GLXDWUP7.js +1 -0
  48. package/public/chunk-GW3B2BTG.js +1 -0
  49. package/public/chunk-GZS6TFES.js +1 -0
  50. package/public/chunk-HFUBGIQF.js +8 -0
  51. package/public/chunk-HJMBSNDE.js +1 -0
  52. package/public/chunk-HSJSWZHD.js +1 -0
  53. package/public/chunk-J2ACJ2SJ.js +1 -0
  54. package/public/chunk-J2GVB2HH.js +1 -0
  55. package/public/chunk-JGA3UJQJ.js +1 -0
  56. package/public/chunk-JLZHU54T.js +23 -0
  57. package/public/chunk-JTBW4DGJ.js +1 -0
  58. package/public/chunk-JZZQRLNW.js +1 -0
  59. package/public/chunk-K2S5XQH3.js +1 -0
  60. package/public/chunk-KQJ7ONUG.js +1 -0
  61. package/public/chunk-L376ASVB.js +1 -0
  62. package/public/chunk-MR5BBXDA.js +1 -0
  63. package/public/chunk-NW6AFAD7.js +1 -0
  64. package/public/chunk-NZNNTHFQ.js +1 -0
  65. package/public/chunk-ORPWYWCL.js +5 -0
  66. package/public/chunk-P7LFHZOY.js +1 -0
  67. package/public/chunk-PIAD3JIG.js +14 -0
  68. package/public/chunk-PLAUCLPN.js +1 -0
  69. package/public/chunk-Q3KYLUJV.js +1 -0
  70. package/public/chunk-Q5NJBBHF.js +1 -0
  71. package/public/chunk-Q63MEYUW.js +1 -0
  72. package/public/chunk-QE7DO6J3.js +8 -0
  73. package/public/chunk-QHPDGSZ6.js +1 -0
  74. package/public/chunk-RVIWX6PZ.js +1 -0
  75. package/public/chunk-S522GW34.js +1 -0
  76. package/public/chunk-SCN3MDZ7.js +1 -0
  77. package/public/chunk-SQXGCWUT.js +1 -0
  78. package/public/chunk-TCSXGQNF.js +1 -0
  79. package/public/chunk-TGK4ZIKS.js +1 -0
  80. package/public/chunk-TIVE3PVO.js +1 -0
  81. package/public/chunk-TR6DJBRN.js +1 -0
  82. package/public/chunk-TXOB7R5K.js +7 -0
  83. package/public/chunk-UEDIA63L.js +1 -0
  84. package/public/chunk-UG5DK2RQ.js +2 -0
  85. package/public/chunk-VHDU5NZU.js +1 -0
  86. package/public/chunk-VHO4CUXG.js +1 -0
  87. package/public/chunk-VWTJUCNR.js +1 -0
  88. package/public/chunk-WALRIIUN.js +1 -0
  89. package/public/chunk-WBI25HR2.js +1 -0
  90. package/public/chunk-WHJOLAED.js +1 -0
  91. package/public/chunk-WHJSVGC7.js +1 -0
  92. package/public/chunk-WJD5UZP6.js +32 -0
  93. package/public/{chunk-6QEO3BTW.js → chunk-WNWWUCCZ.js} +14 -14
  94. package/public/chunk-WZ5X6FKY.js +1 -0
  95. package/public/chunk-Y6JL2J5G.js +1 -0
  96. package/public/chunk-YPX7RY6A.js +1 -0
  97. package/public/chunk-YZUUWSDB.js +1 -0
  98. package/public/chunk-YZVODNRC.js +1 -0
  99. package/public/chunk-ZT23DWNL.js +1 -0
  100. package/public/index.html +2 -2
  101. package/public/main-T37JUFDS.js +1 -0
  102. package/public/media/fa-brands-400-6PJPV6JM.woff2 +0 -0
  103. package/public/media/{fa-brands-400-CNBICIQT.ttf → fa-brands-400-KOKGDU7E.ttf} +0 -0
  104. package/public/media/{fa-regular-400-2FI4ICQD.ttf → fa-regular-400-IPMAEX5Y.ttf} +0 -0
  105. package/public/media/fa-regular-400-OHB6J4OK.woff2 +0 -0
  106. package/public/media/fa-solid-900-ABTK6BNK.woff2 +0 -0
  107. package/public/media/{fa-solid-900-XVWCCN5V.ttf → fa-solid-900-SRFFQLRM.ttf} +0 -0
  108. package/public/{polyfills-CE2SNIQF.js → polyfills-C6JHVXJJ.js} +2 -2
  109. package/public/prerendered-routes.json +3 -0
  110. package/public/styles-EG5MFQEM.css +1 -0
  111. package/public/chunk-2PWJQ3JG.js +0 -1
  112. package/public/chunk-2XSSTW65.js +0 -1
  113. package/public/chunk-3MMTBP3D.js +0 -1
  114. package/public/chunk-3PUISAM4.js +0 -1
  115. package/public/chunk-3SUL4N2K.js +0 -1
  116. package/public/chunk-47MGIKRX.js +0 -20
  117. package/public/chunk-4R6MSI5I.js +0 -14
  118. package/public/chunk-6SZTMLNK.js +0 -1
  119. package/public/chunk-6T267MJT.js +0 -8
  120. package/public/chunk-B6C32ZRK.js +0 -1
  121. package/public/chunk-BROUJ7PT.js +0 -1
  122. package/public/chunk-C4VKSYGU.js +0 -1
  123. package/public/chunk-CKS7IGEQ.js +0 -1
  124. package/public/chunk-CTWXFHBK.js +0 -20
  125. package/public/chunk-DLVT4K74.js +0 -1
  126. package/public/chunk-DPQR4EUP.js +0 -5
  127. package/public/chunk-F22FMU37.js +0 -1
  128. package/public/chunk-GUXB6V7U.js +0 -1
  129. package/public/chunk-HPRZRVV7.js +0 -23
  130. package/public/chunk-HXKR7RPF.js +0 -1
  131. package/public/chunk-IGUSDGD6.js +0 -8
  132. package/public/chunk-JM7QCDMZ.js +0 -1
  133. package/public/chunk-JQO6VAZ5.js +0 -1
  134. package/public/chunk-K5UREZLG.js +0 -20
  135. package/public/chunk-LM3J4EYP.js +0 -1
  136. package/public/chunk-NTTD35IF.js +0 -1
  137. package/public/chunk-PSLVYKAC.js +0 -1
  138. package/public/chunk-Q7MYZYMQ.js +0 -1
  139. package/public/chunk-SI3MSSTT.js +0 -1
  140. package/public/chunk-SJTXTMYT.js +0 -2
  141. package/public/chunk-TBJQ2Y3M.js +0 -1
  142. package/public/chunk-TTLBPD7L.js +0 -1
  143. package/public/chunk-UEBRERJ6.js +0 -1
  144. package/public/chunk-WCDFKYP6.js +0 -5
  145. package/public/chunk-XLAWLJES.js +0 -4
  146. package/public/main-DTWXJAMM.js +0 -6
  147. package/public/media/fa-brands-400-MDS4TU4L.woff2 +0 -0
  148. package/public/media/fa-regular-400-N56QV3DR.woff2 +0 -0
  149. package/public/media/fa-solid-900-Z3HFQTXF.woff2 +0 -0
  150. package/public/styles-7ETWN6DQ.css +0 -1
@@ -1,20 +0,0 @@
1
- import{a as fe}from"./chunk-BROUJ7PT.js";import{a as Ie}from"./chunk-4R6MSI5I.js";import{a as de,b as me,c as pe}from"./chunk-SJTXTMYT.js";import{a as le}from"./chunk-B6C32ZRK.js";import{a as ce}from"./chunk-CKS7IGEQ.js";import{M as ne,N as re,O as ae,Q as se,c as Z,e as ee,l as te,y as ie,z as oe}from"./chunk-WCDFKYP6.js";import{c as k,k as I,m as X}from"./chunk-PSLVYKAC.js";import{a as E,b as P,c as Q}from"./chunk-F22FMU37.js";import{$ as j,$b as W,Ab as J,Ba as F,Ga as x,Ka as C,La as d,Qb as K,Rb as H,Ua as l,Va as c,W as B,Wa as v,X as V,Z as T,Za as w,Zb as U,aa as A,ab as b,bb as p,g as ke,h as r,ha as u,i as M,ia as h,jb as _,kb as $,lb as D,ob as L,pb as q,qb as z,qc as Y,sc as G,t as S,vc as O,wa as s,xa as g,yb as m,zb as f}from"./chunk-IGUSDGD6.js";function Se(o,n){o&1&&(l(0,"div",15),v(1,"i",16),c())}function Ve(o,n){if(o&1){let a=w();l(0,"tr")(1,"td",19),_(2),m(3,"date"),c(),l(4,"td",20)(5,"a",21),b("click",function(){let t=u(a).$implicit,i=p(2);return h(i.restore(t.id))}),_(6),m(7,"translate"),v(8,"i",22),c()()()}if(o&2){let a=n.$implicit;s(2),$(J(3,2,a.timestamp,"medium")),s(4),D(" ",f(7,5,"config.restore.copy_to_editor")," ")}}function je(o,n){if(o&1&&(l(0,"table",17)(1,"tbody"),x(2,Ve,9,7,"tr",18),c()()),o&2){let a=p();s(2),d("ngForOf",a.backupList)}}function Ae(o,n){o&1&&(l(0,"div")(1,"h3",12),_(2),m(3,"translate"),c()()),o&2&&(s(2),$(f(3,1,"config.restore.no_backups")))}function De(o,n){if(o&1){let a=w();l(0,"button",23),m(1,"translate"),b("click",function(){u(a);let t=p();return h(t.deleteAllBackups())}),_(2),m(3,"translate"),c()}o&2&&(C("aria-label",f(1,2,"form.button_remove")),s(2),D(" ",f(3,4,"form.button_remove")," "))}var be=(()=>{let n=class n{constructor(e,t,i,y){r(this,"$activeModal");r(this,"$api");r(this,"$toastr");r(this,"$translate");r(this,"loading",!0);r(this,"backupList",[]);this.$activeModal=e,this.$api=t,this.$toastr=i,this.$translate=y}ngOnInit(){this.$api.get("/config-editor/backups").subscribe({next:e=>{this.loading=!1,this.backupList=e},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}restore(e){return this.$activeModal.close(e)}deleteAllBackups(){return this.$api.delete("/config-editor/backups").subscribe({next:()=>{this.$activeModal.dismiss(),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success"))},error:e=>{console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}};r(n,"\u0275fac",function(t){return new(t||n)(g(ne),g(k),g(I),g(E))}),r(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],decls:22,vars:16,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],["class","text-center primary-text",4,"ngIf"],["class","table table-borderless table-hover table-sm",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button","class","btn btn-danger mr-auto",3,"click",4,"ngIf"],[1,"text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"table","table-borderless","table-hover","table-sm"],[4,"ngFor","ngForOf"],[1,"w-100"],["nowrap",""],[1,"card-link",3,"click"],[1,"fas","fa-fw","fa-arrow-right"],["type","button",1,"btn","btn-danger","mr-auto",3,"click"]],template:function(t,i){t&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),_(3),m(4,"translate"),c(),l(5,"button",3),m(6,"translate"),b("click",function(){return i.$activeModal.dismiss("Dismiss")}),l(7,"span",4),_(8,"\xD7"),c()()(),l(9,"div",5),x(10,Se,2,0,"div",6)(11,je,3,1,"table",7)(12,Ae,4,3,"div",8),c(),l(13,"div",9)(14,"div",10)(15,"button",11),m(16,"translate"),b("click",function(){return i.$activeModal.dismiss("Dismiss")}),_(17),m(18,"translate"),c()(),v(19,"div",12),l(20,"div",13),x(21,De,4,6,"button",14),c()()()),t&2&&(s(3),$(f(4,8,"config.restore.title_restore_homebridge_backup")),s(2),C("aria-label",f(6,10,"form.button_close")),s(5),d("ngIf",i.loading),s(),d("ngIf",!i.loading&&i.backupList&&i.backupList.length),s(),d("ngIf",!i.loading&&(!i.backupList||!i.backupList.length)),s(3),C("aria-label",f(16,12,"form.button_close")),s(2),D(" ",f(18,14,"form.button_close")," "),s(4),d("ngIf",!i.loading&&i.backupList.length))},dependencies:[K,H,U,P],encapsulation:2}));let o=n;return o})();var _e=ke(Ie(),1);function Pe(o,n){if(o&1){let a=w();l(0,"button",13),m(1,"translate"),m(2,"translate"),b("click",function(){u(a);let t=p();return h(t.onExportConfig())}),v(3,"i",14),c()}o&2&&(d("ngbTooltip",f(1,2,"form.button_download")),C("aria-label",f(2,4,"form.button_download")))}function Re(o,n){if(o&1){let a=w();l(0,"button",15),m(1,"translate"),m(2,"translate"),b("click",function(){u(a);let t=p();return h(t.onCancelRestore())}),v(3,"i",16),c()}if(o&2){let a=p();d("disabled",a.saveInProgress)("ngbTooltip",f(1,3,"form.button_cancel")),C("aria-label",f(2,5,"form.button_cancel"))}}function Ne(o,n){if(o&1){let a=w();l(0,"button",13),m(1,"translate"),m(2,"translate"),b("click",function(){u(a);let t=p();return h(t.onRestore())}),v(3,"i",17),c()}o&2&&(d("ngbTooltip",f(1,2,"form.button_restore")),C("aria-label",f(2,4,"form.button_restore")))}function Oe(o,n){o&1&&v(0,"i",18)}function Be(o,n){o&1&&v(0,"i",19)}function Fe(o,n){if(o&1){let a=w();l(0,"ngx-monaco-editor",20),b("onInit",function(t){u(a);let i=p();return h(i.onEditorInit(t))})("keydown.control.s",function(t){u(a);let i=p();return t.preventDefault(),h(i.onSave())})("keydown.meta.s",function(t){u(a);let i=p();return t.preventDefault(),h(i.onSave())}),c()}if(o&2){let a=p();d("options",a.editorOptions)("model",a.monacoEditorModel)}}function Le(o,n){if(o&1){let a=w();l(0,"ngx-monaco-diff-editor",21),b("onInit",function(t){u(a);let i=p();return h(i.onInitDiffEditor(t))})("keydown.control.s",function(t){u(a);let i=p();return t.preventDefault(),h(i.onSave())})("keydown.meta.s",function(t){u(a);let i=p();return t.preventDefault(),h(i.onSave())}),c()}if(o&2){let a=p();d("options",a.editorOptions)("originalModel",a.monacoEditorModel)("modifiedModel",a.monacoEditorModel)}}function qe(o,n){if(o&1){let a=w();l(0,"textarea",22),z("ngModelChange",function(t){u(a);let i=p();return q(i.homebridgeConfig,t)||(i.homebridgeConfig=t),h(t)}),_(1," "),c()}if(o&2){let a=p();L("ngModel",a.homebridgeConfig)}}var ye=(()=>{let n=class n{constructor(e,t,i,y,we,Ce,xe,$e,Ee){r(this,"$api");r(this,"$md");r(this,"$modal");r(this,"$monacoEditor");r(this,"$route");r(this,"$renderer");r(this,"$settings");r(this,"$toastr");r(this,"$translate");r(this,"homebridgeConfig");r(this,"originalConfig");r(this,"saveInProgress");r(this,"isMobile",!1);r(this,"monacoEditor");r(this,"editorOptions");r(this,"monacoEditorModel");r(this,"editorDecorations",[]);r(this,"lastHeight");r(this,"visualViewPortEventCallback");this.$api=e,this.$md=t,this.$modal=i,this.$monacoEditor=y,this.$route=we,this.$renderer=Ce,this.$settings=xe,this.$toastr=$e,this.$translate=Ee,this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!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(t=>{this.homebridgeConfig=t.config}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>{this.setMonacoEditorModel()}})}onEditorInit(e){window.editor=e,this.monacoEditor=e,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(e){this.monacoEditor=e.modifiedEditor,e.getModel().original.setValue(this.originalConfig),e.getModel().modified.setValue(this.homebridgeConfig),window.editor=e}onSave(){return M(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 t=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of t)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 e=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(e,null,4),typeof e.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(e.bridge.username)?e.accessories&&!Array.isArray(e.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&!Array.isArray(e.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&Array.isArray(e.platforms)&&!this.validateSection(e.platforms,"platform")||e.accessories&&Array.isArray(e.accessories)&&!this.validateSection(e.accessories,"accessory")||e.plugins&&Array.isArray(e.plugins)&&!this.validatePlugins(e.plugins,"plugins")||e.disabledPlugins&&Array.isArray(e.disabledPlugins)&&!this.validatePlugins(e.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(e),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let t=_e.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(t,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),t}}saveConfig(e){return M(this,null,function*(){try{let t=yield S(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(t,null,4),this.$modal.open(ce,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}onRestore(){this.$modal.open(be,{size:"lg",backdrop:"static"}).result.then(e=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig),this.$api.get(`/config-editor/backups/${e}`).subscribe({next:t=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(t,null,4),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:t=>{console.error(t),this.$toastr.error(t.error.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onExportConfig(){let e=`data:text/json;charset=utf-8,${encodeURIComponent(this.homebridgeConfig)}`,t=document.createElement("a");t.setAttribute("href",e),t.setAttribute("download","config.json"),document.body.appendChild(t),t.click(),t.remove()}onCancelRestore(){this.homebridgeConfig=this.originalConfig,this.originalConfig=""}validateSection(e,t){for(let i of e){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[t])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[t]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(e,t){for(let i of e)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:t}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
2
- `).map(t=>` ${t}`).join(`
3
- `),setTimeout(()=>{let t=this.monacoEditor.getModel().findMatches(e);if(t.length){let i=t[0].range,y=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:y,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(t=>t.uri==="http://homebridge/config.json"))return;let e=monaco.Uri.parse("a://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[e.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:{name:{type:"string",description:`The Homebridge instance name.
4
- This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
5
- You should change this pin if you need to re-pair your instance with HomeKit.
6
- Example: 0E:89:49:64:91:86`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",description:`The port Homebridge listens on.
7
- If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
8
- This is used when pairing Homebridge to HomeKit.
9
- Example: 630-27-655`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",description:"The bridge manufacturer to be displayed in HomeKit"},firmwareRevision:{type:"string",description:"The bridge firmware version to be displayed in HomeKit"},model:{type:"string",description:"The bridge model to be displayed in HomeKit"},bind:{description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
10
-
11
- Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:"Network Interface name that Homebridge should bind to."}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",properties:{interface:{type:"string",description:`The interface or IP address of the interface you want Homebridge to listen on. This is useful if your server has multiple interfaces.
12
-
13
- Depreciated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",description:"Set to `false` to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},plugins:{type:"array",description:"An array of plugins that should be selectively enabled. Remove this array to enable all plugins.",items:{type:"string",description:`The full plugin npm package name.
14
- Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
15
-
16
- Requires Homebridge v1.3 or later.`,items:{type:"string",description:`The full plugin npm package name.
17
- Example: homebridge-dummy`},default:[]},ports:{type:"object",description:"The range of ports that should be used for certain accessories like cameras and TVs",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534},end:{type:"number",default:52150,minimum:1025,maximum:65534}},default:{start:52100,end:52150}},platforms:{type:"array",description:`Any plugin that exposes a platform should have it's config entered in this array.
18
- Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],properties:{platform:{type:"string",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",description:"The name of the platform."}}},{type:"object",properties:{platform:{type:"string",description:`Homebridge UI platform name must be set to "config".
19
- Do Not Change!`,oneOf:[{enum:"config"}]},name:{type:"string",description:"The name used in the Homebridge log."}}}]}},accessories:{type:"array",description:`Any plugin that exposes an accessory should have it's config entered in this array.
20
- Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],properties:{accessory:{type:"string",description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",description:"The name of the accessory."}}}}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}ngOnDestroy(){let e=document.querySelector(".content");this.$renderer.removeStyle(e,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose()}};r(n,"\u0275fac",function(t){return new(t||n)(g(k),g(le),g(re),g(fe),g(Y),g(F),g(X),g(I),g(E))}),r(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],decls:18,vars:18,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-right"],["class","btn btn-elegant waves-effect my-0","container","body","placement","bottom","openDelay","150","triggers","hover",3,"ngbTooltip","click",4,"ngIf"],["class","btn btn-danger waves-effect my-0","container","body","placement","bottom","openDelay","150","triggers","hover",3,"disabled","ngbTooltip","click",4,"ngIf"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","mr-0",3,"click","disabled","ngbTooltip"],["class","fas fa-fw fa-floppy-disk",4,"ngIf"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],["class","flex-grow-1 h-100 w-100 mt-3 mb-0",3,"options","model","onInit","keydown.control.s","keydown.meta.s",4,"ngIf"],["class","flex-grow-1 h-100 w-100 mt-3 mb-0",3,"options","originalModel","modifiedModel","onInit","keydown.control.s","keydown.meta.s",4,"ngIf"],["wrap","off","class","hb-plain-text-editor align-self-end h-100 w-100 my-3","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",3,"ngModel","ngModelChange",4,"ngIf"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0",3,"click","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-times"],[1,"fas","fa-fw","fa-history"],[1,"fas","fa-fw","fa-floppy-disk"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(t,i){t&1&&(l(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),_(4),m(5,"translate"),c()(),l(6,"div",4),x(7,Pe,4,6,"button",5)(8,Re,4,7,"button",6)(9,Ne,4,6,"button",5),l(10,"button",7),m(11,"translate"),m(12,"translate"),b("click",function(){return i.onSave()}),x(13,Oe,1,0,"i",8)(14,Be,1,0,"i",9),c()()(),x(15,Fe,1,2,"ngx-monaco-editor",10)(16,Le,1,3,"ngx-monaco-diff-editor",11)(17,qe,2,1,"textarea",12),c()),t&2&&(s(4),$(f(5,12,"menu.config_json_editor")),s(3),d("ngIf",!i.originalConfig),s(),d("ngIf",i.originalConfig),s(),d("ngIf",!i.originalConfig),s(),d("disabled",i.saveInProgress)("ngbTooltip",f(11,14,"form.button_save")),C("aria-label",f(12,16,"form.button_save")),s(3),d("ngIf",!i.saveInProgress),s(),d("ngIf",i.saveInProgress),s(),d("ngIf",!i.isMobile&&!i.originalConfig),s(),d("ngIf",!i.isMobile&&i.originalConfig),s(),d("ngIf",i.isMobile))},dependencies:[H,Z,ee,te,de,me,ae,P],encapsulation:2}));let o=n;return o})();var N=(()=>{let n=class n{constructor(e,t,i,y){r(this,"$api");r(this,"$router");r(this,"$toastr");r(this,"$translate");this.$api=e,this.$router=t,this.$toastr=i,this.$translate=y}resolve(){return M(this,null,function*(){try{let e=yield S(this.$api.get("/config-editor"));return JSON.stringify(e,null,4)}catch(e){console.error(e),this.$toastr.error(e.message,this.$translate.instant("toast.title_error")),this.$router.navigate(["/"])}})}};r(n,"\u0275fac",function(t){return new(t||n)(T(k),T(G),T(I),T(E))}),r(n,"\u0275prov",B({token:n,factory:n.\u0275fac}));let o=n;return o})();var ze=[{path:"",component:ye,resolve:{config:N}}],ve=(()=>{let n=class n{};r(n,"\u0275fac",function(t){return new(t||n)}),r(n,"\u0275mod",A({type:n})),r(n,"\u0275inj",V({imports:[O.forChild(ze),O]}));let o=n;return o})();var Ct=(()=>{let n=class n{};r(n,"\u0275fac",function(t){return new(t||n)}),r(n,"\u0275mod",A({type:n})),r(n,"\u0275inj",V({providers:[N],imports:[W,ie,oe,pe,se,Q.forChild(),ve]}));let o=n;return o})();export{Ct as ConfigEditorModule};
@@ -1 +0,0 @@
1
- import{c as h}from"./chunk-TTLBPD7L.js";import{k as u}from"./chunk-PSLVYKAC.js";import{a as c}from"./chunk-F22FMU37.js";import{W as o,Z as i,h as r,sc as n}from"./chunk-IGUSDGD6.js";var I=(()=>{let t=class t{constructor(s,a,$,f){r(this,"$auth");r(this,"$router");r(this,"$translate");r(this,"$toastr");this.$auth=s,this.$router=a,this.$translate=$,this.$toastr=f}canActivate(){return this.$auth.user&&this.$auth.user.admin?!0:(this.$toastr.error(this.$translate.instant("toast.no_auth"),this.$translate.instant("toast.title_error")),this.$router.navigate(["/"]),!1)}};r(t,"\u0275fac",function(a){return new(a||t)(i(h),i(n),i(c),i(u))}),r(t,"\u0275prov",o({token:t,factory:t.\u0275fac,providedIn:"root"}));let e=t;return e})();export{I as a};
@@ -1 +0,0 @@
1
- import{a as be}from"./chunk-LM3J4EYP.js";import{a as ne}from"./chunk-Q7MYZYMQ.js";import{d as Pe}from"./chunk-CTWXFHBK.js";import"./chunk-4R6MSI5I.js";import"./chunk-SJTXTMYT.js";import"./chunk-6QEO3BTW.js";import"./chunk-B6C32ZRK.js";import{b as Xe}from"./chunk-6T267MJT.js";import"./chunk-GNQUXZMN.js";import"./chunk-THFLPY67.js";import"./chunk-C4VKSYGU.js";import{d as je}from"./chunk-47MGIKRX.js";import{a as Ve}from"./chunk-CKS7IGEQ.js";import"./chunk-JM7QCDMZ.js";import"./chunk-TTLBPD7L.js";import{G as R,M as V,N as G,O as Fe,Q as De,b as ee,c as he,e as te,f as xe,g as se,j as H,k as Se,l as ie,m as ke,n as ye,o as Ce,p as we,q as Ie,r as Be,s as Ee,t as $e,u as Te,v as Me,y as Ae,z as Ne}from"./chunk-WCDFKYP6.js";import{c as F,k as D,m as ve}from"./chunk-PSLVYKAC.js";import{a as N,b as $,c as fe}from"./chunk-F22FMU37.js";import{$ as E,$b as ue,Ab as z,Ga as k,H as ae,Ka as v,La as m,Pb as O,Qb as j,Rb as A,Ua as t,Va as i,Wa as g,X as Y,Xb as J,Za as w,Zb as me,aa as Z,ab as b,bb as h,g as Qe,h as u,ha as y,i as B,ia as C,jb as a,kb as _,lb as f,mb as P,ob as pe,pb as ce,qb as de,sc as ge,t as T,ta as oe,tc as _e,ub as q,vb as M,vc as re,wa as e,xa as S,yb as r,zb as s}from"./chunk-IGUSDGD6.js";var le=Qe(Xe(),1);var Ye=(n,c)=>({"fa-download":n,"fa-cog fa-spin":c}),Ze=n=>({backupTime:n,dayCount:7}),et=(n,c)=>({"fa-trash":n,"fa-cog fa-spin":c}),tt=(n,c)=>({backupSize:n,maxBackupSizeText:c});function it(n,c){if(n&1&&(t(0,"li"),a(1),r(2,"date"),r(3,"translate"),i()),n&2){let p=h();e(),f(" ",z(3,4,"backup.scheduled_backup_time",q(7,Ze,z(2,1,p.backupTime,"shortTime")))," ")}}function nt(n,c){if(n&1&&(t(0,"span",30),r(1,"translate"),g(2,"i",31),a(3),i()),n&2){let p=h().$implicit;m("ngbTooltip",z(1,2,"backup.backup_exceeds_max_size",M(5,tt,p.size+"MB",p.maxBackupSizeText))),e(3),f(" ",p.size,"MB ")}}function at(n,c){if(n&1&&(t(0,"span"),a(1),i()),n&2){let p=h().$implicit;e(),f(" ",p.size,"MB ")}}function rt(n,c){if(n&1){let p=w();t(0,"li",10)(1,"span")(2,"span",25),a(3),r(4,"date"),i(),g(5,"br"),t(6,"small",11),a(7),r(8,"date"),k(9,nt,4,8,"span",26)(10,at,2,1,"span",8),i()(),t(11,"span",12)(12,"button",27),r(13,"translate"),r(14,"translate"),b("click",function(){let o=y(p).$implicit,d=h();return C(d.restore(o))}),g(15,"i",14),i(),t(16,"button",15),r(17,"translate"),r(18,"translate"),b("click",function(){let o=y(p).$implicit,d=h();return C(d.download(o))}),g(19,"i",28),i(),t(20,"button",29),r(21,"translate"),r(22,"translate"),b("click",function(){let o=y(p).$implicit,d=h();return C(d.delete(o))}),g(23,"i",16),i()()()}if(n&2){let p=c.$implicit,l=h();e(2),m("ngbTooltip",p.fileName),e(),f(" ",z(4,15,p.timestamp,"mediumDate")," "),e(4),f(" ",z(8,18,p.timestamp,"shortTime")," \xB7 "),e(2),m("ngIf",p.size>p.maxBackupSize),e(),m("ngIf",p.size<=p.maxBackupSize),e(2),m("disabled",l.clicked||l.deleting||p.size>p.maxBackupSize)("ngbTooltip",s(13,21,"form.button_restore")),v("aria-label",s(14,23,"form.button_restore")),e(4),m("disabled",l.clicked||l.deleting)("ngbTooltip",s(17,25,"form.button_download")),v("aria-label",s(18,27,"form.button_download")),e(4),m("disabled",l.clicked||l.deleting)("ngbTooltip",s(21,29,"form.button_delete")),v("aria-label",s(22,31,"form.button_delete")),e(3),m("ngClass",M(33,et,p.id!==l.deleting,p.id===l.deleting))}}function st(n,c){if(n&1&&(t(0,"div")(1,"div",32)(2,"h4",33),a(3),r(4,"translate"),i(),t(5,"p"),a(6),i()()()),n&2){let p=h();e(3),_(s(4,2,"toast.title_error")),e(3),_(p.errorMessage)}}var Oe=(()=>{let c=class c{constructor(l,o,d,x,I){u(this,"$activeModal");u(this,"$api");u(this,"$modal");u(this,"$toastr");u(this,"$translate");u(this,"clicked",!1);u(this,"scheduledBackups",[]);u(this,"backupTime");u(this,"errorMessage","");u(this,"deleting",null);u(this,"Date",Date);this.$activeModal=l,this.$api=o,this.$modal=d,this.$toastr=x,this.$translate=I}ngOnInit(){this.getScheduledBackups(),this.getNextBackup()}getScheduledBackups(){this.$api.get("/backup/scheduled-backups").subscribe({next:l=>{this.scheduledBackups=l},error:l=>{this.errorMessage=l.error.message||l.message}})}getNextBackup(){this.$api.get("/backup/scheduled-backups/next").subscribe({next:l=>{this.backupTime=l.next},error:l=>{console.error(l)}})}download(l){this.$api.get(`/backup/scheduled-backups/${l.id}`,{observe:"response",responseType:"blob"}).subscribe({next:o=>{let d=l.fileName||"homebridge-backup.tar.gz",x=o.body.size;if(x>globalThis.backup.maxBackupSize){let I=this.$translate.instant("backup.backup_exceeds_max_size",{maxBackupSizeText:globalThis.backup.maxBackupSizeText,size:`${(x/1048576).toFixed(1)}MB`});this.$toastr.warning(I,this.$translate.instant("toast.title_warning"))}(0,le.saveAs)(o.body,d)},error:o=>{console.error(o),this.$toastr.error(this.$translate.instant("backup.backup_download_failed"),this.$translate.instant("toast.title_error"))}})}restore(l){this.$activeModal.close();let o=this.$modal.open(ne,{size:"lg",backdrop:"static"});o.componentInstance.selectedBackup=l}delete(l){this.deleting=l.id,this.$api.delete(`/backup/scheduled-backups/${l.id}`).subscribe({next:()=>{this.getScheduledBackups(),this.deleting=null},error:o=>{this.deleting=null,console.error(o),this.$toastr.error(this.$translate.instant("backup.backup_delete_failed"),this.$translate.instant("toast.title_error"))}})}onDownloadBackupClick(){return B(this,null,function*(){this.clicked=!0,this.$api.get("/backup/download",{observe:"response",responseType:"blob"}).subscribe({next:l=>{let o=l.headers.get("File-Name")||"homebridge-backup.tar.gz";this.clicked=!1;let d=l.body.size;if(d>globalThis.backup.maxBackupSize){let x=this.$translate.instant("backup.backup_exceeds_max_size",{maxBackupSizeText:globalThis.backup.maxBackupSizeText,size:`${(d/1048576).toFixed(1)}MB`});this.$toastr.warning(x,this.$translate.instant("toast.title_warning"))}(0,le.saveAs)(l.body,o)},error:l=>{this.clicked=!1,console.error(l),this.$toastr.error(this.$translate.instant("backup.backup_download_failed"),this.$translate.instant("toast.title_error"))}})})}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(G),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:54,vars:51,consts:[[1,"modal-content","hb-backup-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center","mt-2","mb-3"],[1,"fas","fa-fw","fa-hard-drive","primary-text",2,"font-size","75px"],[4,"ngIf"],[1,"list-group","list-group-box","mt-2"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[2,"display","flex","flex-wrap","nowrap"],["disabled","",1,"btn","btn-primary","ml-3"],[1,"fas","fa-fw","fa-history"],["placement","bottom","container","modal","openDelay","150","triggers","hover",1,"btn","btn-primary","ml-1",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw",3,"ngClass"],["disabled","",1,"btn","btn-danger","ml-1"],[1,"fas","fa-fw","fa-trash"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-right"],["container","modal","openDelay","150","triggers","hover",3,"ngbTooltip"],["container","modal","openDelay","150","triggers","hover","class","red-text",3,"ngbTooltip",4,"ngIf"],["placement","bottom","container","modal","openDelay","150","triggers","hover",1,"btn","btn-primary","ml-3",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["placement","bottom","container","modal","openDelay","150","triggers","hover",1,"btn","btn-danger","ml-1",3,"click","disabled","ngbTooltip"],["container","modal","openDelay","150","triggers","hover",1,"red-text",3,"ngbTooltip"],[1,"fas","fa-fw","fa-exclamation-circle"],["role","alert",1,"alert","alert-error"],[1,"alert-heading"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5)(10,"div",6),g(11,"i",7),i(),t(12,"ul")(13,"li"),a(14),r(15,"translate"),i(),t(16,"li"),a(17),r(18,"translate"),i(),t(19,"li"),a(20),r(21,"translate"),i(),k(22,it,4,9,"li",8),i(),t(23,"ul",9)(24,"li",10)(25,"span")(26,"span"),a(27),r(28,"date"),i(),g(29,"br"),t(30,"small",11),a(31),r(32,"date"),r(33,"translate"),i()(),t(34,"span",12)(35,"button",13),r(36,"translate"),g(37,"i",14),i(),t(38,"button",15),r(39,"translate"),r(40,"translate"),b("click",function(){return d.onDownloadBackupClick()}),g(41,"i",16),i(),t(42,"button",17),r(43,"translate"),g(44,"i",18),i()()(),k(45,rt,24,36,"li",19),i(),k(46,st,7,4,"div",8),i(),t(47,"div",20),g(48,"div",21),t(49,"div",22)(50,"button",23),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(51),r(52,"translate"),i()(),g(53,"div",24),i()()),o&2&&(e(3),_(s(4,20,"backup.title_backup")),e(2),m("disabled",d.clicked||d.deleting),v("aria-label",s(6,22,"form.button_close")),e(9),_(s(15,24,"backup.backup_help_one")),e(3),_(s(18,26,"backup.backup_help_two")),e(3),_(s(21,28,"backup.backup_warning")),e(2),m("ngIf",d.backupTime),e(5),f(" ",z(28,30,d.Date.now(),"mediumDate")," "),e(4),P("",z(32,33,d.Date.now(),"shortTime")," \xB7 ",s(33,36,"backup.now"),""),e(4),v("aria-label",s(36,38,"form.button_restore")),e(3),m("disabled",d.clicked)("ngbTooltip",s(39,40,"form.button_download")),v("aria-label",s(40,42,"form.button_download")),e(3),m("ngClass",M(48,Ye,!d.clicked,d.clicked)),e(),v("aria-label",s(43,44,"form.button_delete")),e(3),m("ngForOf",d.scheduledBackups),e(),m("ngIf",d.errorMessage),e(4),m("disabled",d.clicked||d.deleting),e(),f(" ",s(52,46,"form.button_close")," "))},dependencies:[O,j,A,Fe,me,$],encapsulation:2}));let n=c;return n})();function lt(n,c){n&1&&(t(0,"div",11),g(1,"i",15),t(2,"p",16),a(3),r(4,"translate"),i()()),n&2&&(e(3),_(s(4,1,"reset.remove_cached_accessories_single_empty")))}function ot(n,c){n&1&&(t(0,"div")(1,"div",17),g(2,"i",18),i(),t(3,"ngb-alert",19)(4,"p",20),a(5),r(6,"translate"),i(),t(7,"ul",21)(8,"li"),a(9),r(10,"translate"),i(),t(11,"li"),a(12),r(13,"translate"),i(),t(14,"li",16),a(15),r(16,"translate"),i()()()()),n&2&&(e(3),m("dismissible",!1),e(2),_(s(6,5,"reset.action_is_irreversible")),e(4),_(s(10,7,"reset.clear_cache_all.list_1")),e(3),_(s(13,9,"reset.clear_cache_all.list_2")),e(3),_(s(16,11,"reset.clear_cache_all.list_3")))}function pt(n,c){if(n&1){let p=w();t(0,"button",22),r(1,"translate"),b("click",function(){y(p);let o=h();return C(o.$activeModal.dismiss("Dismiss"))}),a(2),r(3,"translate"),i()}if(n&2){let p=h();m("disabled",p.clicked),v("aria-label",s(1,3,"form.button_close")),e(2),f(" ",s(3,5,"form.button_close")," ")}}function ct(n,c){if(n&1){let p=w();t(0,"button",23),r(1,"translate"),b("click",function(){y(p);let o=h();return C(o.$activeModal.dismiss("Dismiss"))}),a(2),r(3,"translate"),i()}n&2&&(v("aria-label",s(1,2,"form.button_close")),e(2),f(" ",s(3,4,"form.button_close")," "))}function dt(n,c){n&1&&(t(0,"span"),a(1),r(2,"translate"),i()),n&2&&(e(),_(s(2,1,"form.button_remove")))}function mt(n,c){n&1&&g(0,"i",26)}function ut(n,c){if(n&1){let p=w();t(0,"button",24),b("click",function(){y(p);let o=h();return C(o.onResetCachedAccessoriesClick())}),k(1,dt,3,3,"span",7)(2,mt,1,0,"i",25),i()}if(n&2){let p=h();m("disabled",p.clicked),e(),m("ngIf",!p.clicked),e(),m("ngIf",p.clicked)}}var Re=(()=>{let c=class c{constructor(l,o,d,x){u(this,"$activeModal");u(this,"$api");u(this,"$toastr");u(this,"$translate");u(this,"clicked");u(this,"cachedAccessories",[]);this.$activeModal=l,this.$api=o,this.$toastr=d,this.$translate=x}ngOnInit(){this.loadCachedAccessories()}loadCachedAccessories(){return B(this,null,function*(){try{this.cachedAccessories=yield T(this.$api.get("/server/cached-accessories"))}catch(l){console.error(l),this.$toastr.error(this.$translate.instant("reset.error_message"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}onResetCachedAccessoriesClick(){return this.clicked=!0,this.$api.put("/server/reset-cached-accessories",{}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("reset.delete_success"),this.$translate.instant("toast.title_success")),this.$activeModal.close()},error:l=>{this.clicked=!1,console.error(l),this.$toastr.error(this.$translate.instant("reset.failed_to_reset"),this.$translate.instant("toast.title_error"))}})}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:19,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","text-center",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"disabled","click",4,"ngIf"],[1,"text-center"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"click",4,"ngIf"],[1,"text-right"],["type","button","class","btn btn-danger","data-dismiss","modal",3,"disabled","click",4,"ngIf"],[1,"fas","fa-fw","fa-circle-check","mb-4","primary-text",2,"font-size","75px"],[1,"mb-0"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-network-wired","mb-4","primary-text",2,"font-size","75px"],["type","error",2,"margin-bottom","0",3,"dismissible"],[1,"font-weight-bold"],[1,"mb-0","text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5),k(10,lt,5,3,"div",6)(11,ot,17,13,"div",7),i(),t(12,"div",8)(13,"div",9),k(14,pt,4,7,"button",10),i(),t(15,"div",11),k(16,ct,4,6,"button",12),i(),t(17,"div",13),k(18,ut,3,3,"button",14),i()()()),o&2&&(e(3),_(s(4,8,"reset.clear_cache_all.title")),e(2),m("disabled",d.clicked),v("aria-label",s(6,10,"form.button_close")),e(5),m("ngIf",d.cachedAccessories.length===0),e(),m("ngIf",d.cachedAccessories.length>0),e(3),m("ngIf",d.cachedAccessories.length>0),e(2),m("ngIf",d.cachedAccessories.length===0),e(2),m("ngIf",d.cachedAccessories.length>0))},dependencies:[A,R,$],encapsulation:2}));let n=c;return n})();var gt=(n,c)=>({"green-text":n,"red-text":c}),_t=(n,c)=>({"fa-trash":n,"fa-cog fa-spin":c});function ft(n,c){n&1&&(t(0,"div",10),g(1,"i",13),t(2,"p",14),a(3),r(4,"translate"),i()()),n&2&&(e(3),_(s(4,1,"reset.clear_cache_bridge.empty")))}function vt(n,c){if(n&1){let p=w();t(0,"li",21)(1,"span"),a(2),r(3,"titlecase"),g(4,"br"),t(5,"small",22),g(6,"i",23),a(7),r(8,"translate"),i()(),t(9,"button",24),r(10,"translate"),b("click",function(){let o=y(p).$implicit,d=h(2);return C(d.removeAccessories(o._id))}),g(11,"i",25),i()()}if(n&2){let p=c.$implicit,l=h(2);e(2),P(" ",p.displayName," (",p._main?"Homebridge":s(3,8,p._category),") "),e(4),m("ngClass",M(14,gt,p._isPaired,!p._isPaired)),e(),P(" ",s(8,10,p._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," \xB7 ",p._username," "),e(2),m("disabled",l.deleting||l.deleted.includes(p._id)),v("aria-label",s(10,12,"form.button_delete")),e(2),m("ngClass",M(17,_t,p._id!==l.deleting,p._id===l.deleting))}}function bt(n,c){if(n&1&&(t(0,"div")(1,"div",15),g(2,"i",16),i(),t(3,"ngb-alert",17)(4,"ul",18)(5,"li"),a(6),r(7,"translate"),i(),t(8,"li"),a(9),r(10,"translate"),i(),t(11,"li"),a(12),r(13,"translate"),i()()(),t(14,"ul",19),k(15,vt,12,20,"li",20),i()()),n&2){let p=h();e(3),m("dismissible",!1),e(3),_(s(7,5,"reset.clear_cache_bridge.list_1")),e(3),_(s(10,7,"reset.clear_cache_single.list_3")),e(3),_(s(13,9,"reset.clear_cache_bridge.list_2")),e(3),m("ngForOf",p.pairings)}}var Ue=(()=>{let c=class c{constructor(l,o,d,x,I){u(this,"$activeModal");u(this,"$api");u(this,"$modal");u(this,"$toastr");u(this,"$translate");u(this,"pairings",[]);u(this,"deleting",null);u(this,"deleted",[]);this.$activeModal=l,this.$api=o,this.$modal=d,this.$toastr=x,this.$translate=I}ngOnInit(){this.loadPairings()}loadPairings(){return B(this,null,function*(){try{this.pairings=(yield T(this.$api.get("/server/pairings"))).filter(l=>l._category==="bridge"&&!l._main).sort((l,o)=>o._main?1:-1)}catch(l){console.error(l),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}removeAccessories(l){this.deleting=l,this.$api.delete(`/server/pairings/${l}/accessories`).subscribe({next:()=>B(this,null,function*(){yield this.loadPairings(),this.deleting=null,this.deleted.push(l),this.$toastr.success("",this.$translate.instant("toast.title_success"))}),error:o=>{this.deleting=null,console.error(o),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.unpair_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){if(this.deleted.length){let l=this.$modal.open(je,{size:"lg",backdrop:"static"});l.componentInstance.bridges=this.deleted.map(o=>{let{_username:d,displayName:x}=this.pairings.find(I=>I._id===o);return{displayName:x,username:d}})}}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(G),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:19,vars:13,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","text-center",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-right"],[1,"fas","fa-fw","fa-circle-check","mb-4","primary-text",2,"font-size","75px"],[1,"mb-0"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-network-wired","primary-text",2,"font-size","75px"],["type","warning",3,"dismissible"],[1,"mb-0","text-left"],[1,"list-group","list-group-box","mt-2"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"fas","fa-fw","fa-link",3,"ngClass"],[1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-fw",3,"ngClass"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5),k(10,ft,5,3,"div",6)(11,bt,16,11,"div",7),i(),t(12,"div",8),g(13,"div",9),t(14,"div",10)(15,"button",11),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(16),r(17,"translate"),i()(),g(18,"div",12),i()()),o&2&&(e(3),_(s(4,7,"reset.clear_cache_bridge.title")),e(2),m("disabled",d.deleting),v("aria-label",s(6,9,"form.button_close")),e(5),m("ngIf",d.pairings.length===0),e(),m("ngIf",d.pairings.length>0),e(4),m("disabled",d.deleting),e(),f(" ",s(17,11,"form.button_close")," "))},dependencies:[O,j,A,R,J,$],encapsulation:2}));let n=c;return n})();var ht=(n,c)=>({"fa-trash":n,"fa-cog fa-spin":c});function xt(n,c){n&1&&(t(0,"div",10),g(1,"i",13),t(2,"p",14),a(3),r(4,"translate"),i()()),n&2&&(e(3),_(s(4,1,"reset.remove_cached_accessories_single_empty")))}function St(n,c){if(n&1){let p=w();t(0,"li",21)(1,"span"),a(2),g(3,"br"),t(4,"small",22),a(5),i()(),t(6,"button",23),r(7,"translate"),b("click",function(){let o=y(p).$implicit,d=h(2);return C(d.removeAccessory(o))}),g(8,"i",24),i()()}if(n&2){let p=c.$implicit,l=h(2);e(2),P(" ",p.displayName," (",p.plugin,") "),e(3),_(p.UUID),e(),m("disabled",l.deleting),v("aria-label",s(7,6,"form.button_delete")),e(2),m("ngClass",M(8,ht,p.UUID!==l.deleting,p.UUID===l.deleting))}}function kt(n,c){if(n&1&&(t(0,"div")(1,"div",15),g(2,"i",16),i(),t(3,"ngb-alert",17)(4,"ul",18)(5,"li"),a(6),r(7,"translate"),i(),t(8,"li"),a(9),r(10,"translate"),i(),t(11,"li"),a(12),r(13,"translate"),i(),t(14,"li",14),a(15),r(16,"translate"),i()()(),t(17,"ul",19),k(18,St,9,11,"li",20),i()()),n&2){let p=h();e(3),m("dismissible",!1),e(3),_(s(7,6,"reset.clear_cache_single.list_1")),e(3),_(s(10,8,"reset.clear_cache_single.list_2")),e(3),_(s(13,10,"reset.clear_cache_single.list_3")),e(3),_(s(16,12,"reset.clear_cache_single.list_4")),e(3),m("ngForOf",p.cachedAccessories)}}var ze=(()=>{let c=class c{constructor(l,o,d,x){u(this,"$activeModal");u(this,"$api");u(this,"$toastr");u(this,"$translate");u(this,"cachedAccessories",[]);u(this,"deleting",null);this.$activeModal=l,this.$api=o,this.$toastr=d,this.$translate=x}ngOnInit(){this.loadCachedAccessories()}loadCachedAccessories(){return B(this,null,function*(){try{this.cachedAccessories=yield T(this.$api.get("/server/cached-accessories"))}catch(l){console.error(l),this.$toastr.error(this.$translate.instant("reset.error_message"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}removeAccessory(l){this.deleting=l.UUID,this.$toastr.info(this.$translate.instant("reset.removing_cached_accessory_please_wait")),this.$api.delete(`/server/cached-accessories/${l.UUID}`,{params:{cacheFile:l.$cacheFile}}).subscribe({next:()=>B(this,null,function*(){yield this.loadCachedAccessories(),this.deleting=null,this.cachedAccessories.length||this.$activeModal.close(),this.$toastr.success(this.$translate.instant("reset.cached_accessory_removed"),this.$translate.instant("toast.title_success"))}),error:o=>{this.deleting=null,console.error(o),this.$toastr.error(this.$translate.instant("reset.delete_failed"),this.$translate.instant("toast.title_error"))}})}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:19,vars:13,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","text-center",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-right"],[1,"fas","fa-fw","fa-circle-check","mb-4","primary-text",2,"font-size","75px"],[1,"mb-0"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-network-wired","mb-4","primary-text",2,"font-size","75px"],["type","warning",3,"dismissible"],[1,"mb-0","text-left"],[1,"list-group","list-group-box","mt-2"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-danger","ml-3",3,"click","disabled"],[1,"fas","fa-fw",3,"ngClass"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5),k(10,xt,5,3,"div",6)(11,kt,19,14,"div",7),i(),t(12,"div",8),g(13,"div",9),t(14,"div",10)(15,"button",11),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(16),r(17,"translate"),i()(),g(18,"div",12),i()()),o&2&&(e(3),_(s(4,7,"reset.clear_cache_single.title")),e(2),m("disabled",d.deleting),v("aria-label",s(6,9,"form.button_close")),e(5),m("ngIf",d.cachedAccessories.length===0),e(),m("ngIf",d.cachedAccessories.length>0),e(4),m("disabled",d.deleting),e(),f(" ",s(17,11,"form.button_close")," "))},dependencies:[O,j,A,R,$],encapsulation:2}));let n=c;return n})();function Ct(n,c){if(n&1){let p=w();t(0,"li",18)(1,"span")(2,"label",19)(3,"input",20),de("ngModelChange",function(o){let d=y(p).$implicit;return ce(d.selected,o)||(d.selected=o),C(o)}),i(),t(4,"span"),a(5),i(),g(6,"span",21),i()(),t(7,"span"),a(8),i()()}if(n&2){let p=c.$implicit;e(2),m("for","adapter"+p.iface),e(),m("id","adapter"+p.iface),pe("ngModel",p.selected),e(2),_(p.iface),e(3),f(" ",p.ip4||p.ip6," ")}}var He=(()=>{let c=class c{constructor(l){u(this,"$activeModal");u(this,"availableNetworkAdapters");u(this,"bridgeNetworkAdapters");this.$activeModal=l}submit(){this.$activeModal.close(this.availableNetworkAdapters.filter(l=>l.selected).map(l=>l.iface))}};u(c,"\u0275fac",function(o){return new(o||c)(S(V))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],inputs:{availableNetworkAdapters:"availableNetworkAdapters",bridgeNetworkAdapters:"bridgeNetworkAdapters"},decls:37,vars:25,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-ethernet","mb-4","primary-text",2,"font-size","75px"],[1,"alert"],[1,"list-group","list-group-box"],[1,"list-group-item","d-flex","flex-row","justify-content-between"],["class","list-group-item d-flex flex-row flex-wrap justify-content-between",4,"ngFor","ngForOf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click"],[1,"list-group-item","d-flex","flex-row","flex-wrap","justify-content-between"],[1,"hb-uix-switch","d-inline","pr-3",3,"for"],["type","checkbox",3,"ngModelChange","id","ngModel"],[1,"hb-uix-slider","hb-uix-round"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5)(10,"div",6),g(11,"i",7),i(),t(12,"div",8),a(13),r(14,"translate"),i(),t(15,"ul",9)(16,"li",10)(17,"span")(18,"strong"),a(19),r(20,"translate"),i()(),t(21,"span")(22,"strong"),a(23),r(24,"translate"),i()()(),k(25,Ct,9,5,"li",11),i()(),t(26,"div",12)(27,"div",13)(28,"button",14),r(29,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(30),r(31,"translate"),i()(),g(32,"div",15),t(33,"div",16)(34,"button",17),b("click",function(){return d.submit()}),a(35),r(36,"translate"),i()()()()),o&2&&(e(3),_(s(4,9,"settings.network.title_network_interfaces")),e(2),v("aria-label",s(6,11,"form.button_close")),e(8),_(s(14,13,"settings.network.message_network_interface")),e(6),_(s(20,15,"settings.network.label_interface_name")),e(4),_(s(24,17,"settings.network.label_ip_address")),e(2),m("ngForOf",d.availableNetworkAdapters),e(3),v("aria-label",s(29,19,"form.button_close")),e(2),f(" ",s(31,21,"form.button_close")," "),e(5),f(" ",s(36,23,"form.button_save")," "))},dependencies:[j,ee,te,ie,$],encapsulation:2}));let n=c;return n})();function It(n,c){n&1&&(t(0,"span"),a(1),r(2,"translate"),i()),n&2&&(e(),_(s(2,1,"form.button_reset")))}function Bt(n,c){n&1&&g(0,"i",20)}var Ge=(()=>{let c=class c{constructor(l,o,d,x,I){u(this,"$activeModal");u(this,"$api");u(this,"$route");u(this,"$toastr");u(this,"$translate");u(this,"clicked");this.$activeModal=l,this.$api=o,this.$route=d,this.$toastr=x,this.$translate=I}onResetHomebridgeAccessoryClick(){return this.clicked=!0,this.$api.put("/server/reset-homebridge-accessory",{}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("reset.accessory_reset"),this.$translate.instant("toast.title_success")),this.$activeModal.close(),this.$route.navigate(["/restart"])},error:l=>{console.error(l),this.$toastr.error(this.$translate.instant("reset.failed_to_reset"),this.$translate.instant("toast.title_error"))}})}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(ge),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:40,vars:33,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-bridge","primary-text",2,"font-size","75px"],["type","error",2,"margin-bottom","0",3,"dismissible"],[1,"font-weight-bold"],[1,"mb-0","text-left"],[1,"mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[4,"ngIf"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5)(10,"div",6),g(11,"i",7),i(),t(12,"ngb-alert",8)(13,"p",9),a(14),r(15,"translate"),i(),t(16,"ul",10)(17,"li"),a(18),r(19,"translate"),i(),t(20,"li"),a(21),r(22,"translate"),i(),t(23,"li"),a(24),r(25,"translate"),i(),t(26,"li",11),a(27),r(28,"translate"),i()()()(),t(29,"div",12)(30,"div",13)(31,"button",14),r(32,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(33),r(34,"translate"),i()(),g(35,"div",15),t(36,"div",16)(37,"button",17),b("click",function(){return d.onResetHomebridgeAccessoryClick()}),k(38,It,3,3,"span",18)(39,Bt,1,0,"i",19),i()()()()),o&2&&(e(3),_(s(4,15,"reset.bridges_all.title")),e(2),m("disabled",d.clicked),v("aria-label",s(6,17,"form.button_close")),e(7),m("dismissible",!1),e(2),_(s(15,19,"reset.action_is_irreversible")),e(4),_(s(19,21,"reset.bridges_all.list_1")),e(3),_(s(22,23,"reset.bridges_all.list_2")),e(3),_(s(25,25,"reset.bridges_all.list_3")),e(3),_(s(28,27,"reset.bridges_all.list_4")),e(4),m("disabled",d.clicked),v("aria-label",s(32,29,"form.button_close")),e(2),f(" ",s(34,31,"form.button_close")," "),e(4),m("disabled",d.clicked),e(),m("ngIf",!d.clicked),e(),m("ngIf",d.clicked))},dependencies:[A,R,$],encapsulation:2}));let n=c;return n})();var Et=(n,c)=>({"green-text":n,"red-text":c}),$t=(n,c)=>({"fa-link-slash":n,"fa-cog fa-spin":c});function Tt(n,c){n&1&&(t(0,"div",10),g(1,"i",13),t(2,"p",14),a(3),r(4,"translate"),i()()),n&2&&(e(3),_(s(4,1,"reset.bridges.empty")))}function Mt(n,c){if(n&1){let p=w();t(0,"li",21)(1,"span"),a(2),r(3,"titlecase"),g(4,"br"),t(5,"small",22),g(6,"i",23),a(7),r(8,"translate"),i()(),t(9,"button",24),r(10,"translate"),b("click",function(){let o=y(p).$implicit,d=h(2);return C(d.removeAccessory(o._id))}),g(11,"i",25),i()()}if(n&2){let p=c.$implicit,l=h(2);e(2),P(" ",p.displayName," (",p._main?"Homebridge":s(3,8,p._category),") "),e(4),m("ngClass",M(14,Et,p._isPaired,!p._isPaired)),e(),P(" ",s(8,10,p._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," \xB7 ",p._username," "),e(2),m("disabled",l.deleting),v("aria-label",s(10,12,"form.button_unpair")),e(2),m("ngClass",M(17,$t,p._id!==l.deleting,p._id===l.deleting))}}function At(n,c){if(n&1&&(t(0,"div")(1,"div",15),g(2,"i",16),i(),t(3,"ngb-alert",17)(4,"ul",18)(5,"li"),a(6),r(7,"translate"),i(),t(8,"li"),a(9),r(10,"translate"),i(),t(11,"li",14),a(12),r(13,"translate"),i()()(),t(14,"ul",19),k(15,Mt,12,20,"li",20),i()()),n&2){let p=h();e(3),m("dismissible",!1),e(3),_(s(7,5,"reset.bridges_single.list_1")),e(3),_(s(10,7,"reset.bridges_single.list_2")),e(3),_(s(13,9,"reset.bridges_single.list_3")),e(3),m("ngForOf",p.pairings)}}var Le=(()=>{let c=class c{constructor(l,o,d,x,I){u(this,"$activeModal");u(this,"$api");u(this,"$modal");u(this,"$toastr");u(this,"$translate");u(this,"pairings",[]);u(this,"deleting",null);u(this,"unpaired",!1);this.$activeModal=l,this.$api=o,this.$modal=d,this.$toastr=x,this.$translate=I}ngOnInit(){this.loadPairings()}loadPairings(){return B(this,null,function*(){try{this.pairings=(yield T(this.$api.get("/server/pairings"))).sort((l,o)=>o._main?1:-1)}catch(l){console.error(l),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}removeAccessory(l){this.deleting=l,this.$api.delete(`/server/pairings/${l}`).subscribe({next:()=>B(this,null,function*(){yield this.loadPairings(),this.pairings.length||this.$activeModal.close(),this.deleting=null,this.unpaired=!0,this.$toastr.success(this.$translate.instant("plugins.settings.restart_required"),this.$translate.instant("toast.title_success"))}),error:o=>{this.deleting=null,console.error(o),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.unpair_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.unpaired&&this.$modal.open(Ve,{size:"lg",backdrop:"static"})}};u(c,"\u0275fac",function(o){return new(o||c)(S(V),S(F),S(G),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:19,vars:13,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","text-center",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-right"],[1,"fas","fa-fw","fa-circle-check","mb-4","primary-text",2,"font-size","75px"],[1,"mb-0"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-bridge","primary-text",2,"font-size","75px"],["type","warning",3,"dismissible"],[1,"mb-0","text-left"],[1,"list-group","list-group-box","mt-2"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"fas","fa-fw","fa-link",3,"ngClass"],[1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-fw",3,"ngClass"]],template:function(o,d){o&1&&(t(0,"div",0)(1,"div",1)(2,"h5",2),a(3),r(4,"translate"),i(),t(5,"button",3),r(6,"translate"),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),t(7,"span",4),a(8,"\xD7"),i()()(),t(9,"div",5),k(10,Tt,5,3,"div",6)(11,At,16,11,"div",7),i(),t(12,"div",8),g(13,"div",9),t(14,"div",10)(15,"button",11),b("click",function(){return d.$activeModal.dismiss("Dismiss")}),a(16),r(17,"translate"),i()(),g(18,"div",12),i()()),o&2&&(e(3),_(s(4,7,"reset.bridges_single.title")),e(2),m("disabled",d.deleting),v("aria-label",s(6,9,"form.button_close")),e(5),m("ngIf",d.pairings.length===0),e(),m("ngIf",d.pairings.length>0),e(4),m("disabled",d.deleting),e(),f(" ",s(17,11,"form.button_close")," "))},dependencies:[O,j,A,R,J,$],encapsulation:2}));let n=c;return n})();var Nt=n=>({"fa-pulse":n}),We=n=>({"is-invalid":n}),Ft=(n,c)=>({"badge-danger":n,"badge-info":c});function Dt(n,c){if(n&1){let p=w();t(0,"ul",14)(1,"li",15)(2,"span",16),a(3),r(4,"translate"),i(),t(5,"button",17),r(6,"translate"),b("click",function(){y(p);let o=h();return C(o.openBackupModal())}),g(7,"i",18),i()(),t(8,"li",15)(9,"span",16),a(10),r(11,"translate"),i(),t(12,"button",17),r(13,"translate"),b("click",function(){y(p);let o=h();return C(o.openRestoreModal())}),g(14,"i",18),i()(),t(15,"li",15)(16,"span",16),a(17),r(18,"translate"),i(),t(19,"a",19),r(20,"translate"),g(21,"i",18),i()(),t(22,"li",15)(23,"span",16),a(24),r(25,"translate"),i(),t(26,"button",17),r(27,"translate"),b("click",function(){y(p);let o=h();return C(o.openUiSettings())}),g(28,"i",20),i()()()}n&2&&(e(3),f(" ",s(4,8,"backup.title_backup")," "),e(2),v("aria-label",s(6,10,"backup.title_backup")),e(5),f(" ",s(11,12,"form.button_restore")," "),e(2),v("aria-label",s(13,14,"form.button_restore")),e(5),f(" ",s(18,16,"menu.tooltip_user_accounts")," "),e(2),v("aria-label",s(20,18,"menu.tooltip_user_accounts")),e(5),f(" ",s(25,20,"menu.label_settings_advanced")," "),e(2),v("aria-label",s(27,22,"menu.label_settings_advanced")))}function Vt(n,c){n&1&&(t(0,"li",74)(1,"small",75),a(2),r(3,"translate"),i(),t(4,"button",76),r(5,"translate"),a(6),r(7,"translate"),i()()),n&2&&(e(2),_(s(3,3,"settings.changes.saved")),e(2),v("aria-label",s(5,5,"menu.tooltip_restart")),e(2),f(" ",s(7,7,"menu.tooltip_restart")," "))}function jt(n,c){if(n&1){let p=w();t(0,"ul",21)(1,"li",22)(2,"span"),a(3),r(4,"translate"),i(),t(5,"div",23)(6,"select",24),b("ngModelChange",function(o){y(p);let d=h();return C(d.saveUiSettingChange("lang",o))}),t(7,"option",25),a(8),r(9,"translate"),i(),t(10,"option",26),a(11,"Bulgarian (bg)"),i(),t(12,"option",27),a(13,"Catalan (ca)"),i(),t(14,"option",28),a(15,"Chinese - Simplified (zh-CN)"),i(),t(16,"option",29),a(17,"Chinese - Traditional (zh-TW)"),i(),t(18,"option",30),a(19,"Czech (cs)"),i(),t(20,"option",31),a(21,"Dutch (nl)"),i(),t(22,"option",32),a(23,"English (en)"),i(),t(24,"option",33),a(25,"Finnish (fi)"),i(),t(26,"option",34),a(27,"French (fr)"),i(),t(28,"option",35),a(29,"German (de)"),i(),t(30,"option",36),a(31,"Hebrew (he)"),i(),t(32,"option",37),a(33,"Hungarian (hu)"),i(),t(34,"option",38),a(35,"Indonesian (id)"),i(),t(36,"option",39),a(37,"Italian (it)"),i(),t(38,"option",40),a(39,"Japanese (ja)"),i(),t(40,"option",41),a(41,"Korean (ko)"),i(),t(42,"option",42),a(43,"Macedonian (mk)"),i(),t(44,"option",43),a(45,"Norwegian (no)"),i(),t(46,"option",44),a(47,"Polish (pl)"),i(),t(48,"option",45),a(49,"Portuguese (Brazil)"),i(),t(50,"option",46),a(51,"Portuguese (Portugal)"),i(),t(52,"option",47),a(53,"Russian (ru)"),i(),t(54,"option",48),a(55,"Slovenian (sl)"),i(),t(56,"option",49),a(57,"Spanish (es)"),i(),t(58,"option",50),a(59,"Swedish (sv)"),i(),t(60,"option",51),a(61,"Thai (th)"),i(),t(62,"option",52),a(63,"Turkish (tr)"),i(),t(64,"option",53),a(65,"Ukrainian (uk)"),i()()()(),t(66,"li",22)(67,"span"),a(68),r(69,"translate"),i(),t(70,"div",23)(71,"select",24),b("ngModelChange",function(o){y(p);let d=h();return C(d.saveUiSettingChange("theme",o))}),t(72,"option",54),a(73),r(74,"translate"),i(),t(75,"option",55),a(76),r(77,"translate"),i(),t(78,"option",56),a(79),r(80,"translate"),i(),t(81,"option",57),a(82),r(83,"translate"),i(),t(84,"option",58),a(85),r(86,"translate"),i(),t(87,"option",59),a(88),r(89,"translate"),i(),t(90,"option",60),a(91),r(92,"translate"),i(),t(93,"option",61),a(94),r(95,"translate"),i(),t(96,"option",62),a(97),r(98,"translate"),i(),t(99,"option",63),a(100),r(101,"translate"),i(),t(102,"option",64),a(103),r(104,"translate"),i(),t(105,"option",65),a(106),r(107,"translate"),i(),t(108,"option",66),a(109),r(110,"translate"),i()()()(),t(111,"li",22)(112,"span"),a(113),r(114,"translate"),i(),t(115,"div",23)(116,"select",24),b("ngModelChange",function(o){y(p);let d=h();return C(d.saveUiSettingChange("lightingMode",o))}),t(117,"option",25),a(118),r(119,"translate"),i(),t(120,"option",67),a(121),r(122,"translate"),i(),t(123,"option",68),a(124),r(125,"translate"),i()()()(),t(126,"li",22)(127,"span"),a(128),r(129,"translate"),g(130,"br")(131,"small",69),r(132,"translate"),i(),t(133,"div",23)(134,"input",70),b("ngModelChange",function(o){y(p);let d=h();return C(d.saveUiSettingChange("loginWallpaper",o))}),i()()(),t(135,"li",22)(136,"span"),a(137),r(138,"translate"),i(),t(139,"div",23)(140,"select",24),b("ngModelChange",function(o){y(p);let d=h();return C(d.saveUiSettingChange("tempUnits",o))}),t(141,"option",71),a(142),r(143,"translate"),i(),t(144,"option",72),a(145),r(146,"translate"),i()()()(),k(147,Vt,8,9,"li",73),i()}if(n&2){let p=h();e(3),_(s(4,31,"settings.display.lang")),e(3),m("ngModel",p.$settings.env.lang),e(2),_(s(9,33,"form.select.auto")),e(60),_(s(69,35,"settings.display.theme")),e(3),m("ngModel",p.$settings.theme),e(2),_(s(74,37,"settings.display.orange")),e(3),_(s(77,39,"settings.display.red")),e(3),_(s(80,41,"settings.display.pink")),e(3),_(s(83,43,"settings.display.purple")),e(3),_(s(86,45,"settings.display.deep_purple")),e(3),_(s(89,47,"settings.display.indigo")),e(3),_(s(92,49,"settings.display.blue")),e(3),_(s(95,51,"settings.display.bluegrey")),e(3),_(s(98,53,"settings.display.cyan")),e(3),_(s(101,55,"settings.display.green")),e(3),_(s(104,57,"settings.display.teal")),e(3),_(s(107,59,"settings.display.grey")),e(3),_(s(110,61,"settings.display.brown")),e(4),_(s(114,63,"settings.display.lighting_mode")),e(3),m("ngModel",p.$settings.lightingMode),e(2),_(s(119,65,"form.select.auto")),e(3),_(s(122,67,"settings.display.light")),e(3),_(s(125,69,"settings.display.dark")),e(4),f(" ",s(129,71,"settings.display.login_wallpaper"),""),e(3),m("innerHTML",s(132,73,"settings.display.login_wallpaper_desc"),oe),e(3),m("ngModel",p.$settings.loginWallpaper),e(3),_(s(138,75,"settings.display.temp_units")),e(3),m("ngModel",p.$settings.env.temperatureUnits),e(2),_(s(143,77,"settings.display.temp_units.c")),e(3),_(s(146,79,"settings.display.temp_units.f")),e(2),m("ngIf",p.hasChangedLoginWallpaper)}}function Pt(n,c){if(n&1&&(t(0,"li",15)(1,"span"),a(2),r(3,"translate"),t(4,"code"),a(5,"-D"),i(),g(6,"br"),t(7,"small",81),a(8),r(9,"translate"),i()(),g(10,"input",82),r(11,"translate"),g(12,"label",83),i()),n&2){let p=h(3);e(2),f(" ",s(3,3,"settings.startup.debug")," "),e(6),f(" ",s(9,5,p.isHbV2?"settings.startup.debug_desc_v2":"settings.startup.debug_desc_v1")," "),e(2),v("aria-label",s(11,7,"settings.startup.debug"))}}function Ot(n,c){n&1&&(t(0,"li",15)(1,"span"),a(2),r(3,"translate"),t(4,"code"),a(5,"-I"),i(),g(6,"br"),t(7,"small",81),a(8),r(9,"translate"),i()(),g(10,"input",84),r(11,"translate"),g(12,"label",85),i()),n&2&&(e(2),f(" ",s(3,3,"settings.startup.insecure")," "),e(6),_(s(9,5,"settings.startup.insecure_desc")),e(2),v("aria-label",s(11,7,"settings.startup.insecure")))}function Rt(n,c){n&1&&(t(0,"li",15)(1,"span"),a(2),r(3,"translate"),t(4,"code"),a(5,"-K"),i(),g(6,"br"),t(7,"small",81),a(8),r(9,"translate"),i()(),g(10,"input",86),r(11,"translate"),g(12,"label",87),i()),n&2&&(e(2),f(" ",s(3,3,"settings.startup.keep_accessories")," "),e(6),_(s(9,5,"settings.startup.keep_accessories_desc")),e(2),v("aria-label",s(11,7,"settings.startup.keep_accessories")))}function Ut(n,c){n&1&&(t(0,"li",22)(1,"span")(2,"span",88),a(3,"DEBUG"),i(),g(4,"br"),t(5,"small",81),a(6),r(7,"translate"),t(8,"a",89),a(9),r(10,"translate"),g(11,"i",90),i()()(),t(12,"div",23),g(13,"input",91),i()()),n&2&&(e(6),f(" ",s(7,2,"settings.service.debug_tooltip")," "),e(3),f(" ",s(10,4,"form.button_more_info")," "))}function zt(n,c){n&1&&(t(0,"li",22)(1,"span")(2,"span",88),a(3,"NODE_OPTIONS"),i(),g(4,"br"),t(5,"small",81),a(6),r(7,"translate"),i()(),t(8,"div",23),g(9,"input",92),i()()),n&2&&(e(6),_(s(7,1,"settings.service.node_tooltip")))}function Ht(n,c){n&1&&(t(0,"li",15)(1,"span"),a(2),r(3,"translate"),g(4,"br"),t(5,"small",81),a(6),r(7,"translate"),i()(),t(8,"a",93),r(9,"translate"),g(10,"i",18),i()()),n&2&&(e(2),f(" ",s(3,3,"menu.docker.startup_script"),""),e(4),_(s(7,5,"platform.docker.script_help")),e(2),v("aria-label",s(9,7,"menu.docker.startup_script")))}function Gt(n,c){n&1&&(t(0,"li",74)(1,"small",75),a(2),r(3,"translate"),i(),t(4,"button",76),r(5,"translate"),a(6),r(7,"translate"),i()()),n&2&&(e(2),_(s(3,3,"settings.changes.saved")),e(2),v("aria-label",s(5,5,"menu.tooltip_restart")),e(2),f(" ",s(7,7,"menu.tooltip_restart")," "))}function Lt(n,c){if(n&1&&(t(0,"ul",78),k(1,Pt,13,9,"li",79)(2,Ot,13,9,"li",79)(3,Rt,13,9,"li",79)(4,Ut,14,6,"li",80)(5,zt,10,3,"li",80)(6,Ht,11,9,"li",79)(7,Gt,8,9,"li",73),i()),n&2){let p=h(2);e(),m("ngIf",p.$settings.env.serviceMode),e(),m("ngIf",p.$settings.env.serviceMode),e(),m("ngIf",p.$settings.env.serviceMode),e(),m("ngIf",p.$settings.env.serviceMode),e(),m("ngIf",p.$settings.env.serviceMode),e(),m("ngIf",p.$settings.env.runningInDocker),e(),m("ngIf",p.hasChangedService)}}function Wt(n,c){if(n&1){let p=w();t(0,"form",8)(1,"div",2),b("click",function(){y(p);let o=h();return C(o.toggleSection("startup"))}),t(2,"h5",3),g(3,"i",4),a(4),r(5,"translate"),i()(),k(6,Lt,8,7,"ul",77),i()}if(n&2){let p=h();m("formGroup",p.serviceForm),e(),v("aria-expanded",p.showFields.startup?"true":"false")("aria-controls","fieldsStartup"),e(2),m("ngClass",p.showFields.startup?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(5,6,"settings.title_startup_options")," "),e(2),m("ngIf",p.showFields.startup)}}function Kt(n,c){n&1&&g(0,"i",108)}function qt(n,c){if(n&1&&(t(0,"span")(1,"span",105),k(2,Kt,1,0,"i",106),a(3),t(4,"span",107),a(5),r(6,"translate"),i()()()),n&2){let p=c.$implicit;e(),m("ngClass",M(6,Ft,p.missing,!p.missing)),e(),m("ngIf",p.missing),e(),f(" ",p.iface,": "),e(2),_(p.missing?s(6,4,"settings.mdns_advertiser_not_connected"):p.ip4||p.ip6)}}function Jt(n,c){n&1&&(t(0,"option",109),a(1),r(2,"translate"),i()),n&2&&(e(),f(" Avahi (",s(2,1,"settings.mdns_advertiser_rec"),") "))}function Qt(n,c){n&1&&(t(0,"option",110),a(1),r(2,"translate"),i()),n&2&&(e(),f(" systemd-resolved (",s(2,1,"settings.mdns_advertiser_exp"),") "))}function Xt(n,c){n&1&&(t(0,"li",74)(1,"small",75),a(2),r(3,"translate"),i(),t(4,"button",76),r(5,"translate"),a(6),r(7,"translate"),i()()),n&2&&(e(2),_(s(3,3,"settings.changes.saved")),e(2),v("aria-label",s(5,5,"menu.tooltip_restart")),e(2),f(" ",s(7,7,"menu.tooltip_restart")," "))}function Yt(n,c){if(n&1){let p=w();t(0,"ul",94)(1,"li",15)(2,"span",16)(3,"div"),a(4),r(5,"translate"),g(6,"br"),t(7,"small",81),a(8),r(9,"translate"),i()(),k(10,qt,7,9,"span",95),i(),t(11,"button",96),r(12,"translate"),b("click",function(){y(p);let o=h();return C(o.selectNetworkInterfaces())}),g(13,"i",97),i()(),t(14,"li",22)(15,"span"),a(16),r(17,"translate"),g(18,"br"),t(19,"small",81),a(20),r(21,"translate"),i()(),t(22,"div",23)(23,"select",98),r(24,"translate"),k(25,Jt,3,3,"option",99),t(26,"option",100),a(27),r(28,"translate"),i(),t(29,"option",101),a(30,"Bonjour HAP"),i(),k(31,Qt,3,3,"option",102),i()()(),t(32,"li",22)(33,"span"),a(34),r(35,"translate"),g(36,"br"),t(37,"small",81),a(38),r(39,"translate"),i()(),t(40,"div",23),g(41,"input",103),r(42,"translate"),i()(),t(43,"li",22)(44,"span"),a(45),r(46,"translate"),g(47,"br"),t(48,"small",81),a(49),r(50,"translate"),i()(),t(51,"div",23),g(52,"input",104),r(53,"translate"),i()(),k(54,Xt,8,9,"li",73),i()}if(n&2){let p=h();e(4),f(" ",s(5,23,"settings.network.title_network_interfaces"),""),e(4),_(s(9,25,"settings.network.message_network_interface")),e(2),m("ngForOf",p.bridgeNetworkAdapters),e(),m("disabled",!p.availableNetworkAdapters.length),v("aria-label",s(12,27,"settings.network.title_network_interfaces")),e(2),m("ngClass",q(49,Nt,!p.availableNetworkAdapters.length)),e(3),f(" ",s(17,29,"settings.mdns_advertiser"),""),e(4),_(s(21,31,"settings.mdns_advertiser_help")),e(3),m("formControl",p.legacyMdnsFormControl),v("aria-label",s(24,33,"settings.mdns_advertiser")),e(2),m("ngIf",p.showAvahiMdnsOption),e(2),f(" Ciao ",p.showAvahiMdnsOption?"":"("+s(28,35,"settings.mdns_advertiser_rec")+")"," "),e(4),m("ngIf",p.showResolvedMdnsOption),e(3),f(" ",s(35,37,"settings.network.port_hb"),""),e(4),_(s(39,39,"settings.network.port_hb_desc")),e(3),m("formControl",p.hbPortFormControl)("ngClass",q(51,We,p.isInvalidHbPort)),v("aria-label",s(42,41,"settings.network.port_ui")),e(4),f(" ",s(46,43,"settings.network.port_ui"),""),e(4),_(s(50,45,"settings.network.port_ui_desc")),e(3),m("ngClass",q(53,We,p.isInvalidHbUiPort)),v("aria-label",s(53,47,"settings.network.port_ui")),e(2),m("ngIf",p.hasChangedHbPort||p.hasChangedUiSettings||p.hasChangedMdns||p.hasChangedBridgeNetworkAdapters)}}function Zt(n,c){n&1&&(t(0,"p",112),a(1),r(2,"translate"),i()),n&2&&(e(),_(s(2,1,"settings.cache.desc")))}function ei(n,c){if(n&1){let p=w();t(0,"ul",113)(1,"li",15)(2,"span",16),a(3),r(4,"translate"),g(5,"br"),t(6,"small",81),a(7),r(8,"translate"),i()(),t(9,"button",17),r(10,"translate"),b("click",function(){y(p);let o=h(2);return C(o.removeSingleCachedAccessories())}),g(11,"i",18),i()(),t(12,"li",15)(13,"span",16),a(14),r(15,"translate"),g(16,"br"),t(17,"small",81),a(18),r(19,"translate"),i()(),t(20,"button",17),r(21,"translate"),b("click",function(){y(p);let o=h(2);return C(o.removeBridgeAccessories())}),g(22,"i",18),i()(),t(23,"li",15)(24,"span",16),a(25),r(26,"translate"),g(27,"br"),t(28,"small",81),a(29),r(30,"translate"),i()(),t(31,"button",17),r(32,"translate"),b("click",function(){y(p);let o=h(2);return C(o.removeAllCachedAccessories())}),g(33,"i",18),i()()()}n&2&&(e(3),f(" ",s(4,9,"reset.clear_cache_single.title"),""),e(4),_(s(8,11,"reset.clear_cache_single.desc")),e(2),v("aria-label",s(10,13,"reset.clear_cache_single.title")),e(5),f(" ",s(15,15,"reset.clear_cache_bridge.title"),""),e(4),_(s(19,17,"reset.clear_cache_bridge.desc")),e(2),v("aria-label",s(21,19,"reset.clear_cache_all.title")),e(5),f(" ",s(26,21,"reset.clear_cache_all.title"),""),e(4),_(s(30,23,"reset.clear_cache_all.desc")),e(2),v("aria-label",s(32,25,"reset.clear_cache_all.title")))}function ti(n,c){if(n&1){let p=w();t(0,"div",1)(1,"div",2),b("click",function(){y(p);let o=h();return C(o.toggleSection("cache"))}),t(2,"h5",3),g(3,"i",4),a(4),r(5,"translate"),i()(),k(6,Zt,3,3,"p",11)(7,ei,34,27,"ul",111),i()}if(n&2){let p=h();e(),v("aria-expanded",p.showFields.cache?"true":"false")("aria-controls","fieldsCache"),e(2),m("ngClass",p.showFields.cache?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(5,6,"settings.cache.title")," "),e(2),m("ngIf",p.showFields.cache),e(),m("ngIf",p.showFields.cache)}}function ii(n,c){n&1&&(t(0,"p",112),a(1),r(2,"translate"),i()),n&2&&(e(),_(s(2,1,"reset.bridges.desc")))}function ni(n,c){if(n&1){let p=w();t(0,"ul",114)(1,"li",15)(2,"span",16),a(3),r(4,"translate"),g(5,"br"),t(6,"small",81),a(7),r(8,"translate"),i()(),t(9,"button",17),r(10,"translate"),b("click",function(){y(p);let o=h();return C(o.unpairAccessory())}),g(11,"i",18),i()(),t(12,"li",15)(13,"span",16),a(14),r(15,"translate"),r(16,"titlecase"),g(17,"br"),t(18,"small",81),a(19),r(20,"translate"),i()(),t(21,"button",17),r(22,"translate"),b("click",function(){y(p);let o=h();return C(o.resetHomebridgeState())}),g(23,"i",18),i()()()}n&2&&(e(3),f(" ",s(4,6,"reset.bridges_single.title"),""),e(4),_(s(8,8,"reset.bridges_single.desc")),e(2),v("aria-label",s(10,10,"reset.bridges_single.title")),e(5),f(" ",s(16,14,s(15,12,"reset.bridges_all.title")),""),e(5),_(s(20,16,"reset.bridges_all.desc")),e(2),v("aria-label",s(22,18,"reset.bridges_all.title")))}var Ke=(()=>{let c=class c{constructor(l,o,d,x,I,Je){u(this,"$api");u(this,"$modal");u(this,"$plugin");u(this,"$settings");u(this,"$toastr");u(this,"$translate");u(this,"originalServiceForm",{HOMEBRIDGE_DEBUG:!1,HOMEBRIDGE_KEEP_ORPHANS:!1,HOMEBRIDGE_INSECURE:!0,ENV_DEBUG:"",ENV_NODE_OPTIONS:""});u(this,"originalUiSettingsForm",{port:0});u(this,"originalLoginWallpaper","");u(this,"originalMdnsSetting","");u(this,"originalBridgeNetworkAdapters",[]);u(this,"originalHbPort",0);u(this,"hasChangedService",!1);u(this,"hasChangedUiSettings",!1);u(this,"hasChangedMdns",!1);u(this,"hasChangedBridgeNetworkAdapters",!1);u(this,"hasChangedHbPort",!1);u(this,"hasChangedLoginWallpaper",!1);u(this,"isInvalidHbPort",!1);u(this,"isInvalidHbUiPort",!1);u(this,"serviceForm",new se({HOMEBRIDGE_DEBUG:new H(!1),HOMEBRIDGE_KEEP_ORPHANS:new H(!1),HOMEBRIDGE_INSECURE:new H(!0),ENV_DEBUG:new H(""),ENV_NODE_OPTIONS:new H("")}));u(this,"uiSettingsForm",new se({port:new H(0)}));u(this,"loginWallpaper","");u(this,"legacyMdnsFormControl",new Se(!1));u(this,"showAvahiMdnsOption",!1);u(this,"showResolvedMdnsOption",!1);u(this,"availableNetworkAdapters",[]);u(this,"bridgeNetworkAdapters",[]);u(this,"hbPortFormControl",new H(0));u(this,"isHbV2",!1);u(this,"showFields",{general:!0,display:!0,startup:!0,network:!0,reset:!0,cache:!0});this.$api=l,this.$modal=o,this.$plugin=d,this.$settings=x,this.$toastr=I,this.$translate=Je}ngOnInit(){this.isHbV2=this.$settings.env.homebridgeVersion.startsWith("2"),this.initUiSettingsForm(),this.initDisplaySettingsForm(),this.initNetworkingOptions(),this.$settings.env.serviceMode&&this.initServiceModeForm()}initUiSettingsForm(){this.originalUiSettingsForm={port:this.$settings.env.port},this.uiSettingsForm.patchValue({port:this.$settings.env.port}),this.uiSettingsForm.valueChanges.pipe(ae(500)).subscribe(l=>{let o=!1;Object.keys(l).forEach(d=>{this.originalUiSettingsForm[d]!==l[d]&&(this.saveUiSettingChange(d,l[d]),o=!0)}),this.hasChangedUiSettings=o})}initServiceModeForm(){this.$api.get("/platform-tools/hb-service/homebridge-startup-settings").subscribe({next:l=>{Object.keys(l).forEach(o=>{this.originalServiceForm[o]=l[o]}),this.serviceForm.patchValue(l),this.serviceForm.valueChanges.pipe(ae(500)).subscribe(this.saveServiceModeSettings.bind(this))},error:l=>{console.error(l),this.$toastr.error(l.message,this.$translate.instant("toast.title_error"))}})}initDisplaySettingsForm(){this.originalLoginWallpaper=this.$settings.loginWallpaper,this.loginWallpaper=this.$settings.loginWallpaper}saveUiSettingChange(l,o){switch(l){case"lang":this.$settings.setLang(o);break;case"lightingMode":this.$settings.setLightingMode(o,"user");break;case"theme":this.$settings.setTheme(o);break;case"tempUnits":this.$settings.setEnvItem("temperatureUnits",o);break;case"loginWallpaper":this.$settings.setEnvItem("loginWallpaper",o),this.hasChangedLoginWallpaper=o!==this.originalLoginWallpaper;break;case"port":if(!o||typeof o!="number"||o<1025||o>65533||Number.isInteger(o)===!1||o===this.hbPortFormControl.value){this.isInvalidHbUiPort=!0;return}this.$settings.setEnvItem("port",o),this.isInvalidHbUiPort=!1;break}T(this.$api.put("/config-editor/ui",{key:l,value:o})).catch(d=>{console.error(d),this.$toastr.error(d.message,this.$translate.instant("toast.title_error"))})}openUiSettings(){this.$plugin.settings({name:"homebridge-config-ui-x",displayName:"Homebridge UI",settingsSchema:!0,links:{}})}openRestoreModal(){this.$modal.open(ne,{size:"lg",backdrop:"static"})}openBackupModal(){this.$modal.open(Oe,{size:"lg",backdrop:"static"})}saveServiceModeSettings(l=this.serviceForm.value){this.$api.put("/platform-tools/hb-service/homebridge-startup-settings",l).subscribe({next:()=>{this.hasChangedService=JSON.stringify(l)!==JSON.stringify(this.originalServiceForm)},error:o=>{console.error(o),this.$toastr.error(o.message,this.$translate.instant("toast.title_error"))}})}resetHomebridgeState(){this.$modal.open(Ge,{size:"lg",backdrop:"static"})}unpairAccessory(){this.$modal.open(Le,{size:"lg",backdrop:"static"})}removeAllCachedAccessories(){this.$modal.open(Re,{size:"lg",backdrop:"static"})}removeSingleCachedAccessories(){this.$modal.open(ze,{size:"lg",backdrop:"static"})}removeBridgeAccessories(){this.$modal.open(Ue,{size:"lg",backdrop:"static"})}initNetworkingOptions(){return B(this,null,function*(){try{this.getNetworkSettings(),(this.$settings.env.runningInLinux||this.$settings.env.runningInDocker||this.$settings.env.runningInSynologyPackage||this.$settings.env.runningInPackageMode)&&(this.showAvahiMdnsOption=!0,this.showResolvedMdnsOption=!0)}catch{}})}getNetworkSettings(){return B(this,null,function*(){return Promise.all([T(this.$api.get("/server/network-interfaces/system")),T(this.$api.get("/server/network-interfaces/bridge")),T(this.$api.get("/server/mdns-advertiser")),T(this.$api.get("/server/port"))]).then(([l,o,d,x])=>{this.availableNetworkAdapters=l,this.buildBridgeNetworkAdapterList(o),this.legacyMdnsFormControl.patchValue(d.advertiser),this.originalMdnsSetting=d.advertiser,this.originalBridgeNetworkAdapters=this.bridgeNetworkAdapters.map(I=>I.iface),this.legacyMdnsFormControl.valueChanges.subscribe(I=>{this.setHomebridgeMdnsSetting(I)}),this.hbPortFormControl.patchValue(x.port),this.hbPortFormControl.valueChanges.subscribe(I=>this.setHomebridgePort(I)),this.originalHbPort=x.port})})}setHomebridgeMdnsSetting(l){return B(this,null,function*(){this.$api.put("/server/mdns-advertiser",{advertiser:l}).subscribe({next:()=>{this.hasChangedMdns=l!==this.originalMdnsSetting},error:o=>{console.error(o),this.$toastr.error(o.message,this.$translate.instant("toast.title_error"))}})})}setNetworkInterfaces(l){return B(this,null,function*(){this.$api.put("/server/network-interfaces/bridge",{adapters:l}).subscribe({next:()=>{this.hasChangedBridgeNetworkAdapters=this.originalBridgeNetworkAdapters.join(",")!==l.join(",")},error:o=>{console.error(o),this.$toastr.error(o.message,this.$translate.instant("toast.title_error"))}})})}setHomebridgePort(l){return B(this,null,function*(){if(l===this.uiSettingsForm.get("port").value){this.isInvalidHbPort=!0;return}this.$api.put("/server/port",{port:l}).subscribe({next:()=>{this.hasChangedHbPort=this.originalHbPort!==l,this.isInvalidHbPort=!1},error:()=>{this.isInvalidHbPort=!0}})})}buildBridgeNetworkAdapterList(l){if(!l.length){this.bridgeNetworkAdapters=[];return}this.bridgeNetworkAdapters=l.map(o=>{let d=this.availableNetworkAdapters.find(x=>x.iface===o);return d?(d.selected=!0,d.missing=!1,d):{iface:o,missing:!0}})}selectNetworkInterfaces(){let l=this.$modal.open(He,{size:"lg",backdrop:"static"});l.componentInstance.availableNetworkAdapters=this.availableNetworkAdapters,l.componentInstance.bridgeNetworkAdapters=this.bridgeNetworkAdapters,l.result.then(o=>{this.buildBridgeNetworkAdapterList(o),this.setNetworkInterfaces(o)}).catch(()=>{})}toggleSection(l){this.showFields[l]=!this.showFields[l]}};u(c,"\u0275fac",function(o){return new(o||c)(S(F),S(G),S(Pe),S(ve),S(D),S(N))}),u(c,"\u0275cmp",E({type:c,selectors:[["ng-component"]],decls:35,vars:35,consts:[[1,"primary-text","m-0"],[1,"my-4"],["role","button","tabindex","0",1,"mt-3","hover-pointer",3,"click"],[1,"primary-text"],[1,"fa","fa-fw",3,"ngClass"],["class","list-group list-group-box mt-2 mx-0","id","fieldsGeneral",4,"ngIf"],["class","list-group list-group-box mt-2 mx-0","id","fieldsDisplay",4,"ngIf"],["class","my-4","novalidate","",3,"formGroup",4,"ngIf"],["novalidate","",1,"my-4",3,"formGroup"],["class","list-group list-group-box mt-2 mx-0","id","fieldsNetwork",4,"ngIf"],["class","my-4",4,"ngIf"],["class","small grey-text mb-2 mx-0",4,"ngIf"],["class","list-group list-group-box mt-2 mx-0","id","fieldsReset",4,"ngIf"],[1,"pb-3"],["id","fieldsGeneral",1,"list-group","list-group-box","mt-2","mx-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"pr-2"],[1,"btn","btn-primary","waves-effect","m-0","ml-3",2,"min-width","50px",3,"click"],[1,"fas","fa-fw","fa-chevron-right"],["routerLink","/users",1,"btn","btn-primary","waves-effect","m-0","ml-3",2,"min-width","50px"],[1,"fas","fa-fw","fa-sliders"],["id","fieldsDisplay",1,"list-group","list-group-box","mt-2","mx-0"],[1,"list-group-item","d-block","d-md-flex","justify-content-between","align-items-center"],[1,"my-3","my-md-0","pl-0","pl-md-5","w-auto"],[1,"custom-select","resp-select",3,"ngModelChange","ngModel"],["value","auto"],["value","bg"],["value","ca"],["value","zh-CN"],["value","zh-TW"],["value","cs"],["value","nl"],["value","en"],["value","fi"],["value","fr"],["value","de"],["value","he"],["value","hu"],["value","id"],["value","it"],["value","ja"],["value","ko"],["value","mk"],["value","no"],["value","pl"],["value","pt-BR"],["value","pt"],["value","ru"],["value","sl"],["value","es"],["value","sv"],["value","th"],["value","tr"],["value","uk"],["value","orange"],["value","red"],["value","pink"],["value","purple"],["value","deep-purple"],["value","indigo"],["value","blue"],["value","blue-grey"],["value","cyan"],["value","green"],["value","teal"],["value","grey"],["value","brown"],["value","light"],["value","dark"],[1,"grey-text","pr-2",3,"innerHTML"],["name","search_wallpaper","autocomplete","off","type","text","placeholder","/path-to/image.png",1,"form-control","custom-input","form-control-sm","resp-input",3,"ngModelChange","ngModel"],["value","c"],["value","f"],["class","list-group-item d-flex flex-column align-items-center",4,"ngIf"],[1,"list-group-item","d-flex","flex-column","align-items-center"],[1,"grey-text","my-2"],["routerLink","/restart",1,"btn","btn-primary","waves-effect","my-2"],["class","list-group list-group-box mb-4 mx-0","id","fieldsStartup",4,"ngIf"],["id","fieldsStartup",1,"list-group","list-group-box","mb-4","mx-0"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngIf"],["class","list-group-item d-block d-md-flex justify-content-between align-items-center",4,"ngIf"],[1,"grey-text","pr-2"],["type","checkbox","id","homebridgeDebugMode","formControlName","HOMEBRIDGE_DEBUG",1,"rendux-input"],["for","homebridgeDebugMode",1,"rendux-label","ml-3",2,"min-width","50px"],["type","checkbox","id","homebridgeInsecureMode","formControlName","HOMEBRIDGE_INSECURE",1,"rendux-input"],["for","homebridgeInsecureMode",1,"rendux-label","ml-3",2,"min-width","50px"],["type","checkbox","id","homebridgeKeepOrphans","formControlName","HOMEBRIDGE_KEEP_ORPHANS",1,"rendux-input"],["for","homebridgeKeepOrphans",1,"rendux-label","ml-3",2,"min-width","50px"],[1,"text-monospace"],["href","https://github.com/homebridge/homebridge-config-ui-x/wiki/Debug-Common-Values","target","_blank"],[1,"fa","fa/fw","fas","fa-fw","fa-external-link-alt"],["formControlName","ENV_DEBUG","type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input","form-control-sm","resp-input"],["formControlName","ENV_NODE_OPTIONS","type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input","form-control-sm","resp-input"],["routerLink","/platform-tools/docker/startup-script",1,"btn","btn-primary","waves-effect","m-0","ml-3",2,"min-width","50px"],["id","fieldsNetwork",1,"list-group","list-group-box","mt-2","mx-0"],[4,"ngFor","ngForOf"],[1,"btn","btn-primary","waves-effect","m-0","ml-3",2,"min-width","50px",3,"click","disabled"],[1,"fas","fa-fw","fa-chevron-right",3,"ngClass"],[1,"custom-select","resp-select",3,"formControl"],["value","avahi",4,"ngIf"],["value","ciao"],["value","bonjour-hap"],["value","resolved",4,"ngIf"],["type","number","min","1025","max","65533",1,"form-control","custom-input","form-control-sm","resp-input",3,"formControl","ngClass"],["type","number","min","1025","max","65533","placeholder","8581","formControlName","port",1,"form-control","custom-input","form-control-sm","resp-input",3,"ngClass"],[1,"badge","badge-pill","mr-1",3,"ngClass"],["class","fas fa-fw fa-exclamation-triangle",4,"ngIf"],[1,"font-weight-normal"],[1,"fas","fa-fw","fa-exclamation-triangle"],["value","avahi"],["value","resolved"],["class","list-group list-group-box mb-4 mx-0","id","fieldsCache",4,"ngIf"],[1,"small","grey-text","mb-2","mx-0"],["id","fieldsCache",1,"list-group","list-group-box","mb-4","mx-0"],["id","fieldsReset",1,"list-group","list-group-box","mt-2","mx-0"]],template:function(o,d){o&1&&(t(0,"h3",0),a(1),r(2,"translate"),i(),t(3,"div",1)(4,"div",2),b("click",function(){return d.toggleSection("general")}),t(5,"h5",3),g(6,"i",4),a(7),r(8,"translate"),i()(),k(9,Dt,29,24,"ul",5),i(),t(10,"div",1)(11,"div",2),b("click",function(){return d.toggleSection("display")}),t(12,"h5",3),g(13,"i",4),a(14),r(15,"translate"),i()(),k(16,jt,148,81,"ul",6),i(),k(17,Wt,7,8,"form",7),t(18,"form",8)(19,"div",2),b("click",function(){return d.toggleSection("network")}),t(20,"h5",3),g(21,"i",4),a(22),r(23,"translate"),i()(),k(24,Yt,55,55,"ul",9),i(),k(25,ti,8,8,"div",10),t(26,"div",1)(27,"div",2),b("click",function(){return d.toggleSection("reset")}),t(28,"h5",3),g(29,"i",4),a(30),r(31,"translate"),i()(),k(32,ii,3,3,"p",11)(33,ni,24,20,"ul",12),i(),g(34,"div",13)),o&2&&(e(),_(s(2,25,"menu.settings.title")),e(3),v("aria-expanded",d.showFields.general?"true":"false")("aria-controls","fieldsGeneral"),e(2),m("ngClass",d.showFields.general?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(8,27,"settings.general.title_general")," "),e(2),m("ngIf",d.showFields.general),e(2),v("aria-expanded",d.showFields.display?"true":"false")("aria-controls","fieldsDisplay"),e(2),m("ngClass",d.showFields.display?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(15,29,"settings.general.title_display")," "),e(2),m("ngIf",d.showFields.display),e(),m("ngIf",d.$settings.env.serviceMode||d.$settings.env.runningInDocker),e(),m("formGroup",d.uiSettingsForm),e(),v("aria-expanded",d.showFields.network?"true":"false")("aria-controls","fieldsNetwork"),e(2),m("ngClass",d.showFields.network?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(23,31,"settings.network.title_network")," "),e(2),m("ngIf",d.showFields.network),e(),m("ngIf",d.$settings.env.serviceMode),e(2),v("aria-expanded",d.showFields.reset?"true":"false")("aria-controls","fieldsReset"),e(2),m("ngClass",d.showFields.reset?"fa-chevron-down":"fa-chevron-right"),e(),f(" ",s(31,33,"reset.bridges.title")," "),e(2),m("ngIf",d.showFields.reset),e(),m("ngIf",d.showFields.reset))},dependencies:[O,j,A,ke,Ee,$e,he,ye,ee,Be,te,xe,Me,Te,ie,Ce,we,Ie,_e,J,$],encapsulation:2}));let n=c;return n})();var ai=[{path:"",component:Ke,canActivate:[be]}],qe=(()=>{let c=class c{};u(c,"\u0275fac",function(o){return new(o||c)}),u(c,"\u0275mod",Z({type:c})),u(c,"\u0275inj",Y({imports:[re.forChild(ai),re]}));let n=c;return n})();var fn=(()=>{let c=class c{};u(c,"\u0275fac",function(o){return new(o||c)}),u(c,"\u0275mod",Z({type:c})),u(c,"\u0275inj",Y({imports:[ue,Ae,Ne,fe,De,qe]}));let n=c;return n})();export{fn as SettingsModule};
@@ -1 +0,0 @@
1
- import{a as ne}from"./chunk-F22FMU37.js";import{$ as Tt,$a as te,Da as it,Db as ft,Ga as st,Ka as nt,La as C,Lb as Mt,M as Ut,Ma as ot,Oa as A,Rb as jt,Ua as F,Va as H,W as N,Wa as rt,X as Wt,Xa as xt,Y as Gt,Ya as It,Z as I,Za as St,_ as G,a as j,aa as Jt,ab as at,b as W,bb as S,da as Kt,e as Zt,g as ge,h as n,ha as wt,hc as ee,i as Yt,ia as Dt,jb as R,l as k,la as pt,lb as Y,nc as ie,oa as Ct,oc as se,sa as Qt,sb as Ot,t as qt,ta as $t,wa as _,xa as Z,za as Xt}from"./chunk-IGUSDGD6.js";var oe=Zt((Ne,ve)=>{ve.exports={name:"homebridge-config-ui-x",displayName:"Homebridge UI",version:"5.0.0-beta.0",description:"A web based management, configuration and control platform for Homebridge.",author:"oznu <dev@oz.nu>",license:"MIT",funding:[{type:"github",url:"https://github.com/sponsors/oznu"},{type:"paypal",url:"https://paypal.me/oznu"}],repository:{type:"git",url:"git+https://github.com/homebridge/homebridge-config-ui-x.git"},bugs:{url:"https://github.com/homebridge/homebridge-config-ui-x/issues"},keywords:["homebridge-plugin","ui","gui","web","homebridge","homebridge-config-ui-x","ui-x","config-ui-x","homebridge-x","homebridge server","homebridge ui","homebridge-ui","homebridge gui","homebridge-gui","web interface","config ui","management","config editor","linux","macOS","osx","windows","raspberry pi","accessory control","smart home","hb-service"],main:"./dist/index.js",bin:{"homebridge-config-ui-x":"dist/bin/standalone.js","hb-service":"dist/bin/hb-service.js"},engines:{node:"^18 || ^20 || ^22",homebridge:"^1.8.0 || ^2.0.0-beta.0"},scripts:{build:"npm run build:server && npm run build:ui","build:server":"rimraf dist && tsc -p tsconfig.build.json","build:ui":"npm run build --prefix ui",check:"npm run check:server && npm run check:ui","check:server":"npm install && npm outdated","check:ui":"npm install --prefix ui && npm outdated --prefix ui","lang-sync":"ts-node scripts/lang-sync.ts",lint:"eslint . --max-warnings=0","lint:fix":"npm run lint -- --fix",prepublishOnly:"npm i --package-lock-only && npm run lint && npm run build",start:"ts-node -r tsconfig-paths/register src/main.ts",test:"vitest run","test-coverage":"npm run test -- --coverage","upgrade-install":"./scripts/upgrade-install.sh",watch:'concurrently "npm run watch:ui" "npm run watch:server"',"watch:server":"nodemon","watch:ui":"npm run start --prefix ui"},dependencies:{"@fastify/helmet":"11.1.1","@fastify/multipart":"8.3.0","@fastify/static":"7.0.4","@homebridge/hap-client":"2.0.4","@homebridge/node-pty-prebuilt-multiarch":"0.12.0-beta.1","@nestjs/axios":"3.1.2","@nestjs/common":"10.4.8","@nestjs/core":"10.4.8","@nestjs/jwt":"10.2.0","@nestjs/passport":"10.0.3","@nestjs/platform-fastify":"10.4.8","@nestjs/platform-socket.io":"10.4.8","@nestjs/swagger":"8.0.7","@nestjs/websockets":"10.4.8",axios:"1.7.7","bash-color":"0.0.4","buffer-shims":"1.0.0","class-transformer":"0.5.1","class-validator":"0.14.1",commander:"12.1.0",dayjs:"1.11.13",fastify:"4.28.1","fs-extra":"11.2.0",jsonwebtoken:"9.0.2",lodash:"4.17.21","node-cache":"5.1.2","node-schedule":"2.1.1",ora:"5.4.1",otplib:"12.0.1","p-limit":"3.1.0",passport:"0.7.0","passport-jwt":"4.0.1","reflect-metadata":"0.2.2",rxjs:"7.8.1",semver:"7.6.3",systeminformation:"5.23.5",tail:"2.2.6",tar:"6.2.1","tcp-port-used":"1.0.2",unzipper:"0.12.3"},devDependencies:{"@antfu/eslint-config":"^3.9.1","@nestjs/testing":"^10.4.8","@types/fs-extra":"^11.0.4","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/node-schedule":"^2.1.7","@types/passport-jwt":"^4.0.1","@types/semver":"^7.5.8","@types/tail":"^2.2.3","@types/tar":"^6.1.13","@types/tcp-port-used":"^1.0.4","@types/unzipper":"^0.10.10","@vitest/coverage-v8":"^2.1.5",concurrently:"^9.1.0",eslint:"^9.15.0","eslint-plugin-format":"^0.1.2","form-data":"^4.0.1",nodemon:"^3.1.7",rimraf:"^6.0.1","ts-loader":"^9.5.1","ts-node":"^10.9.2","tsconfig-paths":"^4.2.0",typescript:"^5.6.3","unplugin-swc":"^1.5.1",vitest:"^2.1.5"},maintainers:[{email:"bwp91@icloud.com",name:"bwp91"},{email:"dev@oz.nu",name:"oznu"},{email:"northern.man1@gmail.com",name:"northernman"},{email:"mail@anderl-bauer.de",name:"supereg"},{email:"khaos.tian@gmail.com",name:"khaost"},{email:"erik.baauw@xs4all.nl",name:"ebaauw"},{email:"donavan.becker@icloud.com",name:"donavanbecker"},{email:"dustin.greif@gmail.com",name:"dustin.greif"},{email:"nfarina@gmail.com",name:"nfarina"}]}});var re=Zt((Ft,Et)=>{(function(s,t){typeof Ft=="object"&&typeof Et<"u"?Et.exports=t():typeof define=="function"&&define.amd?define(t):(s=typeof globalThis<"u"?globalThis:s||self).dayjs=t()})(Ft,function(){"use strict";var s=1e3,t=6e4,r=36e5,i="millisecond",e="second",o="minute",h="hour",y="day",O="week",w="month",Q="quarter",$="year",E="date",ct="Invalid Date",_t=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,yt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,ut={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(d){var u=["th","st","nd","rd"],a=d%100;return"["+d+(u[(a-20)%10]||u[a]||u[0])+"]"}},P=function(d,u,a){var l=String(d);return!l||l.length>=u?d:""+Array(u+1-l.length).join(a)+d},me={s:P,z:function(d){var u=-d.utcOffset(),a=Math.abs(u),l=Math.floor(a/60),c=a%60;return(u<=0?"+":"-")+P(l,2,"0")+":"+P(c,2,"0")},m:function d(u,a){if(u.date()<a.date())return-d(a,u);var l=12*(a.year()-u.year())+(a.month()-u.month()),c=u.clone().add(l,w),p=a-c<0,f=u.clone().add(l+(p?-1:1),w);return+(-(l+(a-c)/(p?c-f:f-c))||0)},a:function(d){return d<0?Math.ceil(d)||0:Math.floor(d)},p:function(d){return{M:w,y:$,w:O,d:y,D:E,h,m:o,s:e,ms:i,Q}[d]||String(d||"").toLowerCase().replace(/s$/,"")},u:function(d){return d===void 0}},X="en",B={};B[X]=ut;var Vt="$isDayjsObject",bt=function(d){return d instanceof lt||!(!d||!d[Vt])},ht=function d(u,a,l){var c;if(!u)return X;if(typeof u=="string"){var p=u.toLowerCase();B[p]&&(c=p),a&&(B[p]=a,c=p);var f=u.split("-");if(!c&&f.length>1)return d(f[0])}else{var g=u.name;B[g]=u,c=g}return!l&&c&&(X=c),c||!l&&X},b=function(d,u){if(bt(d))return d.clone();var a=typeof u=="object"?u:{};return a.date=d,a.args=arguments,new lt(a)},m=me;m.l=ht,m.i=bt,m.w=function(d,u){return b(d,{locale:u.$L,utc:u.$u,x:u.$x,$offset:u.$offset})};var lt=function(){function d(a){this.$L=ht(a.locale,null,!0),this.parse(a),this.$x=this.$x||a.x||{},this[Vt]=!0}var u=d.prototype;return u.parse=function(a){this.$d=function(l){var c=l.date,p=l.utc;if(c===null)return new Date(NaN);if(m.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var f=c.match(_t);if(f){var g=f[2]-1||0,v=(f[7]||"0").substring(0,3);return p?new Date(Date.UTC(f[1],g,f[3]||1,f[4]||0,f[5]||0,f[6]||0,v)):new Date(f[1],g,f[3]||1,f[4]||0,f[5]||0,f[6]||0,v)}}return new Date(c)}(a),this.init()},u.init=function(){var a=this.$d;this.$y=a.getFullYear(),this.$M=a.getMonth(),this.$D=a.getDate(),this.$W=a.getDay(),this.$H=a.getHours(),this.$m=a.getMinutes(),this.$s=a.getSeconds(),this.$ms=a.getMilliseconds()},u.$utils=function(){return m},u.isValid=function(){return this.$d.toString()!==ct},u.isSame=function(a,l){var c=b(a);return this.startOf(l)<=c&&c<=this.endOf(l)},u.isAfter=function(a,l){return b(a)<this.startOf(l)},u.isBefore=function(a,l){return this.endOf(l)<b(a)},u.$g=function(a,l,c){return m.u(a)?this[l]:this.set(c,a)},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this.$d.getTime()},u.startOf=function(a,l){var c=this,p=!!m.u(l)||l,f=m.p(a),g=function(z,x){var L=m.w(c.$u?Date.UTC(c.$y,x,z):new Date(c.$y,x,z),c);return p?L:L.endOf(y)},v=function(z,x){return m.w(c.toDate()[z].apply(c.toDate("s"),(p?[0,0,0,0]:[23,59,59,999]).slice(x)),c)},T=this.$W,D=this.$M,M=this.$D,U="set"+(this.$u?"UTC":"");switch(f){case $:return p?g(1,0):g(31,11);case w:return p?g(1,D):g(0,D+1);case O:var V=this.$locale().weekStart||0,tt=(T<V?T+7:T)-V;return g(p?M-tt:M+(6-tt),D);case y:case E:return v(U+"Hours",0);case h:return v(U+"Minutes",1);case o:return v(U+"Seconds",2);case e:return v(U+"Milliseconds",3);default:return this.clone()}},u.endOf=function(a){return this.startOf(a,!1)},u.$set=function(a,l){var c,p=m.p(a),f="set"+(this.$u?"UTC":""),g=(c={},c[y]=f+"Date",c[E]=f+"Date",c[w]=f+"Month",c[$]=f+"FullYear",c[h]=f+"Hours",c[o]=f+"Minutes",c[e]=f+"Seconds",c[i]=f+"Milliseconds",c)[p],v=p===y?this.$D+(l-this.$W):l;if(p===w||p===$){var T=this.clone().set(E,1);T.$d[g](v),T.init(),this.$d=T.set(E,Math.min(this.$D,T.daysInMonth())).$d}else g&&this.$d[g](v);return this.init(),this},u.set=function(a,l){return this.clone().$set(a,l)},u.get=function(a){return this[m.p(a)]()},u.add=function(a,l){var c,p=this;a=Number(a);var f=m.p(l),g=function(D){var M=b(p);return m.w(M.date(M.date()+Math.round(D*a)),p)};if(f===w)return this.set(w,this.$M+a);if(f===$)return this.set($,this.$y+a);if(f===y)return g(1);if(f===O)return g(7);var v=(c={},c[o]=t,c[h]=r,c[e]=s,c)[f]||1,T=this.$d.getTime()+a*v;return m.w(T,this)},u.subtract=function(a,l){return this.add(-1*a,l)},u.format=function(a){var l=this,c=this.$locale();if(!this.isValid())return c.invalidDate||ct;var p=a||"YYYY-MM-DDTHH:mm:ssZ",f=m.z(this),g=this.$H,v=this.$m,T=this.$M,D=c.weekdays,M=c.months,U=c.meridiem,V=function(x,L,et,dt){return x&&(x[L]||x(l,p))||et[L].slice(0,dt)},tt=function(x){return m.s(g%12||12,x,"0")},z=U||function(x,L,et){var dt=x<12?"AM":"PM";return et?dt.toLowerCase():dt};return p.replace(yt,function(x,L){return L||function(et){switch(et){case"YY":return String(l.$y).slice(-2);case"YYYY":return m.s(l.$y,4,"0");case"M":return T+1;case"MM":return m.s(T+1,2,"0");case"MMM":return V(c.monthsShort,T,M,3);case"MMMM":return V(M,T);case"D":return l.$D;case"DD":return m.s(l.$D,2,"0");case"d":return String(l.$W);case"dd":return V(c.weekdaysMin,l.$W,D,2);case"ddd":return V(c.weekdaysShort,l.$W,D,3);case"dddd":return D[l.$W];case"H":return String(g);case"HH":return m.s(g,2,"0");case"h":return tt(1);case"hh":return tt(2);case"a":return z(g,v,!0);case"A":return z(g,v,!1);case"m":return String(v);case"mm":return m.s(v,2,"0");case"s":return String(l.$s);case"ss":return m.s(l.$s,2,"0");case"SSS":return m.s(l.$ms,3,"0");case"Z":return f}return null}(x)||f.replace(":","")})},u.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},u.diff=function(a,l,c){var p,f=this,g=m.p(l),v=b(a),T=(v.utcOffset()-this.utcOffset())*t,D=this-v,M=function(){return m.m(f,v)};switch(g){case $:p=M()/12;break;case w:p=M();break;case Q:p=M()/3;break;case O:p=(D-T)/6048e5;break;case y:p=(D-T)/864e5;break;case h:p=D/r;break;case o:p=D/t;break;case e:p=D/s;break;default:p=D}return c?p:m.a(p)},u.daysInMonth=function(){return this.endOf(w).$D},u.$locale=function(){return B[this.$L]},u.locale=function(a,l){if(!a)return this.$L;var c=this.clone(),p=ht(a,l,!0);return p&&(c.$L=p),c},u.clone=function(){return m.w(this.$d,this)},u.toDate=function(){return new Date(this.valueOf())},u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toISOString=function(){return this.$d.toISOString()},u.toString=function(){return this.$d.toUTCString()},d}(),zt=lt.prototype;return b.prototype=zt,[["$ms",i],["$s",e],["$m",o],["$H",h],["$W",y],["$M",w],["$y",$],["$D",E]].forEach(function(d){zt[d[1]]=function(u){return this.$g(u,d[0],d[1])}}),b.extend=function(d,u){return d.$i||(d(u,lt,b),d.$i=!0),b},b.locale=ht,b.isDayjs=bt,b.unix=function(d){return b(1e3*d)},b.en=B[X],b.Ls=B,b.p={},b})});var J={serverTarget:oe().version,production:!0,socket:"",api:{base:"/api",socket:`${window.location.protocol==="http:"?"ws://":"wss://"}${window.location.host}`,origin:window.location.origin},jwt:{tokenKey:"access_token",allowedDomains:[document.location.host],disallowedRoutes:[`${window.location.protocol}//${document.location.host}/api/auth/login`]},apiHttpOptions:{},owm:{appid:"fec67b55f7f74deaa28df89ba6a60821"}};var ce=(()=>{let t=class t{constructor(i){n(this,"$http");this.$http=i}get(i,e){return this.$http.get(`${J.api.base}${i}`,e)}post(i,e,o){return this.$http.post(`${J.api.base}${i}`,e,o)}put(i,e,o){return this.$http.put(`${J.api.base}${i}`,e,o)}patch(i,e,o){return this.$http.patch(`${J.api.base}${i}`,e,o)}delete(i,e){return this.$http.delete(`${J.api.base}${i}`,e)}};n(t,"\u0275fac",function(e){return new(e||t)(I(ee))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})();var q=function(s){return s[s.State=0]="State",s[s.Transition=1]="Transition",s[s.Sequence=2]="Sequence",s[s.Group=3]="Group",s[s.Animate=4]="Animate",s[s.Keyframes=5]="Keyframes",s[s.Style=6]="Style",s[s.Trigger=7]="Trigger",s[s.Reference=8]="Reference",s[s.AnimateChild=9]="AnimateChild",s[s.AnimateRef=10]="AnimateRef",s[s.Query=11]="Query",s[s.Stagger=12]="Stagger",s}(q||{}),Ze="*";function le(s,t){return{type:q.Trigger,name:s,definitions:t,options:{}}}function kt(s,t=null){return{type:q.Animate,styles:t,timings:s}}function Ye(s,t=null){return{type:q.Sequence,steps:s,options:t}}function mt(s){return{type:q.Style,styles:s,offset:null}}function gt(s,t,r){return{type:q.State,name:s,styles:t,options:r}}function At(s,t,r=null){return{type:q.Transition,expr:s,animation:t,options:r}}var ue=class{constructor(t=0,r=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=t+r}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._originalOnStartFns.push(t),this._onStartFns.push(t)}onDone(t){this._originalOnDoneFns.push(t),this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(t){this._position=this.totalTime?t*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(t){let r=t=="start"?this._onStartFns:this._onDoneFns;r.forEach(i=>i()),r.length=0}},he=class{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let r=0,i=0,e=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(h=>{h.onDone(()=>{++r==o&&this._onFinish()}),h.onDestroy(()=>{++i==o&&this._onDestroy()}),h.onStart(()=>{++e==o&&this._onStart()})}),this.totalTime=this.players.reduce((h,y)=>Math.max(h,y.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){let r=t*this.totalTime;this.players.forEach(i=>{let e=i.totalTime?Math.min(1,r/i.totalTime):1;i.setPosition(e)})}getPosition(){let t=this.players.reduce((r,i)=>r===null||i.totalTime>r.totalTime?i:r,null);return t!=null?t.getPosition():0}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){let r=t=="start"?this._onStartFns:this._onDoneFns;r.forEach(i=>i()),r.length=0}},qe="!";var de=["toast-component",""];function be(s,t){if(s&1){let r=St();F(0,"button",5),at("click",function(){wt(r);let e=S();return Dt(e.remove())}),F(1,"span",6),R(2,"\xD7"),H()()}}function Te(s,t){if(s&1&&(xt(0),R(1),It()),s&2){let r=S(2);_(),Y("[",r.duplicatesCount+1,"]")}}function we(s,t){if(s&1&&(F(0,"div"),R(1),st(2,Te,2,1,"ng-container",4),H()),s&2){let r=S();A(r.options.titleClass),nt("aria-label",r.title),_(),Y(" ",r.title," "),_(),C("ngIf",r.duplicatesCount)}}function De(s,t){if(s&1&&rt(0,"div",7),s&2){let r=S();A(r.options.messageClass),C("innerHTML",r.message,$t)}}function Ce(s,t){if(s&1&&(F(0,"div",8),R(1),H()),s&2){let r=S();A(r.options.messageClass),nt("aria-label",r.message),_(),Y(" ",r.message," ")}}function $e(s,t){if(s&1&&(F(0,"div"),rt(1,"div",9),H()),s&2){let r=S();_(),ot("width",r.width()+"%")}}function xe(s,t){if(s&1){let r=St();F(0,"button",5),at("click",function(){wt(r);let e=S();return Dt(e.remove())}),F(1,"span",6),R(2,"\xD7"),H()()}}function Ie(s,t){if(s&1&&(xt(0),R(1),It()),s&2){let r=S(2);_(),Y("[",r.duplicatesCount+1,"]")}}function Se(s,t){if(s&1&&(F(0,"div"),R(1),st(2,Ie,2,1,"ng-container",4),H()),s&2){let r=S();A(r.options.titleClass),nt("aria-label",r.title),_(),Y(" ",r.title," "),_(),C("ngIf",r.duplicatesCount)}}function Oe(s,t){if(s&1&&rt(0,"div",7),s&2){let r=S();A(r.options.messageClass),C("innerHTML",r.message,$t)}}function Me(s,t){if(s&1&&(F(0,"div",8),R(1),H()),s&2){let r=S();A(r.options.messageClass),nt("aria-label",r.message),_(),Y(" ",r.message," ")}}function je(s,t){if(s&1&&(F(0,"div"),rt(1,"div",9),H()),s&2){let r=S();_(),ot("width",r.width()+"%")}}var Ht=class{constructor(t,r){n(this,"_attachedHost");n(this,"component");n(this,"viewContainerRef");n(this,"injector");this.component=t,this.injector=r}attach(t,r){return this._attachedHost=t,t.attach(this,r)}detach(){let t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return this._attachedHost!=null}setAttachedHost(t){this._attachedHost=t}},Rt=class{constructor(){n(this,"_attachedPortal");n(this,"_disposeFn")}attach(t,r){return this._attachedPortal=t,this.attachComponentPortal(t,r)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}},Lt=class{constructor(t){n(this,"_overlayRef");n(this,"componentInstance");n(this,"duplicatesCount",0);n(this,"_afterClosed",new k);n(this,"_activate",new k);n(this,"_manualClose",new k);n(this,"_resetTimeout",new k);n(this,"_countDuplicate",new k);this._overlayRef=t}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,r){t&&this._resetTimeout.next(),r&&this._countDuplicate.next(++this.duplicatesCount)}},K=class{constructor(t,r,i,e,o,h){n(this,"toastId");n(this,"config");n(this,"message");n(this,"title");n(this,"toastType");n(this,"toastRef");n(this,"_onTap",new k);n(this,"_onAction",new k);this.toastId=t,this.config=r,this.message=i,this.title=e,this.toastType=o,this.toastRef=h,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}},pe={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,includeTitleDuplicates:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},fe=new Gt("ToastConfig"),Nt=class extends Rt{constructor(r,i,e){super();n(this,"_hostDomElement");n(this,"_componentFactoryResolver");n(this,"_appRef");this._hostDomElement=r,this._componentFactoryResolver=i,this._appRef=e}attachComponentPortal(r,i){let e=this._componentFactoryResolver.resolveComponentFactory(r.component),o;return o=e.create(r.injector),this._appRef.attachView(o.hostView),this.setDisposeFn(()=>{this._appRef.detachView(o.hostView),o.destroy()}),i?this._hostDomElement.insertBefore(this._getComponentRootNode(o),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(o)),o}_getComponentRootNode(r){return r.hostView.rootNodes[0]}},Fe=(()=>{let t=class t{constructor(){n(this,"_document",G(Mt));n(this,"_containerElement")}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let i=this._document.createElement("div");i.classList.add("overlay-container"),i.setAttribute("aria-live","polite"),this._document.body.appendChild(i),this._containerElement=i}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),Pt=class{constructor(t){n(this,"_portalHost");this._portalHost=t}attach(t,r=!0){return this._portalHost.attach(t,r)}detach(){return this._portalHost.detach()}},Ee=(()=>{let t=class t{constructor(){n(this,"_overlayContainer",G(Fe));n(this,"_componentFactoryResolver",G(Xt));n(this,"_appRef",G(ft));n(this,"_document",G(Mt));n(this,"_paneElements",new Map)}create(i,e){return this._createOverlayRef(this.getPaneElement(i,e))}getPaneElement(i="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[i]||(this._paneElements.get(e)[i]=this._createPaneElement(i,e)),this._paneElements.get(e)[i]}_createPaneElement(i,e){let o=this._document.createElement("div");return o.id="toast-container",o.classList.add(i),o.classList.add("toast-container"),e?e.getContainerElement().appendChild(o):this._overlayContainer.getContainerElement().appendChild(o),o}_createPortalHost(i){return new Nt(i,this._componentFactoryResolver,this._appRef)}_createOverlayRef(i){return new Pt(this._createPortalHost(i))}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),vt=(()=>{let t=class t{constructor(i,e,o,h,y){n(this,"overlay");n(this,"_injector");n(this,"sanitizer");n(this,"ngZone");n(this,"toastrConfig");n(this,"currentlyActive",0);n(this,"toasts",[]);n(this,"overlayContainer");n(this,"previousToastMessage");n(this,"index",0);this.overlay=e,this._injector=o,this.sanitizer=h,this.ngZone=y,this.toastrConfig=j(j({},i.default),i.config),i.config.iconClasses&&(this.toastrConfig.iconClasses=j(j({},i.default.iconClasses),i.config.iconClasses))}show(i,e,o={},h=""){return this._preBuildNotification(h,i,e,this.applyConfig(o))}success(i,e,o={}){let h=this.toastrConfig.iconClasses.success||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}error(i,e,o={}){let h=this.toastrConfig.iconClasses.error||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}info(i,e,o={}){let h=this.toastrConfig.iconClasses.info||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}warning(i,e,o={}){let h=this.toastrConfig.iconClasses.warning||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}clear(i){for(let e of this.toasts)if(i!==void 0){if(e.toastId===i){e.toastRef.manualClose();return}}else e.toastRef.manualClose()}remove(i){let e=this._findToast(i);if(!e||(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length))return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){let o=this.toasts[this.currentlyActive].toastRef;o.isInactive()||(this.currentlyActive=this.currentlyActive+1,o.activate())}return!0}findDuplicate(i="",e="",o,h){let{includeTitleDuplicates:y}=this.toastrConfig;for(let O of this.toasts){let w=y&&O.title===i;if((!y||w)&&O.message===e)return O.toastRef.onDuplicate(o,h),O}return null}applyConfig(i={}){return j(j({},this.toastrConfig),i)}_findToast(i){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===i)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(i,e,o,h){return h.onActivateTick?this.ngZone.run(()=>this._buildNotification(i,e,o,h)):this._buildNotification(i,e,o,h)}_buildNotification(i,e,o,h){if(!h.toastComponent)throw new Error("toastComponent required");let y=this.findDuplicate(o,e,this.toastrConfig.resetTimeoutOnDuplicate&&h.timeOut>0,this.toastrConfig.countDuplicates);if((this.toastrConfig.includeTitleDuplicates&&o||e)&&this.toastrConfig.preventDuplicates&&y!==null)return y;this.previousToastMessage=e;let O=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(O=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));let w=this.overlay.create(h.positionClass,this.overlayContainer);this.index=this.index+1;let Q=e;e&&h.enableHtml&&(Q=this.sanitizer.sanitize(Qt.HTML,e));let $=new Lt(w),E=new K(this.index,h,Q,o,i,$),ct=[{provide:K,useValue:E}],_t=pt.create({providers:ct,parent:this._injector}),yt=new Ht(h.toastComponent,_t),ut=w.attach(yt,h.newestOnTop);$.componentInstance=ut.instance;let P={toastId:this.index,title:o||"",message:e||"",toastRef:$,onShown:$.afterActivate(),onHidden:$.afterClosed(),onTap:E.onTap(),onAction:E.onAction(),portal:ut};return O||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{P.toastRef.activate()})),this.toasts.push(P),P}};n(t,"\u0275fac",function(e){return new(e||t)(I(fe),I(Ee),I(pt),I(se),I(Ct))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),ke=(()=>{let t=class t{constructor(i,e,o){n(this,"toastrService");n(this,"toastPackage");n(this,"ngZone");n(this,"message");n(this,"title");n(this,"options");n(this,"duplicatesCount");n(this,"originalTimeout");n(this,"width",it(-1));n(this,"toastClasses","");n(this,"state");n(this,"timeout");n(this,"intervalId");n(this,"hideTime");n(this,"sub");n(this,"sub1");n(this,"sub2");n(this,"sub3");this.toastrService=i,this.toastPackage=e,this.ngZone=o,this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(h=>{this.duplicatesCount=h}),this.state=it({value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}})}get _state(){return this.state()}get displayStyle(){if(this.state().value==="inactive")return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.update(i=>W(j({},i),{value:"active"})),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let i=new Date().getTime(),e=this.hideTime-i;this.width.set(e/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(o=>100-o),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.update(i=>W(j({},i),{value:"active"})),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){this.state().value!=="removed"&&(clearTimeout(this.timeout),this.state.update(i=>W(j({},i),{value:"removed"})),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){this.state().value!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state().value!=="removed"&&this.options.disableTimeOut!=="extendedTimeOut"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state().value==="removed"||(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(i,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(i),e)):this.timeout=setTimeout(()=>i(),e)}outsideInterval(i,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(i),e)):this.intervalId=setInterval(()=>i(),e)}runInsideAngular(i){this.ngZone?this.ngZone.run(()=>i()):i()}};n(t,"\u0275fac",function(e){return new(e||t)(Z(vt),Z(K),Z(Ct))}),n(t,"\u0275cmp",Tt({type:t,selectors:[["","toast-component",""]],hostVars:5,hostBindings:function(e,o){e&1&&at("click",function(){return o.tapToast()})("mouseenter",function(){return o.stickAround()})("mouseleave",function(){return o.delayedHideToast()}),e&2&&(te("@flyInOut",o._state),A(o.toastClasses),ot("display",o.displayStyle))},standalone:!0,features:[Ot],attrs:de,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(e,o){e&1&&st(0,be,3,0,"button",0)(1,we,3,5,"div",1)(2,De,1,3,"div",2)(3,Ce,2,4,"div",3)(4,$e,2,2,"div",4),e&2&&(C("ngIf",o.options.closeButton),_(),C("ngIf",o.title),_(),C("ngIf",o.message&&o.options.enableHtml),_(),C("ngIf",o.message&&!o.options.enableHtml),_(),C("ngIf",o.options.progressBar))},dependencies:[jt],encapsulation:2,data:{animation:[le("flyInOut",[gt("inactive",mt({opacity:0})),gt("active",mt({opacity:1})),gt("removed",mt({opacity:0})),At("inactive => active",kt("{{ easeTime }}ms {{ easing }}")),At("active => removed",kt("{{ easeTime }}ms {{ easing }}"))])]},changeDetection:0}));let s=t;return s})(),Ae=W(j({},pe),{toastComponent:ke}),He=(s={})=>Kt([{provide:fe,useValue:{default:Ae,config:s}}]),ci=(()=>{let t=class t{static forRoot(i={}){return{ngModule:t,providers:[He(i)]}}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275mod",Jt({type:t})),n(t,"\u0275inj",Wt({}));let s=t;return s})();var Re=(()=>{let t=class t{constructor(i,e,o){n(this,"toastrService");n(this,"toastPackage");n(this,"appRef");n(this,"message");n(this,"title");n(this,"options");n(this,"duplicatesCount");n(this,"originalTimeout");n(this,"width",it(-1));n(this,"toastClasses","");n(this,"state",it("inactive"));n(this,"timeout");n(this,"intervalId");n(this,"hideTime");n(this,"sub");n(this,"sub1");n(this,"sub2");n(this,"sub3");this.toastrService=i,this.toastPackage=e,this.appRef=o,this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(h=>{this.duplicatesCount=h})}get displayStyle(){return this.state()==="inactive"?"none":null}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.set("active"),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let i=new Date().getTime(),e=this.hideTime-i;this.width.set(e/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(o=>100-o),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.set("active"),this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=new Date().getTime()+(this.originalTimeout||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.state.set("removed"),this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){this.state()!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state()==="removed"||(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};n(t,"\u0275fac",function(e){return new(e||t)(Z(vt),Z(K),Z(ft))}),n(t,"\u0275cmp",Tt({type:t,selectors:[["","toast-component",""]],hostVars:4,hostBindings:function(e,o){e&1&&at("click",function(){return o.tapToast()})("mouseenter",function(){return o.stickAround()})("mouseleave",function(){return o.delayedHideToast()}),e&2&&(A(o.toastClasses),ot("display",o.displayStyle))},standalone:!0,features:[Ot],attrs:de,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(e,o){e&1&&st(0,xe,3,0,"button",0)(1,Se,3,5,"div",1)(2,Oe,1,3,"div",2)(3,Me,2,4,"div",3)(4,je,2,2,"div",4),e&2&&(C("ngIf",o.options.closeButton),_(),C("ngIf",o.title),_(),C("ngIf",o.message&&o.options.enableHtml),_(),C("ngIf",o.message&&!o.options.enableHtml),_(),C("ngIf",o.options.progressBar))},dependencies:[jt],encapsulation:2,changeDetection:0}));let s=t;return s})(),ui=W(j({},pe),{toastComponent:Re});var Bt=ge(re(),1);var fi=(()=>{let t=class t{constructor(i,e,o,h){n(this,"$api");n(this,"$title");n(this,"$toastr");n(this,"$translate");n(this,"env",{});n(this,"formAuth",!0);n(this,"uiVersion");n(this,"theme");n(this,"lightingMode");n(this,"currentLightingMode");n(this,"actualLightingMode");n(this,"browserLightingMode");n(this,"loginWallpaper");n(this,"serverTimeOffset",0);n(this,"themeList",["orange","red","pink","purple","deep-purple","indigo","blue","blue-grey","cyan","green","teal","grey","brown"]);n(this,"rtl",!1);n(this,"settingsLoadedSubject",new k);n(this,"onSettingsLoaded",this.settingsLoadedSubject.pipe(Ut()));n(this,"settingsLoaded",!1);this.$api=i,this.$title=e,this.$toastr=o,this.$translate=h,this.getAppSettings()}getAppSettings(){return Yt(this,null,function*(){let i=yield qt(this.$api.get("/auth/settings"));this.formAuth=i.formAuth,this.env=i.env,this.lightingMode=i.lightingMode,this.loginWallpaper=i.loginWallpaper,this.setLightingMode(this.lightingMode,"user"),this.setTheme(i.theme),this.setTitle(this.env.homebridgeInstanceName),this.checkServerTime(i.serverTimestamp),this.setUiVersion(i.env.packageVersion),this.setLang(this.env.lang),this.settingsLoaded=!0,this.settingsLoadedSubject.next(void 0)})}setBrowserLightingMode(i){this.browserLightingMode=i,this.lightingMode==="auto"&&this.setLightingMode(i,"browser")}setLightingMode(i,e){e==="user"&&(this.lightingMode=i),this.currentLightingMode=i,this.actualLightingMode=this.currentLightingMode==="auto"?this.browserLightingMode:this.currentLightingMode,this.theme&&this.setTheme(this.theme)}setTheme(i){(!i||!this.themeList.includes(i))&&(i="orange");let e=window.document.querySelector("body");e.classList.remove(`config-ui-x-${this.theme}`),e.classList.remove(`config-ui-x-dark-mode-${this.theme}`),this.theme=i,this.actualLightingMode==="dark"?(e.classList.add(`config-ui-x-dark-mode-${this.theme}`),e.classList.contains("dark-mode")||e.classList.add("dark-mode")):(e.classList.add(`config-ui-x-${this.theme}`),e.classList.contains("dark-mode")&&e.classList.remove("dark-mode"))}setTitle(i){this.$title.setTitle(i||"Homebridge")}setUiVersion(i){this.uiVersion||(this.uiVersion=i)}setLang(i){i?this.$translate.use(i):i="auto",this.env.lang=i}setEnvItem(i,e){this.env[i]=e}checkServerTime(i){let o=(0,Bt.default)(i).diff((0,Bt.default)(),"hour");this.serverTimeOffset=o*60*60,(o>=8||o<=-8)&&this.$toastr.warning(this.$translate.instant("settings.datetime.incorrect"),this.$translate.instant("toast.title_warning"),{timeOut:2e4,tapToDismiss:!1}).onTap.subscribe(()=>{window.open("https://homebridge.io/w/JqTFs","_blank")})}};n(t,"\u0275fac",function(e){return new(e||t)(I(ce),I(ie),I(vt),I(ne))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})();export{re as a,J as b,ce as c,q as d,Ze as e,Ye as f,mt as g,ue as h,he as i,qe as j,vt as k,ci as l,fi as m};
@@ -1 +0,0 @@
1
- import{a as O,b as G}from"./chunk-THFLPY67.js";import{a as j}from"./chunk-C4VKSYGU.js";import{M as H}from"./chunk-WCDFKYP6.js";import{c as D,k as M}from"./chunk-PSLVYKAC.js";import{a as z,b as V}from"./chunk-F22FMU37.js";import{$ as C,Ab as w,Ga as b,Ka as S,La as p,Rb as F,Ua as o,Va as a,Wa as h,Za as $,ab as x,bb as f,fc as E,g as R,gc as P,h as n,ha as I,i as g,ia as y,jb as d,kb as v,lb as k,sc as A,ub as B,wa as r,xa as _,yb as m,zb as u}from"./chunk-IGUSDGD6.js";var W=R(O(),1),N=R(G(),1);var J=e=>({maxBackupSizeText:e});function K(e,c){if(e&1&&(o(0,"div"),h(1,"input",13),a()),e&2){let t=f(2);r(),p("value",t.selectedBackup.fileName)}}function L(e,c){if(e&1){let t=$();o(0,"div",14)(1,"input",15),x("change",function(i){I(t);let l=f(2);return y(l.handleRestoreFileInput(i.target.files))}),a(),o(2,"label",16),d(3),m(4,"translate"),a()()}if(e&2){let t=f(2);r(3),k(" ",u(4,1,(t.selectedFile==null?null:t.selectedFile.name)||"backup.label_choose_backup_file_to_restore")," ")}}function Q(e,c){if(e&1&&(o(0,"div",8)(1,"div",9),h(2,"i",10),a(),o(3,"p"),d(4),m(5,"translate"),a(),o(6,"ul")(7,"li"),d(8),m(9,"translate"),a(),o(10,"li"),d(11),m(12,"translate"),a(),o(13,"li"),d(14),m(15,"translate"),a()(),b(16,K,2,1,"div",11)(17,L,5,3,"div",12),a()),e&2){let t=f();r(4),v(u(5,6,"backup.restore_help_one")),r(4),v(u(9,8,"backup.restore_help_two")),r(3),v(w(12,10,"backup.restore_max_size",B(15,J,t.maxFileSizeText))),r(3),v(u(15,13,"backup.restore_warning")),r(2),p("ngIf",t.selectedBackup),r(),p("ngIf",!t.selectedBackup)}}function X(e,c){e&1&&h(0,"i",24)}function Y(e,c){if(e&1&&(o(0,"span"),d(1),a()),e&2){let t=f(3);r(),k("",t.uploadPercent,"% - ")}}function Z(e,c){e&1&&(o(0,"span"),d(1," Extracting Archive"),a())}function ee(e,c){e&1&&(o(0,"span"),d(1),m(2,"translate"),a()),e&2&&(r(),k(" ",u(2,1,"backup.label_uploading"),""))}function te(e,c){if(e&1&&(o(0,"span"),b(1,X,1,0,"i",23)(2,Y,2,1,"span",11)(3,Z,2,0,"span",11)(4,ee,3,3,"span",11),a()),e&2){let t=f(2);r(),p("ngIf",!t.uploadPercent||t.uploadPercent===100),r(),p("ngIf",t.uploadPercent&&t.uploadPercent!==100),r(),p("ngIf",t.uploadPercent===100),r(),p("ngIf",t.uploadPercent!==100)}}function ie(e,c){e&1&&(o(0,"span"),d(1),m(2,"translate"),a()),e&2&&(r(),v(u(2,1,"form.button_restore")))}function re(e,c){if(e&1){let t=$();o(0,"div",17)(1,"div",18)(2,"button",19),m(3,"translate"),x("click",function(){I(t);let i=f();return y(i.$activeModal.dismiss("Dismiss"))}),d(4),m(5,"translate"),a()(),h(6,"div",20),o(7,"div",21)(8,"button",22),x("click",function(){I(t);let i=f();return y(i.onRestoreBackupClick())}),b(9,te,5,4,"span",11)(10,ie,3,3,"span",11),a()()()}if(e&2){let t=f();r(2),p("disabled",t.clicked),S("aria-label",u(3,6,"form.button_close")),r(2),k(" ",u(5,8,"form.button_close")," "),r(4),p("disabled",!t.selectedBackup&&!t.selectedFile||t.clicked),r(),p("ngIf",t.clicked),r(),p("ngIf",!t.clicked)}}function se(e,c){if(e&1){let t=$();o(0,"div",17),h(1,"div",18),o(2,"div",20)(3,"button",25),x("click",function(){I(t);let i=f();return y(i.postBackupRestart())}),d(4),m(5,"translate"),a()(),h(6,"div",21),a()}e&2&&(r(4),k(" ",u(5,1,"menu.hbrestart.title")," "))}var fe=(()=>{let c=class c{constructor(s,i,l,T,U,q){n(this,"$activeModal");n(this,"$api");n(this,"$route");n(this,"$toastr");n(this,"$translate");n(this,"$ws");n(this,"setupWizardRestore",!1);n(this,"selectedBackup",null);n(this,"clicked",!1);n(this,"maxFileSizeText",globalThis.backup.maxBackupSizeText);n(this,"selectedFile");n(this,"restoreInProgress",!1);n(this,"restoreStarted",!1);n(this,"restoreFailed",!1);n(this,"restoreArchiveType","homebridge");n(this,"uploadPercent",0);n(this,"term",new W.Terminal);n(this,"termTarget");n(this,"fitAddon",new N.FitAddon);n(this,"io");this.$activeModal=s,this.$api=i,this.$route=l,this.$toastr=T,this.$translate=U,this.$ws=q}ngOnInit(){return g(this,null,function*(){this.io=this.$ws.connectToNamespace("backup"),this.termTarget=document.getElementById("plugin-log-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",s=>{this.term.write(s)}),this.setupWizardRestore&&(this.restoreStarted=!0,this.restoreInProgress=!0,this.startRestore())})}onRestoreBackupClick(){this.selectedBackup?this.restoreScheduledBackup():this.restoreArchiveType==="homebridge"?this.uploadHomebridgeArchive():this.restoreArchiveType==="hbfx"&&this.uploadHbfxArchive()}uploadHomebridgeArchive(){this.term.reset(),this.clicked=!0;let s=new FormData;s.append("restoreArchive",this.selectedFile,this.selectedFile.name),this.$api.post("/backup/restore",s).subscribe({next:()=>{this.restoreStarted=!0,this.restoreInProgress=!0,setTimeout(()=>{this.startRestore()},500),this.clicked=!1},error:i=>{var l;console.error(i),this.$toastr.error(((l=i.error)==null?void 0:l.message)||this.$translate.instant("backup.restore_failed"),this.$translate.instant("toast.title_error")),this.clicked=!1}})}restoreScheduledBackup(){return g(this,null,function*(){this.term.reset(),this.clicked=!0,this.$api.post(`/backup/scheduled-backups/${this.selectedBackup.id}/restore`,{}).subscribe({next:()=>{this.restoreStarted=!0,this.restoreInProgress=!0,setTimeout(()=>{this.startRestore()},500),this.clicked=!1},error:s=>{var i;console.error(s),this.$toastr.error(((i=s.error)==null?void 0:i.message)||this.$translate.instant("backup.restore_failed"),this.$translate.instant("toast.title_error")),this.clicked=!1}})})}startRestore(){return g(this,null,function*(){this.io.request("do-restore").subscribe({next:()=>{this.restoreInProgress=!1,this.$toastr.success(this.$translate.instant("backup.backup_restored"),this.$translate.instant("toast.title_success")),this.setupWizardRestore&&this.postBackupRestart()},error:s=>{this.restoreFailed=!0,console.error(s),this.$toastr.error(this.$translate.instant("backup.restore_failed"),this.$translate.instant("toast.title_error"))}})})}uploadHbfxArchive(){this.term.reset(),this.clicked=!0;let s=new FormData;s.append("restoreArchive",this.selectedFile,this.selectedFile.name),this.$api.post("/backup/restore/hbfx",s,{reportProgress:!0,observe:"events"}).subscribe({next:i=>{i.type===E.UploadProgress?this.uploadPercent=Math.round(100*i.loaded/i.total):i instanceof P&&(this.restoreStarted=!0,this.restoreInProgress=!0,setTimeout(()=>{this.startHbfxRestore()},500),this.clicked=!1)},error:i=>{var l;this.clicked=!1,console.error(i),this.$toastr.error(((l=i.error)==null?void 0:l.message)||this.$translate.instant("backup.restore_failed"),this.$translate.instant("toast.title_error"))}})}startHbfxRestore(){return g(this,null,function*(){this.io.request("do-restore-hbfx").subscribe({next:()=>{this.restoreInProgress=!1,this.$toastr.success(this.$translate.instant("backup.backup_restored"),this.$translate.instant("toast.title_success"))},error:s=>{this.restoreFailed=!0,console.error(s),this.$toastr.error(this.$translate.instant("backup.restore_failed"),this.$translate.instant("toast.title_error"))}})})}handleRestoreFileInput(s){s.length?(this.selectedFile=s[0],this.selectedFile.name.endsWith(".hbfx")?this.restoreArchiveType="hbfx":this.restoreArchiveType="homebridge"):delete this.selectedFile}postBackupRestart(){this.$api.put("/backup/restart",{}).subscribe({next:()=>{this.$activeModal.close(!0),this.$route.navigate(["/"])},error:()=>{}})}ngOnDestroy(){this.io.end()}};n(c,"\u0275fac",function(i){return new(i||c)(_(H),_(D),_(A),_(M),_(z),_(j))}),n(c,"\u0275cmp",C({type:c,selectors:[["ng-component"]],inputs:{setupWizardRestore:"setupWizardRestore",selectedBackup:"selectedBackup"},decls:13,vars:11,consts:[[1,"modal-content","hb-backup-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],["id","plugin-log-output",1,"modal-body",3,"hidden"],["class","modal-footer justify-content-between",4,"ngIf"],[1,"modal-body"],[1,"text-center","mt-2","mb-3"],[1,"fas","fa-fw","fa-hard-drive","primary-text",2,"font-size","75px"],[4,"ngIf"],["class","custom-file",4,"ngIf"],["type","text","disabled","",1,"form-control","custom-input",3,"value"],[1,"custom-file"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz, .hbfx",1,"custom-file-input",3,"change"],["for","restoreFileUpload",1,"custom-file-label"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],["class","fa fa-fw fa-circle-notch fa-spin",4,"ngIf"],[1,"fa","fa-fw","fa-circle-notch","fa-spin"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(i,l){i&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),d(3),m(4,"translate"),a(),o(5,"button",3),m(6,"translate"),x("click",function(){return l.$activeModal.dismiss("Dismiss")}),o(7,"span",4),d(8,"\xD7"),a()()(),b(9,Q,18,17,"div",5),h(10,"div",6),b(11,re,11,10,"div",7)(12,se,7,3,"div",7),a()),i&2&&(r(3),v(u(4,7,"form.button_restore")),r(2),p("disabled",l.restoreInProgress),S("aria-label",u(6,9,"form.button_close")),r(4),p("ngIf",!l.restoreStarted&&!l.setupWizardRestore),r(),p("hidden",!l.restoreStarted),r(),p("ngIf",!l.restoreStarted||l.restoreFailed===!0),r(),p("ngIf",!l.restoreInProgress&&l.restoreStarted))},dependencies:[F,V],encapsulation:2}));let e=c;return e})();export{fe as a};
@@ -1 +0,0 @@
1
- import{m}from"./chunk-PSLVYKAC.js";import{W as c,Z as s,h as e,i as n,sc as f,t as a}from"./chunk-IGUSDGD6.js";var l=(()=>{let t=class t{constructor(o,r){e(this,"$router");e(this,"$settings");this.$router=o,this.$settings=r}canActivate(){return n(this,null,function*(){return this.$settings.settingsLoaded||(yield a(this.$settings.onSettingsLoaded)),this.$settings.env.setupWizardComplete===!1||this.$router.navigate(["/"]),!0})}};e(t,"\u0275fac",function(r){return new(r||t)(s(f),s(m))}),e(t,"\u0275prov",c({token:t,factory:t.\u0275fac,providedIn:"root"}));let i=t;return i})();export{l as a};
@@ -1,2 +0,0 @@
1
- import{a as R}from"./chunk-WCDFKYP6.js";import{$ as c,$b as D,Ea as f,V as M,Wa as g,X as v,Y as w,_ as a,aa as C,fb as b,gb as E,hb as N,ka as l,na as y,oa as u,rb as O,sb as m,z as h}from"./chunk-IGUSDGD6.js";var F=["editorContainer"],S="[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}",x=new w("NGX_MONACO_EDITOR_CONFIG"),q=!1,I,z=(()=>{let i=class i{constructor(){this.config=a(x),this.onInit=new y,this._insideNg=!1}set insideNg(e){this._insideNg=e,this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get insideNg(){return this._insideNg}ngAfterViewInit(){q?I.then(()=>{this.initMonaco(this._options,this.insideNg)}):(q=!0,I=new Promise(e=>{let t=this.config.baseUrl;if((t==="assets"||!t)&&(t="./assets/monaco/min/vs"),typeof window.monaco=="object"){this.initMonaco(this._options,this.insideNg),e();return}let o=r=>{let p=r||window.require,_={paths:{vs:`${t}`}};Object.assign(_,this.config.requireConfig||{}),p.config(_),p(["vs/editor/editor.main"],()=>{typeof this.config.onMonacoLoad=="function"&&this.config.onMonacoLoad(),this.initMonaco(this._options,this.insideNg),e()})};if(this.config.monacoRequire)o(this.config.monacoRequire);else if(window.require)if(window.require.config)o();else{var s=`${t}/loader.js`,d=new XMLHttpRequest;d.addEventListener("load",()=>{let r=document.createElement("script");r.type="text/javascript",r.text=["var nodeRequire = require;",d.responseText.replace('"use strict";',""),"var monacoAmdRequire = require;","require = nodeRequire;","require.nodeRequire = require;"].join(`
2
- `),document.body.appendChild(r),o(window.monacoAmdRequire)}),d.open("GET",s),d.send()}else{let r=document.createElement("script");r.type="text/javascript",r.src=`${t}/loader.js`,r.addEventListener("load",()=>{o()}),document.body.appendChild(r)}}))}ngOnDestroy(){this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._editor&&(this._editor.dispose(),this._editor=void 0)}};i.\u0275fac=function(t){return new(t||i)},i.\u0275cmp=c({type:i,selectors:[["ng-component"]],viewQuery:function(t,o){if(t&1&&b(F,7),t&2){let s;E(s=N())&&(o._editorContainer=s.first)}},inputs:{insideNg:"insideNg"},outputs:{onInit:"onInit"},decls:0,vars:0,template:function(t,o){},encapsulation:2});let n=i;return n})(),$=(()=>{let i=class i extends z{constructor(){super(...arguments),this.zone=a(u),this._value="",this.propagateChange=e=>{},this.onTouched=()=>{}}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(e,this.insideNg))}get options(){return this._options}set model(e){this.options.model=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}writeValue(e){this._value=e||"",setTimeout(()=>{this._editor&&!this.options.model&&this._editor.setValue(this._value)})}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){this.onTouched=e}initMonaco(e,t){let o=!!e.model;if(o){let s=monaco.editor.getModel(e.model.uri||"");s?(e.model=s,e.model.setValue(this._value)):e.model=monaco.editor.createModel(e.model.value,e.model.language,e.model.uri)}t?this._editor=monaco.editor.create(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.create(this._editorContainer.nativeElement,e)}),o||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(s=>{let d=this._editor.getValue();this.zone.run(()=>{this.propagateChange(d),this._value=d})}),this._editor.onDidBlurEditorWidget(()=>{this.onTouched()}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=h(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}};i.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(i)))(o||i)}})(),i.\u0275cmp=c({type:i,selectors:[["ngx-monaco-editor"]],inputs:{options:"options",model:"model"},standalone:!0,features:[O([{provide:R,useExisting:M(()=>i),multi:!0}]),f,m],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(t,o){t&1&&g(0,"div",1,0)},styles:["[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}"],changeDetection:0});let n=i;return n})(),H=(()=>{let i=class i extends z{constructor(){super(...arguments),this.zone=a(u)}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(e,this.insideNg))}get options(){return this._options}set originalModel(e){this._originalModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}set modifiedModel(e){this._modifiedModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}initMonaco(e,t){if(!this._originalModel||!this._modifiedModel)throw new Error("originalModel or modifiedModel not found for ngx-monaco-diff-editor");this._originalModel.language=this._originalModel.language||e.language,this._modifiedModel.language=this._modifiedModel.language||e.language;let o=monaco.editor.createModel(this._originalModel.code,this._originalModel.language),s=monaco.editor.createModel(this._modifiedModel.code,this._modifiedModel.language);this._editorContainer.nativeElement.innerHTML="";let d=e.theme;t?this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e)}),e.theme=d,this._editor.setModel({original:o,modified:s}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=h(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}};i.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(i)))(o||i)}})(),i.\u0275cmp=c({type:i,selectors:[["ngx-monaco-diff-editor"]],inputs:{options:"options",originalModel:"originalModel",modifiedModel:"modifiedModel"},standalone:!0,features:[f,m],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(t,o){t&1&&g(0,"div",1,0)},styles:[S],changeDetection:0});let n=i;return n})(),W=(()=>{let i=class i{static forRoot(e={}){return{ngModule:i,providers:[{provide:x,useValue:e}]}}};i.\u0275fac=function(t){return new(t||i)},i.\u0275mod=C({type:i}),i.\u0275inj=v({imports:[D]});let n=i;return n})();export{$ as a,H as b,W as c};
@@ -1 +0,0 @@
1
- import{Q as F,z as C}from"./chunk-WCDFKYP6.js";import{b as y,c as E}from"./chunk-F22FMU37.js";import{$ as B,$b as I,Ga as h,Ka as m,La as b,Pb as _,Rb as k,Ua as t,Va as r,Wa as l,X as g,aa as x,ab as w,h as d,jb as p,kb as c,lb as s,vc as S,wa as e,yb as i,zb as n}from"./chunk-IGUSDGD6.js";function D(o,a){o&1&&(t(0,"ul",9)(1,"li",10)(2,"span",11),p(3),i(4,"translate"),l(5,"br"),t(6,"small",12),p(7),i(8,"translate"),r()(),t(9,"a",13),i(10,"translate"),l(11,"i",14),r()(),t(12,"li",10)(13,"span",11),p(14),i(15,"translate"),l(16,"br"),t(17,"small",12),p(18),i(19,"translate"),r()(),t(20,"a",15),i(21,"translate"),l(22,"i",14),r()(),t(23,"li",10)(24,"span",11),p(25),i(26,"translate"),l(27,"br"),t(28,"small",12),p(29),i(30,"translate"),r()(),t(31,"a",16),i(32,"translate"),l(33,"i",14),r()(),t(34,"li",10)(35,"span",11),p(36),i(37,"translate"),l(38,"br"),t(39,"small",12),p(40),i(41,"translate"),r()(),t(42,"a",17),i(43,"translate"),l(44,"i",14),r()()()),o&2&&(e(3),s(" ",n(4,12,"support.links.documentation"),""),e(4),c(n(8,14,"support.links.documentation_sub")),e(2),m("aria-label",n(10,16,"support.links.documentation")),e(5),s(" ",n(15,18,"support.links.issue"),""),e(4),c(n(19,20,"support.links.issue_sub")),e(2),m("aria-label",n(21,22,"support.links.issue")),e(5),s(" ",n(26,24,"support.links.discord"),""),e(4),c(n(30,26,"support.links.discord_sub")),e(2),m("aria-label",n(32,28,"support.links.discord")),e(5),s(" ",n(37,30,"support.links.reddit"),""),e(4),c(n(41,32,"support.links.reddit_sub")),e(2),m("aria-label",n(43,34,"support.links.reddit")))}function G(o,a){o&1&&(t(0,"ul",18)(1,"li",10)(2,"span",11),p(3),i(4,"translate"),l(5,"br"),t(6,"small",12),p(7),i(8,"translate"),r()(),t(9,"a",19),i(10,"translate"),l(11,"i",14),r()(),t(12,"li",10)(13,"span",11),p(14),i(15,"translate"),l(16,"br"),t(17,"small",12),p(18),i(19,"translate"),r()(),t(20,"a",20),i(21,"translate"),l(22,"i",14),r()(),t(23,"li",10)(24,"span",11),p(25),i(26,"translate"),l(27,"br"),t(28,"small",12),p(29),i(30,"translate"),r()(),t(31,"a",21),i(32,"translate"),l(33,"i",14),r()(),t(34,"li",10)(35,"span",11),p(36),i(37,"translate"),l(38,"br"),t(39,"small",12),p(40),i(41,"translate"),r()(),t(42,"a",22),i(43,"translate"),l(44,"i",14),r()(),t(45,"li",10)(46,"span",11),p(47),i(48,"translate"),l(49,"br"),t(50,"small",12),p(51),i(52,"translate"),r()(),t(53,"a",22),i(54,"translate"),l(55,"i",14),r()()()),o&2&&(e(3),s(" ",n(4,15,"support.dev.item_swagger"),""),e(4),s(" ",n(8,17,"support.dev.item_swagger_sub")," "),e(2),m("aria-label",n(10,19,"support.dev.item_swagger")),e(5),s(" ",n(15,21,"support.dev.api"),""),e(4),c(n(19,23,"support.dev.api_sub")),e(2),m("aria-label",n(21,25,"support.dev.api")),e(5),s(" ",n(26,27,"support.dev.api_hap"),""),e(4),c(n(30,29,"support.dev.api_hap_sub")),e(2),m("aria-label",n(32,31,"support.dev.api_hap")),e(5),s(" ",n(37,33,"support.dev.template"),""),e(4),s(" ",n(41,35,"support.dev.template_sub")," "),e(2),m("aria-label",n(43,37,"support.dev.template")),e(5),s(" ",n(48,39,"support.dev.verified"),""),e(4),c(n(52,41,"support.dev.verified_sub")),e(2),m("aria-label",n(54,43,"support.dev.verified")))}var N=(()=>{let a=class a{constructor(){d(this,"showFields",{general:!0,dev:!0})}toggleSection(v){this.showFields[v]=!this.showFields[v]}};d(a,"\u0275fac",function(u){return new(u||a)}),d(a,"\u0275cmp",B({type:a,selectors:[["ng-component"]],decls:18,vars:17,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"mb-4"],["role","button","tabindex","0",1,"mt-3","hover-pointer",3,"click"],[1,"primary-text"],[1,"fa","fa-fw",3,"ngClass"],["class","list-group list-group-box mt-2 mx-0","id","fieldsGeneral",4,"ngIf"],[1,"pb-3"],["class","list-group list-group-box mt-2 mx-0","id","fieldsDev",4,"ngIf"],["id","fieldsGeneral",1,"list-group","list-group-box","mt-2","mx-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"pr-2"],[1,"grey-text","pr-2"],["href","https://github.com/homebridge/homebridge/wiki","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],[1,"fas","fa-fw","fa-external-link-alt"],["href","https://github.com/homebridge/homebridge-config-ui-x/issues/new/choose","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["href","https://discord.gg/C87Pvq3","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["href","https://www.reddit.com/r/homebridge/","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["id","fieldsDev",1,"list-group","list-group-box","mt-2","mx-0"],["href","/swagger","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["href","https://developers.homebridge.io/#/","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["href","https://developers.homebridge.io/HAP-NodeJS/","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"],["href","https://github.com/homebridge/homebridge-plugin-template","target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","waves-effect","m-0",2,"min-width","50px"]],template:function(u,f){u&1&&(t(0,"div",0)(1,"h3",1),p(2),i(3,"translate"),r()(),t(4,"div",2)(5,"div",3),w("click",function(){return f.toggleSection("general")}),t(6,"h5",4),l(7,"i",5),p(8),i(9,"translate"),r()(),h(10,D,45,36,"ul",6),r(),t(11,"div",7)(12,"div",3),w("click",function(){return f.toggleSection("dev")}),t(13,"h5",4),l(14,"i",5),p(15),i(16,"translate"),r()(),h(17,G,56,45,"ul",8),r()),u&2&&(e(2),c(n(3,11,"support.title")),e(3),m("aria-expanded",f.showFields.general?"true":"false")("aria-controls","fieldsGeneral"),e(2),b("ngClass",f.showFields.general?"fa-chevron-down":"fa-chevron-right"),e(),s(" ",n(9,13,"support.links.title")," "),e(2),b("ngIf",f.showFields.general),e(2),m("aria-expanded",f.showFields.dev?"true":"false")("aria-controls","fieldsDev"),e(2),b("ngClass",f.showFields.dev?"fa-chevron-down":"fa-chevron-right"),e(),s(" ",n(16,15,"support.dev.title")," "),e(2),b("ngIf",f.showFields.dev))},dependencies:[_,k,y],encapsulation:2}));let o=a;return o})();var P=[{path:"",component:N}],T=(()=>{let a=class a{};d(a,"\u0275fac",function(u){return new(u||a)}),d(a,"\u0275mod",x({type:a})),d(a,"\u0275inj",g({imports:[S.forChild(P),S]}));let o=a;return o})();var Z=(()=>{let a=class a{};d(a,"\u0275fac",function(u){return new(u||a)}),d(a,"\u0275mod",x({type:a})),d(a,"\u0275inj",g({imports:[I,T,F,C,E]}));let o=a;return o})();export{Z as SupportModule};
@@ -1 +0,0 @@
1
- import{a as H,b as h,c as $,m as S}from"./chunk-PSLVYKAC.js";import{Lb as I,W as p,X as j,Y as E,Z as a,aa as y,g as O,h as l,i as d,ic as x,p as f,t as u,u as T,v as w,x as v}from"./chunk-IGUSDGD6.js";var k=O(H(),1);var g=new E("JWT_OPTIONS"),m=(()=>{class o{constructor(e=null){this.tokenGetter=e&&e.tokenGetter||function(){}}urlBase64Decode(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:{t+="==";break}case 3:{t+="=";break}default:throw new Error("Illegal base64url string!")}return this.b64DecodeUnicode(t)}b64decode(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="";if(e=String(e).replace(/=+$/,""),e.length%4===1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(let i=0,c,s,b=0;s=e.charAt(b++);~s&&(c=i%4?c*64+s:s,i++%4)?r+=String.fromCharCode(255&c>>(-2*i&6)):0)s=t.indexOf(s);return r}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(this.b64decode(e),t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join(""))}decodeToken(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._decodeToken(t)):this._decodeToken(e)}_decodeToken(e){if(!e||e==="")return null;let t=e.split(".");if(t.length!==3)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");let r=this.urlBase64Decode(t[1]);if(!r)throw new Error("Cannot decode the token.");return JSON.parse(r)}getTokenExpirationDate(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._getTokenExpirationDate(t)):this._getTokenExpirationDate(e)}_getTokenExpirationDate(e){let t;if(t=this.decodeToken(e),!t||!t.hasOwnProperty("exp"))return null;let r=new Date(0);return r.setUTCSeconds(t.exp),r}isTokenExpired(e=this.tokenGetter(),t){return e instanceof Promise?e.then(r=>this._isTokenExpired(r,t)):this._isTokenExpired(e,t)}_isTokenExpired(e,t){if(!e||e==="")return!0;let r=this.getTokenExpirationDate(e);return t=t||0,r===null?!1:!(r.valueOf()>new Date().valueOf()+t*1e3)}getAuthScheme(e,t){return typeof e=="function"?e(t):e}}return o.\u0275fac=function(e){return new(e||o)(a(g))},o.\u0275prov=p({token:o,factory:o.\u0275fac}),o})(),D=o=>o instanceof Promise?v(()=>o):f(o),J=(()=>{class o{constructor(e,t,r){this.jwtHelper=t,this.document=r,this.standardPorts=["80","443"],this.tokenGetter=e.tokenGetter,this.headerName=e.headerName||"Authorization",this.authScheme=e.authScheme||e.authScheme===""?e.authScheme:"Bearer ",this.allowedDomains=e.allowedDomains||[],this.disallowedRoutes=e.disallowedRoutes||[],this.throwNoTokenError=e.throwNoTokenError||!1,this.skipWhenExpired=e.skipWhenExpired}isAllowedDomain(e){let t=new URL(e.url,this.document.location.origin);if(t.host===this.document.location.host)return!0;let r=`${t.hostname}${t.port&&!this.standardPorts.includes(t.port)?":"+t.port:""}`;return this.allowedDomains.findIndex(i=>typeof i=="string"?i===r:i instanceof RegExp?i.test(r):!1)>-1}isDisallowedRoute(e){let t=new URL(e.url,this.document.location.origin);return this.disallowedRoutes.findIndex(r=>{if(typeof r=="string"){let i=new URL(r,this.document.location.origin);return i.hostname===t.hostname&&i.pathname===t.pathname}return r instanceof RegExp?r.test(e.url):!1})>-1}handleInterception(e,t,r){let i=this.jwtHelper.getAuthScheme(this.authScheme,t);if(!e&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");let c=f(!1);return this.skipWhenExpired&&(c=e?D(this.jwtHelper.isTokenExpired(e)):f(!0)),e?c.pipe(T(s=>s&&this.skipWhenExpired?t.clone():t.clone({setHeaders:{[this.headerName]:`${i}${e}`}})),w(s=>r.handle(s))):r.handle(t)}intercept(e,t){if(!this.isAllowedDomain(e)||this.isDisallowedRoute(e))return t.handle(e);let r=this.tokenGetter(e);return D(r).pipe(w(i=>this.handleInterception(i,e,t)))}}return o.\u0275fac=function(e){return new(e||o)(a(g),a(m),a(I))},o.\u0275prov=p({token:o,factory:o.\u0275fac}),o})(),K=(()=>{class o{constructor(e){if(e)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}static forRoot(e){return{ngModule:o,providers:[{provide:x,useClass:J,multi:!0},e.jwtOptionsProvider||{provide:g,useValue:e.config},m]}}}return o.\u0275fac=function(e){return new(e||o)(a(o,12))},o.\u0275mod=y({type:o}),o.\u0275inj=j({}),o})();var X=(()=>{let n=class n{constructor(t,r,i){l(this,"$api");l(this,"$jwtHelper");l(this,"$settings");l(this,"token");l(this,"user",{});l(this,"logoutTimer");this.$api=t,this.$jwtHelper=r,this.$settings=i,this.loadToken()}login(t){return d(this,null,function*(){let r=yield u(this.$api.post("/auth/login",t));if(!this.validateToken(r.access_token))throw new Error("Invalid username or password.");window.localStorage.setItem(h.jwt.tokenKey,r.access_token),yield this.$settings.getAppSettings()})}noauth(){return d(this,null,function*(){let t=yield u(this.$api.post("/auth/noauth",{}));if(this.validateToken(t.access_token))window.localStorage.setItem(h.jwt.tokenKey,t.access_token),yield this.$settings.getAppSettings();else throw new Error("Invalid username or password.")})}logout(){this.user=null,this.token=null,window.localStorage.removeItem(h.jwt.tokenKey),window.location.reload()}loadToken(){return d(this,null,function*(){this.$settings.settingsLoaded||(yield u(this.$settings.onSettingsLoaded));let t=window.localStorage.getItem(h.jwt.tokenKey);t&&this.validateToken(t)})}validateToken(t){try{return this.$jwtHelper.isTokenExpired(t,this.$settings.serverTimeOffset)&&this.logout(),this.user=this.$jwtHelper.decodeToken(t),this.token=t,this.setLogoutTimer(),!0}catch{return window.localStorage.removeItem(h.jwt.tokenKey),this.token=null,!1}}checkToken(){return d(this,null,function*(){try{return yield u(this.$api.get("/auth/check"))}catch(t){t.status===401&&(console.error("Current token is not valid"),this.logout())}})}setLogoutTimer(){if(clearTimeout(this.logoutTimer),!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)){let r=(0,k.default)(this.$jwtHelper.getTokenExpirationDate(this.token)).diff((0,k.default)().add(this.$settings.serverTimeOffset,"s"),"millisecond");r<=2147483647&&(this.logoutTimer=setTimeout(()=>d(this,null,function*(){this.$settings.formAuth===!1?(yield this.noauth(),window.location.reload()):this.logout()}),r))}}isLoggedIn(){return this.$settings.env.instanceId!==this.user.instanceId?(console.error("Token does not match instance"),!1):this.user&&this.token&&!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)}};l(n,"\u0275fac",function(r){return new(r||n)(a($),a(m),a(S))}),l(n,"\u0275prov",p({token:n,factory:n.\u0275fac}));let o=n;return o})();export{m as a,K as b,X as c};
@@ -1 +0,0 @@
1
- import{e as J,f as T}from"./chunk-HPRZRVV7.js";import{c as V,d as q}from"./chunk-CTWXFHBK.js";import{c as G}from"./chunk-SJTXTMYT.js";import{b as F}from"./chunk-6QEO3BTW.js";import{G as L,M as B,Q as C,y as E,z as N}from"./chunk-WCDFKYP6.js";import{b as w,c as P}from"./chunk-F22FMU37.js";import{$ as x,$b as k,Ab as D,Ga as I,Ka as b,La as u,Pb as H,Qb as R,Rb as U,Ua as n,Va as a,Wa as c,X as _,aa as h,ab as g,bb as A,h as o,jb as m,kb as f,lb as v,mb as z,ua as O,ub as S,wa as i,xa as M,yb as l,zb as s}from"./chunk-IGUSDGD6.js";var K=(()=>{let e=class e{};o(e,"\u0275fac",function(d){return new(d||e)}),o(e,"\u0275mod",h({type:e})),o(e,"\u0275inj",_({providers:[V],imports:[k,C,E,N,P.forChild(),J,F,T]}));let t=e;return t})();var Y=t=>({pluginName:t});function Z(t,e){t&1&&(n(0,"ul",16)(1,"li"),m(2),l(3,"translate"),a(),n(4,"li",17),m(5),l(6,"translate"),a()()),t&2&&(i(2),f(s(3,2,"plugins.manage.confirm_disable_accessory_1")),i(3),f(s(6,4,"plugins.manage.confirm_disable_accessory_2")))}function ee(t,e){t&1&&(n(0,"ul",16)(1,"li"),m(2),l(3,"translate"),a(),n(4,"li",17),m(5),l(6,"translate"),a()()),t&2&&(i(2),f(s(3,2,"plugins.manage.confirm_disable_platform_1")),i(3),f(s(6,4,"plugins.manage.confirm_disable_platform_2")))}var xe=(()=>{let e=class e{constructor(r){o(this,"$activeModal");o(this,"pluginName");o(this,"isConfigured",!1);o(this,"isConfiguredDynamicPlatform",!1);this.$activeModal=r}};o(e,"\u0275fac",function(d){return new(d||e)(M(B))}),o(e,"\u0275cmp",x({type:e,selectors:[["ng-component"]],inputs:{pluginName:"pluginName",isConfigured:"isConfigured",isConfiguredDynamicPlatform:"isConfiguredDynamicPlatform"},decls:28,vars:25,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body","w-100","text-center"],[1,"fas","fa-fw","fa-circle-pause","primary-text","mb-4",2,"font-size","75px"],["type","warning",3,"dismissible"],[1,"w-100","text-center","mb-0"],["class","mb-0 text-left",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-danger",3,"click"],[1,"mb-0","text-left"],[1,"mb-0"]],template:function(d,p){d&1&&(n(0,"div",0)(1,"div",1)(2,"h5",2),m(3),l(4,"translate"),a(),n(5,"button",3),l(6,"translate"),g("click",function(){return p.$activeModal.dismiss("Dismiss")}),n(7,"span",4),m(8,"\xD7"),a()()(),n(9,"div",5),c(10,"i",6),n(11,"ngb-alert",7)(12,"p",8),m(13),l(14,"translate"),a()(),I(15,Z,7,6,"ul",9)(16,ee,7,6,"ul",9),a(),n(17,"div",10)(18,"div",11)(19,"button",12),l(20,"translate"),g("click",function(){return p.$activeModal.dismiss("Dismiss")}),m(21),l(22,"translate"),a()(),c(23,"div",13),n(24,"div",14)(25,"button",15),g("click",function(){return p.$activeModal.close()}),m(26),l(27,"translate"),a()()()()),d&2&&(i(3),z("",s(4,10,"plugins.manage.disable"),": ",p.pluginName,""),i(2),b("aria-label",s(6,12,"form.button_close")),i(6),u("dismissible",!1),i(2),f(D(14,14,"plugins.manage.confirm_disable",S(23,Y,p.pluginName))),i(2),u("ngIf",p.isConfigured&&!p.isConfiguredDynamicPlatform),i(),u("ngIf",p.isConfigured&&p.isConfiguredDynamicPlatform),i(3),b("aria-label",s(20,17,"form.button_close")),i(2),v(" ",s(22,19,"form.button_close")," "),i(5),v(" ",s(27,21,"plugins.manage.disable")," "))},dependencies:[U,L,w],encapsulation:2}));let t=e;return t})();var te=t=>({author:t});function ie(t,e){if(t&1&&(n(0,"li",16),c(1,"i",17),n(2,"a",18),m(3),a()()),t&2){let $=e.$implicit,r=A();i(),u("ngClass",r.getIconClass($.type)),i(),u("href",$.url,O),i(),f($.url)}}var Ie=(()=>{let e=class e{constructor(r){o(this,"$activeModal");o(this,"plugin");o(this,"fundingOptions");this.$activeModal=r}ngOnInit(){this.plugin.funding||this.$activeModal.close(),this.plugin.name==="homebridge-config-ui-x"&&(this.plugin.author="oznu"),Array.isArray(this.plugin.funding)?this.fundingOptions=this.plugin.funding.map(r=>{if(typeof r=="string")return{type:"other",url:r};if(typeof r=="object")return{type:r.type||"other",url:r.url}}):typeof this.plugin.funding=="string"?this.fundingOptions=[{type:"other",url:this.plugin.funding}]:typeof this.plugin.funding=="object"&&(this.fundingOptions=[{type:this.plugin.funding.type||"other",url:this.plugin.funding.url}])}getIconClass(r){switch(r.toLowerCase()){case"paypal":return"fab fa-fw fa-paypal";case"github":return"fab fa-fw fa-github";case"patreon":return"fab fa-fw fa-patreon";case"kofi":case"ko-fi":return"fas fa-fw fa-coffee";default:return"fas fa-fw fa-link"}}};o(e,"\u0275fac",function(d){return new(d||e)(M(B))}),o(e,"\u0275cmp",x({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:28,vars:22,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"w-100","text-center","pink-text","mb-4"],[1,"fas","fa-fw","fa-heart",2,"font-size","75px"],[1,"w-100","text-center"],[1,"list-group"],["class","list-group-item",4,"ngFor","ngForOf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-right"],[1,"list-group-item"],[1,"mr-2","primary-text","fa-fw",3,"ngClass"],["target","_blank","rel","noopener noreferrer",1,"text-break-all","grey-text",3,"href"]],template:function(d,p){d&1&&(n(0,"div",0)(1,"div",1)(2,"h5",2),m(3),l(4,"translate"),a(),n(5,"button",3),l(6,"translate"),g("click",function(){return p.$activeModal.dismiss("Dismiss")}),n(7,"span",4),m(8,"\xD7"),a()()(),n(9,"div",5)(10,"div",6),c(11,"i",7),a(),n(12,"p",8),m(13),l(14,"translate"),a(),n(15,"p",8),m(16),l(17,"translate"),a(),n(18,"ul",9),I(19,ie,4,3,"li",10),a()(),n(20,"div",11),c(21,"div",12),n(22,"div",13)(23,"button",14),l(24,"translate"),g("click",function(){return p.$activeModal.dismiss("Dismiss")}),m(25),l(26,"translate"),a()(),c(27,"div",15),a()()),d&2&&(i(3),v(" ",D(4,7,"plugins.donate.tile_donate_to",S(20,te,p.plugin.author?"@"+p.plugin.author:p.plugin.name))," "),i(2),b("aria-label",s(6,10,"form.button_close")),i(8),f(s(14,12,"plugins.donate.message_1")),i(3),f(s(17,14,"plugins.donate.message_2")),i(3),u("ngForOf",p.fundingOptions),i(4),b("aria-label",s(24,16,"form.button_close")),i(2),v(" ",s(26,18,"form.button_close")," "))},dependencies:[H,R,w],styles:[".text-break-all[_ngcontent-%COMP%]{word-break:break-all}"]}));let t=e;return t})();var st=(()=>{let e=class e{};o(e,"\u0275fac",function(d){return new(d||e)}),o(e,"\u0275mod",h({type:e})),o(e,"\u0275inj",_({providers:[q],imports:[k,E,N,P.forChild(),C,F,G,C,T,K]}));let t=e;return t})();export{xe as a,Ie as b,st as c};