homebridge-config-ui-x 5.4.2-beta.34 → 5.4.2-beta.36

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 (115) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/bin/hb-service.js +1 -1
  3. package/dist/bin/hb-service.js.map +1 -1
  4. package/dist/core/auth/auth.controller.d.ts +1 -0
  5. package/dist/core/config/config.interfaces.d.ts +64 -0
  6. package/dist/core/config/config.interfaces.js +3 -0
  7. package/dist/core/config/config.interfaces.js.map +1 -0
  8. package/dist/core/config/config.service.d.ts +4 -21
  9. package/dist/core/config/config.service.js +4 -0
  10. package/dist/core/config/config.service.js.map +1 -1
  11. package/dist/core/config/config.startup.d.ts +2 -13
  12. package/dist/core/config/config.startup.js.map +1 -1
  13. package/dist/core/spa/spa.filter.d.ts +2 -1
  14. package/dist/core/spa/spa.filter.js +4 -1
  15. package/dist/core/spa/spa.filter.js.map +1 -1
  16. package/dist/globalDefaults.js +3 -0
  17. package/dist/globalDefaults.js.map +1 -1
  18. package/dist/main.js +15 -13
  19. package/dist/main.js.map +1 -1
  20. package/dist/modules/backup/backup.service.js +4 -1
  21. package/dist/modules/backup/backup.service.js.map +1 -1
  22. package/dist/modules/config-editor/config-editor.controller.d.ts +3 -3
  23. package/dist/modules/config-editor/config-editor.service.d.ts +3 -2
  24. package/dist/modules/config-editor/config-editor.service.js +38 -15
  25. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  26. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.d.ts +1 -1
  27. package/dist/modules/log/log.gateway.d.ts +1 -1
  28. package/dist/modules/log/log.interfaces.d.ts +4 -0
  29. package/dist/modules/log/log.interfaces.js +3 -0
  30. package/dist/modules/log/log.interfaces.js.map +1 -0
  31. package/dist/modules/log/log.service.d.ts +1 -4
  32. package/dist/modules/log/log.service.js.map +1 -1
  33. package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +1 -1
  34. package/dist/modules/platform-tools/terminal/terminal.interfaces.d.ts +8 -0
  35. package/dist/modules/platform-tools/terminal/terminal.interfaces.js +3 -0
  36. package/dist/modules/platform-tools/terminal/terminal.interfaces.js.map +1 -0
  37. package/dist/modules/platform-tools/terminal/terminal.service.d.ts +1 -8
  38. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  39. package/dist/modules/plugins/plugins.controller.d.ts +5 -5
  40. package/dist/modules/plugins/plugins.interfaces.d.ts +211 -0
  41. package/dist/modules/plugins/plugins.interfaces.js +3 -0
  42. package/dist/modules/plugins/plugins.interfaces.js.map +1 -0
  43. package/dist/modules/plugins/plugins.service.d.ts +1 -1
  44. package/dist/modules/plugins/plugins.service.js.map +1 -1
  45. package/dist/modules/server/server.service.js +6 -4
  46. package/dist/modules/server/server.service.js.map +1 -1
  47. package/dist/modules/status/status.controller.d.ts +2 -2
  48. package/dist/modules/status/status.gateway.d.ts +5 -5
  49. package/dist/modules/status/status.interfaces.d.ts +27 -0
  50. package/dist/modules/status/status.interfaces.js +10 -0
  51. package/dist/modules/status/status.interfaces.js.map +1 -0
  52. package/dist/modules/status/status.service.d.ts +2 -29
  53. package/dist/modules/status/status.service.js +4 -9
  54. package/dist/modules/status/status.service.js.map +1 -1
  55. package/package.json +2 -2
  56. package/public/3rdpartylicenses.txt +3 -1
  57. package/public/{chunk-7NV4KY6W.js → chunk-22UVENNJ.js} +1 -1
  58. package/public/chunk-26GMIPRJ.js +19 -0
  59. package/public/{chunk-BDITCHXY.js → chunk-33RLTKP7.js} +1 -1
  60. package/public/{chunk-4QMPZEU2.js → chunk-37M3WNYK.js} +1 -1
  61. package/public/{chunk-JMWLREAW.js → chunk-3Y22MKX5.js} +1 -1
  62. package/public/{chunk-NVM7LIBV.js → chunk-54LW2EIT.js} +1 -1
  63. package/public/{chunk-AEDYX7QW.js → chunk-6A65Q45W.js} +1 -1
  64. package/public/{chunk-KCDOWEBJ.js → chunk-6FDD5CCJ.js} +1 -1
  65. package/public/{chunk-R2L5QSSW.js → chunk-AKRQOBH5.js} +1 -1
  66. package/public/{chunk-4VANYPAJ.js → chunk-AOF6N6LI.js} +1 -1
  67. package/public/{chunk-S7XHIZ2C.js → chunk-ATWZNPLH.js} +1 -1
  68. package/public/{chunk-HC6M5EBC.js → chunk-AZKNOMJL.js} +1 -1
  69. package/public/{chunk-AHMEX5XD.js → chunk-BYYHHD35.js} +1 -1
  70. package/public/{chunk-NHBQVYGJ.js → chunk-CEJ47ACH.js} +1 -1
  71. package/public/{chunk-RZHE43I6.js → chunk-DF6AC7BX.js} +1 -1
  72. package/public/{chunk-3YTDUGW7.js → chunk-E4H6ESG4.js} +1 -1
  73. package/public/{chunk-JFZ2A252.js → chunk-E6FL6SQ2.js} +1 -1
  74. package/public/{chunk-4KCBR6KN.js → chunk-GGG55BFS.js} +1 -1
  75. package/public/{chunk-NRHD2BXN.js → chunk-IOMKPASZ.js} +1 -1
  76. package/public/{chunk-6LIDOYQ5.js → chunk-ITLWDLYI.js} +1 -1
  77. package/public/{chunk-U6RUTZFH.js → chunk-JDULYXIE.js} +1 -1
  78. package/public/{chunk-SQLHNVND.js → chunk-JOPEEASP.js} +1 -1
  79. package/public/{chunk-QMNQ4FAL.js → chunk-JTIFGXIK.js} +1 -1
  80. package/public/{chunk-HFGCMLED.js → chunk-KWHMJ4TN.js} +1 -1
  81. package/public/chunk-L2BZEZMS.js +49 -0
  82. package/public/{chunk-B4YN4FBB.js → chunk-LIAR6SEI.js} +1 -1
  83. package/public/chunk-LRP4UK2C.js +1 -0
  84. package/public/{chunk-TST4TLQB.js → chunk-LRUNOWMY.js} +11 -9
  85. package/public/{chunk-ZJHKGKFK.js → chunk-LWVHPBRV.js} +1 -1
  86. package/public/{chunk-W4QA6YCR.js → chunk-LZRP7D6M.js} +1 -1
  87. package/public/{chunk-4X7L4KQL.js → chunk-N3CMGFGQ.js} +1 -1
  88. package/public/{chunk-AVBJ5EMT.js → chunk-NVVXFX5K.js} +1 -1
  89. package/public/{chunk-LI7O67NH.js → chunk-O5Z6RUN6.js} +1 -1
  90. package/public/{chunk-RCM5XFVU.js → chunk-OXQK4UWV.js} +1 -1
  91. package/public/{chunk-4DKOKZK5.js → chunk-PNUGTSUC.js} +1 -1
  92. package/public/{chunk-45OZYP45.js → chunk-QISDIMSQ.js} +1 -1
  93. package/public/{chunk-7F4X6BE3.js → chunk-QXPVXXPG.js} +1 -1
  94. package/public/{chunk-KRWZHVHO.js → chunk-R5NMQ5HW.js} +1 -1
  95. package/public/{chunk-2QIBEJ2P.js → chunk-RL2DXT2X.js} +1 -1
  96. package/public/{chunk-5CK36DGM.js → chunk-SVBCVHA6.js} +1 -1
  97. package/public/{chunk-XY46FVZF.js → chunk-SWXXH4T2.js} +1 -1
  98. package/public/{chunk-ET6IVHAD.js → chunk-T3AZK3NW.js} +1 -1
  99. package/public/chunk-T6QH6SOM.js +1 -0
  100. package/public/{chunk-ENYL2YPO.js → chunk-UAXFFECE.js} +1 -1
  101. package/public/{chunk-Z3AQIRMS.js → chunk-UK6SMZQH.js} +1 -1
  102. package/public/{chunk-XRASUEWC.js → chunk-UY7WTZES.js} +1 -1
  103. package/public/{chunk-YM7YGOQM.js → chunk-XJLJFGGS.js} +1 -1
  104. package/public/{chunk-F54OPRBZ.js → chunk-XPIOM6KJ.js} +1 -1
  105. package/public/{chunk-BJAULSY4.js → chunk-XS7PL6OK.js} +1 -1
  106. package/public/{chunk-O5GV34LY.js → chunk-XZWJ6UIN.js} +1 -1
  107. package/public/{chunk-64F5HSDQ.js → chunk-YBIXKSXT.js} +1 -1
  108. package/public/{chunk-WFDBV66D.js → chunk-YVQQ2QBB.js} +1 -1
  109. package/public/index.html +1 -1
  110. package/public/{main-X3XBQQT2.js → main-SRK6IBZL.js} +1 -1
  111. package/config.schema.json +0 -596
  112. package/public/chunk-AWE7H5PY.js +0 -20
  113. package/public/chunk-GTZIY7WT.js +0 -1
  114. package/public/chunk-HSA6M4GG.js +0 -1
  115. package/public/chunk-QTZTX2XP.js +0 -49
