homebridge-config-ui-x 5.10.1-beta.0 → 5.11.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.
- package/CHANGELOG.md +20 -0
- package/README.md +3 -3
- package/dist/core/auth/auth.controller.d.ts +0 -4
- package/dist/core/config/config.interfaces.d.ts +0 -14
- package/dist/core/config/config.service.d.ts +0 -6
- package/dist/core/config/config.service.js +0 -8
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/core/config/config.startup.js +17 -48
- package/dist/core/config/config.startup.js.map +1 -1
- package/dist/core/feature-flags/feature-flags.registry.js +0 -5
- package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js +0 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
- package/dist/core/spa/spa.filter.d.ts +0 -3
- package/dist/core/spa/spa.filter.js +2 -22
- package/dist/core/spa/spa.filter.js.map +1 -1
- package/dist/globalDefaults.js +0 -3
- package/dist/globalDefaults.js.map +1 -1
- package/dist/main.js +4 -18
- package/dist/main.js.map +1 -1
- package/dist/modules/accessories/accessories.controller.d.ts +1 -1
- package/dist/modules/accessories/accessories.module.js +0 -2
- package/dist/modules/accessories/accessories.module.js.map +1 -1
- package/dist/modules/accessories/accessories.service.d.ts +3 -21
- package/dist/modules/accessories/accessories.service.js +17 -280
- package/dist/modules/accessories/accessories.service.js.map +1 -1
- package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +0 -9
- package/dist/modules/config-editor/config-editor.controller.d.ts +0 -4
- package/dist/modules/config-editor/config-editor.controller.js +0 -64
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +1 -6
- package/dist/modules/config-editor/config-editor.service.js +1 -45
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +2 -16
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/server/server.controller.d.ts +0 -50
- package/dist/modules/server/server.controller.js +2 -201
- package/dist/modules/server/server.controller.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +0 -48
- package/dist/modules/server/server.service.js +14 -502
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +0 -2
- package/dist/modules/status/status.interfaces.d.ts +0 -11
- package/dist/modules/status/status.service.d.ts +1 -4
- package/dist/modules/status/status.service.js +2 -21
- package/dist/modules/status/status.service.js.map +1 -1
- package/package.json +9 -14
- package/public/3rdpartylicenses.txt +52 -52
- package/public/assets/monaco/min/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/public/assets/monaco/min/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/public/assets/monaco/min/vs/basic-languages/monaco.contribution.js +1 -0
- package/public/assets/monaco/min/vs/editor/editor.main.css +1 -8
- package/public/assets/monaco/min/vs/editor/editor.main.js +4 -797
- package/public/assets/monaco/min/vs/editor.api-CalNCsUg.js +903 -0
- package/public/assets/monaco/min/vs/jsonMode-DULH5oaX.js +7 -0
- package/public/assets/monaco/min/vs/language/json/monaco.contribution.js +1 -0
- package/public/assets/monaco/min/vs/loader.js +1364 -7
- package/public/assets/monaco/min/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/public/assets/monaco/min/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/public/assets/monaco/min/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/public/assets/monaco/min/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/public/assets/monaco/min/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/public/assets/monaco/min/vs/nls.messages-loader.js +1 -0
- package/public/assets/monaco/min/vs/workers-DcJshg-q.js +1 -0
- package/public/{chunk-ZUYIWQNV.js → chunk-227QDXDT.js} +1 -1
- package/public/{chunk-WTSUWA7S.js → chunk-2AF3WD4J.js} +1 -1
- package/public/chunk-3WJDQQZL.js +4 -0
- package/public/{chunk-PYAOOAFS.js → chunk-4EKX3Z76.js} +1 -1
- package/public/{chunk-OJ37C3YB.js → chunk-53KE3XPC.js} +1 -1
- package/public/{chunk-HUESZB2Q.js → chunk-53KNB3HO.js} +1 -1
- package/public/chunk-5KQ5PHZY.js +1 -0
- package/public/chunk-5RSQ3VKF.js +1 -0
- package/public/{chunk-4C4OAXTJ.js → chunk-7G4CXD2O.js} +1 -1
- package/public/{chunk-JXLJRPJS.js → chunk-A6U6HYY3.js} +1 -1
- package/public/{chunk-BZZVKG3V.js → chunk-APMBCXUH.js} +1 -1
- package/public/{chunk-K3PIHMRS.js → chunk-AW3MY6EQ.js} +1 -1
- package/public/{chunk-7RBF5X4H.js → chunk-C46IEABJ.js} +1 -1
- package/public/{chunk-ICS7ZICH.js → chunk-DEAIAR5T.js} +1 -1
- package/public/chunk-DOEUREPX.js +1 -0
- package/public/{chunk-UCNN3X7L.js → chunk-E7RYLM5U.js} +1 -1
- package/public/chunk-FDR4RMWN.js +1 -0
- package/public/{chunk-RAWL26R7.js → chunk-FHGIL4GK.js} +1 -1
- package/public/chunk-FK57KJRX.js +1 -0
- package/public/chunk-FYY57EXZ.js +5 -0
- package/public/{chunk-UASZBKBZ.js → chunk-G6G4X3LL.js} +1 -1
- package/public/{chunk-VXWLFCOQ.js → chunk-G6VVYCFK.js} +1 -1
- package/public/chunk-G7S7J6DQ.js +1 -0
- package/public/chunk-GZU7FSYR.js +1 -0
- package/public/{chunk-LXMBIF6W.js → chunk-HGQJCJDV.js} +1 -1
- package/public/{chunk-P2DQFTI7.js → chunk-HIFUKISS.js} +1 -1
- package/public/chunk-IKDCH6SV.js +1 -0
- package/public/chunk-IWRD5BS2.js +1 -0
- package/public/{chunk-2PQS43HJ.js → chunk-J3GNTL4X.js} +1 -1
- package/public/chunk-KK5HST3W.js +1 -0
- package/public/{chunk-RHJH4NAL.js → chunk-KO7OKSD4.js} +1 -1
- package/public/{chunk-3OCGL4VG.js → chunk-KY3N6RBR.js} +1 -1
- package/public/{chunk-DSA6B4PW.js → chunk-L5OY5K3Z.js} +1 -1
- package/public/{chunk-GBXDLKOS.js → chunk-LQSXNQRY.js} +1 -1
- package/public/chunk-NIVC55QC.js +1 -0
- package/public/{chunk-EXSN7ASU.js → chunk-NLVJP2FS.js} +1 -1
- package/public/{chunk-RFNZZH35.js → chunk-NVYUCMZB.js} +1 -1
- package/public/{chunk-XCJH7PUD.js → chunk-NXM6LODP.js} +1 -1
- package/public/chunk-O5PYZ4PG.js +16 -0
- package/public/chunk-OQAG4MQB.js +1 -0
- package/public/{chunk-CYZAN4CD.js → chunk-OQLCIKGK.js} +1 -1
- package/public/chunk-OT3OZVNB.js +50 -0
- package/public/{chunk-YCRH56FY.js → chunk-PA2FLQHK.js} +1 -1
- package/public/chunk-PD4EFNCS.js +1 -0
- package/public/{chunk-MA74SXNP.js → chunk-PHY7W3BQ.js} +1 -1
- package/public/chunk-PKVKTMRP.js +19 -0
- package/public/{chunk-6AGYELAU.js → chunk-PPU3W2KO.js} +1 -1
- package/public/{chunk-5FFAA6YO.js → chunk-QIJ6OIDU.js} +1 -1
- package/public/chunk-REIZTIW4.js +2 -0
- package/public/chunk-RQOGW4OS.js +1 -0
- package/public/{chunk-UYFTDKBB.js → chunk-RS6FC3D3.js} +1 -1
- package/public/{chunk-2OV2S53D.js → chunk-S5CZBBHY.js} +1 -1
- package/public/{chunk-XKXSOWIU.js → chunk-SQSP77TI.js} +1 -1
- package/public/chunk-TAJT2XQ6.js +1 -0
- package/public/{chunk-4EQFXSOO.js → chunk-U73PAFR5.js} +1 -1
- package/public/chunk-U77IESKH.js +1 -0
- package/public/{chunk-WDFYORD4.js → chunk-UBWU2SEH.js} +1 -1
- package/public/{chunk-FFBQ244V.js → chunk-UGNUDJ75.js} +1 -1
- package/public/{chunk-4Y574DAY.js → chunk-UPB765LT.js} +1 -1
- package/public/{chunk-NP2OU6PT.js → chunk-W4NH2DJW.js} +1 -1
- package/public/{chunk-G4KDX4LF.js → chunk-W5BUXVY6.js} +5 -5
- package/public/chunk-WPMRJABD.js +1 -0
- package/public/{chunk-HXBITOYP.js → chunk-WYCRIQDH.js} +1 -1
- package/public/chunk-YRC6JINT.js +1 -0
- package/public/{chunk-IC3ZXYWP.js → chunk-ZC4YICGQ.js} +1 -1
- package/public/{chunk-6VUYO4JJ.js → chunk-ZUOL6YC4.js} +1 -1
- package/public/{chunk-ZMTA7EPT.js → chunk-ZWGNHKFK.js} +1 -1
- package/public/chunk-ZXKMLKZT.js +40 -0
- package/public/index.html +2 -2
- package/public/main-WC4DXWXF.js +1 -0
- package/public/{styles-WNHDEKE4.css → styles-7EFV5QBG.css} +1 -1
- package/scripts/extract-plugin-alias.js +2 -53
- package/TODO-MATTER.md +0 -15
- package/dist/core/spa/spa-html.service.d.ts +0 -5
- package/dist/core/spa/spa-html.service.js +0 -32
- package/dist/core/spa/spa-html.service.js.map +0 -1
- package/dist/core/ssl/ssl-cert-generator.service.d.ts +0 -15
- package/dist/core/ssl/ssl-cert-generator.service.js +0 -125
- package/dist/core/ssl/ssl-cert-generator.service.js.map +0 -1
- package/dist/modules/accessories/accessories.interfaces.d.ts +0 -94
- package/dist/modules/accessories/accessories.interfaces.js +0 -2
- package/dist/modules/accessories/accessories.interfaces.js.map +0 -1
- package/docs/ssl-upload-pr.md +0 -103
- package/public/assets/matter.svg +0 -8
- package/public/assets/monaco/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/public/assets/monaco/min/vs/base/worker/workerMain.js +0 -31
- package/public/assets/monaco/min/vs/basic-languages/shell/shell.js +0 -10
- package/public/assets/monaco/min/vs/language/json/jsonMode.js +0 -19
- package/public/assets/monaco/min/vs/language/json/jsonWorker.js +0 -42
- package/public/chunk-2G3RYG7T.js +0 -4
- package/public/chunk-3MP4NIEN.js +0 -1
- package/public/chunk-3NF5LSRS.js +0 -1
- package/public/chunk-3OS2E7NT.js +0 -1
- package/public/chunk-3U4TTBN3.js +0 -1
- package/public/chunk-6Y44WRYZ.js +0 -5
- package/public/chunk-AEA5MWJV.js +0 -1
- package/public/chunk-AQ7KVNYY.js +0 -1
- package/public/chunk-BRVBWBXQ.js +0 -1
- package/public/chunk-DT7PMMCU.js +0 -1
- package/public/chunk-F5RNPJMD.js +0 -16
- package/public/chunk-ILKO7HAU.js +0 -68
- package/public/chunk-JL6T3BSX.js +0 -1
- package/public/chunk-K3NHKO4E.js +0 -1
- package/public/chunk-KKHQOHXA.js +0 -1
- package/public/chunk-LGUE3JKA.js +0 -1
- package/public/chunk-LNBMZDII.js +0 -1
- package/public/chunk-M3CXG4MR.js +0 -1
- package/public/chunk-N3WEHNOH.js +0 -1
- package/public/chunk-NRCW2EPZ.js +0 -50
- package/public/chunk-QRB4TY6A.js +0 -1
- package/public/chunk-QTWA67OK.js +0 -2
- package/public/chunk-W7GOVRP4.js +0 -1
- package/public/chunk-WL5GK7PI.js +0 -19
- package/public/chunk-ZTJZA6OC.js +0 -1
- package/public/chunk-ZUM4REDQ.js +0 -1
- package/public/main-ZIKN743D.js +0 -1
- package/public/media/matter-P563JGDL.svg +0 -8
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{a as kt}from"./chunk-A6U6HYY3.js";import{b as T,e as vt,f as $t,g as It,h as xt}from"./chunk-O5PYZ4PG.js";import{a as bt,b as _t}from"./chunk-2AF3WD4J.js";import{a as Ct}from"./chunk-APMBCXUH.js";import{a as Rt}from"./chunk-UPB765LT.js";import{m as ut,n as ht,t as V}from"./chunk-W5BUXVY6.js";import{C as mt,D as ft,c as ct,e as pt,l as gt}from"./chunk-DEAIAR5T.js";import{c as yt,e as O}from"./chunk-SQSP77TI.js";import{b as wt}from"./chunk-RQOGW4OS.js";import{k as R,l as I,n as H,q as F}from"./chunk-FDR4RMWN.js";import{$b as E,Ib as k,Lb as b,Nb as p,Pc as lt,Qa as o,Wc as dt,Yb as st,Za as tt,_b as y,a as Y,ac as j,b as Q,d as X,db as D,fc as ot,g as Z,gc as rt,h as v,hc as at,mc as J,na as m,pb as C,qb as $,rb as x,rc as r,sa as u,sc as l,ta as h,tb as et,tc as W,ub as it,vb as nt,wb as f,x as S,xb as a,yb as d,zb as g}from"./chunk-FYY57EXZ.js";var Mt=Z(It(),1);var Et=Z(Rt(),1);var St=(s,w)=>({"fa-trash":s,"fa-cog fa-spin":w});function Ot(s,w){s&1&&(a(0,"div",13),g(1,"i",20),d())}function Ft(s,w){if(s&1){let t=k();a(0,"li",9)(1,"span"),y(2),r(3,"date"),g(4,"br"),a(5,"span",21),y(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.restore(i.id))}),g(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.download(i.id))}),g(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),b("click",function(){let i=u(t).$implicit,n=p(2);return h(n.delete(i.id))}),g(20,"i",24),d()()()}if(s&2){let t=w.$implicit,e=p(2);o(2),j(" ",W(3,15,t.timestamp,"mediumDate")),o(4),E(W(7,18,t.timestamp,"shortTime")),o(3),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(10,21,"config.restore.copy_to_editor"))("openDelay",150),C("aria-label",l(11,23,"config.restore.copy_to_editor")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(14,25,"form.button_download"))("openDelay",150),C("aria-label",l(15,27,"form.button_download")),o(4),f("disabled",e.clicked||e.deleting)("ngbTooltip",l(18,29,"form.button_delete"))("openDelay",150),C("aria-label",l(19,31,"form.button_delete")),o(3),f("ngClass",J(33,St,t.id!==e.deleting,t.id===e.deleting))}}function Nt(s,w){if(s&1){let t=k();a(0,"ul",14),it(1,Ft,21,36,"li",9,et),a(3,"li",9)(4,"span"),y(5),r(6,"translate"),g(7,"br"),a(8,"span",21),y(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),b("click",function(){u(t);let i=p();return h(i.deleteAllBackups())}),g(15,"i",24),d()()()()}if(s&2){let t=p();o(),nt(t.backupList),o(4),j(" ",l(6,7,"form.button_delete_all")),o(4),E(l(10,9,"common.labels.no_confirmation")),o(3),f("disabled",t.clicked||t.deleting)("ngbTooltip",l(13,11,"form.button_delete_all"))("openDelay",150),C("aria-label",l(14,13,"form.button_delete")),o(3),f("ngClass",J(15,St,t.deleting!=="all",t.deleting==="all"))}}var Tt=(()=>{class s{$activeModal=m(ut);$api=m(F);$router=m(O);$toastr=m(H);$translate=m(R);currentConfig;fromSettings=!1;loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return v(this,null,function*(){try{let t=yield S(this.$api.get("/config-editor/backups"));this.loading=!1,this.backupList=t}catch(t){this.loading=!1,console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return v(this,null,function*(){this.clicked=!0;try{let e=yield S(this.$api.get(`/config-editor/backups/${t}`)),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),_=`config-backup-${t}.json`;(0,Et.saveAs)(n,_),this.clicked=!1}catch(e){this.clicked=!1,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return v(this,null,function*(){this.deleting=t;try{yield S(this.$api.delete(`/config-editor/backups/${t}`)),yield this.getConfigBackups(),this.deleting=null}catch(e){this.deleting=null,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return v(this,null,function*(){this.deleting="all";try{yield S(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(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting=null}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=D({type:s,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-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","py-1",3,"click","disabled"],[1,"fas","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-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",3,"ngClass"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),y(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),b("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),g(9,"i",6),d(),a(10,"ul",7)(11,"li"),y(12),r(13,"translate"),d(),a(14,"li"),y(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),y(21),r(22,"translate"),d(),g(23,"br"),a(24,"small",10),y(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),g(29,"i",12),d()()(),$(30,Ot,2,0,"div",13)(31,Nt,16,18,"ul",14),d(),a(32,"div",15),g(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),b("click",function(){return i.dismissModal()}),y(37),r(38,"translate"),d()(),g(39,"div",19),d()()),e&2&&(o(3),E(l(4,13,"config.restore.title")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(6,15,"form.button_close")),o(7),E(l(13,17,"config.restore.help_1")),o(3),E(l(16,19,"config.restore.help_2")),o(6),E(l(22,21,"form.button_download")),o(4),E(l(26,23,"config.restore.download")),o(2),f("disabled",i.clicked||i.deleting),C("aria-label",l(28,25,"backup.backup_now")),o(3),x(i.loading?30:i.backupList.length?31:-1),o(5),f("disabled",i.clicked||i.deleting),C("aria-label",l(36,27,"form.button_close")),o(2),j(" ",l(38,29,"form.button_close")," "))},dependencies:[V,lt,ft,dt,I],encapsulation:2})}return s})();function Ut(s,w){if(s&1){let t=k();a(0,"button",13),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onCancelRestore())}),g(3,"i",14),d()}if(s&2){let t=p();f("disabled",t.saveInProgress)("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),C("aria-label",l(2,6,"form.button_cancel"))}}function qt(s,w){if(s&1){let t=k();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.onRestore())}),g(3,"i",16),d()}s&2&&(f("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),C("aria-label",l(2,5,"form.button_restore")))}function zt(s,w){if(s&1){let t=k();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){u(t);let i=p();return h(i.toggleSideBySide())}),g(3,"i",17),d()}if(s&2){let t=p();f("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),C("aria-label",l(2,9,t.renderSideBySide?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),st("fa-columns",!t.renderSideBySide)("fa-bars",t.renderSideBySide)}}function Lt(s,w){s&1&&g(0,"i",8)}function Jt(s,w){s&1&&g(0,"i",9)}function Wt(s,w){if(s&1){let t=k();a(0,"ngx-monaco-editor",18),b("onInit",function(i){u(t);let n=p();return h(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("model",t.monacoEditorModel)}}function Kt(s,w){if(s&1){let t=k();a(0,"ngx-monaco-diff-editor",19),b("onInit",function(i){u(t);let n=p();return h(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();f("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Gt(s,w){if(s&1){let t=k();a(0,"textarea",20),at("ngModelChange",function(i){u(t);let n=p();return rt(n.homebridgeConfig,i)||(n.homebridgeConfig=i),h(i)}),y(1," "),d()}if(s&2){let t=p();ot("ngModel",t.homebridgeConfig)}}var Me=(()=>{class s{$api=m(F);$md=m(Ct);$modal=m(ht);$monacoEditor=m(kt);$renderer=m(tt);$route=m(yt);$router=m(O);$settings=m(wt);$toastr=m(H);$translate=m(R);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=!1;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide,renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig=n.config,this.latestSavedConfig=JSON.parse(n.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:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}onEditorInit(t){window.editor=t,this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig||""),n&&n.setValue(this.homebridgeConfig||"{}")}}}onSave(){return v(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 e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)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 t=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(t,null,4),typeof t.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(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}onRestore(t=!1){let e=this.$modal.open(Tt,{size:"lg",backdrop:"static"});e.componentInstance.currentConfig=this.homebridgeConfig,e.componentInstance.fromSettings=t,e.result.then(i=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig,this.updateDiffModels()),this.$api.get(`/config-editor/backups/${i}`).subscribe({next:n=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(n,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:n=>{console.error(n),this.$toastr.error(n.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig=this.originalConfig,this.originalConfig="",this.renderSideBySide&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide=!this.renderSideBySide,this.editorOptions=Q(Y({},this.editorOptions),{renderSideBySide:this.renderSideBySide})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"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 e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let _=window.monaco.editor.getModel(i);_&&_.dispose();let N=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(M=>M.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:N})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[e])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
|
|
2
|
+
`).map(e=>` ${e}`).join(`
|
|
3
|
+
`),setTimeout(()=>{let e=this.monacoEditor.getModel().findMatches(t);if(e.length){let i=e[0].range,n=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:n,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 t=monaco.Uri.parse("a://homebridge/config.json"),e=xt(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled});window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[t.toString()],schema:{type:"object",additionalProperties:!1,required:["bridge"],properties:{bridge:{type:"object",additionalProperties:!1,required:["name","username","port","pin"],properties:{name:{type:"string",title:this.$translate.instant("settings.name"),description:`The Homebridge instance name.
|
|
4
|
+
This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",title:this.$translate.instant("users.label_username"),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",title:this.$translate.instant("settings.network.port_hb"),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",title:this.$translate.instant("child_bridge.config.manufacturer"),description:"The bridge manufacturer to be displayed in HomeKit."},firmwareRevision:{type:"string",title:this.$translate.instant("child_bridge.config.firmware"),description:"The bridge firmware version to be displayed in HomeKit."},model:{type:"string",title:this.$translate.instant("child_bridge.config.model"),description:"The bridge model to be displayed in HomeKit."},advertiser:{type:"string",title:this.$translate.instant("settings.mdns_advertiser"),description:this.$translate.instant("settings.mdns_advertiser_help"),oneOf:[{title:"Avahi",enum:["avahi"]},{title:"Bonjour HAP",enum:["bonjour-hap"]},{title:"Ciao",enum:["ciao"]},{title:"Resolved",enum:["resolved"]}]},bind:{title:this.$translate.instant("settings.network.title_network_interfaces"),description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
|
|
10
|
+
Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:this.$translate.instant("status.widget.network.network_interface")}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",additionalProperties:!1,properties:{interface:{type:"string",title:this.$translate.instant("status.widget.network.network_interface"),description:`The interface or IP address of the interface you want Homebridge to listen on.
|
|
11
|
+
This is useful if your server has multiple interfaces.
|
|
12
|
+
Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",title:"Legacy mDNS Advertiser",description:"Set to false to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},ports:{type:"object",additionalProperties:!1,title:"Port Range",description:"The range of ports that should be used for external accessories like cameras and TVs.",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_start"),description:this.$translate.instant("settings.network.port_start_desc")},end:{type:"number",default:52150,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_end"),description:this.$translate.instant("settings.network.port_end_desc")}},default:{start:52100,end:52150}},platforms:{type:"array",title:"Platforms",description:`Any plugin that exposes a platform should have its config entered in this array.
|
|
13
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],title:this.$translate.instant("plugins.button_settings"),properties:{platform:{type:"string",title:"Platform Name",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the platform."},_bridge:e}},{type:"object",additionalProperties:!1,properties:{platform:{type:"string",title:"Platform Name",description:`Homebridge UI platform name must be set to "config".
|
|
14
|
+
Do not change!`,const:"config"},name:{title:this.$translate.instant("accessories.name"),type:"string",default:"Homebridge UI",minLength:1,description:"The name of the Homebridge instance."},port:{title:this.$translate.instant("settings.network.port_ui"),type:"integer",default:8080,minimum:1025,maximum:65535,description:this.$translate.instant("settings.network.port_ui_desc")},auth:{type:"string",default:"form",title:this.$translate.instant("settings.security.auth"),description:this.$translate.instant("settings.security.auth_desc"),oneOf:[{title:"Require Authentication",enum:["form"]},{title:"None",enum:["none"]}]},theme:{title:this.$translate.instant("settings.display.theme"),description:"The theme used for the UI.",type:"string",default:"orange",oneOf:[{title:this.$translate.instant("settings.display.orange"),enum:["orange"]},{title:this.$translate.instant("settings.display.red"),enum:["red"]},{title:this.$translate.instant("settings.display.pink"),enum:["pink"]},{title:this.$translate.instant("settings.display.purple"),enum:["purple"]},{title:this.$translate.instant("settings.display.deep_purple"),enum:["deep-purple"]},{title:this.$translate.instant("settings.display.indigo"),enum:["indigo"]},{title:this.$translate.instant("settings.display.blue"),enum:["blue"]},{title:this.$translate.instant("settings.display.bluegrey"),enum:["blue-grey"]},{title:this.$translate.instant("settings.display.cyan"),enum:["cyan"]},{title:this.$translate.instant("settings.display.green"),enum:["green"]},{title:this.$translate.instant("settings.display.teal"),enum:["teal"]},{title:this.$translate.instant("settings.display.grey"),enum:["grey"]},{title:this.$translate.instant("settings.display.brown"),enum:["brown"]}]},lightingMode:{title:this.$translate.instant("settings.display.lighting_mode"),description:"The lighting mode used for the UI.",type:"string",default:"auto",oneOf:[{title:this.$translate.instant("accessories.control.auto"),enum:["auto"]},{title:this.$translate.instant("settings.display.light"),enum:["light"]},{title:this.$translate.instant("settings.display.dark"),enum:["dark"]}]},menuMode:{title:this.$translate.instant("settings.display.menu_mode"),description:"Modes for the UI side menu.",type:"string",default:"default",oneOf:[{title:this.$translate.instant("settings.display.menu_default"),enum:["default"]},{title:this.$translate.instant("settings.display.menu_freeze"),enum:["freeze"]}]},temp:{title:this.$translate.instant("settings.linux.temp"),type:"string",description:this.$translate.instant("settings.linux.temp_desc")},tempUnits:{title:this.$translate.instant("settings.display.temp_units"),description:"The units used to display the temperature.",type:"string",default:"c",oneOf:[{title:this.$translate.instant("settings.display.temp_units.c"),enum:["c"]},{title:this.$translate.instant("settings.display.temp_units.f"),enum:["f"]}]},lang:{title:this.$translate.instant("settings.display.lang"),type:"string",default:"auto",description:"The language used for the UI.",oneOf:[{title:this.$translate.instant("form.select.auto"),enum:["auto"]},{title:"Bulgarian (bg)",enum:["bg"]},{title:"Catalan (ca)",enum:["ca"]},{title:"Chinese - Simplified (zh-CN)",enum:["zh-CN"]},{title:"Chinese - Traditional (zh-TW)",enum:["zh-TW"]},{title:"Czech (cs)",enum:["cs"]},{title:"Dutch (nl)",enum:["nl"]},{title:"English (en)",enum:["en"]},{title:"Finnish (fi)",enum:["fi"]},{title:"French (fr)",enum:["fr"]},{title:"German (de)",enum:["de"]},{title:"Hebrew (he)",enum:["he"]},{title:"Hungarian (hu)",enum:["hu"]},{title:"Indonesian (id)",enum:["id"]},{title:"Italian (it)",enum:["it"]},{title:"Japanese (ja)",enum:["ja"]},{title:"Korean (ko)",enum:["ko"]},{title:"Macedonian (mk)",enum:["mk"]},{title:"Norwegian (no)",enum:["no"]},{title:"Polish (pl)",enum:["pl"]},{title:"Portuguese (Brazil)",enum:["pt-BR"]},{title:"Portuguese (Portugal)",enum:["pt"]},{title:"Russian (ru)",enum:["ru"]},{title:"Slovenian (sl)",enum:["sl"]},{title:"Spanish (es)",enum:["es"]},{title:"Swedish (sv)",enum:["sv"]},{title:"Thai (th)",enum:["th"]},{title:"Turkish (tr)",enum:["tr"]},{title:"Ukrainian (uk)",enum:["uk"]}]},wallpaper:{title:this.$translate.instant("settings.display.wallpaper"),description:"The full path to the .jpg file.",type:"string"},homebridgePackagePath:{title:this.$translate.instant("settings.network.hb_package"),type:"string",description:this.$translate.instant("settings.network.hb_package_desc")},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",title:this.$translate.instant("settings.network.host"),description:this.$translate.instant("settings.network.host_desc")},sessionTimeoutInactivityBased:{type:"boolean",title:this.$translate.instant("settings.startup.session_inactivity_based"),description:this.$translate.instant("settings.startup.session_inactivity_based_desc")},sessionTimeout:{type:"integer",minimum:600,maximum:864e5,title:this.$translate.instant("settings.startup.session"),description:this.$translate.instant("settings.startup.session_desc")},log:{type:"object",additionalProperties:!1,title:"Log Settings",description:"The log settings for the Homebridge UI.",properties:{maxSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_max"),description:this.$translate.instant("settings.terminal.log_max_desc"),minimum:-1},truncateSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_truncate"),description:this.$translate.instant("settings.terminal.log_truncate_desc"),minimum:0}}},ssl:{type:"object",additionalProperties:!1,title:this.$translate.instant("settings.security.https"),description:this.$translate.instant("settings.security.https_desc"),properties:{key:{type:"string",title:this.$translate.instant("settings.security.key"),description:"The full path to the private key file."},cert:{type:"string",title:this.$translate.instant("settings.security.cert"),description:"The full path to the certificate file."},pfx:{title:this.$translate.instant("settings.security.pfx"),type:"string",description:"The full path to the PKCS#12 certificate file."},passphrase:{title:this.$translate.instant("settings.security.pass"),type:"string",description:"The passphrase for the PKCS#12 certificate file."}}},accessoryControl:{title:"Accessory Control Setup",type:"object",additionalProperties:!1,description:"The accessory control settings for the Homebridge UI.",properties:{debug:{title:this.$translate.instant("settings.accessory.debug"),type:"boolean",description:this.$translate.instant("settings.accessory.debug_desc")},instanceBlacklist:{title:this.$translate.instant("settings.security.ui_control"),type:"array",description:this.$translate.instant("settings.security.ui_control_desc"),items:{title:this.$translate.instant("users.label_username"),type:"string",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"}}}},linux:{title:"Linux Server Commands",type:"object",additionalProperties:!1,description:"The Linux server commands for the Homebridge UI.",properties:{shutdown:{title:this.$translate.instant("settings.linux.shutdown"),type:"string",description:this.$translate.instant("settings.linux.shutdown_desc")},restart:{title:this.$translate.instant("settings.linux.restart"),type:"string",description:this.$translate.instant("settings.linux.restart_desc")}}},proxyHost:{title:this.$translate.instant("settings.network.proxy"),type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:this.$translate.instant("settings.network.proxy_desc")},scheduledBackupPath:{title:this.$translate.instant("backup.settings_path"),description:"The full path to where the service should save daily scheduled backups archives.",type:"string"},scheduledBackupDisable:{title:"Disable Scheduled Backups",type:"boolean",description:"When enabled, the Homebridge UI will not create daily scheduled backups."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")},disableServerMetricsMonitoring:{title:"Disable Server Metrics Monitoring",type:"boolean",description:"When enabled, the Homebridge UI will not collect or report CPU or memory stats."},enableMdnsAdvertise:{title:this.$translate.instant("settings.network.mdns_advertise"),type:"boolean",description:this.$translate.instant("settings.network.mdns_advertise_help")},plugins:{title:this.$translate.instant("menu.label_plugins"),type:"object",additionalProperties:!1,description:"Settings surrounding plugins that are used by the Homebridge UI.",properties:{hideUpdatesFor:{type:"array",title:this.$translate.instant("config.hide_plugin_updates"),description:"A list of plugin names for which frontend update notifications will be hidden.",items:{type:"string",title:this.$translate.instant("accessories.plugin"),pattern:"^(?:@[\\w-]+(?:\\.[\\w-]+)*/)?homebridge-[\\w-]+$"}},alwaysShowBetas:{type:"boolean",title:this.$translate.instant("settings.display.show_betas"),description:"When enabled, beta releases will be shown as available for Homebridge, the UI and plugins."}}},bridges:{type:"array",title:this.$translate.instant("child_bridge.bridges"),description:"Settings surrounding bridges that are used by the Homebridge UI.",items:{type:"object",additionalProperties:!1,required:["username"],properties:{username:{type:"string",title:this.$translate.instant("users.label_username"),description:'The MAC address of the bridge (e.g., "0E:02:9A:9D:44:45").',pattern:"^[0-9A-F]{2}(?::[0-9A-F]{2}){5}$"},hideHapAlert:{type:"boolean",title:this.$translate.instant("config.hide_hap_pairing"),description:"Hide the HAP pairing alert for this bridge."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")}}}},terminal:{type:"object",additionalProperties:!1,title:"Terminal Settings",description:"The terminal settings for the Homebridge UI.",properties:{persistence:{title:this.$translate.instant("settings.terminal.persistence"),type:"boolean",description:this.$translate.instant("settings.terminal.persistence_help"),default:!1},hideWarning:{title:this.$translate.instant("settings.terminal.warning"),type:"boolean",description:this.$translate.instant("settings.terminal.warning_help"),default:!1},bufferSize:{title:this.$translate.instant("settings.terminal.buffer_size"),type:"integer",description:this.$translate.instant("settings.terminal.buffer_size_help"),default:5e4,minimum:0}}}}}]}},accessories:{type:"array",title:this.$translate.instant("menu.label_accessories"),description:`Any plugin that exposes an accessory should have its config entered in this array.
|
|
15
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],title:this.$translate.instant("plugins.button_settings"),properties:{accessory:{type:"string",title:this.$translate.instant("child_bridge.config.accessory"),description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the accessory."},_bridge:e}}},plugins:{type:"array",title:this.$translate.instant("menu.label_plugins"),description:`An array of plugins that should be selectively enabled.
|
|
16
|
+
Remove this array to enable all plugins.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
|
|
17
|
+
Example: homebridge-dummy.`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
|
|
18
|
+
Requires Homebridge v1.3 or later.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
|
|
19
|
+
Example: homebridge-dummy.`},default:[]}}}}]}),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(t){return v(this,null,function*(){try{let e=yield S(this.$api.post("/config-editor",t));this.homebridgeConfig=JSON.stringify(e,null,4),yield this.detectSavesChangesForRestart()}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}validateArraysEqual(t,e){if(t.length!==e.length)return!1;let i=[...t].sort(),n=[...e].sort();return i.every((_,P)=>_===n[P])}removePlatformsAndAccessories(t){let _=t,{accessories:e,platforms:i}=_;return X(_,["accessories","platforms"])}removeEmptyBridges(t){return t.filter(e=>e._bridge&&Object.keys(e._bridge).length>0).map(e=>e._bridge)}validateBridgesEqual(t,e){return t.length!==e.length?!1:t.every(i=>e.some(n=>T(i,n)))}detectConfigPlatformChanges(){try{let t=this.latestSavedConfig,e=JSON.parse(this.homebridgeConfig),i=(t.platforms||[]).find(_=>_.platform==="config"),n=(e.platforms||[]).find(_=>_.platform==="config");return!i&&n||i&&!n?!0:!i&&!n?!1:!T(i,n)}catch(t){return console.error("Error detecting config platform changes:",t),!1}}detectSavesChangesForRestart(){return v(this,null,function*(){let t=yield this.determineRestartType();if(t==="full"){let e=this.detectConfigPlatformChanges();yield this.performFullRestart(e)}else t==="child"&&(yield this.performChildBridgeRestart());this.latestSavedConfig=JSON.parse(this.homebridgeConfig)})}determineRestartType(){return v(this,null,function*(){if(this.hbPendingRestart)return"full";let t=this.latestSavedConfig,e=JSON.stringify(t,null,4),i=JSON.parse(this.homebridgeConfig),n=this.homebridgeConfig;if(e===n&&!this.childBridgesToRestart.length)return this.$toastr.info(this.$translate.instant("config.no_restart"),this.$translate.instant("config.config_saved")),"none";if(!this.validateArraysEqual(Object.keys(t),Object.keys(i))||[...i.platforms||[],...i.accessories||[]].every(c=>!c._bridge||!Object.keys(c._bridge).length))return"full";let P=this.removePlatformsAndAccessories(t),N=this.removePlatformsAndAccessories(i);if(!T(P,N))return"full";let M=t.platforms||[],U=i.platforms||[],Bt=M.map(c=>c.platform),Pt=U.map(c=>c.platform);if(!this.validateArraysEqual(Bt,Pt))return"full";let q=t.accessories||[],z=i.accessories||[],At=q.map(c=>c.accessory),Dt=z.map(c=>c.accessory);if(!this.validateArraysEqual(At,Dt)||!this.validateBridgesEqual(this.removeEmptyBridges(M),this.removeEmptyBridges(U))||!this.validateBridgesEqual(this.removeEmptyBridges(q),this.removeEmptyBridges(z)))return"full";let K=M.filter(c=>!T(c,U.find(B=>B.platform===c.platform))),jt=q.filter(c=>!T(c,z.find(B=>B.accessory===c.accessory))),G=[...K,...jt];if(K.some(c=>c.platform==="config")||G.some(c=>c.platform==="config"?!1:!c._bridge||Object.keys(c._bridge).length===0))return"full";try{let c=yield S(this.$api.get("/status/homebridge/child-bridges"));return G.forEach(B=>{let Vt=B._bridge.username.toUpperCase(),A=c.find(({username:L})=>L===Vt);if(A)this.childBridgesToRestart.some(L=>L.username===A.username)||this.childBridgesToRestart.push({name:A.name,username:A.username});else return"full"}),"child"}catch(c){return console.error("Error fetching child bridges:",c),"full"}})}performChildBridgeRestart(){return v(this,null,function*(){if(!this.childBridgesToRestart.length){yield this.performFullRestart(!1);return}let t=this.$modal.open($t,{size:"lg",backdrop:"static"});t.componentInstance.bridges=this.childBridgesToRestart;try{yield t.result,this.childBridgesToRestart=[]}catch{}})}performFullRestart(t){return v(this,null,function*(){t&&(yield S(this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{})));let e=this.$modal.open(vt,{size:"lg",backdrop:"static"});try{yield e.result,this.hbPendingRestart=!1,this.childBridgesToRestart=[]}catch{this.hbPendingRestart=!0}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let e=Mt.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(e,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),e}}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=D({type:s,selectors:[["ng-component"]],decls:18,vars:19,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-floppy-disk"],[1,"fas","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-times"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-history"],[1,"fas"],[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(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),y(4),r(5,"translate"),d()(),a(6,"div",4),$(7,Ut,4,8,"button",5),$(8,qt,4,7,"button",6),$(9,zt,4,11,"button",6),a(10,"button",7),r(11,"translate"),r(12,"translate"),b("click",function(){return i.onSave()}),$(13,Lt,1,0,"i",8),$(14,Jt,1,0,"i",9),d()()(),$(15,Wt,1,2,"ngx-monaco-editor",10),$(16,Kt,1,3,"ngx-monaco-diff-editor",11),$(17,Gt,2,1,"textarea",12),d()),e&2&&(o(4),E(l(5,13,"menu.config_json_editor")),o(3),x(i.originalConfig?7:-1),o(),x(i.originalConfig?-1:8),o(),x(!i.isMobile&&i.originalConfig?9:-1),o(),f("disabled",i.saveInProgress)("openDelay",150)("ngbTooltip",l(11,15,"form.button_save")),C("aria-label",l(12,17,"form.button_save")),o(3),x(i.saveInProgress?-1:13),o(),x(i.saveInProgress?14:-1),o(),x(!i.isMobile&&!i.originalConfig?15:-1),o(),x(!i.isMobile&&i.originalConfig?16:-1),o(),x(i.isMobile?17:-1))},dependencies:[V,bt,_t,mt,ct,pt,gt,I],encapsulation:2})}return s})();export{Me as ConfigEditorComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"./chunk-
|
|
1
|
+
import{a as l}from"./chunk-7G4CXD2O.js";import{a as m}from"./chunk-W4NH2DJW.js";import{n as s}from"./chunk-W5BUXVY6.js";import{b as o}from"./chunk-RQOGW4OS.js";import{k as i}from"./chunk-FDR4RMWN.js";import{ia as r,na as n}from"./chunk-FYY57EXZ.js";var I=(()=>{class e{$terminal=n(l);$settings=n(o);$modal=n(s);$translate=n(i);handleBeforeUnload(t){if(!this.$settings.env.terminal?.persistence&&!this.$settings.env.terminal?.hideWarning&&this.$terminal.hasActiveSession()&&this.$terminal.hasUserTypedInSession()){let a=this.$translate.instant("platform.terminal.terminate_unload");return t.preventDefault(),t.returnValue=a,a}}canDeactivate(){if(this.$settings.env.terminal?.persistence||this.$settings.env.terminal?.hideWarning||!this.$terminal.hasActiveSession()||!this.$terminal.hasUserTypedInSession())return!0;let t=this.$modal.open(m,{size:"lg",backdrop:"static"});return t.componentInstance.title=this.$translate.instant("platform.terminal.terminate_title"),t.componentInstance.message=this.$translate.instant("platform.terminal.terminate_message_1"),t.componentInstance.message2=this.$translate.instant("platform.terminal.terminate_message_2"),t.componentInstance.message3=this.$translate.instant("common.phrases.are_you_sure"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.confirmButtonClass="btn-primary",t.componentInstance.faIconClass="fas fa-exclamation-triangle text-warning",t.result.then(()=>!0).catch(()=>!1)}static \u0275fac=function(a){return new(a||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{I as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as v,l as E,n as _,q as h}from"./chunk-
|
|
1
|
+
import{k as v,l as E,n as _,q as h}from"./chunk-FDR4RMWN.js";import{$b as a,Ab as i,Bb as e,Cb as f,Nb as u,Qa as n,_b as o,db as d,na as l,qb as c,rb as x,rc as p,sc as s}from"./chunk-FYY57EXZ.js";function y(t,w){if(t&1&&(i(0,"div",7),o(1),e()),t&2){let r=u();n(),a(r.error)}}function C(t,w){t&1&&(i(0,"p",8),o(1),p(2,"translate"),e()),t&2&&(n(),a(s(2,1,"platform.linux.server_will_power_down")))}var B=(()=>{class t{$api=l(h);$toastr=l(_);$translate=l(v);error=!1;ngOnInit(){this.$api.put("/platform-tools/linux/shutdown-host",{}).subscribe({error:r=>{console.error(r),this.error=this.$translate.instant("platform.linux.server_restart_error"),this.$toastr.error(this.$translate.instant("platform.linux.server_restart_error"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(m){return new(m||t)};static \u0275cmp=d({type:t,selectors:[["ng-component"]],decls:13,vars:7,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"grey-text"]],template:function(m,S){m&1&&(i(0,"div",0)(1,"h3",1),o(2),p(3,"translate"),e()(),i(4,"div",2)(5,"div",3),f(6,"i",4),e(),i(7,"div",5)(8,"h4",6),o(9),p(10,"translate"),e(),c(11,y,2,1,"div",7)(12,C,3,3,"p",8),e()()),m&2&&(n(2),a(s(3,3,"menu.restart.title")),n(7),a(s(10,5,"platform.linux.shutting_down_server")),n(2),x(S.error?11:12))},dependencies:[E],encapsulation:2})}return t})();export{B as ShutdownLinuxComponent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as Y,D as Z,c as G,d as k,e as j,f as D,g as K,j as $,m as A,q as J,r as Q,y as X}from"./chunk-DEAIAR5T.js";import{a as ae}from"./chunk-UBWU2SEH.js";import{b as oe}from"./chunk-HGQJCJDV.js";import{b as re}from"./chunk-RQOGW4OS.js";import{k as ee,l as te,n as ie,p as U,q as ne}from"./chunk-FDR4RMWN.js";import{$b as _,Ib as I,La as W,Lb as x,Nb as g,Pc as H,Qa as n,Sc as N,Xb as O,_b as l,ac as f,ad as R,db as V,h as S,kc as L,lc as B,mc as E,md as q,na as w,pb as M,qb as z,rb as T,rc as a,sa as C,sc as s,ta as b,wb as m,x as h,xb as o,yb as r,zb as u}from"./chunk-FYY57EXZ.js";var pe=t=>({background:t}),de=t=>({anim:t}),ce=t=>({"progress-bar-animated":t}),me=()=>["restoring","restarting","restore-complete"],P=(t,d)=>({"is-valid":t,"is-invalid":d});function ue(t,d){if(t&1){let e=I();o(0,"div",5)(1,"h4",6),l(2),a(3,"translate"),r(),u(4,"div",7),a(5,"translate"),o(6,"button",8),x("click",function(){C(e);let i=g();return b(i.onClickGettingStarted())}),l(7),a(8,"translate"),r(),o(9,"a",9),x("click",function(){C(e);let i=g();return b(i.onClickRestoreBackup())}),l(10),a(11,"translate"),r()()}t&2&&(n(2),_(s(3,4,"setup.welcome_to_homebridge")),n(2),m("innerHTML",s(5,6,"setup.intro"),W),n(3),f(" ",s(8,8,"setup.button_get_started")," "),n(3),_(s(11,10,"setup_wizard_restore")))}function ge(t,d){if(t&1){let e=I();o(0,"div",5)(1,"h4",6),l(2),a(3,"translate"),r(),o(4,"div",10),l(5),a(6,"translate"),r(),o(7,"div",11)(8,"form",12),x("ngSubmit",function(){C(e);let i=g();return b(i.createFirstUser())}),o(9,"div",13)(10,"span",14),u(11,"i",15),r(),u(12,"input",16),a(13,"translate"),r(),o(14,"div",13)(15,"span",14),u(16,"i",17),r(),u(17,"input",18),a(18,"translate"),r(),o(19,"div",13)(20,"span",14),u(21,"i",17),r(),u(22,"input",19),a(23,"translate"),r(),o(24,"div",20)(25,"button",21),x("click",function(){C(e);let i=g();return b(i.onClickCancelRestore())}),l(26),a(27,"translate"),r(),o(28,"button",22),l(29),a(30,"translate"),r()()()()()}if(t&2){let e=g();n(2),_(s(3,16,"setup.create_account")),n(3),_(s(6,18,"setup_wizard_create_info")),n(3),m("formGroup",e.createUserForm),n(4),m("readonly",e.loading)("ngClass",E(30,P,e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.valid,e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.invalid))("placeholder",s(13,20,"users.label_username")),n(5),m("readonly",e.loading)("ngClass",E(33,P,e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.valid,e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.errors))("placeholder",s(18,22,"users.label_password")),n(5),m("readonly",e.loading)("ngClass",E(36,P,e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.valid,e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.errors))("placeholder",s(23,24,"users.label_confirm_password")),n(3),m("disabled",e.restoreUploading),n(),f(" ",s(27,26,"form.button_back")," "),n(2),m("disabled",e.createUserForm.invalid||e.loading),n(),f(" ",s(30,28,"form.button_continue")," ")}}function _e(t,d){t&1&&(u(0,"i",25),l(1),a(2,"translate")),t&2&&(n(),f(" ",s(2,1,"backup.label_uploading")," "))}function fe(t,d){t&1&&(l(0),a(1,"translate")),t&2&&f(" ",s(1,1,"form.button_continue")," ")}function he(t,d){if(t&1){let e=I();o(0,"div",5)(1,"h4",6),l(2),a(3,"translate"),r(),o(4,"div",10),l(5),a(6,"translate"),r(),o(7,"input",23),x("change",function(i){C(e);let F=g();return b(F.handleRestoreFileInput(i.target.files))}),r(),o(8,"div",20)(9,"button",21),x("click",function(){C(e);let i=g();return b(i.onClickCancelRestore())}),l(10),a(11,"translate"),r(),o(12,"button",24),x("click",function(){C(e);let i=g();return b(i.onRestoreBackupClick())}),z(13,_e,3,3)(14,fe,2,3),r()()()}if(t&2){let e=g();n(2),_(s(3,6,"setup_wizard_restore")),n(3),_(s(6,8,"backup.restore_help_one")),n(4),m("disabled",e.restoreUploading),n(),f(" ",s(11,10,"form.button_back")," "),n(2),m("disabled",e.restoreUploading||!e.selectedFile),n(),T(e.restoreUploading?13:14)}}function we(t,d){t&1&&(l(0),a(1,"translate")),t&2&&f(" ",s(1,1,"setup_wizard_restoring")," ")}function Ce(t,d){t&1&&(l(0),a(1,"translate")),t&2&&f(" ",s(1,1,"setup_wizard_starting")," ")}function be(t,d){t&1&&(l(0),a(1,"translate")),t&2&&f(" ",s(1,1,"setup_wizard_complete")," ")}function xe(t,d){t&1&&(o(0,"a",27),l(1),a(2,"translate"),r()),t&2&&(n(),_(s(2,1,"form.button_continue")))}function ve(t,d){if(t&1&&(o(0,"div",5)(1,"h4",6),z(2,we,2,3)(3,Ce,2,3)(4,be,2,3),r(),u(5,"div",26),z(6,xe,3,3,"a",27),r()),t&2){let e=g();n(2),T(e.step==="restoring"?2:e.step==="restarting"?3:e.step==="restore-complete"?4:-1),n(4),T(e.step==="restore-complete"?6:-1)}}function ye(t,d){t&1&&(o(0,"div",5)(1,"h4",28),l(2),a(3,"translate"),r(),o(4,"div",10),l(5),a(6,"translate"),r(),o(7,"a",29),l(8),a(9,"translate"),r()()),t&2&&(n(2),_(s(3,3,"setup_wizard_complete_title")),n(3),_(s(6,5,"setup_wizard_completed")),n(3),_(s(9,7,"form.button_continue")))}var He=(()=>{class t{$api=w(ne);$auth=w(oe);$settings=w(re);$title=w(q);$toastr=w(ie);$translate=w(ee);$ws=w(ae);io;step="welcome";backgroundStyle;progress=1;restoreInProgress=!1;restoreStarted=!1;restoreFailed=!1;loading=!1;selectedFile;restoreUploading=!1;createUserForm=new K({username:new $("",[k.required]),password:new $("",[k.compose([k.required,k.minLength(4)])]),passwordConfirm:new $("",[k.required])},this.matchPassword);ngOnInit(){return S(this,null,function*(){this.$title.setTitle(this.$translate.instant("setup_wizard_page_title")),yield this.setBackground()})}onClickGettingStarted(){this.step="create-account",this.progress=50}onClickRestoreBackup(){this.step="restore-backup",this.progress=20}onClickCancelRestore(){this.selectedFile=null,this.step="welcome",this.progress=1}createFirstUser(){return S(this,null,function*(){this.loading=!0,this.progress=75;let e=this.createUserForm.getRawValue();e.name=e.username;try{yield h(this.$api.post("/setup-wizard/create-first-user",e)),this.$settings.env.setupWizardComplete=!0,this.progress=100,this.loading=!1,yield this.$auth.login({username:e.username,password:e.password}),this.step="setup-complete"}catch(p){this.loading=!1,this.progress=50,console.error(p),this.$toastr.error(p.message,this.$translate.instant("toast.title_error"))}})}handleRestoreFileInput(e){e.length?(this.selectedFile=e[0],this.progress=40):(delete this.selectedFile,this.progress=20)}onRestoreBackupClick(){return S(this,null,function*(){this.restoreUploading=!0,this.step="restoring",this.progress=60;try{let e=yield h(this.$api.get("/setup-wizard/get-setup-wizard-token"));window.localStorage.setItem(U.jwt.tokenKey,e.access_token),this.$auth.token=e.access_token,this.progress=65;let p=new FormData;p.append("restoreArchive",this.selectedFile,this.selectedFile.name),yield h(this.$api.post("/backup/restore",p)),this.progress=70,this.io=this.$ws.connectToNamespace("backup");let i=document.getElementById("output");this.io.socket.on("stdout",c=>{c.split(`
|
|
2
|
+
\r`).forEach(v=>{if(v&&!/^[⠇⠏⠋⠙⠹⠸]+$/.test(v)){let y=document.createElement("div"),le=/\x1B\[(\d{1,2}(;\d{1,2})?)?[mGK]/g;y.innerHTML=v.replace(le,""),v.includes("[0;31m")?y.classList.add("red-text"):v.includes("[0;32m")?y.classList.add("green-text"):v.includes("[0;33m")?y.classList.add("orange-text"):v.includes("[0;36m")&&y.classList.add("cyan-text"),i.appendChild(y),i.scrollTop=i.scrollHeight}})}),this.restoreStarted=!0,this.restoreInProgress=!0,this.progress=75,yield h(this.io.request("do-restore")),this.progress=80,this.restoreInProgress=!1,yield h(this.$api.put("/backup/restart",{})),this.step="restarting",this.progress=85,window.localStorage.removeItem(U.jwt.tokenKey),this.$auth.token=null;let F=document.createElement("div");F.classList.add("orange-text"),F.innerHTML="Starting Homebridge, please wait...",i.appendChild(F),i.scrollTop=i.scrollHeight,yield new Promise(c=>setTimeout(c,3e3)),this.progress=88,yield new Promise(c=>setTimeout(c,3e3)),this.progress=91,yield new Promise(c=>setTimeout(c,3e3)),this.progress=94,yield new Promise(c=>setTimeout(c,3e3)),this.progress=97,yield new Promise(c=>setTimeout(c,3e3)),this.progress=99;let se=setInterval(()=>S(this,null,function*(){try{yield h(this.$api.get("/auth/settings")),clearInterval(se),this.progress=100,this.restoreUploading=!1,this.step="restore-complete"}catch{}}),1e3)}catch(e){console.error(e),this.restoreUploading=!1,this.restoreFailed=!0,this.progress=20,this.step="restore-backup",this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}finally{this.io&&this.io.end()}})}setBackground(){return S(this,null,function*(){if(this.$settings.settingsLoaded||(yield h(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let e=`${U.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${e}') center/cover`}})}matchPassword(e){let p=e.get("password").value,i=e.get("passwordConfirm").value;if(p!==i)e.get("passwordConfirm").setErrors({matchPassword:!0});else return null}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],decls:10,vars:14,consts:[[1,"setup-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","setup-card","d-flex","py-4","flex-column"],["ngSrc","assets/homebridge-color-round.svg","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],[1,"progress","w-100","my-4"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","progress-bar-striped","bg-success",3,"ngClass"],[1,"w-100","d-flex","flex-column","align-items-center","mb-2"],[1,"mb-3","text-center"],[1,"mb-4","small","grey-text","text-center",3,"innerHTML"],["type","button",1,"btn","btn-lg","btn-primary","mb-4",3,"click"],["href","javascript:void(0)",1,"grey-text",3,"click"],[1,"mb-4","small","grey-text","text-center"],[1,"w-100"],["novalidate","",3,"ngSubmit","formGroup"],[1,"input-group","mb-4"],[1,"input-group-text","custom-input"],[1,"fas","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"readonly","ngClass","placeholder"],[1,"fas","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","new-password","tabindex","2","required","",1,"form-control","custom-input",3,"readonly","ngClass","placeholder"],["formControlName","passwordConfirm","type","password","id","form-pass-confirm","autocomplete","new-password","tabindex","2","required","",1,"form-control","custom-input",3,"readonly","ngClass","placeholder"],[1,"mt-3","w-100","d-flex","justify-content-between"],["type","button",1,"btn","btn-elegant","ms-0",3,"click","disabled"],["type","submit",1,"btn","btn-primary",3,"disabled"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz",1,"form-control","custom-input","mb-3",3,"change"],["type","button",1,"btn","btn-primary","me-0",3,"click","disabled"],[1,"fas","fa-spinner","fa-pulse"],["id","output",1,"font-monospace","small","alert","alert-info","w-100","text-start","mt-1","mb-0"],["href","/login",1,"btn","btn-lg","btn-primary","mt-4"],[1,"mb-3"],["href","/",1,"btn","btn-lg","btn-primary"]],template:function(p,i){p&1&&(o(0,"div",0)(1,"div",1),u(2,"img",2),o(3,"div",3),u(4,"div",4),r(),z(5,ue,12,12,"div",5)(6,ge,31,39,"div",5)(7,he,15,12,"div",5)(8,ve,7,2,"div",5)(9,ye,10,9,"div",5),r()()),p&2&&(m("ngStyle",B(7,pe,i.backgroundStyle))("ngClass",B(9,de,!i.backgroundStyle)),n(4),O("width",i.progress+"%"),m("ngClass",B(11,ce,i.loading||i.restoreUploading)),M("aria-valuenow",i.progress),n(),T(i.step==="welcome"?5:i.step==="create-account"?6:i.step==="restore-backup"?7:L(13,me).includes(i.step)?8:i.step==="setup-complete"?9:-1))},dependencies:[H,R,Y,A,G,j,D,X,Z,J,Q,N,te],styles:["body{overflow:scroll!important} body.dark-mode .setup-card{background-color:#2b2b2b;color:#fff}.setup-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;-o-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.setup-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.setup-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.setup-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}.progress[_ngcontent-%COMP%]{background-color:#ddd}#output[_ngcontent-%COMP%]{height:200px;overflow-y:scroll;white-space:pre-wrap}"]})}return t})();export{He as SetupWizardComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{k as tt,n as et,q as it}from"./chunk-FDR4RMWN.js";import{W as R,e as ut,g as ct,h as P,ia as G,md as X,n as Q,na as Y,x as B}from"./chunk-FYY57EXZ.js";var st=ut((U,E)=>{(function(w,k){typeof U=="object"&&typeof E<"u"?E.exports=k():typeof define=="function"&&define.amd?define(k):(w=typeof globalThis<"u"?globalThis:w||self).dayjs=k()})(U,function(){"use strict";var w=1e3,k=6e4,s=36e5,h="millisecond",d="second",m="minute",M="hour",y="day",f="week",b="month",K="quarter",S="year",_="date",q="Invalid Date",nt=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,rt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,ot={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(r){var i=["th","st","nd","rd"],t=r%100;return"["+r+(i[(t-20)%10]||i[t]||i[0])+"]"}},F=function(r,i,t){var n=String(r);return!n||n.length>=i?r:""+Array(i+1-n.length).join(t)+r},at={s:F,z:function(r){var i=-r.utcOffset(),t=Math.abs(i),n=Math.floor(t/60),e=t%60;return(i<=0?"+":"-")+F(n,2,"0")+":"+F(e,2,"0")},m:function r(i,t){if(i.date()<t.date())return-r(t,i);var n=12*(t.year()-i.year())+(t.month()-i.month()),e=i.clone().add(n,b),o=t-e<0,a=i.clone().add(n+(o?-1:1),b);return+(-(n+(t-e)/(o?e-a:a-e))||0)},a:function(r){return r<0?Math.ceil(r)||0:Math.floor(r)},p:function(r){return{M:b,y:S,w:f,d:y,D:_,h:M,m,s:d,ms:h,Q:K}[r]||String(r||"").toLowerCase().replace(/s$/,"")},u:function(r){return r===void 0}},I="en",D={};D[I]=ot;var Z="$isDayjsObject",N=function(r){return r instanceof V||!(!r||!r[Z])},C=function r(i,t,n){var e;if(!i)return I;if(typeof i=="string"){var o=i.toLowerCase();D[o]&&(e=o),t&&(D[o]=t,e=o);var a=i.split("-");if(!e&&a.length>1)return r(a[0])}else{var c=i.name;D[c]=i,e=c}return!n&&e&&(I=e),e||!n&&I},g=function(r,i){if(N(r))return r.clone();var t=typeof i=="object"?i:{};return t.date=r,t.args=arguments,new V(t)},u=at;u.l=C,u.i=N,u.w=function(r,i){return g(r,{locale:i.$L,utc:i.$u,x:i.$x,$offset:i.$offset})};var V=(function(){function r(t){this.$L=C(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[Z]=!0}var i=r.prototype;return i.parse=function(t){this.$d=(function(n){var e=n.date,o=n.utc;if(e===null)return new Date(NaN);if(u.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var a=e.match(nt);if(a){var c=a[2]-1||0,l=(a[7]||"0").substring(0,3);return o?new Date(Date.UTC(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)):new Date(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)}}return new Date(e)})(t),this.init()},i.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},i.$utils=function(){return u},i.isValid=function(){return this.$d.toString()!==q},i.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},i.isAfter=function(t,n){return g(t)<this.startOf(n)},i.isBefore=function(t,n){return this.endOf(n)<g(t)},i.$g=function(t,n,e){return u.u(t)?this[n]:this.set(e,t)},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this.$d.getTime()},i.startOf=function(t,n){var e=this,o=!!u.u(n)||n,a=u.p(t),c=function(x,v){var T=u.w(e.$u?Date.UTC(e.$y,v,x):new Date(e.$y,v,x),e);return o?T:T.endOf(y)},l=function(x,v){return u.w(e.toDate()[x].apply(e.toDate("s"),(o?[0,0,0,0]:[23,59,59,999]).slice(v)),e)},$=this.$W,p=this.$M,L=this.$D,H="set"+(this.$u?"UTC":"");switch(a){case S:return o?c(1,0):c(31,11);case b:return o?c(1,p):c(0,p+1);case f:var O=this.$locale().weekStart||0,j=($<O?$+7:$)-O;return c(o?L-j:L+(6-j),p);case y:case _:return l(H+"Hours",0);case M:return l(H+"Minutes",1);case m:return l(H+"Seconds",2);case d:return l(H+"Milliseconds",3);default:return this.clone()}},i.endOf=function(t){return this.startOf(t,!1)},i.$set=function(t,n){var e,o=u.p(t),a="set"+(this.$u?"UTC":""),c=(e={},e[y]=a+"Date",e[_]=a+"Date",e[b]=a+"Month",e[S]=a+"FullYear",e[M]=a+"Hours",e[m]=a+"Minutes",e[d]=a+"Seconds",e[h]=a+"Milliseconds",e)[o],l=o===y?this.$D+(n-this.$W):n;if(o===b||o===S){var $=this.clone().set(_,1);$.$d[c](l),$.init(),this.$d=$.set(_,Math.min(this.$D,$.daysInMonth())).$d}else c&&this.$d[c](l);return this.init(),this},i.set=function(t,n){return this.clone().$set(t,n)},i.get=function(t){return this[u.p(t)]()},i.add=function(t,n){var e,o=this;t=Number(t);var a=u.p(n),c=function(p){var L=g(o);return u.w(L.date(L.date()+Math.round(p*t)),o)};if(a===b)return this.set(b,this.$M+t);if(a===S)return this.set(S,this.$y+t);if(a===y)return c(1);if(a===f)return c(7);var l=(e={},e[m]=k,e[M]=s,e[d]=w,e)[a]||1,$=this.$d.getTime()+t*l;return u.w($,this)},i.subtract=function(t,n){return this.add(-1*t,n)},i.format=function(t){var n=this,e=this.$locale();if(!this.isValid())return e.invalidDate||q;var o=t||"YYYY-MM-DDTHH:mm:ssZ",a=u.z(this),c=this.$H,l=this.$m,$=this.$M,p=e.weekdays,L=e.months,H=e.meridiem,O=function(v,T,A,W){return v&&(v[T]||v(n,o))||A[T].slice(0,W)},j=function(v){return u.s(c%12||12,v,"0")},x=H||function(v,T,A){var W=v<12?"AM":"PM";return A?W.toLowerCase():W};return o.replace(rt,function(v,T){return T||(function(A){switch(A){case"YY":return String(n.$y).slice(-2);case"YYYY":return u.s(n.$y,4,"0");case"M":return $+1;case"MM":return u.s($+1,2,"0");case"MMM":return O(e.monthsShort,$,L,3);case"MMMM":return O(L,$);case"D":return n.$D;case"DD":return u.s(n.$D,2,"0");case"d":return String(n.$W);case"dd":return O(e.weekdaysMin,n.$W,p,2);case"ddd":return O(e.weekdaysShort,n.$W,p,3);case"dddd":return p[n.$W];case"H":return String(c);case"HH":return u.s(c,2,"0");case"h":return j(1);case"hh":return j(2);case"a":return x(c,l,!0);case"A":return x(c,l,!1);case"m":return String(l);case"mm":return u.s(l,2,"0");case"s":return String(n.$s);case"ss":return u.s(n.$s,2,"0");case"SSS":return u.s(n.$ms,3,"0");case"Z":return a}return null})(v)||a.replace(":","")})},i.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},i.diff=function(t,n,e){var o,a=this,c=u.p(n),l=g(t),$=(l.utcOffset()-this.utcOffset())*k,p=this-l,L=function(){return u.m(a,l)};switch(c){case S:o=L()/12;break;case b:o=L();break;case K:o=L()/3;break;case f:o=(p-$)/6048e5;break;case y:o=(p-$)/864e5;break;case M:o=p/s;break;case m:o=p/k;break;case d:o=p/w;break;default:o=p}return e?o:u.a(o)},i.daysInMonth=function(){return this.endOf(b).$D},i.$locale=function(){return D[this.$L]},i.locale=function(t,n){if(!t)return this.$L;var e=this.clone(),o=C(t,n,!0);return o&&(e.$L=o),e},i.clone=function(){return u.w(this.$d,this)},i.toDate=function(){return new Date(this.valueOf())},i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toISOString=function(){return this.$d.toISOString()},i.toString=function(){return this.$d.toUTCString()},r})(),z=V.prototype;return g.prototype=z,[["$ms",h],["$s",d],["$m",m],["$H",M],["$W",y],["$M",b],["$y",S],["$D",_]].forEach(function(r){z[r[1]]=function(i){return this.$g(i,r[0],r[1])}}),g.extend=function(r,i){return r.$i||(r(i,V,g),r.$i=!0),g},g.locale=C,g.isDayjs=N,g.unix=function(r){return g(1e3*r)},g.en=D[I],g.Ls=D,g.p={},g})});var J=ct(st(),1);var vt=(()=>{class w{$api=Y(it);$title=Y(X);$toastr=Y(et);$translate=Y(tt);settingsLoadedSubject=new Q;defaultTheme="deep-purple";forbiddenKeys=["__proto__","constructor","prototype"];restartToastRef=null;env={};host;proxyHost;formAuth=!0;sessionTimeout=28800;sessionTimeoutInactivityBased=!1;uiVersion;theme;lightingMode;currentLightingMode;actualLightingMode;browserLightingMode;menuMode;keepOrphans;wallpaper;serverTimeOffset=0;rtl=!1;browserLang;onSettingsLoaded=this.settingsLoadedSubject.pipe(R());settingsLoaded=!1;themeList=["orange","red","pink","purple","deep-purple","indigo","blue","blue-grey","cyan","green","teal","grey","brown"];constructor(){this.getAppSettings()}getAppSettings(){return P(this,null,function*(){let s=yield B(this.$api.get("/auth/settings"));this.formAuth=s.formAuth,this.sessionTimeout=s.sessionTimeout,this.sessionTimeoutInactivityBased=s.sessionTimeoutInactivityBased,this.env=s.env,this.host=s.host,this.proxyHost=s.proxyHost,this.lightingMode=s.lightingMode,this.wallpaper=s.wallpaper,this.setLightingMode(this.lightingMode,"user"),this.setTheme(s.theme),this.setMenuMode(s.menuMode),this.setKeepOrphans(s.keepOrphans),this.setTitle(this.env.homebridgeInstanceName),this.checkServerTime(s.serverTimestamp),this.setUiVersion(s.env.packageVersion),this.setLang(this.env.lang),this.settingsLoaded=!0,this.settingsLoadedSubject.next(void 0),this.browserLang=this.$translate.getBrowserCultureLang()})}setBrowserLightingMode(s){this.browserLightingMode=s,this.lightingMode==="auto"&&this.setLightingMode(s,"browser")}setLightingMode(s,h){h==="user"&&(this.lightingMode=s),this.currentLightingMode=s,this.actualLightingMode=this.currentLightingMode==="auto"?this.browserLightingMode:this.currentLightingMode,this.theme&&this.setTheme(this.theme)}setTheme(s){(!s||!this.themeList.includes(s))&&(s=this.defaultTheme,B(this.$api.put("/config-editor/ui",{key:"theme",value:s})).catch(m=>console.error("Error saving setTheme:",m)));let h=window.document.querySelector("body");h.classList.remove(`config-ui-x-${this.theme}`),h.classList.remove(`config-ui-x-dark-mode-${this.theme}`),this.theme=s,this.actualLightingMode==="dark"?(h.classList.add(`config-ui-x-dark-mode-${this.theme}`),h.classList.contains("dark-mode")||h.classList.add("dark-mode")):(h.classList.add(`config-ui-x-${this.theme}`),h.classList.contains("dark-mode")&&h.classList.remove("dark-mode")),window.document.querySelectorAll("iframe").forEach((m,M)=>{try{let y=m.contentDocument;if(y){let f=y.body;this.actualLightingMode==="dark"?(f.classList.contains(`config-ui-x-${this.theme}`)&&f.classList.remove(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)||f.classList.add(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")||f.classList.add("dark-mode"),f.style.backgroundColor="#242424 !important",f.style.color="#ffffff !important"):(f.classList.contains(`config-ui-x-${this.theme}`)||f.classList.add(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)&&f.classList.remove(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")&&f.classList.remove("dark-mode"),f.style.backgroundColor="#ffffff !important",f.style.color="#000000 !important"),m.contentWindow.postMessage({type:"theme-update",isDark:this.actualLightingMode==="dark",theme:s},window.location.origin)}}catch(y){console.warn(`Iframe ${M}: Access denied (cross-origin?)`,{error:y,src:m.src})}})}setMenuMode(s){this.menuMode=s}setKeepOrphans(s){this.keepOrphans=s}setLang(s){s?this.$translate.use(s):s="auto",this.env.lang=s}setItem(s,h){this[s]=h}setEnvItem(s,h){if(s.includes(".")){let d=s.split("."),m=this.env;for(let M=0;M<d.length-1;M+=1){if(this.forbiddenKeys.includes(d[M]))return;m[d[M]]||(m[d[M]]={}),m=m[d[M]]}this.forbiddenKeys.includes(d[d.length-1])||(m[d[d.length-1]]=h)}else this.env[s]=h}checkServerTime(s){let d=(0,J.default)(s).diff((0,J.default)(),"hour");this.serverTimeOffset=d*60*60,(d>=8||d<=-8)&&this.$toastr.warning(this.$translate.instant("settings.datetime.incorrect"),this.$translate.instant("toast.title_warning"),{timeOut:2e4,tapToDismiss:!1}).onTap.subscribe(()=>{window.open("https://homebridge.io/w/JqTFs","_blank")})}setUiVersion(s){this.uiVersion||(this.uiVersion=s)}setTitle(s){this.$title.setTitle(s||"Homebridge")}setPageTitle(s){let h=this.env.homebridgeInstanceName||"Homebridge";s?this.$title.setTitle(`${h} \u2014 ${s}`):this.$title.setTitle(h)}isFeatureEnabled(s){return this.env.featureFlags?.[s]??!1}static \u0275fac=function(h){return new(h||w)};static \u0275prov=G({token:w,factory:w.\u0275fac,providedIn:"root"})}return w})();export{st as a,vt as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as b}from"./chunk-
|
|
1
|
+
import{a as b}from"./chunk-UBWU2SEH.js";import"./chunk-HGQJCJDV.js";import{e as T}from"./chunk-SQSP77TI.js";import{b as w}from"./chunk-RQOGW4OS.js";import{k as C,l as $,n as k,q as S}from"./chunk-FDR4RMWN.js";import{$b as s,Ab as r,Bb as i,Cb as l,Jb as E,La as x,Nb as h,Qa as n,_b as a,db as _,lc as g,na as o,qb as d,rb as f,rc as m,sc as c,tc as y}from"./chunk-FYY57EXZ.js";var I=t=>({command:t});function D(t,u){if(t&1&&(r(0,"div",7),a(1),i()),t&2){let e=h();n(),s(e.error)}}function R(t,u){t&1&&(r(0,"p",9),a(1),m(2,"translate"),i(),r(3,"div",10)(4,"div",11),l(5,"i",12),i()()),t&2&&(n(),s(c(2,1,"restart.please_wait_while_server_restarts")))}function B(t,u){if(t&1&&(r(0,"div",8)(1,"p"),a(2),m(3,"translate"),i(),l(4,"p",13),m(5,"translate"),i()),t&2){let e=h();n(2),s(c(3,2,"platform.docker.server_long_time")),n(2),E("innerHTML",y(5,4,"platform.docker.run_with_restart",g(7,I,e.command)),x)}}var U=(()=>{class t{$api=o(S);$router=o(T);$settings=o(w);$toastr=o(k);$translate=o(C);$ws=o(b);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==="ok"||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-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-spinner","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(p,v){p&1&&(r(0,"div",0)(1,"h3",1),a(2),m(3,"translate"),i()(),r(4,"div",2)(5,"div",3),l(6,"i",4),i(),r(7,"div",5)(8,"h4",6),a(9),m(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),s(c(3,4,"menu.restart.title")),n(7),s(c(10,6,"platform.docker.title_restarting")),n(2),f(v.error?11:12),n(2),f(v.timeout?13:-1))},dependencies:[$],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{U as ContainerRestartComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as H}from"./chunk-
|
|
1
|
+
import{b as H}from"./chunk-NLVJP2FS.js";import{a as L,b as S}from"./chunk-KO7OKSD4.js";import{m as T}from"./chunk-W5BUXVY6.js";import{l as B}from"./chunk-FDR4RMWN.js";import{$b as I,Ib as k,La as f,Lb as b,Ma as O,Nb as d,Qa as o,Zb as y,_b as u,ac as M,db as v,ic as w,na as h,pb as C,qb as r,rb as l,rc as g,sa as x,sc as _,ta as P,wb as p,xb as i,yb as a,zb as m}from"./chunk-FYY57EXZ.js";function E(t,c){if(t&1&&m(0,"i",16),t&2){let n=d();y(w("fas ",n.faIconClass," mb-3"))}}function z(t,c){if(t&1&&m(0,"h5",6),t&2){let n=d();p("innerHTML",n.subtitle,f)}}function V(t,c){if(t&1&&m(0,"p",8),t&2){let n=d();p("innerHTML",n.message2,f)}}function D(t,c){if(t&1&&m(0,"markdown",9),t&2){let n=d();p("data",n.markdownMessage2)}}function N(t,c){if(t&1){let n=k();i(0,"button",17),g(1,"translate"),b("click",function(){x(n);let e=d();return P(e.dismissModal())}),u(2),g(3,"translate"),a()}t&2&&(C("aria-label",_(1,2,"form.button_close")),o(2),M(" ",_(3,4,"form.button_close")," "))}function j(t,c){if(t&1){let n=k();i(0,"button",17),g(1,"translate"),b("click",function(){x(n);let e=d();return P(e.dismissModal())}),u(2),g(3,"translate"),a()}t&2&&(C("aria-label",_(1,2,"form.button_close")),o(2),M(" ",_(3,4,"form.button_close")," "))}function A(t,c){if(t&1&&(i(0,"a",15),u(1),m(2,"i",18),a()),t&2){let n=d();p("href",n.ctaButtonLink,O),o(),M(" ",n.ctaButtonLabel," ")}}var X=(()=>{class t{$activeModal=h(T);title;subtitle;message;message2;ctaButtonLabel;ctaButtonLink;faIconClass;markdownMessage2;dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(s){return new(s||t)};static \u0275cmp=v({type:t,selectors:[["ng-component"]],inputs:{title:"title",subtitle:"subtitle",message:"message",message2:"message2",ctaButtonLabel:"ctaButtonLabel",ctaButtonLink:"ctaButtonLink",faIconClass:"faIconClass",markdownMessage2:"markdownMessage2"},decls:19,vars:12,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,"plugin-md",3,"data"],[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-external-link-alt"]],template:function(s,e){s&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),u(3),a(),i(4,"button",3),g(5,"translate"),b("click",function(){return e.dismissModal()}),a()(),i(6,"div",4),r(7,E,1,3,"i",5),r(8,z,1,1,"h5",6),m(9,"p",7),r(10,V,1,1,"p",8),r(11,D,1,1,"markdown",9),a(),i(12,"div",10)(13,"div",11),r(14,N,4,6,"button",12),a(),i(15,"div",13),r(16,j,4,6,"button",12),a(),i(17,"div",14),r(18,A,3,2,"a",15),a()()()),s&2&&(o(3),I(e.title),o(),C("aria-label",_(5,10,"form.button_close")),o(3),l(e.faIconClass?7:-1),o(),l(e.subtitle?8:-1),o(),p("innerHTML",e.message,f),o(),l(e.message2?10:-1),o(),l(e.markdownMessage2?11:-1),o(3),l(e.ctaButtonLink?14:-1),o(2),l(e.ctaButtonLink?-1:16),o(2),l(e.ctaButtonLink?18:-1))},dependencies:[S,L,H,B],styles:["[_nghost-%COMP%] .plugin-md{display:block!important;background-color:#f6f8fa!important;border-radius:6px!important;padding:16px!important;margin:16px auto!important;width:100%!important;max-width:632px!important}[_nghost-%COMP%] .plugin-md table{width:100%;max-width:600px;margin:0 auto!important;border-collapse:collapse;border:1px solid #d0d7de!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif!important;font-size:14px!important;color:#24292e!important}[_nghost-%COMP%] .plugin-md th, [_nghost-%COMP%] .plugin-md td{padding:6px 13px!important;border:1px solid #d0d7de!important;text-align:left;color:#24292e!important}[_nghost-%COMP%] .plugin-md th{background-color:#f6f8fa!important;font-weight:600!important;text-align:center!important}[_nghost-%COMP%] .plugin-md td[align=center]{text-align:center!important}[_nghost-%COMP%] .plugin-md tr{color:#24292e!important}[_nghost-%COMP%] .plugin-md tr:nth-child(odd){background-color:#fff!important}[_nghost-%COMP%] .plugin-md tr:nth-child(2n){background-color:#f6f8fa!important}[_nghost-%COMP%] .plugin-md tr:hover{background-color:#f0f2f5!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%]{background-color:#2b2b2b!important;color:#fff!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] table[_ngcontent-%COMP%], [_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] tr[_ngcontent-%COMP%], [_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] th[_ngcontent-%COMP%], [_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{color:#fff!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background-color:#3c3c3c!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(odd){background-color:#323232!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background-color:#2b2b2b!important}[_nghost-%COMP%] body.dark-mode[_ngcontent-%COMP%] .plugin-md[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background-color:#454545!important}"]})}return t})();export{X as a};
|