homebridge-config-ui-x 4.79.0 → 4.79.1-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 (93) hide show
  1. package/CHANGELOG.md +9 -2
  2. package/dist/modules/plugins/plugins.service.js +2 -1
  3. package/dist/modules/plugins/plugins.service.js.map +1 -1
  4. package/package.json +2 -2
  5. package/public/assets/hap-icons/vacuum-off.svg +34 -0
  6. package/public/assets/hap-icons/vacuum-on.svg +73 -0
  7. package/public/{chunk-LCVO7RMH.js → chunk-253F4TW4.js} +1 -1
  8. package/public/{chunk-LK7KOGU3.js → chunk-2O6DEC53.js} +1 -1
  9. package/public/{chunk-GW2DVJRQ.js → chunk-3UCLNJIE.js} +1 -1
  10. package/public/{chunk-FIVNX6XW.js → chunk-54FUOXNU.js} +1 -1
  11. package/public/{chunk-ZC3OSQNN.js → chunk-5UOKGTXX.js} +1 -1
  12. package/public/chunk-66YKFFB6.js +1 -0
  13. package/public/chunk-6GSLZWG6.js +20 -0
  14. package/public/{chunk-LZTR2JMZ.js → chunk-6VMMFEEB.js} +1 -1
  15. package/public/chunk-6ZL3UE7Z.js +12 -0
  16. package/public/chunk-7CWC5NWB.js +1 -0
  17. package/public/{chunk-PCUE2CWJ.js → chunk-AUY6QHR5.js} +1 -1
  18. package/public/{chunk-CCVSU5Q2.js → chunk-AW7UKRRD.js} +1 -1
  19. package/public/{chunk-UD6SVFW2.js → chunk-BG5MCCBU.js} +1 -1
  20. package/public/{chunk-JZGFPSRH.js → chunk-BSLU2V6T.js} +1 -1
  21. package/public/chunk-C3HWKB2Q.js +5 -0
  22. package/public/chunk-CECQK2NF.js +1 -0
  23. package/public/chunk-CHYWVK3W.js +1 -0
  24. package/public/{chunk-X2SHRXXY.js → chunk-CXP6VKNZ.js} +1 -1
  25. package/public/{chunk-IN7NZAFJ.js → chunk-D5MSFLIQ.js} +1 -1
  26. package/public/{chunk-LTTGOCL3.js → chunk-EEMWANCF.js} +1 -1
  27. package/public/{chunk-HUOV4LKQ.js → chunk-EMAIPC6N.js} +1 -1
  28. package/public/{chunk-K2WNN2UC.js → chunk-F5DBIGJY.js} +1 -1
  29. package/public/{chunk-F3ERQJVG.js → chunk-FDBWBMB3.js} +1 -1
  30. package/public/{chunk-M6P3SI2J.js → chunk-GCXA6QM7.js} +1 -1
  31. package/public/chunk-GCZHMMFU.js +1 -0
  32. package/public/{chunk-X7PVYZAE.js → chunk-GEIS2BWE.js} +1 -1
  33. package/public/chunk-GXBL725Q.js +1 -0
  34. package/public/{chunk-A2RA4YA5.js → chunk-HMWKVMT3.js} +17 -17
  35. package/public/{chunk-GDFV4BMO.js → chunk-HUAADM2I.js} +1 -1
  36. package/public/{chunk-63UUDTSE.js → chunk-I2B4WZUR.js} +1 -1
  37. package/public/chunk-IOGCS6X4.js +1 -0
  38. package/public/{chunk-OCJGUIW2.js → chunk-J3PUN5YF.js} +1 -1
  39. package/public/chunk-J6IQRUII.js +1 -0
  40. package/public/{chunk-QDCKP2LU.js → chunk-J7Q5BUJW.js} +1 -1
  41. package/public/chunk-L42OF23P.js +1 -0
  42. package/public/{chunk-MSJ4FDVW.js → chunk-LAAHDKJ7.js} +1 -1
  43. package/public/{chunk-AQGBEZCF.js → chunk-LAYR2QS6.js} +1 -1
  44. package/public/{chunk-MSXLY5GL.js → chunk-MQ7GZVQ6.js} +2 -2
  45. package/public/{chunk-5IHI4JPS.js → chunk-MW6SHOW2.js} +1 -1
  46. package/public/chunk-NM3WGD6K.js +1 -0
  47. package/public/{chunk-LBJ652OA.js → chunk-OATPWII2.js} +1 -1
  48. package/public/chunk-Q4CZ7LVK.js +2 -0
  49. package/public/chunk-QEYPME6E.js +1 -0
  50. package/public/{chunk-6BERX4YF.js → chunk-QFOW3BTF.js} +1 -1
  51. package/public/{chunk-7EQ4BJZB.js → chunk-QIOCGI3G.js} +5 -5
  52. package/public/{chunk-2IBWWARU.js → chunk-QUYIBNT3.js} +1 -1
  53. package/public/{chunk-LXXELGX4.js → chunk-R3563DDE.js} +1 -1
  54. package/public/{chunk-LKXEBBZH.js → chunk-SDNN2Y3S.js} +1 -1
  55. package/public/{chunk-3V3UWE5A.js → chunk-SZDY4LJI.js} +1 -1
  56. package/public/{chunk-NGNQPAAK.js → chunk-THGDS273.js} +1 -1
  57. package/public/{chunk-BOHJERJS.js → chunk-TNDQV6T3.js} +1 -1
  58. package/public/{chunk-EGCUYKRH.js → chunk-TNNSK2DY.js} +1 -1
  59. package/public/chunk-ULJPS3WS.js +7 -0
  60. package/public/{chunk-YQKD6BY7.js → chunk-UQFCKN5N.js} +1 -1
  61. package/public/{chunk-SJ5LU5VY.js → chunk-UZX6ALVK.js} +1 -1
  62. package/public/{chunk-FIEMRUA3.js → chunk-VFAQVUYG.js} +1 -1
  63. package/public/{chunk-UQYCFN3T.js → chunk-WDFAWIMZ.js} +7 -7
  64. package/public/chunk-WFYBML4S.js +1 -0
  65. package/public/{chunk-COFGKPMD.js → chunk-XMXHM5XL.js} +1 -1
  66. package/public/{chunk-S6JBR3LV.js → chunk-XWWULMQB.js} +1 -1
  67. package/public/{chunk-J6YDFLQQ.js → chunk-YJ2Q2RAD.js} +1 -1
  68. package/public/chunk-YKW6VN4H.js +4 -0
  69. package/public/chunk-YLO62KQ7.js +1 -0
  70. package/public/{chunk-VNEQ22RC.js → chunk-Z7X5Z3CA.js} +1 -1
  71. package/public/{chunk-BNEWU4G2.js → chunk-ZEOXOJ4I.js} +1 -1
  72. package/public/index.html +1 -1
  73. package/public/{main-BZ5GZLDT.js → main-WT626ZFU.js} +1 -1
  74. package/scripts/upgrade-install-plugin.sh +6 -1
  75. package/public/chunk-76CU25ZK.js +0 -1
  76. package/public/chunk-BDOCQMFI.js +0 -1
  77. package/public/chunk-CF2ZN7LY.js +0 -5
  78. package/public/chunk-CX74C4IG.js +0 -1
  79. package/public/chunk-DMLSZLTL.js +0 -1
  80. package/public/chunk-JSXMXWXD.js +0 -1
  81. package/public/chunk-LCW6VVUL.js +0 -4
  82. package/public/chunk-LDCYGGLN.js +0 -12
  83. package/public/chunk-LG5SJQQG.js +0 -20
  84. package/public/chunk-OGEM76NM.js +0 -1
  85. package/public/chunk-Q3UFAHWJ.js +0 -1
  86. package/public/chunk-SKZUTSHE.js +0 -7
  87. package/public/chunk-SRP6QX5M.js +0 -2
  88. package/public/chunk-T252YJXA.js +0 -1
  89. package/public/chunk-TQNKRJOX.js +0 -1
  90. package/public/chunk-TXQYIDCS.js +0 -1
  91. package/public/chunk-UW7XZ646.js +0 -1
  92. package/public/chunk-XDQ7NXPL.js +0 -1
  93. package/public/chunk-YHCWXVOH.js +0 -1
