homebridge-config-ui-x 4.78.2-beta.6 → 4.78.2-beta.8
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 +9 -1
- package/package.json +1 -1
- package/public/3rdpartylicenses.txt +132 -132
- package/public/assets/hap-icons/{airpurifier.svg → air-purifier.svg} +11 -11
- package/public/assets/hap-icons/{filtermaintenance.svg → filter-maintenance.svg} +1 -1
- package/public/assets/hap-icons/{smokesensor.svg → smoke-sensor.svg} +15 -2
- package/public/chunk-2X2KF7H7.js +20 -0
- package/public/{chunk-4BJSFL2Y.js → chunk-3SAX6MKJ.js} +1 -1
- package/public/chunk-7AK5YVJS.js +1 -0
- package/public/chunk-BIDL73X7.js +1 -0
- package/public/chunk-BIZSIRX7.js +23 -0
- package/public/chunk-BUZAP7S6.js +1 -0
- package/public/{chunk-DAG2QHQS.js → chunk-BVWMUIGV.js} +1 -1
- package/public/chunk-CGIF7EXJ.js +1 -0
- package/public/chunk-DHRXLMVF.js +1 -0
- package/public/chunk-DOCW6X73.js +1 -0
- package/public/chunk-EGCJCHYV.js +1 -0
- package/public/chunk-F3ERQJVG.js +1 -0
- package/public/chunk-GV7T2ZRO.js +1 -0
- package/public/chunk-GW2DVJRQ.js +1 -0
- package/public/chunk-IBOIMUXN.js +4 -0
- package/public/chunk-IN7NZAFJ.js +1 -0
- package/public/chunk-IWVCPN7D.js +1 -0
- package/public/chunk-IXYX4OYB.js +1 -0
- package/public/chunk-J352FQ7V.js +1 -0
- package/public/chunk-J6YDFLQQ.js +1 -0
- package/public/{chunk-Y2PNA6DE.js → chunk-JBP7TA4U.js} +1 -1
- package/public/chunk-JE6F7OAJ.js +1 -0
- package/public/chunk-JGQ4FGDJ.js +2 -0
- package/public/chunk-JMJYG63J.js +1 -0
- package/public/chunk-LE3EBBBT.js +1 -0
- package/public/chunk-MFTGA46W.js +1 -0
- package/public/chunk-MUW3UMNU.js +4 -0
- package/public/chunk-NJPGGFP6.js +1 -0
- package/public/chunk-PGVKZBGO.js +1 -0
- package/public/chunk-POLBY5ZL.js +1 -0
- package/public/chunk-Q6FW3YOR.js +1 -0
- package/public/chunk-QGMSAWWV.js +1 -0
- package/public/chunk-QHUZCJVD.js +1 -0
- package/public/chunk-QVQT6LWL.js +1 -0
- package/public/chunk-RYNT6DIZ.js +1 -0
- package/public/chunk-SE5KHHVF.js +1 -0
- package/public/chunk-TDQAB25D.js +1 -0
- package/public/chunk-TLGF7IJI.js +1 -0
- package/public/chunk-TLM3ON4K.js +1 -0
- package/public/chunk-TO76IMM4.js +1 -0
- package/public/{chunk-NK2NFLKG.js → chunk-TQHC3FMM.js} +16 -16
- package/public/chunk-TQNKRJOX.js +1 -0
- package/public/{chunk-YTSL4WKW.js → chunk-UQYCFN3T.js} +1 -1
- package/public/{chunk-XG2LZ5YY.js → chunk-VJGW76RT.js} +1 -1
- package/public/{chunk-CBI6QSZV.js → chunk-VKFJHDVI.js} +1 -1
- package/public/chunk-WDYUALGR.js +3 -0
- package/public/chunk-WORUVCP6.js +5 -0
- package/public/chunk-XKWP4BWG.js +1 -0
- package/public/chunk-YZR6UWDI.js +1 -0
- package/public/chunk-ZAPNMOAE.js +12 -0
- package/public/chunk-ZAZO2CXU.js +1 -0
- package/public/index.html +2 -2
- package/public/main-FPDCF3AR.js +1 -0
- package/public/{styles-RGK5JOII.css → styles-YDIK2EDN.css} +1 -1
- package/public/chunk-3M3LYAQE.js +0 -12
- package/public/chunk-43J7JFEW.js +0 -1
- package/public/chunk-44IGDA63.js +0 -20
- package/public/chunk-4FDYN46N.js +0 -1
- package/public/chunk-4LHJMVSY.js +0 -1
- package/public/chunk-57UTMJGE.js +0 -1
- package/public/chunk-5NA3TF4F.js +0 -1
- package/public/chunk-5PDHMX7W.js +0 -1
- package/public/chunk-5YNLNGZ5.js +0 -1
- package/public/chunk-5ZWZPDTW.js +0 -1
- package/public/chunk-64G2XLCY.js +0 -1
- package/public/chunk-6YHH6GRK.js +0 -1
- package/public/chunk-7FD3EC7J.js +0 -1
- package/public/chunk-7L7SQDYV.js +0 -1
- package/public/chunk-7SQ4IUHG.js +0 -1
- package/public/chunk-7ZUABUGF.js +0 -1
- package/public/chunk-AAGRUQ3L.js +0 -1
- package/public/chunk-AGMUQTYT.js +0 -1
- package/public/chunk-AY7YHLF5.js +0 -1
- package/public/chunk-D5KUP2IN.js +0 -1
- package/public/chunk-EC45LZRT.js +0 -1
- package/public/chunk-FLUPYWZS.js +0 -1
- package/public/chunk-GDATHGOO.js +0 -1
- package/public/chunk-HIS7LSRI.js +0 -1
- package/public/chunk-HZX4WF3S.js +0 -1
- package/public/chunk-I2QUQBAW.js +0 -4
- package/public/chunk-IW6XEFCM.js +0 -1
- package/public/chunk-JSIQOSLL.js +0 -1
- package/public/chunk-LT5CMZDW.js +0 -1
- package/public/chunk-LUXCCQQL.js +0 -1
- package/public/chunk-M2VSSHSQ.js +0 -1
- package/public/chunk-MDLOSX7S.js +0 -1
- package/public/chunk-MPYT6HUF.js +0 -6
- package/public/chunk-MQRLDXY4.js +0 -2
- package/public/chunk-MRYFWEYJ.js +0 -1
- package/public/chunk-MTSRP6CH.js +0 -1
- package/public/chunk-NN56KM2H.js +0 -1
- package/public/chunk-O4LE6SSC.js +0 -1
- package/public/chunk-OTZLBFXM.js +0 -1
- package/public/chunk-OVZ7RBX7.js +0 -1
- package/public/chunk-OXZSZ7EG.js +0 -1
- package/public/chunk-PIECQSRV.js +0 -1
- package/public/chunk-QMYZYVHJ.js +0 -1
- package/public/chunk-RMRSUZQP.js +0 -1
- package/public/chunk-RZN5G7GN.js +0 -1
- package/public/chunk-SDNVGLAU.js +0 -1
- package/public/chunk-SZYNXHCU.js +0 -1
- package/public/chunk-T3KR6EXW.js +0 -1
- package/public/chunk-TPD36M27.js +0 -1
- package/public/chunk-TSIY6PJJ.js +0 -1
- package/public/chunk-TXPBA7PT.js +0 -1
- package/public/chunk-UATHJCGZ.js +0 -1
- package/public/chunk-V4DPW5O4.js +0 -1
- package/public/chunk-VRXWQ576.js +0 -1
- package/public/chunk-XOOLTRP4.js +0 -5
- package/public/chunk-XV2ZQK64.js +0 -1
- package/public/chunk-YLKV5TBR.js +0 -23
- package/public/chunk-ZSGWVVUL.js +0 -1
- package/public/main-BLZ4VGMT.js +0 -1
- /package/public/assets/hap-icons/{airquality.svg → air-quality-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{co2-sensor.svg → carbon-dioxide-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{co-sensor.svg → carbon-monoxide-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{contactsensor-closed.svg → contact-sensor-closed.svg} +0 -0
- /package/public/assets/hap-icons/{contactsensor-open.svg → contact-sensor-open.svg} +0 -0
- /package/public/assets/hap-icons/{garagedoor.svg → garage-door.svg} +0 -0
- /package/public/assets/hap-icons/{humidity.svg → humidity-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{leaksensor.svg → leak-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{lightbulb.svg → light-bulb.svg} +0 -0
- /package/public/assets/hap-icons/{light.svg → light-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{motionsensor.svg → motion-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{occupancysensor.svg → occupancy-sensor.svg} +0 -0
- /package/public/assets/hap-icons/{securitysystem-active.svg → security-system-active.svg} +0 -0
- /package/public/assets/hap-icons/{securitysystem-off.svg → security-system-off.svg} +0 -0
- /package/public/assets/hap-icons/{securitysystem-triggered.svg → security-system-triggered.svg} +0 -0
- /package/public/assets/hap-icons/{statelessprogrammableswitch.svg → stateless-programmable-switch.svg} +0 -0
- /package/public/assets/hap-icons/{valve-waterfaucet.svg → valve-faucet.svg} +0 -0
- /package/public/assets/hap-icons/{valve-showerhead.svg → valve-shower-head.svg} +0 -0
- /package/public/assets/hap-icons/{windowcovering-closed.svg → window-covering-closed.svg} +0 -0
- /package/public/assets/hap-icons/{windowcovering-open.svg → window-covering-open.svg} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
-
## v4.79.0 (2025-07-
|
|
5
|
+
## v4.79.0 (2025-07-07)
|
|
6
6
|
|
|
7
7
|
### ⚠️ Upcoming Deprecations:
|
|
8
8
|
|
|
@@ -37,6 +37,14 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
|
|
|
37
37
|
- add plugin search button, hide bar by default
|
|
38
38
|
- add tab in plugins showing plugin analytics in `iframe`
|
|
39
39
|
|
|
40
|
+
### Other Changes
|
|
41
|
+
|
|
42
|
+
- code cleanup inside angular module files
|
|
43
|
+
- refactor ui types into interface files
|
|
44
|
+
- rename hap icon files for consistency
|
|
45
|
+
- rename accessory type component files for consistency
|
|
46
|
+
- angular-wide code refactoring and cleanup
|
|
47
|
+
|
|
40
48
|
### Homebridge Dependencies
|
|
41
49
|
|
|
42
50
|
- `@homebridge/hap-client` @ `v3.1.0`
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-config-ui-x",
|
|
3
3
|
"displayName": "Homebridge UI",
|
|
4
|
-
"version": "4.78.2-beta.
|
|
4
|
+
"version": "4.78.2-beta.8",
|
|
5
5
|
"description": "A web based management, configuration and control platform for Homebridge.",
|
|
6
6
|
"author": "oznu <dev@oz.nu>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -233,6 +233,84 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
233
233
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
234
234
|
SOFTWARE.
|
|
235
235
|
|
|
236
|
+
--------------------------------------------------------------------------------
|
|
237
|
+
Package: ng-inline-svg-2
|
|
238
|
+
License: "MIT"
|
|
239
|
+
|
|
240
|
+
The MIT License (MIT)
|
|
241
|
+
|
|
242
|
+
Copyright (c) 2016 Eugene Cheung
|
|
243
|
+
|
|
244
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
245
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
246
|
+
in the Software without restriction, including without limitation the rights
|
|
247
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
248
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
249
|
+
furnished to do so, subject to the following conditions:
|
|
250
|
+
|
|
251
|
+
The above copyright notice and this permission notice shall be included in
|
|
252
|
+
all copies or substantial portions of the Software.
|
|
253
|
+
|
|
254
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
255
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
256
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
257
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
258
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
259
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
260
|
+
THE SOFTWARE.
|
|
261
|
+
|
|
262
|
+
--------------------------------------------------------------------------------
|
|
263
|
+
Package: nouislider
|
|
264
|
+
License: "MIT"
|
|
265
|
+
|
|
266
|
+
MIT License
|
|
267
|
+
|
|
268
|
+
Copyright (c) 2019 Léon Gersen
|
|
269
|
+
|
|
270
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
271
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
272
|
+
in the Software without restriction, including without limitation the rights
|
|
273
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
274
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
275
|
+
furnished to do so, subject to the following conditions:
|
|
276
|
+
|
|
277
|
+
The above copyright notice and this permission notice shall be included in all
|
|
278
|
+
copies or substantial portions of the Software.
|
|
279
|
+
|
|
280
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
281
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
282
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
283
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
284
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
285
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
286
|
+
SOFTWARE.
|
|
287
|
+
|
|
288
|
+
--------------------------------------------------------------------------------
|
|
289
|
+
Package: ng2-nouislider
|
|
290
|
+
License: "MIT"
|
|
291
|
+
|
|
292
|
+
MIT License
|
|
293
|
+
|
|
294
|
+
Copyright (c) 2017-2019 Tomasz Bak https://www.tomaszbak.com/
|
|
295
|
+
|
|
296
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
297
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
298
|
+
in the Software without restriction, including without limitation the rights
|
|
299
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
300
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
301
|
+
furnished to do so, subject to the following conditions:
|
|
302
|
+
|
|
303
|
+
The above copyright notice and this permission notice shall be included in all
|
|
304
|
+
copies or substantial portions of the Software.
|
|
305
|
+
|
|
306
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
307
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
308
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
309
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
310
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
311
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
312
|
+
SOFTWARE.
|
|
313
|
+
|
|
236
314
|
--------------------------------------------------------------------------------
|
|
237
315
|
Package: @kurkle/color
|
|
238
316
|
License: "MIT"
|
|
@@ -378,97 +456,19 @@ Package: dragula
|
|
|
378
456
|
License: "MIT"
|
|
379
457
|
|
|
380
458
|
|
|
381
|
-
--------------------------------------------------------------------------------
|
|
382
|
-
Package: @homebridge/hap-client
|
|
383
|
-
License: "MIT"
|
|
384
|
-
|
|
385
|
-
MIT License
|
|
386
|
-
|
|
387
|
-
Copyright (c) 2023-2025 Homebridge
|
|
388
|
-
Copyright (c) 2020-2023 oznu <dev@oz.nu>
|
|
389
|
-
|
|
390
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
391
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
392
|
-
in the Software without restriction, including without limitation the rights
|
|
393
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
394
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
395
|
-
furnished to do so, subject to the following conditions:
|
|
396
|
-
|
|
397
|
-
The above copyright notice and this permission notice shall be included in all
|
|
398
|
-
copies or substantial portions of the Software.
|
|
399
|
-
|
|
400
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
401
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
402
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
403
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
404
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
405
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
406
|
-
SOFTWARE.
|
|
407
|
-
|
|
408
459
|
--------------------------------------------------------------------------------
|
|
409
460
|
Package: ng2-dragula
|
|
410
461
|
License: "MIT"
|
|
411
462
|
|
|
412
463
|
|
|
413
464
|
--------------------------------------------------------------------------------
|
|
414
|
-
Package:
|
|
415
|
-
License: "MIT"
|
|
416
|
-
|
|
417
|
-
The MIT License (MIT)
|
|
418
|
-
|
|
419
|
-
Copyright (c) 2016 Eugene Cheung
|
|
420
|
-
|
|
421
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
422
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
423
|
-
in the Software without restriction, including without limitation the rights
|
|
424
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
425
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
426
|
-
furnished to do so, subject to the following conditions:
|
|
427
|
-
|
|
428
|
-
The above copyright notice and this permission notice shall be included in
|
|
429
|
-
all copies or substantial portions of the Software.
|
|
430
|
-
|
|
431
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
432
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
433
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
434
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
435
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
436
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
437
|
-
THE SOFTWARE.
|
|
438
|
-
|
|
439
|
-
--------------------------------------------------------------------------------
|
|
440
|
-
Package: nouislider
|
|
441
|
-
License: "MIT"
|
|
442
|
-
|
|
443
|
-
MIT License
|
|
444
|
-
|
|
445
|
-
Copyright (c) 2019 Léon Gersen
|
|
446
|
-
|
|
447
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
448
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
449
|
-
in the Software without restriction, including without limitation the rights
|
|
450
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
451
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
452
|
-
furnished to do so, subject to the following conditions:
|
|
453
|
-
|
|
454
|
-
The above copyright notice and this permission notice shall be included in all
|
|
455
|
-
copies or substantial portions of the Software.
|
|
456
|
-
|
|
457
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
458
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
459
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
460
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
461
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
462
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
463
|
-
SOFTWARE.
|
|
464
|
-
|
|
465
|
-
--------------------------------------------------------------------------------
|
|
466
|
-
Package: ng2-nouislider
|
|
465
|
+
Package: @homebridge/hap-client
|
|
467
466
|
License: "MIT"
|
|
468
467
|
|
|
469
468
|
MIT License
|
|
470
469
|
|
|
471
|
-
Copyright (c)
|
|
470
|
+
Copyright (c) 2023-2025 Homebridge
|
|
471
|
+
Copyright (c) 2020-2023 oznu <dev@oz.nu>
|
|
472
472
|
|
|
473
473
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
474
474
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -809,6 +809,31 @@ Package: ngx-monaco-editor-v2
|
|
|
809
809
|
License: "MIT"
|
|
810
810
|
|
|
811
811
|
|
|
812
|
+
--------------------------------------------------------------------------------
|
|
813
|
+
Package: mobile-detect
|
|
814
|
+
License: "MIT"
|
|
815
|
+
|
|
816
|
+
The MIT License (MIT)
|
|
817
|
+
|
|
818
|
+
Copyright (c) 2013 Heinrich Goebl
|
|
819
|
+
|
|
820
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
821
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
822
|
+
in the Software without restriction, including without limitation the rights
|
|
823
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
824
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
825
|
+
furnished to do so, subject to the following conditions:
|
|
826
|
+
|
|
827
|
+
The above copyright notice and this permission notice shall be included in
|
|
828
|
+
all copies or substantial portions of the Software.
|
|
829
|
+
|
|
830
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
831
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
832
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
833
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
834
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
835
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
836
|
+
THE SOFTWARE.
|
|
812
837
|
--------------------------------------------------------------------------------
|
|
813
838
|
Package: prismjs
|
|
814
839
|
License: "MIT"
|
|
@@ -894,31 +919,6 @@ Package: ngx-md
|
|
|
894
919
|
License: "MIT"
|
|
895
920
|
|
|
896
921
|
|
|
897
|
-
--------------------------------------------------------------------------------
|
|
898
|
-
Package: mobile-detect
|
|
899
|
-
License: "MIT"
|
|
900
|
-
|
|
901
|
-
The MIT License (MIT)
|
|
902
|
-
|
|
903
|
-
Copyright (c) 2013 Heinrich Goebl
|
|
904
|
-
|
|
905
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
906
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
907
|
-
in the Software without restriction, including without limitation the rights
|
|
908
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
909
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
910
|
-
furnished to do so, subject to the following conditions:
|
|
911
|
-
|
|
912
|
-
The above copyright notice and this permission notice shall be included in
|
|
913
|
-
all copies or substantial portions of the Software.
|
|
914
|
-
|
|
915
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
916
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
917
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
918
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
919
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
920
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
921
|
-
THE SOFTWARE.
|
|
922
922
|
--------------------------------------------------------------------------------
|
|
923
923
|
Package: file-saver
|
|
924
924
|
License: "MIT"
|
|
@@ -1161,32 +1161,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
1161
1161
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
1162
1162
|
THE SOFTWARE.
|
|
1163
1163
|
|
|
1164
|
-
--------------------------------------------------------------------------------
|
|
1165
|
-
Package: @angular/router
|
|
1166
|
-
License: "MIT"
|
|
1167
|
-
|
|
1168
|
-
The MIT License
|
|
1169
|
-
|
|
1170
|
-
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
1171
|
-
|
|
1172
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1173
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
1174
|
-
in the Software without restriction, including without limitation the rights
|
|
1175
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
1176
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
1177
|
-
furnished to do so, subject to the following conditions:
|
|
1178
|
-
|
|
1179
|
-
The above copyright notice and this permission notice shall be included in
|
|
1180
|
-
all copies or substantial portions of the Software.
|
|
1181
|
-
|
|
1182
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1183
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1184
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1185
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1186
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1187
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
1188
|
-
THE SOFTWARE.
|
|
1189
|
-
|
|
1190
1164
|
--------------------------------------------------------------------------------
|
|
1191
1165
|
Package: engine.io-parser
|
|
1192
1166
|
License: "MIT"
|
|
@@ -1345,6 +1319,32 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
1345
1319
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1346
1320
|
SOFTWARE.
|
|
1347
1321
|
|
|
1322
|
+
--------------------------------------------------------------------------------
|
|
1323
|
+
Package: @angular/router
|
|
1324
|
+
License: "MIT"
|
|
1325
|
+
|
|
1326
|
+
The MIT License
|
|
1327
|
+
|
|
1328
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
1329
|
+
|
|
1330
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1331
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
1332
|
+
in the Software without restriction, including without limitation the rights
|
|
1333
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
1334
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
1335
|
+
furnished to do so, subject to the following conditions:
|
|
1336
|
+
|
|
1337
|
+
The above copyright notice and this permission notice shall be included in
|
|
1338
|
+
all copies or substantial portions of the Software.
|
|
1339
|
+
|
|
1340
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1341
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1342
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1343
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1344
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1345
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
1346
|
+
THE SOFTWARE.
|
|
1347
|
+
|
|
1348
1348
|
--------------------------------------------------------------------------------
|
|
1349
1349
|
Package: dayjs
|
|
1350
1350
|
License: "MIT"
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
9
9
|
>
|
|
10
10
|
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
11
|
-
<g id="
|
|
11
|
+
<g id="air-purifier" transform="translate(7.000000, 5.000000)">
|
|
12
12
|
<path
|
|
13
13
|
d="M-4.26325641e-14,6.22067087 C4.02953795,8.50225516 12.4315562,9.67933849 25.2060547,9.75192087 C32.8391014,9.79529045 51.5791554,2.41088415 63.7714844,0.357389618 C69.2464736,-0.564736121 76.8610569,0.297568567 86.6152344,2.94430368"
|
|
14
14
|
id="Line"
|
|
15
|
-
class="
|
|
15
|
+
class="air-purifier_off_grey"
|
|
16
16
|
stroke="#5BC8FA"
|
|
17
17
|
stroke-width="10"
|
|
18
18
|
stroke-linecap="square"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<path
|
|
21
21
|
d="M-4.26325641e-14,30.2206709 C4.02953795,32.5022552 12.4315562,33.6793385 25.2060547,33.7519209 C32.8391014,33.7952905 51.5791554,26.4108841 63.7714844,24.3573896 C69.2464736,23.4352639 76.8610569,24.2975686 86.6152344,26.9443037"
|
|
22
22
|
id="Line"
|
|
23
|
-
class="
|
|
23
|
+
class="air-purifier_off_grey"
|
|
24
24
|
stroke="#91DBFB"
|
|
25
25
|
stroke-width="10"
|
|
26
26
|
stroke-linecap="square"
|
|
@@ -28,23 +28,23 @@
|
|
|
28
28
|
<path
|
|
29
29
|
d="M-4.26325641e-14,54.2206709 C4.02953795,56.5022552 12.4315562,57.6793385 25.2060547,57.7519209 C32.8391014,57.7952905 51.5791554,50.4108841 63.7714844,48.3573896 C69.2464736,47.4352639 76.8610569,48.2975686 86.6152344,50.9443037"
|
|
30
30
|
id="Line"
|
|
31
|
-
class="
|
|
31
|
+
class="air-purifier_off_grey"
|
|
32
32
|
stroke="#C8EAFE"
|
|
33
33
|
stroke-width="10"
|
|
34
34
|
stroke-linecap="square"
|
|
35
35
|
/>
|
|
36
36
|
<polygon
|
|
37
37
|
id="Path"
|
|
38
|
-
class="
|
|
38
|
+
class="air-purifier_off_grey"
|
|
39
39
|
fill="#C7C5CB"
|
|
40
40
|
points="17.2333685 76.7914641 70.0374945 76.7914641 73.9430133 79.2866885 76.8250853 84.9649087 87.1832833 114.139252 87.1832833 140.017181 85.5385126 142.175202 83.1303576 143.984565 5.21741581 143.984565 2.85966936 142.750318 1.09613307 140.017181 1.09613307 114.139252 10.9193128 84.9649087 14.372682 79.2866885"
|
|
41
41
|
/>
|
|
42
|
-
<rect class="rectangle
|
|
43
|
-
<rect class="rectangle
|
|
44
|
-
<rect class="rectangle
|
|
45
|
-
<rect class="rectangle
|
|
46
|
-
<rect class="rectangle
|
|
47
|
-
<rect class="rectangle
|
|
42
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="46" y="84" width="17" height="5" />
|
|
43
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="46" y="94" width="20" height="5" />
|
|
44
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="46" y="103" width="22" height="5" />
|
|
45
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="20" y="103" width="22" height="5" />
|
|
46
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="22" y="94" width="20" height="5" />
|
|
47
|
+
<rect class="rectangle air-purifier_off_lgrey" fill="#e0e0e0" x="25" y="84" width="17" height="5" />
|
|
48
48
|
</g>
|
|
49
49
|
</g>
|
|
50
50
|
</svg>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
>
|
|
12
12
|
<desc>Created with Fabric.js 4.6.0</desc>
|
|
13
13
|
<defs />
|
|
14
|
-
<g
|
|
14
|
+
<g
|
|
15
15
|
transform="matrix(1 0 0 1 250 125)"
|
|
16
16
|
id="Ly0Zljdh6uDT129kqPq2c"
|
|
17
17
|
opacity="1"
|
|
@@ -27,7 +27,20 @@
|
|
|
27
27
|
stroke-linecap="round"
|
|
28
28
|
/>
|
|
29
29
|
</g>
|
|
30
|
-
<g
|
|
30
|
+
<g transform="matrix(1 0 0 1 250 100)" fill="#ffffff" class="label-text">
|
|
31
|
+
<text
|
|
32
|
+
text-anchor="middle"
|
|
33
|
+
dominant-baseline="middle"
|
|
34
|
+
font-family="Arial"
|
|
35
|
+
font-size="100"
|
|
36
|
+
font-weight="bold"
|
|
37
|
+
x="0"
|
|
38
|
+
y="0"
|
|
39
|
+
>
|
|
40
|
+
SMOKE
|
|
41
|
+
</text>
|
|
42
|
+
</g>
|
|
43
|
+
<g
|
|
31
44
|
transform="matrix(1 0 0 1 249.09 329.19)"
|
|
32
45
|
id="1bkxD90ICefRta9rtUGNo"
|
|
33
46
|
opacity="1"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import{a as ee}from"./chunk-X2SHRXXY.js";import{a as Z,b as ne}from"./chunk-UQYCFN3T.js";import{a as W,b as Y}from"./chunk-GDFV4BMO.js";import{a as X}from"./chunk-NGNQPAAK.js";import{m as J,n as K,t as U}from"./chunk-CF2ZN7LY.js";import{c as N,e as F,l as q,z}from"./chunk-T252YJXA.js";import{b as G}from"./chunk-X7PVYZAE.js";import{b as Q}from"./chunk-JBP7TA4U.js";import{k as M,n as V}from"./chunk-VJGW76RT.js";import{a as $,b as T}from"./chunk-LXXELGX4.js";import"./chunk-SRP6QX5M.js";import{Bc as s,Cc as d,Dc as O,Hb as C,Ib as m,Jb as p,Lb as I,Mb as j,Nb as H,Ob as v,Pb as r,Qb as a,Rb as w,Vb as b,Yb as _,Zb as l,ab as n,fb as D,g as oe,h as S,jd as L,kc as y,la as h,lc as x,mb as k,mc as E,ra as g,rc as R,sa as u,sc as P,tc as B,w as A}from"./chunk-SKZUTSHE.js";var ie=oe(ne(),1);function ae(o,f){o&1&&(r(0,"div",5),w(1,"i",12),a())}function se(o,f){if(o&1){let e=b();r(0,"li",17),y(1),s(2,"date"),r(3,"button",18),s(4,"translate"),_("click",function(){let t=g(e).$implicit,c=l(3);return u(c.restore(t.id))}),w(5,"i",19),a()()}if(o&2){let e=f.$implicit;n(),E(" ",O(2,2,e.timestamp,"medium")," "),n(2),C("aria-label",d(4,5,"config.restore.copy_to_editor"))}}function le(o,f){if(o&1&&(r(0,"ul",15),j(1,se,6,7,"li",17,I),a()),o&2){let e=l(2);n(),H(e.backupList)}}function de(o,f){o&1&&(r(0,"p",16),y(1),s(2,"translate"),a()),o&2&&(n(),x(d(2,1,"config.restore.no_backups")))}function ce(o,f){if(o&1&&(r(0,"div",13),w(1,"i",14),a(),r(2,"p",13),y(3),s(4,"translate"),a(),m(5,le,3,0,"ul",15),m(6,de,3,3,"p",16)),o&2){let e=l();n(3),x(d(4,3,"config.restore.title_restore_homebridge_backup")),n(2),p(e.backupList&&e.backupList.length?5:-1),n(),p(!e.backupList||!e.backupList.length?6:-1)}}function me(o,f){if(o&1){let e=b();r(0,"button",20),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.dismissModal())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_close")),n(2),E(" ",d(3,4,"form.button_close")," "))}function pe(o,f){if(o&1){let e=b();r(0,"button",20),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.dismissModal())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_close")),n(2),E(" ",d(3,4,"form.button_close")," "))}function fe(o,f){if(o&1){let e=b();r(0,"button",21),s(1,"translate"),_("click",function(){g(e);let t=l();return u(t.deleteAllBackups())}),y(2),s(3,"translate"),a()}o&2&&(C("aria-label",d(1,2,"form.button_remove")),n(2),E(" ",d(3,4,"form.button_remove")," "))}var te=(()=>{class o{$activeModal=h(J);$api=h(V);$toastr=h(M);$translate=h($);loading=!0;backupList=[];ngOnInit(){this.$api.get("/config-editor/backups").subscribe({next:e=>{this.loading=!1,this.backupList=e},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}restore(e){return this.$activeModal.close(e)}deleteAllBackups(){return this.$api.delete("/config-editor/backups").subscribe({next:()=>{this.$activeModal.dismiss(),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success"))},error:e=>{console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=k({type:o,selectors:[["ng-component"]],decls:17,vars:11,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-danger","me-auto"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-history","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box"],[1,"text-center","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-arrow-right"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-danger","me-auto",3,"click"]],template:function(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),y(3),s(4,"translate"),a(),r(5,"button",3),s(6,"translate"),_("click",function(){return t.dismissModal()}),a()(),r(7,"div",4),m(8,ae,2,0,"div",5),m(9,ce,7,5),a(),r(10,"div",6)(11,"div",7),m(12,me,4,6,"button",8),a(),r(13,"div",9),m(14,pe,4,6,"button",8),a(),r(15,"div",10),m(16,fe,4,6,"button",11),a()()()),i&2&&(n(3),x(d(4,7,"form.button_restore")),n(2),C("aria-label",d(6,9,"form.button_close")),n(3),p(t.loading?8:-1),n(),p(t.loading?-1:9),n(3),p(!t.loading&&t.backupList.length?12:-1),n(2),p(t.loading||!t.loading&&!t.backupList.length?14:-1),n(2),p(!t.loading&&t.backupList.length?16:-1))},dependencies:[L,T],encapsulation:2})}return o})();function ge(o,f){if(o&1){let e=b();r(0,"button",13),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onExportConfig())}),w(3,"i",14),a()}o&2&&(v("ngbTooltip",d(1,2,"form.button_download")),C("aria-label",d(2,4,"form.button_download")))}function ue(o,f){if(o&1){let e=b();r(0,"button",15),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onCancelRestore())}),w(3,"i",16),a()}if(o&2){let e=l();v("disabled",e.saveInProgress)("ngbTooltip",d(1,3,"form.button_cancel")),C("aria-label",d(2,5,"form.button_cancel"))}}function he(o,f){if(o&1){let e=b();r(0,"button",13),s(1,"translate"),s(2,"translate"),_("click",function(){g(e);let t=l();return u(t.onRestore())}),w(3,"i",17),a()}o&2&&(v("ngbTooltip",d(1,2,"form.button_restore")),C("aria-label",d(2,4,"form.button_restore")))}function _e(o,f){o&1&&w(0,"i",8)}function be(o,f){o&1&&w(0,"i",9)}function Ce(o,f){if(o&1){let e=b();r(0,"ngx-monaco-editor",18),_("onInit",function(t){g(e);let c=l();return u(c.onEditorInit(t))})("keydown.control.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())})("keydown.meta.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())}),a()}if(o&2){let e=l();v("options",e.editorOptions)("model",e.monacoEditorModel)}}function ye(o,f){if(o&1){let e=b();r(0,"ngx-monaco-diff-editor",19),_("onInit",function(t){g(e);let c=l();return u(c.onInitDiffEditor(t))})("keydown.control.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())})("keydown.meta.s",function(t){g(e);let c=l();return t.preventDefault(),u(c.onSave())}),a()}if(o&2){let e=l();v("options",e.editorOptions)("originalModel",e.monacoEditorModel)("modifiedModel",e.monacoEditorModel)}}function we(o,f){if(o&1){let e=b();r(0,"textarea",20),B("ngModelChange",function(t){g(e);let c=l();return P(c.homebridgeConfig,t)||(c.homebridgeConfig=t),u(t)}),y(1," "),a()}if(o&2){let e=l();R("ngModel",e.homebridgeConfig)}}var Ke=(()=>{class o{$api=h(V);$md=h(X);$modal=h(K);$monacoEditor=h(ee);$route=h(G);$renderer=h(D);$settings=h(Q);$toastr=h(M);$translate=h($);editorDecorations=[];lastHeight;visualViewPortEventCallback;homebridgeConfig;originalConfig;saveInProgress;isMobile=!1;monacoEditor;editorOptions;monacoEditorModel;constructor(){this.isMobile=this.$md.detect.mobile()}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(i=>{this.homebridgeConfig=i.config}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.subscribe({next:()=>{this.setMonacoEditorModel()}})}onEditorInit(e){window.editor=e,this.monacoEditor=e,this.monacoEditor.getModel().setValue(this.homebridgeConfig)}onInitDiffEditor(e){this.monacoEditor=e.modifiedEditor,e.getModel().original.setValue(this.originalConfig),e.getModel().modified.setValue(this.homebridgeConfig),window.editor=e}onSave(){return S(this,null,function*(){if(!this.saveInProgress){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress=!0;try{if(!this.isMobile){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let i=window.monaco.editor.getModelMarkers({owner:"json"});for(let t of i)if(t.message==="Duplicate object key"){this.saveInProgress=!1,this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig=this.monacoEditor.getModel().getValue()}let e=this.parseConfigFromEditor();this.homebridgeConfig=JSON.stringify(e,null,4),typeof e.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(e.bridge.username)?e.accessories&&!Array.isArray(e.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&!Array.isArray(e.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):e.platforms&&Array.isArray(e.platforms)&&!this.validateSection(e.platforms,"platform")||e.accessories&&Array.isArray(e.accessories)&&!this.validateSection(e.accessories,"accessory")||e.plugins&&Array.isArray(e.plugins)&&!this.validatePlugins(e.plugins,"plugins")||e.disabledPlugins&&Array.isArray(e.disabledPlugins)&&!this.validatePlugins(e.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(e),this.originalConfig=""):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress=!1}})}onRestore(){this.$modal.open(te,{size:"lg",backdrop:"static"}).result.then(e=>{this.originalConfig||(this.originalConfig=this.homebridgeConfig),this.$api.get(`/config-editor/backups/${e}`).subscribe({next:i=>{this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))},error:i=>{console.error(i),this.$toastr.error(i.error.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}onExportConfig(){let e=`data:text/json;charset=utf-8,${encodeURIComponent(this.homebridgeConfig)}`,i=document.createElement("a");i.setAttribute("href",e),i.setAttribute("download","config.json"),document.body.appendChild(i),i.click(),i.remove()}onCancelRestore(){this.homebridgeConfig=this.originalConfig,this.originalConfig=""}ngOnDestroy(){let e=document.querySelector(".content");this.$renderer.removeStyle(e,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose()}validateSection(e,i){for(let t of e){if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(!t[i])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1;if(typeof t[i]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:i}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(t),!1}return!0}validatePlugins(e,i){for(let t of e)if(typeof t!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:i}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(e){this.monacoEditor&&(e=JSON.stringify(e,null,4).split(`
|
|
2
|
+
`).map(i=>` ${i}`).join(`
|
|
3
|
+
`),setTimeout(()=>{let i=this.monacoEditor.getModel().findMatches(e);if(i.length){let t=i[0].range,c=new monaco.Range(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:c,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}},200))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let e=monaco.Uri.parse("a://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[e.toString()],schema:{type:"object",required:["bridge"],properties:{bridge:{type:"object",required:["name","username","port","pin"],properties:{name:{type:"string",description:`The Homebridge instance name.
|
|
4
|
+
This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
|
|
5
|
+
You should change this pin if you need to re-pair your instance with HomeKit.
|
|
6
|
+
Example: 0E:89:49:64:91:86`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",description:`The port Homebridge listens on.
|
|
7
|
+
If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
|
|
8
|
+
This is used when pairing Homebridge to HomeKit.
|
|
9
|
+
Example: 630-27-655`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",description:"The bridge manufacturer to be displayed in HomeKit"},firmwareRevision:{type:"string",description:"The bridge firmware version to be displayed in HomeKit"},model:{type:"string",description:"The bridge model to be displayed in HomeKit"},bind:{description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
|
|
10
|
+
|
|
11
|
+
Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:"Network Interface name that Homebridge should bind to."}}},default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",properties:{interface:{type:"string",description:`The interface or IP address of the interface you want Homebridge to listen on. This is useful if your server has multiple interfaces.
|
|
12
|
+
|
|
13
|
+
Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",description:"Set to `false` to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},plugins:{type:"array",description:"An array of plugins that should be selectively enabled. Remove this array to enable all plugins.",items:{type:"string",description:`The full plugin npm package name.
|
|
14
|
+
Example: homebridge-dummy`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
|
|
15
|
+
|
|
16
|
+
Requires Homebridge v1.3 or later.`,items:{type:"string",description:`The full plugin npm package name.
|
|
17
|
+
Example: homebridge-dummy`},default:[]},ports:{type:"object",description:"The range of ports that should be used for certain accessories like cameras and TVs",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534},end:{type:"number",default:52150,minimum:1025,maximum:65534}},default:{start:52100,end:52150}},platforms:{type:"array",description:`Any plugin that exposes a platform should have its config entered in this array.
|
|
18
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],properties:{platform:{type:"string",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",description:"The name of the platform."}}},{type:"object",properties:{platform:{type:"string",description:`Homebridge UI platform name must be set to "config".
|
|
19
|
+
Do Not Change!`,oneOf:[{enum:"config"}]},name:{type:"string",description:"The name used in the Homebridge log."}}}]}},accessories:{type:"array",description:`Any plugin that exposes an accessory should have its config entered in this array.
|
|
20
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],properties:{accessory:{type:"string",description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",description:"The name of the accessory."}}}}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}saveConfig(e){return S(this,null,function*(){try{let i=yield A(this.$api.post("/config-editor",e));this.homebridgeConfig=JSON.stringify(i,null,4),this.$modal.open(Z,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig)}catch{let i=ie.default.parse(this.homebridgeConfig);return this.homebridgeConfig=JSON.stringify(i,null,4),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig),i}}static \u0275fac=function(i){return new(i||o)};static \u0275cmp=k({type:o,selectors:[["ng-component"]],decls:18,vars:18,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","ngbTooltip"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-floppy-disk"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["container","body","placement","bottom","openDelay","150","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","ngbTooltip"],[1,"fas","fa-fw","fa-times"],[1,"fas","fa-fw","fa-history"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(i,t){i&1&&(r(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),y(4),s(5,"translate"),a()(),r(6,"div",4),m(7,ge,4,6,"button",5),m(8,ue,4,7,"button",6),m(9,he,4,6,"button",5),r(10,"button",7),s(11,"translate"),s(12,"translate"),_("click",function(){return t.onSave()}),m(13,_e,1,0,"i",8),m(14,be,1,0,"i",9),a()()(),m(15,Ce,1,2,"ngx-monaco-editor",10),m(16,ye,1,3,"ngx-monaco-diff-editor",11),m(17,we,2,1,"textarea",12),a()),i&2&&(n(4),x(d(5,12,"menu.config_json_editor")),n(3),p(t.originalConfig?-1:7),n(),p(t.originalConfig?8:-1),n(),p(t.originalConfig?-1:9),n(),v("disabled",t.saveInProgress)("ngbTooltip",d(11,14,"form.button_save")),C("aria-label",d(12,16,"form.button_save")),n(3),p(t.saveInProgress?-1:13),n(),p(t.saveInProgress?14:-1),n(),p(!t.isMobile&&!t.originalConfig?15:-1),n(),p(!t.isMobile&&t.originalConfig?16:-1),n(),p(t.isMobile?17:-1))},dependencies:[U,W,Y,z,N,F,q,T],encapsulation:2})}return o})();export{Ke as ConfigEditorComponent};
|