@fastybird/smart-panel-admin 0.11.0-alpha.0 → 1.0.0-beta.2

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 (319) hide show
  1. package/dist/assets/card-add-form-Gso7ULO3.js +1 -0
  2. package/dist/assets/card-edit-form-CG5By4hN.js +1 -0
  3. package/dist/assets/common-C6O7MWKy.js +151 -0
  4. package/dist/assets/{common-D_v-7H8R.css → common-oMRoU5Bz.css} +1 -1
  5. package/dist/assets/common.constants-C6QiEtuS.js +1 -0
  6. package/dist/assets/{components-DSMoiSYB.css → components-B8YODd0w.css} +1 -1
  7. package/dist/assets/components-BDuVLuIi.js +2 -0
  8. package/dist/assets/components-BawtJjUe.css +1 -0
  9. package/dist/assets/components-Bzwfh0_6.js +1 -0
  10. package/dist/assets/components-C5Wu_yx6.js +1 -0
  11. package/dist/assets/components-CBgIPDGp.js +1 -0
  12. package/dist/assets/components-CDzfp-v5.js +1 -0
  13. package/dist/assets/components-CWCnDk-k.js +1 -0
  14. package/dist/assets/components-Cg1OPydQ.js +1 -0
  15. package/dist/assets/components-DQG8YRnR.css +1 -0
  16. package/dist/assets/components-f7Acikyq.js +1 -0
  17. package/dist/assets/composables-B96WL0Wj.js +1 -0
  18. package/dist/assets/composables-CFfboRzY.js +1 -0
  19. package/dist/assets/composables-CXnK_jZC.js +1 -0
  20. package/dist/assets/composables-D5DhD9vG.js +1 -0
  21. package/dist/assets/composables-DA8P1Agq.js +1 -0
  22. package/dist/assets/composables-DRljO7YE.js +1 -0
  23. package/dist/assets/composables-DVL3jPH8.js +1 -0
  24. package/dist/assets/composables-U-xxC_sT.js +1 -0
  25. package/dist/assets/composables-uEwOIGlv.js +1 -0
  26. package/dist/assets/composables-vJCRdU0M.js +1 -0
  27. package/dist/assets/dashboard-DG93chjw.js +2 -0
  28. package/dist/assets/dashboard.types-CFfH-GLV.js +1 -0
  29. package/dist/assets/data-source-edit-form-BI_dwXcE.js +1 -0
  30. package/dist/assets/drawer-piSQQ92r.js +1 -0
  31. package/dist/assets/empty-DvXiCUNF.js +1 -0
  32. package/dist/assets/gridstack.min-LmXwzWSF.js +3 -0
  33. package/dist/assets/icon-with-child-CgZMNB3F.js +12 -0
  34. package/dist/assets/index-CUMngPop.css +1 -0
  35. package/dist/assets/index-qait6dZr.js +16 -0
  36. package/dist/assets/input-number-aj4Bs1x0.js +1 -0
  37. package/dist/assets/integration-config-dialog-4lXNA-cq.js +1 -0
  38. package/dist/assets/layout-config-wF4GEnoW.js +1 -0
  39. package/dist/assets/layout-default-fi64NP2-.js +1 -0
  40. package/dist/assets/layout-lock-B1tHh9TR.js +1 -0
  41. package/dist/assets/layout-profile-52nMnfeI.js +1 -0
  42. package/dist/assets/layout-profile-5CD6bicW.js +1 -0
  43. package/dist/assets/layout-sign-CsRJeI15.js +1 -0
  44. package/dist/assets/layout-sign-D_I0Ie9D.js +1 -0
  45. package/dist/assets/leaflet-src-AD9ZoK5_.js +1 -0
  46. package/dist/assets/leaflet-src.esm-DCg_Me6F.js +1 -0
  47. package/dist/assets/list-data-sources-adjust-uB8b6Hjl.js +1 -0
  48. package/dist/assets/list-locations-Ckoi0RHB.js +1 -0
  49. package/dist/assets/list-users-Dyap_TZY.js +1 -0
  50. package/dist/assets/logs-entries.transformers-DY1KWqis.js +1 -0
  51. package/dist/assets/page-configure-BU4WzKF4.js +1 -0
  52. package/dist/assets/page-configure-Dr3kKTbt.js +1 -0
  53. package/dist/assets/pagination-BRH-PmO7.js +1 -0
  54. package/dist/assets/popover-BAQvnaAQ.js +1 -0
  55. package/dist/assets/radio-DW3_4owj.js +1 -0
  56. package/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  57. package/dist/assets/scene-add-form-8nrzesj2.js +1 -0
  58. package/dist/assets/scene-edit-form-AOK6QcMB.js +1 -0
  59. package/dist/assets/schemas.utils-Luoz3tGx.js +1 -0
  60. package/dist/assets/select-data-source-plugin-CQqAjj8I.js +1 -0
  61. package/dist/assets/skeleton-DkyCzTs7.js +1 -0
  62. package/dist/assets/slider-Bk-smens.js +1 -0
  63. package/dist/assets/spaces-D3E3Y4it.js +2 -0
  64. package/dist/assets/spaces-home-control-CWNguIE5.css +1 -0
  65. package/dist/assets/spaces-home-control.constants-Btr-C2aq.js +1 -0
  66. package/dist/assets/steps-D9CW-O6K.js +1 -0
  67. package/dist/assets/system-CtMoh4fS.js +2 -0
  68. package/dist/assets/tile-detail-Cp1Wg2ln.js +1 -0
  69. package/dist/assets/tile-edit-form-BnXEsFRq.js +1 -0
  70. package/dist/assets/types-BP1Y7Ct6.js +1 -0
  71. package/dist/assets/useBuddyChat-CvDleaZJ.js +1 -0
  72. package/dist/assets/useDataSources-3VKnPYpt.js +1 -0
  73. package/dist/assets/useEventBus-DVXQaGC-.js +1 -0
  74. package/dist/assets/useGeolocation-BO7kIdUh.js +2 -0
  75. package/dist/assets/useLocation-DC_SbRoS.js +1 -0
  76. package/dist/assets/usePage-BVfsjiLb.js +1 -0
  77. package/dist/assets/usePersonalTokens-BqXxMus4.js +1 -0
  78. package/dist/assets/useSpaces-XFygVec-.js +1 -0
  79. package/dist/assets/useUuid-bBKVSq5e.js +1 -0
  80. package/dist/assets/view-buddy-chat-Cbz_tWQw.js +1 -0
  81. package/dist/assets/view-card-add-FpOWLKDD.js +1 -0
  82. package/dist/assets/view-card-edit-CckfNDtI.js +1 -0
  83. package/dist/assets/view-channel-CwvntrqM.js +1 -0
  84. package/dist/assets/view-channel-add-CbGsI0RI.js +1 -0
  85. package/dist/assets/view-channel-edit-BscFo-2O.js +1 -0
  86. package/dist/assets/view-channel-property-add-BlESkjUP.js +1 -0
  87. package/dist/assets/view-channel-property-edit-C7vrDHM0.js +1 -0
  88. package/dist/assets/view-channels-COV_YBpq.js +1 -0
  89. package/dist/assets/view-config-module-edit-Ce1dHGD6.js +1 -0
  90. package/dist/assets/view-config-modules-09KPTYj-.js +1 -0
  91. package/dist/assets/view-config-plugin-edit-DpODIuSr.js +1 -0
  92. package/dist/assets/view-config-plugins-BUBXmHje.js +1 -0
  93. package/dist/assets/view-data-source-add-CUeeE9I9.js +1 -0
  94. package/dist/assets/view-data-source-add-Cszg1PXR.js +1 -0
  95. package/dist/assets/view-data-source-edit-Cnvz59YN.js +1 -0
  96. package/dist/assets/view-data-source-edit-D6ZdInPK.js +1 -0
  97. package/dist/assets/view-device-BqPVFd5q.js +1 -0
  98. package/dist/assets/view-device-add-raK2v6Sb.js +1 -0
  99. package/dist/assets/view-device-control-CQecqQV3.js +1 -0
  100. package/dist/assets/view-device-edit-BR3JBqZz.js +1 -0
  101. package/dist/assets/view-devices-DZOlHmA1.js +1 -0
  102. package/dist/assets/view-devices-Dsy93rSh.css +1 -0
  103. package/dist/assets/view-devices-wizard-j2-RYGln.js +1 -0
  104. package/dist/assets/view-display-BAJl9w_-.js +1 -0
  105. package/dist/assets/view-display-edit-BxToHJGY.js +1 -0
  106. package/dist/assets/view-display-tokens-C9EUKg60.js +1 -0
  107. package/dist/assets/view-displays-DRh-jZuh.js +1 -0
  108. package/dist/assets/view-extension-detail-Dc5alcRB.js +1 -0
  109. package/dist/assets/view-extensions-D78hp-GZ.js +1 -0
  110. package/dist/assets/view-location-CGxqI4LF.js +1 -0
  111. package/dist/assets/view-location-add-Bw4od9E3.js +1 -0
  112. package/dist/assets/view-location-edit-bfe9ZVCY.js +1 -0
  113. package/dist/assets/view-locations-C9MVqtob.js +1 -0
  114. package/dist/assets/view-lock-screen-eecVFwp8.js +1 -0
  115. package/dist/assets/view-not-found-G5Aj98MD.js +1 -0
  116. package/dist/assets/view-onboarding-D-LQj8xQ.js +1 -0
  117. package/dist/assets/view-page-CdJYrNvm.js +1 -0
  118. package/dist/assets/view-page-add-CWlY59Z8.js +1 -0
  119. package/dist/assets/view-page-configure-CM3xpsQ6.js +1 -0
  120. package/dist/assets/view-page-configure-J7GvJ6kn.js +1 -0
  121. package/dist/assets/view-page-data-source-add-CJYMQNrY.js +1 -0
  122. package/dist/assets/view-page-data-source-edit-YUQc1hkr.js +1 -0
  123. package/dist/assets/view-page-edit-CSiIqhHa.js +1 -0
  124. package/dist/assets/view-page-plugin-DA-QTSFI.js +1 -0
  125. package/dist/assets/view-pages-BJh5on5i.js +1 -0
  126. package/dist/assets/view-profile-general-BUgWnB8F.js +1 -0
  127. package/dist/assets/view-profile-security-f1qsSWz-.js +1 -0
  128. package/dist/assets/view-scene-add-XnMQkpIx.js +1 -0
  129. package/dist/assets/view-scene-edit-CTbkCckV.js +1 -0
  130. package/dist/assets/view-scenes-ChzoHwOO.js +1 -0
  131. package/dist/assets/view-sign-in-Ceaac-fd.js +1 -0
  132. package/dist/assets/view-sign-up-BZ53tmTA.js +1 -0
  133. package/dist/assets/view-space-add-BQnXpas4.js +1 -0
  134. package/dist/assets/view-space-configure-DKlvZpIj.css +1 -0
  135. package/dist/assets/view-space-configure-DgonALs8.js +1 -0
  136. package/dist/assets/view-space-edit-wj8T4WRV.js +1 -0
  137. package/dist/assets/view-space-plugin-BdOVEBgt.js +1 -0
  138. package/dist/assets/view-spaces-2b8KqWkU.css +1 -0
  139. package/dist/assets/view-spaces-CM93SjHm.js +1 -0
  140. package/dist/assets/view-spaces-wizard-MAczhruN.js +1 -0
  141. package/dist/assets/view-stats-BWJU4kKt.js +1 -0
  142. package/dist/assets/view-system-backups-BnQRabt_.js +1 -0
  143. package/dist/assets/view-system-info-BdUO_aZz.js +1 -0
  144. package/dist/assets/view-system-log-detail-DnW1sR90.js +1 -0
  145. package/dist/assets/view-system-logs-rBB1JhNA.js +1 -0
  146. package/dist/assets/view-tile-DEWaNAAC.js +1 -0
  147. package/dist/assets/view-tile-add-BYCfwz0G.js +1 -0
  148. package/dist/assets/view-tile-add-DJEhRPql.js +1 -0
  149. package/dist/assets/view-tile-data-source-add-BQY3lYEx.js +1 -0
  150. package/dist/assets/view-tile-data-source-edit-DcmEisVl.js +1 -0
  151. package/dist/assets/view-tile-edit-C9bdoUQS.js +1 -0
  152. package/dist/assets/view-tile-edit-CEk-TKvg.js +1 -0
  153. package/dist/assets/view-tile-edit-DB5-9c4k.js +1 -0
  154. package/dist/assets/view-user-add-DvmHzen6.js +1 -0
  155. package/dist/assets/view-user-edit-UBSgDOcU.js +1 -0
  156. package/dist/assets/view-users-CH0q5tjL.js +1 -0
  157. package/dist/assets/vue-meta.esm-browser.min-C5z7o_np.js +1 -0
  158. package/dist/assets/weather-CiVW2Zku.js +2 -0
  159. package/dist/assets/weather-forecast.transformers-Dc2cpiG6.js +1 -0
  160. package/dist/index.html +101 -86
  161. package/package.json +2 -2
  162. package/dist/assets/auth.constants-BtlHaDRV.js +0 -1
  163. package/dist/assets/card-add-form-BGNRGq5M.js +0 -1
  164. package/dist/assets/card-edit-form-TwRt6lH7.js +0 -1
  165. package/dist/assets/chunk-DECur_0Z.js +0 -1
  166. package/dist/assets/common-F_wDFQqa.js +0 -150
  167. package/dist/assets/components-BK-RRq76.js +0 -1
  168. package/dist/assets/components-BSnorWCF.js +0 -1
  169. package/dist/assets/components-D4oVuqyw.js +0 -2
  170. package/dist/assets/components-DTDNlAlb.css +0 -1
  171. package/dist/assets/components-Db1ann2S.js +0 -1
  172. package/dist/assets/components-Dd5rpGDx.js +0 -1
  173. package/dist/assets/components-EBGccPUS.js +0 -1
  174. package/dist/assets/components-QN7ODmRM.js +0 -1
  175. package/dist/assets/components-W7KcmsWr.css +0 -1
  176. package/dist/assets/components-eBOf9oHe.js +0 -1
  177. package/dist/assets/composables-B4rp4xrv.js +0 -1
  178. package/dist/assets/composables-BKJeYnBR.js +0 -1
  179. package/dist/assets/composables-BU1aKa642.js +0 -0
  180. package/dist/assets/composables-BoKa4-i_.js +0 -1
  181. package/dist/assets/composables-CaraUEfh.js +0 -1
  182. package/dist/assets/composables-DAo6GNAV2.js +0 -1
  183. package/dist/assets/composables-DEBPpCC3.js +0 -1
  184. package/dist/assets/composables-DiAU_wfZ.js +0 -1
  185. package/dist/assets/composables-Dl6TJg_T.js +0 -1
  186. package/dist/assets/composables-cZEC-nYz.js +0 -1
  187. package/dist/assets/dashboard-Bj108aNx.js +0 -2
  188. package/dist/assets/dashboard.types-DahZIpSl.js +0 -1
  189. package/dist/assets/data-source-edit-form-DOVbvFEF.js +0 -1
  190. package/dist/assets/drawer-CKiet4XI.js +0 -1
  191. package/dist/assets/empty-C13Ke09q.js +0 -1
  192. package/dist/assets/extensions.constants-zRRiNzmt.js +0 -1
  193. package/dist/assets/gridstack.min-BC6WoZvX.js +0 -3
  194. package/dist/assets/icon-with-child-DmQ_XhQy.js +0 -12
  195. package/dist/assets/index-BZI30D7S.css +0 -1
  196. package/dist/assets/index-C0S41e7e.js +0 -16
  197. package/dist/assets/input-number-B6E4QJcZ.js +0 -1
  198. package/dist/assets/integration-config-dialog-xtt81N29.js +0 -1
  199. package/dist/assets/layout-config-NwMTB4lH.js +0 -1
  200. package/dist/assets/layout-default-CTpeQbNq.js +0 -1
  201. package/dist/assets/layout-lock-DNVL2qQE.js +0 -1
  202. package/dist/assets/layout-profile-BodxpZ47.js +0 -1
  203. package/dist/assets/layout-profile-D0sem77G.js +0 -1
  204. package/dist/assets/layout-sign-CUNZgUiZ.js +0 -1
  205. package/dist/assets/layout-sign-Z3g_e0uv.js +0 -1
  206. package/dist/assets/leaflet-src-B49UyrlR.js +0 -1
  207. package/dist/assets/leaflet-src.esm-YKGwaZsZ.js +0 -1
  208. package/dist/assets/list-data-sources-adjust-0hHF78Qr.js +0 -1
  209. package/dist/assets/list-locations-CFR7cx6e.js +0 -1
  210. package/dist/assets/list-users-DDhHZudA.js +0 -1
  211. package/dist/assets/logs-entries.transformers-BPULMREr.js +0 -1
  212. package/dist/assets/page-configure-D3pm04Jo.js +0 -1
  213. package/dist/assets/page-configure-LcayX9Xh.js +0 -1
  214. package/dist/assets/pagination-uiL_Xd1P.js +0 -1
  215. package/dist/assets/popover-DdvMkBmu.js +0 -1
  216. package/dist/assets/radio-BygadRaP.js +0 -1
  217. package/dist/assets/scene-add-form-_Evqd1M0.js +0 -1
  218. package/dist/assets/scene-edit-form-D9vxF_uE.js +0 -1
  219. package/dist/assets/select-data-source-plugin-B8IAoaF_.js +0 -1
  220. package/dist/assets/skeleton-DMwdgp1r.js +0 -1
  221. package/dist/assets/steps-B86TkSh7.js +0 -1
  222. package/dist/assets/system-y79Mgza8.js +0 -2
  223. package/dist/assets/table-DIHwxZqR.js +0 -1
  224. package/dist/assets/tile-detail-BQ_-w_-P.js +0 -1
  225. package/dist/assets/tile-edit-form-B48n7UYH.js +0 -1
  226. package/dist/assets/types-BELSgYkL.js +0 -1
  227. package/dist/assets/useBuddyChat-DlYnXW0N.js +0 -1
  228. package/dist/assets/useDataSources-CIK85NQi.js +0 -1
  229. package/dist/assets/useDevices-DfykWzvG.js +0 -1
  230. package/dist/assets/useGeolocation-BwY4rOmB.js +0 -2
  231. package/dist/assets/useLocation-Bd8mRt7D.js +0 -1
  232. package/dist/assets/usePage-CcgadmA1.js +0 -1
  233. package/dist/assets/useSpaces-9AsEpQzB.js +0 -1
  234. package/dist/assets/view-buddy-chat-9HNWDP2A.js +0 -1
  235. package/dist/assets/view-card-add-CEE_8ucy.js +0 -1
  236. package/dist/assets/view-card-edit-gqGqh0ZK.js +0 -1
  237. package/dist/assets/view-channel-Cl8-eNXq.js +0 -1
  238. package/dist/assets/view-channel-add-D4WmcLug.js +0 -1
  239. package/dist/assets/view-channel-edit-cLbGgY50.js +0 -1
  240. package/dist/assets/view-channel-property-add-D03OOtyc.js +0 -1
  241. package/dist/assets/view-channel-property-edit-C3vtxYpk.js +0 -1
  242. package/dist/assets/view-channels-kAV1K2po.js +0 -1
  243. package/dist/assets/view-config-module-edit-DdR4lAW8.js +0 -1
  244. package/dist/assets/view-config-modules-YSFjHx7O.js +0 -1
  245. package/dist/assets/view-config-plugin-edit-B26Fx9qZ.js +0 -1
  246. package/dist/assets/view-config-plugins-Bkko3C4h.js +0 -1
  247. package/dist/assets/view-data-source-add-D1pjkfE3.js +0 -1
  248. package/dist/assets/view-data-source-add-DI_kigLj.js +0 -1
  249. package/dist/assets/view-data-source-edit-BUK0yvGF.js +0 -1
  250. package/dist/assets/view-data-source-edit-CpLFFb8P.js +0 -1
  251. package/dist/assets/view-device-add-C0FYqQmP.js +0 -1
  252. package/dist/assets/view-device-control-B58Cnntn.js +0 -1
  253. package/dist/assets/view-device-edit-aK8_oOee.js +0 -1
  254. package/dist/assets/view-device-u62oLyLL.js +0 -1
  255. package/dist/assets/view-devices-C1dVUnk2.js +0 -1
  256. package/dist/assets/view-display-DgBUKvpT.js +0 -1
  257. package/dist/assets/view-display-edit-CI0Y9nYp.js +0 -1
  258. package/dist/assets/view-display-tokens-_1-GpJQn.js +0 -1
  259. package/dist/assets/view-displays-Dl5Y6ktW.js +0 -1
  260. package/dist/assets/view-extension-detail-CvopUzdv.js +0 -1
  261. package/dist/assets/view-extensions-CnN9ZSAu.js +0 -1
  262. package/dist/assets/view-location-add-DbDfT1WI.js +0 -1
  263. package/dist/assets/view-location-edit-DOkEdO3J.js +0 -1
  264. package/dist/assets/view-location-gHwYdh8C.js +0 -1
  265. package/dist/assets/view-locations-YIiLnEQ9.js +0 -1
  266. package/dist/assets/view-lock-screen-DRpUGEvR.js +0 -1
  267. package/dist/assets/view-not-found-C0Nl0aC-.js +0 -1
  268. package/dist/assets/view-onboarding-DGewQ4Op.js +0 -1
  269. package/dist/assets/view-page-DFobT3ES.js +0 -1
  270. package/dist/assets/view-page-add-DQ576Koj.js +0 -1
  271. package/dist/assets/view-page-configure-B5HF7SO9.js +0 -1
  272. package/dist/assets/view-page-configure-BQyZrizu.js +0 -1
  273. package/dist/assets/view-page-data-source-add-CfsLvRNo.js +0 -1
  274. package/dist/assets/view-page-data-source-edit-D0IWzgIc.js +0 -1
  275. package/dist/assets/view-page-edit-DR8VjGvw.js +0 -1
  276. package/dist/assets/view-page-plugin-bVvZ-3q8.js +0 -1
  277. package/dist/assets/view-pages-rZ60Ytlz.js +0 -1
  278. package/dist/assets/view-profile-general-BD4k3oF1.js +0 -1
  279. package/dist/assets/view-profile-security-DDHWHBQG.js +0 -1
  280. package/dist/assets/view-scene-add-DV26FCpk.js +0 -1
  281. package/dist/assets/view-scene-edit-D2haP3DU.js +0 -1
  282. package/dist/assets/view-scenes-sQXfkiQ0.js +0 -1
  283. package/dist/assets/view-sign-in-g8yCaTqG.js +0 -1
  284. package/dist/assets/view-sign-up-B9NY2sUB.js +0 -1
  285. package/dist/assets/view-space-D9Piae-d.js +0 -1
  286. package/dist/assets/view-space-FBfL1ie4.css +0 -1
  287. package/dist/assets/view-space-add-C-9jJ0F3.js +0 -1
  288. package/dist/assets/view-space-edit-BCnD49xH.js +0 -1
  289. package/dist/assets/view-spaces-Hm537lfk.js +0 -1
  290. package/dist/assets/view-spaces-onboarding-vqLbGV4X.js +0 -1
  291. package/dist/assets/view-stats-CcndqCPk.js +0 -1
  292. package/dist/assets/view-system-info-DuHTmOct.js +0 -1
  293. package/dist/assets/view-system-log-detail-C-uNeVaz.js +0 -1
  294. package/dist/assets/view-system-logs-BadeyfBd.js +0 -1
  295. package/dist/assets/view-tile-DFlCP3CH.js +0 -1
  296. package/dist/assets/view-tile-add-C3PUQ70k.js +0 -1
  297. package/dist/assets/view-tile-add-DfmByVtz.js +0 -1
  298. package/dist/assets/view-tile-data-source-add-CyWFkMRN.js +0 -1
  299. package/dist/assets/view-tile-data-source-edit-B-PzdYOp.js +0 -1
  300. package/dist/assets/view-tile-edit-B5HDredD.js +0 -1
  301. package/dist/assets/view-tile-edit-C_aIvdbg.js +0 -1
  302. package/dist/assets/view-tile-edit-CtZFCcqa.js +0 -1
  303. package/dist/assets/view-user-add-T8hPg2bJ.js +0 -1
  304. package/dist/assets/view-user-edit-Lqao2Q8x.js +0 -1
  305. package/dist/assets/view-users-C92nFZrL.js +0 -1
  306. package/dist/assets/vue-meta.esm-browser.min-3_YV25pX.js +0 -1
  307. package/dist/assets/weather-BtB1LyZK.js +0 -2
  308. package/dist/assets/weather-forecast.transformers-CfRHyO-6.js +0 -1
  309. /package/dist/assets/{keys-DWeeqbdi.js → keys-DExX7OfU.js} +0 -0
  310. /package/dist/assets/{keys-DVEtutPb.js → keys-DgS2vm-E.js} +0 -0
  311. /package/dist/assets/{keys-o2K4DVjh.js → keys-DghNVBR5.js} +0 -0
  312. /package/dist/assets/{keys-C6Zi4a10.js → keys-ctR4af6H.js} +0 -0
  313. /package/dist/assets/{marker-icon-2x-BCzqJChB.js → marker-icon-2x-DCPDGz3Q.js} +0 -0
  314. /package/dist/assets/{marker-icon-JzPv91fE.js → marker-icon-CXGCKJng.js} +0 -0
  315. /package/dist/assets/{marker-shadow-tj6c2pB6.js → marker-shadow-hzqDve8V.js} +0 -0
  316. /package/dist/assets/{pages-cards.contants-B5RdaI3z.js → pages-cards.contants-DcS0YOKq.js} +0 -0
  317. /package/dist/assets/{pages-tiles.constants-Day6cR-b.js → pages-tiles.constants-BzKCg6RC.js} +0 -0
  318. /package/dist/assets/{system.exceptions-CLPql-b3.js → system.exceptions-BOq4IhGI.js} +0 -0
  319. /package/dist/assets/{weather-icon-CkuFNv0P.js → weather-icon-BogpHIOS.js} +0 -0
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Gr as n,Si as r,T as i,bi as a,ci as o,ki as s,n as c,yi as l}from"./icon-with-child-CgZMNB3F.js";import{Ar as u,Cr as d,Dn as f,Fn as p,Kn as m,Kr as h,Mi as g,Mr as _,Nr as v,Pr as y,T as b,_ as x,_r as S,b as C,br as w,c as T,cr as E,do as D,dr as O,fn as k,i as A,in as j,jr as M,lr as N,m as P,p as F,ri as I,rn as L,tn as R,u as z,ur as B,wr as V,yr as H}from"./common-C6O7MWKy.js";import{t as U}from"./schemas.utils-Luoz3tGx.js";import{a as W,i as ee,n as G,o as te,r as K}from"./keys-DghNVBR5.js";import{n as ne}from"./logs-entries.transformers-DY1KWqis.js";var q=m(),J=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DevicesException`,this.exception=t}},Y=class extends J{code;constructor(e,t=null,n=null){super(e,n),this.name=`DevicesApiException`,this.code=t}},X=class extends J{constructor(e,t=null){super(e,t),this.name=`DevicesValidationException`}},re=()=>{let e=b(),{enabled:n}=f(),r=[`channelPropertyAddForm`,`channelPropertyEditForm`],i=[`channelPropertySchema`,`channelPropertyAddFormSchema`,`channelPropertyEditFormSchema`,`channelPropertyCreateReqSchema`,`channelPropertyUpdateReqSchema`],a=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`devices-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return t||n}):!1));return{plugins:a,options:t(()=>p(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},ie=()=>{let e=b(),{enabled:n}=f(),r=[`channelAddForm`,`channelEditForm`],i=[`channelSchema`,`channelAddFormSchema`,`channelEditFormSchema`,`channelCreateReqSchema`,`channelUpdateReqSchema`],a=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`devices-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return t||n}):!1));return{plugins:a,options:t(()=>p(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},ae=({id:e})=>{let n=C().getStore(K),{data:r,semaphore:i}=D(n);return{channel:t(()=>e===null?null:r.value[e]??null),isLoading:t(()=>i.value.fetching.item.includes(e)?!0:(r.value[e]??null)===null&&i.value.fetching.items.includes(`all`)),fetchChannel:async()=>{(r.value[e]??null)?.draft||await n.get({id:e})}}},oe=(e={})=>{let{deviceId:n}=e,r=C().getStore(K),{firstLoad:i,semaphore:a}=D(r),o=n===void 0?void 0:typeof n==`string`?t(()=>n):n;return{channels:t(()=>r.findAll().filter(e=>!o?.value||e.device===o.value)),areLoading:t(()=>a.value.fetching.items.includes(o?.value??`all`)?!0:!i.value.includes(o?.value??`all`)&&a.value.fetching.items.includes(o?.value??`all`)),loaded:t(()=>i.value.includes(o?.value??`all`)),fetchChannels:async()=>{await r.fetch({deviceId:o?.value})}}},se=w({search:d().optional(),types:B(d()),state:E([`all`,`offline`,`online`]).default(`all`),states:B(S(h)),categories:B(S(u)),enabled:E([`all`,`enabled`,`disabled`]).default(`all`),validation:E([`all`,`valid`,`invalid`]).default(`all`)}),ce=w({search:d().optional(),devices:B(d()),categories:B(S(M))}),le=w({search:d().optional(),channels:B(d()),categories:B(S(_)),permissions:B(S(y)),dataTypes:B(S(v))}),Z={search:void 0,devices:[],categories:[]},ue={by:`name`,dir:`asc`},de=(e={})=>{let{deviceId:n}=e,i=C().getStore(K),{firstLoad:a,semaphore:s}=D(i),{filters:c,sort:l,pagination:u,reset:d}=T({key:`${R}:channels:list`,filters:{schema:ce,defaults:Z},sort:{defaults:[ue]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=t(()=>c.value.search!==Z.search||!(0,q.isEqual)(c.value.devices,Z.devices)||!(0,q.isEqual)(c.value.categories,Z.categories)),m=r(u.value.size||10),h=r(u.value.page||1),g=r(l.value.length>0?l.value[0]?.by:void 0),_=r(l.value.length>0?l.value[0]?.dir??null:null),v=t(()=>p(i.findAll().filter(e=>!n||e.device===n).filter(e=>!e.draft&&(!c.value.search||e.id.toLowerCase().includes(c.value.search.toLowerCase())||e.name.toLowerCase().includes(c.value.search.toLowerCase())||e.description?.toLowerCase().includes(c.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(c.value.search.toLowerCase()))&&(c.value.categories.length===0||c.value.categories.includes(e.category))&&(c.value.devices.length===0||c.value.devices.includes(e.device))),[e=>e[g.value]??``],[_.value===`asc`?`asc`:`desc`])),y=t(()=>{let e=(h.value-1)*m.value,t=e+m.value;return v.value.slice(e,t)}),b=async()=>{await i.fetch({deviceId:n})},x=t(()=>s.value.fetching.items.includes(n??`all`)?!0:!a.value.includes(n??`all`)&&s.value.fetching.items.includes(n??`all`)),S=t(()=>a.value.includes(n??`all`)),w=t(()=>i.findAll().filter(e=>!n||e.device===n).filter(e=>!e.draft).length);return o(()=>u.value,e=>{h.value=e.page??1,m.value=e.size??10},{deep:!0}),o(()=>h.value,e=>{u.value.page=e}),o(()=>m.value,e=>{u.value.size=e}),o(()=>_.value,e=>{g.value===void 0||e===null?l.value=[]:l.value=[{by:g.value,dir:e}]}),o(()=>g.value,e=>{e===void 0?l.value=[]:l.value=[{by:e,dir:_.value}]}),{channels:v,channelsPaginated:y,totalRows:w,areLoading:x,loaded:S,fetchChannels:b,filters:c,filtersActive:f,paginateSize:m,paginatePage:h,sortBy:g,sortDir:_,resetFilter:d}},fe=()=>{let{t:e}=i(),t=F(),n=C().getStore(K),r=e=>n.findById(e);return{remove:async i=>{let a=r(i);if(a===null)throw new J(`Something went wrong, channel can't be loaded`);g.confirm(e(`devicesModule.texts.channels.confirmRemove`,{channel:a.name}),e(`devicesModule.headings.channels.remove`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await n.remove({id:a.id}),t.success(e(`devicesModule.messages.channels.removed`,{channel:a.name}))}catch(n){if(n instanceof Y&&n.code===404){let n=e(`devicesModule.messages.channels.notFound`,{channel:a.name});t.error(n)}else if(n instanceof Y&&n.code===422)t.error(n.message);else{let n=e(`devicesModule.messages.channels.notRemoved`,{channel:a.name});t.error(n)}}}).catch(()=>{t.info(e(`devicesModule.messages.channels.removeCanceled`,{channel:a.name}))})}}},pe=({id:e})=>{let n=C().getStore(K);return{icon:t(()=>{switch(n.findById(e)?.category){default:return`mdi:chip`}})}},me={air_quality:{category:`air_quality`,constraints:{oneOrMoreOf:[[`aqi`,`level`]]},properties:{aqi:{category:`aqi`,required:!1,permissions:[`ro`],data_type:`ushort`,unit:null,format:[0,500]},level:{category:`level`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`excellent`,`good`,`fair`,`inferior`,`poor`,`unknown`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},air_particulate:{category:`air_particulate`,constraints:{oneOrMoreOf:[[`detected`,`concentration`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`µg/m³`,format:[0,1e3]},mode:{category:`mode`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`pm1`,`pm2_5`,`pm10`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},carbon_dioxide:{category:`carbon_dioxide`,constraints:{oneOrMoreOf:[[`detected`,`concentration`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`ppm`,format:[0,1e5]},peak_level:{category:`peak_level`,required:!1,permissions:[`ro`],data_type:`float`,unit:`ppm`,format:[0,1e5]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},carbon_monoxide:{category:`carbon_monoxide`,constraints:{oneOrMoreOf:[[`detected`,`concentration`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`ppm`,format:[0,100]},peak_level:{category:`peak_level`,required:!1,permissions:[`ro`],data_type:`float`,unit:`ppm`,format:[0,100]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},flow:{category:`flow`,properties:{rate:{category:`rate`,required:!0,permissions:[`ro`],data_type:`float`,unit:`m³/h`,format:[0,65533]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},humidity:{category:`humidity`,properties:{humidity:{category:`humidity`,required:!0,permissions:[`ro`],data_type:`uchar`,unit:`%`,format:[0,100]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},illuminance:{category:`illuminance`,properties:{illuminance:{category:`illuminance`,required:!0,permissions:[`ro`],data_type:`float`,unit:`lx`,format:[0,1e5]},level:{category:`level`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`bright`,`moderate`,`dusky`,`dark`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},nitrogen_dioxide:{category:`nitrogen_dioxide`,constraints:{oneOrMoreOf:[[`detected`,`concentration`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`µg/m³`,format:[0,1e5]},mode:{category:`mode`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`annual`,`1_hour`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},ozone:{category:`ozone`,constraints:{oneOrMoreOf:[[`detected`,`concentration`,`level`]],oneOf:[[`concentration`,`level`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`µg/m³`,format:[0,1e5]},level:{category:`level`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`low`,`medium`,`high`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},pressure:{category:`pressure`,properties:{pressure:{category:`pressure`,required:!0,permissions:[`ro`],data_type:`float`,unit:`kPa`,format:[0,32767]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},sulphur_dioxide:{category:`sulphur_dioxide`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!0,permissions:[`ro`],data_type:`float`,unit:`µg/m³`,format:[0,1e5]},level:{category:`level`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`low`,`medium`,`high`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},temperature:{category:`temperature`,properties:{temperature:{category:`temperature`,required:!0,permissions:[`ro`],data_type:`float`,unit:`°C`,format:[0,100]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},volatile_organic_compounds:{category:`volatile_organic_compounds`,constraints:{oneOrMoreOf:[[`detected`,`concentration`,`level`]],oneOf:[[`concentration`,`level`]]},properties:{detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`float`,unit:`µg/m³`,format:[0,1e3]},level:{category:`level`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`low`,`medium`,`high`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},alarm:{category:`alarm`,properties:{state:{category:`state`,required:!0,permissions:[`rw`],data_type:`enum`,unit:null,format:[`disarmed`,`armed_home`,`armed_away`,`armed_night`]},alarm_state:{category:`alarm_state`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`idle`,`pending`,`triggered`,`silenced`]},triggered:{category:`triggered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},siren:{category:`siren`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},fault_description:{category:`fault_description`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},last_event:{category:`last_event`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null}}},contact:{category:`contact`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},gas:{category:`gas`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`normal`,`warning`,`alarm`]},concentration:{category:`concentration`,required:!1,permissions:[`ro`],data_type:`uint`,unit:`ppm`,format:[0,65535]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},leak:{category:`leak`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},level:{category:`level`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`low`,`medium`,`high`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},lock:{category:`lock`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},status:{category:`status`,required:!0,permissions:[`rw`],data_type:`enum`,unit:null,format:[`locked`,`unlocked`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},motion:{category:`motion`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},distance:{category:`distance`,required:!1,permissions:[`ro`],data_type:`float`,unit:`m`,format:[0,100]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},occupancy:{category:`occupancy`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},distance:{category:`distance`,required:!1,permissions:[`ro`],data_type:`float`,unit:`m`,format:[0,100]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},smoke:{category:`smoke`,properties:{detected:{category:`detected`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},cooler:{category:`cooler`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},temperature:{category:`temperature`,required:!0,permissions:[`rw`],data_type:`float`,unit:`°C`,format:[0,100]},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},dehumidifier:{category:`dehumidifier`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},humidity:{category:`humidity`,required:!0,permissions:[`rw`],data_type:`uchar`,unit:`%`,format:[0,100]},mode:{category:`mode`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`auto`,`manual`,`continuous`,`laundry`,`quiet`]},status:{category:`status`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`idle`,`dehumidifying`,`defrosting`]},water_tank_full:{category:`water_tank_full`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},water_tank_level:{category:`water_tank_level`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:`%`,format:[0,100]},defrost_active:{category:`defrost_active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},timer:{category:`timer`,required:!1,permissions:[`rw`],data_types:[{id:`duration`,data_type:`ushort`,unit:`s`,format:[0,86400],step:60,description:{en:`Timer duration in seconds (0-86400)`}},{id:`preset`,data_type:`enum`,format:[`off`,`30m`,`1h`,`2h`,`4h`,`8h`,`12h`],description:{en:`Preset timer intervals`}}]},locked:{category:`locked`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},door:{category:`door`,properties:{obstruction:{category:`obstruction`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`opened`,`closed`,`opening`,`closing`,`stopped`]},position:{category:`position`,required:!0,permissions:[`rw`],data_type:`enum`,unit:null,format:[`open`,`close`,`stop`]},type:{category:`type`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`door`,`garage`]},percentage:{category:`percentage`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,100]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},fan:{category:`fan`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},swing:{category:`swing`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},speed:{category:`speed`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Speed as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`,`turbo`,`auto`],description:{en:`Speed as discrete levels`}}]},mode:{category:`mode`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`auto`,`manual`,`eco`,`sleep`,`natural`,`turbo`]},direction:{category:`direction`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`clockwise`,`counter_clockwise`]},natural_breeze:{category:`natural_breeze`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},timer:{category:`timer`,required:!1,permissions:[`rw`],data_types:[{id:`duration`,data_type:`ushort`,unit:`s`,format:[0,86400],step:60,description:{en:`Timer duration in seconds (0-86400)`}},{id:`preset`,data_type:`enum`,format:[`off`,`30m`,`1h`,`2h`,`4h`,`8h`,`12h`],description:{en:`Preset timer intervals`}}]},locked:{category:`locked`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null}}},heater:{category:`heater`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},temperature:{category:`temperature`,required:!0,permissions:[`rw`],data_type:`float`,unit:`°C`,format:[0,100]},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`bool`,unit:null,format:null},position:{category:`position`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Position as percentage (0-100%)`}},{id:`state`,data_type:`enum`,format:[`closed`,`quarter`,`half`,`three_quarter`,`open`],description:{en:`Position as discrete states`}}]}}},humidifier:{category:`humidifier`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},humidity:{category:`humidity`,required:!0,permissions:[`rw`],data_type:`uchar`,unit:`%`,format:[0,100]},mode:{category:`mode`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`auto`,`manual`,`sleep`,`baby`]},status:{category:`status`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`idle`,`humidifying`]},mist_level:{category:`mist_level`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Mist level as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`],description:{en:`Mist level as discrete levels`}}]},warm_mist:{category:`warm_mist`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},water_tank_empty:{category:`water_tank_empty`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},water_tank_level:{category:`water_tank_level`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:`%`,format:[0,100]},timer:{category:`timer`,required:!1,permissions:[`rw`],data_types:[{id:`duration`,data_type:`ushort`,unit:`s`,format:[0,86400],step:60,description:{en:`Timer duration in seconds (0-86400)`}},{id:`preset`,data_type:`enum`,format:[`off`,`30m`,`1h`,`2h`,`4h`,`8h`,`12h`],description:{en:`Preset timer intervals`}}]},locked:{category:`locked`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},light:{category:`light`,constraints:{mutuallyExclusiveGroups:[[[`color_red`,`color_green`,`color_blue`],[`hue`,`saturation`]]]},properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},brightness:{category:`brightness`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Brightness as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`,`full`],description:{en:`Brightness as discrete levels`}}]},color_red:{category:`color_red`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,255]},color_green:{category:`color_green`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,255]},color_blue:{category:`color_blue`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,255]},color_white:{category:`color_white`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,255]},color_temperature:{category:`color_temperature`,required:!1,permissions:[`rw`],data_type:`ushort`,unit:`K`,format:[2e3,1e4]},hue:{category:`hue`,required:!1,permissions:[`rw`],data_type:`ushort`,unit:`deg`,format:[0,360]},saturation:{category:`saturation`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:`%`,format:[0,100]}}},outlet:{category:`outlet`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},in_use:{category:`in_use`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},robot_vacuum:{category:`robot_vacuum`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`idle`,`cleaning`,`vacuuming`,`mopping`,`docking`,`charging`]},mode:{category:`mode`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`auto`,`spot`,`manual`]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},switcher:{category:`switcher`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},child_lock:{category:`child_lock`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},timer:{category:`timer`,required:!1,permissions:[`rw`],data_types:[{id:`duration`,data_type:`ushort`,unit:`s`,format:[0,86400],step:60,description:{en:`Timer duration in seconds (0-86400)`}},{id:`preset`,data_type:`enum`,format:[`off`,`30m`,`1h`,`2h`,`4h`,`8h`,`12h`],description:{en:`Preset timer intervals`}}]}}},thermostat:{category:`thermostat`,properties:{locked:{category:`locked`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null}}},valve:{category:`valve`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},type:{category:`type`,required:!0,permissions:[`rw`],data_type:`enum`,unit:null,format:[`generic`,`irrigation`,`shower_head`,`water_faucet`]},duration:{category:`duration`,required:!1,permissions:[`rw`],data_type:`ushort`,unit:`s`,format:[0,3600]},remaining:{category:`remaining`,required:!1,permissions:[`ro`],data_type:`ushort`,unit:`s`,format:[0,3600]},mode:{category:`mode`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`manual`,`scheduled`]},position:{category:`position`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Position as percentage (0-100%)`}},{id:`state`,data_type:`enum`,format:[`closed`,`quarter`,`half`,`three_quarter`,`open`],description:{en:`Position as discrete states`}}]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},window_covering:{category:`window_covering`,properties:{status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`opened`,`closed`,`opening`,`closing`,`stopped`]},position:{category:`position`,required:!0,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Position as percentage (0-100%)`}},{id:`state`,data_type:`enum`,format:[`closed`,`quarter`,`half`,`three_quarter`,`open`],description:{en:`Position as discrete states`}}]},type:{category:`type`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`curtain`,`roller`,`blind`,`venetian_blind`,`vertical_blind`,`shutter`,`outdoor_blind`,`awning`]},command:{category:`command`,required:!0,permissions:[`wo`],data_type:`enum`,unit:null,format:[`open`,`close`,`stop`]},obstruction:{category:`obstruction`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},tilt:{category:`tilt`,required:!1,permissions:[`rw`],data_type:`float`,unit:`°`,format:[-90,90]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},battery:{category:`battery`,properties:{percentage:{category:`percentage`,required:!0,permissions:[`ro`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Battery as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`critical`,`low`,`medium`,`high`,`full`],description:{en:`Battery as discrete levels`}}]},status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`ok`,`low`,`charging`]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},electrical_energy:{category:`electrical_energy`,properties:{consumption:{category:`consumption`,required:!0,permissions:[`ro`],data_type:`float`,unit:`kWh`,format:[0,null],measurement_kind:`cumulative`,reset_behavior:`unknown`},average_power:{category:`average_power`,required:!1,permissions:[`ro`],data_type:`float`,unit:`W`,format:[0,1e5],measurement_kind:`interval_average`},grid_import:{category:`grid_import`,required:!1,permissions:[`ro`],data_type:`float`,unit:`kWh`,format:[0,null],measurement_kind:`cumulative`,reset_behavior:`unknown`},grid_export:{category:`grid_export`,required:!1,permissions:[`ro`],data_type:`float`,unit:`kWh`,format:[0,null],measurement_kind:`cumulative`,reset_behavior:`unknown`},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},electrical_generation:{category:`electrical_generation`,properties:{production:{category:`production`,required:!0,permissions:[`ro`],data_type:`float`,unit:`kWh`,format:[0,null],measurement_kind:`cumulative`,reset_behavior:`unknown`},power:{category:`power`,required:!1,permissions:[`ro`],data_type:`float`,unit:`W`,format:[0,1e5],measurement_kind:`instantaneous`},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},electrical_power:{category:`electrical_power`,properties:{power:{category:`power`,required:!0,permissions:[`ro`],data_type:`float`,unit:`W`,format:[0,1e4],measurement_kind:`instantaneous`},voltage:{category:`voltage`,required:!1,permissions:[`ro`],data_type:`float`,unit:`V`,format:[0,500],measurement_kind:`instantaneous`},current:{category:`current`,required:!1,permissions:[`ro`],data_type:`float`,unit:`A`,format:[0,100],measurement_kind:`instantaneous`},frequency:{category:`frequency`,required:!1,permissions:[`ro`],data_type:`float`,unit:`Hz`,format:[40,70],measurement_kind:`instantaneous`},over_current:{category:`over_current`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},over_voltage:{category:`over_voltage`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},over_power:{category:`over_power`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},camera:{category:`camera`,properties:{status:{category:`status`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`available`,`in_use`,`unavailable`,`offline`,`initializing`,`error`]},source:{category:`source`,required:!0,permissions:[`ro`],data_type:`string`,unit:null,format:null},zoom:{category:`zoom`,required:!1,permissions:[`rw`],data_type:`float`,unit:null,format:[1,10]},pan:{category:`pan`,required:!1,permissions:[`rw`],data_type:`float`,unit:`°`,format:[-180,180]},tilt:{category:`tilt`,required:!1,permissions:[`rw`],data_type:`float`,unit:`°`,format:[-90,90]},infrared:{category:`infrared`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},doorbell:{category:`doorbell`,properties:{event:{category:`event`,required:!0,permissions:[`ro`],data_type:`enum`,unit:null,format:[`single_press`,`double_press`,`long_press`]},brightness:{category:`brightness`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Brightness as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`,`full`],description:{en:`Brightness as discrete levels`}}]},tampered:{category:`tampered`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},media_input:{category:`media_input`,properties:{source:{category:`source`,required:!0,permissions:[`rw`],data_types:[{id:`standard`,data_type:`enum`,unit:null,format:`hdmi1.hdmi2.hdmi3.hdmi4.hdmi5.hdmi6.arc.earc.tv.cable.satellite.antenna.av1.av2.component.vga.dvi.usb.bluetooth.wifi.airplay.cast.dlna.miracast.app_netflix.app_youtube.app_spotify.app_prime_video.app_disney_plus.app_hbo_max.app_apple_tv.app_plex.app_kodi.other`.split(`.`),step:null,description:{en:`Standardized input/source identifier (recommended for UI).`}},{id:`custom`,data_type:`string`,unit:null,format:null,step:null,description:{en:`Integration-specific input/source value (fallback).`}}]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},source_label:{category:`source_label`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null}}},media_playback:{category:`media_playback`,properties:{status:{category:`status`,required:!0,permissions:[`rw`],data_type:`enum`,unit:null,format:[`playing`,`paused`,`stopped`]},track:{category:`track`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},duration:{category:`duration`,required:!1,permissions:[`ro`],data_type:`uint`,unit:`s`,format:[0,86400]},position:{category:`position`,required:!1,permissions:[`rw`],data_type:`uint`,unit:`s`,format:[0,86400]},shuffle:{category:`shuffle`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},repeat:{category:`repeat`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`off`,`one`,`all`]},command:{category:`command`,required:!1,permissions:[`wo`],data_type:`enum`,unit:null,format:[`play`,`pause`,`stop`,`next`,`previous`,`rewind`,`fast_forward`]},artist:{category:`artist`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},album:{category:`album`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},artwork_url:{category:`artwork_url`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},media_type:{category:`media_type`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`music`,`tvshow`,`movie`,`video`,`playlist`,`podcast`,`audiobook`,`radio`,`unknown`]}}},microphone:{category:`microphone`,properties:{active:{category:`active`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},volume:{category:`volume`,required:!1,permissions:[`ro`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Volume as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`mute`,`low`,`medium`,`high`,`max`],description:{en:`Volume as discrete levels`}}]}}},speaker:{category:`speaker`,properties:{active:{category:`active`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},volume:{category:`volume`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Volume as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`mute`,`low`,`medium`,`high`,`max`],description:{en:`Volume as discrete levels`}}]},mode:{category:`mode`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`stereo`,`mono`,`surround`]},mute:{category:`mute`,required:!1,permissions:[`rw`],data_type:`bool`,unit:null,format:null},balance:{category:`balance`,required:!1,permissions:[`rw`],data_type:`float`,unit:null,format:[-1,1]},bass:{category:`bass`,required:!1,permissions:[`rw`],data_type:`float`,unit:null,format:[-10,10]},treble:{category:`treble`,required:!1,permissions:[`rw`],data_type:`float`,unit:null,format:[-10,10]}}},television:{category:`television`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},brightness:{category:`brightness`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Brightness as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`,`full`],description:{en:`Brightness as discrete levels`}}]},remote_key:{category:`remote_key`,required:!1,permissions:[`wo`],data_type:`enum`,unit:null,format:[`rewind`,`fast_forward`,`next`,`previous`,`arrow_up`,`arrow_down`,`arrow_left`,`arrow_right`,`select`,`back`,`exit`,`info`,`play`,`pause`]}}},projector:{category:`projector`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},brightness:{category:`brightness`,required:!1,permissions:[`rw`],data_types:[{id:`percentage`,data_type:`uchar`,unit:`%`,format:[0,100],step:1,description:{en:`Brightness as percentage (0-100%)`}},{id:`level`,data_type:`enum`,format:[`off`,`low`,`medium`,`high`,`full`],description:{en:`Brightness as discrete levels`}}]},remote_key:{category:`remote_key`,required:!1,permissions:[`wo`],data_type:`enum`,unit:null,format:[`rewind`,`fast_forward`,`next`,`previous`,`arrow_up`,`arrow_down`,`arrow_left`,`arrow_right`,`select`,`back`,`exit`,`info`,`play`,`pause`]}}},device_information:{category:`device_information`,properties:{manufacturer:{category:`manufacturer`,required:!0,permissions:[`ro`],data_type:`string`,unit:null,format:null},model:{category:`model`,required:!0,permissions:[`ro`],data_type:`string`,unit:null,format:null},serial_number:{category:`serial_number`,required:!0,permissions:[`ro`],data_type:`string`,unit:null,format:null},firmware_revision:{category:`firmware_revision`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},hardware_revision:{category:`hardware_revision`,required:!1,permissions:[`ro`],data_type:`string`,unit:null,format:null},link_quality:{category:`link_quality`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:`%`,format:[0,100]},connection_type:{category:`connection_type`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`wired`,`wifi`,`zigbee`,`bluetooth`]},status:{category:`status`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`connected`,`disconnected`,`init`,`ready`,`running`,`sleeping`,`stopped`,`lost`,`alert`,`unknown`]},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},filter:{category:`filter`,properties:{life_remaining:{category:`life_remaining`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:`%`,format:[0,100]},status:{category:`status`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`good`,`replace_soon`,`replace_now`]},change_needed:{category:`change_needed`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},reset:{category:`reset`,required:!1,permissions:[`wo`],data_type:`bool`,unit:null,format:null},fault:{category:`fault`,required:!1,permissions:[`ro`],data_type:`uchar`,unit:null,format:[0,255]}}},button:{category:`button`,properties:{event:{category:`event`,required:!0,permissions:[`ev`],data_type:`enum`,unit:null,format:[`press`,`long_press`,`double_press`]},detected:{category:`detected`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},indicator:{category:`indicator`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},brightness:{category:`brightness`,required:!1,permissions:[`rw`],data_type:`uchar`,unit:null,format:[0,255]},color:{category:`color_red`,required:!1,permissions:[`rw`],data_type:`enum`,unit:null,format:[`red`,`green`,`blue`,`yellow`,`white`,`off`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},buzzer:{category:`buzzer`,properties:{on:{category:`on`,required:!0,permissions:[`rw`],data_type:`bool`,unit:null,format:null},frequency:{category:`frequency`,required:!1,permissions:[`rw`],data_type:`uint`,unit:`Hz`,format:[100,1e4]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},accelerometer:{category:`accelerometer`,properties:{acceleration_x:{category:`acceleration_x`,required:!0,permissions:[`ro`],data_type:`float`,unit:`g`,format:[-16,16],step:.001},acceleration_y:{category:`acceleration_y`,required:!0,permissions:[`ro`],data_type:`float`,unit:`g`,format:[-16,16],step:.001},acceleration_z:{category:`acceleration_z`,required:!0,permissions:[`ro`],data_type:`float`,unit:`g`,format:[-16,16],step:.001},orientation:{category:`orientation`,required:!1,permissions:[`ro`],data_type:`enum`,unit:null,format:[`landscape`,`portrait`,`landscape_inverted`,`portrait_inverted`,`face_up`,`face_down`]},active:{category:`active`,required:!1,permissions:[`ro`],data_type:`bool`,unit:null,format:null}}},generic:{category:`generic`,properties:{generic:{category:`generic`,required:!1}}}},he={generic:{category:`generic`,channels:{generic:{category:`generic`,required:!1,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1}}},air_conditioner:{category:`air_conditioner`,channels:{cooler:{category:`cooler`,required:!0,multiple:!1},fan:{category:`fan`,required:!0,multiple:!1},temperature:{category:`temperature`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},heater:{category:`heater`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},filter:{category:`filter`,required:!1,multiple:!1}}},air_dehumidifier:{category:`air_dehumidifier`,channels:{dehumidifier:{category:`dehumidifier`,required:!0,multiple:!1},humidity:{category:`humidity`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},fan:{category:`fan`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},temperature:{category:`temperature`,required:!1,multiple:!1}}},air_humidifier:{category:`air_humidifier`,channels:{humidifier:{category:`humidifier`,required:!0,multiple:!1},humidity:{category:`humidity`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},fan:{category:`fan`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},temperature:{category:`temperature`,required:!1,multiple:!1}}},air_purifier:{category:`air_purifier`,channels:{fan:{category:`fan`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},air_quality:{category:`air_quality`,required:!1,multiple:!1},filter:{category:`filter`,required:!1,multiple:!1},air_particulate:{category:`air_particulate`,required:!1,multiple:!1},carbon_dioxide:{category:`carbon_dioxide`,required:!1,multiple:!1},carbon_monoxide:{category:`carbon_monoxide`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},nitrogen_dioxide:{category:`nitrogen_dioxide`,required:!1,multiple:!1},ozone:{category:`ozone`,required:!1,multiple:!1},pressure:{category:`pressure`,required:!1,multiple:!1},sulphur_dioxide:{category:`sulphur_dioxide`,required:!1,multiple:!1},temperature:{category:`temperature`,required:!1,multiple:!1},volatile_organic_compounds:{category:`volatile_organic_compounds`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},thermostat:{category:`thermostat`,channels:{temperature:{category:`temperature`,required:!0,multiple:!1},thermostat:{category:`thermostat`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},cooler:{category:`cooler`,required:!1,multiple:!1},heater:{category:`heater`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},alarm:{category:`alarm`,channels:{alarm:{category:`alarm`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1}}},camera:{category:`camera`,channels:{camera:{category:`camera`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},light:{category:`light`,required:!1,multiple:!1},microphone:{category:`microphone`,required:!1,multiple:!1},motion:{category:`motion`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!1,multiple:!1},temperature:{category:`temperature`,required:!1,multiple:!1}}},doorbell:{category:`doorbell`,channels:{doorbell:{category:`doorbell`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},camera:{category:`camera`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},light:{category:`light`,required:!1,multiple:!1},lock:{category:`lock`,required:!1,multiple:!1},microphone:{category:`microphone`,required:!1,multiple:!1},motion:{category:`motion`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!1,multiple:!1}}},door:{category:`door`,channels:{door:{category:`door`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},lock:{category:`lock`,required:!1,multiple:!1},motion:{category:`motion`,required:!1,multiple:!1}}},lock:{category:`lock`,channels:{lock:{category:`lock`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},motion:{category:`motion`,required:!1,multiple:!1}}},fan:{category:`fan`,channels:{fan:{category:`fan`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},heating_unit:{category:`heating_unit`,channels:{heater:{category:`heater`,required:!0,multiple:!1},temperature:{category:`temperature`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1}}},water_heater:{category:`water_heater`,channels:{heater:{category:`heater`,required:!0,multiple:!1},temperature:{category:`temperature`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1}}},lighting:{category:`lighting`,channels:{light:{category:`light`,required:!0,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},illuminance:{category:`illuminance`,required:!1,multiple:!1}}},outlet:{category:`outlet`,channels:{outlet:{category:`outlet`,required:!0,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},pump:{category:`pump`,channels:{flow:{category:`flow`,required:!1,multiple:!1},switcher:{category:`switcher`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},pressure:{category:`pressure`,required:!1,multiple:!1}}},sprinkler:{category:`sprinkler`,channels:{valve:{category:`valve`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},flow:{category:`flow`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},pressure:{category:`pressure`,required:!1,multiple:!1}}},switcher:{category:`switcher`,constraints:{oneOrMoreOf:[[`outlet`,`switcher`]],mutuallyExclusiveGroups:[[[`outlet`],[`switcher`]]]},channels:{outlet:{category:`outlet`,required:!1,multiple:!0},switcher:{category:`switcher`,required:!1,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},valve:{category:`valve`,channels:{valve:{category:`valve`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},flow:{category:`flow`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},pressure:{category:`pressure`,required:!1,multiple:!1}}},window_covering:{category:`window_covering`,channels:{window_covering:{category:`window_covering`,required:!0,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},media:{category:`media`,channels:{switcher:{category:`switcher`,required:!1,multiple:!1},media_input:{category:`media_input`,required:!1,multiple:!1},media_playback:{category:`media_playback`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},microphone:{category:`microphone`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!1,multiple:!1}}},speaker:{category:`speaker`,channels:{switcher:{category:`switcher`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!0,multiple:!0},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},media_input:{category:`media_input`,required:!1,multiple:!1},media_playback:{category:`media_playback`,required:!1,multiple:!1}}},television:{category:`television`,channels:{speaker:{category:`speaker`,required:!0,multiple:!1},television:{category:`television`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},media_playback:{category:`media_playback`,required:!1,multiple:!1},media_input:{category:`media_input`,required:!1,multiple:!1}}},projector:{category:`projector`,channels:{projector:{category:`projector`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},speaker:{category:`speaker`,required:!1,multiple:!1},media_playback:{category:`media_playback`,required:!1,multiple:!1},media_input:{category:`media_input`,required:!1,multiple:!1}}},av_receiver:{category:`av_receiver`,channels:{switcher:{category:`switcher`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!0,multiple:!0},media_input:{category:`media_input`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},media_playback:{category:`media_playback`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1}}},set_top_box:{category:`set_top_box`,channels:{switcher:{category:`switcher`,required:!1,multiple:!1},media_playback:{category:`media_playback`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},media_input:{category:`media_input`,required:!1,multiple:!1},speaker:{category:`speaker`,required:!1,multiple:!1}}},game_console:{category:`game_console`,channels:{switcher:{category:`switcher`,required:!1,multiple:!1},media_playback:{category:`media_playback`,required:!1,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1}}},streaming_service:{category:`streaming_service`,channels:{media_playback:{category:`media_playback`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1}}},robot_vacuum:{category:`robot_vacuum`,channels:{battery:{category:`battery`,required:!0,multiple:!1},robot_vacuum:{category:`robot_vacuum`,required:!0,multiple:!1},device_information:{category:`device_information`,required:!0,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},filter:{category:`filter`,required:!1,multiple:!1}}},sensor:{category:`sensor`,channels:{device_information:{category:`device_information`,required:!0,multiple:!1},air_particulate:{category:`air_particulate`,required:!1,multiple:!1},battery:{category:`battery`,required:!1,multiple:!1},carbon_dioxide:{category:`carbon_dioxide`,required:!1,multiple:!1},carbon_monoxide:{category:`carbon_monoxide`,required:!1,multiple:!1},gas:{category:`gas`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!1},humidity:{category:`humidity`,required:!1,multiple:!1},illuminance:{category:`illuminance`,required:!1,multiple:!1},leak:{category:`leak`,required:!1,multiple:!1},motion:{category:`motion`,required:!1,multiple:!1},nitrogen_dioxide:{category:`nitrogen_dioxide`,required:!1,multiple:!1},occupancy:{category:`occupancy`,required:!1,multiple:!1},ozone:{category:`ozone`,required:!1,multiple:!1},pressure:{category:`pressure`,required:!1,multiple:!1},smoke:{category:`smoke`,required:!1,multiple:!1},sulphur_dioxide:{category:`sulphur_dioxide`,required:!1,multiple:!1},temperature:{category:`temperature`,required:!1,multiple:!1},volatile_organic_compounds:{category:`volatile_organic_compounds`,required:!1,multiple:!1},electrical_energy:{category:`electrical_energy`,required:!1,multiple:!1},electrical_power:{category:`electrical_power`,required:!1,multiple:!1}}},terminal:{category:`terminal`,channels:{device_information:{category:`device_information`,required:!0,multiple:!1},button:{category:`button`,required:!1,multiple:!0},indicator:{category:`indicator`,required:!1,multiple:!0},buzzer:{category:`buzzer`,required:!1,multiple:!1},illuminance:{category:`illuminance`,required:!1,multiple:!1},accelerometer:{category:`accelerometer`,required:!1,multiple:!1},contact:{category:`contact`,required:!1,multiple:!0},switcher:{category:`switcher`,required:!1,multiple:!0},temperature:{category:`temperature`,required:!1,multiple:!1}}}},ge={[u.generic]:[],[u.air_conditioner]:[M.cooler,M.heater,M.fan,M.temperature,M.humidity,M.electrical_energy,M.electrical_power,M.leak,M.device_information],[u.air_dehumidifier]:[M.cooler,M.fan,M.temperature,M.humidity,M.electrical_energy,M.electrical_power,M.leak,M.device_information],[u.air_humidifier]:[M.humidity,M.switcher,M.temperature,M.fan,M.electrical_energy,M.electrical_power,M.leak,M.device_information],[u.air_purifier]:[M.fan,M.air_particulate,M.carbon_dioxide,M.carbon_monoxide,M.humidity,M.leak,M.nitrogen_dioxide,M.ozone,M.pressure,M.sulphur_dioxide,M.temperature,M.volatile_organic_compounds,M.electrical_energy,M.electrical_power,M.device_information],[u.alarm]:[M.alarm,M.device_information],[u.camera]:[M.camera,M.motion,M.microphone,M.speaker,M.contact,M.light,M.temperature,M.humidity,M.battery,M.device_information],[u.door]:[M.door,M.lock,M.contact,M.motion,M.battery,M.device_information],[u.doorbell]:[M.doorbell,M.camera,M.lock,M.motion,M.microphone,M.speaker,M.contact,M.light,M.battery,M.device_information],[u.fan]:[M.fan,M.electrical_energy,M.electrical_power,M.device_information],[u.heating_unit]:[M.heater,M.temperature,M.humidity,M.electrical_energy,M.electrical_power,M.device_information],[u.lighting]:[M.light,M.illuminance,M.electrical_energy,M.electrical_power,M.device_information],[u.lock]:[M.lock,M.contact,M.motion,M.battery,M.device_information],[u.media]:[M.media_input,M.media_playback,M.microphone,M.speaker,M.device_information],[u.av_receiver]:[M.media_input,M.media_playback,M.speaker,M.device_information],[u.game_console]:[M.media_playback,M.media_input,M.device_information],[u.projector]:[M.projector,M.speaker,M.media_playback,M.media_input,M.device_information],[u.set_top_box]:[M.media_input,M.media_playback,M.device_information],[u.streaming_service]:[M.media_playback,M.device_information],[u.outlet]:[M.outlet,M.electrical_energy,M.electrical_power,M.device_information],[u.pump]:[M.flow,M.switcher,M.leak,M.pressure,M.electrical_energy,M.electrical_power,M.device_information],[u.robot_vacuum]:[M.robot_vacuum,M.electrical_energy,M.electrical_power,M.leak,M.battery,M.device_information],[u.sensor]:[M.air_particulate,M.battery,M.carbon_dioxide,M.carbon_monoxide,M.contact,M.humidity,M.illuminance,M.leak,M.motion,M.nitrogen_dioxide,M.occupancy,M.ozone,M.pressure,M.smoke,M.sulphur_dioxide,M.temperature,M.volatile_organic_compounds,M.device_information],[u.speaker]:[M.speaker,M.media_input,M.media_playback,M.electrical_energy,M.electrical_power,M.device_information],[u.sprinkler]:[M.valve,M.flow,M.pressure,M.leak,M.humidity,M.electrical_energy,M.electrical_power,M.device_information],[u.switcher]:[M.switcher,M.electrical_energy,M.electrical_power,M.device_information],[u.television]:[M.television,M.speaker,M.media_playback,M.media_input,M.device_information],[u.terminal]:[M.button,M.indicator,M.buzzer,M.illuminance,M.accelerometer,M.temperature,M.contact,M.switcher,M.device_information],[u.thermostat]:[M.thermostat,M.cooler,M.heater,M.temperature,M.humidity,M.contact,M.electrical_energy,M.electrical_power,M.device_information],[u.valve]:[M.valve,M.pressure,M.flow,M.leak,M.battery,M.electrical_energy,M.electrical_power,M.device_information],[u.water_heater]:[M.heater,M.temperature,M.leak,M.electrical_energy,M.electrical_power,M.device_information],[u.window_covering]:[M.window_covering,M.battery,M.electrical_energy,M.electrical_power,M.device_information]},_e=Object.fromEntries(Object.entries(he).map(([e,t])=>{let n=Object.values(t.channels).map(e=>e.category),r=ge[e];return[e,r?[...n].sort((e,t)=>{let n=r.indexOf(e),i=r.indexOf(t);return n===-1&&i===-1?0:n===-1?1:i===-1?-1:n-i}):n]})),ve=Object.fromEntries(Object.entries(he).map(([e,t])=>[e,{required:Object.values(t.channels).filter(e=>e.required).map(e=>e.category),optional:Object.values(t.channels).filter(e=>!e.required).map(e=>e.category),multiple:Object.values(t.channels).filter(e=>e.multiple).map(e=>e.category)}])),ye=Object.fromEntries(Object.entries(me).map(([e,t])=>[e,{required:Object.values(t.properties).filter(e=>e.required).map(e=>e.category),optional:Object.values(t.properties).filter(e=>!e.required).map(e=>e.category)}])),be=(e,t)=>{let n=me[e];if(!n)return;let r=Object.values(n.properties).find(e=>e.category===t);if(!r)return;let i=r.data_types?.[0];if(i)return{category:r.category,required:r.required,description:i.description??r.description??{en:``},permissions:r.permissions,data_type:i.data_type,unit:i.unit??null,format:i.format??null,invalid:r.invalid,step:i.step??null};if(r.data_type)return{category:r.category,required:r.required,description:r.description??{en:``},permissions:r.permissions,data_type:r.data_type,unit:r.unit??null,format:r.format??null,invalid:r.invalid,step:r.step??null}},xe=({id:e})=>{let n=C(),r=n.getStore(K),i=n.getStore(G),a=e=>r.findById(e),o=e=>ye[e.category]??null;return{canAddAnotherProperty:t(()=>{let t=a(e);if(t===null)return!0;let{required:n,optional:r}=o(t)??{required:[],optional:[]},s=[...n,...r],c=i.findForChannel(t.id).map(e=>e.category);return s.filter(e=>!c.includes(e)).length>0}),missingRequiredProperties:t(()=>{let t=a(e);if(t===null)throw new J(`Something went wrong, channel can't be loaded`);let{required:n}=o(t)??{required:[]},r=i.findForChannel(t.id).map(e=>e.category);return n.filter(e=>!r.includes(e))})}},Se=w({id:d().uuid().optional(),type:d().trim().nonempty(),device:d().uuid().optional(),category:S(M).default(M.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty(),description:d().trim().transform(e=>e===``?null:e).nullable().optional()}),Ce=w({id:d().uuid(),type:d().trim().nonempty(),device:d().uuid(),category:S(M).default(M.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty().optional(),description:d().trim().transform(e=>e===``?null:e).nullable().optional()}),we=({type:e})=>{let{getByType:n}=ie(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Te=()=>{let e=C().getStore(W),{firstLoad:n,semaphore:r}=D(e);return{devices:t(()=>e.findAll().filter(e=>!e.draft)),areLoading:t(()=>r.value.fetching.items),loaded:t(()=>n.value),fetchDevices:async()=>{await e.fetch()}}},Ee=({id:n,type:s,deviceId:c})=>{let l=C(),{element:u}=we({type:s}),d=l.getStore(K),{devices:f,fetchDevices:p,areLoading:m}=Te(),{t:h}=i(),g=F(),_=x(),v=r(j.NONE),y,b=t(()=>D.device?f.value.find(e=>e.id===D.device)??null:null),S=t(()=>b.value?d.findForDevice(b.value.id).map(e=>e.category):[]),w=t(()=>b.value?ve[b.value.category]??null:null),T=t(()=>w.value===null?[]:Object.values(M).filter(e=>w.value?.required.includes(e)||w.value?.optional.includes(e)).filter(e=>!S.value.includes(e)||w.value?.multiple?.includes(e)).map(e=>({value:e,label:h(`devicesModule.categories.channels.${e}`)}))),E=t(()=>f.value.filter(e=>e.type===s).map(e=>({value:e.id,label:e.name}))),D=a({...U(u.value?.schemas?.channelAddFormSchema||Se),id:n,type:s,device:c,category:M.generic,name:``,description:``}),O=z(e(D)),k=r(void 0),A=r(!1),N=async()=>{if(k.value.clearValidate(),!await k.value.validate())throw new X(`Form not valid`);let e=c??D.device;if(!e)throw new X(`Missing device identifier`);if(!D.category)throw new X(`Missing data type definition`);let t=(u.value?.schemas?.channelAddFormSchema||Se).safeParse(D);if(!t.success)throw _.error(`Schema validation failed with:`,t.error),new X(`Failed to validate create channel model.`);v.value=j.WORKING;let r=h(`devicesModule.messages.channels.notCreated`,{device:D.name});try{await d.add({id:n,deviceId:e,draft:!1,data:{...t.data,type:s}})}catch(e){throw v.value=j.ERROR,y=window.setTimeout(P,2e3),e instanceof Y&&e.code===422?g.error(e.message):g.error(r),e}return v.value=j.OK,y=window.setTimeout(P,2e3),g.success(h(`devicesModule.messages.channels.created`,{device:D.name})),`added`},P=()=>{window.clearTimeout(y),v.value=j.NONE};return p().catch(()=>{}),o(D,()=>{A.value=!(0,q.isEqual)(e(D),O)}),o(()=>T.value,e=>{e.length&&e[0]&&(D.category=e[0].value,O.category=e[0].value)},{immediate:!0}),{categoriesOptions:T,devicesOptions:E,model:D,formEl:k,formChanged:A,submit:N,clear:P,formResult:v,loadingDevices:m}},De=({channel:n,messages:s})=>{let c=C(),{element:l}=we({type:n.type}),u=c.getStore(K),{devices:d,fetchDevices:f,areLoading:p}=Te(),{t:m}=i(),h=F(),g=x(),_=r(j.NONE),v,y=t(()=>d.value.find(e=>e.id===n.device)??null),b=t(()=>y.value?u.findForDevice(y.value.id).filter(e=>e.id!==n.id).map(e=>e.category):[]),S=t(()=>y.value?ve[y.value.category]??null:null),w=t(()=>S.value===null?[]:Object.values(M).filter(e=>S.value?.required.includes(e)||S.value?.optional.includes(e)).filter(e=>!b.value.includes(e)||S.value?.multiple?.includes(e)).map(e=>({value:e,label:m(`devicesModule.categories.channels.${e}`)}))),T=t(()=>d.value.map(e=>({value:e.id,label:e.name}))),E=a(n),D=z(e(E)),O=r(void 0),k=r(!1),A=async()=>{let t=n.draft,r=s&&s.error?s.error:n.draft?m(`devicesModule.messages.channels.notCreated`,{channel:n.name}):m(`devicesModule.messages.channels.notEdited`,{channel:n.name});if(O.value.clearValidate(),!await O.value.validate())throw new X(`Form not valid`);let i=(l.value?.schemas?.channelEditFormSchema||Ce).safeParse(E);if(!i.success)throw g.error(`Schema validation failed with:`,i.error),new X(`Failed to validate edit channel model.`);_.value=j.WORKING;try{await u.edit({id:n.id,data:{...i.data,type:n.type}}),n.draft&&await u.save({id:n.id,deviceId:n.device})}catch(e){throw _.value=j.ERROR,v=window.setTimeout(N,2e3),e instanceof Y&&e.code===422?h.error(e.message):h.error(r),e}return _.value=j.OK,v=window.setTimeout(N,2e3),t?(h.success(m(s&&s.success?s.success:`devicesModule.messages.channels.created`,{channel:n.name})),`added`):(h.success(m(s&&s.success?s.success:`devicesModule.messages.channels.edited`,{channel:n.name})),k.value=!1,D=z(e(E)),`saved`)},N=()=>{window.clearTimeout(v),_.value=j.NONE};return f().catch(()=>{}),o(E,()=>{k.value=!(0,q.isEqual)(e(E),D)}),{categoriesOptions:w,devicesOptions:T,model:E,formEl:O,formChanged:k,submit:A,clear:N,formResult:_,loadingDevices:p}},Oe=({channelId:e,id:n})=>{let r=C().getStore(G),{data:i,semaphore:a}=D(r);return{property:t(()=>n===null?null:i.value[n]??null),isLoading:t(()=>a.value.fetching.item.includes(n)?!0:(i.value[n]??null)===null?a.value.fetching.items.includes(e)||a.value.fetching.items.includes(`all`):!1),fetchProperty:async()=>{(i.value[n]??null)?.draft||await r.get({id:n,channelId:e})}}},ke=({channelId:e})=>{let n=C().getStore(G),{firstLoad:r,semaphore:i}=D(n),a=typeof e==`string`?t(()=>e):e;return{properties:t(()=>n.findAll().filter(e=>!a?.value||e.channel===a.value)),areLoading:t(()=>a.value?i.value.fetching.items.includes(a.value)?!0:!r.value.includes(a.value)&&i.value.fetching.items.includes(a.value):!1),loaded:t(()=>a.value?r.value.includes(a.value):!1),fetchProperties:async()=>{a.value&&await n.fetch({channelId:a.value})}}},Q={search:void 0,channels:[],categories:[],permissions:[],dataTypes:[]},Ae={by:`category`,dir:`asc`},je=({channelId:e,key:n=`list`})=>{let i=C().getStore(G),{firstLoad:a,semaphore:s}=D(i),{filters:c,sort:l,pagination:u,reset:d}=T({key:`${R}:channels-properties:${n}`,filters:{schema:le,defaults:Q},sort:{defaults:[Ae]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=t(()=>c.value.search!==Q.search||!(0,q.isEqual)(c.value.channels,Q.channels)||!(0,q.isEqual)(c.value.categories,Q.categories)||!(0,q.isEqual)(c.value.permissions,Q.permissions)||!(0,q.isEqual)(c.value.dataTypes,Q.dataTypes)),m=r(u.value.size||10),h=r(u.value.page||1),g=r(l.value.length>0?l.value[0]?.by:void 0),_=r(l.value.length>0?l.value[0]?.dir??null:null),v=t(()=>p(i.findAll().filter(t=>!e||t.channel===e).filter(e=>!e.draft&&(!c.value.search||e.id?.toLowerCase().includes(c.value.search.toLowerCase())||e.name?.toLowerCase().includes(c.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(c.value.search.toLowerCase()))&&(c.value.categories.length===0||c.value.categories.includes(e.category))&&(c.value.dataTypes.length===0||c.value.dataTypes.includes(e.dataType))&&(c.value.permissions.length===0||e.permissions.some(e=>c.value.permissions.includes(e)))),[e=>e[g.value]??``],[_.value===`asc`?`asc`:`desc`])),y=t(()=>{let e=(h.value-1)*m.value,t=e+m.value;return v.value.slice(e,t)}),b=async()=>{await i.fetch({channelId:e})},x=t(()=>s.value.fetching.items.includes(e)?!0:!a.value.includes(e)&&s.value.fetching.items.includes(e)),S=t(()=>a.value.includes(e)),w=t(()=>i.findAll().filter(t=>!e||t.channel===e).filter(e=>!e.draft).length);return o(()=>u.value,e=>{h.value=e.page??1,m.value=e.size??10},{deep:!0}),o(()=>h.value,e=>{u.value.page=e}),o(()=>m.value,e=>{u.value.size=e}),o(()=>_.value,e=>{g.value===void 0||e===null?l.value=[]:l.value=[{by:g.value,dir:e}]}),o(()=>g.value,e=>{e===void 0?l.value=[]:l.value=[{by:e,dir:_.value}]}),{properties:v,propertiesPaginated:y,totalRows:w,areLoading:x,loaded:S,fetchProperties:b,filters:c,filtersActive:f,paginateSize:m,paginatePage:h,sortBy:g,sortDir:_,resetFilter:d}},Me=()=>{let{t:e}=i(),t=F(),n=C().getStore(G);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new J(`Something went wrong, channel property can't be loaded`);g.confirm(e(`devicesModule.texts.channelsProperties.confirmRemove`,{property:i.name??e(`devicesModule.categories.channelsProperties.${i.category}`)}),e(`devicesModule.headings.channelsProperties.remove`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await n.remove({id:i.id,channelId:i.channel}),t.success(e(`devicesModule.messages.channelsProperties.removed`,{property:i.name??e(`devicesModule.categories.channelsProperties.${i.category}`)}))}catch(n){if(n instanceof Y&&n.code===404){let n=e(`devicesModule.messages.channelsProperties.notFound`,{property:i.name??e(`devicesModule.categories.channelsProperties.${i.category}`)});t.error(n)}else if(n instanceof Y&&n.code===422)t.error(n.message);else{let n=e(`devicesModule.messages.channelsProperties.notRemoved`,{property:i.name??e(`devicesModule.categories.channelsProperties.${i.category}`)});t.error(n)}}}).catch(()=>{t.info(e(`devicesModule.messages.channelsProperties.removeCanceled`,{property:i.name??e(`devicesModule.categories.channelsProperties.${i.category}`)}))})}}},Ne=({id:e})=>{let n=C().getStore(G);return{icon:t(()=>{switch(n.findById(e)?.category){default:return`mdi:tune`}})}},Pe=w({id:d().uuid().optional(),type:d().trim().nonempty(),channel:d().uuid().optional(),category:S(_).default(_.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty().nullable(),permissions:B(S(y)),dataType:S(v),format:B(V([d(),V([H(),N()])])).nullable(),invalid:V([d(),H(),O(),N()]),step:V([d(),H()]).transform(e=>e===``?null:Number(e)).nullable(),enterValue:O().default(!1),value:V([d(),H(),O(),N()]).optional(),enumValues:B(d()),minValue:V([d(),H()]).transform(e=>e===``?void 0:Number(e)).optional(),maxValue:V([d(),H()]).transform(e=>e===``?void 0:Number(e)).optional()}),Fe=w({id:d().uuid(),type:d().trim().nonempty(),channel:d().uuid(),category:S(_).default(_.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty().nullable().optional(),permissions:B(S(y)),dataType:S(v),format:B(V([d(),V([H(),N()])])).nullable(),invalid:V([d(),H(),O(),N()]),step:V([d(),H()]).transform(e=>e===``?null:Number(e)).nullable(),enterValue:O().default(!1),value:V([d(),H(),O(),N()]).optional(),enumValues:B(d()),minValue:V([d(),H()]).transform(e=>e===``?void 0:Number(e)).optional(),maxValue:V([d(),H()]).transform(e=>e===``?void 0:Number(e)).optional()}),Ie=({type:e})=>{let{getByType:n}=re(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Le=({id:n,type:s,channelId:c})=>{let l=C(),{element:u}=Ie({type:s}),d=l.getStore(G),{channels:f,fetchChannels:p,areLoading:m}=oe(),{t:h}=i(),g=F(),b=x(),S=r(j.NONE),w,T=t(()=>P.channel?f.value.find(e=>e.id===P.channel)??null:null),E=t(()=>T.value?d.findForChannel(T.value.id).map(e=>e.category):[]),D=t(()=>T.value?ye[T.value.category]??null:null),O=t(()=>D.value===null?[]:Object.values(_).filter(e=>D.value?.required.includes(e)||D.value?.optional.includes(e)).filter(e=>!E.value.includes(e)).map(e=>({value:e,label:h(`devicesModule.categories.channelsProperties.${e}`)}))),k=t(()=>f.value.map(e=>({value:e.id,label:e.name}))),A=Object.values(y).map(e=>({value:e,label:h(`devicesModule.permissions.${e}`)})),N=Object.values(v).map(e=>({value:e,label:h(`devicesModule.dataTypes.${e}`)})),P=a({...U(u.value?.schemas?.channelPropertyAddFormSchema||Pe),id:n,type:s,channel:c,category:_.generic,name:``,permissions:[],dataType:v.unknown,format:null,invalid:null,step:null,enumValues:[],minValue:void 0,maxValue:void 0,enterValue:!1,value:void 0}),I=z(e(P)),L=r(void 0),R=r(!1),B=async()=>{if(L.value.clearValidate(),!await L.value.validate())throw new X(`Form not valid`);let e=c??P.channel;if(!e)throw new X(`Missing channel identifier`);if(P.name===``&&(P.name=null),!P.category)throw new X(`Missing data type definition`);P.dataType===v.enum?P.format=P.enumValues:[v.char,v.uchar,v.short,v.ushort,v.int,v.uint,v.float].includes(P.dataType)&&(P.format=[typeof P.minValue==`string`&&P.minValue!==``?Number(P.minValue):typeof P.minValue==`number`?P.minValue:null,typeof P.maxValue==`string`&&P.maxValue!==``?Number(P.maxValue):typeof P.maxValue==`number`?P.maxValue:null]),P.enterValue||delete P.value;let t=(u.value?.schemas?.channelPropertyAddFormSchema||Pe).safeParse(P);if(!t.success)throw b.error(`Schema validation failed with:`,t.error),new X(`Failed to validate create channel property model.`);S.value=j.WORKING;let r=h(`devicesModule.messages.channelsProperties.notCreated`,{device:P.name});try{await d.add({id:n,channelId:e,draft:!1,data:{...t.data,type:s}})}catch(e){throw S.value=j.ERROR,w=window.setTimeout(V,2e3),e instanceof Y&&e.code===422?g.error(e.message):g.error(r),e}return S.value=j.OK,w=window.setTimeout(V,2e3),g.success(h(`devicesModule.messages.channelsProperties.created`,{device:P.name})),`added`},V=()=>{window.clearTimeout(w),S.value=j.NONE};return p().catch(()=>{}),o(P,()=>{R.value=!(0,q.isEqual)(e(P),I)}),o(()=>P.category,t=>{let n=be(T.value?.category??M.generic,t);n&&(I.permissions=n.permissions,I.dataType=n.data_type,P.permissions=n.permissions,P.dataType=n.data_type,n.invalid!==void 0&&(I.invalid=n.invalid,P.invalid=n.invalid),n.step!==void 0&&(I.step=n.step,P.step=n.step),I.dataType===v.enum?(I.enumValues=n.format??[],I.minValue=void 0,I.maxValue=void 0,P.enumValues=n.format??[],P.minValue=void 0,P.maxValue=void 0):[v.char,v.uchar,v.short,v.ushort,v.int,v.uint,v.float].includes(P.dataType)?(I.enumValues=[],I.minValue=n.format?.[0],I.maxValue=n.format?.[1],P.enumValues=[],P.minValue=n.format?.[0],P.maxValue=n.format?.[1]):(I.enumValues=[],I.minValue=void 0,I.maxValue=void 0,P.enumValues=[],P.minValue=void 0,P.maxValue=void 0),R.value=!(0,q.isEqual)(e(P),I))},{immediate:!0}),o(()=>O.value,e=>{e.length&&e[0]&&(P.category=e[0].value,I.category=e[0].value)},{immediate:!0}),{categoriesOptions:O,channelsOptions:k,permissionsOptions:A,dataTypesOptions:N,model:P,formEl:L,formChanged:R,submit:B,clear:V,formResult:S,loadingChannels:m}},Re=({property:n,messages:s})=>{let c=C(),{element:l}=Ie({type:n.type}),u=c.getStore(G),{channels:d,fetchChannels:f,areLoading:p}=oe(),{t:m}=i(),h=F(),g=x(),b=r(j.NONE),S,w=[],T,E;n.dataType===v.enum?w=n.format?n.format.map(e=>e?.toString()||``):[]:[v.char,v.uchar,v.short,v.ushort,v.int,v.uint,v.float].includes(n.dataType)&&Array.isArray(n.format)&&n.format.length===2&&(T=n.format[0],E=n.format[1]);let D=t(()=>d.value.find(e=>e.id===n.channel)??null),O=t(()=>D.value?u.findForChannel(D.value.id).filter(e=>e.id!==n.id).map(e=>e.category):[]),k=t(()=>D.value?ye[D.value.category]??null:null),A=t(()=>k.value===null?[]:Object.values(_).filter(e=>k.value?.required.includes(e)||k.value?.optional.includes(e)).filter(e=>!O.value.includes(e)).map(e=>({value:e,label:m(`devicesModule.categories.channelsProperties.${e}`)}))),M=t(()=>d.value.map(e=>({value:e.id,label:e.name}))),N=Object.values(y).map(e=>({value:e,label:m(`devicesModule.permissions.${e}`)})),P=Object.values(v).map(e=>({value:e,label:m(`devicesModule.dataTypes.${e}`)})),I=a({...n,format:e(n.format),value:n.value?.value??null,enumValues:w,minValue:T,maxValue:E,enterValue:!1}),L=z(e(I)),R=r(void 0),B=r(!1),V=async()=>{let t=n.draft,r=s&&s.error?s.error:n.draft?m(`devicesModule.messages.channelsProperties.notCreated`,{property:n.name??m(`devicesModule.categories.channelsProperties.${n.category}`)}):m(`devicesModule.messages.channelsProperties.notEdited`,{property:n.name??m(`devicesModule.categories.channelsProperties.${n.category}`)});if(R.value.clearValidate(),!await R.value.validate())throw new X(`Form not valid`);I.name===``&&(I.name=null),n.dataType===v.enum?I.format=I.enumValues:[v.char,v.uchar,v.short,v.ushort,v.int,v.uint,v.float].includes(n.dataType)&&(I.format=[I.minValue??null,I.maxValue??null]),I.enterValue||delete I.value;let i=(l.value?.schemas?.channelPropertyEditFormSchema||Fe).safeParse(I);if(!i.success)throw g.error(`Schema validation failed with:`,i.error),new X(`Failed to validate edit channel property model.`);b.value=j.WORKING;try{await u.edit({id:n.id,channelId:n.channel,data:{...i.data,type:n.type}}),n.draft&&await u.save({id:n.id,channelId:n.channel})}catch(e){throw b.value=j.ERROR,S=window.setTimeout(H,2e3),e instanceof Y&&e.code===422?h.error(e.message):h.error(r),e}return b.value=j.OK,S=window.setTimeout(H,2e3),t?(h.success(m(s&&s.success?s.success:`devicesModule.messages.channelsProperties.created`,{property:n.name??m(`devicesModule.categories.channelsProperties.${n.category}`)})),`added`):(h.success(m(s&&s.success?s.success:`devicesModule.messages.channelsProperties.edited`,{property:n.name??m(`devicesModule.categories.channelsProperties.${n.category}`)})),B.value=!1,L=z(e(I)),`saved`)},H=()=>{window.clearTimeout(S),b.value=j.NONE};return f().catch(()=>{}),o(I,()=>{B.value=!(0,q.isEqual)(e(I),L)}),{categoriesOptions:A,channelsOptions:M,permissionsOptions:N,dataTypesOptions:P,model:I,formEl:R,formChanged:B,submit:V,clear:H,formResult:b,loadingChannels:p}},ze=({id:e})=>{let n=C().getStore(W),{data:r,semaphore:i}=D(n);return{device:t(()=>e===null?null:r.value[e]??null),isLoading:t(()=>i.value.fetching.item.includes(e)?!0:(r.value[e]??null)===null&&i.value.fetching.items),fetchDevice:async()=>{(r.value[e]??null)?.draft||await n.get({id:e})}}},$={search:void 0,types:[],state:`all`,states:[],categories:[],enabled:`all`,validation:`all`},Be={by:`name`,dir:`asc`},Ve=()=>{let e=C(),n=e.getStore(W),i=e.getStore(te),{firstLoad:a,semaphore:s}=D(n),{filters:c,sort:l,pagination:u,reset:d}=T({key:`${R}:devices:list`,filters:{schema:se,defaults:$},sort:{defaults:[Be]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=t(()=>c.value.search!==$.search||!(0,q.isEqual)(c.value.types,$.types)||c.value.state!==$.state||!(0,q.isEqual)(c.value.states,$.states)||!(0,q.isEqual)(c.value.categories,$.categories)||!(0,q.isEqual)(c.value.enabled,$.enabled)||c.value.validation!==$.validation),m=r(u.value.size||10),g=r(u.value.page||1),_=r(l.value.length>0?l.value[0]?.by:void 0),v=r(l.value.length>0?l.value[0]?.dir??null:null),y=e=>i.findById(e)?.isValid??null,b=t(()=>p(n.findAll().filter(e=>!e.draft&&(!c.value.search||e.id.toLowerCase().includes(c.value.search.toLowerCase())||e.name.toLowerCase().includes(c.value.search.toLowerCase())||e.description?.toLowerCase().includes(c.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(c.value.search.toLowerCase()))&&(c.value.types.length===0||c.value.types.includes(e.type))&&(c.value.categories.length===0||c.value.categories.includes(e.category))&&(c.value.enabled===`all`||c.value.enabled===`enabled`&&e.enabled||c.value.enabled===`disabled`&&!e.enabled)&&(c.value.states.length===0||c.value.states.includes(e.status?.status??h.unknown))&&(c.value.state===`all`||c.value.state===`online`&&[h.ready,h.connected,h.running].includes(e.status.status)||c.value.state===`offline`&&[h.disconnected,h.stopped,h.lost,h.unknown].includes(e.status.status))&&(c.value.validation===`all`||c.value.validation===`valid`&&y(e.id)===!0||c.value.validation===`invalid`&&y(e.id)===!1)),[e=>_.value===`state`?e.status?.status??h.unknown:e[_.value]??``],[v.value===`asc`?`asc`:`desc`])),x=t(()=>{let e=(g.value-1)*m.value,t=e+m.value;return b.value.slice(e,t)}),S=async()=>{await n.fetch()},w=t(()=>s.value.fetching.items||!a.value),E=t(()=>a.value),O=t(()=>n.findAll().filter(e=>!e.draft).length);return o(()=>u.value,e=>{g.value=e.page??1,m.value=e.size??10},{deep:!0}),o(()=>g.value,e=>{u.value.page=e}),o(()=>m.value,e=>{u.value.size=e}),o(()=>v.value,e=>{_.value===void 0||e===null?l.value=[]:l.value=[{by:_.value,dir:e}]}),o(()=>_.value,e=>{e===void 0?l.value=[]:l.value=[{by:e,dir:v.value}]}),{devices:b,devicesPaginated:x,totalRows:O,areLoading:w,loaded:E,fetchDevices:S,filters:c,filtersActive:f,paginateSize:m,paginatePage:g,sortBy:_,sortDir:v,resetFilter:d}},He=()=>{let{t:e}=i(),t=F(),n=C().getStore(W);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new J(`Something went wrong, device can't be loaded`);g.confirm(e(`devicesModule.texts.devices.confirmRemove`,{device:i.name}),e(`devicesModule.headings.devices.remove`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await n.remove({id:i.id}),t.success(e(`devicesModule.messages.devices.removed`,{device:i.name}))}catch(n){if(n instanceof Y&&n.code===404){let n=e(`devicesModule.messages.devices.notFound`,{device:i.name});t.error(n)}else if(n instanceof Y&&n.code===422)t.error(n.message);else{let n=e(`devicesModule.messages.devices.notRemoved`,{device:i.name});t.error(n)}}}).catch(()=>{t.info(e(`devicesModule.messages.devices.removeCanceled`,{device:i.name}))})},bulkRemove:async r=>{if(r.length!==0)try{await g.confirm(e(`devicesModule.texts.devices.confirmBulkRemove`,{count:r.length}),e(`devicesModule.headings.devices.bulkRemove`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`devicesModule.messages.devices.bulkRemoved`,{count:i})),a>0&&t.error(e(`devicesModule.messages.devices.bulkRemoveFailed`,{count:a}))}catch{}},bulkEnable:async r=>{if(r.length!==0)try{await g.confirm(e(`devicesModule.texts.devices.confirmBulkEnable`,{count:r.length}),e(`devicesModule.headings.devices.bulkEnable`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`info`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{type:e.type,enabled:!0}}),i++}catch{a++}i>0&&t.success(e(`devicesModule.messages.devices.bulkEnabled`,{count:i})),a>0&&t.error(e(`devicesModule.messages.devices.bulkEnableFailed`,{count:a}))}catch{t.info(e(`devicesModule.messages.devices.bulkEnableCanceled`))}},bulkDisable:async r=>{if(r.length!==0)try{await g.confirm(e(`devicesModule.texts.devices.confirmBulkDisable`,{count:r.length}),e(`devicesModule.headings.devices.bulkDisable`),{confirmButtonText:e(`devicesModule.buttons.yes.title`),cancelButtonText:e(`devicesModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{type:e.type,enabled:!1}}),i++}catch{a++}i>0&&t.success(e(`devicesModule.messages.devices.bulkDisabled`,{count:i})),a>0&&t.error(e(`devicesModule.messages.devices.bulkDisableFailed`,{count:a}))}catch{t.info(e(`devicesModule.messages.devices.bulkDisableCanceled`))}}}},Ue=({id:e})=>{let n=C().getStore(W);return{icon:t(()=>{switch(n.findById(e)?.category){default:return`mdi:devices`}})}},We=({id:e})=>{let n=C(),r=n.getStore(W),i=n.getStore(K),a=e=>r.findById(e),o=e=>ve[e.category]??null;return{canAddAnotherChannel:t(()=>{let t=a(e);if(t===null)return!0;let{required:n,optional:r,multiple:s}=o(t)??{required:[],optional:[]},c=[...n,...r],l=i.findForDevice(t.id).map(e=>e.category);return c.filter(e=>!l.includes(e)).length>0||s!==void 0&&s.length>0}),missingRequiredChannels:t(()=>{let t=a(e);if(t===null)throw new J(`Something went wrong, device can't be loaded`);let{required:n}=o(t)??{required:[]},r=i.findForDevice(t.id).map(e=>e.category);return n.filter(e=>!r.includes(e))})}},Ge=w({id:d().uuid().optional(),type:d().trim().nonempty(),category:S(u).default(u.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty(),description:d().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:O().default(!0).optional()}),Ke=w({id:d().uuid(),type:d().trim().nonempty(),category:S(u).default(u.generic),identifier:d().trim().nonempty().nullable().optional(),name:d().trim().nonempty().optional(),description:d().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:O().optional(),roomId:d().uuid().nullable().optional()}),qe=()=>{let e=b(),{enabled:n}=f(),r=[`deviceAddForm`,`deviceEditForm`,`deviceWizard`],i=[`deviceAddForm`,`deviceEditForm`],a=[`deviceSchema`,`deviceAddFormSchema`,`deviceEditFormSchema`,`deviceCreateReqSchema`,`deviceUpdateReqSchema`],o=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`devices-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=a.length===0||!!e.schemas&&a.some(t=>e.schemas&&t in e.schemas);return t||n}):!1)),s=t(()=>p(o.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).filter(e=>{let t=!!e.components&&i.some(t=>e.components&&t in e.components),n=!!e.schemas&&a.some(t=>e.schemas&&t in e.schemas);return t||n}).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),c=t(()=>p(o.value.filter(e=>(e.elements??[]).some(e=>(e.modules===void 0||e.modules.includes(`devices-module`))&&!!e.components?.deviceWizard)).map(e=>({value:e.type,label:e.name,description:e.description,disabled:!n(e.type)})),[e=>e.label],[`asc`])),l=e=>o.value.find(t=>t.type===e);return{plugins:o,options:s,wizardOptions:c,getByPluginType:l,getByName:l,getByType:e=>o.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)))),getElement:e=>{for(let t of o.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},Je=({type:e})=>{let{getByType:n}=qe(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Ye=({id:t,type:n})=>{let s=C(),{element:c}=Je({type:n}),l=s.getStore(W),{t:d}=i(),f=F(),p=x(),m=r(j.NONE),h,g=Object.values(u).map(e=>({value:e,label:d(`devicesModule.categories.devices.${e}`)})),_=a({...U(c.value?.schemas?.deviceAddFormSchema||Ge),id:t,type:n,category:u.generic,name:``,description:``}),v=z(e(_)),y=r(void 0),b=r(!1),S=async()=>{if(y.value.clearValidate(),!await y.value.validate())throw new X(`Form not valid`);let e=(c.value?.schemas?.deviceAddFormSchema||Ge).safeParse(_);if(!e.success)throw p.error(`Schema validation failed with:`,e.error),new X(`Failed to validate create device model.`);m.value=j.WORKING;let r=d(`devicesModule.messages.devices.notCreated`,{device:_.name});try{await l.add({id:t,draft:!1,data:{...e.data,type:n}})}catch(e){throw m.value=j.ERROR,h=window.setTimeout(w,2e3),e instanceof Y&&e.code===422?f.error(e.message):f.error(r),e}return m.value=j.OK,h=window.setTimeout(w,2e3),f.success(d(`devicesModule.messages.devices.created`,{device:_.name})),`added`},w=()=>{window.clearTimeout(h),m.value=j.NONE};return o(_,()=>{b.value=!(0,q.isEqual)(e(_),v)}),{categoriesOptions:g,model:_,formEl:y,formChanged:b,submit:S,clear:w,formResult:m}},Xe=({device:t,messages:n})=>{let s=C(),{element:c}=Je({type:t.type}),l=s.getStore(W),{t:d}=i(),f=F(),p=x(),m=r(j.NONE),h,g=Object.values(u).map(e=>({value:e,label:d(`devicesModule.categories.devices.${e}`)})),_=a(t),v=z(e(_)),y=r(void 0),b=r(!1),S=async()=>{let r=t.draft,i=n&&n.error?n.error:t.draft?d(`devicesModule.messages.devices.notCreated`,{device:t.name}):d(`devicesModule.messages.devices.notEdited`,{device:t.name});if(y.value.clearValidate(),!await y.value.validate())throw new X(`Form not valid`);let a=(c.value?.schemas?.deviceEditFormSchema||Ke).safeParse(_);if(!a.success)throw p.error(`Schema validation failed with:`,a.error),new X(`Failed to validate edit device model.`);m.value=j.WORKING;try{await l.edit({id:t.id,data:{...a.data,type:t.type}}),t.draft&&await l.save({id:t.id})}catch(e){throw m.value=j.ERROR,h=window.setTimeout(w,2e3),e instanceof Y&&e.code===422?f.error(e.message):f.error(i),e}return m.value=j.OK,h=window.setTimeout(w,2e3),r?(f.success(d(n&&n.success?n.success:`devicesModule.messages.devices.created`,{device:t.name})),`added`):(f.success(d(n&&n.success?n.success:`devicesModule.messages.devices.edited`,{device:t.name})),b.value=!1,v=z(e(_)),`saved`)},w=()=>{window.clearTimeout(h),m.value=j.NONE};return o(_,()=>{b.value=!(0,q.isEqual)(e(_),v)}),{categoriesOptions:g,model:_,formEl:y,formChanged:b,submit:S,clear:w,formResult:m}},Ze=()=>{let e=C().getStore(te),{data:n,semaphore:r,firstLoad:i}=D(e);return{validation:t(()=>n.value),summary:t(()=>n.value?.summary??null),invalidDevices:t(()=>n.value?n.value.devices.filter(e=>!e.isValid):[]),isLoading:t(()=>r.value.fetching.items),isLoaded:t(()=>i.value),fetchValidation:async()=>{await e.fetch()},findById:t=>e.findById(t),isDeviceValid:t=>{let n=e.findById(t);return n?n.isValid:null},getDeviceIssueCount:t=>{let n=e.findById(t);return n?n.issues.length:0}}},Qe=({id:e})=>{let n=C().getStore(te),{semaphore:r}=D(n);return{validation:t(()=>n.findById(e)),isValid:t(()=>{let t=n.findById(e);return t?t.isValid:null}),issues:t(()=>{let t=n.findById(e);return t?t.issues:[]}),errorCount:t(()=>{let t=n.findById(e);return t?t.issues.filter(e=>e.severity===`error`).length:0}),warningCount:t(()=>{let t=n.findById(e);return t?t.issues.filter(e=>e.severity===`warning`).length:0}),isLoading:t(()=>r.value.fetching.item.includes(e)),fetchValidation:async()=>{await n.get({id:e})}}},$e=300,et=1e4,tt=({id:e})=>{let i=C(),a=i.getStore(W),s=i.getStore(K),c=i.getStore(G),{data:l,semaphore:u}=D(a),{data:d,semaphore:f,firstLoad:p}=D(s),{semaphore:m,firstLoad:h}=D(c),{sendCommand:g}=A(),_={},v={},b={},x=r({}),S=r({}),w=t(()=>e===null?null:l.value[e]??null),T=t(()=>Object.values(d.value).filter(t=>t.device===e&&t.category!==M.device_information)),E=t(()=>T.value.filter(e=>c.findForChannel(e.id).some(e=>e.permissions.includes(y.rw)||e.permissions.includes(y.wo)))),O=t(()=>E.value.length>0),k=e=>c.findForChannel(e),j=e=>e.permissions.includes(y.rw)||e.permissions.includes(y.wo),N=e=>{let t=x.value[e];return t===void 0?c.findById(e)?.value?.value??null:t},P=e=>S.value[e]??!1,F=(e,t)=>{if(t!==void 0){let n=x.value[e];if(n!==t&&String(n)!==String(t))return}delete x.value[e],b[e]&&(clearTimeout(b[e]),delete b[e])},I=(e,t)=>{b[e]&&clearTimeout(b[e]),b[e]=setTimeout(()=>{let n=x.value[e];(n===t||String(n)===String(t))&&delete x.value[e],delete b[e]},et)},R=async(t,n,r)=>c.findById(n)?(_[n]&&(clearTimeout(_[n]),delete _[n],v[n]&&(v[n](!1),delete v[n])),x.value[n]=r,new Promise(i=>{v[n]=i;let a=setTimeout(async()=>{delete v[n],S.value[n]=!0;try{await g(L.CHANNEL_PROPERTY_SET,{context:{origin:`admin`},properties:[{device:e,channel:t,property:n,value:r}]},`DevicesModule.Internal.SetPropertyValue`)===!0?(I(n,r),i(!0)):(F(n,r),i(!1))}catch{F(n,r),i(!1)}finally{S.value[n]=!1,_[n]===a&&delete _[n]}},$e);_[n]=a})):!1,z=async()=>{(e in l.value?l.value[e]:null)?.draft||await a.get({id:e})},B=async()=>{await s.fetch({deviceId:e})},V=async()=>{let t=Object.values(d.value).filter(t=>t.device===e);for(let e of t)await c.fetch({channelId:e.id})},H=t(()=>{if(u.value.fetching.item.includes(e)||f.value.fetching.items.includes(e))return!0;for(let e of T.value)if(m.value.fetching.items.includes(e.id))return!0;return!1}),U=t(()=>p.value.includes(e)),ee=t(()=>{if(!U.value)return!1;for(let e of T.value)if(!h.value.includes(e.id))return!1;return!0});return o(()=>{let e={};for(let t of Object.keys(x.value)){let n=c.findById(t);n&&(e[t]=n.value?.value??null)}return e},e=>{for(let[t,n]of Object.entries(x.value)){let r=e[t];(r===n||String(r)===String(n))&&F(t)}},{deep:!0}),n(()=>{for(let e of Object.keys(_))clearTimeout(_[e]),delete _[e],v[e]&&(v[e](!1),delete v[e]);for(let e of Object.keys(b))clearTimeout(b[e]),delete b[e]}),{device:w,channels:T,controllableChannels:E,hasControllableProperties:O,isLoading:H,areChannelsLoaded:U,arePropertiesLoaded:ee,fetchDevice:z,fetchChannels:B,fetchProperties:V,getPropertiesForChannel:k,isPropertyWritable:j,getPropertyValue:N,isPropertyLoading:P,setPropertyValue:R}},nt=({deviceId:e})=>{let n=C().getStore(ee),{firstLoad:r,semaphore:i}=D(n);return{controls:t(()=>n.findForDevice(e)),areLoading:t(()=>i.value.fetching.items.includes(e)),loaded:t(()=>r.value.includes(e)),fetchControls:async()=>n.fetch({deviceId:e})}},rt=e=>{let n=P(),i=x(),a=r({}),u=r(!1),d=r(!1),f=r(!1),p=r(void 0),m=r(!1),h=null,g=0,_=t(()=>Object.values(a.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),v=t(()=>{let e=[I.warn,I.error,I.fatal,I.fail];return _.value.filter(t=>e.includes(t.type))}),y=t(()=>v.value.length),b=t(()=>y.value>0),S=async()=>{let t=s(e.deviceId);h=t,g++;let r=g;d.value=!0;try{let{data:e,error:o}=await n.client.GET(`/${c}/${k}/logs`,{params:{query:{resource:t,limit:50}}});if(h!==t||g!==r)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=ne(e);return[t.id,t]}));a.value=t,f.value=!0,u.value=e.metadata.has_more,p.value=e.metadata.next_cursor}else o&&i.error(`Failed to fetch device logs:`,o)}catch(e){h===t&&g===r&&i.error(`Error fetching device logs:`,e)}finally{h===t&&g===r&&(d.value=!1)}},C=async()=>{if(d.value||!u.value||!p.value)return;let t=s(e.deviceId),r=p.value,o=g;d.value=!0;try{let{data:e,error:s}=await n.client.GET(`/${c}/${k}/logs`,{params:{query:{resource:t,after_id:r,limit:50}}});if(h!==t||g!==o)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=ne(e);return[t.id,t]}));a.value={...a.value,...t},u.value=e.metadata.has_more,p.value=e.metadata.next_cursor}else s&&i.error(`Failed to load more device logs:`,s)}catch(e){h===t&&g===o&&i.error(`Error loading more device logs:`,e)}finally{h===t&&g===o&&(d.value=!1)}},w=async()=>{a.value={},p.value=void 0,u.value=!1,f.value=!1,await S()},T=null;return o(()=>m.value,e=>{T&&=(clearInterval(T),null),e&&(T=setInterval(()=>{d.value||S()},3e3))}),l(()=>{T&&=(clearInterval(T),null)}),o(()=>s(e.deviceId),()=>{w()}),{logs:_,alertLogs:v,alertCount:y,hasAlerts:b,hasMore:u,isLoading:d,loaded:f,live:m,fetchLogs:S,loadMoreLogs:C,refreshLogs:w}};export{_e as A,J as B,je as C,Ee as D,De as E,oe as F,ae as I,ie as L,pe as M,fe as N,Te as O,de as P,re as R,Me as S,Oe as T,X as V,Re as _,Ze as a,Fe as b,Je as c,Ke as d,We as f,ze as g,Ve as h,Qe as i,be as j,xe as k,qe as l,He as m,nt as n,Xe as o,Ue as p,tt as r,Ye as s,rt as t,Ge as u,Le as v,ke as w,Ne as x,Pe as y,Y as z};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a,ji as o,ki as s}from"./icon-with-child-CgZMNB3F.js";import{$t as c,Cr as l,Dn as u,Fn as d,Ht as f,Kn as p,Kt as m,Mi as h,Pt as g,Rt as _,T as v,Ut as y,Wt as b,Xt as x,Yt as S,_r as C,b as w,br as T,c as E,cr as D,do as O,dr as k,p as A,qt as j,u as M,ur as N,wr as P,yr as F}from"./common-C6O7MWKy.js";import{t as I}from"./keys-DExX7OfU.js";import{a as L,u as R}from"./useSpaces-XFygVec-.js";import{a as z}from"./keys-DghNVBR5.js";var B=e=>{let n=w().getStore(c),{data:r,semaphore:i}=O(n);return{space:t(()=>e.value?r.value[e.value]??null:null),fetching:t(()=>e.value?i.value.fetching.item.includes(e.value):!1),fetchSpace:async()=>e.value?n.get({id:e.value}):null,editSpace:async t=>{if(!e.value)throw Error(`Space ID is required`);return n.edit({id:e.value,data:t})},removeSpace:async()=>{if(!e.value)throw Error(`Space ID is required`);return n.remove({id:e.value})}}},V=p(),H=T({search:l().optional(),types:N(l())}),U=T({name:l().min(1),description:l().nullable().optional(),category:P([C(f),C(b)]).nullable().optional(),icon:l().nullable().optional(),displayOrder:F().int().min(0).default(0),parentId:l().uuid().nullable().optional()}),W=U.extend({id:l().uuid(),type:D([y.ROOM,y.ZONE]).default(y.ROOM)}),G=U.extend({id:l().uuid(),type:C(y),suggestionsEnabled:k().default(!0),statusWidgets:N(L).nullable().optional()}),K=({id:t,type:o})=>{let s=w().getStore(c),{t:l}=r(),u=A(),d=n(g.NONE),f=n(null),p,m=i({id:t,type:o??y.ROOM,name:``,description:null,category:null,icon:null,displayOrder:0,parentId:null}),h=M(e(m)),_=n(void 0),v=n(!1),b=async()=>{if(_.value.clearValidate(),!await _.value.validate())throw Error(`Form not valid`);let e=W.safeParse(m);if(!e.success)throw Error(`Failed to validate create space model.`);d.value=g.WORKING;let n=l(`spacesModule.messages.notCreated`,{space:m.name});try{f.value=await s.add({id:t,data:{name:e.data.name,type:e.data.type,category:e.data.category??null,description:e.data.description??null,icon:e.data.icon??null,displayOrder:e.data.displayOrder,parentId:e.data.parentId??null}})}catch(e){throw d.value=g.ERROR,f.value=null,p=window.setTimeout(x,2e3),u.error(n),e}return d.value=g.OK,p=window.setTimeout(x,2e3),u.success(l(`spacesModule.messages.created`,{space:m.name})),`added`},x=()=>{window.clearTimeout(p),d.value=g.NONE,f.value=null};return a(m,()=>{v.value=!(0,V.isEqual)(e(m),h)}),{model:m,formEl:_,formChanged:v,submit:b,clear:x,formResult:d,createdSpace:f}};function q(e){let n=e=>{let t=m(e);return e===y.ROOM?[...t].sort((e,t)=>e.localeCompare(t)):t},r=e=>{let t=j(e);return t&&t.length>0?t:null};return{getCategoryOptions:n,getCategoryGroups:r,getCategoryTemplates:e=>S(e),categoryOptions:t(()=>{let t=o(e)??y.ROOM;return n(t)}),categoryGroups:t(()=>{let t=o(e)??y.ROOM;return r(t)}),currentTemplates:t(()=>S(o(e)??y.ROOM))}}var J=(e,r)=>{let i=w(),a=i.getStore(z),o=i.getStore(c),{semaphore:s,firstLoad:l}=O(a),u=n(!1);return{devices:t(()=>{if(!e.value||!r.value)return[];let t=a.findAll().filter(e=>!e.draft),n;return n=r.value===y.ROOM?t.filter(t=>t.roomId===e.value):t.filter(t=>t.zoneIds.includes(e.value)),n.sort((e,t)=>e.name.localeCompare(t.name))}),loading:t(()=>!!(u.value||s.value.fetching.items||!l.value)),firstLoadFinished:t(()=>l.value),fetchDevices:async()=>{await a.fetch()},addDevice:async t=>{if(!e.value||!r.value)throw Error(`Space ID and type are required`);u.value=!0;try{if(r.value===y.ROOM){let n=a.findById(t);if(!n)throw Error(`Device not found`);await a.edit({id:t,data:{type:n.type,roomId:e.value}})}else{let n=o.findById(e.value);if(n&&x(n.category))throw Error(`Cannot assign devices to floor zones. Floor membership is derived from room assignment.`);await a.addZone({id:t,zoneId:e.value})}}finally{u.value=!1}},removeDevice:async t=>{if(!e.value||!r.value)throw Error(`Space ID and type are required`);u.value=!0;try{if(r.value===y.ROOM){let e=a.findById(t);if(!e)throw Error(`Device not found`);await a.edit({id:t,data:{type:e.type,roomId:null}})}else await a.removeZone({id:t,zoneId:e.value})}finally{u.value=!1}},reassignDevice:async(e,t)=>{u.value=!0;try{let n=a.findById(e);if(!n)throw Error(`Device not found`);await a.edit({id:e,data:{type:n.type,roomId:t}})}finally{u.value=!1}}}},Y=e=>{let r=w().getStore(I),i=n(!1);return{displays:t(()=>e.value?r.findAll().filter(t=>t.spaceId===e.value).sort((e,t)=>(e.name||e.macAddress).localeCompare(t.name||t.macAddress)):[]),loading:t(()=>i.value?!0:r.fetching()),fetchDisplays:async()=>{await r.fetch()},reassignDisplay:async(e,t)=>{i.value=!0;try{await r.edit({id:e,data:{spaceId:t}})}finally{i.value=!1}},removeDisplay:async e=>{i.value=!0;try{await r.edit({id:e,data:{spaceId:null}})}finally{i.value=!1}}}},X=({space:t})=>{let o=()=>`value`in t?t.value:t,s=o(),l=w().getStore(c),{t:u}=r(),d=A(),f=n(g.NONE),p,m=i({id:s.id,type:s.type,name:s.name,description:s.description,category:s.category,icon:s.icon,displayOrder:s.displayOrder,parentId:s.parentId,suggestionsEnabled:s.suggestionsEnabled,statusWidgets:s.statusWidgets?[...s.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null}),h=M(e(m)),_=n(void 0),v=n(!1),y=async()=>{if(_.value.clearValidate(),!await _.value.validate())throw Error(`Form not valid`);let t=G.safeParse(m);if(!t.success)throw Error(`Failed to validate edit space model.`);f.value=g.WORKING;let n=u(`spacesModule.messages.notEdited`,{space:m.name});try{await l.edit({id:s.id,data:{name:t.data.name,type:t.data.type,category:t.data.category??null,description:t.data.description??null,icon:t.data.icon??null,displayOrder:t.data.displayOrder,parentId:t.data.parentId??null,suggestionsEnabled:t.data.suggestionsEnabled,statusWidgets:t.data.statusWidgets??null}})}catch(e){throw f.value=g.ERROR,p=window.setTimeout(b,2e3),d.error(n),e}return f.value=g.OK,p=window.setTimeout(b,2e3),v.value=!1,h=M(e(m)),`saved`},b=()=>{window.clearTimeout(p),f.value=g.NONE};return a(m,()=>{v.value=!(0,V.isEqual)(e(m),h)}),a(()=>o(),t=>{t&&(m.id=t.id,m.type=t.type,m.name=t.name,m.description=t.description,m.category=t.category,m.icon=t.icon,m.displayOrder=t.displayOrder,m.parentId=t.parentId,m.suggestionsEnabled=t.suggestionsEnabled,m.statusWidgets=t.statusWidgets?[...t.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null,h=M(e(m)),v.value=!1)},{deep:!0}),{model:m,formEl:_,formChanged:v,submit:y,clear:b,formResult:f}},Z=()=>{let{t:e}=r(),t=A(),n=w().getStore(c);return{remove:async r=>{let i=n.findById(r);return i?h.confirm(e(`spacesModule.messages.confirmRemove`,{name:i.name}),e(`spacesModule.headings.removeSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{return await n.remove({id:r}),t.success(e(`spacesModule.messages.removed`,{space:i.name})),!0}catch(e){return e instanceof R&&t.error(e.message),!1}}).catch(()=>(t.info(e(`spacesModule.messages.removeCanceled`,{space:i.name})),!1)):(t.error(e(`spacesModule.messages.notFound`)),!1)},bulkRemove:async r=>{if(r.length!==0)try{await h.confirm(e(`spacesModule.messages.confirmBulkRemove`,{count:r.length}),e(`spacesModule.headings.bulkRemoveSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`spacesModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`spacesModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},Q={search:void 0,types:[]},ee={by:`name`,dir:`asc`},te=()=>{let e=w().getStore(c),{firstLoad:r,semaphore:i}=O(e),{filters:o,sort:s,pagination:l,reset:u}=E({key:`${_}:spaces:list`,filters:{schema:H,defaults:Q},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:2}),f=t(()=>o.value.search!==Q.search||!(0,V.isEqual)(o.value.types,Q.types)),p=n(l.value.size||10),m=n(l.value.page||1),h=n(s.value.length>0?s.value[0]?.by:void 0),g=n(s.value.length>0?s.value[0]?.dir??null:null),v=t(()=>d(e.findAll().filter(e=>!e.draft&&(!o.value.search||e.id.toLowerCase().includes(o.value.search.toLowerCase())||e.name?.toLowerCase().includes(o.value.search.toLowerCase())||e.description?.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))),[e=>{switch(h.value){case`name`:return e.name;case`type`:return e.type;case`displayOrder`:return e.displayOrder;default:return e.displayOrder}}],[g.value??`asc`])),y=t(()=>{let e=(m.value-1)*p.value,t=e+p.value;return v.value.slice(e,t)}),b=async()=>{await e.fetch()},x=t(()=>!!(i.value.fetching.items||!r.value)),S=t(()=>r.value),C=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>l.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),a(()=>m.value,e=>{l.value.page=e}),a(()=>p.value,e=>{l.value.size=e}),a(()=>g.value,e=>{h.value===void 0||e===null?s.value=[]:s.value=[{by:h.value,dir:e}]}),a(()=>h.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:g.value}]}),{spaces:v,spacesPaginated:y,totalRows:C,areLoading:x,loaded:S,fetchSpaces:b,filters:o,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:u}},$=()=>{let e=v(),{enabled:n}=u(),{t:i,te:a}=r(),o=[`spaceDetail`,`spaceAddForm`,`spaceEditForm`,`spaceWizard`],s=[`spaceDetail`,`spaceAddForm`,`spaceEditForm`],c=[`spaceSchema`,`spaceAddFormSchema`,`spaceEditFormSchema`,`spaceCreateReqSchema`,`spaceUpdateReqSchema`],l=[`configure`],f=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`spaces-module`)?l.length>0&&l.some(t=>e.routes&&t in e.routes)?!0:(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`spaces-module`)))return!1;let t=o.length===0||!!e.components&&o.some(t=>e.components&&t in e.components),n=c.length===0||!!e.schemas&&c.some(t=>e.schemas&&t in e.schemas);return t||n}):!1)),p=e=>a(e)?i(e):e;return{plugins:f,options:t(()=>d(f.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`spaces-module`)).filter(e=>{let t=!!e.components&&s.some(t=>e.components&&t in e.components),n=!!e.schemas&&c.some(t=>e.schemas&&t in e.schemas);return t||n}).map(t=>({value:t.type,label:t.name?.trim()?p(t.name):p(e.name),disabled:!n(e.type)}))),[e=>e.label],[`asc`])),wizardOptions:t(()=>d(f.value.filter(e=>(e.elements??[]).some(e=>(e.modules===void 0||e.modules.includes(`spaces-module`))&&!!e.components?.spaceWizard)).map(e=>({value:e.type,label:p(e.name),description:e.description,disabled:!n(e.type)})),[e=>e.label],[`asc`])),getByPluginType:e=>f.value.find(t=>t.type===e),getByType:e=>f.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`spaces-module`)))),getElement:e=>{for(let t of f.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`spaces-module`)));if(n)return n}}}},ne=({type:e})=>{let{getByType:n}=$(),r=t(()=>n(s(e)));return{plugin:r,element:t(()=>{let t=s(e);return(r.value?.elements??[]).find(e=>e.type===t&&(e.modules===void 0||e.modules.includes(`spaces-module`)))})}};export{X as a,q as c,G as d,B as f,Z as i,K as l,$ as n,Y as o,te as r,J as s,ne as t,W as u};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Gr as n,Si as r,T as i,bi as a,ci as o}from"./icon-with-child-CgZMNB3F.js";import{Cr as s,Dn as c,Fn as l,Jt as u,Kn as d,Mi as f,Sr as p,T as m,Tr as h,Ut as g,_,_r as v,b as y,br as b,c as x,cr as S,do as C,dr as w,hr as T,p as E,qr as D,u as O,ur as k,wr as A,yr as j}from"./common-C6O7MWKy.js";import{t as ee}from"./useSpaces-XFygVec-.js";import"./composables-CFfboRzY.js";var M=`scenes`,N=`scenes-module`,P=`ScenesModule.`,F=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerScene`,e}({}),I=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerSceneHandler`,e}({}),L=function(e){return e.SCENE_CREATED=`ScenesModule.Scene.Created`,e.SCENE_UPDATED=`ScenesModule.Scene.Updated`,e.SCENE_DELETED=`ScenesModule.Scene.Deleted`,e.SCENE_TRIGGERED=`ScenesModule.Scene.Triggered`,e.SCENE_EXECUTION_STARTED=`ScenesModule.Scene.ExecutionStarted`,e.SCENE_EXECUTION_COMPLETED=`ScenesModule.Scene.ExecutionCompleted`,e.SCENE_EXECUTION_FAILED=`ScenesModule.Scene.ExecutionFailed`,e.SCENE_ACTION_CREATED=`ScenesModule.SceneAction.Created`,e.SCENE_ACTION_UPDATED=`ScenesModule.SceneAction.Updated`,e.SCENE_ACTION_DELETED=`ScenesModule.SceneAction.Deleted`,e}({}),R=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),z={SCENES:`scenes_module-scenes`,SCENES_ADD:`scenes_module-scenes_add`,SCENES_EDIT:`scenes_module-scenes_edit`,SCENE:`scenes_module-scene`,SCENE_EDIT:`scenes_module-scene_edit`,SCENE_ADD_ACTION:`scenes_module-scene_add_action`,SCENE_EDIT_ACTION:`scenes_module-scene_edit_action`},B={[D.generic]:`mdi:playlist-play`,[D.lighting]:`mdi:lightbulb-group`,[D.climate]:`mdi:thermostat`,[D.media]:`mdi:television-play`,[D.work]:`mdi:briefcase`,[D.relax]:`mdi:sofa`,[D.night]:`mdi:weather-night`,[D.morning]:`mdi:weather-sunset-up`,[D.party]:`mdi:party-popper`,[D.movie]:`mdi:movie-open`,[D.away]:`mdi:home-export-outline`,[D.home]:`mdi:home-import-outline`,[D.security]:`mdi:shield-home`,[D.energy]:`mdi:flash`,[D.custom]:`mdi:shape-outline`},V=b({search:s().optional(),categories:k(v(D)),primarySpaceId:A([s().uuid(),T(`whole_home`)]).optional(),enabled:S([`all`,`enabled`,`disabled`]).default(`all`)}),H=Symbol(`FB-Module-Scenes-ScenesStore`),U=Symbol(`FB-Module-Scenes-ScenesActionsStore`),W=({id:e})=>{let n=y(),r=n.getStore(H),i=n.getStore(U),{data:a,semaphore:o}=C(r);return{scene:t(()=>e===null?null:a.value.get(e)??null),isLoading:t(()=>o.value.fetching.item.includes(e)?!0:a.value.get(e)===void 0&&o.value.fetching.items),fetchScene:async()=>{a.value.get(e)?.draft||(await r.get({id:e}),await i.fetch({sceneId:e}))}}},G=d(),K=b({id:s().uuid().optional(),type:s().trim().nonempty(),configuration:p(s(),h()).default({}),order:j().int().min(0).optional(),enabled:w().default(!0)}).catchall(h());b({id:s().uuid(),type:s().trim().nonempty(),configuration:p(s(),h()).optional(),order:j().int().min(0).optional(),enabled:w().optional()}).catchall(h());var q=b({id:s().uuid().optional(),name:s().trim().nonempty(),description:s().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(D).default(D.generic),icon:s().nullable().optional(),enabled:w().default(!0),order:j().optional(),primarySpaceId:s().uuid().nullable().optional().transform(e=>e===``?null:e),actions:k(K).default([])}),J=b({id:s().uuid(),name:s().trim().nonempty().optional(),description:s().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(D).optional(),icon:s().nullable().optional(),enabled:w().optional(),order:j().optional(),primarySpaceId:s().uuid().nullable().optional().transform(e=>e===``?null:e),actions:k(K).default([])}),Y=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ScenesException`,this.exception=t}},X=class extends Y{code;constructor(e,t=null,n=null){super(e,n),this.name=`ScenesApiException`,this.code=t}},Z=class extends Y{constructor(e,t=null){super(e,t),this.name=`ScenesValidationException`}},te=()=>{let e=m(),{enabled:n}=c(),r=[`sceneActionAddForm`,`sceneActionEditForm`,`sceneActionCard`],i=[`sceneActionSchema`,`sceneActionAddFormSchema`,`sceneActionEditFormSchema`,`sceneActionCreateReqSchema`,`sceneActionUpdateReqSchema`],a=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`scenes-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`scenes-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return t||n}):!1));return{plugins:a,options:t(()=>l(a.value.flatMap(e=>(e.elements??[]).filter(e=>{let t=e.modules===void 0||e.modules.includes(`scenes-module`),n=!!e.components&&r.some(t=>e.components&&t in e.components);return t&&n}).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)));if(n)return n}}}},ne=({id:n})=>{let s=y(),c=s.getStore(H),l=s.getStore(U),{t:d}=i(),f=E(),p=_(),{spaces:m,fetching:h,fetchSpaces:v}=ee(),b=r(R.NONE),x,S=t(()=>Object.values(D).map(e=>({value:e,label:d(`scenes.categories.${e}`),icon:B[e]}))),C=t(()=>{let e=m.value.filter(e=>e.type===g.ROOM).map(e=>({value:e.id,label:e.name,icon:u(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=m.value.filter(e=>e.type===g.ZONE).map(e=>({value:e.id,label:e.name,icon:u(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:g.ROOM,label:d(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:g.ZONE,label:d(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),w=a({id:n,category:D.generic,name:``,description:null,icon:null,enabled:!0,primarySpaceId:null,actions:[]}),{options:T,getElement:k}=te(),A=e=>{let t=e.propertyId;return t&&w.actions.find(e=>e.propertyId===t)?(f.warning(d(`scenes.messages.duplicateAction`)),!1):(w.actions.push(e),!0)},j=e=>{w.actions.splice(e,1)},M=(e,t)=>{e>=0&&e<w.actions.length&&(w.actions[e]=t)},N=e=>k(e)?.components?.sceneActionCard??null,P=e=>k(e)?.components?.sceneActionAddForm??null,F=e=>k(e)?.components?.sceneActionEditForm??null,I=e=>T.value.find(t=>t.value===e)?.label??e,L=O(e(w)),z=r(void 0),V=r(!1),W=async(e,t)=>{try{for(let n=0;n<t.length;n++){let r=t[n];r&&await l.add({sceneId:e,data:{...r,order:n,enabled:r.enabled??!0}})}}catch(e){throw p.error(`Error syncing scene actions:`,e),e}},K=async()=>{if(z.value.clearValidate(),!await z.value.validate())throw new Z(`Form not valid`);let e=q.safeParse(w);if(!e.success)throw p.error(`Schema validation failed with:`,e.error),new Z(`Failed to validate create scene model.`);b.value=R.WORKING;let t=d(`scenes.messages.createFailed`);try{let t=await c.add({id:n,draft:!1,data:e.data});e.data.actions.length>0&&await W(t.id,e.data.actions)}catch(e){throw b.value=R.ERROR,x=window.setTimeout(J,2e3),e instanceof X&&e.code===422?f.error(e.message):f.error(t),e}return b.value=R.OK,x=window.setTimeout(J,2e3),f.success(d(`scenes.messages.created`)),`added`},J=()=>{window.clearTimeout(x),b.value=R.NONE};return o(w,()=>{V.value=!(0,G.isEqual)(e(w),L)}),{categoriesOptions:S,spacesOptionsGrouped:C,model:w,formEl:z,formChanged:V,submit:K,clear:J,formResult:b,loadingSpaces:h,fetchSpaces:v,actionPluginOptions:T,addAction:A,removeAction:j,updateAction:M,getActionCardComponent:N,getActionFormComponent:P,getActionEditFormComponent:F,getPluginLabel:I}},re=({scene:s,messages:c})=>{let l=y(),d=l.getStore(H),f=l.getStore(U),{t:p}=i(),m=E(),h=_(),{spaces:v,fetching:b,fetchSpaces:x}=ee(),S=r(R.NONE),C=t(()=>f.findForScene(s.id)),w=r(O(C.value)),T,k=t(()=>Object.values(D).map(e=>({value:e,label:p(`scenes.categories.${e}`),icon:B[e]}))),A=t(()=>{let e=v.value.filter(e=>e.type===g.ROOM).map(e=>({value:e.id,label:e.name,icon:u(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=v.value.filter(e=>e.type===g.ZONE).map(e=>({value:e.id,label:e.name,icon:u(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:g.ROOM,label:p(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:g.ZONE,label:p(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),j=t(()=>C.value.map(e=>({...e}))),M=a({id:s.id,category:s.category,name:s.name,description:s.description,icon:s.icon,enabled:s.enabled,primarySpaceId:s.primarySpaceId,actions:j.value}),{options:N,getElement:P}=te(),F=e=>{let t=e.propertyId;return t&&M.actions.find(e=>e.propertyId===t)?(m.warning(p(`scenes.messages.duplicateAction`)),!1):(M.actions.push(e),!0)},I=e=>{M.actions.splice(e,1)},L=(e,t)=>{e>=0&&e<M.actions.length&&(M.actions[e]=t)},z=e=>P(e)?.components?.sceneActionCard??null,V=e=>P(e)?.components?.sceneActionAddForm??null,W=e=>P(e)?.components?.sceneActionEditForm??null,K=e=>N.value.find(t=>t.value===e)?.label??e,q=r(void 0),Y=r(!1),ne=O(e(M)),re=async(e,t)=>{try{let n=new Set(w.value.map(e=>e.id)),r=new Set(t.filter(e=>e.id).map(e=>e.id));for(let t of w.value)r.has(t.id)||await f.remove({id:t.id,sceneId:e});let i=new Map;for(let r=0;r<t.length;r++){let a=t[r];if(!a)continue;let o=a.id;if(!o||!n.has(o)){let t=await f.add({sceneId:e,data:{...a,order:r,enabled:a.enabled??!0}});i.set(r,t.id)}else{let t=w.value.find(e=>e.id===o);if(t){let n=new Set([`id`,`draft`,`createdAt`,`updatedAt`,`scene`]),i=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)));(0,G.isEqual)(i(t),{...i(a),order:r})||await f.edit({id:o,sceneId:e,data:{...a,order:r}})}}}for(let[e,t]of i){let n=M.actions[e];n&&(n.id=t)}w.value=O(f.findForScene(e))}catch(e){throw h.error(`Error syncing scene actions:`,e),e}},ie=async()=>{let t=s.draft,n=c&&c.error?c.error:s.draft?p(`scenes.messages.createFailed`):p(`scenes.messages.editFailed`,{scene:s.name});if(q.value.clearValidate(),!await q.value.validate())throw new Z(`Form not valid`);let r=J.safeParse(M);if(!r.success)throw h.error(`Schema validation failed with:`,r.error),new Z(`Failed to validate edit scene model.`);S.value=R.WORKING;try{await d.edit({id:s.id,data:r.data});let e=s.id;if(t){let t=await d.save({id:s.id});M.id=t.id,M.category=t.category,M.name=t.name,M.description=t.description,M.icon=t.icon,M.enabled=t.enabled,M.primarySpaceId=t.primarySpaceId,e=t.id}await re(e,r.data.actions)}catch(e){throw S.value=R.ERROR,T=window.setTimeout(Q,2e3),e instanceof X&&e.code===422?m.error(e.message):e instanceof Z||(m.error(n),h.error(`Scene edit failed:`,e)),e}return S.value=R.OK,T=window.setTimeout(Q,2e3),t?(m.success(p(c&&c.success?c.success:`scenes.messages.created`)),`added`):(m.success(p(c&&c.success?c.success:`scenes.messages.edited`,{scene:s.name})),Y.value=!1,ne=O(e(M)),`saved`)},Q=()=>{window.clearTimeout(T),S.value=R.NONE};return o(M,()=>{Y.value=!(0,G.isEqual)(e(M),ne)}),n(()=>{Q()}),{categoriesOptions:k,spacesOptionsGrouped:A,model:M,formEl:q,formChanged:Y,submit:ie,clear:Q,formResult:S,loadingSpaces:b,fetchSpaces:x,actionPluginOptions:N,addAction:F,removeAction:I,updateAction:L,getActionCardComponent:z,getActionFormComponent:V,getActionEditFormComponent:W,getPluginLabel:K}},ie=({id:e})=>{let n=y().getStore(H);return{icon:t(()=>{let t=n.findById(e);return t?.icon?t.icon:t?.category&&t.category in B?B[t.category]:B[D.generic]})}},Q=()=>{let e=y().getStore(H),{data:n,semaphore:r,firstLoad:i}=C(e);return{scenes:t(()=>Array.from(n.value.values()).sort((e,t)=>e.name.localeCompare(t.name))),fetching:t(()=>r.value.fetching.items),loaded:t(()=>i.value),fetchScenes:async()=>e.fetch(),getScene:async t=>e.get({id:t}),findById:t=>e.findById(t),findBySpace:t=>e.findBySpace(t),triggerScene:async(t,n)=>{await e.trigger({id:t,source:n})},removeScene:async t=>{await e.remove({id:t})}}},ae=()=>{let{t:e}=i(),t=E(),n=y().getStore(H);return{addScene:async e=>n.add(e),editScene:async e=>n.edit(e),removeScene:async e=>{await n.remove({id:e})},bulkRemove:async r=>{if(r.length!==0)try{await f.confirm(e(`scenes.texts.confirmBulkRemove`,{count:r.length}),e(`scenes.headings.bulkRemove`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkRemoveFailed`,{count:a}))}catch{}},bulkEnable:async r=>{if(r.length!==0)try{await f.confirm(e(`scenes.texts.confirmBulkEnable`,{count:r.length}),e(`scenes.headings.bulkEnable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`info`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!0}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkEnabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkEnableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkEnableCanceled`))}},bulkDisable:async r=>{if(r.length!==0)try{await f.confirm(e(`scenes.texts.confirmBulkDisable`,{count:r.length}),e(`scenes.headings.bulkDisable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!1}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkDisabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkDisableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkDisableCanceled`))}}}},$={search:void 0,categories:[],primarySpaceId:void 0,enabled:`all`},oe={by:`name`,dir:`asc`},se=()=>{let e=y().getStore(H),{firstLoad:n,semaphore:i}=C(e),{filters:a,sort:s,pagination:c,reset:u}=x({key:`${N}:scenes:list`,filters:{schema:V,defaults:$},sort:{defaults:[oe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),d=t(()=>a.value.search!==$.search||!(0,G.isEqual)(a.value.categories,$.categories)||a.value.primarySpaceId!==$.primarySpaceId||a.value.enabled!==$.enabled),f=r(c.value.size||10),p=r(c.value.page||1),m=r(s.value.length>0?s.value[0]?.by:void 0),h=r(s.value.length>0?s.value[0]?.dir??null:null),g=(e,t)=>t?t===`whole_home`?!e:e===t:!0,_=t(()=>{let t=e.findAll().filter(e=>!e.draft&&(!a.value.search||e.id.toLowerCase().includes(a.value.search.toLowerCase())||e.name.toLowerCase().includes(a.value.search.toLowerCase())||e.description?.toLowerCase().includes(a.value.search.toLowerCase()))&&(a.value.categories.length===0||a.value.categories.includes(e.category))&&g(e.primarySpaceId,a.value.primarySpaceId)&&(a.value.enabled===`all`||a.value.enabled===`enabled`&&e.enabled||a.value.enabled===`disabled`&&!e.enabled)),n=m.value??`order`;return l(t,[e=>e[n]??``],[h.value??`asc`])}),v=t(()=>{let e=(p.value-1)*f.value,t=e+f.value;return _.value.slice(e,t)}),b=async()=>{await e.fetch()},S=t(()=>i.value.fetching.items||!n.value),w=t(()=>n.value),T=t(()=>e.findAll().filter(e=>!e.draft).length);return o(()=>c.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),o(()=>p.value,e=>{c.value.page=e}),o(()=>f.value,e=>{c.value.size=e}),o(()=>h.value,e=>{m.value===void 0||e===null?s.value=[]:s.value=[{by:m.value,dir:e}]}),o(()=>m.value,e=>{e===void 0||h.value===null?s.value=[]:s.value=[{by:e,dir:h.value}]}),o(()=>a.value,()=>{p.value=1},{deep:!0}),{scenes:_,scenesPaginated:v,totalRows:T,areLoading:S,loaded:w,fetchScenes:b,filters:a,filtersActive:d,paginateSize:f,paginatePage:p,sortBy:m,sortDir:h,resetFilter:u}};export{z as _,re as a,M as b,Y as c,U as d,H as f,R as g,L as h,ie as i,Z as l,F as m,ae as n,ne as o,I as p,Q as r,X as s,se as t,W as u,P as v,B as x,N as y};
@@ -0,0 +1 @@
1
+ import{Er as e}from"./icon-with-child-CgZMNB3F.js";import{b as t,do as n,on as r}from"./common-C6O7MWKy.js";import"./usePersonalTokens-BqXxMus4.js";var i=()=>{let i=t().getStore(r),{profile:a}=n(i);return{profile:e(()=>a.value),isSignedIn:e(()=>i.isSignedIn())}};export{i as t};
@@ -0,0 +1 @@
1
+ import"./composables-DRljO7YE.js";
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a,n as o}from"./icon-with-child-CgZMNB3F.js";import{Cr as s,Dn as c,Fn as l,Kn as u,Mi as d,Ot as f,T as p,Tr as m,Tt as h,_ as g,a as _,b as v,br as y,do as b,dr as x,fr as S,gr as C,kt as w,m as T,p as E,qn as D,u as O,ur as k,wr as A,yr as j}from"./common-C6O7MWKy.js";import{i as M,l as N,n as P,o as F,s as I}from"./useLocation-DC_SbRoS.js";var L=()=>{let e=v().getStore(I),{data:n,semaphore:r}=b(e);return{weatherDay:t(()=>n.value),isLoading:t(()=>n.value===null&&r.value.getting),fetchWeatherDay:async()=>{await e.get()}}},R=()=>{let e=v().getStore(N),{firstLoad:n,semaphore:r}=b(e);return{locations:t(()=>e.findAll().filter(e=>!e.draft)),areLoading:t(()=>r.value.fetching.items),loaded:t(()=>n.value),fetchLocations:async()=>{await e.fetch()}}},z={search:void 0,types:[],primary:`all`},B=()=>{let e=v().getStore(N),{firstLoad:r,semaphore:i}=b(e),{configModule:o}=D({type:f}),s=t(()=>o.value?.primaryLocationId??null),c=n(10),u=n(1),d=n({...z}),p=t(()=>d.value.search!==z.search||d.value.types.length>0||d.value.primary!==z.primary),m=n(`name`),h=n(`ascending`),g=t(()=>{let t=e.findAll().filter(e=>!(e.draft||d.value.search&&!e.name.toLowerCase().includes(d.value.search.toLowerCase())||d.value.types.length>0&&!d.value.types.includes(e.type)||d.value.primary===`primary`&&e.id!==s.value||d.value.primary===`secondary`&&e.id===s.value));return h.value===null?t:l(t,[e=>e[m.value]??``],[h.value===`ascending`?`asc`:`desc`])}),_=t(()=>{let e=(u.value-1)*c.value,t=e+c.value;return g.value.slice(e,t)}),y=async()=>{await e.fetch()},x=t(()=>i.value.fetching.items||!r.value),S=t(()=>r.value),C=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>d.value,()=>{u.value=1},{deep:!0}),{locations:g,locationsPaginated:_,totalRows:C,areLoading:x,loaded:S,fetchLocations:y,filters:d,filtersActive:p,paginateSize:c,paginatePage:u,sortBy:m,sortDir:h,resetFilter:()=>{d.value={...z}},primaryLocationId:s}},V=()=>{let e=T(),r=g(),i=n({}),a=n(!1),s=n(!1),c=n(!1);return{weatherByLocation:t(()=>i.value),isLoading:a,hasError:s,fetchCompleted:c,fetchLocationsWeather:async()=>{if(!a.value){a.value=!0,s.value=!1;try{let{data:t,error:n,response:a}=await e.client.GET(`/${o}/${w}/weather`,{});if(t!==void 0&&Array.isArray(t.data)){let e={};for(let n of t.data)if(n.location_id)try{let t=P(n.current),r=n.location;e[n.location_id]={current:t,locationName:r?.name??``,country:r?.country??null}}catch(e){r.error(`[WEATHER] Failed to transform weather data for location ${n.location_id}`,e)}i.value=e,Object.keys(e).length===0&&(s.value=!0);return}let c=`Failed to fetch locations weather.`;throw n&&(c=n.message??c),new M(c,a?.status??500)}catch(e){if(s.value=!0,e instanceof M)throw e;r.error(`[WEATHER] Failed to fetch locations weather`,e)}finally{a.value=!1,c.value=!0}}}}},H=()=>{let{t:e}=r(),t=E(),n=v().getStore(N);return{add:async e=>n.add(e),edit:async e=>n.edit(e),remove:async r=>{let i=n.findById(r);if(i)try{await d.confirm(e(`weatherModule.messages.locations.confirmDeleteLocation`,{name:i.name}),e(`weatherModule.headings.deleteLocation`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});try{await n.remove({id:r}),t.success(e(`weatherModule.messages.locations.deleted`))}catch{t.error(e(`weatherModule.messages.locations.notDeleted`))}}catch{t.info(e(`weatherModule.messages.locations.deleteCanceled`,{location:i.name}))}},bulkRemove:async r=>{if(r.length!==0)try{await d.confirm(e(`weatherModule.messages.locations.confirmBulkDelete`,{count:r.length}),e(`weatherModule.headings.bulkDeleteLocations`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`weatherModule.messages.locations.bulkDeleted`,{count:i})),a>0&&t.error(e(`weatherModule.messages.locations.bulkDeleteFailed`,{count:a}))}catch{t.info(e(`weatherModule.messages.locations.bulkDeleteCanceled`))}}}},U=u(),W=s().uuid(),G=y({id:W,draft:x().default(!1),type:s().trim().nonempty(),name:s().trim().nonempty(),order:j().int().nonnegative().default(0),createdAt:A([s().datetime({offset:!0}),S()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:A([s().datetime({offset:!0}),S()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)}).catchall(m());y({fetching:y({items:x().default(!1),item:k(W)}),creating:k(W),updating:k(W),deleting:k(W)}),y({id:W,type:s().trim().nonempty(),data:C({})}),y({id:W,data:y({type:s().trim().nonempty(),name:s().trim().nonempty()}).catchall(m())}),y({id:W}),y({id:W});var K=y({id:W.optional().default(_()),draft:x().optional().default(!1),data:y({type:s().trim().nonempty(),name:s().trim().nonempty()}).catchall(m())}),q=y({id:W,data:y({type:s().trim().nonempty(),name:s().trim().optional()}).catchall(m())});y({id:W}),y({id:W});var J=y({id:s().uuid().optional(),type:s().trim().nonempty(),name:s().trim().nonempty()}).passthrough(),Y=y({type:s().trim().nonempty(),name:s().trim().nonempty().optional()}).passthrough();y({id:s().uuid(),type:s(),name:s().trim().nonempty(),created_at:s(),updated_at:s().nullable().optional()}),y({id:W,type:s().trim().nonempty(),name:s().trim().min(1,`Name is required`)});var X=y({name:s().trim().min(1,`Name is required`)}),Z=G,Q=J,ee=Y,te=({id:t})=>{let o=v().getStore(N),{t:s}=r(),c=E(),l=g(),u=n(h.NONE),d,f=i({name:o.findById(t.value)?.name??``}),p=O(e(f)),m=n(void 0),_=n(!1),y=async()=>{if(m.value.clearValidate(),!await m.value.validate())throw new F(`Form not valid`);let n=X.safeParse(f);if(!n.success)throw l.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new F(`Failed to validate update location model.`);u.value=h.WORKING;let r=o.findById(t.value);if(!r)throw new F(`Location not found.`);let i=s(`weatherModule.messages.locations.notUpdated`,{location:f.name});try{await o.edit({id:t.value,data:{type:r.type,...n.data}}),u.value=h.OK,c.success(s(`weatherModule.messages.locations.updated`,{location:f.name})),Object.assign(p,O(e(f))),_.value=!1}catch(e){throw u.value=h.ERROR,d=window.setTimeout(b,2e3),e instanceof M&&e.code===422?c.error(e.message):c.error(i),e}},b=()=>{window.clearTimeout(d),u.value=h.NONE};return a(()=>f,()=>{_.value=!(0,U.isEqual)(e(f),p)},{deep:!0}),a(()=>o.findById(t.value),t=>{t&&!_.value&&(f.name=t.name,Object.assign(p,O(e(f))))}),{model:f,formEl:m,formChanged:_,submit:y}},$=()=>{let e=p(),{enabled:n}=c(),r=[`locationAddForm`,`locationEditForm`],i=[`locationSchema`,`locationAddFormSchema`,`locationEditFormSchema`,`locationCreateReqSchema`,`locationUpdateReqSchema`],a=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`weather-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return t||n}):!1));return{plugins:a,options:t(()=>l(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)));if(n)return n}}}},ne=({type:e})=>{let{getByType:n}=$(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`))))}};export{L as _,Z as a,G as c,q as d,W as f,R as g,B as h,Q as i,Y as l,V as m,$ as n,ee as o,H as p,te as r,J as s,ne as t,K as u};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a}from"./icon-with-child-CgZMNB3F.js";import{Cr as o,Dn as s,Fn as c,Kn as l,Mi as u,T as d,_ as f,b as p,br as m,c as h,do as g,dr as _,p as v,u as y,ur as b,yr as x}from"./common-C6O7MWKy.js";import{t as S}from"./schemas.utils-Luoz3tGx.js";import{a as C,c as w,d as T,i as E,n as D,o as O,r as k,t as A}from"./keys-DgS2vm-E.js";import{i as j,t as M}from"./types-BP1Y7Ct6.js";import{n as N}from"./useDataSources-3VKnPYpt.js";import"./usePage-BVfsjiLb.js";var P=l(),F=()=>{let e=d(),{enabled:n}=s(),r=[`pageDetail`,`pageAddForm`,`pageEditForm`],i=[`pageSchema`,`pageAddFormSchema`,`pageEditFormSchema`,`pageCreateReqSchema`,`pageUpdateReqSchema`],a=[`configure`],o=t(()=>e.getPlugins().filter(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let t=a.some(t=>e.routes&&t in e.routes)??!0;return(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let n=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),a=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return n||a||t})}));return{plugins:o,options:t(()=>c(o.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`dashboard-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByPluginType:e=>o.value.find(t=>t.type===e),getByType:e=>o.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)))),getElement:e=>{for(let t of o.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)));if(n)return n}}}},I=()=>{let e=p().getStore(D),{firstLoad:n,semaphore:r}=g(e);return{pages:t(()=>e.findAll().filter(e=>!e.draft)),areLoading:t(()=>!!r.value.fetching.items||!n.value),loaded:t(()=>n.value),fetchPages:async()=>{await e.fetch()}}},L={search:void 0,types:[],displays:[]},ee={by:`title`,dir:`asc`},te=()=>{let e=p().getStore(D),{firstLoad:r,semaphore:i}=g(e),{filters:o,sort:s,pagination:l,reset:u}=h({key:`${w}:pages:list`,filters:{schema:j,defaults:L},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),d=t(()=>o.value.search!==L.search||!(0,P.isEqual)(o.value.types,L.types)||!(0,P.isEqual)(o.value.displays,L.displays)),f=n(l.value.size||10),m=n(l.value.page||1),_=n(s.value.length>0?s.value[0]?.by:void 0),v=n(s.value.length>0?s.value[0]?.dir??null:null),y=t(()=>c(e.findAll().filter(e=>!e.draft&&(!o.value.search||e.title.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))&&(o.value.displays.length===0||o.value.displays.includes(`all`)&&(e.displays===null||e.displays.length===0)||e.displays!==null&&e.displays.length>0&&e.displays.some(e=>o.value.displays.includes(e)))),[e=>e[_.value]??``],[v.value===`asc`?`asc`:`desc`])),b=t(()=>{let e=(m.value-1)*f.value,t=e+f.value;return y.value.slice(e,t)}),x=async()=>{await e.fetch()},S=t(()=>i.value.fetching.items||!r.value),C=t(()=>r.value),T=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>l.value,e=>{m.value=e.page??1,f.value=e.size??10},{deep:!0}),a(()=>m.value,e=>{l.value.page=e}),a(()=>f.value,e=>{l.value.size=e}),a(()=>v.value,e=>{_.value===void 0||e===null?s.value=[]:s.value=[{by:_.value,dir:e}]}),a(()=>_.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:v.value}]}),{pages:y,pagesPaginated:b,totalRows:T,areLoading:S,loaded:C,fetchPages:x,filters:o,filtersActive:d,paginateSize:f,paginatePage:m,sortBy:_,sortDir:v,resetFilter:u}},R=()=>{let{t:e}=r(),t=v(),n=p().getStore(D);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new C(`Something went wrong, page can't be loaded`);u.confirm(e(`dashboardModule.texts.pages.confirmRemove`,{page:i.title}),e(`dashboardModule.headings.pages.remove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await n.remove({id:i.id}),t.success(e(`dashboardModule.messages.pages.removed`,{page:i.title}))}catch(n){if(n instanceof E&&n.code===404){let n=e(`dashboardModule.messages.pages.notFound`,{page:i.title});t.error(n)}else if(n instanceof E&&n.code===422)t.error(n.message);else{let n=e(`dashboardModule.messages.pages.notRemoved`,{page:i.title});t.error(n)}}}).catch(()=>{t.info(e(`dashboardModule.messages.pages.removeCanceled`,{page:i.title}))})},bulkRemove:async r=>{if(r.length!==0)try{await u.confirm(e(`dashboardModule.texts.pages.confirmBulkRemove`,{count:r.length}),e(`dashboardModule.headings.pages.bulkRemove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`dashboardModule.messages.pages.bulkRemoved`,{count:i})),a>0&&t.error(e(`dashboardModule.messages.pages.bulkRemoveFailed`,{count:a}))}catch{}}}},z=({id:e})=>{let n=p().getStore(D);return{icon:t(()=>`mdi:${n.findById(e)?.icon??`view-dashboard`}`)}},B=m({id:o().uuid().optional(),type:o().trim().nonempty(),title:o().trim().nonempty(),icon:o().trim().transform(e=>e===``?null:e).nullable().optional(),order:x(),showTopBar:_().optional(),displays:b(o().uuid()).nullable().optional()}),V=m({id:o().uuid(),type:o().trim().nonempty(),title:o().trim().nonempty().optional(),icon:o().trim().transform(e=>e===``?null:e).nullable().optional(),order:x().optional(),showTopBar:_().optional(),displays:b(o().uuid()).nullable().optional()}),H=({type:e})=>{let{getByType:n}=F(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`))))}},U=({id:t,type:o})=>{let s=p(),{element:c}=H({type:o}),l=s.getStore(D),{t:u}=r(),d=v(),m=f(),h=n(T.NONE),g,_=i({...S(c.value?.schemas?.pageAddFormSchema||B),id:t,type:o,title:``,icon:``,order:0,showTopBar:!0}),b=y(e(_)),x=n(void 0),C=n(!1),w=async()=>{if(x.value.clearValidate(),!await x.value.validate())throw new O(`Form not valid`);let e=(c.value?.schemas?.pageAddFormSchema||B).safeParse(_);if(!e.success)throw m.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create page model.`);h.value=T.WORKING;let n=u(`dashboardModule.messages.pages.notCreated`,{page:_.title});try{await l.add({id:t,draft:!1,data:{...e.data,type:o}})}catch(e){throw h.value=T.ERROR,g=window.setTimeout(k,2e3),e instanceof E&&e.code===422?d.error(e.message):d.error(n),e}return h.value=T.OK,g=window.setTimeout(k,2e3),d.success(u(`dashboardModule.messages.pages.created`,{page:_.title})),`added`},k=()=>{window.clearTimeout(g),h.value=T.NONE};return a(_,()=>{C.value=!(0,P.isEqual)(e(_),b)}),{model:_,formEl:x,formChanged:C,submit:w,clear:k,formResult:h}},W=({page:t,messages:o})=>{let s=p(),{element:c}=H({type:t.type}),l=s.getStore(D),{t:u}=r(),d=v(),m=f(),h=n(T.NONE),g,_=i(t),b=y(e(_)),x=n(void 0),S=n(!1),C=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft?u(`dashboardModule.messages.pages.notCreated`,{page:t.title}):u(`dashboardModule.messages.pages.notEdited`,{page:t.title});if(x.value.clearValidate(),!await x.value.validate())throw new O(`Form not valid`);let i=(c.value?.schemas?.pageEditFormSchema||V).safeParse(_);if(!i.success)throw m.error(`Schema validation failed with:`,i.error),new O(`Failed to validate edit page model.`);h.value=T.WORKING;try{let e;e=await l.edit({id:t.id,data:{...i.data,type:t.type}}),t.draft&&(e=await l.save({id:t.id})),e&&Object.assign(_,e)}catch(e){throw h.value=T.ERROR,g=window.setTimeout(w,2e3),e instanceof E&&e.code===422?d.error(e.message):d.error(r),e}return h.value=T.OK,g=window.setTimeout(w,2e3),n?(d.success(u(o&&o.success?o.success:`dashboardModule.messages.pages.created`,{page:t.title})),`added`):(d.success(u(o&&o.success?o.success:`dashboardModule.messages.pages.edited`,{page:t.title})),S.value=!1,b=y(e(_)),`saved`)},w=()=>{window.clearTimeout(g),h.value=T.NONE};return a(_,()=>{S.value=!(0,P.isEqual)(e(_),b)}),{model:_,formEl:x,formChanged:S,submit:C,clear:w,formResult:h}},G=e=>{let n=p().getStore(k),{firstLoad:r,semaphore:i}=g(n);return{tiles:t(()=>n.findForParent(e.parent,e.parentId)),areLoading:t(()=>i.value.fetching.items.includes(e.parentId)?!0:!r.value.includes(e.parentId)&&i.value.fetching.items.includes(e.parentId)),loaded:t(()=>r.value.includes(e.parentId)),fetchTiles:async()=>{await n.fetch({parent:{type:e.parent,id:e.parentId}})}}},K=e=>{let{t}=r(),n=v(),i=p().getStore(k);return{findById:(e,t)=>i.findById(e,t),edit:async e=>i.edit(e),save:async e=>i.save(e),remove:async r=>{let a=i.findById(e.parent,r);if(a===null)throw new C(`Something went wrong, tile can't be loaded`);u.confirm(t(`dashboardModule.texts.tiles.confirmRemove`),t(`dashboardModule.headings.tiles.remove`),{confirmButtonText:t(`dashboardModule.buttons.yes.title`),cancelButtonText:t(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await i.remove({id:a.id,parent:{type:e.parent,id:e.parentId}}),n.success(t(`dashboardModule.messages.tiles.removed`))}catch(e){if(e instanceof E&&e.code===404){let e=t(`dashboardModule.messages.tiles.notFound`);n.error(e)}else if(e instanceof E&&e.code===422)n.error(e.message);else{let e=t(`dashboardModule.messages.tiles.notRemoved`);n.error(e)}}}).catch(()=>{n.info(t(`dashboardModule.messages.tiles.removeCanceled`))})},removeDirectly:async e=>i.remove(e)}},q=m({id:o().uuid().optional(),type:o().trim().nonempty(),row:x(),col:x(),rowSpan:x(),colSpan:x(),hidden:_()}),J=m({id:o().uuid(),type:o().trim().nonempty(),row:x().optional(),col:x().optional(),rowSpan:x().optional(),colSpan:x().optional(),hidden:_()}),Y=({id:t,parent:o,parentId:s,type:c,onlyDraft:l=!1})=>{let u=p(),{element:d}=N({type:c}),m=u.getStore(k),{t:h}=r(),g=v(),_=f(),b=n(T.NONE),x,C=i({...S(d.value?.schemas?.tileAddFormSchema||q),id:t,type:c,row:1,col:1,rowSpan:1,colSpan:1,hidden:!1}),w=y(e(C)),D=n(void 0),A=n(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(d.value?.schemas?.tileAddFormSchema||q).safeParse(C);if(!e.success)throw _.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create tile model.`);b.value=T.WORKING;let n=h(`dashboardModule.messages.tiles.notCreated`);try{await m.add({id:t,parent:{type:o,id:s},draft:l,data:{...e.data,type:c}})}catch(e){throw b.value=T.ERROR,x=window.setTimeout(M,2e3),e instanceof E&&e.code===422?g.error(e.message):g.error(n),e}return b.value=T.OK,x=window.setTimeout(M,2e3),g.success(h(`dashboardModule.messages.tiles.created`)),`added`},M=()=>{window.clearTimeout(x),b.value=T.NONE};return a(C,()=>{A.value=!(0,P.isEqual)(e(C),w)}),{model:C,formEl:D,formChanged:A,submit:j,clear:M,formResult:b}},X=({tile:t,messages:o,onlyDraft:s=!1})=>{let c=p(),{element:l}=N({type:t.type}),u=c.getStore(k),{t:d}=r(),m=v(),h=f(),g=n(T.NONE),_,b=i(t),x=y(e(b)),S=n(void 0),C=n(!1),w=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft&&!s?d(`dashboardModule.messages.tiles.notCreated`):d(`dashboardModule.messages.tiles.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let i=(l.value?.schemas?.tileEditFormSchema||J).safeParse(b);if(!i.success)throw h.error(`Schema validation failed with:`,i.error),new O(`Failed to validate create tile model.`);g.value=T.WORKING;try{await u.edit({id:t.id,parent:t.parent,data:{...i.data,type:t.type}}),t.draft&&!s&&await u.save({id:t.id,parent:t.parent})}catch(e){throw g.value=T.ERROR,_=window.setTimeout(D,2e3),e instanceof E&&e.code===422?m.error(e.message):m.error(r),e}return g.value=T.OK,_=window.setTimeout(D,2e3),n&&!s?(m.success(d(o&&o.success?o.success:`dashboardModule.messages.tiles.created`)),`added`):(m.success(d(o&&o.success?o.success:`dashboardModule.messages.tiles.edited`)),C.value=!1,x=y(e(b)),`saved`)},D=()=>{window.clearTimeout(_),g.value=T.NONE};return a(b,()=>{C.value=!(0,P.isEqual)(e(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:g}},Z=e=>{let{id:n}=e,r=p().getStore(A),{data:i,semaphore:a}=g(r);return{dataSource:t(()=>n===null?null:n in i.value?i.value[n]:null),isLoading:t(()=>a.value.fetching.item.includes(n)?!0:(n in i.value?i.value[n]:null)===null&&a.value.fetching.items.includes(e.parentId)),fetchDataSource:async()=>{(n in i.value?i.value[n]:null)?.draft||await r.get({id:n,parent:{type:e.parent,id:e.parentId}})}}},Q=m({id:o().uuid().optional(),type:o().trim().nonempty()}),$=m({id:o().uuid(),type:o().trim().nonempty()}),ne=({id:t,type:o,parent:s,parentId:c,onlyDraft:l=!1})=>{let u=p(),{element:d}=M({type:o}),m=u.getStore(A),{t:h}=r(),g=v(),_=f(),b=n(T.NONE),x,C=i({...S(d.value?.schemas?.dataSourceAddFormSchema||Q),id:t,type:o}),w=y(e(C)),D=n(void 0),k=n(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(d.value?.schemas?.dataSourceAddFormSchema||Q).safeParse(C);if(!e.success)throw _.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create data source model.`);b.value=T.WORKING;let n=h(`dashboardModule.messages.dataSources.notCreated`);try{await m.add({id:t,parent:{type:s,id:c},draft:l,data:{...e.data,type:o}})}catch(e){throw b.value=T.ERROR,x=window.setTimeout(N,2e3),e instanceof E&&e.code===422?g.error(e.message):g.error(n),e}return b.value=T.OK,x=window.setTimeout(N,2e3),g.success(h(`dashboardModule.messages.dataSources.created`)),`added`},N=()=>{window.clearTimeout(x),b.value=T.NONE};return a(C,()=>{k.value=!(0,P.isEqual)(e(C),w)}),{model:C,formEl:D,formChanged:k,submit:j,clear:N,formResult:b}},re=({dataSource:t,messages:o,onlyDraft:s=!1})=>{let c=p(),{element:l}=M({type:t.type}),u=c.getStore(A),{t:d}=r(),m=v(),h=f(),g=n(T.NONE),_,b=i(t),x=y(e(b)),S=n(void 0),C=n(!1),w=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft&&!s?d(`dashboardModule.messages.dataSources.notCreated`):d(`dashboardModule.messages.dataSources.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let i=(l.value?.schemas?.dataSourceEditFormSchema||$).safeParse(b);if(!i.success)throw h.error(`Schema validation failed with:`,i.error),new O(`Failed to validate create dataSource model.`);g.value=T.WORKING;try{await u.edit({id:t.id,parent:t.parent,data:{...i.data,type:t.type}}),t.draft&&!s&&await u.save({id:t.id,parent:t.parent})}catch(e){throw g.value=T.ERROR,_=window.setTimeout(D,2e3),e instanceof E&&e.code===422?m.error(e.message):m.error(r),e}return g.value=T.OK,_=window.setTimeout(D,2e3),n&&!s?(m.success(d(o&&o.success?o.success:`dashboardModule.messages.dataSources.created`)),`added`):(m.success(d(o&&o.success?o.success:`dashboardModule.messages.dataSources.edited`)),C.value=!1,x=y(e(b)),`saved`)},D=()=>{window.clearTimeout(_),g.value=T.NONE};return a(b,()=>{C.value=!(0,P.isEqual)(e(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:g}};export{z as _,Z as a,I as b,q as c,G as d,W as f,V as g,B as h,$ as i,J as l,H as m,ne as n,X as o,U as p,Q as r,Y as s,re as t,K as u,R as v,F as x,te as y};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{$r as e,Er as t,Si as n,T as r,ci as i,ki as a,n as o,yi as s,zr as c}from"./icon-with-child-CgZMNB3F.js";import{An as l,Cr as u,Fn as d,Hr as f,Mi as p,Ur as m,_ as h,b as g,br as _,c as v,cr as y,do as b,fn as x,jn as S,m as C,p as w}from"./common-C6O7MWKy.js";import{n as T}from"./logs-entries.transformers-DY1KWqis.js";var E=`extensions-module`,D={EXTENSIONS:`extensions_module-extensions`,EXTENSION:`extensions_module-extension`,EXTENSION_DETAIL:`extensions_module-extension-detail`},O=`table`,k=class e extends Error{exception;constructor(t,n=null){super(t),this.name=`ExtensionsException`,this.exception=n,Object.setPrototypeOf(this,e.prototype)}},A=class e extends k{code;constructor(t,n=null){super(t),this.name=`ExtensionsApiException`,this.code=n,Object.setPrototypeOf(this,e.prototype)}},j=class e extends k{constructor(t){super(t),this.name=`ExtensionsValidationException`,Object.setPrototypeOf(this,e.prototype)}},M=()=>{let e=C(),t=n([]),r=n(!1),i=n(new Map),a=0;return{actions:t,isLoading:r,executingActions:i,fetchActions:async n=>{let i=++a;r.value=!0;try{let{data:r}=await e.client.GET(`/modules/extensions/extensions/{type}/actions`,{params:{path:{type:n}}});if(i!==a)return;r?.data?t.value=r.data:t.value=[]}catch{if(i!==a)return;t.value=[]}finally{i===a&&(r.value=!1)}},executeAction:async(t,n,r)=>{let a=i.value.get(n)??0;i.value.set(n,a+1);try{let{data:i,error:a}=await e.client.POST(`/modules/extensions/extensions/{type}/actions/{actionId}`,{params:{path:{type:t,actionId:n}},body:{data:{params:r??{}}}});return i?.data?i.data:{success:!1,message:a?.error?.message??`Action execution failed`}}catch(e){return{success:!1,message:e instanceof Error?e.message:`Action execution failed`}}finally{let e=(i.value.get(n)??1)-1;e<=0?i.value.delete(n):i.value.set(n,e)}},fetchActionHistory:async(t,n)=>{try{let{data:r}=await e.client.GET(`/modules/extensions/extensions/{type}/actions/{actionId}/history`,{params:{path:{type:t,actionId:n}}});return r?.data?r.data:[]}catch{return[]}}}},N=Symbol(`useActions`),P=()=>{let t=M();return e(N,t),t},F=()=>c(N,null)??M(),I=e=>{let n=g().getStore(l),{semaphore:r,firstLoad:i}=b(n);return{extension:t(()=>n.findByType(a(e.type))),isLoading:t(()=>r.value.fetching.items||!i.value),fetchExtension:async()=>{await n.fetch()}}},L=_({search:u().optional(),kind:y([`all`,f.module,f.plugin]).default(`all`),enabled:y([`all`,`enabled`,`disabled`]).default(`all`),isCore:y([`all`,`core`,`addon`]).default(`all`)}),R={search:void 0,kind:`all`,enabled:`all`,isCore:`all`},z={by:`name`,dir:`asc`},B=()=>{let e=g().getStore(l),{semaphore:r}=b(e),{filters:a,sort:o,pagination:s,viewMode:c,reset:u}=v({key:`${E}:extensions:list`,filters:{schema:L,defaults:R},sort:{defaults:[z]},pagination:{defaults:{page:1,size:10}},viewMode:{options:[`table`,`cards`],default:O},syncQuery:!0,version:1}),p=t({get:()=>c.value??`table`,set:e=>{c.value=e}}),m=t(()=>a.value.search!==R.search||a.value.kind!==R.kind||a.value.enabled!==R.enabled||a.value.isCore!==R.isCore),h=n(s.value.size||10),_=n(s.value.page||1),y=n(o.value.length>0?o.value[0]?.by:void 0),x=n(o.value.length>0?o.value[0]?.dir??null:null),S=t(()=>Object.values(e.data)),C=t(()=>d(S.value.filter(e=>(!a.value.search||e.type.toLowerCase().includes(a.value.search.toLowerCase())||e.name.toLowerCase().includes(a.value.search.toLowerCase())||e.description?.toLowerCase().includes(a.value.search.toLowerCase()))&&(a.value.kind===`all`||e.kind===a.value.kind)&&(a.value.enabled===`all`||a.value.enabled===`enabled`&&e.enabled||a.value.enabled===`disabled`&&!e.enabled)&&(a.value.isCore===`all`||a.value.isCore===`core`&&e.isCore||a.value.isCore===`addon`&&!e.isCore)),[e=>y.value===`enabled`?+!!e.enabled:e[y.value]??``],[x.value===`asc`?`asc`:`desc`])),w=t(()=>C.value),T=t(()=>{let e=(_.value-1)*h.value,t=e+h.value;return w.value.slice(e,t)}),D=t(()=>C.value.filter(e=>e.kind===f.module)),k=t(()=>C.value.filter(e=>e.kind===f.plugin)),A=async()=>{await e.fetch()},j=t(()=>r.value.fetching.items),M=t(()=>w.value.length);return i(()=>s.value,e=>{_.value=e.page??1,h.value=e.size??10},{deep:!0}),i(()=>_.value,e=>{s.value.page=e}),i(()=>h.value,e=>{s.value.size=e}),i(()=>x.value,e=>{y.value===void 0||e===null?o.value=[]:o.value=[{by:y.value,dir:e}]}),i(()=>y.value,e=>{e===void 0||x.value===null?o.value=[]:o.value=[{by:e,dir:x.value}]}),{extensions:w,extensionsPaginated:T,modules:D,plugins:k,totalRows:M,areLoading:j,fetchExtensions:A,filters:a,filtersActive:m,paginateSize:h,paginatePage:_,sortBy:y,sortDir:x,viewMode:p,resetFilter:u}},V=()=>{let{t:e}=r(),t=g(),n=w(),i=t.getStore(l),a=t.getStore(S);return{toggleEnabled:async(t,r)=>{try{return await i.update({type:t,data:{enabled:r}}),n.success(e(r?`extensionsModule.messages.extensionEnabled`:`extensionsModule.messages.extensionDisabled`)),r&&setTimeout(()=>{a.fetch().then(()=>{let e=a.findAll().filter(e=>e.pluginName===t);for(let t of e)t.lastError&&n.warning(t.lastError)}).catch(()=>{})},1500),!0}catch(t){return t instanceof A&&t.code===400?n.error(e(`extensionsModule.messages.notConfigurableError`)):n.error(e(`extensionsModule.messages.updateError`)),!1}},bulkEnable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&!e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToEnable`));return}try{await p.confirm(e(`extensionsModule.messages.confirmBulkEnable`,{count:r.length}),e(`extensionsModule.headings.bulkEnable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`info`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!0}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkEnabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkEnableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkEnableCanceled`))}},bulkDisable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToDisable`));return}try{await p.confirm(e(`extensionsModule.messages.confirmBulkDisable`,{count:r.length}),e(`extensionsModule.headings.bulkDisable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`warning`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!1}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkDisabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkDisableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkDisableCanceled`))}}}},H=e=>{let r=C(),c=h(),l=n({}),u=n(!1),d=n(!1),f=n(!1),p=n(void 0),m=n(!1),g=n([]),_=n(`all`),v=null,y={"1h":3600*1e3,"6h":360*60*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,all:0},b=t(()=>Object.values(l.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),S=t(()=>{let e=b.value;if(g.value.length>0&&(e=e.filter(e=>g.value.includes(e.type))),_.value!==`all`){let t=Date.now()-y[_.value];e=e.filter(e=>new Date(e.ts).getTime()>=t)}return e}),w=t(()=>g.value.length>0||_.value!==`all`),E=()=>{g.value=[],_.value=`all`},D=async()=>{let t=a(e.extensionType);v=t,d.value=!0;try{let{data:e,error:n}=await r.client.GET(`/${o}/${x}/logs`,{params:{query:{extension:t,limit:50}}});if(v!==t)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=T(e);return[t.id,t]}));l.value=t,f.value=!0,u.value=e.metadata.has_more,p.value=e.metadata.next_cursor}else n&&c.error(`Failed to fetch extension logs:`,n)}catch(e){v===t&&c.error(`Error fetching extension logs:`,e)}finally{v===t&&(d.value=!1)}},O=async()=>{if(d.value||!u.value||!p.value)return;let t=a(e.extensionType),n=p.value;d.value=!0;try{let{data:e,error:i}=await r.client.GET(`/${o}/${x}/logs`,{params:{query:{extension:t,after_id:n,limit:50}}});if(v!==t)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=T(e);return[t.id,t]}));l.value={...l.value,...t},u.value=e.metadata.has_more,p.value=e.metadata.next_cursor}else i&&c.error(`Failed to load more extension logs:`,i)}catch(e){v===t&&c.error(`Error loading more extension logs:`,e)}finally{v===t&&(d.value=!1)}},k=async()=>{l.value={},p.value=void 0,u.value=!1,f.value=!1,await D()},A=null;return i(()=>m.value,e=>{A&&=(clearInterval(A),null),e&&(A=setInterval(()=>void D(),3e3))}),s(()=>{A&&=(clearInterval(A),null)}),i(()=>a(e.extensionType),()=>{k()}),{logs:S,hasMore:u,isLoading:d,loaded:f,live:m,filterLevels:g,filterTimeRange:_,filtersActive:w,clearFilters:E,fetchLogs:D,loadMoreLogs:O,refreshLogs:k}},U=()=>{let e=g().getStore(S),{data:n,semaphore:r}=b(e);return{services:t(()=>Object.values(n.value)),areLoading:t(()=>r.value.fetching.items),fetchServices:async()=>{await e.fetch()}}},W=()=>{let{t:e}=r(),t=g(),n=w(),i=t.getStore(S);return{startService:async(t,r)=>{try{let a=await i.start({pluginName:t,serviceId:r});return a.state===m.started?n.success(e(`extensionsModule.services.messages.started`)):a.state===m.starting?n.info(e(`extensionsModule.services.messages.serviceStarting`)):a.lastError?n.warning(a.lastError):n.warning(e(`extensionsModule.services.messages.startError`)),a.state===m.started||a.state===m.starting}catch(t){return t instanceof A,n.error(e(`extensionsModule.services.messages.startError`)),!1}},stopService:async(t,r)=>{try{return await i.stop({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.stopped`)),!0}catch(t){return t instanceof A,n.error(e(`extensionsModule.services.messages.stopError`)),!1}},restartService:async(t,r)=>{try{return await i.restart({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.restarted`)),!0}catch(t){return t instanceof A,n.error(e(`extensionsModule.services.messages.restartError`)),!1}},isActing:(e,t)=>i.acting(e,t)}};export{B as a,P as c,j as d,E as f,V as i,A as l,U as n,I as o,D as p,H as r,F as s,W as t,k as u};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Gr as n,Si as r,T as i,bi as a,ci as o,n as s}from"./icon-with-child-CgZMNB3F.js";import{Cr as c,Ei as l,Fn as u,Kn as d,Mi as f,_ as p,b as m,br as h,c as g,cr as _,do as v,m as y,p as b,u as x,ur as S}from"./common-C6O7MWKy.js";import{t as C}from"./keys-DExX7OfU.js";var w=e=>{let n=m().getStore(C),{tokenRefreshTriggers:i}=v(n),a=p(),s=r([]),c=t(()=>e.value===null?null:n?.findById(e.value)??null),u=t(()=>e.value===null?!1:n?.getting(e.value)??!1),d=async()=>{if(e.value!==null)try{await n?.get({id:e.value})}catch(e){a.error(`Failed to fetch display:`,e)}},f=async()=>{if(e.value!==null)try{let t=await n?.getTokens({id:e.value});s.value=t??[]}catch(e){a.error(`Failed to fetch display tokens:`,e),s.value=[]}};return l(t(()=>{if(e.value===null||!n)return 0;let t=i.value;return!t||typeof t!=`object`?0:t[e.value]??0}),async()=>{if(e.value!==null)try{await f()}catch(e){a.error(`Failed to refresh tokens:`,e)}},{debounce:300}),o(()=>e.value,async e=>{if(e!==null&&n?.findById(e)===null)try{await d()}catch(e){a.error(`Failed to fetch display on id change:`,e)}},{immediate:!0}),{display:c,tokens:s,isLoading:u,fetchDisplay:d,fetchTokens:f,revokeToken:async()=>{if(e.value===null)return!1;let t=await n?.revokeToken({id:e.value});return t&&(s.value=[]),t??!1}}},T=d(),E=`displays`,D=`displays-module`,O=`DisplaysModule.`,k=function(e){return e.DISPLAY_CREATED=`DisplaysModule.Display.Created`,e.DISPLAY_UPDATED=`DisplaysModule.Display.Updated`,e.DISPLAY_DELETED=`DisplaysModule.Display.Deleted`,e.DISPLAY_TOKEN_REVOKED=`DisplaysModule.Display.TokenRevoked`,e}({}),A=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),j={DISPLAYS:`displays_module-displays`,DISPLAYS_EDIT:`displays_module-displays_edit`,DISPLAY:`displays_module-display`,DISPLAY_EDIT:`displays_module-display_edit`,DISPLAY_TOKENS:`displays_module-display_tokens`},M=[{value:15,labelKey:`15s`},{value:30,labelKey:`30s`},{value:60,labelKey:`1min`},{value:120,labelKey:`2min`},{value:300,labelKey:`5min`},{value:600,labelKey:`10min`},{value:1800,labelKey:`30min`},{value:0,labelKey:`never`}],N=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DisplaysException`,this.exception=t}},P=class extends N{constructor(e,t=null){super(e,t),this.name=`DisplaysValidationException`}},F=class extends N{code;constructor(e,t=null,n=null){super(e,n),this.name=`DisplaysApiException`,this.code=t}},I=({display:t,messages:s})=>{let c=m().getStore(C),{t:l}=i(),u=b(),d=r(A.NONE),f,p=a({id:t.id,name:t.name,spaceId:t.spaceId,unitSize:t.unitSize,rows:t.rows,cols:t.cols,brightness:t.brightness,screenLockDuration:t.screenLockDuration,darkMode:t.darkMode,screenSaver:t.screenSaver,screenPowerOff:t.screenPowerOff,speaker:t.speaker,speakerVolume:t.speakerVolume,microphone:t.microphone,microphoneVolume:t.microphoneVolume,homeMode:t.homeMode,homePageId:t.homePageId,numberFormat:t.numberFormat??``,temperatureUnit:t.temperatureUnit??``,windSpeedUnit:t.windSpeedUnit??``,pressureUnit:t.pressureUnit??``,precipitationUnit:t.precipitationUnit??``,distanceUnit:t.distanceUnit??``,weatherLocationId:t.weatherLocationId??null}),h=x(e(p)),g=r(void 0),_=r(!1),v=async()=>{let n=s&&s.error?s.error:l(`displaysModule.messages.notEdited`,{display:t.name||t.macAddress});if(!g.value)throw new P(`Form element is not available`);if(g.value.clearValidate(),!await g.value.validate())throw new P(`Form not valid`);d.value=A.WORKING;try{let e={name:p.name||null,spaceId:p.spaceId,unitSize:p.unitSize,rows:p.rows,cols:p.cols,brightness:p.brightness,screenLockDuration:p.screenLockDuration,darkMode:p.darkMode,screenSaver:p.screenSaver,screenPowerOff:p.screenPowerOff,homeMode:p.homeMode,homePageId:p.homeMode===`explicit`?p.homePageId:null,numberFormat:p.numberFormat||null,temperatureUnit:p.temperatureUnit||null,windSpeedUnit:p.windSpeedUnit||null,pressureUnit:p.pressureUnit||null,precipitationUnit:p.precipitationUnit||null,distanceUnit:p.distanceUnit||null,weatherLocationId:p.weatherLocationId||null};t.audioOutputSupported&&(e.speaker=p.speaker,e.speakerVolume=p.speakerVolume),t.audioInputSupported&&(e.microphone=p.microphone,e.microphoneVolume=p.microphoneVolume),await c.edit({id:t.id,data:e})}catch(e){throw d.value=A.ERROR,f=window.setTimeout(y,2e3),e instanceof F&&e.code===422?u.error(e.message):u.error(n),e}return d.value=A.OK,f=window.setTimeout(y,2e3),u.success(l(s&&s.success?s.success:`displaysModule.messages.edited`,{display:t.name||t.macAddress})),_.value=!1,h=x(e(p)),`saved`},y=()=>{f!==void 0&&(window.clearTimeout(f),f=void 0),d.value=A.NONE};return o(p,()=>{_.value=!(0,T.isEqual)(e(p),h)}),n(()=>{y()}),{model:p,formEl:g,formChanged:_,submit:v,clear:y,formResult:d}},L=()=>{let e=m().getStore(C),{firstLoad:n}=v(e),r=t(()=>e?.findAll()??[]);return{displays:r,isLoading:t(()=>e?.fetching()??!1),isLoaded:t(()=>n.value),fetchDisplays:async()=>{await e?.fetch()},options:t(()=>r.value.map(e=>({value:e.id,label:e.name||e.macAddress})))}},R=h({search:c().optional(),darkMode:_([`all`,`enabled`,`disabled`]).default(`all`),screenSaver:_([`all`,`enabled`,`disabled`]).default(`all`),state:_([`all`,`offline`,`online`]).default(`all`),states:S(_([`connected`,`disconnected`,`lost`,`unknown`]))}),z={search:void 0,darkMode:`all`,screenSaver:`all`,state:`all`,states:[]},B={by:`name`,dir:`asc`},V=()=>{let e=m().getStore(C),{firstLoad:n,semaphore:i}=v(e),{filters:a,sort:s,pagination:c,reset:l}=g({key:`${D}:displays:list`,filters:{schema:R,defaults:z},sort:{defaults:[B]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),d=t(()=>a.value.search!==z.search||!(0,T.isEqual)(a.value.darkMode,z.darkMode)||!(0,T.isEqual)(a.value.screenSaver,z.screenSaver)||!(0,T.isEqual)(a.value.state,z.state)||!(0,T.isEqual)(a.value.states,z.states)),f=r(c.value.size||10),p=r(c.value.page||1),h=r(s.value.length>0?s.value[0]?.by:void 0),_=r(s.value.length>0?s.value[0]?.dir??null:null),y=t(()=>u(e.findAll().filter(e=>!e.draft&&(!a.value.search||e.id.toLowerCase().includes(a.value.search.toLowerCase())||e.name?.toLowerCase().includes(a.value.search.toLowerCase())||e.macAddress.toLowerCase().includes(a.value.search.toLowerCase())||e.version.toLowerCase().includes(a.value.search.toLowerCase()))&&(a.value.darkMode===`all`||a.value.darkMode===`enabled`&&e.darkMode||a.value.darkMode===`disabled`&&!e.darkMode)&&(a.value.screenSaver===`all`||a.value.screenSaver===`enabled`&&e.screenSaver||a.value.screenSaver===`disabled`&&!e.screenSaver)&&(!a.value.states||a.value.states.length===0||a.value.states.includes(e.status??`unknown`))&&(a.value.state===`all`||a.value.state===`online`&&e.status===`connected`||a.value.state===`offline`&&[`disconnected`,`lost`,`unknown`].includes(e.status??`unknown`))),[e=>{switch(h.value){case`name`:return e.name||e.macAddress;case`version`:return e.version;case`screenWidth`:return e.screenWidth??0;case`status`:return e.status??`unknown`;default:return e.name||e.macAddress}}],[_.value===`asc`?`asc`:`desc`])),b=t(()=>{let e=(p.value-1)*f.value,t=e+f.value;return y.value.slice(e,t)}),x=async()=>{await e.fetch()},S=t(()=>i.value.fetching.items||!n.value),w=t(()=>n.value),E=t(()=>e.findAll().filter(e=>!e.draft).length);return o(()=>c.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),o(()=>p.value,e=>{c.value.page=e}),o(()=>f.value,e=>{c.value.size=e}),o(()=>_.value,e=>{h.value===void 0||e===null?s.value=[]:s.value=[{by:h.value,dir:e}]}),o(()=>h.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:_.value}]}),{displays:y,displaysPaginated:b,totalRows:E,areLoading:S,loaded:w,fetchDisplays:x,filters:a,filtersActive:d,paginateSize:f,paginatePage:p,sortBy:h,sortDir:_,resetFilter:l}},H=()=>{let e=m().getStore(C),{t}=i(),n=b();return{remove:async r=>{let i=e?.findById(r);if(!i){n.error(t(`displaysModule.messages.notFound`));return}try{await f.confirm(t(`displaysModule.messages.confirmRemove`,{name:i.name||i.macAddress}),t(`displaysModule.headings.removeDisplay`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`}),await e.remove({id:r}),n.success(t(`displaysModule.messages.removed`))}catch{}},bulkRemove:async r=>{if(r.length!==0)try{await f.confirm(t(`displaysModule.messages.confirmBulkRemove`,{count:r.length}),t(`displaysModule.headings.removeBulkDisplays`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let t of r)try{await e.remove({id:t.id}),i++}catch{a++}i>0&&n.success(t(`displaysModule.messages.bulkRemoved`,{count:i})),a>0&&n.error(t(`displaysModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},U=()=>{let e=y(),n=p(),i=r(null),a=r(!1),o=r(!1),c=t(()=>i.value?.available??!1),l=t(()=>i.value?.active??!1),u=t(()=>i.value?.deploymentMode??`combined`),d=t(()=>i.value?.remainingTime??null),f=t(()=>{let e=d.value;return e===null?0:Math.ceil(e/1e3)}),m=t(()=>{let e=f.value;return e<=0?`0:00`:`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}),h=async()=>{try{a.value=!0;let{data:t}=await e.client.GET(`/${s}/${E}/displays/permit-join/status`);if(t?.data){let e=t.data;i.value={active:e.active??!1,expiresAt:e.expires_at?new Date(e.expires_at):null,remainingTime:e.remaining_time??null,deploymentMode:e.deployment_mode??`combined`,available:e.available??!1}}}catch(e){throw n.error(`Failed to fetch permit join status`,e),new N(`Failed to fetch permit join status`)}finally{a.value=!1}};return{status:i,loading:a,activating:o,isAvailable:c,isActive:l,deploymentMode:u,remainingTime:d,remainingTimeSeconds:f,remainingTimeFormatted:m,fetchStatus:h,activate:async()=>{try{o.value=!0,await e.client.POST(`/${s}/${E}/displays/permit-join`),await h()}catch(e){throw n.error(`Failed to activate permit join`,e),new N(`Failed to activate permit join`)}finally{o.value=!1}},deactivate:async()=>{try{o.value=!0,await e.client.DELETE(`/${s}/${E}/displays/permit-join`,{}),await h()}catch(e){throw n.error(`Failed to deactivate permit join`,e),new N(`Failed to deactivate permit join`)}finally{o.value=!1}}}};export{I as a,P as c,E as d,k as f,w as g,M as h,L as i,O as l,j as m,H as n,F as o,A as p,V as r,N as s,U as t,D as u};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-QTnfLwEv.js";import{Er as e,Si as t,T as n,bi as r,ci as i}from"./icon-with-child-CgZMNB3F.js";import{Fn as a,Kn as o,Mi as s,Or as c,b as l,do as u,p as d,u as f}from"./common-C6O7MWKy.js";var p=`users`,m=`users-module`,h=`UsersModule.`,g=function(e){return e.USER_CREATED=`UsersModule.User.Created`,e.USER_UPDATED=`UsersModule.User.Updated`,e.USER_DELETED=`UsersModule.User.Deleted`,e.USER_RESET=`UsersModule.User.Reset`,e.MODULE_RESET=`UsersModule.All.Reset`,e}({}),_=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),v={USERS:`users_module-users`,USER_ADD:`users_module-user-add`,USER_EDIT:`users_module-user-edit`},y=Symbol(`FB-Module-Users-UsersStore`),b=class extends Error{exception;constructor(e,t=null){super(e),this.name=`UsersException`,this.exception=t}},x=class extends b{code;constructor(e,t=null,n=null){super(e,n),this.name=`UsersApiException`,this.code=t}},S=class extends b{constructor(e,t=null){super(e,t),this.name=`UsersValidationException`}},C=({id:t})=>{let n=l().getStore(y),{data:r,semaphore:i}=u(n);return{user:e(()=>t===null?null:r.value[t]??null),isLoading:e(()=>i.value.fetching.item.includes(t)?!0:r.value[t]===void 0&&i.value.fetching.items),fetchUser:async()=>{r.value[t]?.draft||await n.get({id:t})}}},w=({id:e})=>{let a=l().getStore(y),{t:o}=n(),s=d(),u=t(_.NONE),f,p=r({username:``,password:``,repeatPassword:``,email:``,firstName:``,lastName:``,role:c.user}),m=t(void 0),h=t(!1),g=async()=>{let t=o(`usersModule.messages.notCreated`,{user:p.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);u.value=_.WORKING;try{await a.add({id:e,draft:!1,data:{username:p.username,password:p.password,email:p.email?.trim()===``?null:p.email,firstName:p.firstName?.trim()===``?null:p.firstName,lastName:p.lastName?.trim()===``?null:p.lastName,role:p.role}})}catch(e){throw u.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?s.error(e.message):s.error(t),e}return u.value=_.OK,f=window.setTimeout(v,2e3),s.success(o(`usersModule.messages.created`,{user:p.username})),`added`},v=()=>{window.clearTimeout(f),u.value=_.NONE};return i(p,e=>{e.username===``&&e.password===``&&e.email===``&&e.firstName===``&&e.lastName===``&&e.role===c.user?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:u}},T=({user:e,messages:a})=>{let o=l().getStore(y),{t:s}=n(),c=d(),u=t(_.NONE),f,p=r({username:e.username,password:`secretpassword`,email:e.email||``,firstName:e.firstName||``,lastName:e.lastName||``,role:e.role}),m=t(void 0),h=t(!1),g=async()=>{let t=e.draft,n=a&&a.error?a.error:e.draft?s(`usersModule.messages.notCreated`,{user:e.username}):s(`usersModule.messages.notEdited`,{user:e.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);u.value=_.WORKING;try{await o.edit({id:e.id,data:{email:!p.email||p.email.trim()===``?null:p.email,firstName:!p.firstName||p.firstName.trim()===``?null:p.firstName,lastName:!p.lastName||p.lastName.trim()===``?null:p.lastName,role:p.role}}),e.draft&&await o.save({id:e.id})}catch(e){throw u.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?c.error(e.message):c.error(n),e}return u.value=_.OK,f=window.setTimeout(v,2e3),t?(c.success(s(a&&a.success?a.success:`usersModule.messages.created`,{user:e.username})),`added`):(c.success(s(a&&a.success?a.success:`usersModule.messages.edited`,{user:e.username})),`saved`)},v=()=>{window.clearTimeout(f),u.value=_.NONE};return i(p,t=>{t.email===e.email&&t.firstName===e.firstName&&t.lastName===e.lastName&&t.role===e.role?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:u}},E=({user:e,messages:a})=>{let o=l().getStore(y),{t:s}=n(),c=d(),u=t(_.NONE),f,p=r({password:``,repeatPassword:``}),m=t(void 0),h=t(!1),g=async()=>{let t=a&&a.error?a.error:s(`usersModule.messages.notEdited`,{user:e.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);u.value=_.WORKING;try{await o.edit({id:e.id,data:{password:p.password}}),e.draft&&await o.save({id:e.id})}catch(e){throw u.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?c.error(e.message):c.error(t),e}return u.value=_.OK,f=window.setTimeout(v,2e3),c.success(s(a&&a.success?a.success:`usersModule.messages.edited`,{user:e.username})),`saved`},v=()=>{window.clearTimeout(f),u.value=_.NONE};return i(p,e=>{e.password===``&&e.repeatPassword===``?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:u}},D=({user:e,messages:a})=>{let o=l().getStore(y),{t:s}=n(),c=d(),u=t(_.NONE),f,p=r({username:e.username}),m=t(void 0),h=t(!1),g=async()=>{let t=a&&a.error?a.error:s(`usersModule.messages.notEdited`,{user:e.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);u.value=_.WORKING;try{await o.edit({id:e.id,data:{username:p.username}}),e.draft&&await o.save({id:e.id})}catch(e){throw u.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?c.error(e.message):c.error(t),e}return u.value=_.OK,f=window.setTimeout(v,2e3),c.success(s(a&&a.success?a.success:`usersModule.messages.edited`,{user:e.username})),`saved`},v=()=>{window.clearTimeout(f),u.value=_.NONE};return i(p,t=>{h.value=t.username!==e.username}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:u}},O=o(),k={search:void 0,roles:[]},A=()=>{let n=l().getStore(y),{firstLoad:r,semaphore:o}=u(n),s=t(10),c=t(1),d=t(f(k)),p=e(()=>d.value.search!==k.search||!(0,O.isEqual)(d.value.roles,k.roles)),m=t(`username`),h=t(`ascending`),g=e(()=>a(n.findAll().filter(e=>!e.draft&&(!d.value.search||e.username.toLowerCase().includes(d.value.search.toLowerCase()))&&(d.value.roles.length===0||d.value.roles.includes(e.role))),[e=>e[m.value]??``],[h.value===`ascending`?`asc`:`desc`])),_=e(()=>{let e=(c.value-1)*s.value,t=e+s.value;return g.value.slice(e,t)}),v=async()=>{await n.fetch()},b=e(()=>o.value.fetching.items||!r.value),x=e(()=>r.value),S=e(()=>n.findAll().filter(e=>!e.draft).length);return i(()=>d.value,()=>{c.value=1},{deep:!0}),{users:g,usersPaginated:_,totalRows:S,areLoading:b,loaded:x,fetchUsers:v,filters:d,filtersActive:p,paginateSize:s,paginatePage:c,sortBy:m,sortDir:h,resetFilter:()=>{d.value=f(k)}}},j=()=>{let{t:e}=n(),t=d(),r=l().getStore(y);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new b(`Something went wrong, user can't be loaded`);s.confirm(e(`usersModule.texts.confirmRemove`,{user:i.username}),e(`usersModule.headings.remove`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await r.remove({id:i.id}),t.success(e(`usersModule.messages.removed`,{user:i.username}))}catch(n){if(n instanceof x&&n.code===404){let n=e(`usersModule.messages.notFound`,{user:i.username});t.error(n)}else if(n instanceof x&&n.code===422)t.error(n.message);else{let n=e(`usersModule.messages.notRemoved`,{user:i.username});t.error(n)}}}).catch(()=>{t.info(e(`usersModule.messages.removeCanceled`,{user:i.username}))})},bulkRemove:async n=>{if(n.length!==0)try{await s.confirm(e(`usersModule.texts.confirmBulkRemove`,{count:n.length}),e(`usersModule.headings.removeBulk`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of n)try{await r.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`usersModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`usersModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}};export{p as _,T as a,x as c,y as d,g as f,m as g,h,E as i,b as l,v as m,A as n,w as o,_ as p,D as r,C as s,j as t,S as u};