iobroker.eos-admin 7.9.74 → 7.9.76

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 (481) hide show
  1. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v54.js +1 -1
  2. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v55.js +1 -1
  3. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v56.js +1 -1
  4. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v57.js +1 -1
  5. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v58.js +1 -1
  6. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v59.js +1 -1
  7. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v60.js +1 -1
  8. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v61.js +1 -1
  9. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v62.js +1 -1
  10. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v63.js +1 -1
  11. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v64.js +1 -1
  12. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v65.js +1 -1
  13. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v66.js +1 -1
  14. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v67.js +1 -1
  15. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v68.js +1 -1
  16. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v69.js +1 -1
  17. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v70.js +1 -1
  18. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v71.js +1 -1
  19. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v72.js +1 -1
  20. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v73.js +1 -1
  21. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v74.js +1 -2
  22. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v75.js +1 -0
  23. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v76.js +2 -0
  24. package/adminWww/assets/Adapters-B5_jQ7DE-v54.js +1 -1
  25. package/adminWww/assets/Adapters-B5_jQ7DE-v55.js +1 -1
  26. package/adminWww/assets/Adapters-B5_jQ7DE-v56.js +1 -1
  27. package/adminWww/assets/Adapters-B5_jQ7DE-v57.js +1 -1
  28. package/adminWww/assets/Adapters-B5_jQ7DE-v58.js +1 -1
  29. package/adminWww/assets/Adapters-B5_jQ7DE-v59.js +1 -1
  30. package/adminWww/assets/Adapters-B5_jQ7DE-v60.js +1 -1
  31. package/adminWww/assets/Adapters-B5_jQ7DE-v61.js +1 -1
  32. package/adminWww/assets/Adapters-B5_jQ7DE-v62.js +1 -1
  33. package/adminWww/assets/Adapters-B5_jQ7DE-v63.js +1 -1
  34. package/adminWww/assets/Adapters-B5_jQ7DE-v64.js +1 -1
  35. package/adminWww/assets/Adapters-B5_jQ7DE-v65.js +1 -1
  36. package/adminWww/assets/Adapters-B5_jQ7DE-v66.js +1 -1
  37. package/adminWww/assets/Adapters-B5_jQ7DE-v67.js +1 -1
  38. package/adminWww/assets/Adapters-B5_jQ7DE-v68.js +1 -1
  39. package/adminWww/assets/Adapters-B5_jQ7DE-v69.js +1 -1
  40. package/adminWww/assets/Adapters-B5_jQ7DE-v70.js +1 -1
  41. package/adminWww/assets/Adapters-B5_jQ7DE-v71.js +1 -1
  42. package/adminWww/assets/Adapters-B5_jQ7DE-v72.js +1 -1
  43. package/adminWww/assets/Adapters-B5_jQ7DE-v73.js +1 -1
  44. package/adminWww/assets/Adapters-B5_jQ7DE-v74.js +1 -9
  45. package/adminWww/assets/Adapters-B5_jQ7DE-v75.js +1 -0
  46. package/adminWww/assets/Adapters-B5_jQ7DE-v76.js +9 -0
  47. package/adminWww/assets/Config-hHK2UzGP-v54.js +1 -1
  48. package/adminWww/assets/Config-hHK2UzGP-v55.js +1 -1
  49. package/adminWww/assets/Config-hHK2UzGP-v56.js +1 -1
  50. package/adminWww/assets/Config-hHK2UzGP-v57.js +1 -1
  51. package/adminWww/assets/Config-hHK2UzGP-v58.js +1 -1
  52. package/adminWww/assets/Config-hHK2UzGP-v59.js +1 -1
  53. package/adminWww/assets/Config-hHK2UzGP-v60.js +1 -1
  54. package/adminWww/assets/Config-hHK2UzGP-v61.js +1 -1
  55. package/adminWww/assets/Config-hHK2UzGP-v62.js +1 -1
  56. package/adminWww/assets/Config-hHK2UzGP-v63.js +1 -1
  57. package/adminWww/assets/Config-hHK2UzGP-v64.js +1 -1
  58. package/adminWww/assets/Config-hHK2UzGP-v65.js +1 -1
  59. package/adminWww/assets/Config-hHK2UzGP-v66.js +1 -1
  60. package/adminWww/assets/Config-hHK2UzGP-v67.js +1 -1
  61. package/adminWww/assets/Config-hHK2UzGP-v68.js +1 -1
  62. package/adminWww/assets/Config-hHK2UzGP-v69.js +1 -1
  63. package/adminWww/assets/Config-hHK2UzGP-v70.js +1 -1
  64. package/adminWww/assets/Config-hHK2UzGP-v71.js +1 -1
  65. package/adminWww/assets/Config-hHK2UzGP-v72.js +1 -1
  66. package/adminWww/assets/Config-hHK2UzGP-v73.js +1 -1
  67. package/adminWww/assets/Config-hHK2UzGP-v74.js +1 -1
  68. package/adminWww/assets/Config-hHK2UzGP-v75.js +1 -0
  69. package/adminWww/assets/Config-hHK2UzGP-v76.js +1 -0
  70. package/adminWww/assets/CustomTab-B0wqoazH-v54.js +1 -1
  71. package/adminWww/assets/CustomTab-B0wqoazH-v55.js +1 -1
  72. package/adminWww/assets/CustomTab-B0wqoazH-v56.js +1 -1
  73. package/adminWww/assets/CustomTab-B0wqoazH-v57.js +1 -1
  74. package/adminWww/assets/CustomTab-B0wqoazH-v58.js +1 -1
  75. package/adminWww/assets/CustomTab-B0wqoazH-v59.js +1 -1
  76. package/adminWww/assets/CustomTab-B0wqoazH-v60.js +1 -1
  77. package/adminWww/assets/CustomTab-B0wqoazH-v61.js +1 -1
  78. package/adminWww/assets/CustomTab-B0wqoazH-v62.js +1 -1
  79. package/adminWww/assets/CustomTab-B0wqoazH-v63.js +1 -1
  80. package/adminWww/assets/CustomTab-B0wqoazH-v64.js +1 -1
  81. package/adminWww/assets/CustomTab-B0wqoazH-v65.js +1 -1
  82. package/adminWww/assets/CustomTab-B0wqoazH-v66.js +1 -1
  83. package/adminWww/assets/CustomTab-B0wqoazH-v67.js +1 -1
  84. package/adminWww/assets/CustomTab-B0wqoazH-v68.js +1 -1
  85. package/adminWww/assets/CustomTab-B0wqoazH-v69.js +1 -1
  86. package/adminWww/assets/CustomTab-B0wqoazH-v70.js +1 -1
  87. package/adminWww/assets/CustomTab-B0wqoazH-v71.js +1 -1
  88. package/adminWww/assets/CustomTab-B0wqoazH-v72.js +1 -1
  89. package/adminWww/assets/CustomTab-B0wqoazH-v73.js +1 -1
  90. package/adminWww/assets/CustomTab-B0wqoazH-v74.js +1 -1
  91. package/adminWww/assets/CustomTab-B0wqoazH-v75.js +1 -0
  92. package/adminWww/assets/CustomTab-B0wqoazH-v76.js +1 -0
  93. package/adminWww/assets/DeviceManager-BFmQeYQ1-v54.js +1 -1
  94. package/adminWww/assets/DeviceManager-BFmQeYQ1-v55.js +1 -1
  95. package/adminWww/assets/DeviceManager-BFmQeYQ1-v56.js +1 -1
  96. package/adminWww/assets/DeviceManager-BFmQeYQ1-v57.js +1 -1
  97. package/adminWww/assets/DeviceManager-BFmQeYQ1-v58.js +1 -1
  98. package/adminWww/assets/DeviceManager-BFmQeYQ1-v59.js +1 -1
  99. package/adminWww/assets/DeviceManager-BFmQeYQ1-v60.js +1 -1
  100. package/adminWww/assets/DeviceManager-BFmQeYQ1-v61.js +1 -1
  101. package/adminWww/assets/DeviceManager-BFmQeYQ1-v62.js +1 -1
  102. package/adminWww/assets/DeviceManager-BFmQeYQ1-v63.js +1 -1
  103. package/adminWww/assets/DeviceManager-BFmQeYQ1-v64.js +1 -1
  104. package/adminWww/assets/DeviceManager-BFmQeYQ1-v65.js +1 -1
  105. package/adminWww/assets/DeviceManager-BFmQeYQ1-v66.js +1 -1
  106. package/adminWww/assets/DeviceManager-BFmQeYQ1-v67.js +1 -1
  107. package/adminWww/assets/DeviceManager-BFmQeYQ1-v68.js +1 -1
  108. package/adminWww/assets/DeviceManager-BFmQeYQ1-v69.js +1 -1
  109. package/adminWww/assets/DeviceManager-BFmQeYQ1-v70.js +1 -1
  110. package/adminWww/assets/DeviceManager-BFmQeYQ1-v71.js +1 -1
  111. package/adminWww/assets/DeviceManager-BFmQeYQ1-v72.js +1 -1
  112. package/adminWww/assets/DeviceManager-BFmQeYQ1-v73.js +1 -1
  113. package/adminWww/assets/DeviceManager-BFmQeYQ1-v74.js +1 -1
  114. package/adminWww/assets/DeviceManager-BFmQeYQ1-v75.js +1 -0
  115. package/adminWww/assets/DeviceManager-BFmQeYQ1-v76.js +1 -0
  116. package/adminWww/assets/EasyMode-B1d9Vdc4-v54.js +1 -1
  117. package/adminWww/assets/EasyMode-B1d9Vdc4-v55.js +1 -1
  118. package/adminWww/assets/EasyMode-B1d9Vdc4-v56.js +1 -1
  119. package/adminWww/assets/EasyMode-B1d9Vdc4-v57.js +1 -1
  120. package/adminWww/assets/EasyMode-B1d9Vdc4-v58.js +1 -1
  121. package/adminWww/assets/EasyMode-B1d9Vdc4-v59.js +1 -1
  122. package/adminWww/assets/EasyMode-B1d9Vdc4-v60.js +1 -1
  123. package/adminWww/assets/EasyMode-B1d9Vdc4-v61.js +1 -1
  124. package/adminWww/assets/EasyMode-B1d9Vdc4-v62.js +1 -1
  125. package/adminWww/assets/EasyMode-B1d9Vdc4-v63.js +1 -1
  126. package/adminWww/assets/EasyMode-B1d9Vdc4-v64.js +1 -1
  127. package/adminWww/assets/EasyMode-B1d9Vdc4-v65.js +1 -1
  128. package/adminWww/assets/EasyMode-B1d9Vdc4-v66.js +1 -1
  129. package/adminWww/assets/EasyMode-B1d9Vdc4-v67.js +1 -1
  130. package/adminWww/assets/EasyMode-B1d9Vdc4-v68.js +1 -1
  131. package/adminWww/assets/EasyMode-B1d9Vdc4-v69.js +1 -1
  132. package/adminWww/assets/EasyMode-B1d9Vdc4-v70.js +1 -1
  133. package/adminWww/assets/EasyMode-B1d9Vdc4-v71.js +1 -1
  134. package/adminWww/assets/EasyMode-B1d9Vdc4-v72.js +1 -1
  135. package/adminWww/assets/EasyMode-B1d9Vdc4-v73.js +1 -1
  136. package/adminWww/assets/EasyMode-B1d9Vdc4-v74.js +1 -1
  137. package/adminWww/assets/EasyMode-B1d9Vdc4-v75.js +1 -0
  138. package/adminWww/assets/EasyMode-B1d9Vdc4-v76.js +1 -0
  139. package/adminWww/assets/Enums-DbWYxKOo-v54.js +1 -1
  140. package/adminWww/assets/Enums-DbWYxKOo-v55.js +1 -1
  141. package/adminWww/assets/Enums-DbWYxKOo-v56.js +1 -1
  142. package/adminWww/assets/Enums-DbWYxKOo-v57.js +1 -1
  143. package/adminWww/assets/Enums-DbWYxKOo-v58.js +1 -1
  144. package/adminWww/assets/Enums-DbWYxKOo-v59.js +1 -1
  145. package/adminWww/assets/Enums-DbWYxKOo-v60.js +1 -1
  146. package/adminWww/assets/Enums-DbWYxKOo-v61.js +1 -1
  147. package/adminWww/assets/Enums-DbWYxKOo-v62.js +1 -1
  148. package/adminWww/assets/Enums-DbWYxKOo-v63.js +1 -1
  149. package/adminWww/assets/Enums-DbWYxKOo-v64.js +1 -1
  150. package/adminWww/assets/Enums-DbWYxKOo-v65.js +1 -1
  151. package/adminWww/assets/Enums-DbWYxKOo-v66.js +1 -1
  152. package/adminWww/assets/Enums-DbWYxKOo-v67.js +1 -1
  153. package/adminWww/assets/Enums-DbWYxKOo-v68.js +1 -1
  154. package/adminWww/assets/Enums-DbWYxKOo-v69.js +1 -1
  155. package/adminWww/assets/Enums-DbWYxKOo-v70.js +1 -1
  156. package/adminWww/assets/Enums-DbWYxKOo-v71.js +1 -1
  157. package/adminWww/assets/Enums-DbWYxKOo-v72.js +1 -1
  158. package/adminWww/assets/Enums-DbWYxKOo-v73.js +1 -1
  159. package/adminWww/assets/Enums-DbWYxKOo-v74.js +1 -91
  160. package/adminWww/assets/Enums-DbWYxKOo-v75.js +1 -0
  161. package/adminWww/assets/Enums-DbWYxKOo-v76.js +91 -0
  162. package/adminWww/assets/Fields-CX3rKuWb-v54.js +1 -1
  163. package/adminWww/assets/Fields-CX3rKuWb-v55.js +1 -1
  164. package/adminWww/assets/Fields-CX3rKuWb-v56.js +1 -1
  165. package/adminWww/assets/Fields-CX3rKuWb-v57.js +1 -1
  166. package/adminWww/assets/Fields-CX3rKuWb-v58.js +1 -1
  167. package/adminWww/assets/Fields-CX3rKuWb-v59.js +1 -1
  168. package/adminWww/assets/Fields-CX3rKuWb-v60.js +1 -1
  169. package/adminWww/assets/Fields-CX3rKuWb-v61.js +1 -1
  170. package/adminWww/assets/Fields-CX3rKuWb-v62.js +1 -1
  171. package/adminWww/assets/Fields-CX3rKuWb-v63.js +1 -1
  172. package/adminWww/assets/Fields-CX3rKuWb-v64.js +1 -1
  173. package/adminWww/assets/Fields-CX3rKuWb-v65.js +1 -1
  174. package/adminWww/assets/Fields-CX3rKuWb-v66.js +1 -1
  175. package/adminWww/assets/Fields-CX3rKuWb-v67.js +1 -1
  176. package/adminWww/assets/Fields-CX3rKuWb-v68.js +1 -1
  177. package/adminWww/assets/Fields-CX3rKuWb-v69.js +1 -1
  178. package/adminWww/assets/Fields-CX3rKuWb-v70.js +1 -1
  179. package/adminWww/assets/Fields-CX3rKuWb-v71.js +1 -1
  180. package/adminWww/assets/Fields-CX3rKuWb-v72.js +1 -1
  181. package/adminWww/assets/Fields-CX3rKuWb-v73.js +1 -1
  182. package/adminWww/assets/Fields-CX3rKuWb-v74.js +1 -1
  183. package/adminWww/assets/Fields-CX3rKuWb-v75.js +1 -0
  184. package/adminWww/assets/Fields-CX3rKuWb-v76.js +1 -0
  185. package/adminWww/assets/Files-Cd2HOzIE-v54.js +1 -1
  186. package/adminWww/assets/Files-Cd2HOzIE-v55.js +1 -1
  187. package/adminWww/assets/Files-Cd2HOzIE-v56.js +1 -1
  188. package/adminWww/assets/Files-Cd2HOzIE-v57.js +1 -1
  189. package/adminWww/assets/Files-Cd2HOzIE-v58.js +1 -1
  190. package/adminWww/assets/Files-Cd2HOzIE-v59.js +1 -1
  191. package/adminWww/assets/Files-Cd2HOzIE-v60.js +1 -1
  192. package/adminWww/assets/Files-Cd2HOzIE-v61.js +1 -1
  193. package/adminWww/assets/Files-Cd2HOzIE-v62.js +1 -1
  194. package/adminWww/assets/Files-Cd2HOzIE-v63.js +1 -1
  195. package/adminWww/assets/Files-Cd2HOzIE-v64.js +1 -1
  196. package/adminWww/assets/Files-Cd2HOzIE-v65.js +1 -1
  197. package/adminWww/assets/Files-Cd2HOzIE-v66.js +1 -1
  198. package/adminWww/assets/Files-Cd2HOzIE-v67.js +1 -1
  199. package/adminWww/assets/Files-Cd2HOzIE-v68.js +1 -1
  200. package/adminWww/assets/Files-Cd2HOzIE-v69.js +1 -1
  201. package/adminWww/assets/Files-Cd2HOzIE-v70.js +1 -1
  202. package/adminWww/assets/Files-Cd2HOzIE-v71.js +1 -1
  203. package/adminWww/assets/Files-Cd2HOzIE-v72.js +1 -1
  204. package/adminWww/assets/Files-Cd2HOzIE-v73.js +1 -1
  205. package/adminWww/assets/Files-Cd2HOzIE-v74.js +1 -1
  206. package/adminWww/assets/Files-Cd2HOzIE-v75.js +1 -0
  207. package/adminWww/assets/Files-Cd2HOzIE-v76.js +1 -0
  208. package/adminWww/assets/Hosts-Bg8QzW5i-v54.js +1 -1
  209. package/adminWww/assets/Hosts-Bg8QzW5i-v55.js +1 -1
  210. package/adminWww/assets/Hosts-Bg8QzW5i-v56.js +1 -1
  211. package/adminWww/assets/Hosts-Bg8QzW5i-v57.js +1 -1
  212. package/adminWww/assets/Hosts-Bg8QzW5i-v58.js +1 -1
  213. package/adminWww/assets/Hosts-Bg8QzW5i-v59.js +1 -1
  214. package/adminWww/assets/Hosts-Bg8QzW5i-v60.js +1 -1
  215. package/adminWww/assets/Hosts-Bg8QzW5i-v61.js +1 -1
  216. package/adminWww/assets/Hosts-Bg8QzW5i-v62.js +1 -1
  217. package/adminWww/assets/Hosts-Bg8QzW5i-v63.js +1 -1
  218. package/adminWww/assets/Hosts-Bg8QzW5i-v64.js +1 -1
  219. package/adminWww/assets/Hosts-Bg8QzW5i-v65.js +1 -1
  220. package/adminWww/assets/Hosts-Bg8QzW5i-v66.js +1 -1
  221. package/adminWww/assets/Hosts-Bg8QzW5i-v67.js +1 -1
  222. package/adminWww/assets/Hosts-Bg8QzW5i-v68.js +1 -1
  223. package/adminWww/assets/Hosts-Bg8QzW5i-v69.js +1 -1
  224. package/adminWww/assets/Hosts-Bg8QzW5i-v70.js +1 -1
  225. package/adminWww/assets/Hosts-Bg8QzW5i-v71.js +1 -1
  226. package/adminWww/assets/Hosts-Bg8QzW5i-v72.js +1 -1
  227. package/adminWww/assets/Hosts-Bg8QzW5i-v73.js +1 -1
  228. package/adminWww/assets/Hosts-Bg8QzW5i-v74.js +1 -121
  229. package/adminWww/assets/Hosts-Bg8QzW5i-v75.js +1 -0
  230. package/adminWww/assets/Hosts-Bg8QzW5i-v76.js +121 -0
  231. package/adminWww/assets/Instances-YdaGnS5a-v54.js +1 -1
  232. package/adminWww/assets/Instances-YdaGnS5a-v55.js +1 -1
  233. package/adminWww/assets/Instances-YdaGnS5a-v56.js +1 -1
  234. package/adminWww/assets/Instances-YdaGnS5a-v57.js +1 -1
  235. package/adminWww/assets/Instances-YdaGnS5a-v58.js +1 -1
  236. package/adminWww/assets/Instances-YdaGnS5a-v59.js +1 -1
  237. package/adminWww/assets/Instances-YdaGnS5a-v60.js +1 -1
  238. package/adminWww/assets/Instances-YdaGnS5a-v61.js +1 -1
  239. package/adminWww/assets/Instances-YdaGnS5a-v62.js +1 -1
  240. package/adminWww/assets/Instances-YdaGnS5a-v63.js +1 -1
  241. package/adminWww/assets/Instances-YdaGnS5a-v64.js +1 -1
  242. package/adminWww/assets/Instances-YdaGnS5a-v65.js +1 -1
  243. package/adminWww/assets/Instances-YdaGnS5a-v66.js +1 -1
  244. package/adminWww/assets/Instances-YdaGnS5a-v67.js +1 -1
  245. package/adminWww/assets/Instances-YdaGnS5a-v68.js +1 -1
  246. package/adminWww/assets/Instances-YdaGnS5a-v69.js +1 -1
  247. package/adminWww/assets/Instances-YdaGnS5a-v70.js +1 -1
  248. package/adminWww/assets/Instances-YdaGnS5a-v71.js +1 -1
  249. package/adminWww/assets/Instances-YdaGnS5a-v72.js +1 -1
  250. package/adminWww/assets/Instances-YdaGnS5a-v73.js +1 -1
  251. package/adminWww/assets/Instances-YdaGnS5a-v74.js +1 -2
  252. package/adminWww/assets/Instances-YdaGnS5a-v75.js +1 -0
  253. package/adminWww/assets/Instances-YdaGnS5a-v76.js +2 -0
  254. package/adminWww/assets/Intro-DkwRiz1n-v54.js +1 -1
  255. package/adminWww/assets/Intro-DkwRiz1n-v55.js +1 -1
  256. package/adminWww/assets/Intro-DkwRiz1n-v56.js +1 -1
  257. package/adminWww/assets/Intro-DkwRiz1n-v57.js +1 -1
  258. package/adminWww/assets/Intro-DkwRiz1n-v58.js +1 -1
  259. package/adminWww/assets/Intro-DkwRiz1n-v59.js +1 -1
  260. package/adminWww/assets/Intro-DkwRiz1n-v60.js +1 -1
  261. package/adminWww/assets/Intro-DkwRiz1n-v61.js +1 -1
  262. package/adminWww/assets/Intro-DkwRiz1n-v62.js +1 -1
  263. package/adminWww/assets/Intro-DkwRiz1n-v63.js +1 -1
  264. package/adminWww/assets/Intro-DkwRiz1n-v64.js +1 -1
  265. package/adminWww/assets/Intro-DkwRiz1n-v65.js +1 -1
  266. package/adminWww/assets/Intro-DkwRiz1n-v66.js +1 -1
  267. package/adminWww/assets/Intro-DkwRiz1n-v67.js +1 -1
  268. package/adminWww/assets/Intro-DkwRiz1n-v68.js +1 -1
  269. package/adminWww/assets/Intro-DkwRiz1n-v69.js +1 -1
  270. package/adminWww/assets/Intro-DkwRiz1n-v70.js +1 -1
  271. package/adminWww/assets/Intro-DkwRiz1n-v71.js +1 -1
  272. package/adminWww/assets/Intro-DkwRiz1n-v72.js +1 -1
  273. package/adminWww/assets/Intro-DkwRiz1n-v73.js +1 -1
  274. package/adminWww/assets/Intro-DkwRiz1n-v74.js +1 -2
  275. package/adminWww/assets/Intro-DkwRiz1n-v75.js +1 -0
  276. package/adminWww/assets/Intro-DkwRiz1n-v76.js +2 -0
  277. package/adminWww/assets/Logs-CsVPSLJH-v54.js +1 -1
  278. package/adminWww/assets/Logs-CsVPSLJH-v55.js +1 -1
  279. package/adminWww/assets/Logs-CsVPSLJH-v56.js +1 -1
  280. package/adminWww/assets/Logs-CsVPSLJH-v57.js +1 -1
  281. package/adminWww/assets/Logs-CsVPSLJH-v58.js +1 -1
  282. package/adminWww/assets/Logs-CsVPSLJH-v59.js +1 -1
  283. package/adminWww/assets/Logs-CsVPSLJH-v60.js +1 -1
  284. package/adminWww/assets/Logs-CsVPSLJH-v61.js +1 -1
  285. package/adminWww/assets/Logs-CsVPSLJH-v62.js +1 -1
  286. package/adminWww/assets/Logs-CsVPSLJH-v63.js +1 -1
  287. package/adminWww/assets/Logs-CsVPSLJH-v64.js +1 -1
  288. package/adminWww/assets/Logs-CsVPSLJH-v65.js +1 -1
  289. package/adminWww/assets/Logs-CsVPSLJH-v66.js +1 -1
  290. package/adminWww/assets/Logs-CsVPSLJH-v67.js +1 -1
  291. package/adminWww/assets/Logs-CsVPSLJH-v68.js +1 -1
  292. package/adminWww/assets/Logs-CsVPSLJH-v69.js +1 -1
  293. package/adminWww/assets/Logs-CsVPSLJH-v70.js +1 -1
  294. package/adminWww/assets/Logs-CsVPSLJH-v71.js +1 -1
  295. package/adminWww/assets/Logs-CsVPSLJH-v72.js +1 -1
  296. package/adminWww/assets/Logs-CsVPSLJH-v73.js +1 -1
  297. package/adminWww/assets/Logs-CsVPSLJH-v74.js +1 -1
  298. package/adminWww/assets/Logs-CsVPSLJH-v75.js +1 -0
  299. package/adminWww/assets/Logs-CsVPSLJH-v76.js +1 -0
  300. package/adminWww/assets/Objects-DPan0bzw-v54.js +1 -1
  301. package/adminWww/assets/Objects-DPan0bzw-v55.js +1 -1
  302. package/adminWww/assets/Objects-DPan0bzw-v56.js +1 -1
  303. package/adminWww/assets/Objects-DPan0bzw-v57.js +1 -1
  304. package/adminWww/assets/Objects-DPan0bzw-v58.js +1 -1
  305. package/adminWww/assets/Objects-DPan0bzw-v59.js +1 -1
  306. package/adminWww/assets/Objects-DPan0bzw-v60.js +1 -1
  307. package/adminWww/assets/Objects-DPan0bzw-v61.js +1 -1
  308. package/adminWww/assets/Objects-DPan0bzw-v62.js +1 -1
  309. package/adminWww/assets/Objects-DPan0bzw-v63.js +1 -1
  310. package/adminWww/assets/Objects-DPan0bzw-v64.js +1 -1
  311. package/adminWww/assets/Objects-DPan0bzw-v65.js +1 -1
  312. package/adminWww/assets/Objects-DPan0bzw-v66.js +1 -1
  313. package/adminWww/assets/Objects-DPan0bzw-v67.js +1 -1
  314. package/adminWww/assets/Objects-DPan0bzw-v68.js +1 -1
  315. package/adminWww/assets/Objects-DPan0bzw-v69.js +1 -1
  316. package/adminWww/assets/Objects-DPan0bzw-v70.js +1 -1
  317. package/adminWww/assets/Objects-DPan0bzw-v71.js +1 -1
  318. package/adminWww/assets/Objects-DPan0bzw-v72.js +1 -1
  319. package/adminWww/assets/Objects-DPan0bzw-v73.js +1 -1
  320. package/adminWww/assets/Objects-DPan0bzw-v74.js +1 -878
  321. package/adminWww/assets/Objects-DPan0bzw-v75.js +1 -0
  322. package/adminWww/assets/Objects-DPan0bzw-v76.js +878 -0
  323. package/adminWww/assets/Users-BgnBRgwU-v54.js +1 -1
  324. package/adminWww/assets/Users-BgnBRgwU-v55.js +1 -1
  325. package/adminWww/assets/Users-BgnBRgwU-v56.js +1 -1
  326. package/adminWww/assets/Users-BgnBRgwU-v57.js +1 -1
  327. package/adminWww/assets/Users-BgnBRgwU-v58.js +1 -1
  328. package/adminWww/assets/Users-BgnBRgwU-v59.js +1 -1
  329. package/adminWww/assets/Users-BgnBRgwU-v60.js +1 -1
  330. package/adminWww/assets/Users-BgnBRgwU-v61.js +1 -1
  331. package/adminWww/assets/Users-BgnBRgwU-v62.js +1 -1
  332. package/adminWww/assets/Users-BgnBRgwU-v63.js +1 -1
  333. package/adminWww/assets/Users-BgnBRgwU-v64.js +1 -1
  334. package/adminWww/assets/Users-BgnBRgwU-v65.js +1 -1
  335. package/adminWww/assets/Users-BgnBRgwU-v66.js +1 -1
  336. package/adminWww/assets/Users-BgnBRgwU-v67.js +1 -1
  337. package/adminWww/assets/Users-BgnBRgwU-v68.js +1 -1
  338. package/adminWww/assets/Users-BgnBRgwU-v69.js +1 -1
  339. package/adminWww/assets/Users-BgnBRgwU-v70.js +1 -1
  340. package/adminWww/assets/Users-BgnBRgwU-v71.js +1 -1
  341. package/adminWww/assets/Users-BgnBRgwU-v72.js +1 -1
  342. package/adminWww/assets/Users-BgnBRgwU-v73.js +1 -1
  343. package/adminWww/assets/Users-BgnBRgwU-v74.js +1 -1
  344. package/adminWww/assets/Users-BgnBRgwU-v75.js +1 -0
  345. package/adminWww/assets/Users-BgnBRgwU-v76.js +1 -0
  346. package/adminWww/assets/bootstrap-COulQZax-v54.js +1 -1
  347. package/adminWww/assets/bootstrap-COulQZax-v55.js +1 -1
  348. package/adminWww/assets/bootstrap-COulQZax-v56.js +1 -1
  349. package/adminWww/assets/bootstrap-COulQZax-v57.js +1 -1
  350. package/adminWww/assets/bootstrap-COulQZax-v58.js +1 -1
  351. package/adminWww/assets/bootstrap-COulQZax-v59.js +1 -1
  352. package/adminWww/assets/bootstrap-COulQZax-v60.js +1 -1
  353. package/adminWww/assets/bootstrap-COulQZax-v61.js +1 -1
  354. package/adminWww/assets/bootstrap-COulQZax-v62.js +1 -1
  355. package/adminWww/assets/bootstrap-COulQZax-v63.js +1 -1
  356. package/adminWww/assets/bootstrap-COulQZax-v64.js +1 -1
  357. package/adminWww/assets/bootstrap-COulQZax-v65.js +1 -1
  358. package/adminWww/assets/bootstrap-COulQZax-v66.js +1 -1
  359. package/adminWww/assets/bootstrap-COulQZax-v67.js +1 -1
  360. package/adminWww/assets/bootstrap-COulQZax-v68.js +1 -1
  361. package/adminWww/assets/bootstrap-COulQZax-v69.js +1 -1
  362. package/adminWww/assets/bootstrap-COulQZax-v70.js +1 -1
  363. package/adminWww/assets/bootstrap-COulQZax-v71.js +1 -1
  364. package/adminWww/assets/bootstrap-COulQZax-v72.js +1 -1
  365. package/adminWww/assets/bootstrap-COulQZax-v73.js +1 -1
  366. package/adminWww/assets/bootstrap-COulQZax-v74.js +1 -317
  367. package/adminWww/assets/bootstrap-COulQZax-v75.js +1 -0
  368. package/adminWww/assets/bootstrap-COulQZax-v76.js +317 -0
  369. package/adminWww/assets/hostInit-v54.js +1 -1
  370. package/adminWww/assets/hostInit-v55.js +1 -1
  371. package/adminWww/assets/hostInit-v56.js +1 -1
  372. package/adminWww/assets/hostInit-v57.js +1 -1
  373. package/adminWww/assets/hostInit-v58.js +1 -1
  374. package/adminWww/assets/hostInit-v59.js +1 -1
  375. package/adminWww/assets/hostInit-v60.js +1 -1
  376. package/adminWww/assets/hostInit-v61.js +1 -1
  377. package/adminWww/assets/hostInit-v62.js +1 -1
  378. package/adminWww/assets/hostInit-v63.js +1 -1
  379. package/adminWww/assets/hostInit-v64.js +1 -1
  380. package/adminWww/assets/hostInit-v65.js +1 -1
  381. package/adminWww/assets/hostInit-v66.js +1 -1
  382. package/adminWww/assets/hostInit-v67.js +1 -1
  383. package/adminWww/assets/hostInit-v68.js +1 -1
  384. package/adminWww/assets/hostInit-v69.js +1 -1
  385. package/adminWww/assets/hostInit-v70.js +1 -1
  386. package/adminWww/assets/hostInit-v71.js +1 -1
  387. package/adminWww/assets/hostInit-v72.js +1 -1
  388. package/adminWww/assets/hostInit-v73.js +1 -1
  389. package/adminWww/assets/hostInit-v74.js +1 -2
  390. package/adminWww/assets/hostInit-v75.js +1 -0
  391. package/adminWww/assets/hostInit-v76.js +2 -0
  392. package/adminWww/assets/index-CQZugZ1z-v54.js +1 -1
  393. package/adminWww/assets/index-CQZugZ1z-v55.js +1 -1
  394. package/adminWww/assets/index-CQZugZ1z-v56.js +1 -1
  395. package/adminWww/assets/index-CQZugZ1z-v57.js +1 -1
  396. package/adminWww/assets/index-CQZugZ1z-v58.js +1 -1
  397. package/adminWww/assets/index-CQZugZ1z-v59.js +1 -1
  398. package/adminWww/assets/index-CQZugZ1z-v60.js +1 -1
  399. package/adminWww/assets/index-CQZugZ1z-v61.js +1 -1
  400. package/adminWww/assets/index-CQZugZ1z-v62.js +1 -1
  401. package/adminWww/assets/index-CQZugZ1z-v63.js +1 -1
  402. package/adminWww/assets/index-CQZugZ1z-v64.js +1 -1
  403. package/adminWww/assets/index-CQZugZ1z-v65.js +1 -1
  404. package/adminWww/assets/index-CQZugZ1z-v66.js +1 -1
  405. package/adminWww/assets/index-CQZugZ1z-v67.js +1 -1
  406. package/adminWww/assets/index-CQZugZ1z-v68.js +1 -1
  407. package/adminWww/assets/index-CQZugZ1z-v69.js +1 -1
  408. package/adminWww/assets/index-CQZugZ1z-v70.js +1 -1
  409. package/adminWww/assets/index-CQZugZ1z-v71.js +1 -1
  410. package/adminWww/assets/index-CQZugZ1z-v72.js +1 -1
  411. package/adminWww/assets/index-CQZugZ1z-v73.js +1 -1
  412. package/adminWww/assets/index-CQZugZ1z-v74.js +1 -2
  413. package/adminWww/assets/index-CQZugZ1z-v75.js +1 -0
  414. package/adminWww/assets/index-CQZugZ1z-v76.js +2 -0
  415. package/adminWww/assets/index-D2ymscJA-v54.js +1 -1
  416. package/adminWww/assets/index-D2ymscJA-v55.js +1 -1
  417. package/adminWww/assets/index-D2ymscJA-v56.js +1 -1
  418. package/adminWww/assets/index-D2ymscJA-v57.js +1 -1
  419. package/adminWww/assets/index-D2ymscJA-v58.js +1 -1
  420. package/adminWww/assets/index-D2ymscJA-v59.js +1 -1
  421. package/adminWww/assets/index-D2ymscJA-v60.js +1 -1
  422. package/adminWww/assets/index-D2ymscJA-v61.js +1 -1
  423. package/adminWww/assets/index-D2ymscJA-v62.js +1 -1
  424. package/adminWww/assets/index-D2ymscJA-v63.js +1 -1
  425. package/adminWww/assets/index-D2ymscJA-v64.js +1 -1
  426. package/adminWww/assets/index-D2ymscJA-v65.js +1 -1
  427. package/adminWww/assets/index-D2ymscJA-v66.js +1 -1
  428. package/adminWww/assets/index-D2ymscJA-v67.js +1 -1
  429. package/adminWww/assets/index-D2ymscJA-v68.js +1 -1
  430. package/adminWww/assets/index-D2ymscJA-v69.js +1 -1
  431. package/adminWww/assets/index-D2ymscJA-v70.js +1 -1
  432. package/adminWww/assets/index-D2ymscJA-v71.js +1 -1
  433. package/adminWww/assets/index-D2ymscJA-v72.js +1 -1
  434. package/adminWww/assets/index-D2ymscJA-v73.js +1 -1
  435. package/adminWww/assets/index-D2ymscJA-v74.js +1 -950
  436. package/adminWww/assets/index-D2ymscJA-v75.js +1 -0
  437. package/adminWww/assets/index-D2ymscJA-v76.js +950 -0
  438. package/adminWww/assets/sentry-B7YeoTAx-v71.js +1 -1
  439. package/adminWww/assets/sentry-B7YeoTAx-v72.js +1 -1
  440. package/adminWww/assets/sentry-B7YeoTAx-v73.js +1 -1
  441. package/adminWww/assets/sentry-B7YeoTAx-v74.js +1 -1
  442. package/adminWww/assets/sentry-B7YeoTAx-v75.js +1 -0
  443. package/adminWww/assets/sentry-B7YeoTAx-v76.js +1 -0
  444. package/adminWww/css/eos-branding.css +86 -0
  445. package/adminWww/index.html +11 -10
  446. package/adminWww/js/eos-branding.js +1 -1
  447. package/adminWww/js/eos-console-quiet.js +1 -1
  448. package/adminWww/js/eos-manual-write-policy.js +469 -0
  449. package/adminWww/js/eos-objects-state-tools.js +1 -1
  450. package/adminWww/js/eos-policy-client.js +1 -1
  451. package/adminWww/js/eos-role-ui.js +1 -1
  452. package/adminWww/js/eos-security-ui.js +1 -1
  453. package/adminWww/mf-manifest.json +1 -1
  454. package/adminWww/remoteEntry-v54.js +1 -1
  455. package/adminWww/remoteEntry-v55.js +1 -1
  456. package/adminWww/remoteEntry-v56.js +1 -1
  457. package/adminWww/remoteEntry-v57.js +1 -1
  458. package/adminWww/remoteEntry-v58.js +1 -1
  459. package/adminWww/remoteEntry-v59.js +1 -1
  460. package/adminWww/remoteEntry-v60.js +1 -1
  461. package/adminWww/remoteEntry-v61.js +1 -1
  462. package/adminWww/remoteEntry-v62.js +1 -1
  463. package/adminWww/remoteEntry-v63.js +1 -1
  464. package/adminWww/remoteEntry-v64.js +1 -1
  465. package/adminWww/remoteEntry-v65.js +1 -1
  466. package/adminWww/remoteEntry-v66.js +1 -1
  467. package/adminWww/remoteEntry-v67.js +1 -1
  468. package/adminWww/remoteEntry-v68.js +1 -1
  469. package/adminWww/remoteEntry-v69.js +1 -1
  470. package/adminWww/remoteEntry-v70.js +1 -1
  471. package/adminWww/remoteEntry-v71.js +1 -1
  472. package/adminWww/remoteEntry-v72.js +1 -1
  473. package/adminWww/remoteEntry-v73.js +1 -1
  474. package/adminWww/remoteEntry-v74.js +1 -2
  475. package/adminWww/remoteEntry-v75.js +1 -0
  476. package/adminWww/remoteEntry-v76.js +2 -0
  477. package/adminWww/remoteEntry.js +1 -1
  478. package/docs/MANUAL_DATAPOINT_WRITE_POLICY.md +42 -0
  479. package/io-package.json +9 -8
  480. package/package.json +2 -2
  481. package/tools/nexowatt-validate-package.cjs +4 -1
