homebridge-config-ui-x 4.62.1-beta.9 → 5.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +43 -6
  2. package/README.md +4 -58
  3. package/config.schema.json +1 -0
  4. package/dist/bin/platforms/darwin.js +2 -0
  5. package/dist/bin/platforms/darwin.js.map +1 -1
  6. package/dist/modules/server/server.service.d.ts +1 -0
  7. package/dist/modules/server/server.service.js +1 -0
  8. package/dist/modules/server/server.service.js.map +1 -1
  9. package/dist/modules/status/status.gateway.d.ts +3 -5
  10. package/dist/modules/status/status.gateway.js +2 -28
  11. package/dist/modules/status/status.gateway.js.map +1 -1
  12. package/dist/modules/status/status.service.d.ts +2 -0
  13. package/dist/modules/status/status.service.js +8 -7
  14. package/dist/modules/status/status.service.js.map +1 -1
  15. package/package.json +19 -24
  16. package/public/3rdpartylicenses.txt +9 -1
  17. package/public/assets/hap-icons/smokesensor.svg +1 -1
  18. package/public/{chunk-TOPONS2G.js → chunk-2PWJQ3JG.js} +1 -1
  19. package/public/{chunk-SDRXNK54.js → chunk-2XSSTW65.js} +1 -1
  20. package/public/chunk-3MMTBP3D.js +1 -0
  21. package/public/{chunk-3TR6KNS2.js → chunk-3PUISAM4.js} +1 -1
  22. package/public/{chunk-3OURKZJE.js → chunk-3SUL4N2K.js} +1 -1
  23. package/public/{chunk-3DLNWL2R.js → chunk-47MGIKRX.js} +1 -1
  24. package/public/{chunk-BUGNOBXC.js → chunk-4R6MSI5I.js} +1 -1
  25. package/public/{chunk-YAU2KWBZ.js → chunk-6QEO3BTW.js} +1 -1
  26. package/public/chunk-6SZTMLNK.js +1 -0
  27. package/public/{chunk-IIFIWJYC.js → chunk-6T267MJT.js} +1 -1
  28. package/public/{chunk-D6UUGEUB.js → chunk-B6C32ZRK.js} +1 -1
  29. package/public/{chunk-RPL6HWN2.js → chunk-BROUJ7PT.js} +1 -1
  30. package/public/{chunk-S5FRWQPT.js → chunk-C4VKSYGU.js} +1 -1
  31. package/public/chunk-CKS7IGEQ.js +1 -0
  32. package/public/chunk-CTWXFHBK.js +20 -0
  33. package/public/{chunk-CU3OXDK7.js → chunk-DLVT4K74.js} +1 -1
  34. package/public/{chunk-KO2RPNXD.js → chunk-DPQR4EUP.js} +1 -1
  35. package/public/chunk-F22FMU37.js +1 -0
  36. package/public/{chunk-RF5R32OJ.js → chunk-GNQUXZMN.js} +1 -1
  37. package/public/{chunk-VNQPH3K2.js → chunk-GUXB6V7U.js} +1 -1
  38. package/public/{chunk-ZRQZU5HN.js → chunk-HPRZRVV7.js} +1 -1
  39. package/public/{chunk-RTI2NE3Q.js → chunk-HXKR7RPF.js} +1 -1
  40. package/public/chunk-IGUSDGD6.js +8 -0
  41. package/public/{chunk-EX6EQLNK.js → chunk-JM7QCDMZ.js} +1 -1
  42. package/public/{chunk-UEPF2U5Q.js → chunk-JQO6VAZ5.js} +1 -1
  43. package/public/{chunk-BGBOW4TZ.js → chunk-K5UREZLG.js} +4 -4
  44. package/public/{chunk-W7JQ7WHZ.js → chunk-LM3J4EYP.js} +1 -1
  45. package/public/chunk-NTTD35IF.js +1 -0
  46. package/public/chunk-PSLVYKAC.js +1 -0
  47. package/public/{chunk-BROJRIZL.js → chunk-Q7MYZYMQ.js} +1 -1
  48. package/public/{chunk-AM3VWXMR.js → chunk-SI3MSSTT.js} +1 -1
  49. package/public/{chunk-WOJ7C5HX.js → chunk-SJTXTMYT.js} +1 -1
  50. package/public/{chunk-VZFXQGAN.js → chunk-TBJQ2Y3M.js} +1 -1
  51. package/public/{chunk-VYUN5WLM.js → chunk-THFLPY67.js} +1 -1
  52. package/public/{chunk-QOPI77FO.js → chunk-TTLBPD7L.js} +1 -1
  53. package/public/{chunk-RDIMXMJ5.js → chunk-UEBRERJ6.js} +1 -1
  54. package/public/{chunk-FBJAWKJ3.js → chunk-WCDFKYP6.js} +1 -1
  55. package/public/{chunk-WD7T2C7Z.js → chunk-XLAWLJES.js} +1 -1
  56. package/public/index.html +2 -2
  57. package/public/main-DTWXJAMM.js +6 -0
  58. package/public/{styles-RKZUK2BG.css → styles-7ETWN6DQ.css} +1 -1
  59. package/public/chunk-4GFUJV7Q.js +0 -1
  60. package/public/chunk-7SIWB246.js +0 -1
  61. package/public/chunk-ATNSCCKX.js +0 -1
  62. package/public/chunk-BZRYP3UV.js +0 -1
  63. package/public/chunk-FJK4IAO5.js +0 -1
  64. package/public/chunk-IKFLHM2X.js +0 -8
  65. package/public/chunk-J6XB3JBO.js +0 -1
  66. package/public/chunk-LKWF73XA.js +0 -20
  67. package/public/main-VFMNBLEO.js +0 -6
