@victronenergy/mfd-modules 10.4.2 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +1 -1
  2. package/dist/src/Modules/AcLoads/AcLoads.provider.d.ts.map +1 -1
  3. package/dist/src/Modules/AcLoads/AcLoads.provider.js +19 -19
  4. package/dist/src/Modules/AcLoads/AcLoads.provider.js.map +1 -1
  5. package/dist/src/Modules/AcMode/AcMode.provider.d.ts.map +1 -1
  6. package/dist/src/Modules/AcMode/AcMode.provider.js +19 -31
  7. package/dist/src/Modules/AcMode/AcMode.provider.js.map +1 -1
  8. package/dist/src/Modules/ActiveSource/ActiveInValues.provider.js +17 -17
  9. package/dist/src/Modules/ActiveSource/ActiveInValues.provider.js.map +1 -1
  10. package/dist/src/Modules/ActiveSource/ActiveSource.provider.js +11 -11
  11. package/dist/src/Modules/ActiveSource/ActiveSource.provider.js.map +1 -1
  12. package/dist/src/Modules/Alternators/Alternator.provider.d.ts.map +1 -1
  13. package/dist/src/Modules/Alternators/Alternator.provider.js +7 -8
  14. package/dist/src/Modules/Alternators/Alternator.provider.js.map +1 -1
  15. package/dist/src/Modules/Alternators/Alternators.provider.d.ts.map +1 -1
  16. package/dist/src/Modules/Alternators/Alternators.provider.js +16 -14
  17. package/dist/src/Modules/Alternators/Alternators.provider.js.map +1 -1
  18. package/dist/src/Modules/Alternators/Alternators.store.d.ts.map +1 -1
  19. package/dist/src/Modules/Alternators/Alternators.store.js +7 -10
  20. package/dist/src/Modules/Alternators/Alternators.store.js.map +1 -1
  21. package/dist/src/Modules/App/App.provider.js +47 -47
  22. package/dist/src/Modules/App/App.provider.js.map +1 -1
  23. package/dist/src/Modules/App/App.store.d.ts +2 -2
  24. package/dist/src/Modules/App/App.store.d.ts.map +1 -1
  25. package/dist/src/Modules/App/App.store.js +67 -110
  26. package/dist/src/Modules/App/App.store.js.map +1 -1
  27. package/dist/src/Modules/Battery/Batteries.provider.d.ts.map +1 -1
  28. package/dist/src/Modules/Battery/Batteries.provider.js +16 -14
  29. package/dist/src/Modules/Battery/Batteries.provider.js.map +1 -1
  30. package/dist/src/Modules/Battery/Batteries.store.d.ts.map +1 -1
  31. package/dist/src/Modules/Battery/Batteries.store.js +7 -10
  32. package/dist/src/Modules/Battery/Batteries.store.js.map +1 -1
  33. package/dist/src/Modules/Battery/SystemBatteries.provider.js +5 -5
  34. package/dist/src/Modules/Battery/SystemBatteries.provider.js.map +1 -1
  35. package/dist/src/Modules/Chargers/Charger.provider.js +23 -33
  36. package/dist/src/Modules/Chargers/Charger.provider.js.map +1 -1
  37. package/dist/src/Modules/Chargers/Chargers.provider.d.ts.map +1 -1
  38. package/dist/src/Modules/Chargers/Chargers.provider.js +16 -15
  39. package/dist/src/Modules/Chargers/Chargers.provider.js.map +1 -1
  40. package/dist/src/Modules/Chargers/Chargers.store.d.ts.map +1 -1
  41. package/dist/src/Modules/Chargers/Chargers.store.js +7 -10
  42. package/dist/src/Modules/Chargers/Chargers.store.js.map +1 -1
  43. package/dist/src/Modules/DcLoads/DcLoads.provider.d.ts.map +1 -1
  44. package/dist/src/Modules/DcLoads/DcLoads.provider.js +9 -20
  45. package/dist/src/Modules/DcLoads/DcLoads.provider.js.map +1 -1
  46. package/dist/src/Modules/Generators/ConnectedGenset.provider.d.ts.map +1 -1
  47. package/dist/src/Modules/Generators/ConnectedGenset.provider.js +36 -47
  48. package/dist/src/Modules/Generators/ConnectedGenset.provider.js.map +1 -1
  49. package/dist/src/Modules/Generators/ConnectedGensets.provider.d.ts.map +1 -1
  50. package/dist/src/Modules/Generators/ConnectedGensets.provider.js +16 -14
  51. package/dist/src/Modules/Generators/ConnectedGensets.provider.js.map +1 -1
  52. package/dist/src/Modules/Generators/ConnectedGensets.store.d.ts.map +1 -1
  53. package/dist/src/Modules/Generators/ConnectedGensets.store.js +8 -11
  54. package/dist/src/Modules/Generators/ConnectedGensets.store.js.map +1 -1
  55. package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.js +17 -27
  56. package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.js.map +1 -1
  57. package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts +2 -2
  58. package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts.map +1 -1
  59. package/dist/src/Modules/Generators/GeneratorRelay.provider.js +24 -34
  60. package/dist/src/Modules/Generators/GeneratorRelay.provider.js.map +1 -1
  61. package/dist/src/Modules/Header/Header.provider.js +4 -4
  62. package/dist/src/Modules/Header/Header.provider.js.map +1 -1
  63. package/dist/src/Modules/InverterCharger/InputLimit.provider.js +6 -17
  64. package/dist/src/Modules/InverterCharger/InputLimit.provider.js.map +1 -1
  65. package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts.map +1 -1
  66. package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js +12 -26
  67. package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js.map +1 -1
  68. package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts.map +1 -1
  69. package/dist/src/Modules/InverterCharger/InverterCharger.provider.js +16 -27
  70. package/dist/src/Modules/InverterCharger/InverterCharger.provider.js.map +1 -1
  71. package/dist/src/Modules/Inverters/Inverter.provider.d.ts.map +1 -1
  72. package/dist/src/Modules/Inverters/Inverter.provider.js +19 -30
  73. package/dist/src/Modules/Inverters/Inverter.provider.js.map +1 -1
  74. package/dist/src/Modules/Inverters/Inverters.provider.d.ts.map +1 -1
  75. package/dist/src/Modules/Inverters/Inverters.provider.js +14 -13
  76. package/dist/src/Modules/Inverters/Inverters.provider.js.map +1 -1
  77. package/dist/src/Modules/Inverters/Inverters.store.d.ts.map +1 -1
  78. package/dist/src/Modules/Inverters/Inverters.store.js +7 -10
  79. package/dist/src/Modules/Inverters/Inverters.store.js.map +1 -1
  80. package/dist/src/Modules/Inverters/index.js.map +1 -1
  81. package/dist/src/Modules/Language/Language.provider.d.ts +1 -1
  82. package/dist/src/Modules/Language/Language.provider.d.ts.map +1 -1
  83. package/dist/src/Modules/Language/Language.provider.js +21 -56
  84. package/dist/src/Modules/Language/Language.provider.js.map +1 -1
  85. package/dist/src/Modules/Mqtt/Mqtt.constants.js +1 -1
  86. package/dist/src/Modules/Mqtt/Mqtt.constants.js.map +1 -1
  87. package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts +2 -2
  88. package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts.map +1 -1
  89. package/dist/src/Modules/Mqtt/Mqtt.provider.js +4 -4
  90. package/dist/src/Modules/Mqtt/Mqtt.provider.js.map +1 -1
  91. package/dist/src/Modules/Mqtt/Mqtt.store.d.ts +3 -3
  92. package/dist/src/Modules/Mqtt/Mqtt.store.d.ts.map +1 -1
  93. package/dist/src/Modules/Mqtt/Mqtt.store.js +169 -193
  94. package/dist/src/Modules/Mqtt/Mqtt.store.js.map +1 -1
  95. package/dist/src/Modules/Mqtt/Mqtt.types.d.ts +1 -1
  96. package/dist/src/Modules/Mqtt/Mqtt.types.d.ts.map +1 -1
  97. package/dist/src/Modules/Mqtt/Mqtt.types.js +0 -1
  98. package/dist/src/Modules/Mqtt/Mqtt.types.js.map +1 -1
  99. package/dist/src/Modules/PvCharger/PvCharger.provider.js +8 -8
  100. package/dist/src/Modules/PvCharger/PvCharger.provider.js.map +1 -1
  101. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts +4 -1
  102. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts.map +1 -1
  103. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.js +24 -35
  104. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.js.map +1 -1
  105. package/dist/src/Modules/ShorePowerInput/index.d.ts +0 -1
  106. package/dist/src/Modules/ShorePowerInput/index.d.ts.map +1 -1
  107. package/dist/src/Modules/ShorePowerInput/index.js +0 -1
  108. package/dist/src/Modules/ShorePowerInput/index.js.map +1 -1
  109. package/dist/src/Modules/SwitchingPane/GenericInput.provider.d.ts +27 -0
  110. package/dist/src/Modules/SwitchingPane/GenericInput.provider.d.ts.map +1 -0
  111. package/dist/src/Modules/SwitchingPane/GenericInput.provider.js +32 -0
  112. package/dist/src/Modules/SwitchingPane/GenericInput.provider.js.map +1 -0
  113. package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchableOutput.provider.d.ts +28 -9
  114. package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.d.ts.map +1 -0
  115. package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js +59 -0
  116. package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js.map +1 -0
  117. package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.d.ts.map +1 -0
  118. package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.js +48 -0
  119. package/dist/src/Modules/SwitchingPane/SwitchingDevice.provider.js.map +1 -0
  120. package/dist/src/Modules/SwitchingPane/SwitchingDevices.store.d.ts.map +1 -0
  121. package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevices.store.js +7 -10
  122. package/dist/src/Modules/SwitchingPane/SwitchingDevices.store.js.map +1 -0
  123. package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.d.ts +2 -0
  124. package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.d.ts.map +1 -0
  125. package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js +274 -0
  126. package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js.map +1 -0
  127. package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts +53 -0
  128. package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts.map +1 -0
  129. package/dist/src/Modules/SwitchingPane/SwitchingPane.store.js +178 -0
  130. package/dist/src/Modules/SwitchingPane/SwitchingPane.store.js.map +1 -0
  131. package/dist/src/Modules/SwitchingPane/index.d.ts +7 -0
  132. package/dist/src/Modules/SwitchingPane/index.d.ts.map +1 -0
  133. package/dist/src/Modules/SwitchingPane/index.js +7 -0
  134. package/dist/src/Modules/SwitchingPane/index.js.map +1 -0
  135. package/dist/src/Modules/SystemState/SystemState.provider.js +5 -5
  136. package/dist/src/Modules/SystemState/SystemState.provider.js.map +1 -1
  137. package/dist/src/Modules/Tanks/Tank.provider.d.ts.map +1 -1
  138. package/dist/src/Modules/Tanks/Tank.provider.js +11 -11
  139. package/dist/src/Modules/Tanks/Tank.provider.js.map +1 -1
  140. package/dist/src/Modules/Tanks/Tanks.provider.d.ts.map +1 -1
  141. package/dist/src/Modules/Tanks/Tanks.provider.js +19 -18
  142. package/dist/src/Modules/Tanks/Tanks.provider.js.map +1 -1
  143. package/dist/src/Modules/Tanks/Tanks.store.d.ts.map +1 -1
  144. package/dist/src/Modules/Tanks/Tanks.store.js +7 -10
  145. package/dist/src/Modules/Tanks/Tanks.store.js.map +1 -1
  146. package/dist/src/Modules/Temperatures/Temperature.provider.d.ts.map +1 -1
  147. package/dist/src/Modules/Temperatures/Temperature.provider.js +29 -29
  148. package/dist/src/Modules/Temperatures/Temperature.provider.js.map +1 -1
  149. package/dist/src/Modules/Temperatures/Temperatures.provider.d.ts.map +1 -1
  150. package/dist/src/Modules/Temperatures/Temperatures.provider.js +18 -17
  151. package/dist/src/Modules/Temperatures/Temperatures.provider.js.map +1 -1
  152. package/dist/src/Modules/Temperatures/Temperatures.store.d.ts.map +1 -1
  153. package/dist/src/Modules/Temperatures/Temperatures.store.js +7 -10
  154. package/dist/src/Modules/Temperatures/Temperatures.store.js.map +1 -1
  155. package/dist/src/Modules/Temperatures/index.d.ts +3 -3
  156. package/dist/src/Modules/Temperatures/index.js +3 -3
  157. package/dist/src/Modules/Temperatures/index.js.map +1 -1
  158. package/dist/src/Modules/Theme/Theme.provider.js +6 -6
  159. package/dist/src/Modules/Theme/Theme.provider.js.map +1 -1
  160. package/dist/src/Modules/Theme/Theme.store.d.ts.map +1 -1
  161. package/dist/src/Modules/Theme/Theme.store.js +35 -38
  162. package/dist/src/Modules/Theme/Theme.store.js.map +1 -1
  163. package/dist/src/Modules/Vebus/Vebus.provider.d.ts.map +1 -1
  164. package/dist/src/Modules/Vebus/Vebus.provider.js +39 -48
  165. package/dist/src/Modules/Vebus/Vebus.provider.js.map +1 -1
  166. package/dist/src/Modules/Vebus/Vebus.store.d.ts.map +1 -1
  167. package/dist/src/Modules/Vebus/Vebus.store.js +11 -14
  168. package/dist/src/Modules/Vebus/Vebus.store.js.map +1 -1
  169. package/dist/src/Modules/Vrm/Vrm.store.d.ts.map +1 -1
  170. package/dist/src/Modules/Vrm/Vrm.store.js +85 -154
  171. package/dist/src/Modules/Vrm/Vrm.store.js.map +1 -1
  172. package/dist/src/Modules/Vrm/Vrm.types.js +0 -1
  173. package/dist/src/Modules/WindGenerators/WindGenerator.provider.d.ts.map +1 -1
  174. package/dist/src/Modules/WindGenerators/WindGenerator.provider.js +6 -7
  175. package/dist/src/Modules/WindGenerators/WindGenerator.provider.js.map +1 -1
  176. package/dist/src/Modules/WindGenerators/WindGenerators.provider.d.ts.map +1 -1
  177. package/dist/src/Modules/WindGenerators/WindGenerators.provider.js +21 -19
  178. package/dist/src/Modules/WindGenerators/WindGenerators.provider.js.map +1 -1
  179. package/dist/src/Modules/WindGenerators/WindGenerators.store.d.ts.map +1 -1
  180. package/dist/src/Modules/WindGenerators/WindGenerators.store.js +7 -10
  181. package/dist/src/Modules/WindGenerators/WindGenerators.store.js.map +1 -1
  182. package/dist/src/index.d.ts +2 -1
  183. package/dist/src/index.d.ts.map +1 -1
  184. package/dist/src/index.js +2 -1
  185. package/dist/src/index.js.map +1 -1
  186. package/dist/src/utils/constants.d.ts +57 -3
  187. package/dist/src/utils/constants.d.ts.map +1 -1
  188. package/dist/src/utils/constants.js +86 -30
  189. package/dist/src/utils/constants.js.map +1 -1
  190. package/dist/src/utils/hsvw.d.ts.map +1 -1
  191. package/dist/src/utils/hsvw.js +24 -25
  192. package/dist/src/utils/hsvw.js.map +1 -1
  193. package/dist/src/utils/logger.d.ts +5 -8
  194. package/dist/src/utils/logger.d.ts.map +1 -1
  195. package/dist/src/utils/logger.js +11 -23
  196. package/dist/src/utils/logger.js.map +1 -1
  197. package/dist/src/utils/storage.d.ts.map +1 -1
  198. package/dist/src/utils/storage.js +7 -6
  199. package/dist/src/utils/storage.js.map +1 -1
  200. package/dist/src/utils/util.d.ts +6 -15
  201. package/dist/src/utils/util.d.ts.map +1 -1
  202. package/dist/src/utils/util.js +8 -100
  203. package/dist/src/utils/util.js.map +1 -1
  204. package/package.json +26 -15
  205. package/dist/eslint.config.d.mts +0 -13
  206. package/dist/eslint.config.d.mts.map +0 -1
  207. package/dist/eslint.config.mjs +0 -28
  208. package/dist/eslint.config.mjs.map +0 -1
  209. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts +0 -11
  210. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts.map +0 -1
  211. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.js +0 -37
  212. package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.js.map +0 -1
  213. package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.d.ts.map +0 -1
  214. package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.js +0 -67
  215. package/dist/src/Modules/SwitchableOutputs/SwitchableOutput.provider.js.map +0 -1
  216. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.d.ts +0 -2
  217. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.d.ts.map +0 -1
  218. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.js +0 -168
  219. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.provider.js.map +0 -1
  220. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.d.ts +0 -38
  221. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.d.ts.map +0 -1
  222. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.js +0 -116
  223. package/dist/src/Modules/SwitchableOutputs/SwitchableOutputs.store.js.map +0 -1
  224. package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.d.ts.map +0 -1
  225. package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.js +0 -50
  226. package/dist/src/Modules/SwitchableOutputs/SwitchingDevice.provider.js.map +0 -1
  227. package/dist/src/Modules/SwitchableOutputs/SwitchingDevices.store.d.ts.map +0 -1
  228. package/dist/src/Modules/SwitchableOutputs/SwitchingDevices.store.js.map +0 -1
  229. package/dist/src/Modules/SwitchableOutputs/index.d.ts +0 -6
  230. package/dist/src/Modules/SwitchableOutputs/index.d.ts.map +0 -1
  231. package/dist/src/Modules/SwitchableOutputs/index.js +0 -6
  232. package/dist/src/Modules/SwitchableOutputs/index.js.map +0 -1
  233. /package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevice.provider.d.ts +0 -0
  234. /package/dist/src/Modules/{SwitchableOutputs → SwitchingPane}/SwitchingDevices.store.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Vebus.store.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAe,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAiB,CAAA;AAarB;IAME;QAAA,iBAUC;QAfD;;;;;WAAsB;QACtB;;;;;WAA8B;QAC9B;;;;;WAA4B;QAC5B;;;;;WAAmC;QAcnC;;;;mBAAsB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,gBAAgB,GAAG,OAAO,EAA/B,CAA+B;WAAC;QAEjF;;;;mBAAoB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,cAAc,GAAG,OAAO,EAA7B,CAA6B;WAAC;QAE7E;;;;mBAA2B,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,qBAAqB,GAAG,OAAO,EAApC,CAAoC;WAAC;QAE3F;;;;mBAAgB,UAAC,UAAsB,IAAK,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B;WAAA;QAjBtE,kBAAkB,CAAC,IAAI,EAAE;YACvB,mBAAmB,EAAE,MAAM;YAC3B,iBAAiB,EAAE,MAAM;YACzB,wBAAwB,EAAE,MAAM;YAChC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;IACjC,CAAC;IASH,iBAAC;AAAD,CAAC,AAzBD,IAyBC;;AAED,SAAS,eAAe;IACtB,IAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,UAAU,EAAE,CAAA;IACxC,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: VebusStore\n\nexport type InstanceId = number | null | undefined\n\nexport type VebusDevices = Array<number>\n\nexport interface VebusState {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n}\n\nexport class VebusStore {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n\n constructor() {\n makeAutoObservable(this, {\n setVebusInstanceIds: action,\n setVebusInverters: action,\n setVebusInverterChargers: action,\n setInstanceId: action\n })\n this.vebusInstanceIds = []\n this.vebusInverters = []\n this.vebusInverterChargers = []\n }\n\n setVebusInstanceIds = (devices: VebusDevices) => this.vebusInstanceIds = devices;\n\n setVebusInverters = (devices: VebusDevices) => this.vebusInverters = devices;\n\n setVebusInverterChargers = (devices: VebusDevices) => this.vebusInverterChargers = devices;\n\n setInstanceId = (instanceId: InstanceId) => this.instanceId = instanceId\n}\n\nfunction initializeStore() {\n const _store = store ?? new VebusStore()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVebusStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
1
+ {"version":3,"file":"Vebus.store.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAiB,CAAA;AAarB,MAAM,OAAO,UAAU;IAMrB;QALA;;;;;WAAsB;QACtB;;;;;WAA8B;QAC9B;;;;;WAA4B;QAC5B;;;;;WAAmC;QAcnC;;;;mBAAsB,CAAC,OAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;WAAA;QAElF;;;;mBAAoB,CAAC,OAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;WAAA;QAE9E;;;;mBAA2B,CAAC,OAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;WAAA;QAE5F;;;;mBAAgB,CAAC,UAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;WAAA;QAjBxE,kBAAkB,CAAC,IAAI,EAAE;YACvB,mBAAmB,EAAE,MAAM;YAC3B,iBAAiB,EAAE,MAAM;YACzB,wBAAwB,EAAE,MAAM;YAChC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;IACjC,CAAC;CASF;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,UAAU,EAAE,CAAA;IACxC,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: VebusStore\n\nexport type InstanceId = number | null | undefined\n\nexport type VebusDevices = Array<number>\n\nexport interface VebusState {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n}\n\nexport class VebusStore {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n\n constructor() {\n makeAutoObservable(this, {\n setVebusInstanceIds: action,\n setVebusInverters: action,\n setVebusInverterChargers: action,\n setInstanceId: action,\n })\n this.vebusInstanceIds = []\n this.vebusInverters = []\n this.vebusInverterChargers = []\n }\n\n setVebusInstanceIds = (devices: VebusDevices) => (this.vebusInstanceIds = devices)\n\n setVebusInverters = (devices: VebusDevices) => (this.vebusInverters = devices)\n\n setVebusInverterChargers = (devices: VebusDevices) => (this.vebusInverterChargers = devices)\n\n setInstanceId = (instanceId: InstanceId) => (this.instanceId = instanceId)\n}\n\nfunction initializeStore() {\n const _store = store ?? new VebusStore()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVebusStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Vrm.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhF,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAM9C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,YAAY,CAAA;CACnC;AAED,qBAAa,QAAQ;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,YAAY,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;gBAEvD,QAAQ,EAAE,QAAQ;IAY9B,IAAI,QAAQ,uBAEX;IAED,KAAK,GAAU,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,oBAAiB,EAAE,oBAAoB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC,CA8BxH;IAED,MAAM,aAcL;IAED,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAAC,CAoC9C;IAED,qBAAqB,GAAI,QAAQ,MAAM,UAiBtC;CAEF;AAYD,wBAAgB,WAAW,aAG1B"}
1
+ {"version":3,"file":"Vrm.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhF,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAM9C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,YAAY,CAAA;CACnC;AAED,qBAAa,QAAQ;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,YAAY,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;gBAEvD,QAAQ,EAAE,QAAQ;IAY9B,IAAI,QAAQ,uBAEX;IAED,KAAK,GACH,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,oBAAiB,EACjB,oBAAoB,MAAM,KACzB,OAAO,CAAC,aAAa,CAAC,CA8BxB;IAED,MAAM,aAcL;IAED,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAAC,CAoC9C;IAED,qBAAqB,GAAI,QAAQ,MAAM,UAiBtC;CACF;AAYD,wBAAgB,WAAW,aAG1B"}
@@ -7,52 +7,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
- if (ar || !(i in from)) {
40
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
- ar[i] = from[i];
42
- }
43
- }
44
- return to.concat(ar || Array.prototype.slice.call(from));
45
- };
46
10
  import { makeAutoObservable, runInAction } from "mobx";
