@fastybird/smart-panel-admin 0.2.0-alpha.0 → 0.2.0-alpha.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 (244) hide show
  1. package/dist/assets/{card-add-form-BisPivBW.js → card-add-form-CK4kR8xg.js} +1 -1
  2. package/dist/assets/{card-edit-form-BusFpsQ-.js → card-edit-form-wW4Ln5zY.js} +1 -1
  3. package/dist/assets/common-ClYbfzcU.js +150 -0
  4. package/dist/assets/{common-BofoIkl8.css → common-oMRoU5Bz.css} +1 -1
  5. package/dist/assets/components-B83ZmZ8K.js +1 -0
  6. package/dist/assets/components-BeAu3rr-.js +2 -0
  7. package/dist/assets/components-CUb-WyjM.js +1 -0
  8. package/dist/assets/{components-nySjR0Kw.js → components-CWipPoPx.js} +1 -1
  9. package/dist/assets/components-Ccgczse0.js +1 -0
  10. package/dist/assets/{components-bYlscUCC.js → components-CdRzTvqi.js} +1 -1
  11. package/dist/assets/components-Cenk7a0V.js +1 -0
  12. package/dist/assets/components-DTDNlAlb.css +1 -0
  13. package/dist/assets/components-Dt2XNUlx.js +1 -0
  14. package/dist/assets/composables-BBpGCAdl.js +1 -0
  15. package/dist/assets/composables-C7FHn6c7.js +1 -0
  16. package/dist/assets/composables-CLavCtnY2.js +1 -0
  17. package/dist/assets/composables-CXjuhhun.js +1 -0
  18. package/dist/assets/composables-CgAHA7k5.js +1 -0
  19. package/dist/assets/composables-CsNW-LB6.js +1 -0
  20. package/dist/assets/composables-Dy4XWqCf.js +1 -0
  21. package/dist/assets/composables-Hs28Y101.js +1 -0
  22. package/dist/assets/composables-Uxz3Cdyu.js +1 -0
  23. package/dist/assets/{dashboard-DtbhQy8k.js → dashboard-BeC1p_l7.js} +2 -2
  24. package/dist/assets/dashboard.types-7T8v85dw.js +1 -0
  25. package/dist/assets/{data-source-edit-form-CFN-SvSK.js → data-source-edit-form-C4gH0YLh.js} +1 -1
  26. package/dist/assets/{drawer-BbdsjCiJ.js → drawer-CiqfePF3.js} +1 -1
  27. package/dist/assets/index-CT78dzRz.js +16 -0
  28. package/dist/assets/index-D5w7bIRx.css +1 -0
  29. package/dist/assets/{input-number-BwfEsFHJ.js → input-number-D_NTO6WM.js} +1 -1
  30. package/dist/assets/integration-config-dialog-D3mGqyta.js +1 -0
  31. package/dist/assets/{layout-config-DVNEtk0l.js → layout-config-C76lNdc1.js} +1 -1
  32. package/dist/assets/{layout-default-D8F5_o8G.js → layout-default-Cx06YeBc.js} +1 -1
  33. package/dist/assets/{layout-lock-CfiqLAMO.js → layout-lock-CmsxHhXs.js} +1 -1
  34. package/dist/assets/layout-profile-B_sV3Up2.js +1 -0
  35. package/dist/assets/{layout-profile-BzY9_cS6.js → layout-profile-CmfFvZhu.js} +1 -1
  36. package/dist/assets/{layout-sign-DtlkTDMF.js → layout-sign-CFFy81E1.js} +1 -1
  37. package/dist/assets/layout-sign-tR5bX__j.js +1 -0
  38. package/dist/assets/list-data-sources-adjust-PrG71kY-.js +1 -0
  39. package/dist/assets/list-locations-BwSJS2h0.js +1 -0
  40. package/dist/assets/{list-users-Rb7ebowd.js → list-users-CF6ImTsl.js} +1 -1
  41. package/dist/assets/logs-entries.transformers-DFkN2OMU.js +1 -0
  42. package/dist/assets/{page-configure-C0AoqDin.js → page-configure-BzuWTC54.js} +1 -1
  43. package/dist/assets/{page-configure-CPiMqgP0.js → page-configure-G2QInrsP.js} +1 -1
  44. package/dist/assets/{pagination-B1k-jAW4.js → pagination-DZ2rQaP1.js} +1 -1
  45. package/dist/assets/{popover-BwYIvci_.js → popover-BZYcs-r3.js} +1 -1
  46. package/dist/assets/{radio-Be6vTJaS.js → radio-DRMqWGCF.js} +1 -1
  47. package/dist/assets/scene-add-form-CbpBld-D.js +1 -0
  48. package/dist/assets/{scene-add-form-BcNSeauE.css → scene-add-form-TKYtnlDS.css} +1 -1
  49. package/dist/assets/{scene-edit-form-CDPMRZQT.css → scene-edit-form-DId_sQZd.css} +1 -1
  50. package/dist/assets/scene-edit-form-lzlt6Iyp.js +1 -0
  51. package/dist/assets/{select-data-source-plugin-B_OX-n6n.js → select-data-source-plugin-CkZAFGfC.js} +1 -1
  52. package/dist/assets/{steps-Dm6QDerW.js → steps-CzcNxoXN.js} +1 -1
  53. package/dist/assets/system-gcYTj13W.js +2 -0
  54. package/dist/assets/{table-CX8Y_GvR.js → table-CPvpjt-L.js} +1 -1
  55. package/dist/assets/{tile-detail-xLofFEUz.js → tile-detail-DVdmO9lc.js} +1 -1
  56. package/dist/assets/{tile-edit-form-DpGYkan5.js → tile-edit-form-DwIp-hiP.js} +1 -1
  57. package/dist/assets/types-DeArEtXN.js +1 -0
  58. package/dist/assets/useBuddyChat-BxwixEnR.js +1 -0
  59. package/dist/assets/{useDataSources-CpvlBpmX.js → useDataSources-l9Ib2rAD.js} +1 -1
  60. package/dist/assets/useDevices-D9C7Nv35.js +1 -0
  61. package/dist/assets/useGeolocation-CDqG_RSY.js +2 -0
  62. package/dist/assets/useLocation-NSAU8iqU.js +1 -0
  63. package/dist/assets/usePage-D76bsv_8.js +1 -0
  64. package/dist/assets/{useSpaces-6g2FoZ3a.js → useSpaces-CfHRzoKt.js} +1 -1
  65. package/dist/assets/{view-buddy-chat-Dl0AU26s.js → view-buddy-chat-BnAR3TWe.js} +1 -1
  66. package/dist/assets/view-card-add-DBCX5az8.js +1 -0
  67. package/dist/assets/view-card-edit-C8gOUzG9.js +1 -0
  68. package/dist/assets/view-channel-CRmWK_TY.js +1 -0
  69. package/dist/assets/view-channel-add-D1w42MmO.js +1 -0
  70. package/dist/assets/view-channel-edit-CTlknuQq.js +1 -0
  71. package/dist/assets/view-channel-property-add-DjIPJVH1.js +1 -0
  72. package/dist/assets/view-channel-property-edit-l-Ho7i9I.js +1 -0
  73. package/dist/assets/view-channels-mYQWvquv.js +1 -0
  74. package/dist/assets/view-config-module-edit-DcFplxQ5.js +1 -0
  75. package/dist/assets/view-config-modules-C9WQ8EJ7.js +1 -0
  76. package/dist/assets/view-config-plugin-edit-D4jLkSH_.js +1 -0
  77. package/dist/assets/view-config-plugins-Ca2TzhsA.js +1 -0
  78. package/dist/assets/view-data-source-add-X5YbVuce.js +1 -0
  79. package/dist/assets/view-data-source-add-xkh4K9pc.js +1 -0
  80. package/dist/assets/view-data-source-edit-BPFngHwq.js +1 -0
  81. package/dist/assets/view-data-source-edit-BTRjUBCk.js +1 -0
  82. package/dist/assets/view-device-BzjcofqN.css +1 -0
  83. package/dist/assets/view-device-add-DRvySG2J.js +1 -0
  84. package/dist/assets/view-device-ap7NIwck.js +1 -0
  85. package/dist/assets/view-device-control-Cm2Ztxee.js +1 -0
  86. package/dist/assets/view-device-edit-DL_BGbcs.js +1 -0
  87. package/dist/assets/view-devices-C_DIO-Ek.js +1 -0
  88. package/dist/assets/view-display-BFpS0L8r.js +1 -0
  89. package/dist/assets/view-display-edit-DSH1-mTo.js +1 -0
  90. package/dist/assets/{view-display-tokens-BzMeV1OP.js → view-display-tokens-CdYlQdJ1.js} +1 -1
  91. package/dist/assets/view-displays-DeUjrWvp.js +1 -0
  92. package/dist/assets/view-extension-detail-Nx3xa0P5.js +1 -0
  93. package/dist/assets/view-extensions-DbVlJnUD.js +1 -0
  94. package/dist/assets/view-location-CLO29suN.js +1 -0
  95. package/dist/assets/{view-location-add-BR0uBKXf.js → view-location-add-eKawon8O.js} +1 -1
  96. package/dist/assets/view-location-edit-DEqHxb3D.js +1 -0
  97. package/dist/assets/{view-locations-6IdaMVnL.js → view-locations-BPI8qZMK.js} +1 -1
  98. package/dist/assets/{view-lock-screen-DFxhJqT9.js → view-lock-screen-DyT9t4S0.js} +1 -1
  99. package/dist/assets/view-onboarding-BeXwPM-H.js +1 -0
  100. package/dist/assets/view-page-BjCxMYfr.js +1 -0
  101. package/dist/assets/view-page-add-NWBmVGQT.js +1 -0
  102. package/dist/assets/view-page-configure-Biqk8LAG.js +1 -0
  103. package/dist/assets/view-page-configure-Bua51577.js +1 -0
  104. package/dist/assets/{view-page-data-source-add-BOmcFo06.js → view-page-data-source-add-BrGX7qOK.js} +1 -1
  105. package/dist/assets/{view-page-data-source-edit-D_WZr-5p.js → view-page-data-source-edit-C69qo-T1.js} +1 -1
  106. package/dist/assets/view-page-edit-OfAIwNrQ.js +1 -0
  107. package/dist/assets/{view-page-plugin-DpEUpI0f.js → view-page-plugin-JQNGMBcP.js} +1 -1
  108. package/dist/assets/view-pages-CDgs_exZ.js +1 -0
  109. package/dist/assets/{view-profile-general-D9fnIWUK.js → view-profile-general-D0soDHq0.js} +1 -1
  110. package/dist/assets/{view-profile-security-CdSVn0XZ.js → view-profile-security-Cy5CjYBb.js} +1 -1
  111. package/dist/assets/{view-scene-add-DPh4t_yO.js → view-scene-add-BqXaYnxm.js} +1 -1
  112. package/dist/assets/{view-scene-edit-D_78trN5.js → view-scene-edit-DDOI-0YX.js} +1 -1
  113. package/dist/assets/{view-scenes-CshixN5G.js → view-scenes-CBJjSBQk.js} +1 -1
  114. package/dist/assets/{view-sign-in-BQEFUpCQ.js → view-sign-in-9_mLJ9H_.js} +1 -1
  115. package/dist/assets/{view-sign-up-DJMhcZRn.js → view-sign-up-LOYRIdgb.js} +1 -1
  116. package/dist/assets/view-space-Bxm8iu0I.js +1 -0
  117. package/dist/assets/view-space-FBfL1ie4.css +1 -0
  118. package/dist/assets/{view-space-add-Dn_Xxa7h.js → view-space-add-TPBUAlJg.js} +1 -1
  119. package/dist/assets/view-space-edit-DG8s14eW.js +1 -0
  120. package/dist/assets/{view-spaces-D0IGj_jA.js → view-spaces-By0VpjmG.js} +1 -1
  121. package/dist/assets/{view-spaces-onboarding-CSxeYXfN.js → view-spaces-onboarding-BSaQgwki.js} +1 -1
  122. package/dist/assets/view-stats-D8yFChG8.js +1 -0
  123. package/dist/assets/{view-system-info-DltMAbI0.js → view-system-info-BQK7wAya.js} +1 -1
  124. package/dist/assets/view-system-log-detail-BDBat7ub.js +1 -0
  125. package/dist/assets/view-system-logs-D0n_O-pl.js +1 -0
  126. package/dist/assets/{view-tile-D7sYnocL.js → view-tile-DhCjyxi6.js} +1 -1
  127. package/dist/assets/view-tile-add-DuQ3Dinn.js +1 -0
  128. package/dist/assets/view-tile-add-S734qdqw.js +1 -0
  129. package/dist/assets/{view-tile-data-source-add-DVXzbBX1.js → view-tile-data-source-add-V5_nwzTN.js} +1 -1
  130. package/dist/assets/{view-tile-data-source-edit-BYxoXONw.js → view-tile-data-source-edit-Dbaj3c1g.js} +1 -1
  131. package/dist/assets/view-tile-edit-CFe_xYDO.js +1 -0
  132. package/dist/assets/view-tile-edit-CT0D4ax4.js +1 -0
  133. package/dist/assets/view-tile-edit-Y4lM2_Oq.js +1 -0
  134. package/dist/assets/{view-user-add-CKWLnQWp.js → view-user-add-DfqBXTJZ.js} +1 -1
  135. package/dist/assets/view-user-edit-CGklrocL.js +1 -0
  136. package/dist/assets/view-users-sBygMGhO.js +1 -0
  137. package/dist/assets/weather-CXUSyh_y.js +2 -0
  138. package/dist/assets/weather-forecast.transformers-BHE_hqrP.js +1 -0
  139. package/dist/index.html +81 -69
  140. package/package.json +1 -1
  141. package/dist/assets/common-JK1JafYN.js +0 -150
  142. package/dist/assets/components-1g6igHyo.js +0 -1
  143. package/dist/assets/components-BeEsrJ-b.js +0 -1
  144. package/dist/assets/components-C59v4_pJ.css +0 -1
  145. package/dist/assets/components-CAw7HExU.js +0 -2
  146. package/dist/assets/components-DgBFw5N0.js +0 -2
  147. package/dist/assets/components-UzD3zcFI.js +0 -1
  148. package/dist/assets/components-z2LceEke.js +0 -1
  149. package/dist/assets/composables-B3n72_CD.js +0 -1
  150. package/dist/assets/composables-BXpPCCSi.js +0 -1
  151. package/dist/assets/composables-B_kXgvb-.js +0 -1
  152. package/dist/assets/composables-C4HnLsc8.js +0 -1
  153. package/dist/assets/composables-DA8zAfAi.js +0 -1
  154. package/dist/assets/composables-DDM6BsX-.js +0 -1
  155. package/dist/assets/composables-DSiBJrZg.js +0 -1
  156. package/dist/assets/composables-DgP2mWSg.js +0 -1
  157. package/dist/assets/composables-TA5USsUm.js +0 -1
  158. package/dist/assets/dashboard.types-DIw6K--h.js +0 -1
  159. package/dist/assets/index-DU31qw7A.css +0 -1
  160. package/dist/assets/index-PghKL0r3.js +0 -16
  161. package/dist/assets/integration-config-dialog-BD1WDXmi.js +0 -1
  162. package/dist/assets/layout-profile-Bw674NXk.js +0 -1
  163. package/dist/assets/layout-sign-Cw29pWzr.js +0 -1
  164. package/dist/assets/list-data-sources-adjust-ClHBpxMC.js +0 -1
  165. package/dist/assets/list-locations-Do970MZB.js +0 -1
  166. package/dist/assets/logs-entries.transformers-DAjf4lH9.js +0 -1
  167. package/dist/assets/scene-add-form-C69EauRZ.js +0 -1
  168. package/dist/assets/scene-edit-form-BRv-mgGO.js +0 -1
  169. package/dist/assets/slider-Tbif000c.js +0 -1
  170. package/dist/assets/system-DxQR-qce.js +0 -2
  171. package/dist/assets/types-Iop9417k.js +0 -1
  172. package/dist/assets/useBuddyChat-B7TWt_bv.js +0 -1
  173. package/dist/assets/useDevices-dykmiGUr.js +0 -1
  174. package/dist/assets/useGeolocation-CZ5e117_.js +0 -2
  175. package/dist/assets/useLocation-Go0XGBqc.js +0 -1
  176. package/dist/assets/usePage-utG4SQ8h.js +0 -1
  177. package/dist/assets/view-card-add-CPwGieHz.js +0 -1
  178. package/dist/assets/view-card-edit-BHu8pEIh.js +0 -1
  179. package/dist/assets/view-channel-CHZ4KBxJ.js +0 -1
  180. package/dist/assets/view-channel-add-CJFbbxVn.js +0 -1
  181. package/dist/assets/view-channel-edit-CmUNrApy.js +0 -1
  182. package/dist/assets/view-channel-property-add-BEyV5XHW.js +0 -1
  183. package/dist/assets/view-channel-property-edit-Dkdqnlbw.js +0 -1
  184. package/dist/assets/view-channels-DYsIppSf.js +0 -1
  185. package/dist/assets/view-config-module-edit-BKAqnnmP.js +0 -1
  186. package/dist/assets/view-config-modules-Sde2ZpyR.js +0 -1
  187. package/dist/assets/view-config-plugin-edit-BauaGPge.js +0 -1
  188. package/dist/assets/view-config-plugins-Ch9ZKdi9.js +0 -1
  189. package/dist/assets/view-data-source-add-CfWMNUlx.js +0 -1
  190. package/dist/assets/view-data-source-add-qdQXk36c.js +0 -1
  191. package/dist/assets/view-data-source-edit-DOZQqr9I.js +0 -1
  192. package/dist/assets/view-data-source-edit-DwLg-Ho7.js +0 -1
  193. package/dist/assets/view-device-CU6wEU5y.js +0 -1
  194. package/dist/assets/view-device-DvKgjKr8.css +0 -1
  195. package/dist/assets/view-device-add-DMQr-Ejx.js +0 -1
  196. package/dist/assets/view-device-control-IO9uv99C.js +0 -1
  197. package/dist/assets/view-device-edit-CJ6Czhqh.js +0 -1
  198. package/dist/assets/view-devices-BVXBrN7E.js +0 -1
  199. package/dist/assets/view-display-BH9oaK9a.js +0 -1
  200. package/dist/assets/view-display-edit-RqEygqOP.js +0 -1
  201. package/dist/assets/view-displays-CqnYrjgG.js +0 -1
  202. package/dist/assets/view-extension-detail-D_jRuvcF.js +0 -1
  203. package/dist/assets/view-extensions-BoLgkC9q.js +0 -1
  204. package/dist/assets/view-location-CWT8cw-V.js +0 -1
  205. package/dist/assets/view-location-edit-CJZKYNxs.js +0 -1
  206. package/dist/assets/view-onboarding-QuMnE-0z.js +0 -1
  207. package/dist/assets/view-page-add-x-N3uK6y.js +0 -1
  208. package/dist/assets/view-page-configure-KqZNLuDF.js +0 -1
  209. package/dist/assets/view-page-configure-R6eDpzKu.js +0 -1
  210. package/dist/assets/view-page-edit-Da_VLz0S.js +0 -1
  211. package/dist/assets/view-page-qiwAxEhh.js +0 -1
  212. package/dist/assets/view-pages-fYN0KLgK.js +0 -1
  213. package/dist/assets/view-space-BPMpriaP.js +0 -1
  214. package/dist/assets/view-space-edit-CelgqT1d.js +0 -1
  215. package/dist/assets/view-stats-B1tPshLL.js +0 -1
  216. package/dist/assets/view-system-log-detail-BysNzpVK.js +0 -1
  217. package/dist/assets/view-system-logs-Dm7pnxom.js +0 -1
  218. package/dist/assets/view-tile-add-BI2iQuOv.js +0 -1
  219. package/dist/assets/view-tile-add-zB8FzRNn.js +0 -1
  220. package/dist/assets/view-tile-edit-BIQ82Oy8.js +0 -1
  221. package/dist/assets/view-tile-edit-BuEZsIyw.js +0 -1
  222. package/dist/assets/view-tile-edit-CNTz8OCi.js +0 -1
  223. package/dist/assets/view-user-edit-mgL3dRml.js +0 -1
  224. package/dist/assets/view-users-C0AWfAuw.js +0 -1
  225. package/dist/assets/weather-CXl7c0Ah.js +0 -2
  226. package/dist/assets/weather-forecast.transformers-BzQnxZQf.js +0 -1
  227. /package/dist/assets/{auth.constants-Dls_gTTx.js → auth.constants-BtlHaDRV.js} +0 -0
  228. /package/dist/assets/{composables-CFy1PUwT2.js → composables-BU1aKa642.js} +0 -0
  229. /package/dist/assets/{empty-C13Ke09q.js → empty-C-72o5ew.js} +0 -0
  230. /package/dist/assets/{gridstack.min-CkFfNuVm.js → gridstack.min-BC6WoZvX.js} +0 -0
  231. /package/dist/assets/{keys-BBDlM2pa.js → keys-C6Zi4a10.js} +0 -0
  232. /package/dist/assets/{keys-CGGnS6tq.js → keys-DVEtutPb.js} +0 -0
  233. /package/dist/assets/{keys-DHSxrtbW.js → keys-DWeeqbdi.js} +0 -0
  234. /package/dist/assets/{keys-Cm97UJHM.js → keys-o2K4DVjh.js} +0 -0
  235. /package/dist/assets/{leaflet-src-w7aZLeZy.js → leaflet-src-B49UyrlR.js} +0 -0
  236. /package/dist/assets/{leaflet-src.esm-CP3k43VF.js → leaflet-src.esm-YKGwaZsZ.js} +0 -0
  237. /package/dist/assets/{marker-icon-2x-BQwQunh3.js → marker-icon-2x-BCzqJChB.js} +0 -0
  238. /package/dist/assets/{marker-icon-D5WnykN_.js → marker-icon-JzPv91fE.js} +0 -0
  239. /package/dist/assets/{marker-shadow-7oepq6ij.js → marker-shadow-tj6c2pB6.js} +0 -0
  240. /package/dist/assets/{pages-cards.contants-DaE51N8m.js → pages-cards.contants-B5RdaI3z.js} +0 -0
  241. /package/dist/assets/{pages-tiles.constants-CQ5vmfVa.js → pages-tiles.constants-Day6cR-b.js} +0 -0
  242. /package/dist/assets/{system.exceptions-Ddzmz1RH.js → system.exceptions-CLPql-b3.js} +0 -0
  243. /package/dist/assets/{view-not-found-Cyh2GjBD.js → view-not-found-C0Nl0aC-.js} +0 -0
  244. /package/dist/assets/{weather-icon-CoJVymBk.js → weather-icon-CkuFNv0P.js} +0 -0
