homebridge-config-ui-x 5.4.2-beta.9 → 5.5.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/CHANGELOG.md +47 -8
  2. package/dist/bin/hb-service.js +1 -1
  3. package/dist/bin/hb-service.js.map +1 -1
  4. package/dist/core/auth/auth.controller.d.ts +3 -0
  5. package/dist/core/config/config.interfaces.d.ts +124 -0
  6. package/dist/core/config/config.interfaces.js +3 -0
  7. package/dist/core/config/config.interfaces.js.map +1 -0
  8. package/dist/core/config/config.service.d.ts +7 -73
  9. package/dist/core/config/config.service.js +8 -2
  10. package/dist/core/config/config.service.js.map +1 -1
  11. package/dist/core/config/config.startup.d.ts +2 -12
  12. package/dist/core/config/config.startup.js +15 -3
  13. package/dist/core/config/config.startup.js.map +1 -1
  14. package/dist/core/spa/spa-html.service.d.ts +5 -0
  15. package/dist/core/spa/spa-html.service.js +38 -0
  16. package/dist/core/spa/spa-html.service.js.map +1 -0
  17. package/dist/core/spa/spa.filter.d.ts +3 -0
  18. package/dist/core/spa/spa.filter.js +22 -2
  19. package/dist/core/spa/spa.filter.js.map +1 -1
  20. package/dist/globalDefaults.js +11 -0
  21. package/dist/globalDefaults.js.map +1 -1
  22. package/dist/main.js +18 -3
  23. package/dist/main.js.map +1 -1
  24. package/dist/modules/backup/backup.service.js +4 -1
  25. package/dist/modules/backup/backup.service.js.map +1 -1
  26. package/dist/modules/config-editor/config-editor.controller.d.ts +3 -3
  27. package/dist/modules/config-editor/config-editor.service.d.ts +3 -2
  28. package/dist/modules/config-editor/config-editor.service.js +38 -15
  29. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  30. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.d.ts +1 -1
  31. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +2 -1
  32. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  33. package/dist/modules/log/log.gateway.d.ts +1 -1
  34. package/dist/modules/log/log.interfaces.d.ts +4 -0
  35. package/dist/modules/log/log.interfaces.js +3 -0
  36. package/dist/modules/log/log.interfaces.js.map +1 -0
  37. package/dist/modules/log/log.service.d.ts +1 -4
  38. package/dist/modules/log/log.service.js.map +1 -1
  39. package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +1 -1
  40. package/dist/modules/platform-tools/terminal/terminal.interfaces.d.ts +8 -0
  41. package/dist/modules/platform-tools/terminal/terminal.interfaces.js +3 -0
  42. package/dist/modules/platform-tools/terminal/terminal.interfaces.js.map +1 -0
  43. package/dist/modules/platform-tools/terminal/terminal.service.d.ts +1 -8
  44. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  45. package/dist/modules/plugins/plugins.controller.d.ts +5 -5
  46. package/dist/modules/plugins/plugins.interfaces.d.ts +211 -0
  47. package/dist/modules/plugins/plugins.interfaces.js +3 -0
  48. package/dist/modules/plugins/plugins.interfaces.js.map +1 -0
  49. package/dist/modules/plugins/plugins.service.d.ts +1 -1
  50. package/dist/modules/plugins/plugins.service.js +20 -9
  51. package/dist/modules/plugins/plugins.service.js.map +1 -1
  52. package/dist/modules/server/server.controller.d.ts +3 -0
  53. package/dist/modules/server/server.controller.js +13 -0
  54. package/dist/modules/server/server.controller.js.map +1 -1
  55. package/dist/modules/server/server.service.js +6 -4
  56. package/dist/modules/server/server.service.js.map +1 -1
  57. package/dist/modules/status/status.controller.d.ts +2 -2
  58. package/dist/modules/status/status.gateway.d.ts +5 -5
  59. package/dist/modules/status/status.interfaces.d.ts +27 -0
  60. package/dist/modules/status/status.interfaces.js +10 -0
  61. package/dist/modules/status/status.interfaces.js.map +1 -0
  62. package/dist/modules/status/status.service.d.ts +2 -29
  63. package/dist/modules/status/status.service.js +4 -9
  64. package/dist/modules/status/status.service.js.map +1 -1
  65. package/package.json +8 -8
  66. package/public/3rdpartylicenses.txt +94 -66
  67. package/public/assets/monaco/ThirdPartyNotices.txt +448 -0
  68. package/public/assets/monaco/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  69. package/public/assets/monaco/min/vs/base/worker/workerMain.js +31 -0
  70. package/public/assets/monaco/min/vs/basic-languages/shell/shell.js +10 -0
  71. package/public/assets/monaco/min/vs/editor/editor.main.css +8 -0
  72. package/public/assets/monaco/min/vs/editor/editor.main.js +798 -0
  73. package/public/assets/monaco/min/vs/language/json/jsonMode.js +19 -0
  74. package/public/assets/monaco/min/vs/language/json/jsonWorker.js +42 -0
  75. package/public/assets/monaco/min/vs/loader.js +11 -0
  76. package/public/chunk-23AU3MX7.js +1 -0
  77. package/public/chunk-2NPKZMGF.js +1 -0
  78. package/public/chunk-3U2WVJBA.js +1 -0
  79. package/public/{chunk-5TCYRJ6A.js → chunk-3XX6K3N6.js} +1 -1
  80. package/public/{chunk-SJ3DSNFF.js → chunk-4HFHCAVH.js} +1 -1
  81. package/public/{chunk-H3PPMCMP.js → chunk-4L36XSQH.js} +1 -1
  82. package/public/{chunk-4WAU3AJS.js → chunk-4X2ASGAG.js} +1 -1
  83. package/public/chunk-5BXICZM2.js +1 -0
  84. package/public/chunk-5R6IGZK6.js +9 -0
  85. package/public/chunk-5UD7DCZJ.js +1 -0
  86. package/public/chunk-6IUEQMGQ.js +1 -0
  87. package/public/chunk-6QGMCM3D.js +1 -0
  88. package/public/{chunk-NJOBXAPT.js → chunk-6TZDM7LH.js} +1 -1
  89. package/public/chunk-77KJDFG2.js +1 -0
  90. package/public/chunk-AD3UWE4P.js +1 -0
  91. package/public/{chunk-LPHTUMGC.js → chunk-AF3VGM4S.js} +1 -1
  92. package/public/chunk-ATQI5X2M.js +1 -0
  93. package/public/{chunk-NFWGYMP7.js → chunk-C66EAVPD.js} +1 -1
  94. package/public/chunk-CBEKHPKJ.js +1 -0
  95. package/public/{chunk-YATJTZML.js → chunk-CHSHRPAX.js} +2 -2
  96. package/public/chunk-CSBZ7TOY.js +3 -0
  97. package/public/{chunk-EA3EXGPZ.js → chunk-CYT4MBBY.js} +2 -2
  98. package/public/chunk-D5B32ONS.js +1 -0
  99. package/public/chunk-DVCB2DRD.js +1 -0
  100. package/public/chunk-DXZBLXBX.js +1 -0
  101. package/public/chunk-EIJ3XF67.js +1 -0
  102. package/public/chunk-EIKPWDYR.js +1 -0
  103. package/public/chunk-EJI5A4GB.js +40 -0
  104. package/public/chunk-EK2MY2IP.js +1 -0
  105. package/public/{chunk-ICTLVT6T.js → chunk-GEA434I4.js} +1 -1
  106. package/public/chunk-HQWCWWHG.js +49 -0
  107. package/public/chunk-I5F6WOLX.js +1 -0
  108. package/public/chunk-ICHTBC24.js +1 -0
  109. package/public/{chunk-CCPSSGRZ.js → chunk-IZMCLNBP.js} +1 -1
  110. package/public/chunk-KGLXH7TA.js +1 -0
  111. package/public/{chunk-ZHPB347D.js → chunk-KOU3OJVF.js} +1 -1
  112. package/public/{chunk-77JZBWAC.js → chunk-LQN66MFG.js} +1 -1
  113. package/public/chunk-LVWJGLUG.js +16 -0
  114. package/public/chunk-MVR4POOR.js +5 -0
  115. package/public/chunk-NHIZA4QK.js +4 -0
  116. package/public/chunk-NSO3DUQK.js +4 -0
  117. package/public/chunk-NZROLC4K.js +1 -0
  118. package/public/{chunk-I2TETZLW.js → chunk-OJMSJQ3B.js} +1 -1
  119. package/public/chunk-OVYAORCF.js +1 -0
  120. package/public/{chunk-UHWT4HS2.js → chunk-P2RTAUAT.js} +1 -1
  121. package/public/chunk-PDAYBWCP.js +4 -0
  122. package/public/chunk-PGIRVXR4.js +1 -0
  123. package/public/{chunk-BU65ZOCD.js → chunk-PK4R4QYF.js} +1 -1
  124. package/public/chunk-POEKC22L.js +1 -0
  125. package/public/{chunk-VU6MPE5H.js → chunk-PTHIWOB4.js} +1 -1
  126. package/public/chunk-RRIQGW3Y.js +1 -0
  127. package/public/chunk-S7BH6Q3Q.js +1 -0
  128. package/public/chunk-SESRE6K4.js +1 -0
  129. package/public/chunk-SJAYHV5T.js +19 -0
  130. package/public/chunk-SMJ5BAI5.js +1 -0
  131. package/public/chunk-TUN7H57E.js +1 -0
  132. package/public/chunk-UKDO3SQL.js +1 -0
  133. package/public/chunk-UOY7XUPC.js +1 -0
  134. package/public/chunk-V2466IWV.js +1 -0
  135. package/public/{chunk-V2P2FPJ7.js → chunk-VAPGGHB4.js} +1 -1
  136. package/public/chunk-VJ34BQPJ.js +1 -0
  137. package/public/chunk-WAEZKTEF.js +2 -0
  138. package/public/chunk-XBI2X6IL.js +1 -0
  139. package/public/chunk-XJO2KULM.js +1 -0
  140. package/public/chunk-Y4VCV3GI.js +1 -0
  141. package/public/chunk-Y7ICUNCY.js +1 -0
  142. package/public/chunk-YCL5FMNZ.js +1 -0
  143. package/public/{chunk-DYJDYESS.js → chunk-ZJLC6C3I.js} +1 -1
  144. package/public/index.html +2 -2
  145. package/public/main-X5UQLIPE.js +1 -0
  146. package/public/polyfills-5KWHJ7II.js +2 -0
  147. package/public/styles-643WFJRY.css +1 -0
  148. package/config.schema.json +0 -590
  149. package/public/assets/monaco-0.21.3/README.md +0 -96
  150. package/public/assets/monaco-0.21.3/ThirdPartyNotices.txt +0 -283
  151. package/public/assets/monaco-0.21.3/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  152. package/public/assets/monaco-0.21.3/min/vs/base/worker/workerMain.js +0 -160
  153. package/public/assets/monaco-0.21.3/min/vs/basic-languages/shell/shell.js +0 -7
  154. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.css +0 -6
  155. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.js +0 -2368
  156. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.nls.js +0 -39
  157. package/public/assets/monaco-0.21.3/min/vs/language/json/jsonMode.js +0 -7
  158. package/public/assets/monaco-0.21.3/min/vs/language/json/jsonWorker.js +0 -7
  159. package/public/assets/monaco-0.21.3/min/vs/loader.js +0 -38
  160. package/public/assets/monaco-0.21.3/package.json +0 -38
  161. package/public/chunk-2CO3VBPY.js +0 -1
  162. package/public/chunk-3I6K5KUV.js +0 -1
  163. package/public/chunk-5VA2P7IY.js +0 -1
  164. package/public/chunk-6GMXEQVA.js +0 -2
  165. package/public/chunk-7LW4MGOQ.js +0 -1
  166. package/public/chunk-AE7VAWOU.js +0 -9
  167. package/public/chunk-BBMQHM5Y.js +0 -2
  168. package/public/chunk-BOJ5G5BR.js +0 -1
  169. package/public/chunk-CNMM42I5.js +0 -1
  170. package/public/chunk-D3JHDB7S.js +0 -1
  171. package/public/chunk-DP64F7AR.js +0 -1
  172. package/public/chunk-E6YWZCLV.js +0 -1
  173. package/public/chunk-EOD26MLT.js +0 -20
  174. package/public/chunk-F5LCQLBC.js +0 -1
  175. package/public/chunk-FXX7OM3C.js +0 -40
  176. package/public/chunk-G7FA4DP4.js +0 -1
  177. package/public/chunk-GSI45GAI.js +0 -1
  178. package/public/chunk-H36QJYLQ.js +0 -4
  179. package/public/chunk-H5ZWWQ4N.js +0 -1
  180. package/public/chunk-J2QJA4E5.js +0 -1
  181. package/public/chunk-JIAMQ2VI.js +0 -1
  182. package/public/chunk-KJ7TFOAF.js +0 -1
  183. package/public/chunk-L452FIUI.js +0 -1
  184. package/public/chunk-MLQP4BIF.js +0 -1
  185. package/public/chunk-N2DFJK5J.js +0 -1
  186. package/public/chunk-NGCBLX4N.js +0 -1
  187. package/public/chunk-NQUU3I4B.js +0 -1
  188. package/public/chunk-OKJ3EDLI.js +0 -1
  189. package/public/chunk-OPI4KEXA.js +0 -1
  190. package/public/chunk-PGN4W67A.js +0 -1
  191. package/public/chunk-PJQJ4U6H.js +0 -1
  192. package/public/chunk-Q76LRRNA.js +0 -1
  193. package/public/chunk-QKX6ZW6V.js +0 -1
  194. package/public/chunk-QTPZZ54U.js +0 -4
  195. package/public/chunk-R2OFMY4D.js +0 -1
  196. package/public/chunk-RVZECQBJ.js +0 -1
  197. package/public/chunk-SAZZA33Y.js +0 -23
  198. package/public/chunk-SNHTHMX3.js +0 -1
  199. package/public/chunk-TGOCI72Q.js +0 -1
  200. package/public/chunk-U2KAF42T.js +0 -3
  201. package/public/chunk-UKLR7UOX.js +0 -14
  202. package/public/chunk-UOLP7IQJ.js +0 -1
  203. package/public/chunk-UQX3UTFZ.js +0 -4
  204. package/public/chunk-WV56IURB.js +0 -30
  205. package/public/chunk-X7YL6WTA.js +0 -1
  206. package/public/chunk-XHYVOBCA.js +0 -1
  207. package/public/chunk-XJZGI5OR.js +0 -1
  208. package/public/chunk-YXI6VAVI.js +0 -1
  209. package/public/chunk-Z3CXF63X.js +0 -1
  210. package/public/chunk-Z7BM53JV.js +0 -1
  211. package/public/main-BZ3XOOI6.js +0 -1
  212. package/public/polyfills-WE4HA5DL.js +0 -2
  213. package/public/styles-AUT3PDLG.css +0 -1
  214. /package/public/assets/{monaco-0.21.3 → monaco}/LICENSE +0 -0
