homebridge-config-ui-x 5.0.0-beta.11 → 5.0.0-beta.111

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 (325) hide show
  1. package/CHANGELOG.md +526 -31
  2. package/CONTRIBUTING.md +5 -4
  3. package/LICENSE +1 -1
  4. package/config.schema.json +55 -252
  5. package/dist/bin/hb-service.d.ts +2 -2
  6. package/dist/bin/hb-service.js +52 -51
  7. package/dist/bin/hb-service.js.map +1 -1
  8. package/dist/bin/platforms/darwin.js +3 -11
  9. package/dist/bin/platforms/darwin.js.map +1 -1
  10. package/dist/bin/platforms/win32.js +4 -2
  11. package/dist/bin/platforms/win32.js.map +1 -1
  12. package/dist/bin/standalone.js +1 -0
  13. package/dist/bin/standalone.js.map +1 -1
  14. package/dist/core/auth/auth.controller.d.ts +35 -3
  15. package/dist/core/auth/auth.controller.js.map +1 -1
  16. package/dist/core/auth/auth.module.js +1 -1
  17. package/dist/core/auth/auth.module.js.map +1 -1
  18. package/dist/core/auth/auth.service.js +10 -10
  19. package/dist/core/auth/auth.service.js.map +1 -1
  20. package/dist/core/auth/jwt.strategy.d.ts +3 -1
  21. package/dist/core/config/config.service.d.ts +50 -11
  22. package/dist/core/config/config.service.js +59 -20
  23. package/dist/core/config/config.service.js.map +1 -1
  24. package/dist/core/config/config.startup.js +2 -2
  25. package/dist/core/config/config.startup.js.map +1 -1
  26. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +3 -3
  27. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  28. package/dist/index.js +6 -77
  29. package/dist/index.js.map +1 -1
  30. package/dist/main.js +3 -1
  31. package/dist/main.js.map +1 -1
  32. package/dist/modules/accessories/accessories.controller.js +5 -5
  33. package/dist/modules/accessories/accessories.controller.js.map +1 -1
  34. package/dist/modules/accessories/accessories.service.js +8 -7
  35. package/dist/modules/accessories/accessories.service.js.map +1 -1
  36. package/dist/modules/backup/backup.controller.d.ts +1 -0
  37. package/dist/modules/backup/backup.controller.js +18 -7
  38. package/dist/modules/backup/backup.controller.js.map +1 -1
  39. package/dist/modules/backup/backup.service.d.ts +1 -0
  40. package/dist/modules/backup/backup.service.js +37 -83
  41. package/dist/modules/backup/backup.service.js.map +1 -1
  42. package/dist/modules/child-bridges/child-bridges.service.js +0 -7
  43. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  44. package/dist/modules/config-editor/config-editor.controller.d.ts +7 -1
  45. package/dist/modules/config-editor/config-editor.controller.js +36 -8
  46. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  47. package/dist/modules/config-editor/config-editor.service.d.ts +5 -1
  48. package/dist/modules/config-editor/config-editor.service.js +133 -69
  49. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  50. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.d.ts +1 -1
  51. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +13 -11
  52. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  53. package/dist/modules/log/log.gateway.d.ts +2 -1
  54. package/dist/modules/log/log.gateway.js.map +1 -1
  55. package/dist/modules/log/log.service.js +3 -3
  56. package/dist/modules/log/log.service.js.map +1 -1
  57. package/dist/modules/platform-tools/docker/docker.controller.js +3 -3
  58. package/dist/modules/platform-tools/docker/docker.controller.js.map +1 -1
  59. package/dist/modules/platform-tools/docker/docker.service.js +1 -1
  60. package/dist/modules/platform-tools/docker/docker.service.js.map +1 -1
  61. package/dist/modules/platform-tools/hb-service/hb-service.controller.js +3 -3
  62. package/dist/modules/platform-tools/hb-service/hb-service.controller.js.map +1 -1
  63. package/dist/modules/platform-tools/hb-service/hb-service.service.js +6 -6
  64. package/dist/modules/platform-tools/hb-service/hb-service.service.js.map +1 -1
  65. package/dist/modules/platform-tools/linux/linux.controller.js +2 -2
  66. package/dist/modules/platform-tools/linux/linux.controller.js.map +1 -1
  67. package/dist/modules/platform-tools/linux/linux.service.js +2 -2
  68. package/dist/modules/platform-tools/linux/linux.service.js.map +1 -1
  69. package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +2 -1
  70. package/dist/modules/platform-tools/terminal/terminal.gateway.js.map +1 -1
  71. package/dist/modules/platform-tools/terminal/terminal.service.js +2 -2
  72. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  73. package/dist/modules/plugins/plugins.controller.d.ts +2 -0
  74. package/dist/modules/plugins/plugins.controller.js +5 -5
  75. package/dist/modules/plugins/plugins.controller.js.map +1 -1
  76. package/dist/modules/plugins/plugins.service.d.ts +10 -1
  77. package/dist/modules/plugins/plugins.service.js +287 -168
  78. package/dist/modules/plugins/plugins.service.js.map +1 -1
  79. package/dist/modules/server/server.controller.d.ts +33 -3
  80. package/dist/modules/server/server.controller.js +162 -20
  81. package/dist/modules/server/server.controller.js.map +1 -1
  82. package/dist/modules/server/server.service.d.ts +35 -6
  83. package/dist/modules/server/server.service.js +288 -66
  84. package/dist/modules/server/server.service.js.map +1 -1
  85. package/dist/modules/status/status.controller.d.ts +0 -1
  86. package/dist/modules/status/status.controller.js +3 -4
  87. package/dist/modules/status/status.controller.js.map +1 -1
  88. package/dist/modules/status/status.gateway.d.ts +1 -1
  89. package/dist/modules/status/status.service.d.ts +1 -1
  90. package/dist/modules/status/status.service.js +34 -41
  91. package/dist/modules/status/status.service.js.map +1 -1
  92. package/dist/modules/users/users.controller.js +7 -7
  93. package/dist/modules/users/users.controller.js.map +1 -1
  94. package/dist/self-check.js +6 -6
  95. package/dist/self-check.js.map +1 -1
  96. package/package.json +50 -43
  97. package/public/3rdpartylicenses.txt +246 -136
  98. package/public/assets/hap-icons/air-purifier.svg +50 -0
  99. package/public/assets/hap-icons/air-quality-sensor.svg +25 -0
  100. package/public/assets/hap-icons/carbon-dioxide-sensor.svg +72 -0
  101. package/public/assets/hap-icons/carbon-monoxide-sensor.svg +72 -0
  102. package/public/assets/hap-icons/contact-sensor-closed.svg +36 -0
  103. package/public/assets/hap-icons/contact-sensor-open.svg +81 -0
  104. package/public/assets/hap-icons/door-closed.svg +32 -2
  105. package/public/assets/hap-icons/door-open.svg +48 -2
  106. package/public/assets/hap-icons/fan-off.svg +24 -13
  107. package/public/assets/hap-icons/fan-on.svg +24 -13
  108. package/public/assets/hap-icons/filter-maintenance.svg +26 -0
  109. package/public/assets/hap-icons/garage-door.svg +25 -0
  110. package/public/assets/hap-icons/humidity-sensor.svg +25 -0
  111. package/public/assets/hap-icons/irrigation-system.svg +47 -18
  112. package/public/assets/hap-icons/leak-sensor.svg +53 -0
  113. package/public/assets/hap-icons/light-bulb.svg +25 -0
  114. package/public/assets/hap-icons/light-sensor.svg +50 -0
  115. package/public/assets/hap-icons/lock-locked.svg +24 -13
  116. package/public/assets/hap-icons/lock-unlocked.svg +24 -13
  117. package/public/assets/hap-icons/motion-sensor.svg +101 -0
  118. package/public/assets/hap-icons/occupancy-sensor.svg +98 -0
  119. package/public/assets/hap-icons/outlet.svg +24 -13
  120. package/public/assets/hap-icons/security-system-active.svg +103 -0
  121. package/public/assets/hap-icons/security-system-off.svg +69 -0
  122. package/public/assets/hap-icons/security-system-triggered.svg +103 -0
  123. package/public/assets/hap-icons/smoke-sensor.svg +59 -0
  124. package/public/assets/hap-icons/speaker.svg +29 -13
  125. package/public/assets/hap-icons/stateless-programmable-switch.svg +52 -0
  126. package/public/assets/hap-icons/switch.svg +24 -13
  127. package/public/assets/hap-icons/television.svg +15 -4
  128. package/public/assets/hap-icons/temperature.svg +24 -13
  129. package/public/assets/hap-icons/unknown.svg +24 -13
  130. package/public/assets/hap-icons/valve-faucet.svg +21 -0
  131. package/public/assets/hap-icons/valve-generic.svg +27 -16
  132. package/public/assets/hap-icons/valve-irrigation.svg +37 -21
  133. package/public/assets/hap-icons/valve-shower-head.svg +52 -0
  134. package/public/assets/hap-icons/window-closed.svg +85 -2
  135. package/public/assets/hap-icons/window-covering-closed.svg +49 -0
  136. package/public/assets/hap-icons/window-covering-open.svg +44 -0
  137. package/public/assets/hap-icons/window-open.svg +136 -2
  138. package/public/assets/homebridge-color-round.svg +36 -1
  139. package/public/assets/homebridge-logo.svg +11 -1
  140. package/public/assets/mask-icon.svg +5 -1
  141. package/public/assets/plugin-ui-utils/ui.js +3 -0
  142. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  143. package/public/chunk-2B6Z42D5.js +2 -0
  144. package/public/chunk-3KEVK4CU.js +1 -0
  145. package/public/{chunk-T5R3UG6Z.js → chunk-3TXUNOXT.js} +1 -1
  146. package/public/chunk-4G7W6MRL.js +1 -0
  147. package/public/chunk-4N7ZDOUO.js +1 -0
  148. package/public/chunk-5CIDMZGS.js +1 -0
  149. package/public/chunk-66VSEU25.js +5 -0
  150. package/public/chunk-7DSQ7XWE.js +1 -0
  151. package/public/{chunk-QE7DO6J3.js → chunk-7EQ4BJZB.js} +2 -2
  152. package/public/chunk-7GGXZ7OU.js +1 -0
  153. package/public/chunk-7QRMEOTO.js +8 -0
  154. package/public/chunk-7RKBTRXY.js +1 -0
  155. package/public/chunk-ABBL3RO7.js +1 -0
  156. package/public/chunk-BCMP25TC.js +1 -0
  157. package/public/chunk-BP5LQRNS.js +4 -0
  158. package/public/chunk-CF2ZN7LY.js +5 -0
  159. package/public/chunk-DSKSIOUV.js +1 -0
  160. package/public/chunk-EGCUYKRH.js +1 -0
  161. package/public/chunk-EL5XLLBH.js +1 -0
  162. package/public/chunk-EPA4YSLT.js +1 -0
  163. package/public/chunk-F3ERQJVG.js +1 -0
  164. package/public/{chunk-LM6S4A72.js → chunk-FFFA4Z4P.js} +1 -1
  165. package/public/chunk-FNE4UWIK.js +1 -0
  166. package/public/chunk-FXYQSGFB.js +1 -0
  167. package/public/{chunk-7EUQWCP5.js → chunk-GDFV4BMO.js} +2 -2
  168. package/public/chunk-GW2DVJRQ.js +1 -0
  169. package/public/chunk-HTQJEJW6.js +23 -0
  170. package/public/chunk-IN7NZAFJ.js +1 -0
  171. package/public/chunk-J6YDFLQQ.js +1 -0
  172. package/public/chunk-K6X6GPJI.js +1 -0
  173. package/public/chunk-KKNYWOLQ.js +20 -0
  174. package/public/chunk-L3KYADWL.js +1 -0
  175. package/public/chunk-LUNR4YXI.js +1 -0
  176. package/public/chunk-LXXELGX4.js +1 -0
  177. package/public/chunk-LZTR2JMZ.js +1 -0
  178. package/public/{chunk-JZZQRLNW.js → chunk-NGNQPAAK.js} +1 -1
  179. package/public/chunk-NH3ELE5E.js +4 -0
  180. package/public/chunk-OKTBHUEL.js +1 -0
  181. package/public/{chunk-5M6KOARX.js → chunk-ORZLF5HZ.js} +1 -1
  182. package/public/chunk-Q3UFAHWJ.js +1 -0
  183. package/public/{chunk-WNWWUCCZ.js → chunk-QDCKP2LU.js} +3 -3
  184. package/public/chunk-QEBH3NJ4.js +1 -0
  185. package/public/chunk-QTCNRXCY.js +29 -0
  186. package/public/chunk-R33U7ULB.js +1 -0
  187. package/public/chunk-RMY3PS3V.js +1 -0
  188. package/public/chunk-S5TTYLQD.js +1 -0
  189. package/public/chunk-SKZUTSHE.js +7 -0
  190. package/public/chunk-SRP6QX5M.js +2 -0
  191. package/public/chunk-SSMWAG33.js +1 -0
  192. package/public/chunk-T252YJXA.js +1 -0
  193. package/public/chunk-TFSYGCLN.js +1 -0
  194. package/public/chunk-TKTM3Z2T.js +3 -0
  195. package/public/chunk-TQNKRJOX.js +1 -0
  196. package/public/chunk-U3DAE6KH.js +1 -0
  197. package/public/chunk-UD6SVFW2.js +7 -0
  198. package/public/chunk-UO2HQVMO.js +1 -0
  199. package/public/{chunk-3RNRIJ74.js → chunk-UQYCFN3T.js} +11 -11
  200. package/public/chunk-V6SZXPWT.js +1 -0
  201. package/public/chunk-VGEV4FQW.js +1 -0
  202. package/public/{chunk-EA5J2VEJ.js → chunk-X2SHRXXY.js} +1 -1
  203. package/public/chunk-X7PVYZAE.js +1 -0
  204. package/public/{chunk-3TUBDO76.js → chunk-XBWIDIPO.js} +1 -1
  205. package/public/chunk-ZDJGHFIU.js +12 -0
  206. package/public/chunk-ZNACRWKA.js +1 -0
  207. package/public/chunk-ZVUGVJDR.js +1 -0
  208. package/public/index.html +2 -2
  209. package/public/main-YVALKUM3.js +1 -0
  210. package/public/media/fa-brands-400-Q3XCMWHQ.woff2 +0 -0
  211. package/public/media/{fa-brands-400-KOKGDU7E.ttf → fa-brands-400-R2XQZCET.ttf} +0 -0
  212. package/public/media/fa-regular-400-QSNYFYRT.woff2 +0 -0
  213. package/public/media/{fa-regular-400-IPMAEX5Y.ttf → fa-regular-400-XUOPSR7E.ttf} +0 -0
  214. package/public/media/fa-solid-900-5ZUYHGA7.woff2 +0 -0
  215. package/public/media/{fa-solid-900-SRFFQLRM.ttf → fa-solid-900-PJNKLK6W.ttf} +0 -0
  216. package/public/polyfills-WE4HA5DL.js +2 -0
  217. package/public/styles-YDIK2EDN.css +1 -0
  218. package/scripts/upgrade-install-plugin.sh +1 -1
  219. package/public/assets/hap-icons/airpurifier.svg +0 -17
  220. package/public/assets/hap-icons/airquality.svg +0 -14
  221. package/public/assets/hap-icons/contactsensor-closed.svg +0 -3
  222. package/public/assets/hap-icons/contactsensor-open.svg +0 -3
  223. package/public/assets/hap-icons/garagedoor.svg +0 -14
  224. package/public/assets/hap-icons/humidity.svg +0 -14
  225. package/public/assets/hap-icons/leaksensor.svg +0 -3
  226. package/public/assets/hap-icons/light.svg +0 -31
  227. package/public/assets/hap-icons/lightbulb.svg +0 -14
  228. package/public/assets/hap-icons/motionsensor.svg +0 -3
  229. package/public/assets/hap-icons/occupancysensor.svg +0 -3
  230. package/public/assets/hap-icons/securitysystem-active.svg +0 -3
  231. package/public/assets/hap-icons/securitysystem-off.svg +0 -3
  232. package/public/assets/hap-icons/smokesensor.svg +0 -13
  233. package/public/assets/hap-icons/statelessprogrammableswitch.svg +0 -3
  234. package/public/assets/hap-icons/windowcovering-closed.svg +0 -53
  235. package/public/assets/hap-icons/windowcovering-open.svg +0 -48
  236. package/public/chunk-23E7VL2P.js +0 -1
  237. package/public/chunk-33LJ3YIR.js +0 -1
  238. package/public/chunk-34W4KCBV.js +0 -1
  239. package/public/chunk-3IX3CLER.js +0 -1
  240. package/public/chunk-3UBYWHRR.js +0 -1
  241. package/public/chunk-52HTAWOT.js +0 -1
  242. package/public/chunk-535DPMCW.js +0 -1
  243. package/public/chunk-56BOPXKC.js +0 -1
  244. package/public/chunk-6IAVZXBU.js +0 -20
  245. package/public/chunk-6T27YQ2D.js +0 -1
  246. package/public/chunk-6TCHCTXZ.js +0 -1
  247. package/public/chunk-7WLTVXXL.js +0 -1
  248. package/public/chunk-AS2OC4NZ.js +0 -1
  249. package/public/chunk-BKUGARB4.js +0 -7
  250. package/public/chunk-BLUX2UMQ.js +0 -1
  251. package/public/chunk-BPMSJ2VF.js +0 -1
  252. package/public/chunk-BW6NZ6VD.js +0 -6
  253. package/public/chunk-C4ENUEJD.js +0 -1
  254. package/public/chunk-C536FAQ7.js +0 -5
  255. package/public/chunk-CCUID66K.js +0 -1
  256. package/public/chunk-CL4YMJZW.js +0 -1
  257. package/public/chunk-D7HF5OGR.js +0 -1
  258. package/public/chunk-DD3R2DFS.js +0 -1
  259. package/public/chunk-DHAYGFW2.js +0 -1
  260. package/public/chunk-DVTSZQXS.js +0 -1
  261. package/public/chunk-EIBIFGLP.js +0 -1
  262. package/public/chunk-F4CW25FV.js +0 -1
  263. package/public/chunk-HL7XXKHI.js +0 -1
  264. package/public/chunk-HSJSWZHD.js +0 -1
  265. package/public/chunk-HUV3VJSE.js +0 -1
  266. package/public/chunk-INJABMER.js +0 -23
  267. package/public/chunk-IU27XSWW.js +0 -1
  268. package/public/chunk-JVAHZDVJ.js +0 -1
  269. package/public/chunk-KQJ7ONUG.js +0 -1
  270. package/public/chunk-KS3FIR4R.js +0 -1
  271. package/public/chunk-KXWJIWYD.js +0 -1
  272. package/public/chunk-LDGB6S2N.js +0 -1
  273. package/public/chunk-M45D5CCT.js +0 -1
  274. package/public/chunk-MGBLPFXT.js +0 -1
  275. package/public/chunk-MIMQGXTO.js +0 -1
  276. package/public/chunk-NKN62APE.js +0 -1
  277. package/public/chunk-NW6AFAD7.js +0 -1
  278. package/public/chunk-NZNNTHFQ.js +0 -1
  279. package/public/chunk-ORPWYWCL.js +0 -5
  280. package/public/chunk-Q2YQ4J5L.js +0 -1
  281. package/public/chunk-QHPDGSZ6.js +0 -1
  282. package/public/chunk-QXHB5Q7H.js +0 -1
  283. package/public/chunk-R2QZPN2M.js +0 -1
  284. package/public/chunk-RDOXIKK6.js +0 -1
  285. package/public/chunk-RHBPQJLQ.js +0 -1
  286. package/public/chunk-RSGTDKO6.js +0 -1
  287. package/public/chunk-RTVXC3Y7.js +0 -1
  288. package/public/chunk-SFK7OSIU.js +0 -1
  289. package/public/chunk-SFLEKDGL.js +0 -1
  290. package/public/chunk-TB7FJ5XX.js +0 -1
  291. package/public/chunk-TCSXGQNF.js +0 -1
  292. package/public/chunk-TRTZHJGG.js +0 -1
  293. package/public/chunk-TWWDGSRW.js +0 -1
  294. package/public/chunk-TXOB7R5K.js +0 -7
  295. package/public/chunk-U2WFZQTC.js +0 -32
  296. package/public/chunk-UG5DK2RQ.js +0 -2
  297. package/public/chunk-UPYKPJUD.js +0 -4
  298. package/public/chunk-UVNEKL77.js +0 -1
  299. package/public/chunk-VHLIKZYD.js +0 -1
  300. package/public/chunk-WHJOLAED.js +0 -1
  301. package/public/chunk-WHJSVGC7.js +0 -1
  302. package/public/chunk-Y62756RF.js +0 -1
  303. package/public/chunk-YA4WNIBX.js +0 -1
  304. package/public/chunk-ZGUIFA2B.js +0 -1
  305. package/public/chunk-ZLOETFRA.js +0 -8
  306. package/public/chunk-ZT23DWNL.js +0 -1
  307. package/public/main-TLKQDE7H.js +0 -1
  308. package/public/media/01-RQ3S2L53.png +0 -0
  309. package/public/media/02-VNCG2I2A.png +0 -0
  310. package/public/media/03-HI42L4ZG.png +0 -0
  311. package/public/media/04-FJLL55LZ.png +0 -0
  312. package/public/media/05-V3EO6SPT.png +0 -0
  313. package/public/media/06-EOJZCQZN.png +0 -0
  314. package/public/media/07-KMKB5PBD.png +0 -0
  315. package/public/media/08-UQJRF6B2.png +0 -0
  316. package/public/media/09-2DJQFRHH.png +0 -0
  317. package/public/media/arrow_left-CQT7FZM7.svg +0 -4
  318. package/public/media/arrow_right-SBUDRR2G.svg +0 -4
  319. package/public/media/fa-brands-400-6PJPV6JM.woff2 +0 -0
  320. package/public/media/fa-regular-400-OHB6J4OK.woff2 +0 -0
  321. package/public/media/fa-solid-900-ABTK6BNK.woff2 +0 -0
  322. package/public/polyfills-C6JHVXJJ.js +0 -2
  323. package/public/scripts-6GVLYD7F.js +0 -62
  324. package/public/styles-EG5MFQEM.css +0 -1
  325. /package/public/assets/{bootstrap-4 → bootstrap-5}/cssframework/assets.json +0 -0