@@ -1,4 +1,4 @@
1
- import{a as fe}from"./chunk-RPL6HWN2.js";import{a as Ie}from"./chunk-BUGNOBXC.js";import{a as de,b as me,c as pe}from"./chunk-WOJ7C5HX.js";import{a as le}from"./chunk-D6UUGEUB.js";import{a as ce}from"./chunk-7SIWB246.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-FBJAWKJ3.js";import{c as k,k as I,m as X}from"./chunk-FJK4IAO5.js";import{a as E,b as P,c as Q}from"./chunk-J6XB3JBO.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-IKFLHM2X.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(`
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
2
  `).map(t=>` ${t}`).join(`
3
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
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).
@@ -6,7 +6,7 @@ You should change this pin if you need to re-pair your instance with HomeKit.
6
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
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
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.
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
10
 
11
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
12
 
@@ -14,7 +14,7 @@ Depreciated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertise
14
14
  Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
15
15
 
16
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:`Plugins that expose a "Platform" should have there config entered in this array.
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
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:`Plugins that expose a "Accessory" should have there config entered in this array.
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
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 +1 @@
1
- import{c as h}from"./chunk-QOPI77FO.js";import{k as u}from"./chunk-FJK4IAO5.js";import{a as c}from"./chunk-J6XB3JBO.js";import{W as o,Z as i,h as r,sc as n}from"./chunk-IKFLHM2X.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
+ 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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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 +1 @@
1
- import{a as O,b as G}from"./chunk-VYUN5WLM.js";import{a as j}from"./chunk-S5FRWQPT.js";import{M as H}from"./chunk-FBJAWKJ3.js";import{c as D,k as M}from"./chunk-FJK4IAO5.js";import{a as z,b as V}from"./chunk-J6XB3JBO.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-IKFLHM2X.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
+ 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 +1 @@
1
- import{m}from"./chunk-FJK4IAO5.js";import{W as c,Z as s,h as e,i as n,sc as f,t as a}from"./chunk-IKFLHM2X.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
+ 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 +1,2 @@
1
- import{a as R}from"./chunk-FBJAWKJ3.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-IKFLHM2X.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(`
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
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};