@@ -0,0 +1,469 @@
1
+ /* NexoWatt EOS manual datapoint write policy v7.9.76 */
2
+ (function (root, factory) {
3
+ 'use strict';
4
+ const api = factory();
5
+ if (typeof module === 'object' && module.exports) module.exports = api;
6
+ if (!root) return;
7
+
8
+ root.NEXOWATT_EOS_MANUAL_WRITE_POLICY_VERSION = 'v76-universal-manual-write';
9
+ root.NEXOWATT_EOS_GET_WRITE_BEHAVIOR = api.getWriteBehavior;
10
+ root.NEXOWATT_EOS_IS_EXPERT_ONLY_STATE = api.isExpertOnlyState;
11
+ root.NEXOWATT_EOS_COERCE_BOOLEAN = api.toBoolean;
12
+ root.NEXOWATT_EOS_WRITE_MANUAL_STATE = api.writeManualState;
13
+ root.NEXOWATT_EOS_RESOLVE_EDITOR_TYPE = api.resolveEditorType;
14
+ root.NEXOWATT_EOS_PREPARE_EDITOR_VALUE = api.prepareEditorValue;
15
+ root.NEXOWATT_EOS_COERCE_WRITE_VALUE = api.coerceWriteValue;
16
+ root.NEXOWATT_EOS_GET_DIRECT_WRITE_VALUE = api.getDirectWriteValue;
17
+ root.NEXOWATT_EOS_GET_WRITE_LABEL = api.getWriteLabel;
18
+ root.NEXOWATT_EOS_NORMALIZE_STATES = api.normalizeStates;
19
+ })(typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : null, function () {
20
+ 'use strict';
21
+
22
+ // Manual writes are serialized per datapoint. A second command is queued
23
+ // instead of being silently dropped while the previous write is pending.
24
+ const writeQueues = new Map();
25
+
26
+ const normalizeText = value => String(value == null ? '' : value)
27
+ .normalize('NFKD')
28
+ .replace(/[\u0300-\u036f]/g, '')
29
+ .toLowerCase()
30
+ .trim();
31
+
32
+ const flattenTranslatedText = value => {
33
+ if (value == null) return '';
34
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return String(value);
35
+ if (typeof value === 'object') return Object.values(value).map(flattenTranslatedText).filter(Boolean).join(' ');
36
+ return '';
37
+ };
38
+
39
+ const getCommon = obj => (obj && obj.common && typeof obj.common === 'object' ? obj.common : {});
40
+ const getNative = obj => (obj && obj.native && typeof obj.native === 'object' ? obj.native : {});
41
+
42
+ const getExplicitValue = (obj, name) => {
43
+ const common = getCommon(obj);
44
+ const native = getNative(obj);
45
+ const custom = common.custom || {};
46
+ const candidates = [
47
+ common[name],
48
+ native[name],
49
+ native.nexowatt && native.nexowatt[name],
50
+ custom.nexowatt && custom.nexowatt[name],
51
+ custom['nexowatt.eos'] && custom['nexowatt.eos'][name],
52
+ custom['eos-admin'] && custom['eos-admin'][name],
53
+ ];
54
+ for (const value of candidates) {
55
+ if (value !== undefined) return value;
56
+ }
57
+ return undefined;
58
+ };
59
+
60
+ const getExplicitExpertOnly = obj => {
61
+ const candidates = [getExplicitValue(obj, 'manualWriteExpertOnly'), getExplicitValue(obj, 'expertOnly')];
62
+ for (const value of candidates) {
63
+ if (typeof value === 'boolean') return value;
64
+ }
65
+ return undefined;
66
+ };
67
+
68
+ const isExpertOnlyState = (id, obj) => {
69
+ const explicit = getExplicitExpertOnly(obj);
70
+ if (explicit !== undefined) return explicit;
71
+
72
+ const common = getCommon(obj);
73
+ const role = normalizeText(common.role);
74
+ const text = normalizeText([
75
+ id,
76
+ role,
77
+ common.type,
78
+ flattenTranslatedText(common.name),
79
+ flattenTranslatedText(common.desc),
80
+ ].join(' '));
81
+ const compact = text.replace(/[^a-z0-9]+/g, '');
82
+
83
+ // Conservative safety policy for commands that can reset equipment,
84
+ // open contactors or materially change charging/power/current limits.
85
+ if (/^(?:level\.)?(?:power|current)(?:\.|$)/.test(role)) return true;
86
+ if (/^(?:value\.)?(?:power|current)\.setpoint(?:\.|$)/.test(role)) return true;
87
+
88
+ const exactRiskTokens = [
89
+ 'hardreset', 'softreset', 'factoryreset', 'factorydefault', 'reboot', 'restartdevice', 'shutdown',
90
+ 'emergencystop', 'notaus', 'contactor', 'unlockconnector', 'remotestart', 'remotestop',
91
+ 'starttransaction', 'stoptransaction', 'chargepower', 'chargingpower', 'dischargepower',
92
+ 'chargecurrent', 'chargingcurrent', 'currentlimit', 'safecurrent', 'setchargingcurrent',
93
+ 'exportlimit', 'feedinlimit', 'powerlimit', 'powersetpoint', 'pvpowerlimit', 'gridlimit',
94
+ 'controlmode', 'operatingmode', 'batterymode', 'gridmode', 'firmwareupdate',
95
+ 'ladeleistung', 'entladeleistung', 'ladestrom', 'stromlimit', 'leistungsgrenze',
96
+ 'leistungssollwert', 'einspeiselimit', 'ruecksetzen', 'neustart',
97
+ ];
98
+ if (exactRiskTokens.some(token => compact.includes(token))) return true;
99
+
100
+ const powerCommand = /(?:charge|charging|discharge|export|feedin|grid|netz|pv|lade|entlade|einspeise)[\s._/-]{0,6}(?:power|current|leistung|strom).{0,28}(?:limit|setpoint|target|command|override|control|grenze|soll|vorgabe)/;
101
+ const inversePowerCommand = /(?:limit|setpoint|target|command|override|control|grenze|soll|vorgabe).{0,28}(?:charge|charging|discharge|export|feedin|grid|netz|pv|lade|entlade|einspeise|power|current|leistung|strom)/;
102
+ return powerCommand.test(text) || inversePowerCommand.test(text);
103
+ };
104
+
105
+ const toBoolean = value => {
106
+ if (value === true || value === 1) return true;
107
+ if (value === false || value === 0 || value == null) return false;
108
+ const normalized = normalizeText(value);
109
+ if (['true', '1', 'on', 'yes', 'ja', 'enabled', 'enable', 'active', 'start', 'open', 'ein', 'an'].includes(normalized)) return true;
110
+ if (['false', '0', 'off', 'no', 'nein', 'disabled', 'disable', 'inactive', 'stop', 'closed', 'aus', '', 'null', '(null)'].includes(normalized)) return false;
111
+ return Boolean(value);
112
+ };
113
+
114
+ const normalizeSingleCommonType = value => {
115
+ const type = normalizeText(value);
116
+ if (type === 'int' || type === 'integer' || type === 'float' || type === 'double') return 'number';
117
+ if (type === 'bool') return 'boolean';
118
+ if (type === 'object' || type === 'array') return type;
119
+ if (type === 'json') return 'json';
120
+ if (type === 'number' || type === 'boolean' || type === 'string' || type === 'mixed' || type === 'file') return type;
121
+ return '';
122
+ };
123
+
124
+ const normalizeCommonType = value => {
125
+ if (Array.isArray(value)) {
126
+ const types = [...new Set(value.map(normalizeSingleCommonType).filter(Boolean))];
127
+ return types.length === 1 ? types[0] : types.length ? 'mixed' : '';
128
+ }
129
+ return normalizeSingleCommonType(value);
130
+ };
131
+
132
+ const inferPrimitiveType = value => {
133
+ if (Array.isArray(value)) return 'array';
134
+ if (value !== null && typeof value === 'object') return 'object';
135
+ if (typeof value === 'boolean') return 'boolean';
136
+ if (typeof value === 'number') return 'number';
137
+ if (typeof value === 'string') return 'string';
138
+ return '';
139
+ };
140
+
141
+ const normalizeStates = states => {
142
+ if (!states) return null;
143
+ if (Array.isArray(states)) {
144
+ const result = {};
145
+ states.forEach((value, index) => { result[String(index)] = flattenTranslatedText(value); });
146
+ return result;
147
+ }
148
+ if (typeof states === 'string') {
149
+ const result = {};
150
+ states.split(/[;,]/).map(part => part.trim()).filter(Boolean).forEach(part => {
151
+ const separator = part.includes(':') ? ':' : part.includes('=') ? '=' : '';
152
+ if (!separator) return;
153
+ const index = part.indexOf(separator);
154
+ const key = part.slice(0, index).trim();
155
+ const label = part.slice(index + 1).trim();
156
+ if (key) result[key] = label || key;
157
+ });
158
+ return Object.keys(result).length ? result : null;
159
+ }
160
+ if (typeof states === 'object') {
161
+ const result = {};
162
+ Object.keys(states).forEach(key => { result[String(key)] = flattenTranslatedText(states[key]); });
163
+ return result;
164
+ }
165
+ return null;
166
+ };
167
+
168
+ const resolveEditorType = (obj, currentValue, states) => {
169
+ const common = getCommon(obj);
170
+ const normalizedStates = normalizeStates(states || common.states);
171
+ if (normalizedStates && Object.keys(normalizedStates).length) return 'states';
172
+
173
+ const declared = normalizeCommonType(common.type);
174
+ if (declared === 'file') return 'file';
175
+ if (declared === 'object' || declared === 'array' || declared === 'json') return 'json';
176
+ if (declared === 'number' || declared === 'boolean' || declared === 'string') return declared;
177
+
178
+ const candidate = currentValue !== undefined && currentValue !== null ? currentValue : common.def;
179
+ const inferred = inferPrimitiveType(candidate);
180
+ if (inferred === 'object' || inferred === 'array') return 'json';
181
+ if (inferred) return inferred;
182
+ return 'string';
183
+ };
184
+
185
+ const stringifyJsonValue = value => {
186
+ if (typeof value === 'string') {
187
+ try {
188
+ return JSON.stringify(JSON.parse(value), null, 2);
189
+ } catch {
190
+ return value;
191
+ }
192
+ }
193
+ if (value === undefined || value === null) return '';
194
+ try {
195
+ return JSON.stringify(value, null, 2);
196
+ } catch {
197
+ return String(value);
198
+ }
199
+ };
200
+
201
+ const isNumberInRange = (value, common) => {
202
+ if (value === '') return false;
203
+ const number = Number(typeof value === 'string' ? value.trim().replace(',', '.') : value);
204
+ if (!Number.isFinite(number)) return false;
205
+ if (typeof common.min === 'number' && number < common.min) return false;
206
+ if (typeof common.max === 'number' && number > common.max) return false;
207
+ return true;
208
+ };
209
+
210
+ const prepareEditorValue = (obj, currentValue, states) => {
211
+ const common = getCommon(obj);
212
+ const type = resolveEditorType(obj, currentValue, states);
213
+ const hasCurrentValue = currentValue !== undefined && currentValue !== null;
214
+ const hasDefault = common.def !== undefined && common.def !== null;
215
+ let value = hasCurrentValue ? currentValue : hasDefault ? common.def : undefined;
216
+ let valid = true;
217
+
218
+ if (type === 'number') {
219
+ if (value === undefined || value === '') {
220
+ value = '';
221
+ valid = false;
222
+ } else {
223
+ const normalized = typeof value === 'string' ? value.trim().replace(',', '.') : value;
224
+ const parsed = Number(normalized);
225
+ if (Number.isFinite(parsed)) {
226
+ value = parsed;
227
+ valid = isNumberInRange(parsed, common);
228
+ } else {
229
+ value = String(value);
230
+ valid = false;
231
+ }
232
+ }
233
+ } else if (type === 'boolean') {
234
+ value = toBoolean(value);
235
+ } else if (type === 'json') {
236
+ const declared = normalizeCommonType(common.type);
237
+ if (value === undefined) value = declared === 'array' ? '[]' : declared === 'object' ? '{}' : '';
238
+ value = stringifyJsonValue(value);
239
+ try {
240
+ JSON.parse(value);
241
+ valid = true;
242
+ } catch {
243
+ valid = false;
244
+ }
245
+ } else if (type === 'states') {
246
+ value = value === undefined ? '' : value;
247
+ const normalizedStates = normalizeStates(states || common.states) || {};
248
+ valid = value !== '' && Object.prototype.hasOwnProperty.call(normalizedStates, String(value));
249
+ } else {
250
+ value = value === undefined ? '' : String(value);
251
+ }
252
+
253
+ return { type, value, propsValue: value, valid };
254
+ };
255
+
256
+ const parseNumber = (value, common) => {
257
+ if (value === null || value === 'null') return null;
258
+ const normalized = typeof value === 'string' ? value.trim().replace(',', '.') : value;
259
+ if (normalized === '') throw new Error('Der Zahlenwert darf nicht leer sein.');
260
+ const number = Number(normalized);
261
+ if (!Number.isFinite(number)) throw new Error(`Ungültiger Zahlenwert: ${String(value)}`);
262
+ if (typeof common.min === 'number' && number < common.min) throw new Error(`Wert liegt unter dem Minimum ${common.min}.`);
263
+ if (typeof common.max === 'number' && number > common.max) throw new Error(`Wert liegt über dem Maximum ${common.max}.`);
264
+ return number;
265
+ };
266
+
267
+ const parseJsonStateValue = (value, declared) => {
268
+ const raw = value == null ? '' : typeof value === 'string' ? value : JSON.stringify(value);
269
+ if (!raw.trim()) throw new Error('Der JSON-Wert darf nicht leer sein.');
270
+ const parsed = JSON.parse(raw);
271
+ if (declared === 'array' && !Array.isArray(parsed)) throw new Error('Der Datenpunkt erwartet ein JSON-Array.');
272
+ if (declared === 'object' && (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))) {
273
+ throw new Error('Der Datenpunkt erwartet ein JSON-Objekt.');
274
+ }
275
+ // ioBroker StateValue is scalar. Structured values are therefore stored
276
+ // as a validated JSON string instead of passing an unsupported object.
277
+ return raw;
278
+ };
279
+
280
+ const coerceByDeclaredType = (obj, value, currentValue) => {
281
+ const common = getCommon(obj);
282
+ const declared = normalizeCommonType(common.type);
283
+ if (value && typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'value')) value = value.value;
284
+
285
+ if (declared === 'number') return parseNumber(value, common);
286
+ if (declared === 'boolean') return value === null || value === 'null' ? null : toBoolean(value);
287
+ if (declared === 'string') return value === null ? '' : String(value);
288
+ if (declared === 'object' || declared === 'array' || declared === 'json') return parseJsonStateValue(value, declared);
289
+
290
+ // mixed or missing type: preserve the current/default primitive type where possible.
291
+ const candidate = currentValue !== undefined && currentValue !== null ? currentValue : common.def;
292
+ const inferred = inferPrimitiveType(candidate);
293
+ if (inferred === 'number') return parseNumber(value, common);
294
+ if (inferred === 'boolean') return value === null || value === 'null' ? null : toBoolean(value);
295
+ if (inferred === 'object' || inferred === 'array') return parseJsonStateValue(value, inferred);
296
+ if (typeof value === 'string' && value.trim() === 'null') return null;
297
+ return value == null ? '' : value;
298
+ };
299
+
300
+ const coerceStateKey = (obj, value, currentValue) => {
301
+ const raw = value && typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'value') ? value.value : value;
302
+ return coerceByDeclaredType(obj, raw, currentValue);
303
+ };
304
+
305
+ const coerceWriteValue = (obj, rawValue, editorType, originalType, currentValue) => {
306
+ const common = getCommon(obj);
307
+ if (common.write === false) throw new Error('common.write=false');
308
+
309
+ if (editorType === 'states') return coerceStateKey(obj, rawValue, currentValue);
310
+ if (editorType === 'number') return parseNumber(rawValue, common);
311
+ if (editorType === 'boolean') return rawValue === null || rawValue === 'null' ? null : toBoolean(rawValue);
312
+ if (editorType === 'json') return parseJsonStateValue(rawValue, normalizeCommonType(common.type));
313
+ if (editorType === 'string') return rawValue == null ? '' : String(rawValue);
314
+ return coerceByDeclaredType(obj, rawValue, currentValue);
315
+ };
316
+
317
+ const booleanTokens = {
318
+ true: ['true', '1', 'on', 'yes', 'ja', 'enabled', 'enable', 'active', 'start', 'open', 'ein', 'an'],
319
+ false: ['false', '0', 'off', 'no', 'nein', 'disabled', 'disable', 'inactive', 'stop', 'closed', 'aus'],
320
+ };
321
+
322
+ const stringTogglePairs = [
323
+ ['off', 'on'], ['false', 'true'], ['0', '1'], ['disabled', 'enabled'], ['disable', 'enable'],
324
+ ['inactive', 'active'], ['stop', 'start'], ['closed', 'open'], ['aus', 'ein'], ['nein', 'ja'],
325
+ ];
326
+
327
+ const findBooleanStateKey = (states, desired) => {
328
+ const normalized = normalizeStates(states);
329
+ if (!normalized) return undefined;
330
+ const tokens = desired ? booleanTokens.true : booleanTokens.false;
331
+ for (const [key, label] of Object.entries(normalized)) {
332
+ if (tokens.includes(normalizeText(key)) || tokens.includes(normalizeText(label))) return key;
333
+ }
334
+ return undefined;
335
+ };
336
+
337
+ const getStringToggleValue = (currentValue, desired) => {
338
+ const raw = String(currentValue == null ? '' : currentValue).trim();
339
+ const current = normalizeText(raw);
340
+ let result = desired ? 'true' : 'false';
341
+ for (const [falseToken, trueToken] of stringTogglePairs) {
342
+ if (current === falseToken || current === trueToken) {
343
+ result = desired ? trueToken : falseToken;
344
+ break;
345
+ }
346
+ }
347
+ if (raw && raw === raw.toUpperCase()) return result.toUpperCase();
348
+ if (raw && raw[0] === raw[0].toUpperCase() && raw.slice(1) === raw.slice(1).toLowerCase()) {
349
+ return result.charAt(0).toUpperCase() + result.slice(1);
350
+ }
351
+ return result;
352
+ };
353
+
354
+ const getDirectWriteValue = (id, obj, item, behavior, currentValue) => {
355
+ const common = getCommon(obj);
356
+ const desired = behavior === 'button' ? true : !toBoolean(currentValue);
357
+ const explicitName = behavior === 'button' ? 'manualTriggerValue' : desired ? 'manualTrueValue' : 'manualFalseValue';
358
+ const explicit = getExplicitValue(obj, explicitName);
359
+ if (explicit !== undefined) return coerceByDeclaredType(obj, explicit, currentValue);
360
+
361
+ const stateKey = findBooleanStateKey(common.states, desired);
362
+ if (stateKey !== undefined) return coerceStateKey(obj, stateKey, currentValue);
363
+
364
+ if (behavior === 'button' && common.def !== undefined && common.def !== null) {
365
+ return coerceByDeclaredType(obj, common.def, currentValue);
366
+ }
367
+
368
+ const declared = normalizeCommonType(common.type);
369
+ if (declared === 'number') {
370
+ if (behavior === 'switch') {
371
+ if (desired && typeof common.max === 'number') return common.max;
372
+ if (!desired && typeof common.min === 'number') return common.min;
373
+ }
374
+ return desired ? 1 : 0;
375
+ }
376
+ if (declared === 'string') return getStringToggleValue(currentValue, desired);
377
+ if (declared === 'object' || declared === 'array' || declared === 'json') {
378
+ throw new Error('Objekt-/Array-Befehle müssen über den Wertdialog gesetzt werden.');
379
+ }
380
+ if (declared === 'mixed') {
381
+ if (typeof currentValue === 'number') return desired ? 1 : 0;
382
+ if (typeof currentValue === 'string') return getStringToggleValue(currentValue, desired);
383
+ }
384
+ return desired;
385
+ };
386
+
387
+ const getWriteBehavior = (id, obj, item, expertMode) => {
388
+ if (!obj || obj.type !== 'state') return 'readonly';
389
+ const common = getCommon(obj);
390
+ if (common.write === false) return 'readonly';
391
+ if (isExpertOnlyState(id, obj) && !expertMode) return 'expert-only';
392
+ if (normalizeCommonType(common.type) === 'file') return 'file';
393
+
394
+ const role = normalizeText(common.role);
395
+ const data = item && item.data ? item.data : {};
396
+ const declared = normalizeCommonType(common.type);
397
+ const explicitControl = normalizeText(
398
+ getExplicitValue(obj, 'manualWriteControl') !== undefined
399
+ ? getExplicitValue(obj, 'manualWriteControl')
400
+ : getExplicitValue(obj, 'manualControl'),
401
+ );
402
+ if (['button', 'trigger', 'action'].includes(explicitControl) && !['object', 'array', 'json'].includes(declared)) return 'button';
403
+ if (['dialog', 'value', 'editor'].includes(explicitControl)) return 'dialog';
404
+ if (['switch', 'toggle'].includes(explicitControl)) return 'switch';
405
+
406
+ const normalizedStates = normalizeStates(common.states);
407
+ const stateCount = normalizedStates ? Object.keys(normalizedStates).length : 0;
408
+ const isButton = Boolean(data.button) || role === 'button' || role.startsWith('button.') || role === 'action' || role.startsWith('action.') || role === 'trigger' || role.startsWith('trigger.');
409
+ if (isButton && declared !== 'object' && declared !== 'array' && declared !== 'json') return 'button';
410
+ if (declared === 'boolean') return 'switch';
411
+ // A numeric/string mode with more than two states is a selector, not a
412
+ // toggle. Treating it as a switch would make only two of its values reachable.
413
+ if ((Boolean(data.switch) || role === 'switch' || role.startsWith('switch.')) && stateCount <= 2) return 'switch';
414
+ return 'dialog';
415
+ };
416
+
417
+ const getWriteLabel = (id, obj, behavior, expertMode, hasState) => {
418
+ if (behavior === 'readonly') return 'Nur lesbar';
419
+ if (behavior === 'expert-only') return 'Nur im Expertenmodus beschreibbar';
420
+ if (behavior === 'button') return 'Befehl auslösen';
421
+ if (behavior === 'switch') return 'Schalten';
422
+ if (!hasState) return 'Wert setzen (schreibender Datenpunkt ohne aktuellen Lesewert)';
423
+ return 'Wert bearbeiten';
424
+ };
425
+
426
+ const writeManualState = (socket, id, value) => {
427
+ if (!socket || typeof socket.setState !== 'function') {
428
+ return Promise.reject(new Error('ioBroker socket is not ready'));
429
+ }
430
+ const key = String(id || '');
431
+ if (!key) return Promise.reject(new Error('Missing datapoint ID'));
432
+ if (value === undefined) return Promise.reject(new Error(`Undefined is not a valid state value for ${key}`));
433
+ if (value !== null && !['string', 'number', 'boolean'].includes(typeof value)) {
434
+ return Promise.reject(new Error(`Unsupported state value type for ${key}: ${typeof value}`));
435
+ }
436
+
437
+ const previous = writeQueues.get(key) || Promise.resolve();
438
+ const operation = previous.catch(() => undefined).then(() => {
439
+ let timeoutHandle;
440
+ const write = Promise.resolve().then(() => socket.setState(key, { val: value, ack: false, q: 0 }));
441
+ const timeout = new Promise((_, reject) => {
442
+ timeoutHandle = setTimeout(() => reject(new Error(`Write timeout for ${key}`)), 15000);
443
+ });
444
+ return Promise.race([write, timeout]).finally(() => {
445
+ if (timeoutHandle) clearTimeout(timeoutHandle);
446
+ });
447
+ });
448
+ const tail = operation.finally(() => {
449
+ if (writeQueues.get(key) === tail) writeQueues.delete(key);
450
+ });
451
+ writeQueues.set(key, tail);
452
+ return operation;
453
+ };
454
+
455
+ return {
456
+ getExplicitExpertOnly,
457
+ isExpertOnlyState,
458
+ getWriteBehavior,
459
+ getWriteLabel,
460
+ resolveEditorType,
461
+ prepareEditorValue,
462
+ coerceWriteValue,
463
+ getDirectWriteValue,
464
+ toBoolean,
465
+ writeManualState,
466
+ normalizeStates,
467
+ normalizeCommonType,
468
+ };
469
+ });
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v73-native-objectbrowser-click-isolation';
4
+ window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v76-universal-manual-write';
5
5
  window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_MODE = 'passive-native-objectbrowser';
