iobroker.eos-admin 7.9.75 → 7.9.78

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 (480) 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 -1
  22. package/adminWww/assets/AdapterUpdateDialog-BMg84Hpf-v75.js +1 -2
  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 -1
  45. package/adminWww/assets/Adapters-B5_jQ7DE-v75.js +1 -9
  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 -1
  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 -1
  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 -1
  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 -1
  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 -1
  160. package/adminWww/assets/Enums-DbWYxKOo-v75.js +1 -91
  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 -1
  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 -1
  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 -1
  229. package/adminWww/assets/Hosts-Bg8QzW5i-v75.js +1 -121
  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 -1
  252. package/adminWww/assets/Instances-YdaGnS5a-v75.js +1 -2
  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 -1
  275. package/adminWww/assets/Intro-DkwRiz1n-v75.js +1 -2
  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 -1
  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 -1
  321. package/adminWww/assets/Objects-DPan0bzw-v75.js +1 -878
  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 -1
  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 -1
  367. package/adminWww/assets/bootstrap-COulQZax-v75.js +1 -317
  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 -1
  390. package/adminWww/assets/hostInit-v75.js +1 -2
  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 -1
  413. package/adminWww/assets/index-CQZugZ1z-v75.js +1 -2
  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 -1
  436. package/adminWww/assets/index-D2ymscJA-v75.js +1 -950
  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 -1
  443. package/adminWww/assets/sentry-B7YeoTAx-v76.js +1 -0
  444. package/adminWww/css/eos-branding.css +32 -1
  445. package/adminWww/index.html +11 -11
  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 +284 -28
  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 -1
  475. package/adminWww/remoteEntry-v75.js +1 -2
  476. package/adminWww/remoteEntry-v76.js +2 -0
  477. package/docs/MANUAL_DATAPOINT_WRITE_POLICY.md +16 -13
  478. package/io-package.json +6 -6
  479. package/package.json +2 -2
  480. package/tools/nexowatt-validate-package.cjs +3 -3
