homebridge-config-ui-x 4.77.0-beta.2 → 4.77.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +39 -4
  2. package/config.schema.json +10 -13
  3. package/dist/core/auth/auth.controller.d.ts +1 -0
  4. package/dist/core/config/config.service.d.ts +5 -0
  5. package/dist/core/config/config.service.js +3 -2
  6. package/dist/core/config/config.service.js.map +1 -1
  7. package/dist/modules/config-editor/config-editor.service.js +14 -6
  8. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  9. package/dist/modules/plugins/plugins.service.d.ts +3 -0
  10. package/dist/modules/plugins/plugins.service.js +81 -58
  11. package/dist/modules/plugins/plugins.service.js.map +1 -1
  12. package/dist/modules/server/server.controller.d.ts +5 -0
  13. package/dist/modules/server/server.controller.js +25 -0
  14. package/dist/modules/server/server.controller.js.map +1 -1
  15. package/dist/modules/server/server.service.d.ts +9 -1
  16. package/dist/modules/server/server.service.js +82 -14
  17. package/dist/modules/server/server.service.js.map +1 -1
  18. package/package.json +19 -16
  19. package/public/3rdpartylicenses.txt +28 -1
  20. package/public/assets/hap-icons/airpurifier.svg +6 -6
  21. package/public/assets/hap-icons/filtermaintenance.svg +26 -0
  22. package/public/assets/hap-icons/securitysystem-active.svg +1 -1
  23. package/public/assets/hap-icons/securitysystem-triggered.svg +103 -0
  24. package/public/{chunk-VK5TOJI7.js → chunk-2DQTG3JY.js} +1 -1
  25. package/public/{chunk-G4AIF26G.js → chunk-372WUI7S.js} +1 -1
  26. package/public/{chunk-ZEHT5TXS.js → chunk-3V46MRPL.js} +1 -1
  27. package/public/chunk-3XP7P7AN.js +1 -0
  28. package/public/chunk-4VJO3NLF.js +1 -0
  29. package/public/{chunk-GOW5VSYJ.js → chunk-555LSHXI.js} +1 -1
  30. package/public/chunk-5AUK5PWH.js +8 -0
  31. package/public/{chunk-NFJLJG67.js → chunk-5IY4HBDP.js} +1 -1
  32. package/public/{chunk-EJ3RNOUF.js → chunk-5NG7YGKN.js} +1 -1
  33. package/public/chunk-6UCIAXK6.js +1 -0
  34. package/public/chunk-6VKSH4CW.js +23 -0
  35. package/public/chunk-73RBP4CY.js +1 -0
  36. package/public/{chunk-3YMB7PLM.js → chunk-7KI7JRX2.js} +1 -1
  37. package/public/chunk-7T3FFVRY.js +5 -0
  38. package/public/{chunk-M33BFKOK.js → chunk-AEV6BU2D.js} +1 -1
  39. package/public/chunk-AIPBP4WQ.js +1 -0
  40. package/public/{chunk-Y6TXYIFY.js → chunk-AJTG3DAQ.js} +1 -1
  41. package/public/{chunk-CEC3XQIL.js → chunk-BAAMM2ML.js} +1 -1
  42. package/public/{chunk-WRIO6X76.js → chunk-BBRUD5GG.js} +1 -1
  43. package/public/chunk-BWRRMFHE.js +1 -0
  44. package/public/chunk-BY2CUGGW.js +1 -0
  45. package/public/{chunk-JWB2Z7MI.js → chunk-CW3SNYSJ.js} +2 -2
  46. package/public/{chunk-QDK7JEL3.js → chunk-CZ6QXBCU.js} +1 -1
  47. package/public/{chunk-U566L526.js → chunk-D35WUZO6.js} +1 -1
  48. package/public/chunk-D6324U6S.js +1 -0
  49. package/public/{chunk-RDGZT57P.js → chunk-DR3PPRHT.js} +1 -1
  50. package/public/{chunk-ELWVABN2.js → chunk-EG47PBXK.js} +1 -1
  51. package/public/chunk-EM4PY2IW.js +2 -0
  52. package/public/chunk-EMNSPXBW.js +1 -0
  53. package/public/chunk-ES2MU5SI.js +1 -0
  54. package/public/chunk-FSEM6KZV.js +1 -0
  55. package/public/{chunk-JRX7HEQF.js → chunk-FTXM7V3D.js} +1 -1
  56. package/public/{chunk-65HVQJKS.js → chunk-G3NX3T7F.js} +1 -1
  57. package/public/chunk-GRC72ZZN.js +1 -0
  58. package/public/chunk-H2FER33U.js +1 -0
  59. package/public/{chunk-2I2FMJI5.js → chunk-H7K5IKT4.js} +1 -1
  60. package/public/{chunk-PL5LIFS5.js → chunk-HJ3VCKHK.js} +1 -1
  61. package/public/chunk-HQKGESBV.js +1 -0
  62. package/public/{chunk-ANCTYTNR.js → chunk-J764EFYE.js} +1 -1
  63. package/public/{chunk-ZOLUFCSO.js → chunk-JBQX4JBH.js} +1 -1
  64. package/public/{chunk-IF56BKOM.js → chunk-JLHHOKTZ.js} +1 -1
  65. package/public/chunk-KNONO6BV.js +1 -0
  66. package/public/{chunk-FMIYWTUO.js → chunk-L363G5Q4.js} +1 -1
  67. package/public/chunk-LYF2OTD3.js +1 -0
  68. package/public/chunk-M65E2N3W.js +1 -0
  69. package/public/{chunk-KEJUCLLQ.js → chunk-MZCLNSUE.js} +18 -18
  70. package/public/chunk-NF7NFSZ2.js +1 -0
  71. package/public/{chunk-Q5XXV7OZ.js → chunk-O7TIBTSL.js} +1 -1
  72. package/public/chunk-PA2T4ZXS.js +1 -0
  73. package/public/{chunk-BW2OYIQQ.js → chunk-PC5ESBQP.js} +1 -1
  74. package/public/chunk-PD5EB4DW.js +1 -0
  75. package/public/{chunk-WA7CM2WB.js → chunk-PND5CEJO.js} +1 -1
  76. package/public/chunk-PSQMDHWX.js +1 -0
  77. package/public/{chunk-L7P4OVCU.js → chunk-QJQSHTGR.js} +1 -1
  78. package/public/chunk-QPWMOUFB.js +1 -0
  79. package/public/chunk-QYMCMLB7.js +1 -0
  80. package/public/{chunk-H6USGONO.js → chunk-RGTWSAWF.js} +1 -1
  81. package/public/{chunk-DQBVZWYJ.js → chunk-S6UXXPGF.js} +1 -1
  82. package/public/{chunk-YWKZ3P6I.js → chunk-SCRWY2OT.js} +1 -1
  83. package/public/chunk-SJZKPQ3C.js +1 -0
  84. package/public/{chunk-GU62TFEX.js → chunk-SOY4E6NB.js} +1 -1
  85. package/public/{chunk-VBIW5MAS.js → chunk-STK57BD2.js} +1 -1
  86. package/public/chunk-SVEN7LI2.js +1 -0
  87. package/public/chunk-TB5MBXQB.js +1 -0
  88. package/public/{chunk-4VKEWS3F.js → chunk-TJJCM4OW.js} +1 -1
  89. package/public/chunk-TQ3LU6FS.js +1 -0
  90. package/public/{chunk-75IBFLA3.js → chunk-U25KENE7.js} +1 -1
  91. package/public/chunk-U7L5UCXJ.js +1 -0
  92. package/public/chunk-U7OSWS55.js +1 -0
  93. package/public/{chunk-L3YFIHHA.js → chunk-VED4A7PH.js} +1 -1
  94. package/public/{chunk-6OLZUPEL.js → chunk-VIBZ3RVZ.js} +1 -1
  95. package/public/chunk-W6X46MTW.js +7 -0
  96. package/public/{chunk-PAPULWMP.js → chunk-WBNKBB5Y.js} +1 -1
  97. package/public/{chunk-FIDKTTX5.js → chunk-WTTWP6KF.js} +1 -1
  98. package/public/chunk-Y2BOJE4F.js +1 -0
  99. package/public/{chunk-2P6TQXK5.js → chunk-YRLGO2UB.js} +1 -1
  100. package/public/{chunk-KO47X5JW.js → chunk-ZDYQY6CZ.js} +2 -2
  101. package/public/{chunk-AQKG2GBX.js → chunk-ZSNQUM33.js} +1 -1
  102. package/public/index.html +2 -2
  103. package/public/main-57MAROLQ.js +1 -0
  104. package/public/{styles-PKR3EGHP.css → styles-2WUR6UCO.css} +1 -1
  105. package/public/chunk-2EMPNH2X.js +0 -5
  106. package/public/chunk-63HH4VDH.js +0 -1
  107. package/public/chunk-AD3CVSF3.js +0 -1
  108. package/public/chunk-AWFMVHZM.js +0 -1
  109. package/public/chunk-AZ43ESWQ.js +0 -1
  110. package/public/chunk-BX3FYLVB.js +0 -1
  111. package/public/chunk-CPUG2M2H.js +0 -1
  112. package/public/chunk-EIH5Y7XE.js +0 -1
  113. package/public/chunk-ENZISB64.js +0 -1
  114. package/public/chunk-EWUBHGYD.js +0 -1
  115. package/public/chunk-FDPTBVVC.js +0 -2
  116. package/public/chunk-FM64LLBQ.js +0 -1
  117. package/public/chunk-HTUHQ4SG.js +0 -1
  118. package/public/chunk-JCXIHP4I.js +0 -1
  119. package/public/chunk-JT5RXRUB.js +0 -1
  120. package/public/chunk-JXXNGV25.js +0 -23
  121. package/public/chunk-KJZAE2V2.js +0 -8
  122. package/public/chunk-L6TG3NQO.js +0 -1
  123. package/public/chunk-NR37MAXW.js +0 -7
  124. package/public/chunk-OI4FCF4W.js +0 -1
  125. package/public/chunk-OJOO3WHX.js +0 -1
  126. package/public/chunk-PN2GLNQY.js +0 -1
  127. package/public/chunk-RBCV2UNN.js +0 -1
  128. package/public/chunk-RTFEC5XJ.js +0 -1
  129. package/public/chunk-S7ZABB45.js +0 -1
  130. package/public/chunk-SLK7BIMW.js +0 -1
  131. package/public/chunk-SZKXSPBW.js +0 -1
  132. package/public/chunk-VCN57D2Q.js +0 -1
  133. package/public/chunk-VRKDNRJB.js +0 -1
  134. package/public/chunk-W7RFS666.js +0 -1
  135. package/public/chunk-XDHXR3B3.js +0 -1
  136. package/public/chunk-XE5QPZAY.js +0 -1
  137. package/public/chunk-YCC2JBUO.js +0 -1
  138. package/public/chunk-YYZZ6YJZ.js +0 -1
  139. package/public/chunk-ZR3Y3COV.js +0 -1
  140. package/public/chunk-ZX5UK7SO.js +0 -1
  141. package/public/main-PWI2VFRJ.js +0 -1
  142. /package/public/{polyfills-GCAZ7JAV.js → polyfills-WE4HA5DL.js} +0 -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.77.0-beta.2",