@@ -1,20 +0,0 @@
1
- import{a as ee}from"./chunk-X2SHRXXY.js";import{a as Z,b as ne}from"./chunk-UQYCFN3T.js";import{a as W,b as Y}from"./chunk-GDFV4BMO.js";import{a as X}from"./chunk-NGNQPAAK.js";import{m as J,n as K,t as U}from"./chunk-CF2ZN7LY.js";import{c as N,e as F,l as q,z}from"./chunk-T252YJXA.js";import{b as G}from"./chunk-X7PVYZAE.js";import{b as Q}from"./chunk-2IBWWARU.js";import{k as M,n as V}from"./chunk-TXQYIDCS.js";import{a as $,b as T}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as s,Cc as d,Dc as O,Hb as C,Ib as m,Jb as p,Lb as I,Mb as j,Nb as H,Ob as v,Pb as r,Qb as a,Rb as w,Vb as b,Yb as _,Zb as l,ab as n,fb as D,g as oe,h as S,jd as L,kc as y,la as h,lc as x,mb as k,mc as E,ra as g,rc as R,sa as u,sc as P,tc as B,w as A}from"./chunk-SKZUTSHE.js";var ie=oe(ne(),1);function ae(o,f){o&1&&(r(0,"div",5),w(1,"i",12),a())}function se(o,f){if(o&1){let e=b();r(0,"li",17),y(1),s(2,"date"),r(3,"button",18),s(4,"translate"),_("click",function(){let t=g(e).$implicit,c=l(3);return u(c.restore(t.id))}),w(5,"i",19),a()()}if(o&2){let e=f.$implicit;n(),E(" ",O(2,2,e.timestamp,"medium")," "),n(2),C("aria-label",d(4,5,"config.restore.copy_to_editor"))}}function le(o,f){if(o&1&&(r(0,"ul",15),j(1,se,6,7,"li",17,I),a()),o&2){let e=l(2);n(),H(e.backupList)}}function de(o,f){o&1&&(r(0,"p",16),y(1),s(2,"translate"),a()),o&2&&(n(),x(d(2,1,"config.restore.no_backups")))}function ce(o,f){if(o&1&&(r(0,"div",13),w(1,"i",14),a(),r(2,"p",13),y(3),s(4,"translate"),a(),m(5,le,3,0,"ul",15),m(6,de,3,3,"p",16)),o&2){let e=l();n(3),x(d(4,3,"config.restore.title_restore_homebridge_backup")),n(2),p(e.backupList&&e.backupList.length?5:-1),n(),p(!e.backupList||!e.backupList.length?6:-1)}}function me(o,f){if(o&1){let e=b();r(0,"button",20),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.dismissModal())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_close")),n(2),E(" ",d(3,4,"form.button_close")," "))}function pe(o,f){if(o&1){let e=b();r(0,"button",20),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.dismissModal())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_close")),n(2),E(" ",d(3,4,"form.button_close")," "))}function fe(o,f){if(o&1){let e=b();r(0,"button",21),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.deleteAllBackups())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_remove")),n(2),E(" ",d(3,4,"form.button_remove")," "))}var te=(()=>{class o{$activeModal=h(J);$api=h(V);$toastr=h(M);$translate=h($);loading=!0;backupList=[];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"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=k({type:o,selectors:[["ng-component"]],decls:17,vars:11,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-danger","me-auto"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-history","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box"],[1,"text-center","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-arrow-right"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-danger","me-auto",3,"click"]],template:function(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),y(3),s(4,"translate"),a(),r(5,"button",3),s(6,"translate"),_("click",function(){return t.dismissModal()}),a()(),r(7,"div",4),m(8,ae,2,0,"div",5),m(9,ce,7,5),a(),r(10,"div",6)(11,"div",7),m(12,me,4,6,"button",8),a(),r(13,"div",9),m(14,pe,4,6,"button",8),a(),r(15,"div",10),m(16,fe,4,6,"button",11),a()()()),i&2&&(n(3),x(d(4,7,"form.button_restore")),n(2),C("aria-label",d(6,9,"form.button_close")),n(3),p(t.loading?8:-1),n(),p(t.loading?-1:9),n(3),p(!t.loading&&t.backupList.length?12:-1),n(2),p(t.loading||!t.loading&&!t.backupList.length?14:-1),n(2),p(!t.loading&&t.backupList.length?16:-1))},dependencies:[L,T],encapsulation:2})}return o})();function ge(o,f){if(o&1){let e=b();r(0,"button",13),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onExportConfig())}),w(3,"i",14),a()}o&2&&(v("ngbTooltip",d(1,2,"form.button_download")),C("aria-label",d(2,4,"form.button_download")))}function ue(o,f){if(o&1){let e=b();r(0,"button",15),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onCancelRestore())}),w(3,"i",16),a()}if(o&2){let e=l();v("disabled",e.saveInProgress)("ngbTooltip",d(1,3,"form.button_cancel")),C("aria-label",d(2,5,"form.button_cancel"))}}function he(o,f){if(o&1){let e=b();r(0,"button",13),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onRestore())}),w(3,"i",17),a()}o&2&&(v("ngbTooltip",d(1,2,"form.button_restore")),C("aria-label",d(2,4,"form.button_restore")))}function _e(o,f){o&1&&w(0,"i",8)}function be(o,f){o&1&&w(0,"i",9)}function Ce(o,f){if(o&1){let e=b();r(0,"ngx-monaco-editor",18),_("onInit",function(t){g(e);let c=l();return u(c.onEditorInit(t))})("keydown.control.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())})("keydown.meta.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())}),a()}if(o&2){let e=l();v("options",e.editorOptions)("model",e.monacoEditorModel)}}function ye(o,f){if(o&1){let e=b();r(0,"ngx-monaco-diff-editor",19),_("onInit",function(t){g(e);let c=l();return u(c.onInitDiffEditor(t))})("keydown.control.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())})("keydown.meta.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())}),a()}if(o&2){let e=l();v("options",e.editorOptions)("originalModel",e.monacoEditorModel)("modifiedModel",e.monacoEditorModel)}}function we(o,f){if(o&1){let e=b();r(0,"textarea",20),B("ngModelChange",function(t){g(e);let c=l();return P(c.homebridgeConfig,t)||(c.homebridgeConfig=t),u(t)}),y(1," "),a()}if(o&2){let e=l();R("ngModel",e.homebridgeConfig)}}var Ke=(()=>{class o{$api=h(V);$md=h(X);$modal=h(K);$monacoEditor=h(ee);$route=h(G);$renderer=h(D);$settings=h(Q);$toastr=h(M);$translate=h($);editorDecorations=[];lastHeight;visualViewPortEventCallback;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;constructor(){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(i=>{this.homebridgeConfig=i.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 S(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 i=window.monaco.editor.getModelMarkers({owner:"json"});for(let t of i)if(t.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(){this.$modal.open(te,{size:"lg",backdrop:"static"}).result.then(e=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig),this.$api.get(`/config-editor/backups/${e}`).subscribe({next:i=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(i,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:i=>{console.error(i),this.$toastr.error(i.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)}`,i=document.createElement("a");i.setAttribute("href",e),i.setAttribute("download","config.json"),document.body.appendChild(i),i.click(),i.remove()}onCancelRestore(){this.homebridgeConfig=this.originalConfig,this.originalConfig=""}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()}validateSection(e,i){for(let t of e){if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(!t[i])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(typeof t[i]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1}return!0}validatePlugins(e,i){for(let t of e)if(typeof t!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:i}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
2
- `).map(i=>` ${i}`).join(`
3
- `),setTimeout(()=>{let i=this.monacoEditor.getModel().findMatches(e);if(i.length){let t=i[0].range,c=new monaco.Range(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:c,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.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 S(this,null,function*(){try{let i=yield A(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(i,null,4),this.$modal.open(Z,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let i=ie.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),i}}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=k({type:o,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-end"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","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","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",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","me-2",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-times"],[1,"fas","fa-fw","fa-history"],[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(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),y(4),s(5,"translate"),a()(),r(6,"div",4),m(7,ge,4,6,"button",5),m(8,ue,4,7,"button",6),m(9,he,4,6,"button",5),r(10,"button",7),s(11,"translate"),s(12,"translate"),_("click",function(){return t.onSave()}),m(13,_e,1,0,"i",8),m(14,be,1,0,"i",9),a()()(),m(15,Ce,1,2,"ngx-monaco-editor",10),m(16,ye,1,3,"ngx-monaco-diff-editor",11),m(17,we,2,1,"textarea",12),a()),i&2&&(n(4),x(d(5,12,"menu.config_json_editor")),n(3),p(t.originalConfig?-1:7),n(),p(t.originalConfig?8:-1),n(),p(t.originalConfig?-1:9),n(),v("disabled",t.saveInProgress)("ngbTooltip",d(11,14,"form.button_save")),C("aria-label",d(12,16,"form.button_save")),n(3),p(t.saveInProgress?-1:13),n(),p(t.saveInProgress?14:-1),n(),p(!t.isMobile&&!t.originalConfig?15:-1),n(),p(!t.isMobile&&t.originalConfig?16:-1),n(),p(t.isMobile?17:-1))},dependencies:[U,W,Y,z,N,F,q,T],encapsulation:2})}return o})();export{Ke as ConfigEditorComponent};
@@ -1 +0,0 @@
1
- import{a as n}from"./chunk-6BERX4YF.js";import"./chunk-YQKD6BY7.js";import{g as r}from"./chunk-X7PVYZAE.js";import"./chunk-2IBWWARU.js";import"./chunk-TXQYIDCS.js";import"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{ha as o,nb as e}from"./chunk-SKZUTSHE.js";var c=[{path:"",loadComponent:()=>import("./chunk-XDQ7NXPL.js").then(t=>t.SettingsComponent),canActivate:[n]}],m=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[r.forChild(c),r]})}return t})();var l=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[m]})}return t})();export{l as SettingsModule};
@@ -1 +0,0 @@
1
- import{m as E}from"./chunk-CF2ZN7LY.js";import{b as H}from"./chunk-LXXELGX4.js";import{Bc as d,Cc as p,Hb as C,Ib as l,Jb as s,Ob as u,Pb as o,Qb as a,Rb as m,Vb as k,Xa as b,Ya as T,Yb as x,Zb as r,ab as i,jc as M,kc as _,la as L,lc as y,mb as B,mc as v,ra as I,sa as g,uc as w}from"./chunk-SKZUTSHE.js";function S(t,f){if(t&1&&m(0,"i",15),t&2){let e=r();M(w("fas fa-fw ",e.faIconClass," mb-3"))}}function h(t,f){if(t&1&&m(0,"h5",6),t&2){let e=r();u("innerHTML",e.subtitle,b)}}function z(t,f){if(t&1&&m(0,"p",8),t&2){let e=r();u("innerHTML",e.message2,b)}}function V(t,f){if(t&1){let e=k();o(0,"button",16),d(1,"translate"),x("click",function(){I(e);let n=r();return g(n.dismissModal())}),_(2),d(3,"translate"),a()}t&2&&(C("aria-label",p(1,2,"form.button_close")),i(2),v(" ",p(3,4,"form.button_close")," "))}function D(t,f){if(t&1){let e=k();o(0,"button",16),d(1,"translate"),x("click",function(){I(e);let n=r();return g(n.dismissModal())}),_(2),d(3,"translate"),a()}t&2&&(C("aria-label",p(1,2,"form.button_close")),i(2),v(" ",p(3,4,"form.button_close")," "))}function j(t,f){if(t&1&&(o(0,"a",14),_(1),m(2,"i",17),a()),t&2){let e=r();u("href",e.ctaButtonLink,T),i(),v(" ",e.ctaButtonLabel," ")}}var G=(()=>{class t{$activeModal=L(E);title;subtitle;message;message2;ctaButtonLabel;ctaButtonLink;faIconClass;dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(c){return new(c||t)};static \u0275cmp=B({type:t,selectors:[["ng-component"]],inputs:{title:"title",subtitle:"subtitle",message:"message",message2:"message2",ctaButtonLabel:"ctaButtonLabel",ctaButtonLink:"ctaButtonLink",faIconClass:"faIconClass"},decls:18,vars:11,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","text-center"],[2,"font-size","75px",3,"class"],[1,"mb-3",3,"innerHTML"],[1,"mb-0",3,"innerHTML"],[1,"mb-0","mt-3",3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none",3,"href"],[2,"font-size","75px"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"fas","fa-fw","fa-external-link-alt"]],template:function(c,n){c&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),_(3),a(),o(4,"button",3),d(5,"translate"),x("click",function(){return n.dismissModal()}),a()(),o(6,"div",4),l(7,S,1,3,"i",5),l(8,h,1,1,"h5",6),m(9,"p",7),l(10,z,1,1,"p",8),a(),o(11,"div",9)(12,"div",10),l(13,V,4,6,"button",11),a(),o(14,"div",12),l(15,D,4,6,"button",11),a(),o(16,"div",13),l(17,j,3,2,"a",14),a()()()),c&2&&(i(3),y(n.title),i(),C("aria-label",p(5,9,"form.button_close")),i(3),s(n.faIconClass?7:-1),i(),s(n.subtitle?8:-1),i(),u("innerHTML",n.message,b),i(),s(n.message2?10:-1),i(3),s(n.ctaButtonLink?13:-1),i(2),s(n.ctaButtonLink?-1:15),i(2),s(n.ctaButtonLink?17:-1))},dependencies:[H],encapsulation:2})}return t})();export{G as a};