@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
@@ -5,33 +5,34 @@ import Logger from "../../utils/logger";
5
5
  import { getTemperatureStateTopics } from "./Temperature.provider";
6
6
  import { autorun } from "mobx";
7
7
  export function useTemperatures() {
8
- var temperaturesStore = useTemperaturesStore();
9
- var mqtt = useMqtt();
10
- var getTopics = function (portalId) { return ({
11
- temperatureInstances: "N/".concat(portalId, "/temperature/+/DeviceInstance"),
12
- }); };
13
- var topics = useMemo(function () { return getTopics(mqtt.portalId); }, [mqtt.portalId]);
14
- var temperatures = temperaturesStore.temperatures;
15
- var messages = mqtt.messagesByWildcard(topics.temperatureInstances);
16
- useEffect(function () {
8
+ const temperaturesStore = useTemperaturesStore();
9
+ const mqtt = useMqtt();
10
+ const getTopics = (portalId) => ({
11
+ temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,
12
+ });
13
+ const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);
14
+ const messages = mqtt.messagesByWildcard(topics.temperatureInstances);
15
+ useEffect(() => {
17
16
  if (!messages || Object.entries(messages).length === 0) {
18
17
  // Logger.log("Waiting for temperatures...");
19
18
  }
20
19
  else {
21
- var deviceInstances_1 = Object.values(messages);
22
- var dispose_1 = autorun(function () {
23
- var oldTemperatures = temperaturesStore.temperatures;
24
- var newTemperatures = deviceInstances_1.map(function (temperatureInstanceId) { return mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId)); });
20
+ const deviceInstances = Object.values(messages);
21
+ const dispose = autorun(() => {
22
+ const oldTemperatures = temperaturesStore.temperatures;
23
+ const newTemperatures = deviceInstances.map((temperatureInstanceId) => mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId)));
25
24
  // TODO: check unordered structural identify of old and new state
26
25
  // TODO: to avoid unnecessary re-rendering: O(n^2) baby
27
- if (!oldTemperatures || oldTemperatures.length != newTemperatures.length || !oldTemperatures.every(function (id) { return deviceInstances_1.includes(id.instance); })) {
28
- Logger.log("New temperatures instances: ".concat(JSON.stringify(deviceInstances_1)));
26
+ if (!oldTemperatures ||
27
+ oldTemperatures.length !== newTemperatures.length ||
28
+ !oldTemperatures.every((id) => deviceInstances.includes(id.instance))) {
29
+ Logger.log(`New temperatures instances: ${JSON.stringify(deviceInstances)}`);
29
30
  temperaturesStore.setTemperatures(newTemperatures);
30
31
  }
31
32
  });
32
- return function () { return dispose_1(); };
33
+ return () => dispose();
33
34
  }
34
- }, [messages]);
35
+ }, [messages, mqtt, temperaturesStore]);
35
36
  return temperaturesStore;
36
37
  }
37
38
  //# sourceMappingURL=Temperatures.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Temperatures.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAA2C,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,IAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,kCAA+B;KACnE,CAAC,EAFwC,CAExC,CAAC;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,IAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;IAEpD,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEtE,SAAS,CAAC;QACR,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,6CAA6C;QAC/C,CAAC;aAAM,CAAC;YACN,IAAM,iBAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;YAC3E,IAAM,SAAO,GAAG,OAAO,CAAC;gBACtB,IAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAA;gBACtD,IAAM,eAAe,GAAG,iBAAe,CAAC,GAAG,CAAC,UAAC,qBAAqB,IAAK,OAAA,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAtF,CAAsF,CAAkC,CAAA;gBAC/L,iEAAiE;gBACjE,uDAAuD;gBACvD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,iBAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAArC,CAAqC,CAAC,EAAE,CAAC;oBAClJ,MAAM,CAAC,GAAG,CAAC,sCAA+B,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;oBAC7E,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,cAAM,OAAA,SAAO,EAAE,EAAT,CAAS,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,iBAAiB,CAAA;AAC1B,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { PortalId, useMqtt } from \"../Mqtt\";\nimport { useTemperaturesStore } from \"./Temperatures.store\";\nimport Logger from \"../../utils/logger\";\nimport { getTemperatureStateTopics, TemperatureInstanceId, TemperatureState } from \"./Temperature.provider\";\nimport { autorun } from \"mobx\";\n\nexport function useTemperatures() {\n const temperaturesStore = useTemperaturesStore();\n const mqtt = useMqtt();\n\n const getTopics = (portalId: PortalId) => ({\n temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId]);\n\n const temperatures = temperaturesStore.temperatures;\n\n const messages = mqtt.messagesByWildcard(topics.temperatureInstances);\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for temperatures...\");\n } else {\n const deviceInstances = Object.values(messages) as TemperatureInstanceId[];\n const dispose = autorun(() => {\n const oldTemperatures = temperaturesStore.temperatures\n const newTemperatures = deviceInstances.map((temperatureInstanceId) => mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId))) as unknown as TemperatureState[]\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!oldTemperatures || oldTemperatures.length != newTemperatures.length || !oldTemperatures.every((id) => deviceInstances.includes(id.instance))) {\n Logger.log(`New temperatures instances: ${JSON.stringify(deviceInstances)}`);\n temperaturesStore.setTemperatures(newTemperatures);\n }\n })\n return () => dispose()\n }\n }, [messages])\n\n return temperaturesStore\n}\n"]}