@@ -1,20 +0,0 @@
1
- import{a as xe}from"./chunk-7XG67XSY.js";import{b as T,e as ve,f as Ee,g as je}from"./chunk-TST4TLQB.js";import{a as be,b as _e}from"./chunk-ECQJTOVP.js";import{a as we}from"./chunk-I5TETZ3I.js";import{a as Pe}from"./chunk-KT4VIVBF.js";import{m as ue,n as he,t as P}from"./chunk-LXFVNKLD.js";import{B as pe,C as ge,c as ce,e as fe,l as me}from"./chunk-F7ZV2JBO.js";import{b as ye,d as H}from"./chunk-YMAWYUA6.js";import{b as Ce}from"./chunk-64F5HSDQ.js";import{k as j,l as I,n as O,q as N}from"./chunk-NRHD2BXN.js";import{Db as k,Gb as b,Ib as f,Kc as le,La as r,Pa as ee,Rc as de,Tb as ne,Vb as _,Wa as R,Wb as M,Xb as A,a as G,ac as re,b as Q,bc as se,cc as ae,d as X,g as Z,h as E,hc as z,ja as p,kb as w,lb as x,mb as S,mc as s,nc as l,oa as u,ob as te,oc as K,pa as h,pb as ie,qb as oe,rb as g,sb as a,tb as d,ub as m,w as $}from"./chunk-V2XN5VIX.js";var Me=Z(je(),1);var Se=Z(Pe(),1);var ke=(n,y)=>({"fa-trash":n,"fa-cog fa-spin":y});function Oe(n,y){n&1&&(a(0,"div",13),m(1,"i",20),d())}function He(n,y){if(n&1){let e=k();a(0,"li",9)(1,"span"),_(2),s(3,"date"),m(4,"br"),a(5,"span",21),_(6),s(7,"date"),d()(),a(8,"span",22)(9,"button",25),s(10,"translate"),s(11,"translate"),b("click",function(){let i=u(e).$implicit,o=f(2);return h(o.restore(i.id))}),m(12,"i",26),d(),a(13,"button",27),s(14,"translate"),s(15,"translate"),b("click",function(){let i=u(e).$implicit,o=f(2);return h(o.download(i.id))}),m(16,"i",28),d(),a(17,"button",23),s(18,"translate"),s(19,"translate"),b("click",function(){let i=u(e).$implicit,o=f(2);return h(o.delete(i.id))}),m(20,"i",24),d()()()}if(n&2){let e=y.$implicit,t=f(2);r(2),A(" ",K(3,15,e.timestamp,"mediumDate")),r(4),M(K(7,18,e.timestamp,"shortTime")),r(3),g("disabled",t.clicked||t.deleting)("ngbTooltip",l(10,21,"config.restore.copy_to_editor"))("openDelay",150),w("aria-label",l(11,23,"config.restore.copy_to_editor")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",l(14,25,"form.button_download"))("openDelay",150),w("aria-label",l(15,27,"form.button_download")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",l(18,29,"form.button_delete"))("openDelay",150),w("aria-label",l(19,31,"form.button_delete")),r(3),g("ngClass",z(33,ke,e.id!==t.deleting,e.id===t.deleting))}}function Ne(n,y){if(n&1){let e=k();a(0,"ul",14),ie(1,He,21,36,"li",9,te),a(3,"li",9)(4,"span"),_(5),s(6,"translate"),m(7,"br"),a(8,"span",21),_(9),s(10,"translate"),d()(),a(11,"span",22)(12,"button",23),s(13,"translate"),s(14,"translate"),b("click",function(){u(e);let i=f();return h(i.deleteAllBackups())}),m(15,"i",24),d()()()()}if(n&2){let e=f();r(),oe(e.backupList),r(4),A(" ",l(6,7,"form.button_delete_all")),r(4),A(" ",l(10,9,"common.labels.no_confirmation")," "),r(3),g("disabled",e.clicked||e.deleting)("ngbTooltip",l(13,11,"form.button_delete_all"))("openDelay",150),w("aria-label",l(14,13,"form.button_delete")),r(3),g("ngClass",z(15,ke,e.deleting!=="all",e.deleting==="all"))}}var $e=(()=>{class n{$activeModal=p(ue);$api=p(N);$router=p(H);$toastr=p(O);$translate=p(j);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return E(this,null,function*(){try{let e=yield $(this.$api.get("/config-editor/backups"));this.loading=!1,this.backupList=e}catch(e){this.loading=!1,console.error(e),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(e){return this.$activeModal.close(e)}download(e){return E(this,null,function*(){this.clicked=!0;try{let t=yield $(this.$api.get(`/config-editor/backups/${e}`)),i=JSON.stringify(t,null,4),o=new Blob([i],{type:"application/json"}),v=`config-backup-${e}.json`;(0,Se.saveAs)(o,v),this.clicked=!1}catch(t){this.clicked=!1,this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t)}})}downloadCurrentConfig(){let e=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,t=document.createElement("a");t.setAttribute("href",e),t.setAttribute("download","config.json"),document.body.appendChild(t),t.click(),t.remove()}delete(e){return E(this,null,function*(){this.deleting=e;try{yield $(this.$api.delete(`/config-editor/backups/${e}`)),yield this.getConfigBackups(),this.deleting=null}catch(t){this.deleting=null,this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t)}})}deleteAllBackups(){return E(this,null,function*(){this.deleting="all";try{yield $(this.$api.delete("/config-editor/backups")),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList=[],this.deleting=null}catch(e){this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e),this.deleting=null}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=R({type:n,selectors:[["ng-component"]],inputs:{currentConfig:"currentConfig",fromSettings:"fromSettings"},decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3",3,"click","disabled"],[1,"fas","fa-fw","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-fw","fa-cog","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-fw",3,"ngClass"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-fw","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-fw","fa-download"]],template:function(t,i){t&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),_(3),s(4,"translate"),d(),a(5,"button",3),s(6,"translate"),b("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),m(9,"i",6),d(),a(10,"ul",7)(11,"li"),_(12),s(13,"translate"),d(),a(14,"li"),_(15),s(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),_(21),s(22,"translate"),d(),m(23,"br"),a(24,"small",10),_(25),s(26,"translate"),d()(),a(27,"button",11),s(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),m(29,"i",12),d()()(),x(30,Oe,2,0,"div",13)(31,Ne,16,18,"ul",14),d(),a(32,"div",15),m(33,"div",16),a(34,"div",17)(35,"button",18),s(36,"translate"),b("click",function(){return i.dismissModal()}),_(37),s(38,"translate"),d()(),m(39,"div",19),d()()),t&2&&(r(3),M(l(4,13,"config.restore.title")),r(2),g("disabled",i.clicked||i.deleting),w("aria-label",l(6,15,"form.button_close")),r(7),M(l(13,17,"config.restore.help_1")),r(3),M(l(16,19,"config.restore.help_2")),r(6),M(l(22,21,"form.button_download")),r(4),M(l(26,23,"config.restore.download")),r(2),g("disabled",i.clicked||i.deleting),w("aria-label",l(28,25,"backup.backup_now")),r(3),S(i.loading?30:i.backupList.length?31:-1),r(5),g("disabled",i.clicked||i.deleting),w("aria-label",l(36,27,"form.button_close")),r(2),A(" ",l(38,29,"form.button_close")," "))},dependencies:[P,le,ge,de,I],encapsulation:2})}return n})();function qe(n,y){if(n&1){let e=k();a(0,"button",13),s(1,"translate"),s(2,"translate"),b("click",function(){u(e);let i=f();return h(i.onCancelRestore())}),m(3,"i",14),d()}if(n&2){let e=f();g("disabled",e.saveInProgress)("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),w("aria-label",l(2,6,"form.button_cancel"))}}function Fe(n,y){if(n&1){let e=k();a(0,"button",15),s(1,"translate"),s(2,"translate"),b("click",function(){u(e);let i=f();return h(i.onRestore())}),m(3,"i",16),d()}n&2&&(g("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),w("aria-label",l(2,5,"form.button_restore")))}function Je(n,y){if(n&1){let e=k();a(0,"button",15),s(1,"translate"),s(2,"translate"),b("click",function(){u(e);let i=f();return h(i.toggleSideBySide())}),m(3,"i",17),d()}if(n&2){let e=f();g("openDelay",150)("ngbTooltip",l(1,7,e.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),w("aria-label",l(2,9,e.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),r(3),ne("fa-columns",!e.renderSideBySide)("fa-bars",e.renderSideBySide)}}function Le(n,y){n&1&&m(0,"i",8)}function Ue(n,y){n&1&&m(0,"i",9)}function ze(n,y){if(n&1){let e=k();a(0,"ngx-monaco-editor",18),b("onInit",function(i){u(e);let o=f();return h(o.onEditorInit(i))})("keydown.control.s",function(i){u(e);let o=f();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=f();return i.preventDefault(),h(o.onSave())}),d()}if(n&2){let e=f();g("options",e.editorOptions)("model",e.monacoEditorModel)}}function Ke(n,y){if(n&1){let e=k();a(0,"ngx-monaco-diff-editor",19),b("onInit",function(i){u(e);let o=f();return h(o.onInitDiffEditor(i))})("keydown.control.s",function(i){u(e);let o=f();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=f();return i.preventDefault(),h(o.onSave())}),d()}if(n&2){let e=f();g("options",e.editorOptions)("originalModel",e.diffOriginalModel)("modifiedModel",e.diffModifiedModel)}}function We(n,y){if(n&1){let e=k();a(0,"textarea",20),ae("ngModelChange",function(i){u(e);let o=f();return se(o.homebridgeConfig,i)||(o.homebridgeConfig=i),h(i)}),_(1," "),d()}if(n&2){let e=f();re("ngModel",e.homebridgeConfig)}}var $t=(()=>{class n{$api=p(N);$md=p(we);$modal=p(he);$monacoEditor=p(xe);$renderer=p(ee);$route=p(ye);$router=p(H);$settings=p(Ce);$toastr=p(O);$translate=p(j);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=!1;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide,renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(i=>{this.homebridgeConfig=i.config,this.latestSavedConfig=JSON.parse(i.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>this.setMonacoEditorModel()});let{action:t}=this.$router.parseUrl(this.$router.url).queryParams;if(t){switch(t){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}onEditorInit(e){window.editor=e,this.monacoEditor=e,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(e){this.monacoEditor=e.getModifiedEditor(),this.updateDiffModels(),window.editor=e}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig||"{}"),window.editor&&window.editor.getOriginalEditor){let e=window.editor.getOriginalEditor(),t=window.editor.getModifiedEditor();if(e&&t){let i=e.getModel(),o=t.getModel();i&&i.setValue(this.originalConfig||""),o&&o.setValue(this.homebridgeConfig||"{}")}}}onSave(){return E(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}})}onRestore(e=!1){let t=this.$modal.open($e,{size:"lg",backdrop:"static"});t.componentInstance.currentConfig=this.homebridgeConfig,t.componentInstance.fromSettings=e,t.result.then(i=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig,this.updateDiffModels()),this.$api.get(`/config-editor/backups/${i}`).subscribe({next:o=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(o,null,4),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:o=>{console.error(o),this.$toastr.error(o.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig=this.originalConfig,this.originalConfig="",this.renderSideBySide&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide=!this.renderSideBySide,this.editorOptions=Q(G({},this.editorOptions),{renderSideBySide:this.renderSideBySide})}ngOnDestroy(){let e=document.querySelector(".content");this.$renderer.removeStyle(e,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let t=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),o=window.monaco.editor.getModel(t);o&&o.dispose();let v=window.monaco.editor.getModel(i);v&&v.dispose()}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(e,t){for(let i of e){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[t])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[t]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:t}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(e,t){for(let i of e)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:t}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
2
- `).map(t=>` ${t}`).join(`
3
- `),setTimeout(()=>{let t=this.monacoEditor.getModel().findMatches(e);if(t.length){let i=t[0].range,o=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:o,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(t=>t.uri==="http://homebridge/config.json"))return;let e=monaco.Uri.parse("a://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[e.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:{name:{type:"string",description:`The Homebridge instance name.
4
- This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
5
- You should change this pin if you need to re-pair your instance with HomeKit.
6
- Example: 0E:89:49:64:91:86`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",description:`The port Homebridge listens on.
7
- If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
8
- This is used when pairing Homebridge to HomeKit.
9
- Example: 630-27-655`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",description:"The bridge manufacturer to be displayed in HomeKit"},firmwareRevision:{type:"string",description:"The bridge firmware version to be displayed in HomeKit"},model:{type:"string",description:"The bridge model to be displayed in HomeKit"},bind:{description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
10
-
11
- Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:"Network Interface name that Homebridge should bind to."}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",properties:{interface:{type:"string",description:`The interface or IP address of the interface you want Homebridge to listen on. This is useful if your server has multiple interfaces.
12
-
13
- Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",description:"Set to `false` to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},plugins:{type:"array",description:"An array of plugins that should be selectively enabled. Remove this array to enable all plugins.",items:{type:"string",description:`The full plugin npm package name.
14
- Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
15
-
16
- Requires Homebridge v1.3 or later.`,items:{type:"string",description:`The full plugin npm package name.
17
- Example: homebridge-dummy`},default:[]},ports:{type:"object",description:"The range of ports that should be used for certain accessories like cameras and TVs",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534},end:{type:"number",default:52150,minimum:1025,maximum:65534}},default:{start:52100,end:52150}},platforms:{type:"array",description:`Any plugin that exposes a platform should have its config entered in this array.
18
- Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],properties:{platform:{type:"string",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",description:"The name of the platform."}}},{type:"object",properties:{platform:{type:"string",description:`Homebridge UI platform name must be set to "config".
19
- Do Not Change!`,oneOf:[{enum:"config"}]},name:{type:"string",description:"The name used in the Homebridge log."}}}]}},accessories:{type:"array",description:`Any plugin that exposes an accessory should have its config entered in this array.
20
- Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],properties:{accessory:{type:"string",description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",description:"The name of the accessory."}}}}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}saveConfig(e){return E(this,null,function*(){try{let t=yield $(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(t,null,4),yield this.detectSavesChangesForRestart()}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}validateArraysEqual(e,t){if(e.length!==t.length)return!1;let i=[...e].sort(),o=[...t].sort();return i.every((v,C)=>v===o[C])}removePlatformsAndAccessories(e){let v=e,{accessories:t,platforms:i}=v;return X(v,["accessories","platforms"])}removeEmptyBridges(e){return e.filter(t=>t._bridge&&Object.keys(t._bridge).length>0).map(t=>t._bridge)}validateBridgesEqual(e,t){return e.length!==t.length?!1:e.every(i=>t.some(o=>T(i,o)))}detectConfigPlatformChanges(){try{let e=this.latestSavedConfig,t=JSON.parse(this.homebridgeConfig),i=(e.platforms||[]).find(B=>B.platform==="config"),o=(t.platforms||[]).find(B=>B.platform==="config"),v=i?.webroot||"",C=o?.webroot||"";return v!==C&&(C=C?`/${C}`.replace(/\/+/g,"/").replace(/\/$/,""):"",C==="/"&&(C=""),this.$settings.setItem("webroot",C),o&&(C?o.webroot=C:delete o.webroot,this.homebridgeConfig=JSON.stringify(t,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig))),!i&&o||i&&!o?!0:!i&&!o?!1:!T(i,o)}catch(e){return console.error("Error detecting config platform changes:",e),!1}}detectSavesChangesForRestart(){return E(this,null,function*(){let e=yield this.determineRestartType();if(e==="full"){let t=this.detectConfigPlatformChanges();yield this.performFullRestart(t)}else e==="child"&&(yield this.performChildBridgeRestart());this.latestSavedConfig=JSON.parse(this.homebridgeConfig)})}determineRestartType(){return E(this,null,function*(){if(this.hbPendingRestart)return"full";let e=this.latestSavedConfig,t=JSON.stringify(e,null,4),i=JSON.parse(this.homebridgeConfig),o=this.homebridgeConfig;if(t===o&&!this.childBridgesToRestart.length)return this.$toastr.info(this.$translate.instant("config.no_restart"),this.$translate.instant("config.config_saved")),"none";if(!this.validateArraysEqual(Object.keys(e),Object.keys(i))||[...i.platforms||[],...i.accessories||[]].every(c=>!c._bridge||!Object.keys(c._bridge).length))return"full";let C=this.removePlatformsAndAccessories(e),B=this.removePlatformsAndAccessories(i);if(!T(C,B))return"full";let q=e.platforms||[],F=i.platforms||[],Te=q.map(c=>c.platform),Be=F.map(c=>c.platform);if(!this.validateArraysEqual(Te,Be))return"full";let J=e.accessories||[],L=i.accessories||[],Ve=J.map(c=>c.accessory),Ae=L.map(c=>c.accessory);if(!this.validateArraysEqual(Ve,Ae)||!this.validateBridgesEqual(this.removeEmptyBridges(q),this.removeEmptyBridges(F))||!this.validateBridgesEqual(this.removeEmptyBridges(J),this.removeEmptyBridges(L)))return"full";let W=q.filter(c=>!T(c,F.find(V=>V.platform===c.platform))),De=J.filter(c=>!T(c,L.find(V=>V.accessory===c.accessory))),Y=[...W,...De];if(W.some(c=>c.platform==="config")||Y.some(c=>c.platform==="config"?!1:!c._bridge||Object.keys(c._bridge).length===0))return"full";try{let c=yield $(this.$api.get("/status/homebridge/child-bridges"));return Y.forEach(V=>{let Re=V._bridge.username.toUpperCase(),D=c.find(({username:U})=>U===Re);if(D)this.childBridgesToRestart.some(U=>U.username===D.username)||this.childBridgesToRestart.push({name:D.name,username:D.username});else return"full"}),"child"}catch(c){return console.error("Error fetching child bridges:",c),"full"}})}performChildBridgeRestart(){return E(this,null,function*(){let e=this.$modal.open(ve,{size:"lg",backdrop:"static"});e.componentInstance.bridges=this.childBridgesToRestart;try{yield e.result,this.childBridgesToRestart=[]}catch{}})}performFullRestart(e){return E(this,null,function*(){e&&(yield $(this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{})));let t=this.$modal.open(Ee,{size:"lg",backdrop:"static"});try{yield t.result,this.hbPendingRestart=!1,this.childBridgesToRestart=[]}catch{this.hbPendingRestart=!0}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let t=Me.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(t,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),t}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=R({type:n,selectors:[["ng-component"]],decls:18,vars:19,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-end"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],[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,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"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,"ngModel"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-times"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-history"],[1,"fas","fa-fw"],[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&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),_(4),s(5,"translate"),d()(),a(6,"div",4),x(7,qe,4,8,"button",5),x(8,Fe,4,7,"button",6),x(9,Je,4,11,"button",6),a(10,"button",7),s(11,"translate"),s(12,"translate"),b("click",function(){return i.onSave()}),x(13,Le,1,0,"i",8),x(14,Ue,1,0,"i",9),d()()(),x(15,ze,1,2,"ngx-monaco-editor",10),x(16,Ke,1,3,"ngx-monaco-diff-editor",11),x(17,We,2,1,"textarea",12),d()),t&2&&(r(4),M(l(5,13,"menu.config_json_editor")),r(3),S(i.originalConfig?7:-1),r(),S(i.originalConfig?-1:8),r(),S(!i.isMobile&&i.originalConfig?9:-1),r(),g("disabled",i.saveInProgress)("openDelay",150)("ngbTooltip",l(11,15,"form.button_save")),w("aria-label",l(12,17,"form.button_save")),r(3),S(i.saveInProgress?-1:13),r(),S(i.saveInProgress?14:-1),r(),S(!i.isMobile&&!i.originalConfig?15:-1),r(),S(!i.isMobile&&i.originalConfig?16:-1),r(),S(i.isMobile?17:-1))},dependencies:[P,be,_e,pe,ce,fe,me,I],encapsulation:2})}return n})();export{$t as ConfigEditorComponent};
@@ -1 +0,0 @@
1
- import{a as P}from"./chunk-LI7O67NH.js";import"./chunk-4X7L4KQL.js";import{d as D}from"./chunk-YMAWYUA6.js";import{b as F}from"./chunk-64F5HSDQ.js";import{k as E,l as R,n as B,q as U}from"./chunk-NRHD2BXN.js";import{Db as S,Gb as k,Ib as u,Kc as O,La as r,Vb as a,Wa as y,Wb as p,Xb as x,gc as I,h as w,hc as g,ja as d,lb as f,mb as h,mc as l,nc as c,oa as $,pa as b,rb as _,sb as s,tb as n,ub as v,w as C,zc as T}from"./chunk-V2XN5VIX.js";var W=(t,m)=>({"fas fa-fw fa-spinner fa-spin":t,"far fa-fw fa-check-circle":m}),M=t=>({"grey-text":t}),V=(t,m)=>({"far fa-fw fa-circle":t,"fas fa-fw fa-spinner fa-spin":m});function j(t,m){if(t&1&&(s(0,"div",7),a(1),n()),t&2){let e=u();r(),p(e.error)}}function q(t,m){if(t&1&&(s(0,"p",9),a(1),l(2,"translate"),n(),s(3,"div",10)(4,"div",11)(5,"span"),v(6,"i",12),a(7),l(8,"translate"),n()(),s(9,"div",11)(10,"span",12),v(11,"i",12),a(12),l(13,"translate"),n()()()),t&2){let e=u();r(),p(c(2,6,"restart.please_wait_while_server_restarts")),r(5),_("ngClass",g(12,W,!e.uiOnline,e.uiOnline)),r(),x(" ",c(8,8,"restart.ui_online")," "),r(3),_("ngClass",I(15,M,!e.uiOnline)),r(),_("ngClass",g(17,V,!e.uiOnline,e.uiOnline)),r(),x(" ",c(13,10,"restart.service_ready")," ")}}function z(t,m){if(t&1){let e=S();s(0,"p",15)(1,"button",16),k("click",function(){$(e);let o=u(2);return b(o.viewLogs())}),a(2),l(3,"translate"),n()()}t&2&&(r(2),p(c(3,1,"menu.tooltip_view_logs")))}function A(t,m){if(t&1&&(s(0,"div",8)(1,"p"),a(2),l(3,"translate"),n(),s(4,"p",13),a(5),l(6,"translate"),s(7,"span",14),a(8),n()(),f(9,z,4,3,"p",15),n()),t&2){let e=u();r(2),p(c(3,4,"restart.server_is_taking_long_time_to_restart")),r(3),x(" ",c(6,6,"restart.label_restart_command_executed"),": "),r(3),p(e.resp.command||"End Process"),r(),h(e.uiOnline?9:-1)}}var et=(()=>{class t{$api=d(U);$router=d(D);$settings=d(F);$toastr=d(B);$translate=d(E);$ws=d(P);checkTimeout;checkDelay;io;webrootChanged=!1;uiOnline=!1;error=!1;resp={};timeout=!1;ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline=!0,this.checkIfServerUp()):this.performRestart()}viewLogs(){this.$router.navigate(["/logs"])}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}performRestart(){return w(this,null,function*(){try{let e=this.$settings.originalWebroot||"",i=this.$settings.webroot||"";this.webrootChanged=e!==i,this.webrootChanged&&(yield C(this.$api.put("/server/webroot",{webroot:i}))),this.$api.put("/server/restart",{}).subscribe({next:o=>{this.resp=o,this.checkIfServerUp(),o.restartingUI||(this.uiOnline=!0)},error:o=>{console.error(o),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}catch(e){console.error("Failed to update webroot:",e),this.$api.put("/server/restart",{}).subscribe({next:i=>{this.resp=i,this.checkIfServerUp(),i.restartingUI||(this.uiOnline=!0)},error:i=>{console.error(i),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{if(this.uiOnline=!0,e.status==="up"||e.status==="pending")if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!T()){let i=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=i?`/${i}/`:"/"}else this.$router.navigate(["/"])})},7e3),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},4e4)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=y({type:t,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-fw","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[3,"ngClass"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(i,o){i&1&&(s(0,"div",0)(1,"h3",1),a(2),l(3,"translate"),n()(),s(4,"div",2)(5,"div",3),v(6,"i",4),n(),s(7,"div",5)(8,"h4",6),a(9),l(10,"translate"),n(),f(11,j,2,1,"div",7)(12,q,14,20),f(13,A,10,8,"div",8),n()()),i&2&&(r(2),p(c(3,4,"menu.restart.title")),r(7),p(c(10,6,"restart.title_restart")),r(2),h(o.error?11:12),r(2),h(o.timeout?13:-1))},dependencies:[O,R],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{et as RestartComponent};
@@ -1 +0,0 @@
1
- import{a as n}from"./chunk-4DKOKZK5.js";import"./chunk-QTZTX2XP.js";import"./chunk-JMWLREAW.js";import"./chunk-TST4TLQB.js";import"./chunk-ECQJTOVP.js";import"./chunk-I5TETZ3I.js";import"./chunk-S7XHIZ2C.js";import"./chunk-YOAZTJFX.js";import"./chunk-KT4VIVBF.js";import"./chunk-SGN6BUCA.js";import"./chunk-ZZ3PNQCV.js";import"./chunk-74ETBIBO.js";import"./chunk-2QIBEJ2P.js";import"./chunk-LXFVNKLD.js";import"./chunk-F7ZV2JBO.js";import"./chunk-LI7O67NH.js";import"./chunk-4X7L4KQL.js";import{g as r}from"./chunk-YMAWYUA6.js";import"./chunk-64F5HSDQ.js";import"./chunk-NRHD2BXN.js";import{Xa as i,fa as t}from"./chunk-V2XN5VIX.js";var l=[{path:"",loadComponent:()=>import("./chunk-ZJHKGKFK.js").then(o=>o.PluginsComponent)}],u=(()=>{class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=i({type:o});static \u0275inj=t({imports:[r.forChild(l),r]})}return o})();var f=(()=>{class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=i({type:o});static \u0275inj=t({imports:[n,u]})}return o})();export{f as PluginsModule};