@fastybird/smart-panel-admin 1.1.0-alpha.4 → 1.1.0-alpha.6

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 (236) hide show
  1. package/dist/assets/{alert-BQTYQnER.js → alert-BtC0hQaN.js} +1 -1
  2. package/dist/assets/{card-add-form-Ck6-mLod.js → card-add-form-DLYHqWXC.js} +1 -1
  3. package/dist/assets/{card-edit-form-DxlxRWrN.js → card-edit-form-K7wa-edI.js} +1 -1
  4. package/dist/assets/{checkbox-Ct1KW9j2.js → checkbox-Brn4H-ar.js} +1 -1
  5. package/dist/assets/{clamp-Bz8nCcc6.js → clamp-CxRdsaiJ.js} +1 -1
  6. package/dist/assets/{col-UcL8KWuz.js → col-DHgVtBiy.js} +1 -1
  7. package/dist/assets/{collapse-BMAQOZL8.js → collapse-Ce5pnck0.js} +1 -1
  8. package/dist/assets/{common-BlrTsYp4.js → common-DQQtAVrj.js} +24 -24
  9. package/dist/assets/components-27DhQHKF.js +1 -0
  10. package/dist/assets/components-5sqBa6m6.js +1 -0
  11. package/dist/assets/components-BJQ0MO8_.js +1 -0
  12. package/dist/assets/components-BSeBzm3j.js +1 -0
  13. package/dist/assets/components-BrH_I6yT.js +1 -0
  14. package/dist/assets/{components-PQs_-lBS.js → components-C69JopUr.js} +2 -2
  15. package/dist/assets/{components-C80SHFcG.js → components-CfZD58jR.js} +1 -1
  16. package/dist/assets/components-CxFbS5gV.js +1 -0
  17. package/dist/assets/{components-tSwiG4en.js → components-DP-_PxCR.js} +2 -2
  18. package/dist/assets/{components-DAga4if7.js → components-GvI9olL9.js} +2 -2
  19. package/dist/assets/{composables-B6mqSg_E.js → composables-B0IV09af.js} +1 -1
  20. package/dist/assets/{composables-BRwonHAV.js → composables-B8MvHG4n.js} +1 -1
  21. package/dist/assets/{composables-TDMgkeOk.js → composables-BNc5mHwM.js} +1 -1
  22. package/dist/assets/composables-CEtj6Qds.js +1 -0
  23. package/dist/assets/composables-CWHVZmlg.js +1 -0
  24. package/dist/assets/composables-CYfrqIJ62.js +1 -0
  25. package/dist/assets/{composables-fXtWAsME.js → composables-DRjKkih6.js} +1 -1
  26. package/dist/assets/{composables-MOgrFVd2.js → composables-KyQfXDC3.js} +1 -1
  27. package/dist/assets/{composables-CS735TVh.js → composables-VBwQ9ceK.js} +1 -1
  28. package/dist/assets/{composables-B1UgF1fo.js → composables-_zPISBdj.js} +1 -1
  29. package/dist/assets/{composables-Xla74SYE.js → composables-nFowfQst.js} +1 -1
  30. package/dist/assets/{config-DB5uU6lv.js → config-DycVi21V.js} +2 -2
  31. package/dist/assets/{dashboard-LB4cuZv7.js → dashboard-DZ5wM97E.js} +2 -2
  32. package/dist/assets/{dashboard.types-CmAH61tA.js → dashboard.types-CbXYm-xo.js} +1 -1
  33. package/dist/assets/{data-source-edit-form-B8ccwrVQ.js → data-source-edit-form-DAofDgU-.js} +1 -1
  34. package/dist/assets/{descriptions-D8nHSu3F.js → descriptions-BgeuuBZp.js} +1 -1
  35. package/dist/assets/{devices-ssTsVlfI.js → devices-CLrdZvOm.js} +2 -2
  36. package/dist/assets/{devices-virtual.constants-Dti7rDJR.js → devices-virtual.constants-DfAF3P2t.js} +1 -1
  37. package/dist/assets/{dialog-BICM2Xbe.js → dialog-C_vHe4lp.js} +1 -1
  38. package/dist/assets/{drawer-DJgGmol9.js → drawer-DBEDVZvF.js} +1 -1
  39. package/dist/assets/{form-PoOFmumT.js → form-DhJ_5Z1F.js} +1 -1
  40. package/dist/assets/{index-BgOY6toN.js → index-C5P2_H_o.js} +6 -5
  41. package/dist/assets/{index-qxTMOQVp.css → index-hWiJEHfB.css} +1 -1
  42. package/dist/assets/input-number-C4oLa6SE.js +1 -0
  43. package/dist/assets/{integration-config-dialog-BXTlbFkD.js → integration-config-dialog-sOxOBnDt.js} +1 -1
  44. package/dist/assets/{keys-J7s06zUV.js → keys-xm8ycHBh.js} +1 -1
  45. package/dist/assets/{layout-config-B6OpZGeM.js → layout-config-Dgm7OQfl.js} +1 -1
  46. package/dist/assets/{layout-default-D1wGN9VG.js → layout-default-Dtrjfr-l.js} +1 -1
  47. package/dist/assets/{layout-lock-BVVq9YJ4.js → layout-lock-CvUuWiWS.js} +1 -1
  48. package/dist/assets/layout-profile-CSe087M3.js +1 -0
  49. package/dist/assets/{layout-profile-N3XqNTf3.js → layout-profile-Cb9uN0Wo.js} +1 -1
  50. package/dist/assets/{layout-sign-Di4Hq0yu.js → layout-sign-B6t4a36E.js} +1 -1
  51. package/dist/assets/layout-sign-C0F3N5av.js +1 -0
  52. package/dist/assets/{list-data-sources-adjust-C_E-PVZZ.js → list-data-sources-adjust-BHndxW4t.js} +1 -1
  53. package/dist/assets/{list-locations-CZ9eQzKS.js → list-locations-C9v-b-VI.js} +1 -1
  54. package/dist/assets/{list-users-B5PiiD7k.js → list-users-CkaNzwje.js} +1 -1
  55. package/dist/assets/{logs-entries.transformers-HHWOxKN-.js → logs-entries.transformers-Dn1eByAW.js} +1 -1
  56. package/dist/assets/{mcp.exceptions-BPGtzQ-L.js → mcp.exceptions-CJdD-XdE.js} +1 -1
  57. package/dist/assets/{notifications.exceptions-CwBj-Vvh.js → notifications.exceptions-DmK8KTzC.js} +1 -1
  58. package/dist/assets/{omit-CLxUr8_o.js → omit-BY6NkPsU.js} +1 -1
  59. package/dist/assets/{page-configure-CAdm7vAk.js → page-configure-CFU_N_-1.js} +1 -1
  60. package/dist/assets/{page-configure-DB7q7mTf.js → page-configure-CbJqLuSN.js} +1 -1
  61. package/dist/assets/{pagination-BCuLYs_W.js → pagination-tCeDOW1E.js} +1 -1
  62. package/dist/assets/{radio-Bogyjga1.js → radio-CuFOcY0H.js} +1 -1
  63. package/dist/assets/{scene-add-form-CvhKyMmg.js → scene-add-form-2uFMoqQx.js} +1 -1
  64. package/dist/assets/{scene-edit-form-CqDsd82P.js → scene-edit-form-qz9_SO8P.js} +1 -1
  65. package/dist/assets/{schemas.utils-BHZ0MJE0.js → schemas.utils-CTG3Vn5a.js} +1 -1
  66. package/dist/assets/select-De297TQO.js +1 -0
  67. package/dist/assets/{select-data-source-plugin-B5L75geT.js → select-data-source-plugin-Bf4zZY8r.js} +1 -1
  68. package/dist/assets/{slider-PaPkGT-_.js → slider-DhjaIA9b.js} +1 -1
  69. package/dist/assets/spaces-home-control.constants-L3uLJ74M.js +1 -0
  70. package/dist/assets/{spaces-BrIV4DRc.js → spaces-iXv1ih3G.js} +2 -2
  71. package/dist/assets/{steps-Cw7-fEld.js → steps-DCMUJ24w.js} +1 -1
  72. package/dist/assets/system-BDO-fFTE.js +2 -0
  73. package/dist/assets/{table-BXf7N0rb.js → table-Bej2n2pI.js} +1 -1
  74. package/dist/assets/tabs-ClzYwBwe.js +1 -0
  75. package/dist/assets/{tile-detail-DnXnJ-BI.js → tile-detail-BqMhDMr9.js} +1 -1
  76. package/dist/assets/{tile-edit-form-D1S6rZb5.js → tile-edit-form-B-BmZtAm.js} +1 -1
  77. package/dist/assets/types-AzJb-TPe.js +1 -0
  78. package/dist/assets/types-BFSU5l_h.js +1 -0
  79. package/dist/assets/{use-dialog-aFWpVYsw.js → use-dialog-BE4aKc4E.js} +1 -1
  80. package/dist/assets/{use-ordered-children-CYVizl7x.js → use-ordered-children-B-w46hVS.js} +1 -1
  81. package/dist/assets/useBuddyChat-DCLIzynQ.js +1 -0
  82. package/dist/assets/{useConfigModule-C2d2v37P.js → useConfigModule-DPKpRzOA.js} +1 -1
  83. package/dist/assets/{useDataSources-sR_x_yyt.js → useDataSources-Bjd0snYh.js} +1 -1
  84. package/dist/assets/{useDevicesPlugins-BA5bjG9l.js → useDevicesPlugins-B1S7eZ_6.js} +1 -1
  85. package/dist/assets/useEventBus-1upZv6NA.js +1 -0
  86. package/dist/assets/{useExtensions-QH0QtLKU.js → useExtensions-Cw4mW_zr.js} +1 -1
  87. package/dist/assets/useGeolocation-y3zHAEMb.js +2 -0
  88. package/dist/assets/{useLocation-CghMA-vm.js → useLocation-BfcRW2IZ.js} +1 -1
  89. package/dist/assets/{useMcpClients-Dkh8Ey61.js → useMcpClients-CEtRM4SW.js} +1 -1
  90. package/dist/assets/{useModule-CRJ6yZnq.js → useModule-DDp0sfaf.js} +1 -1
  91. package/dist/assets/{useModules-Ww3v2LZk.js → useModules-CLi9kXcG.js} +1 -1
  92. package/dist/assets/{useNumberFormat-DG8-VSSE.js → useNumberFormat-Dy6fPYP1.js} +1 -1
  93. package/dist/assets/{usePage-iMNf9o87.js → usePage-Bclmn7x9.js} +1 -1
  94. package/dist/assets/{usePersonalTokens-B0Qdlw56.js → usePersonalTokens-VoyREM85.js} +1 -1
  95. package/dist/assets/{usePlugin-BeF6k5Xa.js → usePlugin-CD6VAtXb.js} +1 -1
  96. package/dist/assets/{usePlugins-DvfAfej3.js → usePlugins-BLBNoCg5.js} +1 -1
  97. package/dist/assets/{useSpaces-2SKsqV-l.js → useSpaces-DN7B3r14.js} +1 -1
  98. package/dist/assets/{useUuid-BiNKWprF.js → useUuid-CXUYxryL.js} +1 -1
  99. package/dist/assets/{view-buddy-chat-Dp5GC0Gs.js → view-buddy-chat-BvGkIZsD.js} +1 -1
  100. package/dist/assets/{view-card-add-B_HQdgId.js → view-card-add-CK-twRKG.js} +1 -1
  101. package/dist/assets/view-card-edit-nEKC7fu3.js +1 -0
  102. package/dist/assets/{view-channel-D81kPBqS.js → view-channel-D1DXj4IS.js} +1 -1
  103. package/dist/assets/view-channel-add-CA3meuBn.js +1 -0
  104. package/dist/assets/view-channel-edit-9obXFZQ1.js +1 -0
  105. package/dist/assets/{view-channel-property-add-Dmr4Pof0.js → view-channel-property-add-CjdD3zqa.js} +1 -1
  106. package/dist/assets/view-channel-property-edit-uXnppc2z.js +1 -0
  107. package/dist/assets/view-channels-BFdK4MEX.js +1 -0
  108. package/dist/assets/{view-config-module-edit-_CR9FYc1.js → view-config-module-edit-DDBKKshm.js} +1 -1
  109. package/dist/assets/{view-config-modules-m17c1Itw.js → view-config-modules-DviA9Bju.js} +1 -1
  110. package/dist/assets/{view-config-plugin-edit-uZ2b1wem.js → view-config-plugin-edit-dCfE19by.js} +1 -1
  111. package/dist/assets/{view-config-plugins-D1v4d8_H.js → view-config-plugins-BS6qMBoU.js} +1 -1
  112. package/dist/assets/view-data-source-add-CPuZBOAh.js +1 -0
  113. package/dist/assets/view-data-source-add-lduBhpZy.js +1 -0
  114. package/dist/assets/view-data-source-edit-BGQPem_n.js +1 -0
  115. package/dist/assets/view-data-source-edit-Ch-iiFbk.js +1 -0
  116. package/dist/assets/view-device-DidiYWyD.js +1 -0
  117. package/dist/assets/{view-device-add-Bu88bih4.js → view-device-add-Da5hawUg.js} +1 -1
  118. package/dist/assets/{view-device-control-lUL-9Lf0.js → view-device-control-DQBozXaT.js} +1 -1
  119. package/dist/assets/view-device-edit-Bw28s_co.js +1 -0
  120. package/dist/assets/{view-devices-w36ZAPId.js → view-devices-DIYWWybB.js} +1 -1
  121. package/dist/assets/{view-devices-wizard-CEqpTtVP.js → view-devices-wizard-CSIgRAS0.js} +1 -1
  122. package/dist/assets/{view-display-5Hn5sWPZ.js → view-display-BGCdfR-g.js} +1 -1
  123. package/dist/assets/{view-display-edit-BNQYxXpt.js → view-display-edit-C7sBjAo3.js} +1 -1
  124. package/dist/assets/{view-display-tokens-DJ_IGOcy.js → view-display-tokens-CgpS3tT8.js} +1 -1
  125. package/dist/assets/{view-displays-e9KUJJUz.js → view-displays-C7QQUPQF.js} +1 -1
  126. package/dist/assets/view-extension-detail-CeUWy0MH.js +1 -0
  127. package/dist/assets/view-extensions-b20hgnIF.js +1 -0
  128. package/dist/assets/{view-location-DRXUqln5.js → view-location-CHX9pPb_.js} +1 -1
  129. package/dist/assets/{view-location-add-BNyDqhTZ.js → view-location-add-Df25PMeB.js} +1 -1
  130. package/dist/assets/{view-location-edit-CM1DPwNX.js → view-location-edit-CS_Vj8cf.js} +1 -1
  131. package/dist/assets/view-locations-BvHYF0U7.js +1 -0
  132. package/dist/assets/{view-lock-screen-1Vwm2jGy.js → view-lock-screen-DAtKjcUh.js} +1 -1
  133. package/dist/assets/view-mcp-clients-B0grcN-p.js +1 -0
  134. package/dist/assets/{view-mcp-oauth-consent-B8khqeda.js → view-mcp-oauth-consent-zZ5TLh4J.js} +1 -1
  135. package/dist/assets/{view-mcp-oauth-management-D3c2vSnl.js → view-mcp-oauth-management-Cip6f2L1.js} +1 -1
  136. package/dist/assets/{view-notifications-VJb9gFIy.js → view-notifications-BaEnR3Pr.js} +1 -1
  137. package/dist/assets/view-onboarding-Cynd2vgL.js +1 -0
  138. package/dist/assets/{view-page-oG5xdZtl.js → view-page-CycBTuS4.js} +1 -1
  139. package/dist/assets/view-page-add-lJuSt540.js +1 -0
  140. package/dist/assets/view-page-configure-B1RKo8cr.js +1 -0
  141. package/dist/assets/view-page-configure-BlXGeMEs.js +1 -0
  142. package/dist/assets/view-page-data-source-add-VXSujnwF.js +1 -0
  143. package/dist/assets/view-page-data-source-edit-bdky1W6x.js +1 -0
  144. package/dist/assets/{view-page-edit-D5aq17tK.js → view-page-edit-D7D6s6-W.js} +1 -1
  145. package/dist/assets/{view-page-plugin-YDjLQCR5.js → view-page-plugin-CiWmn73E.js} +1 -1
  146. package/dist/assets/{view-pages-Cm3BDGCm.js → view-pages-D9KmIM6L.js} +1 -1
  147. package/dist/assets/{view-profile-general-BwtoezLV.js → view-profile-general-Yll0-Ev-.js} +1 -1
  148. package/dist/assets/{view-profile-security-D6Wg35cz.js → view-profile-security-C1gC-D49.js} +1 -1
  149. package/dist/assets/{view-remote-access-DXMycWj6.js → view-remote-access-9V2uHvbB.js} +1 -1
  150. package/dist/assets/{view-scene-add-BztY0D7W.js → view-scene-add-CHfWM8yG.js} +1 -1
  151. package/dist/assets/{view-scene-edit-CLSlT_wP.js → view-scene-edit-CQ688euK.js} +1 -1
  152. package/dist/assets/{view-scenes-B2biNvGx.js → view-scenes-Cft3apRA.js} +1 -1
  153. package/dist/assets/{view-sign-in-BDqoekQL.js → view-sign-in-Cj7uaECu.js} +1 -1
  154. package/dist/assets/{view-sign-up-RJHv9boO.js → view-sign-up-BdrGEXiy.js} +1 -1
  155. package/dist/assets/view-simulator-device-wizard-CFPXcDJA.js +1 -0
  156. package/dist/assets/{view-space-add-D17l50VQ.js → view-space-add-BjTWdeU2.js} +1 -1
  157. package/dist/assets/{view-space-configure-CdcttTaV.js → view-space-configure-DmbT-eVp.js} +1 -1
  158. package/dist/assets/view-space-edit-Dw2aUu7C.js +1 -0
  159. package/dist/assets/{view-space-plugin-CfGxgpkq.js → view-space-plugin-DmdOjlmn.js} +1 -1
  160. package/dist/assets/view-spaces-BPaKwImw.js +1 -0
  161. package/dist/assets/{view-spaces-wizard-BPirZ9Aa.js → view-spaces-wizard-BSCSfFSU.js} +1 -1
  162. package/dist/assets/{view-stats-C7nakQuK.js → view-stats-D81ND3z7.js} +1 -1
  163. package/dist/assets/view-system-backups-CVw6njnl.js +1 -0
  164. package/dist/assets/{view-system-info-Cp1GpIxP.js → view-system-info-HOCIJsXv.js} +1 -1
  165. package/dist/assets/{view-system-log-detail-BqUpHdT0.js → view-system-log-detail-DcDWZyBw.js} +1 -1
  166. package/dist/assets/{view-system-logs-CaDq6jb5.js → view-system-logs-BFKXq0XC.js} +1 -1
  167. package/dist/assets/view-tile-add-D5o-RwWw.js +1 -0
  168. package/dist/assets/{view-tile-add-Bpwl35uX.js → view-tile-add-cfR6HnU8.js} +1 -1
  169. package/dist/assets/view-tile-coG5nOBw.js +1 -0
  170. package/dist/assets/view-tile-data-source-add-CRjMqv-p.js +1 -0
  171. package/dist/assets/view-tile-data-source-edit-B5AuS22B.js +1 -0
  172. package/dist/assets/{view-tile-edit-6Pt1jA5V.js → view-tile-edit-CHNpneIB.js} +1 -1
  173. package/dist/assets/view-tile-edit-CapsYutD.js +1 -0
  174. package/dist/assets/view-tile-edit-s58vDnMN.js +1 -0
  175. package/dist/assets/{view-user-add-BPixnli9.js → view-user-add-DL1dQpWZ.js} +1 -1
  176. package/dist/assets/view-user-edit-CpNCmMtT.js +1 -0
  177. package/dist/assets/{view-users-BftTio_a.js → view-users--AuUJkXN.js} +1 -1
  178. package/dist/assets/view-virtual-device-wizard-BK_opc9W.js +1 -0
  179. package/dist/assets/{weather-CXIGebtb.js → weather-BMkz7esx.js} +2 -2
  180. package/dist/assets/{weather-forecast.transformers-CBGYqemp.js → weather-forecast.transformers-CxkPNhxQ.js} +1 -1
  181. package/dist/index.html +92 -92
  182. package/package.json +1 -1
  183. package/dist/assets/components-BCl_vqkh.js +0 -1
  184. package/dist/assets/components-C9BfAORH.js +0 -1
  185. package/dist/assets/components-CMHoBlAe.js +0 -1
  186. package/dist/assets/components-DD7FYiWt.js +0 -1
  187. package/dist/assets/components-DO_OG1j4.js +0 -1
  188. package/dist/assets/components-SsYNmgAe.js +0 -1
  189. package/dist/assets/composables-2m9ra6Gg.js +0 -1
  190. package/dist/assets/composables-DhW08g2b2.js +0 -1
  191. package/dist/assets/composables-PXUNt-tc.js +0 -1
  192. package/dist/assets/input-number-DKFs6rPn.js +0 -1
  193. package/dist/assets/layout-profile-D-1_a6Dd.js +0 -1
  194. package/dist/assets/layout-sign-CvbjLRd2.js +0 -1
  195. package/dist/assets/select-DTgGke01.js +0 -1
  196. package/dist/assets/spaces-home-control.constants-DDgSTbk_.js +0 -1
  197. package/dist/assets/system-vwMzG0n-.js +0 -2
  198. package/dist/assets/tabs-bVTlvkzX.js +0 -1
  199. package/dist/assets/types-BrtPl24B.js +0 -1
  200. package/dist/assets/types-DvlsZ8qQ.js +0 -1
  201. package/dist/assets/useBuddyChat-DvQPgsIX.js +0 -1
  202. package/dist/assets/useEventBus-BH4WQ_nq.js +0 -1
  203. package/dist/assets/useGeolocation-Dpq2oORG.js +0 -2
  204. package/dist/assets/view-card-edit-PY_ojb6G.js +0 -1
  205. package/dist/assets/view-channel-add-BDAhIVSG.js +0 -1
  206. package/dist/assets/view-channel-edit-DKlAEpSj.js +0 -1
  207. package/dist/assets/view-channel-property-edit-JEpqggmD.js +0 -1
  208. package/dist/assets/view-channels-BKSWhLoe.js +0 -1
  209. package/dist/assets/view-data-source-add-D7uUH5Uc.js +0 -1
  210. package/dist/assets/view-data-source-add-JOqY3Ax9.js +0 -1
  211. package/dist/assets/view-data-source-edit-BItu4eum.js +0 -1
  212. package/dist/assets/view-data-source-edit-DEg93Qr3.js +0 -1
  213. package/dist/assets/view-device-CnD7tkpn.js +0 -1
  214. package/dist/assets/view-device-edit-B2ShGrc0.js +0 -1
  215. package/dist/assets/view-extension-detail-DYXXXTnU.js +0 -1
  216. package/dist/assets/view-extensions-yiDjod3v.js +0 -1
  217. package/dist/assets/view-locations-BN8GPdnZ.js +0 -1
  218. package/dist/assets/view-mcp-clients-f9t--2J2.js +0 -1
  219. package/dist/assets/view-onboarding-FDxjKhsz.js +0 -1
  220. package/dist/assets/view-page-add-BDPt_b8F.js +0 -1
  221. package/dist/assets/view-page-configure-BPWn7Ny3.js +0 -1
  222. package/dist/assets/view-page-configure-DvDNUd1u.js +0 -1
  223. package/dist/assets/view-page-data-source-add-QHJueyUu.js +0 -1
  224. package/dist/assets/view-page-data-source-edit-Cu3WiaWl.js +0 -1
  225. package/dist/assets/view-simulator-device-wizard-ZbG48GiT.js +0 -1
  226. package/dist/assets/view-space-edit-v7oroJrp.js +0 -1
  227. package/dist/assets/view-spaces-CsxjOkle.js +0 -1
  228. package/dist/assets/view-system-backups-PKWXNINV.js +0 -1
  229. package/dist/assets/view-tile-CB1KgK-5.js +0 -1
  230. package/dist/assets/view-tile-add-Ct5UPyHj.js +0 -1
  231. package/dist/assets/view-tile-data-source-add-BsUJ65SR.js +0 -1
  232. package/dist/assets/view-tile-data-source-edit-CfH2RQMK.js +0 -1
  233. package/dist/assets/view-tile-edit-Cu1iNWgN.js +0 -1
  234. package/dist/assets/view-tile-edit-DLOgjyK4.js +0 -1
  235. package/dist/assets/view-user-edit-BxxSMKU4.js +0 -1
  236. package/dist/assets/view-virtual-device-wizard-BHhNlN0I.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/view-locations-BN8GPdnZ.js","assets/rolldown-runtime-QTnfLwEv.js","assets/icon-with-child-CgZMNB3F.js","assets/icon-with-child-1Kb-D21P.css","assets/vue-meta.esm-browser.min-C5z7o_np.js","assets/common-BlrTsYp4.js","assets/common-BI15rKA4.css","assets/checkbox-Ct1KW9j2.js","assets/omit-CLxUr8_o.js","assets/_baseClone-BRvt9rE2.js","assets/radio-Bogyjga1.js","assets/collapse-BMAQOZL8.js","assets/drawer-DJgGmol9.js","assets/use-dialog-aFWpVYsw.js","assets/config-DB5uU6lv.js","assets/directive-D42ORGRu.js","assets/useModules-Ww3v2LZk.js","assets/dist-DJgPCOr0.js","assets/config.constants-17QBQ_kF.js","assets/usePlugins-DvfAfej3.js","assets/usePlugin-BeF6k5Xa.js","assets/useConfigModule-C2d2v37P.js","assets/useModule-CRJ6yZnq.js","assets/useLocation-CghMA-vm.js","assets/composables-CS735TVh.js","assets/weather.constants-_S0I_w_Q.js","assets/types-BrtPl24B.js","assets/list-locations-CZ9eQzKS.js","assets/table-BXf7N0rb.js","assets/form-PoOFmumT.js","assets/card-C50YgvLJ.js","assets/link-mE1gaRBg.js","assets/pagination-BCuLYs_W.js","assets/select-DTgGke01.js","assets/clamp-Bz8nCcc6.js","assets/useNumberFormat-DG8-VSSE.js","assets/weather-icon-BogpHIOS.js","assets/view-locations-DBYp9MTj.css","assets/view-location-add-BNyDqhTZ.js","assets/alert-BQTYQnER.js","assets/useUuid-BiNKWprF.js","assets/view-location-edit-CM1DPwNX.js","assets/skeleton-DkyCzTs7.js","assets/composables-PXUNt-tc.js","assets/view-location-DRXUqln5.js","assets/weather-forecast.transformers-CBGYqemp.js"])))=>i.map(i=>d[i]);