1
+ {"version":3,"file":"Temperatures.provider.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,yBAAyB,EAA2C,MAAM,wBAAwB,CAAA;AAC3G,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,MAAM,UAAU,eAAe;IAC7B,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,MAAM,SAAS,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC;QACzC,oBAAoB,EAAE,KAAK,QAAQ,+BAA+B;KACnE,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,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,6CAA6C;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAA;YAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;gBAC3B,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAA;gBACtD,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,EAAE,CACpE,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CACtD,CAAA;gBAClC,iEAAiE;gBACjE,uDAAuD;gBACvD,IACE,CAAC,eAAe;oBAChB,eAAe,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;oBACjD,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EACrE,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;oBAC5E,iBAAiB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;gBACpD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAEvC,OAAO,iBAAiB,CAAA;AAC1B,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { useTemperaturesStore } from \"./Temperatures.store\"\nimport Logger from \"../../utils/logger\"\nimport { getTemperatureStateTopics, TemperatureInstanceId, TemperatureState } from \"./Temperature.provider\"\nimport { autorun } from \"mobx\"\n\nexport function useTemperatures() {\n const temperaturesStore = useTemperaturesStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n temperatureInstances: `N/${portalId}/temperature/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.temperatureInstances)\n\n useEffect(() => {\n if (!messages || Object.entries(messages).length === 0) {\n // Logger.log(\"Waiting for temperatures...\");\n } else {\n const deviceInstances = Object.values(messages) as TemperatureInstanceId[]\n const dispose = autorun(() => {\n const oldTemperatures = temperaturesStore.temperatures\n const newTemperatures = deviceInstances.map((temperatureInstanceId) =>\n mqtt.messagesByTopics(getTemperatureStateTopics(mqtt.portalId, temperatureInstanceId))\n ) as unknown as TemperatureState[]\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 !oldTemperatures ||\n oldTemperatures.length !== newTemperatures.length ||\n !oldTemperatures.every((id) => deviceInstances.includes(id.instance))\n ) {\n Logger.log(`New temperatures instances: ${JSON.stringify(deviceInstances)}`)\n temperaturesStore.setTemperatures(newTemperatures)\n }\n })\n return () => dispose()\n }\n }, [messages, mqtt, temperaturesStore])\n\n return temperaturesStore\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Temperatures.store.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,qBAAa,iBAAiB;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAK;;IAMrC,eAAe,GAAI,cAAc,gBAAgB,EAAE,wBAAqC;CACzF;AAYD,wBAAgB,oBAAoB,sBAEnC"}
1
+ {"version":3,"file":"Temperatures.store.d.ts","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,qBAAa,iBAAiB;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAK;;IAMrC,eAAe,GAAI,cAAc,gBAAgB,EAAE,wBAAuC;CAC3F;AAYD,wBAAgB,oBAAoB,sBAEnC"}
@@ -1,9 +1,8 @@
1
1
  import { action, makeAutoObservable } from "mobx";
2
2
  import { useMemo } from "react";
