@fastybird/smart-panel-admin 1.1.0-alpha.0 → 1.1.0-alpha.10

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 (278) hide show
  1. package/dist/assets/{alert-T9nrEIYw.js → alert-BtC0hQaN.js} +1 -1
  2. package/dist/assets/{card-add-form-Dmqn9mSR.js → card-add-form-DLYHqWXC.js} +1 -1
  3. package/dist/assets/{card-edit-form-gTEMCJvQ.js → card-edit-form-K7wa-edI.js} +1 -1
  4. package/dist/assets/{checkbox-lYuDNNRW.js → checkbox-Brn4H-ar.js} +1 -1
  5. package/dist/assets/{clamp-C5awl0Z9.js → clamp-CxRdsaiJ.js} +1 -1
  6. package/dist/assets/{col-CS5z2SZI.js → col-DHgVtBiy.js} +1 -1
  7. package/dist/assets/{collapse-BU-5F3-c.js → collapse-Ce5pnck0.js} +1 -1
  8. package/dist/assets/common-BI15rKA4.css +1 -0
  9. package/dist/assets/common-DQQtAVrj.js +135 -0
  10. package/dist/assets/components-5sqBa6m6.js +1 -0
  11. package/dist/assets/components-B-x0bFEi.css +1 -0
  12. package/dist/assets/components-BJQ0MO8_.js +1 -0
  13. package/dist/assets/components-BeIyqVgW.js +1 -0
  14. package/dist/assets/components-BrH_I6yT.js +1 -0
  15. package/dist/assets/components-CfZD58jR.js +1 -0
  16. package/dist/assets/components-CxFbS5gV.js +1 -0
  17. package/dist/assets/components-DP-_PxCR.js +8 -0
  18. package/dist/assets/components-Dhn_QvwB.js +6 -0
  19. package/dist/assets/components-GvI9olL9.js +2 -0
  20. package/dist/assets/components-mgXouEMP.js +1 -0
  21. package/dist/assets/{composables-CnAdallo.js → composables-B0IV09af.js} +1 -1
  22. package/dist/assets/{composables-DauWd-yX.js → composables-B8MvHG4n.js} +1 -1
  23. package/dist/assets/composables-BNc5mHwM.js +1 -0
  24. package/dist/assets/composables-CEtj6Qds.js +1 -0
  25. package/dist/assets/composables-CWHVZmlg.js +1 -0
  26. package/dist/assets/composables-CYfrqIJ62.js +1 -0
  27. package/dist/assets/{composables-C_ClN_9k.js → composables-DRjKkih6.js} +1 -1
  28. package/dist/assets/composables-KyQfXDC3.js +1 -0
  29. package/dist/assets/composables-VBwQ9ceK.js +1 -0
  30. package/dist/assets/composables-_zPISBdj.js +1 -0
  31. package/dist/assets/{composables-ByJA5Pkr.js → composables-nFowfQst.js} +1 -1
  32. package/dist/assets/config-DycVi21V.js +2 -0
  33. package/dist/assets/{dashboard-sUj5gMgt.js → dashboard-DZ5wM97E.js} +2 -2
  34. package/dist/assets/dashboard.types-CbXYm-xo.js +1 -0
  35. package/dist/assets/{data-source-edit-form-TeVA0ZGT.js → data-source-edit-form-DAofDgU-.js} +1 -1
  36. package/dist/assets/{descriptions-BqAkDsOG.js → descriptions-BgeuuBZp.js} +1 -1
  37. package/dist/assets/{devices-c2r4wXat.js → devices-CnCnfwOA.js} +2 -2
  38. package/dist/assets/{devices-virtual.constants-BZiARLZb.js → devices-virtual.constants-DfAF3P2t.js} +1 -1
  39. package/dist/assets/{dialog-CkpSeL6j.js → dialog-C_vHe4lp.js} +1 -1
  40. package/dist/assets/{drawer-BO0yGLCm.js → drawer-DBEDVZvF.js} +1 -1
  41. package/dist/assets/empty-DvXiCUNF.js +1 -0
  42. package/dist/assets/form-DhJ_5Z1F.js +12 -0
  43. package/dist/assets/index-DASIrneH.js +11 -0
  44. package/dist/assets/index-hWiJEHfB.css +1 -0
  45. package/dist/assets/input-number-C4oLa6SE.js +1 -0
  46. package/dist/assets/integration-config-dialog-sOxOBnDt.js +1 -0
  47. package/dist/assets/{keys-DcE5nSGn.js → keys-xm8ycHBh.js} +1 -1
  48. package/dist/assets/{layout-config-D3Rl8nnp.js → layout-config-Dgm7OQfl.js} +1 -1
  49. package/dist/assets/{layout-default-DYN_BCAU.js → layout-default-Dtrjfr-l.js} +1 -1
  50. package/dist/assets/{layout-lock-CnKsH_o2.js → layout-lock-CvUuWiWS.js} +1 -1
  51. package/dist/assets/layout-profile-CSe087M3.js +1 -0
  52. package/dist/assets/{layout-profile-BMiHIk-r.js → layout-profile-Cb9uN0Wo.js} +1 -1
  53. package/dist/assets/{layout-sign-CRyGbt23.js → layout-sign-B6t4a36E.js} +1 -1
  54. package/dist/assets/layout-sign-C0F3N5av.js +1 -0
  55. package/dist/assets/{list-data-sources-adjust-5-Pdok_s.js → list-data-sources-adjust-BHndxW4t.js} +1 -1
  56. package/dist/assets/{list-locations-DDLG-wi7.js → list-locations-C9v-b-VI.js} +1 -1
  57. package/dist/assets/{list-users-CoPYoKsq.js → list-users-CkaNzwje.js} +1 -1
  58. package/dist/assets/{logs-entries.transformers-lH5ngVX4.js → logs-entries.transformers-Dn1eByAW.js} +1 -1
  59. package/dist/assets/mcp.exceptions-CJdD-XdE.js +1 -0
  60. package/dist/assets/notifications-ByzWXMhj.css +1 -0
  61. package/dist/assets/notifications.exceptions-DmK8KTzC.js +1 -0
  62. package/dist/assets/{omit-oVmlMQup.js → omit-BY6NkPsU.js} +1 -1
  63. package/dist/assets/page-configure-CFU_N_-1.js +1 -0
  64. package/dist/assets/{page-configure-n0ajoZ1U.js → page-configure-CbJqLuSN.js} +1 -1
  65. package/dist/assets/{pagination-CjJxy65X.js → pagination-tCeDOW1E.js} +1 -1
  66. package/dist/assets/{radio-CzhigJpe.js → radio-CuFOcY0H.js} +1 -1
  67. package/dist/assets/{scene-add-form-CbEbxU91.js → scene-add-form-2uFMoqQx.js} +1 -1
  68. package/dist/assets/{scene-edit-form-l_zU7WQe.js → scene-edit-form-qz9_SO8P.js} +1 -1
  69. package/dist/assets/{schemas.utils-meRZzKVK.js → schemas.utils-CTG3Vn5a.js} +1 -1
  70. package/dist/assets/select-De297TQO.js +1 -0
  71. package/dist/assets/{select-data-source-plugin-CIr1ZUt3.js → select-data-source-plugin-Bf4zZY8r.js} +1 -1
  72. package/dist/assets/{slider-BakOmJFk.js → slider-DhjaIA9b.js} +1 -1
  73. package/dist/assets/spaces-home-control.constants-L3uLJ74M.js +1 -0
  74. package/dist/assets/{spaces-BsLvX_mm.js → spaces-iXv1ih3G.js} +2 -2
  75. package/dist/assets/{steps-CcJujEC5.js → steps-DCMUJ24w.js} +1 -1
  76. package/dist/assets/system-UoYFhFKY.js +2 -0
  77. package/dist/assets/{table-OOxB7eZ0.js → table-Bej2n2pI.js} +1 -1
  78. package/dist/assets/{tabs--WEsYe_1.js → tabs-ClzYwBwe.js} +1 -1
  79. package/dist/assets/{tile-detail-DzmTEy7M.js → tile-detail-BqMhDMr9.js} +1 -1
  80. package/dist/assets/{tile-edit-form-DCms-EXo.js → tile-edit-form-B-BmZtAm.js} +1 -1
  81. package/dist/assets/types-AzJb-TPe.js +1 -0
  82. package/dist/assets/types-BFSU5l_h.js +1 -0
  83. package/dist/assets/{use-dialog-Lvd-Ls2e.js → use-dialog-BE4aKc4E.js} +1 -1
  84. package/dist/assets/{use-ordered-children-CNn6LzZ5.js → use-ordered-children-B-w46hVS.js} +1 -1
  85. package/dist/assets/useBuddyChat-DCLIzynQ.js +1 -0
  86. package/dist/assets/{useConfigModule-BnX1QBwr.js → useConfigModule-DPKpRzOA.js} +1 -1
  87. package/dist/assets/{useDataSources-CP_5chvd.js → useDataSources-Bjd0snYh.js} +1 -1
  88. package/dist/assets/{useDevicesPlugins-COw-D0RN.js → useDevicesPlugins-B1S7eZ_6.js} +1 -1
  89. package/dist/assets/useEventBus-1upZv6NA.js +1 -0
  90. package/dist/assets/useExtensions-Cw4mW_zr.js +1 -0
  91. package/dist/assets/useGeolocation-y3zHAEMb.js +2 -0
  92. package/dist/assets/useLocation-BfcRW2IZ.js +1 -0
  93. package/dist/assets/{useMcpClients-BfqJppj8.js → useMcpClients-CEtRM4SW.js} +1 -1
  94. package/dist/assets/{useModule-D1rm0Y0M.js → useModule-DDp0sfaf.js} +1 -1
  95. package/dist/assets/{useModules-Cy3UIua6.js → useModules-CLi9kXcG.js} +1 -1
  96. package/dist/assets/{useNumberFormat-CQgIxqs3.js → useNumberFormat-Dy6fPYP1.js} +1 -1
  97. package/dist/assets/{usePage-CedKpB5s.js → usePage-Bclmn7x9.js} +1 -1
  98. package/dist/assets/{usePersonalTokens-By_T4BUP.js → usePersonalTokens-VoyREM85.js} +1 -1
  99. package/dist/assets/{usePlugin-CyWrOblJ.js → usePlugin-CD6VAtXb.js} +1 -1
  100. package/dist/assets/{usePlugins-DQ7X6S0I.js → usePlugins-BLBNoCg5.js} +1 -1
  101. package/dist/assets/useSpaces-DN7B3r14.js +1 -0
  102. package/dist/assets/{useUuid-fukXwEj1.js → useUuid-CXUYxryL.js} +1 -1
  103. package/dist/assets/{view-buddy-chat-BrlGdu81.js → view-buddy-chat-BvGkIZsD.js} +1 -1
  104. package/dist/assets/{view-card-add-CtGSajM3.js → view-card-add-CK-twRKG.js} +1 -1
  105. package/dist/assets/view-card-edit-nEKC7fu3.js +1 -0
  106. package/dist/assets/{view-channel-uRWeCf75.js → view-channel-BB9CMQzm.js} +1 -1
  107. package/dist/assets/view-channel-add-Bvp9TsOq.js +1 -0
  108. package/dist/assets/{view-channel-edit-Axeb4Wsq.js → view-channel-edit-B1mJfB2W.js} +1 -1
  109. package/dist/assets/{view-channel-property-add-CQ5ba4om.js → view-channel-property-add-DzQwugPY.js} +1 -1
  110. package/dist/assets/view-channel-property-edit-BOwFS57X.js +1 -0
  111. package/dist/assets/view-channels-DrD7NlH2.js +1 -0
  112. package/dist/assets/view-config-module-edit-DDBKKshm.js +1 -0
  113. package/dist/assets/{view-config-modules-B5GC5QVM.js → view-config-modules-DviA9Bju.js} +1 -1
  114. package/dist/assets/view-config-plugin-edit-dCfE19by.js +1 -0
  115. package/dist/assets/{view-config-plugins-vIUqs1BF.js → view-config-plugins-BS6qMBoU.js} +1 -1
  116. package/dist/assets/view-data-source-add-CPuZBOAh.js +1 -0
  117. package/dist/assets/view-data-source-add-lduBhpZy.js +1 -0
  118. package/dist/assets/view-data-source-edit-BGQPem_n.js +1 -0
  119. package/dist/assets/view-data-source-edit-Ch-iiFbk.js +1 -0
  120. package/dist/assets/view-device-4XY3qg2J.js +1 -0
  121. package/dist/assets/view-device-TJjGoba6.css +1 -0
  122. package/dist/assets/view-device-add-Cgd89NwB.js +1 -0
  123. package/dist/assets/view-device-control-CLd0ZVIx.js +1 -0
  124. package/dist/assets/view-device-edit-DpLeyvoe.js +1 -0
  125. package/dist/assets/{view-devices-BZvnh_6I.css → view-devices-BV3p7TrL.css} +1 -1
  126. package/dist/assets/view-devices-DY6r2feq.js +1 -0
  127. package/dist/assets/{view-devices-wizard-FN_kerQt.js → view-devices-wizard-CvLjUMJ3.js} +1 -1
  128. package/dist/assets/{view-display-Cwe6xu0z.js → view-display-BGCdfR-g.js} +1 -1
  129. package/dist/assets/{view-display-edit-CeDdE9A3.js → view-display-edit-C7sBjAo3.js} +1 -1
  130. package/dist/assets/{view-display-tokens-Cfdzw2NT.js → view-display-tokens-CgpS3tT8.js} +1 -1
  131. package/dist/assets/{view-displays-DE_oTtvk.js → view-displays-C7QQUPQF.js} +1 -1
  132. package/dist/assets/{view-extension-detail-BIj3vTbd.js → view-extension-detail-DiUuk9VY.js} +1 -1
  133. package/dist/assets/view-extensions-BPVKH1Jb.js +1 -0
  134. package/dist/assets/{view-location-ByhZJx_6.js → view-location-CHX9pPb_.js} +1 -1
  135. package/dist/assets/view-location-add-Df25PMeB.js +1 -0
  136. package/dist/assets/view-location-edit-CS_Vj8cf.js +1 -0
  137. package/dist/assets/{view-locations-D_OBOx6B.js → view-locations-BvHYF0U7.js} +1 -1
  138. package/dist/assets/{view-lock-screen-bRDri9aj.js → view-lock-screen-DAtKjcUh.js} +1 -1
  139. package/dist/assets/view-mcp-clients-B0grcN-p.js +1 -0
  140. package/dist/assets/{view-mcp-oauth-consent-BCCpyOy3.js → view-mcp-oauth-consent-zZ5TLh4J.js} +1 -1
  141. package/dist/assets/view-mcp-oauth-management-Cip6f2L1.js +1 -0
  142. package/dist/assets/view-notifications-BaEnR3Pr.js +1 -0
  143. package/dist/assets/view-onboarding-Cynd2vgL.js +1 -0
  144. package/dist/assets/{view-page--EqFsctG.js → view-page-CycBTuS4.js} +1 -1
  145. package/dist/assets/view-page-add-lJuSt540.js +1 -0
  146. package/dist/assets/view-page-configure-B1RKo8cr.js +1 -0
  147. package/dist/assets/view-page-configure-BlXGeMEs.js +1 -0
  148. package/dist/assets/view-page-data-source-add-VXSujnwF.js +1 -0
  149. package/dist/assets/view-page-data-source-edit-bdky1W6x.js +1 -0
  150. package/dist/assets/{view-page-edit-CalSVnS8.js → view-page-edit-D7D6s6-W.js} +1 -1
  151. package/dist/assets/{view-page-plugin-COtv5VDP.js → view-page-plugin-CiWmn73E.js} +1 -1
  152. package/dist/assets/{view-pages-FQaVAf16.js → view-pages-D9KmIM6L.js} +1 -1
  153. package/dist/assets/view-profile-general-Yll0-Ev-.js +1 -0
  154. package/dist/assets/view-profile-security-C1gC-D49.js +1 -0
  155. package/dist/assets/view-remote-access-9V2uHvbB.js +1 -0
  156. package/dist/assets/view-remote-access-CAUqIDKh.css +1 -0
  157. package/dist/assets/{view-scene-add-DJkyO05x.js → view-scene-add-CHfWM8yG.js} +1 -1
  158. package/dist/assets/{view-scene-edit-B8ew3Rh_.js → view-scene-edit-CQ688euK.js} +1 -1
  159. package/dist/assets/{view-scenes-81znjW1S.js → view-scenes-Cft3apRA.js} +1 -1
  160. package/dist/assets/{view-sign-in-CkEM4vLp.js → view-sign-in-Cj7uaECu.js} +1 -1
  161. package/dist/assets/{view-sign-up-L6T2PYuR.js → view-sign-up-BdrGEXiy.js} +1 -1
  162. package/dist/assets/view-simulator-device-wizard-BrDG-8dl.js +1 -0
  163. package/dist/assets/{view-space-add-DD-ImGjZ.js → view-space-add-BjTWdeU2.js} +1 -1
  164. package/dist/assets/{view-space-configure-DwMhMERS.js → view-space-configure-DmbT-eVp.js} +1 -1
  165. package/dist/assets/view-space-edit-Dw2aUu7C.js +1 -0
  166. package/dist/assets/{view-space-plugin-DsJrf4ZZ.js → view-space-plugin-DmdOjlmn.js} +1 -1
  167. package/dist/assets/view-spaces-BPaKwImw.js +1 -0
  168. package/dist/assets/{view-spaces-wizard-Bf8CgNF7.js → view-spaces-wizard-BSCSfFSU.js} +1 -1
  169. package/dist/assets/{view-stats-BtJZsvbJ.js → view-stats-BwZ1b5TV.js} +1 -1
  170. package/dist/assets/view-system-backups-CqCCu2xY.js +1 -0
  171. package/dist/assets/{view-system-info-DtOm6RHr.js → view-system-info-CwjSD4il.js} +1 -1
  172. package/dist/assets/{view-system-log-detail-4QAXHly1.js → view-system-log-detail-CpIJ16vm.js} +1 -1
  173. package/dist/assets/view-system-logs-CZWIMI4g.js +1 -0
  174. package/dist/assets/{view-tile-add-CysKFegv.js → view-tile-add-D5o-RwWw.js} +1 -1
  175. package/dist/assets/view-tile-add-cfR6HnU8.js +1 -0
  176. package/dist/assets/{view-tile-CyRM73cc.js → view-tile-coG5nOBw.js} +1 -1
  177. package/dist/assets/view-tile-data-source-add-CRjMqv-p.js +1 -0
  178. package/dist/assets/view-tile-data-source-edit-B5AuS22B.js +1 -0
  179. package/dist/assets/view-tile-edit-CHNpneIB.js +1 -0
  180. package/dist/assets/view-tile-edit-CapsYutD.js +1 -0
  181. package/dist/assets/view-tile-edit-s58vDnMN.js +1 -0
  182. package/dist/assets/{view-user-add-Cw8Ewmt5.js → view-user-add-DL1dQpWZ.js} +1 -1
  183. package/dist/assets/{view-user-edit-C3fP_UG4.js → view-user-edit-CpNCmMtT.js} +1 -1
  184. package/dist/assets/view-users--AuUJkXN.js +1 -0
  185. package/dist/assets/view-virtual-device-wizard-B4Dwbzxj.js +1 -0
  186. package/dist/assets/weather-C1nppMcS.js +2 -0
  187. package/dist/assets/{weather-forecast.transformers-Ba10ZBsx.js → weather-forecast.transformers-CxkPNhxQ.js} +1 -1
  188. package/dist/index.html +96 -94
  189. package/package.json +1 -1
  190. package/dist/assets/common-BDejG8Ry.css +0 -1
  191. package/dist/assets/common-CoPMwt15.js +0 -135
  192. package/dist/assets/components-BhcKdzs8.js +0 -1
  193. package/dist/assets/components-Bo0zSRq-.js +0 -8
  194. package/dist/assets/components-BvIJ9V1A.js +0 -1
  195. package/dist/assets/components-CiDtTRIP.js +0 -6
  196. package/dist/assets/components-Ck3npXkH.js +0 -1
  197. package/dist/assets/components-CwI4oc4h.js +0 -1
  198. package/dist/assets/components-DFn7M7P8.js +0 -1
  199. package/dist/assets/components-DTUbSUWA.js +0 -1
  200. package/dist/assets/components-EJSamUDY.js +0 -1
  201. package/dist/assets/components-eOJrNmD_.js +0 -2
  202. package/dist/assets/composables-B8NoX0yi.js +0 -1
  203. package/dist/assets/composables-CnAm5-n0.js +0 -1
  204. package/dist/assets/composables-Cu-tDLXA.js +0 -1
  205. package/dist/assets/composables-DRR44tiz.js +0 -1
  206. package/dist/assets/composables-Y3z5qfZL.js +0 -1
  207. package/dist/assets/composables-fi_xPbcU.js +0 -1
  208. package/dist/assets/composables-p3aMxqQW.js +0 -1
  209. package/dist/assets/config-Ca3KDCt_.js +0 -2
  210. package/dist/assets/dashboard.types-BL_StY9P.js +0 -1
  211. package/dist/assets/form-BXQzDd7P.js +0 -12
  212. package/dist/assets/index-BMboulGN.js +0 -9
  213. package/dist/assets/index-Cquc4YKb.css +0 -1
  214. package/dist/assets/input-number-BW5agJ92.js +0 -1
  215. package/dist/assets/integration-config-dialog-CD29eKdA.js +0 -1
  216. package/dist/assets/layout-profile-eUgeGmsX.js +0 -1
  217. package/dist/assets/layout-sign-DQoDJ4cf.js +0 -1
  218. package/dist/assets/mcp.exceptions-BljuOCTt.js +0 -1
  219. package/dist/assets/notifications-CXMpHhG5.css +0 -1
  220. package/dist/assets/notifications.exceptions-9rdw1GeU.js +0 -1
  221. package/dist/assets/page-configure-BEVX01FY.js +0 -1
  222. package/dist/assets/select-O4KysHta.js +0 -1
  223. package/dist/assets/spaces-home-control.constants-7pvytaMK.js +0 -1
  224. package/dist/assets/system-BHoHzIp7.js +0 -2
  225. package/dist/assets/types-Bb21yq0P.js +0 -1
  226. package/dist/assets/types-DNTr_87G.js +0 -1
  227. package/dist/assets/useBuddyChat-BH48PaUE.js +0 -1
  228. package/dist/assets/useEventBus-vQNsYIyS.js +0 -1
  229. package/dist/assets/useExtensions-Bk5NXQMd.js +0 -1
  230. package/dist/assets/useGeolocation-B6K8Fgnb.js +0 -2
  231. package/dist/assets/useLocation-DapxyrCs.js +0 -1
  232. package/dist/assets/useSpaces-Dl88_yBJ.js +0 -1
  233. package/dist/assets/view-card-edit-Zb9cFcPI.js +0 -1
  234. package/dist/assets/view-channel-add-IXRzITkP.js +0 -1
  235. package/dist/assets/view-channel-property-edit-Cf9sdZEV.js +0 -1
  236. package/dist/assets/view-channels-9OykDzrx.js +0 -1
  237. package/dist/assets/view-config-module-edit-DKx624EL.js +0 -1
  238. package/dist/assets/view-config-plugin-edit-D880lhC9.js +0 -1
  239. package/dist/assets/view-data-source-add-B3EeEfoa.js +0 -1
  240. package/dist/assets/view-data-source-add-D88BBTjK.js +0 -1
  241. package/dist/assets/view-data-source-edit-CYbGAY-U.js +0 -1
  242. package/dist/assets/view-data-source-edit-CqomLDF1.js +0 -1
  243. package/dist/assets/view-device-BXfpD62O.js +0 -1
  244. package/dist/assets/view-device-CoxxlPu_.css +0 -1
  245. package/dist/assets/view-device-add-COpcEZUi.js +0 -1
  246. package/dist/assets/view-device-control-C2sHc1fN.js +0 -1
  247. package/dist/assets/view-device-edit-BacIFxG-.js +0 -1
  248. package/dist/assets/view-devices-B1FVAfCK.js +0 -1
  249. package/dist/assets/view-extensions-8fjsl-aC.js +0 -1
  250. package/dist/assets/view-location-add-C1eF2Urv.js +0 -1
  251. package/dist/assets/view-location-edit-CrUo0t6u.js +0 -1
  252. package/dist/assets/view-mcp-clients-D_IUC93a.js +0 -1
  253. package/dist/assets/view-mcp-oauth-management-BMuB6eti.js +0 -1
  254. package/dist/assets/view-notifications-CYHCdRsx.js +0 -1
  255. package/dist/assets/view-notifications-WYb2ehle.css +0 -1
  256. package/dist/assets/view-onboarding-B_q-NXIi.js +0 -1
  257. package/dist/assets/view-page-add-DKc0D-_Z.js +0 -1
  258. package/dist/assets/view-page-configure-BvJKjhWD.js +0 -1
  259. package/dist/assets/view-page-configure-D1S_L3Df.js +0 -1
  260. package/dist/assets/view-page-data-source-add-DmdPErHH.js +0 -1
  261. package/dist/assets/view-page-data-source-edit-CfElv5SN.js +0 -1
  262. package/dist/assets/view-profile-general-Dquye0Sq.js +0 -1
  263. package/dist/assets/view-profile-security-Cm99XMFN.js +0 -1
  264. package/dist/assets/view-remote-access-D1Wi7gy8.js +0 -1
  265. package/dist/assets/view-simulator-device-wizard-BUfsCMrh.js +0 -1
  266. package/dist/assets/view-space-edit-COMCYPK1.js +0 -1
  267. package/dist/assets/view-spaces-BJLiNhUz.js +0 -1
  268. package/dist/assets/view-system-backups-BmITzwvM.js +0 -1
  269. package/dist/assets/view-system-logs-CQWo5Rbb.js +0 -1
  270. package/dist/assets/view-tile-add-h_oTIQ1I.js +0 -1
  271. package/dist/assets/view-tile-data-source-add-Dtxzfau1.js +0 -1
  272. package/dist/assets/view-tile-data-source-edit-BUgUtQup.js +0 -1
  273. package/dist/assets/view-tile-edit-B03viw4S.js +0 -1
  274. package/dist/assets/view-tile-edit-D-FPuQP4.js +0 -1
  275. package/dist/assets/view-tile-edit-DA2fNfYL.js +0 -1
  276. package/dist/assets/view-users-DWUpWsPr.js +0 -1
  277. package/dist/assets/view-virtual-device-wizard-BbG4BQgL.js +0 -1
  278. package/dist/assets/weather-BBPDcFBG.js +0 -2
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/view-displays-DE_oTtvk.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-CoPMwt15.js","assets/common-BDejG8Ry.css","assets/drawer-BO0yGLCm.js","assets/use-dialog-Lvd-Ls2e.js","assets/composables-CnAm5-n0.js","assets/dist-DJgPCOr0.js","assets/keys-DExX7OfU.js","assets/components-BhcKdzs8.js","assets/table-OOxB7eZ0.js","assets/_baseClone-BRvt9rE2.js","assets/checkbox-lYuDNNRW.js","assets/omit-oVmlMQup.js","assets/form-BXQzDd7P.js","assets/alert-T9nrEIYw.js","assets/input-number-BW5agJ92.js","assets/select-O4KysHta.js","assets/clamp-C5awl0Z9.js","assets/card-C50YgvLJ.js","assets/radio-CzhigJpe.js","assets/collapse-BU-5F3-c.js","assets/link-mE1gaRBg.js","assets/pagination-CjJxy65X.js","assets/slider-BakOmJFk.js","assets/components-CwI4oc4h.js","assets/directive-D42ORGRu.js","assets/keys-DcE5nSGn.js","assets/useSpaces-Dl88_yBJ.js","assets/composables-p3aMxqQW.js","assets/config-Ca3KDCt_.js","assets/useModules-Cy3UIua6.js","assets/config.constants-17QBQ_kF.js","assets/usePlugins-DQ7X6S0I.js","assets/usePlugin-CyWrOblJ.js","assets/useConfigModule-BnX1QBwr.js","assets/useModule-D1rm0Y0M.js","assets/keys-DghNVBR5.js","assets/components-DQG8YRnR.css","assets/composables-fi_xPbcU.js","assets/schemas.utils-meRZzKVK.js","assets/keys-DgS2vm-E.js","assets/types-DNTr_87G.js","assets/useDataSources-CP_5chvd.js","assets/usePage-CedKpB5s.js","assets/composables-Cu-tDLXA.js","assets/useLocation-DapxyrCs.js","assets/weather.constants-_S0I_w_Q.js","assets/types-Bb21yq0P.js","assets/components-BGiFbtPn.css","assets/view-display-edit-CeDdE9A3.js","assets/useUuid-fukXwEj1.js","assets/common.constants-C6QiEtuS.js","assets/view-display-Cwe6xu0z.js","assets/descriptions-BqAkDsOG.js","assets/col-CS5z2SZI.js","assets/view-display-tokens-Cfdzw2NT.js"])))=>i.map(i=>d[i]);
2
- import"./rolldown-runtime-QTnfLwEv.js";import{Ar as e,D as t,Dr as n,E as r,Er as i,Gr as a,H as o,Ki as s,Mr as c,Mt as l,Nr as u,O as d,Or as f,Pr as p,Qr as m,Si as h,T as g,Wi as _,Yr as v,_i as y,bi as b,ci as x,di as S,ei as C,i as w,ji as T,k as E,kr as D,n as O,qi as k,t as ee,ui as A,x as te,xr as j,yr as M}from"./icon-with-child-CgZMNB3F.js";import{Bt as N,C as ne,Dr as P,Jr as re,Or as ie,W as ae,Xr as F,_r as oe,a as se,b as ce,br as le,bt as ue,ct as de,d as fe,dt as pe,ft as me,g as he,gt as I,ht as L,ia as ge,it as R,j as _e,k as ve,mr as ye,ot as z,p as be,pt as xe,qr as Se,st as B,v as V,w as Ce,yt as H}from"./common-CoPMwt15.js";import{n as U,t as we}from"./table-OOxB7eZ0.js";import{n as W,t as Te}from"./form-BXQzDd7P.js";import{t as Ee}from"./alert-T9nrEIYw.js";import{t as G}from"./input-number-BW5agJ92.js";import{r as De,t as Oe}from"./select-O4KysHta.js";import{t as ke}from"./card-C50YgvLJ.js";import{n as Ae,t as je}from"./checkbox-lYuDNNRW.js";import{n as Me,t as Ne}from"./col-CS5z2SZI.js";import{n as Pe,t as Fe}from"./collapse-BU-5F3-c.js";import{t as Ie}from"./link-mE1gaRBg.js";import{t as Le}from"./pagination-CjJxy65X.js";import{t as Re}from"./directive-D42ORGRu.js";import{_ as ze,a as Be,d as Ve,f as He,h as Ue,p as We}from"./config-Ca3KDCt_.js";import{r as Ge}from"./useModules-Cy3UIua6.js";import{n as Ke,r as qe}from"./config.constants-17QBQ_kF.js";import{d as Je}from"./keys-DgS2vm-E.js";import"./types-DNTr_87G.js";import{_ as Ye,f as Xe,m as Ze,p as Qe,s as $e,x as et}from"./composables-fi_xPbcU.js";import{i as tt}from"./useDataSources-CP_5chvd.js";import{t as nt}from"./keys-DExX7OfU.js";import{c as K,d as q,f as rt,h as J,i as it,o as Y,p as at,s as X,u as ot}from"./composables-CnAm5-n0.js";import{i as st,o as ct,r as lt}from"./components-BhcKdzs8.js";import"./tile-edit-form-DCms-EXo.js";import"./tile-detail-DzmTEy7M.js";import"./list-data-sources-adjust-5-Pdok_s.js";import"./select-data-source-plugin-CIr1ZUt3.js";import"./data-source-edit-form-TeVA0ZGT.js";var ut={class:`flex w-full`},dt=p({name:`PagesFilter`,__name:`pages-filter`,props:{filters:{},filtersActive:{type:Boolean},selectedCount:{},bulkActions:{}},emits:[`update:filters`,`reset-filters`,`adjust-list`,`bulk-action`],setup(n,{emit:r}){let i=n,a=r,s=l(`pages-filter`),{t:c}=g(),d=oe(i,`filters`,a),p=h(void 0);return x(()=>d.value.search,e=>{e===``&&(d.value.search=void 0)}),(n,r)=>(m(),e(`div`,ut,[u(T(Te),{ref_key:`filterFormEl`,ref:p,inline:!0,model:T(d),class:_([[T(s).b()],`grow-1`])},{default:A(()=>[u(T(F),{modelValue:T(d).search,"onUpdate:modelValue":r[0]||=e=>T(d).search=e,placeholder:T(c)(`dashboardModule.fields.pages.search.placeholder`),class:`max-w[280px] p-1`,clearable:``},{suffix:A(()=>[u(T(o),null,{default:A(()=>[u(T(t),{icon:`mdi:magnify`})]),_:1})]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`model`,`class`]),u(T(_e),{"selected-count":i.selectedCount,actions:i.bulkActions,onAction:r[1]||=e=>a(`bulk-action`,e)},null,8,[`selected-count`,`actions`]),i.filtersActive?(m(),f(T(E),{key:0,plain:``,class:`px-2! mt-1 mr-1`,onClick:r[2]||=e=>a(`reset-filters`)},{default:A(()=>[u(T(t),{icon:`mdi:filter-off`})]),_:1})):D(``,!0),u(T(E),{plain:``,class:`px-2! mt-1 mr-1`,onClick:r[3]||=e=>a(`adjust-list`)},{default:A(()=>[u(T(t),{icon:`mdi:slider`})]),_:1})]))}}),ft=fe(),pt={"cs-CZ":{menu:{title:`Displeje`},title:`Displeje`,description:`Správa vašich displejových zařízení`,headings:{list:`Displeje`,adjustFilters:`Filtrovat displeje`,removeDisplay:`Odebrat displej`,removeBulkDisplays:`Odebrat displeje`,discard:`Zahodit změny`,aboutDisplayConfiguration:`Konfigurace displeje`},subHeadings:{list:`Správa připojených displejových zařízení`,adjustFilters:`Upravit nastavení filtrů`},breadcrumbs:{displays:{list:`displeje`,detail:`displej: {display}`,edit:`upravit displej`,tokens:`přístupové tokeny`}},meta:{displays:{list:{title:`Seznam displejů`},edit:{title:`Upravit displej: {display}`},detail:{title:`Displej: {display}`},tokens:{title:`Přístupové tokeny: {display}`}}},table:{columns:{name:`Název`,macAddress:`MAC adresa`,version:`Verze`,resolution:`Rozlišení`,layout:`Rozložení`,audio:`Zvuk`,state:{title:`Stav`},currentIpAddress:`Aktuální IP`,local:`Lokální`,status:`Stav`},tooltips:{speakerSupported:`Reproduktor podporován`,microphoneSupported:`Mikrofon podporován`}},fields:{search:{placeholder:`Hledat displeje...`},config:{deploymentMode:{title:`Režim brány`,description:`Režim brány pro registraci displejů`,placeholder:`Vyberte režim brány`,validation:{required:`Režim brány je povinný`}},permitJoinDurationMs:{title:`Doba povolení připojení`,description:`Doba v milisekundách, po kterou zůstane povolení připojení aktivní`,placeholder:`120 000`,unit:`ms`,validation:{required:`Doba povolení připojení je povinná`,min:`Doba povolení připojení musí být alespoň 1000 ms`}}},displays:{id:{title:`Interní identifikátor`,placeholder:`ID displeje`},name:{title:`Název`,placeholder:`Zadejte název displeje`,validation:{maxLength:`Název musí mít méně než 100 znaků`}},unitSize:{title:`Velikost jednotky`,unit:`px`,validation:{min:`Velikost jednotky musí být alespoň 1`}},rows:{title:`Řádky`,validation:{min:`Řádky musí být alespoň 1`}},cols:{title:`Sloupce`,validation:{min:`Sloupce musí být alespoň 1`}},brightness:{title:`Jas`,validation:{range:`Jas musí být mezi 0 a 100`}},screenLockDuration:{title:`Doba uzamčení obrazovky`,options:{"15s":`15 sekund`,"30s":`30 sekund`,"1min":`1 minuta`,"2min":`2 minuty`,"5min":`5 minut`,"10min":`10 minut`,"30min":`30 minut`,never:`Nikdy`}},darkMode:{title:`Tmavý režim`},screenSaver:{title:`Spořič obrazovky`},screenPowerOff:{title:`Vypnutí obrazovky`},audio:{speaker:{title:`Reproduktor (zvukový výstup)`},microphone:{title:`Mikrofon (zvukový vstup)`}},speaker:{title:`Reproduktor povolen`},speakerVolume:{title:`Hlasitost reproduktoru`,validation:{range:`Hlasitost musí být mezi 0 a 100`}},microphone:{title:`Mikrofon povolen`},microphoneVolume:{title:`Hlasitost mikrofonu`,validation:{range:`Hlasitost musí být mezi 0 a 100`}},homeMode:{title:`Režim domovské stránky`,description:`Jak je určena domovská stránka při spuštění displeje`,options:{autoSpace:`Automaticky`,explicit:`Explicitně`}},homePageId:{title:`Domovská stránka`,placeholder:`Vyberte domovskou stránku`,description:`Stránka zobrazená při spuštění displeje (používá se pouze v režimu Explicitní)`,validation:{required:`Domovská stránka je povinná v režimu Explicitní`}},spaceId:{title:`Přiřazený prostor`,placeholder:`Vyberte prostor`,description:`Prostor, ke kterému je tento displej přiřazen. Typ prostoru určuje, co panel zobrazuje.`,validation:{required:`Prostor musí být přiřazen, když se domovská stránka odvozuje z prostoru.`}},numberFormat:{title:`Formát čísel`,placeholder:`Výchozí systémový`,values:{commaDot:`1,234.56 (čárka / tečka)`,dotComma:`1.234,56 (tečka / čárka)`,spaceComma:`1 234,56 (mezera / čárka)`,none:`1234.56 (bez seskupení)`}},temperatureUnit:{title:`Jednotka teploty`,placeholder:`Výchozí systémová`,values:{celsius:`Celsia (°C)`,fahrenheit:`Fahrenheit (°F)`}},windSpeedUnit:{title:`Jednotka rychlosti větru`,placeholder:`Výchozí systémová`,values:{ms:`Metry za sekundu (m/s)`,kmh:`Kilometry za hodinu (km/h)`,mph:`Míle za hodinu (mph)`,knots:`Uzly (kn)`}},pressureUnit:{title:`Jednotka tlaku`,placeholder:`Výchozí systémová`,values:{hpa:`Hektopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Palce rtuti (inHg)`,mmhg:`Milimetry rtuti (mmHg)`}},precipitationUnit:{title:`Jednotka srážek`,placeholder:`Výchozí systémová`,values:{mm:`Milimetry (mm)`,inches:`Palce (in)`}},distanceUnit:{title:`Jednotka vzdálenosti`,placeholder:`Výchozí systémová`,values:{km:`Kilometry (km)`,miles:`Míle (mi)`,meters:`Metry (m)`,feet:`Stopy (ft)`}},weatherLocationId:{title:`Meteorologická lokace`,placeholder:`Výchozí systémová (primární lokace)`,description:`Přepsat meteorologickou lokaci pro tento displej. Ponechte prázdné pro použití primární lokace z konfigurace počasí.`}}},filters:{darkMode:{title:`Tmavý režim`,values:{enabled:`Povoleno`,disabled:`Zakázáno`,all:`Vše`}},screenSaver:{title:`Spořič obrazovky`,values:{enabled:`Povoleno`,disabled:`Zakázáno`,all:`Vše`}},state:{title:`Stav`},states:{title:`Stav`}},states:{connected:`Připojeno`,disconnected:`Odpojeno`,lost:`Ztraceno`,unknown:`Neznámý`},texts:{loadingDisplays:`Načítání displejů...`,loadingDisplay:`Načítání displeje...`,noDisplays:`Zatím nejsou registrovány žádné displeje`,noFilteredDisplays:`Žádné displeje neodpovídají kritériím filtru`,confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,aboutDisplayConfiguration:`Nakonfigurujte režim nasazení a nastavení registrace displejů. Režim nasazení určuje, jak je backend a panel organizován, zatímco doba povolení připojení řídí, jak dlouho se mohou nové displeje registrovat v síti.`},buttons:{detail:{title:`Detail`},adjust:{title:`Filtr`},resetFilters:{title:`Resetovat filtry`},reset:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},save:{title:`Uložit`},cancel:{title:`Zrušit`},close:{title:`Zavřít`},discard:{title:`Zahodit`},permitJoin:{title:`Povolit připojení`,disable:`Zakázat připojení ({time})`},back:{title:`Zpět`}},edit:{sections:{general:{title:`Obecné`},layout:{title:`Rozložení`,badge:`Pokročilé`,description:`Pokročilá nastavení, která řídí, kolik dlaždic je zobrazeno na obrazovce a jak jsou uspořádány v mřížce.`},appearance:{title:`Vzhled`},homePage:{title:`Domovská stránka`,autoSpaceHint:`V <strong>automatickém režimu</strong> displej otevře výchozí systémové zobrazení pro typ přiřazeného prostoru.`},weather:{title:`Meteorologická lokace`,description:`Přepsat meteorologickou lokaci pro tento displej. Pokud není nastaveno, bude použita primární lokace z konfigurace počasí.`},units:{title:`Přepsání jednotek`,description:`Přepsat systémové měrné jednotky pro tento displej. Ponechte prázdné pro použití systémových výchozích hodnot.`},audio:{title:`Zvuk`,badge:`Pokročilé`}}},detail:{title:`Detail displeje`,info:{title:`Informace o displeji`,macAddress:`MAC adresa`,version:`Verze`,build:`Sestavení`,resolution:`Rozlišení`,pixelRatio:`Poměr pixelů`,gridSize:`Velikost mřížky`,registeredFromIp:`Registrační IP`,currentIpAddress:`Aktuální IP`,status:`Stav připojení`},settings:{title:`Nastavení displeje`,gridSize:`Velikost mřížky`,darkMode:`Tmavý režim`,brightness:`Jas`,screenLockDuration:`Doba uzamčení obrazovky`,screenSaver:`Spořič obrazovky`,screenPowerOff:`Vypnutí obrazovky`,speakerEnabled:`Reproduktor povolen`,speakerVolume:`Hlasitost reproduktoru`,microphoneEnabled:`Mikrofon povolen`,microphoneVolume:`Hlasitost mikrofonu`},peripherals:{title:`Periferie`,audioOutput:`Zvukový výstup`,audioOutputVolume:`Hlasitost zvukového výstupu`,audioInput:`Zvukový vstup`,audioInputVolume:`Hlasitost zvukového vstupu`},audio:{speaker:{title:`Reproduktor (zvukový výstup)`},microphone:{title:`Mikrofon (zvukový vstup)`}},tokens:{title:`Přístupové tokeny`,subtitle:`Správa tokenů`,description:`Správa přístupových tokenů pro tento displej. Každý displej by měl mít maximálně jeden aktivní token.`,noTokens:`Žádné aktivní tokeny`,revokeConfirm:`Opravdu chcete odvolat přístupový token? Displej se bude muset znovu zaregistrovat.`,revoked:`Token byl úspěšně odvolán`},spaceContext:{title:`Kontext prostoru`,homeMode:`Režim domovské stránky`,assignedSpace:`Přiřazený prostor`,notAssigned:`Nepřiřazeno`,initialView:`Počáteční zobrazení`,selectedPage:`Vybraná stránka`,hint:`Hlavní zobrazení tohoto displeje se generují automaticky na základě typu přiřazeného prostoru.`,homeModes:{auto_space:`Automaticky`,explicit:`Explicitně`},initialViews:{spaceOverview:`Přehled prostoru`}}},messages:{notFound:`Displej nebyl nalezen`,loadError:`Nepodařilo se načíst displeje`,confirmRemove:`Opravdu chcete odebrat displej "{name}"? Tuto akci nelze vrátit zpět.`,confirmBulkRemove:`Opravdu chcete odebrat {count} displej(ů)? Tuto akci nelze vrátit zpět.`,removed:`Displej byl úspěšně odebrán`,bulkRemoved:`{count} displej(ů) bylo odebráno`,bulkRemoveFailed:`Nepodařilo se odebrat {count} displej(ů)`,edited:`Displej {display} byl aktualizován`,notEdited:`Displej {display} nebyl aktualizován`,deletedWhileEditing:`Tento displej byl smazán a již není k dispozici.`,permitJoinActivated:`Povolení připojení bylo úspěšně aktivováno`,permitJoinDeactivated:`Povolení připojení bylo úspěšně deaktivováno`,permitJoinError:`Nepodařilo se aktivovat povolení připojení`,permitJoinDeactivateError:`Nepodařilo se deaktivovat povolení připojení`,config:{edited:`Konfigurace displejů byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci displejů`}},actions:{revokeToken:`Odvolat token`,manageTokens:`Spravovat tokeny`}},"de-DE":{menu:{title:`Anzeigen`},title:`Anzeigen`,description:`Verwalten Sie Ihre Display-Geräte`,headings:{list:`Anzeigen`,adjustFilters:`Displays filtern`,removeDisplay:`Display entfernen`,removeBulkDisplays:`Displays entfernen`,discard:`Änderungen verwerfen`,aboutDisplayConfiguration:`Display-Konfiguration`},subHeadings:{list:`Verbundene Display-Geräte verwalten`,adjustFilters:`Filtereinstellungen anpassen`},breadcrumbs:{displays:{list:`Anzeigen`,detail:`Display: {display}`,edit:`Display bearbeiten`,tokens:`Zugriffstoken`}},meta:{displays:{list:{title:`Displays auflisten`},edit:{title:`Display bearbeiten: {display}`},detail:{title:`Anzeige: {display}`},tokens:{title:`Zugriffstoken: {display}`}}},table:{columns:{name:`Name`,macAddress:`MAC-Adresse`,version:`Version`,resolution:`Auflösung`,layout:`Layout`,audio:`Audio`,state:{title:`Status`},currentIpAddress:`Aktuelle IP`,local:`Lokal`,status:`Status`},tooltips:{speakerSupported:`Lautsprecher unterstützt`,microphoneSupported:`Mikrofon unterstützt`}},fields:{search:{placeholder:`Displays suchen...`},config:{deploymentMode:{title:`Gateway-Modus`,description:`Gateway-Modus für Display-Registrierung`,placeholder:`Gateway-Modus auswählen`,validation:{required:`Gateway-Modus ist erforderlich`}},permitJoinDurationMs:{title:`Beitrittsdauer erlauben`,description:`Dauer in Millisekunden, die der Beitritt aktiv bleibt`,placeholder:`120000`,unit:`ms`,validation:{required:`Beitrittsdauer ist erforderlich`,min:`Beitrittsdauer muss mindestens 1000 ms sein`}}},displays:{id:{title:`Interner Bezeichner`,placeholder:`Display-ID`},name:{title:`Name`,placeholder:`Display-Namen eingeben`,validation:{maxLength:`Name muss weniger als 100 Zeichen haben`}},unitSize:{title:`Einheitsgröße`,unit:`px`,validation:{min:`Einheitsgröße muss mindestens 1 sein`}},rows:{title:`Zeilen`,validation:{min:`Zeilen müssen mindestens 1 sein`}},cols:{title:`Spalten`,validation:{min:`Spalten müssen mindestens 1 sein`}},brightness:{title:`Helligkeit`,validation:{range:`Helligkeit muss zwischen 0 und 100 liegen`}},screenLockDuration:{title:`Bildschirmsperrdauer`,options:{"15s":`15 Sekunden`,"30s":`30 Sekunden`,"1min":`1 Minute`,"2min":`2 Minuten`,"5min":`5 Minuten`,"10min":`10 Minuten`,"30min":`30 Minuten`,never:`Nie`}},darkMode:{title:`Dunkelmodus`},screenSaver:{title:`Bildschirmschoner`},screenPowerOff:{title:`Bildschirm ausschalten`},audio:{speaker:{title:`Lautsprecher (Audioausgang)`},microphone:{title:`Mikrofon (Audioeingang)`}},speaker:{title:`Lautsprecher aktiviert`},speakerVolume:{title:`Lautsprecherlautstärke`,validation:{range:`Lautstärke muss zwischen 0 und 100 liegen`}},microphone:{title:`Mikrofon aktiviert`},microphoneVolume:{title:`Mikrofonlautstärke`,validation:{range:`Lautstärke muss zwischen 0 und 100 liegen`}},homeMode:{title:`Startseitenmodus`,description:`Wie die Startseite bestimmt wird, wenn das Display startet`,options:{autoSpace:`Auto`,explicit:`Explizit`}},homePageId:{title:`Startseite`,placeholder:`Startseite auswählen`,description:`Die Seite, die beim Start des Displays angezeigt wird (nur wenn der Startseitenmodus auf Explizit steht)`,validation:{required:`Startseite ist erforderlich, wenn der Startseitenmodus auf Explizit steht`}},spaceId:{title:`Zugewiesener Bereich`,placeholder:`Bereich auswählen`,description:`Der Bereich, dem dieses Display zugewiesen ist. Der Typ des Bereichs bestimmt, was das Panel darstellt.`,validation:{required:`Ein Bereich muss zugewiesen sein, wenn die Startseite automatisch aus dem Bereich ermittelt wird.`}},numberFormat:{title:`Zahlenformat`,placeholder:`Systemstandard`,values:{commaDot:`1,234.56 (Komma / Punkt)`,dotComma:`1.234,56 (Punkt / Komma)`,spaceComma:`1 234,56 (Leerzeichen / Komma)`,none:`1234.56 (keine Gruppierung)`}},temperatureUnit:{title:`Temperatureinheit`,placeholder:`Systemstandard`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}},windSpeedUnit:{title:`Windgeschwindigkeitseinheit`,placeholder:`Systemstandard`,values:{ms:`Meter pro Sekunde (m/s)`,kmh:`Kilometer pro Stunde (km/h)`,mph:`Meilen pro Stunde (mph)`,knots:`Knoten (kn)`}},pressureUnit:{title:`Druckeinheit`,placeholder:`Systemstandard`,values:{hpa:`Hektopascal (hPa)`,mbar:`Millibar (mbar)`,inhg:`Zoll Quecksilbersäule (inHg)`,mmhg:`Millimeter Quecksilbersäule (mmHg)`}},precipitationUnit:{title:`Niederschlagseinheit`,placeholder:`Systemstandard`,values:{mm:`Millimeter (mm)`,inches:`Zoll (in)`}},distanceUnit:{title:`Entfernungseinheit`,placeholder:`Systemstandard`,values:{km:`Kilometer (km)`,miles:`Meilen (mi)`,meters:`Meter (m)`,feet:`Fuß (ft)`}},weatherLocationId:{title:`Wetterstandort`,placeholder:`Systemstandard (primärer Standort)`,description:`Überschreiben Sie den Wetterstandort für dieses Display. Leer lassen, um den primären Standort aus der Wetterkonfiguration zu verwenden.`}}},filters:{darkMode:{title:`Dunkelmodus`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`,all:`Alle`}},screenSaver:{title:`Bildschirmschoner`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`,all:`Alle`}},state:{title:`Status`},states:{title:`Status`}},states:{connected:`Verbunden`,disconnected:`Getrennt`,lost:`Verloren`,unknown:`Unbekannt`},texts:{loadingDisplays:`Displays werden geladen...`,loadingDisplay:`Display wird geladen...`,noDisplays:`Noch keine Displays registriert`,noFilteredDisplays:`Keine Displays entsprechen Ihren Filterkriterien`,confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,aboutDisplayConfiguration:`Konfigurieren Sie den Bereitstellungsmodus und die Display-Registrierungseinstellungen. Der Bereitstellungsmodus bestimmt, wie Backend und Panel organisiert sind, während die Beitrittsdauer steuert, wie lange sich neue Displays im Netzwerk registrieren können.`},buttons:{detail:{title:`Details`},adjust:{title:`Filtern`},resetFilters:{title:`Filter zurücksetzen`},reset:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},save:{title:`Speichern`},cancel:{title:`Abbrechen`},close:{title:`Schließen`},discard:{title:`Verwerfen`},permitJoin:{title:`Beitritt erlauben`,disable:`Beitritt deaktivieren ({time})`},back:{title:`Zurück`}},edit:{sections:{general:{title:`Allgemein`},layout:{title:`Layout`,badge:`Erweitert`,description:`Erweiterte Einstellungen, die steuern, wie viele Kacheln auf dem Bildschirm angezeigt und wie sie im Raster angeordnet werden.`},appearance:{title:`Erscheinungsbild`},homePage:{title:`Startseite`,autoSpaceHint:`Im <strong>Auto-Modus</strong> öffnet das Display die Standard-Systemansicht für den Typ des zugewiesenen Bereichs.`},weather:{title:`Wetterstandort`,description:`Überschreiben Sie den Wetterstandort für dieses Display. Wenn nicht gesetzt, wird der primäre Standort aus der Wetterkonfiguration verwendet.`},units:{title:`Einheiten-Überschreibungen`,description:`Überschreiben Sie systemweite Maßeinheiten für dieses Display. Leer lassen, um den Systemstandard zu verwenden.`},audio:{title:`Audio`,badge:`Erweitert`}}},detail:{title:`Display-Details`,info:{title:`Display-Informationen`,macAddress:`MAC-Adresse`,version:`Version`,build:`Bauen`,resolution:`Auflösung`,pixelRatio:`Pixelverhältnis`,gridSize:`Rastergröße`,registeredFromIp:`Registrierte IP`,currentIpAddress:`Aktuelle IP`,status:`Verbindungsstatus`},settings:{title:`Display-Einstellungen`,gridSize:`Rastergröße`,darkMode:`Dunkelmodus`,brightness:`Helligkeit`,screenLockDuration:`Bildschirmsperrdauer`,screenSaver:`Bildschirmschoner`,screenPowerOff:`Bildschirm ausschalten`,speakerEnabled:`Lautsprecher aktiviert`,speakerVolume:`Lautsprecherlautstärke`,microphoneEnabled:`Mikrofon aktiviert`,microphoneVolume:`Mikrofonlautstärke`},peripherals:{title:`Peripheriegeräte`,audioOutput:`Audioausgang`,audioOutputVolume:`Audioausgang-Lautstärke`,audioInput:`Audioeingang`,audioInputVolume:`Audioeingang-Lautstärke`},audio:{speaker:{title:`Lautsprecher (Audioausgang)`},microphone:{title:`Mikrofon (Audioeingang)`}},tokens:{title:`Zugriffstoken`,subtitle:`Token verwalten`,description:`Verwalten Sie Zugriffstoken für dieses Display. Jedes Display sollte höchstens einen aktiven Token haben.`,noTokens:`Keine aktiven Token`,revokeConfirm:`Sind Sie sicher, dass Sie den Zugriffstoken widerrufen möchten? Das Display muss sich erneut registrieren.`,revoked:`Token erfolgreich widerrufen`},spaceContext:{title:`Bereichskontext`,homeMode:`Startseitenmodus`,assignedSpace:`Zugewiesener Bereich`,notAssigned:`Nicht zugewiesen`,initialView:`Anfangsansicht`,selectedPage:`Ausgewählte Seite`,hint:`Die Hauptansichten dieses Displays werden automatisch basierend auf dem Typ des zugewiesenen Bereichs generiert.`,homeModes:{auto_space:`Auto`,explicit:`Explizit`},initialViews:{spaceOverview:`Bereichsübersicht`}}},messages:{notFound:`Display nicht gefunden`,loadError:`Displays konnten nicht geladen werden`,confirmRemove:`Sind Sie sicher, dass Sie das Display "{name}" entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,confirmBulkRemove:`Sind Sie sicher, dass Sie {count} Display(s) entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,removed:`Display erfolgreich entfernt`,bulkRemoved:`{count} Display(s) wurden entfernt`,bulkRemoveFailed:`Entfernung von {count} Display(s) fehlgeschlagen`,edited:`Display {display} wurde aktualisiert`,notEdited:`Display {display} wurde nicht aktualisiert`,deletedWhileEditing:`Dieses Display wurde gelöscht und ist nicht mehr verfügbar.`,permitJoinActivated:`Beitrittserlaubnis erfolgreich aktiviert`,permitJoinDeactivated:`Beitrittserlaubnis erfolgreich deaktiviert`,permitJoinError:`Aktivierung der Beitrittserlaubnis fehlgeschlagen`,permitJoinDeactivateError:`Deaktivierung der Beitrittserlaubnis fehlgeschlagen`,config:{edited:`Display-Konfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Display-Konfiguration fehlgeschlagen`}},actions:{revokeToken:`Token widerrufen`,manageTokens:`Token verwalten`}},"en-US":{menu:{title:`Displays`},title:`Displays`,description:`Manage your display devices`,headings:{list:`Displays`,adjustFilters:`Filter displays`,removeDisplay:`Remove display`,removeBulkDisplays:`Remove displays`,discard:`Discard changes`,aboutDisplayConfiguration:`Display configuration`},subHeadings:{list:`Manage your connected display devices`,adjustFilters:`Adjust filter settings`},breadcrumbs:{displays:{list:`displays`,detail:`display: {display}`,edit:`edit display`,tokens:`access tokens`}},meta:{displays:{list:{title:`List displays`},edit:{title:`Edit display: {display}`},detail:{title:`Display: {display}`},tokens:{title:`Access tokens: {display}`}}},table:{columns:{name:`Name`,macAddress:`MAC address`,version:`Version`,resolution:`Resolution`,layout:`Layout`,audio:`Audio`,state:{title:`State`},currentIpAddress:`Current IP`,local:`Local`,status:`Status`},tooltips:{speakerSupported:`Speaker supported`,microphoneSupported:`Microphone supported`}},fields:{search:{placeholder:`Search displays...`},config:{deploymentMode:{title:`Gateway mode`,description:`Gateway mode for display registration`,placeholder:`Select gateway mode`,validation:{required:`Gateway mode is required`}},permitJoinDurationMs:{title:`Permit join duration`,description:`Duration in milliseconds that permit join remains active`,placeholder:`120000`,unit:`ms`,validation:{required:`Permit join duration is required`,min:`Permit join duration must be at least 1000ms`}}},displays:{id:{title:`Internal identifier`,placeholder:`Display id`},name:{title:`Name`,placeholder:`Enter display name`,validation:{maxLength:`Name must be less than 100 characters`}},unitSize:{title:`Unit size`,unit:`px`,validation:{min:`Unit size must be at least 1`}},rows:{title:`Rows`,validation:{min:`Rows must be at least 1`}},cols:{title:`Columns`,validation:{min:`Columns must be at least 1`}},brightness:{title:`Brightness`,validation:{range:`Brightness must be between 0 and 100`}},screenLockDuration:{title:`Screen lock duration`,options:{"15s":`15 seconds`,"30s":`30 seconds`,"1min":`1 minute`,"2min":`2 minutes`,"5min":`5 minutes`,"10min":`10 minutes`,"30min":`30 minutes`,never:`Never`}},darkMode:{title:`Dark mode`},screenSaver:{title:`Screen saver`},screenPowerOff:{title:`Screen power off`},audio:{speaker:{title:`Speaker (audio output)`},microphone:{title:`Microphone (audio input)`}},speaker:{title:`Speaker enabled`},speakerVolume:{title:`Speaker volume`,validation:{range:`Volume must be between 0 and 100`}},microphone:{title:`Microphone enabled`},microphoneVolume:{title:`Microphone volume`,validation:{range:`Volume must be between 0 and 100`}},homeMode:{title:`Home page mode`,description:`How the home page is determined when the display starts`,options:{autoSpace:`Auto`,explicit:`Explicit`}},homePageId:{title:`Home page`,placeholder:`Select home page`,description:`The page to show when the display starts (only used when Home Page Mode is Explicit)`,validation:{required:`Home page is required when Home Page Mode is Explicit`}},spaceId:{title:`Assigned space`,placeholder:`Select a space`,description:`The space this display is assigned to. The space's type decides what the panel renders.`,validation:{required:`A space must be assigned when the home page is auto-resolved from the space.`}},numberFormat:{title:`Number Format`,placeholder:`System default`,values:{commaDot:`1,234.56 (comma / dot)`,dotComma:`1.234,56 (dot / comma)`,spaceComma:`1 234,56 (space / comma)`,none:`1234.56 (no grouping)`}},temperatureUnit:{title:`Temperature Unit`,placeholder:`System default`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}},windSpeedUnit:{title:`Wind Speed Unit`,placeholder:`System default`,values:{ms:`Meters per second (m/s)`,kmh:`Kilometers per hour (km/h)`,mph:`Miles per hour (mph)`,knots:`Knots (kn)`}},pressureUnit:{title:`Pressure Unit`,placeholder:`System default`,values:{hpa:`Hectopascal (hPa)`,mbar:`Millibar (mbar)`,inhg:`Inches of mercury (inHg)`,mmhg:`Millimeters of mercury (mmHg)`}},precipitationUnit:{title:`Precipitation Unit`,placeholder:`System default`,values:{mm:`Millimeters (mm)`,inches:`Inches (in)`}},distanceUnit:{title:`Distance Unit`,placeholder:`System default`,values:{km:`Kilometers (km)`,miles:`Miles (mi)`,meters:`Meters (m)`,feet:`Feet (ft)`}},weatherLocationId:{title:`Weather location`,placeholder:`System default (primary location)`,description:`Override the weather location for this display. Leave empty to use the primary location from weather configuration.`}}},filters:{darkMode:{title:`Dark mode`,values:{enabled:`Enabled`,disabled:`Disabled`,all:`All`}},screenSaver:{title:`Screen saver`,values:{enabled:`Enabled`,disabled:`Disabled`,all:`All`}},state:{title:`State`},states:{title:`State`}},states:{connected:`Connected`,disconnected:`Disconnected`,lost:`Lost`,unknown:`Unknown`},texts:{loadingDisplays:`Loading displays...`,loadingDisplay:`Loading display...`,noDisplays:`No displays registered yet`,noFilteredDisplays:`No displays match your filter criteria`,confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,aboutDisplayConfiguration:`Configure the deployment mode and display registration settings. The deployment mode determines how the backend and panel are organized, while permit join duration controls how long new displays can register on the network.`},buttons:{detail:{title:`Detail`},adjust:{title:`Filter`},resetFilters:{title:`Reset filters`},reset:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},save:{title:`Save`},cancel:{title:`Cancel`},close:{title:`Close`},discard:{title:`Discard`},permitJoin:{title:`Permit join`,disable:`Disable join ({time})`},back:{title:`Go back`}},edit:{sections:{general:{title:`General`},layout:{title:`Layout`,badge:`Advanced`,description:`Advanced settings that control how many tiles are shown on the screen and how they are arranged in the grid.`},appearance:{title:`Appearance`},homePage:{title:`Home page`,autoSpaceHint:`In <strong>Auto mode</strong>, the display opens the default system view for the assigned space type.`},weather:{title:`Weather location`,description:`Override the weather location for this display. When not set, the primary location from the weather configuration will be used.`},units:{title:`Unit overrides`,description:`Override system-wide measurement units for this display. Leave empty to use the system default.`},audio:{title:`Audio`,badge:`Advanced`}}},detail:{title:`Display detail`,info:{title:`Display information`,macAddress:`MAC address`,version:`Version`,build:`Build`,resolution:`Resolution`,pixelRatio:`Pixel ratio`,gridSize:`Grid size`,registeredFromIp:`Registered IP`,currentIpAddress:`Current IP`,status:`Connection state`},settings:{title:`Display settings`,gridSize:`Grid size`,darkMode:`Dark mode`,brightness:`Brightness`,screenLockDuration:`Screen lock duration`,screenSaver:`Screen saver`,screenPowerOff:`Screen power off`,speakerEnabled:`Speaker enabled`,speakerVolume:`Speaker volume`,microphoneEnabled:`Microphone enabled`,microphoneVolume:`Microphone volume`},peripherals:{title:`Peripherals`,audioOutput:`Audio output`,audioOutputVolume:`Audio output volume`,audioInput:`Audio input`,audioInputVolume:`Audio input volume`},audio:{speaker:{title:`Speaker (audio output)`},microphone:{title:`Microphone (audio input)`}},tokens:{title:`Access tokens`,subtitle:`Manage tokens`,description:`Manage access tokens for this display. Each display should have at most one active token.`,noTokens:`No active tokens`,revokeConfirm:`Are you sure you want to revoke the access token? The display will need to re-register.`,revoked:`Token revoked successfully`},spaceContext:{title:`Space context`,homeMode:`Home page mode`,assignedSpace:`Assigned space`,notAssigned:`Not assigned`,initialView:`Initial view`,selectedPage:`Selected page`,hint:`This display's main views are generated automatically based on the assigned space type.`,homeModes:{auto_space:`Auto`,explicit:`Explicit`},initialViews:{spaceOverview:`Space overview`}}},messages:{notFound:`Display not found`,loadError:`Failed to load displays`,confirmRemove:`Are you sure you want to remove display "{name}"? This action cannot be undone.`,confirmBulkRemove:`Are you sure you want to remove {count} display(s)? This action cannot be undone.`,removed:`Display removed successfully`,bulkRemoved:`{count} display(s) have been removed`,bulkRemoveFailed:`Failed to remove {count} display(s)`,edited:`Display {display} has been updated`,notEdited:`Display {display} was not updated`,deletedWhileEditing:`This display was deleted and is no longer available.`,permitJoinActivated:`Permit join activated successfully`,permitJoinDeactivated:`Permit join deactivated successfully`,permitJoinError:`Failed to activate permit join`,permitJoinDeactivateError:`Failed to deactivate permit join`,config:{edited:`Displays configuration has been successfully updated`,notEdited:`Failed to update displays configuration`}},actions:{revokeToken:`Revoke token`,manageTokens:`Manage tokens`}},"es-ES":{menu:{title:`Pantallas`},title:`Pantallas`,description:`Gestiona tus dispositivos de pantalla`,headings:{list:`Pantallas`,adjustFilters:`Filtrar pantallas`,removeDisplay:`Eliminar pantalla`,removeBulkDisplays:`Eliminar pantallas`,discard:`Descartar cambios`,aboutDisplayConfiguration:`Configuración de pantalla`},subHeadings:{list:`Gestiona tus dispositivos de pantalla conectados`,adjustFilters:`Ajustar configuración de filtros`},breadcrumbs:{displays:{list:`pantallas`,detail:`pantalla: {display}`,edit:`editar pantalla`,tokens:`tokens de acceso`}},meta:{displays:{list:{title:`Listar pantallas`},edit:{title:`Editar pantalla: {display}`},detail:{title:`Pantalla: {display}`},tokens:{title:`Tokens de acceso: {display}`}}},table:{columns:{name:`Nombre`,macAddress:`Dirección MAC`,version:`Versión`,resolution:`Resolución`,layout:`Diseño`,audio:`Audio`,state:{title:`Estado`},currentIpAddress:`IP actual`,local:`Local`,status:`Estado`},tooltips:{speakerSupported:`Altavoz compatible`,microphoneSupported:`Micrófono compatible`}},fields:{search:{placeholder:`Buscar pantallas...`},config:{deploymentMode:{title:`Modo de pasarela`,description:`Modo de pasarela para el registro de pantallas`,placeholder:`Seleccionar modo de pasarela`,validation:{required:`El modo de pasarela es obligatorio`}},permitJoinDurationMs:{title:`Duración de permiso de unión`,description:`Duración en milisegundos durante la cual el permiso de unión permanece activo`,placeholder:`120000`,unit:`ms`,validation:{required:`La duración del permiso de unión es obligatoria`,min:`La duración del permiso de unión debe ser de al menos 1000ms`}}},displays:{id:{title:`Identificador interno`,placeholder:`ID de pantalla`},name:{title:`Nombre`,placeholder:`Introduce el nombre de la pantalla`,validation:{maxLength:`El nombre debe tener menos de 100 caracteres`}},unitSize:{title:`Tamaño de unidad`,unit:`px`,validation:{min:`El tamaño de unidad debe ser de al menos 1`}},rows:{title:`Filas`,validation:{min:`Las filas deben ser de al menos 1`}},cols:{title:`Columnas`,validation:{min:`Las columnas deben ser de al menos 1`}},brightness:{title:`Brillo`,validation:{range:`El brillo debe estar entre 0 y 100`}},screenLockDuration:{title:`Duración del bloqueo de pantalla`,options:{"15s":`15 segundos`,"30s":`30 segundos`,"1min":`1 minuto`,"2min":`2 minutos`,"5min":`5 minutos`,"10min":`10 minutos`,"30min":`30 minutos`,never:`Nunca`}},darkMode:{title:`Modo oscuro`},screenSaver:{title:`Salvapantallas`},screenPowerOff:{title:`Apagar pantalla`},audio:{speaker:{title:`Altavoz (salida de audio)`},microphone:{title:`Micrófono (entrada de audio)`}},speaker:{title:`Altavoz activado`},speakerVolume:{title:`Volumen del altavoz`,validation:{range:`El volumen debe estar entre 0 y 100`}},microphone:{title:`Micrófono activado`},microphoneVolume:{title:`Volumen del micrófono`,validation:{range:`El volumen debe estar entre 0 y 100`}},homeMode:{title:`Modo de página de inicio`,description:`Cómo se determina la página de inicio cuando se inicia la pantalla`,options:{autoSpace:`Automático`,explicit:`Explícito`}},homePageId:{title:`Página de inicio`,placeholder:`Seleccionar página de inicio`,description:`La página que se muestra cuando se inicia la pantalla (solo se usa cuando el modo de página de inicio es Explícito)`,validation:{required:`La página de inicio es obligatoria cuando el modo de página de inicio es Explícito`}},spaceId:{title:`Espacio asignado`,placeholder:`Seleccionar un espacio`,description:`El espacio al que está asignada esta pantalla. El tipo del espacio determina lo que muestra el panel.`,validation:{required:`Debe asignarse un espacio cuando la página de inicio se resuelve automáticamente desde el espacio.`}},numberFormat:{title:`Formato de números`,placeholder:`Predeterminado del sistema`,values:{commaDot:`1,234.56 (coma / punto)`,dotComma:`1.234,56 (punto / coma)`,spaceComma:`1 234,56 (espacio / coma)`,none:`1234.56 (sin agrupación)`}},temperatureUnit:{title:`Unidad de temperatura`,placeholder:`Predeterminado del sistema`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}},windSpeedUnit:{title:`Unidad de velocidad del viento`,placeholder:`Predeterminado del sistema`,values:{ms:`Metros por segundo (m/s)`,kmh:`Kilómetros por hora (km/h)`,mph:`Millas por hora (mph)`,knots:`Nudos (kn)`}},pressureUnit:{title:`Unidad de presión`,placeholder:`Predeterminado del sistema`,values:{hpa:`Hectopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Pulgadas de mercurio (inHg)`,mmhg:`Milímetros de mercurio (mmHg)`}},precipitationUnit:{title:`Unidad de precipitación`,placeholder:`Predeterminado del sistema`,values:{mm:`Milímetros (mm)`,inches:`Pulgadas (in)`}},distanceUnit:{title:`Unidad de distancia`,placeholder:`Predeterminado del sistema`,values:{km:`Kilómetros (km)`,miles:`Millas (mi)`,meters:`Metros (m)`,feet:`Pies (ft)`}},weatherLocationId:{title:`Ubicación meteorológica`,placeholder:`Predeterminado del sistema (ubicación principal)`,description:`Anula la ubicación meteorológica para esta pantalla. Dejar vacío para usar la ubicación principal de la configuración meteorológica.`}}},filters:{darkMode:{title:`Modo oscuro`,values:{enabled:`Activado`,disabled:`Desactivado`,all:`Todos`}},screenSaver:{title:`Salvapantallas`,values:{enabled:`Activado`,disabled:`Desactivado`,all:`Todos`}},state:{title:`Estado`},states:{title:`Estado`}},states:{connected:`Conectado`,disconnected:`Desconectado`,lost:`Perdido`,unknown:`Desconocido`},texts:{loadingDisplays:`Cargando pantallas...`,loadingDisplay:`Cargando pantalla...`,noDisplays:`Aún no hay pantallas registradas`,noFilteredDisplays:`Ninguna pantalla coincide con los criterios de filtro`,confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`,aboutDisplayConfiguration:`Configura el modo de despliegue y los ajustes de registro de pantallas. El modo de despliegue determina cómo se organizan el backend y el panel, mientras que la duración del permiso de unión controla cuánto tiempo las nuevas pantallas pueden registrarse en la red.`},buttons:{detail:{title:`Detalle`},adjust:{title:`Filtrar`},resetFilters:{title:`Restablecer filtros`},reset:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},save:{title:`Guardar`},cancel:{title:`Cancelar`},close:{title:`Cerrar`},discard:{title:`Descartar`},permitJoin:{title:`Permitir unión`,disable:`Desactivar unión ({time})`},back:{title:`Volver`}},edit:{sections:{general:{title:`General`},layout:{title:`Diseño`,badge:`Avanzado`,description:`Configuraciones avanzadas que controlan cuántos mosaicos se muestran en la pantalla y cómo se organizan en la cuadrícula.`},appearance:{title:`Apariencia`},homePage:{title:`Página de inicio`,autoSpaceHint:`En <strong>modo Automático</strong>, la pantalla abre la vista predeterminada del sistema para el tipo del espacio asignado.`},weather:{title:`Ubicación meteorológica`,description:`Anula la ubicación meteorológica para esta pantalla. Cuando no se establece, se usará la ubicación principal de la configuración meteorológica.`},units:{title:`Anulaciones de unidades`,description:`Anula las unidades de medida de todo el sistema para esta pantalla. Dejar vacío para usar el valor predeterminado del sistema.`},audio:{title:`Audio`,badge:`Avanzado`}}},detail:{title:`Detalle de pantalla`,info:{title:`Información de la pantalla`,macAddress:`Dirección MAC`,version:`Versión`,build:`Compilación`,resolution:`Resolución`,pixelRatio:`Proporción de píxeles`,gridSize:`Tamaño de cuadrícula`,registeredFromIp:`IP de registro`,currentIpAddress:`IP actual`,status:`Estado de conexión`},settings:{title:`Configuración de pantalla`,gridSize:`Tamaño de cuadrícula`,darkMode:`Modo oscuro`,brightness:`Brillo`,screenLockDuration:`Duración del bloqueo de pantalla`,screenSaver:`Salvapantallas`,screenPowerOff:`Apagar pantalla`,speakerEnabled:`Altavoz activado`,speakerVolume:`Volumen del altavoz`,microphoneEnabled:`Micrófono activado`,microphoneVolume:`Volumen del micrófono`},peripherals:{title:`Periféricos`,audioOutput:`Salida de audio`,audioOutputVolume:`Volumen de salida de audio`,audioInput:`Entrada de audio`,audioInputVolume:`Volumen de entrada de audio`},audio:{speaker:{title:`Altavoz (salida de audio)`},microphone:{title:`Micrófono (entrada de audio)`}},tokens:{title:`Tokens de acceso`,subtitle:`Gestionar tokens`,description:`Gestiona los tokens de acceso para esta pantalla. Cada pantalla debe tener como máximo un token activo.`,noTokens:`Sin tokens activos`,revokeConfirm:`¿Estás seguro de que deseas revocar el token de acceso? La pantalla necesitará volver a registrarse.`,revoked:`Token revocado correctamente`},spaceContext:{title:`Contexto del espacio`,homeMode:`Modo de página de inicio`,assignedSpace:`Espacio asignado`,notAssigned:`No asignado`,initialView:`Vista inicial`,selectedPage:`Página seleccionada`,hint:`Las vistas principales de esta pantalla se generan automáticamente según el tipo del espacio asignado.`,homeModes:{auto_space:`Automático`,explicit:`Explícito`},initialViews:{spaceOverview:`Vista general del espacio`}}},messages:{notFound:`Pantalla no encontrada`,loadError:`Error al cargar las pantallas`,confirmRemove:`¿Estás seguro de que deseas eliminar la pantalla "{name}"? Esta acción no se puede deshacer.`,confirmBulkRemove:`¿Estás seguro de que deseas eliminar {count} pantalla(s)? Esta acción no se puede deshacer.`,removed:`Pantalla eliminada correctamente`,bulkRemoved:`{count} pantalla(s) han sido eliminadas`,bulkRemoveFailed:`Error al eliminar {count} pantalla(s)`,edited:`La pantalla {display} ha sido actualizada`,notEdited:`La pantalla {display} no fue actualizada`,deletedWhileEditing:`Esta pantalla fue eliminada y ya no está disponible.`,permitJoinActivated:`Permiso de unión activado correctamente`,permitJoinDeactivated:`Permiso de unión desactivado correctamente`,permitJoinError:`Error al activar el permiso de unión`,permitJoinDeactivateError:`Error al desactivar el permiso de unión`,config:{edited:`La configuración de pantallas se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración de pantallas`}},actions:{revokeToken:`Revocar token`,manageTokens:`Gestionar tokens`}},"pl-PL":{menu:{title:`Wyświetlacze`},title:`Wyświetlacze`,description:`Zarządzaj urządzeniami wyświetlaczy`,headings:{list:`Wyświetlacze`,adjustFilters:`Filtruj wyświetlacze`,removeDisplay:`Usuń wyświetlacz`,removeBulkDisplays:`Usuń wyświetlacze`,discard:`Odrzuć zmiany`,aboutDisplayConfiguration:`Konfiguracja wyświetlacza`},subHeadings:{list:`Zarządzaj podłączonymi urządzeniami wyświetlaczy`,adjustFilters:`Dostosuj ustawienia filtrów`},breadcrumbs:{displays:{list:`wyświetlacze`,detail:`wyświetlacz: {display}`,edit:`edytuj wyświetlacz`,tokens:`tokeny dostępu`}},meta:{displays:{list:{title:`Lista wyświetlaczy`},edit:{title:`Edytuj wyświetlacz: {display}`},detail:{title:`Wyświetlacz: {display}`},tokens:{title:`Tokeny dostępu: {display}`}}},table:{columns:{name:`Nazwa`,macAddress:`Adres MAC`,version:`Wersja`,resolution:`Rozdzielczość`,layout:`Układ`,audio:`Audio`,state:{title:`Stan`},currentIpAddress:`Bieżący IP`,local:`Lokalny`,status:`Status`},tooltips:{speakerSupported:`Obsługa głośnika`,microphoneSupported:`Obsługa mikrofonu`}},fields:{search:{placeholder:`Szukaj wyświetlaczy...`},config:{deploymentMode:{title:`Tryb bramy`,description:`Tryb bramy rejestracji wyświetlaczy`,placeholder:`Wybierz tryb bramy`,validation:{required:`Tryb bramy jest wymagany`}},permitJoinDurationMs:{title:`Czas dołączania`,description:`Czas w milisekundach, przez który dołączanie pozostaje aktywne`,placeholder:`120 000`,unit:`ms`,validation:{required:`Czas dołączania jest wymagany`,min:`Czas dołączania musi wynosić co najmniej 1000ms`}}},displays:{id:{title:`Identyfikator wewnętrzny`,placeholder:`ID wyświetlacza`},name:{title:`Nazwa`,placeholder:`Wprowadź nazwę wyświetlacza`,validation:{maxLength:`Nazwa musi mieć mniej niż 100 znaków`}},unitSize:{title:`Rozmiar jednostki`,unit:`px`,validation:{min:`Rozmiar jednostki musi wynosić co najmniej 1`}},rows:{title:`Wiersze`,validation:{min:`Wiersze muszą wynosić co najmniej 1`}},cols:{title:`Kolumny`,validation:{min:`Kolumny muszą wynosić co najmniej 1`}},brightness:{title:`Jasność`,validation:{range:`Jasność musi wynosić od 0 do 100`}},screenLockDuration:{title:`Czas blokady ekranu`,options:{"15s":`15 sekund`,"30s":`30 sekund`,"1min":`1 minuta`,"2min":`2 minuty`,"5min":`5 minut`,"10min":`10 minut`,"30min":`30 minut`,never:`Nigdy`}},darkMode:{title:`Tryb ciemny`},screenSaver:{title:`Wygaszacz ekranu`},screenPowerOff:{title:`Wyłączenie ekranu`},audio:{speaker:{title:`Głośnik (wyjście audio)`},microphone:{title:`Mikrofon (wejście audio)`}},speaker:{title:`Głośnik włączony`},speakerVolume:{title:`Głośność głośnika`,validation:{range:`Głośność musi wynosić od 0 do 100`}},microphone:{title:`Mikrofon włączony`},microphoneVolume:{title:`Głośność mikrofonu`,validation:{range:`Głośność musi wynosić od 0 do 100`}},homeMode:{title:`Tryb strony głównej`,description:`Jak strona główna jest określana przy uruchomieniu wyświetlacza`,options:{autoSpace:`Automatyczny`,explicit:`Jawny`}},homePageId:{title:`Strona główna`,placeholder:`Wybierz stronę główną`,description:`Strona wyświetlana przy uruchomieniu wyświetlacza (używana tylko gdy tryb strony głównej jest Jawny)`,validation:{required:`Strona główna jest wymagana gdy tryb strony głównej jest Jawny`}},spaceId:{title:`Przypisana przestrzeń`,placeholder:`Wybierz przestrzeń`,description:`Przestrzeń, do której jest przypisany ten wyświetlacz. Typ przestrzeni decyduje o tym, co panel wyświetla.`,validation:{required:`Gdy strona startowa jest ustalana automatycznie na podstawie przestrzeni, przestrzeń musi być przypisana.`}},numberFormat:{title:`Format liczb`,placeholder:`Domyślny systemowy`,values:{commaDot:`1,234.56 (przecinek / kropka)`,dotComma:`1.234,56 (kropka / przecinek)`,spaceComma:`1 234,56 (spacja / przecinek)`,none:`1234.56 (bez grupowania)`}},temperatureUnit:{title:`Jednostka temperatury`,placeholder:`Domyślna systemowa`,values:{celsius:`Celsjusz (°C)`,fahrenheit:`Fahrenheita (°F)`}},windSpeedUnit:{title:`Jednostka prędkości wiatru`,placeholder:`Domyślna systemowa`,values:{ms:`Metry na sekundę (m/s)`,kmh:`Kilometry na godzinę (km/h)`,mph:`Mile na godzinę (mph)`,knots:`Węzły (kn)`}},pressureUnit:{title:`Jednostka ciśnienia`,placeholder:`Domyślna systemowa`,values:{hpa:`Hektopaskal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Cale słupa rtęci (inHg)`,mmhg:`Milimetry słupa rtęci (mmHg)`}},precipitationUnit:{title:`Jednostka opadów`,placeholder:`Domyślna systemowa`,values:{mm:`Milimetry (mm)`,inches:`Cale (in)`}},distanceUnit:{title:`Jednostka odległości`,placeholder:`Domyślna systemowa`,values:{km:`Kilometry (km)`,miles:`Mile (mi)`,meters:`Metry (m)`,feet:`Stopy (ft)`}},weatherLocationId:{title:`Lokalizacja pogody`,placeholder:`Domyślna systemowa (lokalizacja główna)`,description:`Nadpisz lokalizację pogody dla tego wyświetlacza. Pozostaw puste, aby użyć głównej lokalizacji z konfiguracji pogody.`}}},filters:{darkMode:{title:`Tryb ciemny`,values:{enabled:`Włączony`,disabled:`Wyłączony`,all:`Wszystkie`}},screenSaver:{title:`Wygaszacz ekranu`,values:{enabled:`Włączony`,disabled:`Wyłączony`,all:`Wszystkie`}},state:{title:`Stan`},states:{title:`Stan`}},states:{connected:`Połączony`,disconnected:`Rozłączony`,lost:`Utracony`,unknown:`Nieznany`},texts:{loadingDisplays:`Ładowanie wyświetlaczy...`,loadingDisplay:`Ładowanie wyświetlacza...`,noDisplays:`Nie zarejestrowano jeszcze żadnych wyświetlaczy`,noFilteredDisplays:`Żadne wyświetlacze nie pasują do kryteriów filtra`,confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,aboutDisplayConfiguration:`Skonfiguruj tryb wdrożenia i ustawienia rejestracji wyświetlaczy. Tryb wdrożenia określa, jak backend i panel są zorganizowane, a czas dołączania kontroluje, jak długo nowe wyświetlacze mogą się rejestrować w sieci.`},buttons:{detail:{title:`Szczegóły`},adjust:{title:`Filtruj`},resetFilters:{title:`Resetuj filtry`},reset:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},save:{title:`Zapisz`},cancel:{title:`Anuluj`},close:{title:`Zamknij`},discard:{title:`Odrzuć`},permitJoin:{title:`Zezwól na dołączanie`,disable:`Wyłącz dołączanie ({time})`},back:{title:`Wróć`}},edit:{sections:{general:{title:`Ogólne`},layout:{title:`Układ`,badge:`Zaawansowane`,description:`Zaawansowane ustawienia kontrolujące ile kafelków jest wyświetlanych na ekranie i jak są ułożone w siatce.`},appearance:{title:`Wygląd`},homePage:{title:`Strona główna`,autoSpaceHint:`W <strong>trybie automatycznym</strong> wyświetlacz otwiera domyślny widok systemowy dla typu przypisanej przestrzeni.`},weather:{title:`Lokalizacja pogody`,description:`Nadpisz lokalizację pogody dla tego wyświetlacza. Gdy nie jest ustawiona, zostanie użyta główna lokalizacja z konfiguracji pogody.`},units:{title:`Nadpisania jednostek`,description:`Nadpisz systemowe jednostki miar dla tego wyświetlacza. Pozostaw puste, aby użyć domyślnych ustawień systemowych.`},audio:{title:`Audio`,badge:`Zaawansowane`}}},detail:{title:`Szczegóły wyświetlacza`,info:{title:`Informacje o wyświetlaczu`,macAddress:`Adres MAC`,version:`Wersja`,build:`Kompilacja`,resolution:`Rozdzielczość`,pixelRatio:`Współczynnik pikseli`,gridSize:`Rozmiar siatki`,registeredFromIp:`IP rejestracji`,currentIpAddress:`Bieżący IP`,status:`Stan połączenia`},settings:{title:`Ustawienia wyświetlacza`,gridSize:`Rozmiar siatki`,darkMode:`Tryb ciemny`,brightness:`Jasność`,screenLockDuration:`Czas blokady ekranu`,screenSaver:`Wygaszacz ekranu`,screenPowerOff:`Wyłączenie ekranu`,speakerEnabled:`Głośnik włączony`,speakerVolume:`Głośność głośnika`,microphoneEnabled:`Mikrofon włączony`,microphoneVolume:`Głośność mikrofonu`},peripherals:{title:`Urządzenia peryferyjne`,audioOutput:`Wyjście audio`,audioOutputVolume:`Głośność wyjścia audio`,audioInput:`Wejście audio`,audioInputVolume:`Głośność wejścia audio`},audio:{speaker:{title:`Głośnik (wyjście audio)`},microphone:{title:`Mikrofon (wejście audio)`}},tokens:{title:`Tokeny dostępu`,subtitle:`Zarządzaj tokenami`,description:`Zarządzaj tokenami dostępu tego wyświetlacza. Każdy wyświetlacz powinien mieć najwyżej jeden aktywny token.`,noTokens:`Brak aktywnych tokenów`,revokeConfirm:`Czy na pewno chcesz unieważnić token dostępu? Wyświetlacz będzie musiał się ponownie zarejestrować.`,revoked:`Token pomyślnie unieważniony`},spaceContext:{title:`Kontekst przestrzeni`,homeMode:`Tryb strony głównej`,assignedSpace:`Przypisana przestrzeń`,notAssigned:`Nie przypisano`,initialView:`Widok początkowy`,selectedPage:`Wybrana strona`,hint:`Główne widoki tego wyświetlacza są generowane automatycznie na podstawie typu przypisanej przestrzeni.`,homeModes:{auto_space:`Automatyczny`,explicit:`Jawny`},initialViews:{spaceOverview:`Przegląd przestrzeni`}}},messages:{notFound:`Wyświetlacz nie znaleziony`,loadError:`Nie udało się wczytać wyświetlaczy`,confirmRemove:`Czy na pewno chcesz usunąć wyświetlacz "{name}"? Tej operacji nie można cofnąć.`,confirmBulkRemove:`Czy na pewno chcesz usunąć {count} wyświetlaczy? Tej operacji nie można cofnąć.`,removed:`Wyświetlacz pomyślnie usunięty`,bulkRemoved:`Usunięto {count} wyświetlaczy`,bulkRemoveFailed:`Nie udało się usunąć {count} wyświetlaczy`,edited:`Wyświetlacz {display} został zaktualizowany`,notEdited:`Wyświetlacz {display} nie został zaktualizowany`,deletedWhileEditing:`Ten wyświetlacz został usunięty i nie jest już dostępny.`,permitJoinActivated:`Dołączanie pomyślnie aktywowane`,permitJoinDeactivated:`Dołączanie pomyślnie dezaktywowane`,permitJoinError:`Nie udało się aktywować dołączania`,permitJoinDeactivateError:`Nie udało się dezaktywować dołączania`,config:{edited:`Konfiguracja wyświetlaczy została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji wyświetlaczy`}},actions:{revokeToken:`Unieważnij token`,manageTokens:`Zarządzaj tokenami`}},"sk-SK":{menu:{title:`Displeje`},title:`Displeje`,description:`Spravujte svoje displeje`,headings:{list:`Displeje`,adjustFilters:`Filtrovať displeje`,removeDisplay:`Odstrániť displej`,removeBulkDisplays:`Odstrániť displeje`,discard:`Zahodiť zmeny`,aboutDisplayConfiguration:`Konfigurácia displeja`},subHeadings:{list:`Spravujte pripojené displeje`,adjustFilters:`Upraviť nastavenia filtrov`},breadcrumbs:{displays:{list:`displeje`,detail:`displej: {display}`,edit:`upraviť displej`,tokens:`prístupové tokeny`}},meta:{displays:{list:{title:`Zoznam displejov`},edit:{title:`Upraviť displej: {display}`},detail:{title:`Displej: {display}`},tokens:{title:`Prístupové tokeny: {display}`}}},table:{columns:{name:`Názov`,macAddress:`MAC adresa`,version:`Verzia`,resolution:`Rozlíšenie`,layout:`Rozloženie`,audio:`Zvuk`,state:{title:`Stav`},currentIpAddress:`Aktuálna IP`,local:`Lokálny`,status:`Stav`},tooltips:{speakerSupported:`Reproduktor podporovaný`,microphoneSupported:`Mikrofón podporovaný`}},fields:{search:{placeholder:`Vyhľadať displeje...`},config:{deploymentMode:{title:`Režim brány`,description:`Režim brány pre registráciu displejov`,placeholder:`Vyberte režim brány`,validation:{required:`Režim brány je povinný`}},permitJoinDurationMs:{title:`Trvanie povolenia pripojenia`,description:`Trvanie v milisekundách, počas ktorého zostáva povolenie pripojenia aktívne`,placeholder:`120 000`,unit:`ms`,validation:{required:`Trvanie povolenia pripojenia je povinné`,min:`Trvanie povolenia pripojenia musí byť aspoň 1000ms`}}},displays:{id:{title:`Interný identifikátor`,placeholder:`ID displeja`},name:{title:`Názov`,placeholder:`Zadajte názov displeja`,validation:{maxLength:`Názov musí mať menej ako 100 znakov`}},unitSize:{title:`Veľkosť jednotky`,unit:`px`,validation:{min:`Veľkosť jednotky musí byť aspoň 1`}},rows:{title:`Riadky`,validation:{min:`Riadky musia byť aspoň 1`}},cols:{title:`Stĺpce`,validation:{min:`Stĺpce musia byť aspoň 1`}},brightness:{title:`Jas`,validation:{range:`Jas musí byť medzi 0 a 100`}},screenLockDuration:{title:`Trvanie uzamknutia obrazovky`,options:{"15s":`15 sekúnd`,"30s":`30 sekúnd`,"1min":`1 minúta`,"2min":`2 minúty`,"5min":`5 minút`,"10min":`10 minút`,"30min":`30 minút`,never:`Nikdy`}},darkMode:{title:`Tmavý režim`},screenSaver:{title:`Šetrič obrazovky`},screenPowerOff:{title:`Vypnutie obrazovky`},audio:{speaker:{title:`Reproduktor (zvukový výstup)`},microphone:{title:`Mikrofón (zvukový vstup)`}},speaker:{title:`Reproduktor povolený`},speakerVolume:{title:`Hlasitosť reproduktora`,validation:{range:`Hlasitosť musí byť medzi 0 a 100`}},microphone:{title:`Mikrofón povolený`},microphoneVolume:{title:`Hlasitosť mikrofónu`,validation:{range:`Hlasitosť musí byť medzi 0 a 100`}},homeMode:{title:`Režim domovskej stránky`,description:`Ako sa určuje domovská stránka pri spustení displeja`,options:{autoSpace:`Automaticky`,explicit:`Explicitne`}},homePageId:{title:`Domovská stránka`,placeholder:`Vyberte domovskú stránku`,description:`Stránka zobrazená pri spustení displeja (použije sa iba keď je režim domovskej stránky Explicitný)`,validation:{required:`Domovská stránka je povinná keď je režim domovskej stránky Explicitný`}},spaceId:{title:`Priradený priestor`,placeholder:`Vyberte priestor`,description:`Priestor, ku ktorému je tento displej priradený. Typ priestoru určuje, čo panel zobrazuje.`,validation:{required:`Priestor musí byť priradený, keď sa domovská stránka odvodzuje z priestoru.`}},numberFormat:{title:`Formát čísiel`,placeholder:`Predvolené systémové`,values:{commaDot:`1,234.56 (čiarka / bodka)`,dotComma:`1.234,56 (bodka / čiarka)`,spaceComma:`1 234,56 (medzera / čiarka)`,none:`1234.56 (bez skupín)`}},temperatureUnit:{title:`Jednotka teploty`,placeholder:`Predvolené systémové`,values:{celsius:`Celzia (°C)`,fahrenheit:`Fahrenheit (°F)`}},windSpeedUnit:{title:`Jednotka rýchlosti vetra`,placeholder:`Predvolené systémové`,values:{ms:`Metre za sekundu (m/s)`,kmh:`Kilometre za hodinu (km/h)`,mph:`Míle za hodinu (mph)`,knots:`Uzly (kn)`}},pressureUnit:{title:`Jednotka tlaku`,placeholder:`Predvolené systémové`,values:{hpa:`Hektopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Palce ortuťového stĺpca (inHg)`,mmhg:`Milimetre ortuťového stĺpca (mmHg)`}},precipitationUnit:{title:`Jednotka zrážok`,placeholder:`Predvolené systémové`,values:{mm:`Milimetre (mm)`,inches:`Palce (in)`}},distanceUnit:{title:`Jednotka vzdialenosti`,placeholder:`Predvolené systémové`,values:{km:`Kilometre (km)`,miles:`Míle (mi)`,meters:`Metre (m)`,feet:`Stopy (ft)`}},weatherLocationId:{title:`Poloha počasia`,placeholder:`Predvolené systémové (primárna poloha)`,description:`Prepísať polohu počasia pre tento displej. Ponechajte prázdne na použitie primárnej polohy z konfigurácie počasia.`}}},filters:{darkMode:{title:`Tmavý režim`,values:{enabled:`Povolený`,disabled:`Zakázaný`,all:`Všetky`}},screenSaver:{title:`Šetrič obrazovky`,values:{enabled:`Povolený`,disabled:`Zakázaný`,all:`Všetky`}},state:{title:`Stav`},states:{title:`Stav`}},states:{connected:`Pripojený`,disconnected:`Odpojený`,lost:`Stratený`,unknown:`Neznámy`},texts:{loadingDisplays:`Načítavanie displejov...`,loadingDisplay:`Načítavanie displeja...`,noDisplays:`Zatiaľ nie sú zaregistrované žiadne displeje`,noFilteredDisplays:`Žiadne displeje nezodpovedajú vašim filtrom`,confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,aboutDisplayConfiguration:`Nakonfigurujte režim nasadenia a nastavenia registrácie displejov. Režim nasadenia určuje, ako sú organizované backend a panel, zatiaľ čo trvanie povolenia pripojenia ovláda, ako dlho sa môžu nové displeje registrovať na sieti.`},buttons:{detail:{title:`Detail`},adjust:{title:`Filter`},resetFilters:{title:`Resetovať filtre`},reset:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},save:{title:`Uložiť`},cancel:{title:`Zrušiť`},close:{title:`Zavrieť`},discard:{title:`Zahodiť`},permitJoin:{title:`Povoliť pripojenie`,disable:`Zakázať pripojenie ({time})`},back:{title:`Späť`}},edit:{sections:{general:{title:`Všeobecné`},layout:{title:`Rozloženie`,badge:`Pokročilé`,description:`Pokročilé nastavenia ovládajúce, koľko dlaždíc sa zobrazí na obrazovke a ako sú usporiadané v mriežke.`},appearance:{title:`Vzhľad`},homePage:{title:`Domovská stránka`,autoSpaceHint:`V <strong>automatickom režime</strong> displej otvorí predvolené systémové zobrazenie pre typ priradeného priestoru.`},weather:{title:`Poloha počasia`,description:`Prepísať polohu počasia pre tento displej. Ak nie je nastavená, použije sa primárna poloha z konfigurácie počasia.`},units:{title:`Prepísanie jednotiek`,description:`Prepísať celosystémové merné jednotky pre tento displej. Ponechajte prázdne na použitie systémového predvoleného nastavenia.`},audio:{title:`Zvuk`,badge:`Pokročilé`}}},detail:{title:`Detail displeja`,info:{title:`Informácie o displeji`,macAddress:`MAC adresa`,version:`Verzia`,build:`Zostavenie`,resolution:`Rozlíšenie`,pixelRatio:`Pomer pixelov`,gridSize:`Veľkosť mriežky`,registeredFromIp:`Registrovaná IP`,currentIpAddress:`Aktuálna IP`,status:`Stav pripojenia`},settings:{title:`Nastavenia displeja`,gridSize:`Veľkosť mriežky`,darkMode:`Tmavý režim`,brightness:`Jas`,screenLockDuration:`Trvanie uzamknutia obrazovky`,screenSaver:`Šetrič obrazovky`,screenPowerOff:`Vypnutie obrazovky`,speakerEnabled:`Reproduktor povolený`,speakerVolume:`Hlasitosť reproduktora`,microphoneEnabled:`Mikrofón povolený`,microphoneVolume:`Hlasitosť mikrofónu`},peripherals:{title:`Periférie`,audioOutput:`Zvukový výstup`,audioOutputVolume:`Hlasitosť zvukového výstupu`,audioInput:`Zvukový vstup`,audioInputVolume:`Hlasitosť zvukového vstupu`},audio:{speaker:{title:`Reproduktor (zvukový výstup)`},microphone:{title:`Mikrofón (zvukový vstup)`}},tokens:{title:`Prístupové tokeny`,subtitle:`Spravovať tokeny`,description:`Spravujte prístupové tokeny pre tento displej. Každý displej by mal mať maximálne jeden aktívny token.`,noTokens:`Žiadne aktívne tokeny`,revokeConfirm:`Naozaj chcete odobrať prístupový token? Displej sa bude musieť znovu zaregistrovať.`,revoked:`Token bol úspešne odobratý`},spaceContext:{title:`Kontext priestoru`,homeMode:`Režim domovskej stránky`,assignedSpace:`Priradený priestor`,notAssigned:`Nepriradený`,initialView:`Počiatočné zobrazenie`,selectedPage:`Vybraná stránka`,hint:`Hlavné zobrazenia tohto displeja sú generované automaticky na základe typu priradeného priestoru.`,homeModes:{auto_space:`Automaticky`,explicit:`Explicitne`},initialViews:{spaceOverview:`Prehľad priestoru`}}},messages:{notFound:`Displej nebol nájdený`,loadError:`Nepodarilo sa načítať displeje`,confirmRemove:`Naozaj chcete odstrániť displej "{name}"? Túto akciu nie je možné vrátiť.`,confirmBulkRemove:`Naozaj chcete odstrániť {count} displejov? Túto akciu nie je možné vrátiť.`,removed:`Displej bol úspešne odstránený`,bulkRemoved:`{count} displejov bolo odstránených`,bulkRemoveFailed:`Nepodarilo sa odstrániť {count} displejov`,edited:`Displej {display} bol aktualizovaný`,notEdited:`Displej {display} nebol aktualizovaný`,deletedWhileEditing:`Tento displej bol odstránený a už nie je dostupný.`,permitJoinActivated:`Povolenie pripojenia bolo úspešne aktivované`,permitJoinDeactivated:`Povolenie pripojenia bolo úspešne deaktivované`,permitJoinError:`Nepodarilo sa aktivovať povolenie pripojenia`,permitJoinDeactivateError:`Nepodarilo sa deaktivovať povolenie pripojenia`,config:{edited:`Konfigurácia displejov bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu displejov`}},actions:{revokeToken:`Odobrať token`,manageTokens:`Spravovať tokeny`}}},mt=[{path:`displays`,name:J.DISPLAYS,component:()=>V(()=>import(`./view-displays-DE_oTtvk.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,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52])),props:!0,meta:{guards:{authenticated:!0,roles:[N.admin,N.owner]},title:()=>ae.global.t(`displaysModule.menu.title`),icon:`mdi:monitor`,menu:6e3},children:[{path:`:id`,name:J.DISPLAYS_EDIT,component:()=>V(()=>import(`./view-display-edit-CeDdE9A3.js`),__vite__mapDeps([53,1,2,3,4,5,6,29,54,55,42,33,34,10,35,36,37,38,39,43,44,45,46,47,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,40,41,48,49,50,51,52])),props:!0,meta:{guards:{authenticated:!0,roles:[N.admin,N.owner]},title:`Edit display`,icon:`mdi:pencil-circle`}}]},{path:`display/:id`,name:J.DISPLAY,component:()=>V(()=>import(`./view-display-Cwe6xu0z.js`),__vite__mapDeps([56,1,2,3,4,5,6,57,22,58,7,8,29,42,33,34,10,35,36,37,38,39,43,44,45,46,47,9,11,31,30,32,40])),props:!0,meta:{guards:{authenticated:!0,roles:[N.admin,N.owner]},title:`Display detail`,icon:`mdi:monitor`},children:[{path:`edit`,name:J.DISPLAY_EDIT,component:()=>V(()=>import(`./view-display-edit-CeDdE9A3.js`),__vite__mapDeps([53,1,2,3,4,5,6,29,54,55,42,33,34,10,35,36,37,38,39,43,44,45,46,47,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,40,41,48,49,50,51,52])),props:!0,meta:{guards:{authenticated:!0,roles:[N.admin,N.owner]},title:`Edit display`,icon:`mdi:pencil-circle`}},{path:`tokens`,name:J.DISPLAY_TOKENS,component:()=>V(()=>import(`./view-display-tokens-Cfdzw2NT.js`),__vite__mapDeps([59,1,2,3,4,5,6,13,14,15,16,18,29,9,10,11])),props:!0,meta:{guards:{authenticated:!0,roles:[N.admin,N.owner]},title:`Display tokens`,icon:`mdi:key`}}]}],ht=Be.extend({deploymentMode:R([`standalone`,`all-in-one`,`combined`]),permitJoinDurationMs:L().int().min(1e3)}),gt=He.extend({type:pe(ot),deploymentMode:xe(rt),permitJoinDurationMs:L().int().min(1e3)}),_t=We.and(I({type:pe(ot),deployment_mode:xe(rt).optional(),permit_join_duration_ms:L().int().min(1e3).optional()}));Ve.and(I({type:pe(ot),deployment_mode:xe(rt),permit_join_duration_ms:L().int().min(1e3)}));var Z=H().uuid(),vt=R([`auto_space`,`explicit`]),yt=R([`comma_dot`,`dot_comma`,`space_comma`,`none`]),bt=R([`celsius`,`fahrenheit`]),xt=R([`ms`,`kmh`,`mph`,`knots`]),St=R([`hpa`,`mbar`,`inhg`,`mmhg`]),Ct=R([`mm`,`inches`]),wt=R([`km`,`miles`,`meters`,`feet`]),Q=I({id:Z,draft:B().default(!1),macAddress:H().trim().nonempty(),name:H().nullable().default(null),version:H().trim().nonempty(),build:H().trim().nullable().default(null),screenWidth:L().default(0),screenHeight:L().default(0),pixelRatio:L().default(1),unitSize:L().default(8),rows:L().default(12),cols:L().default(24),darkMode:B().default(!1),brightness:L().min(0).max(100).default(100),screenLockDuration:L().default(30),screenSaver:B().default(!0),screenPowerOff:B().default(!1),audioOutputSupported:B().default(!1),audioInputSupported:B().default(!1),speaker:B().default(!1),speakerVolume:L().min(0).max(100).default(50),microphone:B().default(!1),microphoneVolume:L().min(0).max(100).default(50),homeMode:vt.default(`auto_space`),homePageId:H().uuid().nullable().default(null),resolvedHomePageId:H().uuid().nullable().optional().default(null),spaceId:H().uuid().nullable().default(null),numberFormat:yt.nullable().default(null),temperatureUnit:bt.nullable().default(null),windSpeedUnit:xt.nullable().default(null),pressureUnit:St.nullable().default(null),precipitationUnit:Ct.nullable().default(null),distanceUnit:wt.nullable().default(null),weatherLocationId:H().uuid().nullable().default(null),registeredFromIp:H().nullable().default(null),currentIpAddress:H().nullable().default(null),online:B().default(!1),status:R([`connected`,`disconnected`,`lost`,`unknown`]).default(`unknown`),createdAt:ue([H().datetime({offset:!0}),de()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:ue([H().datetime({offset:!0}),de()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:B().default(!1),item:z(Z)}),creating:z(Z),updating:z(Z),deleting:z(Z)}),I({id:Z,data:me({})}),I({id:Z,data:I({macAddress:H().trim().nonempty().optional(),name:H().nullable().optional(),version:H().trim().nonempty().optional(),build:H().trim().nullable().optional(),screenWidth:L().optional(),screenHeight:L().optional(),pixelRatio:L().optional(),unitSize:L().optional(),rows:L().optional(),cols:L().optional(),darkMode:B().optional(),brightness:L().min(0).max(100).optional(),screenLockDuration:L().optional(),screenSaver:B().optional(),screenPowerOff:B().optional(),audioOutputSupported:B().optional(),audioInputSupported:B().optional(),speaker:B().optional(),speakerVolume:L().min(0).max(100).optional(),microphone:B().optional(),microphoneVolume:L().min(0).max(100).optional(),homeMode:vt.optional(),homePageId:H().uuid().nullable().optional(),spaceId:H().uuid().nullable().optional(),numberFormat:yt.nullable().optional(),temperatureUnit:bt.nullable().optional(),windSpeedUnit:xt.nullable().optional(),pressureUnit:St.nullable().optional(),precipitationUnit:Ct.nullable().optional(),distanceUnit:wt.nullable().optional(),weatherLocationId:H().uuid().nullable().optional()})}),I({id:Z}),I({id:Z});var Tt=I({id:Z.optional().default(se()),draft:B().optional().default(!1),data:I({macAddress:H().trim().nonempty(),version:H().trim().nonempty(),build:H().trim().nullable().optional().default(null),screenWidth:L().optional().default(0),screenHeight:L().optional().default(0),pixelRatio:L().optional().default(1),unitSize:L().optional().default(8),rows:L().optional().default(12),cols:L().optional().default(24)})}),Et=I({id:Z,data:I({name:H().nullable().optional(),unitSize:L().min(1).optional(),rows:L().min(1).optional(),cols:L().min(1).optional(),darkMode:B().optional(),brightness:L().min(0).max(100).optional(),screenLockDuration:L().optional(),screenSaver:B().optional(),screenPowerOff:B().optional(),speaker:B().optional(),speakerVolume:L().min(0).max(100).optional(),microphone:B().optional(),microphoneVolume:L().min(0).max(100).optional(),homeMode:vt.optional(),homePageId:H().uuid().nullable().optional(),spaceId:H().uuid().nullable().optional(),numberFormat:yt.nullable().optional(),temperatureUnit:bt.nullable().optional(),windSpeedUnit:xt.nullable().optional(),pressureUnit:St.nullable().optional(),precipitationUnit:Ct.nullable().optional(),distanceUnit:wt.nullable().optional(),weatherLocationId:H().uuid().nullable().optional()})});I({id:Z}),I({ids:z(Z).nonempty()});var Dt=I({succeeded:z(H()),failed:z(I({id:H(),reason:H()}))});I({id:Z}),I({id:Z});var Ot=I({mac_address:H().trim().nonempty(),version:H().trim().nonempty(),build:H().trim().optional(),screen_width:L().optional(),screen_height:L().optional(),pixel_ratio:L().optional(),unit_size:L().optional(),rows:L().optional(),cols:L().optional()}),kt=I({name:H().nullable().optional(),unit_size:L().min(1).optional(),rows:L().min(1).optional(),cols:L().min(1).optional(),dark_mode:B().optional(),brightness:L().min(0).max(100).optional(),screen_lock_duration:L().optional(),screen_saver:B().optional(),screen_power_off:B().optional(),speaker:B().optional(),speaker_volume:L().min(0).max(100).optional(),microphone:B().optional(),microphone_volume:L().min(0).max(100).optional(),home_mode:vt.optional(),home_page_id:H().uuid().nullable().optional(),space_id:H().uuid().nullable().optional(),number_format:yt.nullable().optional(),temperature_unit:bt.nullable().optional(),wind_speed_unit:xt.nullable().optional(),pressure_unit:St.nullable().optional(),precipitation_unit:Ct.nullable().optional(),distance_unit:wt.nullable().optional(),weather_location_id:H().uuid().nullable().optional()});I({id:H().uuid(),mac_address:H().trim().nonempty(),name:H().nullable().optional().default(null),version:H().trim().nonempty(),build:H().trim().nullable().optional().default(null),screen_width:L(),screen_height:L(),pixel_ratio:L(),unit_size:L(),rows:L(),cols:L(),dark_mode:B(),brightness:L(),screen_lock_duration:L(),screen_saver:B(),screen_power_off:B(),audio_output_supported:B(),audio_input_supported:B(),speaker:B(),speaker_volume:L(),microphone:B(),microphone_volume:L(),home_mode:vt.optional().default(`auto_space`),home_page_id:H().uuid().nullable().optional().default(null),resolved_home_page_id:H().uuid().nullable().optional().default(null),space_id:H().uuid().nullable().optional().default(null),number_format:yt.nullable().optional().default(null),temperature_unit:bt.nullable().optional().default(null),wind_speed_unit:xt.nullable().optional().default(null),pressure_unit:St.nullable().optional().default(null),precipitation_unit:Ct.nullable().optional().default(null),distance_unit:wt.nullable().optional().default(null),weather_location_id:H().uuid().nullable().optional().default(null),registered_from_ip:H().nullable().optional().default(null),current_ip_address:H().nullable().optional().default(null),online:B().optional().default(!1),status:R([`connected`,`disconnected`,`lost`,`unknown`]).optional().default(`unknown`),created_at:H(),updated_at:H().nullable().optional().default(null)}),I({id:H().uuid(),owner_type:H(),owner_id:H().uuid().nullable(),name:H(),description:H().nullable(),expires_at:H().nullable(),revoked:B(),created_at:H(),updated_at:H().nullable().optional().default(null)});var $=e=>{let t=Q.safeParse({id:e.id,macAddress:e.mac_address,name:e.name??null,version:e.version,build:e.build??null,screenWidth:e.screen_width??0,screenHeight:e.screen_height??0,pixelRatio:e.pixel_ratio??1,unitSize:e.unit_size??8,rows:e.rows??12,cols:e.cols??24,darkMode:e.dark_mode??!1,brightness:e.brightness??100,screenLockDuration:e.screen_lock_duration??30,screenSaver:e.screen_saver??!0,screenPowerOff:e.screen_power_off??!1,audioOutputSupported:e.audio_output_supported??!1,audioInputSupported:e.audio_input_supported??!1,speaker:e.speaker??!1,speakerVolume:e.speaker_volume??50,microphone:e.microphone??!1,microphoneVolume:e.microphone_volume??50,homeMode:e.home_mode??`auto_space`,homePageId:e.home_page_id??null,resolvedHomePageId:e.resolved_home_page_id??null,spaceId:e.space_id??null,numberFormat:e.number_format??null,temperatureUnit:e.temperature_unit??null,windSpeedUnit:e.wind_speed_unit??null,pressureUnit:e.pressure_unit??null,precipitationUnit:e.precipitation_unit??null,distanceUnit:e.distance_unit??null,weatherLocationId:e.weather_location_id??null,registeredFromIp:e.registered_from_ip??null,currentIpAddress:e.current_ip_address??null,online:e.online??!1,status:e.status??`unknown`,createdAt:e.created_at,updatedAt:e.updated_at??null});if(!t.success)throw new K(`Failed to validate received display data.`);return t.data},At=e=>{let t=Ot.safeParse({mac_address:e.macAddress,version:e.version,build:e.build??void 0,screen_width:e.screenWidth,screen_height:e.screenHeight,pixel_ratio:e.pixelRatio,unit_size:e.unitSize,rows:e.rows,cols:e.cols});if(!t.success)throw new K(`Failed to validate create display request.`);return t.data},jt=e=>{let t={name:e.name,unit_size:e.unitSize,rows:e.rows,cols:e.cols,dark_mode:e.darkMode,brightness:e.brightness,screen_lock_duration:e.screenLockDuration,screen_saver:e.screenSaver,screen_power_off:e.screenPowerOff};e.speaker!==void 0&&(t.speaker=e.speaker),e.speakerVolume!==void 0&&(t.speaker_volume=e.speakerVolume),e.microphone!==void 0&&(t.microphone=e.microphone),e.microphoneVolume!==void 0&&(t.microphone_volume=e.microphoneVolume),e.homeMode!==void 0&&(t.home_mode=e.homeMode),e.homePageId!==void 0&&(t.home_page_id=e.homePageId),`spaceId`in e&&(t.space_id=e.spaceId??null),`numberFormat`in e&&(t.number_format=e.numberFormat??null),`temperatureUnit`in e&&(t.temperature_unit=e.temperatureUnit??null),`windSpeedUnit`in e&&(t.wind_speed_unit=e.windSpeedUnit??null),`pressureUnit`in e&&(t.pressure_unit=e.pressureUnit??null),`precipitationUnit`in e&&(t.precipitation_unit=e.precipitationUnit??null),`distanceUnit`in e&&(t.distance_unit=e.distanceUnit??null),`weatherLocationId`in e&&(t.weather_location_id=e.weatherLocationId??null);let n=kt.safeParse(t);if(!n.success)throw new K(`Failed to validate update display request.`);return n.data},Mt={fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]},Nt=ge(`displays_module-displays`,()=>{let e=be(),t=he(),n=h(Mt),r=h(!1),i=h({}),a=h({}),o={},s={},c=()=>r.value,l=e=>n.value.fetching.item.includes(e),u=()=>n.value.fetching.items,d=()=>Object.values(i.value),f=e=>i.value[e]??null,p=e=>m({id:e.id,data:$(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=Q.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert display.`);return i.value[n.data.id]=n.data}let n=Q.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert display.`);return i.value=i.value??{},i.value[n.data.id]=n.data},g=e=>{i.value&&delete i.value[e.id]},_=async t=>{let r=o[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new Y(`Already fetching display.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${O}/${q}/displays/{id}`,{params:{path:{id:t.id}}});if(n!==void 0){let e=$(n.data);return i.value[e.id]=e,e}throw new Y(`Failed to fetch display.`,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();o[t.id]=a;try{return await a}finally{delete o[t.id]}},v=async()=>{if(`all`in s)return s.all;let t=(async()=>{if(n.value.fetching.items)throw new Y(`Already fetching displays.`);n.value.fetching.items=!0;try{let{data:t,error:n,response:a}=await e.client.GET(`/${O}/${q}/displays`);if(t!==void 0)return i.value=Object.fromEntries(t.data.map(e=>{let t=$(e);return[t.id,t]})),r.value=!0,Object.values(i.value);throw new Y(`Failed to fetch displays.`,a.status)}finally{n.value.fetching.items=!1}})();s.all=t;try{return await t}finally{delete s.all}},y=async r=>{let a=Tt.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to add display.`);let o=Q.safeParse({...a.data.data,id:a.data.id,draft:a.data.draft,createdAt:new Date});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to add display.`);if(n.value.creating.push(o.data.id),i.value[o.data.id]=o.data,o.data.draft)return n.value.creating=n.value.creating.filter(e=>e!==o.data.id),o.data;try{let{data:t,error:n,response:a}=await e.client.POST(`/${O}/${q}/register`,{params:{header:{"user-agent":`FastyBird Smart Panel Admin`}},body:{data:At({...o.data,id:r.id})}});if(t!==void 0&&t.data.display.id===r.id){let e=$(t.data.display);return i.value[e.id]=e,e}throw delete i.value[o.data.id],new Y(`Failed to create display.`,a.status)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.data.id)}},b=async r=>{let a=Et.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to edit display.`);if(n.value.updating.includes(r.id))throw new X(`Display is already being updated.`);if(!(r.id in i.value))throw new X(`Failed to get display data to update.`);let o=Q.safeParse({...i.value[r.id],...(0,ft.omitBy)(a.data.data,ft.isUndefined)});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to edit display.`);if(n.value.updating.push(r.id),i.value[o.data.id]=o.data,o.data.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.data.id),o.data;try{let{data:t,error:n,response:a}=await e.client.PATCH(`/${O}/${q}/displays/{id}`,{params:{path:{id:r.id}},body:{data:jt(o.data)}});if(t!==void 0){let e=$(t.data);return i.value[e.id]=e,e}throw await _({id:r.id}),new Y(`Failed to update display.`,a.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},x=async r=>{if(n.value.updating.includes(r.id))throw new X(`Display is already being saved.`);if(!(r.id in i.value))throw new X(`Failed to get display data to save.`);let a=Q.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to save display.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${O}/${q}/register`,{params:{header:{"user-agent":`FastyBird Smart Panel Admin`}},body:{data:At({...a.data,id:r.id})}});if(t!==void 0&&t.data.display.id===r.id){let e=$(t.data.display);return i.value[e.id]=e,e}throw new Y(`Failed to create display.`,o.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},S=async t=>{if(n.value.deleting.includes(t.id))throw new X(`Display is already being removed.`);if(!Object.keys(i.value).includes(t.id))return!0;n.value.deleting.push(t.id);let r=i.value[t.id];if(delete i.value[t.id],r?.draft)n.value.deleting=n.value.deleting.filter(e=>e!==t.id);else try{let{error:n,response:r}=await e.client.DELETE(`/${O}/${q}/displays/{id}`,{params:{path:{id:t.id}}});if(r.status===204)return!0;throw await _({id:t.id}),new Y(`Remove display failed.`,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0},C=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)g({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(`/${O}/${q}/displays/bulk-remove`,{body:{data:{ids:a}}});if(n!==void 0||t===void 0)throw new Y(`Received unexpected response.`);let i=Dt.parse(t.data);for(let e of i.succeeded)g({id:e});return{succeeded:[...r,...i.succeeded],failed:i.failed}}catch(e){throw new Y(`Failed to remove displays.`,null,e)}finally{n.value.deleting=n.value.deleting.filter(e=>!a.includes(e))}},w=async t=>{try{let{data:n,error:r,response:i}=await e.client.GET(`/${O}/${q}/displays/{id}/tokens`,{params:{path:{id:t.id}}});if(n!==void 0)return n.data.map(e=>{let t=e;return{id:t.id,owner_type:t.owner_type,owner_id:t.owner_id,name:t.name,description:t.description,expires_at:t.expires_at,revoked:t.revoked,created_at:t.created_at,updated_at:t.updated_at??null}});throw new Y(`Failed to fetch display tokens.`,i.status)}catch(e){throw e instanceof Y?e:new Y(`Failed to fetch display tokens.`)}},T=async t=>{try{let{response:n}=await e.client.POST(`/${O}/${q}/displays/{id}/revoke-token`,{params:{path:{id:t.id}}});if(n.status===204)return E({id:t.id}),!0;throw new Y(`Failed to revoke display token.`,n.status)}catch(e){throw e instanceof Y?e:new Y(`Failed to revoke display token.`)}},E=e=>{a.value={...a.value,[e.id]:(a.value[e.id]??0)+1}};return{isLoaded:()=>c()||d().length>0,refresh:()=>v(),semaphore:n,firstLoad:r,data:i,tokenRefreshTriggers:a,firstLoadFinished:c,getting:l,fetching:u,findAll:d,findById:f,onEvent:p,set:m,unset:g,get:_,fetch:v,add:y,edit:b,save:x,remove:S,bulkRemove:C,getTokens:w,revokeToken:T,refreshTokensForDisplay:E}}),Pt=e=>Nt(e),Ft=Symbol(`FB-Module-Displays`),It={install:(e,t)=>{let n=ce(e),r=ne(e),i=Ce(e),a=Ge(e),o=Ue(e);for(let[e,n]of Object.entries(pt)){let r=(0,ft.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{displaysModule:n});t.i18n.global.setLocaleMessage(e,r)}let s=Pt(t.store);e.provide(nt,s),n.addStore(nt,s),a.addModule(Ft,{type:ot,name:`Displays`,description:`Manage your display devices and their access tokens.`,elements:[{type:Ke,components:{moduleConfigEditForm:st},schemas:{moduleConfigSchema:gt,moduleConfigEditFormSchema:ht,moduleConfigUpdateReqSchema:_t},modules:[qe]}],modules:[qe],isCore:!0}),t.router.getRoutes().find(e=>e.name===w.ROOT)&&mt.forEach(e=>{t.router.addRoute(w.ROOT,e)}),o.register(Ft,()=>ze([s])),r.on(`event`,e=>{if(e?.event?.startsWith(`DisplaysModule.`)&&!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case at.DISPLAY_CREATED:case at.DISPLAY_UPDATED:s.onEvent({id:e.payload.id,data:e.payload}),s.refreshTokensForDisplay({id:e.payload.id});break;case at.DISPLAY_DELETED:s.unset({id:e.payload.id});break;case at.DISPLAY_TOKEN_REVOKED:s.refreshTokensForDisplay({id:e.payload.id});break;default:i.warn(`Unhandled displays module event:`,e.event)}})}},Lt=p({name:`PagesTableColumnActions`,__name:`pages-table-column-actions`,props:{page:{}},emits:[`detail`,`edit`,`remove`],setup(n,{emit:r}){let i=n,a=r,{t:o}=g(),s=te(),{plugin:l}=Ze({type:i.page.type}),d=()=>{let e=l.value?.routes?.configure;e&&(typeof e==`function`?s.push(e(i.page.id)):s.push(e))};return(n,r)=>(m(),e(j,null,[T(l)?.routes?.configure?(m(),f(T(E),{key:0,size:`small`,plain:``,"data-test-id":`configure-page`,onClick:M(d,[`stop`])},{icon:A(()=>[u(T(t),{icon:`mdi:cogs`})]),default:A(()=>[c(` `+k(T(o)(`dashboardModule.buttons.configure.title`)),1)]),_:1})):D(``,!0),u(T(E),{size:`small`,plain:``,class:`ml-1!`,"data-test-id":`detail-page`,onClick:r[0]||=M(e=>a(`detail`,i.page.id),[`stop`])},{icon:A(()=>[u(T(t),{icon:`mdi:file-search-outline`})]),default:A(()=>[c(` `+k(T(o)(`dashboardModule.buttons.detail.title`)),1)]),_:1}),u(T(E),{size:`small`,plain:``,class:`ml-1!`,"data-test-id":`edit-page`,onClick:r[1]||=M(e=>a(`edit`,i.page.id),[`stop`])},{icon:A(()=>[u(T(t),{icon:`mdi:pencil`})]),_:1}),u(T(E),{size:`small`,type:`warning`,plain:``,class:`ml-1!`,"data-test-id":`remove-page`,onClick:r[2]||=M(e=>a(`remove`,i.page.id),[`stop`])},{icon:A(()=>[u(T(t),{icon:`mdi:trash`})]),_:1})],64))}}),Rt=p({name:`PagesTableColumnIcon`,__name:`pages-table-column-icon`,props:{page:{}},setup(e){let{icon:n}=Ye({id:e.page.id});return(e,r)=>(m(),f(T(Se),{size:32},{default:A(()=>[u(T(t),{icon:T(n),class:`w[20px] h[20px]`},null,8,[`icon`])]),_:1}))}}),zt=p({name:`PagesTableColumnPlugin`,__name:`pages-table-column-plugin`,props:{page:{},filters:{}},emits:[`filter-by`],setup(e,{emit:n}){let r=e,i=n,{plugin:a}=Ze({type:r.page.type});return(e,n)=>(m(),f(T(P),{truncated:``},{default:A(()=>[u(T(Ie),{type:r.filters.types.includes(r.page.type)?`danger`:void 0,underline:`never`,class:`font-400!`,onClick:n[0]||=M(e=>i(`filter-by`,r.page.type,!r.filters.types.includes(r.page.type)),[`stop`])},{default:A(()=>[u(T(o),{class:`el-icon--left`},{default:A(()=>[r.filters.types.includes(r.page.type)?(m(),f(T(t),{key:0,icon:`mdi:filter-minus`})):(m(),f(T(t),{key:1,icon:`mdi:filter-plus`}))]),_:1}),c(` `+k(T(a)?.name||r.page.type),1)]),_:1},8,[`type`])]),_:1}))}}),Bt={key:0,class:`h-full w-full leading-normal`},Vt={key:1,class:`h-full w-full leading-normal`},Ht={key:2,class:`h-full w-full leading-normal`},Ut=p({name:`PagesTable`,__name:`pages-table`,props:{items:{},totalRows:{},sortBy:{},sortDir:{},loading:{type:Boolean},filters:{},filtersActive:{type:Boolean},tableHeight:{}},emits:[`detail`,`edit`,`remove`,`reset-filters`,`selected-changes`,`update:filters`,`update:sort-by`,`update:sort-dir`],setup(r,{emit:a}){let o=r,l=a,{t:p}=g(),{isMDDevice:h}=ye(),_=i(()=>o.totalRows===0),v=oe(o,`filters`,l),y=({prop:e,order:t})=>{l(`update:sort-by`,e),l(`update:sort-dir`,t===`descending`?`desc`:t===`ascending`?`asc`:null)},b=e=>{l(`selected-changes`,e)},x=e=>{l(`detail`,e.id)},C=(e,t,n)=>{if(e===`type`){if(t===null)return;let e=v.value.types;n===!0?e.push(t):e=v.value.types.filter(e=>e!==t),v.value.types=Array.from(new Set(e))}else if(e===`display`){let e=v.value.displays;n===!0?e.push(t):e=v.value.displays.filter(e=>e!==t),v.value.displays=Array.from(new Set(e))}};return(i,a)=>S((m(),f(T(we),{"element-loading-text":T(p)(`dashboardModule.texts.pages.loadingPages`),data:o.items,"default-sort":o.sortBy!==void 0&&o.sortDir!==null?{prop:o.sortBy,order:o.sortDir===`desc`?`descending`:`ascending`}:void 0,"table-layout":`fixed`,"row-key":`id`,class:`flex-grow`,style:s({maxHeight:r.tableHeight+`px`}),"max-height":r.tableHeight,onSortChange:y,onSelectionChange:b,onRowClick:x},{empty:A(()=>[o.loading?(m(),e(`div`,Bt,[u(T(d),{class:`h-full w-full`},{icon:A(()=>[u(T(ee),{size:80},{primary:A(()=>[u(T(t),{icon:`mdi:view-dashboard`})]),secondary:A(()=>[u(T(t),{icon:`mdi:database-refresh`})]),_:1})]),_:1})])):_.value&&!o.loading?(m(),e(`div`,Vt,[u(T(d),{class:`h-full w-full`},{icon:A(()=>[u(T(ee),{size:80},{primary:A(()=>[u(T(t),{icon:`mdi:view-dashboard`})]),secondary:A(()=>[u(T(t),{icon:`mdi:information`})]),_:1})]),title:A(()=>[c(k(T(p)(`dashboardModule.texts.pages.noPages`)),1)]),_:1})])):o.filtersActive&&!o.loading?(m(),e(`div`,Ht,[u(T(d),{class:`h-full w-full`},{icon:A(()=>[u(T(ee),{size:80},{primary:A(()=>[u(T(t),{icon:`mdi:view-dashboard`})]),secondary:A(()=>[u(T(t),{icon:`mdi:filter-multiple`})]),_:1})]),title:A(()=>[u(T(P),{class:`block`},{default:A(()=>[c(k(T(p)(`dashboardModule.texts.pages.noFilteredPages`)),1)]),_:1}),u(T(E),{type:`primary`,plain:``,class:`mt-4`,onClick:a[0]||=e=>l(`reset-filters`)},{icon:A(()=>[u(T(t),{icon:`mdi:filter-off`})]),default:A(()=>[c(` `+k(T(p)(`dashboardModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):D(``,!0)]),default:A(()=>[T(h)?(m(),f(T(U),{key:0,type:`selection`,width:30})):D(``,!0),u(T(U),{width:60,align:`center`},{default:A(e=>[u(Rt,{page:e.row},null,8,[`page`])]),_:1}),u(T(U),{label:T(p)(`dashboardModule.table.pages.columns.title.title`),prop:`title`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],"min-width":200,"class-name":`py-0!`},{default:A(e=>[c(k(e.row.title),1)]),_:1},8,[`label`]),u(T(U),{label:T(p)(`dashboardModule.table.pages.columns.type.title`),prop:`type`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:200},{default:A(e=>[u(zt,{page:e.row,filters:T(v),onFilterBy:a[1]||=(e,t)=>C(`type`,e,t)},null,8,[`page`,`filters`])]),_:1},8,[`label`]),u(T(U),{label:T(p)(`dashboardModule.table.pages.columns.display.title`),prop:`display`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:150},{default:A(e=>[u(T(lt),{row:e.row,filters:T(v),onFilterBy:a[2]||=(e,t)=>C(`display`,e,t)},null,8,[`row`,`filters`])]),_:1},8,[`label`]),u(T(U),{label:T(p)(`dashboardModule.table.pages.columns.order.title`),prop:`order`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],align:`center`,width:120},{default:A(e=>[c(k(e.row.order),1)]),_:1},8,[`label`]),u(T(U),{width:300,align:`right`},{default:A(e=>[n(`div`,{onClick:a[6]||=M(()=>{},[`stop`])},[u(Lt,{page:e.row,onDetail:a[3]||=e=>l(`detail`,e),onEdit:a[4]||=e=>l(`edit`,e),onRemove:a[5]||=e=>l(`remove`,e)},null,8,[`page`])])]),_:1})]),_:1},8,[`element-loading-text`,`data`,`default-sort`,`style`,`max-height`])),[[T(Re),o.loading]])}}),Wt=p({name:`ListPages`,__name:`list-pages`,props:{items:{},allItems:{},totalRows:{},filters:{},filtersActive:{type:Boolean},paginateSize:{},paginatePage:{},sortBy:{},sortDir:{},loading:{type:Boolean}},emits:[`detail`,`edit`,`remove`,`adjust-list`,`reset-filters`,`update:filters`,`update:paginate-size`,`update:paginate-page`,`update:sort-by`,`update:sort-dir`,`bulk-action`],setup(t,{emit:r}){let o=t,s=r,{t:c}=g(),{isMDDevice:l}=ye(),d=null,f=h(null),p=h(null),_=oe(o,`filters`,s),b=h(o.sortBy),S=h(o.sortDir),C=h(o.paginatePage),w=h(o.paginateSize),E=h(250),D=h([]),O=i(()=>[{key:`delete`,label:c(`application.bulkActions.delete`),icon:`mdi:trash`,type:`danger`}]),k=e=>{s(`detail`,e)},ee=e=>{s(`edit`,e)},te=e=>{s(`remove`,e)},M=()=>{s(`reset-filters`)},N=e=>{s(`update:paginate-size`,e)},ne=e=>{s(`update:paginate-page`,e)},P=e=>{D.value=e},re=e=>{s(`bulk-action`,e,D.value)};return v(()=>{if(!f.value)return;let e=()=>{E.value=f.value.clientHeight-p.value.clientHeight};typeof window<`u`&&`ResizeObserver`in window&&(d=new ResizeObserver(e),d.observe(f.value)),e()}),a(()=>{d&&f.value&&d.unobserve(f.value)}),x(()=>b.value,e=>{s(`update:sort-by`,e)}),x(()=>S.value,e=>{s(`update:sort-dir`,e)}),x(()=>o.paginatePage,e=>{C.value=e}),x(()=>o.paginateSize,e=>{w.value=e}),x(()=>o.sortDir,e=>{S.value=e}),x(()=>o.sortBy,e=>{b.value=e}),x(()=>l.value,e=>{e||(D.value=[])}),(t,r)=>(m(),e(j,null,[u(T(ke),{shadow:`never`,class:`px-1 py-2 shrink-0`,"body-class":`p-0!`},{default:A(()=>[u(dt,{filters:T(_),"onUpdate:filters":r[0]||=e=>y(_)?_.value=e:null,"filters-active":o.filtersActive,"selected-count":D.value.length,"bulk-actions":O.value,onResetFilters:r[1]||=e=>s(`reset-filters`),onAdjustList:r[2]||=e=>s(`adjust-list`),onBulkAction:re},null,8,[`filters`,`filters-active`,`selected-count`,`bulk-actions`])]),_:1}),n(`div`,{ref_key:`wrapper`,ref:f,class:`flex-grow overflow-hidden`},[u(T(ke),{shadow:`never`,class:`max-h-full flex flex-col overflow-hidden box-border`,"body-class":`p-0! max-h-full overflow-hidden flex flex-col`},{default:A(()=>[u(Ut,{filters:T(_),"onUpdate:filters":r[3]||=e=>y(_)?_.value=e:null,"sort-by":b.value,"onUpdate:sortBy":r[4]||=e=>b.value=e,"sort-dir":S.value,"onUpdate:sortDir":r[5]||=e=>S.value=e,items:o.items,"total-rows":o.totalRows,loading:o.loading,"filters-active":o.filtersActive,"table-height":E.value,onDetail:k,onEdit:ee,onRemove:te,onResetFilters:M,onSelectedChanges:P},null,8,[`filters`,`sort-by`,`sort-dir`,`items`,`total-rows`,`loading`,`filters-active`,`table-height`]),n(`div`,{ref_key:`paginator`,ref:p,class:`flex justify-center w-full py-4`},[u(T(Le),{"current-page":C.value,"onUpdate:currentPage":r[6]||=e=>C.value=e,"page-size":w.value,"onUpdate:pageSize":r[7]||=e=>w.value=e,layout:T(l)?`total, sizes, prev, pager, next, jumper`:`total, sizes, prev, pager, next`,total:o.allItems.length,onSizeChange:N,onCurrentChange:ne},null,8,[`current-page`,`page-size`,`layout`,`total`])],512)]),_:1})],512)],64))}}),Gt={key:1,class:`px-2`},Kt={key:1,class:`px-2`},qt={class:`px-5 py-2 text-center`},Jt=r(p({name:`ListPagesAdjust`,__name:`list-pages-adjust`,props:{filters:{},filtersActive:{type:Boolean}},emits:[`update:filters`,`reset-filters`],setup(r,{emit:i}){let a=r,o=i,s=l(`list-pages-adjust`),{t:d}=g(),{options:p}=et(),{options:v}=it(),y=h([`types`,`displays`]),b=oe(a,`filters`,o);return(r,i)=>(m(),e(j,null,[u(T(le),{teleport:``},{icon:A(()=>[u(T(t),{icon:`mdi:filter`})]),title:A(()=>[c(k(T(d)(`dashboardModule.headings.pages.adjustFilters`)),1)]),subtitle:A(()=>[c(k(T(d)(`dashboardModule.subHeadings.pages.adjustFilters`)),1)]),_:1}),n(`div`,{class:_([[T(s).b()],`flex flex-col h-full w-full overflow-hidden`])},[u(T(re),{class:`flex-grow`},{default:A(()=>[u(T(Fe),{modelValue:y.value,"onUpdate:modelValue":i[2]||=e=>y.value=e},{default:A(()=>[u(T(Pe),{name:`types`,class:_([T(s).e(`filter-item`)])},{title:A(()=>[u(T(P),{class:`!px-2`},{default:A(()=>[c(k(T(d)(`dashboardModule.filters.pages.types.title`)),1)]),_:1})]),default:A(()=>[T(p).length?(m(),f(T(Ae),{key:0,modelValue:T(b).types,"onUpdate:modelValue":i[0]||=e=>T(b).types=e,class:`flex flex-col px-4`},{default:A(()=>[(m(!0),e(j,null,C(T(p),e=>(m(),f(T(je),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])):(m(),e(`div`,Gt,[u(T(Ee),{closable:!1},{default:A(()=>[c(k(T(d)(`dashboardModule.texts.pages.noPlugins`)),1)]),_:1})]))]),_:1},8,[`class`]),u(T(Pe),{name:`displays`,class:_([T(s).e(`filter-item`)])},{title:A(()=>[u(T(P),{class:`!px-2`},{default:A(()=>[c(k(T(d)(`dashboardModule.filters.pages.displays.title`)),1)]),_:1})]),default:A(()=>[T(v).length?(m(),f(T(Ae),{key:0,modelValue:T(b).displays,"onUpdate:modelValue":i[1]||=e=>T(b).displays=e,class:`flex flex-col px-4`},{default:A(()=>[(m(!0),e(j,null,C(T(v),e=>(m(),f(T(je),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])):(m(),e(`div`,Kt,[u(T(Ee),{closable:!1},{default:A(()=>[c(k(T(d)(`dashboardModule.texts.pages.noDisplays`)),1)]),_:1})]))]),_:1},8,[`class`])]),_:1},8,[`modelValue`])]),_:1}),n(`div`,qt,[u(T(E),{disabled:!a.filtersActive,onClick:i[3]||=e=>o(`reset-filters`)},{icon:A(()=>[u(T(t),{icon:`mdi:filter-remove`})]),default:A(()=>[c(` `+k(T(d)(`dashboardModule.buttons.reset.title`)),1)]),_:1},8,[`disabled`])])],2)],64))}}),[[`__scopeId`,`data-v-d7f1c8f6`]]),Yt=p({name:`PageAddForm`,__name:`page-add-form`,props:{id:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Je.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},type:{}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:i}=g(),{model:a,formEl:o,formChanged:s,submit:l,formResult:d}=Qe({id:n.id,type:n.type}),p=b({title:[{required:!0,message:i(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]});return x(()=>d.value,async e=>{r(`update:remote-form-result`,e)}),x(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),x(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),x(()=>s.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(m(),f(T(Te),{ref_key:`formEl`,ref:o,model:T(a),rules:p,"label-position":`top`,"status-icon":``},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.pages.id.title`),prop:[`id`]},{default:A(()=>[u(T(F),{modelValue:T(a).id,"onUpdate:modelValue":t[0]||=e=>T(a).id=e,placeholder:T(i)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.title.title`),prop:[`title`]},{default:A(()=>[u(T(F),{modelValue:T(a).title,"onUpdate:modelValue":t[1]||=e=>T(a).title=e,placeholder:T(i)(`dashboardModule.fields.pages.title.placeholder`),name:`title`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.icon.title`),prop:[`icon`]},{default:A(()=>[u(T(ve),{modelValue:T(a).icon,"onUpdate:modelValue":t[2]||=e=>T(a).icon=e,placeholder:T(i)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.order.title`),prop:[`order`]},{default:A(()=>[u(T(G),{modelValue:T(a).order,"onUpdate:modelValue":t[3]||=e=>T(a).order=e,placeholder:T(i)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.showTopBar.title`),prop:[`showTopBar`]},{default:A(()=>[u(T(ie),{modelValue:T(a).showTopBar,"onUpdate:modelValue":t[4]||=e=>T(a).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:A(()=>[u(T(ct),{modelValue:T(a).displays,"onUpdate:modelValue":t[5]||=e=>T(a).displays=e,placeholder:T(i)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),u(T(P),{size:`small`,class:`block mt-1 text-gray-500`},{default:A(()=>[c(k(T(i)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Xt=p({name:`PageEditForm`,__name:`page-edit-form`,props:{page:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Je.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:i}=g(),{model:a,formEl:o,formChanged:s,submit:l,formResult:d}=Xe({page:n.page}),p=b({title:[{required:!0,message:i(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]});return x(()=>d.value,async e=>{r(`update:remote-form-result`,e)}),x(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),x(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),x(()=>s.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(m(),f(T(Te),{ref_key:`formEl`,ref:o,model:T(a),rules:p,"label-position":`top`,"status-icon":``},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.pages.id.title`),prop:[`id`]},{default:A(()=>[u(T(F),{modelValue:T(a).id,"onUpdate:modelValue":t[0]||=e=>T(a).id=e,placeholder:T(i)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.title.title`),prop:[`title`]},{default:A(()=>[u(T(F),{modelValue:T(a).title,"onUpdate:modelValue":t[1]||=e=>T(a).title=e,placeholder:T(i)(`dashboardModule.fields.pages.title.placeholder`),name:`title`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.icon.title`),prop:[`icon`]},{default:A(()=>[u(T(ve),{modelValue:T(a).icon,"onUpdate:modelValue":t[2]||=e=>T(a).icon=e,placeholder:T(i)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.order.title`),prop:[`order`]},{default:A(()=>[u(T(G),{modelValue:T(a).order,"onUpdate:modelValue":t[3]||=e=>T(a).order=e,placeholder:T(i)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.showTopBar.title`),prop:[`showTopBar`]},{default:A(()=>[u(T(ie),{modelValue:T(a).showTopBar,"onUpdate:modelValue":t[4]||=e=>T(a).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),u(T(W),{label:T(i)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:A(()=>[u(T(ct),{modelValue:T(a).displays,"onUpdate:modelValue":t[5]||=e=>T(a).displays=e,placeholder:T(i)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),u(T(P),{size:`small`,class:`block mt-1 text-gray-500`},{default:A(()=>[c(k(T(i)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Zt=p({name:`SelectPagePlugin`,__name:`select-page-plugin`,props:{modelValue:{}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,a=n,{t:o}=g(),{plugins:s,options:c}=et(),l=h(r.modelValue),d=i(()=>s.value.find(e=>(e?.elements??[]).some(e=>e.type===l.value))),p=i(()=>(d.value?.elements??[]).find(e=>e.type===l.value));return x(()=>l.value,e=>{a(`update:modelValue`,e)}),(t,n)=>(m(),e(j,null,[u(T(W),{label:T(o)(`dashboardModule.fields.pages.plugin.title`),"label-position":`top`},{default:A(()=>[u(T(De),{modelValue:l.value,"onUpdate:modelValue":n[0]||=e=>l.value=e,placeholder:T(o)(`dashboardModule.fields.pages.plugin.placeholder`),name:`plugin`,filterable:``},{default:A(()=>[(m(!0),e(j,null,C(T(c),e=>(m(),f(T(Oe),{key:e.value,label:e.label,value:e.value,disabled:e.disabled},null,8,[`label`,`value`,`disabled`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),p.value?(m(),f(T(Ee),{key:0,description:p.value.description??d.value?.description,closable:!1,"show-icon":``,type:`info`},null,8,[`description`])):D(``,!0)],64))}}),Qt=p({name:`TileAddForm`,__name:`tile-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Je.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0},type:{}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:i}=g(),{model:a,formEl:o,formChanged:s,submit:c,formResult:l}=$e({id:n.id,type:n.type,parent:n.parent,parentId:n.parentId,onlyDraft:n.onlyDraft}),d=b({row:[{required:!0,message:i(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:i(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}]});return x(()=>l.value,async e=>{r(`update:remote-form-result`,e)}),x(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),c().catch(()=>{}))}),x(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),x(()=>s.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(m(),f(T(Te),{ref_key:`formEl`,ref:o,model:T(a),rules:d,"label-position":`top`,"status-icon":``},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.tiles.id.title`),prop:[`id`]},{default:A(()=>[u(T(F),{modelValue:T(a).id,"onUpdate:modelValue":t[0]||=e=>T(a).id=e,placeholder:T(i)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),n.withPosition?(m(),f(T(Me),{key:0},{default:A(()=>[u(T(Ne),{span:12},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.tiles.row.title`),prop:[`row`]},{default:A(()=>[u(T(G),{modelValue:T(a).row,"onUpdate:modelValue":t[1]||=e=>T(a).row=e,placeholder:T(i)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),u(T(Ne),{span:12},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.tiles.col.title`),prop:[`col`]},{default:A(()=>[u(T(G),{modelValue:T(a).col,"onUpdate:modelValue":t[2]||=e=>T(a).col=e,placeholder:T(i)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):D(``,!0),n.withSize?(m(),f(T(Me),{key:1},{default:A(()=>[u(T(Ne),{span:12},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.tiles.rowSpan.title`),prop:[`rowSpan`]},{default:A(()=>[u(T(G),{modelValue:T(a).rowSpan,"onUpdate:modelValue":t[3]||=e=>T(a).rowSpan=e,placeholder:T(i)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),u(T(Ne),{span:12},{default:A(()=>[u(T(W),{label:T(i)(`dashboardModule.fields.tiles.colSpan.title`),prop:[`colSpan`]},{default:A(()=>[u(T(G),{modelValue:T(a).colSpan,"onUpdate:modelValue":t[4]||=e=>T(a).colSpan=e,placeholder:T(i)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):D(``,!0)]),_:1},8,[`model`,`rules`]))}}),$t=p({name:`SelectTilePlugin`,__name:`select-tile-plugin`,props:{modelValue:{}},emits:[`update:modelValue`],setup(t,{emit:n}){let r=t,a=n,{t:o}=g(),{plugins:s,options:c}=tt(),l=h(r.modelValue),d=i(()=>s.value.find(e=>(e.elements??[]).some(e=>e.type===l.value))),p=i(()=>(d.value?.elements??[]).find(e=>e.type===l.value));return x(()=>l.value,e=>{a(`update:modelValue`,e)}),(t,n)=>(m(),e(j,null,[u(T(W),{label:T(o)(`dashboardModule.fields.tiles.plugin.title`),"label-position":`top`},{default:A(()=>[u(T(De),{modelValue:l.value,"onUpdate:modelValue":n[0]||=e=>l.value=e,placeholder:T(o)(`dashboardModule.fields.tiles.plugin.placeholder`),name:`plugin`,filterable:``},{default:A(()=>[(m(!0),e(j,null,C(T(c),e=>(m(),f(T(Oe),{key:e.value,label:e.label,value:e.value,disabled:e.disabled},null,8,[`label`,`value`,`disabled`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),p.value?(m(),f(T(Ee),{key:0,description:p.value.description??d.value?.description,closable:!1,"show-icon":``,type:`info`},null,8,[`description`])):D(``,!0)],64))}});export{Yt as a,It as c,Xt as i,Qt as n,Jt as o,Zt as r,Wt as s,$t as t};
@@ -1 +0,0 @@
1
- import"./composables-Cu-tDLXA.js";
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Gr as n,Si as r,T as i,bi as a,ci as o,n as s}from"./icon-with-child-CgZMNB3F.js";import{Er as c,Vt as l,aa as u,b as d,c as f,d as p,f as m,g as h,gt as g,it as _,o as v,ot as y,p as b,yr as x,yt as S}from"./common-CoPMwt15.js";import{t as C}from"./dist-DJgPCOr0.js";import{t as w}from"./keys-DExX7OfU.js";var T=e=>{let n=d().getStore(w),{tokenRefreshTriggers:i}=u(n),a=h(),s=r([]),c=t(()=>e.value===null?null:n?.findById(e.value)??null),l=t(()=>e.value===null?!1:n?.getting(e.value)??!1),f=async()=>{if(e.value!==null)try{await n?.get({id:e.value})}catch(e){a.error(`Failed to fetch display:`,e)}},p=async()=>{if(e.value!==null)try{let t=await n?.getTokens({id:e.value});s.value=t??[]}catch(e){a.error(`Failed to fetch display tokens:`,e),s.value=[]}};return x(t(()=>{if(e.value===null||!n)return 0;let t=i.value;return!t||typeof t!=`object`?0:t[e.value]??0}),async()=>{if(e.value!==null)try{await p()}catch(e){a.error(`Failed to refresh tokens:`,e)}},{debounce:300}),o(()=>e.value,async e=>{if(e!==null&&n?.findById(e)===null)try{await f()}catch(e){a.error(`Failed to fetch display on id change:`,e)}},{immediate:!0}),{display:c,tokens:s,isLoading:l,fetchDisplay:f,fetchTokens:p,revokeToken:async()=>{if(e.value===null)return!1;let t=await n?.revokeToken({id:e.value});return t&&(s.value=[]),t??!1}}},E=p(),D=`displays`,O=`displays-module`,k=`DisplaysModule.`,A=l,j=function(e){return e.DISPLAY_CREATED=`DisplaysModule.Display.Created`,e.DISPLAY_UPDATED=`DisplaysModule.Display.Updated`,e.DISPLAY_DELETED=`DisplaysModule.Display.Deleted`,e.DISPLAY_TOKEN_REVOKED=`DisplaysModule.Display.TokenRevoked`,e}({}),M=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),N={DISPLAYS:`displays_module-displays`,DISPLAYS_EDIT:`displays_module-displays_edit`,DISPLAY:`displays_module-display`,DISPLAY_EDIT:`displays_module-display_edit`,DISPLAY_TOKENS:`displays_module-display_tokens`},P=[{value:15,labelKey:`15s`},{value:30,labelKey:`30s`},{value:60,labelKey:`1min`},{value:120,labelKey:`2min`},{value:300,labelKey:`5min`},{value:600,labelKey:`10min`},{value:1800,labelKey:`30min`},{value:0,labelKey:`never`}],F=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DisplaysException`,this.exception=t}},I=class extends F{constructor(e,t=null){super(e,t),this.name=`DisplaysValidationException`}},L=class extends F{code;constructor(e,t=null,n=null){super(e,n),this.name=`DisplaysApiException`,this.code=t}},R=({display:t,messages:s})=>{let c=d().getStore(w),{t:l}=i(),u=m(),p=r(M.NONE),h,g=a({id:t.id,name:t.name,spaceId:t.spaceId,unitSize:t.unitSize,rows:t.rows,cols:t.cols,brightness:t.brightness,screenLockDuration:t.screenLockDuration,darkMode:t.darkMode,screenSaver:t.screenSaver,screenPowerOff:t.screenPowerOff,speaker:t.speaker,speakerVolume:t.speakerVolume,microphone:t.microphone,microphoneVolume:t.microphoneVolume,homeMode:t.homeMode,homePageId:t.homePageId,numberFormat:t.numberFormat??``,temperatureUnit:t.temperatureUnit??``,windSpeedUnit:t.windSpeedUnit??``,pressureUnit:t.pressureUnit??``,precipitationUnit:t.precipitationUnit??``,distanceUnit:t.distanceUnit??``,weatherLocationId:t.weatherLocationId??null}),_=f(e(g)),v=r(void 0),y=r(!1),b=async()=>{let n=s&&s.error?s.error:l(`displaysModule.messages.notEdited`,{display:t.name||t.macAddress});if(!v.value)throw new I(`Form element is not available`);if(v.value.clearValidate(),!await v.value.validate())throw new I(`Form not valid`);p.value=M.WORKING;try{let e={name:g.name||null,spaceId:g.spaceId,unitSize:g.unitSize,rows:g.rows,cols:g.cols,brightness:g.brightness,screenLockDuration:g.screenLockDuration,darkMode:g.darkMode,screenSaver:g.screenSaver,screenPowerOff:g.screenPowerOff,homeMode:g.homeMode,homePageId:g.homeMode===`explicit`?g.homePageId:null,numberFormat:g.numberFormat||null,temperatureUnit:g.temperatureUnit||null,windSpeedUnit:g.windSpeedUnit||null,pressureUnit:g.pressureUnit||null,precipitationUnit:g.precipitationUnit||null,distanceUnit:g.distanceUnit||null,weatherLocationId:g.weatherLocationId||null};t.audioOutputSupported&&(e.speaker=g.speaker,e.speakerVolume=g.speakerVolume),t.audioInputSupported&&(e.microphone=g.microphone,e.microphoneVolume=g.microphoneVolume),await c.edit({id:t.id,data:e})}catch(e){throw p.value=M.ERROR,h=window.setTimeout(x,2e3),e instanceof L&&e.code===422?u.error(e.message):u.error(n),e}return p.value=M.OK,h=window.setTimeout(x,2e3),u.success(l(s&&s.success?s.success:`displaysModule.messages.edited`,{display:t.name||t.macAddress})),y.value=!1,_=f(e(g)),`saved`},x=()=>{h!==void 0&&(window.clearTimeout(h),h=void 0),p.value=M.NONE};return o(g,()=>{y.value=!(0,E.isEqual)(e(g),_)}),n(()=>{x()}),{model:g,formEl:v,formChanged:y,submit:b,clear:x,formResult:p}},z=()=>{let e=d().getStore(w),{firstLoad:n}=u(e),r=t(()=>e?.findAll()??[]);return{displays:r,isLoading:t(()=>e?.fetching()??!1),isLoaded:t(()=>n.value),fetchDisplays:async()=>{await e?.fetch()},options:t(()=>r.value.map(e=>({value:e.id,label:e.name||e.macAddress})))}},B=g({search:S().optional(),darkMode:_([`all`,`enabled`,`disabled`]).default(`all`),screenSaver:_([`all`,`enabled`,`disabled`]).default(`all`),state:_([`all`,`offline`,`online`]).default(`all`),states:y(_([`connected`,`disconnected`,`lost`,`unknown`]))}),V={search:void 0,darkMode:`all`,screenSaver:`all`,state:`all`,states:[]},H={by:`name`,dir:`asc`},U=()=>{let e=d().getStore(w),{firstLoad:n,semaphore:i}=u(e),{filters:a,sort:s,pagination:c,reset:l}=v({key:`${O}:displays:list`,filters:{schema:B,defaults:V},sort:{defaults:[H]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=t(()=>a.value.search!==V.search||!(0,E.isEqual)(a.value.darkMode,V.darkMode)||!(0,E.isEqual)(a.value.screenSaver,V.screenSaver)||!(0,E.isEqual)(a.value.state,V.state)||!(0,E.isEqual)(a.value.states,V.states)),p=r(c.value.size||10),m=r(c.value.page||1),h=r(s.value.length>0?s.value[0]?.by:void 0),g=r(s.value.length>0?s.value[0]?.dir??null:null),_=t(()=>C(e.findAll().filter(e=>!e.draft&&(!a.value.search||e.id.toLowerCase().includes(a.value.search.toLowerCase())||e.name?.toLowerCase().includes(a.value.search.toLowerCase())||e.macAddress.toLowerCase().includes(a.value.search.toLowerCase())||e.version.toLowerCase().includes(a.value.search.toLowerCase()))&&(a.value.darkMode===`all`||a.value.darkMode===`enabled`&&e.darkMode||a.value.darkMode===`disabled`&&!e.darkMode)&&(a.value.screenSaver===`all`||a.value.screenSaver===`enabled`&&e.screenSaver||a.value.screenSaver===`disabled`&&!e.screenSaver)&&(!a.value.states||a.value.states.length===0||a.value.states.includes(e.status??`unknown`))&&(a.value.state===`all`||a.value.state===`online`&&e.status===`connected`||a.value.state===`offline`&&[`disconnected`,`lost`,`unknown`].includes(e.status??`unknown`))),[e=>{switch(h.value){case`name`:return e.name||e.macAddress;case`version`:return e.version;case`screenWidth`:return e.screenWidth??0;case`status`:return e.status??`unknown`;default:return e.name||e.macAddress}}],[g.value===`asc`?`asc`:`desc`])),y=t(()=>{let e=(m.value-1)*p.value,t=e+p.value;return _.value.slice(e,t)}),b=async()=>{await e.fetch()},x=t(()=>i.value.fetching.items||!n.value),S=t(()=>n.value),T=t(()=>e.findAll().filter(e=>!e.draft).length);return o(()=>c.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),o(()=>m.value,e=>{c.value.page=e}),o(()=>p.value,e=>{c.value.size=e}),o(()=>g.value,e=>{h.value===void 0||e===null?s.value=[]:s.value=[{by:h.value,dir:e}]}),o(()=>h.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:g.value}]}),{displays:_,displaysPaginated:y,totalRows:T,areLoading:x,loaded:S,fetchDisplays:b,filters:a,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:l}},W=()=>{let e=d().getStore(w),{t}=i(),n=m();return{remove:async r=>{let i=e?.findById(r);if(!i){n.error(t(`displaysModule.messages.notFound`));return}try{await c.confirm(t(`displaysModule.messages.confirmRemove`,{name:i.name||i.macAddress}),t(`displaysModule.headings.removeDisplay`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`}),await e.remove({id:r}),n.success(t(`displaysModule.messages.removed`))}catch{}},bulkRemove:async r=>{if(r.length!==0){try{await c.confirm(t(`displaysModule.messages.confirmBulkRemove`,{count:r.length}),t(`displaysModule.headings.removeBulkDisplays`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`})}catch{return}try{let i=await e.bulkRemove({ids:r.map(e=>e.id)});i.succeeded.length>0&&n.success(t(`displaysModule.messages.bulkRemoved`,{count:i.succeeded.length})),i.failed.length>0&&n.error(t(`displaysModule.messages.bulkRemoveFailed`,{count:i.failed.length}))}catch{n.error(t(`displaysModule.messages.bulkRemoveFailed`,{count:r.length}))}}}}},G=()=>{let e=b(),n=h(),i=r(null),a=r(!1),o=r(!1),c=t(()=>i.value?.available??!1),l=t(()=>i.value?.active??!1),u=t(()=>i.value?.deploymentMode??`combined`),d=t(()=>i.value?.remainingTime??null),f=t(()=>{let e=d.value;return e===null?0:Math.ceil(e/1e3)}),p=t(()=>{let e=f.value;return e<=0?`0:00`:`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}),m=async()=>{try{a.value=!0;let{data:t}=await e.client.GET(`/${s}/${D}/displays/permit-join/status`);if(t?.data){let e=t.data;i.value={active:e.active??!1,expiresAt:e.expires_at?new Date(e.expires_at):null,remainingTime:e.remaining_time??null,deploymentMode:e.deployment_mode??`combined`,available:e.available??!1}}}catch(e){throw n.error(`Failed to fetch permit join status`,e),new F(`Failed to fetch permit join status`)}finally{a.value=!1}};return{status:i,loading:a,activating:o,isAvailable:c,isActive:l,deploymentMode:u,remainingTime:d,remainingTimeSeconds:f,remainingTimeFormatted:p,fetchStatus:m,activate:async()=>{try{o.value=!0,await e.client.POST(`/${s}/${D}/displays/permit-join`),await m()}catch(e){throw n.error(`Failed to activate permit join`,e),new F(`Failed to activate permit join`)}finally{o.value=!1}},deactivate:async()=>{try{o.value=!0,await e.client.DELETE(`/${s}/${D}/displays/permit-join`,{}),await m()}catch(e){throw n.error(`Failed to deactivate permit join`,e),new F(`Failed to deactivate permit join`)}finally{o.value=!1}}}};export{T as _,R as a,I as c,D as d,A as f,P as g,N as h,z as i,k as l,M as m,W as n,L as o,j as p,U as r,F as s,G as t,O as u};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a,n as o}from"./icon-with-child-CgZMNB3F.js";import{Er as s,a as c,aa as l,b as u,bt as d,c as f,ct as p,d as m,f as h,ft as g,g as _,gt as v,ht as y,ot as b,p as x,st as S,xt as C,yt as w}from"./common-CoPMwt15.js";import{r as T}from"./config-Ca3KDCt_.js";import{r as E}from"./usePlugins-DQ7X6S0I.js";import{t as D}from"./dist-DJgPCOr0.js";import{t as O}from"./useConfigModule-BnX1QBwr.js";import{i as k,l as A,n as j,o as M,s as N}from"./useLocation-DapxyrCs.js";import{a as P,n as F,o as I}from"./weather.constants-_S0I_w_Q.js";import{t as L}from"./types-Bb21yq0P.js";var R=()=>{let e=u().getStore(N),{data:n,semaphore:r}=l(e);return{weatherDay:t(()=>n.value),isLoading:t(()=>n.value===null&&r.value.getting),fetchWeatherDay:async()=>{await e.get()}}},z=()=>{let e=u().getStore(A),{firstLoad:n,semaphore:r}=l(e);return{locations:t(()=>e.findAll().filter(e=>!e.draft)),areLoading:t(()=>r.value.fetching.items),loaded:t(()=>n.value),fetchLocations:async()=>{await e.fetch()}}},B={search:void 0,types:[],primary:`all`},V=()=>{let e=u().getStore(A),{firstLoad:r,semaphore:i}=l(e),{configModule:o}=O({type:P}),s=t(()=>o.value?.primaryLocationId??null),c=n(10),d=n(1),f=n({...B}),p=t(()=>f.value.search!==B.search||f.value.types.length>0||f.value.primary!==B.primary),m=n(`name`),h=n(`ascending`),g=t(()=>{let t=e.findAll().filter(e=>!(e.draft||f.value.search&&!e.name.toLowerCase().includes(f.value.search.toLowerCase())||f.value.types.length>0&&!f.value.types.includes(e.type)||f.value.primary===`primary`&&e.id!==s.value||f.value.primary===`secondary`&&e.id===s.value));return h.value===null?t:D(t,[e=>e[m.value]??``],[h.value===`ascending`?`asc`:`desc`])}),_=t(()=>{let e=(d.value-1)*c.value,t=e+c.value;return g.value.slice(e,t)}),v=async()=>{await e.fetch()},y=t(()=>i.value.fetching.items||!r.value),b=t(()=>r.value),x=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>f.value,()=>{d.value=1},{deep:!0}),{locations:g,locationsPaginated:_,totalRows:x,areLoading:y,loaded:b,fetchLocations:v,filters:f,filtersActive:p,paginateSize:c,paginatePage:d,sortBy:m,sortDir:h,resetFilter:()=>{f.value={...B}},primaryLocationId:s}},H=()=>{let e=x(),r=_(),i=n({}),a=n(!1),s=n(!1),c=n(!1);return{weatherByLocation:t(()=>i.value),isLoading:a,hasError:s,fetchCompleted:c,fetchLocationsWeather:async()=>{if(!a.value){a.value=!0,s.value=!1;try{let{data:t,error:n,response:a}=await e.client.GET(`/${o}/${I}/weather`,{});if(t!==void 0&&Array.isArray(t.data)){let e={};for(let n of t.data)if(n.location_id)try{let t=j(n.current),r=n.location;e[n.location_id]={current:t,locationName:r?.name??``,country:r?.country??null}}catch(e){r.error(`[WEATHER] Failed to transform weather data for location ${n.location_id}`,e)}i.value=e,Object.keys(e).length===0&&(s.value=!0);return}let c=`Failed to fetch locations weather.`;throw n&&(c=n.message??c),new k(c,a?.status??500)}catch(e){if(s.value=!0,e instanceof k)throw e;r.error(`[WEATHER] Failed to fetch locations weather`,e)}finally{a.value=!1,c.value=!0}}}}},U=()=>{let{t:e}=r(),t=h(),n=u().getStore(A);return{add:async e=>n.add(e),edit:async e=>n.edit(e),remove:async r=>{let i=n.findById(r);if(i)try{await s.confirm(e(`weatherModule.messages.locations.confirmDeleteLocation`,{name:i.name}),e(`weatherModule.headings.deleteLocation`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});try{await n.remove({id:r}),t.success(e(`weatherModule.messages.locations.deleted`))}catch{t.error(e(`weatherModule.messages.locations.notDeleted`))}}catch{t.info(e(`weatherModule.messages.locations.deleteCanceled`,{location:i.name}))}},bulkRemove:async r=>{if(r.length!==0){try{await s.confirm(e(`weatherModule.messages.locations.confirmBulkDelete`,{count:r.length}),e(`weatherModule.headings.bulkDeleteLocations`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`})}catch{t.info(e(`weatherModule.messages.locations.bulkDeleteCanceled`));return}try{let i=await n.bulkRemove({ids:r.map(e=>e.id)});i.succeeded.length>0&&t.success(e(`weatherModule.messages.locations.bulkDeleted`,{count:i.succeeded.length})),i.failed.length>0&&t.error(e(`weatherModule.messages.locations.bulkDeleteFailed`,{count:i.failed.length}))}catch{t.error(e(`weatherModule.messages.locations.bulkDeleteFailed`,{count:r.length}))}}}}},W=m(),G=v({id:L,draft:S().default(!1),type:w().trim().nonempty(),name:w().trim().nonempty(),order:y().int().nonnegative().default(0),createdAt:d([w().datetime({offset:!0}),p()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:d([w().datetime({offset:!0}),p()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)}).catchall(C());v({fetching:v({items:S().default(!1),item:b(L)}),creating:b(L),updating:b(L),deleting:b(L)}),v({id:L,type:w().trim().nonempty(),data:g({})}),v({id:L,data:v({type:w().trim().nonempty(),name:w().trim().nonempty()}).catchall(C())}),v({id:L}),v({id:L});var K=v({id:L.optional().default(c()),draft:S().optional().default(!1),data:v({type:w().trim().nonempty(),name:w().trim().nonempty()}).catchall(C())}),q=v({id:L,data:v({type:w().trim().nonempty(),name:w().trim().optional()}).catchall(C())});v({id:L}),v({ids:b(L).nonempty()});var J=v({succeeded:b(w()),failed:b(v({id:w(),reason:w()}))});v({id:L});var Y=v({id:w().uuid().optional(),type:w().trim().nonempty(),name:w().trim().nonempty()}).passthrough(),X=v({type:w().trim().nonempty(),name:w().trim().nonempty().optional()}).passthrough();v({id:w().uuid(),type:w(),name:w().trim().nonempty(),created_at:w(),updated_at:w().nullable().optional()}),v({id:L,type:w().trim().nonempty(),name:w().trim().min(1,`Name is required`)});var Z=v({name:w().trim().min(1,`Name is required`)}),Q=G,ee=Y,te=X,ne=({id:t})=>{let o=u().getStore(A),{t:s}=r(),c=h(),l=_(),d=n(F.NONE),p,m=i({name:o.findById(t.value)?.name??``}),g=f(e(m)),v=n(void 0),y=n(!1),b=async()=>{if(v.value.clearValidate(),!await v.value.validate())throw new M(`Form not valid`);let n=Z.safeParse(m);if(!n.success)throw l.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new M(`Failed to validate update location model.`);d.value=F.WORKING;let r=o.findById(t.value);if(!r)throw new M(`Location not found.`);let i=s(`weatherModule.messages.locations.notUpdated`,{location:m.name});try{await o.edit({id:t.value,data:{type:r.type,...n.data}}),d.value=F.OK,c.success(s(`weatherModule.messages.locations.updated`,{location:m.name})),Object.assign(g,f(e(m))),y.value=!1}catch(e){throw d.value=F.ERROR,p=window.setTimeout(x,2e3),e instanceof k&&e.code===422?c.error(e.message):c.error(i),e}},x=()=>{window.clearTimeout(p),d.value=F.NONE};return a(()=>m,()=>{y.value=!(0,W.isEqual)(e(m),g)},{deep:!0}),a(()=>o.findById(t.value),t=>{t&&!y.value&&(m.name=t.name,Object.assign(g,f(e(m))))}),{model:m,formEl:v,formChanged:y,submit:b}},$=()=>{let e=E(),{enabled:n}=T(),r=[`locationAddForm`,`locationEditForm`],i=[`locationSchema`,`locationAddFormSchema`,`locationEditFormSchema`,`locationCreateReqSchema`,`locationUpdateReqSchema`],a=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`weather-module`)))return!1;let t=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),n=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return t||n}):!1));return{plugins:a,options:t(()=>D(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)));if(n)return n}}}},re=({type:e})=>{let{getByType:n}=$(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`))))}};export{R as _,Q as a,G as c,J as d,q as f,z as g,V as h,ee as i,X as l,H as m,$ as n,te as o,U as p,ne as r,Y as s,re as t,K as u};
@@ -1 +0,0 @@
1
- import{Er as e}from"./icon-with-child-CgZMNB3F.js";import{aa as t,b as n}from"./common-CoPMwt15.js";import{t as r}from"./keys-CIqUg3Jv.js";import"./usePersonalTokens-By_T4BUP.js";var i=()=>{let i=n().getStore(r),{profile:a}=t(i);return{profile:e(()=>a.value),isSignedIn:e(()=>i.isSignedIn())}};export{i as t};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-QTnfLwEv.js";import{Er as e,Si as t,T as n,ci as r,ki as i,n as a,yi as o}from"./icon-with-child-CgZMNB3F.js";import{Er as s,Mt as c,Nt as l,aa as u,b as d,f,g as p,gt as m,it as h,jt as g,kn as _,o as v,p as y,yt as b}from"./common-CoPMwt15.js";import{t as x}from"./dist-DJgPCOr0.js";import{s as S}from"./system.constants-BvSIFqdm.js";import{n as C}from"./logs-entries.transformers-lH5ngVX4.js";import"./useExtensions-Bk5NXQMd.js";var w=`extensions-module`,T={EXTENSIONS:`extensions_module-extensions`,EXTENSION:`extensions_module-extension`,EXTENSION_DETAIL:`extensions_module-extension-detail`},E=`table`,D=(e,t,n)=>`${e}:${t}:${n}`,O=t=>{let n=d().getStore(g),{semaphore:r,firstLoad:a}=u(n);return{extension:e(()=>n.findByType(i(t.type))),isLoading:e(()=>r.value.fetching.items||!a.value),fetchExtension:async()=>{await n.fetch()}}},k=m({search:b().optional(),kind:h([`all`,_.module,_.plugin]).default(`all`),enabled:h([`all`,`enabled`,`disabled`]).default(`all`),isCore:h([`all`,`core`,`addon`]).default(`all`)}),A={search:void 0,kind:`all`,enabled:`all`,isCore:`all`},j={by:`name`,dir:`asc`},M=()=>{let n=d().getStore(g),{semaphore:i}=u(n),{filters:a,sort:o,pagination:s,viewMode:c,reset:l}=v({key:`${w}:extensions:list`,filters:{schema:k,defaults:A},sort:{defaults:[j]},pagination:{defaults:{page:1,size:10}},viewMode:{options:[`table`,`cards`],default:E},syncQuery:!0,version:1}),f=e({get:()=>c.value??`table`,set:e=>{c.value=e}}),p=e(()=>a.value.search!==A.search||a.value.kind!==A.kind||a.value.enabled!==A.enabled||a.value.isCore!==A.isCore),m=t(s.value.size||10),h=t(s.value.page||1),y=t(o.value.length>0?o.value[0]?.by:void 0),b=t(o.value.length>0?o.value[0]?.dir??null:null),S=e(()=>Object.values(n.data)),C=e(()=>x(S.value.filter(e=>(!a.value.search||e.type.toLowerCase().includes(a.value.search.toLowerCase())||e.name.toLowerCase().includes(a.value.search.toLowerCase())||e.description?.toLowerCase().includes(a.value.search.toLowerCase()))&&(a.value.kind===`all`||e.kind===a.value.kind)&&(a.value.enabled===`all`||a.value.enabled===`enabled`&&e.enabled||a.value.enabled===`disabled`&&!e.enabled)&&(a.value.isCore===`all`||a.value.isCore===`core`&&e.isCore||a.value.isCore===`addon`&&!e.isCore)),[e=>y.value===`enabled`?+!!e.enabled:e[y.value]??``],[b.value===`asc`?`asc`:`desc`])),T=e(()=>C.value),D=e(()=>{let e=(h.value-1)*m.value,t=e+m.value;return T.value.slice(e,t)}),O=e(()=>C.value.filter(e=>e.kind===_.module)),M=e(()=>C.value.filter(e=>e.kind===_.plugin)),N=async()=>{await n.fetch()},P=e(()=>i.value.fetching.items),F=e(()=>T.value.length);return r(()=>s.value,e=>{h.value=e.page??1,m.value=e.size??10},{deep:!0}),r(()=>h.value,e=>{s.value.page=e}),r(()=>m.value,e=>{s.value.size=e}),r(()=>b.value,e=>{y.value===void 0||e===null?o.value=[]:o.value=[{by:y.value,dir:e}]}),r(()=>y.value,e=>{e===void 0||b.value===null?o.value=[]:o.value=[{by:e,dir:b.value}]}),{extensions:T,extensionsPaginated:D,modules:O,plugins:M,totalRows:F,areLoading:P,fetchExtensions:N,filters:a,filtersActive:p,paginateSize:m,paginatePage:h,sortBy:y,sortDir:b,viewMode:f,resetFilter:l}},N=()=>{let{t:e}=n(),t=d(),r=f(),i=t.getStore(g),a=t.getStore(c);return{toggleEnabled:async(t,n)=>{try{return await i.update({type:t,data:{enabled:n}}),r.success(e(n?`extensionsModule.messages.extensionEnabled`:`extensionsModule.messages.extensionDisabled`)),n&&setTimeout(()=>{a.fetch().then(()=>{let e=a.findAll().filter(e=>e.extensionType===t);for(let t of e)t.lastError&&r.warning(t.lastError)}).catch(()=>{})},1500),!0}catch(t){return t instanceof l&&t.code===400?r.error(e(`extensionsModule.messages.notConfigurableError`)):r.error(e(`extensionsModule.messages.updateError`)),!1}},bulkEnable:async t=>{let n=t.filter(e=>e.canToggleEnabled&&!e.enabled);if(n.length===0){r.info(e(`extensionsModule.messages.noExtensionsToEnable`));return}try{await s.confirm(e(`extensionsModule.messages.confirmBulkEnable`,{count:n.length}),e(`extensionsModule.headings.bulkEnable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`info`})}catch{r.info(e(`extensionsModule.messages.bulkEnableCanceled`));return}try{let t=await i.bulkSetEnabled({types:n.map(e=>e.type),enabled:!0});t.succeeded.length>0&&r.success(e(`extensionsModule.messages.bulkEnabled`,{count:t.succeeded.length})),t.failed.length>0&&r.error(e(`extensionsModule.messages.bulkEnableFailed`,{count:t.failed.length}))}catch{r.error(e(`extensionsModule.messages.bulkEnableFailed`,{count:n.length}))}},bulkDisable:async t=>{let n=t.filter(e=>e.canToggleEnabled&&e.enabled);if(n.length===0){r.info(e(`extensionsModule.messages.noExtensionsToDisable`));return}try{await s.confirm(e(`extensionsModule.messages.confirmBulkDisable`,{count:n.length}),e(`extensionsModule.headings.bulkDisable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`warning`})}catch{r.info(e(`extensionsModule.messages.bulkDisableCanceled`));return}try{let t=await i.bulkSetEnabled({types:n.map(e=>e.type),enabled:!1});t.succeeded.length>0&&r.success(e(`extensionsModule.messages.bulkDisabled`,{count:t.succeeded.length})),t.failed.length>0&&r.error(e(`extensionsModule.messages.bulkDisableFailed`,{count:t.failed.length}))}catch{r.error(e(`extensionsModule.messages.bulkDisableFailed`,{count:n.length}))}}}},P=n=>{let s=y(),c=p(),l=t({}),u=t(!1),d=t(!1),f=t(!1),m=t(void 0),h=t(!1),g=t([]),_=t(`all`),v=null,b={"1h":3600*1e3,"6h":360*60*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,all:0},x=e(()=>Object.values(l.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),w=e(()=>{let e=x.value;if(g.value.length>0&&(e=e.filter(e=>g.value.includes(e.type))),_.value!==`all`){let t=Date.now()-b[_.value];e=e.filter(e=>new Date(e.ts).getTime()>=t)}return e}),T=e(()=>g.value.length>0||_.value!==`all`),E=()=>{g.value=[],_.value=`all`},D=async()=>{let e=i(n.extensionType);v=e,d.value=!0;try{let{data:t,error:n}=await s.client.GET(`/${a}/${S}/logs`,{params:{query:{extension:e,limit:50}}});if(v!==e)return;if(t!==void 0){let e=Object.fromEntries(t.data.map(e=>{let t=C(e);return[t.id,t]}));l.value=e,f.value=!0,u.value=t.metadata.has_more,m.value=t.metadata.next_cursor}else n&&c.error(`Failed to fetch extension logs:`,n)}catch(t){v===e&&c.error(`Error fetching extension logs:`,t)}finally{v===e&&(d.value=!1)}},O=async()=>{if(d.value||!u.value||!m.value)return;let e=i(n.extensionType),t=m.value;d.value=!0;try{let{data:n,error:r}=await s.client.GET(`/${a}/${S}/logs`,{params:{query:{extension:e,after_id:t,limit:50}}});if(v!==e)return;if(n!==void 0){let e=Object.fromEntries(n.data.map(e=>{let t=C(e);return[t.id,t]}));l.value={...l.value,...e},u.value=n.metadata.has_more,m.value=n.metadata.next_cursor}else r&&c.error(`Failed to load more extension logs:`,r)}catch(t){v===e&&c.error(`Error loading more extension logs:`,t)}finally{v===e&&(d.value=!1)}},k=async()=>{l.value={},m.value=void 0,u.value=!1,f.value=!1,await D()},A=null;return r(()=>h.value,e=>{A&&=(clearInterval(A),null),e&&(A=setInterval(()=>void D(),3e3))}),o(()=>{A&&=(clearInterval(A),null)}),r(()=>i(n.extensionType),()=>{k()}),{logs:w,hasMore:u,isLoading:d,loaded:f,live:h,filterLevels:g,filterTimeRange:_,filtersActive:T,clearFilters:E,fetchLogs:D,loadMoreLogs:O,refreshLogs:k}},F=()=>{let t=d().getStore(c),{data:n,semaphore:r}=u(t);return{services:e(()=>Object.values(n.value)),areLoading:e(()=>r.value.fetching.items),fetchServices:async()=>{await t.fetch()}}};export{O as a,T as c,M as i,P as n,D as o,N as r,w as s,F as t};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a}from"./icon-with-child-CgZMNB3F.js";import{Er as o,aa as s,b as c,c as l,d as u,f as d,g as f,gt as p,ht as m,o as h,ot as g,st as _,yt as v}from"./common-CoPMwt15.js";import{r as y}from"./config-Ca3KDCt_.js";import{r as b}from"./usePlugins-DQ7X6S0I.js";import{t as x}from"./schemas.utils-meRZzKVK.js";import{t as S}from"./dist-DJgPCOr0.js";import{a as C,c as w,d as T,i as E,n as D,o as O,r as k,t as A}from"./keys-DgS2vm-E.js";import{i as j,t as M}from"./types-DNTr_87G.js";import{n as N}from"./useDataSources-CP_5chvd.js";import"./usePage-CedKpB5s.js";var P=u(),F=()=>{let e=b(),{enabled:n}=y(),r=[`pageDetail`,`pageAddForm`,`pageEditForm`],i=[`pageSchema`,`pageAddFormSchema`,`pageEditFormSchema`,`pageCreateReqSchema`,`pageUpdateReqSchema`],a=[`configure`],o=t(()=>e.getPlugins().filter(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let t=a.some(t=>e.routes&&t in e.routes)??!0;return(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let n=r.length===0||!!e.components&&r.some(t=>e.components&&t in e.components),a=i.length===0||!!e.schemas&&i.some(t=>e.schemas&&t in e.schemas);return n||a||t})}));return{plugins:o,options:t(()=>S(o.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`dashboard-module`)).map(t=>({value:t.type,label:t.name?.trim()?t.name:e.name,disabled:!n(e.type)}))),[e=>e.label],[`asc`])),getByPluginType:e=>o.value.find(t=>t.type===e),getByType:e=>o.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)))),getElement:e=>{for(let t of o.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)));if(n)return n}}}},I=()=>{let e=c().getStore(D),{firstLoad:n,semaphore:r}=s(e);return{pages:t(()=>e.findAll().filter(e=>!e.draft)),areLoading:t(()=>!!r.value.fetching.items||!n.value),loaded:t(()=>n.value),fetchPages:async()=>{await e.fetch()}}},L={search:void 0,types:[],displays:[]},ee={by:`title`,dir:`asc`},te=()=>{let e=c().getStore(D),{firstLoad:r,semaphore:i}=s(e),{filters:o,sort:l,pagination:u,reset:d}=h({key:`${w}:pages:list`,filters:{schema:j,defaults:L},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),f=t(()=>o.value.search!==L.search||!(0,P.isEqual)(o.value.types,L.types)||!(0,P.isEqual)(o.value.displays,L.displays)),p=n(u.value.size||10),m=n(u.value.page||1),g=n(l.value.length>0?l.value[0]?.by:void 0),_=n(l.value.length>0?l.value[0]?.dir??null:null),v=t(()=>S(e.findAll().filter(e=>!e.draft&&(!o.value.search||e.title.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))&&(o.value.displays.length===0||o.value.displays.includes(`all`)&&(e.displays===null||e.displays.length===0)||e.displays!==null&&e.displays.length>0&&e.displays.some(e=>o.value.displays.includes(e)))),[e=>e[g.value]??``],[_.value===`asc`?`asc`:`desc`])),y=t(()=>{let e=(m.value-1)*p.value,t=e+p.value;return v.value.slice(e,t)}),b=async()=>{await e.fetch()},x=t(()=>i.value.fetching.items||!r.value),C=t(()=>r.value),T=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>u.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),a(()=>m.value,e=>{u.value.page=e}),a(()=>p.value,e=>{u.value.size=e}),a(()=>_.value,e=>{g.value===void 0||e===null?l.value=[]:l.value=[{by:g.value,dir:e}]}),a(()=>g.value,e=>{e===void 0?l.value=[]:l.value=[{by:e,dir:_.value}]}),{pages:v,pagesPaginated:y,totalRows:T,areLoading:x,loaded:C,fetchPages:b,filters:o,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:g,sortDir:_,resetFilter:d}},R=()=>{let{t:e}=r(),t=d(),n=c().getStore(D);return{remove:async r=>{let i=n.findById(r);if(i===null)throw new C(`Something went wrong, page can't be loaded`);o.confirm(e(`dashboardModule.texts.pages.confirmRemove`,{page:i.title}),e(`dashboardModule.headings.pages.remove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await n.remove({id:i.id}),t.success(e(`dashboardModule.messages.pages.removed`,{page:i.title}))}catch(n){if(n instanceof E&&n.code===404){let n=e(`dashboardModule.messages.pages.notFound`,{page:i.title});t.error(n)}else if(n instanceof E&&n.code===422)t.error(n.message);else{let n=e(`dashboardModule.messages.pages.notRemoved`,{page:i.title});t.error(n)}}}).catch(()=>{t.info(e(`dashboardModule.messages.pages.removeCanceled`,{page:i.title}))})},bulkRemove:async r=>{if(r.length!==0){try{await o.confirm(e(`dashboardModule.texts.pages.confirmBulkRemove`,{count:r.length}),e(`dashboardModule.headings.pages.bulkRemove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`})}catch{return}try{let i=await n.bulkRemove({ids:r.map(e=>e.id)});i.succeeded.length>0&&t.success(e(`dashboardModule.messages.pages.bulkRemoved`,{count:i.succeeded.length})),i.failed.length>0&&t.error(e(`dashboardModule.messages.pages.bulkRemoveFailed`,{count:i.failed.length}))}catch{t.error(e(`dashboardModule.messages.pages.bulkRemoveFailed`,{count:r.length}))}}}}},z=({id:e})=>{let n=c().getStore(D);return{icon:t(()=>`mdi:${n.findById(e)?.icon??`view-dashboard`}`)}},B=p({id:v().uuid().optional(),type:v().trim().nonempty(),title:v().trim().nonempty(),icon:v().trim().transform(e=>e===``?null:e).nullable().optional(),order:m(),showTopBar:_().optional(),displays:g(v().uuid()).nullable().optional()}),V=p({id:v().uuid(),type:v().trim().nonempty(),title:v().trim().nonempty().optional(),icon:v().trim().transform(e=>e===``?null:e).nullable().optional(),order:m().optional(),showTopBar:_().optional(),displays:g(v().uuid()).nullable().optional()}),H=({type:e})=>{let{getByType:n}=F(),r=t(()=>n(e));return{plugin:r,element:t(()=>(r.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`))))}},U=({id:t,type:o})=>{let s=c(),{element:u}=H({type:o}),p=s.getStore(D),{t:m}=r(),h=d(),g=f(),_=n(T.NONE),v,y=i({...x(u.value?.schemas?.pageAddFormSchema||B),id:t,type:o,title:``,icon:``,order:0,showTopBar:!0}),b=l(e(y)),S=n(void 0),C=n(!1),w=async()=>{if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let e=(u.value?.schemas?.pageAddFormSchema||B).safeParse(y);if(!e.success)throw g.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create page model.`);_.value=T.WORKING;let n=m(`dashboardModule.messages.pages.notCreated`,{page:y.title});try{await p.add({id:t,draft:!1,data:{...e.data,type:o}})}catch(e){throw _.value=T.ERROR,v=window.setTimeout(k,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(n),e}return _.value=T.OK,v=window.setTimeout(k,2e3),h.success(m(`dashboardModule.messages.pages.created`,{page:y.title})),`added`},k=()=>{window.clearTimeout(v),_.value=T.NONE};return a(y,()=>{C.value=!(0,P.isEqual)(e(y),b)}),{model:y,formEl:S,formChanged:C,submit:w,clear:k,formResult:_}},W=({page:t,messages:o})=>{let s=c(),{element:u}=H({type:t.type}),p=s.getStore(D),{t:m}=r(),h=d(),g=f(),_=n(T.NONE),v,y=i(t),b=l(e(y)),x=n(void 0),S=n(!1),C=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft?m(`dashboardModule.messages.pages.notCreated`,{page:t.title}):m(`dashboardModule.messages.pages.notEdited`,{page:t.title});if(x.value.clearValidate(),!await x.value.validate())throw new O(`Form not valid`);let i=(u.value?.schemas?.pageEditFormSchema||V).safeParse(y);if(!i.success)throw g.error(`Schema validation failed with:`,i.error),new O(`Failed to validate edit page model.`);_.value=T.WORKING;try{let e;e=await p.edit({id:t.id,data:{...i.data,type:t.type}}),t.draft&&(e=await p.save({id:t.id})),e&&Object.assign(y,e)}catch(e){throw _.value=T.ERROR,v=window.setTimeout(w,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(r),e}return _.value=T.OK,v=window.setTimeout(w,2e3),n?(h.success(m(o&&o.success?o.success:`dashboardModule.messages.pages.created`,{page:t.title})),`added`):(h.success(m(o&&o.success?o.success:`dashboardModule.messages.pages.edited`,{page:t.title})),S.value=!1,b=l(e(y)),`saved`)},w=()=>{window.clearTimeout(v),_.value=T.NONE};return a(y,()=>{S.value=!(0,P.isEqual)(e(y),b)}),{model:y,formEl:x,formChanged:S,submit:C,clear:w,formResult:_}},G=e=>{let n=c().getStore(k),{firstLoad:r,semaphore:i}=s(n);return{tiles:t(()=>n.findForParent(e.parent,e.parentId)),areLoading:t(()=>i.value.fetching.items.includes(e.parentId)?!0:!r.value.includes(e.parentId)&&i.value.fetching.items.includes(e.parentId)),loaded:t(()=>r.value.includes(e.parentId)),fetchTiles:async()=>{await n.fetch({parent:{type:e.parent,id:e.parentId}})}}},K=e=>{let{t}=r(),n=d(),i=c().getStore(k);return{findById:(e,t)=>i.findById(e,t),edit:async e=>i.edit(e),save:async e=>i.save(e),remove:async r=>{let a=i.findById(e.parent,r);if(a===null)throw new C(`Something went wrong, tile can't be loaded`);o.confirm(t(`dashboardModule.texts.tiles.confirmRemove`),t(`dashboardModule.headings.tiles.remove`),{confirmButtonText:t(`dashboardModule.buttons.yes.title`),cancelButtonText:t(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await i.remove({id:a.id,parent:{type:e.parent,id:e.parentId}}),n.success(t(`dashboardModule.messages.tiles.removed`))}catch(e){if(e instanceof E&&e.code===404){let e=t(`dashboardModule.messages.tiles.notFound`);n.error(e)}else if(e instanceof E&&e.code===422)n.error(e.message);else{let e=t(`dashboardModule.messages.tiles.notRemoved`);n.error(e)}}}).catch(()=>{n.info(t(`dashboardModule.messages.tiles.removeCanceled`))})},removeDirectly:async e=>i.remove(e)}},q=p({id:v().uuid().optional(),type:v().trim().nonempty(),row:m(),col:m(),rowSpan:m(),colSpan:m(),hidden:_()}),J=p({id:v().uuid(),type:v().trim().nonempty(),row:m().optional(),col:m().optional(),rowSpan:m().optional(),colSpan:m().optional(),hidden:_()}),Y=({id:t,parent:o,parentId:s,type:u,onlyDraft:p=!1})=>{let m=c(),{element:h}=N({type:u}),g=m.getStore(k),{t:_}=r(),v=d(),y=f(),b=n(T.NONE),S,C=i({...x(h.value?.schemas?.tileAddFormSchema||q),id:t,type:u,row:1,col:1,rowSpan:1,colSpan:1,hidden:!1}),w=l(e(C)),D=n(void 0),A=n(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(h.value?.schemas?.tileAddFormSchema||q).safeParse(C);if(!e.success)throw y.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create tile model.`);b.value=T.WORKING;let n=_(`dashboardModule.messages.tiles.notCreated`);try{await g.add({id:t,parent:{type:o,id:s},draft:p,data:{...e.data,type:u}})}catch(e){throw b.value=T.ERROR,S=window.setTimeout(M,2e3),e instanceof E&&e.code===422?v.error(e.message):v.error(n),e}return b.value=T.OK,S=window.setTimeout(M,2e3),v.success(_(`dashboardModule.messages.tiles.created`)),`added`},M=()=>{window.clearTimeout(S),b.value=T.NONE};return a(C,()=>{A.value=!(0,P.isEqual)(e(C),w)}),{model:C,formEl:D,formChanged:A,submit:j,clear:M,formResult:b}},X=({tile:t,messages:o,onlyDraft:s=!1})=>{let u=c(),{element:p}=N({type:t.type}),m=u.getStore(k),{t:h}=r(),g=d(),_=f(),v=n(T.NONE),y,b=i(t),x=l(e(b)),S=n(void 0),C=n(!1),w=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft&&!s?h(`dashboardModule.messages.tiles.notCreated`):h(`dashboardModule.messages.tiles.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let i=(p.value?.schemas?.tileEditFormSchema||J).safeParse(b);if(!i.success)throw _.error(`Schema validation failed with:`,i.error),new O(`Failed to validate create tile model.`);v.value=T.WORKING;try{await m.edit({id:t.id,parent:t.parent,data:{...i.data,type:t.type}}),t.draft&&!s&&await m.save({id:t.id,parent:t.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?g.error(e.message):g.error(r),e}return v.value=T.OK,y=window.setTimeout(D,2e3),n&&!s?(g.success(h(o&&o.success?o.success:`dashboardModule.messages.tiles.created`)),`added`):(g.success(h(o&&o.success?o.success:`dashboardModule.messages.tiles.edited`)),C.value=!1,x=l(e(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return a(b,()=>{C.value=!(0,P.isEqual)(e(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}},Z=e=>{let{id:n}=e,r=c().getStore(A),{data:i,semaphore:a}=s(r);return{dataSource:t(()=>n===null?null:n in i.value?i.value[n]:null),isLoading:t(()=>a.value.fetching.item.includes(n)?!0:(n in i.value?i.value[n]:null)===null&&a.value.fetching.items.includes(e.parentId)),fetchDataSource:async()=>{(n in i.value?i.value[n]:null)?.draft||await r.get({id:n,parent:{type:e.parent,id:e.parentId}})}}},Q=p({id:v().uuid().optional(),type:v().trim().nonempty()}),$=p({id:v().uuid(),type:v().trim().nonempty()}),ne=({id:t,type:o,parent:s,parentId:u,onlyDraft:p=!1})=>{let m=c(),{element:h}=M({type:o}),g=m.getStore(A),{t:_}=r(),v=d(),y=f(),b=n(T.NONE),S,C=i({...x(h.value?.schemas?.dataSourceAddFormSchema||Q),id:t,type:o}),w=l(e(C)),D=n(void 0),k=n(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(h.value?.schemas?.dataSourceAddFormSchema||Q).safeParse(C);if(!e.success)throw y.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create data source model.`);b.value=T.WORKING;let n=_(`dashboardModule.messages.dataSources.notCreated`);try{await g.add({id:t,parent:{type:s,id:u},draft:p,data:{...e.data,type:o}})}catch(e){throw b.value=T.ERROR,S=window.setTimeout(N,2e3),e instanceof E&&e.code===422?v.error(e.message):v.error(n),e}return b.value=T.OK,S=window.setTimeout(N,2e3),v.success(_(`dashboardModule.messages.dataSources.created`)),`added`},N=()=>{window.clearTimeout(S),b.value=T.NONE};return a(C,()=>{k.value=!(0,P.isEqual)(e(C),w)}),{model:C,formEl:D,formChanged:k,submit:j,clear:N,formResult:b}},re=({dataSource:t,messages:o,onlyDraft:s=!1})=>{let u=c(),{element:p}=M({type:t.type}),m=u.getStore(A),{t:h}=r(),g=d(),_=f(),v=n(T.NONE),y,b=i(t),x=l(e(b)),S=n(void 0),C=n(!1),w=async()=>{let n=t.draft,r=o&&o.error?o.error:t.draft&&!s?h(`dashboardModule.messages.dataSources.notCreated`):h(`dashboardModule.messages.dataSources.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let i=(p.value?.schemas?.dataSourceEditFormSchema||$).safeParse(b);if(!i.success)throw _.error(`Schema validation failed with:`,i.error),new O(`Failed to validate create dataSource model.`);v.value=T.WORKING;try{await m.edit({id:t.id,parent:t.parent,data:{...i.data,type:t.type}}),t.draft&&!s&&await m.save({id:t.id,parent:t.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?g.error(e.message):g.error(r),e}return v.value=T.OK,y=window.setTimeout(D,2e3),n&&!s?(g.success(h(o&&o.success?o.success:`dashboardModule.messages.dataSources.created`)),`added`):(g.success(h(o&&o.success?o.success:`dashboardModule.messages.dataSources.edited`)),C.value=!1,x=l(e(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return a(b,()=>{C.value=!(0,P.isEqual)(e(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}};export{z as _,Z as a,I as b,q as c,G as d,W as f,V as g,B as h,$ as i,J as l,H as m,ne as n,X as o,U as p,Q as r,Y as s,re as t,K as u,R as v,F as x,te as y};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Si as n,T as r,bi as i,ci as a,ji as o,ki as s}from"./icon-with-child-CgZMNB3F.js";import{Er as c,aa as l,b as u,bt as d,c as f,d as p,f as m,gt as h,ht as g,it as _,o as v,ot as y,pt as b,st as x,yt as S}from"./common-CoPMwt15.js";import{r as C}from"./config-Ca3KDCt_.js";import{r as w}from"./usePlugins-DQ7X6S0I.js";import{t as T}from"./dist-DJgPCOr0.js";import{t as E}from"./keys-DExX7OfU.js";import{C as D,S as O,_ as k,b as A,d as j,g as M,h as N,n as P,s as F,y as I}from"./keys-DcE5nSGn.js";import{l as L,u as R}from"./useSpaces-Dl88_yBJ.js";import{a as z}from"./keys-DghNVBR5.js";var B=e=>{let n=u().getStore(P),{data:r,semaphore:i}=l(n);return{space:t(()=>e.value?r.value[e.value]??null:null),fetching:t(()=>e.value?i.value.fetching.item.includes(e.value):!1),fetchSpace:async()=>e.value?n.get({id:e.value}):null,editSpace:async t=>{if(!e.value)throw Error(`Space ID is required`);return n.edit({id:e.value,data:t})},removeSpace:async()=>{if(!e.value)throw Error(`Space ID is required`);return n.remove({id:e.value})}}},V=p(),H=h({search:S().optional(),types:y(S())}),U=h({name:S().min(1),description:S().nullable().optional(),category:d([b(N),b(k)]).nullable().optional(),icon:S().nullable().optional(),displayOrder:g().int().min(0).default(0),parentId:S().uuid().nullable().optional()}),W=U.extend({id:S().uuid(),type:_([M.ROOM,M.ZONE]).default(M.ROOM)}),G=U.extend({id:S().uuid(),type:b(M),suggestionsEnabled:x().default(!0),statusWidgets:y(L).nullable().optional()}),K=({id:t,type:o})=>{let s=u().getStore(P),{t:c}=r(),l=m(),d=n(F.NONE),p=n(null),h,g=i({id:t,type:o??M.ROOM,name:``,description:null,category:null,icon:null,displayOrder:0,parentId:null}),_=f(e(g)),v=n(void 0),y=n(!1),b=async()=>{if(v.value.clearValidate(),!await v.value.validate())throw Error(`Form not valid`);let e=W.safeParse(g);if(!e.success)throw Error(`Failed to validate create space model.`);d.value=F.WORKING;let n=c(`spacesModule.messages.notCreated`,{space:g.name});try{p.value=await s.add({id:t,data:{name:e.data.name,type:e.data.type,category:e.data.category??null,description:e.data.description??null,icon:e.data.icon??null,displayOrder:e.data.displayOrder,parentId:e.data.parentId??null}})}catch(e){throw d.value=F.ERROR,p.value=null,h=window.setTimeout(x,2e3),l.error(n),e}return d.value=F.OK,h=window.setTimeout(x,2e3),l.success(c(`spacesModule.messages.created`,{space:g.name})),`added`},x=()=>{window.clearTimeout(h),d.value=F.NONE,p.value=null};return a(g,()=>{y.value=!(0,V.isEqual)(e(g),_)}),{model:g,formEl:v,formChanged:y,submit:b,clear:x,formResult:d,createdSpace:p}};function q(e){let n=e=>{let t=I(e);return e===M.ROOM?[...t].sort((e,t)=>e.localeCompare(t)):t},r=e=>{let t=A(e);return t&&t.length>0?t:null};return{getCategoryOptions:n,getCategoryGroups:r,getCategoryTemplates:e=>O(e),categoryOptions:t(()=>{let t=o(e)??M.ROOM;return n(t)}),categoryGroups:t(()=>{let t=o(e)??M.ROOM;return r(t)}),currentTemplates:t(()=>O(o(e)??M.ROOM))}}var J=(e,r)=>{let i=u(),a=i.getStore(z),o=i.getStore(P),{semaphore:s,firstLoad:c}=l(a),d=n(!1);return{devices:t(()=>{if(!e.value||!r.value)return[];let t=a.findAll().filter(e=>!e.draft&&!e.hidden),n;return n=r.value===M.ROOM?t.filter(t=>t.roomId===e.value):t.filter(t=>t.zoneIds.includes(e.value)),n.sort((e,t)=>e.name.localeCompare(t.name))}),loading:t(()=>!!(d.value||s.value.fetching.items||!c.value)),firstLoadFinished:t(()=>c.value),fetchDevices:async()=>{await a.fetch()},addDevice:async t=>{if(!e.value||!r.value)throw Error(`Space ID and type are required`);d.value=!0;try{if(r.value===M.ROOM){let n=a.findById(t);if(!n)throw Error(`Device not found`);await a.edit({id:t,data:{type:n.type,roomId:e.value}})}else{let n=o.findById(e.value);if(n&&D(n.category))throw Error(`Cannot assign devices to floor zones. Floor membership is derived from room assignment.`);await a.addZone({id:t,zoneId:e.value})}}finally{d.value=!1}},removeDevice:async t=>{if(!e.value||!r.value)throw Error(`Space ID and type are required`);d.value=!0;try{if(r.value===M.ROOM){let e=a.findById(t);if(!e)throw Error(`Device not found`);await a.edit({id:t,data:{type:e.type,roomId:null}})}else await a.removeZone({id:t,zoneId:e.value})}finally{d.value=!1}},reassignDevice:async(e,t)=>{d.value=!0;try{let n=a.findById(e);if(!n)throw Error(`Device not found`);await a.edit({id:e,data:{type:n.type,roomId:t}})}finally{d.value=!1}}}},Y=e=>{let r=u().getStore(E),i=n(!1);return{displays:t(()=>e.value?r.findAll().filter(t=>t.spaceId===e.value).sort((e,t)=>(e.name||e.macAddress).localeCompare(t.name||t.macAddress)):[]),loading:t(()=>i.value?!0:r.fetching()),fetchDisplays:async()=>{await r.fetch()},reassignDisplay:async(e,t)=>{i.value=!0;try{await r.edit({id:e,data:{spaceId:t}})}finally{i.value=!1}},removeDisplay:async e=>{i.value=!0;try{await r.edit({id:e,data:{spaceId:null}})}finally{i.value=!1}}}},X=({space:t})=>{let o=()=>`value`in t?t.value:t,s=o(),c=u().getStore(P),{t:l}=r(),d=m(),p=n(F.NONE),h,g=i({id:s.id,type:s.type,name:s.name,description:s.description,category:s.category,icon:s.icon,displayOrder:s.displayOrder,parentId:s.parentId,suggestionsEnabled:s.suggestionsEnabled,statusWidgets:s.statusWidgets?[...s.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null}),_=f(e(g)),v=n(void 0),y=n(!1),b=async()=>{if(v.value.clearValidate(),!await v.value.validate())throw Error(`Form not valid`);let t=G.safeParse(g);if(!t.success)throw Error(`Failed to validate edit space model.`);p.value=F.WORKING;let n=l(`spacesModule.messages.notEdited`,{space:g.name});try{await c.edit({id:s.id,data:{name:t.data.name,type:t.data.type,category:t.data.category??null,description:t.data.description??null,icon:t.data.icon??null,displayOrder:t.data.displayOrder,parentId:t.data.parentId??null,suggestionsEnabled:t.data.suggestionsEnabled,statusWidgets:t.data.statusWidgets??null}})}catch(e){throw p.value=F.ERROR,h=window.setTimeout(x,2e3),d.error(n),e}return p.value=F.OK,h=window.setTimeout(x,2e3),y.value=!1,_=f(e(g)),`saved`},x=()=>{window.clearTimeout(h),p.value=F.NONE};return a(g,()=>{y.value=!(0,V.isEqual)(e(g),_)}),a(()=>o(),t=>{t&&(g.id=t.id,g.type=t.type,g.name=t.name,g.description=t.description,g.category=t.category,g.icon=t.icon,g.displayOrder=t.displayOrder,g.parentId=t.parentId,g.suggestionsEnabled=t.suggestionsEnabled,g.statusWidgets=t.statusWidgets?[...t.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null,_=f(e(g)),y.value=!1)},{deep:!0}),{model:g,formEl:v,formChanged:y,submit:b,clear:x,formResult:p}},Z=()=>{let{t:e}=r(),t=m(),n=u().getStore(P);return{remove:async r=>{let i=n.findById(r);return i?c.confirm(e(`spacesModule.messages.confirmRemove`,{name:i.name}),e(`spacesModule.headings.removeSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{return await n.remove({id:r}),t.success(e(`spacesModule.messages.removed`,{space:i.name})),!0}catch(e){return e instanceof R&&t.error(e.message),!1}}).catch(()=>(t.info(e(`spacesModule.messages.removeCanceled`,{space:i.name})),!1)):(t.error(e(`spacesModule.messages.notFound`)),!1)},bulkRemove:async r=>{if(r.length!==0){try{await c.confirm(e(`spacesModule.messages.confirmBulkRemove`,{count:r.length}),e(`spacesModule.headings.bulkRemoveSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`})}catch{return}try{let i=await n.bulkRemove({ids:r.map(e=>e.id)});i.succeeded.length>0&&t.success(e(`spacesModule.messages.bulkRemoved`,{count:i.succeeded.length})),i.failed.length>0&&t.error(e(`spacesModule.messages.bulkRemoveFailed`,{count:i.failed.length}))}catch{t.error(e(`spacesModule.messages.bulkRemoveFailed`,{count:r.length}))}}}}},Q={search:void 0,types:[]},ee={by:`name`,dir:`asc`},te=()=>{let e=u().getStore(P),{firstLoad:r,semaphore:i}=l(e),{filters:o,sort:s,pagination:c,reset:d}=v({key:`${j}:spaces:list`,filters:{schema:H,defaults:Q},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:2}),f=t(()=>o.value.search!==Q.search||!(0,V.isEqual)(o.value.types,Q.types)),p=n(c.value.size||10),m=n(c.value.page||1),h=n(s.value.length>0?s.value[0]?.by:void 0),g=n(s.value.length>0?s.value[0]?.dir??null:null),_=t(()=>T(e.findAll().filter(e=>!e.draft&&(!o.value.search||e.id.toLowerCase().includes(o.value.search.toLowerCase())||e.name?.toLowerCase().includes(o.value.search.toLowerCase())||e.description?.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))),[e=>{switch(h.value){case`name`:return e.name;case`type`:return e.type;case`displayOrder`:return e.displayOrder;default:return e.displayOrder}}],[g.value??`asc`])),y=t(()=>{let e=(m.value-1)*p.value,t=e+p.value;return _.value.slice(e,t)}),b=async()=>{await e.fetch()},x=t(()=>!!(i.value.fetching.items||!r.value)),S=t(()=>r.value),C=t(()=>e.findAll().filter(e=>!e.draft).length);return a(()=>c.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),a(()=>m.value,e=>{c.value.page=e}),a(()=>p.value,e=>{c.value.size=e}),a(()=>g.value,e=>{h.value===void 0||e===null?s.value=[]:s.value=[{by:h.value,dir:e}]}),a(()=>h.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:g.value}]}),{spaces:_,spacesPaginated:y,totalRows:C,areLoading:x,loaded:S,fetchSpaces:b,filters:o,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:h,sortDir:g,resetFilter:d}},$=()=>{let e=w(),{enabled:n}=C(),{t:i,te:a}=r(),o=[`spaceDetail`,`spaceAddForm`,`spaceEditForm`,`spaceWizard`],s=[`spaceDetail`,`spaceAddForm`,`spaceEditForm`],c=[`spaceSchema`,`spaceAddFormSchema`,`spaceEditFormSchema`,`spaceCreateReqSchema`,`spaceUpdateReqSchema`],l=[`configure`],u=t(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`spaces-module`)?l.length>0&&l.some(t=>e.routes&&t in e.routes)?!0:(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`spaces-module`)))return!1;let t=o.length===0||!!e.components&&o.some(t=>e.components&&t in e.components),n=c.length===0||!!e.schemas&&c.some(t=>e.schemas&&t in e.schemas);return t||n}):!1)),d=e=>a(e)?i(e):e;return{plugins:u,options:t(()=>T(u.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`spaces-module`)).filter(e=>{let t=!!e.components&&s.some(t=>e.components&&t in e.components),n=!!e.schemas&&c.some(t=>e.schemas&&t in e.schemas);return t||n}).map(t=>({value:t.type,label:t.name?.trim()?d(t.name):d(e.name),disabled:!n(e.type)}))),[e=>e.label],[`asc`])),wizardOptions:t(()=>T(u.value.filter(e=>(e.elements??[]).some(e=>(e.modules===void 0||e.modules.includes(`spaces-module`))&&!!e.components?.spaceWizard)).map(e=>({value:e.type,label:d(e.name),description:e.description,disabled:!n(e.type)})),[e=>e.label],[`asc`])),getByPluginType:e=>u.value.find(t=>t.type===e),getByType:e=>u.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`spaces-module`)))),getElement:e=>{for(let t of u.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`spaces-module`)));if(n)return n}}}},ne=({type:e})=>{let{getByType:n}=$(),r=t(()=>n(s(e)));return{plugin:r,element:t(()=>{let t=s(e);return(r.value?.elements??[]).find(e=>e.type===t&&(e.modules===void 0||e.modules.includes(`spaces-module`)))})}};export{X as a,q as c,G as d,B as f,Z as i,K as l,$ as n,Y as o,te as r,J as s,ne as t,W as u};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-config-D3Rl8nnp.js","assets/rolldown-runtime-QTnfLwEv.js","assets/icon-with-child-CgZMNB3F.js","assets/icon-with-child-1Kb-D21P.css","assets/common-CoPMwt15.js","assets/common-BDejG8Ry.css","assets/tabs--WEsYe_1.js","assets/omit-oVmlMQup.js","assets/_baseClone-BRvt9rE2.js","assets/clamp-C5awl0Z9.js","assets/use-ordered-children-CNn6LzZ5.js","assets/config.constants-17QBQ_kF.js","assets/layout-config-Bs73Oq0w.css","assets/view-config-modules-B5GC5QVM.js","assets/vue-meta.esm-browser.min-C5z7o_np.js","assets/card-C50YgvLJ.js","assets/drawer-BO0yGLCm.js","assets/use-dialog-Lvd-Ls2e.js","assets/useModules-Cy3UIua6.js","assets/dist-DJgPCOr0.js","assets/view-config-modules-DvbJyCIK.css","assets/view-config-module-edit-DKx624EL.js","assets/directive-D42ORGRu.js","assets/common.constants-C6QiEtuS.js","assets/useConfigModule-BnX1QBwr.js","assets/useModule-D1rm0Y0M.js","assets/view-config-plugins-vIUqs1BF.js","assets/usePlugins-DQ7X6S0I.js","assets/view-config-plugins-BTCfejmZ.css","assets/view-config-plugin-edit-D880lhC9.js","assets/usePlugin-CyWrOblJ.js"])))=>i.map(i=>d[i]);
2
- import"./rolldown-runtime-QTnfLwEv.js";import{Ei as e,Er as t,Rr as n,Si as r,T as i,bi as a,ci as o,i as s,n as c,zr as l}from"./icon-with-child-CgZMNB3F.js";import{Bt as u,C as d,W as f,aa as p,b as m,c as h,d as g,dr as _,f as v,ft as y,g as b,gt as x,ia as S,l as C,lr as w,n as T,ot as E,p as D,s as O,st as k,t as A,ur as j,v as M,w as ee,xt as N,yt as P}from"./common-CoPMwt15.js";import"./directive-D42ORGRu.js";import{r as te,t as ne}from"./useModules-Cy3UIua6.js";import{t as re}from"./usePlugins-DQ7X6S0I.js";import{a as F,i as ie,l as I,n as ae,o as oe,r as se,s as L}from"./config.constants-17QBQ_kF.js";import{t as ce}from"./usePlugin-CyWrOblJ.js";import"./useConfigModule-BnX1QBwr.js";import{t as le}from"./useModule-D1rm0Y0M.js";var R=async e=>{await Promise.all(e.filter(e=>e.isLoaded()).map(e=>e.refresh()))},z=Symbol(`FB-App-DataRefreshRegistry`),ue=class{onError;handlers=new Map;running=null;constructor(e){this.onError=e}register(e,t){this.handlers.set(e,t)}unregister(e){this.handlers.delete(e)}async refreshAll(){if(this.running!==null)return this.running;let e=[...this.handlers.values()];this.running=Promise.all(e.map(e=>{try{return Promise.resolve(e()).catch(e=>{this.onError?.(e)})}catch(e){return this.onError?.(e),Promise.resolve()}})).then(()=>{});try{await this.running}finally{this.running=null}}},B=e=>{if(e&&e._context&&e._context.provides&&e._context.provides[z])return e._context.provides[z];if(n()){let e=l(z,void 0);if(e)return e}throw Error(`A data refresh registry has not been provided.`)},de=(e,t)=>{e.provide(z,t)},V=g(),fe={"cs-CZ":{menu:{title:`Konfigurace`,modules:`Moduly`,plugins:`Pluginy`},meta:{config:{title:`Konfigurace`},configAudio:{title:`Konfigurace zvuku`},configDisplay:{title:`Konfigurace displeje`},configLanguage:{title:`Konfigurace jazyka`},configWeather:{title:`Konfigurace počasí`},configSystem:{title:`Konfigurace systému`},configPlugins:{title:`Konfigurace pluginů`},configModules:{title:`Konfigurace modulů`},configModuleEdit:{title:`Upravit modul: {module}`},configPluginEdit:{title:`Upravit plugin: {plugin}`}},breadcrumbs:{config:`konfigurace`,configAudio:`konfigurace zvuku`,configDisplay:`konfigurace displeje`,configLanguage:`konfigurace jazyka`,configWeather:`konfigurace počasí`,configSystem:`konfigurace systému`,configPlugins:`konfigurace pluginů`,configModules:`konfigurace modulů`},messages:{loadError:`Nepodařilo se načíst konfiguraci`,configAudio:{edited:`Změny uloženy! Konfigurace zvuku byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace zvuku nebyla úspěšná.`},configDisplay:{edited:`Změny uloženy! Konfigurace displeje byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace displeje nebyla úspěšná.`},configLanguage:{edited:`Změny uloženy! Konfigurace jazyka byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace jazyka nebyla úspěšná.`},configWeather:{edited:`Změny uloženy! Konfigurace počasí byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace počasí nebyla úspěšná.`},configSystem:{edited:`Změny uloženy! Konfigurace systému byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace systému nebyla úspěšná.`},configPlugin:{edited:`Změny uloženy! Konfigurace pluginu byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace pluginu nebyla úspěšná.`},configModule:{edited:`Změny uloženy! Konfigurace modulu byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace modulu nebyla úspěšná.`},moduleConfigNotFound:{title:`Konfigurace modulu nenalezena`,message:`Konfigurace modulu "{module}" nemohla být načtena. Zkontrolujte prosím, zda je modul správně nainstalován a nakonfigurován.`},moduleNotFound:{title:`Modul nenalezen`,message:`Modul "{module}" nebyl v systému nalezen. Ověřte prosím, že je modul nainstalován a povolen.`},moduleElementNotFound:{title:`Prvek modulu není registrován`,message:`Konfigurační prvek modulu "{module}" není registrován. Tento modul nemusí podporovat úpravu konfigurace.`},moduleComponentsNotFound:{message:`Modul "{module}" nemá k dispozici žádné konfigurační komponenty.`},moduleFormNotFound:{title:`Konfigurační formulář není dostupný`,message:`Komponenta konfiguračního formuláře modulu "{module}" není dostupná. Tento modul nemusí podporovat úpravu konfigurace prostřednictvím uživatelského rozhraní.`},pluginConfigNotFound:{title:`Konfigurace pluginu nenalezena`,message:`Konfigurace pluginu "{plugin}" nemohla být načtena. Zkontrolujte prosím, zda je plugin správně nainstalován a nakonfigurován.`},pluginNotFound:{title:`Plugin nenalezen`,message:`Plugin "{plugin}" nebyl v systému nalezen. Ověřte prosím, že je plugin nainstalován a povolen.`},pluginElementNotFound:{title:`Prvek pluginu není registrován`,message:`Konfigurační prvek pluginu "{plugin}" není registrován. Tento plugin nemusí podporovat úpravu konfigurace.`},pluginComponentsNotFound:{message:`Plugin "{plugin}" nemá k dispozici žádné konfigurační komponenty.`},pluginFormNotFound:{title:`Konfigurační formulář není dostupný`,message:`Komponenta konfiguračního formuláře pluginu "{plugin}" není dostupná. Tento plugin nemusí podporovat úpravu konfigurace prostřednictvím uživatelského rozhraní.`}},headings:{config:`Konfigurace`,misc:{discard:`Zahodit změny`}},subHeadings:{config:`Konfigurace Smart panelu`,configModule:`Konfigurace modulu`,configPlugin:`Konfigurace pluginu`},tabs:{configAudio:`Konfigurace zvuku`,configDisplay:`Konfigurace displeje`,configLanguage:`Konfigurace jazyka`,configWeather:`Konfigurace počasí`,configSystem:`Konfigurace systému`,configPlugins:`Konfigurace pluginů`,configModules:`Konfigurace modulů`},texts:{loadingAudioConfig:`Načítání konfigurace zvuku...`,loadingDisplayConfig:`Načítání konfigurace displeje...`,loadingLanguageConfig:`Načítání konfigurace jazyka...`,loadingWeatherConfig:`Načítání konfigurace počasí...`,loadingSystemConfig:`Načítání konfigurace systému...`,loadingPluginConfig:`Načítání konfigurace pluginu...`,loadingModuleConfig:`Načítání konfigurace modulu...`,misc:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`},secret:{stored:`Hodnota je uložena. Zadejte novou pro její nahrazení.`,willBeRemoved:`Uložená hodnota bude po uložení odstraněna.`}},fields:{speaker:{title:`Reproduktor`,placeholder:`Povolit nebo zakázat reproduktor`,values:{enabled:`Povoleno`,disabled:`Zakázáno`}},speakerVolume:{title:`Hlasitost reproduktoru`},microphone:{title:`Mikrofon`,placeholder:`Povolit nebo zakázat mikrofon`,values:{enabled:`Povoleno`,disabled:`Zakázáno`}},microphoneVolume:{title:`Hlasitost mikrofonu`},darkMode:{title:`Režim vzhledu`,placeholder:`Zvolte mezi světlým a tmavým režimem`,values:{dark:`Tmavý`,light:`Světlý`}},brightness:{title:`Jas`},screenLockDuration:{title:`Zámek obrazovky`,placeholder:`Nastavte prodlevu zámku obrazovky`,values:{enabled:`Povoleno`,disabled:`Zakázáno`}},screenSaver:{title:`Spořič obrazovky`,placeholder:`Povolit nebo zakázat spořič obrazovky`,values:{enabled:`Povoleno`,disabled:`Zakázáno`}},language:{title:`Jazyk`,placeholder:`Vyberte preferovaný jazyk`},timezone:{title:`Časové pásmo`,placeholder:`Vyberte své časové pásmo`},timeFormat:{title:`Formát času`,placeholder:`Vyberte preferovaný formát času`},locationType:{title:`Typ lokace počasí`,placeholder:`Vyberte způsob načítání počasí`},coordinates:{title:`Souřadnice lokace`},latitude:{title:`Zeměpisná šířka`,placeholder:`Zeměpisná šířka`},longitude:{title:`Zeměpisná délka`,placeholder:`Zeměpisná délka`},cityName:{title:`Název města`,placeholder:`Zadejte název města, případně stát a kód země`},cityId:{title:`ID města`,placeholder:`Vyberte z podporovaných měst OpenWeather`},zipCode:{title:`PSČ`,placeholder:`Vyhledávání podle PSČ, případně kód země`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`},openWeatherApiKey:{title:`API klíč Open Weather`,placeholder:`Váš API klíč služby Open Weather pro přístup k údajům o počasí`},logLevels:{title:`Úrovně logování`,placeholder:`Vyberte, které úrovně logování mají být sledovány`}},buttons:{save:{title:`Uložit`},myLocation:{title:`Moje poloha`},discard:{title:`Zahodit`},close:{title:`Zavřít`},retry:{title:`Opakovat`},yes:{title:`Ano`},no:{title:`Ne`},removeSecret:{title:`Odstranit`},keepSecret:{title:`Ponechat`}},languages:{en_US:`angličtina`,cs_CZ:`Česky`},timeFormats:{"12h":`12hodinový formát`,"24h":`24hodinový formát`},locationTypes:{lat_lon:`Souřadnice`,city_name:`Název města`,city_id:`ID města OpenWeather`,zip_code:`PSČ`},weatherUnits:{celsius:`Celsia`,fahrenheit:`Fahrenheita`},screenLockDurations:{"15s":`15s`,"30s":`30. léta`,"60s":`1 min`,"120s":`2 min`,"300s":`5 min`,"600s":`10 min`,"1800s":`30 min`,"0s":`Nikdy`},logLevels:{silent:`Tichý`,verbose:`Podrobný`,debug:`Ladit`,trace:`Stopa`,log:`Log`,info:`Info`,success:`Úspěch`,warn:`Varování`,error:`Chyba`,fail:`Selhání`,fatal:`Fatální`}},"de-DE":{menu:{title:`Konfiguration`,modules:`Module`,plugins:`Plugins`},meta:{config:{title:`Konfiguration`},configAudio:{title:`Audio-Konfiguration`},configDisplay:{title:`Display-Konfiguration`},configLanguage:{title:`Sprachkonfiguration`},configWeather:{title:`Wetter-Konfiguration`},configSystem:{title:`System-Konfiguration`},configPlugins:{title:`Plugin-Konfiguration`},configModules:{title:`Modul-Konfiguration`},configModuleEdit:{title:`Modul bearbeiten: {module}`},configPluginEdit:{title:`Plugin bearbeiten: {plugin}`}},breadcrumbs:{config:`Konfiguration`,configAudio:`Audio-Konfiguration`,configDisplay:`Display-Konfiguration`,configLanguage:`Sprachkonfiguration`,configWeather:`Wetter-Konfiguration`,configSystem:`System-Konfiguration`,configPlugins:`Plugin-Konfiguration`,configModules:`Modul-Konfiguration`},messages:{loadError:`Konfiguration konnte nicht geladen werden`,configAudio:{edited:`Änderungen gespeichert! Die Audio-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Audio-Konfiguration war nicht erfolgreich.`},configDisplay:{edited:`Änderungen gespeichert! Die Display-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Display-Konfiguration war nicht erfolgreich.`},configLanguage:{edited:`Änderungen gespeichert! Die Sprachkonfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Sprachkonfiguration war nicht erfolgreich.`},configWeather:{edited:`Änderungen gespeichert! Die Wetter-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Wetter-Konfiguration war nicht erfolgreich.`},configSystem:{edited:`Änderungen gespeichert! Die System-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der System-Konfiguration war nicht erfolgreich.`},configPlugin:{edited:`Änderungen gespeichert! Die Plugin-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Plugin-Konfiguration war nicht erfolgreich.`},configModule:{edited:`Änderungen gespeichert! Die Modul-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Modul-Konfiguration war nicht erfolgreich.`},moduleConfigNotFound:{title:`Modul-Konfiguration nicht gefunden`,message:`Die Konfiguration für das Modul "{module}" konnte nicht geladen werden. Bitte überprüfen Sie, ob das Modul ordnungsgemäß installiert und konfiguriert ist.`},moduleNotFound:{title:`Modul nicht gefunden`,message:`Modul "{module}" wurde im System nicht gefunden. Bitte überprüfen Sie, ob das Modul installiert und aktiviert ist.`},moduleElementNotFound:{title:`Modul-Element nicht registriert`,message:`Das Konfigurationselement für das Modul "{module}" ist nicht registriert. Dieses Modul unterstützt möglicherweise keine Konfigurationsbearbeitung.`},moduleComponentsNotFound:{message:`Das Modul "{module}" verfügt über keine Konfigurationskomponenten.`},moduleFormNotFound:{title:`Konfigurationsformular nicht verfügbar`,message:`Die Konfigurationsformularkomponente für das Modul "{module}" ist nicht verfügbar. Dieses Modul unterstützt möglicherweise keine Konfigurationsbearbeitung über die Benutzeroberfläche.`},pluginConfigNotFound:{title:`Plugin-Konfiguration nicht gefunden`,message:`Die Konfiguration für das Plugin "{plugin}" konnte nicht geladen werden. Bitte überprüfen Sie, ob das Plugin ordnungsgemäß installiert und konfiguriert ist.`},pluginNotFound:{title:`Plugin nicht gefunden`,message:`Plugin "{plugin}" wurde im System nicht gefunden. Bitte überprüfen Sie, ob das Plugin installiert und aktiviert ist.`},pluginElementNotFound:{title:`Plugin-Element nicht registriert`,message:`Das Konfigurationselement für das Plugin "{plugin}" ist nicht registriert. Dieses Plugin unterstützt möglicherweise keine Konfigurationsbearbeitung.`},pluginComponentsNotFound:{message:`Das Plugin "{plugin}" verfügt über keine Konfigurationskomponenten.`},pluginFormNotFound:{title:`Konfigurationsformular nicht verfügbar`,message:`Die Konfigurationsformularkomponente für das Plugin "{plugin}" ist nicht verfügbar. Dieses Plugin unterstützt möglicherweise keine Konfigurationsbearbeitung über die Benutzeroberfläche.`}},headings:{config:`Konfiguration`,misc:{discard:`Änderungen verwerfen`}},subHeadings:{config:`Smart Panel Konfiguration`,configModule:`Modul-Konfiguration`,configPlugin:`Plugin-Konfiguration`},tabs:{configAudio:`Audio-Konfig.`,configDisplay:`Display-Konfig.`,configLanguage:`Sprach-Konfig.`,configWeather:`Wetter-Konfig.`,configSystem:`System-Konfig.`,configPlugins:`Plugin-Konfig.`,configModules:`Modul-Konfig.`},texts:{loadingAudioConfig:`Audio-Konfiguration wird geladen...`,loadingDisplayConfig:`Display-Konfiguration wird geladen...`,loadingLanguageConfig:`Sprachkonfiguration wird geladen...`,loadingWeatherConfig:`Wetter-Konfiguration wird geladen...`,loadingSystemConfig:`System-Konfiguration wird geladen...`,loadingPluginConfig:`Plugin-Konfiguration wird geladen...`,loadingModuleConfig:`Modul-Konfiguration wird geladen...`,misc:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`},secret:{stored:`Ein Wert ist gespeichert. Geben Sie einen neuen ein, um ihn zu ersetzen.`,willBeRemoved:`Der gespeicherte Wert wird beim Speichern entfernt.`}},fields:{speaker:{title:`Lautsprecher`,placeholder:`Lautsprecher aktivieren oder deaktivieren`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`}},speakerVolume:{title:`Lautsprecherlautstärke`},microphone:{title:`Mikrofon`,placeholder:`Mikrofon aktivieren oder deaktivieren`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`}},microphoneVolume:{title:`Mikrofonlautstärke`},darkMode:{title:`Designmodus`,placeholder:`Wählen Sie zwischen hellem und dunklem Modus`,values:{dark:`Dunkel`,light:`Hell`}},brightness:{title:`Helligkeit`},screenLockDuration:{title:`Bildschirmsperre`,placeholder:`Verzögerung der Bildschirmsperre festlegen`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`}},screenSaver:{title:`Bildschirmschoner`,placeholder:`Bildschirmschoner aktivieren oder deaktivieren`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`}},language:{title:`Sprache`,placeholder:`Wählen Sie Ihre bevorzugte Sprache`},timezone:{title:`Zeitzone`,placeholder:`Wählen Sie Ihre Zeitzone`},timeFormat:{title:`Zeitformat`,placeholder:`Wählen Sie Ihr bevorzugtes Zeitformat`},locationType:{title:`Wetter-Standorttyp`,placeholder:`Wählen Sie, wie das Wetter geladen wird`},coordinates:{title:`Standortkoordinaten`},latitude:{title:`Breitengrad`,placeholder:`Breitengrad`},longitude:{title:`Längengrad`,placeholder:`Längengrad`},cityName:{title:`Stadtname`,placeholder:`Stadtname eingeben, optional mit Bundesland und Ländercode`},cityId:{title:`Stadt-ID`,placeholder:`Von OpenWeather unterstützte Städte auswählen`},zipCode:{title:`Postleitzahl`,placeholder:`Nach PLZ suchen, optional mit Ländercode`},unit:{title:`Temperatureinheit`,placeholder:`Temperatureinheit auswählen`},openWeatherApiKey:{title:`Open Weather API-Schlüssel`,placeholder:`Ihr Open Weather Service API-Schlüssel für den Zugriff auf Wetterdaten`},logLevels:{title:`Protokollstufen`,placeholder:`Wählen Sie, welche Protokollstufen überwacht werden sollen`}},buttons:{save:{title:`Speichern`},myLocation:{title:`Mein Standort`},discard:{title:`Verwerfen`},close:{title:`Schließen`},retry:{title:`Wiederholen`},yes:{title:`Ja`},no:{title:`Nein`},removeSecret:{title:`Entfernen`},keepSecret:{title:`Behalten`}},languages:{en_US:`Englisch`,cs_CZ:`Tschechisch`},timeFormats:{"12h":`12-Stunden-Format`,"24h":`24-Stunden-Format`},locationTypes:{lat_lon:`Breiten- & Längengrad-Koordinaten`,city_name:`Stadtname`,city_id:`OpenWeather Stadt-ID`,zip_code:`Postleitzahl`},weatherUnits:{celsius:`Celsius`,fahrenheit:`Fahrenheit`},screenLockDurations:{"15s":`15s`,"30s":`30er Jahre`,"60s":`1min`,"120s":`2min`,"300s":`5min`,"600s":`10min`,"1800s":`30min`,"0s":`Nie`},logLevels:{silent:`Stumm`,verbose:`Ausführlich`,debug:`Debuggen`,trace:`Verfolgen`,log:`Protokoll`,info:`Info`,success:`Erfolg`,warn:`Warnung`,error:`Fehler`,fail:`Fehlgeschlagen`,fatal:`Tödlich`}},"en-US":{menu:{title:`Configuration`,modules:`Modules`,plugins:`Plugins`},meta:{config:{title:`Config`},configAudio:{title:`Audio config`},configDisplay:{title:`Display config`},configLanguage:{title:`Language config`},configWeather:{title:`Weather config`},configSystem:{title:`System config`},configPlugins:{title:`Plugins config`},configModules:{title:`Modules config`},configModuleEdit:{title:`Edit module: {module}`},configPluginEdit:{title:`Edit plugin: {plugin}`}},breadcrumbs:{config:`config`,configAudio:`audio config`,configDisplay:`display config`,configLanguage:`language config`,configWeather:`weather config`,configSystem:`system config`,configPlugins:`plugins config`,configModules:`modules config`},messages:{loadError:`Failed to load configuration`,configAudio:{edited:`Changes saved! The audio config has been updated.`,notEdited:`Something went wrong. Audio config update was not successful.`},configDisplay:{edited:`Changes saved! The display config has been updated.`,notEdited:`Something went wrong. Display config update was not successful.`},configLanguage:{edited:`Changes saved! The language config has been updated.`,notEdited:`Something went wrong. Language config update was not successful.`},configWeather:{edited:`Changes saved! The weather config has been updated.`,notEdited:`Something went wrong. Weather config update was not successful.`},configSystem:{edited:`Changes saved! The system config has been updated.`,notEdited:`Something went wrong. System config update was not successful.`},configPlugin:{edited:`Changes saved! The plugin config has been updated.`,notEdited:`Something went wrong. Plugin config update was not successful.`},configModule:{edited:`Changes saved! The module config has been updated.`,notEdited:`Something went wrong. Module config update was not successful.`},moduleConfigNotFound:{title:`Module Configuration Not Found`,message:`The configuration for module "{module}" could not be loaded. Please check if the module is properly installed and configured.`},moduleNotFound:{title:`Module Not Found`,message:`Module "{module}" was not found in the system. Please verify that the module is installed and enabled.`},moduleElementNotFound:{title:`Module Element Not Registered`,message:`The configuration element for module "{module}" is not registered. This module may not support configuration editing.`},moduleComponentsNotFound:{message:`The module "{module}" does not have any configuration components available.`},moduleFormNotFound:{title:`Configuration Form Not Available`,message:`The configuration form component for module "{module}" is not available. This module may not support configuration editing through the user interface.`},pluginConfigNotFound:{title:`Plugin Configuration Not Found`,message:`The configuration for plugin "{plugin}" could not be loaded. Please check if the plugin is properly installed and configured.`},pluginNotFound:{title:`Plugin Not Found`,message:`Plugin "{plugin}" was not found in the system. Please verify that the plugin is installed and enabled.`},pluginElementNotFound:{title:`Plugin Element Not Registered`,message:`The configuration element for plugin "{plugin}" is not registered. This plugin may not support configuration editing.`},pluginComponentsNotFound:{message:`The plugin "{plugin}" does not have any configuration components available.`},pluginFormNotFound:{title:`Configuration Form Not Available`,message:`The configuration form component for plugin "{plugin}" is not available. This plugin may not support configuration editing through the user interface.`}},headings:{config:`Configuration`,misc:{discard:`Discard Changes`}},subHeadings:{config:`Smart panel configuration`,configModule:`Module configuration`,configPlugin:`Plugin configuration`},tabs:{configAudio:`Audio config`,configDisplay:`Display config`,configLanguage:`Language config`,configWeather:`Weather config`,configSystem:`System config`,configPlugins:`Plugins config`,configModules:`Modules config`},texts:{loadingAudioConfig:`Loading audio config...`,loadingDisplayConfig:`Loading display config...`,loadingLanguageConfig:`Loading language config...`,loadingWeatherConfig:`Loading weather config...`,loadingSystemConfig:`Loading system config...`,loadingPluginConfig:`Loading plugin config...`,loadingModuleConfig:`Loading module config...`,misc:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`},secret:{stored:`A value is stored. Enter a new one to replace it.`,willBeRemoved:`The stored value will be removed when you save.`}},fields:{speaker:{title:`Speaker`,placeholder:`Enable or disable the speaker`,values:{enabled:`Enabled`,disabled:`Disabled`}},speakerVolume:{title:`Speaker volume`},microphone:{title:`Microphone`,placeholder:`Enable or disable the microphone`,values:{enabled:`Enabled`,disabled:`Disabled`}},microphoneVolume:{title:`Microphone volume`},darkMode:{title:`Theme mode`,placeholder:`Choose between light or dark mode`,values:{dark:`Dark`,light:`Light`}},brightness:{title:`Brightness`},screenLockDuration:{title:`Screen lock`,placeholder:`Set screen lock delay duration`,values:{enabled:`Enabled`,disabled:`Disabled`}},screenSaver:{title:`Screen Saver`,placeholder:`Enable or disable the screen saver`,values:{enabled:`Enabled`,disabled:`Disabled`}},language:{title:`Language`,placeholder:`Select your preferred language`},timezone:{title:`Timezone`,placeholder:`Select your timezone`},timeFormat:{title:`Time format`,placeholder:`Select your preferred time format`},locationType:{title:`Weather location type`,placeholder:`Select how the weather is loaded`},coordinates:{title:`Location coordinates`},latitude:{title:`Location latitude`,placeholder:`Latitude`},longitude:{title:`Location longitude`,placeholder:`Longitude`},cityName:{title:`Location city name`,placeholder:`Fill in city name, possible to add state and country code`},cityId:{title:`Location city ID`,placeholder:`Select OpenWeather supported cities`},zipCode:{title:`Location ZIP code`,placeholder:`Search by ZIP/Post code, possible to add country code`},unit:{title:`Temperature unit`,placeholder:`Select temperature unit`},openWeatherApiKey:{title:`Open weather API key`,placeholder:`Your Open weather service API key for accessing weather data`},logLevels:{title:`Log levels`,placeholder:`Select which log levels should be monitored`}},buttons:{save:{title:`Save`},myLocation:{title:`My location`},discard:{title:`Discard`},close:{title:`Close`},retry:{title:`Retry`},yes:{title:`Yes`},no:{title:`No`},removeSecret:{title:`Remove`},keepSecret:{title:`Keep it`}},languages:{en_US:`English`,cs_CZ:`Česky`},timeFormats:{"12h":`12 hour format`,"24h":`24 hour format`},locationTypes:{lat_lon:`Lat & Lon coordinates`,city_name:`City name`,city_id:`OpenWeather City ID`,zip_code:`ZIP code`},weatherUnits:{celsius:`Celsius`,fahrenheit:`Fahrenheit`},screenLockDurations:{"15s":`15s`,"30s":`30s`,"60s":`1min`,"120s":`2min`,"300s":`5min`,"600s":`10min`,"1800s":`30min`,"0s":`Never`},logLevels:{silent:`Silent`,verbose:`Verbose`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Success`,warn:`Warn`,error:`Error`,fail:`Fail`,fatal:`Fatal`}},"es-ES":{menu:{title:`Configuración`,modules:`Módulos`,plugins:`Complementos`},meta:{config:{title:`Configuración`},configAudio:{title:`Configuración de audio`},configDisplay:{title:`Configuración de pantalla`},configLanguage:{title:`Configuración de idioma`},configWeather:{title:`Configuración del clima`},configSystem:{title:`Configuración del sistema`},configPlugins:{title:`Configuración de plugins`},configModules:{title:`Configuración de módulos`},configModuleEdit:{title:`Editar módulo: {module}`},configPluginEdit:{title:`Editar plugin: {plugin}`}},breadcrumbs:{config:`configuración`,configAudio:`configuración de audio`,configDisplay:`configuración de pantalla`,configLanguage:`configuración de idioma`,configWeather:`configuración del clima`,configSystem:`configuración del sistema`,configPlugins:`configuración de plugins`,configModules:`configuración de módulos`},messages:{loadError:`Error al cargar la configuración`,configAudio:{edited:`¡Cambios guardados! La configuración de audio ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración de audio no fue exitosa.`},configDisplay:{edited:`¡Cambios guardados! La configuración de pantalla ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración de pantalla no fue exitosa.`},configLanguage:{edited:`¡Cambios guardados! La configuración de idioma ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración de idioma no fue exitosa.`},configWeather:{edited:`¡Cambios guardados! La configuración del clima ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del clima no fue exitosa.`},configSystem:{edited:`¡Cambios guardados! La configuración del sistema ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del sistema no fue exitosa.`},configPlugin:{edited:`¡Cambios guardados! La configuración del plugin ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del plugin no fue exitosa.`},configModule:{edited:`¡Cambios guardados! La configuración del módulo ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del módulo no fue exitosa.`},moduleConfigNotFound:{title:`Configuración del módulo no encontrada`,message:`No se pudo cargar la configuración del módulo "{module}". Por favor, verifica que el módulo esté correctamente instalado y configurado.`},moduleNotFound:{title:`Módulo no encontrado`,message:`El módulo "{module}" no fue encontrado en el sistema. Por favor, verifica que el módulo esté instalado y activado.`},moduleElementNotFound:{title:`Elemento del módulo no registrado`,message:`El elemento de configuración del módulo "{module}" no está registrado. Este módulo puede no soportar la edición de configuración.`},moduleComponentsNotFound:{message:`El módulo "{module}" no tiene componentes de configuración disponibles.`},moduleFormNotFound:{title:`Formulario de configuración no disponible`,message:`El componente de formulario de configuración del módulo "{module}" no está disponible. Este módulo puede no soportar la edición de configuración a través de la interfaz de usuario.`},pluginConfigNotFound:{title:`Configuración del plugin no encontrada`,message:`No se pudo cargar la configuración del plugin "{plugin}". Por favor, verifica que el plugin esté correctamente instalado y configurado.`},pluginNotFound:{title:`Plugin no encontrado`,message:`El plugin "{plugin}" no fue encontrado en el sistema. Por favor, verifica que el plugin esté instalado y activado.`},pluginElementNotFound:{title:`Elemento del plugin no registrado`,message:`El elemento de configuración del plugin "{plugin}" no está registrado. Este plugin puede no soportar la edición de configuración.`},pluginComponentsNotFound:{message:`El plugin "{plugin}" no tiene componentes de configuración disponibles.`},pluginFormNotFound:{title:`Formulario de configuración no disponible`,message:`El componente de formulario de configuración del plugin "{plugin}" no está disponible. Este plugin puede no soportar la edición de configuración a través de la interfaz de usuario.`}},headings:{config:`Configuración`,misc:{discard:`Descartar cambios`}},subHeadings:{config:`Configuración del panel inteligente`,configModule:`Configuración del módulo`,configPlugin:`Configuración del plugin`},tabs:{configAudio:`Configuración de audio`,configDisplay:`Configuración de pantalla`,configLanguage:`Configuración de idioma`,configWeather:`Configuración del clima`,configSystem:`Configuración del sistema`,configPlugins:`Configuración de plugins`,configModules:`Configuración de módulos`},texts:{loadingAudioConfig:`Cargando configuración de audio...`,loadingDisplayConfig:`Cargando configuración de pantalla...`,loadingLanguageConfig:`Cargando configuración de idioma...`,loadingWeatherConfig:`Cargando configuración del clima...`,loadingSystemConfig:`Cargando configuración del sistema...`,loadingPluginConfig:`Cargando configuración del plugin...`,loadingModuleConfig:`Cargando configuración del módulo...`,misc:{confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`},secret:{stored:`Hay un valor guardado. Introduce uno nuevo para reemplazarlo.`,willBeRemoved:`El valor guardado se eliminará al guardar.`}},fields:{speaker:{title:`Altavoz`,placeholder:`Activar o desactivar el altavoz`,values:{enabled:`Activado`,disabled:`Desactivado`}},speakerVolume:{title:`Volumen del altavoz`},microphone:{title:`Micrófono`,placeholder:`Activar o desactivar el micrófono`,values:{enabled:`Activado`,disabled:`Desactivado`}},microphoneVolume:{title:`Volumen del micrófono`},darkMode:{title:`Modo de tema`,placeholder:`Elegir entre modo claro u oscuro`,values:{dark:`Oscuro`,light:`Claro`}},brightness:{title:`Brillo`},screenLockDuration:{title:`Bloqueo de pantalla`,placeholder:`Establecer duración del retraso de bloqueo de pantalla`,values:{enabled:`Activado`,disabled:`Desactivado`}},screenSaver:{title:`Protector de pantalla`,placeholder:`Activar o desactivar el protector de pantalla`,values:{enabled:`Activado`,disabled:`Desactivado`}},language:{title:`Idioma`,placeholder:`Selecciona tu idioma preferido`},timezone:{title:`Zona horaria`,placeholder:`Selecciona tu zona horaria`},timeFormat:{title:`Formato de hora`,placeholder:`Selecciona tu formato de hora preferido`},locationType:{title:`Tipo de ubicación del clima`,placeholder:`Selecciona cómo se carga el clima`},coordinates:{title:`Coordenadas de ubicación`},latitude:{title:`Latitud de ubicación`,placeholder:`Latitud`},longitude:{title:`Longitud de ubicación`,placeholder:`Longitud`},cityName:{title:`Nombre de la ciudad`,placeholder:`Ingresa el nombre de la ciudad, posible agregar estado y código de país`},cityId:{title:`ID de la ciudad`,placeholder:`Selecciona ciudades compatibles con OpenWeather`},zipCode:{title:`Código postal`,placeholder:`Buscar por código postal, posible agregar código de país`},unit:{title:`Unidad de temperatura`,placeholder:`Selecciona unidad de temperatura`},openWeatherApiKey:{title:`Clave API de Open Weather`,placeholder:`Tu clave API del servicio Open Weather para acceder a datos meteorológicos`},logLevels:{title:`Niveles de registro`,placeholder:`Selecciona qué niveles de registro deben ser monitoreados`}},buttons:{save:{title:`Guardar`},myLocation:{title:`Mi ubicación`},discard:{title:`Descartar`},close:{title:`Cerrar`},retry:{title:`Reintentar`},yes:{title:`Sí`},no:{title:`No`},removeSecret:{title:`Eliminar`},keepSecret:{title:`Conservar`}},languages:{en_US:`Inglés`,cs_CZ:`Český`},timeFormats:{"12h":`Formato de 12 horas`,"24h":`Formato de 24 horas`},locationTypes:{lat_lon:`Coordenadas lat. y lon.`,city_name:`Nombre de la ciudad`,city_id:`ID de ciudad de OpenWeather`,zip_code:`Código postal`},weatherUnits:{celsius:`Celsius`,fahrenheit:`Fahrenheit`},screenLockDurations:{"15s":`15`,"30s":`30 años`,"60s":`1 minuto`,"120s":`2 minutos`,"300s":`5 minutos`,"600s":`10 minutos`,"1800s":`30 minutos`,"0s":`Nunca`},logLevels:{silent:`Silencioso`,verbose:`Detallado`,debug:`Depuración`,trace:`Rastreo`,log:`Registro`,info:`Información`,success:`Éxito`,warn:`Advertencia`,error:`Error`,fail:`Fallo`,fatal:`Fatal`}},"pl-PL":{menu:{title:`Konfiguracja`,modules:`Moduły`,plugins:`Wtyczki`},meta:{config:{title:`Konfiguracja`},configAudio:{title:`Konfiguracja audio`},configDisplay:{title:`Konfiguracja wyświetlacza`},configLanguage:{title:`Konfiguracja języka`},configWeather:{title:`Konfiguracja pogody`},configSystem:{title:`Konfiguracja systemu`},configPlugins:{title:`Konfiguracja wtyczek`},configModules:{title:`Konfiguracja modułów`},configModuleEdit:{title:`Edytuj moduł: {module}`},configPluginEdit:{title:`Edytuj wtyczkę: {plugin}`}},breadcrumbs:{config:`konfiguracja`,configAudio:`konfiguracja audio`,configDisplay:`konfiguracja wyświetlacza`,configLanguage:`konfiguracja języka`,configWeather:`konfiguracja pogody`,configSystem:`konfiguracja systemu`,configPlugins:`konfiguracja wtyczek`,configModules:`konfiguracja modułów`},messages:{loadError:`Nie udało się wczytać konfiguracji`,configAudio:{edited:`Zmiany zapisane! Konfiguracja audio została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji audio nie powiodła się.`},configDisplay:{edited:`Zmiany zapisane! Konfiguracja wyświetlacza została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji wyświetlacza nie powiodła się.`},configLanguage:{edited:`Zmiany zapisane! Konfiguracja języka została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji języka nie powiodła się.`},configWeather:{edited:`Zmiany zapisane! Konfiguracja pogody została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji pogody nie powiodła się.`},configSystem:{edited:`Zmiany zapisane! Konfiguracja systemu została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji systemu nie powiodła się.`},configPlugin:{edited:`Zmiany zapisane! Konfiguracja wtyczki została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji wtyczki nie powiodła się.`},configModule:{edited:`Zmiany zapisane! Konfiguracja modułu została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji modułu nie powiodła się.`},moduleConfigNotFound:{title:`Konfiguracja modułu nie znaleziona`,message:`Nie udało się wczytać konfiguracji modułu "{module}". Sprawdź, czy moduł jest poprawnie zainstalowany i skonfigurowany.`},moduleNotFound:{title:`Moduł nie znaleziony`,message:`Moduł "{module}" nie został znaleziony w systemie. Sprawdź, czy moduł jest zainstalowany i włączony.`},moduleElementNotFound:{title:`Element modułu nie zarejestrowany`,message:`Element konfiguracji modułu "{module}" nie jest zarejestrowany. Ten moduł może nie obsługiwać edycji konfiguracji.`},moduleComponentsNotFound:{message:`Moduł "{module}" nie posiada dostępnych komponentów konfiguracji.`},moduleFormNotFound:{title:`Formularz konfiguracji niedostępny`,message:`Komponent formularza konfiguracji modułu "{module}" nie jest dostępny. Ten moduł może nie obsługiwać edycji konfiguracji przez interfejs użytkownika.`},pluginConfigNotFound:{title:`Konfiguracja wtyczki nie znaleziona`,message:`Nie udało się wczytać konfiguracji wtyczki "{plugin}". Sprawdź, czy wtyczka jest poprawnie zainstalowana i skonfigurowana.`},pluginNotFound:{title:`Wtyczka nie znaleziona`,message:`Wtyczka "{plugin}" nie została znaleziona w systemie. Sprawdź, czy wtyczka jest zainstalowana i włączona.`},pluginElementNotFound:{title:`Element wtyczki nie zarejestrowany`,message:`Element konfiguracji wtyczki "{plugin}" nie jest zarejestrowany. Ta wtyczka może nie obsługiwać edycji konfiguracji.`},pluginComponentsNotFound:{message:`Wtyczka "{plugin}" nie posiada dostępnych komponentów konfiguracji.`},pluginFormNotFound:{title:`Formularz konfiguracji niedostępny`,message:`Komponent formularza konfiguracji wtyczki "{plugin}" nie jest dostępny. Ta wtyczka może nie obsługiwać edycji konfiguracji przez interfejs użytkownika.`}},headings:{config:`Konfiguracja`,misc:{discard:`Odrzuć zmiany`}},subHeadings:{config:`Konfiguracja smart panelu`,configModule:`Konfiguracja modułu`,configPlugin:`Konfiguracja wtyczki`},tabs:{configAudio:`Konfiguracja audio`,configDisplay:`Konfiguracja wyświetlacza`,configLanguage:`Konfiguracja języka`,configWeather:`Konfiguracja pogody`,configSystem:`Konfiguracja systemu`,configPlugins:`Konfiguracja wtyczek`,configModules:`Konfiguracja modułów`},texts:{loadingAudioConfig:`Ładowanie konfiguracji audio...`,loadingDisplayConfig:`Ładowanie konfiguracji wyświetlacza...`,loadingLanguageConfig:`Ładowanie konfiguracji języka...`,loadingWeatherConfig:`Ładowanie konfiguracji pogody...`,loadingSystemConfig:`Ładowanie konfiguracji systemu...`,loadingPluginConfig:`Ładowanie konfiguracji wtyczki...`,loadingModuleConfig:`Ładowanie konfiguracji modułu...`,misc:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`},secret:{stored:`Wartość jest zapisana. Wprowadź nową, aby ją zastąpić.`,willBeRemoved:`Zapisana wartość zostanie usunięta po zapisaniu.`}},fields:{speaker:{title:`Głośnik`,placeholder:`Włącz lub wyłącz głośnik`,values:{enabled:`Włączony`,disabled:`Wyłączony`}},speakerVolume:{title:`Głośność głośnika`},microphone:{title:`Mikrofon`,placeholder:`Włącz lub wyłącz mikrofon`,values:{enabled:`Włączony`,disabled:`Wyłączony`}},microphoneVolume:{title:`Głośność mikrofonu`},darkMode:{title:`Tryb motywu`,placeholder:`Wybierz tryb jasny lub ciemny`,values:{dark:`Ciemny`,light:`Jasny`}},brightness:{title:`Jasność`},screenLockDuration:{title:`Blokada ekranu`,placeholder:`Ustaw opóźnienie blokady ekranu`,values:{enabled:`Włączony`,disabled:`Wyłączony`}},screenSaver:{title:`Wygaszacz ekranu`,placeholder:`Włącz lub wyłącz wygaszacz ekranu`,values:{enabled:`Włączony`,disabled:`Wyłączony`}},language:{title:`Język`,placeholder:`Wybierz preferowany język`},timezone:{title:`Strefa czasowa`,placeholder:`Wybierz strefę czasową`},timeFormat:{title:`Format czasu`,placeholder:`Wybierz preferowany format czasu`},locationType:{title:`Typ lokalizacji pogody`,placeholder:`Wybierz sposób pobierania pogody`},coordinates:{title:`Współrzędne lokalizacji`},latitude:{title:`Szerokość geograficzna`,placeholder:`Szerokość geograficzna`},longitude:{title:`Długość geograficzna`,placeholder:`Długość geograficzna`},cityName:{title:`Nazwa miasta`,placeholder:`Wpisz nazwę miasta, możliwe dodanie stanu i kodu kraju`},cityId:{title:`ID miasta lokalizacji`,placeholder:`Wybierz miasta obsługiwane przez OpenWeather`},zipCode:{title:`Kod pocztowy lokalizacji`,placeholder:`Wyszukaj po kodzie pocztowym, możliwe dodanie kodu kraju`},unit:{title:`Jednostka temperatury`,placeholder:`Wybierz jednostkę temperatury`},openWeatherApiKey:{title:`Klucz API Open Weather`,placeholder:`Twój klucz API usługi Open Weather do dostępu do danych pogodowych`},logLevels:{title:`Poziomy logowania`,placeholder:`Wybierz, które poziomy logowania mają być monitorowane`}},buttons:{save:{title:`Zapisz`},myLocation:{title:`Moja lokalizacja`},discard:{title:`Odrzuć`},close:{title:`Zamknij`},retry:{title:`Ponów`},yes:{title:`Tak`},no:{title:`Nie`},removeSecret:{title:`Usuń`},keepSecret:{title:`Zachowaj`}},languages:{en_US:`angielski`,cs_CZ:`Czeski`},timeFormats:{"12h":`Format 12-godzinny`,"24h":`Format 24-godzinny`},locationTypes:{lat_lon:`Współrzędne geograficzne`,city_name:`Nazwa miasta`,city_id:`ID miasta OpenWeather`,zip_code:`Kod pocztowy`},weatherUnits:{celsius:`Celsjusz`,fahrenheit:`Fahrenheita`},screenLockDurations:{"15s":`15 s`,"30s":`lata 30`,"60s":`1min`,"120s":`2 minuty`,"300s":`5 minut`,"600s":`10 minut`,"1800s":`30 minut`,"0s":`Nigdy`},logLevels:{silent:`Cichy`,verbose:`Szczegółowy`,debug:`Odpluskwić`,trace:`Namierzać`,log:`Dziennik`,info:`Informacje`,success:`Sukces`,warn:`Ostrzeżenie`,error:`Błąd`,fail:`Niepowodzenie`,fatal:`Krytyczny`}},"sk-SK":{menu:{title:`Konfigurácia`,modules:`Moduly`,plugins:`Pluginy`},meta:{config:{title:`Konfigurácia`},configAudio:{title:`Konfigurácia zvuku`},configDisplay:{title:`Konfigurácia displeja`},configLanguage:{title:`Konfigurácia jazyka`},configWeather:{title:`Konfigurácia počasia`},configSystem:{title:`Konfigurácia systému`},configPlugins:{title:`Konfigurácia pluginov`},configModules:{title:`Konfigurácia modulov`},configModuleEdit:{title:`Upraviť modul: {module}`},configPluginEdit:{title:`Upraviť plugin: {plugin}`}},breadcrumbs:{config:`konfigurácia`,configAudio:`konfigurácia zvuku`,configDisplay:`konfigurácia displeja`,configLanguage:`konfigurácia jazyka`,configWeather:`konfigurácia počasia`,configSystem:`konfigurácia systému`,configPlugins:`konfigurácia pluginov`,configModules:`konfigurácia modulov`},messages:{loadError:`Nepodarilo sa načítať konfiguráciu`,configAudio:{edited:`Zmeny uložené! Konfigurácia zvuku bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie zvuku nebola úspešná.`},configDisplay:{edited:`Zmeny uložené! Konfigurácia displeja bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie displeja nebola úspešná.`},configLanguage:{edited:`Zmeny uložené! Konfigurácia jazyka bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie jazyka nebola úspešná.`},configWeather:{edited:`Zmeny uložené! Konfigurácia počasia bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie počasia nebola úspešná.`},configSystem:{edited:`Zmeny uložené! Konfigurácia systému bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie systému nebola úspešná.`},configPlugin:{edited:`Zmeny uložené! Konfigurácia pluginu bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie pluginu nebola úspešná.`},configModule:{edited:`Zmeny uložené! Konfigurácia modulu bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie modulu nebola úspešná.`},moduleConfigNotFound:{title:`Konfigurácia modulu nebola nájdená`,message:`Konfiguráciu modulu "{module}" sa nepodarilo načítať. Skontrolujte, či je modul správne nainštalovaný a nakonfigurovaný.`},moduleNotFound:{title:`Modul nebol nájdený`,message:`Modul "{module}" nebol nájdený v systéme. Overte, či je modul nainštalovaný a povolený.`},moduleElementNotFound:{title:`Element modulu nie je zaregistrovaný`,message:`Konfiguračný element pre modul "{module}" nie je zaregistrovaný. Tento modul nemusí podporovať úpravu konfigurácie.`},moduleComponentsNotFound:{message:`Modul "{module}" nemá dostupné žiadne konfiguračné komponenty.`},moduleFormNotFound:{title:`Konfiguračný formulár nie je dostupný`,message:`Komponent konfiguračného formulára pre modul "{module}" nie je dostupný. Tento modul nemusí podporovať úpravu konfigurácie cez používateľské rozhranie.`},pluginConfigNotFound:{title:`Konfigurácia pluginu nebola nájdená`,message:`Konfiguráciu pluginu "{plugin}" sa nepodarilo načítať. Skontrolujte, či je plugin správne nainštalovaný a nakonfigurovaný.`},pluginNotFound:{title:`Plugin nebol nájdený`,message:`Plugin "{plugin}" nebol nájdený v systéme. Overte, či je plugin nainštalovaný a povolený.`},pluginElementNotFound:{title:`Element pluginu nie je zaregistrovaný`,message:`Konfiguračný element pre plugin "{plugin}" nie je zaregistrovaný. Tento plugin nemusí podporovať úpravu konfigurácie.`},pluginComponentsNotFound:{message:`Plugin "{plugin}" nemá dostupné žiadne konfiguračné komponenty.`},pluginFormNotFound:{title:`Konfiguračný formulár nie je dostupný`,message:`Komponent konfiguračného formulára pre plugin "{plugin}" nie je dostupný. Tento plugin nemusí podporovať úpravu konfigurácie cez používateľské rozhranie.`}},headings:{config:`Konfigurácia`,misc:{discard:`Zahodiť zmeny`}},subHeadings:{config:`Konfigurácia smart panelu`,configModule:`Konfigurácia modulu`,configPlugin:`Konfigurácia pluginu`},tabs:{configAudio:`Konfigurácia zvuku`,configDisplay:`Konfigurácia displeja`,configLanguage:`Konfigurácia jazyka`,configWeather:`Konfigurácia počasia`,configSystem:`Konfigurácia systému`,configPlugins:`Konfigurácia pluginov`,configModules:`Konfigurácia modulov`},texts:{loadingAudioConfig:`Načítavanie konfigurácie zvuku...`,loadingDisplayConfig:`Načítavanie konfigurácie displeja...`,loadingLanguageConfig:`Načítavanie konfigurácie jazyka...`,loadingWeatherConfig:`Načítavanie konfigurácie počasia...`,loadingSystemConfig:`Načítavanie konfigurácie systému...`,loadingPluginConfig:`Načítavanie konfigurácie pluginu...`,loadingModuleConfig:`Načítavanie konfigurácie modulu...`,misc:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`},secret:{stored:`Hodnota je uložená. Zadajte novú na jej nahradenie.`,willBeRemoved:`Uložená hodnota sa po uložení odstráni.`}},fields:{speaker:{title:`Reproduktor`,placeholder:`Povoliť alebo zakázať reproduktor`,values:{enabled:`Povolený`,disabled:`Zakázaný`}},speakerVolume:{title:`Hlasitosť reproduktora`},microphone:{title:`Mikrofón`,placeholder:`Povoliť alebo zakázať mikrofón`,values:{enabled:`Povolený`,disabled:`Zakázaný`}},microphoneVolume:{title:`Hlasitosť mikrofónu`},darkMode:{title:`Režim témy`,placeholder:`Vyberte si medzi svetlým a tmavým režimom`,values:{dark:`Tmavý`,light:`Svetlý`}},brightness:{title:`Jas`},screenLockDuration:{title:`Uzamknutie obrazovky`,placeholder:`Nastaviť oneskorenie uzamknutia obrazovky`,values:{enabled:`Povolené`,disabled:`Zakázané`}},screenSaver:{title:`Šetrič obrazovky`,placeholder:`Povoliť alebo zakázať šetrič obrazovky`,values:{enabled:`Povolený`,disabled:`Zakázaný`}},language:{title:`Jazyk`,placeholder:`Vyberte svoj preferovaný jazyk`},timezone:{title:`Časové pásmo`,placeholder:`Vyberte svoje časové pásmo`},timeFormat:{title:`Formát času`,placeholder:`Vyberte svoj preferovaný formát času`},locationType:{title:`Typ polohy počasia`,placeholder:`Vyberte spôsob načítania počasia`},coordinates:{title:`Súradnice polohy`},latitude:{title:`Zemepisná šírka`,placeholder:`Zemepisná šírka`},longitude:{title:`Zemepisná dĺžka`,placeholder:`Zemepisná dĺžka`},cityName:{title:`Názov mesta`,placeholder:`Vyplňte názov mesta, je možné pridať štát a kód krajiny`},cityId:{title:`ID mesta`,placeholder:`Vyberte mestá podporované OpenWeather`},zipCode:{title:`PSČ`,placeholder:`Vyhľadávanie podľa PSČ, je možné pridať kód krajiny`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`},openWeatherApiKey:{title:`API kľúč Open Weather`,placeholder:`Váš API kľúč služby Open Weather na prístup k údajom o počasí`},logLevels:{title:`Úrovne logovania`,placeholder:`Vyberte, ktoré úrovne logovania majú byť monitorované`}},buttons:{save:{title:`Uložiť`},myLocation:{title:`Moja poloha`},discard:{title:`Zahodiť`},close:{title:`Zavrieť`},retry:{title:`Skúsiť znova`},yes:{title:`Áno`},no:{title:`Nie`},removeSecret:{title:`Odstrániť`},keepSecret:{title:`Ponechať`}},languages:{en_US:`Angličtina`,cs_CZ:`Česky`},timeFormats:{"12h":`12-hodinový formát`,"24h":`24-hodinový formát`},locationTypes:{lat_lon:`Súradnice šírky a dĺžky`,city_name:`Názov mesta`,city_id:`OpenWeather ID mesta`,zip_code:`PSČ`},weatherUnits:{celsius:`Celzia`,fahrenheit:`Fahrenheita`},screenLockDurations:{"15s":`15s`,"30s":`30-te roky`,"60s":`1 min`,"120s":`2 min`,"300s":`5 min`,"600s":`10 min`,"1800s":`30 min`,"0s":`Nikdy`},logLevels:{silent:`Tichý`,verbose:`Podrobný`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Úspech`,warn:`Varovanie`,error:`Chyba`,fail:`Zlyhanie`,fatal:`Fatálne`}}},pe=[{path:`config`,name:I.CONFIG,component:()=>M(()=>import(`./layout-config-D3Rl8nnp.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])),meta:{guards:{authenticated:!0,roles:[u.admin,u.owner]},title:()=>f.global.t(`configModule.menu.title`),icon:`mdi:cog`,menu:2e3},redirect:()=>({name:I.CONFIG_MODULES}),children:[{path:`modules`,name:I.CONFIG_MODULES,component:()=>M(()=>import(`./view-config-modules-B5GC5QVM.js`),__vite__mapDeps([13,1,2,3,14,4,5,15,16,17,18,19,11,20])),props:!1,meta:{guards:{authenticated:!0,roles:[u.admin,u.owner]},title:()=>f.global.t(`configModule.menu.modules`),icon:`mdi:package-variant`,menu:4e3},children:[{path:`:module`,name:I.CONFIG_MODULE_EDIT,component:()=>M(()=>import(`./view-config-module-edit-DKx624EL.js`),__vite__mapDeps([21,1,2,3,14,4,5,22,23,11,24,25,18,19])),props:!0,meta:{guards:{authenticated:!0,roles:[u.admin,u.owner]}}}]},{path:`plugins`,name:I.CONFIG_PLUGINS,component:()=>M(()=>import(`./view-config-plugins-vIUqs1BF.js`),__vite__mapDeps([26,1,2,3,14,4,5,15,16,17,27,19,11,28])),props:!1,meta:{guards:{authenticated:!0,roles:[u.admin,u.owner]},title:()=>f.global.t(`configModule.menu.plugins`),icon:`mdi:toy-brick`,menu:3e3},children:[{path:`:plugin`,name:I.CONFIG_PLUGIN_EDIT,component:()=>M(()=>import(`./view-config-plugin-edit-D880lhC9.js`),__vite__mapDeps([29,1,2,3,14,4,5,22,23,11,30,27,19])),props:!0,meta:{guards:{authenticated:!0,roles:[u.admin,u.owner]}}}]}]}],H=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ConfigException`,this.exception=t}},U=class extends H{code;constructor(e,t=null,n=null){super(e,n),this.name=`ConfigApiException`,this.code=t}},W=class extends H{constructor(e,t=null){super(e,t),this.name=`ConfigValidationException`}},G=x({type:P(),enabled:k().default(!1)});x({fetching:x({items:k().default(!1),item:E(P())}),updating:E(P())}),x({type:P(),data:y({})}),x({data:x({type:P()})}),x({type:P(),force:k().optional()});var me=x({data:x({type:P()})}),K=x({type:P(),enabled:k().optional()}),he=x({type:P(),enabled:k()}),q=(e,t)=>{let n=t.safeParse(C(e));if(!n.success)throw A.error(`Schema validation failed with:`,n.error),new W(`Failed to validate received module config data.`);return n.data},ge=(e,t)=>{let n=t.safeParse(O(e));if(!n.success)throw A.error(`Schema validation failed with:`,n.error),new W(`Failed to validate update module config request.`);return n.data},_e={fetching:{items:!1,item:[]},updating:[]},ve=S(`config-module_config_module`,()=>{let e=D(),t=b(),{getElement:n}=ne(),i=r(_e),a=r(!1),o=r({}),s=()=>a.value,l=e=>i.value.fetching.item.includes(e),u=()=>i.value.fetching.items,d=()=>Object.values(o.value),f=e=>o.value[e]??null,p={},m={},h=0,g=()=>++h,_={},v={},y=e=>{v[e]=(v[e]??0)+1},x=e=>{let t=(v[e]??1)-1;t>0?v[e]=t:delete v[e]},S=e=>(v[e]??0)>0,C=new Set,w=(e,t=g())=>(_[e.type]??0)>t?o.value[e.type]??e:(_[e.type]=t,o.value[e.type]=e),E=e=>i.value.updating.includes(e),O=e=>{let t=n(e.type);return k({data:q(e.data,t?.schemas?.moduleConfigSchema||G)})},k=e=>{let r=n(e.data.type);if(o.value&&e.data.type in o.value){let n=(r?.schemas?.moduleConfigSchema||G).safeParse({...o.value[e.data.type],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert module configuration.`);return w(n.data)}let i=(r?.schemas?.moduleConfigSchema||G).safeParse(e.data);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new W(`Failed to insert module config.`);return o.value??={},w(i.data)},A=async t=>{let r=p[t.type];if(r&&!t.force)return r;let a=(async()=>{if(r&&await r.catch(()=>void 0),i.value.fetching.item.includes(t.type))throw new U(`Already getting module config.`);i.value.fetching.item.push(t.type);let a=g(),s=S(t.type);try{let{data:r,error:i,response:l}=await e.client.GET(`/${c}/${F}/config/module/{module}`,{params:{path:{module:t.type}}});if(r!==void 0){let e=n(r.data.type),i=q(r.data,e?.schemas?.moduleConfigSchema||G);return s?(t.force&&j(t.type),o.value[t.type]??i):w(i,a)}let u=`Failed to fetch module config.`;throw i&&(u=T(i,u)),new U(u,l.status)}finally{i.value.fetching.item=i.value.fetching.item.filter(e=>e!==t.type)}})();p[t.type]=a;try{return await a}finally{p[t.type]===a&&delete p[t.type]}},j=e=>{if(S(e)){C.add(e);return}A({type:e,force:!0}).catch(e=>{t.error(`Failed to re-read module config after a write settled`,e)})},M=async()=>{if(`all`in m)return m.all;let t=(async()=>{if(i.value.fetching.items)throw new U(`Already fetching modules config.`);i.value.fetching.items=!0;let t=g(),r=new Set(Object.keys(v));try{let{data:i,error:s,response:l}=await e.client.GET(`/${c}/${F}/config/modules`);if(i!==void 0){let e={};for(let a of i.data){let i=q(a,n(a.type)?.schemas?.moduleConfigSchema||G);if(r.has(i.type)||(_[i.type]??0)>t){let t=o.value[i.type];t&&(e[i.type]=t);continue}e[i.type]=i,_[i.type]=t}for(let[n,r]of Object.entries(_))r>t&&!(n in e)&&o.value[n]&&(e[n]=o.value[n]);for(let t of r)!(t in e)&&o.value[t]&&(e[t]=o.value[t]),j(t);let s=new Set([...Object.keys(o.value),...Object.keys(_),...Object.keys(p)]);for(let n of s)!(n in e)&&!r.has(n)&&(_[n]=t);return o.value=e,a.value=!0,Object.values(o.value)}let u=`Failed to fetch modules config.`;throw s&&(u=T(s,u)),new U(u,l.status)}finally{i.value.fetching.items=!1}})();m.all=t;try{return await t}finally{delete m.all}};return{isLoaded:()=>s()||d().length>0,refresh:()=>M(),semaphore:i,firstLoad:a,data:o,firstLoadFinished:s,getting:l,fetching:u,findAll:d,findByType:f,updating:E,onEvent:O,set:k,get:A,fetch:M,edit:async r=>{if(i.value.updating.includes(r.data.type))throw new H(`Module config is already being updated.`);if(!(r.data.type in o.value))throw new H(`Failed to get module config data to update.`);let a=me.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new W(`Failed to edit module config.`);let s=n(r.data.type),l=(s?.schemas?.moduleConfigSchema||G).safeParse({...o.value[r.data.type],...(0,V.omitBy)(r.data,V.isUndefined)});if(!l.success)throw t.error(`Schema validation failed with:`,l.error),new W(`Failed to edit module.`);i.value.updating.push(r.data.type),w(l.data);let u=g();y(r.data.type);let d=!1,f=()=>{d||(d=!0,x(r.data.type),!S(r.data.type)&&C.delete(r.data.type)&&j(r.data.type))};try{let{data:t,error:n,response:i}=await e.client.PATCH(`/${c}/${F}/config/module/{module}`,{params:{path:{module:r.data.type}},body:{data:ge(l.data,s?.schemas?.moduleConfigUpdateReqSchema||K)}});if(f(),t!==void 0){let e=q(t.data,s?.schemas?.moduleConfigSchema||G);return w(e,u)}await A({type:r.data.type,force:!0});let a=`Failed to update module config.`;throw n&&(a=T(n,a)),new U(a,i.status)}finally{f(),i.value.updating=i.value.updating.filter(e=>e!==r.data.type)}}}}),ye=e=>ve(e),J=x({type:P(),enabled:k().default(!1)});x({fetching:x({items:k().default(!1),item:E(P())}),updating:E(P())}),x({type:P(),data:y({})}),x({data:x({type:P()})}),x({type:P(),force:k().optional()});var be=x({data:x({type:P()})}),Y=x({type:P(),enabled:k().optional()}),xe=x({type:P(),enabled:k()}),X=(e,t)=>{let n=t.safeParse(C(e));if(!n.success)throw A.error(`Schema validation failed with:`,n.error),new W(`Failed to validate received plugin config data.`);return n.data},Z=(e,t)=>{let n=t.safeParse(O(e));if(!n.success)throw A.error(`Schema validation failed with:`,n.error),new W(`Failed to validate update plugin config request.`);return n.data},Se={fetching:{items:!1,item:[]},updating:[]},Ce=S(`config-module_config_plugin`,()=>{let e=D(),t=b(),{getElement:n}=re(),i=r(Se),a=r(!1),o=r({}),s=()=>a.value,l=e=>i.value.fetching.item.includes(e),u=()=>i.value.fetching.items,d=()=>Object.values(o.value),f=e=>o.value[e]??null,p={},m={},h=0,g=()=>++h,_={},v={},y=e=>{v[e]=(v[e]??0)+1},x=e=>{let t=(v[e]??1)-1;t>0?v[e]=t:delete v[e]},S=e=>(v[e]??0)>0,C=new Set,w=(e,t=g())=>(_[e.type]??0)>t?o.value[e.type]??e:(_[e.type]=t,o.value[e.type]=e),E=e=>i.value.updating.includes(e),O=e=>{let t=n(e.type);return k({data:X(e.data,t?.schemas?.pluginConfigSchema||J)})},k=e=>{let r=n(e.data.type);if(o.value&&e.data.type in o.value){let n=(r?.schemas?.pluginConfigSchema||J).safeParse({...o.value[e.data.type],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new W(`Failed to insert plugin configuration.`);return w(n.data)}let i=(r?.schemas?.pluginConfigSchema||J).safeParse(e.data);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new W(`Failed to insert plugin config.`);return o.value??={},w(i.data)},A=async t=>{let r=p[t.type];if(r&&!t.force)return r;let a=(async()=>{if(r&&await r.catch(()=>void 0),i.value.fetching.item.includes(t.type))throw new U(`Already getting plugin config.`);i.value.fetching.item.push(t.type);let a=g(),s=S(t.type);try{let{data:r,error:i,response:l}=await e.client.GET(`/${c}/${F}/config/plugin/{plugin}`,{params:{path:{plugin:t.type}}});if(r!==void 0){let e=n(r.data.type),i=X(r.data,e?.schemas?.pluginConfigSchema||J);return s?(t.force&&j(t.type),o.value[t.type]??i):w(i,a)}let u=`Failed to fetch plugin config.`;throw i&&(u=T(i,u)),new U(u,l.status)}finally{i.value.fetching.item=i.value.fetching.item.filter(e=>e!==t.type)}})();p[t.type]=a;try{return await a}finally{p[t.type]===a&&delete p[t.type]}},j=e=>{if(S(e)){C.add(e);return}A({type:e,force:!0}).catch(e=>{t.error(`Failed to re-read plugin config after a write settled`,e)})},M=async()=>{if(`all`in m)return m.all;let t=(async()=>{if(i.value.fetching.items)throw new U(`Already fetching plugins config.`);i.value.fetching.items=!0;let t=g(),r=new Set(Object.keys(v));try{let{data:i,error:s,response:l}=await e.client.GET(`/${c}/${F}/config/plugins`);if(i!==void 0){let e={};for(let a of i.data){let i=X(a,n(a.type)?.schemas?.pluginConfigSchema||J);if(r.has(i.type)||(_[i.type]??0)>t){let t=o.value[i.type];t&&(e[i.type]=t);continue}e[i.type]=i,_[i.type]=t}for(let[n,r]of Object.entries(_))r>t&&!(n in e)&&o.value[n]&&(e[n]=o.value[n]);for(let t of r)!(t in e)&&o.value[t]&&(e[t]=o.value[t]),j(t);let s=new Set([...Object.keys(o.value),...Object.keys(_),...Object.keys(p)]);for(let n of s)!(n in e)&&!r.has(n)&&(_[n]=t);return o.value=e,a.value=!0,Object.values(o.value)}let u=`Failed to fetch plugins config.`;throw s&&(u=T(s,u)),new U(u,l.status)}finally{i.value.fetching.items=!1}})();m.all=t;try{return await t}finally{delete m.all}};return{isLoaded:()=>s()||d().length>0,refresh:()=>M(),semaphore:i,firstLoad:a,data:o,firstLoadFinished:s,getting:l,fetching:u,findAll:d,findByType:f,updating:E,onEvent:O,set:k,get:A,fetch:M,edit:async r=>{if(i.value.updating.includes(r.data.type))throw new H(`Plugin config is already being updated.`);if(!(r.data.type in o.value))throw new H(`Failed to get plugin config data to update.`);let a=be.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new W(`Failed to edit plugin config.`);let s=n(r.data.type),l=(s?.schemas?.pluginConfigSchema||J).safeParse({...o.value[r.data.type],...(0,V.omitBy)(r.data,V.isUndefined)});if(!l.success)throw t.error(`Schema validation failed with:`,l.error),new W(`Failed to edit tile.`);i.value.updating.push(r.data.type),w(l.data);let u=g();y(r.data.type);let d=!1,f=()=>{d||(d=!0,x(r.data.type),!S(r.data.type)&&C.delete(r.data.type)&&j(r.data.type))};try{let{data:t,error:n,response:i}=await e.client.PATCH(`/${c}/${F}/config/plugin/{plugin}`,{params:{path:{plugin:r.data.type}},body:{data:Z(l.data,s?.schemas?.pluginConfigUpdateReqSchema||Y)}});if(f(),t!==void 0){let e=X(t.data,s?.schemas?.pluginConfigSchema||J);return w(e,u)}await A({type:r.data.type,force:!0});let a=`Failed to update plugin config.`;throw n&&(a=T(n,a)),new U(a,i.status)}finally{f(),i.value.updating=i.value.updating.filter(e=>e!==r.data.type)}},validateConfig:async t=>{let r=n(t.data.type),i=(r?.schemas?.pluginConfigSchema||J).safeParse({...o.value[t.data.type],...(0,V.omitBy)(t.data,V.isUndefined)});if(!i.success)return{valid:!1,errors:[{message:`Local schema validation failed`}]};let{data:a,error:s}=await e.client.POST(`/${c}/${F}/config/plugin/{plugin}/validate`,{params:{path:{plugin:t.data.type}},body:{data:Z(i.data,r?.schemas?.pluginConfigUpdateReqSchema||Y)}});return a?a.data:s?{valid:!1,errors:[{message:T(s,`Validation request failed.`)??`Validation request failed`}]}:{valid:!1,errors:[{message:`Validation request failed`}]}}}}),we=e=>Ce(e),Te=(e,t)=>{let{configModulesStore:n,configPluginsStore:r,logger:i}=t;if(e?.event?.startsWith(`ConfigModule.`)&&!(e.payload===null||typeof e.payload!=`object`))switch(e.event){case oe.CONFIG_UPDATED:{let{source:t,type:a}=e.payload;if(typeof t!=`string`||t===``){i.warn(`Config change event carried no source:`,e.payload);break}a===`module`?n.get({type:t,force:!0}).catch(e=>{i.error(`Failed to refresh a module config after a change event`,e)}):a===`plugin`?r.get({type:t,force:!0}).catch(e=>{i.error(`Failed to refresh a plugin config after a change event`,e)}):i.warn(`Config change event carried an unknown target type:`,String(a));break}default:i.warn(`Unhandled config module event:`,e.event)}},Q=x({path:P().nonempty(),plugins:E(J.catchall(N())),modules:E(G.catchall(N()))});x({getting:k()}),x({data:x({path:P().nonempty(),plugins:E(J.catchall(N())),modules:E(G.catchall(N()))})}),x({data:x({path:P().nonempty(),plugins:E(J.catchall(N())),modules:E(G.catchall(N()))})}),x({path:P().nonempty(),plugins:E(x({type:P(),enabled:k()}).catchall(N())),modules:E(x({type:P(),enabled:k()}).catchall(N()))}).catchall(N());var Ee=e=>{let t=Q.safeParse(C(e));if(!t.success)throw A.error(`Schema validation failed with:`,t.error),new W(`Failed to validate received system config data.`);return t.data},De={getting:!1},Oe=S(`config-module_config_app`,()=>{let e=D(),n=b(),i=m(),a=r(De),o=r(!1),s=r(null),l=null,u=null,d=t(()=>(l??=p(i.getStore(_)).data,u??=p(i.getStore(j)).data,s.value===null?null:{path:s.value.path,plugins:Object.values(l.value),modules:Object.values(u.value)})),f=()=>o.value,h=()=>a.value.getting,g=null,v=e=>y({data:Ee(e.data)}),y=e=>{let t=Q.safeParse(e.data);if(!t.success)throw n.error(`Schema validation failed with:`,t.error),new W(`Failed to insert app config.`);let r=i.getStore(_),a=i.getStore(j);for(let e of t.data.plugins)r.set({data:e});for(let e of t.data.modules)a.set({data:e});return s.value={path:t.data.path},t.data},x=async()=>{if(g)return g;let t=(async()=>{if(a.value.getting)throw new U(`Already getting app config.`);a.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${c}/${F}/config`);if(t!==void 0){let e=Ee(t.data),n=i.getStore(_),r=i.getStore(j);for(let t of e.plugins)n.set({data:t});for(let t of e.modules)r.set({data:t});return s.value={path:e.path},e}let a=`Failed to fetch app config.`;throw n&&(a=T(n,a)),new U(a,r.status)}finally{a.value.getting=!1}})();g=t;try{return await t}finally{g=null}};return{isLoaded:()=>d.value!==null,refresh:()=>x(),semaphore:a,firstLoad:o,data:d,firstLoadFinished:f,getting:h,onEvent:v,set:y,get:x}}),ke=e=>Oe(e),Ae=Symbol(`FB-Module-Config`),je={install:(e,t)=>{let n=m(e),r=d(e),i=ee(e),a=te(e),o=B(e);for(let[e,n]of Object.entries(fe)){let r=(0,V.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{configModule:n});t.i18n.global.setLocaleMessage(e,r)}let c=ke(t.store);e.provide(w,c),n.addStore(w,c),a.addModule(Ae,{type:se,name:`Configuration`,description:`Adjust system behaviour, appearance, language, and integrations.`,elements:[]});let l=we(t.store);e.provide(_,l),n.addStore(_,l);let u=ye(t.store);e.provide(j,u),n.addStore(j,u),t.router.getRoutes().find(e=>e.name===s.ROOT)&&pe.forEach(e=>{t.router.addRoute(s.ROOT,e)}),o.register(Ae,()=>R([c,u,l])),r.on(`event`,e=>Te(e,{configModulesStore:u,configPluginsStore:l,logger:i})),t.router.isReady().then(()=>{l.firstLoadFinished()===!1&&l.fetch().catch(()=>{}),u.firstLoadFinished()===!1&&u.fetch().catch(()=>{})})}};L.NONE,L.NONE;var Me=()=>{let e=m().getStore(w),{data:n,semaphore:r}=p(e);return{configApp:t(()=>n.value),isLoading:t(()=>n.value===null&&r.value.getting),fetchConfigApp:async()=>{await e.get()}}},Ne=G,Pe=({config:n,messages:s})=>{let c=m(),{module:l}=le({name:n.type}),u=t(()=>l.value?.elements?.find(e=>e.type===ae)),d=c.getStore(j),{t:f}=i(),p=v(),g=b(),_=r(L.NONE),y,x=a(n),S=h(e(x)),C=r(void 0),w=r(!1),T=async()=>{let e=s&&s.error?s.error:f(`configModule.messages.configModule.notEdited`);if(C.value.clearValidate(),!await C.value.validate())throw new W(`Form not valid`);let t=(u.value?.schemas?.moduleConfigEditFormSchema||Ne).safeParse(x);if(!t.success)throw g.error(`Schema validation failed with:`,t.error),new W(`Failed to validate create module model.`);_.value=L.WORKING;try{await d.edit({data:{...t.data,type:n.type}})}catch(t){throw _.value=L.ERROR,y=window.setTimeout(E,2e3),t instanceof U&&t.code===422?p.error(t.message):p.error(e),t}return _.value=L.OK,y=window.setTimeout(E,2e3),p.success(f(s&&s.success?s.success:`configModule.messages.configModule.edited`)),w.value=!1,`saved`},E=()=>{window.clearTimeout(y),_.value=L.NONE};return o(x,()=>{w.value=!(0,V.isEqual)(e(x),S)}),{model:x,formEl:C,formChanged:w,submit:T,clear:E,formResult:_}},Fe=()=>{let e=m().getStore(_),{firstLoad:n,semaphore:r}=p(e),i=t(()=>e.findAll()),a=async(t=!1)=>{s.value&&!t||await e.fetch()},o=t(()=>r.value.fetching.items||!n.value),s=t(()=>n.value);return{configPlugins:i,areLoading:o,loaded:s,enabled:t=>e.findByType(t)?.enabled??!1,fetchConfigPlugins:a}},$=x({type:P().trim().nonempty(),enabled:k().default(!1)}),Ie=({config:n,messages:s})=>{let c=m(),{plugin:l}=ce({name:n.type}),u=t(()=>l.value?.elements?.find(e=>e.type===ie)),d=c.getStore(_),{t:f}=i(),p=v(),g=b(),y=r(L.NONE),x,S=a(n),C=h(e(S)),w=r(void 0),T=r(!1),E=()=>{C=h(e(S)),T.value=!1},D=e=>{let t=S,n=e;for(let e of Object.keys(t))e in n||delete t[e];Object.assign(t,n)},O=async()=>{let e=s&&s.error?s.error:f(`configModule.messages.configPlugin.notEdited`);if(w.value.clearValidate(),!await w.value.validate())throw new W(`Form not valid`);let t=(u.value?.schemas?.pluginConfigEditFormSchema||$).safeParse(S);if(!t.success)throw g.error(`Schema validation failed with:`,t.error),new W(`Failed to validate create tile model.`);y.value=L.WORKING;let r;try{r=await d.edit({data:{...t.data,type:n.type}})}catch(t){throw y.value=L.ERROR,x=window.setTimeout(k,2e3),t instanceof U&&t.code===422?p.error(t.message):p.error(e),t}return D(r),E(),y.value=L.OK,x=window.setTimeout(k,2e3),p.success(f(s&&s.success?s.success:`configModule.messages.configPlugin.edited`)),`saved`},k=()=>{window.clearTimeout(x),y.value=L.NONE};return o(S,()=>{T.value=!(0,V.isEqual)(e(S),C)}),{model:S,formEl:w,formChanged:T,submit:O,clear:k,formResult:y,markSaved:E}};export{R as _,Ne as a,xe as c,he as d,G as f,de as g,B as h,Pe as i,J as l,ue as m,$ as n,Me as o,K as p,Fe as r,je as s,Ie as t,Y as u};
@@ -1 +0,0 @@
1
- import{a as e,bt as t,ct as n,ft as r,gt as i,ht as a,ot as o,st as s,xt as c,yt as l}from"./common-CoPMwt15.js";import{a as u,d,o as f}from"./types-DNTr_87G.js";import"./composables-fi_xPbcU.js";var p=i({id:d,type:l().trim().nonempty(),draft:s().default(!1),title:l().trim().nonempty(),icon:l().trim().nullable().default(null),order:a().default(0),showTopBar:s().default(!0),displays:o(l().uuid()).nullable().default(null),createdAt:t([l().datetime({offset:!0}),n()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:t([l().datetime({offset:!0}),n()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});i({fetching:i({items:s().default(!1),item:o(d)}),creating:o(d),updating:o(d),deleting:o(d)}),i({id:d,type:l().trim().nonempty(),data:r({})}),i({id:d,data:i({type:l().trim().nonempty(),title:l().trim().nonempty(),icon:l().trim().transform(e=>e===``?null:e).nullable().default(null).optional(),order:a().default(0),showTopBar:s().default(!0),displays:o(l().uuid()).nullable().default(null)}).catchall(c())}),i({id:d}),i({id:d});var m=i({id:d.optional().default(e()),draft:s().optional().default(!1),data:i({type:l().trim().nonempty(),title:l().trim().nonempty(),icon:l().trim().transform(e=>e===``?null:e).nullable().default(null).optional(),order:a().default(0),showTopBar:s().default(!0).optional(),displays:o(l().uuid()).nullable().optional()}).catchall(c())}),h=i({id:d,data:i({type:l().trim().nonempty(),title:l().trim().optional(),icon:l().trim().transform(e=>e===``?null:e).nullable().default(null).optional(),order:a().optional(),showTopBar:s().optional(),displays:o(l().uuid()).nullable().optional()}).catchall(c())});i({id:d}),i({id:d}),i({ids:o(d).nonempty()});var g=i({succeeded:o(l()),failed:o(i({id:l(),reason:l()}))}),_=i({id:l().uuid().optional(),type:l().trim().nonempty(),title:l().trim().nonempty(),icon:l().trim().transform(e=>e===``?null:e).nullable().optional(),order:a(),show_top_bar:s().optional(),displays:o(l().uuid()).nullable().optional()}),v=i({type:l().trim().nonempty(),title:l().trim().nonempty().optional(),icon:l().trim().transform(e=>e===``?null:e).nullable().optional(),order:a().optional(),show_top_bar:s().optional(),displays:o(l().uuid()).nullable().optional()}),y=i({id:l().uuid(),type:l().trim().nonempty(),title:l().trim().nonempty(),icon:l().trim().nullable(),order:a(),show_top_bar:s(),data_source:o(f),displays:o(l().uuid()).nullable(),created_at:l().date(),updated_at:l().date().nullable()}),b=i({id:d,type:l().trim().nonempty(),parent:i({id:d,type:l().trim().nonempty()}),draft:s().default(!1),row:a(),col:a(),rowSpan:a().default(1),colSpan:a().default(1),hidden:s().default(!1),createdAt:t([l().datetime({offset:!0}),n()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:t([l().datetime({offset:!0}),n()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});i({fetching:i({items:o(d).default([]),item:o(d)}),creating:o(d),updating:o(d),deleting:o(d)}),i({id:d,parent:i({id:d,type:l().trim().nonempty()}),type:l().trim().nonempty(),data:r({})}),i({id:d,parent:i({id:d,type:l().trim().nonempty()}),data:i({type:l().trim().nonempty(),row:a(),col:a(),rowSpan:a().default(1),colSpan:a().default(1),hidden:s().default(!1)}).catchall(c())}),i({id:d.optional(),parent:i({id:d,type:l().trim().nonempty()}).optional()}),i({id:d,parent:i({id:d,type:l().trim().nonempty()}).optional()}),i({parent:i({id:d,type:l().trim().nonempty()})});var x=i({id:d.optional().default(e()),parent:i({id:d,type:l().trim().nonempty()}),draft:s().optional().default(!1),data:i({type:l().trim().nonempty(),row:a(),col:a(),rowSpan:a().default(1),colSpan:a().default(1),hidden:s().default(!1)}).catchall(c())}),S=i({id:d,parent:i({id:d,type:l().trim().nonempty()}),data:i({type:l().trim().nonempty(),row:a().optional(),col:a().optional(),rowSpan:a().optional(),colSpan:a().optional(),hidden:s().optional()}).catchall(c())});i({id:d,parent:i({id:d,type:l().trim().nonempty()})}),i({id:d,parent:i({id:d,type:l().trim().nonempty()})});var C=i({id:l().uuid().optional(),type:l().trim().nonempty(),parent:i({id:l().uuid(),type:l().trim().nonempty()}),row:a(),col:a(),row_span:a().default(1),col_span:a().default(1),hidden:s().default(!1),data_source:o(u).optional()}),w=i({type:l().trim().nonempty(),parent:i({id:l().uuid(),type:l().trim().nonempty()}),row:a().optional(),col:a().optional(),row_span:a().optional(),col_span:a().optional(),hidden:s().optional()}),T=i({id:l().uuid(),type:l().trim().nonempty(),parent:i({id:l().uuid(),type:l().trim().nonempty()}),row:a(),col:a(),row_span:a(),col_span:a(),hidden:s(),created_at:l().date(),updated_at:l().date().nullable(),data_source:o(f)});export{x as a,y as c,m as d,g as f,w as i,p as l,T as n,S as o,h as p,b as r,_ as s,C as t,v as u};