@@ -1,20 +0,0 @@
1
- import{a as ee}from"./chunk-EA5J2VEJ.js";import{a as Q,b as ne}from"./chunk-3RNRIJ74.js";import{a as X,b as Z}from"./chunk-7EUQWCP5.js";import{a as G}from"./chunk-JZZQRLNW.js";import{m as U,n as W,o as Y}from"./chunk-ORPWYWCL.js";import{c as q,e as z,l as J,y as K}from"./chunk-QHPDGSZ6.js";import{b as F}from"./chunk-NZNNTHFQ.js";import{b as N}from"./chunk-RTVXC3Y7.js";import{b as k,j as V}from"./chunk-C4ENUEJD.js";import{a as T,b as M}from"./chunk-3IX3CLER.js";import{$b as C,Bc as l,Cc as c,Dc as O,Kb as w,Lb as y,Mb as v,Rb as g,Tb as I,Ub as H,Vb as j,Wb as r,Xb as a,Yb as _,cc as h,dc as d,g as oe,h as S,ib as n,kd as L,na as m,nc as b,oc as x,pb as D,pc as $,rb as E,sc as P,tc as R,uc as B,w as A,xa as p,ya as f}from"./chunk-TXOB7R5K.js";function ae(o,u){o&1&&(r(0,"div",6),_(1,"i",14),a())}function se(o,u){if(o&1){let e=C();r(0,"tr")(1,"td",15),b(2),l(3,"date"),a(),r(4,"td",16)(5,"a",17),h("click",function(){let t=p(e).$implicit,s=d(2);return f(s.restore(t.id))}),b(6),l(7,"translate"),_(8,"i",18),a()()()}if(o&2){let e=u.$implicit;n(2),x(O(3,2,e.timestamp,"medium")),n(4),$(" ",c(7,5,"config.restore.copy_to_editor")," ")}}function le(o,u){if(o&1&&(r(0,"table",7)(1,"tbody"),H(2,se,9,7,"tr",null,I),a()()),o&2){let e=d();n(2),j(e.backupList)}}function de(o,u){o&1&&(r(0,"div")(1,"h3",11),b(2),l(3,"translate"),a()()),o&2&&(n(2),x(c(3,1,"config.restore.no_backups")))}function ce(o,u){if(o&1){let e=C();r(0,"button",19),l(1,"translate"),h("click",function(){p(e);let t=d();return f(t.deleteAllBackups())}),b(2),l(3,"translate"),a()}o&2&&(y("aria-label",c(1,2,"form.button_remove")),n(2),$(" ",c(3,4,"form.button_remove")," "))}var te=(()=>{class o{$activeModal=m(U);$api=m(k);$toastr=m(V);$translate=m(T);loading=!0;backupList=[];ngOnInit(){this.$api.get("/config-editor/backups").subscribe({next:e=>{this.loading=!1,this.backupList=e},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}restore(e){return this.$activeModal.close(e)}deleteAllBackups(){return this.$api.delete("/config-editor/backups").subscribe({next:()=>{this.$activeModal.dismiss(),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success"))},error:e=>{console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=E({type:o,selectors:[["ng-component"]],decls:22,vars:16,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center","primary-text"],[1,"table","table-borderless","table-hover","table-sm"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button",1,"btn","btn-danger","mr-auto"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"w-100"],["nowrap",""],[1,"card-link",3,"click"],[1,"fas","fa-fw","fa-arrow-right"],["type","button",1,"btn","btn-danger","mr-auto",3,"click"]],template:function(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),b(3),l(4,"translate"),a(),r(5,"button",3),l(6,"translate"),h("click",function(){return t.$activeModal.dismiss("Dismiss")}),r(7,"span",4),b(8,"\xD7"),a()()(),r(9,"div",5),w(10,ae,2,0,"div",6)(11,le,4,0,"table",7)(12,de,4,3,"div"),a(),r(13,"div",8)(14,"div",9)(15,"button",10),l(16,"translate"),h("click",function(){return t.$activeModal.dismiss("Dismiss")}),b(17),l(18,"translate"),a()(),_(19,"div",11),r(20,"div",12),w(21,ce,4,6,"button",13),a()()()),i&2&&(n(3),x(c(4,8,"config.restore.title_restore_homebridge_backup")),n(2),y("aria-label",c(6,10,"form.button_close")),n(5),g(t.loading?10:-1),n(),g(!t.loading&&t.backupList&&t.backupList.length?11:-1),n(),g(!t.loading&&(!t.backupList||!t.backupList.length)?12:-1),n(3),y("aria-label",c(16,12,"form.button_close")),n(2),$(" ",c(18,14,"form.button_close")," "),n(4),g(!t.loading&&t.backupList.length?21:-1))},dependencies:[L,M],encapsulation:2})}return o})();var ie=oe(ne(),1);function me(o,u){if(o&1){let e=C();r(0,"button",13),l(1,"translate"),l(2,"translate"),h("click",function(){p(e);let t=d();return f(t.onExportConfig())}),_(3,"i",14),a()}o&2&&(v("ngbTooltip",c(1,2,"form.button_download")),y("aria-label",c(2,4,"form.button_download")))}function pe(o,u){if(o&1){let e=C();r(0,"button",15),l(1,"translate"),l(2,"translate"),h("click",function(){p(e);let t=d();return f(t.onCancelRestore())}),_(3,"i",16),a()}if(o&2){let e=d();v("disabled",e.saveInProgress)("ngbTooltip",c(1,3,"form.button_cancel")),y("aria-label",c(2,5,"form.button_cancel"))}}function fe(o,u){if(o&1){let e=C();r(0,"button",13),l(1,"translate"),l(2,"translate"),h("click",function(){p(e);let t=d();return f(t.onRestore())}),_(3,"i",17),a()}o&2&&(v("ngbTooltip",c(1,2,"form.button_restore")),y("aria-label",c(2,4,"form.button_restore")))}function ge(o,u){o&1&&_(0,"i",8)}function ue(o,u){o&1&&_(0,"i",9)}function he(o,u){if(o&1){let e=C();r(0,"ngx-monaco-editor",18),h("onInit",function(t){p(e);let s=d();return f(s.onEditorInit(t))})("keydown.control.s",function(t){p(e);let s=d();return t.preventDefault(),f(s.onSave())})("keydown.meta.s",function(t){p(e);let s=d();return t.preventDefault(),f(s.onSave())}),a()}if(o&2){let e=d();v("options",e.editorOptions)("model",e.monacoEditorModel)}}function be(o,u){if(o&1){let e=C();r(0,"ngx-monaco-diff-editor",19),h("onInit",function(t){p(e);let s=d();return f(s.onInitDiffEditor(t))})("keydown.control.s",function(t){p(e);let s=d();return t.preventDefault(),f(s.onSave())})("keydown.meta.s",function(t){p(e);let s=d();return t.preventDefault(),f(s.onSave())}),a()}if(o&2){let e=d();v("options",e.editorOptions)("originalModel",e.monacoEditorModel)("modifiedModel",e.monacoEditorModel)}}function _e(o,u){if(o&1){let e=C();r(0,"textarea",20),B("ngModelChange",function(t){p(e);let s=d();return R(s.homebridgeConfig,t)||(s.homebridgeConfig=t),f(t)}),b(1," "),a()}if(o&2){let e=d();P("ngModel",e.homebridgeConfig)}}var qe=(()=>{class o{$api=m(k);$md=m(G);$modal=m(W);$monacoEditor=m(ee);$route=m(F);$renderer=m(D);$settings=m(N);$toastr=m(V);$translate=m(T);homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;editorDecorations=[];lastHeight;visualViewPortEventCallback;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(i=>{this.homebridgeConfig=i.config}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>{this.setMonacoEditorModel()}})}onEditorInit(e){window.editor=e,this.monacoEditor=e,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(e){this.monacoEditor=e.modifiedEditor,e.getModel().original.setValue(this.originalConfig),e.getModel().modified.setValue(this.homebridgeConfig),window.editor=e}onSave(){return S(this,null,function*(){if(!this.saveInProgress){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress=!0;try{if(!this.isMobile){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let i=window.monaco.editor.getModelMarkers({owner:"json"});for(let t of i)if(t.message==="Duplicate object key"){this.saveInProgress=!1,this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig=this.monacoEditor.getModel().getValue()}let e=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(e,null,4),typeof e.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(e.bridge.username)?e.accessories&&!Array.isArray(e.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&!Array.isArray(e.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&Array.isArray(e.platforms)&&!this.validateSection(e.platforms,"platform")||e.accessories&&Array.isArray(e.accessories)&&!this.validateSection(e.accessories,"accessory")||e.plugins&&Array.isArray(e.plugins)&&!this.validatePlugins(e.plugins,"plugins")||e.disabledPlugins&&Array.isArray(e.disabledPlugins)&&!this.validatePlugins(e.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(e),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let i=ie.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),i}}saveConfig(e){return S(this,null,function*(){try{let i=yield A(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(i,null,4),this.$modal.open(Q,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}onRestore(){this.$modal.open(te,{size:"lg",backdrop:"static"}).result.then(e=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig),this.$api.get(`/config-editor/backups/${e}`).subscribe({next:i=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:i=>{console.error(i),this.$toastr.error(i.error.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onExportConfig(){let e=`data:text/json;charset=utf-8,${encodeURIComponent(this.homebridgeConfig)}`,i=document.createElement("a");i.setAttribute("href",e),i.setAttribute("download","config.json"),document.body.appendChild(i),i.click(),i.remove()}onCancelRestore(){this.homebridgeConfig=this.originalConfig,this.originalConfig=""}validateSection(e,i){for(let t of e){if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(!t[i])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(typeof t[i]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1}return!0}validatePlugins(e,i){for(let t of e)if(typeof t!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:i}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
2
- `).map(i=>` ${i}`).join(`
3
- `),setTimeout(()=>{let i=this.monacoEditor.getModel().findMatches(e);if(i.length){let t=i[0].range,s=new monaco.Range(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:s,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let e=monaco.Uri.parse("a://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[e.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:{name:{type:"string",description:`The Homebridge instance name.
4
- This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
5
- You should change this pin if you need to re-pair your instance with HomeKit.
6
- Example: 0E:89:49:64:91:86`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",description:`The port Homebridge listens on.
7
- If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
8
- This is used when pairing Homebridge to HomeKit.
9
- Example: 630-27-655`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",description:"The bridge manufacturer to be displayed in HomeKit"},firmwareRevision:{type:"string",description:"The bridge firmware version to be displayed in HomeKit"},model:{type:"string",description:"The bridge model to be displayed in HomeKit"},bind:{description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
10
-
11
- Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:"Network Interface name that Homebridge should bind to."}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",properties:{interface:{type:"string",description:`The interface or IP address of the interface you want Homebridge to listen on. This is useful if your server has multiple interfaces.
12
-
13
- Depreciated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",description:"Set to `false` to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},plugins:{type:"array",description:"An array of plugins that should be selectively enabled. Remove this array to enable all plugins.",items:{type:"string",description:`The full plugin npm package name.
14
- Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
15
-
16
- Requires Homebridge v1.3 or later.`,items:{type:"string",description:`The full plugin npm package name.
17
- Example: homebridge-dummy`},default:[]},ports:{type:"object",description:"The range of ports that should be used for certain accessories like cameras and TVs",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534},end:{type:"number",default:52150,minimum:1025,maximum:65534}},default:{start:52100,end:52150}},platforms:{type:"array",description:`Any plugin that exposes a platform should have it's config entered in this array.
18
- Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],properties:{platform:{type:"string",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",description:"The name of the platform."}}},{type:"object",properties:{platform:{type:"string",description:`Homebridge UI platform name must be set to "config".
19
- Do Not Change!`,oneOf:[{enum:"config"}]},name:{type:"string",description:"The name used in the Homebridge log."}}}]}},accessories:{type:"array",description:`Any plugin that exposes an accessory should have it's config entered in this array.
20
- Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],properties:{accessory:{type:"string",description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",description:"The name of the accessory."}}}}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}ngOnDestroy(){let e=document.querySelector(".content");this.$renderer.removeStyle(e,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose()}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=E({type:o,selectors:[["ng-component"]],decls:18,vars:18,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-right"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0",3,"ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0",3,"disabled","ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","mr-0",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-floppy-disk"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0",3,"click","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-times"],[1,"fas","fa-fw","fa-history"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),b(4),l(5,"translate"),a()(),r(6,"div",4),w(7,me,4,6,"button",5)(8,pe,4,7,"button",6)(9,fe,4,6,"button",5),r(10,"button",7),l(11,"translate"),l(12,"translate"),h("click",function(){return t.onSave()}),w(13,ge,1,0,"i",8)(14,ue,1,0,"i",9),a()()(),w(15,he,1,2,"ngx-monaco-editor",10)(16,be,1,3,"ngx-monaco-diff-editor",11)(17,_e,2,1,"textarea",12),a()),i&2&&(n(4),x(c(5,12,"menu.config_json_editor")),n(3),g(t.originalConfig?-1:7),n(),g(t.originalConfig?8:-1),n(),g(t.originalConfig?-1:9),n(),v("disabled",t.saveInProgress)("ngbTooltip",c(11,14,"form.button_save")),y("aria-label",c(12,16,"form.button_save")),n(3),g(t.saveInProgress?-1:13),n(),g(t.saveInProgress?14:-1),n(),g(!t.isMobile&&!t.originalConfig?15:-1),n(),g(!t.isMobile&&t.originalConfig?16:-1),n(),g(t.isMobile?17:-1))},dependencies:[Y,X,Z,K,q,z,J,M],encapsulation:2})}return o})();export{qe as a};
@@ -1 +0,0 @@
1
- import{a as X}from"./chunk-Q2YQ4J5L.js";import{n as Q}from"./chunk-ORPWYWCL.js";import{c as D,d as C,e as G,f as j,g as H,j as F,m as A,p as q,q as L,y as K,z as J}from"./chunk-QHPDGSZ6.js";import{e as N}from"./chunk-NZNNTHFQ.js";import{c as W}from"./chunk-LM6S4A72.js";import{b as R}from"./chunk-RTVXC3Y7.js";import{a as z,b as B,j as O}from"./chunk-C4ENUEJD.js";import{l as M}from"./chunk-UG5DK2RQ.js";import{a as P,b as V}from"./chunk-3IX3CLER.js";import{$b as y,Bc as s,Cc as l,Kb as I,Mb as _,Rb as f,Wb as i,Xb as o,Yb as c,ad as E,cc as b,dc as m,h as w,ib as t,na as g,nc as a,oc as d,pc as v,rb as T,w as S,xa as x,xc as $,ya as h,yc as k}from"./chunk-TXOB7R5K.js";var U=(n,u)=>({"is-valid":n,"is-invalid":u}),Z=n=>({"button-loading":n});function ee(n,u){if(n&1){let e=y();i(0,"div",2),c(1,"img",3),i(2,"h3",4),a(3),s(4,"translate"),o(),i(5,"button",5),b("click",function(){x(e);let p=m();return h(p.onClickGettingStarted())}),a(6),s(7,"translate"),o(),i(8,"small",6)(9,"a",7),b("click",function(){x(e);let p=m();return h(p.onClickRestoreBackup())}),a(10),s(11,"translate"),o()()()}n&2&&(t(3),d(l(4,3,"setup.welcome_to_homebridge")),t(3),v(" ",l(7,5,"setup.button_get_started")," "),t(4),d(l(11,7,"setup_wizard_message_restore")))}function te(n,u){if(n&1){let e=y();i(0,"div",2),c(1,"img",8),i(2,"h3",4),a(3),s(4,"translate"),o(),i(5,"div",9)(6,"p"),a(7),s(8,"translate"),o(),i(9,"form",10),b("ngSubmit",function(){x(e);let p=m();return h(p.createFirstUser())}),i(10,"div",11),c(11,"i",12)(12,"input",13),i(13,"label",14),a(14),s(15,"translate"),o()(),i(16,"div",11),c(17,"i",15)(18,"input",16),i(19,"label",17),a(20),s(21,"translate"),o()(),i(22,"div",11),c(23,"i",15)(24,"input",18),i(25,"label",19),a(26),s(27,"translate"),o()(),i(28,"div",20)(29,"button",21),a(30),s(31,"translate"),c(32,"i",22),o()()()()()}if(n&2){let e=m();t(3),d(l(4,15,"setup.create_account")),t(4),d(l(8,17,"setup.create_account_reason")),t(2),_("formGroup",e.createUserForm),t(3),_("readonly",e.loading)("ngClass",k(27,U,e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.valid,e.createUserForm.controls.username.dirty&&e.createUserForm.controls.username.invalid)),t(2),d(l(15,19,"users.label_username")),t(4),_("readonly",e.loading)("ngClass",k(30,U,e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.valid,e.createUserForm.controls.password.dirty&&e.createUserForm.controls.password.errors)),t(2),d(l(21,21,"users.label_password")),t(4),_("readonly",e.loading)("ngClass",k(33,U,e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.valid,e.createUserForm.controls.passwordConfirm.dirty&&e.createUserForm.controls.passwordConfirm.errors)),t(2),d(l(27,23,"users.label_confirm_password")),t(3),_("disabled",e.createUserForm.invalid||e.loading)("ngClass",$(36,Z,e.loading)),t(),v(" ",l(31,25,"setup.create_account")," ")}}function ie(n,u){n&1&&(i(0,"span"),c(1,"i",29),a(2),s(3,"translate"),o()),n&2&&(t(2),v(" ",l(3,1,"backup.label_uploading")," "))}function ne(n,u){n&1&&(i(0,"span"),a(1),s(2,"translate"),o()),n&2&&(t(),d(l(2,1,"backup.button_restore_backup")))}function oe(n,u){if(n&1){let e=y();i(0,"div",2),c(1,"img",8),i(2,"h3",4),a(3),s(4,"translate"),o(),i(5,"p"),a(6),s(7,"translate"),o(),i(8,"div",23)(9,"input",24),b("change",function(p){x(e);let Y=m();return h(Y.handleRestoreFileInput(p.target.files))}),o(),i(10,"label",25),a(11),s(12,"translate"),o()(),i(13,"div",26)(14,"button",27),b("click",function(){x(e);let p=m();return h(p.onClickCancelRestore())}),a(15),s(16,"translate"),o(),i(17,"button",28),b("click",function(){x(e);let p=m();return h(p.onRestoreBackupClick())}),I(18,ie,4,3,"span")(19,ne,3,3,"span"),o()()()}if(n&2){let e=m();t(3),d(l(4,8,"form.button_restore")),t(3),d(l(7,10,"backup.restore_help_one")),t(5),v(" ",l(12,12,(e.selectedFile==null?null:e.selectedFile.name)||"backup.label_choose_backup_file_to_restore")," "),t(3),_("disabled",e.restoreUploadStarted),t(),v(" ",l(16,14,"form.button_cancel")," "),t(2),_("disabled",e.restoreUploading||!e.selectedFile),t(),f(e.restoreUploading?18:-1),t(),f(e.restoreUploading?-1:19)}}function re(n,u){n&1&&(i(0,"div",2),c(1,"img",8),i(2,"h3",4),a(3),s(4,"translate"),o(),i(5,"h1"),c(6,"i",29),o()()),n&2&&(t(3),d(l(4,1,"restart.title_restart")))}function ae(n,u){n&1&&(i(0,"div",2),c(1,"img",8),i(2,"h3",30),a(3),s(4,"translate"),o(),i(5,"p",31),a(6),s(7,"translate"),o(),i(8,"a",32),a(9),s(10,"translate"),o()()),n&2&&(t(3),d(l(4,3,"setup_wizard_message_complete_title")),t(3),d(l(7,5,"setup_wizard_message_complete_message")),t(3),d(l(10,7,"setup.open_dashboard")))}var ye=(()=>{class n{$api=g(B);$auth=g(W);$modal=g(Q);$settings=g(R);$title=g(M);$toastr=g(O);$translate=g(P);previousTitle;step="welcome";createUserForm=new H({username:new F("",[C.required]),password:new F("",[C.compose([C.required,C.minLength(4)])]),passwordConfirm:new F("",[C.required])},this.matchPassword);loading=!1;selectedFile;restoreUploading=!1;ngOnInit(){this.previousTitle=this.$title.getTitle(),this.$title.setTitle("Setup Homebridge")}matchPassword(e){let r=e.get("password").value,p=e.get("passwordConfirm").value;if(r!==p)e.get("passwordConfirm").setErrors({matchPassword:!0});else return null}ngOnDestroy(){this.$title.setTitle(this.previousTitle)}onClickGettingStarted(){this.step="create-account"}onClickRestoreBackup(){this.step="restore-backup"}onClickCancelRestore(){this.selectedFile=null,this.step="welcome"}createFirstUser(){this.loading=!0;let e=this.createUserForm.getRawValue();e.name=e.username,this.$api.post("/setup-wizard/create-first-user",e).subscribe({next:()=>w(this,null,function*(){this.$settings.env.setupWizardComplete=!0,yield this.$auth.login({username:e.username,password:e.password}),this.step="setup-complete"}),error:r=>{this.loading=!1,console.error(r),this.$toastr.error(r.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}handleRestoreFileInput(e){e.length?this.selectedFile=e[0]:delete this.selectedFile}onRestoreBackupClick(){this.restoreUploading=!0,this.uploadHomebridgeArchive()}uploadHomebridgeArchive(){return w(this,null,function*(){try{let e=yield S(this.$api.get("/setup-wizard/get-setup-wizard-token"));window.localStorage.setItem(z.jwt.tokenKey,e.access_token),this.$auth.token=e.access_token;let r=new FormData;r.append("restoreArchive",this.selectedFile,this.selectedFile.name),yield S(this.$api.post("/backup/restore",r)),this.openRestoreModal(),this.restoreUploading=!1}catch(e){this.restoreUploading=!1,console.error(e),this.$toastr.error(e.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}openRestoreModal(){let e=this.$modal.open(X,{size:"lg",backdrop:"static"});e.componentInstance.setupWizardRestore=!0,e.result.then(r=>{r===!0&&this.waitForHomebridgeToRestart()})}waitForHomebridgeToRestart(){return w(this,null,function*(){this.step="restarting",window.localStorage.removeItem(z.jwt.tokenKey),this.$auth.token=null,yield new Promise(r=>setTimeout(r,15e3));let e=setInterval(()=>w(this,null,function*(){try{yield S(this.$api.get("/auth/settings")),clearInterval(e),location.reload()}catch{}}),1e3)})}static \u0275fac=function(r){return new(r||n)};static \u0275cmp=T({type:n,selectors:[["ng-component"]],decls:7,vars:5,consts:[[1,"setup-container","d-flex","align-items-center","justify-content-center"],[1,"w-100","setup-card","d-flex","py-5"],[1,"w-100","d-flex","flex-column","align-items-center"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","mx-auto"],[1,"pt-4","pb-3","text-center"],["type","button",1,"btn","btn-lg","btn-primary",3,"click"],[1,"mt-3"],["href","javascript:void(0)",1,"grey-text",3,"click"],["src","/assets/homebridge-color-round.svg","alt","hb logo",1,"homebridge-logo","homebridge-logo-small","mx-auto"],[1,"w-100"],["novalidate","",3,"ngSubmit","formGroup"],[1,"md-form"],[1,"fas","fa-fw","fa-user","prefix","grey-text"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none","tabindex","1",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-username"],[1,"fas","fa-fw","fa-lock","prefix","grey-text"],["formControlName","password","type","password","id","form-pass","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass"],["formControlName","passwordConfirm","type","password","id","form-pass-confirm","autocomplete","new-password","tabindex","2",1,"form-control","px-0",3,"readonly","ngClass"],["for","form-pass-confirm"],[1,"w-100","text-center"],["type","submit",1,"btn","btn-primary",3,"disabled","ngClass"],[1,"button-loading-overlay","fas","fa-fw","fa-spinner","fa-pulse"],[1,"custom-file"],["type","file","id","restoreFileUpload","accept","application/gzip, .gz",1,"custom-file-input",3,"change"],["for","restoreFileUpload",1,"custom-file-label"],[1,"mt-3","w-100","d-flex","justify-content-between"],["type","button",1,"btn","btn-elegant","ml-0",3,"click","disabled"],["type","button",1,"btn","btn-primary","mr-0",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"pt-4","pb-3"],[1,"text-center"],["routerLink","/",1,"btn","btn-lg","btn-primary","mt-3"]],template:function(r,p){r&1&&(i(0,"div",0)(1,"div",1),I(2,ee,12,9,"div",2)(3,te,33,38,"div",2)(4,oe,20,16,"div",2)(5,re,7,3,"div",2)(6,ae,11,9,"div",2),o()()),r&2&&(t(2),f(p.step==="welcome"?2:-1),t(),f(p.step==="create-account"?3:-1),t(),f(p.step==="restore-backup"?4:-1),t(),f(p.step==="restarting"?5:-1),t(),f(p.step==="setup-complete"?6:-1))},dependencies:[K,A,D,G,j,J,q,L,E,N,V],styles:[".setup-container[_ngcontent-%COMP%]{background-size:cover;z-index:-1;padding-top:1em;padding-bottom:1em}@media screen and (min-height: 500px) and (min-width: 600px){.setup-container[_ngcontent-%COMP%]{padding-top:4em}}.setup-card[_ngcontent-%COMP%]{max-width:600px;border-radius:15px;background-color:#fff;padding-right:25px;padding-left:25px}.setup-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 600px){.setup-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}} body.dark-mode .setup-card{background-color:#2b2b2b;color:#fff}.homebridge-logo[_ngcontent-%COMP%]{margin-right:10px;height:200px}@media screen and (max-height: 500px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}@media screen and (max-width: 600px){.homebridge-logo[_ngcontent-%COMP%]{height:100px}}.homebridge-logo-small[_ngcontent-%COMP%]{height:50px}.button-loading[_ngcontent-%COMP%]{position:relative;color:#0000}.button-loading[_ngcontent-%COMP%] .button-loading-overlay[_ngcontent-%COMP%]{display:block;color:#fff}.button-loading-overlay[_ngcontent-%COMP%]{display:none;position:absolute;top:9px;left:0;right:0}small[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}"]})}return n})();export{ye as a};
@@ -1 +0,0 @@
1
- import{Wb as t,Xb as r,Yb as i,rb as a,za as o}from"./chunk-TXOB7R5K.js";var m=(()=>{class e{constructor(){}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=a({type:e,selectors:[["app-spinner"]],decls:7,vars:0,consts:[[1,"app-spinner-container"],[1,"animate_loader"],["xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink","width","200px","height","200px","viewBox","0 0 100 100","preserveAspectRatio","xMidYMid",2,"margin","auto","display","block"],["cx","50","cy","50","r","32","stroke-width","8","stroke-dasharray","50.26548245743669 50.26548245743669","fill","none","stroke-linecap","round","transform","rotate(327.259 50 50)",1,"spinner_outer"],["attributeName","transform","type","rotate","dur","2s","repeatCount","indefinite","keyTimes","0;1","values","0 50 50;360 50 50"],["cx","50","cy","50","r","23","stroke-width","8","stroke","#f8b26a","stroke-dasharray","36.12831551628262 36.12831551628262","stroke-dashoffset","36.12831551628262","fill","none","stroke-linecap","round","transform","rotate(-327.259 50 50)",1,"spinner_inner"],["attributeName","transform","type","rotate","dur","2s","repeatCount","indefinite","keyTimes","0;1","values","0 50 50;-360 50 50"]],template:function(n,p){n&1&&(t(0,"div",0)(1,"div",1),o(),t(2,"svg",2)(3,"circle",3),i(4,"animateTransform",4),r(),t(5,"circle",5),i(6,"animateTransform",6),r()()()())},styles:[".app-spinner-container[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:1000}.animate_loader[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:200px;overflow:visible}"]})}return e})();export{m as a};
@@ -1 +0,0 @@
1
- import{A as N,B as x,C as D,D as W,E as I,F as j,G as O,H as V,I as q,J as B,K as G,L as R,M as U,N as z,O as E,P as J,Q as K,R as P,S as Q,T as X,b as f,c as a,g as C,h as s,i as d,j as c,k as u,l,m as g,n as M,o as y,p as h,q as v,r as S,s as b,t as w,u as A,v as F,w as k,x as T,y as H,z as L}from"./chunk-HUV3VJSE.js";import{b as Y}from"./chunk-WNWWUCCZ.js";import{q as p}from"./chunk-ORPWYWCL.js";import{y as t,z as i}from"./chunk-QHPDGSZ6.js";import{c as n}from"./chunk-3IX3CLER.js";import{ia as m,md as e,sb as r}from"./chunk-TXOB7R5K.js";var Cm=(()=>{class o{static \u0275fac=function(Z){return new(Z||o)};static \u0275mod=r({type:o});static \u0275inj=m({providers:[a],imports:[e,t,i,n.forChild(),C,p,Y,X,f,B,q,R,D,h,v,U,T,k,H,L,S,N,x,c,Q,P,K,J,y,M,G,g,V,O,I,W,F,j,E,z,A,d,s,b,w,l,u]})}return o})();export{Cm as a};
@@ -1 +0,0 @@
1
- import{a as j}from"./chunk-6IAVZXBU.js";import"./chunk-EA5J2VEJ.js";import"./chunk-3RNRIJ74.js";import{c as y}from"./chunk-7EUQWCP5.js";import"./chunk-JZZQRLNW.js";import{q as h}from"./chunk-ORPWYWCL.js";import{y as M,z as v}from"./chunk-QHPDGSZ6.js";import{d as C,g as a}from"./chunk-NZNNTHFQ.js";import"./chunk-RTVXC3Y7.js";import{b as l,j as g}from"./chunk-C4ENUEJD.js";import"./chunk-UG5DK2RQ.js";import{a as d,c as u}from"./chunk-3IX3CLER.js";import{h as s,ha as c,ia as i,md as p,na as e,sb as n,w as f}from"./chunk-TXOB7R5K.js";var m=(()=>{class o{$api=e(l);$router=e(C);$toastr=e(g);$translate=e(d);resolve(){return s(this,null,function*(){try{let r=yield f(this.$api.get("/config-editor"));return JSON.stringify(r,null,4)}catch(r){console.error(r),this.$toastr.error(r.message,this.$translate.instant("toast.title_error")),this.$router.navigate(["/"])}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=c({token:o,factory:o.\u0275fac})}return o})();var $=[{path:"",loadComponent:()=>import("./chunk-DVTSZQXS.js").then(o=>o.ConfigEditorComponent),resolve:{config:m}}],R=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=n({type:o});static \u0275inj=i({imports:[a.forChild($),a]})}return o})();var Q=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=n({type:o});static \u0275inj=i({providers:[m],imports:[p,M,v,y,h,u.forChild(),R,j]})}return o})();export{Q as ConfigEditorModule};