4
+ "version": "4.77.1-beta.0",
5
5
  "description": "A web based management, configuration and control platform for Homebridge.",
6
6
  "author": "oznu <dev@oz.nu>",
7
7
  "license": "MIT",
@@ -82,17 +82,17 @@
82
82
  "@fastify/helmet": "11.1.1",
83
83
  "@fastify/multipart": "8.3.1",
84
84
  "@fastify/static": "7.0.4",
85
- "@homebridge/hap-client": "2.2.0",
85
+ "@homebridge/hap-client": "3.1.0",
86
86
  "@homebridge/node-pty-prebuilt-multiarch": "0.11.14",
87
87
  "@nestjs/axios": "3.1.3",
88
- "@nestjs/common": "10.4.18",
89
- "@nestjs/core": "10.4.18",
88
+ "@nestjs/common": "10.4.19",
89
+ "@nestjs/core": "10.4.19",
90
90
  "@nestjs/jwt": "10.2.0",
91
91
  "@nestjs/passport": "10.0.3",
92
- "@nestjs/platform-fastify": "10.4.18",
93
- "@nestjs/platform-socket.io": "10.4.18",
92
+ "@nestjs/platform-fastify": "10.4.19",
93
+ "@nestjs/platform-socket.io": "10.4.19",
94
94
  "@nestjs/swagger": "8.1.1",
95
- "@nestjs/websockets": "10.4.18",
95
+ "@nestjs/websockets": "10.4.19",
96
96
  "axios": "1.10.0",
97
97
  "bash-color": "0.0.4",
98
98
  "class-transformer": "0.5.1",
@@ -113,27 +113,27 @@
113
113
  "reflect-metadata": "0.2.2",
114
114
  "rxjs": "7.8.2",
115
115
  "semver": "7.7.2",
116
- "systeminformation": "5.27.1",
116
+ "systeminformation": "5.27.7",
117
117
  "tail": "2.2.6",
118
118
  "tar": "7.4.3",
119
119
  "tcp-port-used": "1.0.2",
120
120
  "unzipper": "0.12.3"
121
121
  },
122
122
  "devDependencies": {
123
- "@antfu/eslint-config": "^4.14.1",
124
- "@nestjs/testing": "^10.4.18",
123
+ "@antfu/eslint-config": "^4.16.1",
124
+ "@nestjs/testing": "^10.4.19",
125
125
  "@prettier/plugin-xml": "^3.4.1",
126
126
  "@types/fs-extra": "^11.0.4",
127
- "@types/lodash": "^4.17.17",
128
- "@types/node": "^24.0.1",
127
+ "@types/lodash": "^4.17.20",
128
+ "@types/node": "^24.0.10",
129
129
  "@types/node-schedule": "^2.1.7",
130
130
  "@types/passport-jwt": "^4.0.1",
131
131
  "@types/semver": "^7.7.0",
132
132
  "@types/tail": "^2.2.3",
133
133
  "@types/tcp-port-used": "^1.0.4",
134
134
  "@types/unzipper": "^0.10.11",
135
- "@vitest/coverage-v8": "^3.2.3",
136
- "concurrently": "^9.1.2",
135
+ "@vitest/coverage-v8": "^3.2.4",
136
+ "concurrently": "^9.2.0",
137
137
  "eslint-plugin-format": "^1.0.1",
138
138
  "form-data": "^4.0.3",
139
139
  "nodemon": "^3.1.10",
@@ -142,12 +142,15 @@
142
142
  "ts-node": "^10.9.2",
143
143
  "tsconfig-paths": "^4.2.0",
144
144
  "typescript": "^5.8.3",
145
- "unplugin-swc": "^1.5.4",
146
- "vitest": "^3.2.3"
145
+ "unplugin-swc": "^1.5.5",
146
+ "vitest": "^3.2.4"
147
147
  },
148
148
  "overrides": {
149
149
  "@nestjs/platform-fastify": {
150
150
  "fastify": "4.29.1"
151
+ },
152
+ "vitest": {
153
+ "vite": "^6.3.5"
151
154
  }
152
155
  },