@@ -1 +1 @@
1
- export * from "./sentry-B7YeoTAx-v75.js";
1
+ export * from "./sentry-B7YeoTAx-v76.js";
@@ -1 +1 @@
1
- export * from "./sentry-B7YeoTAx-v75.js";
1
+ export * from "./sentry-B7YeoTAx-v76.js";
@@ -1 +1 @@
1
- export * from "./sentry-B7YeoTAx-v75.js";
1
+ export * from "./sentry-B7YeoTAx-v76.js";
@@ -1 +1 @@
1
- export * from "./sentry-B7YeoTAx-v75.js";
1
+ export * from "./sentry-B7YeoTAx-v76.js";
@@ -1 +1 @@
1
- import{j as s}from"./DefaultPropsProvider-BiXBMQYQ.js";import{i as f}from"./iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js";import{a as t,i as h}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js";const p={},b={All:t.AllInclusive,messaging:t.Message,communication:t.WifiTethering,general:t.Apps,logic:t.VpnKey,alarm:t.NotificationsActive,"iot-systems":t.SystemUpdateAlt,"misc-data":t.EmojiSymbols,multimedia:t.PermMedia,network:t.SettingsEthernet,storage:t.Storage,visualization:t.Visibility,"climate-control":t.SettingsBrightness,"date-and-time":t.DateRange,energy:t.BatteryChargingFull,garden:t.FilterVintage,geoposition:t.LocationOn,hardware:t.Phonelink,health:t.Favorite,household:t.House,infrastructure:t.Apartment,lighting:t.EmojiObjects,protocols:t.DialerSip,utility:t.PhonelinkSetup,vehicle:t.AirportShuttle,"visualization-icons":t.BubbleChart,"visualization-widgets":t.Widgets,weather:t.Brightness6,metering:t.LinearScale};function x({iconName:d,className:a,adapter:n,socket:e,onClick:r,style:m}){const[_,g]=f.useState("");if(f.useEffect(()=>{n&&e&&(p[n]instanceof Promise||(p[n]=e.getObject(`system.adapter.${n}`)),p[n].then(o=>{var c;return((c=o==null?void 0:o.common)==null?void 0:c.icon)&&g(`../../adapter/${n}/${o.common.icon}`)}))},[n,e]),n)return s.jsx("img",{onClick:o=>r&&r(o),src:_||"",className:a,style:m,alt:""});const l=b[d]||t.Help;return s.jsx(l,{className:a,style:m,onClick:o=>r&&r(o)})}const y={button:{marginLeft:10,marginRight:10},icon:{marginRight:5}};function E({arrayItem:d,title:a,onClick:n,value:e,contained:r,buttonIcon:m,icons:_,t:g,translateSuffix:l,noTranslation:o}){const[c,u]=f.useState(null);return l=l||"",s.jsxs(s.Fragment,{children:[s.jsx(h.Tooltip,{title:a||"",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:s.jsxs(h.Button,{style:y.button,variant:r?"contained":"outlined",color:"primary",onClick:i=>u(i.currentTarget),children:[m||_&&s.jsx(x,{iconName:e,style:y.icon}),typeof e=="number"||o?e:g(e+l)]})}),s.jsx(h.Menu,{anchorEl:c,open:!!c,disableScrollLock:!0,marginThreshold:8,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},slotProps:{root:{className:"eos-module-filter-menu"},paper:{className:"eos-module-filter-menu-paper",sx:{minWidth:180,maxWidth:"min(420px, calc(100vw - 24px))",maxHeight:"min(70vh, 640px)",overflowY:"auto"}}},onClose:()=>u(null),children:d.map(({name:i},S)=>s.jsxs(h.MenuItem,{selected:e||e===0?i===e:S===0,disabled:e||e===0?i===e:S===0,className:`tag-card-${i}`,style:{placeContent:"space-between"},value:i,onClick:()=>{n(i),u(null)},children:[_&&s.jsx(x,{iconName:i,style:y.icon}),typeof i=="number"||o?i:g(i+l)]},i))})]})}const A="data:image/svg+xml,%3csvg%20viewBox='0%200%20256%20230'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M251.22%20187.856c5.785%2010.045%206.345%2020.608%201.538%2028.958-4.8%208.357-14.192%2013.143-25.768%2013.143h-21.816c.259-4.068.431-8.17.431-12.302%200-4.628-.215-9.198-.531-13.754l14.35-.014c3.528%200%206.38-2.867%206.38-6.403a6.46%206.46%200%200%200-.768-3.053l-91.46-158.97a6.349%206.349%200%200%200-5.54-3.24%206.374%206.374%200%200%200-5.461%203.09l-14.522%2025.243c44.134%2033.27%2073.804%2084.813%2077.864%20143.333.316%204.548.531%209.119.531%2013.753%200%204.132-.172%208.228-.424%2012.302h-71.246c.388-4.053.611-8.148.611-12.302%200-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003%2017.376c17.54%2016.325%2029.512%2038.558%2032.767%2063.514.59%204.505.92%209.09.92%2013.753%200%204.154-.273%208.264-.74%2012.302H29.01c-11.576%200-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905%201.538-28.958l13.56-23.238a79.42%2079.42%200%200%201%2020.715%2016.052l-8.083%2013.768a6.523%206.523%200%200%200-.77%203.054%206.383%206.383%200%200%200%206.382%206.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427%20151.427%200%200%201%2021.564%2014.624c30.827%2025.013%2051.644%2061.955%2055.416%20103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205%20171.205%200%200%200-21.672-14.457l30.532-53.045C109.583%205.77%20118.42%200%20128.036%200c9.607%200%2018.438%205.77%2024.223%2015.823l98.961%20172.033z'%20fill='%23FB2D26'/%3e%3c/svg%3e";export{E as C,x as M,A as s};
1
+ export * from "./sentry-B7YeoTAx-v76.js";
@@ -0,0 +1 @@
1
+ import{j as s}from"./DefaultPropsProvider-BiXBMQYQ.js";import{i as f}from"./iobroker_admin__loadShare__react__loadShare__-LM7uyL45.js";import{a as t,i as h}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-CJO5yP3h.js";const p={},b={All:t.AllInclusive,messaging:t.Message,communication:t.WifiTethering,general:t.Apps,logic:t.VpnKey,alarm:t.NotificationsActive,"iot-systems":t.SystemUpdateAlt,"misc-data":t.EmojiSymbols,multimedia:t.PermMedia,network:t.SettingsEthernet,storage:t.Storage,visualization:t.Visibility,"climate-control":t.SettingsBrightness,"date-and-time":t.DateRange,energy:t.BatteryChargingFull,garden:t.FilterVintage,geoposition:t.LocationOn,hardware:t.Phonelink,health:t.Favorite,household:t.House,infrastructure:t.Apartment,lighting:t.EmojiObjects,protocols:t.DialerSip,utility:t.PhonelinkSetup,vehicle:t.AirportShuttle,"visualization-icons":t.BubbleChart,"visualization-widgets":t.Widgets,weather:t.Brightness6,metering:t.LinearScale};function x({iconName:d,className:a,adapter:n,socket:e,onClick:r,style:m}){const[_,g]=f.useState("");if(f.useEffect(()=>{n&&e&&(p[n]instanceof Promise||(p[n]=e.getObject(`system.adapter.${n}`)),p[n].then(o=>{var c;return((c=o==null?void 0:o.common)==null?void 0:c.icon)&&g(`../../adapter/${n}/${o.common.icon}`)}))},[n,e]),n)return s.jsx("img",{onClick:o=>r&&r(o),src:_||"",className:a,style:m,alt:""});const l=b[d]||t.Help;return s.jsx(l,{className:a,style:m,onClick:o=>r&&r(o)})}const y={button:{marginLeft:10,marginRight:10},icon:{marginRight:5}};function E({arrayItem:d,title:a,onClick:n,value:e,contained:r,buttonIcon:m,icons:_,t:g,translateSuffix:l,noTranslation:o}){const[c,u]=f.useState(null);return l=l||"",s.jsxs(s.Fragment,{children:[s.jsx(h.Tooltip,{title:a||"",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:s.jsxs(h.Button,{style:y.button,variant:r?"contained":"outlined",color:"primary",onClick:i=>u(i.currentTarget),children:[m||_&&s.jsx(x,{iconName:e,style:y.icon}),typeof e=="number"||o?e:g(e+l)]})}),s.jsx(h.Menu,{anchorEl:c,open:!!c,disableScrollLock:!0,marginThreshold:8,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},slotProps:{root:{className:"eos-module-filter-menu"},paper:{className:"eos-module-filter-menu-paper",sx:{minWidth:180,maxWidth:"min(420px, calc(100vw - 24px))",maxHeight:"min(70vh, 640px)",overflowY:"auto"}}},onClose:()=>u(null),children:d.map(({name:i},S)=>s.jsxs(h.MenuItem,{selected:e||e===0?i===e:S===0,disabled:e||e===0?i===e:S===0,className:`tag-card-${i}`,style:{placeContent:"space-between"},value:i,onClick:()=>{n(i),u(null)},children:[_&&s.jsx(x,{iconName:i,style:y.icon}),typeof i=="number"||o?i:g(i+l)]},i))})]})}const A="data:image/svg+xml,%3csvg%20viewBox='0%200%20256%20230'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M251.22%20187.856c5.785%2010.045%206.345%2020.608%201.538%2028.958-4.8%208.357-14.192%2013.143-25.768%2013.143h-21.816c.259-4.068.431-8.17.431-12.302%200-4.628-.215-9.198-.531-13.754l14.35-.014c3.528%200%206.38-2.867%206.38-6.403a6.46%206.46%200%200%200-.768-3.053l-91.46-158.97a6.349%206.349%200%200%200-5.54-3.24%206.374%206.374%200%200%200-5.461%203.09l-14.522%2025.243c44.134%2033.27%2073.804%2084.813%2077.864%20143.333.316%204.548.531%209.119.531%2013.753%200%204.132-.172%208.228-.424%2012.302h-71.246c.388-4.053.611-8.148.611-12.302%200-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003%2017.376c17.54%2016.325%2029.512%2038.558%2032.767%2063.514.59%204.505.92%209.09.92%2013.753%200%204.154-.273%208.264-.74%2012.302H29.01c-11.576%200-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905%201.538-28.958l13.56-23.238a79.42%2079.42%200%200%201%2020.715%2016.052l-8.083%2013.768a6.523%206.523%200%200%200-.77%203.054%206.383%206.383%200%200%200%206.382%206.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427%20151.427%200%200%201%2021.564%2014.624c30.827%2025.013%2051.644%2061.955%2055.416%20103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205%20171.205%200%200%200-21.672-14.457l30.532-53.045C109.583%205.77%20118.42%200%20128.036%200c9.607%200%2018.438%205.77%2024.223%2015.823l98.961%20172.033z'%20fill='%23FB2D26'/%3e%3c/svg%3e";export{E as C,x as M,A as s};
@@ -3764,7 +3764,7 @@ html.eos-objects-surface [data-eos-scalar-capture="1"]:hover {
3764
3764
  box-shadow: inset 0 0 0 1px rgba(0, 255, 136, .30) !important;
3765
3765
  }