47
11
  import { useMemo } from "react";
48
12
  import axios from "axios";
49
13
  import { useAppStore } from "../App";
50
14
  import { makePersistable } from "mobx-persist-store";
51
15
  import { Storage } from "../../utils/storage";
52
- var store;
53
- var VrmStore = /** @class */ (function () {
54
- function VrmStore(appStore) {
55
- var _this = this;
16
+ let store;
17
+ export class VrmStore {
18
+ constructor(appStore) {
56
19
  Object.defineProperty(this, "appStore", {
57
20
  enumerable: true,
58
21
  configurable: true,
@@ -141,131 +104,105 @@ var VrmStore = /** @class */ (function () {
141
104
  enumerable: true,
142
105
  configurable: true,
143
106
  writable: true,
144
- value: function (username_1, password_1) {
145
- var args_1 = [];
146
- for (var _i = 2; _i < arguments.length; _i++) {
147
- args_1[_i - 2] = arguments[_i];
107
+ value: (username_1, password_1, ...args_1) => __awaiter(this, [username_1, password_1, ...args_1], void 0, function* (username, password, rememberMe = true, verificationToken) {
108
+ try {
109
+ const response = yield axios.post(`${this.apiBaseUrl}/auth/login`, {
110
+ username,
111
+ password,
112
+ remember_me: rememberMe,
113
+ sms_token: verificationToken,
114
+ });
115
+ const data = response.data;
116
+ runInAction(() => {
117
+ this.token = data.token;
118
+ this.userId = data.idUser;
119
+ this.username = username;
120
+ this.sentVerification = data.verification_sent;
121
+ this.verificationMode = data.verification_mode;
122
+ });
123
+ return data;
148
124
  }
149
- return __awaiter(_this, __spreadArray([username_1, password_1], args_1, true), void 0, function (username, password, rememberMe, verificationToken) {
150
- var response, data_1, e_1, response;
151
- var _this = this;
152
- if (rememberMe === void 0) { rememberMe = true; }
153
- return __generator(this, function (_a) {
154
- switch (_a.label) {
155
- case 0:
156
- _a.trys.push([0, 2, , 3]);
157
- return [4 /*yield*/, axios.post("".concat(this.apiBaseUrl, "/auth/login"), {
158
- username: username,
159
- password: password,
160
- remember_me: rememberMe,
161
- sms_token: verificationToken
162
- })];
163
- case 1:
164
- response = _a.sent();
165
- data_1 = response.data;
166
- runInAction(function () {
167
- _this.token = data_1.token;
168
- _this.userId = data_1.idUser;
169
- _this.username = username;
170
- _this.sentVerification = data_1.verification_sent;
171
- _this.verificationMode = data_1.verification_mode;
172
- });
173
- return [2 /*return*/, data_1];
174
- case 2:
175
- e_1 = _a.sent();
176
- runInAction(function () {
177
- _this.sentVerification = undefined;
178
- _this.verificationMode = undefined;
179
- });
180
- response = e_1 === null || e_1 === void 0 ? void 0 : e_1.response;
181
- throw new Error("Login failed with status code: ".concat(response === null || response === void 0 ? void 0 : response.status, " (").concat(response === null || response === void 0 ? void 0 : response.statusText, ")"));
182
- case 3: return [2 /*return*/];
183
- }
125
+ catch (e) {
126
+ runInAction(() => {
127
+ this.sentVerification = undefined;
128
+ this.verificationMode = undefined;
184
129
  });
185
- });
186
- }
130
+ const response = e === null || e === void 0 ? void 0 : e.response;
131
+ throw new Error(`Login failed with status code: ${response === null || response === void 0 ? void 0 : response.status} (${response === null || response === void 0 ? void 0 : response.statusText})`, { cause: e });
132
+ }
133
+ })
187
134
  });
188
135
  Object.defineProperty(this, "logout", {
189
136
  enumerable: true,
190
137
  configurable: true,
191
138
  writable: true,
192
- value: function () {
193
- _this.appStore.setRemote(false);
194
- _this.userId = undefined;
195
- _this.username = undefined;
196
- _this.token = undefined;
197
- _this.mqttHost = undefined;
198
- _this.portalId = undefined;
199
- _this.siteId = undefined;
200
- _this.siteName = undefined;
201
- _this.webhost = undefined;
202
- _this.installations = undefined;
203
- _this.sentVerification = undefined;
204
- _this.verificationMode = undefined;
139
+ value: () => {
140
+ this.appStore.setRemote(false);
141
+ this.userId = undefined;
142
+ this.username = undefined;
143
+ this.token = undefined;
144
+ this.mqttHost = undefined;
145
+ this.portalId = undefined;
146
+ this.siteId = undefined;
147
+ this.siteName = undefined;
148
+ this.webhost = undefined;
149
+ this.installations = undefined;
150
+ this.sentVerification = undefined;
151
+ this.verificationMode = undefined;
205
152
  }
206
153
  });
207
154
  Object.defineProperty(this, "updateInstanceDetails", {
208
155
  enumerable: true,
209
156
  configurable: true,
210
157
  writable: true,
211
- value: function () { return __awaiter(_this, void 0, void 0, function () {
212
- var userId, token, response, data;
213
- var _this = this;
214
- return __generator(this, function (_a) {
215
- switch (_a.label) {
216
- case 0:
217
- userId = this.userId;
218
- token = this.token;
219
- if (!userId || !token) {
220
- throw new Error("Not logged in");
221
- }
222
- return [4 /*yield*/, axios.get("".concat(this.apiBaseUrl, "/users/").concat(userId, "/installations?extended=1"), {
223
- headers: {
224
- "x-authorization": "Bearer ".concat(token),
225
- },
226
- })];
227
- case 1:
228
- response = _a.sent();
229
- if (response.status !== 200) {
230
- throw new Error(response.data);
231
- }
232
- data = response.data;
233
- if (data.records.length === 0) {
234
- throw new Error("This account has no installations!");
235
- }
236
- runInAction(function () {
237
- _this.installations = data.records.map(function (v) { return ({
238
- idSite: v.idSite,
239
- identifier: v.identifier,
240
- mqtt_webhost: v.mqtt_webhost,
241
- name: v.name,
242
- }); });
243
- });
244
- if (data.records.length === 1) {
245
- runInAction(function () { return _this.setActiveInstallation(data.records[0].idSite); });
246
- }
247
- return [2 /*return*/];
248
- }
158
+ value: () => __awaiter(this, void 0, void 0, function* () {
159
+ const userId = this.userId;
160
+ const token = this.token;
161
+ if (!userId || !token) {
162
+ throw new Error("Not logged in");
163
+ }
164
+ const response = yield axios.get(`${this.apiBaseUrl}/users/${userId}/installations?extended=1`, {
165
+ headers: {
166
+ "x-authorization": `Bearer ${token}`,
167
+ },
249
168
  });
250
- }); }
169
+ if (response.status !== 200) {
170
+ throw new Error(response.data);
171
+ }
172
+ const data = response.data;
173
+ if (data.records.length === 0) {
174
+ throw new Error("This account has no installations!");
175
+ }
176
+ runInAction(() => {
177
+ this.installations = data.records.map((v) => ({
178
+ idSite: v.idSite,
179
+ identifier: v.identifier,
180
+ mqtt_webhost: v.mqtt_webhost,
181
+ name: v.name,
182
+ }));
183
+ });
184
+ if (data.records.length === 1) {
185
+ runInAction(() => this.setActiveInstallation(data.records[0].idSite));
186
+ }
187
+ })
251
188
  });
252
189
  Object.defineProperty(this, "setActiveInstallation", {
253
190
  enumerable: true,
254
191
  configurable: true,
255
192
  writable: true,
256
- value: function (siteId) {
257
- var installations = _this.installations;
193
+ value: (siteId) => {
194
+ const installations = this.installations;
258
195
  if (!installations) {
259
196
  throw new Error("No installations, try logging in again!");
260
197
  }
261
- var site = installations.find(function (v) { return v.idSite === siteId; });
198
+ const site = installations.find((v) => v.idSite === siteId);
262
199
  if (!site) {
263
200
  throw new Error("Incorrect data - site with specified ID not found!");
264
201
  }
265
- _this.siteName = site.name;
266
- _this.portalId = site.identifier;
267
- _this.webhost = site.mqtt_webhost;
268
- _this.siteId = siteId;
202
+ this.siteName = site.name;
203
+ this.portalId = site.identifier;
204
+ this.webhost = site.mqtt_webhost;
205
+ this.siteId = siteId;
269
206
  }
270
207
  });
271
208
  this.appStore = appStore;
@@ -276,20 +213,14 @@ var VrmStore = /** @class */ (function () {
276
213
  storage: Storage,
277
214
  expireIn: 1000 * 60 * 60 * 24 * 90, // 90 days (ms)
278
215
  removeOnExpiration: true,
279
- }).then();
216
+ });
280
217
  }
281
- Object.defineProperty(VrmStore.prototype, "loggedIn", {
282
- get: function () {
283
- return this.username && this.token && this.webhost && this.portalId;
284
- },
285
- enumerable: false,
286
- configurable: true
287
- });
288
- return VrmStore;
289
- }());
290
- export { VrmStore };
218
+ get loggedIn() {
219
+ return this.username && this.token && this.webhost && this.portalId;
220
+ }
221
+ }
291
222
  function initializeStore(appStore) {
292
- var _store = store !== null && store !== void 0 ? store : new VrmStore(appStore);
223
+ const _store = store !== null && store !== void 0 ? store : new VrmStore(appStore);
293
224
  // For SSG and SSR always create a new store
294
225
  if (typeof window === "undefined")
295
226
  return _store;
@@ -299,7 +230,7 @@ function initializeStore(appStore) {
299
230
  return _store;
300
231
  }
301
232
  export function useVrmStore() {
302
- var appStore = useAppStore();
303
- return useMemo(function () { return initializeStore(appStore); }, []);
233
+ const appStore = useAppStore();
234
+ return useMemo(() => initializeStore(appStore), [appStore]);
304
235
  }
305
236
  //# sourceMappingURL=Vrm.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vrm.store.js","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { Installation, InstallationsResponse, LoginResponse } from \"./Vrm.types\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\nimport axios, { AxiosError } from \"axios\"\nimport { AppStore, useAppStore } from \"../App\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: VrmStore\n\nexport interface VrmState {\n userId?: number\n sentVerification?: boolean\n verificationMode?: string\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n installations?: Installation[]\n environment: \"live\" | \"acceptance\"\n}\n\nexport class VrmStore {\n appStore: AppStore\n userId?: number\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n sentVerification?: boolean\n verificationMode?: string\n installations?: Installation[]\n siteName?: string\n environment: \"live\" | \"acceptance\" = \"live\"\n private readonly apiBaseUrl = \"https://vrmapi.victronenergy.com/v2\"\n\n constructor(appStore: AppStore) {\n this.appStore = appStore\n makeAutoObservable(this, { appStore: false })\n makePersistable(this, {\n name: \"VrmStore\",\n properties: [\"userId\", \"username\", \"token\", \"mqttHost\", \"portalId\", \"siteId\", \"siteName\", \"webhost\"],\n storage: Storage,\n expireIn: 1000 * 60 * 60 * 24 * 90, // 90 days (ms)\n removeOnExpiration: true,\n }).then()\n }\n\n get loggedIn() {\n return this.username && this.token && this.webhost && this.portalId\n }\n\n login = async (username: string, password: string, rememberMe = true, verificationToken?: string): Promise<LoginResponse> => {\n try {\n const response = await axios.post(`${this.apiBaseUrl}/auth/login`, {\n username,\n password,\n remember_me: rememberMe,\n sms_token: verificationToken\n })\n\n const data: LoginResponse = response.data\n\n runInAction(() => {\n this.token = data.token\n this.userId = data.idUser\n this.username = username\n this.sentVerification = data.verification_sent\n this.verificationMode = data.verification_mode\n })\n\n return data\n } catch (e) {\n runInAction(() => {\n this.sentVerification = undefined\n this.verificationMode = undefined\n })\n\n const response = (e as AxiosError)?.response\n\n throw new Error(`Login failed with status code: ${response?.status} (${response?.statusText})`)\n }\n }\n\n logout = () => {\n this.appStore.setRemote(false)\n\n this.userId = undefined\n this.username = undefined\n this.token = undefined\n this.mqttHost = undefined\n this.portalId = undefined\n this.siteId = undefined\n this.siteName = undefined\n this.webhost = undefined\n this.installations = undefined\n this.sentVerification = undefined\n this.verificationMode = undefined\n }\n\n updateInstanceDetails = async (): Promise<void> => {\n const userId = this.userId\n const token = this.token\n\n if (!userId || !token) {\n throw new Error(\"Not logged in\")\n }\n\n const response = await axios.get(`${this.apiBaseUrl}/users/${userId}/installations?extended=1`, {\n headers: {\n \"x-authorization\": `Bearer ${token}`,\n },\n })\n\n if (response.status !== 200) {\n throw new Error(response.data)\n }\n\n const data: InstallationsResponse = response.data\n\n if (data.records.length === 0) {\n throw new Error(\"This account has no installations!\")\n }\n\n runInAction(() => {\n this.installations = data.records.map((v) => ({\n idSite: v.idSite,\n identifier: v.identifier,\n mqtt_webhost: v.mqtt_webhost,\n name: v.name,\n }))\n })\n\n if (data.records.length === 1) {\n runInAction(() => this.setActiveInstallation(data.records[0].idSite))\n }\n }\n\n setActiveInstallation = (siteId: number) => {\n const installations = this.installations\n\n if (!installations) {\n throw new Error(\"No installations, try logging in again!\")\n }\n\n const site = installations.find((v) => v.idSite === siteId)\n\n if (!site) {\n throw new Error(\"Incorrect data - site with specified ID not found!\")\n }\n\n this.siteName = site.name\n this.portalId = site.identifier\n this.webhost = site.mqtt_webhost\n this.siteId = siteId\n }\n\n}\n\nfunction initializeStore(appStore: AppStore) {\n const _store = store ?? new VrmStore(appStore)\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVrmStore() {\n const appStore = useAppStore()\n return useMemo(() => initializeStore(appStore), [])\n}"]}
1
+ {"version":3,"file":"Vrm.store.js","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { Installation, InstallationsResponse, LoginResponse } from \"./Vrm.types\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\nimport axios, { AxiosError } from \"axios\"\nimport { AppStore, useAppStore } from \"../App\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: VrmStore\n\nexport interface VrmState {\n userId?: number\n sentVerification?: boolean\n verificationMode?: string\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n installations?: Installation[]\n environment: \"live\" | \"acceptance\"\n}\n\nexport class VrmStore {\n appStore: AppStore\n userId?: number\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n sentVerification?: boolean\n verificationMode?: string\n installations?: Installation[]\n siteName?: string\n environment: \"live\" | \"acceptance\" = \"live\"\n private readonly apiBaseUrl = \"https://vrmapi.victronenergy.com/v2\"\n\n constructor(appStore: AppStore) {\n this.appStore = appStore\n makeAutoObservable(this, { appStore: false })\n makePersistable(this, {\n name: \"VrmStore\",\n properties: [\"userId\", \"username\", \"token\", \"mqttHost\", \"portalId\", \"siteId\", \"siteName\", \"webhost\"],\n storage: Storage,\n expireIn: 1000 * 60 * 60 * 24 * 90, // 90 days (ms)\n removeOnExpiration: true,\n })\n }\n\n get loggedIn() {\n return this.username && this.token && this.webhost && this.portalId\n }\n\n login = async (\n username: string,\n password: string,\n rememberMe = true,\n verificationToken?: string\n ): Promise<LoginResponse> => {\n try {\n const response = await axios.post(`${this.apiBaseUrl}/auth/login`, {\n username,\n password,\n remember_me: rememberMe,\n sms_token: verificationToken,\n })\n\n const data: LoginResponse = response.data\n\n runInAction(() => {\n this.token = data.token\n this.userId = data.idUser\n this.username = username\n this.sentVerification = data.verification_sent\n this.verificationMode = data.verification_mode\n })\n\n return data\n } catch (e) {\n runInAction(() => {\n this.sentVerification = undefined\n this.verificationMode = undefined\n })\n\n const response = (e as AxiosError)?.response\n\n throw new Error(`Login failed with status code: ${response?.status} (${response?.statusText})`, { cause: e })\n }\n }\n\n logout = () => {\n this.appStore.setRemote(false)\n\n this.userId = undefined\n this.username = undefined\n this.token = undefined\n this.mqttHost = undefined\n this.portalId = undefined\n this.siteId = undefined\n this.siteName = undefined\n this.webhost = undefined\n this.installations = undefined\n this.sentVerification = undefined\n this.verificationMode = undefined\n }\n\n updateInstanceDetails = async (): Promise<void> => {\n const userId = this.userId\n const token = this.token\n\n if (!userId || !token) {\n throw new Error(\"Not logged in\")\n }\n\n const response = await axios.get(`${this.apiBaseUrl}/users/${userId}/installations?extended=1`, {\n headers: {\n \"x-authorization\": `Bearer ${token}`,\n },\n })\n\n if (response.status !== 200) {\n throw new Error(response.data)\n }\n\n const data: InstallationsResponse = response.data\n\n if (data.records.length === 0) {\n throw new Error(\"This account has no installations!\")\n }\n\n runInAction(() => {\n this.installations = data.records.map((v) => ({\n idSite: v.idSite,\n identifier: v.identifier,\n mqtt_webhost: v.mqtt_webhost,\n name: v.name,\n }))\n })\n\n if (data.records.length === 1) {\n runInAction(() => this.setActiveInstallation(data.records[0].idSite))\n }\n }\n\n setActiveInstallation = (siteId: number) => {\n const installations = this.installations\n\n if (!installations) {\n throw new Error(\"No installations, try logging in again!\")\n }\n\n const site = installations.find((v) => v.idSite === siteId)\n\n if (!site) {\n throw new Error(\"Incorrect data - site with specified ID not found!\")\n }\n\n this.siteName = site.name\n this.portalId = site.identifier\n this.webhost = site.mqtt_webhost\n this.siteId = siteId\n }\n}\n\nfunction initializeStore(appStore: AppStore) {\n const _store = store ?? new VrmStore(appStore)\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVrmStore() {\n const appStore = useAppStore()\n return useMemo(() => initializeStore(appStore), [appStore])\n}\n"]}
@@ -1,2 +1 @@
1
- export {};
2
1
  //# sourceMappingURL=Vrm.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerator.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB,CAW5E"}
1
+ {"version":3,"file":"WindGenerator.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB,CAa5E"}
@@ -1,13 +1,12 @@
1
1
  import { useMqtt, useTopicsState } from "../Mqtt";
2
2
  import { useMemo } from "react";
3
3
  export function useWindGenerator(windGeneratorId) {
4
- var getTopics = function (portalId) { return ({
5
- voltage: "N/".concat(portalId, "/dcsource/").concat(windGeneratorId, "/Dc/0/Voltage"),
6
- current: "N/".concat(portalId, "/dcsource/").concat(windGeneratorId, "/Dc/0/Current"),
7
- temperature: "N/".concat(portalId, "/dcsource/").concat(windGeneratorId, "/Dc/0/Temperature"),
8
- }); };
9
- var mqtt = useMqtt();
10
- var topics = useMemo(function () { return getTopics(mqtt.portalId); }, [mqtt.portalId]);
4
+ const mqtt = useMqtt();
5
+ const topics = useMemo(() => ({
6
+ voltage: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Voltage`,
7
+ current: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Current`,
8
+ temperature: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Temperature`,
9
+ }), [mqtt.portalId, windGeneratorId]);
11
10
  return useTopicsState(topics);
12
11
  }
13
12
  //# sourceMappingURL=WindGenerator.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerator.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAQ/B,MAAM,UAAU,gBAAgB,CAAC,eAAuB;IACtD,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,OAAO,EAAE,YAAK,QAAQ,uBAAa,eAAe,kBAAe;QACjE,OAAO,EAAE,YAAK,QAAQ,uBAAa,eAAe,kBAAe;QACjE,WAAW,EAAE,YAAK,QAAQ,uBAAa,eAAe,sBAAmB;KAC1E,CAAC,EAJwC,CAIxC,CAAA;IACF,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,OAAO,cAAc,CAAqB,MAAM,CAAC,CAAA;AACnD,CAAC","sourcesContent":["import { PortalId, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport interface WindGeneratorState {\n current: number\n voltage: number\n temperature: number\n}\n\nexport function useWindGenerator(windGeneratorId: number): WindGeneratorState {\n const getTopics = (portalId: PortalId) => ({\n voltage: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Voltage`,\n current: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Current`,\n temperature: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Temperature`,\n })\n const mqtt = useMqtt()\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n return useTopicsState<WindGeneratorState>(topics)\n}\n"]}
1
+ {"version":3,"file":"WindGenerator.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAQ/B,MAAM,UAAU,gBAAgB,CAAC,eAAuB;IACtD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,aAAa,eAAe,eAAe;QACtE,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,aAAa,eAAe,eAAe;QACtE,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,aAAa,eAAe,mBAAmB;KAC/E,CAAC,EACF,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CACjC,CAAA;IAED,OAAO,cAAc,CAAqB,MAAM,CAAC,CAAA;AACnD,CAAC","sourcesContent":["import { useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport interface WindGeneratorState {\n current: number\n voltage: number\n temperature: number\n}\n\nexport function useWindGenerator(windGeneratorId: number): WindGeneratorState {\n const mqtt = useMqtt()\n\n const topics = useMemo(\n () => ({\n voltage: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Voltage`,\n current: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Current`,\n temperature: `N/${mqtt.portalId}/dcsource/${windGeneratorId}/Dc/0/Temperature`,\n }),\n [mqtt.portalId, windGeneratorId]\n )\n\n return useTopicsState<WindGeneratorState>(topics)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerators.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,uDAmC7B,CAAA"}
1
+ {"version":3,"file":"WindGenerators.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,uDAuC7B,CAAA"}
@@ -3,35 +3,37 @@ import { useEffect, useMemo } from "react";
3
3
  import { useMqtt } from "../Mqtt";
4
4
  import { useWindGeneratorsStore } from "./WindGenerators.store";
5
5
  import { DC_SOURCE_MONITOR_MODE } from "../../utils/constants";
6
- export var useWindGenerators = function () {
7
- var windGeneratorsStore = useWindGeneratorsStore();
8
- var mqtt = useMqtt();
9
- var getTopics = function (portalId) { return ({
10
- dcSourceMonitorModes: "N/".concat(portalId, "/dcsource/+/Settings/MonitorMode"),
11
- }); };
12
- var topics = useMemo(function () { return getTopics(mqtt.portalId); }, [mqtt.portalId]);
13
- var messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes);
14
- useEffect(function () {
6
+ export const useWindGenerators = () => {
7
+ const windGeneratorsStore = useWindGeneratorsStore();
8
+ const mqtt = useMqtt();
9
+ const getTopics = (portalId) => ({
10
+ dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,
11
+ });
12
+ const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);
13
+ const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes);
14
+ useEffect(() => {
15
15
  if (messages && Object.entries(messages).length !== 0) {
16
- var windGenerators_1 = windGeneratorsStore.windGenerators;
17
- var deviceInstances_1 = [];
18
- Object.keys(messages).forEach(function (path) {
16
+ const windGenerators = windGeneratorsStore.windGenerators;
17
+ const deviceInstances = [];
18
+ Object.keys(messages).forEach((path) => {
19
19
  var _a, _b;
20
20
  if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {
21
- var regExpExec = new RegExp('dcsource\/(?<instance>\\d*)').exec(path);
22
- var instance = (_b = (_a = regExpExec === null || regExpExec === void 0 ? void 0 : regExpExec.groups) === null || _a === void 0 ? void 0 : _a.instance) !== null && _b !== void 0 ? _b : "";
21
+ const regExpExec = new RegExp("dcsource/(?<instance>\\d*)").exec(path);
22
+ const instance = (_b = (_a = regExpExec === null || regExpExec === void 0 ? void 0 : regExpExec.groups) === null || _a === void 0 ? void 0 : _a.instance) !== null && _b !== void 0 ? _b : "";
23
23
  if (instance !== "")
24
- deviceInstances_1.push(+instance);
24
+ deviceInstances.push(+instance);
25
25
  }
26
26
  });
27
27
  // TODO: check unordered structural identify of old and new state
28
28
  // TODO: to avoid unnecessary re-rendering: O(n^2) baby
29
- if (!windGenerators_1 || windGenerators_1.length != deviceInstances_1.length || !deviceInstances_1.every(function (id) { return windGenerators_1.includes(id); })) {
30
- Logger.log("New wind generators instances: ".concat(JSON.stringify(deviceInstances_1)));
31
- windGeneratorsStore.setWindGenerators(deviceInstances_1);
29
+ if (!windGenerators ||
30
+ windGenerators.length !== deviceInstances.length ||
31
+ !deviceInstances.every((id) => windGenerators.includes(id))) {
32
+ Logger.log(`New wind generators instances: ${JSON.stringify(deviceInstances)}`);
33
+ windGeneratorsStore.setWindGenerators(deviceInstances);
32
34
  }
33
35
  }
34
- }, [messages]);
36
+ }, [messages, windGeneratorsStore]);
35
37
  return windGeneratorsStore;
36
38
  };
37
39
  //# sourceMappingURL=WindGenerators.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerators.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;IACpD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,qCAAkC;KACtE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAErE,SAAS,CAAC;QACR,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,IAAM,gBAAc,GAAG,mBAAmB,CAAC,cAAc,CAAA;YACzD,IAAM,iBAAe,GAAsB,EAAE,CAAA;YAE7C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;oBAC7D,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvE,IAAM,QAAQ,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,CAAA;oBACnD,IAAI,QAAQ,KAAK,EAAE;wBAAE,iBAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,gBAAc,IAAI,gBAAc,CAAC,MAAM,IAAI,iBAAe,CAAC,MAAM,IAAI,CAAC,iBAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3B,CAA2B,CAAC,EAAE,CAAC;gBACtI,MAAM,CAAC,GAAG,CAAC,yCAAkC,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;gBAChF,mBAAmB,CAAC,iBAAiB,CAAC,iBAAe,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { WindGeneratorId, useWindGeneratorsStore } from \"./WindGenerators.store\"\nimport { DC_SOURCE_MONITOR_MODE } from \"../../utils/constants\";\n\nexport const useWindGenerators = () => {\n const windGeneratorsStore = useWindGeneratorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes)\n\n useEffect(() => {\n if (messages && Object.entries(messages).length !== 0) {\n const windGenerators = windGeneratorsStore.windGenerators\n const deviceInstances: WindGeneratorId[] = []\n\n Object.keys(messages).forEach(path => {\n if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {\n const regExpExec = new RegExp('dcsource\\/(?<instance>\\\\d*)').exec(path)\n const instance = regExpExec?.groups?.instance ?? \"\"\n if (instance !== \"\") deviceInstances.push(+instance)\n }\n })\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!windGenerators || windGenerators.length != deviceInstances.length || !deviceInstances.every((id) => windGenerators.includes(id))) {\n Logger.log(`New wind generators instances: ${JSON.stringify(deviceInstances)}`);\n windGeneratorsStore.setWindGenerators(deviceInstances)\n }\n }\n }, [messages])\n\n return windGeneratorsStore\n}\n"]}
1
+ {"version":3,"file":"WindGenerators.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;IACpD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,oBAAoB,EAAE,KAAK,QAAQ,kCAAkC;KACtE,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAA;YACzD,MAAM,eAAe,GAAsB,EAAE,CAAA;YAE7C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;gBACrC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;oBAC7D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtE,MAAM,QAAQ,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,CAAA;oBACnD,IAAI,QAAQ,KAAK,EAAE;wBAAE,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,iEAAiE;YACjE,uDAAuD;YACvD,IACE,CAAC,cAAc;gBACf,cAAc,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;gBAChD,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC3D,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBAC/E,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAEnC,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\"\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { WindGeneratorId, useWindGeneratorsStore } from \"./WindGenerators.store\"\nimport { DC_SOURCE_MONITOR_MODE } from \"../../utils/constants\"\n\nexport const useWindGenerators = () => {\n const windGeneratorsStore = useWindGeneratorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes)\n\n useEffect(() => {\n if (messages && Object.entries(messages).length !== 0) {\n const windGenerators = windGeneratorsStore.windGenerators\n const deviceInstances: WindGeneratorId[] = []\n\n Object.keys(messages).forEach((path) => {\n if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {\n const regExpExec = new RegExp(\"dcsource/(?<instance>\\\\d*)\").exec(path)\n const instance = regExpExec?.groups?.instance ?? \"\"\n if (instance !== \"\") deviceInstances.push(+instance)\n }\n })\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (\n !windGenerators ||\n windGenerators.length !== deviceInstances.length ||\n !deviceInstances.every((id) => windGenerators.includes(id))\n ) {\n Logger.log(`New wind generators instances: ${JSON.stringify(deviceInstances)}`)\n windGeneratorsStore.setWindGenerators(deviceInstances)\n }\n }\n }, [messages, windGeneratorsStore])\n\n return windGeneratorsStore\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerators.store.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvD,qBAAa,cAAc;IACzB,cAAc,EAAE,eAAe,EAAE,CAAK;;IAMtC,iBAAiB,GAAI,gBAAgB,eAAe,EAAE,uBAAyC;CAChG;AAYD,wBAAgB,sBAAsB,mBAErC"}
1
+ {"version":3,"file":"WindGenerators.store.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvD,qBAAa,cAAc;IACzB,cAAc,EAAE,eAAe,EAAE,CAAK;;IAMtC,iBAAiB,GAAI,gBAAgB,eAAe,EAAE,uBAA2C;CAClG;AAYD,wBAAgB,sBAAsB,mBAErC"}
@@ -1,9 +1,8 @@
1
1
  import { action, makeAutoObservable } from "mobx";
2
2
  import { useMemo } from "react";
3
- var store;
4
- var WindGenerators = /** @class */ (function () {
5
- function WindGenerators() {
6
- var _this = this;
3
+ let store;
4
+ export class WindGenerators {
5
+ constructor() {
7
6
  Object.defineProperty(this, "windGenerators", {
8
7
  enumerable: true,
9
8
  configurable: true,
@@ -14,15 +13,13 @@ var WindGenerators = /** @class */ (function () {
14
13
  enumerable: true,
15
14
  configurable: true,
16
15
  writable: true,
17
- value: function (windGenerators) { return _this.windGenerators = windGenerators; }
16
+ value: (windGenerators) => (this.windGenerators = windGenerators)
18
17
  });
19
18
  makeAutoObservable(this, { setWindGenerators: action });
20
19
  }
21
- return WindGenerators;
22
- }());
23
- export { WindGenerators };
20
+ }
24
21
  function initializeStore() {
25
- var _store = store !== null && store !== void 0 ? store : new WindGenerators();
22
+ const _store = store !== null && store !== void 0 ? store : new WindGenerators();
26
23
  // For SSG and SSR always create a new store
27
24
  if (typeof window === "undefined")
28
25
  return _store;
@@ -32,6 +29,6 @@ function initializeStore() {
32
29
  return _store;
33
30
  }
34
31
  export function useWindGeneratorsStore() {
35
- return useMemo(function () { return initializeStore(); }, []);
32
+ return useMemo(() => initializeStore(), []);
36
33
  }
37
34
  //# sourceMappingURL=WindGenerators.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindGenerators.store.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAqB,CAAA;AAIzB;IAGE;QAAA,iBAEC;QAJD;;;;mBAAoC,EAAE;WAAA;QAMtC;;;;mBAAoB,UAAC,cAAiC,IAAK,OAAA,KAAI,CAAC,cAAc,GAAG,cAAc,EAApC,CAAoC;WAAA;QAH7F,kBAAkB,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,CAAC;IAGH,qBAAC;AAAD,CAAC,AARD,IAQC;;AAED,SAAS,eAAe;IACtB,IAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,cAAc,EAAE,CAAA;IAC5C,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: WindGenerators\n\nexport type WindGeneratorId = number | null | undefined\n\nexport class WindGenerators {\n windGenerators: WindGeneratorId[] = []\n\n constructor() {\n makeAutoObservable(this, { setWindGenerators: action })\n }\n\n setWindGenerators = (windGenerators: WindGeneratorId[]) => this.windGenerators = windGenerators\n}\n\nfunction initializeStore() {\n const _store = store ?? new WindGenerators()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useWindGeneratorsStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
1
+ {"version":3,"file":"WindGenerators.store.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAqB,CAAA;AAIzB,MAAM,OAAO,cAAc;IAGzB;QAFA;;;;mBAAoC,EAAE;WAAA;QAMtC;;;;mBAAoB,CAAC,cAAiC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;WAAA;QAH/F,kBAAkB,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,CAAC;CAGF;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,cAAc,EAAE,CAAA;IAC5C,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: WindGenerators\n\nexport type WindGeneratorId = number | null | undefined\n\nexport class WindGenerators {\n windGenerators: WindGeneratorId[] = []\n\n constructor() {\n makeAutoObservable(this, { setWindGenerators: action })\n }\n\n setWindGenerators = (windGenerators: WindGeneratorId[]) => (this.windGenerators = windGenerators)\n}\n\nfunction initializeStore() {\n const _store = store ?? new WindGenerators()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useWindGeneratorsStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
@@ -21,6 +21,7 @@ export * from "./Modules/Vebus";
21
21
  export * from "./Modules/Vrm";
22
22
  export * from "./Modules/WindGenerators";
23
23
  export * from "./Modules/Temperatures";
24
- export * from "./Modules/SwitchableOutputs";
24
+ export * from "./Modules/SwitchingPane";
25
+ export * from "./utils/constants";
25
26
  export * from "./utils/storage";
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA"}
package/dist/src/index.js CHANGED
@@ -21,6 +21,7 @@ export * from "./Modules/Vebus";
21
21
  export * from "./Modules/Vrm";
22
22
  export * from "./Modules/WindGenerators";
23
23
  export * from "./Modules/Temperatures";
24
- export * from "./Modules/SwitchableOutputs";
24
+ export * from "./Modules/SwitchingPane";
25
+ export * from "./utils/constants";
25
26
  export * from "./utils/storage";
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA","sourcesContent":["export * from \"./Modules/AcLoads\"\nexport * from \"./Modules/AcMode\"\nexport * from \"./Modules/ActiveSource\"\nexport * from \"./Modules/Alternators\"\nexport * from \"./Modules/App\"\nexport * from \"./Modules/Battery\"\nexport * from \"./Modules/Chargers\"\nexport * from \"./Modules/DcLoads\"\nexport * from \"./Modules/Generators\"\nexport * from \"./Modules/Header\"\nexport * from \"./Modules/InverterCharger\"\nexport * from \"./Modules/Inverters\"\nexport * from \"./Modules/Language\"\nexport * from \"./Modules/Mqtt\"\nexport * from \"./Modules/PvCharger\"\nexport * from \"./Modules/ShorePowerInput\"\nexport * from \"./Modules/SystemState\"\nexport * from \"./Modules/Tanks\"\nexport * from \"./Modules/Theme\"\nexport * from \"./Modules/Vebus\"\nexport * from \"./Modules/Vrm\"\nexport * from \"./Modules/WindGenerators\"\nexport * from \"./Modules/Temperatures\"\nexport * from \"./Modules/SwitchableOutputs\"\nexport * from \"./utils/storage\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA","sourcesContent":["export * from \"./Modules/AcLoads\"\nexport * from \"./Modules/AcMode\"\nexport * from \"./Modules/ActiveSource\"\nexport * from \"./Modules/Alternators\"\nexport * from \"./Modules/App\"\nexport * from \"./Modules/Battery\"\nexport * from \"./Modules/Chargers\"\nexport * from \"./Modules/DcLoads\"\nexport * from \"./Modules/Generators\"\nexport * from \"./Modules/Header\"\nexport * from \"./Modules/InverterCharger\"\nexport * from \"./Modules/Inverters\"\nexport * from \"./Modules/Language\"\nexport * from \"./Modules/Mqtt\"\nexport * from \"./Modules/PvCharger\"\nexport * from \"./Modules/ShorePowerInput\"\nexport * from \"./Modules/SystemState\"\nexport * from \"./Modules/Tanks\"\nexport * from \"./Modules/Theme\"\nexport * from \"./Modules/Vebus\"\nexport * from \"./Modules/Vrm\"\nexport * from \"./Modules/WindGenerators\"\nexport * from \"./Modules/Temperatures\"\nexport * from \"./Modules/SwitchingPane\"\nexport * from \"./utils/constants\"\nexport * from \"./utils/storage\"\n"]}