153
156
  "maintainers": [
@@ -213,7 +213,7 @@ License: "MIT"
213
213
 
214
214
  MIT License
215
215
 
216
- Copyright (c) 2024 Tiberiu Zuld
216
+ Copyright (c) 2025 Tiberiu Zuld
217
217
 
218
218
  Permission is hereby granted, free of charge, to any person obtaining a copy
219
219
  of this software and associated documentation files (the "Software"), to deal
@@ -378,6 +378,33 @@ Package: dragula
378
378
  License: "MIT"
379
379
 
380
380
 
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
+
381
408
  --------------------------------------------------------------------------------
382
409
  Package: ng2-dragula
383
410
  License: "MIT"
@@ -39,12 +39,12 @@
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 id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="46" y="84" width="17" height="5" />
43
- <rect id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="46" y="94" width="20" height="5" />
44
- <rect id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="46" y="103" width="22" height="5" />
45
- <rect id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="20" y="103" width="22" height="5" />
46
- <rect id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="22" y="94" width="20" height="5" />
47
- <rect id="Rectangle" class="airpurifier_off_lgrey" fill="#454545" x="25" y="84" width="17" height="5" />
42
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="46" y="84" width="17" height="5" />
43
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="46" y="94" width="20" height="5" />
44
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="46" y="103" width="22" height="5" />
45
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="20" y="103" width="22" height="5" />
46
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="22" y="94" width="20" height="5" />
47
+ <rect class="rectangle airpurifier_off_lgrey" fill="#e0e0e0" x="25" y="84" width="17" height="5" />
48
48
  </g>
49
49
  </g>
50
50
  </svg>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <svg
3
+ width="32"
4
+ height="32"
5
+ viewBox="0 0 100 100"
6
+ version="1.1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink="http://www.w3.org/1999/xlink"
9
+ preserveAspectRatio="xMidYMid meet"
10
+ >
11
+ <g transform="scale(1, 0.75) translate(0, -40)">
12
+ <g id="airpurifier">
13
+ <polygon
14
+ id="Path"
15
+ fill="#808080"
16
+ 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"
17
+ />
18
+ <rect class="rectangle" fill="#e0e0e0" x="46" y="84" width="17" height="5" />
19
+ <rect class="rectangle" fill="#e0e0e0" x="46" y="94" width="20" height="5" />
20
+ <rect class="rectangle" fill="#e0e0e0" x="46" y="103" width="22" height="5" />
21
+ <rect class="rectangle" fill="#e0e0e0" x="20" y="103" width="22" height="5" />
22
+ <rect class="rectangle" fill="#e0e0e0" x="22" y="94" width="20" height="5" />
23
+ <rect class="rectangle" fill="#e0e0e0" x="25" y="84" width="17" height="5" />
24
+ </g>
25
+ </g>
26
+ </svg>
@@ -47,7 +47,7 @@
47
47
  </g>
48
48
  </g>
49
49
  <g>
50
- <use xlink:href="#djkaoyeRK" opacity="1" fill="#ed5151" fill-opacity="1" />
50
+ <use xlink:href="#djkaoyeRK" opacity="1" fill="#ffcf55" fill-opacity="1" />
51
51
  <g>
52
52
  <use
53
53
  xlink:href="#djkaoyeRK"
@@ -0,0 +1,103 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg
4
+ version="1.1"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ xmlns:xlink="http://www.w3.org/1999/xlink"
7
+ preserveAspectRatio="xMidYMid meet"
8
+ viewBox="0 0 485 410"
9
+ width="485"
10
+ height="410"
11
+ >
12
+ <defs>
13
+ <path
14
+ d="M170.94 317.5C157.13 317.5 145.94 328.69 145.94 342.5C145.94 345.83 145.94 362.5 145.94 392.5L467.19 392.5C467.19 362.5 467.19 345.83 467.19 342.5C467.19 328.69 456 317.5 442.19 317.5C433.39 317.5 284.59 317.5 170.94 317.5Z"
15
+ id="d5qI6nbAnR"
16
+ />
17
+ <path
18
+ d="M287.66 17.5C251.41 17.5 220.35 43.43 213.88 79.09C211.04 94.98 196.86 174.45 171.34 317.5L416.79 317.5C391.27 174.45 377.1 94.98 374.26 79.09C367.78 43.43 336.71 17.5 300.46 17.5C297.9 17.5 288.94 17.5 287.66 17.5Z"
19
+ id="djkaoyeRK"
20
+ />
21
+ <path
22
+ d="M330 105C323.1 105 317.5 110.6 317.5 117.5C317.5 124.4 323.1 130 330 130C336.9 130 342.5 124.4 342.5 117.5C342.5 110.6 336.9 105 330 105Z"
23
+ id="djWmFz4iV"
24
+ />
25
+ <path
26
+ d="M307.07 5.22L310.18 5.5L313.26 5.89L316.31 6.38L319.33 6.98L322.31 7.68L325.25 8.48L328.15 9.38L331.01 10.37L333.83 11.46L336.6 12.65L339.32 13.93L342 15.3L344.62 16.76L347.18 18.3L349.69 19.93L352.14 21.64L354.53 23.44L356.85 25.31L359.11 27.27L361.31 29.29L363.43 31.4L365.48 33.57L367.46 35.82L369.36 38.14L371.19 40.52L372.93 42.97L374.6 45.48L376.18 48.06L377.67 50.7L379.07 53.39L380.39 56.14L381.61 58.95L382.73 61.81L383.76 64.72L384.7 67.68L385.53 70.69L386.25 73.75L386.87 76.85L427.57 305L442.5 305L444.04 305.03L445.57 305.12L447.08 305.28L448.57 305.49L450.05 305.76L451.5 306.09L452.93 306.48L454.34 306.91L455.72 307.41L457.08 307.95L458.41 308.55L459.72 309.19L460.99 309.89L462.24 310.63L463.45 311.41L464.63 312.24L465.78 313.12L466.89 314.04L467.97 315L469 316L470 317.03L470.96 318.11L471.88 319.22L472.76 320.37L473.59 321.55L474.37 322.76L475.11 324.01L475.81 325.28L476.45 326.59L477.05 327.92L477.59 329.28L478.09 330.66L478.52 332.07L478.91 333.5L479.24 334.95L479.51 336.43L479.72 337.92L479.88 339.43L479.97 340.96L480 342.5L480 392.5L479.99 393.02L479.96 393.53L479.91 394.03L479.84 394.53L479.75 395.02L479.64 395.5L479.51 395.98L479.36 396.45L479.2 396.91L479.02 397.37L478.82 397.81L478.6 398.24L478.37 398.67L478.13 399.08L477.86 399.49L477.59 399.88L477.3 400.26L476.99 400.63L476.67 400.99L476.34 401.34L475.99 401.67L475.63 401.99L475.26 402.3L474.88 402.59L474.49 402.86L474.08 403.13L473.67 403.37L473.24 403.6L472.81 403.82L472.37 404.02L471.91 404.2L471.45 404.36L470.98 404.51L470.5 404.64L470.02 404.75L469.53 404.84L469.03 404.91L468.53 404.96L468.02 404.99L467.5 405L17.5 405L16.98 404.99L16.47 404.96L15.97 404.91L15.47 404.84L14.98 404.75L14.5 404.64L14.02 404.51L13.55 404.36L13.09 404.2L12.63 404.02L12.19 403.82L11.76 403.6L11.33 403.37L10.92 403.13L10.51 402.86L10.12 402.59L9.74 402.3L9.37 401.99L9.01 401.67L8.66 401.34L8.33 400.99L8.01 400.63L7.7 400.26L7.41 399.88L7.13 399.49L6.87 399.08L6.63 398.67L6.4 398.24L6.18 397.81L5.98 397.37L5.8 396.91L5.64 396.45L5.49 395.98L5.36 395.5L5.25 395.02L5.16 394.53L5.09 394.03L5.04 393.53L5.01 393.02L5 392.5L5 342.5L5.03 340.96L5.12 339.43L5.28 337.92L5.49 336.43L5.76 334.95L6.09 333.5L6.48 332.07L6.91 330.66L7.41 329.28L7.95 327.92L8.55 326.59L9.19 325.28L9.89 324.01L10.63 322.76L11.41 321.55L12.24 320.37L13.12 319.22L14.04 318.11L15 317.03L16 316L17.03 315L18.11 314.04L19.22 313.12L20.37 312.24L21.55 311.41L22.76 310.63L24.01 309.89L25.28 309.19L26.59 308.55L27.92 307.95L29.28 307.41L30.66 306.91L32.07 306.48L33.5 306.09L34.95 305.76L36.43 305.49L37.92 305.28L39.43 305.12L40.96 305.03L42.5 305L57.43 305L98.13 76.89L98.75 73.79L99.48 70.73L100.31 67.72L101.24 64.75L102.27 61.84L103.39 58.98L104.61 56.17L105.93 53.41L107.33 50.72L108.82 48.08L110.4 45.5L112.07 42.99L113.81 40.53L115.63 38.15L117.54 35.83L119.52 33.58L121.57 31.41L123.69 29.3L125.88 27.27L128.14 25.32L130.47 23.44L132.86 21.65L135.31 19.93L137.82 18.3L140.38 16.76L143 15.3L145.67 13.93L148.39 12.65L151.17 11.47L153.98 10.37L156.84 9.38L159.75 8.48L162.69 7.68L165.67 6.98L168.68 6.38L171.73 5.89L174.82 5.5L177.93 5.22L181.06 5.06L184.23 5L300.78 5L303.94 5.06L307.07 5.22ZM41.99 330.01L41.48 330.04L40.97 330.09L40.48 330.16L39.98 330.25L39.5 330.36L39.02 330.49L38.55 330.64L38.09 330.8L37.64 330.98L37.2 331.18L36.76 331.4L36.34 331.63L35.92 331.88L35.52 332.14L35.12 332.41L34.74 332.71L34.37 333.01L34.01 333.33L33.67 333.67L33.33 334.01L33.01 334.37L32.71 334.74L32.41 335.12L32.14 335.52L31.88 335.92L31.63 336.34L31.4 336.76L31.18 337.2L30.98 337.64L30.8 338.09L30.64 338.55L30.49 339.02L30.36 339.5L30.25 339.98L30.16 340.48L30.09 340.97L30.04 341.48L30.01 341.99L30 342.5L30 380L455 380L455 342.5L454.99 341.99L454.96 341.48L454.91 340.97L454.84 340.48L454.75 339.98L454.64 339.5L454.51 339.02L454.36 338.55L454.2 338.09L454.02 337.64L453.82 337.2L453.6 336.76L453.37 336.34L453.12 335.92L452.86 335.52L452.59 335.12L452.29 334.74L451.99 334.37L451.67 334.01L451.33 333.67L450.99 333.33L450.63 333.01L450.26 332.71L449.88 332.41L449.48 332.14L449.08 331.88L448.66 331.63L448.24 331.4L447.8 331.18L447.36 330.98L446.91 330.8L446.45 330.64L445.98 330.49L445.5 330.36L445.02 330.25L444.52 330.16L444.03 330.09L443.52 330.04L443.01 330.01L442.5 330L42.5 330L41.99 330.01ZM182.71 30.03L181.2 30.13L179.68 30.29L178.17 30.51L176.65 30.8L175.13 31.15L173.61 31.57L172.09 32.05L170.57 32.6L169.05 33.21L167.52 33.88L165.99 34.62L164.47 35.42L162.94 36.29L161.41 37.22L159.88 38.21L158.34 39.27L156.81 40.39L155.27 41.58L153.74 42.83L152.2 44.15L150.66 45.52L149.12 46.97L147.58 48.48L146.04 50.05L144.49 51.68L142.95 53.38L141.4 55.15L139.85 56.98L138.3 58.87L136.75 60.82L135.2 62.84L133.65 64.93L132.09 67.08L130.53 69.29L128.98 71.57L127.42 73.91L125.86 76.32L124.3 78.79L122.74 81.32L82.83 305L402.17 305L362.27 81.28L361.83 79.07L361.31 76.89L360.71 74.74L360.05 72.63L359.32 70.55L358.51 68.51L357.64 66.51L356.7 64.54L355.7 62.62L354.63 60.74L353.5 58.9L352.32 57.11L351.07 55.36L349.77 53.66L348.41 52.01L346.99 50.4L345.53 48.85L344.01 47.35L342.45 45.9L340.83 44.5L339.17 43.17L337.46 41.89L335.71 40.66L333.92 39.5L332.09 38.4L330.22 37.35L328.31 36.38L326.37 35.46L324.39 34.62L322.38 33.84L320.33 33.12L318.26 32.48L316.16 31.91L314.03 31.41L311.87 30.99L309.7 30.63L307.5 30.36L305.27 30.16L303.03 30.04L300.78 30L184.23 30L182.71 30.03Z"
27
+ id="a8tK7qlUXs"
28
+ />
29
+ <path
30
+ d="M351.96 164.33C350.73 157.53 344.21 153.02 337.43 154.26C330.64 155.5 326.13 162 327.36 168.8C329.2 178.89 343.87 259.64 345.7 269.73C346.94 276.58 353.5 281.03 360.23 279.8C367.03 278.56 371.53 272.06 370.3 265.27C366.63 245.08 353.79 174.42 351.96 164.33Z"
31
+ id="dFkilpBi1"
32
+ />
33
+ </defs>
34
+ <g>
35
+ <g>
36
+ <g>
37
+ <use xlink:href="#d5qI6nbAnR" opacity="1" fill="#57555c" fill-opacity="1" />
38
+ <g>
39
+ <use
40
+ xlink:href="#d5qI6nbAnR"
41
+ opacity="1"
42
+ fill-opacity="0"
43
+ stroke="#000000"
44
+ stroke-width="1"
45
+ stroke-opacity="0"
46
+ />
47
+ </g>
48
+ </g>
49
+ <g>
50
+ <use xlink:href="#djkaoyeRK" opacity="1" fill="#ed5151" fill-opacity="1" />
51
+ <g>
52
+ <use
53
+ xlink:href="#djkaoyeRK"
54
+ opacity="1"
55
+ fill-opacity="0"
56
+ stroke="#000000"
57
+ stroke-width="1"
58
+ stroke-opacity="0"
59
+ />
60
+ </g>
61
+ </g>
62
+ <g>
63
+ <use xlink:href="#djWmFz4iV" opacity="1" fill="#000000" fill-opacity="1" />
64
+ <g>
65
+ <use
66
+ xlink:href="#djWmFz4iV"
67
+ opacity="1"
68
+ fill-opacity="0"
69
+ stroke="#000000"
70
+ stroke-width="1"
71
+ stroke-opacity="0"
72
+ />
73
+ </g>
74
+ </g>
75
+ <g>
76
+ <use xlink:href="#a8tK7qlUXs" opacity="1" fill="#000000" fill-opacity="1" />
77
+ <g>
78
+ <use
79
+ xlink:href="#a8tK7qlUXs"
80
+ opacity="1"
81
+ fill-opacity="0"
82
+ stroke="#000000"
83
+ stroke-width="1"
84
+ stroke-opacity="0"
85
+ />
86
+ </g>
87
+ </g>
88
+ <g>
89
+ <use xlink:href="#dFkilpBi1" opacity="1" fill="#000000" fill-opacity="1" />
90
+ <g>
91
+ <use
92
+ xlink:href="#dFkilpBi1"
93
+ opacity="1"
94
+ fill-opacity="0"
95
+ stroke="#000000"
96
+ stroke-width="1"
97
+ stroke-opacity="0"
98
+ />
99
+ </g>
100
+ </g>
101
+ </g>
102
+ </g>
103
+ </svg>
@@ -1,4 +1,4 @@
1
- import{a as S,b as O,c as U}from"./chunk-Y6TXYIFY.js";import{a as g}from"./chunk-ELWVABN2.js";import{M as w,e as x,g as h,ga as E,la as L,n as R}from"./chunk-NR37MAXW.js";var F=x((v,b)=>{(function(a,l){typeof define=="function"&&define.amd?define([],l):typeof v<"u"?l():(l(),a.FileSaver={})})(v,function(){"use strict";function a(e,t){return typeof t>"u"?t={autoBom:!1}:typeof t!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e}function l(e,t,n){var i=new XMLHttpRequest;i.open("GET",e),i.responseType="blob",i.onload=function(){r(i.response,t,n)},i.onerror=function(){console.error("could not download file")},i.send()}function d(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function c(e){try{e.dispatchEvent(new MouseEvent("click"))}catch{var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var s=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),r=s.saveAs||(typeof window!="object"||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(e,t,n){var i=s.URL||s.webkitURL,o=document.createElement("a");t=t||e.name||"download",o.download=t,o.rel="noopener",typeof e=="string"?(o.href=e,o.origin===location.origin?c(o):d(o.href)?l(e,t,n):c(o,o.target="_blank")):(o.href=i.createObjectURL(e),setTimeout(function(){i.revokeObjectURL(o.href)},4e4),setTimeout(function(){c(o)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,n){if(t=t||e.name||"download",typeof e!="string")navigator.msSaveOrOpenBlob(a(e,n),t);else if(d(e))l(e,t,n);else{var i=document.createElement("a");i.href=e,i.target="_blank",setTimeout(function(){c(i)})}}:function(e,t,n,i){if(i=i||open("","_blank"),i&&(i.document.title=i.document.body.innerText="downloading..."),typeof e=="string")return l(e,t,n);var o=e.type==="application/octet-stream",z=/constructor/i.test(s.HTMLElement)||s.safari,y=/CriOS\/[\d]+/.test(navigator.userAgent);if((y||o&&z||m)&&typeof FileReader<"u"){var u=new FileReader;u.onloadend=function(){var f=u.result;f=y?f:f.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=f:location=f,i=null},u.readAsDataURL(e)}else{var A=s.URL||s.webkitURL,p=A.createObjectURL(e);i?i.location=p:location.href=p,i=null,setTimeout(function(){A.revokeObjectURL(p)},4e4)}});s.saveAs=r.saveAs=r,typeof b<"u"&&(b.exports=r)})});var k=h(S(),1),j=h(O(),1),T=h(U(),1);var W=(()=>{class a{$ws=L(g);term;io;fitAddon;webLinksAddon;resize;elementResize;pluginName;constructor(){}startTerminal(d,c={},s,m){this.pluginName=m,this.elementResize=s,this.io=this.$ws.connectToNamespace("log"),this.term=new k.Terminal(c),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new j.FitAddon,this.webLinksAddon=new T.WebLinksAddon,this.resize=new R,this.term.open(d.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.subscribe(()=>{this.term.reset(),this.io.socket.emit("tail-log",{cols:this.term.cols,rows:this.term.rows})}),this.io.socket.on("disconnect",()=>{this.term.write(`
1
+ import{a as S,b as O,c as U}from"./chunk-AJTG3DAQ.js";import{a as g}from"./chunk-EG47PBXK.js";import{M as w,e as x,g as h,ga as E,la as L,n as R}from"./chunk-W6X46MTW.js";var F=x((v,b)=>{(function(a,l){typeof define=="function"&&define.amd?define([],l):typeof v<"u"?l():(l(),a.FileSaver={})})(v,function(){"use strict";function a(e,t){return typeof t>"u"?t={autoBom:!1}:typeof t!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e}function l(e,t,n){var i=new XMLHttpRequest;i.open("GET",e),i.responseType="blob",i.onload=function(){r(i.response,t,n)},i.onerror=function(){console.error("could not download file")},i.send()}function d(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function c(e){try{e.dispatchEvent(new MouseEvent("click"))}catch{var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var s=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),r=s.saveAs||(typeof window!="object"||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(e,t,n){var i=s.URL||s.webkitURL,o=document.createElement("a");t=t||e.name||"download",o.download=t,o.rel="noopener",typeof e=="string"?(o.href=e,o.origin===location.origin?c(o):d(o.href)?l(e,t,n):c(o,o.target="_blank")):(o.href=i.createObjectURL(e),setTimeout(function(){i.revokeObjectURL(o.href)},4e4),setTimeout(function(){c(o)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,n){if(t=t||e.name||"download",typeof e!="string")navigator.msSaveOrOpenBlob(a(e,n),t);else if(d(e))l(e,t,n);else{var i=document.createElement("a");i.href=e,i.target="_blank",setTimeout(function(){c(i)})}}:function(e,t,n,i){if(i=i||open("","_blank"),i&&(i.document.title=i.document.body.innerText="downloading..."),typeof e=="string")return l(e,t,n);var o=e.type==="application/octet-stream",z=/constructor/i.test(s.HTMLElement)||s.safari,y=/CriOS\/[\d]+/.test(navigator.userAgent);if((y||o&&z||m)&&typeof FileReader<"u"){var u=new FileReader;u.onloadend=function(){var f=u.result;f=y?f:f.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=f:location=f,i=null},u.readAsDataURL(e)}else{var A=s.URL||s.webkitURL,p=A.createObjectURL(e);i?i.location=p:location.href=p,i=null,setTimeout(function(){A.revokeObjectURL(p)},4e4)}});s.saveAs=r.saveAs=r,typeof b<"u"&&(b.exports=r)})});var k=h(S(),1),j=h(O(),1),T=h(U(),1);var W=(()=>{class a{$ws=L(g);term;io;fitAddon;webLinksAddon;resize;elementResize;pluginName;constructor(){}startTerminal(d,c={},s,m){this.pluginName=m,this.elementResize=s,this.io=this.$ws.connectToNamespace("log"),this.term=new k.Terminal(c),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new j.FitAddon,this.webLinksAddon=new T.WebLinksAddon,this.resize=new R,this.term.open(d.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.subscribe(()=>{this.term.reset(),this.io.socket.emit("tail-log",{cols:this.term.cols,rows:this.term.rows})}),this.io.socket.on("disconnect",()=>{this.term.write(`
2
2
  \r
3
3
  \rWebsocket failed to connect. Is the server running?
4
4
  \r
@@ -1,4 +1,4 @@
1
- import{a as p,b as w,c as b}from"./chunk-Y6TXYIFY.js";import{a as c}from"./chunk-ELWVABN2.js";import{M as i,g as o,ga as m,la as h,n}from"./chunk-NR37MAXW.js";var d=o(p(),1),a=o(w(),1),l=o(b(),1);var v=(()=>{class e{$ws=h(c);term;io;fitAddon;webLinksAddon;resize;elementResize;constructor(){}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete()}startTerminal(r,s={},f){this.elementResize=f,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new d.Terminal(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new a.FitAddon,this.webLinksAddon=new l.WebLinksAddon,this.resize=new n,this.term.open(r.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(i(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
1
+ import{a as p,b as w,c as b}from"./chunk-AJTG3DAQ.js";import{a as c}from"./chunk-EG47PBXK.js";import{M as i,g as o,ga as m,la as h,n}from"./chunk-W6X46MTW.js";var d=o(p(),1),a=o(w(),1),l=o(b(),1);var v=(()=>{class e{$ws=h(c);term;io;fitAddon;webLinksAddon;resize;elementResize;constructor(){}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete()}startTerminal(r,s={},f){this.elementResize=f,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new d.Terminal(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new a.FitAddon,this.webLinksAddon=new l.WebLinksAddon,this.resize=new n,this.term.open(r.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(i(200)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
2
2
  \r
3
3
  \rTerminal disconnected. Is the server running?
4
4
  \r
@@ -1 +1 @@
1
- import{d as w}from"./chunk-ZOLUFCSO.js";import{a as E}from"./chunk-ELWVABN2.js";import{b}from"./chunk-75IBFLA3.js";import{k,n as S}from"./chunk-RTFEC5XJ.js";import{a as $,b as T}from"./chunk-GOW5VSYJ.js";import{$a as n,Ac as c,Bc as m,Cc as C,Hb as d,Ib as f,Nb as g,Ob as r,Pb as i,Qb as l,Xa as x,Yb as h,jc as s,kc as o,la as a,lb as _,wc as y}from"./chunk-NR37MAXW.js";var I=t=>({command:t});function D(t,u){if(t&1&&(r(0,"div",7),s(1),i()),t&2){let e=h();n(),o(e.error)}}function R(t,u){t&1&&(r(0,"p",9),s(1),c(2,"translate"),i(),r(3,"div",10)(4,"div",11),l(5,"i",12),i()()),t&2&&(n(),o(m(2,1,"restart.please_wait_while_server_restarts")))}function B(t,u){if(t&1&&(r(0,"div",8)(1,"p"),s(2),c(3,"translate"),i(),l(4,"p",13),c(5,"translate"),i()),t&2){let e=h();n(2),o(m(3,2,"platform.docker.server_long_time")),n(2),g("innerHTML",C(5,4,"platform.docker.run_with_restart",y(7,I,e.command)),x)}}var U=(()=>{class t{$api=a(S);$router=a(w);$settings=a(b);$toastr=a(k);$translate=a($);$ws=a(E);checkTimeout;checkDelay;resp={};timeout=!1;error=!1;command='<span class="font-monospace">--restart=always</span>';io;constructor(){}ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$api.put("/platform-tools/docker/restart-container",{}).subscribe({next:e=>{this.resp=e,this.checkIfServerUp()},error:e=>{this.error=this.$translate.instant("restart.toast_server_restart_error"),console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{(e.status==="up"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("platform.docker.container_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},1e4),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},6e4)}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=_({type:t,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fab","fa-fw","fa-docker",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"fas","fa-fw","fa-spinner","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(p,v){p&1&&(r(0,"div",0)(1,"h3",1),s(2),c(3,"translate"),i()(),r(4,"div",2)(5,"div",3),l(6,"i",4),i(),r(7,"div",5)(8,"h4",6),s(9),c(10,"translate"),i(),d(11,D,2,1,"div",7)(12,R,6,3),d(13,B,6,9,"div",8),i()()),p&2&&(n(2),o(m(3,4,"menu.restart.title")),n(7),o(m(10,6,"platform.docker.title_restarting")),n(2),f(v.error?11:12),n(2),f(v.timeout?13:-1))},dependencies:[T],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{U as a};
1
+ import{d as w}from"./chunk-JBQX4JBH.js";import{a as E}from"./chunk-EG47PBXK.js";import{b}from"./chunk-U25KENE7.js";import{k,n as S}from"./chunk-SJZKPQ3C.js";import{a as $,b as T}from"./chunk-555LSHXI.js";import{$a as n,Ac as c,Bc as m,Cc as C,Hb as d,Ib as f,Nb as g,Ob as r,Pb as i,Qb as l,Xa as x,Yb as h,jc as s,kc as o,la as a,lb as _,wc as y}from"./chunk-W6X46MTW.js";var I=t=>({command:t});function D(t,u){if(t&1&&(r(0,"div",7),s(1),i()),t&2){let e=h();n(),o(e.error)}}function R(t,u){t&1&&(r(0,"p",9),s(1),c(2,"translate"),i(),r(3,"div",10)(4,"div",11),l(5,"i",12),i()()),t&2&&(n(),o(m(2,1,"restart.please_wait_while_server_restarts")))}function B(t,u){if(t&1&&(r(0,"div",8)(1,"p"),s(2),c(3,"translate"),i(),l(4,"p",13),c(5,"translate"),i()),t&2){let e=h();n(2),o(m(3,2,"platform.docker.server_long_time")),n(2),g("innerHTML",C(5,4,"platform.docker.run_with_restart",y(7,I,e.command)),x)}}var U=(()=>{class t{$api=a(S);$router=a(w);$settings=a(b);$toastr=a(k);$translate=a($);$ws=a(E);checkTimeout;checkDelay;resp={};timeout=!1;error=!1;command='<span class="font-monospace">--restart=always</span>';io;constructor(){}ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$api.put("/platform-tools/docker/restart-container",{}).subscribe({next:e=>{this.resp=e,this.checkIfServerUp()},error:e=>{this.error=this.$translate.instant("restart.toast_server_restart_error"),console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{(e.status==="up"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("platform.docker.container_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},1e4),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},6e4)}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=_({type:t,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fab","fa-fw","fa-docker",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"fas","fa-fw","fa-spinner","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(p,v){p&1&&(r(0,"div",0)(1,"h3",1),s(2),c(3,"translate"),i()(),r(4,"div",2)(5,"div",3),l(6,"i",4),i(),r(7,"div",5)(8,"h4",6),s(9),c(10,"translate"),i(),d(11,D,2,1,"div",7)(12,R,6,3),d(13,B,6,9,"div",8),i()()),p&2&&(n(2),o(m(3,4,"menu.restart.title")),n(7),o(m(10,6,"platform.docker.title_restarting")),n(2),f(v.error?11:12),n(2),f(v.timeout?13:-1))},dependencies:[T],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{U as a};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-CZ6QXBCU.js";import"./chunk-JBQX4JBH.js";import"./chunk-EG47PBXK.js";import"./chunk-FTXM7V3D.js";import"./chunk-U25KENE7.js";import"./chunk-SJZKPQ3C.js";import"./chunk-EM4PY2IW.js";import"./chunk-555LSHXI.js";import"./chunk-W6X46MTW.js";export{a as RestartLinuxComponent};
@@ -0,0 +1 @@
1
+ import"./chunk-D35WUZO6.js";import{q as n}from"./chunk-7T3FFVRY.js";import{A as p}from"./chunk-5NG7YGKN.js";import{g as i}from"./chunk-JBQX4JBH.js";import"./chunk-EM4PY2IW.js";import{c as u}from"./chunk-555LSHXI.js";import{ha as t,kd as m,mb as r}from"./chunk-W6X46MTW.js";var l=[{path:"",loadComponent:()=>import("./chunk-BY2CUGGW.js").then(o=>o.SupportComponent)}],d=(()=>{class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=r({type:o});static \u0275inj=t({imports:[i.forChild(l),i]})}return o})();var R=(()=>{class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=r({type:o});static \u0275inj=t({imports:[m,d,n,p,u]})}return o})();export{R as SupportModule};
@@ -1 +1 @@
1
- import{$ as M,B as F,C as P,D as q,Da as w,L as J,Nc as Z,O as L,Y as R,a as I,fb as N,ga as h,ha as X,ja as v,ka as o,mb as z,ob as W,r as p,t as f,tb as S,x as V}from"./chunk-NR37MAXW.js";var c=class{},Q=(()=>{class n extends c{getTranslation(e){return p({})}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),b=class{},Y=(()=>{class n{handle(e){return e.key}static \u0275fac=function(t){return new(t||n)};static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})();function j(n,r){if(n===r)return!0;if(n===null||r===null)return!1;if(n!==n&&r!==r)return!0;let e=typeof n,t=typeof r,s,i,a;if(e==t&&e=="object")if(Array.isArray(n)){if(!Array.isArray(r))return!1;if((s=n.length)==r.length){for(i=0;i<s;i++)if(!j(n[i],r[i]))return!1;return!0}}else{if(Array.isArray(r))return!1;a=Object.create(null);for(i in n){if(!j(n[i],r[i]))return!1;a[i]=!0}for(i in r)if(!(i in a)&&typeof r[i]<"u")return!1;return!0}return!1}function u(n){return typeof n<"u"&&n!==null}function D(n){return E(n)&&!H(n)&&n!==null}function E(n){return typeof n=="object"}function H(n){return Array.isArray(n)}function $(n){return typeof n=="string"}function ne(n){return typeof n=="function"}function K(n,r){let e=Object.assign({},n);return E(n)?(E(n)&&E(r)&&Object.keys(r).forEach(t=>{D(r[t])?t in n?e[t]=K(n[t],r[t]):Object.assign(e,{[t]:r[t]}):Object.assign(e,{[t]:r[t]})}),e):K({},r)}function x(n,r){let e=r.split(".");r="";do r+=e.shift(),u(n)&&u(n[r])&&(D(n[r])||H(n[r])||!e.length)?(n=n[r],r=""):e.length?r+=".":n=void 0;while(e.length);return n}function se(n,r,e){let t=r.split("."),s=n;for(let i=0;i<t.length;i++){let a=t[i];i===t.length-1?s[a]=e:((!s[a]||!D(s[a]))&&(s[a]={}),s=s[a])}}var d=class{},k=(()=>{class n extends d{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,t){if($(e))return this.interpolateString(e,t);if(ne(e))return this.interpolateFunction(e,t)}interpolateFunction(e,t){return e(t)}interpolateString(e,t){return t?e.replace(this.templateMatcher,(s,i)=>{let a=x(t,i);return u(a)?a:s}):e}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),g=class{},ee=(()=>{class n extends g{compile(e,t){return e}compileTranslations(e,t){return e}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),m=class{defaultLang;currentLang=this.defaultLang;translations={};langs=[];onTranslationChange=new S;onLangChange=new S;onDefaultLangChange=new S},O=new v("ISOLATE_TRANSLATE_SERVICE"),U=new v("USE_DEFAULT_LANG"),_=new v("DEFAULT_LANGUAGE"),B=new v("USE_EXTEND"),C=n=>f(n)?n:p(n),G=(()=>{class n{store;currentLoader;compiler;parser;missingTranslationHandler;useDefaultLang;extend;loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onDefaultLangChange(){return this.store.onDefaultLangChange}get defaultLang(){return this.store.defaultLang}set defaultLang(e){this.store.defaultLang=e}get currentLang(){return this.store.currentLang}set currentLang(e){this.store.currentLang=e}get langs(){return this.store.langs}set langs(e){this.store.langs=e}get translations(){return this.store.translations}set translations(e){this.store.translations=e}constructor(e,t,s,i,a,A=!0,l=!1,T=!1,y){this.store=e,this.currentLoader=t,this.compiler=s,this.parser=i,this.missingTranslationHandler=a,this.useDefaultLang=A,this.extend=T,l&&(this.store=new m),y&&this.setDefaultLang(y)}setDefaultLang(e){if(e===this.defaultLang)return;let t=this.retrieveTranslations(e);typeof t<"u"?(this.defaultLang==null&&(this.defaultLang=e),t.pipe(L(1)).subscribe(()=>{this.changeDefaultLang(e)})):this.changeDefaultLang(e)}getDefaultLang(){return this.defaultLang}use(e){if(this.lastUseLanguage=e,e===this.currentLang)return p(this.translations[e]);this.currentLang||(this.currentLang=e);let t=this.retrieveTranslations(e);return f(t)?(t.pipe(L(1)).subscribe(()=>{this.changeLang(e)}),t):(this.changeLang(e),p(this.translations[e]))}changeLang(e){e===this.lastUseLanguage&&(this.currentLang=e,this.onLangChange.emit({lang:e,translations:this.translations[e]}),this.defaultLang==null&&this.changeDefaultLang(e))}retrieveTranslations(e){if(typeof this.translations[e]>"u"||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}getTranslation(e){return this.loadAndCompileTranslations(e)}loadAndCompileTranslations(e){this.pending=!0;let t=this.currentLoader.getTranslation(e).pipe(R(1),L(1));return this.loadingTranslations=t.pipe(V(s=>this.compiler.compileTranslations(s,e)),R(1),L(1)),this.loadingTranslations.subscribe({next:s=>{this.translations[e]=this.extend&&this.translations[e]?I(I({},s),this.translations[e]):s,this.updateLangs(),this.pending=!1},error:s=>{this.pending=!1}}),t}setTranslation(e,t,s=!1){let i=this.compiler.compileTranslations(t,e);(s||this.extend)&&this.translations[e]?this.translations[e]=K(this.translations[e],i):this.translations[e]=i,this.updateLangs(),this.onTranslationChange.emit({lang:e,translations:this.translations[e]})}getLangs(){return this.langs}addLangs(e){let t=e.filter(s=>!this.langs.includes(s));t.length>0&&(this.langs=[...this.langs,...t])}updateLangs(){this.addLangs(Object.keys(this.translations))}getParsedResultForKey(e,t,s){let i;if(e&&(i=this.runInterpolation(x(e,t),s)),i===void 0&&this.defaultLang!=null&&this.defaultLang!==this.currentLang&&this.useDefaultLang&&(i=this.runInterpolation(x(this.translations[this.defaultLang],t),s)),i===void 0){let a={key:t,translateService:this};typeof s<"u"&&(a.interpolateParams=s),i=this.missingTranslationHandler.handle(a)}return i!==void 0?i:t}runInterpolation(e,t){if(H(e))return e.map(s=>this.runInterpolation(s,t));if(D(e)){let s={};for(let i in e){let a=this.runInterpolation(e[i],t);a!==void 0&&(s[i]=a)}return s}else return this.parser.interpolate(e,t)}getParsedResult(e,t,s){if(t instanceof Array){let i={},a=!1;for(let l of t)i[l]=this.getParsedResultForKey(e,l,s),a=a||f(i[l]);if(!a)return i;let A=t.map(l=>C(i[l]));return q(A).pipe(V(l=>{let T={};return l.forEach((y,te)=>{T[t[te]]=y}),T}))}return this.getParsedResultForKey(e,t,s)}get(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(J(s=>C(this.getParsedResult(s,e,t)))):C(this.getParsedResult(this.translations[this.currentLang],e,t))}getStreamOnTranslationChange(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return F(P(()=>this.get(e,t)),this.onTranslationChange.pipe(M(s=>{let i=this.getParsedResult(s.translations,e,t);return C(i)})))}stream(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" required');return F(P(()=>this.get(e,t)),this.onLangChange.pipe(M(s=>{let i=this.getParsedResult(s.translations,e,t);return C(i)})))}instant(e,t){if(!u(e)||e.length===0)throw new Error('Parameter "key" is required and cannot be empty');let s=this.getParsedResult(this.translations[this.currentLang],e,t);return f(s)?Array.isArray(e)?e.reduce((i,a)=>(i[a]=a,i),{}):e:s}set(e,t,s=this.currentLang){se(this.translations[s],e,$(t)?this.compiler.compile(t,s):this.compiler.compileTranslations(t,s)),this.updateLangs(),this.onTranslationChange.emit({lang:s,translations:this.translations[s]})}changeDefaultLang(e){this.defaultLang=e,this.onDefaultLangChange.emit({lang:e,translations:this.translations[e]})}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],delete this.translations[e]}getBrowserLang(){if(typeof window>"u"||!window.navigator)return;let e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}static \u0275fac=function(t){return new(t||n)(o(m),o(c),o(g),o(d),o(b),o(U),o(O),o(B),o(_))};static \u0275prov=h({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var ve=(()=>{class n{translate;_ref;value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onDefaultLangChange;constructor(e,t){this.translate=e,this._ref=t}updateValue(e,t,s){let i=a=>{this.value=a!==void 0?a:e,this.lastKey=e,this._ref.markForCheck()};if(s){let a=this.translate.getParsedResult(s,e,t);f(a)?a.subscribe(i):i(a)}this.translate.get(e,t).subscribe(i)}transform(e,...t){if(!e||!e.length)return e;if(j(e,this.lastKey)&&j(t,this.lastParams))return this.value;let s;if(u(t[0])&&t.length)if($(t[0])&&t[0].length){let i=t[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{s=JSON.parse(i)}catch(a){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${t[0]}`)}}else D(t[0])&&(s=t[0]);return this.lastKey=e,this.lastParams=t,this.updateValue(e,s),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(i=>{this.lastKey&&i.lang===this.translate.currentLang&&(this.lastKey=null,this.updateValue(e,s,i.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(i=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,s,i.translations))})),this.onDefaultLangChange||(this.onDefaultLangChange=this.translate.onDefaultLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,s))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onDefaultLangChange<"u"&&(this.onDefaultLangChange.unsubscribe(),this.onDefaultLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(t){return new(t||n)(N(G,16),N(Z,16))};static \u0275pipe=W({name:"translate",type:n,pure:!1});static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})();var Ce=(()=>{class n{static forRoot(e={}){return{ngModule:n,providers:[e.loader||{provide:c,useClass:Q},e.compiler||{provide:g,useClass:ee},e.parser||{provide:d,useClass:k},e.missingTranslationHandler||{provide:b,useClass:Y},m,{provide:O,useValue:e.isolate},{provide:U,useValue:e.useDefaultLang},{provide:B,useValue:e.extend},{provide:_,useValue:e.defaultLanguage},G]}}static forChild(e={}){return{ngModule:n,providers:[e.loader||{provide:c,useClass:Q},e.compiler||{provide:g,useClass:ee},e.parser||{provide:d,useClass:k},e.missingTranslationHandler||{provide:b,useClass:Y},{provide:O,useValue:e.isolate},{provide:U,useValue:e.useDefaultLang},{provide:B,useValue:e.extend},{provide:_,useValue:e.defaultLanguage},G]}}static \u0275fac=function(t){return new(t||n)};static \u0275mod=z({type:n});static \u0275inj=X({})}return n})();export{G as a,ve as b,Ce as c};
1
+ import{$ as M,B as F,C as P,D as q,Da as w,L as J,Nc as Z,O as L,Y as R,a as I,fb as N,ga as h,ha as X,ja as v,ka as o,mb as z,ob as W,r as p,t as f,tb as S,x as V}from"./chunk-W6X46MTW.js";var c=class{},Q=(()=>{class n extends c{getTranslation(e){return p({})}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),b=class{},Y=(()=>{class n{handle(e){return e.key}static \u0275fac=function(t){return new(t||n)};static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})();function j(n,r){if(n===r)return!0;if(n===null||r===null)return!1;if(n!==n&&r!==r)return!0;let e=typeof n,t=typeof r,s,i,a;if(e==t&&e=="object")if(Array.isArray(n)){if(!Array.isArray(r))return!1;if((s=n.length)==r.length){for(i=0;i<s;i++)if(!j(n[i],r[i]))return!1;return!0}}else{if(Array.isArray(r))return!1;a=Object.create(null);for(i in n){if(!j(n[i],r[i]))return!1;a[i]=!0}for(i in r)if(!(i in a)&&typeof r[i]<"u")return!1;return!0}return!1}function u(n){return typeof n<"u"&&n!==null}function D(n){return E(n)&&!H(n)&&n!==null}function E(n){return typeof n=="object"}function H(n){return Array.isArray(n)}function $(n){return typeof n=="string"}function ne(n){return typeof n=="function"}function K(n,r){let e=Object.assign({},n);return E(n)?(E(n)&&E(r)&&Object.keys(r).forEach(t=>{D(r[t])?t in n?e[t]=K(n[t],r[t]):Object.assign(e,{[t]:r[t]}):Object.assign(e,{[t]:r[t]})}),e):K({},r)}function x(n,r){let e=r.split(".");r="";do r+=e.shift(),u(n)&&u(n[r])&&(D(n[r])||H(n[r])||!e.length)?(n=n[r],r=""):e.length?r+=".":n=void 0;while(e.length);return n}function se(n,r,e){let t=r.split("."),s=n;for(let i=0;i<t.length;i++){let a=t[i];i===t.length-1?s[a]=e:((!s[a]||!D(s[a]))&&(s[a]={}),s=s[a])}}var d=class{},k=(()=>{class n extends d{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,t){if($(e))return this.interpolateString(e,t);if(ne(e))return this.interpolateFunction(e,t)}interpolateFunction(e,t){return e(t)}interpolateString(e,t){return t?e.replace(this.templateMatcher,(s,i)=>{let a=x(t,i);return u(a)?a:s}):e}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),g=class{},ee=(()=>{class n extends g{compile(e,t){return e}compileTranslations(e,t){return e}static \u0275fac=(()=>{let e;return function(s){return(e||(e=w(n)))(s||n)}})();static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})(),m=class{defaultLang;currentLang=this.defaultLang;translations={};langs=[];onTranslationChange=new S;onLangChange=new S;onDefaultLangChange=new S},O=new v("ISOLATE_TRANSLATE_SERVICE"),U=new v("USE_DEFAULT_LANG"),_=new v("DEFAULT_LANGUAGE"),B=new v("USE_EXTEND"),C=n=>f(n)?n:p(n),G=(()=>{class n{store;currentLoader;compiler;parser;missingTranslationHandler;useDefaultLang;extend;loadingTranslations;pending=!1;_translationRequests={};lastUseLanguage=null;get onTranslationChange(){return this.store.onTranslationChange}get onLangChange(){return this.store.onLangChange}get onDefaultLangChange(){return this.store.onDefaultLangChange}get defaultLang(){return this.store.defaultLang}set defaultLang(e){this.store.defaultLang=e}get currentLang(){return this.store.currentLang}set currentLang(e){this.store.currentLang=e}get langs(){return this.store.langs}set langs(e){this.store.langs=e}get translations(){return this.store.translations}set translations(e){this.store.translations=e}constructor(e,t,s,i,a,A=!0,l=!1,T=!1,y){this.store=e,this.currentLoader=t,this.compiler=s,this.parser=i,this.missingTranslationHandler=a,this.useDefaultLang=A,this.extend=T,l&&(this.store=new m),y&&this.setDefaultLang(y)}setDefaultLang(e){if(e===this.defaultLang)return;let t=this.retrieveTranslations(e);typeof t<"u"?(this.defaultLang==null&&(this.defaultLang=e),t.pipe(L(1)).subscribe(()=>{this.changeDefaultLang(e)})):this.changeDefaultLang(e)}getDefaultLang(){return this.defaultLang}use(e){if(this.lastUseLanguage=e,e===this.currentLang)return p(this.translations[e]);this.currentLang||(this.currentLang=e);let t=this.retrieveTranslations(e);return f(t)?(t.pipe(L(1)).subscribe(()=>{this.changeLang(e)}),t):(this.changeLang(e),p(this.translations[e]))}changeLang(e){e===this.lastUseLanguage&&(this.currentLang=e,this.onLangChange.emit({lang:e,translations:this.translations[e]}),this.defaultLang==null&&this.changeDefaultLang(e))}retrieveTranslations(e){if(typeof this.translations[e]>"u"||this.extend)return this._translationRequests[e]=this._translationRequests[e]||this.loadAndCompileTranslations(e),this._translationRequests[e]}getTranslation(e){return this.loadAndCompileTranslations(e)}loadAndCompileTranslations(e){this.pending=!0;let t=this.currentLoader.getTranslation(e).pipe(R(1),L(1));return this.loadingTranslations=t.pipe(V(s=>this.compiler.compileTranslations(s,e)),R(1),L(1)),this.loadingTranslations.subscribe({next:s=>{this.translations[e]=this.extend&&this.translations[e]?I(I({},s),this.translations[e]):s,this.updateLangs(),this.pending=!1},error:s=>{this.pending=!1}}),t}setTranslation(e,t,s=!1){let i=this.compiler.compileTranslations(t,e);(s||this.extend)&&this.translations[e]?this.translations[e]=K(this.translations[e],i):this.translations[e]=i,this.updateLangs(),this.onTranslationChange.emit({lang:e,translations:this.translations[e]})}getLangs(){return this.langs}addLangs(e){let t=e.filter(s=>!this.langs.includes(s));t.length>0&&(this.langs=[...this.langs,...t])}updateLangs(){this.addLangs(Object.keys(this.translations))}getParsedResultForKey(e,t,s){let i;if(e&&(i=this.runInterpolation(x(e,t),s)),i===void 0&&this.defaultLang!=null&&this.defaultLang!==this.currentLang&&this.useDefaultLang&&(i=this.runInterpolation(x(this.translations[this.defaultLang],t),s)),i===void 0){let a={key:t,translateService:this};typeof s<"u"&&(a.interpolateParams=s),i=this.missingTranslationHandler.handle(a)}return i!==void 0?i:t}runInterpolation(e,t){if(H(e))return e.map(s=>this.runInterpolation(s,t));if(D(e)){let s={};for(let i in e){let a=this.runInterpolation(e[i],t);a!==void 0&&(s[i]=a)}return s}else return this.parser.interpolate(e,t)}getParsedResult(e,t,s){if(t instanceof Array){let i={},a=!1;for(let l of t)i[l]=this.getParsedResultForKey(e,l,s),a=a||f(i[l]);if(!a)return i;let A=t.map(l=>C(i[l]));return q(A).pipe(V(l=>{let T={};return l.forEach((y,te)=>{T[t[te]]=y}),T}))}return this.getParsedResultForKey(e,t,s)}get(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return this.pending?this.loadingTranslations.pipe(J(s=>C(this.getParsedResult(s,e,t)))):C(this.getParsedResult(this.translations[this.currentLang],e,t))}getStreamOnTranslationChange(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return F(P(()=>this.get(e,t)),this.onTranslationChange.pipe(M(s=>{let i=this.getParsedResult(s.translations,e,t);return C(i)})))}stream(e,t){if(!u(e)||!e.length)throw new Error('Parameter "key" required');return F(P(()=>this.get(e,t)),this.onLangChange.pipe(M(s=>{let i=this.getParsedResult(s.translations,e,t);return C(i)})))}instant(e,t){if(!u(e)||e.length===0)throw new Error('Parameter "key" is required and cannot be empty');let s=this.getParsedResult(this.translations[this.currentLang],e,t);return f(s)?Array.isArray(e)?e.reduce((i,a)=>(i[a]=a,i),{}):e:s}set(e,t,s=this.currentLang){se(this.translations[s],e,$(t)?this.compiler.compile(t,s):this.compiler.compileTranslations(t,s)),this.updateLangs(),this.onTranslationChange.emit({lang:s,translations:this.translations[s]})}changeDefaultLang(e){this.defaultLang=e,this.onDefaultLangChange.emit({lang:e,translations:this.translations[e]})}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}resetLang(e){delete this._translationRequests[e],delete this.translations[e]}getBrowserLang(){if(typeof window>"u"||!window.navigator)return;let e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}static \u0275fac=function(t){return new(t||n)(o(m),o(c),o(g),o(d),o(b),o(U),o(O),o(B),o(_))};static \u0275prov=h({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var ve=(()=>{class n{translate;_ref;value="";lastKey=null;lastParams=[];onTranslationChange;onLangChange;onDefaultLangChange;constructor(e,t){this.translate=e,this._ref=t}updateValue(e,t,s){let i=a=>{this.value=a!==void 0?a:e,this.lastKey=e,this._ref.markForCheck()};if(s){let a=this.translate.getParsedResult(s,e,t);f(a)?a.subscribe(i):i(a)}this.translate.get(e,t).subscribe(i)}transform(e,...t){if(!e||!e.length)return e;if(j(e,this.lastKey)&&j(t,this.lastParams))return this.value;let s;if(u(t[0])&&t.length)if($(t[0])&&t[0].length){let i=t[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{s=JSON.parse(i)}catch(a){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${t[0]}`)}}else D(t[0])&&(s=t[0]);return this.lastKey=e,this.lastParams=t,this.updateValue(e,s),this._dispose(),this.onTranslationChange||(this.onTranslationChange=this.translate.onTranslationChange.subscribe(i=>{this.lastKey&&i.lang===this.translate.currentLang&&(this.lastKey=null,this.updateValue(e,s,i.translations))})),this.onLangChange||(this.onLangChange=this.translate.onLangChange.subscribe(i=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,s,i.translations))})),this.onDefaultLangChange||(this.onDefaultLangChange=this.translate.onDefaultLangChange.subscribe(()=>{this.lastKey&&(this.lastKey=null,this.updateValue(e,s))})),this.value}_dispose(){typeof this.onTranslationChange<"u"&&(this.onTranslationChange.unsubscribe(),this.onTranslationChange=void 0),typeof this.onLangChange<"u"&&(this.onLangChange.unsubscribe(),this.onLangChange=void 0),typeof this.onDefaultLangChange<"u"&&(this.onDefaultLangChange.unsubscribe(),this.onDefaultLangChange=void 0)}ngOnDestroy(){this._dispose()}static \u0275fac=function(t){return new(t||n)(N(G,16),N(Z,16))};static \u0275pipe=W({name:"translate",type:n,pure:!1});static \u0275prov=h({token:n,factory:n.\u0275fac})}return n})();var Ce=(()=>{class n{static forRoot(e={}){return{ngModule:n,providers:[e.loader||{provide:c,useClass:Q},e.compiler||{provide:g,useClass:ee},e.parser||{provide:d,useClass:k},e.missingTranslationHandler||{provide:b,useClass:Y},m,{provide:O,useValue:e.isolate},{provide:U,useValue:e.useDefaultLang},{provide:B,useValue:e.extend},{provide:_,useValue:e.defaultLanguage},G]}}static forChild(e={}){return{ngModule:n,providers:[e.loader||{provide:c,useClass:Q},e.compiler||{provide:g,useClass:ee},e.parser||{provide:d,useClass:k},e.missingTranslationHandler||{provide:b,useClass:Y},{provide:O,useValue:e.isolate},{provide:U,useValue:e.useDefaultLang},{provide:B,useValue:e.extend},{provide:_,useValue:e.defaultLanguage},G]}}static \u0275fac=function(t){return new(t||n)};static \u0275mod=z({type:n});static \u0275inj=X({})}return n})();export{G as a,ve as b,Ce as c};