@@ -0,0 +1 @@
1
+ import"./chunk-DECur_0Z.js";import{Nr as e,Xr as t,ci as n,d as r,fi as i,hi as a,mr as o,n as s,si as c,ui as l}from"./icon-with-child-DmQ_XhQy.js";import{$n as u,Bn as d,Cn as f,Ct as p,Hn as m,Kn as h,Mn as g,Nn as _,Pn as v,Qn as y,Un as b,Ur as x,d as S,er as C,fn as w,g as T,in as E,jn as D,k as O,n as k,nr as A,p as j,qn as M,s as N,tr as P,ur as F,v as I,vr as L,w as R,x as z,ya as B}from"./common-ClYbfzcU.js";import{a as V,i as ee,n as H,o as U,r as W}from"./keys-o2K4DVjh.js";import{t as te}from"./useDevices-D9C7Nv35.js";import{n as ne}from"./logs-entries.transformers-DFkN2OMU.js";var re=({id:e})=>{let t=R().getStore(W),{data:n,semaphore:r}=B(t);return{channel:o(()=>e===null?null:n.value[e]??null),isLoading:o(()=>r.value.fetching.item.includes(e)?!0:(n.value[e]??null)===null?r.value.fetching.items.includes(`all`):!1),fetchChannel:async()=>{(n.value[e]??null)?.draft||await t.get({id:e})}}},ie=(e={})=>{let{deviceId:t}=e,n=R().getStore(W),{firstLoad:r,semaphore:i}=B(n),a=t===void 0?void 0:typeof t==`string`?o(()=>t):t;return{channels:o(()=>n.findAll().filter(e=>!a?.value||e.device===a.value)),areLoading:o(()=>i.value.fetching.items.includes(a?.value??`all`)?!0:r.value.includes(a?.value??`all`)?!1:i.value.fetching.items.includes(a?.value??`all`)),loaded:o(()=>r.value.includes(a?.value??`all`)),fetchChannels:async()=>{await n.fetch({deviceId:a?.value})}}},ae=`devices`,G=`devices-module`,oe=`DevicesModule.`,se=function(e){return e.DEVICE_CREATED=`DevicesModule.Device.Created`,e.DEVICE_UPDATED=`DevicesModule.Device.Updated`,e.DEVICE_DELETED=`DevicesModule.Device.Deleted`,e.DEVICE_CONNECTION_CHANGED=`DevicesModule.Device.ConnectionChanged`,e.DEVICE_CONTROL_CREATED=`DevicesModule.DeviceControl.Created`,e.DEVICE_CONTROL_DELETED=`DevicesModule.DeviceControl.Deleted`,e.CHANNEL_CREATED=`DevicesModule.Channel.Created`,e.CHANNEL_UPDATED=`DevicesModule.Channel.Updated`,e.CHANNEL_DELETED=`DevicesModule.Channel.Deleted`,e.CHANNEL_CONTROL_CREATED=`DevicesModule.ChannelControl.Created`,e.CHANNEL_CONTROL_DELETED=`DevicesModule.ChannelControl.Deleted`,e.CHANNEL_PROPERTY_CREATED=`DevicesModule.ChannelProperty.Created`,e.CHANNEL_PROPERTY_UPDATED=`DevicesModule.ChannelProperty.Updated`,e.CHANNEL_PROPERTY_DELETED=`DevicesModule.ChannelProperty.Deleted`,e.CHANNEL_PROPERTY_SET=`DevicesModule.ChannelProperty.Set`,e.CHANNEL_PROPERTY_VALUE_SET=`DevicesModule.ChannelProperty.ValueSet`,e}({}),K=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),ce={DEVICES:`devices_module-devices`,DEVICES_ADD:`devices_module-devices_add`,DEVICES_EDIT:`devices_module-devices_edit`,DEVICE:`devices_module-device`,DEVICE_EDIT:`devices_module-device_edit`,DEVICE_CONTROL:`devices_module-device_control`,DEVICE_ADD_CHANNEL:`devices_module-device_add_channel`,DEVICE_EDIT_CHANNEL:`devices_module-device_edit_channel`,DEVICE_CHANNEL_ADD_PROPERTY:`devices_module-device_channel_add_property`,DEVICE_CHANNEL_EDIT_PROPERTY:`devices_module-device_channel_edit_property`,CHANNELS:`devices_module-channels`,CHANNELS_ADD:`devices_module-channels_add`,CHANNELS_EDIT:`devices_module-channels_edit`,CHANNEL:`devices_module-channel`,CHANNEL_EDIT:`devices_module-channel_edit`,CHANNEL_ADD_PROPERTY:`devices_module-channel_add_property`,CHANNEL_EDIT_PROPERTY:`devices_module-channel_edit_property`},le=b({search:h().optional(),types:_(h()),state:D([`all`,`offline`,`online`]).default(`all`),states:_(d(F)),categories:_(d(y)),enabled:D([`all`,`enabled`,`disabled`]).default(`all`),validation:D([`all`,`valid`,`invalid`]).default(`all`)}),ue=b({search:h().optional(),devices:_(h()),categories:_(d(u))}),de=b({search:h().optional(),channels:_(h()),categories:_(d(C)),permissions:_(d(A)),dataTypes:_(d(P))}),q=f(),J={search:void 0,devices:[],categories:[]},fe={by:`name`,dir:`asc`},pe=(e={})=>{let{deviceId:n}=e,r=R().getStore(W),{firstLoad:i,semaphore:a}=B(r),{filters:s,sort:c,pagination:u,reset:d}=S({key:`${G}:channels:list`,filters:{schema:ue,defaults:J},sort:{defaults:[fe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=o(()=>s.value.search!==J.search||!(0,q.isEqual)(s.value.devices,J.devices)||!(0,q.isEqual)(s.value.categories,J.categories)),p=l(u.value.size||10),m=l(u.value.page||1),h=l(c.value.length>0?c.value[0]?.by:void 0),g=l(c.value.length>0?c.value[0]?.dir??null:null),_=o(()=>w(r.findAll().filter(e=>!n||e.device===n).filter(e=>!e.draft&&(!s.value.search||e.id.toLowerCase().includes(s.value.search.toLowerCase())||e.name.toLowerCase().includes(s.value.search.toLowerCase())||e.description?.toLowerCase().includes(s.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(s.value.search.toLowerCase()))&&(s.value.categories.length===0||s.value.categories.includes(e.category))&&(s.value.devices.length===0||s.value.devices.includes(e.device))),[e=>e[h.value]??``],[g.value===`asc`?`asc`:`desc`])),v=o(()=>{let e=(m.value-1)*p.value,t=e+p.value;return _.value.slice(e,t)}),y=async()=>{await r.fetch({deviceId:n})},b=o(()=>a.value.fetching.items.includes(n??`all`)?!0:i.value.includes(n??`all`)?!1:a.value.fetching.items.includes(n??`all`)),x=o(()=>i.value.includes(n??`all`)),C=o(()=>r.findAll().filter(e=>!n||e.device===n).filter(e=>!e.draft).length);return t(()=>u.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),t(()=>m.value,e=>{u.value.page=e}),t(()=>p.value,e=>{u.value.size=e}),t(()=>g.value,e=>{h.value===void 0||e===null?c.value=[]:c.value=[{by:h.value,dir:e}]}),t(()=>h.value,e=>{e===void 0?c.value=[]:c.value=[{by:e,dir:g.value}]}),{channels:_,channelsPaginated:v,totalRows:C,areLoading:b,loaded:x,fetchChannels:y,filters:s,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:d}},Y=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DevicesException`,this.exception=t}},X=class extends Y{code;constructor(e,t=null,n=null){super(e,n),this.name=`DevicesApiException`,this.code=t}},Z=class extends Y{constructor(e,t=null){super(e,t),this.name=`DevicesValidationException`}},me=()=>{let{t:e}=r(),t=T(),n=R().getStore(W),i=e=>n.findById(e);return{remove:async r=>{let a=i(r);if(a===null)throw new Y(`Something went wrong, channel can't be loaded`);x.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 X&&n.code===404){let n=e(`devicesModule.messages.channels.notFound`,{channel:a.name});t.error(n)}else if(n instanceof X&&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}))})}}},he=({id:e})=>{let t=R().getStore(W);return{icon:o(()=>{switch(t.findById(e)?.category){default:return`mdi:chip`}})}},ge={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}}}},_e={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}}}},ve={[y.generic]:[],[y.air_conditioner]:[u.cooler,u.heater,u.fan,u.temperature,u.humidity,u.electrical_energy,u.electrical_power,u.leak,u.device_information],[y.air_dehumidifier]:[u.cooler,u.fan,u.temperature,u.humidity,u.electrical_energy,u.electrical_power,u.leak,u.device_information],[y.air_humidifier]:[u.humidity,u.switcher,u.temperature,u.fan,u.electrical_energy,u.electrical_power,u.leak,u.device_information],[y.air_purifier]:[u.fan,u.air_particulate,u.carbon_dioxide,u.carbon_monoxide,u.humidity,u.leak,u.nitrogen_dioxide,u.ozone,u.pressure,u.sulphur_dioxide,u.temperature,u.volatile_organic_compounds,u.electrical_energy,u.electrical_power,u.device_information],[y.alarm]:[u.alarm,u.device_information],[y.camera]:[u.camera,u.motion,u.microphone,u.speaker,u.contact,u.light,u.temperature,u.humidity,u.battery,u.device_information],[y.door]:[u.door,u.lock,u.contact,u.motion,u.battery,u.device_information],[y.doorbell]:[u.doorbell,u.camera,u.lock,u.motion,u.microphone,u.speaker,u.contact,u.light,u.battery,u.device_information],[y.fan]:[u.fan,u.electrical_energy,u.electrical_power,u.device_information],[y.heating_unit]:[u.heater,u.temperature,u.humidity,u.electrical_energy,u.electrical_power,u.device_information],[y.lighting]:[u.light,u.illuminance,u.electrical_energy,u.electrical_power,u.device_information],[y.lock]:[u.lock,u.contact,u.motion,u.battery,u.device_information],[y.media]:[u.media_input,u.media_playback,u.microphone,u.speaker,u.device_information],[y.av_receiver]:[u.media_input,u.media_playback,u.speaker,u.device_information],[y.game_console]:[u.media_playback,u.media_input,u.device_information],[y.projector]:[u.projector,u.speaker,u.media_playback,u.media_input,u.device_information],[y.set_top_box]:[u.media_input,u.media_playback,u.device_information],[y.streaming_service]:[u.media_playback,u.device_information],[y.outlet]:[u.outlet,u.electrical_energy,u.electrical_power,u.device_information],[y.pump]:[u.flow,u.switcher,u.leak,u.pressure,u.electrical_energy,u.electrical_power,u.device_information],[y.robot_vacuum]:[u.robot_vacuum,u.electrical_energy,u.electrical_power,u.leak,u.battery,u.device_information],[y.sensor]:[u.air_particulate,u.battery,u.carbon_dioxide,u.carbon_monoxide,u.contact,u.humidity,u.illuminance,u.leak,u.motion,u.nitrogen_dioxide,u.occupancy,u.ozone,u.pressure,u.smoke,u.sulphur_dioxide,u.temperature,u.volatile_organic_compounds,u.device_information],[y.speaker]:[u.speaker,u.media_input,u.media_playback,u.electrical_energy,u.electrical_power,u.device_information],[y.sprinkler]:[u.valve,u.flow,u.pressure,u.leak,u.humidity,u.electrical_energy,u.electrical_power,u.device_information],[y.switcher]:[u.switcher,u.electrical_energy,u.electrical_power,u.device_information],[y.television]:[u.television,u.speaker,u.media_playback,u.media_input,u.device_information],[y.terminal]:[u.button,u.indicator,u.buzzer,u.illuminance,u.accelerometer,u.temperature,u.contact,u.switcher,u.device_information],[y.thermostat]:[u.thermostat,u.cooler,u.heater,u.temperature,u.humidity,u.contact,u.electrical_energy,u.electrical_power,u.device_information],[y.valve]:[u.valve,u.pressure,u.flow,u.leak,u.battery,u.electrical_energy,u.electrical_power,u.device_information],[y.water_heater]:[u.heater,u.temperature,u.leak,u.electrical_energy,u.electrical_power,u.device_information],[y.window_covering]:[u.window_covering,u.battery,u.electrical_energy,u.electrical_power,u.device_information]},ye=Object.fromEntries(Object.entries(_e).map(([e,t])=>{let n=Object.values(t.channels).map(e=>e.category),r=ve[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]})),be=Object.fromEntries(Object.entries(_e).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)}])),xe=Object.fromEntries(Object.entries(ge).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)}])),Se=(e,t)=>{let n=ge[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}},Ce=({id:e})=>{let t=R(),n=t.getStore(W),r=t.getStore(H),i=e=>n.findById(e),a=e=>xe[e.category]??null;return{canAddAnotherProperty:o(()=>{let t=i(e);if(t===null)return!0;let{required:n,optional:o}=a(t)??{required:[],optional:[]},s=[...n,...o],c=r.findForChannel(t.id).map(e=>e.category);return s.filter(e=>!c.includes(e)).length>0}),missingRequiredProperties:o(()=>{let t=i(e);if(t===null)throw new Y(`Something went wrong, channel can't be loaded`);let{required:n}=a(t)??{required:[]},o=r.findForChannel(t.id).map(e=>e.category);return n.filter(e=>!o.includes(e))})}},we=b({id:h().uuid().optional(),type:h().trim().nonempty(),device:h().uuid().optional(),category:d(u).default(u.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty(),description:h().trim().transform(e=>e===``?null:e).nullable().optional()}),Te=b({id:h().uuid(),type:h().trim().nonempty(),device:h().uuid(),category:d(u).default(u.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty().optional(),description:h().trim().transform(e=>e===``?null:e).nullable().optional()}),Ee=()=>{let e=O(),{enabled:t}=E(),n=[`channelAddForm`,`channelEditForm`],r=[`channelSchema`,`channelAddFormSchema`,`channelEditFormSchema`,`channelCreateReqSchema`,`channelUpdateReqSchema`],i=o(()=>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=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),i=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return t||i}):!1));return{plugins:i,options:o(()=>w(i.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>i.value.find(t=>t.type===e),getByType:e=>i.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 i.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},De=({type:e})=>{let{getByType:t}=Ee(),n=o(()=>t(e));return{plugin:n,element:o(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Oe=({id:e,type:a,deviceId:s})=>{let c=R(),{element:d}=De({type:a}),f=c.getStore(W),{devices:p,fetchDevices:m,areLoading:h}=te(),{t:g}=r(),_=T(),v=z(),y=l(K.NONE),b,x=o(()=>D.device?p.value.find(e=>e.id===D.device)??null:null),S=o(()=>x.value?f.findForDevice(x.value.id).map(e=>e.category):[]),C=o(()=>x.value?be[x.value.category]??null:null),w=o(()=>C.value===null?[]:Object.values(u).filter(e=>C.value?.required.includes(e)||C.value?.optional.includes(e)).filter(e=>!S.value.includes(e)||C.value?.multiple?.includes(e)).map(e=>({value:e,label:g(`devicesModule.categories.channels.${e}`)}))),E=o(()=>p.value.filter(e=>e.type===a).map(e=>({value:e.id,label:e.name}))),D=n({...k(d.value?.schemas?.channelAddFormSchema||we),id:e,type:a,device:s,category:u.generic,name:``,description:``}),O=j(i(D)),A=l(void 0),M=l(!1),N=async()=>{if(A.value.clearValidate(),!await A.value.validate())throw new Z(`Form not valid`);let t=s??D.device;if(!t)throw new Z(`Missing device identifier`);if(!D.category)throw new Z(`Missing data type definition`);let n=(d.value?.schemas?.channelAddFormSchema||we).safeParse(D);if(!n.success)throw v.error(`Schema validation failed with:`,n.error),new Z(`Failed to validate create channel model.`);y.value=K.WORKING;let r=g(`devicesModule.messages.channels.notCreated`,{device:D.name});try{await f.add({id:e,deviceId:t,draft:!1,data:{...n.data,type:a}})}catch(e){throw y.value=K.ERROR,b=window.setTimeout(P,2e3),e instanceof X&&e.code===422?_.error(e.message):_.error(r),e}return y.value=K.OK,b=window.setTimeout(P,2e3),_.success(g(`devicesModule.messages.channels.created`,{device:D.name})),`added`},P=()=>{window.clearTimeout(b),y.value=K.NONE};return m().catch(()=>{}),t(D,()=>{M.value=!(0,q.isEqual)(i(D),O)}),t(()=>w.value,e=>{e.length&&e[0]&&(D.category=e[0].value,O.category=e[0].value)},{immediate:!0}),{categoriesOptions:w,devicesOptions:E,model:D,formEl:A,formChanged:M,submit:N,clear:P,formResult:y,loadingDevices:h}},ke=({channel:e,messages:a})=>{let s=R(),{element:c}=De({type:e.type}),d=s.getStore(W),{devices:f,fetchDevices:p,areLoading:m}=te(),{t:h}=r(),g=T(),_=z(),v=l(K.NONE),y,b=o(()=>f.value.find(t=>t.id===e.device)??null),x=o(()=>b.value?d.findForDevice(b.value.id).filter(t=>t.id!==e.id).map(e=>e.category):[]),S=o(()=>b.value?be[b.value.category]??null:null),C=o(()=>S.value===null?[]:Object.values(u).filter(e=>S.value?.required.includes(e)||S.value?.optional.includes(e)).filter(e=>!x.value.includes(e)||S.value?.multiple?.includes(e)).map(e=>({value:e,label:h(`devicesModule.categories.channels.${e}`)}))),w=o(()=>f.value.map(e=>({value:e.id,label:e.name}))),E=n(e),D=j(i(E)),O=l(void 0),k=l(!1),A=async()=>{let t=e.draft,n=a&&a.error?a.error:e.draft?h(`devicesModule.messages.channels.notCreated`,{channel:e.name}):h(`devicesModule.messages.channels.notEdited`,{channel:e.name});if(O.value.clearValidate(),!await O.value.validate())throw new Z(`Form not valid`);let r=(c.value?.schemas?.channelEditFormSchema||Te).safeParse(E);if(!r.success)throw _.error(`Schema validation failed with:`,r.error),new Z(`Failed to validate edit channel model.`);v.value=K.WORKING;try{await d.edit({id:e.id,data:{...r.data,type:e.type}}),e.draft&&await d.save({id:e.id,deviceId:e.device})}catch(e){throw v.value=K.ERROR,y=window.setTimeout(M,2e3),e instanceof X&&e.code===422?g.error(e.message):g.error(n),e}return v.value=K.OK,y=window.setTimeout(M,2e3),t?(g.success(h(a&&a.success?a.success:`devicesModule.messages.channels.created`,{channel:e.name})),`added`):(g.success(h(a&&a.success?a.success:`devicesModule.messages.channels.edited`,{channel:e.name})),k.value=!1,D=j(i(E)),`saved`)},M=()=>{window.clearTimeout(y),v.value=K.NONE};return p().catch(()=>{}),t(E,()=>{k.value=!(0,q.isEqual)(i(E),D)}),{categoriesOptions:C,devicesOptions:w,model:E,formEl:O,formChanged:k,submit:A,clear:M,formResult:v,loadingDevices:m}},Ae=({channelId:e,id:t})=>{let n=R().getStore(H),{data:r,semaphore:i}=B(n);return{property:o(()=>t===null?null:r.value[t]??null),isLoading:o(()=>i.value.fetching.item.includes(t)?!0:(r.value[t]??null)===null?i.value.fetching.items.includes(e)||i.value.fetching.items.includes(`all`):!1),fetchProperty:async()=>{(r.value[t]??null)?.draft||await n.get({id:t,channelId:e})}}},je=({channelId:e})=>{let t=R().getStore(H),{firstLoad:n,semaphore:r}=B(t),i=typeof e==`string`?o(()=>e):e;return{properties:o(()=>t.findAll().filter(e=>!i?.value||e.channel===i.value)),areLoading:o(()=>i.value?r.value.fetching.items.includes(i.value)?!0:n.value.includes(i.value)?!1:r.value.fetching.items.includes(i.value):!1),loaded:o(()=>i.value?n.value.includes(i.value):!1),fetchProperties:async()=>{i.value&&await t.fetch({channelId:i.value})}}},Q={search:void 0,channels:[],categories:[],permissions:[],dataTypes:[]},Me={by:`category`,dir:`asc`},Ne=({channelId:e,key:n=`list`})=>{let r=R().getStore(H),{firstLoad:i,semaphore:a}=B(r),{filters:s,sort:c,pagination:u,reset:d}=S({key:`${G}:channels-properties:${n}`,filters:{schema:de,defaults:Q},sort:{defaults:[Me]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=o(()=>s.value.search!==Q.search||!(0,q.isEqual)(s.value.channels,Q.channels)||!(0,q.isEqual)(s.value.categories,Q.categories)||!(0,q.isEqual)(s.value.permissions,Q.permissions)||!(0,q.isEqual)(s.value.dataTypes,Q.dataTypes)),p=l(u.value.size||10),m=l(u.value.page||1),h=l(c.value.length>0?c.value[0]?.by:void 0),g=l(c.value.length>0?c.value[0]?.dir??null:null),_=o(()=>w(r.findAll().filter(t=>!e||t.channel===e).filter(e=>!e.draft&&(!s.value.search||e.id?.toLowerCase().includes(s.value.search.toLowerCase())||e.name?.toLowerCase().includes(s.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(s.value.search.toLowerCase()))&&(s.value.categories.length===0||s.value.categories.includes(e.category))&&(s.value.dataTypes.length===0||s.value.dataTypes.includes(e.dataType))&&(s.value.permissions.length===0||e.permissions.some(e=>s.value.permissions.includes(e)))),[e=>e[h.value]??``],[g.value===`asc`?`asc`:`desc`])),v=o(()=>{let e=(m.value-1)*p.value,t=e+p.value;return _.value.slice(e,t)}),y=async()=>{await r.fetch({channelId:e})},b=o(()=>a.value.fetching.items.includes(e)?!0:i.value.includes(e)?!1:a.value.fetching.items.includes(e)),x=o(()=>i.value.includes(e)),C=o(()=>r.findAll().filter(t=>!e||t.channel===e).filter(e=>!e.draft).length);return t(()=>u.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),t(()=>m.value,e=>{u.value.page=e}),t(()=>p.value,e=>{u.value.size=e}),t(()=>g.value,e=>{h.value===void 0||e===null?c.value=[]:c.value=[{by:h.value,dir:e}]}),t(()=>h.value,e=>{e===void 0?c.value=[]:c.value=[{by:e,dir:g.value}]}),{properties:_,propertiesPaginated:v,totalRows:C,areLoading:b,loaded:x,fetchProperties:y,filters:s,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:d}},Pe=()=>{let{t:e}=r(),t=T(),n=R().getStore(H);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new Y(`Something went wrong, channel property can't be loaded`);x.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 X&&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 X&&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}`)}))})}}},Fe=({id:e})=>{let t=R().getStore(H);return{icon:o(()=>{switch(t.findById(e)?.category){default:return`mdi:tune`}})}},Ie=b({id:h().uuid().optional(),type:h().trim().nonempty(),channel:h().uuid().optional(),category:d(C).default(C.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty().nullable(),permissions:_(d(A)),dataType:d(P),format:_(M([h(),M([m(),g()])])).nullable(),invalid:M([h(),m(),v(),g()]),step:M([h(),m()]).transform(e=>e===``?null:Number(e)).nullable(),enterValue:v().default(!1),value:M([h(),m(),v(),g()]).optional(),enumValues:_(h()),minValue:M([h(),m()]).transform(e=>e===``?void 0:Number(e)).optional(),maxValue:M([h(),m()]).transform(e=>e===``?void 0:Number(e)).optional()}),Le=b({id:h().uuid(),type:h().trim().nonempty(),channel:h().uuid(),category:d(C).default(C.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty().nullable().optional(),permissions:_(d(A)),dataType:d(P),format:_(M([h(),M([m(),g()])])).nullable(),invalid:M([h(),m(),v(),g()]),step:M([h(),m()]).transform(e=>e===``?null:Number(e)).nullable(),enterValue:v().default(!1),value:M([h(),m(),v(),g()]).optional(),enumValues:_(h()),minValue:M([h(),m()]).transform(e=>e===``?void 0:Number(e)).optional(),maxValue:M([h(),m()]).transform(e=>e===``?void 0:Number(e)).optional()}),Re=()=>{let e=O(),{enabled:t}=E(),n=[`channelPropertyAddForm`,`channelPropertyEditForm`],r=[`channelPropertySchema`,`channelPropertyAddFormSchema`,`channelPropertyEditFormSchema`,`channelPropertyCreateReqSchema`,`channelPropertyUpdateReqSchema`],i=o(()=>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=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),i=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return t||i}):!1));return{plugins:i,options:o(()=>w(i.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>i.value.find(t=>t.type===e),getByType:e=>i.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 i.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},ze=({type:e})=>{let{getByType:t}=Re(),n=o(()=>t(e));return{plugin:n,element:o(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Be=({id:e,type:a,channelId:s})=>{let c=R(),{element:d}=ze({type:a}),f=c.getStore(H),{channels:p,fetchChannels:m,areLoading:h}=ie(),{t:g}=r(),_=T(),v=z(),y=l(K.NONE),b,x=o(()=>N.channel?p.value.find(e=>e.id===N.channel)??null:null),S=o(()=>x.value?f.findForChannel(x.value.id).map(e=>e.category):[]),w=o(()=>x.value?xe[x.value.category]??null:null),E=o(()=>w.value===null?[]:Object.values(C).filter(e=>w.value?.required.includes(e)||w.value?.optional.includes(e)).filter(e=>!S.value.includes(e)).map(e=>({value:e,label:g(`devicesModule.categories.channelsProperties.${e}`)}))),D=o(()=>p.value.map(e=>({value:e.id,label:e.name}))),O=Object.values(A).map(e=>({value:e,label:g(`devicesModule.permissions.${e}`)})),M=Object.values(P).map(e=>({value:e,label:g(`devicesModule.dataTypes.${e}`)})),N=n({...k(d.value?.schemas?.channelPropertyAddFormSchema||Ie),id:e,type:a,channel:s,category:C.generic,name:``,permissions:[],dataType:P.unknown,format:null,invalid:null,step:null,enumValues:[],minValue:void 0,maxValue:void 0,enterValue:!1,value:void 0}),F=j(i(N)),I=l(void 0),L=l(!1),B=async()=>{if(I.value.clearValidate(),!await I.value.validate())throw new Z(`Form not valid`);let t=s??N.channel;if(!t)throw new Z(`Missing channel identifier`);if(N.name===``&&(N.name=null),!N.category)throw new Z(`Missing data type definition`);N.dataType===P.enum?N.format=N.enumValues:[P.char,P.uchar,P.short,P.ushort,P.int,P.uint,P.float].includes(N.dataType)&&(N.format=[typeof N.minValue==`string`&&N.minValue!==``?Number(N.minValue):typeof N.minValue==`number`?N.minValue:null,typeof N.maxValue==`string`&&N.maxValue!==``?Number(N.maxValue):typeof N.maxValue==`number`?N.maxValue:null]),N.enterValue||delete N.value;let n=(d.value?.schemas?.channelPropertyAddFormSchema||Ie).safeParse(N);if(!n.success)throw v.error(`Schema validation failed with:`,n.error),new Z(`Failed to validate create channel property model.`);y.value=K.WORKING;let r=g(`devicesModule.messages.channelsProperties.notCreated`,{device:N.name});try{await f.add({id:e,channelId:t,draft:!1,data:{...n.data,type:a}})}catch(e){throw y.value=K.ERROR,b=window.setTimeout(V,2e3),e instanceof X&&e.code===422?_.error(e.message):_.error(r),e}return y.value=K.OK,b=window.setTimeout(V,2e3),_.success(g(`devicesModule.messages.channelsProperties.created`,{device:N.name})),`added`},V=()=>{window.clearTimeout(b),y.value=K.NONE};return m().catch(()=>{}),t(N,()=>{L.value=!(0,q.isEqual)(i(N),F)}),t(()=>N.category,e=>{let t=Se(x.value?.category??u.generic,e);t&&(F.permissions=t.permissions,F.dataType=t.data_type,N.permissions=t.permissions,N.dataType=t.data_type,t.invalid!==void 0&&(F.invalid=t.invalid,N.invalid=t.invalid),t.step!==void 0&&(F.step=t.step,N.step=t.step),F.dataType===P.enum?(F.enumValues=t.format??[],F.minValue=void 0,F.maxValue=void 0,N.enumValues=t.format??[],N.minValue=void 0,N.maxValue=void 0):[P.char,P.uchar,P.short,P.ushort,P.int,P.uint,P.float].includes(N.dataType)?(F.enumValues=[],F.minValue=t.format?.[0],F.maxValue=t.format?.[1],N.enumValues=[],N.minValue=t.format?.[0],N.maxValue=t.format?.[1]):(F.enumValues=[],F.minValue=void 0,F.maxValue=void 0,N.enumValues=[],N.minValue=void 0,N.maxValue=void 0),L.value=!(0,q.isEqual)(i(N),F))},{immediate:!0}),t(()=>E.value,e=>{e.length&&e[0]&&(N.category=e[0].value,F.category=e[0].value)},{immediate:!0}),{categoriesOptions:E,channelsOptions:D,permissionsOptions:O,dataTypesOptions:M,model:N,formEl:I,formChanged:L,submit:B,clear:V,formResult:y,loadingChannels:h}},Ve=({property:e,messages:a})=>{let s=R(),{element:c}=ze({type:e.type}),u=s.getStore(H),{channels:d,fetchChannels:f,areLoading:p}=ie(),{t:m}=r(),h=T(),g=z(),_=l(K.NONE),v,y=[],b,x;e.dataType===P.enum?y=e.format?e.format.map(e=>e?.toString()||``):[]:[P.char,P.uchar,P.short,P.ushort,P.int,P.uint,P.float].includes(e.dataType)&&Array.isArray(e.format)&&e.format.length===2&&(b=e.format[0],x=e.format[1]);let S=o(()=>d.value.find(t=>t.id===e.channel)??null),w=o(()=>S.value?u.findForChannel(S.value.id).filter(t=>t.id!==e.id).map(e=>e.category):[]),E=o(()=>S.value?xe[S.value.category]??null:null),D=o(()=>E.value===null?[]:Object.values(C).filter(e=>E.value?.required.includes(e)||E.value?.optional.includes(e)).filter(e=>!w.value.includes(e)).map(e=>({value:e,label:m(`devicesModule.categories.channelsProperties.${e}`)}))),O=o(()=>d.value.map(e=>({value:e.id,label:e.name}))),k=Object.values(A).map(e=>({value:e,label:m(`devicesModule.permissions.${e}`)})),M=Object.values(P).map(e=>({value:e,label:m(`devicesModule.dataTypes.${e}`)})),N=n({...e,format:i(e.format),value:e.value?.value??null,enumValues:y,minValue:b,maxValue:x,enterValue:!1}),F=j(i(N)),I=l(void 0),L=l(!1),B=async()=>{let t=e.draft,n=a&&a.error?a.error:e.draft?m(`devicesModule.messages.channelsProperties.notCreated`,{property:e.name??m(`devicesModule.categories.channelsProperties.${e.category}`)}):m(`devicesModule.messages.channelsProperties.notEdited`,{property:e.name??m(`devicesModule.categories.channelsProperties.${e.category}`)});if(I.value.clearValidate(),!await I.value.validate())throw new Z(`Form not valid`);N.name===``&&(N.name=null),e.dataType===P.enum?N.format=N.enumValues:[P.char,P.uchar,P.short,P.ushort,P.int,P.uint,P.float].includes(e.dataType)&&(N.format=[N.minValue??null,N.maxValue??null]),N.enterValue||delete N.value;let r=(c.value?.schemas?.channelPropertyEditFormSchema||Le).safeParse(N);if(!r.success)throw g.error(`Schema validation failed with:`,r.error),new Z(`Failed to validate edit channel property model.`);_.value=K.WORKING;try{await u.edit({id:e.id,channelId:e.channel,data:{...r.data,type:e.type}}),e.draft&&await u.save({id:e.id,channelId:e.channel})}catch(e){throw _.value=K.ERROR,v=window.setTimeout(V,2e3),e instanceof X&&e.code===422?h.error(e.message):h.error(n),e}return _.value=K.OK,v=window.setTimeout(V,2e3),t?(h.success(m(a&&a.success?a.success:`devicesModule.messages.channelsProperties.created`,{property:e.name??m(`devicesModule.categories.channelsProperties.${e.category}`)})),`added`):(h.success(m(a&&a.success?a.success:`devicesModule.messages.channelsProperties.edited`,{property:e.name??m(`devicesModule.categories.channelsProperties.${e.category}`)})),L.value=!1,F=j(i(N)),`saved`)},V=()=>{window.clearTimeout(v),_.value=K.NONE};return f().catch(()=>{}),t(N,()=>{L.value=!(0,q.isEqual)(i(N),F)}),{categoriesOptions:D,channelsOptions:O,permissionsOptions:k,dataTypesOptions:M,model:N,formEl:I,formChanged:L,submit:B,clear:V,formResult:_,loadingChannels:p}},He=({id:e})=>{let t=R().getStore(V),{data:n,semaphore:r}=B(t);return{device:o(()=>e===null?null:n.value[e]??null),isLoading:o(()=>r.value.fetching.item.includes(e)?!0:(n.value[e]??null)===null?r.value.fetching.items:!1),fetchDevice:async()=>{(n.value[e]??null)?.draft||await t.get({id:e})}}},$={search:void 0,types:[],state:`all`,states:[],categories:[],enabled:`all`,validation:`all`},Ue={by:`name`,dir:`asc`},We=()=>{let e=R(),n=e.getStore(V),r=e.getStore(U),{firstLoad:i,semaphore:a}=B(n),{filters:s,sort:c,pagination:u,reset:d}=S({key:`${G}:devices:list`,filters:{schema:le,defaults:$},sort:{defaults:[Ue]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=o(()=>s.value.search!==$.search||!(0,q.isEqual)(s.value.types,$.types)||s.value.state!==$.state||!(0,q.isEqual)(s.value.states,$.states)||!(0,q.isEqual)(s.value.categories,$.categories)||!(0,q.isEqual)(s.value.enabled,$.enabled)||s.value.validation!==$.validation),p=l(u.value.size||10),m=l(u.value.page||1),h=l(c.value.length>0?c.value[0]?.by:void 0),g=l(c.value.length>0?c.value[0]?.dir??null:null),_=e=>r.findById(e)?.isValid??null,v=o(()=>w(n.findAll().filter(e=>!e.draft&&(!s.value.search||e.id.toLowerCase().includes(s.value.search.toLowerCase())||e.name.toLowerCase().includes(s.value.search.toLowerCase())||e.description?.toLowerCase().includes(s.value.search.toLowerCase())||e.identifier?.toLowerCase().includes(s.value.search.toLowerCase()))&&(s.value.types.length===0||s.value.types.includes(e.type))&&(s.value.categories.length===0||s.value.categories.includes(e.category))&&(s.value.enabled===`all`||s.value.enabled===`enabled`&&e.enabled||s.value.enabled===`disabled`&&!e.enabled)&&(s.value.states.length===0||s.value.states.includes(e.status?.status??F.unknown))&&(s.value.state===`all`||s.value.state===`online`&&[F.ready,F.connected,F.running].includes(e.status.status)||s.value.state===`offline`&&[F.disconnected,F.stopped,F.lost,F.unknown].includes(e.status.status))&&(s.value.validation===`all`||s.value.validation===`valid`&&_(e.id)===!0||s.value.validation===`invalid`&&_(e.id)===!1)),[e=>h.value===`state`?e.status?.status??F.unknown:e[h.value]??``],[g.value===`asc`?`asc`:`desc`])),y=o(()=>{let e=(m.value-1)*p.value,t=e+p.value;return v.value.slice(e,t)}),b=async()=>{await n.fetch()},x=o(()=>a.value.fetching.items||!i.value),C=o(()=>i.value),T=o(()=>n.findAll().filter(e=>!e.draft).length);return t(()=>u.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),t(()=>m.value,e=>{u.value.page=e}),t(()=>p.value,e=>{u.value.size=e}),t(()=>g.value,e=>{h.value===void 0||e===null?c.value=[]:c.value=[{by:h.value,dir:e}]}),t(()=>h.value,e=>{e===void 0?c.value=[]:c.value=[{by:e,dir:g.value}]}),{devices:v,devicesPaginated:y,totalRows:T,areLoading:x,loaded:C,fetchDevices:b,filters:s,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:d}},Ge=()=>{let{t:e}=r(),t=T(),n=R().getStore(V);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new Y(`Something went wrong, device can't be loaded`);x.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 X&&n.code===404){let n=e(`devicesModule.messages.devices.notFound`,{device:i.name});t.error(n)}else if(n instanceof X&&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 x.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 x.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 x.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`))}}}},Ke=({id:e})=>{let t=R().getStore(V);return{icon:o(()=>{switch(t.findById(e)?.category){default:return`mdi:devices`}})}},qe=({id:e})=>{let t=R(),n=t.getStore(V),r=t.getStore(W),i=e=>n.findById(e),a=e=>be[e.category]??null;return{canAddAnotherChannel:o(()=>{let t=i(e);if(t===null)return!0;let{required:n,optional:o,multiple:s}=a(t)??{required:[],optional:[]},c=[...n,...o],l=r.findForDevice(t.id).map(e=>e.category);return c.filter(e=>!l.includes(e)).length>0||s!==void 0&&s.length>0}),missingRequiredChannels:o(()=>{let t=i(e);if(t===null)throw new Y(`Something went wrong, device can't be loaded`);let{required:n}=a(t)??{required:[]},o=r.findForDevice(t.id).map(e=>e.category);return n.filter(e=>!o.includes(e))})}},Je=b({id:h().uuid().optional(),type:h().trim().nonempty(),category:d(y).default(y.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty(),description:h().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:v().default(!0).optional()}),Ye=b({id:h().uuid(),type:h().trim().nonempty(),category:d(y).default(y.generic),identifier:h().trim().nonempty().nullable().optional(),name:h().trim().nonempty().optional(),description:h().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:v().optional(),roomId:h().uuid().nullable().optional()}),Xe=()=>{let e=O(),{enabled:t}=E(),n=[`deviceAddForm`,`deviceEditForm`],r=[`deviceSchema`,`deviceAddFormSchema`,`deviceEditFormSchema`,`deviceCreateReqSchema`,`deviceUpdateReqSchema`],i=o(()=>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=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),i=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return t||i}):!1));return{plugins:i,options:o(()=>w(i.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`devices-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>i.value.find(t=>t.type===e),getByType:e=>i.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 i.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`)));if(n)return n}}}},Ze=({type:e})=>{let{getByType:t}=Xe(),n=o(()=>t(e));return{plugin:n,element:o(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`devices-module`))))}},Qe=({id:e,type:a})=>{let o=R(),{element:s}=Ze({type:a}),c=o.getStore(V),{t:u}=r(),d=T(),f=z(),p=l(K.NONE),m,h=Object.values(y).map(e=>({value:e,label:u(`devicesModule.categories.devices.${e}`)})),g=n({...k(s.value?.schemas?.deviceAddFormSchema||Je),id:e,type:a,category:y.generic,name:``,description:``}),_=j(i(g)),v=l(void 0),b=l(!1),x=async()=>{if(v.value.clearValidate(),!await v.value.validate())throw new Z(`Form not valid`);let t=(s.value?.schemas?.deviceAddFormSchema||Je).safeParse(g);if(!t.success)throw f.error(`Schema validation failed with:`,t.error),new Z(`Failed to validate create device model.`);p.value=K.WORKING;let n=u(`devicesModule.messages.devices.notCreated`,{device:g.name});try{await c.add({id:e,draft:!1,data:{...t.data,type:a}})}catch(e){throw p.value=K.ERROR,m=window.setTimeout(S,2e3),e instanceof X&&e.code===422?d.error(e.message):d.error(n),e}return p.value=K.OK,m=window.setTimeout(S,2e3),d.success(u(`devicesModule.messages.devices.created`,{device:g.name})),`added`},S=()=>{window.clearTimeout(m),p.value=K.NONE};return t(g,()=>{b.value=!(0,q.isEqual)(i(g),_)}),{categoriesOptions:h,model:g,formEl:v,formChanged:b,submit:x,clear:S,formResult:p}},$e=({device:e,messages:a})=>{let o=R(),{element:s}=Ze({type:e.type}),c=o.getStore(V),{t:u}=r(),d=T(),f=z(),p=l(K.NONE),m,h=Object.values(y).map(e=>({value:e,label:u(`devicesModule.categories.devices.${e}`)})),g=n(e),_=j(i(g)),v=l(void 0),b=l(!1),x=async()=>{let t=e.draft,n=a&&a.error?a.error:e.draft?u(`devicesModule.messages.devices.notCreated`,{device:e.name}):u(`devicesModule.messages.devices.notEdited`,{device:e.name});if(v.value.clearValidate(),!await v.value.validate())throw new Z(`Form not valid`);let r=(s.value?.schemas?.deviceEditFormSchema||Ye).safeParse(g);if(!r.success)throw f.error(`Schema validation failed with:`,r.error),new Z(`Failed to validate edit device model.`);p.value=K.WORKING;try{await c.edit({id:e.id,data:{...r.data,type:e.type}}),e.draft&&await c.save({id:e.id})}catch(e){throw p.value=K.ERROR,m=window.setTimeout(S,2e3),e instanceof X&&e.code===422?d.error(e.message):d.error(n),e}return p.value=K.OK,m=window.setTimeout(S,2e3),t?(d.success(u(a&&a.success?a.success:`devicesModule.messages.devices.created`,{device:e.name})),`added`):(d.success(u(a&&a.success?a.success:`devicesModule.messages.devices.edited`,{device:e.name})),b.value=!1,_=j(i(g)),`saved`)},S=()=>{window.clearTimeout(m),p.value=K.NONE};return t(g,()=>{b.value=!(0,q.isEqual)(i(g),_)}),{categoriesOptions:h,model:g,formEl:v,formChanged:b,submit:x,clear:S,formResult:p}},et=()=>{let e=R().getStore(U),{data:t,semaphore:n,firstLoad:r}=B(e);return{validation:o(()=>t.value),summary:o(()=>t.value?.summary??null),invalidDevices:o(()=>t.value?t.value.devices.filter(e=>!e.isValid):[]),isLoading:o(()=>n.value.fetching.items),isLoaded:o(()=>r.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}}},tt=({id:e})=>{let t=R().getStore(U),{semaphore:n}=B(t);return{validation:o(()=>t.findById(e)),isValid:o(()=>{let n=t.findById(e);return n?n.isValid:null}),issues:o(()=>{let n=t.findById(e);return n?n.issues:[]}),errorCount:o(()=>{let n=t.findById(e);return n?n.issues.filter(e=>e.severity===`error`).length:0}),warningCount:o(()=>{let n=t.findById(e);return n?n.issues.filter(e=>e.severity===`warning`).length:0}),isLoading:o(()=>n.value.fetching.item.includes(e)),fetchValidation:async()=>{await t.get({id:e})}}},nt=300,rt=1e4,it=({id:n})=>{let r=R(),i=r.getStore(V),a=r.getStore(W),s=r.getStore(H),{data:c,semaphore:d}=B(i),{data:f,semaphore:p,firstLoad:m}=B(a),{semaphore:h,firstLoad:g}=B(s),{sendCommand:_}=N(),v={},y={},b={},x=l({}),S=l({}),C=o(()=>n===null?null:c.value[n]??null),w=o(()=>Object.values(f.value).filter(e=>e.device===n&&e.category!==u.device_information)),T=o(()=>w.value.filter(e=>s.findForChannel(e.id).some(e=>e.permissions.includes(A.rw)||e.permissions.includes(A.wo)))),E=o(()=>T.value.length>0),D=e=>s.findForChannel(e),O=e=>e.permissions.includes(A.rw)||e.permissions.includes(A.wo),k=e=>{let t=x.value[e];return t===void 0?s.findById(e)?.value?.value??null:t},j=e=>S.value[e]??!1,M=(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])},P=(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]},rt)},F=async(e,t,r)=>s.findById(t)?(v[t]&&(clearTimeout(v[t]),delete v[t],y[t]&&(y[t](!1),delete y[t])),x.value[t]=r,new Promise(i=>{y[t]=i;let a=setTimeout(async()=>{delete y[t],S.value[t]=!0;try{await _(se.CHANNEL_PROPERTY_SET,{context:{origin:`admin`},properties:[{device:n,channel:e,property:t,value:r}]},`DevicesModule.Internal.SetPropertyValue`)===!0?(P(t,r),i(!0)):(M(t,r),i(!1))}catch{M(t,r),i(!1)}finally{S.value[t]=!1,v[t]===a&&delete v[t]}},nt);v[t]=a})):!1,I=async()=>{(n in c.value?c.value[n]:null)?.draft||await i.get({id:n})},L=async()=>{await a.fetch({deviceId:n})},z=async()=>{let e=Object.values(f.value).filter(e=>e.device===n);for(let t of e)await s.fetch({channelId:t.id})},ee=o(()=>{if(d.value.fetching.item.includes(n)||p.value.fetching.items.includes(n))return!0;for(let e of w.value)if(h.value.fetching.items.includes(e.id))return!0;return!1}),U=o(()=>m.value.includes(n)),te=o(()=>{if(!U.value)return!1;for(let e of w.value)if(!g.value.includes(e.id))return!1;return!0});return t(()=>{let e={};for(let t of Object.keys(x.value)){let n=s.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))&&M(t)}},{deep:!0}),e(()=>{for(let e of Object.keys(v))clearTimeout(v[e]),delete v[e],y[e]&&(y[e](!1),delete y[e]);for(let e of Object.keys(b))clearTimeout(b[e]),delete b[e]}),{device:C,channels:w,controllableChannels:T,hasControllableProperties:E,isLoading:ee,areChannelsLoaded:U,arePropertiesLoaded:te,fetchDevice:I,fetchChannels:L,fetchProperties:z,getPropertiesForChannel:D,isPropertyWritable:O,getPropertyValue:k,isPropertyLoading:j,setPropertyValue:F}},at=({deviceId:e})=>{let t=R().getStore(ee),{firstLoad:n,semaphore:r}=B(t);return{controls:o(()=>t.findForDevice(e)),areLoading:o(()=>r.value.fetching.items.includes(e)),loaded:o(()=>n.value.includes(e)),fetchControls:async()=>t.fetch({deviceId:e})}},ot=e=>{let n=I(),r=z(),i=l({}),u=l(!1),d=l(!1),f=l(!1),m=l(void 0),h=l(!1),g=null,_=0,v=o(()=>Object.values(i.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),y=o(()=>{let e=[L.warn,L.error,L.fatal,L.fail];return v.value.filter(t=>e.includes(t.type))}),b=o(()=>y.value.length),x=o(()=>b.value>0),S=async()=>{let t=a(e.deviceId);g=t,_++;let o=_;d.value=!0;try{let{data:e,error:a}=await n.client.GET(`/${s}/${p}/logs`,{params:{query:{resource:t,limit:50}}});if(g!==t||_!==o)return;e===void 0?a&&r.error(`Failed to fetch device logs:`,a):(i.value=Object.fromEntries(e.data.map(e=>{let t=ne(e);return[t.id,t]})),f.value=!0,u.value=e.metadata.has_more,m.value=e.metadata.next_cursor)}catch(e){g===t&&_===o&&r.error(`Error fetching device logs:`,e)}finally{g===t&&_===o&&(d.value=!1)}},C=async()=>{if(d.value||!u.value||!m.value)return;let t=a(e.deviceId),o=m.value,c=_;d.value=!0;try{let{data:e,error:a}=await n.client.GET(`/${s}/${p}/logs`,{params:{query:{resource:t,after_id:o,limit:50}}});if(g!==t||_!==c)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=ne(e);return[t.id,t]}));i.value={...i.value,...t},u.value=e.metadata.has_more,m.value=e.metadata.next_cursor}else a&&r.error(`Failed to load more device logs:`,a)}catch(e){g===t&&_===c&&r.error(`Error loading more device logs:`,e)}finally{g===t&&_===c&&(d.value=!1)}},w=async()=>{i.value={},m.value=void 0,u.value=!1,f.value=!1,await S()},T=null;return t(()=>h.value,e=>{T&&=(clearInterval(T),null),e&&(T=setInterval(()=>{d.value||S()},3e3))}),c(()=>{T&&=(clearInterval(T),null)}),t(()=>a(e.deviceId),()=>{w()}),{logs:v,alertLogs:y,alertCount:b,hasAlerts:x,hasMore:u,isLoading:d,loaded:f,live:h,fetchLogs:S,loadMoreLogs:C,refreshLogs:w}};export{Ce as A,G as B,Pe as C,ke as D,Ae as E,X as F,ie as G,se as H,Y as I,re as K,Z as L,Se as M,he as N,Oe as O,me as P,pe as R,Fe as S,je as T,K as U,ae as V,ce as W,Ve as _,et as a,Ie as b,Ze as c,Ye as d,qe as f,He as g,We as h,tt as i,ye as j,Ee as k,Xe as l,Ge as m,at as n,$e as o,Ke as p,it as r,Qe as s,ot as t,Je as u,Be as v,Ne as w,Le as x,Re as y,oe as z};
@@ -0,0 +1 @@
1
+ import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,fi as r,mr as i,ui as a}from"./icon-with-child-DmQ_XhQy.js";import{Cn as o,Hn as s,Kn as c,Nn as l,Pn as u,Un as d,Ur as f,d as p,fn as m,g as h,in as g,k as _,n as v,p as y,w as b,x,ya as S}from"./common-ClYbfzcU.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-DVEtutPb.js";import{i as j,t as M}from"./types-DeArEtXN.js";import{n as N}from"./useDataSources-l9Ib2rAD.js";var P=()=>{let e=_(),{enabled:t}=g(),n=[`pageDetail`,`pageAddForm`,`pageEditForm`],r=[`pageSchema`,`pageAddFormSchema`,`pageEditFormSchema`,`pageCreateReqSchema`,`pageUpdateReqSchema`],a=[`configure`],o=i(()=>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 i=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),a=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return i||a||t})}));return{plugins:o,options:i(()=>m(o.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`dashboard-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName: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}}}},F=()=>{let e=b().getStore(D),{firstLoad:t,semaphore:n}=S(e);return{pages:i(()=>e.findAll().filter(e=>!e.draft)),areLoading:i(()=>!!n.value.fetching.items||!t.value),loaded:i(()=>t.value),fetchPages:async()=>{await e.fetch()}}},I=o(),L={search:void 0,types:[],displays:[]},ee={by:`title`,dir:`asc`},te=()=>{let t=b().getStore(D),{firstLoad:n,semaphore:r}=S(t),{filters:o,sort:s,pagination:c,reset:l}=p({key:`${w}:pages:list`,filters:{schema:j,defaults:L},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=i(()=>o.value.search!==L.search||!(0,I.isEqual)(o.value.types,L.types)||!(0,I.isEqual)(o.value.displays,L.displays)),d=a(c.value.size||10),f=a(c.value.page||1),h=a(s.value.length>0?s.value[0]?.by:void 0),g=a(s.value.length>0?s.value[0]?.dir??null:null),_=i(()=>m(t.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[h.value]??``],[g.value===`asc`?`asc`:`desc`])),v=i(()=>{let e=(f.value-1)*d.value,t=e+d.value;return _.value.slice(e,t)}),y=async()=>{await t.fetch()},x=i(()=>r.value.fetching.items||!n.value),C=i(()=>n.value),T=i(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>c.value,e=>{f.value=e.page??1,d.value=e.size??10},{deep:!0}),e(()=>f.value,e=>{c.value.page=e}),e(()=>d.value,e=>{c.value.size=e}),e(()=>g.value,e=>{h.value===void 0||e===null?s.value=[]:s.value=[{by:h.value,dir:e}]}),e(()=>h.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:g.value}]}),{pages:_,pagesPaginated:v,totalRows:T,areLoading:x,loaded:C,fetchPages:y,filters:o,filtersActive:u,paginateSize:d,paginatePage:f,sortBy:h,sortDir:g,resetFilter:l}},R=()=>{let{t:e}=n(),t=h(),r=b().getStore(D);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new C(`Something went wrong, page can't be loaded`);f.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 r.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 n=>{if(n.length!==0)try{await f.confirm(e(`dashboardModule.texts.pages.confirmBulkRemove`,{count:n.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 n)try{await r.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 t=b().getStore(D);return{icon:i(()=>`mdi:${t.findById(e)?.icon??`view-dashboard`}`)}},B=d({id:c().uuid().optional(),type:c().trim().nonempty(),title:c().trim().nonempty(),icon:c().trim().transform(e=>e===``?null:e).nullable().optional(),order:s(),showTopBar:u().optional(),displays:l(c().uuid()).nullable().optional()}),V=d({id:c().uuid(),type:c().trim().nonempty(),title:c().trim().nonempty().optional(),icon:c().trim().transform(e=>e===``?null:e).nullable().optional(),order:s().optional(),showTopBar:u().optional(),displays:l(c().uuid()).nullable().optional()}),H=({type:e})=>{let{getByType:t}=P(),n=i(()=>t(e));return{plugin:n,element:i(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`))))}},U=({id:i,type:o})=>{let s=b(),{element:c}=H({type:o}),l=s.getStore(D),{t:u}=n(),d=h(),f=x(),p=a(T.NONE),m,g=t({...v(c.value?.schemas?.pageAddFormSchema||B),id:i,type:o,title:``,icon:``,order:0,showTopBar:!0}),_=y(r(g)),S=a(void 0),C=a(!1),w=async()=>{if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let e=(c.value?.schemas?.pageAddFormSchema||B).safeParse(g);if(!e.success)throw f.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create page model.`);p.value=T.WORKING;let t=u(`dashboardModule.messages.pages.notCreated`,{page:g.title});try{await l.add({id:i,draft:!1,data:{...e.data,type:o}})}catch(e){throw p.value=T.ERROR,m=window.setTimeout(k,2e3),e instanceof E&&e.code===422?d.error(e.message):d.error(t),e}return p.value=T.OK,m=window.setTimeout(k,2e3),d.success(u(`dashboardModule.messages.pages.created`,{page:g.title})),`added`},k=()=>{window.clearTimeout(m),p.value=T.NONE};return e(g,()=>{C.value=!(0,I.isEqual)(r(g),_)}),{model:g,formEl:S,formChanged:C,submit:w,clear:k,formResult:p}},W=({page:i,messages:o})=>{let s=b(),{element:c}=H({type:i.type}),l=s.getStore(D),{t:u}=n(),d=h(),f=x(),p=a(T.NONE),m,g=t(i),_=y(r(g)),v=a(void 0),S=a(!1),C=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft?u(`dashboardModule.messages.pages.notCreated`,{page:i.title}):u(`dashboardModule.messages.pages.notEdited`,{page:i.title});if(v.value.clearValidate(),!await v.value.validate())throw new O(`Form not valid`);let n=(c.value?.schemas?.pageEditFormSchema||V).safeParse(g);if(!n.success)throw f.error(`Schema validation failed with:`,n.error),new O(`Failed to validate edit page model.`);p.value=T.WORKING;try{let e;if(e=await l.edit({id:i.id,data:{...n.data,type:i.type}}),i.draft&&(e=await l.save({id:i.id})),e){let t=e;Object.assign(g,t)}}catch(e){throw p.value=T.ERROR,m=window.setTimeout(w,2e3),e instanceof E&&e.code===422?d.error(e.message):d.error(t),e}return p.value=T.OK,m=window.setTimeout(w,2e3),e?(d.success(u(o&&o.success?o.success:`dashboardModule.messages.pages.created`,{page:i.title})),`added`):(d.success(u(o&&o.success?o.success:`dashboardModule.messages.pages.edited`,{page:i.title})),S.value=!1,_=y(r(g)),`saved`)},w=()=>{window.clearTimeout(m),p.value=T.NONE};return e(g,()=>{S.value=!(0,I.isEqual)(r(g),_)}),{model:g,formEl:v,formChanged:S,submit:C,clear:w,formResult:p}},G=e=>{let t=b().getStore(k),{firstLoad:n,semaphore:r}=S(t);return{tiles:i(()=>t.findForParent(e.parent,e.parentId)),areLoading:i(()=>r.value.fetching.items.includes(e.parentId)?!0:n.value.includes(e.parentId)?!1:r.value.fetching.items.includes(e.parentId)),loaded:i(()=>n.value.includes(e.parentId)),fetchTiles:async()=>{await t.fetch({parent:{type:e.parent,id:e.parentId}})}}},K=e=>{let{t}=n(),r=h(),i=b().getStore(k);return{findById:(e,t)=>i.findById(e,t),edit:async e=>i.edit(e),save:async e=>i.save(e),remove:async n=>{let a=i.findById(e.parent,n);if(a===null)throw new C(`Something went wrong, tile can't be loaded`);f.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}}),r.success(t(`dashboardModule.messages.tiles.removed`))}catch(e){if(e instanceof E&&e.code===404){let e=t(`dashboardModule.messages.tiles.notFound`);r.error(e)}else if(e instanceof E&&e.code===422)r.error(e.message);else{let e=t(`dashboardModule.messages.tiles.notRemoved`);r.error(e)}}}).catch(()=>{r.info(t(`dashboardModule.messages.tiles.removeCanceled`))})},removeDirectly:async e=>i.remove(e)}},q=d({id:c().uuid().optional(),type:c().trim().nonempty(),row:s(),col:s(),rowSpan:s(),colSpan:s(),hidden:u()}),J=d({id:c().uuid(),type:c().trim().nonempty(),row:s().optional(),col:s().optional(),rowSpan:s().optional(),colSpan:s().optional(),hidden:u()}),Y=({id:i,parent:o,parentId:s,type:c,onlyDraft:l=!1})=>{let u=b(),{element:d}=N({type:c}),f=u.getStore(k),{t:p}=n(),m=h(),g=x(),_=a(T.NONE),S,C=t({...v(d.value?.schemas?.tileAddFormSchema||q),id:i,type:c,row:1,col:1,rowSpan:1,colSpan:1,hidden:!1}),w=y(r(C)),D=a(void 0),A=a(!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 g.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create tile model.`);_.value=T.WORKING;let t=p(`dashboardModule.messages.tiles.notCreated`);try{await f.add({id:i,parent:{type:o,id:s},draft:l,data:{...e.data,type:c}})}catch(e){throw _.value=T.ERROR,S=window.setTimeout(M,2e3),e instanceof E&&e.code===422?m.error(e.message):m.error(t),e}return _.value=T.OK,S=window.setTimeout(M,2e3),m.success(p(`dashboardModule.messages.tiles.created`)),`added`},M=()=>{window.clearTimeout(S),_.value=T.NONE};return e(C,()=>{A.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:A,submit:j,clear:M,formResult:_}},X=({tile:i,messages:o,onlyDraft:s=!1})=>{let c=b(),{element:l}=N({type:i.type}),u=c.getStore(k),{t:d}=n(),f=h(),p=x(),m=a(T.NONE),g,_=t(i),v=y(r(_)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.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 n=(l.value?.schemas?.tileEditFormSchema||J).safeParse(_);if(!n.success)throw p.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create tile model.`);m.value=T.WORKING;try{await u.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await u.save({id:i.id,parent:i.parent})}catch(e){throw m.value=T.ERROR,g=window.setTimeout(D,2e3),e instanceof E&&e.code===422?f.error(e.message):f.error(t),e}return m.value=T.OK,g=window.setTimeout(D,2e3),e&&!s?(f.success(d(o&&o.success?o.success:`dashboardModule.messages.tiles.created`)),`added`):(f.success(d(o&&o.success?o.success:`dashboardModule.messages.tiles.edited`)),C.value=!1,v=y(r(_)),`saved`)},D=()=>{window.clearTimeout(g),m.value=T.NONE};return e(_,()=>{C.value=!(0,I.isEqual)(r(_),v)}),{model:_,formEl:S,formChanged:C,submit:w,clear:D,formResult:m}},Z=e=>{let{id:t}=e,n=b().getStore(A),{data:r,semaphore:a}=S(n);return{dataSource:i(()=>t===null?null:t in r.value?r.value[t]:null),isLoading:i(()=>a.value.fetching.item.includes(t)?!0:(t in r.value?r.value[t]:null)===null?a.value.fetching.items.includes(e.parentId):!1),fetchDataSource:async()=>{(t in r.value?r.value[t]:null)?.draft||await n.get({id:t,parent:{type:e.parent,id:e.parentId}})}}},Q=d({id:c().uuid().optional(),type:c().trim().nonempty()}),$=d({id:c().uuid(),type:c().trim().nonempty()}),ne=({id:i,type:o,parent:s,parentId:c,onlyDraft:l=!1})=>{let u=b(),{element:d}=M({type:o}),f=u.getStore(A),{t:p}=n(),m=h(),g=x(),_=a(T.NONE),S,C=t({...v(d.value?.schemas?.dataSourceAddFormSchema||Q),id:i,type:o}),w=y(r(C)),D=a(void 0),k=a(!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 g.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create data source model.`);_.value=T.WORKING;let t=p(`dashboardModule.messages.dataSources.notCreated`);try{await f.add({id:i,parent:{type:s,id:c},draft:l,data:{...e.data,type:o}})}catch(e){throw _.value=T.ERROR,S=window.setTimeout(N,2e3),e instanceof E&&e.code===422?m.error(e.message):m.error(t),e}return _.value=T.OK,S=window.setTimeout(N,2e3),m.success(p(`dashboardModule.messages.dataSources.created`)),`added`},N=()=>{window.clearTimeout(S),_.value=T.NONE};return e(C,()=>{k.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:k,submit:j,clear:N,formResult:_}},re=({dataSource:i,messages:o,onlyDraft:s=!1})=>{let c=b(),{element:l}=M({type:i.type}),u=c.getStore(A),{t:d}=n(),f=h(),p=x(),m=a(T.NONE),g,_=t(i),v=y(r(_)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.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 n=(l.value?.schemas?.dataSourceEditFormSchema||$).safeParse(_);if(!n.success)throw p.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create dataSource model.`);m.value=T.WORKING;try{await u.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await u.save({id:i.id,parent:i.parent})}catch(e){throw m.value=T.ERROR,g=window.setTimeout(D,2e3),e instanceof E&&e.code===422?f.error(e.message):f.error(t),e}return m.value=T.OK,g=window.setTimeout(D,2e3),e&&!s?(f.success(d(o&&o.success?o.success:`dashboardModule.messages.dataSources.created`)),`added`):(f.success(d(o&&o.success?o.success:`dashboardModule.messages.dataSources.edited`)),C.value=!1,v=y(r(_)),`saved`)},D=()=>{window.clearTimeout(g),m.value=T.NONE};return e(_,()=>{C.value=!(0,I.isEqual)(r(_),v)}),{model:_,formEl:S,formChanged:C,submit:w,clear:D,formResult:m}};export{z as _,Z as a,F 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,P as x,te as y};