@@ -0,0 +1 @@
1
+ import{a as H}from"./chunk-TUN7H57E.js";import{a as X}from"./chunk-OJMSJQ3B.js";import{a as G}from"./chunk-6TZDM7LH.js";import{a as Z}from"./chunk-CHSHRPAX.js";import"./chunk-KOU3OJVF.js";import{a as R}from"./chunk-4X2ASGAG.js";import{n as E}from"./chunk-CYT4MBBY.js";import"./chunk-5BXICZM2.js";import{a as j}from"./chunk-XBI2X6IL.js";import{b as A}from"./chunk-EIJ3XF67.js";import{a as q,c as N,d as V,e as W,f as D}from"./chunk-UOY7XUPC.js";import{b as T}from"./chunk-5UD7DCZJ.js";import{k as L,l as U,p as $}from"./chunk-D5B32ONS.js";import{Db as S,Gb as _,Ib as x,Kc as O,La as i,Pa as F,Vb as f,Wa as P,Wb as v,Xc as K,fc as h,g as Y,gc as M,h as I,ja as u,kb as m,lb as w,mb as y,mc as s,nc as d,oa as b,pa as C,rb as c,sb as n,tb as a,ub as p,w as z}from"./chunk-MVR4POOR.js";var Q=Y(Z(),1);var B=()=>["/"],te=o=>({"hamburger-icon-cross":o}),ne=o=>({expanded:o}),ie=()=>({exact:!0}),oe=()=>["/plugins"],re=()=>["/accessories"],ae=()=>["/logs"],se=()=>["/support"],de=()=>["/platform-tools/terminal"],le=()=>["/config"],pe=()=>["/settings"],ce=()=>["/power-options"];function me(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",20),s(2,"translate"),s(3,"translate"),_("click",function(){b(e);let t=x();return C(t.openUnderVoltageModal())})("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(4,"div",12),p(5,"i",21),a(),n(6,"div",14),f(7),s(8,"translate"),a()()()}o&2&&(i(),m("aria-label",d(2,2,"rpi.throttled.undervoltage_title")+" - "+d(3,4,"rpi.throttled.undervoltage_description")),i(6),v(d(8,6,"rpi.throttled.undervoltage_title")))}function ue(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",15),s(2,"translate"),_("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",22),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),c("routerLink",h(8,de))("routerLinkActive","active"),m("aria-label",d(2,4,"menu.linux.label_terminal")),i(5),v(d(7,6,"menu.linux.label_terminal")))}function _e(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",15),s(2,"translate"),_("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",23),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),c("routerLink",h(8,le))("routerLinkActive","active"),m("aria-label",d(2,4,"menu.config_json_editor")),i(5),v(d(7,6,"menu.config_json_editor")))}function fe(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",15),s(2,"translate"),_("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",24),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),c("routerLink",h(8,pe))("routerLinkActive","active"),m("aria-label",d(2,4,"menu.label_settings")),i(5),v(d(7,6,"menu.label_settings")))}function ge(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",15),s(2,"translate"),_("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",25),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),c("routerLink",h(8,ce))("routerLinkActive","active"),m("aria-label",d(2,4,"menu.restart.title")),i(5),v(d(7,6,"menu.restart.title")))}function ve(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",20),s(2,"translate"),_("click",function(){b(e);let t=x();return C(t.reloadPage())})("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",26),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),m("aria-label",d(2,2,"menu.reload")),i(5),v(d(7,4,"menu.reload")))}function he(o,k){if(o&1){let e=S();n(0,"div",10)(1,"div",20),s(2,"translate"),_("click",function(){b(e);let t=x();return C(t.logout())})("keydown",function(t){b(e);let r=x();return C(r.handleKeydown(t))}),n(3,"div",12),p(4,"i",27),a(),n(5,"div",14),f(6),s(7,"translate"),a()()()}o&2&&(i(),m("aria-label",d(2,2,"menu.tooltip_logout")),i(5),v(d(7,4,"menu.tooltip_logout")))}var J=(()=>{class o{$auth=u(A);$settings=u(T);$modal=u(E);$notification=u(G);$renderer=u(F);$router=u(V);$translate=u(L);isExpanded=!1;formAuth=this.$settings.formAuth;isAdmin=this.$auth.user.admin;enableTerminalAccess=this.$settings.env.enableTerminalAccess;rPiCurrentlyUnderVoltage=!1;rPiWasUnderVoltage=!1;isMobile=!1;freezeMenu=!1;isPwa=H();constructor(){this.isMobile=window.innerWidth<768;let e;window.addEventListener("resize",()=>{clearTimeout(e),e=setTimeout(()=>{this.updateListeners()},500)}),this.$router.events.subscribe(l=>{l instanceof q&&(this.closeSidebar(),this.freezeMenu=!0,setTimeout(()=>{this.freezeMenu=!1},750))})}ngOnInit(){this.$notification.raspberryPiThrottled.subscribe(r=>{r["Under Voltage"]&&(this.rPiCurrentlyUnderVoltage=!0),r["Under-voltage has occurred"]&&(this.rPiWasUnderVoltage=!0)}),this.$notification.formAuthEnabled.subscribe(r=>{this.formAuth=r});let e=document.querySelector(".sidebar"),l=document.querySelector(".m-header"),t=document.querySelector(".content");this.isMobile?document.addEventListener("touchstart",r=>{if(t.contains(r.target)&&this.isExpanded){r.preventDefault(),this.toggleSidebar();return}!e.contains(r.target)&&!l.contains(r.target)&&this.isExpanded&&(r.preventDefault(),this.closeSidebar())},{passive:!1}):(this.updateListeners(),l.addEventListener("mouseenter",()=>this.openSidebar(),{passive:!1}),l.addEventListener("mouseleave",()=>this.closeSidebar(),{passive:!1}),document.addEventListener("click",r=>{e.contains(r.target)&&r.clientX>60&&this.closeSidebar()},{passive:!1})),this.updateContentStyles()}toggleSidebar(){this.freezeMenu||(this.isExpanded=!this.isExpanded,this.updateContentStyles())}openUnderVoltageModal(){let e=this.$modal.open(X,{size:"lg",backdrop:"static"});e.componentInstance.title=this.$translate.instant("rpi.throttled.undervoltage_title"),e.componentInstance.message=this.$translate.instant(this.rPiCurrentlyUnderVoltage?"rpi.throttled.currently_message":"rpi.throttled.previously_message"),e.componentInstance.ctaButtonLabel=this.$translate.instant("form.button_more_info"),e.componentInstance.faIconClass="fas fa-fw fa-bolt yellow-text",e.componentInstance.ctaButtonLink="https://pimylifeup.com/raspberry-pi-low-voltage-warning"}handleKeydown(e){if(e.key==="Enter"){let l=e.target;["menuitem","button"].includes(l.getAttribute("role"))&&l.click()}}reloadPage(){window.location.reload()}ngOnDestroy(){document.removeEventListener("touchstart",()=>{}),document.removeEventListener("click",()=>{})}logout(){this.$auth.logout()}openSidebar(){this.freezeMenu||(this.isExpanded=!0,this.updateContentStyles())}closeSidebar(){this.freezeMenu||(this.isExpanded=!1,this.updateContentStyles())}updateContentStyles(){let e=document.querySelector(".content");this.isExpanded?(this.$renderer.setStyle(e,"opacity","20%"),this.$renderer.setStyle(e,"pointer-events","none"),this.$renderer.setStyle(e,"overflow","hidden")):(this.$renderer.removeStyle(e,"opacity"),this.$renderer.removeStyle(e,"pointer-events"),this.$renderer.removeStyle(e,"overflow"))}updateListeners(){this.isMobile=window.innerWidth<768;let e=document.querySelector(".sidebar");e.removeAllListeners(),(this.isMobile||!this.isMobile&&this.$settings.menuMode!=="freeze")&&(e.addEventListener("mouseenter",()=>this.openSidebar(),{passive:!1}),e.addEventListener("mouseleave",()=>this.closeSidebar(),{passive:!1}))}static \u0275fac=function(l){return new(l||o)};static \u0275cmp=P({type:o,selectors:[["app-sidebar"]],inputs:{isExpanded:"isExpanded"},decls:68,vars:75,consts:[["tabindex","0","role","button",1,"m-header","text-end",3,"click","keydown"],[1,"me-2","d-block","d-lg-none",2,"font-size","0.9rem","color","#dddddd"],[3,"routerLink"],["ngSrc","assets/homebridge-logo.svg","alt","HB Logo","height","35","width","35",2,"height","35px","width","35px"],[1,"hb-logo-text-mobile"],[1,"hamburger-icon",3,"ngClass"],["role","navigation","id","sidebar",1,"sidebar",3,"ngClass"],["tabindex","0","role","button",1,"header",3,"click","keydown"],[1,"hb-logo-text"],[1,"link-wrapper"],[1,"link"],["role","menuitem","tabindex","0",1,"link-row",3,"keydown","routerLink","routerLinkActive","routerLinkActiveOptions"],[1,"icon"],[1,"fa","fa-fw","fa-house"],[1,"title"],["role","menuitem","tabindex","0",1,"link-row",3,"keydown","routerLink","routerLinkActive"],[1,"fa","fa-fw","fa-plug"],[1,"fa","fa-fw","fa-lightbulb"],[1,"fa","fa-fw","fa-wave-square"],[1,"fa","fa-fw","fa-question-circle-o"],["role","menuitem","tabindex","0",1,"link-row",3,"click","keydown"],[1,"fas","fa-fw","fa-bolt","fa-beat","yellow-text",2,"--fa-beat-scale","1.5"],[1,"fa","fa-fw","fa-terminal"],[1,"fa","fa-fw","fa-code"],[1,"fa","fa-fw","fa-cog"],[1,"fa","fa-fw","fa-power-off"],[1,"fa","fa-fw","fa-refresh"],[1,"fa","fa-fw","fa-right-from-bracket"]],template:function(l,t){l&1&&(n(0,"div",0),s(1,"translate"),_("click",function(){return t.toggleSidebar()})("keydown",function(g){return t.handleKeydown(g)}),p(2,"span",1),n(3,"a",2),s(4,"translate"),p(5,"img",3),n(6,"div",4),f(7,"Homebridge"),a()(),n(8,"div",5),p(9,"span")(10,"span")(11,"span")(12,"span"),a()(),n(13,"div",6)(14,"div",7),_("click",function(){return t.toggleSidebar()})("keydown",function(g){return t.handleKeydown(g)}),n(15,"a",2),s(16,"translate"),p(17,"img",3),n(18,"div",8),f(19,"Homebridge"),a()()(),n(20,"div",9)(21,"div",10)(22,"div",11),s(23,"translate"),_("keydown",function(g){return t.handleKeydown(g)}),n(24,"div",12),p(25,"i",13),a(),n(26,"div",14),f(27),s(28,"translate"),a()()(),w(29,me,9,8,"div",10),n(30,"div",10)(31,"div",15),s(32,"translate"),_("keydown",function(g){return t.handleKeydown(g)}),n(33,"div",12),p(34,"i",16),a(),n(35,"div",14),f(36),s(37,"translate"),a()()(),n(38,"div",10)(39,"div",15),s(40,"translate"),_("keydown",function(g){return t.handleKeydown(g)}),n(41,"div",12),p(42,"i",17),a(),n(43,"div",14),f(44),s(45,"translate"),a()()(),n(46,"div",10)(47,"div",15),s(48,"translate"),_("keydown",function(g){return t.handleKeydown(g)}),n(49,"div",12),p(50,"i",18),a(),n(51,"div",14),f(52),s(53,"translate"),a()()(),w(54,ue,8,9,"div",10),w(55,_e,8,9,"div",10),w(56,fe,8,9,"div",10),n(57,"div",10)(58,"div",15),s(59,"translate"),_("keydown",function(g){return t.handleKeydown(g)}),n(60,"div",12),p(61,"i",19),a(),n(62,"div",14),f(63),s(64,"translate"),a()()(),w(65,ge,8,9,"div",10),w(66,ve,8,6,"div",10),w(67,he,8,6,"div",10),a()()),l&2&&(m("aria-expanded",t.isExpanded?"true":"false")("aria-controls","sidebar")("aria-label",d(1,37,"menu.sidebar.aria_menu")),i(3),c("routerLink",h(63,B)),m("aria-label",d(4,39,"menu.label_status")),i(5),c("ngClass",M(64,te,t.isExpanded)),i(5),c("ngClass",M(66,ne,t.isExpanded)),i(2),c("routerLink",h(68,B)),m("aria-label",d(16,41,"menu.label_status")),i(7),c("routerLink",h(69,B))("routerLinkActive","active")("routerLinkActiveOptions",h(70,ie)),m("aria-label",d(23,43,"menu.label_status")),i(5),v(d(28,45,"menu.label_status")),i(2),y(t.rPiWasUnderVoltage||t.rPiCurrentlyUnderVoltage?29:-1),i(2),c("routerLink",h(71,oe))("routerLinkActive","active"),m("aria-label",d(32,47,"menu.label_plugins")),i(5),v(d(37,49,"menu.label_plugins")),i(3),c("routerLink",h(72,re))("routerLinkActive","active"),m("aria-label",d(40,51,"menu.label_accessories")),i(5),v(d(45,53,"menu.label_accessories")),i(3),c("routerLink",h(73,ae))("routerLinkActive","active"),m("aria-label",d(48,55,"menu.linux.label_logs")),i(5),v(d(53,57,"menu.linux.label_logs")),i(2),y(t.enableTerminalAccess&&t.isAdmin?54:-1),i(),y(t.isAdmin?55:-1),i(),y(t.isAdmin?56:-1),i(2),c("routerLink",h(74,se))("routerLinkActive","active"),m("aria-label",d(59,59,"support.title")),i(5),v(d(64,61,"support.title")),i(2),y(t.isAdmin?65:-1),i(),y(t.isPwa?66:-1),i(),y(t.formAuth?67:-1))},dependencies:[W,K,O,D,U],styles:[".m-header[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:65px;z-index:510;display:flex;align-items:center;padding-left:3px;padding-right:3px}.m-header[_ngcontent-%COMP%]:hover{cursor:pointer}@media (min-width: 768px){.m-header[_ngcontent-%COMP%]{display:none}}.sidebar[_ngcontent-%COMP%]{position:fixed;left:0;top:0;height:100vh;transition:.3s;width:60px;z-index:500}.sidebar[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;padding:15px 10px 15px 11px;font-size:.85rem}.sidebar[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]:hover{cursor:pointer}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{overflow-y:auto;max-height:calc(100vh - 80px)!important}@media (max-width: 767px){.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{padding-bottom:60px}}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%]{display:flex;align-items:center;padding:15px 10px;cursor:pointer;transition:.2s;font-size:17px}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{flex:0 0 38px;display:flex;align-items:center;justify-content:center}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{flex:1;transition:.3s;max-width:0;overflow:hidden;white-space:nowrap}@media (max-width: 767px){.sidebar[_ngcontent-%COMP%]{width:0}.sidebar[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{display:none}}.sidebar.expanded[_ngcontent-%COMP%]{width:210px}@media (max-width: 767px){.sidebar.expanded[_ngcontent-%COMP%]{width:210px}.sidebar.expanded[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%]{display:block}}.sidebar.expanded[_ngcontent-%COMP%] .link-wrapper[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] .link-row[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{max-width:150px;padding-left:10px}.hamburger-icon[_ngcontent-%COMP%]{margin:-7px 0 0 25px}@media (min-width: 768px){.hb-logo-text[_ngcontent-%COMP%]{color:#fff;position:absolute;top:17px;font-size:22px;padding-left:3px}.sidebar.expanded[_ngcontent-%COMP%] .hb-logo-text[_ngcontent-%COMP%]{opacity:1;left:55px;transition:.3s}.sidebar[_ngcontent-%COMP%]:not(.expanded) .hb-logo-text[_ngcontent-%COMP%]{opacity:0;left:40px;transition:.3s}.hb-logo-text-mobile[_ngcontent-%COMP%], .hamburger-icon[_ngcontent-%COMP%]{display:none!important}}@media (max-width: 767px){.hb-logo-text[_ngcontent-%COMP%]{display:none!important}.hb-logo-text-mobile[_ngcontent-%COMP%]{color:#fff;position:absolute;top:17px;font-size:22px;padding-left:3px;opacity:1;left:55px}.hamburger-icon[_ngcontent-%COMP%]{position:absolute;right:10px;top:28px;width:30px;transform:rotate(0);transition:.5s ease-in-out;cursor:pointer}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;position:absolute;height:2px;width:100%;background-color:#fff;border-radius:9px;opacity:1;left:0;transform:rotate(0);transition:.25s ease-in-out}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(1){top:0}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2), .hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(3){top:10px}.hamburger-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(4){top:20px}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(1){top:10px;width:0;left:50%}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2){transform:rotate(45deg)}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(3){transform:rotate(-45deg)}.hamburger-icon-cross[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(4){top:10px;width:0;left:50%}}"]})}return o})();var be=o=>({sidebarExpanded:o}),Re=(()=>{class o{$auth=u(A);$modal=u(E);$router=u(V);$settings=u(T);$translate=u(L);$ws=u(j);io;sidebarExpanded=!1;ngOnInit(){this.io=this.$ws.connectToNamespace("app"),this.io.socket.on("reconnect",()=>{this.$auth.checkToken()}),this.compareServerUiVersion()}compareServerUiVersion(){return I(this,null,function*(){if(this.$settings.settingsLoaded||(yield z(this.$settings.onSettingsLoaded)),!this.$router.url.endsWith("/restart")&&(0,Q.lt)(this.$settings.uiVersion,$.serverTarget)){console.log(`Server restart required. UI Version: ${$.serverTarget} - Server Version: ${this.$settings.uiVersion} `);let e=this.$modal.open(R,{size:"lg",backdrop:"static"});e.componentInstance.title=this.$translate.instant("platform.version.service_restart_required"),e.componentInstance.message=this.$translate.instant("platform.version.restart_required",{serverVersion:this.$settings.uiVersion,uiVersion:$.serverTarget}),e.componentInstance.confirmButtonLabel=this.$translate.instant("menu.tooltip_restart"),e.componentInstance.faIconClass="fas fa-power-off orange-text",e.result.then(()=>this.$router.navigate(["/restart"])).catch(()=>{})}})}static \u0275fac=function(l){return new(l||o)};static \u0275cmp=P({type:o,selectors:[["app-layout"]],decls:3,vars:4,consts:[[3,"isExpanded"],[1,"content","px-3","p-md-4",3,"ngClass"]],template:function(l,t){l&1&&(p(0,"app-sidebar",0),n(1,"div",1),p(2,"router-outlet"),a()),l&2&&(c("isExpanded",t.sidebarExpanded),i(),c("ngClass",M(2,be,t.sidebarExpanded)))},dependencies:[J,O,N],styles:[".content[_ngcontent-%COMP%]{margin-left:60px;transition:.3s;height:100%}@media (max-width: 767px){.content[_ngcontent-%COMP%]{margin-left:0;padding-top:85px!important}}@media (min-width: 768px){.content[_ngcontent-%COMP%]{height:100%}}a[_ngcontent-%COMP%]:hover{text-decoration:none!important}"]})}return o})();export{Re as LayoutComponent};
@@ -1,4 +1,4 @@
1
- import{a as z,b,c as k}from"./chunk-AE7VAWOU.js";import{a as u}from"./chunk-OKJ3EDLI.js";import{n as f}from"./chunk-2CO3VBPY.js";import{M as t,fa as p,g as n,h as c,ka as a,n as h}from"./chunk-H36QJYLQ.js";var d=n(z(),1),l=n(b(),1),m=n(k(),1);var v=(()=>{class o{$ws=a(u);$api=a(f);io;fitAddon;webLinksAddon;resize;elementResize;dataDisposable=null;isInitializing=!1;hasUserTyped=!1;term;destroyTerminal(){this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.io&&this.io.end(),this.term&&(this.term.dispose(),this.term=null),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.isInitializing=!1,this.hasUserTyped=!1}destroyPersistentSession(){this.destroyTerminal(),this.$api.post("/platform-tools/terminal/destroy-persistent-session",{}).subscribe({error:s=>console.error("Failed to destroy persistent session:",s)})}detachTerminal(){this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.term&&this.term.dispose(),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.isInitializing=!1}hasActiveSession(){return this.io&&this.io.socket&&this.io.socket.connected}checkBackendPersistentSession(){return c(this,null,function*(){try{return(yield this.$api.get("/platform-tools/terminal/has-persistent-session").toPromise()).hasPersistentSession}catch(s){return console.error("Failed to check backend persistent session:",s),!1}})}hasUserTypedInSession(){return this.hasUserTyped}isTerminalReady(){return this.term&&!this.isInitializing}reconnectTerminal(s,e={},r){if(this.isInitializing)return!1;this.isInitializing=!0,this.elementResize=r,this.io&&this.io.socket&&this.io.socket.connected?(this.term=new m.Terminal(e),this.fitAddon=new d.FitAddon,this.webLinksAddon=new l.WebLinksAddon,setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.socket.removeAllListeners("stdout"),this.io.socket.removeAllListeners("process-exit"),this.io.socket.on("stdout",i=>{this.term.write(i)}),this.io.socket.on("process-exit",()=>{this.startSession()}),this.dataDisposable&&this.dataDisposable.dispose(),this.dataDisposable=this.term.onData(i=>{this.hasUserTyped=!0,this.io.socket.emit("stdin",i)}),this.term.onResize(i=>{this.resize.next(i)}),this.resize.pipe(t(500)).subscribe(i=>{this.io.socket.emit("resize",i)}),this.elementResize&&this.elementResize.pipe(t(100)).subscribe({next:()=>{this.fitAddon.fit()}}),this.io.socket.emit("start-session",{cols:this.term.cols,rows:this.term.rows}),this.isInitializing=!1):this.startTerminal(s,e,r)}startTerminal(s,e={},r){return this.isInitializing?!1:(this.isInitializing=!0,this.elementResize=r,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new m.Terminal(e),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new d.FitAddon,this.webLinksAddon=new l.WebLinksAddon,this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(t(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
1
+ import{a as z,b,c as k}from"./chunk-5R6IGZK6.js";import{a as u}from"./chunk-XBI2X6IL.js";import{q as f}from"./chunk-D5B32ONS.js";import{M as t,ea as p,g as n,h as c,ja as a,n as h}from"./chunk-MVR4POOR.js";var d=n(z(),1),l=n(b(),1),m=n(k(),1);var v=(()=>{class o{$ws=a(u);$api=a(f);io;fitAddon;webLinksAddon;resize;elementResize;dataDisposable=null;isInitializing=!1;hasUserTyped=!1;term;destroyTerminal(){this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.io&&this.io.end(),this.term&&(this.term.dispose(),this.term=null),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.isInitializing=!1,this.hasUserTyped=!1}destroyPersistentSession(){this.destroyTerminal(),this.$api.post("/platform-tools/terminal/destroy-persistent-session",{}).subscribe({error:s=>console.error("Failed to destroy persistent session:",s)})}detachTerminal(){this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.term&&this.term.dispose(),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.isInitializing=!1}hasActiveSession(){return this.io&&this.io.socket&&this.io.socket.connected}checkBackendPersistentSession(){return c(this,null,function*(){try{return(yield this.$api.get("/platform-tools/terminal/has-persistent-session").toPromise()).hasPersistentSession}catch(s){return console.error("Failed to check backend persistent session:",s),!1}})}hasUserTypedInSession(){return this.hasUserTyped}isTerminalReady(){return this.term&&!this.isInitializing}reconnectTerminal(s,e={},r){if(this.isInitializing)return!1;this.isInitializing=!0,this.elementResize=r,this.io&&this.io.socket&&this.io.socket.connected?(this.term=new m.Terminal(e),this.fitAddon=new d.FitAddon,this.webLinksAddon=new l.WebLinksAddon,setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.socket.removeAllListeners("stdout"),this.io.socket.removeAllListeners("process-exit"),this.io.socket.on("stdout",i=>{this.term.write(i)}),this.io.socket.on("process-exit",()=>{this.startSession()}),this.dataDisposable&&this.dataDisposable.dispose(),this.dataDisposable=this.term.onData(i=>{this.hasUserTyped=!0,this.io.socket.emit("stdin",i)}),this.term.onResize(i=>{this.resize.next(i)}),this.resize.pipe(t(500)).subscribe(i=>{this.io.socket.emit("resize",i)}),this.elementResize&&this.elementResize.pipe(t(100)).subscribe({next:()=>{this.fitAddon.fit()}}),this.io.socket.emit("start-session",{cols:this.term.cols,rows:this.term.rows}),this.isInitializing=!1):this.startTerminal(s,e,r)}startTerminal(s,e={},r){return this.isInitializing?!1:(this.isInitializing=!0,this.elementResize=r,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new m.Terminal(e),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new d.FitAddon,this.webLinksAddon=new l.WebLinksAddon,this.resize=new h,this.term.open(s.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(t(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
2
2
  \r
3
3
  \rTerminal disconnected. Is the server running?
4
4
  \r