3766
3766
 
3767
- /* === NexoWatt EOS v7.9.75: type-aware manual datapoint controls =========
3767
+ /* === NexoWatt EOS v7.9.76: universal manual state editor =========
3768
3768
  Button/trigger and boolean switch states use the whole value cell as one
3769
3769
  deterministic action target. Safety-relevant commands remain visible but
3770
3770
  are locked outside expert mode. */
@@ -3811,3 +3811,34 @@ html .eos-object-value-cell[data-eos-expert-only="1"]:hover {
3811
3811
  background: rgba(255, 177, 0, .11) !important;
3812
3812
  box-shadow: inset 0 0 0 1px rgba(255, 177, 0, .25) !important;
3813
3813
  }
3814
+
3815
+
3816
+ /* === NexoWatt EOS v7.9.78: value-column alignment ========================
3817
+ Manual controls and scalar values remain inside the native ObjectBrowser
3818
+ value column. The native inline column width is intentionally preserved;
3819
+ only the content alignment is changed. */
3820
+ html.eos-app.eos-objects-surface .eos-object-value-cell,
3821
+ html.eos-objects-surface .eos-object-value-cell {
3822
+ display: flex !important;
3823
+ align-items: center !important;
3824
+ justify-content: flex-end !important;
3825
+ text-align: right !important;
3826
+ box-sizing: border-box !important;
3827
+ min-width: 0 !important;
3828
+ padding-left: 8px !important;
3829
+ padding-right: 8px !important;
3830
+ }
3831
+ html.eos-app.eos-objects-surface .eos-object-value-cell > *,
3832
+ html.eos-objects-surface .eos-object-value-cell > * {
3833
+ margin-left: auto !important;
3834
+ text-align: right !important;
3835
+ max-width: 100% !important;
3836
+ }
3837
+ html.eos-app.eos-objects-surface .eos-object-value-cell .MuiSwitch-root,
3838
+ html.eos-objects-surface .eos-object-value-cell .MuiSwitch-root,
3839
+ html.eos-app.eos-objects-surface .eos-object-value-cell button,
3840
+ html.eos-objects-surface .eos-object-value-cell button,
3841
+ html.eos-app.eos-objects-surface .eos-object-value-cell .admin-button,
3842
+ html.eos-objects-surface .eos-object-value-cell .admin-button {
3843
+ margin-left: auto !important;
3844
+ }
@@ -7,9 +7,9 @@
7
7
  <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