3
- var store;
4
- var TemperaturesStore = /** @class */ (function () {
5
- function TemperaturesStore() {
6
- var _this = this;
3
+ let store;
4
+ export class TemperaturesStore {
5
+ constructor() {
7
6
  Object.defineProperty(this, "temperatures", {
8
7
  enumerable: true,
9
8
  configurable: true,
@@ -14,15 +13,13 @@ var TemperaturesStore = /** @class */ (function () {
14
13
  enumerable: true,
15
14
  configurable: true,
16
15
  writable: true,
17
- value: function (temperatures) { return _this.temperatures = temperatures; }
16
+ value: (temperatures) => (this.temperatures = temperatures)
18
17
  });
19
18
  makeAutoObservable(this, { setTemperatures: action });
20
19
  }
21
- return TemperaturesStore;
22
- }());
23
- export { TemperaturesStore };
20
+ }
24
21
  function initializeStore() {
25
- var _store = store !== null && store !== void 0 ? store : new TemperaturesStore();
22
+ const _store = store !== null && store !== void 0 ? store : new TemperaturesStore();
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 useTemperaturesStore() {
35
- return useMemo(function () { return initializeStore(); }, []);
32
+ return useMemo(() => initializeStore(), []);
36
33
  }
37
34
  //# sourceMappingURL=Temperatures.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Temperatures.store.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAe,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B,IAAI,KAAwB,CAAA;AAE5B;IAGE;QAAA,iBAEC;QAJD;;;;mBAAmC,EAAE;WAAA;QAMrC;;;;mBAAkB,UAAC,YAAgC,IAAK,OAAA,KAAI,CAAC,YAAY,GAAG,YAAY,EAAhC,CAAgC;WAAA;QAHtF,kBAAkB,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,CAAC;IAGH,wBAAC;AAAD,CAAC,AARD,IAQC;;AAED,SAAS,eAAe;IACtB,IAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,iBAAiB,EAAE,CAAA;IAC/C,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,oBAAoB;IAClC,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\"\nimport { TemperatureState } from \"./Temperature.provider\"\n\nlet store: TemperaturesStore\n\nexport class TemperaturesStore {\n temperatures: TemperatureState[] = []\n\n constructor() {\n makeAutoObservable(this, { setTemperatures: action })\n }\n\n setTemperatures = (temperatures: TemperatureState[]) => this.temperatures = temperatures\n}\n\nfunction initializeStore() {\n const _store = store ?? new TemperaturesStore()\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 useTemperaturesStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
1
+ {"version":3,"file":"Temperatures.store.js","sourceRoot":"/","sources":["src/Modules/Temperatures/Temperatures.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B,IAAI,KAAwB,CAAA;AAE5B,MAAM,OAAO,iBAAiB;IAG5B;QAFA;;;;mBAAmC,EAAE;WAAA;QAMrC;;;;mBAAkB,CAAC,YAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;WAAA;QAHxF,kBAAkB,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,CAAC;CAGF;AAED,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,iBAAiB,EAAE,CAAA;IAC/C,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,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\nimport { TemperatureState } from \"./Temperature.provider\"\n\nlet store: TemperaturesStore\n\nexport class TemperaturesStore {\n temperatures: TemperatureState[] = []\n\n constructor() {\n makeAutoObservable(this, { setTemperatures: action })\n }\n\n setTemperatures = (temperatures: TemperatureState[]) => (this.temperatures = temperatures)\n}\n\nfunction initializeStore() {\n const _store = store ?? new TemperaturesStore()\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 useTemperaturesStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
@@ -1,4 +1,4 @@
1
- export * from './Temperatures.provider';
2
- export * from './Temperature.provider';
3
- export * from './Temperatures.store';
1
+ export * from "./Temperatures.provider";
2
+ export * from "./Temperature.provider";
3
+ export * from "./Temperatures.store";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './Temperatures.provider';
2
- export * from './Temperature.provider';
3
- export * from './Temperatures.store';
1
+ export * from "./Temperatures.provider";
2
+ export * from "./Temperature.provider";
3
+ export * from "./Temperatures.store";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/Temperatures/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA","sourcesContent":["export * from './Temperatures.provider'\nexport * from './Temperature.provider'\nexport * from './Temperatures.store'"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/Temperatures/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA","sourcesContent":["export * from \"./Temperatures.provider\"\nexport * from \"./Temperature.provider\"\nexport * from \"./Temperatures.store\"\n"]}
@@ -1,9 +1,9 @@
1
1
  import { useThemeStore } from "./Theme.store";
2
- export var useTheme = function () {
3
- var themeStore = useThemeStore();
4
- var darkMode = themeStore.darkMode;
5
- var nightMode = themeStore.nightMode;
6
- var autoMode = themeStore.autoMode;
7
- return { darkMode: darkMode, nightMode: nightMode, autoMode: autoMode, themeStore: themeStore };
2
+ export const useTheme = () => {
3
+ const themeStore = useThemeStore();
4
+ const darkMode = themeStore.darkMode;
5
+ const nightMode = themeStore.nightMode;
6
+ const autoMode = themeStore.autoMode;
7
+ return { darkMode, nightMode, autoMode, themeStore };
8
8
  };
9
9
  //# sourceMappingURL=Theme.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.provider.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,CAAC,IAAM,QAAQ,GAAG;IACtB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,IAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;IACtC,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IAEpC,OAAO,EAAE,QAAQ,UAAA,EAAE,SAAS,WAAA,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,CAAA;AACtD,CAAC,CAAA","sourcesContent":["import { useThemeStore } from \"./Theme.store\"\n\nexport const useTheme = () => {\n const themeStore = useThemeStore()\n const darkMode = themeStore.darkMode\n const nightMode = themeStore.nightMode\n const autoMode = themeStore.autoMode\n\n return { darkMode, nightMode, autoMode, themeStore }\n}\n"]}
1
+ {"version":3,"file":"Theme.provider.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;IACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IAEpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;AACtD,CAAC,CAAA","sourcesContent":["import { useThemeStore } from \"./Theme.store\"\n\nexport const useTheme = () => {\n const themeStore = useThemeStore()\n const darkMode = themeStore.darkMode\n const nightMode = themeStore.nightMode\n const autoMode = themeStore.autoMode\n\n return { darkMode, nightMode, autoMode, themeStore }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.store.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,OAAO,CAAO;IACxB,SAAS,EAAE,OAAO,CAAQ;IAC1B,QAAQ,EAAE,OAAO,CAAO;IAExB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,iBAAiB,CAA4B;IAErD,oBAAoB,aAInB;IAED,OAAO,CAAC,0BAA0B,CAoBjC;IAED,OAAO,CAAC,yBAAyB,CAKhC;;IAkBD,WAAW,GAAI,UAAU,OAAO,aAA6B;IAC7D,YAAY,GAAI,WAAW,OAAO,aAA+B;IACjE,WAAW,GAAI,UAAU,OAAO,UAO/B;IAED,OAAO,aAEN;CACF;AAWD,wBAAgB,aAAa,eAE5B"}
1
+ {"version":3,"file":"Theme.store.d.ts","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,UAAU;IACrB,QAAQ,EAAE,OAAO,CAAO;IACxB,SAAS,EAAE,OAAO,CAAQ;IAC1B,QAAQ,EAAE,OAAO,CAAO;IAExB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,iBAAiB,CAA4B;IAErD,oBAAoB,aAInB;IAED,OAAO,CAAC,0BAA0B,CAoBjC;IAED,OAAO,CAAC,yBAAyB,CAKhC;;IAkBD,WAAW,GAAI,UAAU,OAAO,aAA+B;IAC/D,YAAY,GAAI,WAAW,OAAO,aAAiC;IACnE,WAAW,GAAI,UAAU,OAAO,UAO/B;IAED,OAAO,aAEN;CACF;AAWD,wBAAgB,aAAa,eAE5B"}
@@ -2,10 +2,9 @@ import { action, makeAutoObservable } from "mobx";
2
2
  import { makePersistable } from "mobx-persist-store";
3
3
  import { useMemo } from "react";
4
4
  import { Storage } from "../../utils/storage";
5
- var store;
6
- var ThemeStore = /** @class */ (function () {
7
- function ThemeStore() {
8
- var _this = this;
5
+ let store;
6
+ export class ThemeStore {
7
+ constructor() {
9
8
  Object.defineProperty(this, "darkMode", {
10
9
  enumerable: true,
11
10
  configurable: true,
@@ -40,9 +39,9 @@ var ThemeStore = /** @class */ (function () {
40
39
  enumerable: true,
41
40
  configurable: true,
42
41
  writable: true,
43
- value: function () {
44
- if (_this.autoMode) {
45
- _this.startMediaQueryObservation();
42
+ value: () => {
43
+ if (this.autoMode) {
44
+ this.startMediaQueryObservation();
46
45
  }
47
46
  }
48
47
  });
@@ -50,23 +49,23 @@ var ThemeStore = /** @class */ (function () {
50
49
  enumerable: true,
51
50
  configurable: true,
52
51
  writable: true,
53
- value: function () {
54
- if (_this.mediaQuery)
52
+ value: () => {
53
+ if (this.mediaQuery)
55
54
  return;
56
- _this.mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
57
- if (_this.mediaQuery.matches !== _this.darkMode) {
58
- _this.setDarkMode(_this.mediaQuery.matches);
55
+ this.mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
56
+ if (this.mediaQuery.matches !== this.darkMode) {
57
+ this.setDarkMode(this.mediaQuery.matches);
59
58
  }
60
- var handleChange = function (e) {
61
- if (_this.autoMode && e.matches !== _this.darkMode) {
62
- _this.setDarkMode(e.matches);
59
+ const handleChange = (e) => {
60
+ if (this.autoMode && e.matches !== this.darkMode) {
61
+ this.setDarkMode(e.matches);
63
62
  }
64
63
  };
65
- _this.mediaQuery.addEventListener('change', handleChange);
66
- _this.mediaQueryCleanup = function () {
64
+ this.mediaQuery.addEventListener("change", handleChange);
65
+ this.mediaQueryCleanup = () => {
67
66
  var _a;
68
- (_a = _this.mediaQuery) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', handleChange);
69
- _this.mediaQuery = null;
67
+ (_a = this.mediaQuery) === null || _a === void 0 ? void 0 : _a.removeEventListener("change", handleChange);
68
+ this.mediaQuery = null;
70
69
  };
71
70
  }
72
71
  });
@@ -74,10 +73,10 @@ var ThemeStore = /** @class */ (function () {
74
73
  enumerable: true,
75
74
  configurable: true,
76
75
  writable: true,
77
- value: function () {
78
- if (_this.mediaQueryCleanup) {
79
- _this.mediaQueryCleanup();
80
- _this.mediaQueryCleanup = null;
76
+ value: () => {
77
+ if (this.mediaQueryCleanup) {
78
+ this.mediaQueryCleanup();
79
+ this.mediaQueryCleanup = null;
81
80
  }
82
81
  }
83
82
  });
@@ -85,25 +84,25 @@ var ThemeStore = /** @class */ (function () {
85
84
  enumerable: true,
86
85
  configurable: true,
87
86
  writable: true,
88
- value: function (darkMode) { return _this.darkMode = darkMode; }
87
+ value: (darkMode) => (this.darkMode = darkMode)
89
88
  });
90
89
  Object.defineProperty(this, "setNightMode", {
91
90
  enumerable: true,
92
91
  configurable: true,
93
92
  writable: true,
94
- value: function (nightMode) { return _this.nightMode = nightMode; }
93
+ value: (nightMode) => (this.nightMode = nightMode)
95
94
  });
96
95
  Object.defineProperty(this, "setAutoMode", {
97
96
  enumerable: true,
98
97
  configurable: true,
99
98
  writable: true,
100
- value: function (autoMode) {
101
- _this.autoMode = autoMode;
99
+ value: (autoMode) => {
100
+ this.autoMode = autoMode;
102
101
  if (autoMode) {
103
- _this.startMediaQueryObservation();
102
+ this.startMediaQueryObservation();
104
103
  }
105
104
  else {
106
- _this.stopMediaQueryObservation();
105
+ this.stopMediaQueryObservation();
107
106
  }
108
107
  }
109
108
  });
@@ -111,8 +110,8 @@ var ThemeStore = /** @class */ (function () {
111
110
  enumerable: true,
112
111
  configurable: true,
113
112
  writable: true,
114
- value: function () {
115
- _this.stopMediaQueryObservation();
113
+ value: () => {
114
+ this.stopMediaQueryObservation();
116
115
  }
117
116
  });
118
117
  makeAutoObservable(this, {
@@ -124,15 +123,13 @@ var ThemeStore = /** @class */ (function () {
124
123
  name: "ThemeStore",
125
124
  properties: ["darkMode", "nightMode", "autoMode"],
126
125
  storage: Storage,
127
- }).then(function () {
128
- _this.initializeMediaQuery();
126
+ }).then(() => {
127
+ this.initializeMediaQuery();
129
128
  });
130
129
  }
131
- return ThemeStore;
132
- }());
133
- export { ThemeStore };
130
+ }
134
131
  function initializeStore() {
135
- var _store = store !== null && store !== void 0 ? store : new ThemeStore();
132
+ const _store = store !== null && store !== void 0 ? store : new ThemeStore();
136
133
  // For SSG and SSR always create a new store
137
134
  if (typeof window === "undefined")
138
135
  return _store;
@@ -142,6 +139,6 @@ function initializeStore() {
142
139
  return _store;
143
140
  }
144
141
  export function useThemeStore() {
145
- return useMemo(function () { return initializeStore(); }, []);
142
+ return useMemo(() => initializeStore(), []);
146
143
  }
147
144
  //# sourceMappingURL=Theme.store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.store.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { useMemo } from \"react\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: ThemeStore\n\nexport interface ThemeState {\n darkMode: boolean\n nightMode: boolean\n autoMode: boolean\n}\n\nexport class ThemeStore {\n darkMode: boolean = true\n nightMode: boolean = false\n autoMode: boolean = true\n\n private mediaQuery: MediaQueryList | null = null\n private mediaQueryCleanup: (() => void) | null = null\n\n initializeMediaQuery = () => {\n if (this.autoMode) {\n this.startMediaQueryObservation()\n }\n }\n\n private startMediaQueryObservation = () => {\n if (this.mediaQuery) return\n\n this.mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\")\n\n if (this.mediaQuery.matches !== this.darkMode) {\n this.setDarkMode(this.mediaQuery.matches)\n }\n\n const handleChange = (e: MediaQueryListEvent) => {\n if (this.autoMode && e.matches !== this.darkMode) {\n this.setDarkMode(e.matches)\n }\n }\n\n this.mediaQuery.addEventListener('change', handleChange)\n this.mediaQueryCleanup = () => {\n this.mediaQuery?.removeEventListener('change', handleChange)\n this.mediaQuery = null\n }\n }\n\n private stopMediaQueryObservation = () => {\n if (this.mediaQueryCleanup) {\n this.mediaQueryCleanup()\n this.mediaQueryCleanup = null\n }\n }\n\n constructor() {\n makeAutoObservable(this, {\n setDarkMode: action,\n setNightMode: action,\n setAutoMode: action,\n })\n\n makePersistable(this, {\n name: \"ThemeStore\",\n properties: [\"darkMode\", \"nightMode\", \"autoMode\"],\n storage: Storage,\n }).then(() => {\n this.initializeMediaQuery()\n })\n }\n\n setDarkMode = (darkMode: boolean) => this.darkMode = darkMode\n setNightMode = (nightMode: boolean) => this.nightMode = nightMode\n setAutoMode = (autoMode: boolean) => {\n this.autoMode = autoMode\n if (autoMode) {\n this.startMediaQueryObservation()\n } else {\n this.stopMediaQueryObservation()\n }\n }\n\n destroy = () => {\n this.stopMediaQueryObservation()\n }\n}\n\nfunction initializeStore() {\n const _store = store ?? new ThemeStore()\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 return _store\n}\n\nexport function useThemeStore() {\n return useMemo(() => initializeStore(), [])\n}"]}
1
+ {"version":3,"file":"Theme.store.js","sourceRoot":"/","sources":["src/Modules/Theme/Theme.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { useMemo } from \"react\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: ThemeStore\n\nexport interface ThemeState {\n darkMode: boolean\n nightMode: boolean\n autoMode: boolean\n}\n\nexport class ThemeStore {\n darkMode: boolean = true\n nightMode: boolean = false\n autoMode: boolean = true\n\n private mediaQuery: MediaQueryList | null = null\n private mediaQueryCleanup: (() => void) | null = null\n\n initializeMediaQuery = () => {\n if (this.autoMode) {\n this.startMediaQueryObservation()\n }\n }\n\n private startMediaQueryObservation = () => {\n if (this.mediaQuery) return\n\n this.mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\")\n\n if (this.mediaQuery.matches !== this.darkMode) {\n this.setDarkMode(this.mediaQuery.matches)\n }\n\n const handleChange = (e: MediaQueryListEvent) => {\n if (this.autoMode && e.matches !== this.darkMode) {\n this.setDarkMode(e.matches)\n }\n }\n\n this.mediaQuery.addEventListener(\"change\", handleChange)\n this.mediaQueryCleanup = () => {\n this.mediaQuery?.removeEventListener(\"change\", handleChange)\n this.mediaQuery = null\n }\n }\n\n private stopMediaQueryObservation = () => {\n if (this.mediaQueryCleanup) {\n this.mediaQueryCleanup()\n this.mediaQueryCleanup = null\n }\n }\n\n constructor() {\n makeAutoObservable(this, {\n setDarkMode: action,\n setNightMode: action,\n setAutoMode: action,\n })\n\n makePersistable(this, {\n name: \"ThemeStore\",\n properties: [\"darkMode\", \"nightMode\", \"autoMode\"],\n storage: Storage,\n }).then(() => {\n this.initializeMediaQuery()\n })\n }\n\n setDarkMode = (darkMode: boolean) => (this.darkMode = darkMode)\n setNightMode = (nightMode: boolean) => (this.nightMode = nightMode)\n setAutoMode = (autoMode: boolean) => {\n this.autoMode = autoMode\n if (autoMode) {\n this.startMediaQueryObservation()\n } else {\n this.stopMediaQueryObservation()\n }\n }\n\n destroy = () => {\n this.stopMediaQueryObservation()\n }\n}\n\nfunction initializeStore() {\n const _store = store ?? new ThemeStore()\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 return _store\n}\n\nexport function useThemeStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Vebus.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,QAAQ,QAAO,UAuE3B,CAAC"}
1
+ {"version":3,"file":"Vebus.provider.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2C,UAAU,EAAE,MAAM,eAAe,CAAA;AAEnF,eAAO,MAAM,QAAQ,QAAO,UAyE3B,CAAA"}
@@ -1,77 +1,68 @@
1
1
  import { useEffect, useMemo } from "react";
2
2
  import Logger from "../../utils/logger";
3
3
  import { useMqtt, useTopicState } from "../Mqtt";
4
- import { useVebusStore, } from "./Vebus.store";
5
- export var useVebus = function () {
6
- var mqtt = useMqtt();
7
- var vebusStore = useVebusStore();
8
- var portalId = mqtt.portalId;
9
- var getTopics = function (portalId) { return ({
10
- vebusInstanceId: "N/".concat(portalId, "/system/0/VebusInstance"),
11
- deviceInstances: "N/".concat(portalId, "/vebus/+/DeviceInstance"),
12
- }); };
13
- var topics = useMemo(function () { return getTopics(portalId); }, [portalId]);
14
- var vebusInstanceId = useTopicState(topics.vebusInstanceId);
15
- var messages = mqtt.messagesByWildcard(topics.deviceInstances);
16
- useEffect(function () {
4
+ import { useVebusStore } from "./Vebus.store";
5
+ export const useVebus = () => {
6
+ const mqtt = useMqtt();
7
+ const vebusStore = useVebusStore();
8
+ const portalId = mqtt.portalId;
9
+ const getTopics = (portalId) => ({
10
+ vebusInstanceId: `N/${portalId}/system/0/VebusInstance`,
11
+ deviceInstances: `N/${portalId}/vebus/+/DeviceInstance`,
12
+ });
13
+ const topics = useMemo(() => getTopics(portalId), [portalId]);
14
+ const vebusInstanceId = useTopicState(topics.vebusInstanceId);
15
+ const messages = mqtt.messagesByWildcard(topics.deviceInstances);
16
+ useEffect(() => {
17
17
  if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {
18
- Logger.log("New VE.Bus instance ID: ".concat(vebusInstanceId));
18
+ Logger.log(`New VE.Bus instance ID: ${vebusInstanceId}`);
19
19
  vebusStore.setInstanceId(vebusInstanceId);
20
20
  }
21
- var oldDevices = vebusStore.vebusInstanceIds;
22
- var deviceInstances = Object.values(messages);
21
+ const oldDevices = vebusStore.vebusInstanceIds;
22
+ const deviceInstances = Object.values(messages);
23
23
  // TODO: check unordered structural identify of old and new state
24
24
  // TODO: to avoid unnecessary re-rendering: O(n^2) baby
25
- if (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every(function (id) { return oldDevices.includes(id); })) {
26
- Logger.log("New VE.Bus devices: ".concat(JSON.stringify(deviceInstances)));
25
+ if (!oldDevices ||
26
+ oldDevices.length !== deviceInstances.length ||
27
+ !deviceInstances.every((id) => oldDevices.includes(id))) {
28
+ Logger.log(`New VE.Bus devices: ${JSON.stringify(deviceInstances)}`);
27
29
  vebusStore.setVebusInstanceIds(deviceInstances);
28
- var possibleInvertersPaths = deviceInstances.reduce(function (acc, id) {
29
- acc["".concat(id)] = "N/".concat(portalId, "/vebus/").concat(id, "/Ac/NumberOfAcInputs");
30
+ const possibleInvertersPaths = deviceInstances.reduce((acc, id) => {
31
+ acc[`${id}`] = `N/${portalId}/vebus/${id}/Ac/NumberOfAcInputs`;
30
32
  return acc;
31
33
  }, {});
32
- var vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths);
34
+ const vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths);
35
+ const vebusInstanceIdNum = Number(vebusInstanceId);
33
36
  // extract devices with no ac input -> pure inverters
34
- var vebusInverters = Object.entries(vebusDevices)
35
- .filter(function (_a) {
36
- var _ = _a[0], nAcInputs = _a[1];
37
- return parseInt(nAcInputs) === 0;
38
- })
39
- .map(function (_a) {
40
- var instance = _a[0];
41
- return parseInt(instance);
42
- })
37
+ const vebusInverters = Object.entries(vebusDevices)
38
+ .filter(([_instance, nAcInputs]) => parseInt(nAcInputs) === 0)
39
+ .map(([instance]) => parseInt(instance))
43
40
  // make sure vebusInstanceId is always listed first, then ascending
44
- .sort(function (a, b) {
45
- if (a == vebusInstanceId)
41
+ .sort((a, b) => {
42
+ if (a === vebusInstanceIdNum)
46
43
  return -1;
47
- if (b == vebusInstanceId)
44
+ if (b === vebusInstanceIdNum)
48
45
  return 1;
49
46
  return a - b;
50
47
  });
51
48
  // extract devices with at least one ac input -> inverters + chargers
52
- var vebusInverterChargers = Object.entries(vebusDevices)
53
- .filter(function (_a) {
54
- var _ = _a[0], nAcInputs = _a[1];
55
- return parseInt(nAcInputs) > 0;
56
- })
57
- .map(function (_a) {
58
- var instance = _a[0];
59
- return parseInt(instance);
60
- })
49
+ const vebusInverterChargers = Object.entries(vebusDevices)
50
+ .filter(([_instance, nAcInputs]) => parseInt(nAcInputs) > 0)
51
+ .map(([instance]) => parseInt(instance))
61
52
  // make sure vebusInstanceId is always listed first, then ascending
62
- .sort(function (a, b) {
63
- if (a == vebusInstanceId)
53
+ .sort((a, b) => {
54
+ if (a === vebusInstanceIdNum)
64
55
  return -1;
65
- if (b == vebusInstanceId)
56
+ if (b === vebusInstanceIdNum)
66
57
  return 1;
67
58
  return a - b;
68
59
  });
69
- Logger.log("New VE.Bus inverters: ".concat(JSON.stringify(vebusInverters)));
60
+ Logger.log(`New VE.Bus inverters: ${JSON.stringify(vebusInverters)}`);
70
61
  vebusStore.setVebusInverters(vebusInverters);
71
- Logger.log("New VE.Bus inverter/chargers: ".concat(JSON.stringify(vebusInverterChargers)));
62
+ Logger.log(`New VE.Bus inverter/chargers: ${JSON.stringify(vebusInverterChargers)}`);
72
63
  vebusStore.setVebusInverterChargers(vebusInverterChargers);
73
64
  }
74
- }, [vebusInstanceId, messages]);
65
+ }, [vebusInstanceId, messages, mqtt, portalId, vebusStore]);
75
66
  return vebusStore;
76
67
  };
77
68
  //# sourceMappingURL=Vebus.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vebus.provider.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAEL,OAAO,EACP,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,aAAa,GAGd,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,IAAM,QAAQ,GAAG;IACtB,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,eAAe,EAAE,YAAK,QAAQ,4BAAyB;QACvD,eAAe,EAAE,YAAK,QAAQ,4BAAyB;KACxD,CAAC,EAHwC,CAGxC,CAAC;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,QAAQ,CAAC,EAAnB,CAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAM,eAAe,GAAG,aAAa,CAAa,MAAM,CAAC,eAAe,CAAC,CAAA;IACzE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEjE,SAAS,CAAC;QACR,IAAI,eAAe,IAAI,eAAe,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,kCAA2B,eAAe,CAAE,CAAC,CAAC;YACzD,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC;QAED,IAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAA;QAC9C,IAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAiB,CAAC;QAEhE,iEAAiE;QACjE,uDAAuD;QACvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAvB,CAAuB,CAAC,EAAE,CAAC;YAE1H,MAAM,CAAC,GAAG,CAAC,8BAAuB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;YACrE,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAA;YAE/C,IAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CACnD,UAAC,GAA8B,EAAE,EAAE;gBACjC,GAAG,CAAC,UAAG,EAAE,CAAE,CAAC,GAAG,YAAK,QAAQ,oBAAU,EAAE,yBAAsB,CAAC;gBAC/D,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAE,CACH,CAAC;YAEF,IAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAwC,CAAA;YAEzG,qDAAqD;YACrD,IAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBAChD,MAAM,CAAC,UAAC,EAAc;oBAAb,CAAC,QAAA,EAAE,SAAS,QAAA;gBAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;YAAzB,CAAyB,CAAC;iBACrD,GAAG,CAAC,UAAC,EAAU;oBAAT,QAAQ,QAAA;gBAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC;YAAlB,CAAkB,CAAC;gBACxC,mEAAmE;iBAClE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YAEJ,qEAAqE;YACrE,IAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBACvD,MAAM,CAAC,UAAC,EAAc;oBAAb,CAAC,QAAA,EAAE,SAAS,QAAA;gBAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;YAAvB,CAAuB,CAAC;iBACnD,GAAG,CAAC,UAAC,EAAU;oBAAT,QAAQ,QAAA;gBAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC;YAAlB,CAAkB,CAAC;gBACxC,mEAAmE;iBAClE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,IAAI,eAAe;oBAAE,OAAO,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YAEJ,MAAM,CAAC,GAAG,CAAC,gCAAyB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAE,CAAC,CAAC;YACtE,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAE7C,MAAM,CAAC,GAAG,CAAC,wCAAiC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAE,CAAC,CAAC;YACrF,UAAU,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE/B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport Logger from \"../../utils/logger\";\nimport {\n PortalId,\n useMqtt,\n useTopicState\n} from \"../Mqtt\";\nimport {\n InstanceId,\n useVebusStore,\n VebusDevices,\n VebusState,\n} from \"./Vebus.store\";\n\nexport const useVebus = (): VebusState => {\n const mqtt = useMqtt();\n const vebusStore = useVebusStore();\n const portalId = mqtt.portalId;\n\n const getTopics = (portalId: PortalId) => ({\n vebusInstanceId: `N/${portalId}/system/0/VebusInstance`,\n deviceInstances: `N/${portalId}/vebus/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(portalId), [portalId]);\n const vebusInstanceId = useTopicState<InstanceId>(topics.vebusInstanceId)\n const messages = mqtt.messagesByWildcard(topics.deviceInstances);\n\n useEffect(() => {\n if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {\n Logger.log(`New VE.Bus instance ID: ${vebusInstanceId}`);\n vebusStore.setInstanceId(vebusInstanceId);\n }\n\n const oldDevices = vebusStore.vebusInstanceIds\n const deviceInstances = Object.values(messages) as VebusDevices;\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 (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every((id) => oldDevices.includes(id))) {\n\n Logger.log(`New VE.Bus devices: ${JSON.stringify(deviceInstances)}`);\n vebusStore.setVebusInstanceIds(deviceInstances)\n\n const possibleInvertersPaths = deviceInstances.reduce(\n (acc: { [key: string]: string }, id) => {\n acc[`${id}`] = `N/${portalId}/vebus/${id}/Ac/NumberOfAcInputs`;\n return acc;\n },\n {}\n );\n\n const vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths) as unknown as { [key: string]: string}\n\n // extract devices with no ac input -> pure inverters\n const vebusInverters = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) === 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n // extract devices with at least one ac input -> inverters + chargers\n const vebusInverterChargers = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) > 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n Logger.log(`New VE.Bus inverters: ${JSON.stringify(vebusInverters)}`);\n vebusStore.setVebusInverters(vebusInverters);\n\n Logger.log(`New VE.Bus inverter/chargers: ${JSON.stringify(vebusInverterChargers)}`);\n vebusStore.setVebusInverterChargers(vebusInverterChargers);\n }\n }, [vebusInstanceId, messages])\n\n return vebusStore;\n};\n"]}
1
+ {"version":3,"file":"Vebus.provider.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo } from \"react\"\nimport Logger from \"../../utils/logger\"\nimport { PortalId, useMqtt, useTopicState } from \"../Mqtt\"\nimport { InstanceId, useVebusStore, VebusDevices, VebusState } from \"./Vebus.store\"\n\nexport const useVebus = (): VebusState => {\n const mqtt = useMqtt()\n const vebusStore = useVebusStore()\n const portalId = mqtt.portalId\n\n const getTopics = (portalId: PortalId) => ({\n vebusInstanceId: `N/${portalId}/system/0/VebusInstance`,\n deviceInstances: `N/${portalId}/vebus/+/DeviceInstance`,\n })\n\n const topics = useMemo(() => getTopics(portalId), [portalId])\n const vebusInstanceId = useTopicState<InstanceId>(topics.vebusInstanceId)\n const messages = mqtt.messagesByWildcard(topics.deviceInstances)\n\n useEffect(() => {\n if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {\n Logger.log(`New VE.Bus instance ID: ${vebusInstanceId}`)\n vebusStore.setInstanceId(vebusInstanceId)\n }\n\n const oldDevices = vebusStore.vebusInstanceIds\n const deviceInstances = Object.values(messages) as VebusDevices\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 !oldDevices ||\n oldDevices.length !== deviceInstances.length ||\n !deviceInstances.every((id) => oldDevices.includes(id))\n ) {\n Logger.log(`New VE.Bus devices: ${JSON.stringify(deviceInstances)}`)\n vebusStore.setVebusInstanceIds(deviceInstances)\n\n const possibleInvertersPaths = deviceInstances.reduce((acc: { [key: string]: string }, id) => {\n acc[`${id}`] = `N/${portalId}/vebus/${id}/Ac/NumberOfAcInputs`\n return acc\n }, {})\n\n const vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths) as { [key: string]: string }\n\n const vebusInstanceIdNum = Number(vebusInstanceId)\n\n // extract devices with no ac input -> pure inverters\n const vebusInverters = Object.entries(vebusDevices)\n .filter(([_instance, nAcInputs]) => parseInt(nAcInputs) === 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a === vebusInstanceIdNum) return -1\n if (b === vebusInstanceIdNum) return 1\n return a - b\n })\n\n // extract devices with at least one ac input -> inverters + chargers\n const vebusInverterChargers = Object.entries(vebusDevices)\n .filter(([_instance, nAcInputs]) => parseInt(nAcInputs) > 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a === vebusInstanceIdNum) return -1\n if (b === vebusInstanceIdNum) return 1\n return a - b\n })\n\n Logger.log(`New VE.Bus inverters: ${JSON.stringify(vebusInverters)}`)\n vebusStore.setVebusInverters(vebusInverters)\n\n Logger.log(`New VE.Bus inverter/chargers: ${JSON.stringify(vebusInverterChargers)}`)\n vebusStore.setVebusInverterChargers(vebusInverterChargers)\n }\n }, [vebusInstanceId, messages, mqtt, portalId, vebusStore])\n\n return vebusStore\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Vebus.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;CACpC;AAED,qBAAa,UAAU;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;;IAcnC,mBAAmB,GAAI,SAAS,YAAY,kBAAqC;IAEjF,iBAAiB,GAAI,SAAS,YAAY,kBAAmC;IAE7E,wBAAwB,GAAI,SAAS,YAAY,kBAA0C;IAE3F,aAAa,GAAI,YAAY,UAAU,gBAAiC;CACzE;AAYD,wBAAgB,aAAa,eAE5B"}
1
+ {"version":3,"file":"Vebus.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;CACpC;AAED,qBAAa,UAAU;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;;IAcnC,mBAAmB,GAAI,SAAS,YAAY,kBAAsC;IAElF,iBAAiB,GAAI,SAAS,YAAY,kBAAoC;IAE9E,wBAAwB,GAAI,SAAS,YAAY,kBAA2C;IAE5F,aAAa,GAAI,YAAY,UAAU,gBAAmC;CAC3E;AAYD,wBAAgB,aAAa,eAE5B"}
@@ -1,9 +1,8 @@
1
1
  import { action, makeAutoObservable } from "mobx";
2
2
  import { useMemo } from "react";
3
- var store;
4
- var VebusStore = /** @class */ (function () {
5
- function VebusStore() {
6
- var _this = this;
3
+ let store;
4
+ export class VebusStore {
5
+ constructor() {
7
6
  Object.defineProperty(this, "instanceId", {
8
7
  enumerable: true,
9
8
  configurable: true,
@@ -32,41 +31,39 @@ var VebusStore = /** @class */ (function () {
32
31
  enumerable: true,
33
32
  configurable: true,
34
33
  writable: true,
35
- value: function (devices) { return _this.vebusInstanceIds = devices; }
34
+ value: (devices) => (this.vebusInstanceIds = devices)
36
35
  });
37
36
  Object.defineProperty(this, "setVebusInverters", {
38
37
  enumerable: true,
39
38
  configurable: true,
40
39
  writable: true,
41
- value: function (devices) { return _this.vebusInverters = devices; }
40
+ value: (devices) => (this.vebusInverters = devices)
42
41
  });
43
42
  Object.defineProperty(this, "setVebusInverterChargers", {
44
43
  enumerable: true,
45
44
  configurable: true,
46
45
  writable: true,
47
- value: function (devices) { return _this.vebusInverterChargers = devices; }
46
+ value: (devices) => (this.vebusInverterChargers = devices)
48
47
  });
49
48
  Object.defineProperty(this, "setInstanceId", {
50
49
  enumerable: true,
51
50
  configurable: true,
52
51
  writable: true,
53
- value: function (instanceId) { return _this.instanceId = instanceId; }
52
+ value: (instanceId) => (this.instanceId = instanceId)
54
53
  });
55
54
  makeAutoObservable(this, {
56
55
  setVebusInstanceIds: action,
57
56
  setVebusInverters: action,
58
57
  setVebusInverterChargers: action,
59
- setInstanceId: action
58
+ setInstanceId: action,
60
59
  });
61
60
  this.vebusInstanceIds = [];
62
61
  this.vebusInverters = [];
63
62
  this.vebusInverterChargers = [];
64
63
  }
65
- return VebusStore;
66
- }());
67
- export { VebusStore };
64
+ }
68
65
  function initializeStore() {
69
- var _store = store !== null && store !== void 0 ? store : new VebusStore();
66
+ const _store = store !== null && store !== void 0 ? store : new VebusStore();
70
67
  // For SSG and SSR always create a new store
71
68
  if (typeof window === "undefined")
72
69
  return _store;
@@ -76,6 +73,6 @@ function initializeStore() {
76
73
  return _store;
77
74
  }
78
75
  export function useVebusStore() {
79
- return useMemo(function () { return initializeStore(); }, []);
76
+ return useMemo(() => initializeStore(), []);
80
77
  }
81
78
  //# sourceMappingURL=Vebus.store.js.map