2
- import"./rolldown-runtime-QTnfLwEv.js";import{Ar as e,D as t,Dr as n,Er as r,H as i,Mr as a,Nr as o,O as s,Or as c,Pr as l,Qr as u,Si as d,T as f,Vr as p,Wi as m,Wr as h,bi as g,ci as _,di as v,ei as y,i as b,ji as x,k as S,kr as C,n as w,qi as T,t as ee,ui as E,x as te,xr as D,yr as ne}from"./icon-with-child-CgZMNB3F.js";import{Ar as re,G as ie,Gr as ae,Qn as O,T as oe,Vt as k,_ as A,a as se,br as ce,bt as j,c as le,ct as M,dt as N,f as ue,gt as P,ht as F,m as de,oa as fe,p as pe,sa as me,ti as I,u as he,vr as ge,w as _e,x as ve,y as L,yt as R}from"./common-BlrTsYp4.js";import{n as z,t as ye}from"./descriptions-D8nHSu3F.js";import{n as be,t as xe}from"./form-PoOFmumT.js";import{t as Se}from"./alert-BQTYQnER.js";import{r as Ce,t as we}from"./select-DTgGke01.js";import{t as B}from"./card-C50YgvLJ.js";import{x as Te}from"./components-PQs_-lBS.js";import{t as Ee}from"./directive-D42ORGRu.js";import{_ as De,a as Oe,d as ke,f as Ae,h as je,i as Me,p as Ne}from"./config-DB5uU6lv.js";import{r as Pe}from"./useModules-Ww3v2LZk.js";import{n as V,t as H}from"./useNumberFormat-DG8-VSSE.js";import{c as Fe,l as Ie,n as Le,r as Re,s as ze}from"./config.constants-17QBQ_kF.js";import{t as Be}from"./useConfigModule-C2d2v37P.js";import{f as Ve}from"./keys-DgS2vm-E.js";import"./dashboard-LB4cuZv7.js";import{c as He}from"./keys-J7s06zUV.js";import{t as Ue}from"./useSpaces-2SKsqV-l.js";import{a as We,c as Ge,i as U,l as Ke,n as qe,o as W,r as Je,s as Ye}from"./useLocation-CghMA-vm.js";import{_ as Xe,c as G,d as Ze,f as Qe,g as $e,l as et,s as tt,u as nt}from"./composables-CS735TVh.js";import{a as K,n as rt,o as q,r as J,t as Y}from"./weather.constants-_S0I_w_Q.js";import{o as it}from"./devices.constants-HX5whDWr.js";import"./devices-ssTsVlfI.js";import"./spaces-BrIV4DRc.js";import{t as at}from"./weather-icon-BogpHIOS.js";import"./composables-PXUNt-tc.js";import"./list-locations-CZ9eQzKS.js";import{n as ot,t as st}from"./weather-forecast.transformers-CBGYqemp.js";P({reqPerMin:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))})}),P({clientsNow:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))})}),P({cpuLoad1m:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:P({value:F().nullable(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:P({value:F().nullable(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))})}),P({registeredPages:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))})}),P({registeredDevices:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:P({value:F(),lastUpdated:j([R().datetime({offset:!0}),M()]).transform(e=>e instanceof Date?e:new Date(e))})});var ct=`stats`,lt=`stats-module`,ut=`StatsModule.`,dt=function(e){return e.STATS_INFO=`StatsModule.Stats.Info`,e}({}),ft={STATS:`stats_module-module`},X=300*1e3,pt=Symbol(`FB-Module-Stats-Stats`),mt=class extends Error{exception;constructor(e,t=null){super(e),this.name=`StatsException`,this.exception=t}},ht=class extends mt{code;constructor(e,t=null,n=null){super(e,n),this.name=`StatsApiException`,this.code=t}},gt=class extends mt{constructor(e,t=null){super(e,t),this.name=`StatsValidationException`}},_t={class:`flex flex-row items-center justify-between`},vt={key:0},yt={key:1},bt={key:2,class:`max-h-[350px] overflow-auto bg-[var(--el-fill-color-light)]`},xt={class:`truncate`},St={key:0,class:`text-gray-500`},Ct={class:`ml-1`},wt=l({name:`ApplicationLogs`,__name:`application-logs`,props:{systemLogs:{},filters:{},filtersActive:{type:Boolean},loading:{type:Boolean,default:!1}},emits:[`refresh`,`reset`,`detail`],setup(r,{emit:i}){let l=r,d=i,{t:m}=f(),h=ce(l,`filters`,d),g=[O.silent,O.fatal,O.error,O.warn,O.log,O.info,O.success,O.fail,O.debug],_=e=>ge(new Date(e)),b=e=>new Date(e).toISOString(),w=e=>[O.fatal,O.error,O.fail].includes(e)?{type:`danger`,effect:`light`}:[O.warn].includes(e)?{type:`warning`,effect:`light`}:[O.success,O.info,O.log].includes(e)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`};return(i,f)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:E(()=>[n(`div`,_t,[a(T(x(m)(`statsModule.headings.logs`))+` `,1),n(`div`,null,[o(x(Ce),{modelValue:x(h).levels,"onUpdate:modelValue":f[0]||=e=>x(h).levels=e,size:`small`,class:`mr-1 w-[180px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``},{default:E(()=>[(u(),e(D,null,y(g,e=>o(x(we),{key:e,label:x(m)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),o(x(S),{size:`small`,class:`px-2! ml-1!`,onClick:f[1]||=e=>d(`refresh`)},{icon:E(()=>[o(x(t),{icon:`mdi:refresh`})]),_:1}),o(x(S),{size:`small`,class:`px-2! ml-1!`,onClick:f[2]||=e=>d(`detail`)},{icon:E(()=>[o(x(t),{icon:`mdi:console`})]),_:1})])])]),default:E(()=>[v((u(),e(`div`,null,[r.filtersActive&&r.systemLogs.length===0&&!l.loading?(u(),e(`div`,vt,[o(x(s),{class:`h-full w-full`},{icon:E(()=>[o(x(ee),{size:80},{primary:E(()=>[o(x(t),{icon:`mdi:console`})]),secondary:E(()=>[o(x(t),{icon:`mdi:filter-multiple`})]),_:1})]),title:E(()=>[o(x(re),{class:`block`},{default:E(()=>[a(T(x(m)(`statsModule.texts.noFilteredLogs`)),1)]),_:1}),o(x(S),{type:`primary`,plain:``,class:`mt-4`,onClick:f[3]||=e=>d(`reset`)},{icon:E(()=>[o(x(t),{icon:`mdi:filter-off`})]),default:E(()=>[a(` `+T(x(m)(`statsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):r.systemLogs.length===0&&!l.loading?(u(),e(`div`,yt,[o(x(s),{class:`h-full w-full`},{icon:E(()=>[o(x(ee),{size:80},{primary:E(()=>[o(x(t),{icon:`mdi:console`})]),secondary:E(()=>[o(x(t),{icon:`mdi:information`})]),_:1})]),title:E(()=>[a(T(x(m)(`statsModule.texts.noLogs`)),1)]),_:1})])):(u(),e(`div`,bt,[(u(!0),e(D,null,y(r.systemLogs,(t,r)=>(u(),e(`div`,{key:r,class:`grid grid-cols-[110px_60px_1fr] gap-x-4 text-xs b-b b-b-solid last:b-b-none mb-1 last:mb-0 px-2 py-1 items-center`},[o(x(I),{content:b(t.ts),placement:`top-start`},{default:E(()=>[a(T(_(t.ts)),1)]),_:2},1032,[`content`]),o(x(ae),p({ref_for:!0},w(t.type),{size:`small`}),{default:E(()=>[a(T(t.type),1)]),_:2},1040),n(`div`,xt,[t.tag?(u(),e(`span`,St,` [`+T(t.tag)+`] `,1)):C(``,!0),n(`span`,Ct,T(t.message),1)])]))),128))]))])),[[x(Ee),r.loading]])]),_:1}))}}),Tt={class:`grid grid-cols-3 gap-2`},Et={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},Dt={class:`font-bold text-lg mt-1`},Ot={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},kt={class:`font-bold text-lg mt-1`},At={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},jt={class:`font-bold text-lg mt-1 flex flex-row items-center`},Mt=l({name:`ApplicationOverview`,__name:`application-overview`,props:{apiModuleSection:{},websocketModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let{t:r}=f(),{connected:s}=se(),l=d(`1.1.0-alpha.4`);return(d,f)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(r)(`statsModule.headings.applicationOverview`)),1)]),default:E(()=>[n(`div`,Tt,[n(`div`,null,[n(`div`,Et,T(x(r)(`statsModule.fields.applicationOverview.version.title`)),1),n(`div`,Dt,T(l.value),1)]),n(`div`,null,[n(`div`,Ot,[o(x(I),{content:x(r)(`statsModule.fields.applicationOverview.apip95.tooltip`),placement:`top-start`},{default:E(()=>[o(x(i),{class:`mr-2`,size:14},{default:E(()=>[o(x(t),{icon:`mdi:info-circle-outline`})]),_:1})]),_:1},8,[`content`]),a(` `+T(x(r)(`statsModule.fields.applicationOverview.apip95.title`)),1)]),n(`div`,kt,T(e.apiModuleSection?.p95Ms5m.value??0)+` ms`,1)]),n(`div`,null,[n(`div`,At,T(x(r)(`statsModule.fields.applicationOverview.webSocket.title`)),1),n(`div`,jt,[n(`span`,{class:m({"color-[var(--el-color-success)]":x(s),"color-[var(--el-color-warning)]":!x(s)})},T(x(s)?x(r)(`statsModule.fields.applicationOverview.webSocket.state.connected`):x(r)(`statsModule.fields.applicationOverview.webSocket.state.disconnected`)),3)])])])]),_:1}))}}),Nt={class:`flex flex-row flex-wrap gap-2`},Pt=l({name:`QuickLinks`,__name:`quick-links`,setup(e){let r=te(),{t:i}=f(),s=()=>{r.push({name:He.SPACES})},l=()=>{r.push({name:Ve.PAGES})},d=()=>{r.push({name:it.DEVICES})},p=()=>{r.push({name:Ie.CONFIG})},m=()=>{window.open(`https://smart-panel.fastybird.com/docs`,`_blank`,`noopener,noreferrer`)};return(e,r)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(i)(`statsModule.headings.quickLinks`)),1)]),default:E(()=>[n(`div`,Nt,[o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:s},{icon:E(()=>[o(x(t),{icon:`mdi:home-group`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.spaces.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:l},{icon:E(()=>[o(x(t),{icon:`mdi:view-dashboard`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.pages.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:d},{icon:E(()=>[o(x(t),{icon:`mdi:devices`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.devices.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:p},{icon:E(()=>[o(x(t),{icon:`mdi:cog`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.config.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:m},{icon:E(()=>[o(x(t),{icon:`mdi:book-open-page-variant`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.docs.title`)),1)]),_:1})])]),_:1}))}}),Ft={class:`flex flex-col gap-2`},It={class:`font-bold`},Lt={class:`font-mono text-xs`},Rt={class:`block overflow-hidden text-ellipsis whitespace-nowrap pr-4`},zt=l({name:`SystemInformation`,__name:`system-information`,props:{systemInfo:{},configApp:{},loading:{type:Boolean,default:!1}},setup(e){let t=e,{t:r}=f(),{success:i}=pe(),s=()=>{navigator.clipboard.writeText(t.configApp?.path||``),i(`Config path copied to clipboard!`)};return(t,i)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:E(()=>[a(T(x(r)(`statsModule.headings.systemInformation`)),1)]),default:E(()=>[v((u(),c(x(ye),{column:1,size:`small`,border:``},{default:E(()=>[o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.timezone.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.os.timezone),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.operatingSystem.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.os.distro)+` `+T(e.systemInfo?.os.platform)+` `+T(e.systemInfo?.os.release),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.hostname.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.hostname),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.ipv4.title`))+` (`+T(e.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.ip4),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.ipv6.title`))+` (`+T(e.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.ip6),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none! border-b-none! config-path-cell`,"label-class-name":`border-l-none! border-t-none! border-b-none! whitespace-nowrap!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.configPath.title`)),1)]),default:E(()=>[o(x(I),{placement:`top-start`},{content:E(()=>[n(`div`,Ft,[n(`div`,It,T(x(r)(`statsModule.fields.systemInformation.configPath.tooltip`)),1),n(`span`,Lt,T(e.configApp?.path),1),o(x(S),{size:`small`,type:`primary`,onClick:ne(s,[`stop`])},{default:E(()=>[a(T(x(r)(`statsModule.buttons.copy.title`)),1)]),_:1})])]),default:E(()=>[n(`span`,Rt,T(e.configApp?.path),1)]),_:1})]),_:1})]),_:1})),[[x(Ee),e.loading]])]),_:1}))}}),Bt={class:`flex flex-col gap-2`},Vt={class:`font-bold text-2xl`},Ht={class:`color-[var(--el-text-color-secondary)]`},Ut=l({name:`StatsCpu`,__name:`stats-cpu`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),{formatPct:d}=H(),p=r(()=>{let e=s.systemModuleSection?.cpuLoad1m.lastUpdated?s.systemModuleSection?.cpuLoad1m.lastUpdated.getTime():0;return!e||Date.now()-e>X}),m=r(()=>Number(s.systemModuleSection?.cpuLoad1m.value??0));return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.cpu`)),1)]),default:E(()=>[n(`div`,Bt,[n(`div`,Vt,[e.systemModuleSection?.cpuLoad1m.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.cpuLoad1m.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(x(d)(e.systemModuleSection?.cpuLoad1m.value)),1)]),n(`div`,Ht,T(x(l)(`statsModule.fields.cpu.temperature.title`,{temperature:e.systemInfo?.temperature.cpu??x(l)(`application.value.notAvailable`),unit:`°C`})),1),o(x(Te),{percentage:m.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),Wt={class:`flex flex-row items-center`},Gt={class:`color-[var(--el-text-color-secondary)]`},Kt={class:`text-3xl mt-1 flex flex-row items-center`},qt=l({name:`StatsDashboard`,__name:`stats-dashboard`,props:{dashboardModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),d=r(()=>{let e=s.dashboardModuleSection?.registeredPages.lastUpdated?s.dashboardModuleSection?.registeredPages.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Wt,[a.dashboardModuleSection?.registeredPages.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.dashboardModuleSection?.registeredPages.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[d.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,Gt,T(x(l)(`statsModule.headings.dashboard`)),1)]),n(`div`,Kt,T(a.dashboardModuleSection?.registeredPages.value??0),1)],64))}}),Jt={class:`flex flex-row items-center`},Yt={class:`color-[var(--el-text-color-secondary)]`},Xt={class:`text-3xl mt-1 flex flex-row items-center`},Zt=l({name:`StatsDevices`,__name:`stats-devices`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.devicesModuleSection?.onlineNow.lastUpdated?s.devicesModuleSection?.onlineNow.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Jt,[a.devicesModuleSection?.onlineNow.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.devicesModuleSection?.onlineNow.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,Yt,T(x(l)(`statsModule.headings.devices`)),1)]),n(`div`,Xt,T(x(d)(a.devicesModuleSection?.onlineNow.value??0,{maximumFractionDigits:0})),1)],64))}}),Qt={class:`flex flex-row items-center`},$t={class:`color-[var(--el-text-color-secondary)]`},en={class:`text-3xl mt-1 flex flex-row items-center`},tn=l({name:`StatsDevicesCommunication`,__name:`stats-devices-communication`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.devicesModuleSection?.updatesToday.lastUpdated?s.devicesModuleSection?.updatesToday.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Qt,[a.devicesModuleSection?.updatesToday.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.devicesModuleSection?.updatesToday.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,$t,T(x(l)(`statsModule.headings.devicesCommunication`)),1)]),n(`div`,en,T(x(d)(a.devicesModuleSection?.updatesToday.value??0,{maximumFractionDigits:0})),1)],64))}}),nn={class:`flex flex-col gap-2`},rn={class:`font-bold text-2xl`},an={class:`color-[var(--el-text-color-secondary)]`},on=l({name:`StatsMemory`,__name:`stats-memory`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.systemModuleSection?.memUsedPct.lastUpdated?s.systemModuleSection?.memUsedPct.lastUpdated.getTime():0;return!e||Date.now()-e>X}),m=r(()=>Number(s.systemModuleSection?.memUsedPct.value??0));return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.memory`)),1)]),default:E(()=>[n(`div`,nn,[n(`div`,rn,[e.systemModuleSection?.memUsedPct.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.memUsedPct.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(x(d)((e.systemInfo?.memory.used??0)/1024/1024,{maximumFractionDigits:0}))+` MB `,1)]),n(`div`,an,T(x(l)(`statsModule.fields.memory.total.title`,{total:x(d)((e.systemInfo?.memory.total??0)/1024/1024,{maximumFractionDigits:0}),unit:`MB`})),1),o(x(Te),{percentage:m.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),sn={class:`flex flex-row items-center`},cn={class:`color-[var(--el-text-color-secondary)]`},ln={class:`text-3xl mt-1 flex flex-row items-center`},un=l({name:`StatsSpaces`,__name:`stats-spaces`,props:{loading:{type:Boolean,default:!1}},setup(t){let{t:i}=f(),{spaces:a,fetchSpaces:o}=Ue(),s=r(()=>a.value.filter(e=>!e.draft)),c=r(()=>s.value.length);return h(()=>{o()}),(t,r)=>(u(),e(D,null,[n(`div`,sn,[n(`span`,cn,T(x(i)(`statsModule.headings.spaces`)),1)]),n(`div`,ln,T(c.value),1)],64))}}),dn={class:`flex flex-col gap-2`},fn={class:`font-bold text-2xl`},pn={class:`color-[var(--el-text-color-secondary)]`},mn=l({name:`StatsUptime`,__name:`stats-uptime`,props:{systemModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),d=e=>{if(e==null)return`—`;let t=Math.max(0,Math.floor(e)),n=Math.floor(t/86400),r=Math.floor(t%86400/3600).toString().padStart(2,`0`),i=Math.floor(t%3600/60).toString().padStart(2,`0`),a=Math.floor(t%60).toString().padStart(2,`0`);return n?`${n}d ${r}:${i}:${a}`:`${r}:${i}:${a}`},p=r(()=>{let e=s.systemModuleSection?.systemUptimeSec.lastUpdated?s.systemModuleSection?.systemUptimeSec.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.uptime`)),1)]),default:E(()=>[n(`div`,dn,[n(`div`,fn,[e.systemModuleSection?.systemUptimeSec.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.systemUptimeSec.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(d(e.systemModuleSection?.systemUptimeSec.value)),1)]),n(`div`,pn,T(x(l)(`statsModule.fields.uptime.process.title`,{uptime:d(e.systemModuleSection?.processUptimeSec.value)})),1)])]),_:1}))}}),hn=()=>{let e=ve().getStore(pt),{data:t,semaphore:n}=me(e);return{stats:r(()=>t.value),isLoading:r(()=>t.value===null&&n.value.getting),fetchStats:async()=>{await e.get()}}},Z=ue(),gn={class:`flex flex-col items-center gap-3`},_n={class:`font-bold text-2xl`},vn={class:`flex flex-row items-start gap-1`},yn={class:`font-bold text-4xl`},bn={class:`text-lg text-gray-400`},xn=l({name:`WeatherDay`,__name:`weather-day`,setup(e){let{t:s}=f(),{format:l}=H(),{weatherDay:d,fetchWeatherDay:p,isLoading:m}=Xe(),{configModule:g,fetchConfigModule:_}=Be({type:K}),y=r(()=>d.value?.temperature||null),b=r(()=>g.value?.unit===`fahrenheit`?`°F`:`°C`),S=r(()=>d.value===null?`wi:na`:at(d.value.weather.code,d.value.sunrise,d.value.sunset)),C=r(()=>{if(d.value===null)return s(`weatherModule.conditions.unknown`);switch(d.value.weather.code){case 200:return s(`weatherModule.conditions.thunderstormWithLightRain`);case 201:return s(`weatherModule.conditions.thunderstormWithRain`);case 202:return s(`weatherModule.conditions.thunderstormWithHeavyRain`);case 210:return s(`weatherModule.conditions.lightThunderstorm`);case 211:return s(`weatherModule.conditions.thunderstorm`);case 212:return s(`weatherModule.conditions.heavyThunderstorm`);case 221:return s(`weatherModule.conditions.raggedThunderstorm`);case 230:return s(`weatherModule.conditions.thunderstormWithLightDrizzle`);case 231:return s(`weatherModule.conditions.thunderstormWithDrizzle`);case 232:return s(`weatherModule.conditions.thunderstormWithHeavyDrizzle`);case 300:return s(`weatherModule.conditions.lightIntensityDrizzle`);case 301:return s(`weatherModule.conditions.drizzle`);case 302:return s(`weatherModule.conditions.heavyIntensityDrizzle`);case 310:return s(`weatherModule.conditions.lightIntensityDrizzleRain`);case 311:return s(`weatherModule.conditions.drizzleRain`);case 312:return s(`weatherModule.conditions.heavyIntensityDrizzleRain`);case 313:return s(`weatherModule.conditions.showerRainAndDrizzle`);case 314:return s(`weatherModule.conditions.heavyShowerRainAndDrizzle`);case 321:return s(`weatherModule.conditions.showerDrizzle`);case 500:return s(`weatherModule.conditions.lightRain`);case 501:return s(`weatherModule.conditions.moderateRain`);case 502:return s(`weatherModule.conditions.heavyIntensityRain`);case 503:return s(`weatherModule.conditions.veryHeavyRain`);case 504:return s(`weatherModule.conditions.extremeRain`);case 511:return s(`weatherModule.conditions.freezingRain`);case 520:return s(`weatherModule.conditions.lightIntensityShowerRain`);case 521:return s(`weatherModule.conditions.showerRain`);case 522:return s(`weatherModule.conditions.heavyIntensityShowerRain`);case 531:return s(`weatherModule.conditions.raggedShowerRain`);case 600:return s(`weatherModule.conditions.lightSnow`);case 601:return s(`weatherModule.conditions.snow`);case 602:return s(`weatherModule.conditions.heavySnow`);case 611:return s(`weatherModule.conditions.sleet`);case 612:return s(`weatherModule.conditions.lightShowerSleet`);case 613:return s(`weatherModule.conditions.showerSleet`);case 615:return s(`weatherModule.conditions.lightRainAndSnow`);case 616:return s(`weatherModule.conditions.rainAndSnow`);case 620:return s(`weatherModule.conditions.lightShowerSnow`);case 621:return s(`weatherModule.conditions.showerSnow`);case 622:return s(`weatherModule.conditions.heavyShowerSnow`);case 701:return s(`weatherModule.conditions.mist`);case 711:return s(`weatherModule.conditions.smoke`);case 721:return s(`weatherModule.conditions.haze`);case 731:return s(`weatherModule.conditions.dust`);case 741:return s(`weatherModule.conditions.fog`);case 751:return s(`weatherModule.conditions.sand`);case 761:return s(`weatherModule.conditions.dust`);case 762:return s(`weatherModule.conditions.volcanicAsh`);case 771:return s(`weatherModule.conditions.squalls`);case 781:return s(`weatherModule.conditions.tornado`);case 800:return s(`weatherModule.conditions.clearSky`);case 801:return s(`weatherModule.conditions.fewClouds`);case 802:return s(`weatherModule.conditions.scatteredClouds`);case 803:return s(`weatherModule.conditions.brokenClouds`);case 804:return s(`weatherModule.conditions.overcastClouds`);default:return s(`weatherModule.conditions.unknown`)}});return h(async()=>{_().catch(e=>{throw new We(`Something went wrong`,e)}),p().catch(e=>{throw new We(`Something went wrong`,e)})}),(e,r)=>v((u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(s)(`weatherModule.headings.weather`)),1)]),default:E(()=>[n(`div`,gn,[o(x(i),{class:`mr-2`,size:80},{default:E(()=>[o(x(t),{icon:S.value},null,8,[`icon`])]),_:1}),n(`span`,_n,T(C.value),1),n(`span`,vn,[n(`span`,yn,T(y.value===null?`-`:x(l)(y.value,{maximumFractionDigits:1})),1),n(`span`,bn,T(b.value),1)])])]),_:1})),[[x(Ee),x(m)]])}}),Sn=l({name:`WeatherConfigForm`,__name:`weather-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:ze.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:Fe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(t,{emit:n}){let r=t,i=n,{t:a}=f(),{formEl:s,model:l,formChanged:d,submit:p,formResult:m}=Me({config:r.config,messages:{success:a(`weatherModule.messages.config.edited`),error:a(`weatherModule.messages.config.notEdited`)}}),{locations:v,areLoading:b,fetchLocations:S}=$e(),w=g({});return h(()=>{b.value||S().catch(e=>{throw new We(`Failed to fetch locations`,e)})}),_(()=>m.value,async e=>{i(`update:remote-form-result`,e)}),_(()=>r.remoteFormSubmit,async e=>{e&&(i(`update:remote-form-submit`,!1),p().catch(()=>{}))}),_(()=>r.remoteFormReset,e=>{if(i(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),_(()=>d.value,e=>{i(`update:remote-form-changed`,e)}),(t,n)=>(u(),c(x(xe),{ref_key:`formEl`,ref:s,model:x(l),rules:w,"label-position":`top`,"status-icon":``},{default:E(()=>[o(x(Se),{type:`info`,title:x(a)(`weatherModule.headings.aboutPrimaryLocation`),description:x(a)(`weatherModule.texts.aboutPrimaryLocation`),closable:!1},null,8,[`title`,`description`]),o(x(be),{label:x(a)(`weatherModule.fields.config.primaryLocation.title`),prop:`primaryLocationId`,class:`mt-3`},{default:E(()=>[o(x(Ce),{modelValue:x(l).primaryLocationId,"onUpdate:modelValue":n[0]||=e=>x(l).primaryLocationId=e,placeholder:x(a)(`weatherModule.fields.config.primaryLocation.placeholder`),name:`primaryLocationId`,clearable:``,loading:x(b)},{default:E(()=>[(u(!0),e(D,null,y(x(v),e=>(u(),c(x(we),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),x(v).length===0&&!x(b)?(u(),c(x(Se),{key:0,type:`warning`,title:x(a)(`weatherModule.messages.locations.noLocations`),closable:!1,class:`mt-3`},null,8,[`title`])):C(``,!0)]),_:1},8,[`model`,`rules`]))}});rt.NONE;var Cn={"cs-CZ":{menu:{title:`Lokality počasí`},headings:{weather:`Počasí`,aboutPrimaryLocation:`Primární lokace`,locations:`Meteorologické lokace`,locationDetail:`{location}`,forecast:`Předpověď`,hourlyForecast:`Hodinová předpověď`,addLocation:`Přidat lokaci`,editLocation:`Upravit lokaci`,deleteLocation:`Smazat lokaci`,bulkDeleteLocations:`Smazat lokace`,discard:`Zahodit změny`,selectProvider:`Vyberte poskytovatele počasí`,unsupportedProvider:`Nepodporovaný poskytovatel`,adjustFilters:`Upravit filtry`},subHeadings:{locations:`Správa lokací meteorologických dat`,locationDetail:`Informace o počasí pro {location}`,addLocation:`Přidat novou meteorologickou lokaci`,editLocation:`Upravit podrobnosti lokace`,adjustFilters:`Přizpůsobit filtry seznamu lokací`},breadcrumbs:{locations:`lokace`,locationDetail:`lokace: {location}`,addLocation:`přidat lokaci`,editLocation:`upravit lokaci`},messages:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,requestError:`Při načítání dat došlo k chybě`,config:{edited:`Konfigurace počasí byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci počasí`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,updated:`Lokace "{location}" byla aktualizována`,notUpdated:`Nepodařilo se aktualizovat lokaci "{location}"`,deleted:`Lokace byla smazána`,notDeleted:`Nepodařilo se smazat lokaci`,deleteCanceled:`Smazání lokace "{location}" bylo zrušeno`,confirmBulkDelete:`Opravdu chcete smazat {count} lokací?`,bulkDeleted:`{count} lokací bylo smazáno`,bulkDeleteFailed:`Nepodařilo se smazat {count} lokací`,bulkDeleteCanceled:`Hromadné smazání lokací bylo zrušeno`,noLocations:`Žádné lokace nejsou nakonfigurovány. Přidejte lokaci pro získání dat o počasí.`,notFound:`Lokace nebyla nalezena`,confirmDeleteLocation:`Opravdu chcete smazat lokaci "{name}"?`,deletedWhileEditing:`Lokace byla smazána. Přesměrování...`}},buttons:{add:{title:`Přidat`},save:{title:`Uložit`},cancel:{title:`Zrušit`},discard:{title:`Zahodit`},resetFilters:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},reset:{title:`Resetovat filtry`},detail:{title:`Detail`},retry:{title:`Opakovat`},back:{title:`Zpět`}},fields:{locations:{search:{placeholder:`Hledat lokace...`},provider:{title:`Poskytovatel počasí`,placeholder:`Vyberte poskytovatele meteorologických dat`},name:{title:`Název lokace`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název lokace je povinný`}}},config:{primaryLocation:{title:`Primární lokace`,description:`Výchozí lokace zobrazená v widgetech počasí`,placeholder:`Vyberte primární lokaci`}}},texts:{aboutPrimaryLocation:`Vyberte primární lokaci pro zobrazení ve widgetech počasí. Lokace lze spravovat v sekci Lokace. Data o počasí budou načítána pro všechny nakonfigurované lokace.`,selectProvider:`Vyberte poskytovatele meteorologických dat pro přidání nové lokace. Různí poskytovatelé mohou nabízet různé možnosti konfigurace.`,unsupportedProvider:`Vybraný poskytovatel "{provider}" není momentálně podporován. Vyberte prosím jiného poskytovatele.`,weatherError:`Nelze načíst počasí`,weatherErrorDescription:`Data o počasí se nepodařilo načíst pro tuto lokaci. Zkontrolujte prosím konfiguraci API a zkuste to znovu.`,locationDetail:{provider:`Poskytovatel`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmínky`,humidity:`Vlhkost`,wind:`Vítr`,pressure:`Tlak`},misc:{loadingLocations:`Načítání lokací...`,noLocations:`Zatím nejsou nakonfigurovány žádné lokace`,noFilteredLocations:`Žádné lokace neodpovídají kritériím filtru`}},filters:{locations:{types:{title:`Poskytovatel počasí`},primary:{title:`Stav primární lokace`,values:{all:`Vše`,primary:`Primární`,secondary:`Sekundární`}}}},table:{columns:{name:{title:`Název`},weather:{title:`Počasí`,failed:`Selhalo`,error:`Nepodařilo se načíst data o počasí. Zkontrolujte prosím konfiguraci API.`},type:{title:`Poskytovatel`},primary:{title:`Primární`,values:{yes:`Ano`,no:`Ne`}}}},meta:{locations:{list:{title:`Meteorologické lokace`},detail:{title:`Detail meteorologické lokace`},add:{title:`Přidat meteorologickou lokaci`},edit:{title:`Upravit meteorologickou lokaci`}}},conditions:{thunderstormWithLightRain:`Bouřka s lehkým deštěm`,thunderstormWithRain:`Bouřka s deštěm`,thunderstormWithHeavyRain:`Bouřka se silným deštěm`,lightThunderstorm:`Slabá bouřka`,thunderstorm:`Bouřka`,heavyThunderstorm:`Silná bouřka`,raggedThunderstorm:`Přeháňková bouřka`,thunderstormWithLightDrizzle:`Bouřka s lehkým mrholením`,thunderstormWithDrizzle:`Bouřka s mrholením`,thunderstormWithHeavyDrizzle:`Bouřka se silným mrholením`,lightIntensityDrizzle:`Slabé mrholení`,drizzle:`Mrholení`,heavyIntensityDrizzle:`Silné mrholení`,lightIntensityDrizzleRain:`Slabý déšť s mrholením`,drizzleRain:`Déšť s mrholením`,heavyIntensityDrizzleRain:`Silný déšť s mrholením`,showerRainAndDrizzle:`Přeháňky s mrholením`,heavyShowerRainAndDrizzle:`Silné přeháňky s mrholením`,showerDrizzle:`Přeháňkové mrholení`,lightRain:`Lehký déšť`,moderateRain:`Mírný déšť`,heavyIntensityRain:`Silný déšť`,veryHeavyRain:`Velmi silný déšť`,extremeRain:`Extrémní déšť`,freezingRain:`Mrznoucí déšť`,lightIntensityShowerRain:`Slabé přeháňky`,showerRain:`Přeháňky`,heavyIntensityShowerRain:`Silné přeháňky`,raggedShowerRain:`Nepravidelné přeháňky`,lightSnow:`Lehké sněžení`,snow:`Sněžení`,heavySnow:`Silné sněžení`,sleet:`Plískanice`,lightShowerSleet:`Slabá plískanice`,showerSleet:`Přeháňková plískanice`,lightRainAndSnow:`Lehký déšť se sněhem`,rainAndSnow:`Déšť se sněhem`,lightShowerSnow:`Slabé sněhové přeháňky`,showerSnow:`Sněhové přeháňky`,heavyShowerSnow:`Silné sněhové přeháňky`,mist:`Mlha`,smoke:`Kouř`,haze:`Opar`,fog:`Hustá mlha`,sand:`Písek`,dust:`Prach`,volcanicAsh:`Vulkanický popel`,squalls:`Poryvy větru`,tornado:`Tornádo`,clearSky:`Jasno`,fewClouds:`Málo oblačno`,scatteredClouds:`Rozptýlená oblačnost`,brokenClouds:`Oblačno s přeháňkami`,overcastClouds:`Zataženo`,unknown:`Neznámé`}},"de-DE":{menu:{title:`Wetterstandorte`},headings:{weather:`Wetter`,aboutPrimaryLocation:`Primärer Standort`,locations:`Wetterstandorte`,locationDetail:`{location}`,forecast:`Vorhersage`,hourlyForecast:`Stundenvorhersage`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`,deleteLocation:`Standort löschen`,bulkDeleteLocations:`Standorte löschen`,discard:`Änderungen verwerfen`,selectProvider:`Wetteranbieter auswählen`,unsupportedProvider:`Nicht unterstützter Anbieter`,adjustFilters:`Filter anpassen`},subHeadings:{locations:`Wetterdaten-Standorte verwalten`,locationDetail:`Wetterinformationen für {location}`,addLocation:`Neuen Wetterstandort hinzufügen`,editLocation:`Standortdetails bearbeiten`,adjustFilters:`Standortlistenfilter anpassen`},breadcrumbs:{locations:`Standorte`,locationDetail:`Standort: {location}`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`},messages:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,requestError:`Beim Laden der Daten ist ein Fehler aufgetreten`,config:{edited:`Wetterkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Wetterkonfiguration fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,updated:`Standort "{location}" wurde aktualisiert`,notUpdated:`Standort "{location}" konnte nicht aktualisiert werden`,deleted:`Standort wurde gelöscht`,notDeleted:`Standort konnte nicht gelöscht werden`,deleteCanceled:`Löschung von Standort "{location}" wurde abgebrochen`,confirmBulkDelete:`Sind Sie sicher, dass Sie {count} Standort(e) löschen möchten?`,bulkDeleted:`{count} Standort(e) wurden gelöscht`,bulkDeleteFailed:`Löschen von {count} Standort(en) fehlgeschlagen`,bulkDeleteCanceled:`Massenlöschung von Standorten wurde abgebrochen`,noLocations:`Keine Standorte konfiguriert. Fügen Sie einen Standort hinzu, um Wetterdaten zu erhalten.`,notFound:`Standort nicht gefunden`,confirmDeleteLocation:`Sind Sie sicher, dass Sie den Standort "{name}" löschen möchten?`,deletedWhileEditing:`Der Standort wurde gelöscht. Weiterleitung...`}},buttons:{add:{title:`Hinzufügen`},save:{title:`Speichern`},cancel:{title:`Abbrechen`},discard:{title:`Verwerfen`},resetFilters:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},reset:{title:`Filter zurücksetzen`},detail:{title:`Details`},retry:{title:`Wiederholen`},back:{title:`Zurück`}},fields:{locations:{search:{placeholder:`Standorte suchen...`},provider:{title:`Wetteranbieter`,placeholder:`Wetterdatenanbieter auswählen`},name:{title:`Standortname`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Standortname ist erforderlich`}}},config:{primaryLocation:{title:`Primärer Standort`,description:`Der Standardstandort, der in Wetteranzeigen angezeigt wird`,placeholder:`Primären Standort auswählen`}}},texts:{aboutPrimaryLocation:`Wählen Sie den primären Standort für die Anzeige in Wetter-Widgets. Standorte können im Standort-Bereich verwaltet werden. Wetterdaten werden für alle konfigurierten Standorte abgerufen.`,selectProvider:`Wählen Sie einen Wetterdatenanbieter, um einen neuen Standort hinzuzufügen. Verschiedene Anbieter bieten möglicherweise unterschiedliche Konfigurationsoptionen.`,unsupportedProvider:`Der ausgewählte Anbieter "{provider}" wird derzeit nicht unterstützt. Bitte wählen Sie einen anderen Anbieter.`,weatherError:`Wetter konnte nicht geladen werden`,weatherErrorDescription:`Wetterdaten konnten für diesen Standort nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration und versuchen Sie es erneut.`,locationDetail:{provider:`Anbieter`,temperature:`Temperatur`,feelsLike:`Gefühlt wie`,conditions:`Bedingungen`,humidity:`Luftfeuchtigkeit`,wind:`Wind`,pressure:`Luftdruck`},misc:{loadingLocations:`Standorte werden geladen...`,noLocations:`Noch keine Standorte konfiguriert`,noFilteredLocations:`Keine Standorte entsprechen Ihren Filterkriterien`}},filters:{locations:{types:{title:`Wetteranbieter`},primary:{title:`Primärstatus`,values:{all:`Alle`,primary:`Primär`,secondary:`Sekundär`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Wetter`,failed:`Fehlgeschlagen`,error:`Wetterdaten konnten nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration.`},type:{title:`Anbieter`},primary:{title:`Primär`,values:{yes:`Ja`,no:`Nein`}}}},meta:{locations:{list:{title:`Wetterstandorte`},detail:{title:`Wetterstandort-Details`},add:{title:`Wetterstandort hinzufügen`},edit:{title:`Wetterstandort bearbeiten`}}},conditions:{thunderstormWithLightRain:`Gewitter mit leichtem Regen`,thunderstormWithRain:`Gewitter mit Regen`,thunderstormWithHeavyRain:`Gewitter mit starkem Regen`,lightThunderstorm:`Leichtes Gewitter`,thunderstorm:`Gewitter`,heavyThunderstorm:`Starkes Gewitter`,raggedThunderstorm:`Unbeständiges Gewitter`,thunderstormWithLightDrizzle:`Gewitter mit leichtem Nieselregen`,thunderstormWithDrizzle:`Gewitter mit Nieselregen`,thunderstormWithHeavyDrizzle:`Gewitter mit starkem Nieselregen`,lightIntensityDrizzle:`Leichter Nieselregen`,drizzle:`Nieselregen`,heavyIntensityDrizzle:`Starker Nieselregen`,lightIntensityDrizzleRain:`Leichter Niesel-Regen`,drizzleRain:`Niesel-Regen`,heavyIntensityDrizzleRain:`Starker Niesel-Regen`,showerRainAndDrizzle:`Schauerregen mit Nieselregen`,heavyShowerRainAndDrizzle:`Starker Schauerregen mit Nieselregen`,showerDrizzle:`Nieselschauer`,lightRain:`Leichter Regen`,moderateRain:`Mäßiger Regen`,heavyIntensityRain:`Starker Regen`,veryHeavyRain:`Sehr starker Regen`,extremeRain:`Extremer Regen`,freezingRain:`Gefrierender Regen`,lightIntensityShowerRain:`Leichter Schauerregen`,showerRain:`Schauerregen`,heavyIntensityShowerRain:`Starker Schauerregen`,raggedShowerRain:`Unbeständiger Schauerregen`,lightSnow:`Leichter Schneefall`,snow:`Schnee`,heavySnow:`Starker Schneefall`,sleet:`Schneeregen`,lightShowerSleet:`Leichter Schneeregenschauer`,showerSleet:`Schneeregenschauer`,lightRainAndSnow:`Leichter Regen und Schnee`,rainAndSnow:`Regen und Schnee`,lightShowerSnow:`Leichter Schneeschauer`,showerSnow:`Schneeschauer`,heavyShowerSnow:`Starker Schneeschauer`,mist:`Dunst`,smoke:`Rauch`,haze:`Diesig`,fog:`Nebel`,sand:`Sand`,dust:`Staub`,volcanicAsh:`Vulkanasche`,squalls:`Böen`,tornado:`Tornado`,clearSky:`Klarer Himmel`,fewClouds:`Wenige Wolken`,scatteredClouds:`Vereinzelte Wolken`,brokenClouds:`Aufgelockerte Bewölkung`,overcastClouds:`Bedeckt`,unknown:`Unbekannt`}},"en-US":{menu:{title:`Weather locations`},headings:{weather:`Weather`,aboutPrimaryLocation:`Primary location`,locations:`Weather locations`,locationDetail:`{location}`,forecast:`Forecast`,hourlyForecast:`Hourly forecast`,addLocation:`Add location`,editLocation:`Edit location`,deleteLocation:`Delete location`,bulkDeleteLocations:`Delete locations`,discard:`Discard changes`,selectProvider:`Select a weather provider`,unsupportedProvider:`Unsupported provider`,adjustFilters:`Adjust filters`},subHeadings:{locations:`Manage weather data locations`,locationDetail:`Weather information for {location}`,addLocation:`Add a new weather location`,editLocation:`Edit location details`,adjustFilters:`Customize location list filters`},breadcrumbs:{locations:`locations`,locationDetail:`location: {location}`,addLocation:`add location`,editLocation:`edit location`},messages:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,requestError:`An error occurred while loading data`,config:{edited:`Weather configuration has been successfully updated`,notEdited:`Failed to update weather configuration`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,updated:`Location "{location}" has been updated`,notUpdated:`Failed to update location "{location}"`,deleted:`Location has been deleted`,notDeleted:`Failed to delete location`,deleteCanceled:`Location "{location}" deletion was canceled`,confirmBulkDelete:`Are you sure you want to delete {count} location(s)?`,bulkDeleted:`{count} location(s) have been deleted`,bulkDeleteFailed:`Failed to delete {count} location(s)`,bulkDeleteCanceled:`Bulk location deletion was canceled`,noLocations:`No locations configured. Add a location to get weather data.`,notFound:`Location not found`,confirmDeleteLocation:`Are you sure you want to delete location "{name}"?`,deletedWhileEditing:`The location was deleted. Redirecting...`}},buttons:{add:{title:`Add`},save:{title:`Save`},cancel:{title:`Cancel`},discard:{title:`Discard`},resetFilters:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},reset:{title:`Reset filters`},detail:{title:`Detail`},retry:{title:`Retry`},back:{title:`Back`}},fields:{locations:{search:{placeholder:`Search locations...`},provider:{title:`Weather provider`,placeholder:`Choose a weather data provider`},name:{title:`Location name`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Location name is required`}}},config:{primaryLocation:{title:`Primary location`,description:`The default location shown in weather displays`,placeholder:`Select primary location`}}},texts:{aboutPrimaryLocation:`Select the primary location to display in weather widgets. Locations can be managed in the Locations section. Weather data will be fetched for all configured locations.`,selectProvider:`Choose a weather data provider to add a new location. Different providers may offer different configuration options.`,unsupportedProvider:`The selected provider "{provider}" is not currently supported. Please select a different provider.`,weatherError:`Unable to Load Weather`,weatherErrorDescription:`Weather data could not be loaded for this location. Please check your API configuration and try again.`,locationDetail:{provider:`Provider`,temperature:`Temperature`,feelsLike:`Feels Like`,conditions:`Conditions`,humidity:`Humidity`,wind:`Wind`,pressure:`Pressure`},misc:{loadingLocations:`Loading locations...`,noLocations:`No locations configured yet`,noFilteredLocations:`No locations match your filter criteria`}},filters:{locations:{types:{title:`Weather provider`},primary:{title:`Primary status`,values:{all:`All`,primary:`Primary`,secondary:`Secondary`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Weather`,failed:`Failed`,error:`Failed to load weather data. Please check your API configuration.`},type:{title:`Provider`},primary:{title:`Primary`,values:{yes:`Yes`,no:`No`}}}},meta:{locations:{list:{title:`Weather Locations`},detail:{title:`Weather Location Detail`},add:{title:`Add Weather Location`},edit:{title:`Edit Weather Location`}}},conditions:{thunderstormWithLightRain:`Thunderstorm with light rain`,thunderstormWithRain:`Thunderstorm with rain`,thunderstormWithHeavyRain:`Thunderstorm with heavy rain`,lightThunderstorm:`Light thunderstorm`,thunderstorm:`Thunderstorm`,heavyThunderstorm:`Heavy thunderstorm`,raggedThunderstorm:`Ragged thunderstorm`,thunderstormWithLightDrizzle:`Thunderstorm with light drizzle`,thunderstormWithDrizzle:`Thunderstorm with drizzle`,thunderstormWithHeavyDrizzle:`Thunderstorm with heavy drizzle`,lightIntensityDrizzle:`Light intensity drizzle`,drizzle:`Drizzle`,heavyIntensityDrizzle:`Heavy intensity drizzle`,lightIntensityDrizzleRain:`Light intensity drizzle rain`,drizzleRain:`Drizzle rain`,heavyIntensityDrizzleRain:`Heavy intensity drizzle rain`,showerRainAndDrizzle:`Shower rain and drizzle`,heavyShowerRainAndDrizzle:`Heavy shower rain and drizzle`,showerDrizzle:`Shower drizzle`,lightRain:`Light rain`,moderateRain:`Moderate rain`,heavyIntensityRain:`Heavy intensity rain`,veryHeavyRain:`Very heavy rain`,extremeRain:`Extreme rain`,freezingRain:`Freezing rain`,lightIntensityShowerRain:`Light intensity shower rain`,showerRain:`Shower rain`,heavyIntensityShowerRain:`Heavy intensity shower rain`,raggedShowerRain:`Ragged shower rain`,lightSnow:`Light snow`,snow:`Snow`,heavySnow:`Heavy snow`,sleet:`Sleet`,lightShowerSleet:`Light shower sleet`,showerSleet:`Shower sleet`,lightRainAndSnow:`Light rain and snow`,rainAndSnow:`Rain and snow`,lightShowerSnow:`Light shower snow`,showerSnow:`Shower snow`,heavyShowerSnow:`Heavy shower snow`,mist:`Mist`,smoke:`Smoke`,haze:`Haze`,fog:`Fog`,sand:`Sand`,dust:`Dust`,volcanicAsh:`Volcanic ash`,squalls:`Squalls`,tornado:`Tornado`,clearSky:`Clear sky`,fewClouds:`Few clouds`,scatteredClouds:`Scattered clouds`,brokenClouds:`Broken clouds`,overcastClouds:`Overcast clouds`,unknown:`Unknown`}},"es-ES":{menu:{title:`Ubicaciones meteorológicas`},headings:{weather:`Clima`,aboutPrimaryLocation:`Ubicación principal`,locations:`Ubicaciones meteorológicas`,locationDetail:`{location}`,forecast:`Pronóstico`,hourlyForecast:`Pronóstico por horas`,addLocation:`Añadir ubicación`,editLocation:`Editar ubicación`,deleteLocation:`Eliminar ubicación`,bulkDeleteLocations:`Eliminar ubicaciones`,discard:`Descartar cambios`,selectProvider:`Seleccionar un proveedor meteorológico`,unsupportedProvider:`Proveedor no compatible`,adjustFilters:`Ajustar filtros`},subHeadings:{locations:`Gestionar ubicaciones de datos meteorológicos`,locationDetail:`Información meteorológica de {location}`,addLocation:`Añadir una nueva ubicación meteorológica`,editLocation:`Editar detalles de la ubicación`,adjustFilters:`Personalizar filtros de la lista de ubicaciones`},breadcrumbs:{locations:`ubicaciones`,locationDetail:`ubicación: {location}`,addLocation:`añadir ubicación`,editLocation:`editar ubicación`},messages:{confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`,requestError:`Ocurrió un error al cargar los datos`,config:{edited:`La configuración meteorológica se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración meteorológica`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`Error al crear la ubicación "{location}"`,updated:`La ubicación "{location}" ha sido actualizada`,notUpdated:`Error al actualizar la ubicación "{location}"`,deleted:`La ubicación ha sido eliminada`,notDeleted:`Error al eliminar la ubicación`,deleteCanceled:`La eliminación de la ubicación "{location}" fue cancelada`,confirmBulkDelete:`¿Estás seguro de que deseas eliminar {count} ubicación(es)?`,bulkDeleted:`{count} ubicación(es) han sido eliminadas`,bulkDeleteFailed:`Error al eliminar {count} ubicación(es)`,bulkDeleteCanceled:`La eliminación masiva de ubicaciones fue cancelada`,noLocations:`No hay ubicaciones configuradas. Añade una ubicación para obtener datos meteorológicos.`,notFound:`Ubicación no encontrada`,confirmDeleteLocation:`¿Estás seguro de que deseas eliminar la ubicación "{name}"?`,deletedWhileEditing:`La ubicación fue eliminada. Redirigiendo...`}},buttons:{add:{title:`Añadir`},save:{title:`Guardar`},cancel:{title:`Cancelar`},discard:{title:`Descartar`},resetFilters:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},reset:{title:`Restablecer filtros`},detail:{title:`Detalle`},retry:{title:`Reintentar`},back:{title:`Volver`}},fields:{locations:{search:{placeholder:`Buscar ubicaciones...`},provider:{title:`Proveedor meteorológico`,placeholder:`Elige un proveedor de datos meteorológicos`},name:{title:`Nombre de la ubicación`,placeholder:`ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre de la ubicación es obligatorio`}}},config:{primaryLocation:{title:`Ubicación principal`,description:`La ubicación predeterminada que se muestra en los widgets meteorológicos`,placeholder:`Seleccionar ubicación principal`}}},texts:{aboutPrimaryLocation:`Selecciona la ubicación principal para mostrar en los widgets meteorológicos. Las ubicaciones se pueden gestionar en la sección de Ubicaciones. Los datos meteorológicos se obtendrán para todas las ubicaciones configuradas.`,selectProvider:`Elige un proveedor de datos meteorológicos para añadir una nueva ubicación. Los diferentes proveedores pueden ofrecer diferentes opciones de configuración.`,unsupportedProvider:`El proveedor seleccionado "{provider}" no está soportado actualmente. Por favor selecciona un proveedor diferente.`,weatherError:`No se puede cargar el clima`,weatherErrorDescription:`No se pudieron cargar los datos meteorológicos para esta ubicación. Por favor verifica tu configuración de API e inténtalo de nuevo.`,locationDetail:{provider:`Proveedor`,temperature:`Temperatura`,feelsLike:`Sensación térmica`,conditions:`Condiciones`,humidity:`Humedad`,wind:`Viento`,pressure:`Presión`},misc:{loadingLocations:`Cargando ubicaciones...`,noLocations:`Aún no hay ubicaciones configuradas`,noFilteredLocations:`Ninguna ubicación coincide con los criterios de filtro`}},filters:{locations:{types:{title:`Proveedor meteorológico`},primary:{title:`Estado de principal`,values:{all:`Todas`,primary:`Principal`,secondary:`Secundaria`}}}},table:{columns:{name:{title:`Nombre`},weather:{title:`Clima`,failed:`Error`,error:`Error al cargar datos meteorológicos. Por favor verifica tu configuración de API.`},type:{title:`Proveedor`},primary:{title:`Principal`,values:{yes:`Sí`,no:`No`}}}},meta:{locations:{list:{title:`Ubicaciones meteorológicas`},detail:{title:`Detalle de ubicación meteorológica`},add:{title:`Añadir ubicación meteorológica`},edit:{title:`Editar ubicación meteorológica`}}},conditions:{thunderstormWithLightRain:`Tormenta con lluvia ligera`,thunderstormWithRain:`Tormenta con lluvia`,thunderstormWithHeavyRain:`Tormenta con lluvia intensa`,lightThunderstorm:`Tormenta ligera`,thunderstorm:`Tormenta`,heavyThunderstorm:`Tormenta intensa`,raggedThunderstorm:`Tormenta irregular`,thunderstormWithLightDrizzle:`Tormenta con llovizna ligera`,thunderstormWithDrizzle:`Tormenta con llovizna`,thunderstormWithHeavyDrizzle:`Tormenta con llovizna intensa`,lightIntensityDrizzle:`Llovizna de intensidad ligera`,drizzle:`Llovizna`,heavyIntensityDrizzle:`Llovizna de intensidad fuerte`,lightIntensityDrizzleRain:`Lluvia con llovizna ligera`,drizzleRain:`Lluvia con llovizna`,heavyIntensityDrizzleRain:`Lluvia con llovizna intensa`,showerRainAndDrizzle:`Chaparrón con llovizna`,heavyShowerRainAndDrizzle:`Chaparrón intenso con llovizna`,showerDrizzle:`Llovizna intermitente`,lightRain:`Lluvia ligera`,moderateRain:`Lluvia moderada`,heavyIntensityRain:`Lluvia de intensidad fuerte`,veryHeavyRain:`Lluvia muy intensa`,extremeRain:`Lluvia extrema`,freezingRain:`Lluvia helada`,lightIntensityShowerRain:`Chaparrón ligero`,showerRain:`Chaparrón`,heavyIntensityShowerRain:`Chaparrón intenso`,raggedShowerRain:`Chaparrón irregular`,lightSnow:`Nieve ligera`,snow:`Nieve`,heavySnow:`Nieve intensa`,sleet:`Aguanieve`,lightShowerSleet:`Aguanieve ligera intermitente`,showerSleet:`Aguanieve intermitente`,lightRainAndSnow:`Lluvia ligera con nieve`,rainAndSnow:`Lluvia con nieve`,lightShowerSnow:`Nevada ligera intermitente`,showerSnow:`Nevada intermitente`,heavyShowerSnow:`Nevada intensa intermitente`,mist:`Neblina`,smoke:`Humo`,haze:`Bruma`,fog:`Niebla`,sand:`Arena`,dust:`Polvo`,volcanicAsh:`Ceniza volcánica`,squalls:`Ráfagas`,tornado:`Tornado`,clearSky:`Cielo despejado`,fewClouds:`Pocas nubes`,scatteredClouds:`Nubes dispersas`,brokenClouds:`Nubosidad parcial`,overcastClouds:`Cielo cubierto`,unknown:`Desconocido`}},"pl-PL":{menu:{title:`Lokalizacje pogodowe`},headings:{weather:`Pogoda`,aboutPrimaryLocation:`Lokalizacja główna`,locations:`Lokalizacje pogody`,locationDetail:`{location}`,forecast:`Prognoza`,hourlyForecast:`Prognoza godzinowa`,addLocation:`Dodaj lokalizację`,editLocation:`Edytuj lokalizację`,deleteLocation:`Usuń lokalizację`,bulkDeleteLocations:`Usuń lokalizacje`,discard:`Odrzuć zmiany`,selectProvider:`Wybierz dostawcę pogody`,unsupportedProvider:`Nieobsługiwany dostawca`,adjustFilters:`Dostosuj filtry`},subHeadings:{locations:`Zarządzaj lokalizacjami danych pogodowych`,locationDetail:`Informacje pogodowe dla {location}`,addLocation:`Dodaj nową lokalizację pogody`,editLocation:`Edytuj szczegóły lokalizacji`,adjustFilters:`Dostosuj filtry listy lokalizacji`},breadcrumbs:{locations:`lokalizacje`,locationDetail:`lokalizacja: {location}`,addLocation:`dodaj lokalizację`,editLocation:`edytuj lokalizację`},messages:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,requestError:`Wystąpił błąd podczas ładowania danych`,config:{edited:`Konfiguracja pogody została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji pogody`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,updated:`Lokalizacja "{location}" została zaktualizowana`,notUpdated:`Nie udało się zaktualizować lokalizacji "{location}"`,deleted:`Lokalizacja została usunięta`,notDeleted:`Nie udało się usunąć lokalizacji`,deleteCanceled:`Usuwanie lokalizacji "{location}" zostało anulowane`,confirmBulkDelete:`Czy na pewno chcesz usunąć {count} lokalizacji?`,bulkDeleted:`Usunięto {count} lokalizacji`,bulkDeleteFailed:`Nie udało się usunąć {count} lokalizacji`,bulkDeleteCanceled:`Masowe usuwanie lokalizacji zostało anulowane`,noLocations:`Brak skonfigurowanych lokalizacji. Dodaj lokalizację, aby uzyskać dane pogodowe.`,notFound:`Lokalizacja nie znaleziona`,confirmDeleteLocation:`Czy na pewno chcesz usunąć lokalizację "{name}"?`,deletedWhileEditing:`Lokalizacja została usunięta. Przekierowywanie...`}},buttons:{add:{title:`Dodaj`},save:{title:`Zapisz`},cancel:{title:`Anuluj`},discard:{title:`Odrzuć`},resetFilters:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},reset:{title:`Resetuj filtry`},detail:{title:`Szczegóły`},retry:{title:`Ponów`},back:{title:`Wstecz`}},fields:{locations:{search:{placeholder:`Szukaj lokalizacji...`},provider:{title:`Dostawca pogody`,placeholder:`Wybierz dostawcę danych pogodowych`},name:{title:`Nazwa lokalizacji`,placeholder:`np. Dom, Biuro, Domek letniskowy`,validation:{required:`Nazwa lokalizacji jest wymagana`}}},config:{primaryLocation:{title:`Lokalizacja główna`,description:`Domyślna lokalizacja wyświetlana w widżetach pogody`,placeholder:`Wybierz lokalizację główną`}}},texts:{aboutPrimaryLocation:`Wybierz główną lokalizację do wyświetlania w widżetach pogody. Lokalizacjami można zarządzać w sekcji Lokalizacje. Dane pogodowe będą pobierane dla wszystkich skonfigurowanych lokalizacji.`,selectProvider:`Wybierz dostawcę danych pogodowych, aby dodać nową lokalizację. Różni dostawcy mogą oferować różne opcje konfiguracji.`,unsupportedProvider:`Wybrany dostawca "{provider}" nie jest obecnie obsługiwany. Proszę wybrać innego dostawcę.`,weatherError:`Nie udało się załadować pogody`,weatherErrorDescription:`Nie udało się załadować danych pogodowych dla tej lokalizacji. Sprawdź konfigurację API i spróbuj ponownie.`,locationDetail:{provider:`Dostawca`,temperature:`Temperatura`,feelsLike:`Odczuwalna`,conditions:`Warunki`,humidity:`Wilgotność`,wind:`Wiatr`,pressure:`Ciśnienie`},misc:{loadingLocations:`Ładowanie lokalizacji...`,noLocations:`Nie skonfigurowano jeszcze żadnych lokalizacji`,noFilteredLocations:`Żadne lokalizacje nie pasują do kryteriów filtra`}},filters:{locations:{types:{title:`Dostawca pogody`},primary:{title:`Status głównej`,values:{all:`Wszystkie`,primary:`Główna`,secondary:`Drugorzędna`}}}},table:{columns:{name:{title:`Nazwa`},weather:{title:`Pogoda`,failed:`Błąd`,error:`Nie udało się załadować danych pogodowych. Sprawdź konfigurację API.`},type:{title:`Dostawca`},primary:{title:`Główna`,values:{yes:`Tak`,no:`Nie`}}}},meta:{locations:{list:{title:`Lokalizacje pogody`},detail:{title:`Szczegóły lokalizacji pogody`},add:{title:`Dodaj lokalizację pogody`},edit:{title:`Edytuj lokalizację pogody`}}},conditions:{thunderstormWithLightRain:`Burza z lekkim deszczem`,thunderstormWithRain:`Burza z deszczem`,thunderstormWithHeavyRain:`Burza z silnym deszczem`,lightThunderstorm:`Lekka burza`,thunderstorm:`Burza`,heavyThunderstorm:`Silna burza`,raggedThunderstorm:`Burza z porywistym wiatrem`,thunderstormWithLightDrizzle:`Burza z lekką mżawką`,thunderstormWithDrizzle:`Burza z mżawką`,thunderstormWithHeavyDrizzle:`Burza z silną mżawką`,lightIntensityDrizzle:`Lekka mżawka`,drizzle:`Mżawka`,heavyIntensityDrizzle:`Silna mżawka`,lightIntensityDrizzleRain:`Lekki deszcz ze mżawką`,drizzleRain:`Deszcz ze mżawką`,heavyIntensityDrizzleRain:`Silny deszcz ze mżawką`,showerRainAndDrizzle:`Przelotny deszcz ze mżawką`,heavyShowerRainAndDrizzle:`Silny przelotny deszcz ze mżawką`,showerDrizzle:`Przelotna mżawka`,lightRain:`Lekki deszcz`,moderateRain:`Umiarkowany deszcz`,heavyIntensityRain:`Intensywny deszcz`,veryHeavyRain:`Bardzo silny deszcz`,extremeRain:`Ekstremalny deszcz`,freezingRain:`Marznący deszcz`,lightIntensityShowerRain:`Lekki przelotny deszcz`,showerRain:`Przelotny deszcz`,heavyIntensityShowerRain:`Silny przelotny deszcz`,raggedShowerRain:`Nieregularny przelotny deszcz`,lightSnow:`Lekki śnieg`,snow:`Śnieg`,heavySnow:`Intensywny śnieg`,sleet:`Deszcz ze śniegiem`,lightShowerSleet:`Lekki przelotny deszcz ze śniegiem`,showerSleet:`Przelotny deszcz ze śniegiem`,lightRainAndSnow:`Lekki deszcz ze śniegiem`,rainAndSnow:`Deszcz ze śniegiem`,lightShowerSnow:`Lekki przelotny śnieg`,showerSnow:`Przelotny śnieg`,heavyShowerSnow:`Silny przelotny śnieg`,mist:`Mgła`,smoke:`Dym`,haze:`Zamglenie`,fog:`Gęsta mgła`,sand:`Piasek`,dust:`Kurz`,volcanicAsh:`Popiół wulkaniczny`,squalls:`Szkwały`,tornado:`Tornado`,clearSky:`Bezchmurne niebo`,fewClouds:`Lekkie zachmurzenie`,scatteredClouds:`Rozproszone chmury`,brokenClouds:`Duże zachmurzenie`,overcastClouds:`Pochmurno`,unknown:`Nieznane`}},"sk-SK":{menu:{title:`Lokality počasia`},headings:{weather:`Počasie`,aboutPrimaryLocation:`Primárna poloha`,locations:`Polohy počasia`,locationDetail:`{location}`,forecast:`Predpoveď`,hourlyForecast:`Hodinová predpoveď`,addLocation:`Pridať polohu`,editLocation:`Upraviť polohu`,deleteLocation:`Odstrániť polohu`,bulkDeleteLocations:`Odstrániť polohy`,discard:`Zahodiť zmeny`,selectProvider:`Vyberte poskytovateľa počasia`,unsupportedProvider:`Nepodporovaný poskytovateľ`,adjustFilters:`Upraviť filtre`},subHeadings:{locations:`Spravujte polohy údajov o počasí`,locationDetail:`Informácie o počasí pre {location}`,addLocation:`Pridať novú polohu počasia`,editLocation:`Upraviť detaily polohy`,adjustFilters:`Prispôsobiť filtre zoznamu polôh`},breadcrumbs:{locations:`polohy`,locationDetail:`poloha: {location}`,addLocation:`pridať polohu`,editLocation:`upraviť polohu`},messages:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,requestError:`Pri načítavaní dát sa vyskytla chyba`,config:{edited:`Konfigurácia počasia bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu počasia`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,updated:`Poloha "{location}" bola aktualizovaná`,notUpdated:`Nepodarilo sa aktualizovať polohu "{location}"`,deleted:`Poloha bola odstránená`,notDeleted:`Nepodarilo sa odstrániť polohu`,deleteCanceled:`Odstránenie polohy "{location}" bolo zrušené`,confirmBulkDelete:`Naozaj chcete odstrániť {count} polôh?`,bulkDeleted:`{count} polôh bolo odstránených`,bulkDeleteFailed:`Nepodarilo sa odstrániť {count} polôh`,bulkDeleteCanceled:`Hromadné odstránenie polôh bolo zrušené`,noLocations:`Žiadne polohy nie sú nakonfigurované. Pridajte polohu na získanie údajov o počasí.`,notFound:`Poloha nebola nájdená`,confirmDeleteLocation:`Naozaj chcete odstrániť polohu "{name}"?`,deletedWhileEditing:`Poloha bola odstránená. Presmerovanie...`}},buttons:{add:{title:`Pridať`},save:{title:`Uložiť`},cancel:{title:`Zrušiť`},discard:{title:`Zahodiť`},resetFilters:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},reset:{title:`Resetovať filtre`},detail:{title:`Detail`},retry:{title:`Skúsiť znova`},back:{title:`Späť`}},fields:{locations:{search:{placeholder:`Vyhľadať polohy...`},provider:{title:`Poskytovateľ počasia`,placeholder:`Vyberte poskytovateľa údajov o počasí`},name:{title:`Názov polohy`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov polohy je povinný`}}},config:{primaryLocation:{title:`Primárna poloha`,description:`Predvolená poloha zobrazená vo widgetoch počasia`,placeholder:`Vyberte primárnu polohu`}}},texts:{aboutPrimaryLocation:`Vyberte primárnu polohu na zobrazenie vo widgetoch počasia. Polohy je možné spravovať v sekcii Polohy. Údaje o počasí budú získavané pre všetky nakonfigurované polohy.`,selectProvider:`Vyberte poskytovateľa údajov o počasí na pridanie novej polohy. Rôzni poskytovatelia môžu ponúkať rôzne konfiguračné možnosti.`,unsupportedProvider:`Vybraný poskytovateľ "{provider}" nie je momentálne podporovaný. Prosím vyberte iného poskytovateľa.`,weatherError:`Nepodarilo sa načítať počasie`,weatherErrorDescription:`Údaje o počasí sa nepodarilo načítať pre túto polohu. Skontrolujte konfiguráciu API a skúste to znova.`,locationDetail:{provider:`Poskytovateľ`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmienky`,humidity:`Vlhkosť`,wind:`Vietor`,pressure:`Tlak`},misc:{loadingLocations:`Načítavanie polôh...`,noLocations:`Zatiaľ nie sú nakonfigurované žiadne polohy`,noFilteredLocations:`Žiadne polohy nezodpovedajú vašim filtrom`}},filters:{locations:{types:{title:`Poskytovateľ počasia`},primary:{title:`Stav primárnej polohy`,values:{all:`Všetky`,primary:`Primárna`,secondary:`Sekundárna`}}}},table:{columns:{name:{title:`Názov`},weather:{title:`Počasie`,failed:`Zlyhanie`,error:`Nepodarilo sa načítať údaje o počasí. Skontrolujte konfiguráciu API.`},type:{title:`Poskytovateľ`},primary:{title:`Primárna`,values:{yes:`Áno`,no:`Nie`}}}},meta:{locations:{list:{title:`Polohy počasia`},detail:{title:`Detail polohy počasia`},add:{title:`Pridať polohu počasia`},edit:{title:`Upraviť polohu počasia`}}},conditions:{thunderstormWithLightRain:`Búrka s miernym dažďom`,thunderstormWithRain:`Búrka s dažďom`,thunderstormWithHeavyRain:`Búrka so silným dažďom`,lightThunderstorm:`Mierna búrka`,thunderstorm:`Búrka`,heavyThunderstorm:`Silná búrka`,raggedThunderstorm:`Nepravidelná búrka`,thunderstormWithLightDrizzle:`Búrka s miernym mrholením`,thunderstormWithDrizzle:`Búrka s mrholením`,thunderstormWithHeavyDrizzle:`Búrka so silným mrholením`,lightIntensityDrizzle:`Mierne mrholenie`,drizzle:`Mrholenie`,heavyIntensityDrizzle:`Silné mrholenie`,lightIntensityDrizzleRain:`Mierny mrholivý dážď`,drizzleRain:`Mrholivý dážď`,heavyIntensityDrizzleRain:`Silný mrholivý dážď`,showerRainAndDrizzle:`Prehánky s mrholením`,heavyShowerRainAndDrizzle:`Silné prehánky s mrholením`,showerDrizzle:`Mrholivé prehánky`,lightRain:`Mierny dážď`,moderateRain:`Stredný dážď`,heavyIntensityRain:`Silný dážď`,veryHeavyRain:`Veľmi silný dážď`,extremeRain:`Extrémny dážď`,freezingRain:`Mrznúci dážď`,lightIntensityShowerRain:`Mierne prehánky`,showerRain:`Prehánky`,heavyIntensityShowerRain:`Silné prehánky`,raggedShowerRain:`Nepravidelné prehánky`,lightSnow:`Mierny sneh`,snow:`Sneh`,heavySnow:`Silný sneh`,sleet:`Čľapkanica`,lightShowerSleet:`Mierne prehánky čľapkanice`,showerSleet:`Prehánky čľapkanice`,lightRainAndSnow:`Mierny dážď so snehom`,rainAndSnow:`Dážď so snehom`,lightShowerSnow:`Mierne snehové prehánky`,showerSnow:`Snehové prehánky`,heavyShowerSnow:`Silné snehové prehánky`,mist:`Hmla`,smoke:`Dym`,haze:`Opar`,fog:`Hustá hmla`,sand:`Piesok`,dust:`Prach`,volcanicAsh:`Sopečný popol`,squalls:`Búrlivý vietor`,tornado:`Tornádo`,clearSky:`Jasná obloha`,fewClouds:`Málo oblakov`,scatteredClouds:`Roztrúsené oblaky`,brokenClouds:`Oblačno s premenou`,overcastClouds:`Zamračené`,unknown:`Neznáme`}}},wn=[{path:`weather/locations`,name:J.WEATHER_LOCATIONS,component:()=>L(()=>import(`./view-locations-BN8GPdnZ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37])),meta:{guards:{authenticated:!0,roles:[k.admin,k.owner]},title:()=>ie.global.t(`weatherModule.menu.title`),icon:`mdi:map-marker-multiple`,menu:4e3},children:[{path:`add`,name:J.WEATHER_LOCATION_ADD,component:()=>L(()=>import(`./view-location-add-BNyDqhTZ.js`),__vite__mapDeps([38,1,2,3,4,5,6,29,9,39,33,34,40,24,14,15,16,17,18,19,20,21,22,23,25,26])),props:!1,meta:{guards:{authenticated:!0,roles:[k.admin,k.owner]}}},{path:`:id`,name:J.WEATHER_LOCATION_EDIT,component:()=>L(()=>import(`./view-location-edit-CM1DPwNX.js`),__vite__mapDeps([41,1,2,3,4,5,6,42,39,23,24,14,15,16,17,18,19,20,21,22,25,26,43])),props:!0,meta:{guards:{authenticated:!0,roles:[k.admin,k.owner]}}}]},{path:`weather/location/:id`,name:J.WEATHER_LOCATION,component:()=>L(()=>import(`./view-location-DRXUqln5.js`),__vite__mapDeps([44,1,2,3,4,5,6,42,30,12,13,14,15,16,17,18,19,20,21,22,35,23,25,36,45])),props:!0,meta:{guards:{authenticated:!0,roles:[k.admin,k.owner]}},children:[{path:`edit`,name:J.WEATHER_LOCATION_DETAIL_EDIT,component:()=>L(()=>import(`./view-location-edit-CM1DPwNX.js`),__vite__mapDeps([41,1,2,3,4,5,6,42,39,23,24,14,15,16,17,18,19,20,21,22,25,26,43])),props:!0,meta:{guards:{authenticated:!0,roles:[k.admin,k.owner]}}}]}],Tn=Oe.extend({primaryLocationId:R().uuid().nullable().optional()}),En=Ae.extend({type:N(K),primaryLocationId:R().uuid().nullable().optional()}),Dn=Ne.and(P({type:N(K),primary_location_id:R().uuid().nullable().optional()}));ke.and(P({type:N(K),primary_location_id:R().uuid().nullable().optional()}));var Q=(e,t=G)=>{let n=he(e),r=t.safeParse({...n,draft:!1});if(!r.success)throw console.error(`[WEATHER_MODULE] Failed to validate location data:`,r.error.issues),new W(`Failed to validate location data`);return r.data},On=(e,t=tt)=>{let n=t.safeParse(le(e));if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location create request:`,n.error.issues),new W(`Failed to validate location create request`);return n.data},kn=(e,t=et)=>{let n=t.safeParse(le(e));if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location update request:`,n.error.issues),new W(`Failed to validate location update request`);return n.data},$=(e,t)=>e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:t,An=()=>({fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]}),jn=fe(`weather_module-locations`,()=>{let e=de(),t=A(),n=d(An()),r=d(!1),i=d({}),a=()=>r.value,o=e=>n.value.fetching.item.includes(e),s=()=>n.value.fetching.items,c=()=>Object.values(i.value),l=e=>i.value[e]??null,u={},f={},p=e=>m({id:e.id,data:Q(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=G.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new W(`Failed to insert location.`);return i.value[n.data.id]=n.data}let n=G.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new W(`Failed to insert location.`);return i.value=i.value??{},i.value[n.data.id]=n.data},h=e=>{i.value&&delete i.value[e.id]},g=async t=>{let r=u[t.id];if(r)return r;let i=(async()=>{if(n.value.fetching.item.includes(t.id))throw new U(`Already fetching location.`);n.value.fetching.item.push(t.id);let r=l(t.id);if(r&&!r.draft)return n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id),r;try{let{data:n}=await e.client.GET(`/${w}/${q}/locations/{id}`,{params:{path:{id:t.id}}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to fetch location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();u[t.id]=i;try{return await i}finally{delete u[t.id]}},_=async()=>{let t=f.all;if(t)return t;let i=(async()=>{if(n.value.fetching.items)throw new U(`Already fetching locations.`);n.value.fetching.items=!0,r.value=!1;try{let{data:t}=await e.client.GET(`/${w}/${q}/locations`);if(t!==void 0){let e=[];for(let n of t.data){let t=Q(n);e.push(m({id:t.id,data:t}))}return r.value=!0,e}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to fetch locations`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.fetching.items=!1}})();f.all=i;try{return await i}finally{delete f.all}};return{isLoaded:()=>a()||c().length>0,refresh:()=>_(),data:i,semaphore:n,firstLoad:r,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,onEvent:p,set:m,unset:h,get:g,fetch:_,add:async r=>{let a=nt.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new W(`Failed to add location.`);let o=a.data;n.value.creating.push(o.id);let s=G.safeParse({id:o.id,draft:o.draft,...o.data,createdAt:new Date,updatedAt:null});if(!s.success)throw n.value.creating=n.value.creating.filter(e=>e!==o.id),new W(`Failed to add location.`);if(i.value[s.data.id]=s.data,o.draft)return n.value.creating=n.value.creating.filter(e=>e!==o.id),s.data;try{let t=On({id:o.id,type:o.data.type,name:o.data.name,...(0,Z.omitBy)(o.data,Z.isUndefined)}),{data:n}=await e.client.POST(`/${w}/${q}/locations`,{body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){h({id:o.id});let t=e,n=$(e,`Failed to add location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.id)}},edit:async r=>{let a=Qe.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new W(`Failed to edit location.`);let o=a.data;if(n.value.updating.includes(o.id))throw new U(`Location is already being updated.`);let s=l(o.id);if(!s)throw new U(`Location not found.`);n.value.updating.push(o.id);let c={...s,...(0,Z.omitBy)(o.data,Z.isUndefined)};if(i.value[o.id]=c,s.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.id),c;try{let t=kn({type:o.data.type,...(0,Z.omitBy)(o.data,Z.isUndefined)}),{data:n}=await e.client.PATCH(`/${w}/${q}/locations/{id}`,{params:{path:{id:o.id}},body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){i.value[o.id]=s;let t=e,n=$(e,`Failed to edit location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==o.id)}},save:async t=>{let r=l(t.id);if(!r)throw new U(`Location not found.`);if(!r.draft)return r;n.value.updating.push(t.id);try{let t=On({id:r.id,type:r.type,name:r.name}),{data:n}=await e.client.POST(`/${w}/${q}/locations`,{body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to save location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==t.id)}},remove:async t=>{if(n.value.deleting.includes(t.id))throw new U(`Location is already being deleted.`);let r=l(t.id);if(!r)return!0;if(n.value.deleting.push(t.id),h({id:t.id}),r.draft)return n.value.deleting=n.value.deleting.filter(e=>e!==t.id),!0;try{let{response:n}=await e.client.DELETE(`/${w}/${q}/locations/{id}`,{params:{path:{id:t.id}}});if(n.status===204)return!0;throw new U(`Failed to delete location`)}catch(e){await g({id:t.id});let n=e,r=$(e,`Failed to delete location`);throw n.status&&[401,403,404,422,500].includes(Number(n.status))?new U(r,Number(n.status)):new U(r)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}},bulkRemove:async t=>{let r=[],a=[];for(let e of t.ids){let t=i.value[e];t!==void 0&&(t.draft?r:a).push(e)}for(let e of r)h({id:e});if(a.length===0)return{succeeded:r,failed:[]};n.value.deleting.push(...a);try{let{data:t,error:n}=await e.client.POST(`/${w}/${q}/locations/bulk-remove`,{body:{data:{ids:a}}});if(n!==void 0||t===void 0)throw new U(`Received unexpected response.`);let i=Ze.parse(t.data);for(let e of i.succeeded)h({id:e});return{succeeded:[...r,...i.succeeded],failed:i.failed}}catch(e){throw new U(`Failed to remove locations.`,null,e)}finally{n.value.deleting=n.value.deleting.filter(e=>!a.includes(e))}}}}),Mn=e=>jn(e),Nn={getting:!1},Pn=fe(`weather_module-weather-day`,()=>{let e=de(),t=A(),n=d(Nn),r=d(!1),i=d(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:qe(e.data)}),l=e=>{let n=Je.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert weather day.`);return i.value=i.value??null,i.value=n.data},u=async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new U(`Already getting weather day.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${q}/weather/primary`,{});if(t!==void 0&&t.data?.current)return i.value=qe(t.data.current),i.value;let a=`Failed to fetch weather day: invalid response structure.`;throw n&&(a=n.message??a),new U(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}};return{isLoaded:()=>i.value!==null,refresh:()=>u(),semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:u}}),Fn=e=>Pn(e),In={getting:!1},Ln=fe(`weather_module-weather-forecast`,()=>{let e=de(),t=A(),n=d(In),r=d(!1),i=d(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:st(e.data)}),l=e=>{let n=ot.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert weather forecast.`);return i.value=i.value??null,i.value=n.data},u=async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new U(`Already getting weather forecast.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${q}/weather/primary`,{});if(t!==void 0&&t.data?.forecast)return i.value=st(t.data.forecast),i.value;let a=`Failed to fetch weather forecast: invalid response structure.`;throw n&&(a=n.message??a),new U(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}};return{isLoaded:()=>i.value!==null,refresh:()=>u(),semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:u}}),Rn=e=>Ln(e),zn=Symbol(`FB-Module-Weather`),Bn={install:(e,t)=>{let n=ve(e),r=_e(e),i=oe(e),a=Pe(e),o=je(e);for(let[e,n]of Object.entries(Cn)){let r=(0,Z.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherModule:n});t.i18n.global.setLocaleMessage(e,r)}let s=Fn(t.store);e.provide(Ye,s),n.addStore(Ye,s);let c=Rn(t.store);e.provide(Ge,c),n.addStore(Ge,c);let l=Mn(t.store);e.provide(Ke,l),n.addStore(Ke,l),a.addModule(zn,{type:K,name:`Weather`,description:`Stay up to date with current conditions and upcoming forecasts.`,elements:[{type:Le,components:{moduleConfigEditForm:Sn},schemas:{moduleConfigSchema:En,moduleConfigEditFormSchema:Tn,moduleConfigUpdateReqSchema:Dn},modules:[Re]}],modules:[Re],isCore:!0}),t.router.getRoutes().find(e=>e.name===b.ROOT)&&wn.forEach(e=>{t.router.addRoute(b.ROOT,e)}),o.register(zn,()=>De([s,c,l])),r.on(`event`,e=>{if(e?.event?.startsWith(`WeatherModule.`)&&!(typeof e.payload!=`object`||e.payload===null))switch(e.event){case Y.WEATHER_INFO:`current`in e.payload&&typeof e.payload.current==`object`&&e.payload.current!==null&&s.onEvent({data:e.payload.current}),`forecast`in e.payload&&Array.isArray(e.payload.forecast)&&c.onEvent({data:e.payload.forecast});break;case Y.LOCATION_CREATED:case Y.LOCATION_UPDATED:`id`in e.payload&&typeof e.payload.id==`string`&&`type`in e.payload&&typeof e.payload.type==`string`&&l.onEvent({id:e.payload.id,type:e.payload.type,data:e.payload});break;case Y.LOCATION_DELETED:`id`in e.payload&&typeof e.payload.id==`string`&&l.unset({id:e.payload.id});break;default:i.warn(`Unhandled weather module event:`,e.event)}})}},Vn=P({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)}),Hn=P({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)});export{ut as C,ft as S,ct as T,ht as _,hn as a,pt as b,on as c,qt as d,Ut as f,wt as g,Mt as h,xn as i,tn as l,Pt as m,Hn as n,mn as o,zt as p,Bn as r,un as s,Vn as t,Zt as u,mt as v,lt as w,dt as x,gt as y};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/view-locations-BvHYF0U7.js","assets/rolldown-runtime-QTnfLwEv.js","assets/icon-with-child-CgZMNB3F.js","assets/icon-with-child-1Kb-D21P.css","assets/vue-meta.esm-browser.min-C5z7o_np.js","assets/common-DQQtAVrj.js","assets/common-BI15rKA4.css","assets/checkbox-Brn4H-ar.js","assets/omit-BY6NkPsU.js","assets/_baseClone-BRvt9rE2.js","assets/radio-CuFOcY0H.js","assets/collapse-Ce5pnck0.js","assets/drawer-DBEDVZvF.js","assets/use-dialog-BE4aKc4E.js","assets/config-DycVi21V.js","assets/directive-D42ORGRu.js","assets/useModules-CLi9kXcG.js","assets/dist-DJgPCOr0.js","assets/config.constants-17QBQ_kF.js","assets/usePlugins-BLBNoCg5.js","assets/usePlugin-CD6VAtXb.js","assets/useConfigModule-DPKpRzOA.js","assets/useModule-DDp0sfaf.js","assets/useLocation-BfcRW2IZ.js","assets/composables-VBwQ9ceK.js","assets/weather.constants-_S0I_w_Q.js","assets/types-AzJb-TPe.js","assets/list-locations-C9v-b-VI.js","assets/table-Bej2n2pI.js","assets/form-DhJ_5Z1F.js","assets/card-C50YgvLJ.js","assets/link-mE1gaRBg.js","assets/pagination-tCeDOW1E.js","assets/select-De297TQO.js","assets/clamp-CxRdsaiJ.js","assets/useNumberFormat-Dy6fPYP1.js","assets/weather-icon-BogpHIOS.js","assets/view-locations-DBYp9MTj.css","assets/view-location-add-Df25PMeB.js","assets/alert-BtC0hQaN.js","assets/useUuid-CXUYxryL.js","assets/view-location-edit-CS_Vj8cf.js","assets/skeleton-DkyCzTs7.js","assets/composables-CWHVZmlg.js","assets/view-location-CHX9pPb_.js","assets/weather-forecast.transformers-CxkPNhxQ.js"])))=>i.map(i=>d[i]);
2
+ import"./rolldown-runtime-QTnfLwEv.js";import{Ar as e,D as t,Dr as n,Er as r,H as i,Mr as a,Nr as o,O as s,Or as c,Pr as l,Qr as u,Si as d,T as f,Vr as p,Wi as m,Wr as h,bi as g,ci as _,di as v,ei as y,i as b,ji as x,k as S,kr as C,n as w,qi as T,t as ee,ui as E,x as te,xr as D,yr as ne}from"./icon-with-child-CgZMNB3F.js";import{G as re,Mr as ie,Sr as ae,T as oe,Vt as O,_ as se,a as ce,br as le,bt as k,c as ue,ca as A,ct as j,dt as de,er as M,f as fe,gt as N,ht as P,la as pe,m as F,p as me,qr as he,ri as I,u as ge,w as _e,x as ve,y as L,yt as R}from"./common-DQQtAVrj.js";import{n as z,t as ye}from"./descriptions-BgeuuBZp.js";import{n as be,t as xe}from"./form-DhJ_5Z1F.js";import{t as Se}from"./alert-BtC0hQaN.js";import{r as Ce,t as we}from"./select-De297TQO.js";import{t as B}from"./card-C50YgvLJ.js";import{x as Te}from"./components-C69JopUr.js";import{t as Ee}from"./directive-D42ORGRu.js";import{_ as De,a as Oe,d as ke,f as Ae,h as je,i as Me,p as Ne}from"./config-DycVi21V.js";import{r as Pe}from"./useModules-CLi9kXcG.js";import{n as V,t as H}from"./useNumberFormat-Dy6fPYP1.js";import{c as Fe,l as Ie,n as Le,r as Re,s as ze}from"./config.constants-17QBQ_kF.js";import{t as Be}from"./useConfigModule-DPKpRzOA.js";import{f as Ve}from"./keys-DgS2vm-E.js";import"./dashboard-DZ5wM97E.js";import{c as He}from"./keys-xm8ycHBh.js";import{t as Ue}from"./useSpaces-DN7B3r14.js";import{a as We,c as Ge,i as U,l as Ke,n as qe,o as W,r as Je,s as Ye}from"./useLocation-BfcRW2IZ.js";import{_ as Xe,c as G,d as Ze,f as Qe,g as $e,l as et,s as tt,u as nt}from"./composables-VBwQ9ceK.js";import{a as K,n as rt,o as q,r as J,t as Y}from"./weather.constants-_S0I_w_Q.js";import{o as it}from"./devices.constants-HX5whDWr.js";import"./devices-CLrdZvOm.js";import"./spaces-iXv1ih3G.js";import{t as at}from"./weather-icon-BogpHIOS.js";import"./composables-CWHVZmlg.js";import"./list-locations-C9v-b-VI.js";import{n as ot,t as st}from"./weather-forecast.transformers-CxkPNhxQ.js";N({reqPerMin:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))})}),N({clientsNow:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))})}),N({cpuLoad1m:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:N({value:P().nullable(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:N({value:P().nullable(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))})}),N({registeredPages:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))})}),N({registeredDevices:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:N({value:P(),lastUpdated:k([R().datetime({offset:!0}),j()]).transform(e=>e instanceof Date?e:new Date(e))})});var ct=`stats`,lt=`stats-module`,ut=`StatsModule.`,dt=function(e){return e.STATS_INFO=`StatsModule.Stats.Info`,e}({}),ft={STATS:`stats_module-module`},X=300*1e3,pt=Symbol(`FB-Module-Stats-Stats`),mt=class extends Error{exception;constructor(e,t=null){super(e),this.name=`StatsException`,this.exception=t}},ht=class extends mt{code;constructor(e,t=null,n=null){super(e,n),this.name=`StatsApiException`,this.code=t}},gt=class extends mt{constructor(e,t=null){super(e,t),this.name=`StatsValidationException`}},_t={class:`flex flex-row items-center justify-between`},vt={key:0},yt={key:1},bt={key:2,class:`max-h-[350px] overflow-auto bg-[var(--el-fill-color-light)]`},xt={class:`truncate`},St={key:0,class:`text-gray-500`},Ct={class:`ml-1`},wt=l({name:`ApplicationLogs`,__name:`application-logs`,props:{systemLogs:{},filters:{},filtersActive:{type:Boolean},loading:{type:Boolean,default:!1}},emits:[`refresh`,`reset`,`detail`],setup(r,{emit:i}){let l=r,d=i,{t:m}=f(),h=ae(l,`filters`,d),g=[M.silent,M.fatal,M.error,M.warn,M.log,M.info,M.success,M.fail,M.debug],_=e=>le(new Date(e)),b=e=>new Date(e).toISOString(),w=e=>[M.fatal,M.error,M.fail].includes(e)?{type:`danger`,effect:`light`}:[M.warn].includes(e)?{type:`warning`,effect:`light`}:[M.success,M.info,M.log].includes(e)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`};return(i,f)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:E(()=>[n(`div`,_t,[a(T(x(m)(`statsModule.headings.logs`))+` `,1),n(`div`,null,[o(x(Ce),{modelValue:x(h).levels,"onUpdate:modelValue":f[0]||=e=>x(h).levels=e,size:`small`,class:`mr-1 w-[180px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``},{default:E(()=>[(u(),e(D,null,y(g,e=>o(x(we),{key:e,label:x(m)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),o(x(S),{size:`small`,class:`px-2! ml-1!`,onClick:f[1]||=e=>d(`refresh`)},{icon:E(()=>[o(x(t),{icon:`mdi:refresh`})]),_:1}),o(x(S),{size:`small`,class:`px-2! ml-1!`,onClick:f[2]||=e=>d(`detail`)},{icon:E(()=>[o(x(t),{icon:`mdi:console`})]),_:1})])])]),default:E(()=>[v((u(),e(`div`,null,[r.filtersActive&&r.systemLogs.length===0&&!l.loading?(u(),e(`div`,vt,[o(x(s),{class:`h-full w-full`},{icon:E(()=>[o(x(ee),{size:80},{primary:E(()=>[o(x(t),{icon:`mdi:console`})]),secondary:E(()=>[o(x(t),{icon:`mdi:filter-multiple`})]),_:1})]),title:E(()=>[o(x(ie),{class:`block`},{default:E(()=>[a(T(x(m)(`statsModule.texts.noFilteredLogs`)),1)]),_:1}),o(x(S),{type:`primary`,plain:``,class:`mt-4`,onClick:f[3]||=e=>d(`reset`)},{icon:E(()=>[o(x(t),{icon:`mdi:filter-off`})]),default:E(()=>[a(` `+T(x(m)(`statsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):r.systemLogs.length===0&&!l.loading?(u(),e(`div`,yt,[o(x(s),{class:`h-full w-full`},{icon:E(()=>[o(x(ee),{size:80},{primary:E(()=>[o(x(t),{icon:`mdi:console`})]),secondary:E(()=>[o(x(t),{icon:`mdi:information`})]),_:1})]),title:E(()=>[a(T(x(m)(`statsModule.texts.noLogs`)),1)]),_:1})])):(u(),e(`div`,bt,[(u(!0),e(D,null,y(r.systemLogs,(t,r)=>(u(),e(`div`,{key:r,class:`grid grid-cols-[110px_60px_1fr] gap-x-4 text-xs b-b b-b-solid last:b-b-none mb-1 last:mb-0 px-2 py-1 items-center`},[o(x(I),{content:b(t.ts),placement:`top-start`},{default:E(()=>[a(T(_(t.ts)),1)]),_:2},1032,[`content`]),o(x(he),p({ref_for:!0},w(t.type),{size:`small`}),{default:E(()=>[a(T(t.type),1)]),_:2},1040),n(`div`,xt,[t.tag?(u(),e(`span`,St,` [`+T(t.tag)+`] `,1)):C(``,!0),n(`span`,Ct,T(t.message),1)])]))),128))]))])),[[x(Ee),r.loading]])]),_:1}))}}),Tt={class:`grid grid-cols-3 gap-2`},Et={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},Dt={class:`font-bold text-lg mt-1`},Ot={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},kt={class:`font-bold text-lg mt-1`},At={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},jt={class:`font-bold text-lg mt-1 flex flex-row items-center`},Mt=l({name:`ApplicationOverview`,__name:`application-overview`,props:{apiModuleSection:{},websocketModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let{t:r}=f(),{connected:s}=ce(),l=d(`1.1.0-alpha.6`);return(d,f)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(r)(`statsModule.headings.applicationOverview`)),1)]),default:E(()=>[n(`div`,Tt,[n(`div`,null,[n(`div`,Et,T(x(r)(`statsModule.fields.applicationOverview.version.title`)),1),n(`div`,Dt,T(l.value),1)]),n(`div`,null,[n(`div`,Ot,[o(x(I),{content:x(r)(`statsModule.fields.applicationOverview.apip95.tooltip`),placement:`top-start`},{default:E(()=>[o(x(i),{class:`mr-2`,size:14},{default:E(()=>[o(x(t),{icon:`mdi:info-circle-outline`})]),_:1})]),_:1},8,[`content`]),a(` `+T(x(r)(`statsModule.fields.applicationOverview.apip95.title`)),1)]),n(`div`,kt,T(e.apiModuleSection?.p95Ms5m.value??0)+` ms`,1)]),n(`div`,null,[n(`div`,At,T(x(r)(`statsModule.fields.applicationOverview.webSocket.title`)),1),n(`div`,jt,[n(`span`,{class:m({"color-[var(--el-color-success)]":x(s),"color-[var(--el-color-warning)]":!x(s)})},T(x(s)?x(r)(`statsModule.fields.applicationOverview.webSocket.state.connected`):x(r)(`statsModule.fields.applicationOverview.webSocket.state.disconnected`)),3)])])])]),_:1}))}}),Nt={class:`flex flex-row flex-wrap gap-2`},Pt=l({name:`QuickLinks`,__name:`quick-links`,setup(e){let r=te(),{t:i}=f(),s=()=>{r.push({name:He.SPACES})},l=()=>{r.push({name:Ve.PAGES})},d=()=>{r.push({name:it.DEVICES})},p=()=>{r.push({name:Ie.CONFIG})},m=()=>{window.open(`https://smart-panel.fastybird.com/docs`,`_blank`,`noopener,noreferrer`)};return(e,r)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(i)(`statsModule.headings.quickLinks`)),1)]),default:E(()=>[n(`div`,Nt,[o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:s},{icon:E(()=>[o(x(t),{icon:`mdi:home-group`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.spaces.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:l},{icon:E(()=>[o(x(t),{icon:`mdi:view-dashboard`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.pages.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:d},{icon:E(()=>[o(x(t),{icon:`mdi:devices`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.devices.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:p},{icon:E(()=>[o(x(t),{icon:`mdi:cog`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.config.title`)),1)]),_:1}),o(x(S),{class:`flex-1 min-w-[120px] ml-0!`,onClick:m},{icon:E(()=>[o(x(t),{icon:`mdi:book-open-page-variant`})]),default:E(()=>[a(` `+T(x(i)(`statsModule.buttons.docs.title`)),1)]),_:1})])]),_:1}))}}),Ft={class:`flex flex-col gap-2`},It={class:`font-bold`},Lt={class:`font-mono text-xs`},Rt={class:`block overflow-hidden text-ellipsis whitespace-nowrap pr-4`},zt=l({name:`SystemInformation`,__name:`system-information`,props:{systemInfo:{},configApp:{},loading:{type:Boolean,default:!1}},setup(e){let t=e,{t:r}=f(),{success:i}=me(),s=()=>{navigator.clipboard.writeText(t.configApp?.path||``),i(`Config path copied to clipboard!`)};return(t,i)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:E(()=>[a(T(x(r)(`statsModule.headings.systemInformation`)),1)]),default:E(()=>[v((u(),c(x(ye),{column:1,size:`small`,border:``},{default:E(()=>[o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.timezone.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.os.timezone),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.operatingSystem.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.os.distro)+` `+T(e.systemInfo?.os.platform)+` `+T(e.systemInfo?.os.release),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.hostname.title`)),1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.hostname),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.ipv4.title`))+` (`+T(e.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.ip4),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.ipv6.title`))+` (`+T(e.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:E(()=>[a(` `+T(e.systemInfo?.defaultNetwork.ip6),1)]),_:1}),o(x(z),{"label-width":150,"class-name":`border-l-none! border-t-none! border-b-none! config-path-cell`,"label-class-name":`border-l-none! border-t-none! border-b-none! whitespace-nowrap!`},{label:E(()=>[a(T(x(r)(`statsModule.fields.systemInformation.configPath.title`)),1)]),default:E(()=>[o(x(I),{placement:`top-start`},{content:E(()=>[n(`div`,Ft,[n(`div`,It,T(x(r)(`statsModule.fields.systemInformation.configPath.tooltip`)),1),n(`span`,Lt,T(e.configApp?.path),1),o(x(S),{size:`small`,type:`primary`,onClick:ne(s,[`stop`])},{default:E(()=>[a(T(x(r)(`statsModule.buttons.copy.title`)),1)]),_:1})])]),default:E(()=>[n(`span`,Rt,T(e.configApp?.path),1)]),_:1})]),_:1})]),_:1})),[[x(Ee),e.loading]])]),_:1}))}}),Bt={class:`flex flex-col gap-2`},Vt={class:`font-bold text-2xl`},Ht={class:`color-[var(--el-text-color-secondary)]`},Ut=l({name:`StatsCpu`,__name:`stats-cpu`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),{formatPct:d}=H(),p=r(()=>{let e=s.systemModuleSection?.cpuLoad1m.lastUpdated?s.systemModuleSection?.cpuLoad1m.lastUpdated.getTime():0;return!e||Date.now()-e>X}),m=r(()=>Number(s.systemModuleSection?.cpuLoad1m.value??0));return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.cpu`)),1)]),default:E(()=>[n(`div`,Bt,[n(`div`,Vt,[e.systemModuleSection?.cpuLoad1m.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.cpuLoad1m.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(x(d)(e.systemModuleSection?.cpuLoad1m.value)),1)]),n(`div`,Ht,T(x(l)(`statsModule.fields.cpu.temperature.title`,{temperature:e.systemInfo?.temperature.cpu??x(l)(`application.value.notAvailable`),unit:`°C`})),1),o(x(Te),{percentage:m.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),Wt={class:`flex flex-row items-center`},Gt={class:`color-[var(--el-text-color-secondary)]`},Kt={class:`text-3xl mt-1 flex flex-row items-center`},qt=l({name:`StatsDashboard`,__name:`stats-dashboard`,props:{dashboardModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),d=r(()=>{let e=s.dashboardModuleSection?.registeredPages.lastUpdated?s.dashboardModuleSection?.registeredPages.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Wt,[a.dashboardModuleSection?.registeredPages.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.dashboardModuleSection?.registeredPages.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[d.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,Gt,T(x(l)(`statsModule.headings.dashboard`)),1)]),n(`div`,Kt,T(a.dashboardModuleSection?.registeredPages.value??0),1)],64))}}),Jt={class:`flex flex-row items-center`},Yt={class:`color-[var(--el-text-color-secondary)]`},Xt={class:`text-3xl mt-1 flex flex-row items-center`},Zt=l({name:`StatsDevices`,__name:`stats-devices`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.devicesModuleSection?.onlineNow.lastUpdated?s.devicesModuleSection?.onlineNow.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Jt,[a.devicesModuleSection?.onlineNow.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.devicesModuleSection?.onlineNow.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,Yt,T(x(l)(`statsModule.headings.devices`)),1)]),n(`div`,Xt,T(x(d)(a.devicesModuleSection?.onlineNow.value??0,{maximumFractionDigits:0})),1)],64))}}),Qt={class:`flex flex-row items-center`},$t={class:`color-[var(--el-text-color-secondary)]`},en={class:`text-3xl mt-1 flex flex-row items-center`},tn=l({name:`StatsDevicesCommunication`,__name:`stats-devices-communication`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(a){let s=a,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.devicesModuleSection?.updatesToday.lastUpdated?s.devicesModuleSection?.updatesToday.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),e(D,null,[n(`div`,Qt,[a.devicesModuleSection?.updatesToday.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(a.devicesModuleSection?.updatesToday.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:12,class:`mr-1`},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),n(`span`,$t,T(x(l)(`statsModule.headings.devicesCommunication`)),1)]),n(`div`,en,T(x(d)(a.devicesModuleSection?.updatesToday.value??0,{maximumFractionDigits:0})),1)],64))}}),nn={class:`flex flex-col gap-2`},rn={class:`font-bold text-2xl`},an={class:`color-[var(--el-text-color-secondary)]`},on=l({name:`StatsMemory`,__name:`stats-memory`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),{format:d}=H(),p=r(()=>{let e=s.systemModuleSection?.memUsedPct.lastUpdated?s.systemModuleSection?.memUsedPct.lastUpdated.getTime():0;return!e||Date.now()-e>X}),m=r(()=>Number(s.systemModuleSection?.memUsedPct.value??0));return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.memory`)),1)]),default:E(()=>[n(`div`,nn,[n(`div`,rn,[e.systemModuleSection?.memUsedPct.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.memUsedPct.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(x(d)((e.systemInfo?.memory.used??0)/1024/1024,{maximumFractionDigits:0}))+` MB `,1)]),n(`div`,an,T(x(l)(`statsModule.fields.memory.total.title`,{total:x(d)((e.systemInfo?.memory.total??0)/1024/1024,{maximumFractionDigits:0}),unit:`MB`})),1),o(x(Te),{percentage:m.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),sn={class:`flex flex-row items-center`},cn={class:`color-[var(--el-text-color-secondary)]`},ln={class:`text-3xl mt-1 flex flex-row items-center`},un=l({name:`StatsSpaces`,__name:`stats-spaces`,props:{loading:{type:Boolean,default:!1}},setup(t){let{t:i}=f(),{spaces:a,fetchSpaces:o}=Ue(),s=r(()=>a.value.filter(e=>!e.draft)),c=r(()=>s.value.length);return h(()=>{o()}),(t,r)=>(u(),e(D,null,[n(`div`,sn,[n(`span`,cn,T(x(i)(`statsModule.headings.spaces`)),1)]),n(`div`,ln,T(c.value),1)],64))}}),dn={class:`flex flex-col gap-2`},fn={class:`font-bold text-2xl`},pn={class:`color-[var(--el-text-color-secondary)]`},mn=l({name:`StatsUptime`,__name:`stats-uptime`,props:{systemModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let s=e,{t:l}=f(),d=e=>{if(e==null)return`—`;let t=Math.max(0,Math.floor(e)),n=Math.floor(t/86400),r=Math.floor(t%86400/3600).toString().padStart(2,`0`),i=Math.floor(t%3600/60).toString().padStart(2,`0`),a=Math.floor(t%60).toString().padStart(2,`0`);return n?`${n}d ${r}:${i}:${a}`:`${r}:${i}:${a}`},p=r(()=>{let e=s.systemModuleSection?.systemUptimeSec.lastUpdated?s.systemModuleSection?.systemUptimeSec.lastUpdated.getTime():0;return!e||Date.now()-e>X});return(r,s)=>(u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(l)(`statsModule.headings.uptime`)),1)]),default:E(()=>[n(`div`,dn,[n(`div`,fn,[e.systemModuleSection?.systemUptimeSec.lastUpdated?(u(),c(x(I),{key:0,content:x(l)(`statsModule.texts.updated`,{time:x(V)(e.systemModuleSection?.systemUptimeSec.lastUpdated)}),placement:`top-start`},{default:E(()=>[o(x(i),{size:18},{default:E(()=>[p.value?(u(),c(x(t),{key:0,icon:`mdi:warning`})):(u(),c(x(t),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):C(``,!0),a(` `+T(d(e.systemModuleSection?.systemUptimeSec.value)),1)]),n(`div`,pn,T(x(l)(`statsModule.fields.uptime.process.title`,{uptime:d(e.systemModuleSection?.processUptimeSec.value)})),1)])]),_:1}))}}),hn=()=>{let e=ve().getStore(pt),{data:t,semaphore:n}=pe(e);return{stats:r(()=>t.value),isLoading:r(()=>t.value===null&&n.value.getting),fetchStats:async()=>{await e.get()}}},Z=fe(),gn={class:`flex flex-col items-center gap-3`},_n={class:`font-bold text-2xl`},vn={class:`flex flex-row items-start gap-1`},yn={class:`font-bold text-4xl`},bn={class:`text-lg text-gray-400`},xn=l({name:`WeatherDay`,__name:`weather-day`,setup(e){let{t:s}=f(),{format:l}=H(),{weatherDay:d,fetchWeatherDay:p,isLoading:m}=Xe(),{configModule:g,fetchConfigModule:_}=Be({type:K}),y=r(()=>d.value?.temperature||null),b=r(()=>g.value?.unit===`fahrenheit`?`°F`:`°C`),S=r(()=>d.value===null?`wi:na`:at(d.value.weather.code,d.value.sunrise,d.value.sunset)),C=r(()=>{if(d.value===null)return s(`weatherModule.conditions.unknown`);switch(d.value.weather.code){case 200:return s(`weatherModule.conditions.thunderstormWithLightRain`);case 201:return s(`weatherModule.conditions.thunderstormWithRain`);case 202:return s(`weatherModule.conditions.thunderstormWithHeavyRain`);case 210:return s(`weatherModule.conditions.lightThunderstorm`);case 211:return s(`weatherModule.conditions.thunderstorm`);case 212:return s(`weatherModule.conditions.heavyThunderstorm`);case 221:return s(`weatherModule.conditions.raggedThunderstorm`);case 230:return s(`weatherModule.conditions.thunderstormWithLightDrizzle`);case 231:return s(`weatherModule.conditions.thunderstormWithDrizzle`);case 232:return s(`weatherModule.conditions.thunderstormWithHeavyDrizzle`);case 300:return s(`weatherModule.conditions.lightIntensityDrizzle`);case 301:return s(`weatherModule.conditions.drizzle`);case 302:return s(`weatherModule.conditions.heavyIntensityDrizzle`);case 310:return s(`weatherModule.conditions.lightIntensityDrizzleRain`);case 311:return s(`weatherModule.conditions.drizzleRain`);case 312:return s(`weatherModule.conditions.heavyIntensityDrizzleRain`);case 313:return s(`weatherModule.conditions.showerRainAndDrizzle`);case 314:return s(`weatherModule.conditions.heavyShowerRainAndDrizzle`);case 321:return s(`weatherModule.conditions.showerDrizzle`);case 500:return s(`weatherModule.conditions.lightRain`);case 501:return s(`weatherModule.conditions.moderateRain`);case 502:return s(`weatherModule.conditions.heavyIntensityRain`);case 503:return s(`weatherModule.conditions.veryHeavyRain`);case 504:return s(`weatherModule.conditions.extremeRain`);case 511:return s(`weatherModule.conditions.freezingRain`);case 520:return s(`weatherModule.conditions.lightIntensityShowerRain`);case 521:return s(`weatherModule.conditions.showerRain`);case 522:return s(`weatherModule.conditions.heavyIntensityShowerRain`);case 531:return s(`weatherModule.conditions.raggedShowerRain`);case 600:return s(`weatherModule.conditions.lightSnow`);case 601:return s(`weatherModule.conditions.snow`);case 602:return s(`weatherModule.conditions.heavySnow`);case 611:return s(`weatherModule.conditions.sleet`);case 612:return s(`weatherModule.conditions.lightShowerSleet`);case 613:return s(`weatherModule.conditions.showerSleet`);case 615:return s(`weatherModule.conditions.lightRainAndSnow`);case 616:return s(`weatherModule.conditions.rainAndSnow`);case 620:return s(`weatherModule.conditions.lightShowerSnow`);case 621:return s(`weatherModule.conditions.showerSnow`);case 622:return s(`weatherModule.conditions.heavyShowerSnow`);case 701:return s(`weatherModule.conditions.mist`);case 711:return s(`weatherModule.conditions.smoke`);case 721:return s(`weatherModule.conditions.haze`);case 731:return s(`weatherModule.conditions.dust`);case 741:return s(`weatherModule.conditions.fog`);case 751:return s(`weatherModule.conditions.sand`);case 761:return s(`weatherModule.conditions.dust`);case 762:return s(`weatherModule.conditions.volcanicAsh`);case 771:return s(`weatherModule.conditions.squalls`);case 781:return s(`weatherModule.conditions.tornado`);case 800:return s(`weatherModule.conditions.clearSky`);case 801:return s(`weatherModule.conditions.fewClouds`);case 802:return s(`weatherModule.conditions.scatteredClouds`);case 803:return s(`weatherModule.conditions.brokenClouds`);case 804:return s(`weatherModule.conditions.overcastClouds`);default:return s(`weatherModule.conditions.unknown`)}});return h(async()=>{_().catch(e=>{throw new We(`Something went wrong`,e)}),p().catch(e=>{throw new We(`Something went wrong`,e)})}),(e,r)=>v((u(),c(x(B),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:E(()=>[a(T(x(s)(`weatherModule.headings.weather`)),1)]),default:E(()=>[n(`div`,gn,[o(x(i),{class:`mr-2`,size:80},{default:E(()=>[o(x(t),{icon:S.value},null,8,[`icon`])]),_:1}),n(`span`,_n,T(C.value),1),n(`span`,vn,[n(`span`,yn,T(y.value===null?`-`:x(l)(y.value,{maximumFractionDigits:1})),1),n(`span`,bn,T(b.value),1)])])]),_:1})),[[x(Ee),x(m)]])}}),Sn=l({name:`WeatherConfigForm`,__name:`weather-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:ze.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:Fe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(t,{emit:n}){let r=t,i=n,{t:a}=f(),{formEl:s,model:l,formChanged:d,submit:p,formResult:m}=Me({config:r.config,messages:{success:a(`weatherModule.messages.config.edited`),error:a(`weatherModule.messages.config.notEdited`)}}),{locations:v,areLoading:b,fetchLocations:S}=$e(),w=g({});return h(()=>{b.value||S().catch(e=>{throw new We(`Failed to fetch locations`,e)})}),_(()=>m.value,async e=>{i(`update:remote-form-result`,e)}),_(()=>r.remoteFormSubmit,async e=>{e&&(i(`update:remote-form-submit`,!1),p().catch(()=>{}))}),_(()=>r.remoteFormReset,e=>{if(i(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),_(()=>d.value,e=>{i(`update:remote-form-changed`,e)}),(t,n)=>(u(),c(x(xe),{ref_key:`formEl`,ref:s,model:x(l),rules:w,"label-position":`top`,"status-icon":``},{default:E(()=>[o(x(Se),{type:`info`,title:x(a)(`weatherModule.headings.aboutPrimaryLocation`),description:x(a)(`weatherModule.texts.aboutPrimaryLocation`),closable:!1},null,8,[`title`,`description`]),o(x(be),{label:x(a)(`weatherModule.fields.config.primaryLocation.title`),prop:`primaryLocationId`,class:`mt-3`},{default:E(()=>[o(x(Ce),{modelValue:x(l).primaryLocationId,"onUpdate:modelValue":n[0]||=e=>x(l).primaryLocationId=e,placeholder:x(a)(`weatherModule.fields.config.primaryLocation.placeholder`),name:`primaryLocationId`,clearable:``,loading:x(b)},{default:E(()=>[(u(!0),e(D,null,y(x(v),e=>(u(),c(x(we),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),x(v).length===0&&!x(b)?(u(),c(x(Se),{key:0,type:`warning`,title:x(a)(`weatherModule.messages.locations.noLocations`),closable:!1,class:`mt-3`},null,8,[`title`])):C(``,!0)]),_:1},8,[`model`,`rules`]))}});rt.NONE;var Cn={"cs-CZ":{menu:{title:`Lokality počasí`},headings:{weather:`Počasí`,aboutPrimaryLocation:`Primární lokace`,locations:`Meteorologické lokace`,locationDetail:`{location}`,forecast:`Předpověď`,hourlyForecast:`Hodinová předpověď`,addLocation:`Přidat lokaci`,editLocation:`Upravit lokaci`,deleteLocation:`Smazat lokaci`,bulkDeleteLocations:`Smazat lokace`,discard:`Zahodit změny`,selectProvider:`Vyberte poskytovatele počasí`,unsupportedProvider:`Nepodporovaný poskytovatel`,adjustFilters:`Upravit filtry`},subHeadings:{locations:`Správa lokací meteorologických dat`,locationDetail:`Informace o počasí pro {location}`,addLocation:`Přidat novou meteorologickou lokaci`,editLocation:`Upravit podrobnosti lokace`,adjustFilters:`Přizpůsobit filtry seznamu lokací`},breadcrumbs:{locations:`lokace`,locationDetail:`lokace: {location}`,addLocation:`přidat lokaci`,editLocation:`upravit lokaci`},messages:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,requestError:`Při načítání dat došlo k chybě`,config:{edited:`Konfigurace počasí byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci počasí`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,updated:`Lokace "{location}" byla aktualizována`,notUpdated:`Nepodařilo se aktualizovat lokaci "{location}"`,deleted:`Lokace byla smazána`,notDeleted:`Nepodařilo se smazat lokaci`,deleteCanceled:`Smazání lokace "{location}" bylo zrušeno`,confirmBulkDelete:`Opravdu chcete smazat {count} lokací?`,bulkDeleted:`{count} lokací bylo smazáno`,bulkDeleteFailed:`Nepodařilo se smazat {count} lokací`,bulkDeleteCanceled:`Hromadné smazání lokací bylo zrušeno`,noLocations:`Žádné lokace nejsou nakonfigurovány. Přidejte lokaci pro získání dat o počasí.`,notFound:`Lokace nebyla nalezena`,confirmDeleteLocation:`Opravdu chcete smazat lokaci "{name}"?`,deletedWhileEditing:`Lokace byla smazána. Přesměrování...`}},buttons:{add:{title:`Přidat`},save:{title:`Uložit`},cancel:{title:`Zrušit`},discard:{title:`Zahodit`},resetFilters:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},reset:{title:`Resetovat filtry`},detail:{title:`Detail`},retry:{title:`Opakovat`},back:{title:`Zpět`}},fields:{locations:{search:{placeholder:`Hledat lokace...`},provider:{title:`Poskytovatel počasí`,placeholder:`Vyberte poskytovatele meteorologických dat`},name:{title:`Název lokace`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název lokace je povinný`}}},config:{primaryLocation:{title:`Primární lokace`,description:`Výchozí lokace zobrazená v widgetech počasí`,placeholder:`Vyberte primární lokaci`}}},texts:{aboutPrimaryLocation:`Vyberte primární lokaci pro zobrazení ve widgetech počasí. Lokace lze spravovat v sekci Lokace. Data o počasí budou načítána pro všechny nakonfigurované lokace.`,selectProvider:`Vyberte poskytovatele meteorologických dat pro přidání nové lokace. Různí poskytovatelé mohou nabízet různé možnosti konfigurace.`,unsupportedProvider:`Vybraný poskytovatel "{provider}" není momentálně podporován. Vyberte prosím jiného poskytovatele.`,weatherError:`Nelze načíst počasí`,weatherErrorDescription:`Data o počasí se nepodařilo načíst pro tuto lokaci. Zkontrolujte prosím konfiguraci API a zkuste to znovu.`,locationDetail:{provider:`Poskytovatel`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmínky`,humidity:`Vlhkost`,wind:`Vítr`,pressure:`Tlak`},misc:{loadingLocations:`Načítání lokací...`,noLocations:`Zatím nejsou nakonfigurovány žádné lokace`,noFilteredLocations:`Žádné lokace neodpovídají kritériím filtru`}},filters:{locations:{types:{title:`Poskytovatel počasí`},primary:{title:`Stav primární lokace`,values:{all:`Vše`,primary:`Primární`,secondary:`Sekundární`}}}},table:{columns:{name:{title:`Název`},weather:{title:`Počasí`,failed:`Selhalo`,error:`Nepodařilo se načíst data o počasí. Zkontrolujte prosím konfiguraci API.`},type:{title:`Poskytovatel`},primary:{title:`Primární`,values:{yes:`Ano`,no:`Ne`}}}},meta:{locations:{list:{title:`Meteorologické lokace`},detail:{title:`Detail meteorologické lokace`},add:{title:`Přidat meteorologickou lokaci`},edit:{title:`Upravit meteorologickou lokaci`}}},conditions:{thunderstormWithLightRain:`Bouřka s lehkým deštěm`,thunderstormWithRain:`Bouřka s deštěm`,thunderstormWithHeavyRain:`Bouřka se silným deštěm`,lightThunderstorm:`Slabá bouřka`,thunderstorm:`Bouřka`,heavyThunderstorm:`Silná bouřka`,raggedThunderstorm:`Přeháňková bouřka`,thunderstormWithLightDrizzle:`Bouřka s lehkým mrholením`,thunderstormWithDrizzle:`Bouřka s mrholením`,thunderstormWithHeavyDrizzle:`Bouřka se silným mrholením`,lightIntensityDrizzle:`Slabé mrholení`,drizzle:`Mrholení`,heavyIntensityDrizzle:`Silné mrholení`,lightIntensityDrizzleRain:`Slabý déšť s mrholením`,drizzleRain:`Déšť s mrholením`,heavyIntensityDrizzleRain:`Silný déšť s mrholením`,showerRainAndDrizzle:`Přeháňky s mrholením`,heavyShowerRainAndDrizzle:`Silné přeháňky s mrholením`,showerDrizzle:`Přeháňkové mrholení`,lightRain:`Lehký déšť`,moderateRain:`Mírný déšť`,heavyIntensityRain:`Silný déšť`,veryHeavyRain:`Velmi silný déšť`,extremeRain:`Extrémní déšť`,freezingRain:`Mrznoucí déšť`,lightIntensityShowerRain:`Slabé přeháňky`,showerRain:`Přeháňky`,heavyIntensityShowerRain:`Silné přeháňky`,raggedShowerRain:`Nepravidelné přeháňky`,lightSnow:`Lehké sněžení`,snow:`Sněžení`,heavySnow:`Silné sněžení`,sleet:`Plískanice`,lightShowerSleet:`Slabá plískanice`,showerSleet:`Přeháňková plískanice`,lightRainAndSnow:`Lehký déšť se sněhem`,rainAndSnow:`Déšť se sněhem`,lightShowerSnow:`Slabé sněhové přeháňky`,showerSnow:`Sněhové přeháňky`,heavyShowerSnow:`Silné sněhové přeháňky`,mist:`Mlha`,smoke:`Kouř`,haze:`Opar`,fog:`Hustá mlha`,sand:`Písek`,dust:`Prach`,volcanicAsh:`Vulkanický popel`,squalls:`Poryvy větru`,tornado:`Tornádo`,clearSky:`Jasno`,fewClouds:`Málo oblačno`,scatteredClouds:`Rozptýlená oblačnost`,brokenClouds:`Oblačno s přeháňkami`,overcastClouds:`Zataženo`,unknown:`Neznámé`}},"de-DE":{menu:{title:`Wetterstandorte`},headings:{weather:`Wetter`,aboutPrimaryLocation:`Primärer Standort`,locations:`Wetterstandorte`,locationDetail:`{location}`,forecast:`Vorhersage`,hourlyForecast:`Stundenvorhersage`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`,deleteLocation:`Standort löschen`,bulkDeleteLocations:`Standorte löschen`,discard:`Änderungen verwerfen`,selectProvider:`Wetteranbieter auswählen`,unsupportedProvider:`Nicht unterstützter Anbieter`,adjustFilters:`Filter anpassen`},subHeadings:{locations:`Wetterdaten-Standorte verwalten`,locationDetail:`Wetterinformationen für {location}`,addLocation:`Neuen Wetterstandort hinzufügen`,editLocation:`Standortdetails bearbeiten`,adjustFilters:`Standortlistenfilter anpassen`},breadcrumbs:{locations:`Standorte`,locationDetail:`Standort: {location}`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`},messages:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,requestError:`Beim Laden der Daten ist ein Fehler aufgetreten`,config:{edited:`Wetterkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Wetterkonfiguration fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,updated:`Standort "{location}" wurde aktualisiert`,notUpdated:`Standort "{location}" konnte nicht aktualisiert werden`,deleted:`Standort wurde gelöscht`,notDeleted:`Standort konnte nicht gelöscht werden`,deleteCanceled:`Löschung von Standort "{location}" wurde abgebrochen`,confirmBulkDelete:`Sind Sie sicher, dass Sie {count} Standort(e) löschen möchten?`,bulkDeleted:`{count} Standort(e) wurden gelöscht`,bulkDeleteFailed:`Löschen von {count} Standort(en) fehlgeschlagen`,bulkDeleteCanceled:`Massenlöschung von Standorten wurde abgebrochen`,noLocations:`Keine Standorte konfiguriert. Fügen Sie einen Standort hinzu, um Wetterdaten zu erhalten.`,notFound:`Standort nicht gefunden`,confirmDeleteLocation:`Sind Sie sicher, dass Sie den Standort "{name}" löschen möchten?`,deletedWhileEditing:`Der Standort wurde gelöscht. Weiterleitung...`}},buttons:{add:{title:`Hinzufügen`},save:{title:`Speichern`},cancel:{title:`Abbrechen`},discard:{title:`Verwerfen`},resetFilters:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},reset:{title:`Filter zurücksetzen`},detail:{title:`Details`},retry:{title:`Wiederholen`},back:{title:`Zurück`}},fields:{locations:{search:{placeholder:`Standorte suchen...`},provider:{title:`Wetteranbieter`,placeholder:`Wetterdatenanbieter auswählen`},name:{title:`Standortname`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Standortname ist erforderlich`}}},config:{primaryLocation:{title:`Primärer Standort`,description:`Der Standardstandort, der in Wetteranzeigen angezeigt wird`,placeholder:`Primären Standort auswählen`}}},texts:{aboutPrimaryLocation:`Wählen Sie den primären Standort für die Anzeige in Wetter-Widgets. Standorte können im Standort-Bereich verwaltet werden. Wetterdaten werden für alle konfigurierten Standorte abgerufen.`,selectProvider:`Wählen Sie einen Wetterdatenanbieter, um einen neuen Standort hinzuzufügen. Verschiedene Anbieter bieten möglicherweise unterschiedliche Konfigurationsoptionen.`,unsupportedProvider:`Der ausgewählte Anbieter "{provider}" wird derzeit nicht unterstützt. Bitte wählen Sie einen anderen Anbieter.`,weatherError:`Wetter konnte nicht geladen werden`,weatherErrorDescription:`Wetterdaten konnten für diesen Standort nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration und versuchen Sie es erneut.`,locationDetail:{provider:`Anbieter`,temperature:`Temperatur`,feelsLike:`Gefühlt wie`,conditions:`Bedingungen`,humidity:`Luftfeuchtigkeit`,wind:`Wind`,pressure:`Luftdruck`},misc:{loadingLocations:`Standorte werden geladen...`,noLocations:`Noch keine Standorte konfiguriert`,noFilteredLocations:`Keine Standorte entsprechen Ihren Filterkriterien`}},filters:{locations:{types:{title:`Wetteranbieter`},primary:{title:`Primärstatus`,values:{all:`Alle`,primary:`Primär`,secondary:`Sekundär`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Wetter`,failed:`Fehlgeschlagen`,error:`Wetterdaten konnten nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration.`},type:{title:`Anbieter`},primary:{title:`Primär`,values:{yes:`Ja`,no:`Nein`}}}},meta:{locations:{list:{title:`Wetterstandorte`},detail:{title:`Wetterstandort-Details`},add:{title:`Wetterstandort hinzufügen`},edit:{title:`Wetterstandort bearbeiten`}}},conditions:{thunderstormWithLightRain:`Gewitter mit leichtem Regen`,thunderstormWithRain:`Gewitter mit Regen`,thunderstormWithHeavyRain:`Gewitter mit starkem Regen`,lightThunderstorm:`Leichtes Gewitter`,thunderstorm:`Gewitter`,heavyThunderstorm:`Starkes Gewitter`,raggedThunderstorm:`Unbeständiges Gewitter`,thunderstormWithLightDrizzle:`Gewitter mit leichtem Nieselregen`,thunderstormWithDrizzle:`Gewitter mit Nieselregen`,thunderstormWithHeavyDrizzle:`Gewitter mit starkem Nieselregen`,lightIntensityDrizzle:`Leichter Nieselregen`,drizzle:`Nieselregen`,heavyIntensityDrizzle:`Starker Nieselregen`,lightIntensityDrizzleRain:`Leichter Niesel-Regen`,drizzleRain:`Niesel-Regen`,heavyIntensityDrizzleRain:`Starker Niesel-Regen`,showerRainAndDrizzle:`Schauerregen mit Nieselregen`,heavyShowerRainAndDrizzle:`Starker Schauerregen mit Nieselregen`,showerDrizzle:`Nieselschauer`,lightRain:`Leichter Regen`,moderateRain:`Mäßiger Regen`,heavyIntensityRain:`Starker Regen`,veryHeavyRain:`Sehr starker Regen`,extremeRain:`Extremer Regen`,freezingRain:`Gefrierender Regen`,lightIntensityShowerRain:`Leichter Schauerregen`,showerRain:`Schauerregen`,heavyIntensityShowerRain:`Starker Schauerregen`,raggedShowerRain:`Unbeständiger Schauerregen`,lightSnow:`Leichter Schneefall`,snow:`Schnee`,heavySnow:`Starker Schneefall`,sleet:`Schneeregen`,lightShowerSleet:`Leichter Schneeregenschauer`,showerSleet:`Schneeregenschauer`,lightRainAndSnow:`Leichter Regen und Schnee`,rainAndSnow:`Regen und Schnee`,lightShowerSnow:`Leichter Schneeschauer`,showerSnow:`Schneeschauer`,heavyShowerSnow:`Starker Schneeschauer`,mist:`Dunst`,smoke:`Rauch`,haze:`Diesig`,fog:`Nebel`,sand:`Sand`,dust:`Staub`,volcanicAsh:`Vulkanasche`,squalls:`Böen`,tornado:`Tornado`,clearSky:`Klarer Himmel`,fewClouds:`Wenige Wolken`,scatteredClouds:`Vereinzelte Wolken`,brokenClouds:`Aufgelockerte Bewölkung`,overcastClouds:`Bedeckt`,unknown:`Unbekannt`}},"en-US":{menu:{title:`Weather locations`},headings:{weather:`Weather`,aboutPrimaryLocation:`Primary location`,locations:`Weather locations`,locationDetail:`{location}`,forecast:`Forecast`,hourlyForecast:`Hourly forecast`,addLocation:`Add location`,editLocation:`Edit location`,deleteLocation:`Delete location`,bulkDeleteLocations:`Delete locations`,discard:`Discard changes`,selectProvider:`Select a weather provider`,unsupportedProvider:`Unsupported provider`,adjustFilters:`Adjust filters`},subHeadings:{locations:`Manage weather data locations`,locationDetail:`Weather information for {location}`,addLocation:`Add a new weather location`,editLocation:`Edit location details`,adjustFilters:`Customize location list filters`},breadcrumbs:{locations:`locations`,locationDetail:`location: {location}`,addLocation:`add location`,editLocation:`edit location`},messages:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,requestError:`An error occurred while loading data`,config:{edited:`Weather configuration has been successfully updated`,notEdited:`Failed to update weather configuration`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,updated:`Location "{location}" has been updated`,notUpdated:`Failed to update location "{location}"`,deleted:`Location has been deleted`,notDeleted:`Failed to delete location`,deleteCanceled:`Location "{location}" deletion was canceled`,confirmBulkDelete:`Are you sure you want to delete {count} location(s)?`,bulkDeleted:`{count} location(s) have been deleted`,bulkDeleteFailed:`Failed to delete {count} location(s)`,bulkDeleteCanceled:`Bulk location deletion was canceled`,noLocations:`No locations configured. Add a location to get weather data.`,notFound:`Location not found`,confirmDeleteLocation:`Are you sure you want to delete location "{name}"?`,deletedWhileEditing:`The location was deleted. Redirecting...`}},buttons:{add:{title:`Add`},save:{title:`Save`},cancel:{title:`Cancel`},discard:{title:`Discard`},resetFilters:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},reset:{title:`Reset filters`},detail:{title:`Detail`},retry:{title:`Retry`},back:{title:`Back`}},fields:{locations:{search:{placeholder:`Search locations...`},provider:{title:`Weather provider`,placeholder:`Choose a weather data provider`},name:{title:`Location name`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Location name is required`}}},config:{primaryLocation:{title:`Primary location`,description:`The default location shown in weather displays`,placeholder:`Select primary location`}}},texts:{aboutPrimaryLocation:`Select the primary location to display in weather widgets. Locations can be managed in the Locations section. Weather data will be fetched for all configured locations.`,selectProvider:`Choose a weather data provider to add a new location. Different providers may offer different configuration options.`,unsupportedProvider:`The selected provider "{provider}" is not currently supported. Please select a different provider.`,weatherError:`Unable to Load Weather`,weatherErrorDescription:`Weather data could not be loaded for this location. Please check your API configuration and try again.`,locationDetail:{provider:`Provider`,temperature:`Temperature`,feelsLike:`Feels Like`,conditions:`Conditions`,humidity:`Humidity`,wind:`Wind`,pressure:`Pressure`},misc:{loadingLocations:`Loading locations...`,noLocations:`No locations configured yet`,noFilteredLocations:`No locations match your filter criteria`}},filters:{locations:{types:{title:`Weather provider`},primary:{title:`Primary status`,values:{all:`All`,primary:`Primary`,secondary:`Secondary`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Weather`,failed:`Failed`,error:`Failed to load weather data. Please check your API configuration.`},type:{title:`Provider`},primary:{title:`Primary`,values:{yes:`Yes`,no:`No`}}}},meta:{locations:{list:{title:`Weather Locations`},detail:{title:`Weather Location Detail`},add:{title:`Add Weather Location`},edit:{title:`Edit Weather Location`}}},conditions:{thunderstormWithLightRain:`Thunderstorm with light rain`,thunderstormWithRain:`Thunderstorm with rain`,thunderstormWithHeavyRain:`Thunderstorm with heavy rain`,lightThunderstorm:`Light thunderstorm`,thunderstorm:`Thunderstorm`,heavyThunderstorm:`Heavy thunderstorm`,raggedThunderstorm:`Ragged thunderstorm`,thunderstormWithLightDrizzle:`Thunderstorm with light drizzle`,thunderstormWithDrizzle:`Thunderstorm with drizzle`,thunderstormWithHeavyDrizzle:`Thunderstorm with heavy drizzle`,lightIntensityDrizzle:`Light intensity drizzle`,drizzle:`Drizzle`,heavyIntensityDrizzle:`Heavy intensity drizzle`,lightIntensityDrizzleRain:`Light intensity drizzle rain`,drizzleRain:`Drizzle rain`,heavyIntensityDrizzleRain:`Heavy intensity drizzle rain`,showerRainAndDrizzle:`Shower rain and drizzle`,heavyShowerRainAndDrizzle:`Heavy shower rain and drizzle`,showerDrizzle:`Shower drizzle`,lightRain:`Light rain`,moderateRain:`Moderate rain`,heavyIntensityRain:`Heavy intensity rain`,veryHeavyRain:`Very heavy rain`,extremeRain:`Extreme rain`,freezingRain:`Freezing rain`,lightIntensityShowerRain:`Light intensity shower rain`,showerRain:`Shower rain`,heavyIntensityShowerRain:`Heavy intensity shower rain`,raggedShowerRain:`Ragged shower rain`,lightSnow:`Light snow`,snow:`Snow`,heavySnow:`Heavy snow`,sleet:`Sleet`,lightShowerSleet:`Light shower sleet`,showerSleet:`Shower sleet`,lightRainAndSnow:`Light rain and snow`,rainAndSnow:`Rain and snow`,lightShowerSnow:`Light shower snow`,showerSnow:`Shower snow`,heavyShowerSnow:`Heavy shower snow`,mist:`Mist`,smoke:`Smoke`,haze:`Haze`,fog:`Fog`,sand:`Sand`,dust:`Dust`,volcanicAsh:`Volcanic ash`,squalls:`Squalls`,tornado:`Tornado`,clearSky:`Clear sky`,fewClouds:`Few clouds`,scatteredClouds:`Scattered clouds`,brokenClouds:`Broken clouds`,overcastClouds:`Overcast clouds`,unknown:`Unknown`}},"es-ES":{menu:{title:`Ubicaciones meteorológicas`},headings:{weather:`Clima`,aboutPrimaryLocation:`Ubicación principal`,locations:`Ubicaciones meteorológicas`,locationDetail:`{location}`,forecast:`Pronóstico`,hourlyForecast:`Pronóstico por horas`,addLocation:`Añadir ubicación`,editLocation:`Editar ubicación`,deleteLocation:`Eliminar ubicación`,bulkDeleteLocations:`Eliminar ubicaciones`,discard:`Descartar cambios`,selectProvider:`Seleccionar un proveedor meteorológico`,unsupportedProvider:`Proveedor no compatible`,adjustFilters:`Ajustar filtros`},subHeadings:{locations:`Gestionar ubicaciones de datos meteorológicos`,locationDetail:`Información meteorológica de {location}`,addLocation:`Añadir una nueva ubicación meteorológica`,editLocation:`Editar detalles de la ubicación`,adjustFilters:`Personalizar filtros de la lista de ubicaciones`},breadcrumbs:{locations:`ubicaciones`,locationDetail:`ubicación: {location}`,addLocation:`añadir ubicación`,editLocation:`editar ubicación`},messages:{confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`,requestError:`Ocurrió un error al cargar los datos`,config:{edited:`La configuración meteorológica se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración meteorológica`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`Error al crear la ubicación "{location}"`,updated:`La ubicación "{location}" ha sido actualizada`,notUpdated:`Error al actualizar la ubicación "{location}"`,deleted:`La ubicación ha sido eliminada`,notDeleted:`Error al eliminar la ubicación`,deleteCanceled:`La eliminación de la ubicación "{location}" fue cancelada`,confirmBulkDelete:`¿Estás seguro de que deseas eliminar {count} ubicación(es)?`,bulkDeleted:`{count} ubicación(es) han sido eliminadas`,bulkDeleteFailed:`Error al eliminar {count} ubicación(es)`,bulkDeleteCanceled:`La eliminación masiva de ubicaciones fue cancelada`,noLocations:`No hay ubicaciones configuradas. Añade una ubicación para obtener datos meteorológicos.`,notFound:`Ubicación no encontrada`,confirmDeleteLocation:`¿Estás seguro de que deseas eliminar la ubicación "{name}"?`,deletedWhileEditing:`La ubicación fue eliminada. Redirigiendo...`}},buttons:{add:{title:`Añadir`},save:{title:`Guardar`},cancel:{title:`Cancelar`},discard:{title:`Descartar`},resetFilters:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},reset:{title:`Restablecer filtros`},detail:{title:`Detalle`},retry:{title:`Reintentar`},back:{title:`Volver`}},fields:{locations:{search:{placeholder:`Buscar ubicaciones...`},provider:{title:`Proveedor meteorológico`,placeholder:`Elige un proveedor de datos meteorológicos`},name:{title:`Nombre de la ubicación`,placeholder:`ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre de la ubicación es obligatorio`}}},config:{primaryLocation:{title:`Ubicación principal`,description:`La ubicación predeterminada que se muestra en los widgets meteorológicos`,placeholder:`Seleccionar ubicación principal`}}},texts:{aboutPrimaryLocation:`Selecciona la ubicación principal para mostrar en los widgets meteorológicos. Las ubicaciones se pueden gestionar en la sección de Ubicaciones. Los datos meteorológicos se obtendrán para todas las ubicaciones configuradas.`,selectProvider:`Elige un proveedor de datos meteorológicos para añadir una nueva ubicación. Los diferentes proveedores pueden ofrecer diferentes opciones de configuración.`,unsupportedProvider:`El proveedor seleccionado "{provider}" no está soportado actualmente. Por favor selecciona un proveedor diferente.`,weatherError:`No se puede cargar el clima`,weatherErrorDescription:`No se pudieron cargar los datos meteorológicos para esta ubicación. Por favor verifica tu configuración de API e inténtalo de nuevo.`,locationDetail:{provider:`Proveedor`,temperature:`Temperatura`,feelsLike:`Sensación térmica`,conditions:`Condiciones`,humidity:`Humedad`,wind:`Viento`,pressure:`Presión`},misc:{loadingLocations:`Cargando ubicaciones...`,noLocations:`Aún no hay ubicaciones configuradas`,noFilteredLocations:`Ninguna ubicación coincide con los criterios de filtro`}},filters:{locations:{types:{title:`Proveedor meteorológico`},primary:{title:`Estado de principal`,values:{all:`Todas`,primary:`Principal`,secondary:`Secundaria`}}}},table:{columns:{name:{title:`Nombre`},weather:{title:`Clima`,failed:`Error`,error:`Error al cargar datos meteorológicos. Por favor verifica tu configuración de API.`},type:{title:`Proveedor`},primary:{title:`Principal`,values:{yes:`Sí`,no:`No`}}}},meta:{locations:{list:{title:`Ubicaciones meteorológicas`},detail:{title:`Detalle de ubicación meteorológica`},add:{title:`Añadir ubicación meteorológica`},edit:{title:`Editar ubicación meteorológica`}}},conditions:{thunderstormWithLightRain:`Tormenta con lluvia ligera`,thunderstormWithRain:`Tormenta con lluvia`,thunderstormWithHeavyRain:`Tormenta con lluvia intensa`,lightThunderstorm:`Tormenta ligera`,thunderstorm:`Tormenta`,heavyThunderstorm:`Tormenta intensa`,raggedThunderstorm:`Tormenta irregular`,thunderstormWithLightDrizzle:`Tormenta con llovizna ligera`,thunderstormWithDrizzle:`Tormenta con llovizna`,thunderstormWithHeavyDrizzle:`Tormenta con llovizna intensa`,lightIntensityDrizzle:`Llovizna de intensidad ligera`,drizzle:`Llovizna`,heavyIntensityDrizzle:`Llovizna de intensidad fuerte`,lightIntensityDrizzleRain:`Lluvia con llovizna ligera`,drizzleRain:`Lluvia con llovizna`,heavyIntensityDrizzleRain:`Lluvia con llovizna intensa`,showerRainAndDrizzle:`Chaparrón con llovizna`,heavyShowerRainAndDrizzle:`Chaparrón intenso con llovizna`,showerDrizzle:`Llovizna intermitente`,lightRain:`Lluvia ligera`,moderateRain:`Lluvia moderada`,heavyIntensityRain:`Lluvia de intensidad fuerte`,veryHeavyRain:`Lluvia muy intensa`,extremeRain:`Lluvia extrema`,freezingRain:`Lluvia helada`,lightIntensityShowerRain:`Chaparrón ligero`,showerRain:`Chaparrón`,heavyIntensityShowerRain:`Chaparrón intenso`,raggedShowerRain:`Chaparrón irregular`,lightSnow:`Nieve ligera`,snow:`Nieve`,heavySnow:`Nieve intensa`,sleet:`Aguanieve`,lightShowerSleet:`Aguanieve ligera intermitente`,showerSleet:`Aguanieve intermitente`,lightRainAndSnow:`Lluvia ligera con nieve`,rainAndSnow:`Lluvia con nieve`,lightShowerSnow:`Nevada ligera intermitente`,showerSnow:`Nevada intermitente`,heavyShowerSnow:`Nevada intensa intermitente`,mist:`Neblina`,smoke:`Humo`,haze:`Bruma`,fog:`Niebla`,sand:`Arena`,dust:`Polvo`,volcanicAsh:`Ceniza volcánica`,squalls:`Ráfagas`,tornado:`Tornado`,clearSky:`Cielo despejado`,fewClouds:`Pocas nubes`,scatteredClouds:`Nubes dispersas`,brokenClouds:`Nubosidad parcial`,overcastClouds:`Cielo cubierto`,unknown:`Desconocido`}},"pl-PL":{menu:{title:`Lokalizacje pogodowe`},headings:{weather:`Pogoda`,aboutPrimaryLocation:`Lokalizacja główna`,locations:`Lokalizacje pogody`,locationDetail:`{location}`,forecast:`Prognoza`,hourlyForecast:`Prognoza godzinowa`,addLocation:`Dodaj lokalizację`,editLocation:`Edytuj lokalizację`,deleteLocation:`Usuń lokalizację`,bulkDeleteLocations:`Usuń lokalizacje`,discard:`Odrzuć zmiany`,selectProvider:`Wybierz dostawcę pogody`,unsupportedProvider:`Nieobsługiwany dostawca`,adjustFilters:`Dostosuj filtry`},subHeadings:{locations:`Zarządzaj lokalizacjami danych pogodowych`,locationDetail:`Informacje pogodowe dla {location}`,addLocation:`Dodaj nową lokalizację pogody`,editLocation:`Edytuj szczegóły lokalizacji`,adjustFilters:`Dostosuj filtry listy lokalizacji`},breadcrumbs:{locations:`lokalizacje`,locationDetail:`lokalizacja: {location}`,addLocation:`dodaj lokalizację`,editLocation:`edytuj lokalizację`},messages:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,requestError:`Wystąpił błąd podczas ładowania danych`,config:{edited:`Konfiguracja pogody została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji pogody`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,updated:`Lokalizacja "{location}" została zaktualizowana`,notUpdated:`Nie udało się zaktualizować lokalizacji "{location}"`,deleted:`Lokalizacja została usunięta`,notDeleted:`Nie udało się usunąć lokalizacji`,deleteCanceled:`Usuwanie lokalizacji "{location}" zostało anulowane`,confirmBulkDelete:`Czy na pewno chcesz usunąć {count} lokalizacji?`,bulkDeleted:`Usunięto {count} lokalizacji`,bulkDeleteFailed:`Nie udało się usunąć {count} lokalizacji`,bulkDeleteCanceled:`Masowe usuwanie lokalizacji zostało anulowane`,noLocations:`Brak skonfigurowanych lokalizacji. Dodaj lokalizację, aby uzyskać dane pogodowe.`,notFound:`Lokalizacja nie znaleziona`,confirmDeleteLocation:`Czy na pewno chcesz usunąć lokalizację "{name}"?`,deletedWhileEditing:`Lokalizacja została usunięta. Przekierowywanie...`}},buttons:{add:{title:`Dodaj`},save:{title:`Zapisz`},cancel:{title:`Anuluj`},discard:{title:`Odrzuć`},resetFilters:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},reset:{title:`Resetuj filtry`},detail:{title:`Szczegóły`},retry:{title:`Ponów`},back:{title:`Wstecz`}},fields:{locations:{search:{placeholder:`Szukaj lokalizacji...`},provider:{title:`Dostawca pogody`,placeholder:`Wybierz dostawcę danych pogodowych`},name:{title:`Nazwa lokalizacji`,placeholder:`np. Dom, Biuro, Domek letniskowy`,validation:{required:`Nazwa lokalizacji jest wymagana`}}},config:{primaryLocation:{title:`Lokalizacja główna`,description:`Domyślna lokalizacja wyświetlana w widżetach pogody`,placeholder:`Wybierz lokalizację główną`}}},texts:{aboutPrimaryLocation:`Wybierz główną lokalizację do wyświetlania w widżetach pogody. Lokalizacjami można zarządzać w sekcji Lokalizacje. Dane pogodowe będą pobierane dla wszystkich skonfigurowanych lokalizacji.`,selectProvider:`Wybierz dostawcę danych pogodowych, aby dodać nową lokalizację. Różni dostawcy mogą oferować różne opcje konfiguracji.`,unsupportedProvider:`Wybrany dostawca "{provider}" nie jest obecnie obsługiwany. Proszę wybrać innego dostawcę.`,weatherError:`Nie udało się załadować pogody`,weatherErrorDescription:`Nie udało się załadować danych pogodowych dla tej lokalizacji. Sprawdź konfigurację API i spróbuj ponownie.`,locationDetail:{provider:`Dostawca`,temperature:`Temperatura`,feelsLike:`Odczuwalna`,conditions:`Warunki`,humidity:`Wilgotność`,wind:`Wiatr`,pressure:`Ciśnienie`},misc:{loadingLocations:`Ładowanie lokalizacji...`,noLocations:`Nie skonfigurowano jeszcze żadnych lokalizacji`,noFilteredLocations:`Żadne lokalizacje nie pasują do kryteriów filtra`}},filters:{locations:{types:{title:`Dostawca pogody`},primary:{title:`Status głównej`,values:{all:`Wszystkie`,primary:`Główna`,secondary:`Drugorzędna`}}}},table:{columns:{name:{title:`Nazwa`},weather:{title:`Pogoda`,failed:`Błąd`,error:`Nie udało się załadować danych pogodowych. Sprawdź konfigurację API.`},type:{title:`Dostawca`},primary:{title:`Główna`,values:{yes:`Tak`,no:`Nie`}}}},meta:{locations:{list:{title:`Lokalizacje pogody`},detail:{title:`Szczegóły lokalizacji pogody`},add:{title:`Dodaj lokalizację pogody`},edit:{title:`Edytuj lokalizację pogody`}}},conditions:{thunderstormWithLightRain:`Burza z lekkim deszczem`,thunderstormWithRain:`Burza z deszczem`,thunderstormWithHeavyRain:`Burza z silnym deszczem`,lightThunderstorm:`Lekka burza`,thunderstorm:`Burza`,heavyThunderstorm:`Silna burza`,raggedThunderstorm:`Burza z porywistym wiatrem`,thunderstormWithLightDrizzle:`Burza z lekką mżawką`,thunderstormWithDrizzle:`Burza z mżawką`,thunderstormWithHeavyDrizzle:`Burza z silną mżawką`,lightIntensityDrizzle:`Lekka mżawka`,drizzle:`Mżawka`,heavyIntensityDrizzle:`Silna mżawka`,lightIntensityDrizzleRain:`Lekki deszcz ze mżawką`,drizzleRain:`Deszcz ze mżawką`,heavyIntensityDrizzleRain:`Silny deszcz ze mżawką`,showerRainAndDrizzle:`Przelotny deszcz ze mżawką`,heavyShowerRainAndDrizzle:`Silny przelotny deszcz ze mżawką`,showerDrizzle:`Przelotna mżawka`,lightRain:`Lekki deszcz`,moderateRain:`Umiarkowany deszcz`,heavyIntensityRain:`Intensywny deszcz`,veryHeavyRain:`Bardzo silny deszcz`,extremeRain:`Ekstremalny deszcz`,freezingRain:`Marznący deszcz`,lightIntensityShowerRain:`Lekki przelotny deszcz`,showerRain:`Przelotny deszcz`,heavyIntensityShowerRain:`Silny przelotny deszcz`,raggedShowerRain:`Nieregularny przelotny deszcz`,lightSnow:`Lekki śnieg`,snow:`Śnieg`,heavySnow:`Intensywny śnieg`,sleet:`Deszcz ze śniegiem`,lightShowerSleet:`Lekki przelotny deszcz ze śniegiem`,showerSleet:`Przelotny deszcz ze śniegiem`,lightRainAndSnow:`Lekki deszcz ze śniegiem`,rainAndSnow:`Deszcz ze śniegiem`,lightShowerSnow:`Lekki przelotny śnieg`,showerSnow:`Przelotny śnieg`,heavyShowerSnow:`Silny przelotny śnieg`,mist:`Mgła`,smoke:`Dym`,haze:`Zamglenie`,fog:`Gęsta mgła`,sand:`Piasek`,dust:`Kurz`,volcanicAsh:`Popiół wulkaniczny`,squalls:`Szkwały`,tornado:`Tornado`,clearSky:`Bezchmurne niebo`,fewClouds:`Lekkie zachmurzenie`,scatteredClouds:`Rozproszone chmury`,brokenClouds:`Duże zachmurzenie`,overcastClouds:`Pochmurno`,unknown:`Nieznane`}},"sk-SK":{menu:{title:`Lokality počasia`},headings:{weather:`Počasie`,aboutPrimaryLocation:`Primárna poloha`,locations:`Polohy počasia`,locationDetail:`{location}`,forecast:`Predpoveď`,hourlyForecast:`Hodinová predpoveď`,addLocation:`Pridať polohu`,editLocation:`Upraviť polohu`,deleteLocation:`Odstrániť polohu`,bulkDeleteLocations:`Odstrániť polohy`,discard:`Zahodiť zmeny`,selectProvider:`Vyberte poskytovateľa počasia`,unsupportedProvider:`Nepodporovaný poskytovateľ`,adjustFilters:`Upraviť filtre`},subHeadings:{locations:`Spravujte polohy údajov o počasí`,locationDetail:`Informácie o počasí pre {location}`,addLocation:`Pridať novú polohu počasia`,editLocation:`Upraviť detaily polohy`,adjustFilters:`Prispôsobiť filtre zoznamu polôh`},breadcrumbs:{locations:`polohy`,locationDetail:`poloha: {location}`,addLocation:`pridať polohu`,editLocation:`upraviť polohu`},messages:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,requestError:`Pri načítavaní dát sa vyskytla chyba`,config:{edited:`Konfigurácia počasia bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu počasia`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,updated:`Poloha "{location}" bola aktualizovaná`,notUpdated:`Nepodarilo sa aktualizovať polohu "{location}"`,deleted:`Poloha bola odstránená`,notDeleted:`Nepodarilo sa odstrániť polohu`,deleteCanceled:`Odstránenie polohy "{location}" bolo zrušené`,confirmBulkDelete:`Naozaj chcete odstrániť {count} polôh?`,bulkDeleted:`{count} polôh bolo odstránených`,bulkDeleteFailed:`Nepodarilo sa odstrániť {count} polôh`,bulkDeleteCanceled:`Hromadné odstránenie polôh bolo zrušené`,noLocations:`Žiadne polohy nie sú nakonfigurované. Pridajte polohu na získanie údajov o počasí.`,notFound:`Poloha nebola nájdená`,confirmDeleteLocation:`Naozaj chcete odstrániť polohu "{name}"?`,deletedWhileEditing:`Poloha bola odstránená. Presmerovanie...`}},buttons:{add:{title:`Pridať`},save:{title:`Uložiť`},cancel:{title:`Zrušiť`},discard:{title:`Zahodiť`},resetFilters:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},reset:{title:`Resetovať filtre`},detail:{title:`Detail`},retry:{title:`Skúsiť znova`},back:{title:`Späť`}},fields:{locations:{search:{placeholder:`Vyhľadať polohy...`},provider:{title:`Poskytovateľ počasia`,placeholder:`Vyberte poskytovateľa údajov o počasí`},name:{title:`Názov polohy`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov polohy je povinný`}}},config:{primaryLocation:{title:`Primárna poloha`,description:`Predvolená poloha zobrazená vo widgetoch počasia`,placeholder:`Vyberte primárnu polohu`}}},texts:{aboutPrimaryLocation:`Vyberte primárnu polohu na zobrazenie vo widgetoch počasia. Polohy je možné spravovať v sekcii Polohy. Údaje o počasí budú získavané pre všetky nakonfigurované polohy.`,selectProvider:`Vyberte poskytovateľa údajov o počasí na pridanie novej polohy. Rôzni poskytovatelia môžu ponúkať rôzne konfiguračné možnosti.`,unsupportedProvider:`Vybraný poskytovateľ "{provider}" nie je momentálne podporovaný. Prosím vyberte iného poskytovateľa.`,weatherError:`Nepodarilo sa načítať počasie`,weatherErrorDescription:`Údaje o počasí sa nepodarilo načítať pre túto polohu. Skontrolujte konfiguráciu API a skúste to znova.`,locationDetail:{provider:`Poskytovateľ`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmienky`,humidity:`Vlhkosť`,wind:`Vietor`,pressure:`Tlak`},misc:{loadingLocations:`Načítavanie polôh...`,noLocations:`Zatiaľ nie sú nakonfigurované žiadne polohy`,noFilteredLocations:`Žiadne polohy nezodpovedajú vašim filtrom`}},filters:{locations:{types:{title:`Poskytovateľ počasia`},primary:{title:`Stav primárnej polohy`,values:{all:`Všetky`,primary:`Primárna`,secondary:`Sekundárna`}}}},table:{columns:{name:{title:`Názov`},weather:{title:`Počasie`,failed:`Zlyhanie`,error:`Nepodarilo sa načítať údaje o počasí. Skontrolujte konfiguráciu API.`},type:{title:`Poskytovateľ`},primary:{title:`Primárna`,values:{yes:`Áno`,no:`Nie`}}}},meta:{locations:{list:{title:`Polohy počasia`},detail:{title:`Detail polohy počasia`},add:{title:`Pridať polohu počasia`},edit:{title:`Upraviť polohu počasia`}}},conditions:{thunderstormWithLightRain:`Búrka s miernym dažďom`,thunderstormWithRain:`Búrka s dažďom`,thunderstormWithHeavyRain:`Búrka so silným dažďom`,lightThunderstorm:`Mierna búrka`,thunderstorm:`Búrka`,heavyThunderstorm:`Silná búrka`,raggedThunderstorm:`Nepravidelná búrka`,thunderstormWithLightDrizzle:`Búrka s miernym mrholením`,thunderstormWithDrizzle:`Búrka s mrholením`,thunderstormWithHeavyDrizzle:`Búrka so silným mrholením`,lightIntensityDrizzle:`Mierne mrholenie`,drizzle:`Mrholenie`,heavyIntensityDrizzle:`Silné mrholenie`,lightIntensityDrizzleRain:`Mierny mrholivý dážď`,drizzleRain:`Mrholivý dážď`,heavyIntensityDrizzleRain:`Silný mrholivý dážď`,showerRainAndDrizzle:`Prehánky s mrholením`,heavyShowerRainAndDrizzle:`Silné prehánky s mrholením`,showerDrizzle:`Mrholivé prehánky`,lightRain:`Mierny dážď`,moderateRain:`Stredný dážď`,heavyIntensityRain:`Silný dážď`,veryHeavyRain:`Veľmi silný dážď`,extremeRain:`Extrémny dážď`,freezingRain:`Mrznúci dážď`,lightIntensityShowerRain:`Mierne prehánky`,showerRain:`Prehánky`,heavyIntensityShowerRain:`Silné prehánky`,raggedShowerRain:`Nepravidelné prehánky`,lightSnow:`Mierny sneh`,snow:`Sneh`,heavySnow:`Silný sneh`,sleet:`Čľapkanica`,lightShowerSleet:`Mierne prehánky čľapkanice`,showerSleet:`Prehánky čľapkanice`,lightRainAndSnow:`Mierny dážď so snehom`,rainAndSnow:`Dážď so snehom`,lightShowerSnow:`Mierne snehové prehánky`,showerSnow:`Snehové prehánky`,heavyShowerSnow:`Silné snehové prehánky`,mist:`Hmla`,smoke:`Dym`,haze:`Opar`,fog:`Hustá hmla`,sand:`Piesok`,dust:`Prach`,volcanicAsh:`Sopečný popol`,squalls:`Búrlivý vietor`,tornado:`Tornádo`,clearSky:`Jasná obloha`,fewClouds:`Málo oblakov`,scatteredClouds:`Roztrúsené oblaky`,brokenClouds:`Oblačno s premenou`,overcastClouds:`Zamračené`,unknown:`Neznáme`}}},wn=[{path:`weather/locations`,name:J.WEATHER_LOCATIONS,component:()=>L(()=>import(`./view-locations-BvHYF0U7.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37])),meta:{guards:{authenticated:!0,roles:[O.admin,O.owner]},title:()=>re.global.t(`weatherModule.menu.title`),icon:`mdi:map-marker-multiple`,menu:4e3},children:[{path:`add`,name:J.WEATHER_LOCATION_ADD,component:()=>L(()=>import(`./view-location-add-Df25PMeB.js`),__vite__mapDeps([38,1,2,3,4,5,6,29,9,39,33,34,40,24,14,15,16,17,18,19,20,21,22,23,25,26])),props:!1,meta:{guards:{authenticated:!0,roles:[O.admin,O.owner]}}},{path:`:id`,name:J.WEATHER_LOCATION_EDIT,component:()=>L(()=>import(`./view-location-edit-CS_Vj8cf.js`),__vite__mapDeps([41,1,2,3,4,5,6,42,39,23,24,14,15,16,17,18,19,20,21,22,25,26,43])),props:!0,meta:{guards:{authenticated:!0,roles:[O.admin,O.owner]}}}]},{path:`weather/location/:id`,name:J.WEATHER_LOCATION,component:()=>L(()=>import(`./view-location-CHX9pPb_.js`),__vite__mapDeps([44,1,2,3,4,5,6,42,30,12,13,14,15,16,17,18,19,20,21,22,35,23,25,36,45])),props:!0,meta:{guards:{authenticated:!0,roles:[O.admin,O.owner]}},children:[{path:`edit`,name:J.WEATHER_LOCATION_DETAIL_EDIT,component:()=>L(()=>import(`./view-location-edit-CS_Vj8cf.js`),__vite__mapDeps([41,1,2,3,4,5,6,42,39,23,24,14,15,16,17,18,19,20,21,22,25,26,43])),props:!0,meta:{guards:{authenticated:!0,roles:[O.admin,O.owner]}}}]}],Tn=Oe.extend({primaryLocationId:R().uuid().nullable().optional()}),En=Ae.extend({type:de(K),primaryLocationId:R().uuid().nullable().optional()}),Dn=Ne.and(N({type:de(K),primary_location_id:R().uuid().nullable().optional()}));ke.and(N({type:de(K),primary_location_id:R().uuid().nullable().optional()}));var Q=(e,t=G)=>{let n=ge(e),r=t.safeParse({...n,draft:!1});if(!r.success)throw console.error(`[WEATHER_MODULE] Failed to validate location data:`,r.error.issues),new W(`Failed to validate location data`);return r.data},On=(e,t=tt)=>{let n=t.safeParse(ue(e));if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location create request:`,n.error.issues),new W(`Failed to validate location create request`);return n.data},kn=(e,t=et)=>{let n=t.safeParse(ue(e));if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location update request:`,n.error.issues),new W(`Failed to validate location update request`);return n.data},$=(e,t)=>e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:t,An=()=>({fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]}),jn=A(`weather_module-locations`,()=>{let e=F(),t=se(),n=d(An()),r=d(!1),i=d({}),a=()=>r.value,o=e=>n.value.fetching.item.includes(e),s=()=>n.value.fetching.items,c=()=>Object.values(i.value),l=e=>i.value[e]??null,u={},f={},p=e=>m({id:e.id,data:Q(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=G.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new W(`Failed to insert location.`);return i.value[n.data.id]=n.data}let n=G.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new W(`Failed to insert location.`);return i.value=i.value??{},i.value[n.data.id]=n.data},h=e=>{i.value&&delete i.value[e.id]},g=async t=>{let r=u[t.id];if(r)return r;let i=(async()=>{if(n.value.fetching.item.includes(t.id))throw new U(`Already fetching location.`);n.value.fetching.item.push(t.id);let r=l(t.id);if(r&&!r.draft)return n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id),r;try{let{data:n}=await e.client.GET(`/${w}/${q}/locations/{id}`,{params:{path:{id:t.id}}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to fetch location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();u[t.id]=i;try{return await i}finally{delete u[t.id]}},_=async()=>{let t=f.all;if(t)return t;let i=(async()=>{if(n.value.fetching.items)throw new U(`Already fetching locations.`);n.value.fetching.items=!0,r.value=!1;try{let{data:t}=await e.client.GET(`/${w}/${q}/locations`);if(t!==void 0){let e=[];for(let n of t.data){let t=Q(n);e.push(m({id:t.id,data:t}))}return r.value=!0,e}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to fetch locations`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.fetching.items=!1}})();f.all=i;try{return await i}finally{delete f.all}};return{isLoaded:()=>a()||c().length>0,refresh:()=>_(),data:i,semaphore:n,firstLoad:r,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,onEvent:p,set:m,unset:h,get:g,fetch:_,add:async r=>{let a=nt.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new W(`Failed to add location.`);let o=a.data;n.value.creating.push(o.id);let s=G.safeParse({id:o.id,draft:o.draft,...o.data,createdAt:new Date,updatedAt:null});if(!s.success)throw n.value.creating=n.value.creating.filter(e=>e!==o.id),new W(`Failed to add location.`);if(i.value[s.data.id]=s.data,o.draft)return n.value.creating=n.value.creating.filter(e=>e!==o.id),s.data;try{let t=On({id:o.id,type:o.data.type,name:o.data.name,...(0,Z.omitBy)(o.data,Z.isUndefined)}),{data:n}=await e.client.POST(`/${w}/${q}/locations`,{body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){h({id:o.id});let t=e,n=$(e,`Failed to add location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.id)}},edit:async r=>{let a=Qe.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new W(`Failed to edit location.`);let o=a.data;if(n.value.updating.includes(o.id))throw new U(`Location is already being updated.`);let s=l(o.id);if(!s)throw new U(`Location not found.`);n.value.updating.push(o.id);let c={...s,...(0,Z.omitBy)(o.data,Z.isUndefined)};if(i.value[o.id]=c,s.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.id),c;try{let t=kn({type:o.data.type,...(0,Z.omitBy)(o.data,Z.isUndefined)}),{data:n}=await e.client.PATCH(`/${w}/${q}/locations/{id}`,{params:{path:{id:o.id}},body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){i.value[o.id]=s;let t=e,n=$(e,`Failed to edit location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==o.id)}},save:async t=>{let r=l(t.id);if(!r)throw new U(`Location not found.`);if(!r.draft)return r;n.value.updating.push(t.id);try{let t=On({id:r.id,type:r.type,name:r.name}),{data:n}=await e.client.POST(`/${w}/${q}/locations`,{body:{data:t}});if(n!==void 0){let e=Q(n.data);return m({id:e.id,data:e})}throw new U(`Received invalid response`)}catch(e){let t=e,n=$(e,`Failed to save location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new U(n,Number(t.status)):new U(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==t.id)}},remove:async t=>{if(n.value.deleting.includes(t.id))throw new U(`Location is already being deleted.`);let r=l(t.id);if(!r)return!0;if(n.value.deleting.push(t.id),h({id:t.id}),r.draft)return n.value.deleting=n.value.deleting.filter(e=>e!==t.id),!0;try{let{response:n}=await e.client.DELETE(`/${w}/${q}/locations/{id}`,{params:{path:{id:t.id}}});if(n.status===204)return!0;throw new U(`Failed to delete location`)}catch(e){await g({id:t.id});let n=e,r=$(e,`Failed to delete location`);throw n.status&&[401,403,404,422,500].includes(Number(n.status))?new U(r,Number(n.status)):new U(r)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}},bulkRemove:async t=>{let r=[],a=[];for(let e of t.ids){let t=i.value[e];t!==void 0&&(t.draft?r:a).push(e)}for(let e of r)h({id:e});if(a.length===0)return{succeeded:r,failed:[]};n.value.deleting.push(...a);try{let{data:t,error:n}=await e.client.POST(`/${w}/${q}/locations/bulk-remove`,{body:{data:{ids:a}}});if(n!==void 0||t===void 0)throw new U(`Received unexpected response.`);let i=Ze.parse(t.data);for(let e of i.succeeded)h({id:e});return{succeeded:[...r,...i.succeeded],failed:i.failed}}catch(e){throw new U(`Failed to remove locations.`,null,e)}finally{n.value.deleting=n.value.deleting.filter(e=>!a.includes(e))}}}}),Mn=e=>jn(e),Nn={getting:!1},Pn=A(`weather_module-weather-day`,()=>{let e=F(),t=se(),n=d(Nn),r=d(!1),i=d(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:qe(e.data)}),l=e=>{let n=Je.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert weather day.`);return i.value=i.value??null,i.value=n.data},u=async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new U(`Already getting weather day.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${q}/weather/primary`,{});if(t!==void 0&&t.data?.current)return i.value=qe(t.data.current),i.value;let a=`Failed to fetch weather day: invalid response structure.`;throw n&&(a=n.message??a),new U(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}};return{isLoaded:()=>i.value!==null,refresh:()=>u(),semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:u}}),Fn=e=>Pn(e),In={getting:!1},Ln=A(`weather_module-weather-forecast`,()=>{let e=F(),t=se(),n=d(In),r=d(!1),i=d(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:st(e.data)}),l=e=>{let n=ot.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert weather forecast.`);return i.value=i.value??null,i.value=n.data},u=async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new U(`Already getting weather forecast.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${q}/weather/primary`,{});if(t!==void 0&&t.data?.forecast)return i.value=st(t.data.forecast),i.value;let a=`Failed to fetch weather forecast: invalid response structure.`;throw n&&(a=n.message??a),new U(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}};return{isLoaded:()=>i.value!==null,refresh:()=>u(),semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:u}}),Rn=e=>Ln(e),zn=Symbol(`FB-Module-Weather`),Bn={install:(e,t)=>{let n=ve(e),r=_e(e),i=oe(e),a=Pe(e),o=je(e);for(let[e,n]of Object.entries(Cn)){let r=(0,Z.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherModule:n});t.i18n.global.setLocaleMessage(e,r)}let s=Fn(t.store);e.provide(Ye,s),n.addStore(Ye,s);let c=Rn(t.store);e.provide(Ge,c),n.addStore(Ge,c);let l=Mn(t.store);e.provide(Ke,l),n.addStore(Ke,l),a.addModule(zn,{type:K,name:`Weather`,description:`Stay up to date with current conditions and upcoming forecasts.`,elements:[{type:Le,components:{moduleConfigEditForm:Sn},schemas:{moduleConfigSchema:En,moduleConfigEditFormSchema:Tn,moduleConfigUpdateReqSchema:Dn},modules:[Re]}],modules:[Re],isCore:!0}),t.router.getRoutes().find(e=>e.name===b.ROOT)&&wn.forEach(e=>{t.router.addRoute(b.ROOT,e)}),o.register(zn,()=>De([s,c,l])),r.on(`event`,e=>{if(e?.event?.startsWith(`WeatherModule.`)&&!(typeof e.payload!=`object`||e.payload===null))switch(e.event){case Y.WEATHER_INFO:`current`in e.payload&&typeof e.payload.current==`object`&&e.payload.current!==null&&s.onEvent({data:e.payload.current}),`forecast`in e.payload&&Array.isArray(e.payload.forecast)&&c.onEvent({data:e.payload.forecast});break;case Y.LOCATION_CREATED:case Y.LOCATION_UPDATED:`id`in e.payload&&typeof e.payload.id==`string`&&`type`in e.payload&&typeof e.payload.type==`string`&&l.onEvent({id:e.payload.id,type:e.payload.type,data:e.payload});break;case Y.LOCATION_DELETED:`id`in e.payload&&typeof e.payload.id==`string`&&l.unset({id:e.payload.id});break;default:i.warn(`Unhandled weather module event:`,e.event)}})}},Vn=N({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)}),Hn=N({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)});export{ut as C,ft as S,ct as T,ht as _,hn as a,pt as b,on as c,qt as d,Ut as f,wt as g,Mt as h,xn as i,tn as l,Pt as m,Hn as n,mn as o,zt as p,Bn as r,un as s,Vn as t,Zt as u,mt as v,lt as w,dt as x,gt as y};
@@ -1 +1 @@
1
- import{bt as e,ct as t,gt as n,ht as r,ot as i,st as a,t as o,u as s,yt as c}from"./common-BlrTsYp4.js";import{o as l}from"./useLocation-CghMA-vm.js";var u=i(n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feelsLike:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),sunset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),dayTime:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e))}));n({getting:a()}),n({data:i(n({}))}),n({data:i(n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feelsLike:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),sunset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),dayTime:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e))}))}),n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feels_like:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:c().nullable().optional(),sunset:c().nullable().optional(),moonrise:c().nullable().optional(),moonset:c().nullable().optional(),day_time:c()});var d=e=>{let t=u.safeParse(e.map(e=>s(e)));if(!t.success)throw o.error(`Schema validation failed with:`,t.error),new l(`Failed to validate received weather forecast data.`);return t.data};export{u as n,d as t};
1
+ import{bt as e,ct as t,gt as n,ht as r,ot as i,st as a,t as o,u as s,yt as c}from"./common-DQQtAVrj.js";import{o as l}from"./useLocation-BfcRW2IZ.js";var u=i(n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feelsLike:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),sunset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),dayTime:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e))}));n({getting:a()}),n({data:i(n({}))}),n({data:i(n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feelsLike:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),sunset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonrise:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),moonset:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),dayTime:e([c().datetime({offset:!0}),t()]).transform(e=>e instanceof Date?e:new Date(e))}))}),n({temperature:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional(),min:r().nullable().optional(),max:r().nullable().optional()}),feels_like:n({morn:r().nullable().optional(),day:r().nullable().optional(),eve:r().nullable().optional(),night:r().nullable().optional()}),pressure:r(),humidity:r(),weather:n({code:r(),main:c(),description:c(),icon:c()}),wind:n({speed:r(),deg:r(),gust:r().nullable()}),clouds:r(),rain:r().nullable(),snow:r().nullable(),sunrise:c().nullable().optional(),sunset:c().nullable().optional(),moonrise:c().nullable().optional(),moonset:c().nullable().optional(),day_time:c()});var d=e=>{let t=u.safeParse(e.map(e=>s(e)));if(!t.success)throw o.error(`Schema validation failed with:`,t.error),new l(`Failed to validate received weather forecast data.`);return t.data};export{u as n,d as t};