8
8
  <meta http-equiv="Pragma" content="no-cache" />
9
9
  <meta http-equiv="Expires" content="0" />
10
- <script src="./js/eos-console-quiet.js?v=75"></script>
11
- <script src="./js/eos-manual-write-policy.js?v=75"></script>
12
- <script type="module" src="./assets/hostInit-v75.js?v=75"></script>
10
+ <script src="./js/eos-console-quiet.js?v=76"></script>
11
+ <script src="./js/eos-manual-write-policy.js?v=76"></script>
12
+ <script type="module" src="./assets/hostInit-v76.js?v=76"></script>
13
13
 
14
14
  <meta charset="utf-8" />
15
15
  <link
@@ -36,7 +36,7 @@
36
36
  rel="stylesheet"
37
37
  href="css/leaflet.css"
38
38
  />
39
- <link rel="stylesheet" href="./css/eos-branding.css?v=75" />
39
+ <link rel="stylesheet" href="./css/eos-branding.css?v=78" />
40
40
  <link
41
41
  rel="manifest"
42
42
  href="manifest.json"
@@ -156,15 +156,15 @@
156
156
  false,
157
157
  );
158
158
  </script>
159
- <script type="module" crossorigin src="./assets/index-CQZugZ1z-v75.js?v=75"></script>
159
+ <script type="module" crossorigin src="./assets/index-CQZugZ1z-v76.js?v=76"></script>
160
160
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
161
161
  <link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
162
- <script defer src="./js/eos-policy-client.js?v=75"></script>
163
- <script defer src="./js/eos-branding.js?v=75"></script>
164
- <script defer src="./js/eos-security-ui.js?v=75"></script>
165
- <script defer src="./js/eos-role-ui.js?v=75"></script>
166
- <script defer src="./js/eos-assistant.js?v=75"></script>
167
- <script defer src="./js/eos-objects-state-tools.js?v=75"></script>
162
+ <script defer src="./js/eos-policy-client.js?v=76"></script>
163
+ <script defer src="./js/eos-branding.js?v=76"></script>
164
+ <script defer src="./js/eos-security-ui.js?v=76"></script>
165
+ <script defer src="./js/eos-role-ui.js?v=76"></script>
166
+ <script defer src="./js/eos-assistant.js?v=76"></script>
167
+ <script defer src="./js/eos-objects-state-tools.js?v=76"></script>
168
168
  </head>
169
169
  <body>
170
170
  <noscript>You need to enable JavaScript to run this app.</noscript>
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- window.NEXOWATT_EOS_UI_VERSION = 'v75-type-aware-manual-controls';
4
+ window.NEXOWATT_EOS_UI_VERSION = 'v76-universal-manual-state-editor';
5
5
 
6
6
  const BRAND = 'NexoWatt EOS';
7
7
  const EOS_MEANING = 'Energy Operation System';