6
6
 
7
7
  // Keep this file intentionally passive. The datapoints page must use the
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- const VERSION = 'v74-scalar-value-dialog-stability';
4
+ const VERSION = 'v76-universal-manual-write';
5
5
  const existing = window.NEXOWATT_EOS_POLICY_CLIENT;
6
6
  if (existing?.version === VERSION) return;
7
7
  existing?.destroy?.();
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- window.NEXOWATT_EOS_ROLE_UI_VERSION = 'v74-scalar-value-dialog';
4
+ window.NEXOWATT_EOS_ROLE_UI_VERSION = 'v76-universal-manual-write';
5
5
 
6
6
  const ASSET_BASE = (() => {
7
7
  const script = document.currentScript?.src || document.querySelector('script[src*="eos-role-ui.js"]')?.src || window.location.href;
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- const VERSION = 'v74-scalar-value-dialog';
4
+ const VERSION = 'v76-universal-manual-write';
5
5
  const LEGACY_ADMIN = 'admin';
6
6
  const LEGACY_ADMIN_INSTANCE = 'admin.0';
7
7
  const CORE_PROTECTED_ADAPTERS = ['admin', 'eos-admin', 'backitup', 'nexowatt-devices', 'nexowatt-device', 'nexowatt-dev', 'nexowatt-ui'];
@@ -1 +1 @@
1
- {"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry-v74.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry-v74.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_admin","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_admin:@emotion/react","name":"@emotion/react","version":"11.14.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-react.browser.esm-DrKG52pD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@emotion/styled","name":"@emotion/styled","version":"11.14.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-styled.browser.esm-DOdpWCne.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.9","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2ymscJA-v74.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/json-config","name":"@iobroker/json-config","version":"8.4.7","requiredVersion":"*","assets":{"js":{"async":["assets/index-D9Ej0pc9.js"],"sync":["assets/index-mSK_krgD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/dm-gui-components","name":"@iobroker/dm-gui-components","version":"9.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-bCuipom1.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns","name":"date-fns","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Cqq5gIUF.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns/locale","name":"date-fns/locale","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/locale-CLe3aX4T.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet","name":"leaflet","version":"1.9.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/leaflet-src-B651YTWC.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet-geosearch","name":"leaflet-geosearch","version":"4.2.2","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/geosearch.module-BA4ww39P.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-ace","name":"react-ace","version":"13.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-C_anklzA.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dropzone","name":"react-dropzone","version":"15.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CXZCHHB6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:semver","name":"semver","version":"7.7.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CkI9667U.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/x-date-pickers","name":"@mui/x-date-pickers","version":"7.29.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-uASdmaE6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-4wMOc304.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2Em8S_O.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-8JYjTPhv.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/icons-material","name":"@mui/icons-material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-jy_3EbfW.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
1
+ {"id":"iobroker_admin","name":"iobroker_admin","metaData":{"name":"iobroker_admin","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"iobroker_admin"},"remoteEntry":{"name":"remoteEntry-v76.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry-v76.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"iobroker_admin","pluginVersion":"0.2.5","publicPath":"./"},"shared":[{"id":"iobroker_admin:@emotion/react","name":"@emotion/react","version":"11.14.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-react.browser.esm-DrKG52pD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@emotion/styled","name":"@emotion/styled","version":"11.14.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/emotion-styled.browser.esm-DOdpWCne.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/adapter-react-v5","name":"@iobroker/adapter-react-v5","version":"8.2.9","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2ymscJA-v76.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/json-config","name":"@iobroker/json-config","version":"8.4.7","requiredVersion":"*","assets":{"js":{"async":["assets/index-D9Ej0pc9.js"],"sync":["assets/index-mSK_krgD.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@iobroker/dm-gui-components","name":"@iobroker/dm-gui-components","version":"9.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-bCuipom1.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns","name":"date-fns","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-Cqq5gIUF.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:date-fns/locale","name":"date-fns/locale","version":"4.1.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/locale-CLe3aX4T.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet","name":"leaflet","version":"1.9.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/leaflet-src-B651YTWC.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:leaflet-geosearch","name":"leaflet-geosearch","version":"4.2.2","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/geosearch.module-BA4ww39P.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-ace","name":"react-ace","version":"13.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-C_anklzA.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dropzone","name":"react-dropzone","version":"15.0.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CXZCHHB6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:semver","name":"semver","version":"7.7.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-CkI9667U.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/x-date-pickers","name":"@mui/x-date-pickers","version":"7.29.4","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-uASdmaE6.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react","name":"react","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-4wMOc304.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:react-dom","name":"react-dom","version":"18.3.1","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-D2Em8S_O.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/material","name":"@mui/material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-8JYjTPhv.js"]},"css":{"async":[],"sync":[]}}},{"id":"iobroker_admin:@mui/icons-material","name":"@mui/icons-material","version":"6.5.0","requiredVersion":"*","assets":{"js":{"async":[],"sync":["assets/index-jy_3EbfW.js"]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[]}
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v74.js";
1
+ export * from "./remoteEntry-v76.js";