homebridge-config-ui-x 5.0.0-beta.113 → 5.0.0-beta.115
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.
- package/CHANGELOG.md +16 -1
- package/dist/modules/platform-tools/docker/docker.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +8 -5
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/status/status.gateway.js.map +1 -1
- package/package.json +3 -3
- package/public/assets/hap-icons/vacuum-off.svg +34 -0
- package/public/assets/hap-icons/vacuum-on.svg +73 -0
- package/public/{chunk-JLAB57DY.js → chunk-2EFII46K.js} +1 -1
- package/public/{chunk-OBSUISSQ.js → chunk-2IUXG2EN.js} +1 -1
- package/public/{chunk-2TARYUWY.js → chunk-3H3N5KRW.js} +1 -1
- package/public/{chunk-RWWJ3AND.js → chunk-3S2WTI7E.js} +1 -1
- package/public/{chunk-GW2DVJRQ.js → chunk-3UCLNJIE.js} +1 -1
- package/public/{chunk-GBNJTVDU.js → chunk-42ME5L3R.js} +1 -1
- package/public/{chunk-HAAF32V3.js → chunk-4GSDDNS4.js} +1 -1
- package/public/{chunk-T27EJN3V.js → chunk-4LCIAXO2.js} +1 -1
- package/public/{chunk-ZT7I3BIJ.js → chunk-4QC4PBZL.js} +1 -1
- package/public/{chunk-LZTR2JMZ.js → chunk-6VMMFEEB.js} +1 -1
- package/public/chunk-6VTI52J2.js +1 -0
- package/public/{chunk-RD66VCFJ.js → chunk-6Y2OAEVG.js} +1 -1
- package/public/{chunk-PGM5AZZE.js → chunk-7UBIRML4.js} +1 -1
- package/public/chunk-AF3JBKYZ.js +1 -0
- package/public/{chunk-UD6SVFW2.js → chunk-BG5MCCBU.js} +1 -1
- package/public/{chunk-7YJPZ7IS.js → chunk-BMP5IKAG.js} +1 -1
- package/public/chunk-BTHUOI3P.js +1 -0
- package/public/chunk-C3GSKPPS.js +1 -0
- package/public/chunk-C3HWKB2Q.js +5 -0
- package/public/chunk-CHYWVK3W.js +1 -0
- package/public/{chunk-QJJWOZRV.js → chunk-CI2DUK2L.js} +1 -1
- package/public/{chunk-6HU2TIJU.js → chunk-CXANN4XV.js} +1 -1
- package/public/{chunk-X2SHRXXY.js → chunk-CXP6VKNZ.js} +1 -1
- package/public/{chunk-IN7NZAFJ.js → chunk-D5MSFLIQ.js} +1 -1
- package/public/{chunk-JDMWYDGV.js → chunk-EI76KND2.js} +1 -1
- package/public/{chunk-F3ERQJVG.js → chunk-FDBWBMB3.js} +1 -1
- package/public/chunk-G5V7VNU6.js +12 -0
- package/public/{chunk-X7PVYZAE.js → chunk-GEIS2BWE.js} +1 -1
- package/public/{chunk-6QTT6WJB.js → chunk-GEO4DT7J.js} +1 -1
- package/public/{chunk-TXGBXF5X.js → chunk-HAE77KT7.js} +2 -2
- package/public/{chunk-GDFV4BMO.js → chunk-HUAADM2I.js} +1 -1
- package/public/chunk-IJLX5JKF.js +28 -0
- package/public/chunk-J2D4NQET.js +1 -0
- package/public/{chunk-QDCKP2LU.js → chunk-J7Q5BUJW.js} +1 -1
- package/public/chunk-JFX6FD7T.js +1 -0
- package/public/{chunk-5BKSPZCJ.js → chunk-K6OAGSPQ.js} +1 -1
- package/public/chunk-KFNXMHXX.js +1 -0
- package/public/chunk-LPOUENXE.js +1 -0
- package/public/{chunk-LMK6T7VD.js → chunk-M5CMDZZD.js} +1 -1
- package/public/{chunk-SJ6BD37Z.js → chunk-MHUXDZEF.js} +1 -1
- package/public/{chunk-CKYDFJZX.js → chunk-OWX3CBVC.js} +1 -1
- package/public/{chunk-CYNMODOM.js → chunk-PH3XR7JL.js} +1 -1
- package/public/chunk-PPPQR4O4.js +20 -0
- package/public/chunk-Q4CZ7LVK.js +2 -0
- package/public/{chunk-7EQ4BJZB.js → chunk-QIOCGI3G.js} +5 -5
- package/public/{chunk-OJS6YR32.js → chunk-QR4VLNDI.js} +1 -1
- package/public/{chunk-CS2GS4HN.js → chunk-QTTC6A7P.js} +1 -1
- package/public/{chunk-LXXELGX4.js → chunk-R3563DDE.js} +1 -1
- package/public/{chunk-PEVRU6AZ.js → chunk-RPHC6QJY.js} +1 -1
- package/public/{chunk-FCULIZZM.js → chunk-SCL7UVTQ.js} +1 -1
- package/public/{chunk-HLRE47IE.js → chunk-SE3VEIYB.js} +1 -1
- package/public/{chunk-YWLPA4JO.js → chunk-ST6S2EEM.js} +1 -1
- package/public/{chunk-NGNQPAAK.js → chunk-THGDS273.js} +1 -1
- package/public/{chunk-UPZVR4LA.js → chunk-TKTXNLQU.js} +1 -1
- package/public/{chunk-PWSXD4G2.js → chunk-U3OKAWTP.js} +1 -1
- package/public/chunk-ULJPS3WS.js +7 -0
- package/public/{chunk-QJHJSB5X.js → chunk-VEGQX5TF.js} +1 -1
- package/public/{chunk-GH54IGVT.js → chunk-VWBW7JSQ.js} +1 -1
- package/public/{chunk-UQYCFN3T.js → chunk-WDFAWIMZ.js} +7 -7
- package/public/{chunk-LI35R22H.js → chunk-WFXCEU4I.js} +1 -1
- package/public/chunk-WFYBML4S.js +1 -0
- package/public/{chunk-KWQDKO3N.js → chunk-XTBMSQM5.js} +1 -1
- package/public/{chunk-J6YDFLQQ.js → chunk-YJ2Q2RAD.js} +1 -1
- package/public/chunk-ZUYGS2P3.js +1 -0
- package/public/chunk-ZXNNCTE2.js +4 -0
- package/public/index.html +1 -1
- package/public/main-6ZIVRYGV.js +1 -0
- package/scripts/upgrade-install-plugin.sh +6 -1
- package/public/chunk-3LATV7D4.js +0 -12
- package/public/chunk-5SV3CLSS.js +0 -1
- package/public/chunk-7ZCMOMUZ.js +0 -4
- package/public/chunk-BHOIUF73.js +0 -1
- package/public/chunk-CF2ZN7LY.js +0 -5
- package/public/chunk-CHBDRXE6.js +0 -28
- package/public/chunk-D3NX55OC.js +0 -1
- package/public/chunk-DGHOEBLZ.js +0 -1
- package/public/chunk-ESR376KP.js +0 -1
- package/public/chunk-EZZ4JJTY.js +0 -1
- package/public/chunk-OSJWAVFW.js +0 -1
- package/public/chunk-RFLXMTDL.js +0 -20
- package/public/chunk-RM4HOGFF.js +0 -1
- package/public/chunk-SKZUTSHE.js +0 -7
- package/public/chunk-SRP6QX5M.js +0 -2
- package/public/chunk-T252YJXA.js +0 -1
- package/public/chunk-TQNKRJOX.js +0 -1
- package/public/chunk-Y55EO6OK.js +0 -1
- package/public/main-UTDT7FIF.js +0 -1
package/public/chunk-RFLXMTDL.js
DELETED
|
@@ -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-RD66VCFJ.js";import{k as M,n as V}from"./chunk-5BKSPZCJ.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};
|
package/public/chunk-RM4HOGFF.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as E}from"./chunk-GBNJTVDU.js";import"./chunk-OJS6YR32.js";import{d as w}from"./chunk-X7PVYZAE.js";import{b}from"./chunk-RD66VCFJ.js";import{k,n as S}from"./chunk-5BKSPZCJ.js";import{a as $,b as T}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as c,Cc as m,Dc as C,Ib as d,Jb as f,Ob as g,Pb as r,Qb as i,Rb as l,Xa as x,Zb as h,ab as n,kc as s,la as a,lc as o,mb as _,xc as y}from"./chunk-SKZUTSHE.js";var I=t=>({command:t});function D(t,u){if(t&1&&(r(0,"div",7),s(1),i()),t&2){let e=h();n(),o(e.error)}}function R(t,u){t&1&&(r(0,"p",9),s(1),c(2,"translate"),i(),r(3,"div",10)(4,"div",11),l(5,"i",12),i()()),t&2&&(n(),o(m(2,1,"restart.please_wait_while_server_restarts")))}function B(t,u){if(t&1&&(r(0,"div",8)(1,"p"),s(2),c(3,"translate"),i(),l(4,"p",13),c(5,"translate"),i()),t&2){let e=h();n(2),o(m(3,2,"platform.docker.server_long_time")),n(2),g("innerHTML",C(5,4,"platform.docker.run_with_restart",y(7,I,e.command)),x)}}var U=(()=>{class t{$api=a(S);$router=a(w);$settings=a(b);$toastr=a(k);$translate=a($);$ws=a(E);checkTimeout;checkDelay;io;resp={};timeout=!1;error=!1;command='<span class="font-monospace">--restart=always</span>';ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$api.put("/platform-tools/docker/restart-container",{}).subscribe({next:e=>{this.resp=e,this.checkIfServerUp()},error:e=>{this.error=this.$translate.instant("restart.toast_server_restart_error"),console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{(e.status==="up"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("platform.docker.container_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},1e4),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},6e4)}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=_({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,"fab","fa-fw","fa-docker",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"],[1,"fas","fa-fw","fa-spinner","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(p,v){p&1&&(r(0,"div",0)(1,"h3",1),s(2),c(3,"translate"),i()(),r(4,"div",2)(5,"div",3),l(6,"i",4),i(),r(7,"div",5)(8,"h4",6),s(9),c(10,"translate"),i(),d(11,D,2,1,"div",7)(12,R,6,3),d(13,B,6,9,"div",8),i()()),p&2&&(n(2),o(m(3,4,"menu.restart.title")),n(7),o(m(10,6,"platform.docker.title_restarting")),n(2),f(v.error?11:12),n(2),f(v.timeout?13:-1))},dependencies:[T],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{U as ContainerRestartComponent};
|