homebridge-config-ui-x 5.4.2-beta.12 → 5.4.2-beta.13

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 (50) hide show
  1. package/package.json +1 -1
  2. package/public/{chunk-IGDZWQEL.js → chunk-2IWIAU2N.js} +1 -1
  3. package/public/{chunk-EJ2Y6AS3.js → chunk-42AMCJPR.js} +1 -1
  4. package/public/{chunk-O6PEZBMS.js → chunk-4LA6OGBW.js} +1 -1
  5. package/public/{chunk-PNSL45GV.js → chunk-4PWEKTPB.js} +1 -1
  6. package/public/{chunk-KXVNSESM.js → chunk-4UK45Y6B.js} +1 -1
  7. package/public/{chunk-5UZWVDTS.js → chunk-5QXUZNMR.js} +1 -1
  8. package/public/{chunk-GXGROUZ2.js → chunk-5VBFQBME.js} +1 -1
  9. package/public/{chunk-WU7CW6VG.js → chunk-6FMI6WEI.js} +1 -1
  10. package/public/{chunk-NRI3IRD6.js → chunk-6JF3ALTY.js} +1 -1
  11. package/public/{chunk-FEGO2KPB.js → chunk-772O3AIU.js} +1 -1
  12. package/public/{chunk-NDSMHRGJ.js → chunk-7L2FPZ3V.js} +1 -1
  13. package/public/{chunk-DDFRRBKP.js → chunk-ARGG2BC2.js} +1 -1
  14. package/public/{chunk-2ZGALYYQ.js → chunk-B6T4XX7B.js} +1 -1
  15. package/public/{chunk-P43CEBLR.js → chunk-BC5JLQKU.js} +1 -1
  16. package/public/{chunk-TJXKRNRU.js → chunk-BTBRQOOI.js} +1 -1
  17. package/public/{chunk-SNLXNSWH.js → chunk-BUPLBXR6.js} +1 -1
  18. package/public/{chunk-LPWUZ6NA.js → chunk-CH67GDTM.js} +1 -1
  19. package/public/{chunk-M7AW7XUQ.js → chunk-DBPQNHZE.js} +1 -1
  20. package/public/{chunk-VUNTORHU.js → chunk-DJN2ZIUW.js} +1 -1
  21. package/public/{chunk-AFBOGFH3.js → chunk-DMJJTFEA.js} +1 -1
  22. package/public/{chunk-XQQDURYW.js → chunk-DMLIDE5T.js} +1 -1
  23. package/public/{chunk-YOX7N4V6.js → chunk-EQPGHHJX.js} +1 -1
  24. package/public/{chunk-KDO45RFG.js → chunk-FM4QGFLK.js} +1 -1
  25. package/public/{chunk-7I2GAFZ7.js → chunk-G4WLHM4B.js} +1 -1
  26. package/public/{chunk-2EOXAFS7.js → chunk-GG6UJRI3.js} +1 -1
  27. package/public/{chunk-V3DSFNWC.js → chunk-IR4BD5UA.js} +1 -1
  28. package/public/{chunk-ZXT56I4P.js → chunk-MACP3TMM.js} +1 -1
  29. package/public/{chunk-RPZECBKI.js → chunk-NSRNEOZ5.js} +1 -1
  30. package/public/{chunk-Z36XSTDC.js → chunk-NT2IDUZH.js} +1 -1
  31. package/public/{chunk-7C5HDKQS.js → chunk-PF7T6CNZ.js} +1 -1
  32. package/public/{chunk-V3CUTMXJ.js → chunk-PTLIFA7V.js} +1 -1
  33. package/public/{chunk-XEOHFK6V.js → chunk-QAAVQMQN.js} +1 -1
  34. package/public/{chunk-ZTWMCKZD.js → chunk-QO3ZO6NT.js} +1 -1
  35. package/public/{chunk-HHFXR3BW.js → chunk-QQ23HGQR.js} +1 -1
  36. package/public/{chunk-5SY6S2S7.js → chunk-RDBOE7IA.js} +1 -1
  37. package/public/{chunk-Q3BGDEMO.js → chunk-RHE662Q6.js} +1 -1
  38. package/public/{chunk-GG3H364L.js → chunk-RSMIPIMV.js} +1 -1
  39. package/public/{chunk-6XKO6GB5.js → chunk-TLGTO2YA.js} +1 -1
  40. package/public/{chunk-BLWH7RYS.js → chunk-V2BWLBP4.js} +1 -1
  41. package/public/{chunk-QBO4F2IJ.js → chunk-VBPDM7HE.js} +1 -1
  42. package/public/{chunk-7A3AKCKT.js → chunk-VGHYKIOX.js} +1 -1
  43. package/public/{chunk-EFLDLDGD.js → chunk-VR6NEEC4.js} +1 -1
  44. package/public/{chunk-Y5YBUW2H.js → chunk-WNX6NDS7.js} +1 -1
  45. package/public/{chunk-HIDQPNDY.js → chunk-Y6EULWU5.js} +1 -1
  46. package/public/{chunk-T6AVFQSB.js → chunk-YHZ77E6M.js} +1 -1
  47. package/public/{chunk-D6IGPJRB.js → chunk-YNGEVP3I.js} +1 -1
  48. package/public/{chunk-AKK5FMC3.js → chunk-Z4QWKXZT.js} +1 -1
  49. package/public/index.html +1 -1
  50. package/public/{main-ZNP5PRRT.js → main-YAEB7GU5.js} +1 -1