@@ -1,6 +1,6 @@
1
1
  (() => {
2
2
  'use strict';
3
- window.NEXOWATT_EOS_CONSOLE_QUIET_VERSION = 'v75-type-aware-manual-controls';
3
+ window.NEXOWATT_EOS_CONSOLE_QUIET_VERSION = 'v76-universal-manual-state-editor';
4
4
  // Diagnostic output is intentionally left untouched in the stability release.
5
5
  // Suppressing broad console prefixes hid important performance and runtime clues.
6
6
  window.NEXOWATT_EOS_RESTORE_CONSOLE = () => undefined;
@@ -1,14 +1,19 @@
1
- /* NexoWatt EOS manual datapoint write policy v7.9.75 */
1
+ /* NexoWatt EOS manual datapoint write policy v7.9.76 */
2
2
  (function (root, factory) {
3
3
  'use strict';
4
4
  const api = factory();
5
5
  if (typeof module === 'object' && module.exports) module.exports = api;
6
6
  if (!root) return;
7
7
 
8
- root.NEXOWATT_EOS_MANUAL_WRITE_POLICY_VERSION = 'v75-type-aware-manual-controls';
8
+ root.NEXOWATT_EOS_MANUAL_WRITE_POLICY_VERSION = 'v76-universal-manual-state-editor';
9
+ root.NEXOWATT_EOS_MANUAL_WRITE_POLICY = api;
9
10
  root.NEXOWATT_EOS_GET_WRITE_BEHAVIOR = api.getWriteBehavior;
11
+ root.NEXOWATT_EOS_GET_DIRECT_WRITE_VALUE = api.getDirectWriteValue;
12
+ root.NEXOWATT_EOS_GET_EXPERT_ONLY_REASON = api.getExpertOnlyReason;
10
13
  root.NEXOWATT_EOS_IS_EXPERT_ONLY_STATE = api.isExpertOnlyState;
11
14
  root.NEXOWATT_EOS_COERCE_BOOLEAN = api.toBoolean;
15
+ root.NEXOWATT_EOS_PREPARE_MANUAL_EDITOR = api.prepareEditor;
16
+ root.NEXOWATT_EOS_PARSE_MANUAL_VALUE = api.parseEditorValue;
12
17
  root.NEXOWATT_EOS_WRITE_MANUAL_STATE = api.writeManualState;
13
18
  })(typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : null, function () {
14
19
  'use strict';
@@ -23,10 +28,43 @@
23
28
  const flattenTranslatedText = value => {
24
29
  if (value == null) return '';
25
30
  if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return String(value);
31
+ if (Array.isArray(value)) return value.map(flattenTranslatedText).join(' ');
26
32
  if (typeof value === 'object') return Object.values(value).map(flattenTranslatedText).join(' ');
27
33
  return '';
28
34
  };
29
35
 
36
+ const normalizeCommonType = (obj, value) => {
37
+ const common = obj && obj.common ? obj.common : {};
38
+ const type = Array.isArray(common.type) ? common.type[0] : common.type;
39
+ if (['number', 'string', 'boolean', 'array', 'object', 'mixed', 'file', 'json'].includes(type)) return type;
40
+ if (Array.isArray(value)) return 'array';
41
+ if (value && typeof value === 'object') return 'object';
42
+ if (typeof value === 'number') return 'number';
43
+ if (typeof value === 'boolean') return 'boolean';
44
+ return 'string';
45
+ };
46
+
47
+ const normalizeStates = states => {
48
+ if (!states) return [];
49
+ if (Array.isArray(states)) return states.map((label, index) => ({ key: String(index), label: String(label) }));
50
+ if (typeof states === 'string') {
51
+ return states
52
+ .split(';')
53
+ .map(part => part.trim())
54
+ .filter(Boolean)
55
+ .map(part => {
56
+ const index = part.indexOf(':');
57
+ return index === -1
58
+ ? { key: part, label: part }
59
+ : { key: part.slice(0, index).trim(), label: part.slice(index + 1).trim() };
60
+ });
61
+ }
62
+ if (typeof states === 'object') {
63
+ return Object.entries(states).map(([key, label]) => ({ key, label: flattenTranslatedText(label) || key }));
64
+ }
65
+ return [];
66
+ };
67
+
30
68
  const getExplicitExpertOnly = obj => {
31
69
  const common = obj && obj.common ? obj.common : {};
32
70
  const native = obj && obj.native ? obj.native : {};
@@ -46,9 +84,10 @@
46
84
  return undefined;
47
85
  };
48
86
 
49
- const isExpertOnlyState = (id, obj) => {
87
+ const getExpertOnlyReason = (id, obj) => {
50
88
  const explicit = getExplicitExpertOnly(obj);
51
- if (explicit !== undefined) return explicit;
89
+ if (explicit === true) return 'explicit';
90
+ if (explicit === false) return '';
52
91
 
53
92
  const common = obj && obj.common ? obj.common : {};
54
93
  const role = normalizeText(common.role);
@@ -61,9 +100,10 @@
61
100
  ].join(' '));
62
101
  const compact = text.replace(/[^a-z0-9]+/g, '');
63
102
 
64
- // Writable raw power/current commands are never exposed in normal mode.
65
- if (/^(?:level\.)?(?:power|current)(?:\.|$)/.test(role)) return true;
66
- if (/^(?:value\.)?(?:power|current)\.setpoint(?:\.|$)/.test(role)) return true;
103
+ // High-confidence safety classes only. Normal setpoints such as room
104
+ // temperatures remain available outside expert mode.
105
+ if (/^(?:level\.)?(?:power|current)(?:\.|$)/.test(role)) return 'power-or-current-command';
106
+ if (/^(?:value\.)?(?:power|current)\.(?:setpoint|limit|target|command)(?:\.|$)/.test(role)) return 'power-or-current-command';
67
107
 
68
108
  const exactRiskTokens = [
69
109
  'hardreset', 'softreset', 'factoryreset', 'factorydefault', 'reboot', 'restartdevice', 'shutdown',
@@ -75,63 +115,279 @@
75
115
  'ladeleistung', 'entladeleistung', 'ladestrom', 'stromlimit', 'leistungsgrenze',
76
116
  'leistungssollwert', 'einspeiselimit', 'ruecksetzen', 'neustart',
77
117
  ];
78
- if (exactRiskTokens.some(token => compact.includes(token))) return true;
118
+ if (exactRiskTokens.some(token => compact.includes(token))) return 'safety-command';
79
119
 
80
120
  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)/;
81
121
  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)/;
82
- return powerCommand.test(text) || inversePowerCommand.test(text);
122
+ if (powerCommand.test(text) || inversePowerCommand.test(text)) return 'power-or-current-command';
123
+ return '';
83
124
  };
84
125
 
126
+ const isExpertOnlyState = (id, obj) => Boolean(getExpertOnlyReason(id, obj));
127
+
85
128
  const toBoolean = value => {
86
129
  if (value === true || value === 1) return true;
87
130
  if (value === false || value === 0 || value == null) return false;
88
131
  const normalized = normalizeText(value).trim();
89
- if (['true', '1', 'on', 'yes', 'ja', 'enabled', 'active'].includes(normalized)) return true;
90
- if (['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', '', 'null', '(null)'].includes(normalized)) return false;
132
+ if (['true', '1', 'on', 'yes', 'ja', 'enabled', 'active', 'open', 'start', 'ein'].includes(normalized)) return true;
133
+ if (['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', 'closed', 'stop', 'aus', '', 'null', '(null)'].includes(normalized)) return false;
91
134
  return Boolean(value);
92
135
  };
93
136
 
137
+ const parseNumber = value => {
138
+ if (typeof value === 'number') {
139
+ if (!Number.isFinite(value)) throw new Error('Ungültiger Zahlenwert');
140
+ return value;
141
+ }
142
+ const normalized = String(value == null ? '' : value).trim().replace(',', '.');
143
+ if (!normalized) throw new Error('Zahlenwert fehlt');
144
+ const parsed = Number(normalized);
145
+ if (!Number.isFinite(parsed)) throw new Error(`Ungültiger Zahlenwert: ${value}`);
146
+ return parsed;
147
+ };
148
+
149
+ const parseJson = value => {
150
+ if (value && typeof value === 'object') return value;
151
+ const text = String(value == null ? '' : value).trim();
152
+ if (!text) throw new Error('JSON-Wert fehlt');
153
+ try {
154
+ return JSON.parse(text);
155
+ } catch (error) {
156
+ throw new Error(`Ungültiges JSON: ${error && error.message ? error.message : error}`);
157
+ }
158
+ };
159
+
160
+ const castStateKey = (key, type) => {
161
+ if (type === 'number') return parseNumber(key);
162
+ if (type === 'boolean') return toBoolean(key);
163
+ if (type === 'mixed') {
164
+ const text = String(key).trim();
165
+ if (/^(true|false|on|off|yes|no|ja|nein|1|0)$/i.test(text)) return toBoolean(text);
166
+ if (/^[+-]?(?:\d+\.?\d*|\.\d+)$/.test(text.replace(',', '.'))) return parseNumber(text);
167
+ try {
168
+ if (/^[\[{]/.test(text)) return JSON.parse(text);
169
+ } catch {
170
+ // keep as text
171
+ }
172
+ return text;
173
+ }
174
+ return String(key);
175
+ };
176
+
177
+ const sameValue = (left, right) => {
178
+ if (Object.is(left, right)) return true;
179
+ if (left == null || right == null) return left == null && right == null;
180
+ if (typeof left === 'object' || typeof right === 'object') {
181
+ try {
182
+ return JSON.stringify(left) === JSON.stringify(right);
183
+ } catch {
184
+ return false;
185
+ }
186
+ }
187
+ return String(left) === String(right);
188
+ };
189
+
190
+ const optionScore = (option, mode) => {
191
+ const text = normalizeText(`${option.key} ${option.label}`).replace(/[^a-z0-9]+/g, ' ');
192
+ const offWords = ['false', '0', 'off', 'no', 'nein', 'disabled', 'inactive', 'closed', 'stop', 'aus'];
193
+ const onWords = ['true', '1', 'on', 'yes', 'ja', 'enabled', 'active', 'open', 'start', 'ein'];
194
+ const words = mode === 'on' ? onWords : offWords;
195
+ return words.reduce((score, word) => score + (new RegExp(`(?:^|\\s)${word}(?:\\s|$)`).test(text) ? 10 : 0), 0);
196
+ };
197
+
198
+ const getBinaryOptions = obj => {
199
+ const common = obj && obj.common ? obj.common : {};
200
+ const type = normalizeCommonType(obj);
201
+ const entries = normalizeStates(common.states);
202
+ if (entries.length > 2) return null;
203
+ if (entries.length === 2) {
204
+ const typed = entries.map(entry => ({ ...entry, value: castStateKey(entry.key, type) }));
205
+ const firstOff = optionScore(typed[0], 'off');
206
+ const firstOn = optionScore(typed[0], 'on');
207
+ const secondOff = optionScore(typed[1], 'off');
208
+ const secondOn = optionScore(typed[1], 'on');
209
+ if (firstOn > firstOff && secondOff >= secondOn) return { off: typed[1].value, on: typed[0].value };
210
+ if (secondOn > secondOff && firstOff >= firstOn) return { off: typed[0].value, on: typed[1].value };
211
+ return { off: typed[0].value, on: typed[1].value };
212
+ }
213
+ if (type === 'boolean') return { off: false, on: true };
214
+ if (type === 'number') {
215
+ const off = typeof common.min === 'number' ? common.min : 0;
216
+ let on = typeof common.max === 'number' ? common.max : 1;
217
+ if (sameValue(off, on)) on = off === 0 ? 1 : 0;
218
+ return { off, on };
219
+ }
220
+ if (type === 'string') return { off: 'false', on: 'true' };
221
+ if (type === 'mixed') return { off: false, on: true };
222
+ return null;
223
+ };
224
+
225
+ const isButtonState = (obj, item) => {
226
+ const common = obj && obj.common ? obj.common : {};
227
+ const role = normalizeText(common.role);
228
+ const data = item && item.data ? item.data : {};
229
+ return Boolean(data.button) || role === 'button' || role.startsWith('button.') || role === 'action' || role.startsWith('action.');
230
+ };
231
+
232
+ const isSwitchState = (obj, item) => {
233
+ const common = obj && obj.common ? obj.common : {};
234
+ const role = normalizeText(common.role);
235
+ const data = item && item.data ? item.data : {};
236
+ const requested = Boolean(data.switch) || role === 'switch' || role.startsWith('switch.') || normalizeCommonType(obj) === 'boolean';
237
+ return requested && Boolean(getBinaryOptions(obj));
238
+ };
239
+
94
240
  const getWriteBehavior = (id, obj, item, expertMode) => {
95
241
  if (!obj || obj.type !== 'state') return 'readonly';
96
242
  const common = obj.common || {};
97
243
  if (common.write === false) return 'readonly';
98
244
  if (isExpertOnlyState(id, obj) && !expertMode) return 'expert-only';
99
- if (common.type === 'file') return 'file';
100
-
101
- const role = normalizeText(common.role);
102
- const data = item && item.data ? item.data : {};
103
- const isButton = Boolean(data.button) || role === 'button' || role.startsWith('button.') || role === 'action' || role.startsWith('action.');
104
- if (isButton) return 'button';
105
- if (Boolean(data.switch) || role === 'switch' || role.startsWith('switch.') || common.type === 'boolean') return 'switch';
245
+ if (normalizeCommonType(obj) === 'file') return 'file';
246
+ if (isButtonState(obj, item) && (common.def !== undefined || !['array', 'object'].includes(normalizeCommonType(obj)))) return 'button';
247
+ if (isSwitchState(obj, item)) return 'switch';
106
248
  return 'dialog';
107
249
  };
108
250
 
251
+ const getDirectWriteValue = (id, obj, item, currentValue, behavior) => {
252
+ const common = obj && obj.common ? obj.common : {};
253
+ const type = normalizeCommonType(obj, currentValue);
254
+ const mode = behavior || getWriteBehavior(id, obj, item, true);
255
+ if (mode === 'button') {
256
+ if (common.def !== undefined) return common.def;
257
+ const options = getBinaryOptions(obj);
258
+ if (options) return options.on;
259
+ if (type === 'boolean') return true;
260
+ if (type === 'number') return 1;
261
+ if (type === 'string') return 'true';
262
+ if (type === 'mixed') return true;
263
+ throw new Error(`Button-Datenpunkt ${id} benötigt einen expliziten Vorgabewert`);
264
+ }
265
+ if (mode === 'switch') {
266
+ const options = getBinaryOptions(obj);
267
+ if (!options) throw new Error(`Datenpunkt ${id} ist kein binärer Schalter`);
268
+ return sameValue(currentValue, options.on) ? options.off : options.on;
269
+ }
270
+ throw new Error(`Direktes Schreiben ist für ${mode} nicht vorgesehen`);
271
+ };
272
+
273
+ const inferEditorType = (obj, currentValue) => {
274
+ const common = obj && obj.common ? obj.common : {};
275
+ if (normalizeStates(common.states).length) return 'states';
276
+ const type = normalizeCommonType(obj, currentValue);
277
+ if (type === 'array' || type === 'object' || type === 'json') return 'json';
278
+ if (type === 'mixed') return 'json';
279
+ if (type === 'number' || type === 'boolean' || type === 'string') return type;
280
+ return 'string';
281
+ };
282
+
283
+ const prepareEditor = (obj, currentValue) => {
284
+ const editorType = inferEditorType(obj, currentValue);
285
+ const originalType = normalizeCommonType(obj, currentValue);
286
+ let value = currentValue;
287
+ if (editorType === 'json') {
288
+ if (typeof value === 'string') {
289
+ try {
290
+ value = JSON.stringify(JSON.parse(value), null, 2);
291
+ } catch {
292
+ value = originalType === 'mixed' ? JSON.stringify(value) : value;
293
+ }
294
+ } else {
295
+ value = JSON.stringify(value == null ? null : value, null, 2);
296
+ }
297
+ } else if (editorType === 'number') {
298
+ value = value == null ? '' : value;
299
+ } else if (editorType === 'boolean') {
300
+ value = toBoolean(value);
301
+ } else if (editorType === 'string') {
302
+ value = value == null ? '' : String(value);
303
+ }
304
+ return {
305
+ editorType,
306
+ value,
307
+ originalType,
308
+ };
309
+ };
310
+
311
+ const parseEditorValue = (obj, editorType, rawValue) => {
312
+ const common = obj && obj.common ? obj.common : {};
313
+ const originalType = normalizeCommonType(obj, rawValue);
314
+ let value = rawValue && typeof rawValue === 'object' && Object.prototype.hasOwnProperty.call(rawValue, 'value')
315
+ ? rawValue.value
316
+ : rawValue;
317
+
318
+ if (editorType !== 'string' && value === 'null') return null;
319
+
320
+ if (editorType === 'states') {
321
+ value = castStateKey(value, originalType);
322
+ } else if (editorType === 'number') {
323
+ value = parseNumber(value);
324
+ } else if (editorType === 'boolean') {
325
+ value = toBoolean(value);
326
+ } else if (editorType === 'json') {
327
+ value = parseJson(value);
328
+ } else {
329
+ value = value == null ? '' : String(value);
330
+ }
331
+
332
+ if (originalType === 'number' && typeof value !== 'number') value = parseNumber(value);
333
+ if (originalType === 'boolean' && typeof value !== 'boolean') value = toBoolean(value);
334
+ if (originalType === 'string' && typeof value !== 'string') value = String(value);
335
+ if (originalType === 'array') {
336
+ if (typeof value === 'string') value = parseJson(value);
337
+ if (!Array.isArray(value)) throw new Error('Der Datenpunkt erwartet ein JSON-Array');
338
+ }
339
+ if (originalType === 'object') {
340
+ if (typeof value === 'string') value = parseJson(value);
341
+ if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('Der Datenpunkt erwartet ein JSON-Objekt');
342
+ }
343
+
344
+ if (typeof value === 'number') {
345
+ if (typeof common.min === 'number' && value < common.min) throw new Error(`Wert liegt unter dem Minimum ${common.min}`);
346
+ if (typeof common.max === 'number' && value > common.max) throw new Error(`Wert liegt über dem Maximum ${common.max}`);
347
+ }
348
+ return value;
349
+ };
350
+
109
351
  const writeManualState = (socket, id, value) => {
110
352
  if (!socket || typeof socket.setState !== 'function') {
111
353
  return Promise.reject(new Error('ioBroker socket is not ready'));
112
354
  }
113
355
  const key = String(id || '');
114
356
  if (!key) return Promise.reject(new Error('Missing datapoint ID'));
115
- if (pendingWrites.has(key)) return pendingWrites.get(key);
116
357
 
358
+ const previous = pendingWrites.get(key);
359
+ if (previous && sameValue(previous.value, value)) return previous.promise;
360
+
361
+ const predecessor = previous ? previous.promise.catch(() => undefined) : Promise.resolve();
117
362
  let timeoutHandle;
118
- const operation = Promise.resolve().then(() => socket.setState(key, { val: value, ack: false, q: 0 }));
119
- const timeout = new Promise((_, reject) => {
120
- timeoutHandle = setTimeout(() => reject(new Error(`Write timeout for ${key}`)), 15000);
121
- });
122
- const promise = Promise.race([operation, timeout])
123
- .finally(() => {
124
- if (timeoutHandle) clearTimeout(timeoutHandle);
125
- pendingWrites.delete(key);
363
+ const operation = predecessor.then(() => {
364
+ const write = Promise.resolve(socket.setState(key, { val: value, ack: false, q: 0 }));
365
+ const timeout = new Promise((_, reject) => {
366
+ timeoutHandle = setTimeout(() => reject(new Error(`Write timeout for ${key}`)), 15000);
126
367
  });
127
- pendingWrites.set(key, promise);
368
+ return Promise.race([write, timeout]);
369
+ });
370
+ const promise = operation.finally(() => {
371
+ if (timeoutHandle) clearTimeout(timeoutHandle);
372
+ const active = pendingWrites.get(key);
373
+ if (active && active.promise === promise) pendingWrites.delete(key);
374
+ });
375
+ pendingWrites.set(key, { value, promise });
128
376
  return promise;
129
377
  };
130
378
 
131
379
  return {
380
+ normalizeCommonType,
381
+ normalizeStates,
132
382
  getExplicitExpertOnly,
383
+ getExpertOnlyReason,
133
384
  isExpertOnlyState,
385
+ getBinaryOptions,
134
386
  getWriteBehavior,
387
+ getDirectWriteValue,
388
+ inferEditorType,
389
+ prepareEditor,
390
+ parseEditorValue,
135
391
  toBoolean,
136
392
  writeManualState,
137
393
  };
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v75-type-aware-manual-controls';
4
+ window.NEXOWATT_EOS_OBJECTS_STATE_TOOLS_VERSION = 'v76-universal-manual-state-editor';
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 = 'v75-type-aware-manual-controls';
4
+ const VERSION = 'v76-universal-manual-state-editor';
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 = 'v75-type-aware-manual-controls';
4
+ window.NEXOWATT_EOS_ROLE_UI_VERSION = 'v76-universal-manual-state-editor';
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 = 'v75-type-aware-manual-controls';
4
+ const VERSION = 'v76-universal-manual-state-editor';
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-v75.js","path":"","type":"module"},"ssrRemoteEntry":{"name":"remoteEntry-v75.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-v75.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-v75.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v75.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v75.js";
1
+ export * from "./remoteEntry-v76.js";
@@ -1 +1 @@
1
- export * from "./remoteEntry-v75.js";
1
+ export * from "./remoteEntry-v76.js";