@@ -1,4 +1,4 @@
1
- import{a as we}from"./chunk-5TCYRJ6A.js";import{b as A,e as _e,f as ye,g as De}from"./chunk-VUNTORHU.js";import{a as pe,b as ge}from"./chunk-YI7M7OR5.js";import{a as be}from"./chunk-77JZBWAC.js";import{a as Be}from"./chunk-V2P2FPJ7.js";import{m as me,n as fe,t as D}from"./chunk-EA3EXGPZ.js";import{A as ce,c as se,e as ae,l as le,z as de}from"./chunk-CNMM42I5.js";import{b as ue,d as I}from"./chunk-UOLP7IQJ.js";import{b as he}from"./chunk-ZTWMCKZD.js";import{k as P,n as O}from"./chunk-IGDZWQEL.js";import{a as R,b as j}from"./chunk-G7FA4DP4.js";import"./chunk-6GMXEQVA.js";import{Ec as U,Hb as C,Ib as E,Jb as x,Jc as a,Kc as d,Lb as X,Lc as z,Mb as Z,Nb as ee,Ob as g,Pb as s,Qb as l,Rb as f,_b as k,ab as r,bc as b,d as Y,dc as m,fb as Q,g as G,h as w,id as ne,ka as p,mb as B,pd as re,qa as u,qc as _,ra as h,rc as $,sc as S,w as M,xc as te,yc as ie,zc as oe}from"./chunk-H36QJYLQ.js";var xe=G(De(),1);var Ce=G(Be(),1);var ve=(n,y)=>({"fa-trash":n,"fa-cog fa-spin":y});function je(n,y){n&1&&(s(0,"div",13),f(1,"i",20),l())}function Pe(n,y){if(n&1){let e=k();s(0,"li",9)(1,"span"),_(2),a(3,"date"),f(4,"br"),s(5,"span",21),_(6),a(7,"date"),l()(),s(8,"span",22)(9,"button",25),a(10,"translate"),a(11,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.restore(i.id))}),f(12,"i",26),l(),s(13,"button",27),a(14,"translate"),a(15,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.download(i.id))}),f(16,"i",28),l(),s(17,"button",23),a(18,"translate"),a(19,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.delete(i.id))}),f(20,"i",24),l()()()}if(n&2){let e=y.$implicit,t=m(2);r(2),S(" ",z(3,15,e.timestamp,"mediumDate")),r(4),$(z(7,18,e.timestamp,"shortTime")),r(3),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(10,21,"config.restore.copy_to_editor"))("openDelay",150),C("aria-label",d(11,23,"config.restore.copy_to_editor")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(14,25,"form.button_download"))("openDelay",150),C("aria-label",d(15,27,"form.button_download")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(18,29,"form.button_delete"))("openDelay",150),C("aria-label",d(19,31,"form.button_delete")),r(3),g("ngClass",U(33,ve,e.id!==t.deleting,e.id===t.deleting))}}function Ie(n,y){if(n&1){let e=k();s(0,"ul",14),Z(1,Pe,21,36,"li",9,X),s(3,"li",9)(4,"span"),_(5),a(6,"translate"),f(7,"br"),s(8,"span",21),_(9),a(10,"translate"),l()(),s(11,"span",22)(12,"button",23),a(13,"translate"),a(14,"translate"),b("click",function(){u(e);let i=m();return h(i.deleteAllBackups())}),f(15,"i",24),l()()()()}if(n&2){let e=m();r(),ee(e.backupList),r(4),S(" ",d(6,7,"form.button_delete_all")),r(4),S(" ",d(10,9,"common.labels.no_confirmation")," "),r(3),g("disabled",e.clicked||e.deleting)("ngbTooltip",d(13,11,"form.button_delete_all"))("openDelay",150),C("aria-label",d(14,13,"form.button_delete")),r(3),g("ngClass",U(15,ve,e.deleting!=="all",e.deleting==="all"))}}var Ee=(()=>{class n{$activeModal=p(me);$api=p(O);$router=p(I);$toastr=p(P);$translate=p(R);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return w(this,null,function*(){try{let e=yield M(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 w(this,null,function*(){this.clicked=!0;try{let t=yield M(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,Ce.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 w(this,null,function*(){this.deleting=e;try{yield M(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 w(this,null,function*(){this.deleting="all";try{yield M(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=B({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&&(s(0,"div",0)(1,"div",1)(2,"h5",2),_(3),a(4,"translate"),l(),s(5,"button",3),a(6,"translate"),b("click",function(){return i.dismissModal()}),l()(),s(7,"div",4)(8,"div",5),f(9,"i",6),l(),s(10,"ul",7)(11,"li"),_(12),a(13,"translate"),l(),s(14,"li"),_(15),a(16,"translate"),l()(),s(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),_(21),a(22,"translate"),l(),f(23,"br"),s(24,"small",10),_(25),a(26,"translate"),l()(),s(27,"button",11),a(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),f(29,"i",12),l()()(),E(30,je,2,0,"div",13)(31,Ie,16,18,"ul",14),l(),s(32,"div",15),f(33,"div",16),s(34,"div",17)(35,"button",18),a(36,"translate"),b("click",function(){return i.dismissModal()}),_(37),a(38,"translate"),l()(),f(39,"div",19),l()()),t&2&&(r(3),$(d(4,13,"config.restore.title")),r(2),g("disabled",i.clicked||i.deleting),C("aria-label",d(6,15,"form.button_close")),r(7),$(d(13,17,"config.restore.help_1")),r(3),$(d(16,19,"config.restore.help_2")),r(6),$(d(22,21,"form.button_download")),r(4),$(d(26,23,"config.restore.download")),r(2),g("disabled",i.clicked||i.deleting),C("aria-label",d(28,25,"backup.backup_now")),r(3),x(i.loading?30:i.backupList.length?31:-1),r(5),g("disabled",i.clicked||i.deleting),C("aria-label",d(36,27,"form.button_close")),r(2),S(" ",d(38,29,"form.button_close")," "))},dependencies:[D,ne,ce,re,j],encapsulation:2})}return n})();function Oe(n,y){if(n&1){let e=k();s(0,"button",13),a(1,"translate"),a(2,"translate"),b("click",function(){u(e);let i=m();return h(i.onCancelRestore())}),f(3,"i",14),l()}if(n&2){let e=m();g("disabled",e.saveInProgress)("openDelay",150)("ngbTooltip",d(1,4,"form.button_cancel")),C("aria-label",d(2,6,"form.button_cancel"))}}function He(n,y){if(n&1){let e=k();s(0,"button",15),a(1,"translate"),a(2,"translate"),b("click",function(){u(e);let i=m();return h(i.onRestore())}),f(3,"i",16),l()}n&2&&(g("openDelay",150)("ngbTooltip",d(1,3,"form.button_restore")),C("aria-label",d(2,5,"form.button_restore")))}function Ne(n,y){n&1&&f(0,"i",8)}function qe(n,y){n&1&&f(0,"i",9)}function Fe(n,y){if(n&1){let e=k();s(0,"ngx-monaco-editor",17),b("onInit",function(i){u(e);let o=m();return h(o.onEditorInit(i))})("keydown.control.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())}),l()}if(n&2){let e=m();g("options",e.editorOptions)("model",e.monacoEditorModel)}}function Je(n,y){if(n&1){let e=k();s(0,"ngx-monaco-diff-editor",18),b("onInit",function(i){u(e);let o=m();return h(o.onInitDiffEditor(i))})("keydown.control.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())}),l()}if(n&2){let e=m();g("options",e.editorOptions)("originalModel",e.diffOriginalModel)("modifiedModel",e.diffModifiedModel)}}function Le(n,y){if(n&1){let e=k();s(0,"textarea",19),oe("ngModelChange",function(i){u(e);let o=m();return ie(o.homebridgeConfig,i)||(o.homebridgeConfig=i),h(i)}),_(1," "),l()}if(n&2){let e=m();te("ngModel",e.homebridgeConfig)}}var Et=(()=>{class n{$api=p(O);$md=p(be);$modal=p(fe);$monacoEditor=p(we);$route=p(ue);$renderer=p(Q);$router=p(I);$settings=p(he);$toastr=p(P);$translate=p(R);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:!0,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 w(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(Ee,{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.updateDiffModels(),this.onRestore()}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(`
1
+ import{a as we}from"./chunk-5TCYRJ6A.js";import{b as A,e as _e,f as ye,g as De}from"./chunk-DJN2ZIUW.js";import{a as pe,b as ge}from"./chunk-YI7M7OR5.js";import{a as be}from"./chunk-77JZBWAC.js";import{a as Be}from"./chunk-V2P2FPJ7.js";import{m as me,n as fe,t as D}from"./chunk-EA3EXGPZ.js";import{A as ce,c as se,e as ae,l as le,z as de}from"./chunk-CNMM42I5.js";import{b as ue,d as I}from"./chunk-UOLP7IQJ.js";import{b as he}from"./chunk-QO3ZO6NT.js";import{k as P,n as O}from"./chunk-2IWIAU2N.js";import{a as R,b as j}from"./chunk-G7FA4DP4.js";import"./chunk-6GMXEQVA.js";import{Ec as U,Hb as C,Ib as E,Jb as x,Jc as a,Kc as d,Lb as X,Lc as z,Mb as Z,Nb as ee,Ob as g,Pb as s,Qb as l,Rb as f,_b as k,ab as r,bc as b,d as Y,dc as m,fb as Q,g as G,h as w,id as ne,ka as p,mb as B,pd as re,qa as u,qc as _,ra as h,rc as $,sc as S,w as M,xc as te,yc as ie,zc as oe}from"./chunk-H36QJYLQ.js";var xe=G(De(),1);var Ce=G(Be(),1);var ve=(n,y)=>({"fa-trash":n,"fa-cog fa-spin":y});function je(n,y){n&1&&(s(0,"div",13),f(1,"i",20),l())}function Pe(n,y){if(n&1){let e=k();s(0,"li",9)(1,"span"),_(2),a(3,"date"),f(4,"br"),s(5,"span",21),_(6),a(7,"date"),l()(),s(8,"span",22)(9,"button",25),a(10,"translate"),a(11,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.restore(i.id))}),f(12,"i",26),l(),s(13,"button",27),a(14,"translate"),a(15,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.download(i.id))}),f(16,"i",28),l(),s(17,"button",23),a(18,"translate"),a(19,"translate"),b("click",function(){let i=u(e).$implicit,o=m(2);return h(o.delete(i.id))}),f(20,"i",24),l()()()}if(n&2){let e=y.$implicit,t=m(2);r(2),S(" ",z(3,15,e.timestamp,"mediumDate")),r(4),$(z(7,18,e.timestamp,"shortTime")),r(3),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(10,21,"config.restore.copy_to_editor"))("openDelay",150),C("aria-label",d(11,23,"config.restore.copy_to_editor")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(14,25,"form.button_download"))("openDelay",150),C("aria-label",d(15,27,"form.button_download")),r(4),g("disabled",t.clicked||t.deleting)("ngbTooltip",d(18,29,"form.button_delete"))("openDelay",150),C("aria-label",d(19,31,"form.button_delete")),r(3),g("ngClass",U(33,ve,e.id!==t.deleting,e.id===t.deleting))}}function Ie(n,y){if(n&1){let e=k();s(0,"ul",14),Z(1,Pe,21,36,"li",9,X),s(3,"li",9)(4,"span"),_(5),a(6,"translate"),f(7,"br"),s(8,"span",21),_(9),a(10,"translate"),l()(),s(11,"span",22)(12,"button",23),a(13,"translate"),a(14,"translate"),b("click",function(){u(e);let i=m();return h(i.deleteAllBackups())}),f(15,"i",24),l()()()()}if(n&2){let e=m();r(),ee(e.backupList),r(4),S(" ",d(6,7,"form.button_delete_all")),r(4),S(" ",d(10,9,"common.labels.no_confirmation")," "),r(3),g("disabled",e.clicked||e.deleting)("ngbTooltip",d(13,11,"form.button_delete_all"))("openDelay",150),C("aria-label",d(14,13,"form.button_delete")),r(3),g("ngClass",U(15,ve,e.deleting!=="all",e.deleting==="all"))}}var Ee=(()=>{class n{$activeModal=p(me);$api=p(O);$router=p(I);$toastr=p(P);$translate=p(R);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return w(this,null,function*(){try{let e=yield M(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 w(this,null,function*(){this.clicked=!0;try{let t=yield M(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,Ce.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 w(this,null,function*(){this.deleting=e;try{yield M(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 w(this,null,function*(){this.deleting="all";try{yield M(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=B({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&&(s(0,"div",0)(1,"div",1)(2,"h5",2),_(3),a(4,"translate"),l(),s(5,"button",3),a(6,"translate"),b("click",function(){return i.dismissModal()}),l()(),s(7,"div",4)(8,"div",5),f(9,"i",6),l(),s(10,"ul",7)(11,"li"),_(12),a(13,"translate"),l(),s(14,"li"),_(15),a(16,"translate"),l()(),s(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),_(21),a(22,"translate"),l(),f(23,"br"),s(24,"small",10),_(25),a(26,"translate"),l()(),s(27,"button",11),a(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),f(29,"i",12),l()()(),E(30,je,2,0,"div",13)(31,Ie,16,18,"ul",14),l(),s(32,"div",15),f(33,"div",16),s(34,"div",17)(35,"button",18),a(36,"translate"),b("click",function(){return i.dismissModal()}),_(37),a(38,"translate"),l()(),f(39,"div",19),l()()),t&2&&(r(3),$(d(4,13,"config.restore.title")),r(2),g("disabled",i.clicked||i.deleting),C("aria-label",d(6,15,"form.button_close")),r(7),$(d(13,17,"config.restore.help_1")),r(3),$(d(16,19,"config.restore.help_2")),r(6),$(d(22,21,"form.button_download")),r(4),$(d(26,23,"config.restore.download")),r(2),g("disabled",i.clicked||i.deleting),C("aria-label",d(28,25,"backup.backup_now")),r(3),x(i.loading?30:i.backupList.length?31:-1),r(5),g("disabled",i.clicked||i.deleting),C("aria-label",d(36,27,"form.button_close")),r(2),S(" ",d(38,29,"form.button_close")," "))},dependencies:[D,ne,ce,re,j],encapsulation:2})}return n})();function Oe(n,y){if(n&1){let e=k();s(0,"button",13),a(1,"translate"),a(2,"translate"),b("click",function(){u(e);let i=m();return h(i.onCancelRestore())}),f(3,"i",14),l()}if(n&2){let e=m();g("disabled",e.saveInProgress)("openDelay",150)("ngbTooltip",d(1,4,"form.button_cancel")),C("aria-label",d(2,6,"form.button_cancel"))}}function He(n,y){if(n&1){let e=k();s(0,"button",15),a(1,"translate"),a(2,"translate"),b("click",function(){u(e);let i=m();return h(i.onRestore())}),f(3,"i",16),l()}n&2&&(g("openDelay",150)("ngbTooltip",d(1,3,"form.button_restore")),C("aria-label",d(2,5,"form.button_restore")))}function Ne(n,y){n&1&&f(0,"i",8)}function qe(n,y){n&1&&f(0,"i",9)}function Fe(n,y){if(n&1){let e=k();s(0,"ngx-monaco-editor",17),b("onInit",function(i){u(e);let o=m();return h(o.onEditorInit(i))})("keydown.control.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())}),l()}if(n&2){let e=m();g("options",e.editorOptions)("model",e.monacoEditorModel)}}function Je(n,y){if(n&1){let e=k();s(0,"ngx-monaco-diff-editor",18),b("onInit",function(i){u(e);let o=m();return h(o.onInitDiffEditor(i))})("keydown.control.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())})("keydown.meta.s",function(i){u(e);let o=m();return i.preventDefault(),h(o.onSave())}),l()}if(n&2){let e=m();g("options",e.editorOptions)("originalModel",e.diffOriginalModel)("modifiedModel",e.diffModifiedModel)}}function Le(n,y){if(n&1){let e=k();s(0,"textarea",19),oe("ngModelChange",function(i){u(e);let o=m();return ie(o.homebridgeConfig,i)||(o.homebridgeConfig=i),h(i)}),_(1," "),l()}if(n&2){let e=m();te("ngModel",e.homebridgeConfig)}}var Et=(()=>{class n{$api=p(O);$md=p(be);$modal=p(fe);$monacoEditor=p(we);$route=p(ue);$renderer=p(Q);$router=p(I);$settings=p(he);$toastr=p(P);$translate=p(R);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:!0,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 w(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(Ee,{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.updateDiffModels(),this.onRestore()}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
2
  `).map(t=>` ${t}`).join(`
3
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
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).
@@ -1 +1 @@
1
- import{g as i}from"./chunk-UOLP7IQJ.js";import"./chunk-6GMXEQVA.js";import{ga as o,nb as e}from"./chunk-H36QJYLQ.js";var m=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"restart-server",loadComponent:()=>import("./chunk-YOX7N4V6.js").then(t=>t.RestartLinuxComponent)},{path:"shutdown-server",loadComponent:()=>import("./chunk-BLWH7RYS.js").then(t=>t.ShutdownLinuxComponent)}],n=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[i.forChild(m),i]})}return t})();var c=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[n]})}return t})();export{c as LinuxModule};
1
+ import{g as i}from"./chunk-UOLP7IQJ.js";import"./chunk-6GMXEQVA.js";import{ga as o,nb as e}from"./chunk-H36QJYLQ.js";var m=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"restart-server",loadComponent:()=>import("./chunk-EQPGHHJX.js").then(t=>t.RestartLinuxComponent)},{path:"shutdown-server",loadComponent:()=>import("./chunk-V2BWLBP4.js").then(t=>t.ShutdownLinuxComponent)}],n=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[i.forChild(m),i]})}return t})();var c=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275mod=e({type:t});static \u0275inj=o({imports:[n]})}return t})();export{c as LinuxModule};