@fastybird/smart-panel-admin 0.1.0-alpha.5

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 (183) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +187 -0
  3. package/dist/assets/auth.constants-Dls_gTTx.js +1 -0
  4. package/dist/assets/card-add-form-C8k05jix.js +1 -0
  5. package/dist/assets/card-edit-form-B4Wy_x66.js +1 -0
  6. package/dist/assets/chunk-DECur_0Z.js +1 -0
  7. package/dist/assets/common-BY9Gg1EI.css +1 -0
  8. package/dist/assets/common-DlW3qRTQ.js +150 -0
  9. package/dist/assets/components-4pZvmdD8.js +1 -0
  10. package/dist/assets/components-BFT9ksvz.js +1 -0
  11. package/dist/assets/components-BGiFbtPn.css +1 -0
  12. package/dist/assets/components-BTNQr9V1.css +1 -0
  13. package/dist/assets/components-C59v4_pJ.css +1 -0
  14. package/dist/assets/components-CjdlFz1u.css +1 -0
  15. package/dist/assets/components-D8PpAJgM.js +1 -0
  16. package/dist/assets/components-DBRr1g1A.js +1 -0
  17. package/dist/assets/components-DRDcqY-d.js +1 -0
  18. package/dist/assets/components-DSMoiSYB.css +1 -0
  19. package/dist/assets/components-DlofbaXq.js +2 -0
  20. package/dist/assets/components-W7KcmsWr.css +1 -0
  21. package/dist/assets/components-o_FTQqv1.js +1 -0
  22. package/dist/assets/components-tvaQsmsk.js +2 -0
  23. package/dist/assets/composables-BTOG7VNs2.js +1 -0
  24. package/dist/assets/composables-CLHFuu4k.js +1 -0
  25. package/dist/assets/composables-COu_3hI8.js +1 -0
  26. package/dist/assets/composables-CU6q9-8B.js +1 -0
  27. package/dist/assets/composables-CjGTzpGj.js +1 -0
  28. package/dist/assets/composables-Cl0F9F_S.js +1 -0
  29. package/dist/assets/composables-CzSTR7jk.js +1 -0
  30. package/dist/assets/composables-DDYun9ja.js +0 -0
  31. package/dist/assets/composables-Da97cjje.js +1 -0
  32. package/dist/assets/composables-m3XA9ZFJ.js +1 -0
  33. package/dist/assets/dashboard-DilMazDB.js +2 -0
  34. package/dist/assets/dashboard.types-DHlozs9y.js +1 -0
  35. package/dist/assets/data-source-edit-form-mTdgdACg.js +1 -0
  36. package/dist/assets/drawer-Db27jij8.js +1 -0
  37. package/dist/assets/empty-C13Ke09q.js +1 -0
  38. package/dist/assets/extensions.constants-BtEcoiTe.js +1 -0
  39. package/dist/assets/gridstack-DrhE8fGa.css +1 -0
  40. package/dist/assets/gridstack.min-BC6WoZvX.js +3 -0
  41. package/dist/assets/icon-with-child-1Kb-D21P.css +1 -0
  42. package/dist/assets/icon-with-child-DmQ_XhQy.js +12 -0
  43. package/dist/assets/index-DU31qw7A.css +1 -0
  44. package/dist/assets/index-DW2Q2Ef8.js +16 -0
  45. package/dist/assets/input-number-BF0uWlX2.js +1 -0
  46. package/dist/assets/integration-config-dialog-DCF8K0UE.js +1 -0
  47. package/dist/assets/keys-C6Zi4a10.js +1 -0
  48. package/dist/assets/keys-CGGnS6tq.js +1 -0
  49. package/dist/assets/keys-Cm97UJHM.js +1 -0
  50. package/dist/assets/keys-DHSxrtbW.js +1 -0
  51. package/dist/assets/layout-config-Bs73Oq0w.css +1 -0
  52. package/dist/assets/layout-config-DkSTscYx.js +1 -0
  53. package/dist/assets/layout-default-LKbviw7y.js +1 -0
  54. package/dist/assets/layout-default-aEpEfGPk.css +1 -0
  55. package/dist/assets/layout-lock-Cp5xh9ot.js +1 -0
  56. package/dist/assets/layout-profile-ByHuBl2Y.js +1 -0
  57. package/dist/assets/layout-profile-wkO5hDf5.js +1 -0
  58. package/dist/assets/layout-sign-C8xK52Nq.js +1 -0
  59. package/dist/assets/layout-sign-CjJVcqWG.js +1 -0
  60. package/dist/assets/leaflet-src-B49UyrlR.js +1 -0
  61. package/dist/assets/leaflet-src.esm-YKGwaZsZ.js +1 -0
  62. package/dist/assets/list-data-sources-adjust-Bj-0Adap.js +1 -0
  63. package/dist/assets/list-data-sources-adjust-REFqavw6.css +1 -0
  64. package/dist/assets/list-locations-BM5Yvsew.js +1 -0
  65. package/dist/assets/list-users-dBZVseES.js +1 -0
  66. package/dist/assets/logs-entries.transformers-BRzpY2MS.js +1 -0
  67. package/dist/assets/marker-icon-2x-BCzqJChB.js +1 -0
  68. package/dist/assets/marker-icon-JzPv91fE.js +1 -0
  69. package/dist/assets/marker-shadow-tj6c2pB6.js +1 -0
  70. package/dist/assets/page-configure-1ENlHHe8.js +1 -0
  71. package/dist/assets/page-configure-BLho4eEA.js +1 -0
  72. package/dist/assets/page-configure-Bhbyv1tV.css +1 -0
  73. package/dist/assets/page-configure-beBdD2Qu.css +1 -0
  74. package/dist/assets/pages-cards.contants-B5RdaI3z.js +1 -0
  75. package/dist/assets/pages-tiles.constants-Day6cR-b.js +1 -0
  76. package/dist/assets/pagination-BN87kdDs.js +1 -0
  77. package/dist/assets/popover-DOg0KdzK.js +1 -0
  78. package/dist/assets/radio-BmI00y-5.js +1 -0
  79. package/dist/assets/scene-add-form-BcNSeauE.css +1 -0
  80. package/dist/assets/scene-add-form-DdmUnhy5.js +1 -0
  81. package/dist/assets/scene-edit-form-BeXK9ZM1.js +1 -0
  82. package/dist/assets/scene-edit-form-CDPMRZQT.css +1 -0
  83. package/dist/assets/select-data-source-plugin-CtXn9m8K.js +1 -0
  84. package/dist/assets/skeleton-DMwdgp1r.js +1 -0
  85. package/dist/assets/slider-YJlo4Ibo.js +1 -0
  86. package/dist/assets/steps-BIGbhQaO.js +1 -0
  87. package/dist/assets/system.exceptions-Ddzmz1RH.js +1 -0
  88. package/dist/assets/table-5pjI7ihN.js +1 -0
  89. package/dist/assets/tile-detail-COru-nDQ.js +1 -0
  90. package/dist/assets/tile-edit-form-jjo5FbvD.js +1 -0
  91. package/dist/assets/types-B8upWpl6.js +1 -0
  92. package/dist/assets/useBuddyChat-DREu7Tv5.js +1 -0
  93. package/dist/assets/useDataSources-Bx93bXrZ.js +1 -0
  94. package/dist/assets/useDevices-CuJhDHbf.js +1 -0
  95. package/dist/assets/useGeolocation-QxCQnrMH.js +2 -0
  96. package/dist/assets/useGeolocation-vh-t_kPv.css +1 -0
  97. package/dist/assets/useLocation-BM-8kEbz.js +1 -0
  98. package/dist/assets/usePage-DTL4RY9u.js +1 -0
  99. package/dist/assets/useSpaces-DnSZteHf.js +1 -0
  100. package/dist/assets/view-buddy-chat-DKryg2MX.js +1 -0
  101. package/dist/assets/view-card-add-CYZ9eXg5.js +1 -0
  102. package/dist/assets/view-card-edit-C5zcGDFz.js +1 -0
  103. package/dist/assets/view-channel-IJiMTDSG.js +1 -0
  104. package/dist/assets/view-channel-add-YCqERQS-.js +1 -0
  105. package/dist/assets/view-channel-edit-Dnct_m0O.js +1 -0
  106. package/dist/assets/view-channel-property-add-CoaudIGV.js +1 -0
  107. package/dist/assets/view-channel-property-edit-g0J-yPAY.js +1 -0
  108. package/dist/assets/view-channels--BS5J8Ro.js +1 -0
  109. package/dist/assets/view-config-module-edit-RW7YEgut.js +1 -0
  110. package/dist/assets/view-config-modules-Bi5Ib06n.js +1 -0
  111. package/dist/assets/view-config-modules-DvbJyCIK.css +1 -0
  112. package/dist/assets/view-config-plugin-edit-CviUNBYF.js +1 -0
  113. package/dist/assets/view-config-plugins-BBxIkmDq.js +1 -0
  114. package/dist/assets/view-config-plugins-BTCfejmZ.css +1 -0
  115. package/dist/assets/view-data-source-add-3vF7foLh.js +1 -0
  116. package/dist/assets/view-data-source-add-CNRJiOEl.js +1 -0
  117. package/dist/assets/view-data-source-edit-5xrflzsE.js +1 -0
  118. package/dist/assets/view-data-source-edit-BJeCPFQo.js +1 -0
  119. package/dist/assets/view-device-C6EIYm4K.js +1 -0
  120. package/dist/assets/view-device-DvKgjKr8.css +1 -0
  121. package/dist/assets/view-device-add-Dtg4hKNb.js +1 -0
  122. package/dist/assets/view-device-control-D14Yf_3B.js +1 -0
  123. package/dist/assets/view-device-edit-D3wfo1SZ.js +1 -0
  124. package/dist/assets/view-devices-CQyYakG6.js +1 -0
  125. package/dist/assets/view-display-BoDjtT_C.js +1 -0
  126. package/dist/assets/view-display-edit-DOBx3FR9.js +1 -0
  127. package/dist/assets/view-display-tokens-ylzZVdwc.js +1 -0
  128. package/dist/assets/view-displays-Bv-jxEGc.js +1 -0
  129. package/dist/assets/view-extension-detail-BAuEjk3c.js +1 -0
  130. package/dist/assets/view-extension-detail-BjYHp3ZH.css +1 -0
  131. package/dist/assets/view-extensions-xnAarDlC.js +1 -0
  132. package/dist/assets/view-location-BbOLMWOk.js +1 -0
  133. package/dist/assets/view-location-add-B3Bljsk2.js +1 -0
  134. package/dist/assets/view-location-edit-Csq0lDWt.js +1 -0
  135. package/dist/assets/view-locations-DBYp9MTj.css +1 -0
  136. package/dist/assets/view-locations-DF-FXbjv.js +1 -0
  137. package/dist/assets/view-lock-screen-ClIhVZNt.js +1 -0
  138. package/dist/assets/view-not-found-C0Nl0aC-.js +1 -0
  139. package/dist/assets/view-onboarding-vZhyo5Yl.js +1 -0
  140. package/dist/assets/view-page-DCmbFTnE.js +1 -0
  141. package/dist/assets/view-page-add-Cpzp9lXV.js +1 -0
  142. package/dist/assets/view-page-configure-b5zQ9PXr.js +1 -0
  143. package/dist/assets/view-page-configure-c8DaItoq.js +1 -0
  144. package/dist/assets/view-page-data-source-add-CJMzSAGm.js +1 -0
  145. package/dist/assets/view-page-data-source-edit-BI5AXiNz.js +1 -0
  146. package/dist/assets/view-page-edit-fw913SDe.js +1 -0
  147. package/dist/assets/view-page-plugin-BrlvGuEU.js +1 -0
  148. package/dist/assets/view-pages-DVvpvvkt.js +1 -0
  149. package/dist/assets/view-profile-general-jV0TcOZC.js +1 -0
  150. package/dist/assets/view-profile-security-CPgtYKl1.js +1 -0
  151. package/dist/assets/view-scene-add-CT1MOXtu.js +1 -0
  152. package/dist/assets/view-scene-edit-4B1IzMuu.js +1 -0
  153. package/dist/assets/view-scenes-DoDkd08z.js +1 -0
  154. package/dist/assets/view-sign-in-CC7zlx9Q.js +1 -0
  155. package/dist/assets/view-sign-up-B1l4jvOx.js +1 -0
  156. package/dist/assets/view-space-VnVbkvKT.js +1 -0
  157. package/dist/assets/view-space-add-DwONNuir.js +1 -0
  158. package/dist/assets/view-space-edit-44iZOBav.js +1 -0
  159. package/dist/assets/view-spaces-CuuMx0iT.js +1 -0
  160. package/dist/assets/view-spaces-onboarding-CN6qrfN6.js +1 -0
  161. package/dist/assets/view-stats-F8sYkha0.js +1 -0
  162. package/dist/assets/view-system-info-AVyQIUWe.js +1 -0
  163. package/dist/assets/view-system-log-detail-sgFgbNjX.js +1 -0
  164. package/dist/assets/view-system-logs-eIoNhI5c.js +1 -0
  165. package/dist/assets/view-tile-add-B7mnK_PA.js +1 -0
  166. package/dist/assets/view-tile-add-Yt_KOkky.js +1 -0
  167. package/dist/assets/view-tile-data-source-add-DxaZd4Dp.js +1 -0
  168. package/dist/assets/view-tile-data-source-edit-jzGg3dBQ.js +1 -0
  169. package/dist/assets/view-tile-edit-b2LCLrB5.js +1 -0
  170. package/dist/assets/view-tile-edit-hbO-vs_Y.js +1 -0
  171. package/dist/assets/view-tile-edit-kHjMhT9e.js +1 -0
  172. package/dist/assets/view-tile-t4cTwgz2.js +1 -0
  173. package/dist/assets/view-user-add-CdlbezB7.js +1 -0
  174. package/dist/assets/view-user-edit-S0Up49jC.js +1 -0
  175. package/dist/assets/view-users-B-m50sCU.js +1 -0
  176. package/dist/assets/vue-meta.esm-browser.min-3_YV25pX.js +1 -0
  177. package/dist/assets/weather-751GlpD1.js +2 -0
  178. package/dist/assets/weather-BKeryvnv.css +1 -0
  179. package/dist/assets/weather-forecast.transformers-CxZiOJKt.js +1 -0
  180. package/dist/assets/weather-icon-CkuFNv0P.js +1 -0
  181. package/dist/favicon.ico +0 -0
  182. package/dist/index.html +93 -0
  183. package/package.json +155 -0
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/view-devices-CQyYakG6.js","assets/icon-with-child-DmQ_XhQy.js","assets/chunk-DECur_0Z.js","assets/icon-with-child-1Kb-D21P.css","assets/common-DlW3qRTQ.js","assets/common-BY9Gg1EI.css","assets/components-DlofbaXq.js","assets/composables-CLHFuu4k.js","assets/useDevices-CuJhDHbf.js","assets/keys-Cm97UJHM.js","assets/logs-entries.transformers-BRzpY2MS.js","assets/system.exceptions-Ddzmz1RH.js","assets/useSpaces-DnSZteHf.js","assets/input-number-BF0uWlX2.js","assets/pagination-BN87kdDs.js","assets/popover-DOg0KdzK.js","assets/radio-BmI00y-5.js","assets/slider-YJlo4Ibo.js","assets/table-5pjI7ihN.js","assets/components-BTNQr9V1.css","assets/composables-Cl0F9F_S.js","assets/keys-DHSxrtbW.js","assets/drawer-Db27jij8.js","assets/vue-meta.esm-browser.min-3_YV25pX.js","assets/view-device-add-Dtg4hKNb.js","assets/view-device-edit-D3wfo1SZ.js","assets/view-device-C6EIYm4K.js","assets/view-device-DvKgjKr8.css","assets/view-device-control-D14Yf_3B.js","assets/view-channel-add-YCqERQS-.js","assets/view-channel-edit-Dnct_m0O.js","assets/view-channel-property-add-CoaudIGV.js","assets/view-channel-property-edit-g0J-yPAY.js","assets/view-channels--BS5J8Ro.js","assets/view-channel-IJiMTDSG.js","assets/view-system-info-AVyQIUWe.js","assets/view-system-logs-eIoNhI5c.js","assets/view-system-log-detail-sgFgbNjX.js","assets/view-locations-DF-FXbjv.js","assets/composables-CU6q9-8B.js","assets/useLocation-BM-8kEbz.js","assets/list-locations-BM5Yvsew.js","assets/weather-icon-CkuFNv0P.js","assets/view-locations-DBYp9MTj.css","assets/view-location-add-B3Bljsk2.js","assets/view-location-edit-Csq0lDWt.js","assets/composables-DDYun9ja.js","assets/skeleton-DMwdgp1r.js","assets/view-location-BbOLMWOk.js","assets/weather-forecast.transformers-CxZiOJKt.js"])))=>i.map(i=>d[i]);
2
+ import"./chunk-DECur_0Z.js";import{$r as e,Br as t,Hr as n,Lr as r,Mr as i,O as a,Oi as o,Qr as s,Rr as c,Sr as l,Ur as u,Wr as d,Xr as f,_i as p,_r as m,br as h,c as ee,ci as g,d as _,gr as v,h as y,hr as b,i as te,ji as x,kr as ne,lr as S,m as re,mr as C,n as w,p as T,s as ie,sr as ae,t as oe,ui as E,vr as D,xr as O}from"./icon-with-child-DmQ_XhQy.js";import{$ as se,$n as ce,$r as le,Bn as ue,Br as de,Cn as fe,Ct as pe,F as me,Fi as he,Fn as k,Gn as ge,Hr as _e,In as A,Jn as j,Jr as ve,Mn as M,Mr as ye,N as be,Ni as xe,Nn as Se,Nr as Ce,O as we,Oi as Te,Pi as Ee,Pn as N,Pt as De,Qn as Oe,S as ke,Sn as Ae,T as je,Ti as Me,Tn as Ne,Tr as Pe,Un as P,Ur as Fe,Vn as F,Wn as I,Yn as Ie,Zn as L,_ as Le,_a as Re,_i as ze,_n as Be,_r as R,_t as Ve,a as He,ai as Ue,bi as We,bt as Ge,d as Ke,er as qe,gi as Je,gn as Ye,gt as Xe,h as Ze,hn as Qe,ht as $e,i as et,ir as tt,it as z,jr as nt,lr as rt,mn as it,mr as at,nr as ot,o as st,oi as ct,p as lt,qn as B,qr as ut,r as V,rr as dt,s as H,st as ft,tr as pt,u as mt,un as ht,ut as gt,va as _t,vn as vt,vt as yt,wn as bt,wt as xt,xn as St,xt as U,y as Ct,yi as wt,yn as Tt,yt as Et,zn as Dt}from"./common-DlW3qRTQ.js";import{f as Ot}from"./keys-CGGnS6tq.js";import{t as kt}from"./useSpaces-DnSZteHf.js";import{a as At,i as jt,n as Mt,o as Nt,r as Pt,t as Ft}from"./keys-Cm97UJHM.js";import{a as It,c as Lt,d as Rt,f as zt,h as Bt,i as W,l as Vt,m as Ht,n as Ut,o as Wt,p as Gt,r as Kt,s as qt}from"./useLocation-BM-8kEbz.js";import{_ as Jt,c as Yt,d as Xt,f as G,g as Zt,l as Qt,r as $t,s as en,u as tn}from"./composables-CU6q9-8B.js";import{B as K,H as nn,I as rn,K as q,L as an,R as J,U as Y,W as X,l as on,z as Z}from"./composables-CLHFuu4k.js";import{r as sn,t as cn}from"./system.exceptions-Ddzmz1RH.js";import{i as ln,n as un,r as dn,t as fn}from"./logs-entries.transformers-BRzpY2MS.js";import{t as pn}from"./weather-icon-CkuFNv0P.js";import{n as mn,t as hn}from"./weather-forecast.transformers-CxZiOJKt.js";var gn={menu:{title:`Zařízení`},meta:{devices:{list:{title:`Seznam zařízení`},edit:{title:`Upravit zařízení: {device}`},add:{title:`Přidat zařízení`},detail:{title:`Zařízení: {device}`},control:{title:`Ovládání zařízení: {device}`}},channels:{list:{title:`Seznam kanálů`},edit:{title:`Upravit kanál: {channel}`},add:{title:`Přidat kanál`},detail:{title:`Kanál: {channel}`}},channelsProperties:{edit:{title:`Upravit vlastnost kanálu: {property}`},add:{title:`Přidat vlastnost kanálu`}}},breadcrumbs:{devices:{list:`zařízení`,add:`přidat zařízení`,edit:`upravit zařízení`,detail:`zařízení: {device}`,control:`ovládání: {device}`},channels:{list:`kanály`,add:`přidat kanál`,edit:`upravit kanál`,detail:`kanál: {channel}`},channelsProperties:{add:`přidat vlastnost kanálu`,edit:`upravit vlastnost kanálu`}},headings:{devices:{list:`Zařízení`,add:`Přidat zařízení`,edit:`Upravit zařízení`,detail:`Zařízení: {device}`,control:`Ovládání: {device}`,remove:`Odebrat zařízení?`,bulkRemove:`Odebrat zařízení?`,bulkEnable:`Povolit zařízení?`,bulkDisable:`Zakázat zařízení?`,adjustFilters:`Filtrovat zařízení`,selectPlugin:`Vyžadován plugin zařízení`},channels:{list:`Kanály`,add:`Přidat kanál`,edit:`Upravit kanál`,detail:`Kanál: {channel}`,remove:`Odebrat kanál?`,adjustFilters:`Filtrovat kanály`,selectPlugin:`Vyžadován plugin kanálu`},channelsProperties:{add:`Přidat vlastnost kanálu`,edit:`Upravit vlastnost kanálu`,remove:`Odebrat vlastnost kanálu?`,adjustFilters:`Filtrovat vlastnosti`},misc:{discard:`Zahodit změny?`}},subHeadings:{devices:{list:`Správa zařízení Smart panelu`,add:`Přidat nové zařízení Smart panelu`,edit:`Upravit zařízení Smart panelu`,detail:`Správa zařízení Smart panelu`,control:`Ovládání zařízení Smart panelu`,adjustFilters:`Upravit filtry zobrazení`},channels:{list:`Správa kanálů zařízení Smart panelu`,add:`Přidat nový kanál zařízení Smart panelu`,edit:`Upravit kanál zařízení Smart panelu`,detail:`Správa kanálu zařízení Smart panelu`,adjustFilters:`Upravit filtry zobrazení`},channelsProperties:{add:`Přidat novou vlastnost kanálu Smart panelu`,edit:`Upravit vlastnost kanálu Smart panelu`,adjustFilters:`Upravit filtry zobrazení`}},messages:{devices:{notFound:`Zařízení, které hledáte, neexistuje nebo bylo odebráno.`,created:`Nové zařízení bylo úspěšně přidáno.`,notCreated:`Něco se pokazilo. Zařízení se nepodařilo vytvořit.`,edited:`Změny uloženy! Zařízení: {device} bylo aktualizováno.`,notEdited:`Něco se pokazilo. Aktualizace zařízení nebyla úspěšná.`,removed:`Zařízení: {device} bylo úspěšně odebráno.`,removeCanceled:`Odebrání zařízení: {device} bylo zrušeno.`,notRemoved:`Něco se pokazilo a zařízení: {device} nebylo odebráno.`,deletedWhileEditing:`Toto zařízení bylo smazáno a již není dostupné.`,bulkRemoved:`{count} zařízení bylo úspěšně odebráno.`,bulkRemoveFailed:`Nepodařilo se odebrat {count} zařízení.`,bulkRemoveCanceled:`Hromadné odebrání zařízení bylo zrušeno.`,bulkEnabled:`{count} zařízení bylo úspěšně povoleno.`,bulkEnableFailed:`Nepodařilo se povolit {count} zařízení.`,bulkEnableCanceled:`Hromadné povolení zařízení bylo zrušeno.`,bulkDisabled:`{count} zařízení bylo úspěšně zakázáno.`,bulkDisableFailed:`Nepodařilo se zakázat {count} zařízení.`,bulkDisableCanceled:`Hromadné zakázání zařízení bylo zrušeno.`,notLoaded:`Nepodařilo se načíst zařízení. Zkuste to prosím později.`},channels:{notFound:`Kanál, který hledáte, neexistuje nebo byl odebrán.`,notLoaded:`Nepodařilo se načíst kanál. Zkuste to prosím později.`,notLoadedForDevice:`Nepodařilo se načíst kanály pro toto zařízení.`,created:`Nový kanál byl úspěšně přidán.`,notCreated:`Něco se pokazilo. Kanál se nepodařilo vytvořit.`,edited:`Změny uloženy! Kanál: {channel} byl aktualizován.`,notEdited:`Něco se pokazilo. Aktualizace kanálu nebyla úspěšná.`,removed:`Kanál: {channel} byl úspěšně odebrán.`,removeCanceled:`Odebrání kanálu: {channel} bylo zrušeno.`,notRemoved:`Něco se pokazilo a kanál: {channel} nebyl odebrán.`,noMoreAllowed:`Všechny povinné a volitelné kanály jsou přiřazeny k zařízení. Žádné další nelze přidat.`,deletedWhileEditing:`Tento kanál byl smazán a již není dostupný.`},channelsProperties:{notFound:`Vlastnost kanálu, kterou hledáte, neexistuje nebo byla odebrána.`,notLoadedForChannel:`Nepodařilo se načíst vlastnosti pro tento kanál.`,created:`Nová vlastnost kanálu byla úspěšně přidána.`,notCreated:`Něco se pokazilo. Vlastnost kanálu se nepodařilo vytvořit.`,edited:`Změny uloženy! Vlastnost kanálu: {property} byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace vlastnosti kanálu nebyla úspěšná.`,removed:`Vlastnost kanálu: {property} byla úspěšně odebrána.`,removeCanceled:`Odebrání vlastnosti kanálu: {property} bylo zrušeno.`,notRemoved:`Něco se pokazilo a vlastnost kanálu: {property} nebyla odebrána.`,noMoreAllowed:`Všechny povinné a volitelné vlastnosti jsou přiřazeny ke kanálu. Žádné další nelze přidat.`,deletedWhileEditing:`Tato vlastnost kanálu byla smazána a již není dostupná.`},misc:{requestError:`Něco se pokazilo, zkuste to prosím později.`}},texts:JSON.parse(`{"devices":{"noDevices":"Nemáte nakonfigurované žádné zařízení","noFilteredDevices":"Nebyly nalezeny žádné zařízení odpovídající aktivním kritériím filtru","loadingDevices":"Načítání zařízení...","loadingDevice":"Načítání zařízení...","confirmRemove":"Opravdu chcete odebrat zařízení: {device}? Tuto akci nelze vrátit zpět.","confirmBulkRemove":"Opravdu chcete odebrat {count} zařízení? Tuto akci nelze vrátit zpět.","confirmBulkEnable":"Opravdu chcete povolit {count} zařízení?","confirmBulkDisable":"Opravdu chcete zakázat {count} zařízení?","description":{"generic":"","air_conditioner":"Zařízení Klimatizace představuje chladicí systém s doplňkovými funkcemi pro monitorování prostředí a správu energie.","air_dehumidifier":"Zařízení Odvlhčovač vzduchu představuje systém určený ke snižování vlhkosti v prostředí s doplňkovými možnostmi monitorování a ovládání.","air_humidifier":"Zařízení Zvlhčovač vzduchu představuje systém určený ke zvyšování vlhkosti v prostředí s doplňkovými možnostmi monitorování a ovládání.","air_purifier":"Zařízení Čistička vzduchu představuje systém určený ke zlepšování kvality vnitřního vzduchu odstraňováním znečišťujících látek a monitorováním podmínek prostředí.","alarm":"","av_receiver":"Zařízení AV přijímač představuje receiver/zesilovač domácího kina s přepínáním vstupů a ovládáním reproduktorových výstupů.","camera":"Zařízení Kamera představuje sledovací nebo monitorovací systém určený pro zachycování videa a obrazu s doplňkovými funkcemi pro monitorování prostředí a interakci.","doorbell":"Zařízení Zvonek představuje chytrý zvonkový systém poskytující video, zvuk a doplňkové monitorovací funkce pro zvýšenou bezpečnost domácnosti.","door":"Zařízení Dveře představuje automatizované nebo monitorované dveře, jako jsou garážová vrata, vstupní dveře nebo jiné typy dveří, s doplňkovými funkcemi pro zabezpečení a sledování prostředí.","fan":"Zařízení Ventilátor představuje samostatný nebo integrovaný ventilátorový systém s funkcemi pro ovládání rychlosti, nastavení směru a monitorování energie.","game_console":"Zařízení Herní konzole představuje herní konzoli, kterou lze ovládat z hlediska základního stavu napájení/aktivity a přehrávání médií, pokud je podporováno.","heating_unit":"Zařízení Topná jednotka představuje prostorový nebo pokojový topný systém určený k ovládání a monitorování teploty prostředí s volitelnými funkcemi pro správu energie a vlhkosti.","lighting":"Zařízení Osvětlení představuje osvětlovací systém určený k poskytování iluminace s volitelnými funkcemi pro sledování energie, ovládání jasu a adaptivní osvětlení na základě okolních podmínek.","lock":"Zařízení Zámek představuje elektronický nebo chytrý zamykací systém poskytující ovládání a monitorování přístupových bodů, jako jsou dveře nebo brány.","media":"Zařízení Média představuje multimediální systém schopný přehrávat, nahrávat nebo spravovat audio a video obsah.","outlet":"Zařízení Zásuvka představuje elektrickou zásuvku s pokročilými funkcemi monitorování a ovládání, umožňující vzdálené ovládání a sledování energie. Podporuje jednu nebo více zásuvek pro flexibilní správu napájení.","projector":"Zařízení Projektor představuje projekční displej, který lze zapínat/vypínat a přepínat mezi vstupními zdroji.","pump":"Zařízení Čerpadlo představuje vodní nebo kapalinové čerpadlo s funkcemi pro ovládání průtoku, monitorování a sledování energie.","robot_vacuum":"Zařízení Robotický vysavač představuje autonomní čisticí zařízení se schopnostmi sledování energie a monitorování provozu.","sensor":"Zařízení Senzor představuje univerzální monitorovací jednotku schopnou sledovat různé parametry prostředí a bezpečnosti.","set_top_box":"Zařízení Set-top box představuje mediální zařízení připojené k TV (streamovací box, IPTV box nebo HDMI stick) poskytující ovládání přehrávání a volitelný výběr zdroje.","speaker":"Zařízení Reproduktor představuje zvukový výstupní systém schopný produkovat zvuk a potenciálně podporující přehrávání médií a vstupní funkce.","sprinkler":"Zařízení Zavlažovač představuje zavlažovací systém určený k ovládání průtoku vody a monitorování podmínek prostředí pro optimalizaci zalévání.","streaming_service":"Zařízení Streamovací služba představuje cloudový přehrávač médií (např. Spotify), který poskytuje ovládání přehrávání a metadata bez fyzického stavu napájení.","switcher":"Zařízení Spínač představuje ovladatelnou zásuvku nebo spínač, který může přepínat napájení připojených zařízení a monitorovat spotřebu energie. Podporuje více zásuvek pro ovládání napájení.","television":"Zařízení Televize představuje chytrou TV nebo podobné mediální zařízení, které lze ovládat a monitorovat z hlediska zvukové a zobrazovací funkcionality.","thermostat":"Zařízení Termostat představuje systém řízení klimatu, který monitoruje a upravuje teplotu a související parametry prostředí.","valve":"Zařízení Ventil představuje ovladatelný ventil používaný pro řízení průtoku kapalin nebo plynů v různých systémech.","water_heater":"Zařízení Ohřívač vody představuje systém ohřevu vody určený k zahřívání a udržování teploty vody s volitelnými funkcemi pro monitorování energie a detekci úniku.","window_covering":"Zařízení Okenní krytina představuje automatizované okenní prvky, jako jsou žaluzie, rolety nebo záclony."},"selectPlugin":"Pro vytvoření nového zařízení vyberte prosím kompatibilní plugin ze seznamu. Pluginy poskytují potřebné konfigurační možnosti pro konkrétní typ zařízení.","noChannels":"Toto zařízení zatím nemá žádné kanály. Kanály definují vstupy nebo výstupy zařízení. Vytvořte nový kanál pro zahájení interakce s tímto zařízením.","category":"Kategorie","channelsCount":"Žádné kanály nakonfigurovány | Jeden kanál nakonfigurován | {count} kanálů nakonfigurováno","alertsCount":"Žádné výstrahy detekovány | Jedna výstraha detekována | {count} výstrah detekováno","channels":"Kanály","alerts":"Výstrahy","status":"Stav","validation":"Validace","noControllableProperties":"Toto zařízení nemá žádné ovladatelné vlastnosti. Vlastnosti musí mít oprávnění pro čtení a zápis nebo pouze pro zápis, aby je bylo možné ovládat.","logs":{"title":"Protokoly zařízení","noLogs":"Žádné protokoly nejsou k dispozici","noLogsDescription":"Pro toto zařízení zatím nebyly zaznamenány žádné protokoly","noMessage":"(žádná zpráva)","noMoreEntries":"Žádné další záznamy protokolu"}},"channels":{"noChannels":"Nemáte nakonfigurovaný žádný kanál zařízení","noFilteredChannels":"Nebyly nalezeny žádné kanály odpovídající aktivním kritériím filtru","loadingChannels":"Načítání kanálů...","loadingChannel":"Načítání kanálu...","confirmRemove":"Opravdu chcete odebrat kanál: {channel}? Tuto akci nelze vrátit zpět.","description":{"generic":"","air_particulate":"Monitoruje koncentraci pevných částic (např. PM2.5 a PM10) ve vzduchu a poskytuje přehled o kvalitě ovzduší a úrovni znečištění.","air_quality":"Monitoruje celkovou kvalitu vzduchu pomocí indexu (0-500) nebo ukazatele úrovně a poskytuje zjednodušené hodnocení vnitřních podmínek ovzduší.","alarm":"","battery":"Hlásí stav baterie zařízení včetně úrovně nabití, stavu nabíjení a provozního stavu.","camera":"Poskytuje video a obrazové datové proudy ze sledovacích nebo monitorovacích kamer. Tento kanál podporuje konfiguraci a ovládání kamerových zařízení, jako jsou bezpečnostní kamery nebo chůvičky.","carbon_dioxide":"Monitoruje hladiny CO₂ v prostředí pro sledování kvality vzduchu a účinnosti větrání.","carbon_monoxide":"Detekuje přítomnost oxidu uhelnatého (CO) pro zajištění bezpečnosti v uzavřených prostorech.","contact":"Sleduje otevřený nebo zavřený stav kontaktního bodu, jako jsou dveře, okno nebo skříňka.","cooler":"Ovládá zařízení, která snižují teplotu vzduchu nebo kapalin, jako jsou klimatizace nebo chladicí systémy.","dehumidifier":"Ovládá odvlhčovací zařízení a řídí snižování vlhkosti s funkcemi jako cílová vlhkost, provozní režimy a monitorování zásobníku vody.","device_information":"Tento kanál poskytuje metadata o zařízení včetně údajů o výrobci, informací o modelu a provozních stavech.","doorbell":"Představuje chytré zvonky a poskytuje funkce jako detekce stisku tlačítka a volitelná integrace kamery.","door":"Spravuje stavy otevření/zavření dveří včetně garážových vrat a vstupních dveří.","electrical_energy":"Měří kumulativní spotřebu energie v čase v kilowatthodinách (kWh).","electrical_generation":"Hlásí produkci energie z fotovoltaických (PV) nebo jiných zdrojů a sleduje kumulativní vyrobenou energii v kWh.","electrical_power":"Hlásí okamžité výkonové metriky jako napětí, proud, výkon a frekvenci pro monitorování a diagnostiku v reálném čase.","fan":"Ovládá ventilátorová zařízení včetně rychlosti, oscilace a režimů pro cirkulaci vzduchu.","filter":"Monitoruje stav a zbývající životnost vzduchových nebo vodních filtrů a indikuje potřebu výměny.","flow":"Monitoruje průtok kapalin nebo vzduchu, obvykle měřený v kubických metrech za hodinu (m³/h).","gas":"Detekuje přítomnost zemního plynu nebo jiných hořlavých plynů pro zajištění bezpečnosti v uzavřených prostorech.","heater":"Spravuje topná zařízení a umožňuje ovládání nastavení teploty a režimů.","humidifier":"Ovládá zvlhčovací zařízení a řídí zvyšování vlhkosti s funkcemi jako cílová vlhkost, ovládání úrovně mlhy a monitorování zásobníku vody.","humidity":"Měří relativní vlhkost v prostředí vyjádřenou v procentech.","illuminance":"Detekuje úrovně okolního osvětlení, obvykle měřené v luxech, pro monitorování jasu v prostoru.","leak":"Identifikuje přítomnost vody nebo jiných kapalin pro detekci úniků a prevenci škod.","light":"Ovládá osvětlovací zařízení s podporou jasu, teploty barev a nastavení barev.","lock":"Spravuje stav zamčení/odemčení fyzických zámků pro dveře, trezory nebo jiné zabezpečené oblasti.","media_input":"Spravuje vstupní zdroje multimediálních zařízení jako televizory, projektory nebo audio přijímače.","media_playback":"Poskytuje ovládání přehrávání pro multimediální zařízení, bez ovládání hlasitosti (to je řešeno kanály Reproduktor a Mikrofon).","microphone":"Představuje zvukové vstupní zařízení, hlásí aktivitu nebo zachycuje zvuk.","motion":"Detekuje pohyb v oblasti pro spuštění výstrah nebo automatizaci reakcí.","nitrogen_dioxide":"Monitoruje koncentraci NO₂ ve vzduchu, často používaný v environmentálním a průmyslovém monitorování.","occupancy":"Detekuje přítomnost osob v prostoru pro automatizaci nebo účely energetické účinnosti.","outlet":"Ovládá a monitoruje elektrické zásuvky.","ozone":"Měří hladiny ozónu (O₃) ve vzduchu, často používaný při hodnocení kvality životního prostředí.","pressure":"Hlásí hodnoty atmosférického nebo kapalinového tlaku, obvykle měřené v pascalech (kPa).","robot_vacuum":"Ovládá robotické vysavače a poskytuje příkazy pro spuštění, zastavení, dokování a monitorování stavů.","smoke":"Detekuje kouř v prostředí a spouští alarmy nebo výstrahy pro bezpečnost.","speaker":"Ovládá reproduktorová zařízení včetně hlasitosti, stavu ztlumení a režimů zvukového výstupu.","sulphur_dioxide":"Měří hladiny oxidu siřičitého (SO₂) ve vzduchu pro environmentální monitorování.","switcher":"Představuje binární spínače pro ovládání zařízení jako světla, ventilátory nebo spotřebiče.","television":"Poskytuje ovládání televizorů včetně vstupního zdroje, jasu a stavu napájení.","projector":"Poskytuje ovládání projektorů včetně napájení, vstupního zdroje, jasu a dálkových tlačítek.","temperature":"Měří aktuální teplotu v prostředí vyjádřenou ve stupních Celsia.","thermostat":"Spravuje systémy řízení klimatu a umožňuje nastavení topení, chlazení a ventilátoru.","valve":"Ovládá ventily pro kapaliny nebo plyny a řídí stavy otevření/zavření nebo průtok.","volatile_organic_compounds":"Monitoruje koncentraci těkavých organických sloučenin (VOC) ve vzduchu pro sledování znečištění nebo kvality vzduchu.","window_covering":"Ovládá okenní krytiny jako žaluzie, záclony a rolety včetně nastavení polohy a náklonu."},"selectPlugin":"Pro vytvoření nového kanálu vyberte prosím kompatibilní plugin ze seznamu. Pluginy poskytují potřebné konfigurační možnosti pro konkrétní typ kanálu."},"channelsProperties":{"noProperties":"Nemáte nakonfigurovanou žádnou vlastnost kanálu","noFilteredProperties":"Nebyly nalezeny žádné vlastnosti kanálů odpovídající aktivním kritériím filtru","loadingProperties":"Načítání vlastností kanálů...","loadingProperty":"Načítání vlastnosti kanálu...","loadingChannels":"Načítání kanálů...","loadingChannel":"Načítání kanálu...","confirmRemove":"Opravdu chcete odebrat vlastnost kanálu: {property}? Tuto akci nelze vrátit zpět.","dataTypes":{"char":"8bitové celé číslo se znaménkem (-128 až 127).","uchar":"8bitové celé číslo bez znaménka (0 až 255).","short":"16bitové celé číslo se znaménkem (-32 768 až 32 767).","ushort":"16bitové celé číslo bez znaménka (0 až 65 535).","int":"32bitové celé číslo se znaménkem (-2 147 483 648 až 2 147 483 647).","uint":"32bitové celé číslo bez znaménka (0 až 4 294 967 295).","float":"Číslo s plovoucí desetinnou čárkou (např. 3,14, -0,001).","bool":"Logická hodnota: pravda nebo nepravda.","string":"Sekvence znaků (např. \\"hello\\").","enum":"Výčtová hodnota vybraná z předdefinované množiny.","unknown":"Neznámý nebo nespecifikovaný datový typ."},"editValue":"Ruční změna této hodnoty je povolena, ale může být automaticky přepsána, pokud je tato vlastnost mapována na zařízení. Používejte s opatrností."},"misc":{"notSet":"Nenastaveno","noValuesProvided":"Žádné hodnoty nebyly zadány","confirmDiscard":"Máte neuložené změny. Opravdu je chcete zahodit?"}}`),fields:{devices:{search:{placeholder:`Hledat zařízení...`},plugin:{title:`Plugin zařízení`,placeholder:`Vyberte plugin zařízení`},state:{title:`Stav`,placeholder:`Vyberte stav`},id:{title:`Interní identifikátor`,placeholder:`ID zařízení`},identifier:{title:`Systémový identifikátor`,placeholder:`Systémový identifikátor zařízení`},category:{title:`Kategorie`,placeholder:`Kategorie zařízení`,description:`O kategorii`,validation:{required:`Vyberte prosím kategorii zařízení`}},name:{title:`Název`,placeholder:`Název zařízení`,validation:{required:`Vyplňte prosím název zařízení`}},description:{title:`Popis`,placeholder:`Popis zařízení`},enabled:{title:`Povoleno`,placeholder:`Povolit nebo zakázat zařízení`},room:{title:`Místnost`,placeholder:`Vyberte místnost (volitelné)`,hint:`Přiřaďte toto zařízení k fyzické místnosti`},zones:{title:`Zóny`,placeholder:`Vyberte zóny (volitelné)`,hint:`Přiřaďte toto zařízení k logickým zónám (např. Zabezpečení, Venkovní). Členství v zóně patra je odvozeno z přiřazení místnosti.`},validation:{title:`Validace`}},channels:{search:{placeholder:`Hledat kanály...`},plugin:{title:`Plugin kanálu`,placeholder:`Vyberte plugin kanálu`},device:{title:`Zařízení`,placeholder:`Zařízení kanálu`,description:`O zařízení`,validation:{required:`Vyberte prosím zařízení kanálu`}},id:{title:`Interní identifikátor`,placeholder:`ID kanálu`},category:{title:`Kategorie`,placeholder:`Kategorie kanálu`,description:`O kategorii`,validation:{required:`Vyberte prosím kategorii kanálu`}},name:{title:`Název`,placeholder:`Název kanálu`,validation:{required:`Vyplňte prosím název kanálu`}},description:{title:`Popis`,placeholder:`Popis kanálu`}},channelsProperties:{search:{placeholder:`Hledat vlastnosti...`},channel:{title:`Kanál`,placeholder:`Kanál vlastnosti kanálu`,description:`O kanálu`,validation:{required:`Vyberte prosím kanál vlastnosti kanálu`}},id:{title:`Interní identifikátor`,placeholder:`ID vlastnosti kanálu`},category:{title:`Kategorie`,placeholder:`Kategorie vlastnosti kanálu`,description:`O kategorii`,validation:{required:`Vyberte prosím kategorii vlastnosti kanálu`}},name:{title:`Název`,placeholder:`Název vlastnosti kanálu`},permissions:{title:`Oprávnění`,placeholder:`Oprávnění pro čtení a zápis vlastnosti kanálu`,validation:{required:`Vyberte prosím oprávnění vlastnosti kanálu`}},dataType:{title:`Datový typ`,placeholder:`Datový typ hodnoty vlastnosti kanálu`,validation:{required:`Vyberte prosím datový typ vlastnosti kanálu`}},unit:{title:`Jednotka`,placeholder:`Jednotka vlastnosti kanálu`},format:{title:{enum:`Povolené hodnoty`,min:`Minimální hodnota`,max:`Maximální hodnota`},placeholder:{enum:`Seznam povolených hodnot`,min:`Minimální povolená hodnota`,max:`Maximální povolená hodnota`},validation:{required:{enum:`Vyplňte prosím seznam povolených hodnot vlastnosti kanálu`}}},invalid:{title:`Neplatná hodnota`,placeholder:`Neplatná hodnota vlastnosti kanálu`},step:{title:`Hodnota kroku`,placeholder:`Hodnota kroku vlastnosti kanálu`},enterValue:{title:`Zadejte hodnotu`},value:{title:`Hodnota`,placeholder:`Aktuální hodnota vlastnosti kanálu`}}},table:{devices:{columns:{name:{title:`Název`},type:{title:`Typ`},state:{title:`Stav`},category:{title:`Kategorie`},enabled:{title:`Povoleno`,values:{enabled:`Povoleno`,disabled:`Zakázáno`}},validation:{title:`Validace`}}},channels:{columns:{name:{title:`Název`},device:{title:`Zařízení`},category:{title:`Kategorie`}}},channelsProperties:{columns:{name:{title:`Název`},channel:{title:`Kanál`},category:{title:`Kategorie`},permissions:{title:`Oprávnění`},dataType:{title:`Datový typ`,type:{enum:`Informace o výčtové hodnotě`,numeric:`Informace o číselné hodnotě`}},value:{title:`Hodnota`}}}},filters:{devices:{types:{title:`Filtrovat podle typu zařízení`},states:{title:`Filtrovat podle stavu připojení`},enabled:{title:`Filtrovat podle stavu zařízení`,placeholder:`Vyberte stav zařízení`,values:{enabled:`Povoleno`,disabled:`Zakázáno`,all:`Vše`}},category:{title:`Filtrovat podle kategorie zařízení`,placeholder:`Vyberte jednu nebo více`},validation:{title:`Filtrovat podle stavu validace`}},channels:{category:{title:`Filtrovat podle kategorie kanálu`,placeholder:`Vyberte jednu nebo více`}},channelsProperties:{category:{title:`Filtrovat podle kategorie vlastnosti`,placeholder:`Vyberte jednu nebo více`},dataType:{title:`Filtrovat podle datového typu vlastnosti`},permission:{title:`Filtrovat podle oprávnění vlastnosti`}}},buttons:{add:{title:`Přidat`},edit:{title:`Upravit`},detail:{title:`Detail`},discard:{title:`Zahodit`},cancel:{title:`Zrušit`},close:{title:`Zavřít`},save:{title:`Uložit`},change:{title:`Změnit`},remove:{title:`Odebrat`},resetFilters:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},reset:{title:`Resetovat`},addChannel:{title:`Přidat kanál`},addProperty:{title:`Přidat vlastnost`},control:{title:`Ovládat`},refresh:{title:`Obnovit`},loadMore:{title:`Načíst více`},viewLogs:{title:`Zobrazit protokoly`},back:{title:`Zpět`}},labels:{live:`Živě`},states:{online:`Online`,offline:`Offline`,all:`Vše`,connected:`Připojeno`,disconnected:`Odpojeno`,init:`Inicializováno`,ready:`Připraveno`,running:`Běží`,sleeping:`Spí`,stopped:`Zastaveno`,lost:`Ztraceno`,alert:`Výstraha`,unknown:`Neznámý`},permissions:{ro:`Pouze pro čtení`,rw:`Čtení a zápis`,wo:`Pouze pro zápis`,ev:`Událost`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Short integer`,ushort:`Unsigned short integer`,int:`Integer`,uint:`Unsigned integer`,float:`Float`,bool:`Boolean`,string:`String`,enum:`Enum`,unknown:`Neznámý`},categories:{devices:{generic:`Obecné`,air_conditioner:`Klimatizace`,air_dehumidifier:`Odvlhčovač vzduchu`,air_humidifier:`Zvlhčovač vzduchu`,air_purifier:`Čistička vzduchu`,alarm:`Alarm`,av_receiver:`AV přijímač`,camera:`Kamera`,door:`Dveře`,doorbell:`Zvonek`,fan:`Ventilátor`,game_console:`Herní konzole`,heating_unit:`Topná jednotka`,lighting:`Osvětlení`,lock:`Zámek`,media:`Média`,outlet:`Zásuvka`,projector:`Projektor`,pump:`Čerpadlo`,robot_vacuum:`Robotický vysavač`,sensor:`Senzor`,set_top_box:`Set-top box`,speaker:`Reproduktor`,sprinkler:`Zavlažovač`,streaming_service:`Streamovací služba`,switcher:`Spínač`,television:`Televize`,thermostat:`Termostat`,valve:`Ventil`,water_heater:`Ohřívač vody`,window_covering:`Okenní krytina`},channels:{generic:`Obecný`,air_particulate:`Pevné částice ve vzduchu`,air_quality:`Kvalita vzduchu`,alarm:`Alarm`,battery:`Baterie`,camera:`Kamera`,carbon_dioxide:`Oxid uhličitý`,carbon_monoxide:`Oxid uhelnatý`,contact:`Kontakt`,cooler:`Chladič`,dehumidifier:`Odvlhčovač`,device_information:`Informace o zařízení`,door:`Dveře`,doorbell:`Zvonek`,electrical_energy:`Elektrická energie`,electrical_generation:`Výroba elektřiny`,electrical_power:`Elektrický výkon`,fan:`Ventilátor`,filter:`Filtr`,flow:`Průtok`,gas:`Plyn`,heater:`Topení`,humidifier:`Zvlhčovač`,humidity:`Vlhkost`,illuminance:`Osvětlení`,leak:`Únik`,light:`Světlo`,lock:`Zámek`,media_input:`Mediální vstup`,media_playback:`Přehrávání médií`,microphone:`Mikrofon`,motion:`Pohyb`,nitrogen_dioxide:`Oxid dusičitý`,occupancy:`Obsazenost`,outlet:`Zásuvka`,ozone:`Ozón`,pressure:`Tlak`,robot_vacuum:`Robotický vysavač`,smoke:`Kouř`,speaker:`Reproduktor`,sulphur_dioxide:`Oxid siřičitý`,switcher:`Spínač`,television:`Televize`,projector:`Projektor`,temperature:`Teplota`,thermostat:`Termostat`,valve:`Ventil`,volatile_organic_compounds:`Těkavé organické sloučeniny`,window_covering:`Okenní krytina`},channelsProperties:{generic:`Obecná`,active:`Aktivní`,alarm_state:`Stav alarmu`,album:`Album`,angle:`Úhel`,aqi:`AQI`,artist:`Interpret`,artwork_url:`URL obalu`,average_power:`Průměrný výkon`,balance:`Vyvážení`,bass:`Basy`,brightness:`Jas`,change_needed:`Vyžadována výměna`,child_lock:`Dětský zámek`,color_blue:`Modrá barva`,color_green:`Zelená barva`,color_red:`Červená barva`,color_temperature:`Teplota barev`,color_white:`Bílá barva`,command:`Příkaz`,connection_type:`Typ připojení`,consumption:`Spotřeba`,current:`Proud`,concentration:`Koncentrace`,defrost_active:`Odmrazování aktivní`,detected:`Detekováno`,direction:`Směr`,distance:`Vzdálenost`,duration:`Doba trvání`,event:`Událost`,fault:`Porucha`,fault_description:`Popis poruchy`,firmware_revision:`Revize firmwaru`,frequency:`Frekvence`,hardware_revision:`Revize hardwaru`,hue:`Odstín`,humidity:`Vlhkost`,illuminance:`Osvětlení`,in_use:`Používáno`,infrared:`Infračervený`,last_event:`Poslední událost`,level:`Úroveň`,life_remaining:`Zbývající životnost`,link_quality:`Kvalita spojení`,locked:`Zamčeno`,manufacturer:`Výrobce`,media_type:`Typ média`,mist_level:`Úroveň mlhy`,model:`Model`,mode:`Režim`,mute:`Ztlumení`,natural_breeze:`Přirozený vánek`,obstruction:`Překážka`,on:`Zapnuto`,over_current:`Nadproud`,over_voltage:`Přepětí`,over_power:`Přetížení`,pan:`Otáčení`,peak_level:`Špičková úroveň`,percentage:`Procento`,position:`Poloha`,power:`Výkon`,pressure:`Tlak`,production:`Produkce`,rate:`Průtok`,remaining:`Zbývající`,repeat:`Opakování`,reset:`Reset`,remote_key:`Dálkové tlačítko`,saturation:`Sytost`,serial_number:`Sériové číslo`,shuffle:`Náhodné přehrávání`,siren:`Siréna`,source:`Zdroj`,source_label:`Popis zdroje`,speed:`Rychlost`,state:`Stav`,status:`Stav`,swing:`Oscilace`,tampered:`Narušeno`,temperature:`Teplota`,tilt:`Náklon`,timer:`Časovač`,track:`Skladba`,treble:`Výšky`,triggered:`Spuštěno`,type:`Typ`,units:`Jednotky`,voltage:`Napětí`,volume:`Hlasitost`,warm_mist:`Teplá mlha`,water_tank_empty:`Zásobník vody prázdný`,water_tank_full:`Zásobník vody plný`,water_tank_level:`Hladina zásobníku vody`,zoom:`Přiblížení`}},validation:{status:{valid:`Platné`,invalid:`Neplatné`,unknown:`Neznámé`},filter:{valid:`Platné`,invalid:`Neplatné`,all:`Vše`},errors:`chyby`,warnings:`varování`,issuesTitle:`Problémy validace`,severity:{error:`Chyba`,warning:`Varování`},table:{severity:`Závažnost`,type:`Typ`,message:`Zpráva`,channel:`Kanál`},issueTypes:{missing_channel:`Chybějící kanál`,missing_property:`Chybějící vlastnost`,invalid_data_type:`Neplatný datový typ`,invalid_permissions:`Neplatná oprávnění`,invalid_format:`Neplatný formát`,unknown_channel:`Neznámý kanál`,duplicate_channel:`Duplicitní kanál`,constraint_one_of_violation:`Porušení omezení (jeden z)`,constraint_one_or_more_of_violation:`Porušení omezení (jeden nebo více z)`,constraint_mutually_exclusive_violation:`Porušení omezení (vzájemně vylučující)`}}},_n={menu:{title:`Geräte`},meta:{devices:{list:{title:`Geräte auflisten`},edit:{title:`Gerät bearbeiten: {device}`},add:{title:`Gerät hinzufügen`},detail:{title:`Gerät: {device}`},control:{title:`Gerät steuern: {device}`}},channels:{list:{title:`Kanäle auflisten`},edit:{title:`Kanal bearbeiten: {channel}`},add:{title:`Kanal hinzufügen`},detail:{title:`Kanal: {channel}`}},channelsProperties:{edit:{title:`Kanaleigenschaft bearbeiten: {property}`},add:{title:`Kanaleigenschaft hinzufügen`}}},breadcrumbs:{devices:{list:`Geräte`,add:`Gerät hinzufügen`,edit:`Gerät bearbeiten`,detail:`Gerät: {device}`,control:`Steuerung: {device}`},channels:{list:`Kanäle`,add:`Kanal hinzufügen`,edit:`Kanal bearbeiten`,detail:`Kanal: {channel}`},channelsProperties:{add:`Kanaleigenschaft hinzufügen`,edit:`Kanaleigenschaft bearbeiten`}},headings:{devices:{list:`Geräte`,add:`Gerät hinzufügen`,edit:`Gerät bearbeiten`,detail:`Gerät: {device}`,control:`Steuerung: {device}`,remove:`Gerät entfernen?`,bulkRemove:`Geräte entfernen?`,bulkEnable:`Geräte aktivieren?`,bulkDisable:`Geräte deaktivieren?`,adjustFilters:`Geräte filtern`,selectPlugin:`Geräte-Plugin erforderlich`},channels:{list:`Kanäle`,add:`Kanal hinzufügen`,edit:`Kanal bearbeiten`,detail:`Kanal: {channel}`,remove:`Kanal entfernen?`,adjustFilters:`Kanäle filtern`,selectPlugin:`Kanal-Plugin erforderlich`},channelsProperties:{add:`Kanaleigenschaft hinzufügen`,edit:`Kanaleigenschaft bearbeiten`,remove:`Kanaleigenschaft entfernen?`,adjustFilters:`Eigenschaften filtern`},misc:{discard:`Änderungen verwerfen?`}},subHeadings:{devices:{list:`Smart Panel Geräte verwalten`,add:`Neues Smart Panel Gerät hinzufügen`,edit:`Smart Panel Gerät bearbeiten`,detail:`Smart Panel Gerät verwalten`,control:`Smart Panel Gerät steuern`,adjustFilters:`Anzeigefilter anpassen`},channels:{list:`Smart Panel Gerätekanäle verwalten`,add:`Neuen Smart Panel Gerätekanal hinzufügen`,edit:`Smart Panel Gerätekanal bearbeiten`,detail:`Smart Panel Gerätekanal verwalten`,adjustFilters:`Anzeigefilter anpassen`},channelsProperties:{add:`Neue Smart Panel Kanaleigenschaft hinzufügen`,edit:`Smart Panel Kanaleigenschaft bearbeiten`,adjustFilters:`Anzeigefilter anpassen`}},messages:{devices:{notFound:`Das gesuchte Gerät existiert nicht oder wurde entfernt.`,created:`Neues Gerät erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Das Gerät konnte nicht erstellt werden.`,edited:`Änderungen gespeichert! Das Gerät: {device} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Geräteaktualisierung war nicht erfolgreich.`,removed:`Das Gerät: {device} wurde erfolgreich entfernt.`,removeCanceled:`Entfernung von Gerät: {device} wurde abgebrochen.`,notRemoved:`Etwas ist schiefgelaufen, das Gerät: {device} wurde nicht entfernt.`,deletedWhileEditing:`Dieses Gerät wurde gelöscht und ist nicht mehr verfügbar.`,bulkRemoved:`{count} Geräte wurden erfolgreich entfernt.`,bulkRemoveFailed:`Entfernung von {count} Geräten fehlgeschlagen.`,bulkRemoveCanceled:`Massenentfernung von Geräten wurde abgebrochen.`,bulkEnabled:`{count} Geräte wurden erfolgreich aktiviert.`,bulkEnableFailed:`Aktivierung von {count} Geräten fehlgeschlagen.`,bulkEnableCanceled:`Massenaktivierung von Geräten wurde abgebrochen.`,bulkDisabled:`{count} Geräte wurden erfolgreich deaktiviert.`,bulkDisableFailed:`Deaktivierung von {count} Geräten fehlgeschlagen.`,bulkDisableCanceled:`Massendeaktivierung von Geräten wurde abgebrochen.`,notLoaded:`Gerät konnte nicht geladen werden. Bitte versuchen Sie es später erneut.`},channels:{notFound:`Der gesuchte Kanal existiert nicht oder wurde entfernt.`,notLoaded:`Kanal konnte nicht geladen werden. Bitte versuchen Sie es später erneut.`,notLoadedForDevice:`Kanäle für dieses Gerät konnten nicht geladen werden.`,created:`Neuer Kanal erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Der Kanal konnte nicht erstellt werden.`,edited:`Änderungen gespeichert! Der Kanal: {channel} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Kanalaktualisierung war nicht erfolgreich.`,removed:`Der Kanal: {channel} wurde erfolgreich entfernt.`,removeCanceled:`Entfernung von Kanal: {channel} wurde abgebrochen.`,notRemoved:`Etwas ist schiefgelaufen, der Kanal: {channel} wurde nicht entfernt.`,noMoreAllowed:`Alle erforderlichen und optionalen Kanäle sind dem Gerät zugewiesen. Keine weiteren können hinzugefügt werden.`,deletedWhileEditing:`Dieser Kanal wurde gelöscht und ist nicht mehr verfügbar.`},channelsProperties:{notFound:`Die gesuchte Kanaleigenschaft existiert nicht oder wurde entfernt.`,notLoadedForChannel:`Eigenschaften für diesen Kanal konnten nicht geladen werden.`,created:`Neue Kanaleigenschaft erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Die Kanaleigenschaft konnte nicht erstellt werden.`,edited:`Änderungen gespeichert! Die Kanaleigenschaft: {property} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Kanaleigenschaft war nicht erfolgreich.`,removed:`Die Kanaleigenschaft: {property} wurde erfolgreich entfernt.`,removeCanceled:`Entfernung von Kanaleigenschaft: {property} wurde abgebrochen.`,notRemoved:`Etwas ist schiefgelaufen, die Kanaleigenschaft: {property} wurde nicht entfernt.`,noMoreAllowed:`Alle erforderlichen und optionalen Eigenschaften sind dem Kanal zugewiesen. Keine weiteren können hinzugefügt werden.`,deletedWhileEditing:`Diese Kanaleigenschaft wurde gelöscht und ist nicht mehr verfügbar.`},misc:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`}},texts:JSON.parse(`{"devices":{"noDevices":"Sie haben noch keine Geräte konfiguriert","noFilteredDevices":"Keine Geräte gefunden, die den aktiven Filterkriterien entsprechen","loadingDevices":"Geräte werden geladen...","loadingDevice":"Gerät wird geladen...","confirmRemove":"Sind Sie sicher, dass Sie das Gerät: {device} entfernen möchten? Dies kann nicht rückgängig gemacht werden.","confirmBulkRemove":"Sind Sie sicher, dass Sie {count} Geräte entfernen möchten? Dies kann nicht rückgängig gemacht werden.","confirmBulkEnable":"Sind Sie sicher, dass Sie {count} Geräte aktivieren möchten?","confirmBulkDisable":"Sind Sie sicher, dass Sie {count} Geräte deaktivieren möchten?","description":{"generic":"","air_conditioner":"The Air Conditioner device represents a cooling system with additional features for environmental monitoring and energy management.","air_dehumidifier":"The Air Dehumidifier device represents a system designed to reduce humidity levels in the environment while providing additional monitoring and control capabilities.","air_humidifier":"The Air Humidifier device represents a system designed to increase humidity levels in the environment while providing additional monitoring and control capabilities.","air_purifier":"The Air Purifier device represents a system designed to improve indoor air quality by removing contaminants and monitoring environmental conditions.","alarm":"","av_receiver":"The AV Receiver device represents a home theater receiver/amplifier with input switching and speaker output control.","camera":"The Camera device represents a surveillance or monitoring system designed for video and image capturing, with additional features for environmental monitoring and interaction.","doorbell":"The Doorbell device represents a smart doorbell system that provides video, audio, and additional monitoring features for enhanced home security.","door":"The Door device represents automated or monitored doors, such as garage doors, entrance doors, or other types of doors, with additional features for security and environmental awareness.","fan":"The Fan device represents a standalone or integrated fan system with features for speed control, direction adjustment, and energy monitoring.","game_console":"The Game Console device represents a gaming console that can be controlled for basic power/activity state and media playback where supported.","heating_unit":"The Heating Unit device represents a space or room heating system designed to control and monitor environmental temperature, with optional features for energy and humidity management.","lighting":"The Lighting device represents a lighting system designed to provide illumination with optional features for energy tracking, brightness control, and adaptive lighting based on ambient conditions.","lock":"The Lock device represents an electronic or smart locking system, providing control and monitoring of access points such as doors or gates.","media":"The Media device represents a multimedia system capable of playing, recording, or managing audio and video content.","outlet":"The Outlet device represents a power outlet with advanced monitoring and control features, enabling remote operation and energy tracking. It supports single or multiple outlets for flexible power management.","projector":"The Projector device represents a video projection display that can be powered on/off and switched between input sources.","pump":"The Pump device represents a water or fluid pump with functionality for flow control, monitoring, and energy tracking.","robot_vacuum":"The Robot Vacuum device represents an autonomous cleaning device with capabilities for energy tracking and operational monitoring.","sensor":"The Sensor device represents a versatile monitoring unit capable of tracking various environmental and safety parameters.","set_top_box":"The Set-top Box device represents a TV-connected media device (streaming box, IPTV box, or HDMI stick) providing playback control and optional source selection.","speaker":"The Speaker device represents an audio output system capable of producing sound and potentially supporting media playback and input functionality.","sprinkler":"The Sprinkler device represents an irrigation system designed to control water flow and monitor environmental conditions to optimize watering.","streaming_service":"The Streaming Service device represents a cloud-based media player (e.g., Spotify) that provides playback control and metadata without a physical power state.","switcher":"The Switcher device represents a controllable outlet or switch that can toggle the power supply to connected devices and monitor energy usage. It supports multiple outlets for power control.","television":"The Television device represents a smart TV or similar media device that can be controlled and monitored for its audio and display functionality.","thermostat":"The Thermostat device represents a climate control system that monitors and adjusts temperature and related environmental factors.","valve":"The Valve device represents a controllable valve used for managing the flow of liquids or gases in various systems.","water_heater":"The Water Heater device represents a water heating system designed to heat and maintain water temperature, with optional features for energy monitoring and leak detection.","window_covering":"The Window Covering device represents automated window treatments such as blinds, shades, or curtains."},"selectPlugin":"Um ein neues Gerät zu erstellen, wählen Sie bitte ein kompatibles Plugin aus der Liste. Plugins bieten die notwendigen Konfigurationsoptionen für bestimmte Gerätetypen.","noChannels":"Dieses Gerät hat noch keine Kanäle. Kanäle definieren die Ein- oder Ausgänge eines Geräts. Erstellen Sie einen neuen Kanal, um mit diesem Gerät zu interagieren.","category":"Kategorie","channelsCount":"Keine Kanäle konfiguriert | Ein Kanal konfiguriert | {count} Kanäle konfiguriert","alertsCount":"Keine Warnungen erkannt | Eine Warnung erkannt | {count} Warnungen erkannt","channels":"Kanäle","alerts":"Warnungen","status":"Status","validation":"Validierung","noControllableProperties":"Dieses Gerät hat keine steuerbaren Eigenschaften. Eigenschaften müssen Lese-Schreib- oder Nur-Schreib-Berechtigungen haben, um gesteuert zu werden.","logs":{"title":"Geräteprotokolle","noLogs":"Keine Protokolle verfügbar","noLogsDescription":"Für dieses Gerät wurden noch keine Protokolle aufgezeichnet","noMessage":"(keine Nachricht)","noMoreEntries":"Keine weiteren Protokolleinträge"}},"channels":{"noChannels":"Sie haben noch keine Gerätekanäle konfiguriert","noFilteredChannels":"Keine Kanäle gefunden, die den aktiven Filterkriterien entsprechen","loadingChannels":"Kanäle werden geladen...","loadingChannel":"Kanal wird geladen...","confirmRemove":"Sind Sie sicher, dass Sie den Kanal: {channel} entfernen möchten? Dies kann nicht rückgängig gemacht werden.","description":{"generic":"","air_particulate":"Monitors the concentration of particulate matter (e.g., PM2.5 and PM10) in the air, providing insights into air quality and pollution levels.","air_quality":"Monitors overall air quality using an index (0-500) or level indicator, providing a simplified assessment of indoor air conditions.","alarm":"","battery":"Reports the status of a device's battery, including level, charging state, and operational health.","camera":"Provides video and image data streams from surveillance or monitoring cameras. This channel supports configuration and control of camera devices, such as surveillance cameras or babysitting monitors.","carbon_dioxide":"Monitors CO₂ levels in the environment to track air quality and ventilation efficiency.","carbon_monoxide":"Detects the presence of carbon monoxide (CO) to ensure safety in enclosed spaces.","contact":"Tracks the open or closed state of a contact point, such as a door, window, or cabinet.","cooler":"Controls devices that lower air or liquid temperatures, such as air conditioners or refrigeration systems.","dehumidifier":"Controls dehumidifier devices, managing humidity reduction with features like target humidity, operating modes, and water tank monitoring.","device_information":"This channel provides metadata about the device, including manufacturer details, model information, and operational statuses.","doorbell":"Represents smart doorbells, providing features such as button press detection and optional camera integration.","door":"Manages the open/close states of doors, including garage and entry doors.","electrical_energy":"Measures cumulative energy consumption over time in kilowatt-hours (kWh).","electrical_generation":"Reports energy production from a photovoltaic (PV) or other generation source, tracking cumulative energy generated in kWh.","electrical_power":"Reports instantaneous power metrics such as voltage, current, power, and frequency for real-time monitoring and diagnostics.","fan":"Controls fan devices, including speed, oscillation, and modes for air circulation.","filter":"Monitors the status and remaining life of air or water filters, indicating when replacement is needed.","flow":"Monitors the rate of fluid or air flow, typically measured in cubic meters per hour (m³/h).","gas":"Detects the presence of natural gas or other combustible gases to ensure safety in enclosed spaces.","heater":"Manages heating devices, allowing control of temperature settings and modes.","humidifier":"Controls humidifier devices, managing humidity increase with features like target humidity, mist level control, and water tank monitoring.","humidity":"Measures the relative humidity in the environment, reported as a percentage.","illuminance":"Detects ambient light levels, typically measured in lux, to monitor brightness in a space.","leak":"Identifies the presence of water or other liquids to detect leaks and prevent damage.","light":"Controls lighting devices, supporting brightness, color temperature, and color adjustments.","lock":"Manages the locked/unlocked state of physical locks for doors, safes, or other secure areas.","media_input":"Manages the input sources of multimedia devices like TVs, projectors, or audio receivers.","media_playback":"Provides playback controls for multimedia devices, excluding volume control (handled by Speaker and Microphone channels).","microphone":"Represents audio input devices, reporting activity or capturing sound.","motion":"Detects motion in an area to trigger alerts or automate responses.","nitrogen_dioxide":"Monitors the concentration of NO₂ in the air, often used in environmental and industrial monitoring.","occupancy":"Detects the presence of people in a space for automation or energy efficiency purposes.","outlet":"Controls and monitors electrical outlets.","ozone":"Measures ozone (O₃) levels in the air, often used in environmental quality assessments.","pressure":"Reports atmospheric or liquid pressure values, typically measured in pascals (kPa).","robot_vacuum":"Controls robotic vacuum cleaners, providing commands for start, stop, docking, and monitoring states.","smoke":"Detects smoke in the environment, triggering alarms or alerts for safety.","speaker":"Controls speaker devices, including volume, mute state, and audio output modes.","sulphur_dioxide":"Measures sulphur dioxide (SO₂) levels in the air for environmental monitoring.","switcher":"Represents binary switches to control devices like lights, fans, or appliances.","television":"Provides control for TVs, including input source, brightness, and power state.","projector":"Provides control for projectors, including power, input source, brightness, and remote keys.","temperature":"Measures the current temperature in an environment, reported in degrees Celsius .","thermostat":"Manages climate control systems, allowing adjustments of heating, cooling, and fan settings.","valve":"Controls fluid or gas valves, managing open/close states or flow rates.","volatile_organic_compounds":"Monitors the concentration of VOCs in the air to track pollution or air quality.","window_covering":"Controls coverings like blinds, curtains, and shutters, including position and tilt adjustments."},"selectPlugin":"Um einen neuen Kanal zu erstellen, wählen Sie bitte ein kompatibles Plugin aus der Liste. Plugins bieten die notwendigen Konfigurationsoptionen für bestimmte Kanaltypen."},"channelsProperties":{"noProperties":"Sie haben noch keine Kanaleigenschaften konfiguriert","noFilteredProperties":"Keine Kanaleigenschaften gefunden, die den aktiven Filterkriterien entsprechen","loadingProperties":"Kanaleigenschaften werden geladen...","loadingProperty":"Kanaleigenschaft wird geladen...","loadingChannels":"Kanäle werden geladen...","loadingChannel":"Kanal wird geladen...","confirmRemove":"Sind Sie sicher, dass Sie die Kanaleigenschaft: {property} entfernen möchten? Dies kann nicht rückgängig gemacht werden.","dataTypes":{"char":"Signed 8-bit integer (-128 to 127).","uchar":"Unsigned 8-bit integer (0 to 255).","short":"Signed 16-bit integer (-32,768 to 32,767).","ushort":"Unsigned 16-bit integer (0 to 65,535).","int":"Signed 32-bit integer (-2,147,483,648 to 2,147,483,647).","uint":"Unsigned 32-bit integer (0 to 4,294,967,295).","float":"Floating-point number (e.g., 3.14, -0.001).","bool":"Boolean value: true or false.","string":"A sequence of characters (e.g., \\"hello\\").","enum":"Enumerated value selected from a predefined set.","unknown":"Unknown or unspecified data type."},"editValue":"Das manuelle Ändern dieses Werts ist erlaubt, aber er kann automatisch überschrieben werden, wenn diese Eigenschaft einem Gerät zugeordnet ist. Mit Vorsicht verwenden."},"misc":{"notSet":"Nicht gesetzt","noValuesProvided":"Keine Werte angegeben","confirmDiscard":"Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?"}}`),fields:{devices:{search:{placeholder:`Geräte suchen...`},plugin:{title:`Geräte-Plugin`,placeholder:`Geräte-Plugin auswählen`},state:{title:`Status`,placeholder:`Status auswählen`},id:{title:`Interner Bezeichner`,placeholder:`Geräte-ID`},identifier:{title:`Systembezeichner`,placeholder:`Geräte-Systembezeichner`},category:{title:`Kategorie`,placeholder:`Gerätekategorie`,description:`Über Kategorie`,validation:{required:`Bitte wählen Sie eine Gerätekategorie`}},name:{title:`Name`,placeholder:`Gerätename`,validation:{required:`Bitte geben Sie den Gerätenamen ein`}},description:{title:`Beschreibung`,placeholder:`Gerätebeschreibung`},enabled:{title:`Aktiviert`,placeholder:`Gerät aktivieren oder deaktivieren`},room:{title:`Raum`,placeholder:`Raum auswählen (optional)`,hint:`Weisen Sie dieses Gerät einem physischen Raum zu`},zones:{title:`Zonen`,placeholder:`Zonen auswählen (optional)`,hint:`Weisen Sie dieses Gerät logischen Zonen zu (z.B. Sicherheit, Außenbereich). Die Etagenzonenmitgliedschaft wird aus der Raumzuweisung abgeleitet.`},validation:{title:`Validierung`}},channels:{search:{placeholder:`Kanäle suchen...`},plugin:{title:`Kanal-Plugin`,placeholder:`Kanal-Plugin auswählen`},device:{title:`Gerät`,placeholder:`Kanalgerät`,description:`Über Gerät`,validation:{required:`Bitte wählen Sie ein Kanalgerät`}},id:{title:`Interner Bezeichner`,placeholder:`Kanal-ID`},category:{title:`Kategorie`,placeholder:`Kanalkategorie`,description:`Über Kategorie`,validation:{required:`Bitte wählen Sie eine Kanalkategorie`}},name:{title:`Name`,placeholder:`Kanalname`,validation:{required:`Bitte geben Sie den Kanalnamen ein`}},description:{title:`Beschreibung`,placeholder:`Kanalbeschreibung`}},channelsProperties:{search:{placeholder:`Eigenschaften suchen...`},channel:{title:`Kanal`,placeholder:`Kanaleigenschafts-Kanal`,description:`Über Kanal`,validation:{required:`Bitte wählen Sie einen Kanaleigenschafts-Kanal`}},id:{title:`Interner Bezeichner`,placeholder:`Kanaleigenschafts-ID`},category:{title:`Kategorie`,placeholder:`Kanaleigenschafts-Kategorie`,description:`Über Kategorie`,validation:{required:`Bitte wählen Sie eine Kanaleigenschafts-Kategorie`}},name:{title:`Name`,placeholder:`Kanaleigenschafts-Name`},permissions:{title:`Berechtigungen`,placeholder:`Kanaleigenschafts-Lese- & Schreibberechtigungen`,validation:{required:`Bitte wählen Sie Kanaleigenschafts-Berechtigungen`}},dataType:{title:`Datentyp`,placeholder:`Wertdatentyp der Kanaleigenschaft`,validation:{required:`Bitte wählen Sie einen Kanaleigenschafts-Datentyp`}},unit:{title:`Einheit`,placeholder:`Kanaleigenschafts-Einheit`},format:{title:{enum:`Erlaubte Werte`,min:`Minimalwert`,max:`Maximalwert`},placeholder:{enum:`Liste erlaubter Werte`,min:`Minimal erlaubter Wert`,max:`Maximal erlaubter Wert`},validation:{required:{enum:`Bitte geben Sie die Liste erlaubter Werte der Kanaleigenschaft ein`}}},invalid:{title:`Ungültiger Wert`,placeholder:`Ungültiger Wert der Kanaleigenschaft`},step:{title:`Schrittwert`,placeholder:`Schrittwert der Kanaleigenschaft`},enterValue:{title:`Wert eingeben`},value:{title:`Wert`,placeholder:`Aktueller Wert der Kanaleigenschaft`}}},table:{devices:{columns:{name:{title:`Name`},type:{title:`Typ`},state:{title:`Status`},category:{title:`Kategorie`},enabled:{title:`Aktiviert`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`}},validation:{title:`Validierung`}}},channels:{columns:{name:{title:`Name`},device:{title:`Gerät`},category:{title:`Kategorie`}}},channelsProperties:{columns:{name:{title:`Name`},channel:{title:`Kanal`},category:{title:`Kategorie`},permissions:{title:`Berechtigungen`},dataType:{title:`Datentyp`,type:{enum:`Enum-Wert-Info`,numeric:`Numerische Wert-Info`}},value:{title:`Wert`}}}},filters:{devices:{types:{title:`Nach Gerätetyp filtern`},states:{title:`Nach Verbindungsstatus filtern`},enabled:{title:`Nach Gerätestatus filtern`,placeholder:`Gerätestatus auswählen`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`,all:`Alle`}},category:{title:`Nach Gerätekategorie filtern`,placeholder:`Eine oder mehrere auswählen`},validation:{title:`Nach Validierungsstatus filtern`}},channels:{category:{title:`Nach Kanalkategorie filtern`,placeholder:`Eine oder mehrere auswählen`}},channelsProperties:{category:{title:`Nach Eigenschaftskategorie filtern`,placeholder:`Eine oder mehrere auswählen`},dataType:{title:`Nach Eigenschafts-Datentyp filtern`},permission:{title:`Nach Eigenschaftsberechtigung filtern`}}},buttons:{add:{title:`Hinzufügen`},edit:{title:`Bearbeiten`},detail:{title:`Details`},discard:{title:`Verwerfen`},cancel:{title:`Abbrechen`},close:{title:`Schließen`},save:{title:`Speichern`},change:{title:`Ändern`},remove:{title:`Entfernen`},resetFilters:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},reset:{title:`Zurücksetzen`},addChannel:{title:`Kanal hinzufügen`},addProperty:{title:`Eigenschaft hinzufügen`},control:{title:`Steuern`},refresh:{title:`Aktualisieren`},loadMore:{title:`Mehr laden`},viewLogs:{title:`Protokolle anzeigen`},back:{title:`Zurück`}},labels:{live:`Live`},states:{online:`Online`,offline:`Offline`,all:`Alle`,connected:`Verbunden`,disconnected:`Getrennt`,init:`Initialisiert`,ready:`Bereit`,running:`Aktiv`,sleeping:`Ruhezustand`,stopped:`Gestoppt`,lost:`Verloren`,alert:`Alarm`,unknown:`Unbekannt`},permissions:{ro:`Nur lesen`,rw:`Lesen & Schreiben`,wo:`Nur schreiben`,ev:`Ereignis`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Short integer`,ushort:`Unsigned short integer`,int:`Integer`,uint:`Unsigned integer`,float:`Float`,bool:`Boolean`,string:`String`,enum:`Enum`,unknown:`Unknown`},categories:{devices:{generic:`Generisch`,air_conditioner:`Klimaanlage`,air_dehumidifier:`Luftentfeuchter`,air_humidifier:`Luftbefeuchter`,air_purifier:`Luftreiniger`,alarm:`Alarm`,av_receiver:`AV-Receiver`,camera:`Kamera`,door:`Tür`,doorbell:`Türklingel`,fan:`Ventilator`,game_console:`Spielkonsole`,heating_unit:`Heizgerät`,lighting:`Beleuchtung`,lock:`Schloss`,media:`Medien`,outlet:`Steckdose`,projector:`Projektor`,pump:`Pumpe`,robot_vacuum:`Saugroboter`,sensor:`Sensor`,set_top_box:`Set-Top-Box`,speaker:`Lautsprecher`,sprinkler:`Sprinkler`,streaming_service:`Streaming-Dienst`,switcher:`Schalter`,television:`Fernseher`,thermostat:`Thermostat`,valve:`Ventil`,water_heater:`Warmwasserbereiter`,window_covering:`Jalousie/Rollladen`},channels:{generic:`Generisch`,air_particulate:`Feinstaub`,air_quality:`Luftqualität`,alarm:`Alarm`,battery:`Batterie`,camera:`Kamera`,carbon_dioxide:`Kohlendioxid`,carbon_monoxide:`Kohlenmonoxid`,contact:`Kontakt`,cooler:`Kühler`,dehumidifier:`Entfeuchter`,device_information:`Geräteinformationen`,door:`Tür`,doorbell:`Türklingel`,electrical_energy:`Elektrische Energie`,electrical_generation:`Stromerzeugung`,electrical_power:`Elektrische Leistung`,fan:`Ventilator`,filter:`Filter`,flow:`Durchfluss`,gas:`Gas`,heater:`Heizung`,humidifier:`Befeuchter`,humidity:`Luftfeuchtigkeit`,illuminance:`Beleuchtungsstärke`,leak:`Leckage`,light:`Licht`,lock:`Schloss`,media_input:`Medieneingang`,media_playback:`Medienwiedergabe`,microphone:`Mikrofon`,motion:`Bewegung`,nitrogen_dioxide:`Stickstoffdioxid`,occupancy:`Belegung`,outlet:`Steckdose`,ozone:`Ozon`,pressure:`Druck`,robot_vacuum:`Saugroboter`,smoke:`Rauch`,speaker:`Lautsprecher`,sulphur_dioxide:`Schwefeldioxid`,switcher:`Schalter`,television:`Fernseher`,projector:`Projektor`,temperature:`Temperatur`,thermostat:`Thermostat`,valve:`Ventil`,volatile_organic_compounds:`Flüchtige organische Verbindungen`,window_covering:`Jalousie/Rollladen`},channelsProperties:{generic:`Generic`,active:`Active`,alarm_state:`Alarm state`,album:`Album`,angle:`Angle`,aqi:`AQI`,artist:`Artist`,artwork_url:`Artwork URL`,average_power:`Average power`,balance:`Balance`,bass:`Bass`,brightness:`Brightness`,change_needed:`Change needed`,child_lock:`Child lock`,color_blue:`Color blue`,color_green:`Color green`,color_red:`Color red`,color_temperature:`Color temperature`,color_white:`Color white`,command:`Command`,connection_type:`Connection type`,consumption:`Consumption`,current:`Current`,concentration:`Concentration`,defrost_active:`Defrost active`,detected:`Detected`,direction:`Direction`,distance:`Distance`,duration:`Duration`,event:`Event`,fault:`Fault`,fault_description:`Fault description`,firmware_revision:`Firmware revision`,frequency:`Frequency`,hardware_revision:`Hardware revision`,hue:`Hue`,humidity:`Humidity`,illuminance:`Illuminance`,in_use:`In Use`,infrared:`Infrared`,last_event:`Last event`,level:`Level`,life_remaining:`Life remaining`,link_quality:`Link quality`,locked:`Locked`,manufacturer:`Manufacturer`,media_type:`Media type`,mist_level:`Mist level`,model:`Model`,mode:`Mode`,mute:`Mute`,natural_breeze:`Natural breeze`,obstruction:`Obstruction`,on:`On`,over_current:`Over current`,over_voltage:`Over voltage`,over_power:`Over power`,pan:`Pan`,peak_level:`Peak level`,percentage:`Percentage`,position:`Position`,power:`Power`,pressure:`Pressure`,production:`Production`,rate:`Rate`,remaining:`Remaining`,repeat:`Repeat`,reset:`Reset`,remote_key:`Remote key`,saturation:`Saturation`,serial_number:`Serial number`,shuffle:`Shuffle`,siren:`Siren`,source:`Source`,source_label:`Source label`,speed:`Speed`,state:`State`,status:`Status`,swing:`Swing`,tampered:`Tampered`,temperature:`Temperature`,tilt:`Tilt`,timer:`Timer`,track:`Track`,treble:`Treble`,triggered:`Triggered`,type:`Type`,units:`Units`,voltage:`Voltage`,volume:`Volume`,warm_mist:`Warm mist`,water_tank_empty:`Water tank empty`,water_tank_full:`Water tank full`,water_tank_level:`Water tank level`,zoom:`Zoom`}},validation:{status:{valid:`Gültig`,invalid:`Ungültig`,unknown:`Unbekannt`},filter:{valid:`Gültig`,invalid:`Ungültig`,all:`Alle`},errors:`Fehler`,warnings:`Warnungen`,issuesTitle:`Validierungsprobleme`,severity:{error:`Fehler`,warning:`Warnung`},table:{severity:`Schweregrad`,type:`Typ`,message:`Nachricht`,channel:`Kanal`},issueTypes:{missing_channel:`Fehlender Kanal`,missing_property:`Fehlende Eigenschaft`,invalid_data_type:`Ungültiger Datentyp`,invalid_permissions:`Ungültige Berechtigungen`,invalid_format:`Ungültiges Format`,unknown_channel:`Unbekannter Kanal`,duplicate_channel:`Doppelter Kanal`,constraint_one_of_violation:`Bedingungsverletzung (einer von)`,constraint_one_or_more_of_violation:`Bedingungsverletzung (einer oder mehr von)`,constraint_mutually_exclusive_violation:`Bedingungsverletzung (gegenseitig ausschließend)`}}},vn={menu:{title:`Devices`},meta:{devices:{list:{title:`List devices`},edit:{title:`Edit device: {device}`},add:{title:`Add device`},detail:{title:`Device: {device}`},control:{title:`Control device: {device}`}},channels:{list:{title:`List channels`},edit:{title:`Edit channel: {channel}`},add:{title:`Add channel`},detail:{title:`Channel: {channel}`}},channelsProperties:{edit:{title:`Edit channel property: {property}`},add:{title:`Add channel property`}}},breadcrumbs:{devices:{list:`devices`,add:`add device`,edit:`edit device`,detail:`device: {device}`,control:`control: {device}`},channels:{list:`channels`,add:`add channel`,edit:`edit channel`,detail:`channel: {channel}`},channelsProperties:{add:`add channel property`,edit:`edit channel property`}},headings:{devices:{list:`Devices`,add:`Add device`,edit:`Edit device`,detail:`Device: {device}`,control:`Control: {device}`,remove:`Remove device?`,bulkRemove:`Remove devices?`,bulkEnable:`Enable devices?`,bulkDisable:`Disable devices?`,adjustFilters:`Filter devices`,selectPlugin:`Device plugin required`},channels:{list:`Channels`,add:`Add channel`,edit:`Edit channel`,detail:`Channel: {channel}`,remove:`Remove channel?`,adjustFilters:`Filter channels`,selectPlugin:`Channel plugin required`},channelsProperties:{add:`Add channel property`,edit:`Edit channel property`,remove:`Remove channel property?`,adjustFilters:`Filter properties`},misc:{discard:`Discard changes?`}},subHeadings:{devices:{list:`Manage smart panel devices`,add:`Add new smart panel device`,edit:`Edit smart panel device`,detail:`Manage smart panel device`,control:`Control smart panel device`,adjustFilters:`Adjust display filters`},channels:{list:`Manage smart panel devices channels`,add:`Add new smart panel device channel`,edit:`Edit smart panel device channel`,detail:`Manager smart panel device channel`,adjustFilters:`Adjust display filters`},channelsProperties:{add:`Add new smart panel channel property`,edit:`Edit smart panel channel property`,adjustFilters:`Adjust display filters`}},messages:{devices:{notFound:`The device you are looking for doesn’t exist or may have been removed.`,created:`New device added successfully.`,notCreated:`Something went wrong. Unable to create the device.`,edited:`Changes saved! The device: {device} has been updated.`,notEdited:`Something went wrong. Device update was not successful.`,removed:`The device: {device} was successfully removed.`,removeCanceled:`Device: {device} removal has been canceled.`,notRemoved:`Something went wrong, and the device: {device} was not removed.`,deletedWhileEditing:`This device was deleted and is no longer available.`,bulkRemoved:`{count} devices were successfully removed.`,bulkRemoveFailed:`Failed to remove {count} devices.`,bulkRemoveCanceled:`Bulk device removal has been canceled.`,bulkEnabled:`{count} devices were successfully enabled.`,bulkEnableFailed:`Failed to enable {count} devices.`,bulkEnableCanceled:`Bulk device enable has been canceled.`,bulkDisabled:`{count} devices were successfully disabled.`,bulkDisableFailed:`Failed to disable {count} devices.`,bulkDisableCanceled:`Bulk device disable has been canceled.`,notLoaded:`Failed to load device. Please try again later.`},channels:{notFound:`The channel you are looking for doesn’t exist or may have been removed.`,notLoaded:`Failed to load channel. Please try again later.`,notLoadedForDevice:`Failed to load channels for this device.`,created:`New channel added successfully.`,notCreated:`Something went wrong. Unable to create the channel.`,edited:`Changes saved! The channel: {channel} has been updated.`,notEdited:`Something went wrong. Channel update was not successful.`,removed:`The channel: {channel} was successfully removed.`,removeCanceled:`Channel: {channel} removal has been canceled.`,notRemoved:`Something went wrong, and the channel: {channel} was not removed.`,noMoreAllowed:`All required and optional channels are assigned to the device. No others can be added.`,deletedWhileEditing:`This channel was deleted and is no longer available.`},channelsProperties:{notFound:`The channel property you are looking for doesn’t exist or may have been removed.`,notLoadedForChannel:`Failed to load properties for this channel.`,created:`New channel property added successfully.`,notCreated:`Something went wrong. Unable to create the channel property.`,edited:`Changes saved! The channel property: {property} has been updated.`,notEdited:`Something went wrong. Channel property update was not successful.`,removed:`The channel property: {property} was successfully removed.`,removeCanceled:`Channel property: {property} removal has been canceled.`,notRemoved:`Something went wrong, and the channel property: {property} was not removed.`,noMoreAllowed:`All required and optional properties are assigned to the channel. No others can be added.`,deletedWhileEditing:`This channel property was deleted and is no longer available.`},misc:{requestError:`Something went wrong, please try again later.`}},texts:JSON.parse(`{"devices":{"noDevices":"You don't have configured any device","noFilteredDevices":"No devices found matching the active filter criteria","loadingDevices":"Loading devices...","loadingDevice":"Loading device...","confirmRemove":"Are you sure you want to remove device: {device}? This cannot be reversed.","confirmBulkRemove":"Are you sure you want to remove {count} devices? This cannot be reversed.","confirmBulkEnable":"Are you sure you want to enable {count} devices?","confirmBulkDisable":"Are you sure you want to disable {count} devices?","description":{"generic":"","air_conditioner":"The Air Conditioner device represents a cooling system with additional features for environmental monitoring and energy management.","air_dehumidifier":"The Air Dehumidifier device represents a system designed to reduce humidity levels in the environment while providing additional monitoring and control capabilities.","air_humidifier":"The Air Humidifier device represents a system designed to increase humidity levels in the environment while providing additional monitoring and control capabilities.","air_purifier":"The Air Purifier device represents a system designed to improve indoor air quality by removing contaminants and monitoring environmental conditions.","alarm":"","av_receiver":"The AV Receiver device represents a home theater receiver/amplifier with input switching and speaker output control.","camera":"The Camera device represents a surveillance or monitoring system designed for video and image capturing, with additional features for environmental monitoring and interaction.","doorbell":"The Doorbell device represents a smart doorbell system that provides video, audio, and additional monitoring features for enhanced home security.","door":"The Door device represents automated or monitored doors, such as garage doors, entrance doors, or other types of doors, with additional features for security and environmental awareness.","fan":"The Fan device represents a standalone or integrated fan system with features for speed control, direction adjustment, and energy monitoring.","game_console":"The Game Console device represents a gaming console that can be controlled for basic power/activity state and media playback where supported.","heating_unit":"The Heating Unit device represents a space or room heating system designed to control and monitor environmental temperature, with optional features for energy and humidity management.","lighting":"The Lighting device represents a lighting system designed to provide illumination with optional features for energy tracking, brightness control, and adaptive lighting based on ambient conditions.","lock":"The Lock device represents an electronic or smart locking system, providing control and monitoring of access points such as doors or gates.","media":"The Media device represents a multimedia system capable of playing, recording, or managing audio and video content.","outlet":"The Outlet device represents a power outlet with advanced monitoring and control features, enabling remote operation and energy tracking. It supports single or multiple outlets for flexible power management.","projector":"The Projector device represents a video projection display that can be powered on/off and switched between input sources.","pump":"The Pump device represents a water or fluid pump with functionality for flow control, monitoring, and energy tracking.","robot_vacuum":"The Robot Vacuum device represents an autonomous cleaning device with capabilities for energy tracking and operational monitoring.","sensor":"The Sensor device represents a versatile monitoring unit capable of tracking various environmental and safety parameters.","set_top_box":"The Set-top Box device represents a TV-connected media device (streaming box, IPTV box, or HDMI stick) providing playback control and optional source selection.","speaker":"The Speaker device represents an audio output system capable of producing sound and potentially supporting media playback and input functionality.","sprinkler":"The Sprinkler device represents an irrigation system designed to control water flow and monitor environmental conditions to optimize watering.","streaming_service":"The Streaming Service device represents a cloud-based media player (e.g., Spotify) that provides playback control and metadata without a physical power state.","switcher":"The Switcher device represents a controllable outlet or switch that can toggle the power supply to connected devices and monitor energy usage. It supports multiple outlets for power control.","television":"The Television device represents a smart TV or similar media device that can be controlled and monitored for its audio and display functionality.","thermostat":"The Thermostat device represents a climate control system that monitors and adjusts temperature and related environmental factors.","valve":"The Valve device represents a controllable valve used for managing the flow of liquids or gases in various systems.","water_heater":"The Water Heater device represents a water heating system designed to heat and maintain water temperature, with optional features for energy monitoring and leak detection.","window_covering":"The Window Covering device represents automated window treatments such as blinds, shades, or curtains."},"selectPlugin":"To create a new device, please select a compatible plugin from the list. Plugins provide the necessary configuration options for specific device type.","noChannels":"This device doesn't have any channels yet. Channels define the inputs or outputs of a device. Create a new channel to start interacting with this device.","category":"Category","channelsCount":"No channels configured | One channel configured | {count} channels configured","alertsCount":"No alerts detected | One alert detected | {count} alerts detected","channels":"Channels","alerts":"Alerts","status":"Status","validation":"Validation","noControllableProperties":"This device has no controllable properties. Properties must have read-write or write-only permissions to be controlled.","logs":{"title":"Device Logs","noLogs":"No logs available","noLogsDescription":"No logs have been recorded for this device yet","noMessage":"(no message)","noMoreEntries":"No more log entries"}},"channels":{"noChannels":"You don't have configured any device channel","noFilteredChannels":"No channels found matching the active filter criteria","loadingChannels":"Loading channels...","loadingChannel":"Loading channel...","confirmRemove":"Are you sure you want to remove channel: {channel}? This cannot be reversed.","description":{"generic":"","air_particulate":"Monitors the concentration of particulate matter (e.g., PM2.5 and PM10) in the air, providing insights into air quality and pollution levels.","air_quality":"Monitors overall air quality using an index (0-500) or level indicator, providing a simplified assessment of indoor air conditions.","alarm":"","battery":"Reports the status of a device's battery, including level, charging state, and operational health.","camera":"Provides video and image data streams from surveillance or monitoring cameras. This channel supports configuration and control of camera devices, such as surveillance cameras or babysitting monitors.","carbon_dioxide":"Monitors CO₂ levels in the environment to track air quality and ventilation efficiency.","carbon_monoxide":"Detects the presence of carbon monoxide (CO) to ensure safety in enclosed spaces.","contact":"Tracks the open or closed state of a contact point, such as a door, window, or cabinet.","cooler":"Controls devices that lower air or liquid temperatures, such as air conditioners or refrigeration systems.","dehumidifier":"Controls dehumidifier devices, managing humidity reduction with features like target humidity, operating modes, and water tank monitoring.","device_information":"This channel provides metadata about the device, including manufacturer details, model information, and operational statuses.","doorbell":"Represents smart doorbells, providing features such as button press detection and optional camera integration.","door":"Manages the open/close states of doors, including garage and entry doors.","electrical_energy":"Measures cumulative energy consumption over time in kilowatt-hours (kWh).","electrical_generation":"Reports energy production from a photovoltaic (PV) or other generation source, tracking cumulative energy generated in kWh.","electrical_power":"Reports instantaneous power metrics such as voltage, current, power, and frequency for real-time monitoring and diagnostics.","fan":"Controls fan devices, including speed, oscillation, and modes for air circulation.","filter":"Monitors the status and remaining life of air or water filters, indicating when replacement is needed.","flow":"Monitors the rate of fluid or air flow, typically measured in cubic meters per hour (m³/h).","gas":"Detects the presence of natural gas or other combustible gases to ensure safety in enclosed spaces.","heater":"Manages heating devices, allowing control of temperature settings and modes.","humidifier":"Controls humidifier devices, managing humidity increase with features like target humidity, mist level control, and water tank monitoring.","humidity":"Measures the relative humidity in the environment, reported as a percentage.","illuminance":"Detects ambient light levels, typically measured in lux, to monitor brightness in a space.","leak":"Identifies the presence of water or other liquids to detect leaks and prevent damage.","light":"Controls lighting devices, supporting brightness, color temperature, and color adjustments.","lock":"Manages the locked/unlocked state of physical locks for doors, safes, or other secure areas.","media_input":"Manages the input sources of multimedia devices like TVs, projectors, or audio receivers.","media_playback":"Provides playback controls for multimedia devices, excluding volume control (handled by Speaker and Microphone channels).","microphone":"Represents audio input devices, reporting activity or capturing sound.","motion":"Detects motion in an area to trigger alerts or automate responses.","nitrogen_dioxide":"Monitors the concentration of NO₂ in the air, often used in environmental and industrial monitoring.","occupancy":"Detects the presence of people in a space for automation or energy efficiency purposes.","outlet":"Controls and monitors electrical outlets.","ozone":"Measures ozone (O₃) levels in the air, often used in environmental quality assessments.","pressure":"Reports atmospheric or liquid pressure values, typically measured in pascals (kPa).","robot_vacuum":"Controls robotic vacuum cleaners, providing commands for start, stop, docking, and monitoring states.","smoke":"Detects smoke in the environment, triggering alarms or alerts for safety.","speaker":"Controls speaker devices, including volume, mute state, and audio output modes.","sulphur_dioxide":"Measures sulphur dioxide (SO₂) levels in the air for environmental monitoring.","switcher":"Represents binary switches to control devices like lights, fans, or appliances.","television":"Provides control for TVs, including input source, brightness, and power state.","projector":"Provides control for projectors, including power, input source, brightness, and remote keys.","temperature":"Measures the current temperature in an environment, reported in degrees Celsius .","thermostat":"Manages climate control systems, allowing adjustments of heating, cooling, and fan settings.","valve":"Controls fluid or gas valves, managing open/close states or flow rates.","volatile_organic_compounds":"Monitors the concentration of VOCs in the air to track pollution or air quality.","window_covering":"Controls coverings like blinds, curtains, and shutters, including position and tilt adjustments."},"selectPlugin":"To create a new channel, please select a compatible plugin from the list. Plugins provide the necessary configuration options for specific channel type."},"channelsProperties":{"noProperties":"You don't have configured any channel property","noFilteredProperties":"No channels properties found matching the active filter criteria","loadingProperties":"Loading channels properties...","loadingProperty":"Loading channel property...","loadingChannels":"Loading channels...","loadingChannel":"Loading channel...","confirmRemove":"Are you sure you want to remove channel property: {property}? This cannot be reversed.","dataTypes":{"char":"Signed 8-bit integer (-128 to 127).","uchar":"Unsigned 8-bit integer (0 to 255).","short":"Signed 16-bit integer (-32,768 to 32,767).","ushort":"Unsigned 16-bit integer (0 to 65,535).","int":"Signed 32-bit integer (-2,147,483,648 to 2,147,483,647).","uint":"Unsigned 32-bit integer (0 to 4,294,967,295).","float":"Floating-point number (e.g., 3.14, -0.001).","bool":"Boolean value: true or false.","string":"A sequence of characters (e.g., \\"hello\\").","enum":"Enumerated value selected from a predefined set.","unknown":"Unknown or unspecified data type."},"editValue":"Changing this value manually is allowed, but it may be automatically overwritten if this property is mapped to a device. Use with caution."},"misc":{"notSet":"Not set","noValuesProvided":"No values provided","confirmDiscard":"You have unsaved changes. Are you sure you want to discard them?"}}`),fields:{devices:{search:{placeholder:`Search devices...`},plugin:{title:`Device plugin`,placeholder:`Select device plugin`},state:{title:`State`,placeholder:`Select state`},id:{title:`Internal identifier`,placeholder:`Device id`},identifier:{title:`System identifier`,placeholder:`Device system identifier`},category:{title:`Category`,placeholder:`Device category`,description:`About category`,validation:{required:`Please select device category`}},name:{title:`Name`,placeholder:`Device name`,validation:{required:`Please fill in device name`}},description:{title:`Description`,placeholder:`Device description`},enabled:{title:`Enabled`,placeholder:`Enable or disable device`},room:{title:`Room`,placeholder:`Select a room (optional)`,hint:`Assign this device to a physical room location`},zones:{title:`Zones`,placeholder:`Select zones (optional)`,hint:`Assign this device to logical zones (e.g., Security, Outdoor). Floor zone membership is derived from room assignment.`},validation:{title:`Validation`}},channels:{search:{placeholder:`Search channels...`},plugin:{title:`Channel plugin`,placeholder:`Select channel plugin`},device:{title:`Device`,placeholder:`Channel device`,description:`About device`,validation:{required:`Please select channel device`}},id:{title:`Internal identifier`,placeholder:`Channel id`},category:{title:`Category`,placeholder:`Channel category`,description:`About category`,validation:{required:`Please select channel category`}},name:{title:`Name`,placeholder:`Channel name`,validation:{required:`Please fill in channel name`}},description:{title:`Description`,placeholder:`Channel description`}},channelsProperties:{search:{placeholder:`Search properties...`},channel:{title:`Channel`,placeholder:`Channel property channel`,description:`About channel`,validation:{required:`Please select channel property channel`}},id:{title:`Internal identifier`,placeholder:`Channel property id`},category:{title:`Category`,placeholder:`Channel property category`,description:`About category`,validation:{required:`Please select channel property category`}},name:{title:`Name`,placeholder:`Channel property name`},permissions:{title:`Permissions`,placeholder:`Channel property reading & writing permissions`,validation:{required:`Please select channel property permissions`}},dataType:{title:`Data type`,placeholder:`Channel property value data type`,validation:{required:`Please select channel property data type`}},unit:{title:`Unit`,placeholder:`Channel property unit`},format:{title:{enum:`Allowed values`,min:`Minimum value`,max:`Maximum value`},placeholder:{enum:`List of allowed values`,min:`Minimum allowed value`,max:`Maximum allowed value`},validation:{required:{enum:`Please fill in channel property list of allowed values`}}},invalid:{title:`Invalid value`,placeholder:`Channel property invalid value`},step:{title:`Step value`,placeholder:`Channel property step value`},enterValue:{title:`Enter value`},value:{title:`Value`,placeholder:`Channel property actual value`}}},table:{devices:{columns:{name:{title:`Name`},type:{title:`Type`},state:{title:`State`},category:{title:`Category`},enabled:{title:`Enabled`,values:{enabled:`Enabled`,disabled:`Disabled`}},validation:{title:`Validation`}}},channels:{columns:{name:{title:`Name`},device:{title:`Device`},category:{title:`Category`}}},channelsProperties:{columns:{name:{title:`Name`},channel:{title:`Channel`},category:{title:`Category`},permissions:{title:`Permissions`},dataType:{title:`Data type`,type:{enum:`Enum value info`,numeric:`Numeric value info`}},value:{title:`Value`}}}},filters:{devices:{types:{title:`Filter by device type`},states:{title:`Filter by connection state`},enabled:{title:`Filter by device state`,placeholder:`Select device state`,values:{enabled:`Enabled`,disabled:`Disabled`,all:`All`}},category:{title:`Filter by device category`,placeholder:`Select one or more`},validation:{title:`Filter by validation status`}},channels:{category:{title:`Filter by channel category`,placeholder:`Select one or more`}},channelsProperties:{category:{title:`Filter by property category`,placeholder:`Select one or more`},dataType:{title:`Filter by property data type`},permission:{title:`Filter by property permission`}}},buttons:{add:{title:`Add`},edit:{title:`Edit`},detail:{title:`Detail`},discard:{title:`Discard`},cancel:{title:`Cancel`},close:{title:`Close`},save:{title:`Save`},change:{title:`Change`},remove:{title:`Remove`},resetFilters:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},reset:{title:`Reset`},addChannel:{title:`Add channel`},addProperty:{title:`Add property`},control:{title:`Control`},refresh:{title:`Refresh`},loadMore:{title:`Load more`},viewLogs:{title:`View logs`},back:{title:`Go back`}},labels:{live:`Live`},states:{online:`Online`,offline:`Offline`,all:`All`,connected:`Connected`,disconnected:`Disconnected`,init:`Initialized`,ready:`Ready`,running:`Running`,sleeping:`Sleeping`,stopped:`Stopped`,lost:`Lost`,alert:`Alert`,unknown:`Unknown`},permissions:{ro:`Read only`,rw:`Read & write`,wo:`Write only`,ev:`Event`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Short integer`,ushort:`Unsigned short integer`,int:`Integer`,uint:`Unsigned integer`,float:`Float`,bool:`Boolean`,string:`String`,enum:`Enum`,unknown:`Unknown`},categories:{devices:{generic:`Generic`,air_conditioner:`Air conditioner`,air_dehumidifier:`Air dehumidifier`,air_humidifier:`Air humidifier`,air_purifier:`Air purifier`,alarm:`Alarm`,av_receiver:`AV receiver`,camera:`Camera`,door:`Door`,doorbell:`Doorbell`,fan:`Fan`,game_console:`Game console`,heating_unit:`Heating unit`,lighting:`Lighting`,lock:`Lock`,media:`Media`,outlet:`Outlet`,projector:`Projector`,pump:`Pump`,robot_vacuum:`Robot vacuum`,sensor:`Sensor`,set_top_box:`Set-top box`,speaker:`Speaker`,sprinkler:`Sprinkler`,streaming_service:`Streaming service`,switcher:`Switcher`,television:`Television`,thermostat:`Thermostat`,valve:`Valve`,water_heater:`Water heater`,window_covering:`Window covering`},channels:{generic:`Generic`,air_particulate:`Air particulate`,air_quality:`Air quality`,alarm:`Alarm`,battery:`Battery`,camera:`Camera`,carbon_dioxide:`Carbon dioxide`,carbon_monoxide:`Carbon monoxide`,contact:`Contact`,cooler:`Cooler`,dehumidifier:`Dehumidifier`,device_information:`Device information`,door:`Door`,doorbell:`Doorbell`,electrical_energy:`Electrical energy`,electrical_generation:`Electrical generation`,electrical_power:`Electrical power`,fan:`Fan`,filter:`Filter`,flow:`Flow`,gas:`Gas`,heater:`Heater`,humidifier:`Humidifier`,humidity:`Humidity`,illuminance:`Illuminance`,leak:`Leak`,light:`Light`,lock:`Lock`,media_input:`Media input`,media_playback:`Media playback`,microphone:`Microphone`,motion:`Motion`,nitrogen_dioxide:`Nitrogen dioxide`,occupancy:`Occupancy`,outlet:`Outlet`,ozone:`Ozone`,pressure:`Pressure`,robot_vacuum:`Robot vacuum`,smoke:`Smoke`,speaker:`Speaker`,sulphur_dioxide:`Sulphur dioxide`,switcher:`Switcher`,television:`Television`,projector:`Projector`,temperature:`Temperature`,thermostat:`Thermostat`,valve:`Valve`,volatile_organic_compounds:`Volatile organic compounds`,window_covering:`Window covering`},channelsProperties:{generic:`Generic`,active:`Active`,alarm_state:`Alarm state`,album:`Album`,angle:`Angle`,aqi:`AQI`,artist:`Artist`,artwork_url:`Artwork URL`,average_power:`Average power`,balance:`Balance`,bass:`Bass`,brightness:`Brightness`,change_needed:`Change needed`,child_lock:`Child lock`,color_blue:`Color blue`,color_green:`Color green`,color_red:`Color red`,color_temperature:`Color temperature`,color_white:`Color white`,command:`Command`,connection_type:`Connection type`,consumption:`Consumption`,current:`Current`,concentration:`Concentration`,defrost_active:`Defrost active`,detected:`Detected`,direction:`Direction`,distance:`Distance`,duration:`Duration`,event:`Event`,fault:`Fault`,fault_description:`Fault description`,firmware_revision:`Firmware revision`,frequency:`Frequency`,hardware_revision:`Hardware revision`,hue:`Hue`,humidity:`Humidity`,illuminance:`Illuminance`,in_use:`In Use`,infrared:`Infrared`,last_event:`Last event`,level:`Level`,life_remaining:`Life remaining`,link_quality:`Link quality`,locked:`Locked`,manufacturer:`Manufacturer`,media_type:`Media type`,mist_level:`Mist level`,model:`Model`,mode:`Mode`,mute:`Mute`,natural_breeze:`Natural breeze`,obstruction:`Obstruction`,on:`On`,over_current:`Over current`,over_voltage:`Over voltage`,over_power:`Over power`,pan:`Pan`,peak_level:`Peak level`,percentage:`Percentage`,position:`Position`,power:`Power`,pressure:`Pressure`,production:`Production`,rate:`Rate`,remaining:`Remaining`,repeat:`Repeat`,reset:`Reset`,remote_key:`Remote key`,saturation:`Saturation`,serial_number:`Serial number`,shuffle:`Shuffle`,siren:`Siren`,source:`Source`,source_label:`Source label`,speed:`Speed`,state:`State`,status:`Status`,swing:`Swing`,tampered:`Tampered`,temperature:`Temperature`,tilt:`Tilt`,timer:`Timer`,track:`Track`,treble:`Treble`,triggered:`Triggered`,type:`Type`,units:`Units`,voltage:`Voltage`,volume:`Volume`,warm_mist:`Warm mist`,water_tank_empty:`Water tank empty`,water_tank_full:`Water tank full`,water_tank_level:`Water tank level`,zoom:`Zoom`}},validation:{status:{valid:`Valid`,invalid:`Invalid`,unknown:`Unknown`},filter:{valid:`Valid`,invalid:`Invalid`,all:`All`},errors:`errors`,warnings:`warnings`,issuesTitle:`Validation Issues`,severity:{error:`Error`,warning:`Warning`},table:{severity:`Severity`,type:`Type`,message:`Message`,channel:`Channel`},issueTypes:{missing_channel:`Missing channel`,missing_property:`Missing property`,invalid_data_type:`Invalid data type`,invalid_permissions:`Invalid permissions`,invalid_format:`Invalid format`,unknown_channel:`Unknown channel`,duplicate_channel:`Duplicate channel`,constraint_one_of_violation:`Constraint violation (one of)`,constraint_one_or_more_of_violation:`Constraint violation (one or more of)`,constraint_mutually_exclusive_violation:`Constraint violation (mutually exclusive)`}}},yn={menu:{title:`Dispositivos`},meta:{devices:{list:{title:`Listar dispositivos`},edit:{title:`Editar dispositivo: {device}`},add:{title:`Añadir dispositivo`},detail:{title:`Dispositivo: {device}`},control:{title:`Controlar dispositivo: {device}`}},channels:{list:{title:`Listar canales`},edit:{title:`Editar canal: {channel}`},add:{title:`Añadir canal`},detail:{title:`Canal: {channel}`}},channelsProperties:{edit:{title:`Editar propiedad del canal: {property}`},add:{title:`Añadir propiedad del canal`}}},breadcrumbs:{devices:{list:`dispositivos`,add:`añadir dispositivo`,edit:`editar dispositivo`,detail:`dispositivo: {device}`,control:`controlar: {device}`},channels:{list:`canales`,add:`añadir canal`,edit:`editar canal`,detail:`canal: {channel}`},channelsProperties:{add:`añadir propiedad del canal`,edit:`editar propiedad del canal`}},headings:{devices:{list:`Dispositivos`,add:`Añadir dispositivo`,edit:`Editar dispositivo`,detail:`Dispositivo: {device}`,control:`Controlar: {device}`,remove:`¿Eliminar dispositivo?`,bulkRemove:`¿Eliminar dispositivos?`,bulkEnable:`¿Activar dispositivos?`,bulkDisable:`¿Desactivar dispositivos?`,adjustFilters:`Filtrar dispositivos`,selectPlugin:`Se requiere plugin de dispositivo`},channels:{list:`Canales`,add:`Añadir canal`,edit:`Editar canal`,detail:`Canal: {channel}`,remove:`¿Eliminar canal?`,adjustFilters:`Filtrar canales`,selectPlugin:`Se requiere plugin de canal`},channelsProperties:{add:`Añadir propiedad del canal`,edit:`Editar propiedad del canal`,remove:`¿Eliminar propiedad del canal?`,adjustFilters:`Filtrar propiedades`},misc:{discard:`¿Descartar cambios?`}},subHeadings:{devices:{list:`Gestionar dispositivos del panel inteligente`,add:`Añadir nuevo dispositivo del panel inteligente`,edit:`Editar dispositivo del panel inteligente`,detail:`Gestionar dispositivo del panel inteligente`,control:`Controlar dispositivo del panel inteligente`,adjustFilters:`Ajustar filtros de visualización`},channels:{list:`Gestionar canales de dispositivos del panel inteligente`,add:`Añadir nuevo canal de dispositivo del panel inteligente`,edit:`Editar canal de dispositivo del panel inteligente`,detail:`Gestionar canal de dispositivo del panel inteligente`,adjustFilters:`Ajustar filtros de visualización`},channelsProperties:{add:`Añadir nueva propiedad de canal del panel inteligente`,edit:`Editar propiedad de canal del panel inteligente`,adjustFilters:`Ajustar filtros de visualización`}},messages:{devices:{notFound:`El dispositivo que busca no existe o pudo haber sido eliminado.`,created:`Nuevo dispositivo añadido correctamente.`,notCreated:`Algo salió mal. No se pudo crear el dispositivo.`,edited:`¡Cambios guardados! El dispositivo: {device} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del dispositivo no fue exitosa.`,removed:`El dispositivo: {device} fue eliminado correctamente.`,removeCanceled:`La eliminación del dispositivo: {device} ha sido cancelada.`,notRemoved:`Algo salió mal y el dispositivo: {device} no fue eliminado.`,deletedWhileEditing:`Este dispositivo fue eliminado y ya no está disponible.`,bulkRemoved:`{count} dispositivos fueron eliminados correctamente.`,bulkRemoveFailed:`Error al eliminar {count} dispositivos.`,bulkRemoveCanceled:`La eliminación masiva de dispositivos ha sido cancelada.`,bulkEnabled:`{count} dispositivos fueron activados correctamente.`,bulkEnableFailed:`Error al activar {count} dispositivos.`,bulkEnableCanceled:`La activación masiva de dispositivos ha sido cancelada.`,bulkDisabled:`{count} dispositivos fueron desactivados correctamente.`,bulkDisableFailed:`Error al desactivar {count} dispositivos.`,bulkDisableCanceled:`La desactivación masiva de dispositivos ha sido cancelada.`,notLoaded:`Error al cargar el dispositivo. Por favor inténtelo de nuevo más tarde.`},channels:{notFound:`El canal que busca no existe o pudo haber sido eliminado.`,notLoaded:`Error al cargar el canal. Por favor inténtelo de nuevo más tarde.`,notLoadedForDevice:`Error al cargar los canales de este dispositivo.`,created:`Nuevo canal añadido correctamente.`,notCreated:`Algo salió mal. No se pudo crear el canal.`,edited:`¡Cambios guardados! El canal: {channel} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del canal no fue exitosa.`,removed:`El canal: {channel} fue eliminado correctamente.`,removeCanceled:`La eliminación del canal: {channel} ha sido cancelada.`,notRemoved:`Algo salió mal y el canal: {channel} no fue eliminado.`,noMoreAllowed:`Todos los canales obligatorios y opcionales están asignados al dispositivo. No se pueden añadir más.`,deletedWhileEditing:`Este canal fue eliminado y ya no está disponible.`},channelsProperties:{notFound:`La propiedad del canal que busca no existe o pudo haber sido eliminada.`,notLoadedForChannel:`Error al cargar las propiedades de este canal.`,created:`Nueva propiedad del canal añadida correctamente.`,notCreated:`Algo salió mal. No se pudo crear la propiedad del canal.`,edited:`¡Cambios guardados! La propiedad del canal: {property} ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la propiedad del canal no fue exitosa.`,removed:`La propiedad del canal: {property} fue eliminada correctamente.`,removeCanceled:`La eliminación de la propiedad del canal: {property} ha sido cancelada.`,notRemoved:`Algo salió mal y la propiedad del canal: {property} no fue eliminada.`,noMoreAllowed:`Todas las propiedades obligatorias y opcionales están asignadas al canal. No se pueden añadir más.`,deletedWhileEditing:`Esta propiedad del canal fue eliminada y ya no está disponible.`},misc:{requestError:`Algo salió mal, por favor inténtelo de nuevo más tarde.`}},texts:JSON.parse(`{"devices":{"noDevices":"No tiene ningún dispositivo configurado","noFilteredDevices":"No se encontraron dispositivos que coincidan con los criterios de filtro activos","loadingDevices":"Cargando dispositivos...","loadingDevice":"Cargando dispositivo...","confirmRemove":"¿Está seguro de que desea eliminar el dispositivo: {device}? Esto no se puede revertir.","confirmBulkRemove":"¿Está seguro de que desea eliminar {count} dispositivos? Esto no se puede revertir.","confirmBulkEnable":"¿Está seguro de que desea activar {count} dispositivos?","confirmBulkDisable":"¿Está seguro de que desea desactivar {count} dispositivos?","description":{"generic":"","air_conditioner":"El dispositivo Aire Acondicionado representa un sistema de refrigeración con funciones adicionales para la monitorización ambiental y la gestión energética.","air_dehumidifier":"El dispositivo Deshumidificador representa un sistema diseñado para reducir los niveles de humedad en el entorno, proporcionando capacidades adicionales de monitorización y control.","air_humidifier":"El dispositivo Humidificador representa un sistema diseñado para aumentar los niveles de humedad en el entorno, proporcionando capacidades adicionales de monitorización y control.","air_purifier":"El dispositivo Purificador de Aire representa un sistema diseñado para mejorar la calidad del aire interior eliminando contaminantes y monitorizando las condiciones ambientales.","alarm":"","av_receiver":"El dispositivo Receptor AV representa un receptor/amplificador de cine en casa con conmutación de entrada y control de salida de altavoces.","camera":"El dispositivo Cámara representa un sistema de vigilancia o monitorización diseñado para la captura de vídeo e imagen, con funciones adicionales para la monitorización ambiental e interacción.","doorbell":"El dispositivo Timbre representa un sistema de timbre inteligente que proporciona funciones de vídeo, audio y monitorización adicional para mejorar la seguridad del hogar.","door":"El dispositivo Puerta representa puertas automatizadas o monitorizadas, como puertas de garaje, puertas de entrada u otros tipos de puertas, con funciones adicionales de seguridad y percepción ambiental.","fan":"El dispositivo Ventilador representa un sistema de ventilación independiente o integrado con funciones de control de velocidad, ajuste de dirección y monitorización de energía.","game_console":"El dispositivo Consola de Juegos representa una consola de videojuegos que puede controlarse para el estado básico de encendido/actividad y la reproducción multimedia cuando se admite.","heating_unit":"El dispositivo Unidad de Calefacción representa un sistema de calefacción de espacio o habitación diseñado para controlar y monitorizar la temperatura ambiental, con funciones opcionales para la gestión de energía y humedad.","lighting":"El dispositivo Iluminación representa un sistema de iluminación diseñado para proporcionar luz con funciones opcionales de seguimiento de energía, control de brillo e iluminación adaptativa basada en las condiciones ambientales.","lock":"El dispositivo Cerradura representa un sistema de cerradura electrónica o inteligente, proporcionando control y monitorización de puntos de acceso como puertas o portones.","media":"El dispositivo Multimedia representa un sistema multimedia capaz de reproducir, grabar o gestionar contenido de audio y vídeo.","outlet":"El dispositivo Enchufe representa una toma de corriente con funciones avanzadas de monitorización y control, permitiendo la operación remota y el seguimiento de energía. Admite enchufes individuales o múltiples para una gestión flexible de la energía.","projector":"El dispositivo Proyector representa una pantalla de proyección de vídeo que puede encenderse/apagarse y cambiar entre fuentes de entrada.","pump":"El dispositivo Bomba representa una bomba de agua o fluido con funcionalidad de control de flujo, monitorización y seguimiento de energía.","robot_vacuum":"El dispositivo Robot Aspirador representa un dispositivo de limpieza autónomo con capacidades de seguimiento de energía y monitorización operativa.","sensor":"El dispositivo Sensor representa una unidad de monitorización versátil capaz de rastrear diversos parámetros ambientales y de seguridad.","set_top_box":"El dispositivo Decodificador representa un dispositivo multimedia conectado al televisor (caja de streaming, caja IPTV o stick HDMI) que proporciona control de reproducción y selección opcional de fuentes.","speaker":"El dispositivo Altavoz representa un sistema de salida de audio capaz de producir sonido y potencialmente compatible con la reproducción multimedia y funcionalidad de entrada.","sprinkler":"El dispositivo Aspersor representa un sistema de riego diseñado para controlar el flujo de agua y monitorizar las condiciones ambientales para optimizar el riego.","streaming_service":"El dispositivo Servicio de Streaming representa un reproductor multimedia basado en la nube (por ejemplo, Spotify) que proporciona control de reproducción y metadatos sin un estado de encendido físico.","switcher":"El dispositivo Interruptor representa una toma o interruptor controlable que puede activar o desactivar el suministro eléctrico a los dispositivos conectados y monitorizar el consumo de energía. Admite múltiples tomas para el control de energía.","television":"El dispositivo Televisión representa un televisor inteligente o dispositivo multimedia similar que puede controlarse y monitorizarse en cuanto a su funcionalidad de audio y pantalla.","thermostat":"El dispositivo Termostato representa un sistema de control climático que monitoriza y ajusta la temperatura y los factores ambientales relacionados.","valve":"El dispositivo Válvula representa una válvula controlable utilizada para gestionar el flujo de líquidos o gases en diversos sistemas.","water_heater":"El dispositivo Calentador de Agua representa un sistema de calentamiento de agua diseñado para calentar y mantener la temperatura del agua, con funciones opcionales de monitorización de energía y detección de fugas.","window_covering":"El dispositivo Cubierta de Ventana representa tratamientos automatizados de ventanas como persianas, estores o cortinas."},"selectPlugin":"Para crear un nuevo dispositivo, por favor seleccione un plugin compatible de la lista. Los plugins proporcionan las opciones de configuración necesarias para tipos de dispositivo específicos.","noChannels":"Este dispositivo aún no tiene canales. Los canales definen las entradas o salidas de un dispositivo. Cree un nuevo canal para comenzar a interactuar con este dispositivo.","category":"Categoría","channelsCount":"Sin canales configurados | Un canal configurado | {count} canales configurados","alertsCount":"Sin alertas detectadas | Una alerta detectada | {count} alertas detectadas","channels":"Canales","alerts":"Alertas","status":"Estado","validation":"Validación","noControllableProperties":"Este dispositivo no tiene propiedades controlables. Las propiedades deben tener permisos de lectura-escritura o solo escritura para poder ser controladas.","logs":{"title":"Registros del dispositivo","noLogs":"Sin registros disponibles","noLogsDescription":"Aún no se han registrado entradas para este dispositivo","noMessage":"(sin mensaje)","noMoreEntries":"No hay más entradas de registro"}},"channels":{"noChannels":"No tiene ningún canal de dispositivo configurado","noFilteredChannels":"No se encontraron canales que coincidan con los criterios de filtro activos","loadingChannels":"Cargando canales...","loadingChannel":"Cargando canal...","confirmRemove":"¿Está seguro de que desea eliminar el canal: {channel}? Esto no se puede revertir.","description":{"generic":"","air_particulate":"Monitoriza la concentración de partículas en suspensión (por ejemplo, PM2.5 y PM10) en el aire, proporcionando información sobre la calidad del aire y los niveles de contaminación.","air_quality":"Monitoriza la calidad general del aire mediante un índice (0-500) o indicador de nivel, proporcionando una evaluación simplificada de las condiciones del aire interior.","alarm":"","battery":"Informa sobre el estado de la batería de un dispositivo, incluyendo nivel, estado de carga y estado operativo.","camera":"Proporciona flujos de datos de vídeo e imagen de cámaras de vigilancia o monitorización. Este canal admite la configuración y control de dispositivos de cámara, como cámaras de vigilancia o monitores para bebés.","carbon_dioxide":"Monitoriza los niveles de CO₂ en el entorno para seguir la calidad del aire y la eficiencia de la ventilación.","carbon_monoxide":"Detecta la presencia de monóxido de carbono (CO) para garantizar la seguridad en espacios cerrados.","contact":"Rastrea el estado abierto o cerrado de un punto de contacto, como una puerta, ventana o armario.","cooler":"Controla dispositivos que reducen la temperatura del aire o de líquidos, como aires acondicionados o sistemas de refrigeración.","dehumidifier":"Controla dispositivos deshumidificadores, gestionando la reducción de humedad con funciones como humedad objetivo, modos de operación y monitorización del depósito de agua.","device_information":"Este canal proporciona metadatos sobre el dispositivo, incluyendo detalles del fabricante, información del modelo y estados operativos.","doorbell":"Representa timbres inteligentes, proporcionando funciones como detección de pulsación de botón e integración opcional con cámara.","door":"Gestiona los estados de apertura/cierre de puertas, incluyendo puertas de garaje y de entrada.","electrical_energy":"Mide el consumo acumulado de energía a lo largo del tiempo en kilovatios-hora (kWh).","electrical_generation":"Informa sobre la producción de energía de una fuente fotovoltaica (PV) u otra fuente de generación, rastreando la energía acumulada generada en kWh.","electrical_power":"Informa sobre métricas instantáneas de potencia como voltaje, corriente, potencia y frecuencia para monitorización y diagnóstico en tiempo real.","fan":"Controla dispositivos de ventilación, incluyendo velocidad, oscilación y modos de circulación de aire.","filter":"Monitoriza el estado y la vida útil restante de filtros de aire o agua, indicando cuándo se necesita reemplazo.","flow":"Monitoriza la tasa de flujo de fluido o aire, normalmente medida en metros cúbicos por hora (m³/h).","gas":"Detecta la presencia de gas natural u otros gases combustibles para garantizar la seguridad en espacios cerrados.","heater":"Gestiona dispositivos de calefacción, permitiendo el control de ajustes de temperatura y modos.","humidifier":"Controla dispositivos humidificadores, gestionando el aumento de humedad con funciones como humedad objetivo, control del nivel de vapor y monitorización del depósito de agua.","humidity":"Mide la humedad relativa en el entorno, expresada como porcentaje.","illuminance":"Detecta los niveles de luz ambiental, normalmente medidos en lux, para monitorizar la luminosidad de un espacio.","leak":"Identifica la presencia de agua u otros líquidos para detectar fugas y prevenir daños.","light":"Controla dispositivos de iluminación, admitiendo ajustes de brillo, temperatura de color y color.","lock":"Gestiona el estado de bloqueo/desbloqueo de cerraduras físicas para puertas, cajas fuertes u otras áreas seguras.","media_input":"Gestiona las fuentes de entrada de dispositivos multimedia como televisores, proyectores o receptores de audio.","media_playback":"Proporciona controles de reproducción para dispositivos multimedia, excluyendo el control de volumen (gestionado por los canales de Altavoz y Micrófono).","microphone":"Representa dispositivos de entrada de audio, informando sobre actividad o capturando sonido.","motion":"Detecta movimiento en un área para activar alertas o automatizar respuestas.","nitrogen_dioxide":"Monitoriza la concentración de NO₂ en el aire, utilizado frecuentemente en monitorización ambiental e industrial.","occupancy":"Detecta la presencia de personas en un espacio para automatización o eficiencia energética.","outlet":"Controla y monitoriza enchufes eléctricos.","ozone":"Mide los niveles de ozono (O₃) en el aire, utilizado frecuentemente en evaluaciones de calidad ambiental.","pressure":"Informa sobre valores de presión atmosférica o de líquidos, normalmente medidos en pascales (kPa).","robot_vacuum":"Controla aspiradoras robóticas, proporcionando comandos de inicio, parada, acoplamiento y monitorización de estados.","smoke":"Detecta humo en el entorno, activando alarmas o alertas de seguridad.","speaker":"Controla dispositivos de altavoz, incluyendo volumen, estado de silencio y modos de salida de audio.","sulphur_dioxide":"Mide los niveles de dióxido de azufre (SO₂) en el aire para monitorización ambiental.","switcher":"Representa interruptores binarios para controlar dispositivos como luces, ventiladores o electrodomésticos.","television":"Proporciona control para televisores, incluyendo fuente de entrada, brillo y estado de encendido.","projector":"Proporciona control para proyectores, incluyendo encendido, fuente de entrada, brillo y teclas de control remoto.","temperature":"Mide la temperatura actual en un entorno, expresada en grados Celsius.","thermostat":"Gestiona sistemas de control climático, permitiendo ajustes de calefacción, refrigeración y ventilación.","valve":"Controla válvulas de fluido o gas, gestionando estados de apertura/cierre o tasas de flujo.","volatile_organic_compounds":"Monitoriza la concentración de COV en el aire para rastrear la contaminación o calidad del aire.","window_covering":"Controla cubiertas como persianas, cortinas y estores, incluyendo ajustes de posición e inclinación."},"selectPlugin":"Para crear un nuevo canal, por favor seleccione un plugin compatible de la lista. Los plugins proporcionan las opciones de configuración necesarias para tipos de canal específicos."},"channelsProperties":{"noProperties":"No tiene ninguna propiedad de canal configurada","noFilteredProperties":"No se encontraron propiedades de canal que coincidan con los criterios de filtro activos","loadingProperties":"Cargando propiedades de canal...","loadingProperty":"Cargando propiedad del canal...","loadingChannels":"Cargando canales...","loadingChannel":"Cargando canal...","confirmRemove":"¿Está seguro de que desea eliminar la propiedad del canal: {property}? Esto no se puede revertir.","dataTypes":{"char":"Entero con signo de 8 bits (-128 a 127).","uchar":"Entero sin signo de 8 bits (0 a 255).","short":"Entero con signo de 16 bits (-32.768 a 32.767).","ushort":"Entero sin signo de 16 bits (0 a 65.535).","int":"Entero con signo de 32 bits (-2.147.483.648 a 2.147.483.647).","uint":"Entero sin signo de 32 bits (0 a 4.294.967.295).","float":"Número de punto flotante (por ejemplo, 3,14, -0,001).","bool":"Valor booleano: verdadero o falso.","string":"Una secuencia de caracteres (por ejemplo, \\"hola\\").","enum":"Valor enumerado seleccionado de un conjunto predefinido.","unknown":"Tipo de dato desconocido o no especificado."},"editValue":"Se permite cambiar este valor manualmente, pero puede ser sobrescrito automáticamente si esta propiedad está asignada a un dispositivo. Utilice con precaución."},"misc":{"notSet":"No establecido","noValuesProvided":"Sin valores proporcionados","confirmDiscard":"Tiene cambios sin guardar. ¿Está seguro de que desea descartarlos?"}}`),fields:{devices:{search:{placeholder:`Buscar dispositivos...`},plugin:{title:`Plugin de dispositivo`,placeholder:`Seleccionar plugin de dispositivo`},state:{title:`Estado`,placeholder:`Seleccionar estado`},id:{title:`Identificador interno`,placeholder:`ID del dispositivo`},identifier:{title:`Identificador del sistema`,placeholder:`Identificador del sistema del dispositivo`},category:{title:`Categoría`,placeholder:`Categoría del dispositivo`,description:`Acerca de la categoría`,validation:{required:`Por favor seleccione la categoría del dispositivo`}},name:{title:`Nombre`,placeholder:`Nombre del dispositivo`,validation:{required:`Por favor ingrese el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Activado`,placeholder:`Activar o desactivar dispositivo`},room:{title:`Habitación`,placeholder:`Seleccionar una habitación (opcional)`,hint:`Asignar este dispositivo a una ubicación de habitación física`},zones:{title:`Zonas`,placeholder:`Seleccionar zonas (opcional)`,hint:`Asignar este dispositivo a zonas lógicas (por ejemplo, Seguridad, Exterior). La pertenencia a la zona de planta se deriva de la asignación de habitación.`},validation:{title:`Validación`}},channels:{search:{placeholder:`Buscar canales...`},plugin:{title:`Plugin de canal`,placeholder:`Seleccionar plugin de canal`},device:{title:`Dispositivo`,placeholder:`Dispositivo del canal`,description:`Acerca del dispositivo`,validation:{required:`Por favor seleccione el dispositivo del canal`}},id:{title:`Identificador interno`,placeholder:`ID del canal`},category:{title:`Categoría`,placeholder:`Categoría del canal`,description:`Acerca de la categoría`,validation:{required:`Por favor seleccione la categoría del canal`}},name:{title:`Nombre`,placeholder:`Nombre del canal`,validation:{required:`Por favor ingrese el nombre del canal`}},description:{title:`Descripción`,placeholder:`Descripción del canal`}},channelsProperties:{search:{placeholder:`Buscar propiedades...`},channel:{title:`Canal`,placeholder:`Canal de la propiedad`,description:`Acerca del canal`,validation:{required:`Por favor seleccione el canal de la propiedad`}},id:{title:`Identificador interno`,placeholder:`ID de la propiedad del canal`},category:{title:`Categoría`,placeholder:`Categoría de la propiedad del canal`,description:`Acerca de la categoría`,validation:{required:`Por favor seleccione la categoría de la propiedad del canal`}},name:{title:`Nombre`,placeholder:`Nombre de la propiedad del canal`},permissions:{title:`Permisos`,placeholder:`Permisos de lectura y escritura de la propiedad del canal`,validation:{required:`Por favor seleccione los permisos de la propiedad del canal`}},dataType:{title:`Tipo de dato`,placeholder:`Tipo de dato del valor de la propiedad del canal`,validation:{required:`Por favor seleccione el tipo de dato de la propiedad del canal`}},unit:{title:`Unidad`,placeholder:`Unidad de la propiedad del canal`},format:{title:{enum:`Valores permitidos`,min:`Valor mínimo`,max:`Valor máximo`},placeholder:{enum:`Lista de valores permitidos`,min:`Valor mínimo permitido`,max:`Valor máximo permitido`},validation:{required:{enum:`Por favor ingrese la lista de valores permitidos de la propiedad del canal`}}},invalid:{title:`Valor no válido`,placeholder:`Valor no válido de la propiedad del canal`},step:{title:`Valor de paso`,placeholder:`Valor de paso de la propiedad del canal`},enterValue:{title:`Ingrese el valor`},value:{title:`Valor`,placeholder:`Valor actual de la propiedad del canal`}}},table:{devices:{columns:{name:{title:`Nombre`},type:{title:`Tipo`},state:{title:`Estado`},category:{title:`Categoría`},enabled:{title:`Activado`,values:{enabled:`Activado`,disabled:`Desactivado`}},validation:{title:`Validación`}}},channels:{columns:{name:{title:`Nombre`},device:{title:`Dispositivo`},category:{title:`Categoría`}}},channelsProperties:{columns:{name:{title:`Nombre`},channel:{title:`Canal`},category:{title:`Categoría`},permissions:{title:`Permisos`},dataType:{title:`Tipo de dato`,type:{enum:`Información de valor enumerado`,numeric:`Información de valor numérico`}},value:{title:`Valor`}}}},filters:{devices:{types:{title:`Filtrar por tipo de dispositivo`},states:{title:`Filtrar por estado de conexión`},enabled:{title:`Filtrar por estado del dispositivo`,placeholder:`Seleccionar estado del dispositivo`,values:{enabled:`Activado`,disabled:`Desactivado`,all:`Todos`}},category:{title:`Filtrar por categoría de dispositivo`,placeholder:`Seleccionar uno o más`},validation:{title:`Filtrar por estado de validación`}},channels:{category:{title:`Filtrar por categoría de canal`,placeholder:`Seleccionar uno o más`}},channelsProperties:{category:{title:`Filtrar por categoría de propiedad`,placeholder:`Seleccionar uno o más`},dataType:{title:`Filtrar por tipo de dato de propiedad`},permission:{title:`Filtrar por permiso de propiedad`}}},buttons:{add:{title:`Añadir`},edit:{title:`Editar`},detail:{title:`Detalle`},discard:{title:`Descartar`},cancel:{title:`Cancelar`},close:{title:`Cerrar`},save:{title:`Guardar`},change:{title:`Cambiar`},remove:{title:`Eliminar`},resetFilters:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},reset:{title:`Restablecer`},addChannel:{title:`Añadir canal`},addProperty:{title:`Añadir propiedad`},control:{title:`Controlar`},refresh:{title:`Actualizar`},loadMore:{title:`Cargar más`},viewLogs:{title:`Ver registros`},back:{title:`Volver`}},labels:{live:`En vivo`},states:{online:`En línea`,offline:`Fuera de línea`,all:`Todos`,connected:`Conectado`,disconnected:`Desconectado`,init:`Inicializado`,ready:`Listo`,running:`En ejecución`,sleeping:`En reposo`,stopped:`Detenido`,lost:`Perdido`,alert:`Alerta`,unknown:`Desconocido`},permissions:{ro:`Solo lectura`,rw:`Lectura y escritura`,wo:`Solo escritura`,ev:`Evento`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Entero corto`,ushort:`Entero corto sin signo`,int:`Entero`,uint:`Entero sin signo`,float:`Float`,bool:`Booleano`,string:`String`,enum:`Enum`,unknown:`Desconocido`},categories:{devices:{generic:`Genérico`,air_conditioner:`Aire acondicionado`,air_dehumidifier:`Deshumidificador`,air_humidifier:`Humidificador`,air_purifier:`Purificador de aire`,alarm:`Alarma`,av_receiver:`Receptor AV`,camera:`Cámara`,door:`Puerta`,doorbell:`Timbre`,fan:`Ventilador`,game_console:`Consola de juegos`,heating_unit:`Unidad de calefacción`,lighting:`Iluminación`,lock:`Cerradura`,media:`Multimedia`,outlet:`Enchufe`,projector:`Proyector`,pump:`Bomba`,robot_vacuum:`Robot aspirador`,sensor:`Sensor`,set_top_box:`Decodificador`,speaker:`Altavoz`,sprinkler:`Aspersor`,streaming_service:`Servicio de streaming`,switcher:`Interruptor`,television:`Televisión`,thermostat:`Termostato`,valve:`Válvula`,water_heater:`Calentador de agua`,window_covering:`Cubierta de ventana`},channels:{generic:`Genérico`,air_particulate:`Partículas en el aire`,air_quality:`Calidad del aire`,alarm:`Alarma`,battery:`Batería`,camera:`Cámara`,carbon_dioxide:`Dióxido de carbono`,carbon_monoxide:`Monóxido de carbono`,contact:`Contacto`,cooler:`Refrigerador`,dehumidifier:`Deshumidificador`,device_information:`Información del dispositivo`,door:`Puerta`,doorbell:`Timbre`,electrical_energy:`Energía eléctrica`,electrical_generation:`Generación eléctrica`,electrical_power:`Potencia eléctrica`,fan:`Ventilador`,filter:`Filtro`,flow:`Flujo`,gas:`Gas`,heater:`Calefactor`,humidifier:`Humidificador`,humidity:`Humedad`,illuminance:`Iluminancia`,leak:`Fuga`,light:`Luz`,lock:`Cerradura`,media_input:`Entrada multimedia`,media_playback:`Reproducción multimedia`,microphone:`Micrófono`,motion:`Movimiento`,nitrogen_dioxide:`Dióxido de nitrógeno`,occupancy:`Ocupación`,outlet:`Enchufe`,ozone:`Ozono`,pressure:`Presión`,robot_vacuum:`Robot aspirador`,smoke:`Humo`,speaker:`Altavoz`,sulphur_dioxide:`Dióxido de azufre`,switcher:`Interruptor`,television:`Televisión`,projector:`Proyector`,temperature:`Temperatura`,thermostat:`Termostato`,valve:`Válvula`,volatile_organic_compounds:`Compuestos orgánicos volátiles`,window_covering:`Cubierta de ventana`},channelsProperties:{generic:`Genérico`,active:`Activo`,alarm_state:`Estado de alarma`,album:`Álbum`,angle:`Ángulo`,aqi:`AQI`,artist:`Artista`,artwork_url:`URL de la portada`,average_power:`Potencia media`,balance:`Balance`,bass:`Graves`,brightness:`Brillo`,change_needed:`Cambio necesario`,child_lock:`Bloqueo infantil`,color_blue:`Color azul`,color_green:`Color verde`,color_red:`Color rojo`,color_temperature:`Temperatura de color`,color_white:`Color blanco`,command:`Comando`,connection_type:`Tipo de conexión`,consumption:`Consumo`,current:`Corriente`,concentration:`Concentración`,defrost_active:`Descongelación activa`,detected:`Detectado`,direction:`Dirección`,distance:`Distancia`,duration:`Duración`,event:`Evento`,fault:`Fallo`,fault_description:`Descripción del fallo`,firmware_revision:`Revisión de firmware`,frequency:`Frecuencia`,hardware_revision:`Revisión de hardware`,hue:`Tono`,humidity:`Humedad`,illuminance:`Iluminancia`,in_use:`En uso`,infrared:`Infrarrojo`,last_event:`Último evento`,level:`Nivel`,life_remaining:`Vida útil restante`,link_quality:`Calidad del enlace`,locked:`Bloqueado`,manufacturer:`Fabricante`,media_type:`Tipo de medio`,mist_level:`Nivel de vapor`,model:`Modelo`,mode:`Modo`,mute:`Silencio`,natural_breeze:`Brisa natural`,obstruction:`Obstrucción`,on:`Encendido`,over_current:`Sobrecorriente`,over_voltage:`Sobretensión`,over_power:`Sobrepotencia`,pan:`Panorámica`,peak_level:`Nivel máximo`,percentage:`Porcentaje`,position:`Posición`,power:`Potencia`,pressure:`Presión`,production:`Producción`,rate:`Tasa`,remaining:`Restante`,repeat:`Repetir`,reset:`Restablecer`,remote_key:`Tecla remota`,saturation:`Saturación`,serial_number:`Número de serie`,shuffle:`Aleatorio`,siren:`Sirena`,source:`Fuente`,source_label:`Etiqueta de fuente`,speed:`Velocidad`,state:`Estado`,status:`Estado`,swing:`Oscilación`,tampered:`Manipulado`,temperature:`Temperatura`,tilt:`Inclinación`,timer:`Temporizador`,track:`Pista`,treble:`Agudos`,triggered:`Activado`,type:`Tipo`,units:`Unidades`,voltage:`Voltaje`,volume:`Volumen`,warm_mist:`Vapor caliente`,water_tank_empty:`Depósito de agua vacío`,water_tank_full:`Depósito de agua lleno`,water_tank_level:`Nivel del depósito de agua`,zoom:`Zoom`}},validation:{status:{valid:`Válido`,invalid:`No válido`,unknown:`Desconocido`},filter:{valid:`Válido`,invalid:`No válido`,all:`Todos`},errors:`errores`,warnings:`advertencias`,issuesTitle:`Problemas de validación`,severity:{error:`Error`,warning:`Advertencia`},table:{severity:`Gravedad`,type:`Tipo`,message:`Mensaje`,channel:`Canal`},issueTypes:{missing_channel:`Canal faltante`,missing_property:`Propiedad faltante`,invalid_data_type:`Tipo de dato no válido`,invalid_permissions:`Permisos no válidos`,invalid_format:`Formato no válido`,unknown_channel:`Canal desconocido`,duplicate_channel:`Canal duplicado`,constraint_one_of_violation:`Violación de restricción (uno de)`,constraint_one_or_more_of_violation:`Violación de restricción (uno o más de)`,constraint_mutually_exclusive_violation:`Violación de restricción (mutuamente excluyente)`}}},bn={menu:{title:`Urządzenia`},meta:{devices:{list:{title:`Lista urządzeń`},edit:{title:`Edytuj urządzenie: {device}`},add:{title:`Dodaj urządzenie`},detail:{title:`Urządzenie: {device}`},control:{title:`Steruj urządzeniem: {device}`}},channels:{list:{title:`Lista kanałów`},edit:{title:`Edytuj kanał: {channel}`},add:{title:`Dodaj kanał`},detail:{title:`Kanał: {channel}`}},channelsProperties:{edit:{title:`Edytuj właściwość kanału: {property}`},add:{title:`Dodaj właściwość kanału`}}},breadcrumbs:{devices:{list:`urządzenia`,add:`dodaj urządzenie`,edit:`edytuj urządzenie`,detail:`urządzenie: {device}`,control:`sterowanie: {device}`},channels:{list:`kanały`,add:`dodaj kanał`,edit:`edytuj kanał`,detail:`kanał: {channel}`},channelsProperties:{add:`dodaj właściwość kanału`,edit:`edytuj właściwość kanału`}},headings:{devices:{list:`Urządzenia`,add:`Dodaj urządzenie`,edit:`Edytuj urządzenie`,detail:`Urządzenie: {device}`,control:`Sterowanie: {device}`,remove:`Usunąć urządzenie?`,bulkRemove:`Usunąć urządzenia?`,bulkEnable:`Włączyć urządzenia?`,bulkDisable:`Wyłączyć urządzenia?`,adjustFilters:`Filtruj urządzenia`,selectPlugin:`Wymagana wtyczka urządzenia`},channels:{list:`Kanały`,add:`Dodaj kanał`,edit:`Edytuj kanał`,detail:`Kanał: {channel}`,remove:`Usunąć kanał?`,adjustFilters:`Filtruj kanały`,selectPlugin:`Wymagana wtyczka kanału`},channelsProperties:{add:`Dodaj właściwość kanału`,edit:`Edytuj właściwość kanału`,remove:`Usunąć właściwość kanału?`,adjustFilters:`Filtruj właściwości`},misc:{discard:`Odrzucić zmiany?`}},subHeadings:{devices:{list:`Zarządzaj urządzeniami smart panelu`,add:`Dodaj nowe urządzenie smart panelu`,edit:`Edytuj urządzenie smart panelu`,detail:`Zarządzaj urządzeniem smart panelu`,control:`Steruj urządzeniem smart panelu`,adjustFilters:`Dostosuj filtry wyświetlania`},channels:{list:`Zarządzaj kanałami urządzeń smart panelu`,add:`Dodaj nowy kanał urządzenia smart panelu`,edit:`Edytuj kanał urządzenia smart panelu`,detail:`Zarządzaj kanałem urządzenia smart panelu`,adjustFilters:`Dostosuj filtry wyświetlania`},channelsProperties:{add:`Dodaj nową właściwość kanału smart panelu`,edit:`Edytuj właściwość kanału smart panelu`,adjustFilters:`Dostosuj filtry wyświetlania`}},messages:{devices:{notFound:`Urządzenie, którego szukasz, nie istnieje lub mogło zostać usunięte.`,created:`Nowe urządzenie zostało pomyślnie dodane.`,notCreated:`Coś poszło nie tak. Nie udało się utworzyć urządzenia.`,edited:`Zmiany zapisane! Urządzenie: {device} zostało zaktualizowane.`,notEdited:`Coś poszło nie tak. Aktualizacja urządzenia nie powiodła się.`,removed:`Urządzenie: {device} zostało pomyślnie usunięte.`,removeCanceled:`Usunięcie urządzenia: {device} zostało anulowane.`,notRemoved:`Coś poszło nie tak i urządzenie: {device} nie zostało usunięte.`,deletedWhileEditing:`To urządzenie zostało usunięte i nie jest już dostępne.`,bulkRemoved:`Pomyślnie usunięto {count} urządzeń.`,bulkRemoveFailed:`Nie udało się usunąć {count} urządzeń.`,bulkRemoveCanceled:`Masowe usuwanie urządzeń zostało anulowane.`,bulkEnabled:`Pomyślnie włączono {count} urządzeń.`,bulkEnableFailed:`Nie udało się włączyć {count} urządzeń.`,bulkEnableCanceled:`Masowe włączanie urządzeń zostało anulowane.`,bulkDisabled:`Pomyślnie wyłączono {count} urządzeń.`,bulkDisableFailed:`Nie udało się wyłączyć {count} urządzeń.`,bulkDisableCanceled:`Masowe wyłączanie urządzeń zostało anulowane.`,notLoaded:`Nie udało się wczytać urządzenia. Spróbuj ponownie później.`},channels:{notFound:`Kanał, którego szukasz, nie istnieje lub mógł zostać usunięty.`,notLoaded:`Nie udało się wczytać kanału. Spróbuj ponownie później.`,notLoadedForDevice:`Nie udało się wczytać kanałów dla tego urządzenia.`,created:`Nowy kanał został pomyślnie dodany.`,notCreated:`Coś poszło nie tak. Nie udało się utworzyć kanału.`,edited:`Zmiany zapisane! Kanał: {channel} został zaktualizowany.`,notEdited:`Coś poszło nie tak. Aktualizacja kanału nie powiodła się.`,removed:`Kanał: {channel} został pomyślnie usunięty.`,removeCanceled:`Usunięcie kanału: {channel} zostało anulowane.`,notRemoved:`Coś poszło nie tak i kanał: {channel} nie został usunięty.`,noMoreAllowed:`Wszystkie wymagane i opcjonalne kanały są przypisane do urządzenia. Nie można dodać więcej.`,deletedWhileEditing:`Ten kanał został usunięty i nie jest już dostępny.`},channelsProperties:{notFound:`Właściwość kanału, której szukasz, nie istnieje lub mogła zostać usunięta.`,notLoadedForChannel:`Nie udało się wczytać właściwości dla tego kanału.`,created:`Nowa właściwość kanału została pomyślnie dodana.`,notCreated:`Coś poszło nie tak. Nie udało się utworzyć właściwości kanału.`,edited:`Zmiany zapisane! Właściwość kanału: {property} została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja właściwości kanału nie powiodła się.`,removed:`Właściwość kanału: {property} została pomyślnie usunięta.`,removeCanceled:`Usunięcie właściwości kanału: {property} zostało anulowane.`,notRemoved:`Coś poszło nie tak i właściwość kanału: {property} nie została usunięta.`,noMoreAllowed:`Wszystkie wymagane i opcjonalne właściwości są przypisane do kanału. Nie można dodać więcej.`,deletedWhileEditing:`Ta właściwość kanału została usunięta i nie jest już dostępna.`},misc:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`}},texts:JSON.parse(`{"devices":{"noDevices":"Nie masz skonfigurowanych żadnych urządzeń","noFilteredDevices":"Nie znaleziono urządzeń pasujących do aktywnych kryteriów filtra","loadingDevices":"Ładowanie urządzeń...","loadingDevice":"Ładowanie urządzenia...","confirmRemove":"Czy na pewno chcesz usunąć urządzenie: {device}? Tej operacji nie można cofnąć.","confirmBulkRemove":"Czy na pewno chcesz usunąć {count} urządzeń? Tej operacji nie można cofnąć.","confirmBulkEnable":"Czy na pewno chcesz włączyć {count} urządzeń?","confirmBulkDisable":"Czy na pewno chcesz wyłączyć {count} urządzeń?","description":{"generic":"","air_conditioner":"The Air Conditioner device represents a cooling system with additional features for environmental monitoring and energy management.","air_dehumidifier":"The Air Dehumidifier device represents a system designed to reduce humidity levels in the environment while providing additional monitoring and control capabilities.","air_humidifier":"The Air Humidifier device represents a system designed to increase humidity levels in the environment while providing additional monitoring and control capabilities.","air_purifier":"The Air Purifier device represents a system designed to improve indoor air quality by removing contaminants and monitoring environmental conditions.","alarm":"","av_receiver":"The AV Receiver device represents a home theater receiver/amplifier with input switching and speaker output control.","camera":"The Camera device represents a surveillance or monitoring system designed for video and image capturing, with additional features for environmental monitoring and interaction.","doorbell":"The Doorbell device represents a smart doorbell system that provides video, audio, and additional monitoring features for enhanced home security.","door":"The Door device represents automated or monitored doors, such as garage doors, entrance doors, or other types of doors, with additional features for security and environmental awareness.","fan":"The Fan device represents a standalone or integrated fan system with features for speed control, direction adjustment, and energy monitoring.","game_console":"The Game Console device represents a gaming console that can be controlled for basic power/activity state and media playback where supported.","heating_unit":"The Heating Unit device represents a space or room heating system designed to control and monitor environmental temperature, with optional features for energy and humidity management.","lighting":"The Lighting device represents a lighting system designed to provide illumination with optional features for energy tracking, brightness control, and adaptive lighting based on ambient conditions.","lock":"The Lock device represents an electronic or smart locking system, providing control and monitoring of access points such as doors or gates.","media":"The Media device represents a multimedia system capable of playing, recording, or managing audio and video content.","outlet":"The Outlet device represents a power outlet with advanced monitoring and control features, enabling remote operation and energy tracking. It supports single or multiple outlets for flexible power management.","projector":"The Projector device represents a video projection display that can be powered on/off and switched between input sources.","pump":"The Pump device represents a water or fluid pump with functionality for flow control, monitoring, and energy tracking.","robot_vacuum":"The Robot Vacuum device represents an autonomous cleaning device with capabilities for energy tracking and operational monitoring.","sensor":"The Sensor device represents a versatile monitoring unit capable of tracking various environmental and safety parameters.","set_top_box":"The Set-top Box device represents a TV-connected media device (streaming box, IPTV box, or HDMI stick) providing playback control and optional source selection.","speaker":"The Speaker device represents an audio output system capable of producing sound and potentially supporting media playback and input functionality.","sprinkler":"The Sprinkler device represents an irrigation system designed to control water flow and monitor environmental conditions to optimize watering.","streaming_service":"The Streaming Service device represents a cloud-based media player (e.g., Spotify) that provides playback control and metadata without a physical power state.","switcher":"The Switcher device represents a controllable outlet or switch that can toggle the power supply to connected devices and monitor energy usage. It supports multiple outlets for power control.","television":"The Television device represents a smart TV or similar media device that can be controlled and monitored for its audio and display functionality.","thermostat":"The Thermostat device represents a climate control system that monitors and adjusts temperature and related environmental factors.","valve":"The Valve device represents a controllable valve used for managing the flow of liquids or gases in various systems.","water_heater":"The Water Heater device represents a water heating system designed to heat and maintain water temperature, with optional features for energy monitoring and leak detection.","window_covering":"The Window Covering device represents automated window treatments such as blinds, shades, or curtains."},"selectPlugin":"Aby utworzyć nowe urządzenie, wybierz kompatybilną wtyczkę z listy. Wtyczki zapewniają niezbędne opcje konfiguracji dla określonego typu urządzenia.","noChannels":"To urządzenie nie ma jeszcze żadnych kanałów. Kanały definiują wejścia lub wyjścia urządzenia. Utwórz nowy kanał, aby rozpocząć interakcję z tym urządzeniem.","category":"Kategoria","channelsCount":"Brak skonfigurowanych kanałów | Jeden skonfigurowany kanał | {count} skonfigurowanych kanałów","alertsCount":"Brak wykrytych alertów | Jeden wykryty alert | {count} wykrytych alertów","channels":"Kanały","alerts":"Alerty","status":"Status","validation":"Walidacja","noControllableProperties":"To urządzenie nie ma sterowalnych właściwości. Właściwości muszą mieć uprawnienia do odczytu i zapisu lub tylko do zapisu, aby można było nimi sterować.","logs":{"title":"Logi urządzenia","noLogs":"Brak dostępnych logów","noLogsDescription":"Nie zarejestrowano jeszcze żadnych logów dla tego urządzenia","noMessage":"(brak wiadomości)","noMoreEntries":"Brak więcej wpisów w logach"}},"channels":{"noChannels":"Nie masz skonfigurowanych żadnych kanałów urządzeń","noFilteredChannels":"Nie znaleziono kanałów pasujących do aktywnych kryteriów filtra","loadingChannels":"Ładowanie kanałów...","loadingChannel":"Ładowanie kanału...","confirmRemove":"Czy na pewno chcesz usunąć kanał: {channel}? Tej operacji nie można cofnąć.","description":{"generic":"","air_particulate":"Monitors the concentration of particulate matter (e.g., PM2.5 and PM10) in the air, providing insights into air quality and pollution levels.","air_quality":"Monitors overall air quality using an index (0-500) or level indicator, providing a simplified assessment of indoor air conditions.","alarm":"","battery":"Reports the status of a device's battery, including level, charging state, and operational health.","camera":"Provides video and image data streams from surveillance or monitoring cameras. This channel supports configuration and control of camera devices, such as surveillance cameras or babysitting monitors.","carbon_dioxide":"Monitors CO₂ levels in the environment to track air quality and ventilation efficiency.","carbon_monoxide":"Detects the presence of carbon monoxide (CO) to ensure safety in enclosed spaces.","contact":"Tracks the open or closed state of a contact point, such as a door, window, or cabinet.","cooler":"Controls devices that lower air or liquid temperatures, such as air conditioners or refrigeration systems.","dehumidifier":"Controls dehumidifier devices, managing humidity reduction with features like target humidity, operating modes, and water tank monitoring.","device_information":"This channel provides metadata about the device, including manufacturer details, model information, and operational statuses.","doorbell":"Represents smart doorbells, providing features such as button press detection and optional camera integration.","door":"Manages the open/close states of doors, including garage and entry doors.","electrical_energy":"Measures cumulative energy consumption over time in kilowatt-hours (kWh).","electrical_generation":"Reports energy production from a photovoltaic (PV) or other generation source, tracking cumulative energy generated in kWh.","electrical_power":"Reports instantaneous power metrics such as voltage, current, power, and frequency for real-time monitoring and diagnostics.","fan":"Controls fan devices, including speed, oscillation, and modes for air circulation.","filter":"Monitors the status and remaining life of air or water filters, indicating when replacement is needed.","flow":"Monitors the rate of fluid or air flow, typically measured in cubic meters per hour (m³/h).","gas":"Detects the presence of natural gas or other combustible gases to ensure safety in enclosed spaces.","heater":"Manages heating devices, allowing control of temperature settings and modes.","humidifier":"Controls humidifier devices, managing humidity increase with features like target humidity, mist level control, and water tank monitoring.","humidity":"Measures the relative humidity in the environment, reported as a percentage.","illuminance":"Detects ambient light levels, typically measured in lux, to monitor brightness in a space.","leak":"Identifies the presence of water or other liquids to detect leaks and prevent damage.","light":"Controls lighting devices, supporting brightness, color temperature, and color adjustments.","lock":"Manages the locked/unlocked state of physical locks for doors, safes, or other secure areas.","media_input":"Manages the input sources of multimedia devices like TVs, projectors, or audio receivers.","media_playback":"Provides playback controls for multimedia devices, excluding volume control (handled by Speaker and Microphone channels).","microphone":"Represents audio input devices, reporting activity or capturing sound.","motion":"Detects motion in an area to trigger alerts or automate responses.","nitrogen_dioxide":"Monitors the concentration of NO₂ in the air, often used in environmental and industrial monitoring.","occupancy":"Detects the presence of people in a space for automation or energy efficiency purposes.","outlet":"Controls and monitors electrical outlets.","ozone":"Measures ozone (O₃) levels in the air, often used in environmental quality assessments.","pressure":"Reports atmospheric or liquid pressure values, typically measured in pascals (kPa).","robot_vacuum":"Controls robotic vacuum cleaners, providing commands for start, stop, docking, and monitoring states.","smoke":"Detects smoke in the environment, triggering alarms or alerts for safety.","speaker":"Controls speaker devices, including volume, mute state, and audio output modes.","sulphur_dioxide":"Measures sulphur dioxide (SO₂) levels in the air for environmental monitoring.","switcher":"Represents binary switches to control devices like lights, fans, or appliances.","television":"Provides control for TVs, including input source, brightness, and power state.","projector":"Provides control for projectors, including power, input source, brightness, and remote keys.","temperature":"Measures the current temperature in an environment, reported in degrees Celsius .","thermostat":"Manages climate control systems, allowing adjustments of heating, cooling, and fan settings.","valve":"Controls fluid or gas valves, managing open/close states or flow rates.","volatile_organic_compounds":"Monitors the concentration of VOCs in the air to track pollution or air quality.","window_covering":"Controls coverings like blinds, curtains, and shutters, including position and tilt adjustments."},"selectPlugin":"Aby utworzyć nowy kanał, wybierz kompatybilną wtyczkę z listy. Wtyczki zapewniają niezbędne opcje konfiguracji dla określonego typu kanału."},"channelsProperties":{"noProperties":"Nie masz skonfigurowanych żadnych właściwości kanału","noFilteredProperties":"Nie znaleziono właściwości kanałów pasujących do aktywnych kryteriów filtra","loadingProperties":"Ładowanie właściwości kanałów...","loadingProperty":"Ładowanie właściwości kanału...","loadingChannels":"Ładowanie kanałów...","loadingChannel":"Ładowanie kanału...","confirmRemove":"Czy na pewno chcesz usunąć właściwość kanału: {property}? Tej operacji nie można cofnąć.","dataTypes":{"char":"Signed 8-bit integer (-128 to 127).","uchar":"Unsigned 8-bit integer (0 to 255).","short":"Signed 16-bit integer (-32,768 to 32,767).","ushort":"Unsigned 16-bit integer (0 to 65,535).","int":"Signed 32-bit integer (-2,147,483,648 to 2,147,483,647).","uint":"Unsigned 32-bit integer (0 to 4,294,967,295).","float":"Floating-point number (e.g., 3.14, -0.001).","bool":"Boolean value: true or false.","string":"A sequence of characters (e.g., \\"hello\\").","enum":"Enumerated value selected from a predefined set.","unknown":"Unknown or unspecified data type."},"editValue":"Ręczna zmiana tej wartości jest dozwolona, ale może zostać automatycznie nadpisana, jeśli ta właściwość jest zmapowana na urządzenie. Używaj ostrożnie."},"misc":{"notSet":"Nie ustawiono","noValuesProvided":"Nie podano wartości","confirmDiscard":"Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?"}}`),fields:{devices:{search:{placeholder:`Szukaj urządzeń...`},plugin:{title:`Wtyczka urządzenia`,placeholder:`Wybierz wtyczkę urządzenia`},state:{title:`Stan`,placeholder:`Wybierz stan`},id:{title:`Identyfikator wewnętrzny`,placeholder:`ID urządzenia`},identifier:{title:`Identyfikator systemowy`,placeholder:`Identyfikator systemowy urządzenia`},category:{title:`Kategoria`,placeholder:`Kategoria urządzenia`,description:`O kategorii`,validation:{required:`Proszę wybrać kategorię urządzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urządzenia`,validation:{required:`Proszę podać nazwę urządzenia`}},description:{title:`Opis`,placeholder:`Opis urządzenia`},enabled:{title:`Włączone`,placeholder:`Włącz lub wyłącz urządzenie`},room:{title:`Pokój`,placeholder:`Wybierz pokój (opcjonalnie)`,hint:`Przypisz to urządzenie do fizycznej lokalizacji pokoju`},zones:{title:`Strefy`,placeholder:`Wybierz strefy (opcjonalnie)`,hint:`Przypisz to urządzenie do logicznych stref (np. Bezpieczeństwo, Na zewnątrz). Członkostwo w strefie piętra wynika z przypisania pokoju.`},validation:{title:`Walidacja`}},channels:{search:{placeholder:`Szukaj kanałów...`},plugin:{title:`Wtyczka kanału`,placeholder:`Wybierz wtyczkę kanału`},device:{title:`Urządzenie`,placeholder:`Urządzenie kanału`,description:`O urządzeniu`,validation:{required:`Proszę wybrać urządzenie kanału`}},id:{title:`Identyfikator wewnętrzny`,placeholder:`ID kanału`},category:{title:`Kategoria`,placeholder:`Kategoria kanału`,description:`O kategorii`,validation:{required:`Proszę wybrać kategorię kanału`}},name:{title:`Nazwa`,placeholder:`Nazwa kanału`,validation:{required:`Proszę podać nazwę kanału`}},description:{title:`Opis`,placeholder:`Opis kanału`}},channelsProperties:{search:{placeholder:`Szukaj właściwości...`},channel:{title:`Kanał`,placeholder:`Kanał właściwości`,description:`O kanale`,validation:{required:`Proszę wybrać kanał właściwości`}},id:{title:`Identyfikator wewnętrzny`,placeholder:`ID właściwości kanału`},category:{title:`Kategoria`,placeholder:`Kategoria właściwości kanału`,description:`O kategorii`,validation:{required:`Proszę wybrać kategorię właściwości kanału`}},name:{title:`Nazwa`,placeholder:`Nazwa właściwości kanału`},permissions:{title:`Uprawnienia`,placeholder:`Uprawnienia do odczytu i zapisu właściwości kanału`,validation:{required:`Proszę wybrać uprawnienia właściwości kanału`}},dataType:{title:`Typ danych`,placeholder:`Typ danych wartości właściwości kanału`,validation:{required:`Proszę wybrać typ danych właściwości kanału`}},unit:{title:`Jednostka`,placeholder:`Jednostka właściwości kanału`},format:{title:{enum:`Dozwolone wartości`,min:`Wartość minimalna`,max:`Wartość maksymalna`},placeholder:{enum:`Lista dozwolonych wartości`,min:`Minimalna dozwolona wartość`,max:`Maksymalna dozwolona wartość`},validation:{required:{enum:`Proszę podać listę dozwolonych wartości właściwości kanału`}}},invalid:{title:`Nieprawidłowa wartość`,placeholder:`Nieprawidłowa wartość właściwości kanału`},step:{title:`Wartość kroku`,placeholder:`Wartość kroku właściwości kanału`},enterValue:{title:`Wprowadź wartość`},value:{title:`Wartość`,placeholder:`Aktualna wartość właściwości kanału`}}},table:{devices:{columns:{name:{title:`Nazwa`},type:{title:`Typ`},state:{title:`Stan`},category:{title:`Kategoria`},enabled:{title:`Włączone`,values:{enabled:`Włączone`,disabled:`Wyłączone`}},validation:{title:`Walidacja`}}},channels:{columns:{name:{title:`Nazwa`},device:{title:`Urządzenie`},category:{title:`Kategoria`}}},channelsProperties:{columns:{name:{title:`Nazwa`},channel:{title:`Kanał`},category:{title:`Kategoria`},permissions:{title:`Uprawnienia`},dataType:{title:`Typ danych`,type:{enum:`Info wartości Enum`,numeric:`Info wartości numerycznej`}},value:{title:`Wartość`}}}},filters:{devices:{types:{title:`Filtruj według typu urządzenia`},states:{title:`Filtruj według stanu połączenia`},enabled:{title:`Filtruj według stanu urządzenia`,placeholder:`Wybierz stan urządzenia`,values:{enabled:`Włączone`,disabled:`Wyłączone`,all:`Wszystkie`}},category:{title:`Filtruj według kategorii urządzenia`,placeholder:`Wybierz jedną lub więcej`},validation:{title:`Filtruj według statusu walidacji`}},channels:{category:{title:`Filtruj według kategorii kanału`,placeholder:`Wybierz jedną lub więcej`}},channelsProperties:{category:{title:`Filtruj według kategorii właściwości`,placeholder:`Wybierz jedną lub więcej`},dataType:{title:`Filtruj według typu danych właściwości`},permission:{title:`Filtruj według uprawnień właściwości`}}},buttons:{add:{title:`Dodaj`},edit:{title:`Edytuj`},detail:{title:`Szczegóły`},discard:{title:`Odrzuć`},cancel:{title:`Anuluj`},close:{title:`Zamknij`},save:{title:`Zapisz`},change:{title:`Zmień`},remove:{title:`Usuń`},resetFilters:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},reset:{title:`Resetuj`},addChannel:{title:`Dodaj kanał`},addProperty:{title:`Dodaj właściwość`},control:{title:`Sterowanie`},refresh:{title:`Odśwież`},loadMore:{title:`Załaduj więcej`},viewLogs:{title:`Pokaż logi`},back:{title:`Wróć`}},labels:{live:`Na żywo`},states:{online:`Online`,offline:`Offline`,all:`Wszystkie`,connected:`Połączony`,disconnected:`Rozłączony`,init:`Zainicjalizowany`,ready:`Gotowy`,running:`Działa`,sleeping:`Uśpiony`,stopped:`Zatrzymany`,lost:`Utracony`,alert:`Alert`,unknown:`Nieznany`},permissions:{ro:`Tylko do odczytu`,rw:`Odczyt i zapis`,wo:`Tylko do zapisu`,ev:`Zdarzenie`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Short integer`,ushort:`Unsigned short integer`,int:`Integer`,uint:`Unsigned integer`,float:`Float`,bool:`Boolean`,string:`String`,enum:`Enum`,unknown:`Nieznany`},categories:{devices:{generic:`Ogólne`,air_conditioner:`Klimatyzator`,air_dehumidifier:`Osuszacz powietrza`,air_humidifier:`Nawilżacz powietrza`,air_purifier:`Oczyszczacz powietrza`,alarm:`Alarm`,av_receiver:`Amplituner AV`,camera:`Kamera`,door:`Drzwi`,doorbell:`Dzwonek`,fan:`Wentylator`,game_console:`Konsola do gier`,heating_unit:`Grzejnik`,lighting:`Oświetlenie`,lock:`Zamek`,media:`Media`,outlet:`Gniazdko`,projector:`Projektor`,pump:`Pompa`,robot_vacuum:`Robot odkurzający`,sensor:`Czujnik`,set_top_box:`Dekoder`,speaker:`Głośnik`,sprinkler:`Zraszacz`,streaming_service:`Usługa streamingowa`,switcher:`Przełącznik`,television:`Telewizor`,thermostat:`Termostat`,valve:`Zawór`,water_heater:`Podgrzewacz wody`,window_covering:`Osłona okienna`},channels:{generic:`Ogólny`,air_particulate:`Cząstki w powietrzu`,air_quality:`Jakość powietrza`,alarm:`Alarm`,battery:`Bateria`,camera:`Kamera`,carbon_dioxide:`Dwutlenek węgla`,carbon_monoxide:`Tlenek węgla`,contact:`Kontakt`,cooler:`Chłodziarka`,dehumidifier:`Osuszacz`,device_information:`Informacje o urządzeniu`,door:`Drzwi`,doorbell:`Dzwonek`,electrical_energy:`Energia elektryczna`,electrical_generation:`Generacja energii`,electrical_power:`Moc elektryczna`,fan:`Wentylator`,filter:`Filtr`,flow:`Przepływ`,gas:`Gaz`,heater:`Grzejnik`,humidifier:`Nawilżacz`,humidity:`Wilgotność`,illuminance:`Natężenie oświetlenia`,leak:`Wyciek`,light:`Światło`,lock:`Zamek`,media_input:`Wejście multimedialne`,media_playback:`Odtwarzanie multimediów`,microphone:`Mikrofon`,motion:`Ruch`,nitrogen_dioxide:`Dwutlenek azotu`,occupancy:`Obecność`,outlet:`Gniazdko`,ozone:`Ozon`,pressure:`Ciśnienie`,robot_vacuum:`Robot odkurzający`,smoke:`Dym`,speaker:`Głośnik`,sulphur_dioxide:`Dwutlenek siarki`,switcher:`Przełącznik`,television:`Telewizor`,projector:`Projektor`,temperature:`Temperatura`,thermostat:`Termostat`,valve:`Zawór`,volatile_organic_compounds:`Lotne związki organiczne`,window_covering:`Osłona okienna`},channelsProperties:{generic:`Generic`,active:`Active`,alarm_state:`Alarm state`,album:`Album`,angle:`Angle`,aqi:`AQI`,artist:`Artist`,artwork_url:`Artwork URL`,average_power:`Average power`,balance:`Balance`,bass:`Bass`,brightness:`Brightness`,change_needed:`Change needed`,child_lock:`Child lock`,color_blue:`Color blue`,color_green:`Color green`,color_red:`Color red`,color_temperature:`Color temperature`,color_white:`Color white`,command:`Command`,connection_type:`Connection type`,consumption:`Consumption`,current:`Current`,concentration:`Concentration`,defrost_active:`Defrost active`,detected:`Detected`,direction:`Direction`,distance:`Distance`,duration:`Duration`,event:`Event`,fault:`Fault`,fault_description:`Fault description`,firmware_revision:`Firmware revision`,frequency:`Frequency`,hardware_revision:`Hardware revision`,hue:`Hue`,humidity:`Humidity`,illuminance:`Illuminance`,in_use:`In Use`,infrared:`Infrared`,last_event:`Last event`,level:`Level`,life_remaining:`Life remaining`,link_quality:`Link quality`,locked:`Locked`,manufacturer:`Manufacturer`,media_type:`Media type`,mist_level:`Mist level`,model:`Model`,mode:`Mode`,mute:`Mute`,natural_breeze:`Natural breeze`,obstruction:`Obstruction`,on:`On`,over_current:`Over current`,over_voltage:`Over voltage`,over_power:`Over power`,pan:`Pan`,peak_level:`Peak level`,percentage:`Percentage`,position:`Position`,power:`Power`,pressure:`Pressure`,production:`Production`,rate:`Rate`,remaining:`Remaining`,repeat:`Repeat`,reset:`Reset`,remote_key:`Remote key`,saturation:`Saturation`,serial_number:`Serial number`,shuffle:`Shuffle`,siren:`Siren`,source:`Source`,source_label:`Source label`,speed:`Speed`,state:`State`,status:`Status`,swing:`Swing`,tampered:`Tampered`,temperature:`Temperature`,tilt:`Tilt`,timer:`Timer`,track:`Track`,treble:`Treble`,triggered:`Triggered`,type:`Type`,units:`Units`,voltage:`Voltage`,volume:`Volume`,warm_mist:`Warm mist`,water_tank_empty:`Water tank empty`,water_tank_full:`Water tank full`,water_tank_level:`Water tank level`,zoom:`Zoom`}},validation:{status:{valid:`Prawidłowy`,invalid:`Nieprawidłowy`,unknown:`Nieznany`},filter:{valid:`Prawidłowy`,invalid:`Nieprawidłowy`,all:`Wszystkie`},errors:`błędy`,warnings:`ostrzeżenia`,issuesTitle:`Problemy walidacji`,severity:{error:`Błąd`,warning:`Ostrzeżenie`},table:{severity:`Ważność`,type:`Typ`,message:`Wiadomość`,channel:`Kanał`},issueTypes:{missing_channel:`Brakujący kanał`,missing_property:`Brakująca właściwość`,invalid_data_type:`Nieprawidłowy typ danych`,invalid_permissions:`Nieprawidłowe uprawnienia`,invalid_format:`Nieprawidłowy format`,unknown_channel:`Nieznany kanał`,duplicate_channel:`Zduplikowany kanał`,constraint_one_of_violation:`Naruszenie ograniczenia (jeden z)`,constraint_one_or_more_of_violation:`Naruszenie ograniczenia (jeden lub więcej z)`,constraint_mutually_exclusive_violation:`Naruszenie ograniczenia (wzajemne wykluczenie)`}}},xn={menu:{title:`Zariadenia`},meta:{devices:{list:{title:`Zoznam zariadení`},edit:{title:`Upraviť zariadenie: {device}`},add:{title:`Pridať zariadenie`},detail:{title:`Zariadenie: {device}`},control:{title:`Ovládanie zariadenia: {device}`}},channels:{list:{title:`Zoznam kanálov`},edit:{title:`Upraviť kanál: {channel}`},add:{title:`Pridať kanál`},detail:{title:`Kanál: {channel}`}},channelsProperties:{edit:{title:`Upraviť vlastnosť kanála: {property}`},add:{title:`Pridať vlastnosť kanála`}}},breadcrumbs:{devices:{list:`zariadenia`,add:`pridať zariadenie`,edit:`upraviť zariadenie`,detail:`zariadenie: {device}`,control:`ovládanie: {device}`},channels:{list:`kanály`,add:`pridať kanál`,edit:`upraviť kanál`,detail:`kanál: {channel}`},channelsProperties:{add:`pridať vlastnosť kanála`,edit:`upraviť vlastnosť kanála`}},headings:{devices:{list:`Zariadenia`,add:`Pridať zariadenie`,edit:`Upraviť zariadenie`,detail:`Zariadenie: {device}`,control:`Ovládanie: {device}`,remove:`Odstrániť zariadenie?`,bulkRemove:`Odstrániť zariadenia?`,bulkEnable:`Povoliť zariadenia?`,bulkDisable:`Zakázať zariadenia?`,adjustFilters:`Filtrovať zariadenia`,selectPlugin:`Vyžaduje sa plugin zariadenia`},channels:{list:`Kanály`,add:`Pridať kanál`,edit:`Upraviť kanál`,detail:`Kanál: {channel}`,remove:`Odstrániť kanál?`,adjustFilters:`Filtrovať kanály`,selectPlugin:`Vyžaduje sa plugin kanála`},channelsProperties:{add:`Pridať vlastnosť kanála`,edit:`Upraviť vlastnosť kanála`,remove:`Odstrániť vlastnosť kanála?`,adjustFilters:`Filtrovať vlastnosti`},misc:{discard:`Zahodiť zmeny?`}},subHeadings:{devices:{list:`Spravujte zariadenia smart panelu`,add:`Pridať nové zariadenie smart panelu`,edit:`Upraviť zariadenie smart panelu`,detail:`Spravovať zariadenie smart panelu`,control:`Ovládať zariadenie smart panelu`,adjustFilters:`Upraviť filtre zobrazenia`},channels:{list:`Spravujte kanály zariadení smart panelu`,add:`Pridať nový kanál zariadenia smart panelu`,edit:`Upraviť kanál zariadenia smart panelu`,detail:`Spravovať kanál zariadenia smart panelu`,adjustFilters:`Upraviť filtre zobrazenia`},channelsProperties:{add:`Pridať novú vlastnosť kanála smart panelu`,edit:`Upraviť vlastnosť kanála smart panelu`,adjustFilters:`Upraviť filtre zobrazenia`}},messages:{devices:{notFound:`Zariadenie, ktoré hľadáte, neexistuje alebo bolo odstránené.`,created:`Nové zariadenie bolo úspešne pridané.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť zariadenie.`,edited:`Zmeny uložené! Zariadenie: {device} bolo aktualizované.`,notEdited:`Niečo sa pokazilo. Aktualizácia zariadenia nebola úspešná.`,removed:`Zariadenie: {device} bolo úspešne odstránené.`,removeCanceled:`Odstránenie zariadenia: {device} bolo zrušené.`,notRemoved:`Niečo sa pokazilo a zariadenie: {device} nebolo odstránené.`,deletedWhileEditing:`Toto zariadenie bolo odstránené a už nie je dostupné.`,bulkRemoved:`{count} zariadení bolo úspešne odstránených.`,bulkRemoveFailed:`Nepodarilo sa odstrániť {count} zariadení.`,bulkRemoveCanceled:`Hromadné odstránenie zariadení bolo zrušené.`,bulkEnabled:`{count} zariadení bolo úspešne povolených.`,bulkEnableFailed:`Nepodarilo sa povoliť {count} zariadení.`,bulkEnableCanceled:`Hromadné povolenie zariadení bolo zrušené.`,bulkDisabled:`{count} zariadení bolo úspešne zakázaných.`,bulkDisableFailed:`Nepodarilo sa zakázať {count} zariadení.`,bulkDisableCanceled:`Hromadné zakázanie zariadení bolo zrušené.`,notLoaded:`Nepodarilo sa načítať zariadenie. Skúste to prosím neskôr.`},channels:{notFound:`Kanál, ktorý hľadáte, neexistuje alebo bol odstránený.`,notLoaded:`Nepodarilo sa načítať kanál. Skúste to prosím neskôr.`,notLoadedForDevice:`Nepodarilo sa načítať kanály pre toto zariadenie.`,created:`Nový kanál bol úspešne pridaný.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť kanál.`,edited:`Zmeny uložené! Kanál: {channel} bol aktualizovaný.`,notEdited:`Niečo sa pokazilo. Aktualizácia kanála nebola úspešná.`,removed:`Kanál: {channel} bol úspešne odstránený.`,removeCanceled:`Odstránenie kanála: {channel} bolo zrušené.`,notRemoved:`Niečo sa pokazilo a kanál: {channel} nebol odstránený.`,noMoreAllowed:`Všetky požadované a voliteľné kanály sú priradené k zariadeniu. Žiadne ďalšie nie je možné pridať.`,deletedWhileEditing:`Tento kanál bol odstránený a už nie je dostupný.`},channelsProperties:{notFound:`Vlastnosť kanála, ktorú hľadáte, neexistuje alebo bola odstránená.`,notLoadedForChannel:`Nepodarilo sa načítať vlastnosti pre tento kanál.`,created:`Nová vlastnosť kanála bola úspešne pridaná.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť vlastnosť kanála.`,edited:`Zmeny uložené! Vlastnosť kanála: {property} bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia vlastnosti kanála nebola úspešná.`,removed:`Vlastnosť kanála: {property} bola úspešne odstránená.`,removeCanceled:`Odstránenie vlastnosti kanála: {property} bolo zrušené.`,notRemoved:`Niečo sa pokazilo a vlastnosť kanála: {property} nebola odstránená.`,noMoreAllowed:`Všetky požadované a voliteľné vlastnosti sú priradené ku kanálu. Žiadne ďalšie nie je možné pridať.`,deletedWhileEditing:`Táto vlastnosť kanála bola odstránená a už nie je dostupná.`},misc:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`}},texts:JSON.parse(`{"devices":{"noDevices":"Nemáte nakonfigurované žiadne zariadenie","noFilteredDevices":"Neboli nájdené žiadne zariadenia zodpovedajúce aktívnym filtrom","loadingDevices":"Načítavanie zariadení...","loadingDevice":"Načítavanie zariadenia...","confirmRemove":"Naozaj chcete odstrániť zariadenie: {device}? Toto sa nedá vrátiť.","confirmBulkRemove":"Naozaj chcete odstrániť {count} zariadení? Toto sa nedá vrátiť.","confirmBulkEnable":"Naozaj chcete povoliť {count} zariadení?","confirmBulkDisable":"Naozaj chcete zakázať {count} zariadení?","description":{"generic":"","air_conditioner":"The Air Conditioner device represents a cooling system with additional features for environmental monitoring and energy management.","air_dehumidifier":"The Air Dehumidifier device represents a system designed to reduce humidity levels in the environment while providing additional monitoring and control capabilities.","air_humidifier":"The Air Humidifier device represents a system designed to increase humidity levels in the environment while providing additional monitoring and control capabilities.","air_purifier":"The Air Purifier device represents a system designed to improve indoor air quality by removing contaminants and monitoring environmental conditions.","alarm":"","av_receiver":"The AV Receiver device represents a home theater receiver/amplifier with input switching and speaker output control.","camera":"The Camera device represents a surveillance or monitoring system designed for video and image capturing, with additional features for environmental monitoring and interaction.","doorbell":"The Doorbell device represents a smart doorbell system that provides video, audio, and additional monitoring features for enhanced home security.","door":"The Door device represents automated or monitored doors, such as garage doors, entrance doors, or other types of doors, with additional features for security and environmental awareness.","fan":"The Fan device represents a standalone or integrated fan system with features for speed control, direction adjustment, and energy monitoring.","game_console":"The Game Console device represents a gaming console that can be controlled for basic power/activity state and media playback where supported.","heating_unit":"The Heating Unit device represents a space or room heating system designed to control and monitor environmental temperature, with optional features for energy and humidity management.","lighting":"The Lighting device represents a lighting system designed to provide illumination with optional features for energy tracking, brightness control, and adaptive lighting based on ambient conditions.","lock":"The Lock device represents an electronic or smart locking system, providing control and monitoring of access points such as doors or gates.","media":"The Media device represents a multimedia system capable of playing, recording, or managing audio and video content.","outlet":"The Outlet device represents a power outlet with advanced monitoring and control features, enabling remote operation and energy tracking. It supports single or multiple outlets for flexible power management.","projector":"The Projector device represents a video projection display that can be powered on/off and switched between input sources.","pump":"The Pump device represents a water or fluid pump with functionality for flow control, monitoring, and energy tracking.","robot_vacuum":"The Robot Vacuum device represents an autonomous cleaning device with capabilities for energy tracking and operational monitoring.","sensor":"The Sensor device represents a versatile monitoring unit capable of tracking various environmental and safety parameters.","set_top_box":"The Set-top Box device represents a TV-connected media device (streaming box, IPTV box, or HDMI stick) providing playback control and optional source selection.","speaker":"The Speaker device represents an audio output system capable of producing sound and potentially supporting media playback and input functionality.","sprinkler":"The Sprinkler device represents an irrigation system designed to control water flow and monitor environmental conditions to optimize watering.","streaming_service":"The Streaming Service device represents a cloud-based media player (e.g., Spotify) that provides playback control and metadata without a physical power state.","switcher":"The Switcher device represents a controllable outlet or switch that can toggle the power supply to connected devices and monitor energy usage. It supports multiple outlets for power control.","television":"The Television device represents a smart TV or similar media device that can be controlled and monitored for its audio and display functionality.","thermostat":"The Thermostat device represents a climate control system that monitors and adjusts temperature and related environmental factors.","valve":"The Valve device represents a controllable valve used for managing the flow of liquids or gases in various systems.","water_heater":"The Water Heater device represents a water heating system designed to heat and maintain water temperature, with optional features for energy monitoring and leak detection.","window_covering":"The Window Covering device represents automated window treatments such as blinds, shades, or curtains."},"selectPlugin":"Na vytvorenie nového zariadenia vyberte kompatibilný plugin zo zoznamu. Pluginy poskytujú potrebné konfiguračné možnosti pre konkrétny typ zariadenia.","noChannels":"Toto zariadenie zatiaľ nemá žiadne kanály. Kanály definujú vstupy alebo výstupy zariadenia. Vytvorte nový kanál na začatie interakcie s týmto zariadením.","category":"Kategória","channelsCount":"Žiadne kanály nakonfigurované | Jeden kanál nakonfigurovaný | {count} kanálov nakonfigurovaných","alertsCount":"Žiadne výstrahy zistené | Jedna výstraha zistená | {count} výstrah zistených","channels":"Kanály","alerts":"Výstrahy","status":"Stav","validation":"Validácia","noControllableProperties":"Toto zariadenie nemá žiadne ovládateľné vlastnosti. Vlastnosti musia mať oprávnenia čítanie-zápis alebo iba zápis na ovládanie.","logs":{"title":"Logy zariadenia","noLogs":"Žiadne logy nie sú dostupné","noLogsDescription":"Pre toto zariadenie ešte neboli zaznamenané žiadne logy","noMessage":"(žiadna správa)","noMoreEntries":"Žiadne ďalšie záznamy logov"}},"channels":{"noChannels":"Nemáte nakonfigurovaný žiadny kanál zariadenia","noFilteredChannels":"Neboli nájdené žiadne kanály zodpovedajúce aktívnym filtrom","loadingChannels":"Načítavanie kanálov...","loadingChannel":"Načítavanie kanála...","confirmRemove":"Naozaj chcete odstrániť kanál: {channel}? Toto sa nedá vrátiť.","description":{"generic":"","air_particulate":"Monitors the concentration of particulate matter (e.g., PM2.5 and PM10) in the air, providing insights into air quality and pollution levels.","air_quality":"Monitors overall air quality using an index (0-500) or level indicator, providing a simplified assessment of indoor air conditions.","alarm":"","battery":"Reports the status of a device's battery, including level, charging state, and operational health.","camera":"Provides video and image data streams from surveillance or monitoring cameras. This channel supports configuration and control of camera devices, such as surveillance cameras or babysitting monitors.","carbon_dioxide":"Monitors CO₂ levels in the environment to track air quality and ventilation efficiency.","carbon_monoxide":"Detects the presence of carbon monoxide (CO) to ensure safety in enclosed spaces.","contact":"Tracks the open or closed state of a contact point, such as a door, window, or cabinet.","cooler":"Controls devices that lower air or liquid temperatures, such as air conditioners or refrigeration systems.","dehumidifier":"Controls dehumidifier devices, managing humidity reduction with features like target humidity, operating modes, and water tank monitoring.","device_information":"This channel provides metadata about the device, including manufacturer details, model information, and operational statuses.","doorbell":"Represents smart doorbells, providing features such as button press detection and optional camera integration.","door":"Manages the open/close states of doors, including garage and entry doors.","electrical_energy":"Measures cumulative energy consumption over time in kilowatt-hours (kWh).","electrical_generation":"Reports energy production from a photovoltaic (PV) or other generation source, tracking cumulative energy generated in kWh.","electrical_power":"Reports instantaneous power metrics such as voltage, current, power, and frequency for real-time monitoring and diagnostics.","fan":"Controls fan devices, including speed, oscillation, and modes for air circulation.","filter":"Monitors the status and remaining life of air or water filters, indicating when replacement is needed.","flow":"Monitors the rate of fluid or air flow, typically measured in cubic meters per hour (m³/h).","gas":"Detects the presence of natural gas or other combustible gases to ensure safety in enclosed spaces.","heater":"Manages heating devices, allowing control of temperature settings and modes.","humidifier":"Controls humidifier devices, managing humidity increase with features like target humidity, mist level control, and water tank monitoring.","humidity":"Measures the relative humidity in the environment, reported as a percentage.","illuminance":"Detects ambient light levels, typically measured in lux, to monitor brightness in a space.","leak":"Identifies the presence of water or other liquids to detect leaks and prevent damage.","light":"Controls lighting devices, supporting brightness, color temperature, and color adjustments.","lock":"Manages the locked/unlocked state of physical locks for doors, safes, or other secure areas.","media_input":"Manages the input sources of multimedia devices like TVs, projectors, or audio receivers.","media_playback":"Provides playback controls for multimedia devices, excluding volume control (handled by Speaker and Microphone channels).","microphone":"Represents audio input devices, reporting activity or capturing sound.","motion":"Detects motion in an area to trigger alerts or automate responses.","nitrogen_dioxide":"Monitors the concentration of NO₂ in the air, often used in environmental and industrial monitoring.","occupancy":"Detects the presence of people in a space for automation or energy efficiency purposes.","outlet":"Controls and monitors electrical outlets.","ozone":"Measures ozone (O₃) levels in the air, often used in environmental quality assessments.","pressure":"Reports atmospheric or liquid pressure values, typically measured in pascals (kPa).","robot_vacuum":"Controls robotic vacuum cleaners, providing commands for start, stop, docking, and monitoring states.","smoke":"Detects smoke in the environment, triggering alarms or alerts for safety.","speaker":"Controls speaker devices, including volume, mute state, and audio output modes.","sulphur_dioxide":"Measures sulphur dioxide (SO₂) levels in the air for environmental monitoring.","switcher":"Represents binary switches to control devices like lights, fans, or appliances.","television":"Provides control for TVs, including input source, brightness, and power state.","projector":"Provides control for projectors, including power, input source, brightness, and remote keys.","temperature":"Measures the current temperature in an environment, reported in degrees Celsius .","thermostat":"Manages climate control systems, allowing adjustments of heating, cooling, and fan settings.","valve":"Controls fluid or gas valves, managing open/close states or flow rates.","volatile_organic_compounds":"Monitors the concentration of VOCs in the air to track pollution or air quality.","window_covering":"Controls coverings like blinds, curtains, and shutters, including position and tilt adjustments."},"selectPlugin":"Na vytvorenie nového kanála vyberte kompatibilný plugin zo zoznamu. Pluginy poskytujú potrebné konfiguračné možnosti pre konkrétny typ kanála."},"channelsProperties":{"noProperties":"Nemáte nakonfigurovanú žiadnu vlastnosť kanála","noFilteredProperties":"Neboli nájdené žiadne vlastnosti kanálov zodpovedajúce aktívnym filtrom","loadingProperties":"Načítavanie vlastností kanálov...","loadingProperty":"Načítavanie vlastnosti kanála...","loadingChannels":"Načítavanie kanálov...","loadingChannel":"Načítavanie kanála...","confirmRemove":"Naozaj chcete odstrániť vlastnosť kanála: {property}? Toto sa nedá vrátiť.","dataTypes":{"char":"Signed 8-bit integer (-128 to 127).","uchar":"Unsigned 8-bit integer (0 to 255).","short":"Signed 16-bit integer (-32,768 to 32,767).","ushort":"Unsigned 16-bit integer (0 to 65,535).","int":"Signed 32-bit integer (-2,147,483,648 to 2,147,483,647).","uint":"Unsigned 32-bit integer (0 to 4,294,967,295).","float":"Floating-point number (e.g., 3.14, -0.001).","bool":"Boolean value: true or false.","string":"A sequence of characters (e.g., \\"hello\\").","enum":"Enumerated value selected from a predefined set.","unknown":"Unknown or unspecified data type."},"editValue":"Manuálna zmena tejto hodnoty je povolená, ale môže byť automaticky prepísaná, ak je táto vlastnosť mapovaná na zariadenie. Používajte opatrne."},"misc":{"notSet":"Nie je nastavené","noValuesProvided":"Žiadne hodnoty neboli poskytnuté","confirmDiscard":"Máte neuložené zmeny. Naozaj ich chcete zahodiť?"}}`),fields:{devices:{search:{placeholder:`Vyhľadať zariadenia...`},plugin:{title:`Plugin zariadenia`,placeholder:`Vyberte plugin zariadenia`},state:{title:`Stav`,placeholder:`Vyberte stav`},id:{title:`Interný identifikátor`,placeholder:`ID zariadenia`},identifier:{title:`Systémový identifikátor`,placeholder:`Systémový identifikátor zariadenia`},category:{title:`Kategória`,placeholder:`Kategória zariadenia`,description:`O kategórii`,validation:{required:`Prosím vyberte kategóriu zariadenia`}},name:{title:`Názov`,placeholder:`Názov zariadenia`,validation:{required:`Prosím vyplňte názov zariadenia`}},description:{title:`Popis`,placeholder:`Popis zariadenia`},enabled:{title:`Povolené`,placeholder:`Povoliť alebo zakázať zariadenie`},room:{title:`Miestnosť`,placeholder:`Vyberte miestnosť (voliteľné)`,hint:`Priraďte toto zariadenie k fyzickej miestnosti`},zones:{title:`Zóny`,placeholder:`Vyberte zóny (voliteľné)`,hint:`Priraďte toto zariadenie k logickým zónam (napr. Bezpečnosť, Exteriér). Členstvo v zóne poschodia je odvodené z priradenia miestnosti.`},validation:{title:`Validácia`}},channels:{search:{placeholder:`Vyhľadať kanály...`},plugin:{title:`Plugin kanála`,placeholder:`Vyberte plugin kanála`},device:{title:`Zariadenie`,placeholder:`Zariadenie kanála`,description:`O zariadení`,validation:{required:`Prosím vyberte zariadenie kanála`}},id:{title:`Interný identifikátor`,placeholder:`ID kanála`},category:{title:`Kategória`,placeholder:`Kategória kanála`,description:`O kategórii`,validation:{required:`Prosím vyberte kategóriu kanála`}},name:{title:`Názov`,placeholder:`Názov kanála`,validation:{required:`Prosím vyplňte názov kanála`}},description:{title:`Popis`,placeholder:`Popis kanála`}},channelsProperties:{search:{placeholder:`Vyhľadať vlastnosti...`},channel:{title:`Kanál`,placeholder:`Kanál vlastnosti kanála`,description:`O kanáli`,validation:{required:`Prosím vyberte kanál vlastnosti kanála`}},id:{title:`Interný identifikátor`,placeholder:`ID vlastnosti kanála`},category:{title:`Kategória`,placeholder:`Kategória vlastnosti kanála`,description:`O kategórii`,validation:{required:`Prosím vyberte kategóriu vlastnosti kanála`}},name:{title:`Názov`,placeholder:`Názov vlastnosti kanála`},permissions:{title:`Oprávnenia`,placeholder:`Oprávnenia čítania a zápisu vlastnosti kanála`,validation:{required:`Prosím vyberte oprávnenia vlastnosti kanála`}},dataType:{title:`Dátový typ`,placeholder:`Dátový typ hodnoty vlastnosti kanála`,validation:{required:`Prosím vyberte dátový typ vlastnosti kanála`}},unit:{title:`Jednotka`,placeholder:`Jednotka vlastnosti kanála`},format:{title:{enum:`Povolené hodnoty`,min:`Minimálna hodnota`,max:`Maximálna hodnota`},placeholder:{enum:`Zoznam povolených hodnôt`,min:`Minimálna povolená hodnota`,max:`Maximálna povolená hodnota`},validation:{required:{enum:`Prosím vyplňte zoznam povolených hodnôt vlastnosti kanála`}}},invalid:{title:`Neplatná hodnota`,placeholder:`Neplatná hodnota vlastnosti kanála`},step:{title:`Hodnota kroku`,placeholder:`Hodnota kroku vlastnosti kanála`},enterValue:{title:`Zadajte hodnotu`},value:{title:`Hodnota`,placeholder:`Aktuálna hodnota vlastnosti kanála`}}},table:{devices:{columns:{name:{title:`Názov`},type:{title:`Typ`},state:{title:`Stav`},category:{title:`Kategória`},enabled:{title:`Povolené`,values:{enabled:`Povolené`,disabled:`Zakázané`}},validation:{title:`Validácia`}}},channels:{columns:{name:{title:`Názov`},device:{title:`Zariadenie`},category:{title:`Kategória`}}},channelsProperties:{columns:{name:{title:`Názov`},channel:{title:`Kanál`},category:{title:`Kategória`},permissions:{title:`Oprávnenia`},dataType:{title:`Dátový typ`,type:{enum:`Info o enum hodnote`,numeric:`Info o číselnej hodnote`}},value:{title:`Hodnota`}}}},filters:{devices:{types:{title:`Filtrovať podľa typu zariadenia`},states:{title:`Filtrovať podľa stavu pripojenia`},enabled:{title:`Filtrovať podľa stavu zariadenia`,placeholder:`Vyberte stav zariadenia`,values:{enabled:`Povolené`,disabled:`Zakázané`,all:`Všetky`}},category:{title:`Filtrovať podľa kategórie zariadenia`,placeholder:`Vyberte jednu alebo viac`},validation:{title:`Filtrovať podľa stavu validácie`}},channels:{category:{title:`Filtrovať podľa kategórie kanála`,placeholder:`Vyberte jednu alebo viac`}},channelsProperties:{category:{title:`Filtrovať podľa kategórie vlastnosti`,placeholder:`Vyberte jednu alebo viac`},dataType:{title:`Filtrovať podľa dátového typu vlastnosti`},permission:{title:`Filtrovať podľa oprávnenia vlastnosti`}}},buttons:{add:{title:`Pridať`},edit:{title:`Upraviť`},detail:{title:`Detail`},discard:{title:`Zahodiť`},cancel:{title:`Zrušiť`},close:{title:`Zavrieť`},save:{title:`Uložiť`},change:{title:`Zmeniť`},remove:{title:`Odstrániť`},resetFilters:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},reset:{title:`Resetovať`},addChannel:{title:`Pridať kanál`},addProperty:{title:`Pridať vlastnosť`},control:{title:`Ovládať`},refresh:{title:`Obnoviť`},loadMore:{title:`Načítať viac`},viewLogs:{title:`Zobraziť logy`},back:{title:`Späť`}},labels:{live:`Naživo`},states:{online:`Online`,offline:`Offline`,all:`Všetky`,connected:`Pripojený`,disconnected:`Odpojený`,init:`Inicializovaný`,ready:`Pripravený`,running:`Beží`,sleeping:`Spí`,stopped:`Zastavený`,lost:`Stratený`,alert:`Výstraha`,unknown:`Neznámy`},permissions:{ro:`Iba čítanie`,rw:`Čítanie a zápis`,wo:`Iba zápis`,ev:`Udalosť`},dataTypes:{char:`Char`,uchar:`Unsigned char`,short:`Short integer`,ushort:`Unsigned short integer`,int:`Integer`,uint:`Unsigned integer`,float:`Float`,bool:`Boolean`,string:`String`,enum:`Enum`,unknown:`Neznámy`},categories:{devices:{generic:`Všeobecné`,air_conditioner:`Klimatizácia`,air_dehumidifier:`Odvlhčovač vzduchu`,air_humidifier:`Zvlhčovač vzduchu`,air_purifier:`Čistička vzduchu`,alarm:`Alarm`,av_receiver:`AV receiver`,camera:`Kamera`,door:`Dvere`,doorbell:`Zvonček`,fan:`Ventilátor`,game_console:`Herná konzola`,heating_unit:`Vykurovacia jednotka`,lighting:`Osvetlenie`,lock:`Zámok`,media:`Médiá`,outlet:`Zásuvka`,projector:`Projektor`,pump:`Čerpadlo`,robot_vacuum:`Robotický vysávač`,sensor:`Senzor`,set_top_box:`Set-top box`,speaker:`Reproduktor`,sprinkler:`Zavlažovač`,streaming_service:`Streaming service`,switcher:`Prepínač`,television:`Televízor`,thermostat:`Termostat`,valve:`Ventil`,water_heater:`Ohrievač vody`,window_covering:`Okenné tienenie`},channels:{generic:`Všeobecné`,air_particulate:`Air particulate`,air_quality:`Air quality`,alarm:`Alarm`,battery:`Batéria`,camera:`Camera`,carbon_dioxide:`Carbon dioxide`,carbon_monoxide:`Carbon monoxide`,contact:`Contact`,cooler:`Cooler`,dehumidifier:`Dehumidifier`,device_information:`Device information`,door:`Door`,doorbell:`Doorbell`,electrical_energy:`Electrical energy`,electrical_generation:`Electrical generation`,electrical_power:`Electrical power`,fan:`Fan`,filter:`Filter`,flow:`Flow`,gas:`Gas`,heater:`Heater`,humidifier:`Humidifier`,humidity:`Vlhkosť`,illuminance:`Illuminance`,leak:`Leak`,light:`Light`,lock:`Lock`,media_input:`Media input`,media_playback:`Media playback`,microphone:`Microphone`,motion:`Motion`,nitrogen_dioxide:`Nitrogen dioxide`,occupancy:`Occupancy`,outlet:`Outlet`,ozone:`Ozone`,pressure:`Pressure`,robot_vacuum:`Robot vacuum`,smoke:`Smoke`,speaker:`Speaker`,sulphur_dioxide:`Sulphur dioxide`,switcher:`Switcher`,television:`Television`,projector:`Projector`,temperature:`Teplota`,thermostat:`Thermostat`,valve:`Valve`,volatile_organic_compounds:`Volatile organic compounds`,window_covering:`Window covering`},channelsProperties:{generic:`Generic`,active:`Active`,alarm_state:`Alarm state`,album:`Album`,angle:`Angle`,aqi:`AQI`,artist:`Artist`,artwork_url:`Artwork URL`,average_power:`Average power`,balance:`Balance`,bass:`Bass`,brightness:`Brightness`,change_needed:`Change needed`,child_lock:`Child lock`,color_blue:`Color blue`,color_green:`Color green`,color_red:`Color red`,color_temperature:`Color temperature`,color_white:`Color white`,command:`Command`,connection_type:`Connection type`,consumption:`Consumption`,current:`Current`,concentration:`Concentration`,defrost_active:`Defrost active`,detected:`Detected`,direction:`Direction`,distance:`Distance`,duration:`Duration`,event:`Event`,fault:`Fault`,fault_description:`Fault description`,firmware_revision:`Firmware revision`,frequency:`Frequency`,hardware_revision:`Hardware revision`,hue:`Hue`,humidity:`Humidity`,illuminance:`Illuminance`,in_use:`In Use`,infrared:`Infrared`,last_event:`Last event`,level:`Level`,life_remaining:`Life remaining`,link_quality:`Link quality`,locked:`Locked`,manufacturer:`Manufacturer`,media_type:`Media type`,mist_level:`Mist level`,model:`Model`,mode:`Mode`,mute:`Mute`,natural_breeze:`Natural breeze`,obstruction:`Obstruction`,on:`On`,over_current:`Over current`,over_voltage:`Over voltage`,over_power:`Over power`,pan:`Pan`,peak_level:`Peak level`,percentage:`Percentage`,position:`Position`,power:`Power`,pressure:`Pressure`,production:`Production`,rate:`Rate`,remaining:`Remaining`,repeat:`Repeat`,reset:`Reset`,remote_key:`Remote key`,saturation:`Saturation`,serial_number:`Serial number`,shuffle:`Shuffle`,siren:`Siren`,source:`Source`,source_label:`Source label`,speed:`Speed`,state:`State`,status:`Status`,swing:`Swing`,tampered:`Tampered`,temperature:`Temperature`,tilt:`Tilt`,timer:`Timer`,track:`Track`,treble:`Treble`,triggered:`Triggered`,type:`Type`,units:`Units`,voltage:`Voltage`,volume:`Volume`,warm_mist:`Warm mist`,water_tank_empty:`Water tank empty`,water_tank_full:`Water tank full`,water_tank_level:`Water tank level`,zoom:`Zoom`}},validation:{status:{valid:`Platný`,invalid:`Neplatný`,unknown:`Neznámy`},filter:{valid:`Platný`,invalid:`Neplatný`,all:`Všetky`},errors:`chyby`,warnings:`varovania`,issuesTitle:`Problémy validácie`,severity:{error:`Chyba`,warning:`Varovanie`},table:{severity:`Závažnosť`,type:`Typ`,message:`Správa`,channel:`Kanál`},issueTypes:{missing_channel:`Chýbajúci kanál`,missing_property:`Chýbajúca vlastnosť`,invalid_data_type:`Neplatný dátový typ`,invalid_permissions:`Neplatné oprávnenia`,invalid_format:`Neplatný formát`,unknown_channel:`Neznámy kanál`,duplicate_channel:`Duplicitný kanál`,constraint_one_of_violation:`Porušenie obmedzenia (jeden z)`,constraint_one_or_more_of_violation:`Porušenie obmedzenia (jeden alebo viac z)`,constraint_mutually_exclusive_violation:`Porušenie obmedzenia (vzájomne vylučujúce)`}}},Sn={"cs-CZ":gn,"de-DE":_n,"en-US":vn,"es-ES":yn,"pl-PL":bn,"sk-SK":xn},Cn=[{path:`devices`,name:q.DEVICES,component:()=>z(()=>import(`./view-devices-CQyYakG6.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])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:()=>ft.global.t(`devicesModule.menu.title`),icon:`mdi:devices`,menu:7e3},children:[{path:`add`,name:q.DEVICES_ADD,component:()=>z(()=>import(`./view-device-add-Dtg4hKNb.js`),__vite__mapDeps([24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Add new device`,icon:`mdi:add-circle`}},{path:`:id`,name:q.DEVICES_EDIT,component:()=>z(()=>import(`./view-device-edit-D3wfo1SZ.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit device`,icon:`mdi:pencil-circle`}}]},{path:`device/:id`,name:q.DEVICE,component:()=>z(()=>import(`./view-device-C6EIYm4K.js`),__vite__mapDeps([26,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,27])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Device detail`,icon:`mdi:devices`},children:[{path:`edit`,name:q.DEVICE_EDIT,component:()=>z(()=>import(`./view-device-edit-D3wfo1SZ.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit device`,icon:`mdi:pencil-circle`}},{path:`control`,name:q.DEVICE_CONTROL,component:()=>z(()=>import(`./view-device-control-D14Yf_3B.js`),__vite__mapDeps([28,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Control device`,icon:`mdi:tune-variant`}},{path:`channel/add`,name:q.DEVICE_ADD_CHANNEL,component:()=>z(()=>import(`./view-channel-add-YCqERQS-.js`),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!1,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Add new channel`,icon:`mdi:plus-circle`}},{path:`channel/:channelId`,name:q.DEVICE_EDIT_CHANNEL,component:()=>z(()=>import(`./view-channel-edit-Dnct_m0O.js`),__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:e=>({id:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}},{path:`channel/:channelId/property/add`,name:q.DEVICE_CHANNEL_ADD_PROPERTY,component:()=>z(()=>import(`./view-channel-property-add-CoaudIGV.js`),__vite__mapDeps([31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:e=>({channelId:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Add new channel property`,icon:`mdi:plus-circle`}},{path:`channel/:channelId/property/:propertyId`,name:q.DEVICE_CHANNEL_EDIT_PROPERTY,component:()=>z(()=>import(`./view-channel-property-edit-g0J-yPAY.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:e=>({id:e.params.propertyId,channelId:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit channel property`,icon:`mdi:pencil-circle`}}]},{path:`channels`,name:q.CHANNELS,component:()=>z(()=>import(`./view-channels--BS5J8Ro.js`),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Channels`,icon:`mdi:chip`},children:[{path:`add`,name:q.CHANNELS_ADD,component:()=>z(()=>import(`./view-channel-add-YCqERQS-.js`),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!1,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Add new channel`,icon:`mdi:add-circle`}},{path:`:id`,name:q.CHANNELS_EDIT,component:()=>z(()=>import(`./view-channel-edit-Dnct_m0O.js`),__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}}]},{path:`channel/:id`,name:q.CHANNEL,component:()=>z(()=>import(`./view-channel-IJiMTDSG.js`),__vite__mapDeps([34,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Channel detail`,icon:`mdi:chip`},children:[{path:`edit`,name:q.CHANNEL_EDIT,component:()=>z(()=>import(`./view-channel-edit-Dnct_m0O.js`),__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}},{path:`property/add`,name:q.CHANNEL_ADD_PROPERTY,component:()=>z(()=>import(`./view-channel-property-add-CoaudIGV.js`),__vite__mapDeps([31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:e=>({channelId:e.params.id}),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Add new channel property`,icon:`mdi:plus-circle`}},{path:`property/:propertyId`,name:q.CHANNEL_EDIT_PROPERTY,component:()=>z(()=>import(`./view-channel-property-edit-g0J-yPAY.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23])),props:e=>({id:e.params.propertyId,channelId:e.params.id}),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Edit channel property`,icon:`mdi:pencil-circle`}}]}],wn=I({id:G,draft:k().default(!1),channel:G,name:B().trim().nonempty(),createdAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:N(G).default([]),item:N(G)}),creating:N(G),updating:N(G),deleting:N(G)}),I({id:G,data:ue({})}),I({id:G,data:I({name:B().trim().nonempty()})}),I({id:G.optional(),channelId:G.optional()}),I({id:G,channelId:G}),I({channelId:G});var Tn=I({id:G.optional().default(Ke()),channelId:G,draft:k().optional().default(!1),data:I({name:B().trim().nonempty()})});I({id:G,channelId:G}),I({id:G,channelId:G});var En=I({id:B().uuid().optional(),channel:B().uuid(),name:B().trim().nonempty()}),Dn=I({id:B().uuid(),channel:B().uuid(),name:B().trim().nonempty(),created_at:B().date(),updated_at:B().date().nullable()}),On=e=>{let t=wn.safeParse({id:e.id,channel:e.channel,name:e.name,createdAt:e.created_at,updatedAt:e.updated_at});if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate received channel control data.`);return t.data},kn=e=>{let t=En.safeParse({id:e.id,channel:e.channel,name:e.name});if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate create channel control request.`);return t.data},An={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},jn=Re(`devices_module-channels_controls`,()=>{let e=Ct(),t=ke(),n=E(An),r=E([]),i=E({}),a=e=>r.value.includes(e),o=e=>n.value.fetching.item.includes(e),s=e=>n.value.fetching.items.includes(e),c=()=>Object.values(i.value),l=e=>Object.values(i.value??{}).filter(t=>t.channel===e),u=e=>i.value[e]??null,d={},f={},p=e=>m({id:e.id,data:On(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=wn.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert channel control.`);return i.value[n.data.id]=n.data}let n=wn.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert channel control.`);return i.value=i.value??{},i.value[n.data.id]=n.data},h=e=>{if(i.value){if(e.channelId!==void 0){let t=l(e.channelId);for(let e of t)e.id in(i.value??{})&&delete(i.value??{})[e.id];return}else if(e.id!==void 0){delete i.value[e.id];return}throw new Z(`You have to provide at least channel or control id`)}},ee=async t=>{let r=d[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new J(`Already fetching channel control.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${w}/${Y}/channels/{channelId}/controls/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(n!==void 0){let e=On(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch channel control.`;throw r&&(o=H(r,o)),new J(o,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();d[t.id]=a;try{return await a}finally{delete d[t.id]}};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findForChannel:l,findById:u,onEvent:p,set:m,unset:h,get:ee,fetch:async t=>{let a=f[t.channelId];if(a)return a;let o=(async()=>{if(n.value.fetching.items.includes(t.channelId))throw new J(`Already fetching channel controls.`);n.value.fetching.items.push(t.channelId),r.value=r.value.filter(e=>e!==t.channelId),r.value=[...new Set(r.value)];try{let{data:n,error:a,response:o}=await e.client.GET(`/${w}/${Y}/channels/{channelId}/controls`,{params:{path:{channelId:t.channelId}}});if(n!==void 0){r.value.push(t.channelId),r.value=[...new Set(r.value)];let e=Object.fromEntries(n.data.map(e=>{let t=On(e);return[t.id,t]}));return i.value={...i.value,...e},Object.values(i.value)}let s=`Failed to fetch channel controls.`;throw a&&(s=H(a,s)),new J(s,o.status)}finally{n.value.fetching.items=n.value.fetching.items.filter(e=>e!==t.channelId)}})();f[t.channelId]=o;try{return await o}finally{delete f[t.channelId]}},add:async r=>{let a=Tn.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to add channel control.`);let o=wn.safeParse({...a.data.data,id:a.data.id,channel:a.data.channelId,draft:a.data.draft,createdAt:new Date});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to add channel control.`);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(`/${w}/${Y}/channels/{channelId}/controls`,{params:{path:{channelId:r.channelId}},body:{data:kn({...o.data,id:r.id,channel:r.channelId})}});if(t!==void 0&&t.data.id===r.id){let e=On(t.data);return i.value[e.id]=e,e}delete i.value[o.data.id];let s=`Failed to create channel control.`;throw n&&(s=H(n,s)),new J(s,a.status)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.data.id)}},save:async r=>{if(n.value.updating.includes(r.id))throw new Z(`ChannelsControls is already being saved.`);if(!(r.id in i.value))throw new Z(`Failed to get channel control data to save.`);let a=wn.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to save channel control.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${w}/${Y}/channels/{channelId}/controls`,{params:{path:{channelId:a.data.channel}},body:{data:kn({...a.data,id:r.id,channel:r.channelId})}});if(t!==void 0&&t.data.id===r.id){let e=On(t.data);return i.value[e.id]=e,e}let s=`Failed to create channel control.`;throw n&&(s=H(n,s)),new J(s,o.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},remove:async t=>{if(n.value.deleting.includes(t.id))throw new Z(`ChannelControl 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(`/${w}/${Y}/channels/{channelId}/controls/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(r.status===204)return!0;await ee({id:t.id,channelId:t.channelId});let i=`Remove channel control failed.`;throw n&&(i=H(n,i)),new J(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),Mn=e=>jn(e),Q=I({id:G,draft:k().default(!1),type:B().trim().nonempty(),channel:G,category:F(qe).default(qe.generic),identifier:B().trim().nonempty().nullable().default(null),name:B().trim().nullable(),permissions:N(F(ot)),dataType:F(pt),unit:B().nullable().optional().default(null),format:N(j([B(),j([P(),Se()])])).nullable(),invalid:j([B(),P(),k()]).nullable(),step:P().nullable(),value:ge(e=>e==null?null:typeof e==`object`&&e&&`value`in e?e:{value:e,lastUpdated:null,trend:null},I({value:j([B(),P(),k()]).nullable().default(null),lastUpdated:B().nullable().optional().default(null),trend:F(at).nullable().optional().default(null)}).nullable()).default(null),createdAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:N(G).default([]),item:N(G)}),creating:N(G),updating:N(G),deleting:N(G)}),I({id:G,type:B().trim().nonempty(),data:ue({})}),I({id:G,data:I({type:B().trim().nonempty(),category:F(qe).default(qe.generic),identifier:B().trim().nonempty().nullable(),name:B().trim().nullable(),permissions:N(F(ot)),dataType:F(pt),format:N(j([B(),j([P(),Se()])])).nullable(),invalid:j([B(),P(),k()]).nullable(),step:P().nullable(),value:I({value:j([B(),P(),k()]).nullable().default(null),lastUpdated:B().nullable().optional().default(null),trend:F(at).nullable().optional().default(null)}).nullable()})}),I({id:G.optional(),channelId:G.optional()}),I({id:G,channelId:G}),I({channelId:G});var Nn=I({id:G.optional().default(Ke()),channelId:G,draft:k().optional().default(!1),data:I({type:B().trim().nonempty(),category:F(qe).default(qe.generic),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nullable(),permissions:N(F(ot)),dataType:F(pt),format:N(j([B(),j([P(),Se()])])).nullable(),invalid:j([B(),P(),k()]).nullable(),step:j([B(),P()]).transform(e=>e===``?void 0:Number(e)).nullable(),value:j([B(),P(),k()]).nullable().optional()})}),Pn=I({id:G,channelId:G,data:I({type:B().trim().nonempty(),category:F(qe).optional(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nullable().optional(),format:N(j([B(),j([P(),Se()])])).nullable().optional(),invalid:j([B(),P(),k()]).nullable().optional(),step:j([B(),P()]).transform(e=>e===``?void 0:Number(e)).nullable(),value:j([B(),P(),k()]).nullable().optional()})});I({id:G,channelId:G}),I({id:G,channelId:G});var Fn=I({id:B().uuid().optional(),type:B().trim().nonempty(),category:F(qe),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nullable(),permissions:N(F(ot)),data_type:F(pt),format:N(j([B(),j([P(),Se()])])).nullable(),invalid:j([B(),P(),k()]).nullable(),step:P().nullable(),value:j([B(),P(),k()]).nullable()}),In=I({type:B().trim().nonempty(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nullable().optional(),format:N(j([B(),j([P(),Se()])])).nullable().optional(),invalid:j([B(),P(),k()]).nullable().optional(),step:P().nullable().optional(),value:j([B(),P(),k()]).nullable().optional()}),Ln=I({id:B().uuid(),type:B().trim().nonempty(),channel:B().uuid(),category:F(qe),identifier:B().trim().nonempty().nullable(),name:B().trim().nullable(),permissions:N(F(ot)),data_type:F(pt),format:N(j([B(),j([P(),Se()])])).nullable(),invalid:j([B(),P(),k()]).nullable(),step:P().nullable(),value:I({value:j([B(),P(),k()]).nullable().optional(),last_updated:B().nullable().optional(),trend:F(at).nullable().optional()}).nullable().optional(),created_at:B().date(),updated_at:B().date().nullable()}),Rn=(e,t)=>{let n=t.safeParse(Ze(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate received channel property data.`);return n.data},zn=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate create channel property request.`);return n.data},Bn=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate update channel property request.`);return n.data},$=bt(),Vn={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},Hn=Re(`devices_module-channels_properties`,()=>{let e=Ct(),t=ke(),{getElement:n}=an(),r=E(Vn),i=E([]),a=E({}),o=e=>i.value.includes(e),s=e=>r.value.fetching.item.includes(e),c=e=>r.value.fetching.items.includes(e),l=()=>Object.values(a.value),u=e=>Object.values(a.value??{}).filter(t=>t.channel===e),d=e=>a.value[e]??null,f={},p={},m=e=>{let t=n(e.type);return h({id:e.id,data:Rn(e.data,t?.schemas?.channelPropertySchema||Q)})},h=e=>{let r=n(e.data.type);if(e.id&&a.value&&e.id in a.value){let n=(r?.schemas?.channelPropertySchema||Q).safeParse({...a.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert channel property.`);return a.value[n.data.id]=n.data}let i=(r?.schemas?.channelPropertySchema||Q).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to insert channel property.`);return a.value=a.value??{},a.value[i.data.id]=i.data},ee=e=>{if(a.value){if(e.channelId!==void 0){let t=u(e.channelId);for(let e of t)e.id in(a.value??{})&&delete(a.value??{})[e.id];return}else if(e.id!==void 0){delete a.value[e.id];return}throw new Z(`You have to provide at least channel or property id`)}},g=async t=>{let i=f[t.id];if(i)return i;let o=(async()=>{if(r.value.fetching.item.includes(t.id))throw new J(`Already fetching channel property.`);r.value.fetching.item.push(t.id);try{let{data:r,error:i,response:o}=await e.client.GET(`/${w}/${Y}/channels/{channelId}/properties/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(r!==void 0){let e=n(r.data.type),t=Rn(r.data,e?.schemas?.channelPropertySchema||Q);return a.value[t.id]=t,t}let s=`Failed to fetch channel property.`;throw i&&(s=H(i,s)),new J(s,o.status)}finally{r.value.fetching.item=r.value.fetching.item.filter(e=>e!==t.id)}})();f[t.id]=o;try{return await o}finally{delete f[t.id]}};return{semaphore:r,firstLoad:i,data:a,firstLoadFinished:o,getting:s,fetching:c,findAll:l,findForChannel:u,findById:d,onEvent:m,set:h,unset:ee,get:g,fetch:async t=>{let o=p[t.channelId];if(o)return o;let s=(async()=>{if(r.value.fetching.items.includes(t.channelId))throw new J(`Already fetching properties.`);r.value.fetching.items.push(t.channelId),i.value=i.value.filter(e=>e!==t.channelId),i.value=[...new Set(i.value)];try{let{data:r,error:o,response:s}=await e.client.GET(`/${w}/${Y}/channels/{channelId}/properties`,{params:{path:{channelId:t.channelId}}});if(r!==void 0){i.value.push(t.channelId),i.value=[...new Set(i.value)];let e=Object.fromEntries(r.data.map(e=>{let t=Rn(e,n(e.type)?.schemas?.channelPropertySchema||Q);return[t.id,t]}));return a.value={...a.value,...e},Object.values(a.value)}let c=`Failed to fetch channel properties.`;throw o&&(c=H(o,c)),new J(c,s.status)}finally{r.value.fetching.items=r.value.fetching.items.filter(e=>e!==t.channelId)}})();p[t.channelId]=s;try{return await s}finally{delete p[t.channelId]}},add:async i=>{let o=Nn.safeParse(i);if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to add property.`);let s=n(i.data.type),c=(s?.schemas?.channelPropertySchema||Q).safeParse({...i.data,id:o.data.id,channel:o.data.channelId,draft:o.data.draft,createdAt:new Date});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to add channel property.`);if(r.value.creating.push(c.data.id),a.value[c.data.id]=c.data,c.data.draft)return r.value.creating=r.value.creating.filter(e=>e!==c.data.id),c.data;try{let{data:t,error:r,response:o}=await e.client.POST(`/${w}/${Y}/channels/{channelId}/properties`,{params:{path:{channelId:i.channelId}},body:{data:zn({...c.data,value:c.data.value?.value??null},s?.schemas?.channelPropertyCreateReqSchema||Fn)}});if(t!==void 0&&t.data.id===i.id){let e=n(t.data.type),r=Rn(t.data,e?.schemas?.channelPropertySchema||Q);return a.value[r.id]=r,r}delete a.value[c.data.id];let l=`Failed to create channel property.`;throw r&&(l=H(r,l)),new J(l,o.status)}finally{r.value.creating=r.value.creating.filter(e=>e!==c.data.id)}},edit:async i=>{if(r.value.updating.includes(i.id))throw new Z(`Property is already being updated.`);if(!(i.id in a.value))throw new Z(`Failed to get channel property data to update.`);let o=Pn.safeParse(i);if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to edit channel property.`);let s=n(i.data.type),c=(s?.schemas?.channelPropertySchema||Q).safeParse({...(0,$.omit)(a.value[i.id],`value`),...(0,$.omitBy)(i.data,$.isUndefined)});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to edit channel property.`);if(r.value.updating.push(i.id),a.value[c.data.id]=c.data,c.data.draft)return r.value.updating=r.value.updating.filter(e=>e!==c.data.id),c.data;try{let{data:t,error:r,response:o}=await e.client.PATCH(`/${w}/${Y}/channels/{channelId}/properties/{id}`,{params:{path:{channelId:i.channelId,id:i.id}},body:{data:Bn({...`value`in i.data?{...c.data,value:c.data.value?.value??null}:(0,$.omit)(c.data,`value`)},s?.schemas?.channelPropertyUpdateReqSchema||In)}});if(t!==void 0){let e=n(t.data.type),r=Rn(t.data,e?.schemas?.channelPropertySchema||Q);return a.value[r.id]=r,r}await g({id:i.id,channelId:i.channelId});let l=`Failed to update channel property.`;throw r&&(l=H(r,l)),new J(l,o.status)}finally{r.value.updating=r.value.updating.filter(e=>e!==i.id)}},save:async i=>{if(r.value.updating.includes(i.id))throw new Z(`Property is already being saved.`);let o=a.value[i.id];if(!o)throw new Z(`Failed to get channel property data to save.`);let s=n(o.type),c=(s?.schemas?.channelPropertySchema||Q).safeParse(o);if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to save channel property.`);r.value.updating.push(i.id);try{let{data:t,error:r,response:o}=await e.client.POST(`/${w}/${Y}/channels/{channelId}/properties`,{params:{path:{channelId:c.data.channel}},body:{data:zn({...c.data,value:c.data.value?.value??null},s?.schemas?.channelPropertyCreateReqSchema||Fn)}});if(t!==void 0&&t.data.id===i.id){let e=n(t.data.type),r=Rn(t.data,e?.schemas?.channelPropertySchema||Q);return a.value[r.id]=r,r}let l=`Failed to create channel property.`;throw r&&(l=H(r,l)),new J(l,o.status)}finally{r.value.updating=r.value.updating.filter(e=>e!==i.id)}},remove:async t=>{if(r.value.deleting.includes(t.id))throw new Z(`Property is already being removed.`);if(!Object.keys(a.value).includes(t.id))return!0;r.value.deleting.push(t.id);let n=a.value[t.id];if(delete a.value[t.id],n?.draft)r.value.deleting=r.value.deleting.filter(e=>e!==t.id);else try{let{error:n,response:r}=await e.client.DELETE(`/${w}/${Y}/channels/{channelId}/properties/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(r.status===204)return!0;await g({id:t.id,channelId:t.channelId});let i=`Remove property failed.`;throw n&&(i=H(n,i)),new J(i,r.status)}finally{r.value.deleting=r.value.deleting.filter(e=>e!==t.id)}return!0}}}),Un=e=>Hn(e),Wn=I({id:G,draft:k().default(!1),type:B().trim().nonempty(),device:G,category:F(ce).default(ce.generic),identifier:B().trim().nonempty().nullable().default(null),name:B().trim().nonempty(),description:B().trim().nullable().default(null),parent:B().uuid().nullable().default(null),createdAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:N(j([G,Dt(`all`)])).default([]),item:N(G)}),creating:N(G),updating:N(G),deleting:N(G)}),I({id:G,type:B().trim().nonempty(),data:ue({})}),I({id:G,data:I({type:B().trim().nonempty(),category:F(ce).default(ce.generic),identifier:B().trim().nonempty().nullable(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),parent:B().uuid().nullable().optional()})}),I({id:G.optional(),deviceId:G.optional()}),I({id:G,deviceId:G.optional()}),I({deviceId:G.optional()});var Gn=I({id:G.optional().default(Ke()),deviceId:G,draft:k().optional().default(!1),data:I({type:B().trim().nonempty(),category:F(ce).default(ce.generic),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),parent:B().uuid().nullable().optional()})}),Kn=I({id:G,deviceId:G.optional(),data:I({type:B().trim().nonempty(),category:F(ce).optional(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().optional(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),parent:B().uuid().nullable().optional()})});I({id:G,deviceId:G}),I({id:G,deviceId:G.optional()});var qn=I({id:B().uuid().optional(),type:B().trim().nonempty(),device:B().uuid(),category:F(ce),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),parent:B().uuid().nullable().optional(),controls:N(En).optional(),properties:N(Fn).optional()}),Jn=I({type:B().trim().nonempty(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty().optional(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),parent:B().uuid().nullable().optional()}),Yn=I({id:B().uuid(),type:B().trim().nonempty(),device:B().uuid(),category:F(ce),identifier:B().trim().nonempty().nullable(),name:B().trim().nonempty(),description:B().trim().nullable(),parent:B().uuid().nullable().optional(),created_at:B().date(),updated_at:B().date().nullable(),controls:N(Dn),properties:N(Ln)}),Xn=(e,t)=>{let n=t.safeParse(Ze(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate received channel data.`);return n.data},Zn=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate create channel request.`);return n.data},Qn=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate update channel request.`);return n.data},$n={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},er=Re(`devices_module-channels`,()=>{let e=Ct(),t=ke(),{getElement:n}=rn(),{getElement:r}=an(),i=je(),a=E($n),o=E([]),s=E({}),c=e=>e==null?o.value.includes(`all`):o.value.includes(e),l=e=>a.value.fetching.item.includes(e),u=e=>e==null?a.value.fetching.items.includes(`all`):a.value.fetching.items.includes(e),d=()=>Object.values(s.value),f=e=>Object.values(s.value??{}).filter(t=>t.device===e),p=e=>s.value[e]??null,m={},h={},ee=e=>{let t=n(e.type);return g({id:e.id,data:Xn(e.data,t?.schemas?.channelSchema||Wn)})},g=e=>{let r=n(e.data.type);if(e.id&&s.value&&e.id in s.value){let n=(r?.schemas?.channelSchema||Wn).safeParse({...s.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert channel.`);return s.value[n.data.id]=n.data}let i=(r?.schemas?.channelSchema||Wn).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to insert channel.`);return s.value=s.value??{},s.value[i.data.id]=i.data},_=e=>{if(s.value){if(e.deviceId!==void 0){let t=f(e.deviceId);for(let e of t)e.id in(s.value??{})&&delete(s.value??{})[e.id];return}else if(e.id!==void 0){delete s.value[e.id];return}throw new Z(`You have to provide at least device or channel id`)}},v=async t=>{let r=m[t.id];if(r)return r;let i=(async()=>{if(a.value.fetching.item.includes(t.id))throw new J(`Already fetching channel.`);a.value.fetching.item.push(t.id);try{let r;r=t.deviceId?await e.client.GET(`/${w}/${Y}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}}):await e.client.GET(`/${w}/${Y}/channels/{id}`,{params:{path:{id:t.id}}});let{data:i,error:a,response:o}=r;if(i!==void 0){let e=n(i.data.type),t=Xn(i.data,e?.schemas?.channelSchema||Wn);return s.value[t.id]=t,S(t,i.data.controls),re(t,i.data.properties),t}let c=`Failed to fetch channel.`;throw a&&(c=(t.deviceId,H(a,c))),new J(c,o.status)}finally{a.value.fetching.item=a.value.fetching.item.filter(e=>e!==t.id)}})();m[t.id]=i;try{return await i}finally{delete m[t.id]}},y=async t=>{let r=h[t?.deviceId??`all`];if(r)return r;let i=(async()=>{if(a.value.fetching.items.includes(t?.deviceId??`all`))throw new J(`Already fetching channels.`);a.value.fetching.items.push(t?.deviceId??`all`),o.value=o.value.filter(e=>e!==(t?.deviceId??`all`)),o.value=[...new Set(o.value)];try{let r;r=t?.deviceId?await e.client.GET(`/${w}/${Y}/devices/{deviceId}/channels`,{params:{path:{deviceId:t.deviceId}}}):await e.client.GET(`/${w}/${Y}/channels`);let{data:i,error:a,response:c}=r;if(i!==void 0){t?.deviceId?(o.value.push(t.deviceId),o.value=[...new Set(o.value)]):(o.value.push(`all`),o.value=[...new Set(o.value)]);let e=Object.fromEntries(i.data.map(e=>{let t=Xn(e,n(e.type)?.schemas?.channelSchema||Wn);return S(t,e.controls),re(t,e.properties),[t.id,t]}));return s.value={...s.value,...e},t?.deviceId?f(t.deviceId):Object.values(s.value)}let l=`Failed to fetch channels.`;throw a&&(l=(t?.deviceId,H(a,l))),new J(l,c.status)}finally{a.value.fetching.items=a.value.fetching.items.filter(e=>e!==(t?.deviceId??`all`))}})();h[t?.deviceId??`all`]=i;try{return await i}finally{delete h[t?.deviceId??`all`]}},b=async r=>{let i=Gn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to add channel.`);let o=n(r.data.type),c=(o?.schemas?.channelSchema||Wn).safeParse({...r.data,id:i.data.id,device:i.data.deviceId,draft:i.data.draft,createdAt:new Date});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to add channel.`);if(a.value.creating.push(c.data.id),s.value[c.data.id]=c.data,c.data.draft)return a.value.creating=a.value.creating.filter(e=>e!==c.data.id),c.data;try{let{data:t,error:i,response:a}=await e.client.POST(`/${w}/${Y}/devices/{deviceId}/channels`,{params:{path:{deviceId:r.deviceId}},body:{data:Zn(c.data,o?.schemas?.channelCreateReqSchema||qn)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=Xn(t.data,e?.schemas?.channelSchema||Wn);return s.value[r.id]=r,S(r,t.data.controls),re(r,t.data.properties),r}delete s.value[c.data.id];let l=`Failed to create channel.`;throw i&&(l=H(i,l)),new J(l,a.status)}finally{a.value.creating=a.value.creating.filter(e=>e!==c.data.id)}},te=async r=>{if(a.value.updating.includes(r.id))throw new Z(`Channel is already being updated.`);if(!(r.id in s.value))throw new Z(`Failed to get channel data to update.`);let i=Kn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to edit channel.`);let o=n(r.data.type),c=(o?.schemas?.channelSchema||Wn).safeParse({...s.value[r.id],...(0,$.omitBy)(r.data,$.isUndefined)});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to edit channel.`);if(a.value.updating.push(r.id),s.value[c.data.id]=c.data,c.data.draft)return a.value.updating=a.value.updating.filter(e=>e!==c.data.id),c.data;try{let t;t=r.deviceId?await e.client.PATCH(`/${w}/${Y}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:r.deviceId,id:r.id}},body:{data:Qn(c.data,o?.schemas?.channelUpdateReqSchema||Jn)}}):await e.client.PATCH(`/${w}/${Y}/channels/{id}`,{params:{path:{id:r.id}},body:{data:Qn(c.data,o?.schemas?.channelUpdateReqSchema||Jn)}});let{data:i,error:a,response:l}=t;if(i!==void 0){let e=n(i.data.type),t=Xn(i.data,e?.schemas?.channelSchema||Wn);return s.value[t.id]=t,t}await v({id:r.id});let u=`Failed to update channel.`;throw a&&(u=(r.deviceId,H(a,u))),new J(u,l.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==r.id)}},x=async r=>{if(a.value.updating.includes(r.id))throw new Z(`Channels is already being saved.`);let i=s.value[r.id];if(!i)throw new Z(`Failed to get channel data to save.`);let o=n(i.type),c=(o?.schemas?.channelSchema||Wn).safeParse(i);if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new K(`Failed to save channel.`);a.value.updating.push(r.id);try{let{data:t,error:i,response:a}=await e.client.POST(`/${w}/${Y}/devices/{deviceId}/channels`,{params:{path:{deviceId:c.data.device}},body:{data:Zn(c.data,o?.schemas?.channelCreateReqSchema||qn)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=Xn(t.data,e?.schemas?.channelSchema||Wn);return s.value[r.id]=r,S(r,t.data.controls),re(r,t.data.properties),r}let l=`Failed to create channel.`;throw i&&(l=H(i,l)),new J(l,a.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==r.id)}},ne=async t=>{if(a.value.deleting.includes(t.id))throw new Z(`Channel is already being removed.`);if(!Object.keys(s.value).includes(t.id))return!0;a.value.deleting.push(t.id);let n=s.value[t.id];if(delete s.value[t.id],n?.draft)a.value.deleting=a.value.deleting.filter(e=>e!==t.id);else try{let n;n=t.deviceId?await e.client.DELETE(`/${w}/${Y}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}}):await e.client.DELETE(`/${w}/${Y}/channels/{id}`,{params:{path:{id:t.id}}});let{error:r,response:a}=n;if(a.status===204)return i.getStore(Ft).unset({channelId:t.id}),i.getStore(Mt).unset({channelId:t.id}),!0;await v({id:t.id});let o=`Remove channel failed.`;throw r&&(o=(t.deviceId,H(r,o))),new J(o,a.status)}finally{a.value.deleting=a.value.deleting.filter(e=>e!==t.id)}return!0},S=(e,t)=>{let n=i.getStore(Ft);t.forEach(e=>{n.set({id:e.id,data:On(e)})}),n.firstLoad.push(e.id)},re=(e,t)=>{let n=i.getStore(Mt);t.forEach(e=>{let t=r(e.type);n.set({id:e.id,data:Rn(e,t?.schemas?.channelPropertySchema||Q)})}),n.firstLoad.push(e.id)};return{semaphore:a,firstLoad:o,data:s,firstLoadFinished:c,getting:l,fetching:u,findAll:d,findForDevice:f,findById:p,onEvent:ee,set:g,unset:_,get:v,fetch:y,add:b,edit:te,save:x,remove:ne}}),tr=e=>er(e),nr=I({id:G,draft:k().default(!1),device:G,name:B().trim().nonempty(),createdAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:N(G).default([]),item:N(G)}),creating:N(G),updating:N(G),deleting:N(G)}),I({id:G,data:ue({})}),I({id:G,data:I({name:B().trim().nonempty()})}),I({id:G.optional(),deviceId:G.optional()}),I({id:G,deviceId:G}),I({deviceId:G});var rr=I({id:G.optional().default(Ke()),deviceId:G,draft:k().optional().default(!1),data:I({name:B().trim().nonempty()})});I({id:G,deviceId:G}),I({id:G,deviceId:G});var ir=I({id:B().uuid().optional(),device:B().uuid(),name:B().trim().nonempty()}),ar=I({id:B().uuid(),device:B().uuid(),name:B().trim().nonempty(),created_at:B().date(),updated_at:B().date().nullable()}),or=e=>{let t=nr.safeParse({id:e.id,device:e.device,name:e.name,createdAt:e.created_at,updatedAt:e.updated_at});if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate received device control data.`);return t.data},sr=e=>{let t=ir.safeParse({id:e.id,device:e.device,name:e.name});if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate create device control request.`);return t.data},cr={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},lr=Re(`devices_module-devices_controls`,()=>{let e=Ct(),t=ke(),n=E(cr),r=E([]),i=E({}),a=e=>r.value.includes(e),o=e=>n.value.fetching.item.includes(e),s=e=>n.value.fetching.items.includes(e),c=()=>Object.values(i.value),l=e=>Object.values(i.value??{}).filter(t=>t.device===e),u=e=>i.value[e]??null,d={},f={},p=e=>m({id:e.id,data:or(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=nr.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert device control.`);return i.value[n.data.id]=n.data}let n=nr.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert device control.`);return i.value=i.value??{},i.value[n.data.id]=n.data},h=e=>{if(i.value){if(e.deviceId!==void 0){let t=l(e.deviceId);for(let e of t)e.id in(i.value??{})&&delete(i.value??{})[e.id];return}else if(e.id!==void 0){delete i.value[e.id];return}throw new Z(`You have to provide at least device or control id`)}},ee=async t=>{let r=d[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new J(`Already fetching device control.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${w}/${Y}/devices/{deviceId}/controls/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}});if(n!==void 0){let e=or(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch device control.`;throw r&&(o=H(r,o)),new J(o,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();d[t.id]=a;try{return await a}finally{delete d[t.id]}};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findForDevice:l,findById:u,onEvent:p,set:m,unset:h,get:ee,fetch:async t=>{let a=f[t.deviceId];if(a)return a;let o=(async()=>{if(n.value.fetching.items.includes(t.deviceId))throw new J(`Already fetching device controls.`);n.value.fetching.items.push(t.deviceId),r.value=r.value.filter(e=>e!==t.deviceId),r.value=[...new Set(r.value)];try{let{data:n,error:a,response:o}=await e.client.GET(`/${w}/${Y}/devices/{deviceId}/controls`,{params:{path:{deviceId:t.deviceId}}});if(n!==void 0){r.value.push(t.deviceId),r.value=[...new Set(r.value)];let e=Object.fromEntries(n.data.map(e=>{let t=or(e);return[t.id,t]}));return i.value={...i.value,...e},Object.values(i.value)}let s=`Failed to fetch device controls.`;throw a&&(s=H(a,s)),new J(s,o.status)}finally{n.value.fetching.items=n.value.fetching.items.filter(e=>e!==t.deviceId)}})();f[t.deviceId]=o;try{return await o}finally{delete f[t.deviceId]}},add:async r=>{let a=rr.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to add device control.`);let o=nr.safeParse({...a.data.data,id:a.data.id,device:a.data.deviceId,draft:a.data.draft,createdAt:new Date});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new K(`Failed to add device control.`);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(`/${w}/${Y}/devices/{deviceId}/controls`,{params:{path:{deviceId:r.deviceId}},body:{data:sr({...o.data,id:r.id,device:r.deviceId})}});if(t!==void 0&&t.data.id===r.id){let e=or(t.data);return i.value[e.id]=e,e}delete i.value[o.data.id];let s=`Failed to create device control.`;throw n&&(s=H(n,s)),new J(s,a.status)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.data.id)}},save:async r=>{if(n.value.updating.includes(r.id))throw new Z(`DevicesControls is already being saved.`);if(!(r.id in i.value))throw new Z(`Failed to get device control data to save.`);let a=nr.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new K(`Failed to save device control.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${w}/${Y}/devices/{deviceId}/controls`,{params:{path:{deviceId:a.data.device}},body:{data:sr({...a.data,id:r.id,device:r.deviceId})}});if(t!==void 0&&t.data.id===r.id){let e=or(t.data);return i.value[e.id]=e,e}let s=`Failed to create device control.`;throw n&&(s=H(n,s)),new J(s,o.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},remove:async t=>{if(n.value.deleting.includes(t.id))throw new Z(`DeviceControl 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(`/${w}/${Y}/devices/{deviceId}/controls/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}});if(r.status===204)return!0;await ee({id:t.id,deviceId:t.deviceId});let i=`Remove device control failed.`;throw n&&(i=H(n,i)),new J(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),ur=e=>lr(e),dr=I({id:G,draft:k().default(!1),type:B().trim().nonempty(),category:F(Oe).default(Oe.generic),identifier:B().trim().nonempty().nullable().default(null),name:B().trim().nonempty(),description:B().trim().nullable().default(null),enabled:k().default(!0),roomId:B().uuid().nullable().default(null),zoneIds:N(B().uuid()).default([]),status:I({online:k().default(!1),status:F(rt).default(rt.unknown),lastChanged:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).nullable().default(null)}),createdAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});I({fetching:I({items:k().default(!1),item:N(G)}),creating:N(G),updating:N(G),deleting:N(G)}),I({id:G,type:B().trim().nonempty(),data:ue({})}),I({id:G,data:I({type:B().trim().nonempty(),category:F(Oe).default(Oe.generic),identifier:B().trim().nonempty().nullable(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:k(),roomId:B().uuid().nullable().optional(),status:I({online:k(),status:F(rt),lastChanged:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e)).nullable().optional()})}).catchall(Ie())}),I({id:G}),I({id:G});var fr=I({id:G.optional().default(Ke()),draft:k().optional().default(!1),data:I({type:B().trim().nonempty(),category:F(Oe).default(Oe.generic),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:k().optional(),roomId:B().uuid().nullable().optional()}).catchall(Ie())}),pr=I({id:G,data:I({type:B().trim().nonempty(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().optional(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:k().optional(),roomId:B().uuid().nullable().optional()}).catchall(Ie())});I({id:G}),I({id:G}),I({id:G,zoneId:B().uuid()}),I({id:G,zoneId:B().uuid()});var mr=I({id:B().uuid().optional(),type:B().trim().nonempty(),category:F(Oe),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:k().optional(),room_id:B().uuid().nullable().optional(),controls:N(ir).optional(),channels:N(qn).optional()}),hr=I({type:B().trim().nonempty(),category:F(Oe).optional(),identifier:B().trim().nonempty().nullable().optional(),name:B().trim().nonempty().optional(),description:B().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:k().optional(),room_id:B().uuid().nullable().optional()}),gr=I({id:B().uuid(),type:B(),category:F(Oe),identifier:B().trim().nonempty().nullable(),name:B().trim().nonempty(),description:B().trim().nullable(),enabled:k(),room_id:B().uuid().nullable(),zone_ids:N(B().uuid()),status:I({online:k(),status:F(rt),last_changed:B().datetime({offset:!0}).nullable().optional()}),created_at:B().date(),updated_at:B().date().nullable(),controls:N(ar),channels:N(Yn)}),_r=(e,t)=>{let n=t.safeParse(Ze(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate received device data.`);return n.data},vr=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate create device request.`);return n.data},yr=(e,t)=>{let n=t.safeParse(lt(e));if(!n.success)throw V.error(`Schema validation failed with:`,n.error),new K(`Failed to validate update device request.`);return n.data},br={fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]},xr=Re(`devices_module-devices`,()=>{let e=Ct(),t=ke(),{getElement:n}=on(),{getElement:r}=rn(),{getElement:i}=an(),a=je(),o=E(br),s=E(!1),c=E({}),l=()=>s.value,u=e=>o.value.fetching.item.includes(e),d=()=>o.value.fetching.items,f=()=>Object.values(c.value),p=e=>c.value[e]??null,m={},h={},ee=e=>{let t=n(e.type);return g({id:e.id,data:_r(e.data,t?.schemas?.deviceSchema||dr)})},g=e=>{let r=n(e.data.type);if(e.id&&c.value&&e.id in c.value){let n=(r?.schemas?.deviceSchema||dr).safeParse({...c.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new K(`Failed to insert device.`);return c.value[n.data.id]=n.data}let i=(r?.schemas?.deviceSchema||dr).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to insert device.`);return c.value=c.value??{},c.value[i.data.id]=i.data},_=e=>{c.value&&delete c.value[e.id]},v=async t=>{let r=m[t.id];if(r)return r;let i=(async()=>{if(o.value.fetching.item.includes(t.id))throw new J(`Already fetching device.`);o.value.fetching.item.push(t.id);try{let{data:r,error:i,response:a}=await e.client.GET(`/${w}/${Y}/devices/{id}`,{params:{path:{id:t.id}}});if(r!==void 0){let e=n(r.data.type),t=_r(r.data,e?.schemas?.deviceSchema||dr);return c.value[t.id]=t,C(t,r.data.controls),T(t,r.data.channels),t}let o=`Failed to fetch device.`;throw i&&(o=H(i,o)),new J(o,a.status)}finally{o.value.fetching.item=o.value.fetching.item.filter(e=>e!==t.id)}})();m[t.id]=i;try{return await i}finally{delete m[t.id]}},y=async()=>{if(`all`in h)return h.all;let t=(async()=>{if(o.value.fetching.items)throw new J(`Already fetching devices.`);o.value.fetching.items=!0;try{let{data:t,error:r,response:i}=await e.client.GET(`/${w}/${Y}/devices`);if(t!==void 0)return c.value=Object.fromEntries(t.data.map(e=>{let t=_r(e,n(e.type)?.schemas?.deviceSchema||dr);return C(t,e.controls),T(t,e.channels),[t.id,t]})),s.value=!0,Object.values(c.value);let a=`Failed to fetch devices.`;throw r&&(a=H(r,a)),new J(a,i.status)}finally{o.value.fetching.items=!1}})();h.all=t;try{return await t}finally{delete h.all}},b=async r=>{let i=fr.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to add device.`);let a=n(r.data.type),s=(a?.schemas?.deviceSchema||dr).safeParse({...r.data,id:i.data.id,draft:i.data.draft,createdAt:new Date});if(!s.success)throw t.error(`Schema validation failed with:`,s.error),new K(`Failed to add device.`);if(o.value.creating.push(s.data.id),c.value[s.data.id]=s.data,s.data.draft)return o.value.creating=o.value.creating.filter(e=>e!==s.data.id),s.data;try{let{data:t,error:i,response:o}=await e.client.POST(`/${w}/${Y}/devices`,{body:{data:vr(s.data,a?.schemas?.deviceCreateReqSchema||mr)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=_r(t.data,e?.schemas?.deviceSchema||dr);return c.value[r.id]=r,C(r,t.data.controls),T(r,t.data.channels),r}delete c.value[s.data.id];let l=`Failed to create device.`;throw i&&(l=H(i,l)),new J(l,o.status)}finally{o.value.creating=o.value.creating.filter(e=>e!==s.data.id)}},te=async r=>{if(o.value.updating.includes(r.id))throw new Z(`Device is already being updated.`);if(!(r.id in c.value))throw new Z(`Failed to get device data to update.`);let i=pr.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new K(`Failed to edit device.`);let a=n(r.data.type),s=(a?.schemas?.deviceSchema||dr).safeParse({...c.value[r.id],...(0,$.omitBy)(r.data,$.isUndefined)});if(!s.success)throw t.error(`Schema validation failed with:`,s.error),new K(`Failed to edit device.`);if(o.value.updating.push(r.id),c.value[s.data.id]=s.data,s.data.draft)return o.value.updating=o.value.updating.filter(e=>e!==s.data.id),s.data;try{let{data:t,error:i,response:o}=await e.client.PATCH(`/${w}/${Y}/devices/{id}`,{params:{path:{id:r.id}},body:{data:yr(s.data,a?.schemas?.deviceUpdateReqSchema||hr)}});if(t!==void 0){let e=n(t.data.type),r=_r(t.data,e?.schemas?.deviceSchema||dr);return c.value[r.id]=r,r}await v({id:r.id});let l=`Failed to update device.`;throw i&&(l=H(i,l)),new J(l,o.status)}finally{o.value.updating=o.value.updating.filter(e=>e!==r.id)}},x=async r=>{if(o.value.updating.includes(r.id))throw new Z(`Device is already being saved.`);let i=c.value[r.id];if(!i)throw new Z(`Failed to get device data to save.`);let a=n(i.type),s=(a?.schemas?.deviceSchema||dr).safeParse(i);if(!s.success)throw t.error(`Schema validation failed with:`,s.error),new K(`Failed to save device.`);o.value.updating.push(r.id);try{let{data:t,error:i,response:o}=await e.client.POST(`/${w}/${Y}/devices`,{body:{data:vr(s.data,a?.schemas?.deviceCreateReqSchema||mr)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=_r(t.data,e?.schemas?.deviceSchema||dr);return c.value[r.id]=r,C(r,t.data.controls),T(r,t.data.channels),r}let l=`Failed to create device.`;throw i&&(l=H(i,l)),new J(l,o.status)}finally{o.value.updating=o.value.updating.filter(e=>e!==r.id)}},ne=async t=>{if(o.value.deleting.includes(t.id))throw new Z(`Device is already being removed.`);if(!Object.keys(c.value).includes(t.id))return!0;o.value.deleting.push(t.id);let n=c.value[t.id];if(delete c.value[t.id],n?.draft)o.value.deleting=o.value.deleting.filter(e=>e!==t.id);else try{let{error:n,response:r}=await e.client.DELETE(`/${w}/${Y}/devices/{id}`,{params:{path:{id:t.id}}});if(r.status===204){a.getStore(jt).unset({deviceId:t.id});let e=a.getStore(Pt),n=a.getStore(Ft),r=a.getStore(Mt);return e.findForDevice(t.id).forEach(e=>{n.unset({channelId:e.id}),r.unset({channelId:e.id})}),e.unset({deviceId:t.id}),!0}await v({id:t.id});let i=`Remove account failed.`;throw n&&(i=H(n,i)),new J(i,r.status)}finally{o.value.deleting=o.value.deleting.filter(e=>e!==t.id)}return!0},S=async t=>{if(!c.value[t.id])throw new Z(`Device [${t.id}] not found.`);o.value.updating.push(t.id);try{let{response:n}=await e.client.POST(`/${w}/${Y}/devices/{id}/zones/{zoneId}`,{params:{path:{id:t.id,zoneId:t.zoneId}}});if(!n.ok)throw new J(`Failed to add device to zone.`,n.status);return await v({id:t.id})}finally{o.value.updating=o.value.updating.filter(e=>e!==t.id)}},re=async t=>{if(!c.value[t.id])throw new Z(`Device [${t.id}] not found.`);o.value.updating.push(t.id);try{let{response:n}=await e.client.DELETE(`/${w}/${Y}/devices/{id}/zones/{zoneId}`,{params:{path:{id:t.id,zoneId:t.zoneId}}});if(!n.ok)throw new J(`Failed to remove device from zone.`,n.status);return await v({id:t.id})}finally{o.value.updating=o.value.updating.filter(e=>e!==t.id)}},C=(e,t)=>{let n=a.getStore(jt);t.forEach(e=>{n.set({id:e.id,data:or(e)})}),n.firstLoad.push(e.id)},T=(e,t)=>{let n=a.getStore(Pt),o=a.getStore(Ft),s=a.getStore(Mt);t.forEach(e=>{let t=r(e.type);n.set({id:e.id,data:Xn(e,t?.schemas?.channelSchema||Wn)}),e.controls.forEach(e=>{o.set({id:e.id,data:On(e)})}),o.firstLoad.push(e.id),e.properties.forEach(e=>{let t=i(e.type);s.set({id:e.id,data:Rn(e,t?.schemas?.channelPropertySchema||Q)})}),s.firstLoad.push(e.id)}),n.firstLoad.push(e.id)};return{semaphore:o,firstLoad:s,data:c,firstLoadFinished:l,getting:u,fetching:d,findAll:f,findById:p,onEvent:ee,set:g,unset:_,get:v,fetch:y,add:b,edit:te,save:x,remove:ne,addZone:S,removeZone:re}}),Sr=e=>xr(e),Cr=I({type:F(tt),severity:F(dt),channelCategory:F(ce).optional(),channelId:G.nullable().optional(),propertyCategory:F(qe).optional(),propertyId:G.nullable().optional(),message:B().trim().nonempty(),expected:B().nullable().optional(),actual:B().nullable().optional()}),wr=I({deviceId:G,deviceIdentifier:B().nullable().optional(),deviceName:B().trim().nonempty(),deviceCategory:F(Oe),pluginType:B().trim().nonempty(),isValid:k(),issues:N(Cr)}),Tr=I({summary:I({totalDevices:P().int().nonnegative(),validDevices:P().int().nonnegative(),invalidDevices:P().int().nonnegative(),totalIssues:P().int().nonnegative(),errorCount:P().int().nonnegative(),warningCount:P().int().nonnegative()}),devices:N(wr)});I({fetching:I({items:k().default(!1),item:N(G)})});var Er=I({type:F(tt),severity:F(dt),channel_category:F(ce).optional(),channel_id:B().uuid().nullable().optional(),property_category:F(qe).optional(),property_id:B().uuid().nullable().optional(),message:B(),expected:B().nullable().optional(),actual:B().nullable().optional()}),Dr=I({device_id:B().uuid(),device_identifier:B().nullable().optional(),device_name:B(),device_category:F(Oe),plugin_type:B(),is_valid:k(),issues:N(Er)});I({summary:I({total_devices:P(),valid_devices:P(),invalid_devices:P(),total_issues:P(),error_count:P(),warning_count:P()}),devices:N(Dr)});var Or=e=>{let t=Tr.safeParse(Ze(e));if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate received devices validation data.`);return t.data},kr=e=>{let t=wr.safeParse(Ze(e));if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new K(`Failed to validate received device validation result data.`);return t.data},Ar={fetching:{items:!1,item:[]}},jr=e=>{let t=0,n=0;for(let r of e)for(let e of r.issues)e.severity===`error`?t++:n++;return{totalDevices:e.length,validDevices:e.filter(e=>e.isValid).length,invalidDevices:e.filter(e=>!e.isValid).length,totalIssues:t+n,errorCount:t,warningCount:n}},Mr=Re(`devices_module-devices_validation`,()=>{let e=Ct(),t=E(Ar),n=E(!1),r=E(null),i=null,a={};return{semaphore:t,firstLoad:n,data:r,firstLoadFinished:()=>n.value,fetching:()=>t.value.fetching.items,getting:e=>t.value.fetching.item.includes(e),findAll:()=>r.value?.devices??[],findById:e=>r.value===null?null:r.value.devices.find(t=>t.deviceId===e)??null,fetch:async()=>{if(i)return i;let a=(async()=>{if(t.value.fetching.items)throw new J(`Already fetching validation.`);t.value.fetching.items=!0;try{let{data:t,error:i,response:a}=await e.client.GET(`/${w}/${Y}/devices/validation`);if(t!==void 0){let e=Or(t.data);return r.value=e,n.value=!0,e}let o=`Failed to fetch devices validation.`;throw i&&(o=H(i,o)),new J(o,a.status)}finally{t.value.fetching.items=!1}})();i=a;try{return await a}finally{i=null}},get:async n=>{let i=a[n.id];if(i)return i;let o=(async()=>{if(t.value.fetching.item.includes(n.id))throw new J(`Already fetching device validation.`);t.value.fetching.item.push(n.id);try{let{data:t,error:i,response:a}=await e.client.GET(`/${w}/${Y}/devices/{id}/validation`,{params:{path:{id:n.id}}});if(t!==void 0){let e=kr(t.data);if(r.value!==null){let t=r.value.devices.findIndex(t=>t.deviceId===e.deviceId),n;t>=0?(n=[...r.value.devices],n[t]=e):n=[...r.value.devices,e],r.value={summary:jr(n),devices:n}}else{let t=[e];r.value={summary:jr(t),devices:t}}return e}let o=`Failed to fetch device validation.`;throw i&&(o=H(i,o)),new J(o,a.status)}finally{t.value.fetching.item=t.value.fetching.item.filter(e=>e!==n.id)}})();a[n.id]=o;try{return await o}finally{delete a[n.id]}},clear:()=>{r.value=null,n.value=!1}}}),Nr=e=>Mr(e),Pr=Symbol(`FB-Module-Devices`),Fr={install:(e,t)=>{let n=je(e),r=we(e),i=me(e),a=be(e);for(let[e,n]of Object.entries(Sn)){let r=(0,$.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=Sr(t.store);e.provide(At,o),n.addStore(At,o);let s=ur(t.store);e.provide(jt,s),n.addStore(jt,s);let c=tr(t.store);e.provide(Pt,c),n.addStore(Pt,c);let l=Mn(t.store);e.provide(Ft,l),n.addStore(Ft,l);let u=Un(t.store);e.provide(Mt,u),n.addStore(Mt,u);let d=Nr(t.store);e.provide(Nt,d),n.addStore(Nt,d),a.addModule(Pr,{type:nn,name:`Devices`,description:`Manage your devices, channels, properties, and controls in one place.`,elements:[]}),t.router.getRoutes().find(e=>e.name===te.ROOT)&&Cn.forEach(e=>{t.router.addRoute(te.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`DevicesModule.`)&&!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case X.DEVICE_CREATED:case X.DEVICE_UPDATED:o.onEvent({id:e.payload.id,type:String((0,$.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case X.DEVICE_DELETED:o.unset({id:e.payload.id});break;case X.DEVICE_CONTROL_CREATED:s.onEvent({id:e.payload.id,data:e.payload});break;case X.DEVICE_CONTROL_DELETED:s.unset({id:e.payload.id});break;case X.CHANNEL_CREATED:case X.CHANNEL_UPDATED:c.onEvent({id:e.payload.id,type:String((0,$.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case X.CHANNEL_DELETED:c.unset({id:e.payload.id});break;case X.CHANNEL_CONTROL_CREATED:l.onEvent({id:e.payload.id,data:e.payload});break;case X.CHANNEL_CONTROL_DELETED:l.unset({id:e.payload.id});break;case X.CHANNEL_PROPERTY_CREATED:case X.CHANNEL_PROPERTY_UPDATED:case X.CHANNEL_PROPERTY_VALUE_SET:u.onEvent({id:e.payload.id,type:String((0,$.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case X.CHANNEL_PROPERTY_DELETED:u.unset({id:e.payload.id});break;case X.CHANNEL_PROPERTY_SET:u.onEvent({id:e.payload.id,type:String((0,$.get)(e.payload,`type`,`unknown`)),data:e.payload});break;default:i.warn(`Unhandled devices module event:`,e.event)}})}};I({reqPerMin:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))})}),I({clientsNow:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))})}),I({cpuLoad1m:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:I({value:P().nullable(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:I({value:P().nullable(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))})}),I({registeredPages:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))})}),I({registeredDevices:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:I({value:P(),lastUpdated:j([B().datetime({offset:!0}),A()]).transform(e=>e instanceof Date?e:new Date(e))})});var Ir=`stats`,Lr=`stats-module`,Rr=`StatsModule.`,zr=function(e){return e.STATS_INFO=`StatsModule.Stats.Info`,e}({}),Br={STATS:`stats_module-module`},Vr=300*1e3,Hr=Symbol(`FB-Module-Stats-Stats`),Ur=class extends Error{exception;constructor(e,t=null){super(e),this.name=`StatsException`,this.exception=t}},Wr=class extends Ur{code;constructor(e,t=null,n=null){super(e,n),this.name=`StatsApiException`,this.code=t}},Gr=class extends Ur{constructor(e,t=null){super(e,t),this.name=`StatsValidationException`}},Kr={class:`flex flex-row items-center justify-between`},qr={key:0},Jr={key:1},Yr={key:2,class:`max-h-[350px] overflow-auto bg-[var(--el-fill-color-light)]`},Xr={class:`truncate`},Zr={key:0,class:`text-gray-500`},Qr={class:`ml-1`},$r=l({name:`ApplicationLogs`,__name:`application-logs`,props:{systemLogs:{},filters:{},filtersActive:{type:Boolean},loading:{type:Boolean,default:!1}},emits:[`refresh`,`reset`,`detail`],setup(r,{emit:i}){let a=r,o=i,{t:c}=_(),l=Ce(a,`filters`,o),u=[R.silent,R.fatal,R.error,R.warn,R.log,R.info,R.success,R.fail,R.debug],d=e=>ye(new Date(e)),f=e=>new Date(e).toISOString(),ee=e=>[R.fatal,R.error,R.fail].includes(e)?{type:`danger`,effect:`light`}:[R.warn].includes(e)?{type:`warning`,effect:`light`}:[R.success,R.info,R.log].includes(e)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`};return(i,g)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:s(()=>[b(`div`,Kr,[h(x(p(c)(`statsModule.headings.logs`))+` `,1),b(`div`,null,[O(p(wt),{modelValue:p(l).levels,"onUpdate:modelValue":g[0]||=e=>p(l).levels=e,size:`small`,class:`mr-1 w-[180px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``},{default:s(()=>[(t(),D(S,null,n(u,e=>O(p(ze),{key:e,label:p(c)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),O(p(y),{size:`small`,class:`px-2! ml-1!`,onClick:g[1]||=e=>o(`refresh`)},{icon:s(()=>[O(p(T),{icon:`mdi:refresh`})]),_:1}),O(p(y),{size:`small`,class:`px-2! ml-1!`,onClick:g[2]||=e=>o(`detail`)},{icon:s(()=>[O(p(T),{icon:`mdi:console`})]),_:1})])])]),default:s(()=>[e((t(),D(`div`,null,[r.filtersActive&&r.systemLogs.length===0&&!a.loading?(t(),D(`div`,qr,[O(p(re),{class:`h-full w-full`},{icon:s(()=>[O(p(oe),{size:80},{primary:s(()=>[O(p(T),{icon:`mdi:console`})]),secondary:s(()=>[O(p(T),{icon:`mdi:filter-multiple`})]),_:1})]),title:s(()=>[O(p(Fe),{class:`block`},{default:s(()=>[h(x(p(c)(`statsModule.texts.noFilteredLogs`)),1)]),_:1}),O(p(y),{type:`primary`,plain:``,class:`mt-4`,onClick:g[3]||=e=>o(`reset`)},{icon:s(()=>[O(p(T),{icon:`mdi:filter-off`})]),default:s(()=>[h(` `+x(p(c)(`statsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):r.systemLogs.length===0&&!a.loading?(t(),D(`div`,Jr,[O(p(re),{class:`h-full w-full`},{icon:s(()=>[O(p(oe),{size:80},{primary:s(()=>[O(p(T),{icon:`mdi:console`})]),secondary:s(()=>[O(p(T),{icon:`mdi:information`})]),_:1})]),title:s(()=>[h(x(p(c)(`statsModule.texts.noLogs`)),1)]),_:1})])):(t(),D(`div`,Yr,[(t(!0),D(S,null,n(r.systemLogs,(e,n)=>(t(),D(`div`,{key:n,class:`grid grid-cols-[110px_60px_1fr] gap-x-4 text-xs b-b b-b-solid last:b-b-none mb-1 last:mb-0 px-2 py-1 items-center`},[O(p(Te),{content:f(e.ts),placement:`top-start`},{default:s(()=>[h(x(d(e.ts)),1)]),_:2},1032,[`content`]),O(p(We),ne({ref_for:!0},ee(e.type),{size:`small`}),{default:s(()=>[h(x(e.type),1)]),_:2},1040),b(`div`,Xr,[e.tag?(t(),D(`span`,Zr,` [`+x(e.tag)+`] `,1)):m(``,!0),b(`span`,Qr,x(e.message),1)])]))),128))]))])),[[p(_e),r.loading]])]),_:1}))}}),ei={class:`grid grid-cols-3 gap-2`},ti={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},ni={class:`font-bold text-lg mt-1`},ri={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},ii={class:`font-bold text-lg mt-1`},ai={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},oi={class:`font-bold text-lg mt-1 flex flex-row items-center`},si=l({name:`ApplicationOverview`,__name:`application-overview`,props:{apiModuleSection:{},websocketModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let{t:n}=_(),{connected:r}=mt(),i=E(`0.1.0-alpha.5`);return(c,l)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(n)(`statsModule.headings.applicationOverview`)),1)]),default:s(()=>[b(`div`,ei,[b(`div`,null,[b(`div`,ti,x(p(n)(`statsModule.fields.applicationOverview.version.title`)),1),b(`div`,ni,x(i.value),1)]),b(`div`,null,[b(`div`,ri,[O(p(Te),{content:p(n)(`statsModule.fields.applicationOverview.apip95.tooltip`),placement:`top-start`},{default:s(()=>[O(p(a),{class:`mr-2`,size:14},{default:s(()=>[O(p(T),{icon:`mdi:info-circle-outline`})]),_:1})]),_:1},8,[`content`]),h(` `+x(p(n)(`statsModule.fields.applicationOverview.apip95.title`)),1)]),b(`div`,ii,x(e.apiModuleSection?.p95Ms5m.value??0)+` ms`,1)]),b(`div`,null,[b(`div`,ai,x(p(n)(`statsModule.fields.applicationOverview.webSocket.title`)),1),b(`div`,oi,[b(`span`,{class:o({"color-[var(--el-color-success)]":p(r),"color-[var(--el-color-warning)]":!p(r)})},x(p(r)?p(n)(`statsModule.fields.applicationOverview.webSocket.state.connected`):p(n)(`statsModule.fields.applicationOverview.webSocket.state.disconnected`)),3)])])])]),_:1}))}}),ci={class:`flex flex-row items-center justify-between`},li=l({name:`QuickLinks`,__name:`quick-links`,setup(e){let n=ee(),{t:r}=_(),i=()=>{n.push({name:De.SPACES})},a=()=>{n.push({name:Ot.PAGES})},o=()=>{n.push({name:q.DEVICES})},c=()=>{n.push({name:fe.CONFIG})},l=()=>{window.open(`https://smart-panel.fastybird.com/docs`,`_blank`,`noopener,noreferrer`)};return(e,n)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(r)(`statsModule.headings.quickLinks`)),1)]),default:s(()=>[b(`div`,ci,[O(p(y),{class:`px-4!`,onClick:i},{default:s(()=>[h(x(p(r)(`statsModule.buttons.spaces.title`)),1)]),_:1}),O(p(y),{class:`px-4!`,onClick:a},{default:s(()=>[h(x(p(r)(`statsModule.buttons.pages.title`)),1)]),_:1}),O(p(y),{class:`px-4!`,onClick:o},{default:s(()=>[h(x(p(r)(`statsModule.buttons.devices.title`)),1)]),_:1}),O(p(y),{class:`px-4!`,onClick:c},{default:s(()=>[h(x(p(r)(`statsModule.buttons.config.title`)),1)]),_:1}),O(p(y),{class:`px-4!`,onClick:l},{default:s(()=>[h(x(p(r)(`statsModule.buttons.docs.title`)),1)]),_:1})])]),_:1}))}}),ui={class:`flex flex-col gap-2`},di={class:`font-bold`},fi={class:`font-mono text-xs`},pi={class:`block overflow-hidden text-ellipsis whitespace-nowrap pr-4`},mi=l({name:`SystemInformation`,__name:`system-information`,props:{systemInfo:{},configApp:{},loading:{type:Boolean,default:!1}},setup(n){let r=n,{t:i}=_(),{success:a}=Le(),o=()=>{navigator.clipboard.writeText(r.configApp?.path||``),a(`Config path copied to clipboard!`)};return(r,a)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:s(()=>[h(x(p(i)(`statsModule.headings.systemInformation`)),1)]),default:s(()=>[e((t(),v(p(Ue),{column:1,size:`small`,border:``},{default:s(()=>[O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.timezone.title`)),1)]),default:s(()=>[h(` `+x(n.systemInfo?.os.timezone),1)]),_:1}),O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.operatingSystem.title`)),1)]),default:s(()=>[h(` `+x(n.systemInfo?.os.distro)+` `+x(n.systemInfo?.os.platform)+` `+x(n.systemInfo?.os.release),1)]),_:1}),O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.hostname.title`)),1)]),default:s(()=>[h(` `+x(n.systemInfo?.defaultNetwork.hostname),1)]),_:1}),O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.ipv4.title`))+` (`+x(n.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:s(()=>[h(` `+x(n.systemInfo?.defaultNetwork.ip4),1)]),_:1}),O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.ipv6.title`))+` (`+x(n.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:s(()=>[h(` `+x(n.systemInfo?.defaultNetwork.ip6),1)]),_:1}),O(p(ct),{"label-width":150,"class-name":`border-l-none! border-t-none! border-b-none! config-path-cell`,"label-class-name":`border-l-none! border-t-none! border-b-none! whitespace-nowrap!`},{label:s(()=>[h(x(p(i)(`statsModule.fields.systemInformation.configPath.title`)),1)]),default:s(()=>[O(p(Te),{placement:`top-start`},{content:s(()=>[b(`div`,ui,[b(`div`,di,x(p(i)(`statsModule.fields.systemInformation.configPath.tooltip`)),1),b(`span`,fi,x(n.configApp?.path),1),O(p(y),{size:`small`,type:`primary`,onClick:ae(o,[`stop`])},{default:s(()=>[h(x(p(i)(`statsModule.buttons.copy.title`)),1)]),_:1})])]),default:s(()=>[b(`span`,pi,x(n.configApp?.path),1)]),_:1})]),_:1})]),_:1})),[[p(_e),n.loading]])]),_:1}))}}),hi={class:`flex flex-col gap-2`},gi={class:`font-bold text-2xl`},_i={class:`color-[var(--el-text-color-secondary)]`},vi=l({name:`StatsCpu`,__name:`stats-cpu`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=C(()=>{let e=n.systemModuleSection?.cpuLoad1m.lastUpdated?n.systemModuleSection?.cpuLoad1m.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0}),o=C(()=>Number(n.systemModuleSection?.cpuLoad1m.value??0));return(n,c)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(r)(`statsModule.headings.cpu`)),1)]),default:s(()=>[b(`div`,hi,[b(`div`,gi,[e.systemModuleSection?.cpuLoad1m.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.systemModuleSection?.cpuLoad1m.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:18},{default:s(()=>[i.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),h(` `+x(p(et)(e.systemModuleSection?.cpuLoad1m.value)),1)]),b(`div`,_i,x(p(r)(`statsModule.fields.cpu.temperature.title`,{temperature:e.systemInfo?.temperature.cpu??p(r)(`application.value.notAvailable`),unit:`°C`})),1),O(p(ut),{percentage:o.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),yi={class:`flex flex-row items-center`},bi={class:`color-[var(--el-text-color-secondary)]`},xi={class:`text-3xl mt-1 flex flex-row items-center`},Si=l({name:`StatsDashboard`,__name:`stats-dashboard`,props:{dashboardModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=C(()=>{let e=n.dashboardModuleSection?.registeredPages.lastUpdated?n.dashboardModuleSection?.registeredPages.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0});return(n,o)=>(t(),D(S,null,[b(`div`,yi,[e.dashboardModuleSection?.registeredPages.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.dashboardModuleSection?.registeredPages.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:12,class:`mr-1`},{default:s(()=>[i.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),b(`span`,bi,x(p(r)(`statsModule.headings.dashboard`)),1)]),b(`div`,xi,x(e.dashboardModuleSection?.registeredPages.value??0),1)],64))}}),Ci={class:`flex flex-row items-center`},wi={class:`color-[var(--el-text-color-secondary)]`},Ti={class:`text-3xl mt-1 flex flex-row items-center`},Ei=l({name:`StatsDevices`,__name:`stats-devices`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=C(()=>{let e=n.devicesModuleSection?.onlineNow.lastUpdated?n.devicesModuleSection?.onlineNow.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0});return(n,o)=>(t(),D(S,null,[b(`div`,Ci,[e.devicesModuleSection?.onlineNow.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.devicesModuleSection?.onlineNow.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:12,class:`mr-1`},{default:s(()=>[i.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),b(`span`,wi,x(p(r)(`statsModule.headings.devices`)),1)]),b(`div`,Ti,x(p(st)(e.devicesModuleSection?.onlineNow.value??0,{maximumFractionDigits:0})),1)],64))}}),Di={class:`flex flex-row items-center`},Oi={class:`color-[var(--el-text-color-secondary)]`},ki={class:`text-3xl mt-1 flex flex-row items-center`},Ai=l({name:`StatsDevicesCommunication`,__name:`stats-devices-communication`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=C(()=>{let e=n.devicesModuleSection?.updatesToday.lastUpdated?n.devicesModuleSection?.updatesToday.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0});return(n,o)=>(t(),D(S,null,[b(`div`,Di,[e.devicesModuleSection?.updatesToday.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.devicesModuleSection?.updatesToday.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:12,class:`mr-1`},{default:s(()=>[i.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),b(`span`,Oi,x(p(r)(`statsModule.headings.devicesCommunication`)),1)]),b(`div`,ki,x(p(st)(e.devicesModuleSection?.updatesToday.value??0,{maximumFractionDigits:0})),1)],64))}}),ji={class:`flex flex-col gap-2`},Mi={class:`font-bold text-2xl`},Ni={class:`color-[var(--el-text-color-secondary)]`},Pi=l({name:`StatsMemory`,__name:`stats-memory`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=C(()=>{let e=n.systemModuleSection?.memUsedPct.lastUpdated?n.systemModuleSection?.memUsedPct.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0}),o=C(()=>Number(n.systemModuleSection?.memUsedPct.value??0));return(n,c)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(r)(`statsModule.headings.memory`)),1)]),default:s(()=>[b(`div`,ji,[b(`div`,Mi,[e.systemModuleSection?.memUsedPct.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.systemModuleSection?.memUsedPct.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:18},{default:s(()=>[i.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),h(` `+x(p(st)((e.systemInfo?.memory.used??0)/1024/1024,{maximumFractionDigits:0}))+` MB `,1)]),b(`div`,Ni,x(p(r)(`statsModule.fields.memory.total.title`,{total:p(st)((e.systemInfo?.memory.total??0)/1024/1024,{maximumFractionDigits:0}),unit:`MB`})),1),O(p(ut),{percentage:o.value,"stroke-width":10,"show-text":!1,color:[{color:`var(--el-color-success)`,percentage:60},{color:`var(--el-color-warning)`,percentage:85},{color:`var(--el-color-error)`,percentage:100}],class:`mt-2`},null,8,[`percentage`])])]),_:1}))}}),Fi={class:`flex flex-row items-center`},Ii={class:`color-[var(--el-text-color-secondary)]`},Li={class:`text-3xl mt-1 flex flex-row items-center`},Ri=l({name:`StatsSpaces`,__name:`stats-spaces`,props:{loading:{type:Boolean,default:!1}},setup(e){let{t:n}=_(),{spaces:r,fetchSpaces:a}=kt(),o=C(()=>r.value.filter(e=>!e.draft)),s=C(()=>o.value.length);return i(()=>{a()}),(e,r)=>(t(),D(S,null,[b(`div`,Fi,[b(`span`,Ii,x(p(n)(`statsModule.headings.spaces`)),1)]),b(`div`,Li,x(s.value),1)],64))}}),zi={class:`flex flex-col gap-2`},Bi={class:`font-bold text-2xl`},Vi={class:`color-[var(--el-text-color-secondary)]`},Hi=l({name:`StatsUptime`,__name:`stats-uptime`,props:{systemModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=_(),i=e=>{if(e==null)return`—`;let t=Math.max(0,Math.floor(e)),n=Math.floor(t/86400),r=Math.floor(t%86400/3600).toString().padStart(2,`0`),i=Math.floor(t%3600/60).toString().padStart(2,`0`),a=Math.floor(t%60).toString().padStart(2,`0`);return n?`${n}d ${r}:${i}:${a}`:`${r}:${i}:${a}`},o=C(()=>{let e=n.systemModuleSection?.systemUptimeSec.lastUpdated?n.systemModuleSection?.systemUptimeSec.lastUpdated.getTime():0;return e?Date.now()-e>Vr:!0});return(n,c)=>(t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(r)(`statsModule.headings.uptime`)),1)]),default:s(()=>[b(`div`,zi,[b(`div`,Bi,[e.systemModuleSection?.systemUptimeSec.lastUpdated?(t(),v(p(Te),{key:0,content:p(r)(`statsModule.texts.updated`,{time:p(He)(e.systemModuleSection?.systemUptimeSec.lastUpdated)}),placement:`top-start`},{default:s(()=>[O(p(a),{size:18},{default:s(()=>[o.value?(t(),v(p(T),{key:0,icon:`mdi:warning`})):(t(),v(p(T),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):m(``,!0),h(` `+x(i(e.systemModuleSection?.systemUptimeSec.value)),1)]),b(`div`,Vi,x(p(r)(`statsModule.fields.uptime.process.title`,{uptime:i(e.systemModuleSection?.processUptimeSec.value)})),1)])]),_:1}))}}),Ui=()=>{let e=je().getStore(Hr),{data:t,semaphore:n}=_t(e);return{stats:C(()=>t.value),isLoading:C(()=>t.value===null?n.value.getting:!1),fetchStats:async()=>{await e.get()}}},Wi={menu:{title:`Systém`},meta:{system:{system:{title:`Systém`},systemInfo:{title:`Informace o systému`}},systemLogs:{list:{title:`Aplikační protokoly`},detail:{title:`Detail protokolu`}}},breadcrumbs:{system:{system:`systém`,systemInfo:`informace`},systemLogs:{list:`aplikační protokoly`,detail:`detail protokolu`}},headings:{system:{system:`Systém`,about:`O aplikaci`},update:{title:`Aktualizace softwaru`,confirmTitle:`Nainstalovat aktualizaci`},manage:{manageSystem:`Správa systému`,restart:`Restartovat`,powerOff:`Vypnout`,factoryReset:`Tovární reset`,poweredOff:`Vypnutí dokončeno`,rebooting:`Restartování`,systemLogs:`Aplikační protokoly`},systemLogs:{list:`Aplikační protokoly`,detail:`Informace o protokolu`,adjustFilters:`Filtrovat protokoly`},aboutLanguageSettings:`Jazyk a jednotky`,aboutSystemSettings:`Nastavení systému`,aboutHouseModeSettings:`Režim domu`},subHeadings:{system:`Informace o stavu systému smart panelu`,poweredOff:`Smart Panel byl úspěšně vypnut`,systemLogs:{list:`Náhled všech aplikačních protokolů`,detail:`Náhled podrobností záznamu protokolu`,edit:`Náhled podrobností záznamu protokolu`,adjustFilters:`Upravit filtry protokolů`}},messages:{config:{edited:`Konfigurace systému byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci systému`},manage:{confirmRestart:`Opravdu chcete restartovat zařízení? Tato akce dočasně přeruší funkčnost.`,confirmPowerOff:`Opravdu chcete vypnout zařízení? Bude nutné jej ručně znovu zapnout.`,confirmFactoryReset:`Opravdu chcete vymazat všechna data a obnovit zařízení do továrního nastavení? Tato akce je nevratná.`,confirmRestartGateway:`Opravdu chcete restartovat bránu? Připojené displeje dočasně ztratí konektivitu, dokud brána nebude zpět online.`,confirmPowerOffGateway:`Opravdu chcete vypnout bránu? Všechny připojené displeje ztratí konektivitu. Bránu bude nutné ručně znovu zapnout.`,confirmFactoryResetGateway:`Opravdu chcete provést tovární reset brány? Tím se vymažou všechna data brány a resetují se všechny připojené displeje. Tato akce je nevratná.`,waitingToBoot:`Čekání na spuštění panelu...`,panelBackOnline:`Smart Panel je zpět online.`,rebootTakesTooLong:`Restart trvá déle, než se očekávalo. Zkontrolujte prosím panel ručně.`,rebootFailed:`Nepodařilo se restartovat Smart Panel. Zkuste to znovu nebo zkontrolujte zařízení ručně.`,powerOffFailed:`Nepodařilo se vypnout Smart Panel. Zkuste to znovu nebo zkontrolujte zařízení ručně.`,factoryResetSuccess:`Všechna data byla vymazána. Začněme znovu — přihlaste se pro zahájení.`,factoryResetFailed:`Nepodařilo se provést tovární reset Smart Panelu. Zkuste to znovu nebo zkontrolujte zařízení ručně.`},misc:{requestError:`Něco se pokazilo, zkuste to prosím znovu později.`},update:{confirmInstall:`Opravdu chcete aktualizovat na verzi {version}?`,majorUpdateWarning:`Jedná se o aktualizaci hlavní verze na {version}. Hlavní aktualizace mohou obsahovat zásadní změny. Opravdu chcete pokračovat?`,confirmTitle:`Nainstalovat aktualizaci`,updateStarted:`Proces aktualizace byl zahájen. Systém se automaticky restartuje.`,updateComplete:`Aktualizace byla úspěšně dokončena!`,updateFailed:`Aktualizace selhala. Zkontrolujte prosím systémové protokoly pro podrobnosti.`,checkFailed:`Nepodařilo se zkontrolovat aktualizace. Zkuste to prosím znovu později.`,installFailed:`Nepodařilo se spustit aktualizaci. Zkuste to prosím znovu později.`}},texts:{system:{loadingSystemInfo:`Načítání systémových informací...`,about:`FastyBird Smart Panel je aplikace pro domácí automatizaci, která umožňuje bezproblémovou integraci s vašimi chytrými zařízeními a nabízí vylepšené ovládání a monitorování.`},manage:{rebootDevice:`Restartujte zařízení pro aplikaci změn nebo vyřešení problémů.`,rebootGateway:`Restartujte bránu pro aplikaci změn nebo vyřešení problémů. Připojené displeje dočasně ztratí konektivitu.`,powerOffDevice:`Kompletní vypnutí zařízení.`,powerOffGateway:`Kompletní vypnutí brány. Připojené displeje ztratí konektivitu.`,factoryResetDevice:`Obnovení zařízení do původního továrního nastavení.`,factoryResetGateway:`Vymazání všech dat brány a reset všech připojených displejů do továrního nastavení.`,rebootInProcess:`Smart Panel se restartuje...`,powerOffInProcess:`Smart Panel se vypíná...`,factoryResetInProcess:`Smart Panel se resetuje do továrního stavu...`,factoryResetWaiting:`Čekání na restart Smart Panelu po továrním resetu...`,factoryResetTimeout:`Tovární reset trvá déle, než se očekávalo. Zkontrolujte prosím zařízení ručně.`,poweredOff:`Můžete zavřít toto okno — není vyžadována žádná další akce.`,systemLogs:`Náhled a diagnostika aplikačních protokolů.`},update:{available:`Aktualizace k dispozici`,upToDate:`Váš systém je aktuální.`,checking:`Kontrola aktualizací...`,installing:`Instalace aktualizace...`,waitingForRestart:`Služba se restartuje, prosím čekejte...`,noVersionInfo:`Nelze získat informace o verzi.`},systemLogs:{loadingLogs:`Načítání aplikačních protokolů...`,noLogs:`Nebyly zaznamenány žádné aplikační protokoly.`,noFilteredLogs:`Nebyly nalezeny žádné aplikační protokoly odpovídající aktivním kritériím filtru`,noMessage:`Tento záznam protokolu je bez doplňující zprávy`,noMoreEntries:`Žádné další záznamy`},aboutLanguageSettings:`Nakonfigurujte jazyk rozhraní, časovou zónu, formát času a měrné jednotky pro Smart Panel. Tato nastavení ovlivňují, jak se v celém systému zobrazují data, časy, teploty a měření.`,aboutSystemSettings:`Spravujte celkovou konfiguraci protokolování systému. Vyberte, které úrovně závažnosti protokolů mají být monitorovány a zobrazeny v aplikačních protokolech.`,aboutHouseModeSettings:`Nastavte aktuální režim domu pro ovládání chování Smart Panelu a připojených zařízení. Režim Doma je pro běžný pobyt, režim Mimo domov pro případ, že nikdo není doma, a režim Noc pro dobu spánku.`},fields:{config:{language:{title:`Jazyk`,description:`Jazyk aplikace`,placeholder:`Vyberte jazyk`,values:{english:`Angličtina`,czech:`Čeština`,german:`Němčina`,spanish:`Španělština`,polish:`Polština`,slovak:`Slovenština`},validation:{required:`Jazyk je povinný`}},timezone:{title:`Časová zóna`,description:`Systémová časová zóna`,placeholder:`Vyberte časovou zónu`,validation:{required:`Časová zóna je povinná`}},timeFormat:{title:`Formát času`,description:`Formát zobrazení času`,placeholder:`Vyberte formát času`,values:{hour12:`12hodinový`,hour24:`24hodinový`},validation:{required:`Formát času je povinný`}},numberFormat:{title:`Formát čísel`,description:`Formát zobrazení čísel pro oddělovače tisíců a desetinných míst`,placeholder:`Vyberte formát čísel`,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í)`},validation:{required:`Formát čísel je povinný`}},temperatureUnit:{title:`Jednotka teploty`,description:`Jednotka zobrazení teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`Jednotka teploty je povinná`}},windSpeedUnit:{title:`Jednotka rychlosti větru`,description:`Jednotka zobrazení rychlosti větru`,placeholder:`Vyberte jednotku rychlosti větru`,values:{ms:`Metry za sekundu (m/s)`,kmh:`Kilometry za hodinu (km/h)`,mph:`Míle za hodinu (mph)`,knots:`Uzly (kn)`},validation:{required:`Jednotka rychlosti větru je povinná`}},pressureUnit:{title:`Jednotka tlaku`,description:`Jednotka zobrazení tlaku`,placeholder:`Vyberte jednotku tlaku`,values:{hpa:`Hektopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Palce rtuti (inHg)`,mmhg:`Milimetry rtuti (mmHg)`},validation:{required:`Jednotka tlaku je povinná`}},precipitationUnit:{title:`Jednotka srážek`,description:`Jednotka zobrazení srážek`,placeholder:`Vyberte jednotku srážek`,values:{mm:`Milimetry (mm)`,inches:`Palce (in)`},validation:{required:`Jednotka srážek je povinná`}},distanceUnit:{title:`Jednotka vzdálenosti`,description:`Jednotka zobrazení vzdálenosti`,placeholder:`Vyberte jednotku vzdálenosti`,values:{km:`Kilometry (km)`,miles:`Míle (mi)`,meters:`Metry (m)`,feet:`Stopy (ft)`},validation:{required:`Jednotka vzdálenosti je povinná`}},logLevels:{title:`Úrovně protokolování`,description:`Povolené úrovně protokolování`,placeholder:`Vyberte, které úrovně protokolů mají být monitorovány`,values:{silent:`Tichý`,verbose:`Podrobný`,debug:`Debug`,trace:`Trasování`,log:`Protokol`,info:`Info`,success:`Úspěch`,warn:`Varování`,error:`Chyba`,fail:`Selhání`,fatal:`Fatální`},validation:{required:`Musí být vybrána alespoň jedna úroveň protokolování`,min:`Musí být vybrána alespoň jedna úroveň protokolování`}},houseMode:{title:`Režim domu`,description:`Aktuální nastavení režimu domu`,placeholder:`Vyberte režim domu`,values:{home:`Doma`,away:`Mimo domov`,night:`Noc`},validation:{required:`Režim domu je povinný`}}},systemLogs:{search:{title:`Hledat`,placeholder:`Hledat v protokolech...`},timestamp:{title:`Časové razítko`},ingestedAt:{title:`Přijato v`},source:{title:`Zdroj`},level:{title:`Úroveň`},message:{title:`Zpráva`,noMessage:`Žádná zpráva`},tag:{title:`Značka`},user:{title:`Uživatel`},appVersion:{title:`Verze aplikace`},url:{title:`URL`},userAgent:{title:`User agent`},locale:{title:`Lokalizace`},args:{title:`Argumenty`},rawJson:{title:`Surový JSON`}}},filters:{systemLogs:{levels:{title:`Filtrovat podle úrovně protokolu`},sources:{title:`Filtrovat podle zdroje protokolu`},tag:{title:`Filtrovat podle značky`,placeholder:`Hledat podle značky...`}}},buttons:{about:{title:`O aplikaci`},manage:{title:`Správa systému`},resetFilters:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},reset:{title:`Reset`},edit:{title:`Upravit`},discard:{title:`Zahodit`},cancel:{title:`Zrušit`},close:{title:`Zavřít`},save:{title:`Uložit`},copyJson:{title:`Kopírovat JSON`},liveTail:{title:`Živý přenos`},paused:{title:`Pozastaveno`},loadMore:{title:`Načíst další`},update:{checkForUpdates:`Zkontrolovat aktualizace`,installUpdate:`Nainstalovat aktualizaci`}},labels:{update:{currentVersion:`Aktuální verze`,latestVersion:`Nejnovější verze`,lastChecked:`Naposledy zkontrolováno`,updateStatus:`Stav`,actions:`Akce`}},systemInfo:{cpuLoad:`Vytížení CPU`,memoryUsage:`Využití paměti`,cpuTemperature:`Teplota CPU`,gpuTemperature:`Teplota GPU`,osPlatform:`Platforma`,osDistro:`Distribuce`,osRelease:`Verze`,uptime:`Doba běhu systému`,networkInterface:`Rozhraní`,ip4Address:`IP adresa`,ip6Address:`IPv6 adresa`,macAddress:`MAC adresa`,undervoltage:`Zjištěno podpětí`,frequencyCapping:`Frekvence omezena`,throttling:`Aktivní omezování CPU`,softTempLimit:`Dosažen měkký teplotní limit`},states:{ok:`Vše v pořádku`,error:`Zjištěn problém`},levels:{silent:`Tichý`,fatal:`Fatální`,error:`Chyba`,warn:`Varování`,log:`Protokol`,info:`Info`,success:`Úspěch`,fail:`Selhání`,ready:`Připraven`,start:`Start`,box:`Box`,debug:`Debug`,trace:`Trasování`,verbose:`Podrobný`},sources:{admin:`Administrační aplikace`,display:`Aplikace displeje`,backend:`Backend aplikace`,other:`Ostatní`}},Gi={menu:{title:`System`},meta:{system:{system:{title:`System`},systemInfo:{title:`Systeminfo`}},systemLogs:{list:{title:`Anwendungsprotokolle`},detail:{title:`Protokolldetails`}}},breadcrumbs:{system:{system:`System`,systemInfo:`Info`},systemLogs:{list:`Anwendungsprotokolle`,detail:`Protokolldetails`}},headings:{system:{system:`System`,about:`Über die Anwendung`},update:{title:`Software-Updates`,confirmTitle:`Update installieren`},manage:{manageSystem:`System verwalten`,restart:`Neustart`,powerOff:`Ausschalten`,factoryReset:`Werkseinstellungen`,poweredOff:`Ausschalten abgeschlossen`,rebooting:`Neustart läuft`,systemLogs:`Anwendungsprotokolle`},systemLogs:{list:`Anwendungsprotokolle`,detail:`Protokollinfo`,adjustFilters:`Protokolle filtern`},aboutLanguageSettings:`Sprache & Einheiten`,aboutSystemSettings:`Systemeinstellungen`,aboutHouseModeSettings:`Hausmodus`},subHeadings:{system:`Smart Panel Systemstatus-Informationen`,poweredOff:`Das Smart Panel wurde erfolgreich ausgeschaltet`,systemLogs:{list:`Alle Anwendungsprotokolle anzeigen`,detail:`Protokolleintrag-Details anzeigen`,edit:`Protokolleintrag-Details anzeigen`,adjustFilters:`Protokollfilter anpassen`}},messages:{config:{edited:`Systemkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Systemkonfiguration fehlgeschlagen`},manage:{confirmRestart:`Sind Sie sicher, dass Sie das Gerät neu starten möchten? Diese Aktion unterbricht vorübergehend die Funktionalität.`,confirmPowerOff:`Sind Sie sicher, dass Sie das Gerät ausschalten möchten? Es muss manuell wieder eingeschaltet werden.`,confirmFactoryReset:`Sind Sie sicher, dass Sie alle Daten löschen und das Gerät auf die Werkseinstellungen zurücksetzen möchten? Diese Aktion ist irreversibel.`,confirmRestartGateway:`Sind Sie sicher, dass Sie das Gateway neu starten möchten? Verbundene Displays verlieren vorübergehend die Verbindung, bis das Gateway wieder online ist.`,confirmPowerOffGateway:`Sind Sie sicher, dass Sie das Gateway ausschalten möchten? Alle verbundenen Displays verlieren die Verbindung. Das Gateway muss manuell wieder eingeschaltet werden.`,confirmFactoryResetGateway:`Sind Sie sicher, dass Sie das Gateway auf Werkseinstellungen zurücksetzen möchten? Alle Gateway-Daten werden gelöscht und alle verbundenen Displays zurückgesetzt. Diese Aktion ist irreversibel.`,waitingToBoot:`Warten auf den Start des Panels...`,panelBackOnline:`Smart Panel ist wieder online.`,rebootTakesTooLong:`Der Neustart dauert länger als erwartet. Bitte überprüfen Sie das Panel manuell.`,rebootFailed:`Neustart des Smart Panels fehlgeschlagen. Bitte versuchen Sie es erneut oder überprüfen Sie das Gerät manuell.`,powerOffFailed:`Ausschalten des Smart Panels fehlgeschlagen. Bitte versuchen Sie es erneut oder überprüfen Sie das Gerät manuell.`,factoryResetSuccess:`Alle Daten wurden gelöscht. Beginnen wir von vorn — melden Sie sich an, um zu starten.`,factoryResetFailed:`Werksreset des Smart Panels fehlgeschlagen. Bitte versuchen Sie es erneut oder überprüfen Sie das Gerät manuell.`},misc:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`},update:{confirmInstall:`Sind Sie sicher, dass Sie auf Version {version} aktualisieren möchten?`,majorUpdateWarning:`Dies ist ein Hauptversions-Update auf {version}. Hauptupdates können nicht abwärtskompatible Änderungen enthalten. Sind Sie sicher, dass Sie fortfahren möchten?`,confirmTitle:`Update installieren`,updateStarted:`Der Aktualisierungsprozess wurde gestartet. Das System wird automatisch neu gestartet.`,updateComplete:`Aktualisierung erfolgreich abgeschlossen!`,updateFailed:`Aktualisierung fehlgeschlagen. Bitte überprüfen Sie die Systemprotokolle für Details.`,checkFailed:`Prüfung auf Updates fehlgeschlagen. Bitte versuchen Sie es später erneut.`,installFailed:`Start der Aktualisierung fehlgeschlagen. Bitte versuchen Sie es später erneut.`}},texts:{system:{loadingSystemInfo:`Systeminformationen werden geladen...`,about:`FastyBird Smart Panel ist eine Hausautomatisierungs-App, die nahtlose Integration mit Ihren Smart-Geräten ermöglicht und erweiterte Steuerungs- und Überwachungsmöglichkeiten bietet.`},manage:{rebootDevice:`Starten Sie das Gerät neu, um Änderungen anzuwenden oder Probleme zu beheben.`,rebootGateway:`Starten Sie das Gateway neu, um Änderungen anzuwenden oder Probleme zu beheben. Verbundene Displays verlieren vorübergehend die Verbindung.`,powerOffDevice:`Schalten Sie das Gerät vollständig aus.`,powerOffGateway:`Schalten Sie das Gateway vollständig aus. Verbundene Displays verlieren die Verbindung.`,factoryResetDevice:`Setzen Sie das Gerät auf die ursprünglichen Werkseinstellungen zurück.`,factoryResetGateway:`Löschen Sie alle Gateway-Daten und setzen Sie alle verbundenen Displays auf Werkseinstellungen zurück.`,rebootInProcess:`Smart Panel wird neu gestartet...`,powerOffInProcess:`Smart Panel wird ausgeschaltet...`,factoryResetInProcess:`Smart Panel wird auf Werkseinstellungen zurückgesetzt...`,factoryResetWaiting:`Warten auf den Neustart des Smart Panels nach dem Werksreset...`,factoryResetTimeout:`Der Werksreset dauert länger als erwartet. Bitte überprüfen Sie das Gerät manuell.`,poweredOff:`Sie können dieses Fenster schließen — keine weitere Aktion erforderlich.`,systemLogs:`Anwendungsprotokolle anzeigen und diagnostizieren.`},update:{available:`Update verfügbar`,upToDate:`Ihr System ist auf dem neuesten Stand.`,checking:`Suche nach Updates...`,installing:`Update wird installiert...`,waitingForRestart:`Dienst wird neu gestartet, bitte warten...`,noVersionInfo:`Versionsinformationen konnten nicht abgerufen werden.`},systemLogs:{loadingLogs:`Anwendungsprotokolle werden geladen...`,noLogs:`Es wurden keine Anwendungsprotokolle aufgezeichnet.`,noFilteredLogs:`Keine Anwendungsprotokolle gefunden, die den aktiven Filterkriterien entsprechen`,noMessage:`Dieser Protokolleintrag hat keine zusätzliche Nachricht`,noMoreEntries:`Keine weiteren Protokolleinträge`},aboutLanguageSettings:`Konfigurieren Sie die Oberflächensprache, Zeitzone, das Zeitformat und die Maßeinheiten für das Smart Panel. Diese Einstellungen beeinflussen, wie Datum, Uhrzeit, Temperaturen und Messungen im gesamten System angezeigt werden.`,aboutSystemSettings:`Verwalten Sie die systemweite Protokollierungskonfiguration. Wählen Sie, welche Protokollschweregrade überwacht und in den Anwendungsprotokollen angezeigt werden sollen.`,aboutHouseModeSettings:`Legen Sie den aktuellen Hausmodus fest, um zu steuern, wie sich das Smart Panel und die verbundenen Geräte verhalten. Der Zuhause-Modus ist für normale Anwesenheit, der Abwesend-Modus für wenn niemand zu Hause ist und der Nacht-Modus für die Schlafenszeit.`},fields:{config:{language:{title:`Sprache`,description:`Anwendungssprache`,placeholder:`Sprache auswählen`,values:{english:`Englisch`,czech:`Tschechisch`,german:`Deutsch`,spanish:`Spanisch`,polish:`Polnisch`,slovak:`Slowakisch`},validation:{required:`Sprache ist erforderlich`}},timezone:{title:`Zeitzone`,description:`Systemzeitzone`,placeholder:`Zeitzone auswählen`,validation:{required:`Zeitzone ist erforderlich`}},timeFormat:{title:`Zeitformat`,description:`Zeitanzeigeformat`,placeholder:`Zeitformat auswählen`,values:{hour12:`12-Stunden`,hour24:`24-Stunden`},validation:{required:`Zeitformat ist erforderlich`}},numberFormat:{title:`Zahlenformat`,description:`Zahlenanzeigeformat für Tausender- und Dezimaltrennzeichen`,placeholder:`Zahlenformat auswählen`,values:{commaDot:`1,234.56 (Komma / Punkt)`,dotComma:`1.234,56 (Punkt / Komma)`,spaceComma:`1 234,56 (Leerzeichen / Komma)`,none:`1234.56 (keine Gruppierung)`},validation:{required:`Zahlenformat ist erforderlich`}},temperatureUnit:{title:`Temperatureinheit`,description:`Temperaturanzeigeeinheit`,placeholder:`Temperatureinheit auswählen`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`Temperatureinheit ist erforderlich`}},windSpeedUnit:{title:`Windgeschwindigkeitseinheit`,description:`Windgeschwindigkeitsanzeigeeinheit`,placeholder:`Windgeschwindigkeitseinheit auswählen`,values:{ms:`Meter pro Sekunde (m/s)`,kmh:`Kilometer pro Stunde (km/h)`,mph:`Meilen pro Stunde (mph)`,knots:`Knoten (kn)`},validation:{required:`Windgeschwindigkeitseinheit ist erforderlich`}},pressureUnit:{title:`Druckeinheit`,description:`Druckanzeigeeinheit`,placeholder:`Druckeinheit auswählen`,values:{hpa:`Hektopascal (hPa)`,mbar:`Millibar (mbar)`,inhg:`Zoll Quecksilbersäule (inHg)`,mmhg:`Millimeter Quecksilbersäule (mmHg)`},validation:{required:`Druckeinheit ist erforderlich`}},precipitationUnit:{title:`Niederschlagseinheit`,description:`Niederschlagsanzeigeeinheit`,placeholder:`Niederschlagseinheit auswählen`,values:{mm:`Millimeter (mm)`,inches:`Zoll (in)`},validation:{required:`Niederschlagseinheit ist erforderlich`}},distanceUnit:{title:`Entfernungseinheit`,description:`Entfernungsanzeigeeinheit`,placeholder:`Entfernungseinheit auswählen`,values:{km:`Kilometer (km)`,miles:`Meilen (mi)`,meters:`Meter (m)`,feet:`Fuß (ft)`},validation:{required:`Entfernungseinheit ist erforderlich`}},logLevels:{title:`Protokollstufen`,description:`Aktivierte Protokollstufen`,placeholder:`Wählen Sie, welche Protokollstufen überwacht werden sollen`,values:{silent:`Stumm`,verbose:`Ausführlich`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Erfolg`,warn:`Warnung`,error:`Fehler`,fail:`Fehlgeschlagen`,fatal:`Fatal`},validation:{required:`Mindestens eine Protokollstufe muss ausgewählt sein`,min:`Mindestens eine Protokollstufe muss ausgewählt sein`}},houseMode:{title:`Hausmodus`,description:`Aktuelle Hausmodus-Einstellung`,placeholder:`Hausmodus auswählen`,values:{home:`Zuhause`,away:`Abwesend`,night:`Nacht`},validation:{required:`Hausmodus ist erforderlich`}}},systemLogs:{search:{title:`Suche`,placeholder:`Protokolle suchen...`},timestamp:{title:`Zeitstempel`},ingestedAt:{title:`Aufgenommen am`},source:{title:`Quelle`},level:{title:`Stufe`},message:{title:`Nachricht`,noMessage:`Keine Nachricht`},tag:{title:`Tag`},user:{title:`Benutzer`},appVersion:{title:`App-Version`},url:{title:`URL`},userAgent:{title:`User Agent`},locale:{title:`Gebietsschema`},args:{title:`Argumente`},rawJson:{title:`Roh-JSON`}}},filters:{systemLogs:{levels:{title:`Nach Protokollstufe filtern`},sources:{title:`Nach Protokollquelle filtern`},tag:{title:`Nach Tag filtern`,placeholder:`Nach Tag suchen...`}}},buttons:{about:{title:`Über die Anwendung`},manage:{title:`System verwalten`},resetFilters:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},reset:{title:`Zurücksetzen`},edit:{title:`Bearbeiten`},discard:{title:`Verwerfen`},cancel:{title:`Abbrechen`},close:{title:`Schließen`},save:{title:`Speichern`},copyJson:{title:`JSON kopieren`},liveTail:{title:`Live-Verfolgung`},paused:{title:`Pausiert`},loadMore:{title:`Mehr laden`},update:{checkForUpdates:`Nach Updates suchen`,installUpdate:`Update installieren`}},labels:{update:{currentVersion:`Aktuelle Version`,latestVersion:`Neueste Version`,lastChecked:`Zuletzt geprüft`,updateStatus:`Status`,actions:`Aktionen`}},systemInfo:{cpuLoad:`CPU-Auslastung`,memoryUsage:`Speichernutzung`,cpuTemperature:`CPU-Temperatur`,gpuTemperature:`GPU-Temperatur`,osPlatform:`Plattform`,osDistro:`Distribution`,osRelease:`Version`,uptime:`Systembetriebszeit`,networkInterface:`Schnittstelle`,ip4Address:`IP-Adresse`,ip6Address:`IPv6-Adresse`,macAddress:`MAC-Adresse`,undervoltage:`Unterspannung erkannt`,frequencyCapping:`Frequenzbegrenzung`,throttling:`CPU-Drosselung aktiv`,softTempLimit:`Sanftes Temperaturlimit erreicht`},states:{ok:`Alles in Ordnung`,error:`Problem erkannt`},levels:{silent:`Stumm`,fatal:`Fatal`,error:`Fehler`,warn:`Warnung`,log:`Log`,info:`Info`,success:`Erfolg`,fail:`Fehlgeschlagen`,ready:`Bereit`,start:`Start`,box:`Box`,debug:`Debug`,trace:`Trace`,verbose:`Ausführlich`},sources:{admin:`Admin-Anwendung`,display:`Display-Anwendung`,backend:`Anwendungs-Backend`,other:`Sonstige`}},Ki={menu:{title:`System`},meta:{system:{system:{title:`System`},systemInfo:{title:`System info`}},systemLogs:{list:{title:`Application logs`},detail:{title:`Log detail`}}},breadcrumbs:{system:{system:`system`,systemInfo:`info`},systemLogs:{list:`application logs`,detail:`log detail`}},headings:{system:{system:`System`,about:`About application`},update:{title:`Software Updates`,confirmTitle:`Install Update`},manage:{manageSystem:`Manage system`,restart:`Restart`,powerOff:`Power Off`,factoryReset:`Factory Reset`,poweredOff:`Power Off Complete`,rebooting:`Rebooting`,systemLogs:`Application logs`},systemLogs:{list:`Application logs`,detail:`Log info`,adjustFilters:`Filter logs`},aboutLanguageSettings:`Language & Units`,aboutSystemSettings:`System Settings`,aboutHouseModeSettings:`House Mode`},subHeadings:{system:`Smart panel system status information`,poweredOff:`The Smart Panel has been successfully powered off`,systemLogs:{list:`Preview all application logs`,detail:`Preview log record details`,edit:`Preview log record details`,adjustFilters:`Adjust logs filters`}},messages:{config:{edited:`System configuration has been successfully updated`,notEdited:`Failed to update system configuration`},manage:{confirmRestart:`Are you sure you want to restart the device? This action will temporarily interrupt functionality.`,confirmPowerOff:`Are you sure you want to power off the device? It will need to be manually turned on again.`,confirmFactoryReset:`Are you sure you want to erase all data and restore the device to its factory settings? This action is irreversible.`,confirmRestartGateway:`Are you sure you want to restart the gateway? Connected displays will temporarily lose connectivity until the gateway is back online.`,confirmPowerOffGateway:`Are you sure you want to power off the gateway? All connected displays will lose connectivity. The gateway will need to be manually turned on again.`,confirmFactoryResetGateway:`Are you sure you want to factory reset the gateway? This will erase all gateway data and reset all connected displays. This action is irreversible.`,waitingToBoot:`Waiting for panel to boot up...`,panelBackOnline:`Smart Panel is back online.`,rebootTakesTooLong:`Reboot is taking longer than expected. Please check the panel manually.`,rebootFailed:`Failed to reboot the Smart Panel. Please try again or check the device manually.`,powerOffFailed:`Failed to power off the Smart Panel. Please try again or check the device manually.`,factoryResetSuccess:`All data has been cleared. Let’s start fresh — sign in to begin.`,factoryResetFailed:`Failed to factory reset the Smart Panel. Please try again or check the device manually.`},misc:{requestError:`Something went wrong, please try again later.`},update:{confirmInstall:`Are you sure you want to update to version {version}?`,majorUpdateWarning:`This is a major version update to {version}. Major updates may contain breaking changes. Are you sure you want to proceed?`,confirmTitle:`Install Update`,updateStarted:`Update process has been started. The system will restart automatically.`,updateComplete:`Update completed successfully!`,updateFailed:`Update failed. Please check the system logs for details.`,checkFailed:`Failed to check for updates. Please try again later.`,installFailed:`Failed to start the update. Please try again later.`}},texts:{system:{loadingSystemInfo:`Loading system information...`,about:`FastyBird Smart Panel is a home automation app that enables seamless integration with your smart devices, offering enhanced control and monitoring capabilities.`},manage:{rebootDevice:`Restart the device to apply changes or resolve issues.`,rebootGateway:`Restart the gateway to apply changes or resolve issues. Connected displays will temporarily lose connectivity.`,powerOffDevice:`Power off the device completely.`,powerOffGateway:`Power off the gateway completely. Connected displays will lose connectivity.`,factoryResetDevice:`Restore the device to its original factory settings.`,factoryResetGateway:`Erase all gateway data and reset all connected displays to factory settings.`,rebootInProcess:`Smart Panel is rebooting...`,powerOffInProcess:`Smart Panel is powering off...`,factoryResetInProcess:`Smart Panel is reset to factory state...`,factoryResetWaiting:`Waiting for Smart Panel to restart after factory reset...`,factoryResetTimeout:`Factory reset is taking longer than expected. Please check the device manually.`,poweredOff:`You can close this window — no further action is required.`,systemLogs:`Preview and diagnose application logs.`},update:{available:`Update available`,upToDate:`Your system is up to date.`,checking:`Checking for updates...`,installing:`Installing update...`,waitingForRestart:`Service is restarting, please wait...`,noVersionInfo:`Unable to retrieve version information.`},systemLogs:{loadingLogs:`Loading application logs...`,noLogs:`No any application logs were recorded.`,noFilteredLogs:`No any application logs found matching the active filter criteria`,noMessage:`This log entry is without additional message`,noMoreEntries:`No more log entries`},aboutLanguageSettings:`Configure the interface language, timezone, time format, and measurement units for the Smart Panel. These settings affect how dates, times, temperatures, and measurements are displayed throughout the system.`,aboutSystemSettings:`Manage system-wide logging configuration. Select which log severity levels to monitor and display in the application logs.`,aboutHouseModeSettings:`Set the current house mode to control how the Smart Panel and connected devices behave. Home mode is for normal occupancy, Away mode for when no one is home, and Night mode for sleeping hours.`},fields:{config:{language:{title:`Language`,description:`Application language`,placeholder:`Select language`,values:{english:`English`,czech:`Czech`,german:`German`,spanish:`Spanish`,polish:`Polish`,slovak:`Slovak`},validation:{required:`Language is required`}},timezone:{title:`Timezone`,description:`System timezone`,placeholder:`Select timezone`,validation:{required:`Timezone is required`}},timeFormat:{title:`Time Format`,description:`Time display format`,placeholder:`Select time format`,values:{hour12:`12-hour`,hour24:`24-hour`},validation:{required:`Time format is required`}},numberFormat:{title:`Number Format`,description:`Number display format for thousands and decimal separators`,placeholder:`Select number format`,values:{commaDot:`1,234.56 (comma / dot)`,dotComma:`1.234,56 (dot / comma)`,spaceComma:`1 234,56 (space / comma)`,none:`1234.56 (no grouping)`},validation:{required:`Number format is required`}},temperatureUnit:{title:`Temperature Unit`,description:`Temperature display unit`,placeholder:`Select temperature unit`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`Temperature unit is required`}},windSpeedUnit:{title:`Wind Speed Unit`,description:`Wind speed display unit`,placeholder:`Select wind speed unit`,values:{ms:`Meters per second (m/s)`,kmh:`Kilometers per hour (km/h)`,mph:`Miles per hour (mph)`,knots:`Knots (kn)`},validation:{required:`Wind speed unit is required`}},pressureUnit:{title:`Pressure Unit`,description:`Pressure display unit`,placeholder:`Select pressure unit`,values:{hpa:`Hectopascal (hPa)`,mbar:`Millibar (mbar)`,inhg:`Inches of mercury (inHg)`,mmhg:`Millimeters of mercury (mmHg)`},validation:{required:`Pressure unit is required`}},precipitationUnit:{title:`Precipitation Unit`,description:`Precipitation display unit`,placeholder:`Select precipitation unit`,values:{mm:`Millimeters (mm)`,inches:`Inches (in)`},validation:{required:`Precipitation unit is required`}},distanceUnit:{title:`Distance Unit`,description:`Distance display unit`,placeholder:`Select distance unit`,values:{km:`Kilometers (km)`,miles:`Miles (mi)`,meters:`Meters (m)`,feet:`Feet (ft)`},validation:{required:`Distance unit is required`}},logLevels:{title:`Log Levels`,description:`Enabled log levels`,placeholder:`Select which log levels should be monitored`,values:{silent:`Silent`,verbose:`Verbose`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Success`,warn:`Warning`,error:`Error`,fail:`Fail`,fatal:`Fatal`},validation:{required:`At least one log level must be selected`,min:`At least one log level must be selected`}},houseMode:{title:`House Mode`,description:`Current house mode setting`,placeholder:`Select house mode`,values:{home:`Home`,away:`Away`,night:`Night`},validation:{required:`House mode is required`}}},systemLogs:{search:{title:`Search`,placeholder:`Search logs...`},timestamp:{title:`Timestamp`},ingestedAt:{title:`Ingested at`},source:{title:`Source`},level:{title:`Level`},message:{title:`Message`,noMessage:`No message`},tag:{title:`Tag`},user:{title:`User`},appVersion:{title:`App version`},url:{title:`URL`},userAgent:{title:`User agent`},locale:{title:`Locale`},args:{title:`Args`},rawJson:{title:`Raw JSON`}}},filters:{systemLogs:{levels:{title:`Filter by log level`},sources:{title:`Filter by log source`},tag:{title:`Filter by tag`,placeholder:`Search by tag...`}}},buttons:{about:{title:`About application`},manage:{title:`Manage system`},resetFilters:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},reset:{title:`Reset`},edit:{title:`Edit`},discard:{title:`Discard`},cancel:{title:`Cancel`},close:{title:`Close`},save:{title:`Save`},copyJson:{title:`Copy JSON`},liveTail:{title:`Live tail`},paused:{title:`Paused`},loadMore:{title:`Load more`},update:{checkForUpdates:`Check for Updates`,installUpdate:`Install Update`}},labels:{update:{currentVersion:`Current version`,latestVersion:`Latest version`,lastChecked:`Last checked`,updateStatus:`Status`,actions:`Actions`}},systemInfo:{cpuLoad:`CPU load`,memoryUsage:`Memory usage`,cpuTemperature:`CPU temperature`,gpuTemperature:`GPU temperature`,osPlatform:`Platform`,osDistro:`Distribution`,osRelease:`Version`,uptime:`System uptime`,networkInterface:`Interface`,ip4Address:`IP address`,ip6Address:`IPv6 address`,macAddress:`MAC address`,undervoltage:`Undervoltage detected`,frequencyCapping:`Frequency capped`,throttling:`CPU throttling active`,softTempLimit:`Soft temperature limit reached`},states:{ok:`Everything ok`,error:`Problem detected`},levels:{silent:`Silent`,fatal:`Fatal`,error:`Error`,warn:`Warning`,log:`Log`,info:`Info`,success:`Success`,fail:`Fail`,ready:`Ready`,start:`Start`,box:`Box`,debug:`Debug`,trace:`Trace`,verbose:`Verbose`},sources:{admin:`Admin application`,display:`Display application`,backend:`Application backend`,other:`Other`}},qi={menu:{title:`Sistema`},meta:{system:{system:{title:`Sistema`},systemInfo:{title:`Información del sistema`}},systemLogs:{list:{title:`Registros de la aplicación`},detail:{title:`Detalle del registro`}}},breadcrumbs:{system:{system:`sistema`,systemInfo:`información`},systemLogs:{list:`registros de la aplicación`,detail:`detalle del registro`}},headings:{system:{system:`Sistema`,about:`Acerca de la aplicación`},update:{title:`Actualizaciones de software`,confirmTitle:`Instalar actualización`},manage:{manageSystem:`Administrar sistema`,restart:`Reiniciar`,powerOff:`Apagar`,factoryReset:`Restablecimiento de fábrica`,poweredOff:`Apagado completado`,rebooting:`Reiniciando`,systemLogs:`Registros de la aplicación`},systemLogs:{list:`Registros de la aplicación`,detail:`Información del registro`,adjustFilters:`Filtrar registros`},aboutLanguageSettings:`Idioma y unidades`,aboutSystemSettings:`Configuración del sistema`,aboutHouseModeSettings:`Modo de la casa`},subHeadings:{system:`Información del estado del sistema del panel inteligente`,poweredOff:`El panel inteligente se ha apagado correctamente`,systemLogs:{list:`Vista previa de todos los registros de la aplicación`,detail:`Vista previa de los detalles del registro`,edit:`Vista previa de los detalles del registro`,adjustFilters:`Ajustar filtros de registros`}},messages:{config:{edited:`La configuración del sistema se ha actualizado correctamente`,notEdited:`No se pudo actualizar la configuración del sistema`},manage:{confirmRestart:`¿Estás seguro de que deseas reiniciar el dispositivo? Esta acción interrumpirá temporalmente su funcionamiento.`,confirmPowerOff:`¿Estás seguro de que deseas apagar el dispositivo? Será necesario encenderlo manualmente de nuevo.`,confirmFactoryReset:`¿Estás seguro de que deseas borrar todos los datos y restaurar el dispositivo a su configuración de fábrica? Esta acción es irreversible.`,confirmRestartGateway:`¿Estás seguro de que deseas reiniciar la pasarela? Las pantallas conectadas perderán temporalmente la conectividad hasta que la pasarela vuelva a estar en línea.`,confirmPowerOffGateway:`¿Estás seguro de que deseas apagar la pasarela? Todas las pantallas conectadas perderán la conectividad. La pasarela deberá encenderse manualmente de nuevo.`,confirmFactoryResetGateway:`¿Estás seguro de que deseas restablecer la pasarela a su configuración de fábrica? Esto borrará todos los datos de la pasarela y restablecerá todas las pantallas conectadas. Esta acción es irreversible.`,waitingToBoot:`Esperando a que el panel se inicie...`,panelBackOnline:`El panel inteligente está de nuevo en línea.`,rebootTakesTooLong:`El reinicio está tardando más de lo esperado. Por favor, verifica el panel manualmente.`,rebootFailed:`No se pudo reiniciar el panel inteligente. Por favor, inténtalo de nuevo o verifica el dispositivo manualmente.`,powerOffFailed:`No se pudo apagar el panel inteligente. Por favor, inténtalo de nuevo o verifica el dispositivo manualmente.`,factoryResetSuccess:`Todos los datos han sido borrados. Comencemos de nuevo: inicia sesión para comenzar.`,factoryResetFailed:`No se pudo restablecer el panel inteligente a su configuración de fábrica. Por favor, inténtalo de nuevo o verifica el dispositivo manualmente.`},misc:{requestError:`Algo salió mal, por favor inténtalo de nuevo más tarde.`},update:{confirmInstall:`¿Estás seguro de que deseas actualizar a la versión {version}?`,majorUpdateWarning:`Esta es una actualización de versión mayor a {version}. Las actualizaciones mayores pueden contener cambios incompatibles. ¿Estás seguro de que deseas continuar?`,confirmTitle:`Instalar actualización`,updateStarted:`El proceso de actualización ha comenzado. El sistema se reiniciará automáticamente.`,updateComplete:`¡Actualización completada correctamente!`,updateFailed:`La actualización falló. Por favor, revisa los registros del sistema para más detalles.`,checkFailed:`No se pudo verificar si hay actualizaciones. Por favor, inténtalo de nuevo más tarde.`,installFailed:`No se pudo iniciar la actualización. Por favor, inténtalo de nuevo más tarde.`}},texts:{system:{loadingSystemInfo:`Cargando información del sistema...`,about:`FastyBird Smart Panel es una aplicación de domótica que permite la integración perfecta con tus dispositivos inteligentes, ofreciendo capacidades mejoradas de control y monitorización.`},manage:{rebootDevice:`Reinicia el dispositivo para aplicar cambios o resolver problemas.`,rebootGateway:`Reinicia la pasarela para aplicar cambios o resolver problemas. Las pantallas conectadas perderán temporalmente la conectividad.`,powerOffDevice:`Apaga el dispositivo completamente.`,powerOffGateway:`Apaga la pasarela completamente. Las pantallas conectadas perderán la conectividad.`,factoryResetDevice:`Restaura el dispositivo a su configuración original de fábrica.`,factoryResetGateway:`Borra todos los datos de la pasarela y restablece todas las pantallas conectadas a la configuración de fábrica.`,rebootInProcess:`El panel inteligente se está reiniciando...`,powerOffInProcess:`El panel inteligente se está apagando...`,factoryResetInProcess:`El panel inteligente se está restableciendo a su estado de fábrica...`,factoryResetWaiting:`Esperando a que el panel inteligente se reinicie después del restablecimiento de fábrica...`,factoryResetTimeout:`El restablecimiento de fábrica está tardando más de lo esperado. Por favor, verifica el dispositivo manualmente.`,poweredOff:`Puedes cerrar esta ventana — no se requiere ninguna acción adicional.`,systemLogs:`Vista previa y diagnóstico de los registros de la aplicación.`},update:{available:`Actualización disponible`,upToDate:`Tu sistema está actualizado.`,checking:`Verificando actualizaciones...`,installing:`Instalando actualización...`,waitingForRestart:`El servicio se está reiniciando, por favor espera...`,noVersionInfo:`No se pudo obtener la información de la versión.`},systemLogs:{loadingLogs:`Cargando registros de la aplicación...`,noLogs:`No se han registrado registros de la aplicación.`,noFilteredLogs:`No se encontraron registros de la aplicación que coincidan con los criterios de filtro activos`,noMessage:`Esta entrada de registro no tiene mensaje adicional`,noMoreEntries:`No hay más entradas de registro`},aboutLanguageSettings:`Configura el idioma de la interfaz, la zona horaria, el formato de hora y las unidades de medida del panel inteligente. Estos ajustes afectan cómo se muestran las fechas, horas, temperaturas y medidas en todo el sistema.`,aboutSystemSettings:`Administra la configuración de registros a nivel de sistema. Selecciona qué niveles de severidad de registro monitorear y mostrar en los registros de la aplicación.`,aboutHouseModeSettings:`Establece el modo actual de la casa para controlar cómo se comportan el panel inteligente y los dispositivos conectados. El modo Casa es para ocupación normal, el modo Ausente es para cuando no hay nadie en casa, y el modo Noche es para las horas de sueño.`},fields:{config:{language:{title:`Idioma`,description:`Idioma de la aplicación`,placeholder:`Seleccionar idioma`,values:{english:`Inglés`,czech:`Checo`,german:`Alemán`,spanish:`Español`,polish:`Polaco`,slovak:`Eslovaco`},validation:{required:`El idioma es obligatorio`}},timezone:{title:`Zona horaria`,description:`Zona horaria del sistema`,placeholder:`Seleccionar zona horaria`,validation:{required:`La zona horaria es obligatoria`}},timeFormat:{title:`Formato de hora`,description:`Formato de visualización de la hora`,placeholder:`Seleccionar formato de hora`,values:{hour12:`12 horas`,hour24:`24 horas`},validation:{required:`El formato de hora es obligatorio`}},numberFormat:{title:`Formato de números`,description:`Formato de visualización de números para separadores de miles y decimales`,placeholder:`Seleccionar formato de números`,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)`},validation:{required:`El formato de números es obligatorio`}},temperatureUnit:{title:`Unidad de temperatura`,description:`Unidad de visualización de temperatura`,placeholder:`Seleccionar unidad de temperatura`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`La unidad de temperatura es obligatoria`}},windSpeedUnit:{title:`Unidad de velocidad del viento`,description:`Unidad de visualización de velocidad del viento`,placeholder:`Seleccionar unidad de velocidad del viento`,values:{ms:`Metros por segundo (m/s)`,kmh:`Kilómetros por hora (km/h)`,mph:`Millas por hora (mph)`,knots:`Nudos (kn)`},validation:{required:`La unidad de velocidad del viento es obligatoria`}},pressureUnit:{title:`Unidad de presión`,description:`Unidad de visualización de presión`,placeholder:`Seleccionar unidad de presión`,values:{hpa:`Hectopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Pulgadas de mercurio (inHg)`,mmhg:`Milímetros de mercurio (mmHg)`},validation:{required:`La unidad de presión es obligatoria`}},precipitationUnit:{title:`Unidad de precipitación`,description:`Unidad de visualización de precipitación`,placeholder:`Seleccionar unidad de precipitación`,values:{mm:`Milímetros (mm)`,inches:`Pulgadas (in)`},validation:{required:`La unidad de precipitación es obligatoria`}},distanceUnit:{title:`Unidad de distancia`,description:`Unidad de visualización de distancia`,placeholder:`Seleccionar unidad de distancia`,values:{km:`Kilómetros (km)`,miles:`Millas (mi)`,meters:`Metros (m)`,feet:`Pies (ft)`},validation:{required:`La unidad de distancia es obligatoria`}},logLevels:{title:`Niveles de registro`,description:`Niveles de registro habilitados`,placeholder:`Selecciona qué niveles de registro deben ser monitoreados`,values:{silent:`Silencioso`,verbose:`Detallado`,debug:`Depuración`,trace:`Rastreo`,log:`Registro`,info:`Información`,success:`Éxito`,warn:`Advertencia`,error:`Error`,fail:`Fallo`,fatal:`Fatal`},validation:{required:`Se debe seleccionar al menos un nivel de registro`,min:`Se debe seleccionar al menos un nivel de registro`}},houseMode:{title:`Modo de la casa`,description:`Configuración actual del modo de la casa`,placeholder:`Seleccionar modo de la casa`,values:{home:`Casa`,away:`Ausente`,night:`Noche`},validation:{required:`El modo de la casa es obligatorio`}}},systemLogs:{search:{title:`Buscar`,placeholder:`Buscar registros...`},timestamp:{title:`Marca de tiempo`},ingestedAt:{title:`Ingresado el`},source:{title:`Origen`},level:{title:`Nivel`},message:{title:`Mensaje`,noMessage:`Sin mensaje`},tag:{title:`Etiqueta`},user:{title:`Usuario`},appVersion:{title:`Versión de la aplicación`},url:{title:`URL`},userAgent:{title:`Agente de usuario`},locale:{title:`Idioma regional`},args:{title:`Argumentos`},rawJson:{title:`JSON sin procesar`}}},filters:{systemLogs:{levels:{title:`Filtrar por nivel de registro`},sources:{title:`Filtrar por origen del registro`},tag:{title:`Filtrar por etiqueta`,placeholder:`Buscar por etiqueta...`}}},buttons:{about:{title:`Acerca de la aplicación`},manage:{title:`Administrar sistema`},resetFilters:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},reset:{title:`Restablecer`},edit:{title:`Editar`},discard:{title:`Descartar`},cancel:{title:`Cancelar`},close:{title:`Cerrar`},save:{title:`Guardar`},copyJson:{title:`Copiar JSON`},liveTail:{title:`Seguimiento en vivo`},paused:{title:`Pausado`},loadMore:{title:`Cargar más`},update:{checkForUpdates:`Buscar actualizaciones`,installUpdate:`Instalar actualización`}},labels:{update:{currentVersion:`Versión actual`,latestVersion:`Última versión`,lastChecked:`Última verificación`,updateStatus:`Estado`,actions:`Acciones`}},systemInfo:{cpuLoad:`Carga de CPU`,memoryUsage:`Uso de memoria`,cpuTemperature:`Temperatura de CPU`,gpuTemperature:`Temperatura de GPU`,osPlatform:`Plataforma`,osDistro:`Distribución`,osRelease:`Versión`,uptime:`Tiempo de actividad del sistema`,networkInterface:`Interfaz`,ip4Address:`Dirección IP`,ip6Address:`Dirección IPv6`,macAddress:`Dirección MAC`,undervoltage:`Bajo voltaje detectado`,frequencyCapping:`Frecuencia limitada`,throttling:`Limitación de CPU activa`,softTempLimit:`Límite suave de temperatura alcanzado`},states:{ok:`Todo correcto`,error:`Problema detectado`},levels:{silent:`Silencioso`,fatal:`Fatal`,error:`Error`,warn:`Advertencia`,log:`Registro`,info:`Información`,success:`Éxito`,fail:`Fallo`,ready:`Listo`,start:`Inicio`,box:`Caja`,debug:`Depuración`,trace:`Rastreo`,verbose:`Detallado`},sources:{admin:`Aplicación de administración`,display:`Aplicación de pantalla`,backend:`Backend de la aplicación`,other:`Otro`}},Ji={menu:{title:`System`},meta:{system:{system:{title:`System`},systemInfo:{title:`Informacje o systemie`}},systemLogs:{list:{title:`Logi aplikacji`},detail:{title:`Szczegóły logu`}}},breadcrumbs:{system:{system:`system`,systemInfo:`informacje`},systemLogs:{list:`logi aplikacji`,detail:`szczegóły logu`}},headings:{system:{system:`System`,about:`O aplikacji`},update:{title:`Aktualizacje oprogramowania`,confirmTitle:`Zainstaluj aktualizację`},manage:{manageSystem:`Zarządzaj systemem`,restart:`Uruchom ponownie`,powerOff:`Wyłącz zasilanie`,factoryReset:`Przywróć ustawienia fabryczne`,poweredOff:`Zasilanie wyłączone`,rebooting:`Ponowne uruchamianie`,systemLogs:`Logi aplikacji`},systemLogs:{list:`Logi aplikacji`,detail:`Informacje o logu`,adjustFilters:`Filtruj logi`},aboutLanguageSettings:`Język i jednostki`,aboutSystemSettings:`Ustawienia systemu`,aboutHouseModeSettings:`Tryb domu`},subHeadings:{system:`Informacje o stanie systemu smart panelu`,poweredOff:`Smart Panel został pomyślnie wyłączony`,systemLogs:{list:`Podgląd wszystkich logów aplikacji`,detail:`Podgląd szczegółów wpisu logu`,edit:`Podgląd szczegółów wpisu logu`,adjustFilters:`Dostosuj filtry logów`}},messages:{config:{edited:`Konfiguracja systemu została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji systemu`},manage:{confirmRestart:`Czy na pewno chcesz ponownie uruchomić urządzenie? Ta operacja tymczasowo przerwie działanie.`,confirmPowerOff:`Czy na pewno chcesz wyłączyć urządzenie? Będzie trzeba je ręcznie włączyć ponownie.`,confirmFactoryReset:`Czy na pewno chcesz wymazać wszystkie dane i przywrócić urządzenie do ustawień fabrycznych? Tej operacji nie można cofnąć.`,confirmRestartGateway:`Czy na pewno chcesz ponownie uruchomić bramę? Podłączone wyświetlacze tymczasowo stracą łączność do czasu ponownego uruchomienia bramy.`,confirmPowerOffGateway:`Czy na pewno chcesz wyłączyć bramę? Wszystkie podłączone wyświetlacze stracą łączność. Bramę trzeba będzie ręcznie włączyć ponownie.`,confirmFactoryResetGateway:`Czy na pewno chcesz przywrócić ustawienia fabryczne bramy? Spowoduje to wymazanie wszystkich danych bramy i reset wszystkich podłączonych wyświetlaczy. Tej operacji nie można cofnąć.`,waitingToBoot:`Oczekiwanie na uruchomienie panelu...`,panelBackOnline:`Smart Panel jest ponownie online.`,rebootTakesTooLong:`Ponowne uruchamianie trwa dłużej niż oczekiwano. Sprawdź panel ręcznie.`,rebootFailed:`Nie udało się ponownie uruchomić Smart Panel. Spróbuj ponownie lub sprawdź urządzenie ręcznie.`,powerOffFailed:`Nie udało się wyłączyć Smart Panel. Spróbuj ponownie lub sprawdź urządzenie ręcznie.`,factoryResetSuccess:`Wszystkie dane zostały wyczyszczone. Zacznijmy od nowa — zaloguj się, aby rozpocząć.`,factoryResetFailed:`Nie udało się przywrócić ustawień fabrycznych Smart Panel. Spróbuj ponownie lub sprawdź urządzenie ręcznie.`},misc:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`},update:{confirmInstall:`Czy na pewno chcesz zaktualizować do wersji {version}?`,majorUpdateWarning:`To jest aktualizacja do wersji głównej {version}. Aktualizacje główne mogą zawierać zmiany powodujące niezgodność. Czy na pewno chcesz kontynuować?`,confirmTitle:`Zainstaluj aktualizację`,updateStarted:`Proces aktualizacji został rozpoczęty. System uruchomi się ponownie automatycznie.`,updateComplete:`Aktualizacja zakończona pomyślnie!`,updateFailed:`Aktualizacja nie powiodła się. Sprawdź logi systemowe, aby uzyskać szczegóły.`,checkFailed:`Nie udało się sprawdzić aktualizacji. Spróbuj ponownie później.`,installFailed:`Nie udało się rozpocząć aktualizacji. Spróbuj ponownie później.`}},texts:{system:{loadingSystemInfo:`Ładowanie informacji o systemie...`,about:`FastyBird Smart Panel to aplikacja automatyzacji domu, która umożliwia bezproblemową integrację z inteligentnymi urządzeniami, oferując zaawansowane możliwości sterowania i monitorowania.`},manage:{rebootDevice:`Uruchom ponownie urządzenie, aby zastosować zmiany lub rozwiązać problemy.`,rebootGateway:`Uruchom ponownie bramę, aby zastosować zmiany lub rozwiązać problemy. Podłączone wyświetlacze tymczasowo stracą łączność.`,powerOffDevice:`Całkowicie wyłącz urządzenie.`,powerOffGateway:`Całkowicie wyłącz bramę. Podłączone wyświetlacze stracą łączność.`,factoryResetDevice:`Przywróć urządzenie do oryginalnych ustawień fabrycznych.`,factoryResetGateway:`Wymaż wszystkie dane bramy i przywróć ustawienia fabryczne wszystkich podłączonych wyświetlaczy.`,rebootInProcess:`Smart Panel jest ponownie uruchamiany...`,powerOffInProcess:`Smart Panel jest wyłączany...`,factoryResetInProcess:`Smart Panel jest resetowany do stanu fabrycznego...`,factoryResetWaiting:`Oczekiwanie na ponowne uruchomienie Smart Panel po resecie fabrycznym...`,factoryResetTimeout:`Reset fabryczny trwa dłużej niż oczekiwano. Sprawdź urządzenie ręcznie.`,poweredOff:`Możesz zamknąć to okno — nie są wymagane żadne dalsze działania.`,systemLogs:`Podgląd i diagnostyka logów aplikacji.`},update:{available:`Dostępna aktualizacja`,upToDate:`Twój system jest aktualny.`,checking:`Sprawdzanie aktualizacji...`,installing:`Instalowanie aktualizacji...`,waitingForRestart:`Usługa jest restartowana, proszę czekać...`,noVersionInfo:`Nie udało się pobrać informacji o wersji.`},systemLogs:{loadingLogs:`Ładowanie logów aplikacji...`,noLogs:`Nie zarejestrowano żadnych logów aplikacji.`,noFilteredLogs:`Nie znaleziono logów aplikacji pasujących do aktywnych kryteriów filtra`,noMessage:`Ten wpis logu nie zawiera dodatkowej wiadomości`,noMoreEntries:`Brak więcej wpisów w logach`},aboutLanguageSettings:`Skonfiguruj język interfejsu, strefę czasową, format czasu i jednostki miar Smart Panel. Te ustawienia wpływają na sposób wyświetlania dat, godzin, temperatur i miar w całym systemie.`,aboutSystemSettings:`Zarządzaj ogólnosystemową konfiguracją logowania. Wybierz, które poziomy ważności logów mają być monitorowane i wyświetlane w logach aplikacji.`,aboutHouseModeSettings:`Ustaw bieżący tryb domu, aby kontrolować zachowanie Smart Panel i podłączonych urządzeń. Tryb Dom to normalna obecność, tryb Poza domem gdy nikogo nie ma, a tryb Noc na czas snu.`},fields:{config:{language:{title:`Język`,description:`Język aplikacji`,placeholder:`Wybierz język`,values:{english:`Angielski`,czech:`Czeski`,german:`Niemiecki`,spanish:`Hiszpański`,polish:`Polski`,slovak:`Słowacki`},validation:{required:`Język jest wymagany`}},timezone:{title:`Strefa czasowa`,description:`Strefa czasowa systemu`,placeholder:`Wybierz strefę czasową`,validation:{required:`Strefa czasowa jest wymagana`}},timeFormat:{title:`Format czasu`,description:`Format wyświetlania czasu`,placeholder:`Wybierz format czasu`,values:{hour12:`12-godzinny`,hour24:`24-godzinny`},validation:{required:`Format czasu jest wymagany`}},numberFormat:{title:`Format liczb`,description:`Format wyświetlania liczb dla separatorów tysięcy i dziesiętnych`,placeholder:`Wybierz format liczb`,values:{commaDot:`1,234.56 (przecinek / kropka)`,dotComma:`1.234,56 (kropka / przecinek)`,spaceComma:`1 234,56 (spacja / przecinek)`,none:`1234.56 (bez grupowania)`},validation:{required:`Format liczb jest wymagany`}},temperatureUnit:{title:`Jednostka temperatury`,description:`Jednostka wyświetlania temperatury`,placeholder:`Wybierz jednostkę temperatury`,values:{celsius:`Celsjusz (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`Jednostka temperatury jest wymagana`}},windSpeedUnit:{title:`Jednostka prędkości wiatru`,description:`Jednostka wyświetlania prędkości wiatru`,placeholder:`Wybierz jednostkę prędkości wiatru`,values:{ms:`Metry na sekundę (m/s)`,kmh:`Kilometry na godzinę (km/h)`,mph:`Mile na godzinę (mph)`,knots:`Węzły (kn)`},validation:{required:`Jednostka prędkości wiatru jest wymagana`}},pressureUnit:{title:`Jednostka ciśnienia`,description:`Jednostka wyświetlania ciśnienia`,placeholder:`Wybierz jednostkę ciśnienia`,values:{hpa:`Hektopaskal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Cale słupa rtęci (inHg)`,mmhg:`Milimetry słupa rtęci (mmHg)`},validation:{required:`Jednostka ciśnienia jest wymagana`}},precipitationUnit:{title:`Jednostka opadów`,description:`Jednostka wyświetlania opadów`,placeholder:`Wybierz jednostkę opadów`,values:{mm:`Milimetry (mm)`,inches:`Cale (in)`},validation:{required:`Jednostka opadów jest wymagana`}},distanceUnit:{title:`Jednostka odległości`,description:`Jednostka wyświetlania odległości`,placeholder:`Wybierz jednostkę odległości`,values:{km:`Kilometry (km)`,miles:`Mile (mi)`,meters:`Metry (m)`,feet:`Stopy (ft)`},validation:{required:`Jednostka odległości jest wymagana`}},logLevels:{title:`Poziomy logowania`,description:`Włączone poziomy logowania`,placeholder:`Wybierz, które poziomy logowania mają być monitorowane`,values:{silent:`Cichy`,verbose:`Szczegółowy`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Sukces`,warn:`Ostrzeżenie`,error:`Błąd`,fail:`Niepowodzenie`,fatal:`Krytyczny`},validation:{required:`Należy wybrać co najmniej jeden poziom logowania`,min:`Należy wybrać co najmniej jeden poziom logowania`}},houseMode:{title:`Tryb domu`,description:`Bieżące ustawienie trybu domu`,placeholder:`Wybierz tryb domu`,values:{home:`Dom`,away:`Poza domem`,night:`Noc`},validation:{required:`Tryb domu jest wymagany`}}},systemLogs:{search:{title:`Szukaj`,placeholder:`Szukaj w logach...`},timestamp:{title:`Znacznik czasu`},ingestedAt:{title:`Pobrano o`},source:{title:`Źródło`},level:{title:`Poziom`},message:{title:`Wiadomość`,noMessage:`Brak wiadomości`},tag:{title:`Tag`},user:{title:`Użytkownik`},appVersion:{title:`Wersja aplikacji`},url:{title:`URL`},userAgent:{title:`Przeglądarka`},locale:{title:`Lokalizacja`},args:{title:`Argumenty`},rawJson:{title:`Surowy JSON`}}},filters:{systemLogs:{levels:{title:`Filtruj według poziomu logu`},sources:{title:`Filtruj według źródła logu`},tag:{title:`Filtruj według tagu`,placeholder:`Szukaj po tagu...`}}},buttons:{about:{title:`O aplikacji`},manage:{title:`Zarządzaj systemem`},resetFilters:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},reset:{title:`Resetuj`},edit:{title:`Edytuj`},discard:{title:`Odrzuć`},cancel:{title:`Anuluj`},close:{title:`Zamknij`},save:{title:`Zapisz`},copyJson:{title:`Kopiuj JSON`},liveTail:{title:`Podgląd na żywo`},paused:{title:`Wstrzymany`},loadMore:{title:`Załaduj więcej`},update:{checkForUpdates:`Sprawdź aktualizacje`,installUpdate:`Zainstaluj aktualizację`}},labels:{update:{currentVersion:`Bieżąca wersja`,latestVersion:`Najnowsza wersja`,lastChecked:`Ostatnio sprawdzono`,updateStatus:`Status`,actions:`Akcje`}},systemInfo:{cpuLoad:`Obciążenie CPU`,memoryUsage:`Użycie pamięci`,cpuTemperature:`Temperatura CPU`,gpuTemperature:`Temperatura GPU`,osPlatform:`Platforma`,osDistro:`Dystrybucja`,osRelease:`Wersja`,uptime:`Czas pracy systemu`,networkInterface:`Interfejs`,ip4Address:`Adres IP`,ip6Address:`Adres IPv6`,macAddress:`Adres MAC`,undervoltage:`Wykryto obniżone napięcie`,frequencyCapping:`Ograniczenie częstotliwości`,throttling:`Aktywne dławienie CPU`,softTempLimit:`Osiągnięto miękki limit temperatury`},states:{ok:`Wszystko w porządku`,error:`Wykryto problem`},levels:{silent:`Cichy`,fatal:`Krytyczny`,error:`Błąd`,warn:`Ostrzeżenie`,log:`Log`,info:`Info`,success:`Sukces`,fail:`Niepowodzenie`,ready:`Gotowy`,start:`Start`,box:`Box`,debug:`Debug`,trace:`Trace`,verbose:`Szczegółowy`},sources:{admin:`Aplikacja administratora`,display:`Aplikacja wyświetlacza`,backend:`Backend aplikacji`,other:`Inne`}},Yi={menu:{title:`Systém`},meta:{system:{system:{title:`Systém`},systemInfo:{title:`Systémové informácie`}},systemLogs:{list:{title:`Aplikačné logy`},detail:{title:`Detail logu`}}},breadcrumbs:{system:{system:`systém`,systemInfo:`info`},systemLogs:{list:`aplikačné logy`,detail:`detail logu`}},headings:{system:{system:`Systém`,about:`O aplikácii`},update:{title:`Aktualizácie softvéru`,confirmTitle:`Inštalovať aktualizáciu`},manage:{manageSystem:`Spravovať systém`,restart:`Reštartovať`,powerOff:`Vypnúť`,factoryReset:`Továrenský reset`,poweredOff:`Vypnutie dokončené`,rebooting:`Reštartovanie`,systemLogs:`Aplikačné logy`},systemLogs:{list:`Aplikačné logy`,detail:`Info o logu`,adjustFilters:`Filtrovať logy`},aboutLanguageSettings:`Jazyk a jednotky`,aboutSystemSettings:`Systémové nastavenia`,aboutHouseModeSettings:`Režim domu`},subHeadings:{system:`Informácie o stave systému smart panelu`,poweredOff:`Smart Panel bol úspešne vypnutý`,systemLogs:{list:`Zobraziť všetky aplikačné logy`,detail:`Zobraziť detail záznamu logu`,edit:`Zobraziť detail záznamu logu`,adjustFilters:`Upraviť filtre logov`}},messages:{config:{edited:`Konfigurácia systému bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu systému`},manage:{confirmRestart:`Naozaj chcete reštartovať zariadenie? Táto akcia dočasne preruší funkčnosť.`,confirmPowerOff:`Naozaj chcete vypnúť zariadenie? Bude potrebné ho manuálne zapnúť.`,confirmFactoryReset:`Naozaj chcete vymazať všetky dáta a obnoviť zariadenie do továrenského nastavenia? Táto akcia je nevratná.`,confirmRestartGateway:`Naozaj chcete reštartovať bránu? Pripojené displeje dočasne stratia konektivitu.`,confirmPowerOffGateway:`Naozaj chcete vypnúť bránu? Všetky pripojené displeje stratia konektivitu. Bránu bude potrebné manuálne zapnúť.`,confirmFactoryResetGateway:`Naozaj chcete vykonať továrenský reset brány? Tým sa vymažú všetky dáta brány a resetujú všetky pripojené displeje. Táto akcia je nevratná.`,waitingToBoot:`Čakanie na naštartovanie panelu...`,panelBackOnline:`Smart Panel je opäť online.`,rebootTakesTooLong:`Reštart trvá dlhšie ako sa očakávalo. Skontrolujte panel manuálne.`,rebootFailed:`Nepodarilo sa reštartovať Smart Panel. Skúste to znova alebo skontrolujte zariadenie manuálne.`,powerOffFailed:`Nepodarilo sa vypnúť Smart Panel. Skúste to znova alebo skontrolujte zariadenie manuálne.`,factoryResetSuccess:`Všetky dáta boli vymazané. Začnime odznova — prihláste sa na začatie.`,factoryResetFailed:`Nepodarilo sa vykonať továrenský reset Smart Panelu. Skúste to znova alebo skontrolujte zariadenie manuálne.`},misc:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`},update:{confirmInstall:`Naozaj chcete aktualizovať na verziu {version}?`,majorUpdateWarning:`Toto je aktualizácia hlavnej verzie na {version}. Hlavné aktualizácie môžu obsahovať zlomové zmeny. Naozaj chcete pokračovať?`,confirmTitle:`Inštalovať aktualizáciu`,updateStarted:`Proces aktualizácie bol spustený. Systém sa automaticky reštartuje.`,updateComplete:`Aktualizácia bola úspešne dokončená!`,updateFailed:`Aktualizácia zlyhala. Skontrolujte systémové logy pre detaily.`,checkFailed:`Nepodarilo sa skontrolovať aktualizácie. Skúste to prosím neskôr.`,installFailed:`Nepodarilo sa spustiť aktualizáciu. Skúste to prosím neskôr.`}},texts:{system:{loadingSystemInfo:`Načítavanie systémových informácií...`,about:`FastyBird Smart Panel je aplikácia na automatizáciu domácnosti, ktorá umožňuje bezproblémovú integráciu s vašimi inteligentnými zariadeniami a ponúka vylepšené možnosti ovládania a monitorovania.`},manage:{rebootDevice:`Reštartujte zariadenie na aplikovanie zmien alebo vyriešenie problémov.`,rebootGateway:`Reštartujte bránu na aplikovanie zmien alebo vyriešenie problémov. Pripojené displeje dočasne stratia konektivitu.`,powerOffDevice:`Úplne vypnite zariadenie.`,powerOffGateway:`Úplne vypnite bránu. Pripojené displeje stratia konektivitu.`,factoryResetDevice:`Obnovte zariadenie do pôvodného továrenského nastavenia.`,factoryResetGateway:`Vymažte všetky dáta brány a resetujte všetky pripojené displeje do továrenského nastavenia.`,rebootInProcess:`Smart Panel sa reštartuje...`,powerOffInProcess:`Smart Panel sa vypína...`,factoryResetInProcess:`Smart Panel sa resetuje do továrenského stavu...`,factoryResetWaiting:`Čakanie na reštart Smart Panelu po továrenskom resete...`,factoryResetTimeout:`Továrenský reset trvá dlhšie ako sa očakávalo. Skontrolujte zariadenie manuálne.`,poweredOff:`Môžete zavrieť toto okno — nie je potrebná žiadna ďalšia akcia.`,systemLogs:`Zobraziť a diagnostikovať aplikačné logy.`},update:{available:`Dostupná aktualizácia`,upToDate:`Váš systém je aktuálny.`,checking:`Kontrola aktualizácií...`,installing:`Inštalácia aktualizácie...`,waitingForRestart:`Služba sa reštartuje, počkajte prosím...`,noVersionInfo:`Nie je možné získať informácie o verzii.`},systemLogs:{loadingLogs:`Načítavanie aplikačných logov...`,noLogs:`Neboli zaznamenané žiadne aplikačné logy.`,noFilteredLogs:`Neboli nájdené žiadne aplikačné logy zodpovedajúce aktívnym filtrom`,noMessage:`Tento záznam logu je bez dodatočnej správy`,noMoreEntries:`Žiadne ďalšie záznamy logov`},aboutLanguageSettings:`Nakonfigurujte jazyk rozhrania, časové pásmo, formát času a merné jednotky pre Smart Panel. Tieto nastavenia ovplyvňujú spôsob zobrazovania dátumov, časov, teplôt a meraní v celom systéme.`,aboutSystemSettings:`Spravujte celosystémovú konfiguráciu logovania. Vyberte, ktoré úrovne závažnosti logov sa majú monitorovať a zobrazovať v aplikačných logoch.`,aboutHouseModeSettings:`Nastavte aktuálny režim domu na ovládanie správania Smart Panelu a pripojených zariadení. Režim Doma je pre bežné obývanie, režim Preč keď nie je nikto doma a režim Noc pre spánok.`},fields:{config:{language:{title:`Jazyk`,description:`Jazyk aplikácie`,placeholder:`Vyberte jazyk`,values:{english:`Angličtina`,czech:`Čeština`,german:`Nemčina`,spanish:`Španielčina`,polish:`Poľština`,slovak:`Slovenčina`},validation:{required:`Jazyk je povinný`}},timezone:{title:`Časové pásmo`,description:`Systémové časové pásmo`,placeholder:`Vyberte časové pásmo`,validation:{required:`Časové pásmo je povinné`}},timeFormat:{title:`Formát času`,description:`Formát zobrazenia času`,placeholder:`Vyberte formát času`,values:{hour12:`12-hodinový`,hour24:`24-hodinový`},validation:{required:`Formát času je povinný`}},numberFormat:{title:`Formát čísiel`,description:`Formát čísiel pre oddeľovače tisícov a desatinné oddeľovače`,placeholder:`Vyberte formát čísiel`,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)`},validation:{required:`Formát čísiel je povinný`}},temperatureUnit:{title:`Jednotka teploty`,description:`Jednotka zobrazenia teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`},validation:{required:`Jednotka teploty je povinná`}},windSpeedUnit:{title:`Jednotka rýchlosti vetra`,description:`Jednotka zobrazenia rýchlosti vetra`,placeholder:`Vyberte jednotku rýchlosti vetra`,values:{ms:`Metre za sekundu (m/s)`,kmh:`Kilometre za hodinu (km/h)`,mph:`Míle za hodinu (mph)`,knots:`Uzly (kn)`},validation:{required:`Jednotka rýchlosti vetra je povinná`}},pressureUnit:{title:`Jednotka tlaku`,description:`Jednotka zobrazenia tlaku`,placeholder:`Vyberte jednotku tlaku`,values:{hpa:`Hektopascal (hPa)`,mbar:`Milibar (mbar)`,inhg:`Palce ortuťového stĺpca (inHg)`,mmhg:`Milimetre ortuťového stĺpca (mmHg)`},validation:{required:`Jednotka tlaku je povinná`}},precipitationUnit:{title:`Jednotka zrážok`,description:`Jednotka zobrazenia zrážok`,placeholder:`Vyberte jednotku zrážok`,values:{mm:`Milimetre (mm)`,inches:`Palce (in)`},validation:{required:`Jednotka zrážok je povinná`}},distanceUnit:{title:`Jednotka vzdialenosti`,description:`Jednotka zobrazenia vzdialenosti`,placeholder:`Vyberte jednotku vzdialenosti`,values:{km:`Kilometre (km)`,miles:`Míle (mi)`,meters:`Metre (m)`,feet:`Stopy (ft)`},validation:{required:`Jednotka vzdialenosti je povinná`}},logLevels:{title:`Úrovne logovania`,description:`Povolené úrovne logovania`,placeholder:`Vyberte, ktoré úrovne logovania majú byť monitorované`,values:{silent:`Tichý`,verbose:`Podrobný`,debug:`Debug`,trace:`Trace`,log:`Log`,info:`Info`,success:`Úspech`,warn:`Varovanie`,error:`Chyba`,fail:`Zlyhanie`,fatal:`Fatálne`},validation:{required:`Musí byť vybraná aspoň jedna úroveň logovania`,min:`Musí byť vybraná aspoň jedna úroveň logovania`}},houseMode:{title:`Režim domu`,description:`Aktuálne nastavenie režimu domu`,placeholder:`Vyberte režim domu`,values:{home:`Doma`,away:`Preč`,night:`Noc`},validation:{required:`Režim domu je povinný`}}},systemLogs:{search:{title:`Vyhľadávanie`,placeholder:`Vyhľadať logy...`},timestamp:{title:`Časová značka`},ingestedAt:{title:`Prijaté o`},source:{title:`Zdroj`},level:{title:`Úroveň`},message:{title:`Správa`,noMessage:`Žiadna správa`},tag:{title:`Značka`},user:{title:`Používateľ`},appVersion:{title:`Verzia aplikácie`},url:{title:`URL`},userAgent:{title:`User agent`},locale:{title:`Jazyk`},args:{title:`Argumenty`},rawJson:{title:`Raw JSON`}}},filters:{systemLogs:{levels:{title:`Filtrovať podľa úrovne logu`},sources:{title:`Filtrovať podľa zdroja logu`},tag:{title:`Filtrovať podľa značky`,placeholder:`Hľadať podľa značky...`}}},buttons:{about:{title:`O aplikácii`},manage:{title:`Spravovať systém`},resetFilters:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},reset:{title:`Resetovať`},edit:{title:`Upraviť`},discard:{title:`Zahodiť`},cancel:{title:`Zrušiť`},close:{title:`Zavrieť`},save:{title:`Uložiť`},copyJson:{title:`Kopírovať JSON`},liveTail:{title:`Živý prenos`},paused:{title:`Pozastavené`},loadMore:{title:`Načítať viac`},update:{checkForUpdates:`Skontrolovať aktualizácie`,installUpdate:`Inštalovať aktualizáciu`}},labels:{update:{currentVersion:`Aktuálna verzia`,latestVersion:`Najnovšia verzia`,lastChecked:`Naposledy skontrolované`,updateStatus:`Stav`,actions:`Akcie`}},systemInfo:{cpuLoad:`Záťaž CPU`,memoryUsage:`Využitie pamäte`,cpuTemperature:`Teplota CPU`,gpuTemperature:`Teplota GPU`,osPlatform:`Platforma`,osDistro:`Distribúcia`,osRelease:`Verzia`,uptime:`Doba behu systému`,networkInterface:`Rozhranie`,ip4Address:`IP adresa`,ip6Address:`IPv6 adresa`,macAddress:`MAC adresa`,undervoltage:`Detekované podpätie`,frequencyCapping:`Frekvencia obmedzená`,throttling:`Aktívne obmedzovanie CPU`,softTempLimit:`Dosiahnutý mäkký teplotný limit`},states:{ok:`Všetko v poriadku`,error:`Zistený problém`},levels:{silent:`Tichý`,fatal:`Fatálne`,error:`Chyba`,warn:`Varovanie`,log:`Log`,info:`Info`,success:`Úspech`,fail:`Zlyhanie`,ready:`Pripravený`,start:`Štart`,box:`Box`,debug:`Debug`,trace:`Trace`,verbose:`Podrobný`},sources:{admin:`Administračná aplikácia`,display:`Aplikácia displeja`,backend:`Backend aplikácie`,other:`Ostatné`}},Xi={"cs-CZ":Wi,"de-DE":Gi,"en-US":Ki,"es-ES":qi,"pl-PL":Ji,"sk-SK":Yi},Zi=it.extend({language:M([`en_US`,`cs_CZ`,`de_DE`,`es_ES`,`pl_PL`,`sk_SK`]),timezone:B().min(1),timeFormat:M([`12h`,`24h`]),numberFormat:M([`comma_dot`,`dot_comma`,`space_comma`,`none`]),temperatureUnit:M([`celsius`,`fahrenheit`]),windSpeedUnit:M([`ms`,`kmh`,`mph`,`knots`]),pressureUnit:M([`hpa`,`mbar`,`inhg`,`mmhg`]),precipitationUnit:M([`mm`,`inches`]),distanceUnit:M([`km`,`miles`,`meters`,`feet`]),logLevels:N(M([`silent`,`verbose`,`debug`,`trace`,`log`,`info`,`success`,`warn`,`error`,`fail`,`fatal`])).min(1),houseMode:M([`home`,`away`,`night`])}),Qi=Ye.extend({type:Dt(pe),language:M([`en_US`,`cs_CZ`,`de_DE`,`es_ES`,`pl_PL`,`sk_SK`]),timezone:B(),timeFormat:M([`12h`,`24h`]),numberFormat:M([`comma_dot`,`dot_comma`,`space_comma`,`none`]),temperatureUnit:M([`celsius`,`fahrenheit`]),windSpeedUnit:M([`ms`,`kmh`,`mph`,`knots`]),pressureUnit:M([`hpa`,`mbar`,`inhg`,`mmhg`]),precipitationUnit:M([`mm`,`inches`]),distanceUnit:M([`km`,`miles`,`meters`,`feet`]),logLevels:N(M([`silent`,`verbose`,`debug`,`trace`,`log`,`info`,`success`,`warn`,`error`,`fail`,`fatal`])),houseMode:M([`home`,`away`,`night`])}),$i=Be.and(I({type:Dt(pe),language:M([`en_US`,`cs_CZ`,`de_DE`,`es_ES`,`pl_PL`,`sk_SK`]).optional(),timezone:B().optional(),time_format:M([`12h`,`24h`]).optional(),number_format:M([`comma_dot`,`dot_comma`,`space_comma`,`none`]).optional(),temperature_unit:M([`celsius`,`fahrenheit`]).optional(),wind_speed_unit:M([`ms`,`kmh`,`mph`,`knots`]).optional(),pressure_unit:M([`hpa`,`mbar`,`inhg`,`mmhg`]).optional(),precipitation_unit:M([`mm`,`inches`]).optional(),distance_unit:M([`km`,`miles`,`meters`,`feet`]).optional(),log_levels:N(M([`silent`,`verbose`,`debug`,`trace`,`log`,`info`,`success`,`warn`,`error`,`fail`,`fatal`])).optional(),house_mode:M([`home`,`away`,`night`]).optional()}));Qe.and(I({type:Dt(pe),language:M([`en_US`,`cs_CZ`,`de_DE`,`es_ES`,`pl_PL`,`sk_SK`]),timezone:B(),time_format:M([`12h`,`24h`]),number_format:M([`comma_dot`,`dot_comma`,`space_comma`,`none`]),temperature_unit:M([`celsius`,`fahrenheit`]),wind_speed_unit:M([`ms`,`kmh`,`mph`,`knots`]),pressure_unit:M([`hpa`,`mbar`,`inhg`,`mmhg`]),precipitation_unit:M([`mm`,`inches`]),distance_unit:M([`km`,`miles`,`meters`,`feet`]),log_levels:N(M([`silent`,`verbose`,`debug`,`trace`,`log`,`info`,`success`,`warn`,`error`,`fail`,`fatal`])),house_mode:M([`home`,`away`,`night`])}));var ea={class:`flex flex-row items-center align-center w-full h-full`},ta={class:`mx-a w-[28rem]`},na={class:`block w-[8rem] my-0 mx-a`},ra={class:`text-center capitalize mx-0 my-8 font-300 font-size-[1.8rem]`,"data-test-id":`maintenance-heading`},ia={key:1,class:`mb-5`},aa={class:`block w-[8rem] my-0 mx-a`},oa={class:`text-center capitalize mx-0 my-8 font-300 font-size-[1.8rem]`},sa={class:`text-center`},ca={class:`flex flex-row justify-center items-center mb-5`,"data-test-id":`social-links`},la={class:`flex flex-row justify-center items-baseline gap-[0.5rem]`},ua=l({name:`LayoutMaintenance`,__name:`layout-maintenance`,setup(e){let{t:n}=_(),r=ie(),{isMDDevice:i}=nt(),o=C(()=>{switch(r.name){case U.FACTORY_RESET:return`mdi:backup-restore`;case U.REBOOTING:return`mdi:restart`;default:return`mdi:power`}}),c=C(()=>{switch(r.name){case U.FACTORY_RESET:return n(`systemModule.headings.manage.factoryReset`);case U.REBOOTING:return n(`systemModule.headings.manage.rebooting`);default:return n(`systemModule.headings.manage.poweredOff`)}});return(e,n)=>{let r=d(`router-view`);return t(),D(`div`,ea,[b(`div`,ta,[p(i)?(t(),v(p(Je),{key:0,class:`mb-5`},{default:s(()=>[b(`div`,na,[O(p(a),{size:130},{default:s(()=>[O(p(T),{icon:o.value,class:`color-brand-primary`},null,8,[`icon`])]),_:1})]),b(`h1`,ra,x(c.value),1),O(r)]),_:1})):(t(),D(`div`,ia,[b(`div`,aa,[O(p(a),{size:130},{default:s(()=>[O(p(T),{icon:o.value,class:`color-brand-primary`},null,8,[`icon`])]),_:1})]),b(`h1`,oa,x(c.value),1),O(r)])),b(`div`,sa,[b(`div`,ca,[O(p(ve),{underline:`never`,href:`https://github.com/fastybird`,target:`_blank`,class:`mx-5`},{icon:s(()=>[O(p(a),{size:20},{default:s(()=>[O(p(T),{icon:`mdi:github`})]),_:1})]),_:1}),O(p(le),{direction:`vertical`}),O(p(ve),{underline:`never`,href:`https://x.com/fastybird`,target:`_blank`,class:`mx-5`},{icon:s(()=>[O(p(a),{size:20},{default:s(()=>[O(p(T),{icon:`fa6-brands:x-twitter`})]),_:1})]),_:1}),O(p(le),{direction:`vertical`}),O(p(ve),{underline:`never`,href:`https://discord.gg/HPRJ2GzK`,target:`_blank`,class:`mx-5`},{icon:s(()=>[O(p(a),{size:20},{default:s(()=>[O(p(T),{icon:`mdi:discord`})]),_:1})]),_:1}),O(p(le),{direction:`vertical`}),O(p(ve),{underline:`never`,href:`https://www.facebook.com/fastybird`,target:`_blank`,class:`mx-5`},{icon:s(()=>[O(p(a),{size:20},{default:s(()=>[O(p(T),{icon:`mdi:facebook`})]),_:1})]),_:1})]),b(`div`,la,[n[1]||=h(` © `,-1),O(p(ve),{href:`https://smart-panel.fastybird.com`,target:`_blank`,"data-test-id":`author-link`},{default:s(()=>[...n[0]||=[h(` FastyBird Team `,-1)]]),_:1}),n[2]||=h(` 2024 `,-1)])])])])}}}),da={class:`text-center`},fa={class:`font-size-[0.9rem]`},pa={class:`text-center`},ma={class:`font-size-[0.9rem] font-bold`},ha=180*1e3,ga=l({name:`ViewFactoryReset`,__name:`view-factory-reset`,setup(e){let{t:n}=_(),i=E(!1),o=null,l=Date.now(),u=async()=>{try{if((await fetch(`/api/v1/modules/system/system/health`)).ok){window.location.href=`/sign/in`;return}}catch{}if(Date.now()-l>ha){i.value=!0;return}o=setTimeout(u,3e3)};return r(()=>{o=setTimeout(u,3e3)}),c(()=>{o&&clearTimeout(o)}),(e,r)=>(t(),D(`div`,da,[i.value?(t(),v(p(he),{key:1,type:`warning`,closable:!1,center:``},{default:s(()=>[b(`div`,pa,[b(`span`,ma,x(p(n)(`systemModule.texts.manage.factoryResetTimeout`)),1)])]),_:1})):(t(),D(S,{key:0},[O(p(a),{class:`is-loading mb-4`,size:40},{default:s(()=>[O(p(T),{icon:`mdi:loading`})]),_:1}),b(`p`,fa,x(p(n)(`systemModule.texts.manage.factoryResetWaiting`)),1)],64))]))}}),_a={class:`text-center`},va={class:`font-size-[0.9rem] font-bold`},ya=l({name:`ViewPowerOff`,__name:`view-power-off`,setup(e){let{t:n}=_();return(e,r)=>(t(),v(p(he),{type:`info`,closable:!1,class:`my-6!`,center:``},{default:s(()=>[b(`div`,_a,[b(`span`,va,x(p(n)(`systemModule.subHeadings.poweredOff`)),1),r[0]||=b(`br`,null,null,-1),h(` `+x(p(n)(`systemModule.texts.manage.poweredOff`)),1)])]),_:1}))}}),ba={class:`text-center`},xa={class:`font-size-[0.9rem]`},Sa={class:`text-center`},Ca={class:`font-size-[0.9rem] font-bold`},wa=120*1e3,Ta=l({name:`ViewRebooting`,__name:`view-rebooting`,setup(e){let{t:n}=_(),i=E(!1),o=null,l=Date.now(),u=async()=>{try{if((await fetch(`/api/v1/modules/system/system/health`)).ok){de.success(n(`systemModule.messages.manage.panelBackOnline`)),window.location.href=`/`;return}}catch{}if(Date.now()-l>wa){i.value=!0;return}o=setTimeout(u,3e3)};return r(()=>{o=setTimeout(u,3e3)}),c(()=>{o&&clearTimeout(o)}),(e,r)=>(t(),D(`div`,ba,[i.value?(t(),v(p(he),{key:1,type:`warning`,closable:!1,center:``},{default:s(()=>[b(`div`,Sa,[b(`span`,Ca,x(p(n)(`systemModule.messages.manage.rebootTakesTooLong`)),1)])]),_:1})):(t(),D(S,{key:0},[O(p(a),{class:`is-loading mb-4`,size:40},{default:s(()=>[O(p(T),{icon:`mdi:loading`})]),_:1}),b(`p`,xa,x(p(n)(`systemModule.messages.manage.waitingToBoot`)),1)],64))]))}}),Ea=[{path:`/maintenance`,name:U.MAINTENANCE,component:ua,meta:{title:`Maintenance`,icon:`mdi:hammer`},redirect:()=>({name:U.SYSTEM_INFO}),children:[{path:`power-off`,name:U.POWER_OFF,component:ya,meta:{title:`System power off`,icon:`mdi:power`}},{path:`factory-reset`,name:U.FACTORY_RESET,component:ga,meta:{title:`Factory reset`,icon:`mdi:backup-restore`}},{path:`rebooting`,name:U.REBOOTING,component:Ta,meta:{title:`System reboot`,icon:`mdi:restart`}}]}],Da=[{path:`system`,name:U.SYSTEM,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:()=>ft.global.t(`systemModule.menu.title`),icon:`mdi:hammer`,menu:4e3},redirect:()=>({name:U.SYSTEM_INFO}),children:[{path:`info`,name:U.SYSTEM_INFO,component:()=>z(()=>import(`./view-system-info-AVyQIUWe.js`),__vite__mapDeps([35,1,2,3,4,5,11,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`System information`,icon:`mdi:cellphone-information`}},{path:`logs`,name:U.SYSTEM_LOGS,component:()=>z(()=>import(`./view-system-logs-eIoNhI5c.js`),__vite__mapDeps([36,1,2,3,4,5,11,22,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`System logs`,icon:`mdi:console`},children:[{path:`:id`,name:U.SYSTEM_LOG_DETAIL,component:()=>z(()=>import(`./view-system-log-detail-sgFgbNjX.js`),__vite__mapDeps([37,1,2,3,4,5,11,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:`Log detail`,icon:`mdi:note-text-outline`}}]}]}],Oa=20,ka=2e3,Aa=new Set([`password`,`token`,`secret`,`authorization`]),ja={silent:R.silent,success:R.success,fail:R.fail,ready:R.debug,start:R.debug,box:R.debug,fatal:R.fatal,error:R.error,warn:R.warn,log:R.log,info:R.info,debug:R.debug,trace:R.trace,verbose:R.verbose},Ma={silent:0,trace:0,verbose:1,debug:1,info:2,log:2,success:2,warn:3,error:5,fail:5,fatal:6},Na=class{queue=[];timer=null;flushing=!1;reporter;onUnload;constructor(e,t,n,r){this.logger=e,this.store=t,this.i18n=n,this.accountManager=r}start(){typeof window<`u`&&(this.onUnload=()=>{if(this.queue.length){let e=this.queue.slice();this.queue=[],this.store.add({data:e})}},window.addEventListener(`beforeunload`,this.onUnload),window.addEventListener(`pagehide`,this.onUnload)),this.reporter={log:e=>{try{let t=ja[e.type]??R.info,n=e.level??Ma[t],r=typeof window<`u`,i=this.i18n.global?.locale??(`locale`in this.i18n?this.i18n.locale:r?window.navigator.language:void 0),a={ts:(e.date??new Date).toISOString(),level:n,type:t,tag:e.tag||void 0,user:{id:this.accountManager?.details.value?.id},context:{appVersion:`0.1.0-alpha.5`,url:r?window.location.href:void 0,userAgent:r?window.navigator.userAgent:void 0,locale:typeof i==`string`?i:i?.value}},o=(e.args??[]).map(this.safeSerialize);if(typeof o[0]==`string`){a.message=o[0];let e=o.slice(1);a.args=e.length?e.map(this.toWireArg):void 0}else a.args=o.length?o.map(this.toWireArg):void 0;let s=this.redact(a);this.enqueue(s)}catch{}}},this.logger.addReporter(this.reporter)}dispose(){if(this.reporter&&=(this.logger.removeReporter(this.reporter),void 0),this.onUnload&&=(window.removeEventListener(`beforeunload`,this.onUnload),window.removeEventListener(`pagehide`,this.onUnload),void 0),this.timer&&=(clearTimeout(this.timer),null),this.queue.length){let e=this.queue.slice();this.queue=[],this.store.add({data:e})}}enqueue(e){this.queue.push(e),this.queue.length>=Oa?(this.timer&&clearTimeout(this.timer),this.flushQueue()):this.timer||=setTimeout(()=>void this.flushQueue(),ka)}async flushQueue(){if(!(this.flushing||!this.queue.length)){this.flushing=!0;try{let e=this.queue.slice(0,Oa);this.queue=this.queue.slice(Oa),e.length&&await this.store.add({data:e})}catch{}finally{this.flushing=!1,this.queue.length?(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>void this.flushQueue(),ka)):this.timer=null}}}safeSerialize(e){if(e instanceof Error){let{name:t,message:n,stack:r}=e,i=e.cause;return i===void 0?{name:t,message:n,stack:r}:{name:t,message:n,stack:r,cause:i}}return e instanceof Headers?Object.fromEntries(e.entries()):e instanceof Date?e.toISOString():e}toWireArg(e){if(e==null)return null;if(Array.isArray(e))return e.map(this.toScalar);if(typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=this.toScalar(r);return t}return this.toScalar(e)}toScalar(e){if(e==null)return null;switch(typeof e){case`string`:case`number`:case`boolean`:return e;case`object`:return e instanceof Date?e.toISOString():e instanceof Error?`${e.name}: ${e.message}`:this.safeJson(e);default:return String(e)}}safeJson(e){let t=new WeakSet;try{return JSON.stringify(e,(e,n)=>{if(typeof n==`object`&&n){if(t.has(n))return`[Circular]`;t.add(n)}return n})}catch{return String(e)}}redact(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(e=>this.redact(e));let t={};for(let[n,r]of Object.entries(e))t[n]=Aa.has(n.toLowerCase())?`[REDACTED]`:this.redact(r);return t}},Pa=Symbol(`FB-System-Module-SystemLogsReporterService`),Fa=(e,t)=>{e.provide(Pa,t)},Ia=I({cpuLoad:P(),memory:I({total:P(),used:P(),free:P()}),storage:N(I({fs:B(),used:P(),size:P(),available:P()})),primaryStorage:I({fs:B(),used:P(),size:P(),available:P()}),temperature:I({cpu:P().nullable().optional(),gpu:P().nullable().optional()}),os:I({platform:B(),distro:B(),release:B(),uptime:P(),node:B(),npm:B().nullable(),timezone:B()}),network:N(I({interface:B(),rxBytes:P(),txBytes:P()})),defaultNetwork:I({interface:B(),ip4:B(),ip6:B(),mac:B(),hostname:B()}),display:I({resolutionX:P(),resolutionY:P(),currentResX:P(),currentResY:P()}),process:I({pid:P(),uptime:P()})});I({getting:k()}),I({data:ue({})}),I({data:I({cpuLoad:P(),memory:I({total:P(),used:P(),free:P()}),storage:N(I({fs:B(),used:P(),size:P(),available:P()})),primaryStorage:I({fs:B(),used:P(),size:P(),available:P()}),temperature:I({cpu:P().nullable().optional(),gpu:P().nullable().optional()}),os:I({platform:B(),distro:B(),release:B(),uptime:P(),node:B(),npm:B().nullable(),timezone:B()}),network:N(I({interface:B(),rxBytes:P(),txBytes:P()})),defaultNetwork:I({interface:B(),ip4:B(),ip6:B(),mac:B(),hostname:B()}),display:I({resolutionX:P(),resolutionY:P(),currentResX:P(),currentResY:P()}),process:I({pid:P(),uptime:P()})})}),I({cpu_load:P(),memory:I({total:P(),used:P(),free:P()}),storage:N(I({fs:B(),used:P(),size:P(),available:P()})),primary_storage:I({fs:B(),used:P(),size:P(),available:P()}),temperature:I({cpu:P().nullable().optional(),gpu:P().nullable().optional()}),os:I({platform:B(),distro:B(),release:B(),uptime:P(),node:B(),npm:B().nullable(),timezone:B()}),network:N(I({interface:B(),rx_bytes:P(),tx_bytes:P()})),default_network:I({interface:B(),ip4:B(),ip6:B(),mac:B(),hostname:B()}),display:I({resolution_x:P(),resolution_y:P(),current_res_x:P(),current_res_y:P()}),process:I({pid:P(),uptime:P()})});var La=I({undervoltage:k(),frequencyCapping:k(),throttling:k(),softTempLimit:k()});I({getting:k()}),I({data:ue({})}),I({data:I({undervoltage:k(),frequencyCapping:k(),throttling:k(),softTempLimit:k()})}),I({undervoltage:k(),frequency_capping:k(),throttling:k(),soft_temp_limit:k()});var Ra=e=>{let t=Ia.safeParse(Ze(e));if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new sn(`Failed to validate received system info data.`);return t.data},za={getting:!1},Ba=Re(`system_module-system_info`,()=>{let e=Ct(),t=ke(),n=E(za),r=E(!1),i=E(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:Ra(e.data)}),l=e=>{let n=Ia.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new sn(`Failed to insert system info.`);return i.value=i.value??null,i.value=n.data};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new cn(`Already getting system info.`);n.value.getting=!0;let t=await e.client.GET(`/${w}/${xt}/system/info`);try{let{data:e,error:n,response:r}=t;if(e!==void 0)return i.value=Ra(e.data),i.value;let a=`Failed to fetch system info.`;throw n&&(a=H(n,a)),new cn(a,r.status)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),Va=e=>Ba(e),Ha=e=>{let t=La.safeParse(Ze(e));if(!t.success)throw V.error(`Schema validation failed with:`,t.error),new sn(`Failed to validate received throttle status data.`);return t.data},Ua={getting:!1},Wa=Re(`system_module-throttle_status`,()=>{let e=Ct(),t=ke(),n=E(Ua),r=E(!1),i=E(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:Ha(e.data)}),l=e=>{let n=La.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new sn(`Failed to insert throttle status.`);return i.value=i.value??null,i.value=n.data};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new cn(`Already getting throttle status.`);n.value.getting=!0;let t=await e.client.GET(`/${w}/${xt}/system/throttle`);try{let{data:e,error:n,response:r}=t;if(e!==void 0)return i.value=Ha(e.data),i.value;if(r.status===400)return null;let a=`Failed to fetch throttle status.`;throw n&&(a=H(n,a)),new cn(a,r.status)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),Ga=e=>Wa(e),Ka={fetching:{items:!1},creating:[],deleting:[]},qa=Re(`system_module-logs`,()=>{let e=Ct(),t=ke(),n=E(Ka),r=E(!1),i=E(void 0),a=E(!1),o=E({}),s=()=>r.value,c=()=>n.value.fetching.items,l=()=>Object.values(o.value),u=e=>o.value[e]??null,d={},f=e=>p({id:e.id,data:un(e.data)}),p=e=>{if(e.id&&o.value&&e.id in o.value){let n=dn.safeParse({...o.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new sn(`Failed to insert log entry.`);return o.value[n.data.id]=n.data}let n=dn.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new sn(`Failed to insert log entry.`);return o.value=o.value??{},o.value[n.data.id]=n.data};return{semaphore:n,firstLoad:r,hasMore:a,nextCursor:i,data:o,firstLoadFinished:s,fetching:c,findAll:l,findById:u,onEvent:f,set:p,unset:e=>{o.value&&delete o.value[e.id]},fetch:async t=>{let s=d[t?.afterId?t.afterId:`first`];if(s)return s;let c=(async()=>{if(n.value.fetching.items)throw new cn(`Already fetching logs entries.`);n.value.fetching.items=!0;try{let{data:n,error:s,response:c}=await e.client.GET(`/${w}/${xt}/logs`,{params:{query:{after_id:t?.afterId,limit:t?.limit}}});if(n!==void 0){let e=Object.fromEntries(n.data.map(e=>{let t=un(e);return[t.id,t]}));return o.value=t?.append?{...o.value,...e}:e,r.value=!0,a.value=n.metadata.has_more,i.value=n.metadata.next_cursor,Object.values(o.value)}let l=`Failed to fetch logs entries.`;throw s&&(l=H(s,l)),new cn(l,c.status)}finally{n.value.fetching.items=!1}})();d[t?.afterId?t.afterId:`first`]=c;try{return await c}finally{delete d[t?.afterId?t.afterId:`first`]}},add:async n=>{let r=ln.safeParse(n);if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new sn(`Failed to add logs entries.`);let i=N(dn).safeParse(r.data.data);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new sn(`Failed to add logs entries.`);let{data:a,error:o,response:s}=await e.client.POST(`/${w}/${xt}/logs`,{body:{data:fn(i.data)}});if(a!==void 0){let e=[];return a.data.rejected>0&&(a.data.errors||[]).forEach(t=>{e.push({entry:i.data[t.index],reason:t.reason})}),{}}let c=`Failed to create log entry.`;throw o&&(c=H(o,c)),new cn(c,s.status)}}}),Ja=e=>qa(e),Ya=Symbol(`FB-Module-System`),Xa={install:(e,t)=>{let n=je(e),r=we(e),i=me(e),a=Pe(e),o=be(e),s=`VITEST`in{BASE_URL:`/`,DEV:!1,FB_ADMIN_PORT:`80`,FB_ADMIN_UI_PATH:``,FB_APP_HOST:`http://127.0.0.1`,FB_BACKEND_PORT:`3000`,MODE:`production`,PROD:!0,SSR:!1}&&void 0;for(let[e,n]of Object.entries(Xi)){let r=(0,$.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{systemModule:n});t.i18n.global.setLocaleMessage(e,r)}let c=Va(t.store);e.provide(Xe,c),n.addStore(Xe,c);let l=Ga(t.store);e.provide(Ve,l),n.addStore(Ve,l);let u=Ja(t.store);e.provide($e,u),n.addStore($e,u),t.router.getRoutes().find(e=>e.name===te.ROOT)&&Da.forEach(e=>{t.router.addRoute(te.ROOT,e)}),Ea.forEach(e=>{t.router.addRoute(e)});let d=new yt(e,t.router,t.i18n.global);Et(e,d);let f=new Na(i,u,t.i18n,a);Fa(e,f),o.addModule(Ya,{type:pe,name:`System`,description:`Monitor system health, review logs, and perform maintenance tasks.`,elements:[{type:vt,components:{moduleConfigEditForm:se},schemas:{moduleConfigSchema:Qi,moduleConfigEditFormSchema:Zi,moduleConfigUpdateReqSchema:$i},modules:[Tt]}],modules:[Tt],isCore:!0}),r.on(`event`,e=>{if(e?.event?.startsWith(`SystemModule.`)&&typeof e.payload==`object`){switch(e.event){case Ge.SYSTEM_REBOOT:e.payload&&`status`in e.payload&&(e.payload.status===`processing`||e.payload.status===`ok`)&&d.reboot();break;case Ge.SYSTEM_POWER_OFF:e.payload&&`status`in e.payload&&(e.payload.status===`processing`||e.payload.status===`ok`)&&d.powerOff();break;case Ge.SYSTEM_FACTORY_RESET:e.payload&&`status`in e.payload&&(e.payload.status===`processing`?d.setFactoryResetTrigger(`event`):e.payload.status===`ok`&&d.factoryResetDone());break;case Ge.SYSTEM_INFO:c.onEvent({data:e.payload});break;case Ge.SYSTEM_UPDATE_STATUS:case Ge.SYSTEM_UPDATE_PROGRESS:gt(e.payload);break;default:i.warn(`Unhandled system module event:`,e.event)}typeof window<`u`&&s&&f.start()}})}},Za={class:`flex flex-col items-center gap-3`},Qa={class:`font-bold text-2xl`},$a={class:`flex flex-row items-start gap-1`},eo={class:`font-bold text-4xl`},to={class:`text-lg text-gray-400`},no=l({name:`WeatherDay`,__name:`weather-day`,setup(n){let{t:r}=_(),{weatherDay:o,fetchWeatherDay:c,isLoading:l}=Jt(),{configModule:u,fetchConfigModule:d}=Ne({type:Rt}),f=C(()=>o.value?.temperature||null),m=C(()=>u.value?.unit===`fahrenheit`?`°F`:`°C`),ee=C(()=>o.value===null?`wi:na`:pn(o.value.weather.code,o.value.sunrise,o.value.sunset)),g=C(()=>{if(o.value===null)return r(`weatherModule.conditions.unknown`);switch(o.value.weather.code){case 200:return r(`weatherModule.conditions.thunderstormWithLightRain`);case 201:return r(`weatherModule.conditions.thunderstormWithRain`);case 202:return r(`weatherModule.conditions.thunderstormWithHeavyRain`);case 210:return r(`weatherModule.conditions.lightThunderstorm`);case 211:return r(`weatherModule.conditions.thunderstorm`);case 212:return r(`weatherModule.conditions.heavyThunderstorm`);case 221:return r(`weatherModule.conditions.raggedThunderstorm`);case 230:return r(`weatherModule.conditions.thunderstormWithLightDrizzle`);case 231:return r(`weatherModule.conditions.thunderstormWithDrizzle`);case 232:return r(`weatherModule.conditions.thunderstormWithHeavyDrizzle`);case 300:return r(`weatherModule.conditions.lightIntensityDrizzle`);case 301:return r(`weatherModule.conditions.drizzle`);case 302:return r(`weatherModule.conditions.heavyIntensityDrizzle`);case 310:return r(`weatherModule.conditions.lightIntensityDrizzleRain`);case 311:return r(`weatherModule.conditions.drizzleRain`);case 312:return r(`weatherModule.conditions.heavyIntensityDrizzleRain`);case 313:return r(`weatherModule.conditions.showerRainAndDrizzle`);case 314:return r(`weatherModule.conditions.heavyShowerRainAndDrizzle`);case 321:return r(`weatherModule.conditions.showerDrizzle`);case 500:return r(`weatherModule.conditions.lightRain`);case 501:return r(`weatherModule.conditions.moderateRain`);case 502:return r(`weatherModule.conditions.heavyIntensityRain`);case 503:return r(`weatherModule.conditions.veryHeavyRain`);case 504:return r(`weatherModule.conditions.extremeRain`);case 511:return r(`weatherModule.conditions.freezingRain`);case 520:return r(`weatherModule.conditions.lightIntensityShowerRain`);case 521:return r(`weatherModule.conditions.showerRain`);case 522:return r(`weatherModule.conditions.heavyIntensityShowerRain`);case 531:return r(`weatherModule.conditions.raggedShowerRain`);case 600:return r(`weatherModule.conditions.lightSnow`);case 601:return r(`weatherModule.conditions.snow`);case 602:return r(`weatherModule.conditions.heavySnow`);case 611:return r(`weatherModule.conditions.sleet`);case 612:return r(`weatherModule.conditions.lightShowerSleet`);case 613:return r(`weatherModule.conditions.showerSleet`);case 615:return r(`weatherModule.conditions.lightRainAndSnow`);case 616:return r(`weatherModule.conditions.rainAndSnow`);case 620:return r(`weatherModule.conditions.lightShowerSnow`);case 621:return r(`weatherModule.conditions.showerSnow`);case 622:return r(`weatherModule.conditions.heavyShowerSnow`);case 701:return r(`weatherModule.conditions.mist`);case 711:return r(`weatherModule.conditions.smoke`);case 721:return r(`weatherModule.conditions.haze`);case 731:return r(`weatherModule.conditions.dust`);case 741:return r(`weatherModule.conditions.fog`);case 751:return r(`weatherModule.conditions.sand`);case 761:return r(`weatherModule.conditions.dust`);case 762:return r(`weatherModule.conditions.volcanicAsh`);case 771:return r(`weatherModule.conditions.squalls`);case 781:return r(`weatherModule.conditions.tornado`);case 800:return r(`weatherModule.conditions.clearSky`);case 801:return r(`weatherModule.conditions.fewClouds`);case 802:return r(`weatherModule.conditions.scatteredClouds`);case 803:return r(`weatherModule.conditions.brokenClouds`);case 804:return r(`weatherModule.conditions.overcastClouds`);default:return r(`weatherModule.conditions.unknown`)}});return i(async()=>{d().catch(e=>{throw new It(`Something went wrong`,e)}),c().catch(e=>{throw new It(`Something went wrong`,e)})}),(n,i)=>e((t(),v(p(Je),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:s(()=>[h(x(p(r)(`weatherModule.headings.weather`)),1)]),default:s(()=>[b(`div`,Za,[O(p(a),{class:`mr-2`,size:80},{default:s(()=>[O(p(T),{icon:ee.value},null,8,[`icon`])]),_:1}),b(`span`,Qa,x(g.value),1),b(`span`,$a,[b(`span`,eo,x(f.value===null?`-`:p(st)(f.value,{maximumFractionDigits:1})),1),b(`span`,to,x(m.value),1)])])]),_:1})),[[p(_e),p(l)]])}}),ro=l({name:`WeatherConfigForm`,__name:`weather-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:St.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:Ae.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:r}){let a=e,o=r,{t:c}=_(),{formEl:l,model:u,formChanged:d,submit:h,formResult:ee}=ht({config:a.config,messages:{success:c(`weatherModule.messages.config.edited`),error:c(`weatherModule.messages.config.notEdited`)}}),{locations:y,areLoading:b,fetchLocations:te}=Zt(),x=g({});return i(()=>{b.value||te().catch(e=>{throw new It(`Failed to fetch locations`,e)})}),f(()=>ee.value,async e=>{o(`update:remote-form-result`,e)}),f(()=>a.remoteFormSubmit,async e=>{e&&(o(`update:remote-form-submit`,!1),h().catch(()=>{}))}),f(()=>a.remoteFormReset,e=>{if(o(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),f(()=>d.value,e=>{o(`update:remote-form-changed`,e)}),(e,r)=>(t(),v(p(xe),{ref_key:`formEl`,ref:l,model:p(u),rules:x,"label-position":`top`,"status-icon":``},{default:s(()=>[O(p(he),{type:`info`,title:p(c)(`weatherModule.headings.aboutPrimaryLocation`),description:p(c)(`weatherModule.texts.aboutPrimaryLocation`),closable:!1},null,8,[`title`,`description`]),O(p(Ee),{label:p(c)(`weatherModule.fields.config.primaryLocation.title`),prop:`primaryLocationId`,class:`mt-3`},{default:s(()=>[O(p(wt),{modelValue:p(u).primaryLocationId,"onUpdate:modelValue":r[0]||=e=>p(u).primaryLocationId=e,placeholder:p(c)(`weatherModule.fields.config.primaryLocation.placeholder`),name:`primaryLocationId`,clearable:``,loading:p(b)},{default:s(()=>[(t(!0),D(S,null,n(p(y),e=>(t(),v(p(ze),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),p(y).length===0&&!p(b)?(t(),v(p(he),{key:0,type:`warning`,title:p(c)(`weatherModule.messages.locations.noLocations`),closable:!1,class:`mt-3`},null,8,[`title`])):m(``,!0)]),_:1},8,[`model`,`rules`]))}});l({name:`LocationEditForm`,__name:`location-edit-form`,props:{location:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Lt.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:{"update:remote-form-submit":e=>typeof e==`boolean`,"update:remote-form-result":e=>typeof e==`string`,"update:remote-form-reset":e=>typeof e==`boolean`,"update:remote-form-changed":e=>typeof e==`boolean`},setup(e,{emit:n}){let r=e,i=n,{t:a}=_(),{model:o,formEl:c,formChanged:l,submit:d}=$t({id:C(()=>r.location.id)}),m={name:[{required:!0,message:a(`weatherModule.fields.locations.name.validation.required`),trigger:`blur`}]},h=async()=>{if(c.value){if(i(`update:remote-form-result`,Lt.WORKING),!await c.value.validate().catch(()=>!1)){i(`update:remote-form-result`,Lt.NONE);return}try{await d(),i(`update:remote-form-result`,Lt.OK)}catch{i(`update:remote-form-result`,Lt.ERROR),setTimeout(()=>{i(`update:remote-form-result`,Lt.NONE)},2e3)}}};return f(()=>r.remoteFormSubmit,e=>{e&&(i(`update:remote-form-submit`,!1),h())}),f(()=>r.remoteFormReset,e=>{e&&(i(`update:remote-form-reset`,!1),c.value?.resetFields())}),f(()=>l.value,e=>{i(`update:remote-form-changed`,e)}),(e,n)=>(t(),v(p(xe),{ref_key:`formEl`,ref:c,model:p(o),rules:m,"label-position":`top`,"status-icon":``,onSubmit:ae(h,[`prevent`])},{default:s(()=>[O(p(Ee),{label:p(a)(`weatherModule.fields.locations.name.title`),prop:`name`},{default:s(()=>[O(p(Me),{modelValue:p(o).name,"onUpdate:modelValue":n[0]||=e=>p(o).name=e,placeholder:p(a)(`weatherModule.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),u(e.$slots,`extra-fields`)]),_:3},8,[`model`]))}});var io={menu:{title:`Lokality počasí`},headings:{weather:`Počasí`,aboutPrimaryLocation:`Primární lokace`,locations:`Meteorologické lokace`,locationDetail:`{location}`,forecast:`Předpověď`,hourlyForecast:`Hodinová předpověď`,addLocation:`Přidat lokaci`,editLocation:`Upravit lokaci`,deleteLocation:`Smazat lokaci`,bulkDeleteLocations:`Smazat lokace`,discard:`Zahodit změny`,selectProvider:`Vyberte poskytovatele počasí`,unsupportedProvider:`Nepodporovaný poskytovatel`,adjustFilters:`Upravit filtry`},subHeadings:{locations:`Správa lokací meteorologických dat`,locationDetail:`Informace o počasí pro {location}`,addLocation:`Přidat novou meteorologickou lokaci`,editLocation:`Upravit podrobnosti lokace`,adjustFilters:`Přizpůsobit filtry seznamu lokací`},breadcrumbs:{locations:`lokace`,locationDetail:`lokace: {location}`,addLocation:`přidat lokaci`,editLocation:`upravit lokaci`},messages:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,requestError:`Při načítání dat došlo k chybě`,config:{edited:`Konfigurace počasí byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci počasí`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,updated:`Lokace "{location}" byla aktualizována`,notUpdated:`Nepodařilo se aktualizovat lokaci "{location}"`,deleted:`Lokace byla smazána`,notDeleted:`Nepodařilo se smazat lokaci`,deleteCanceled:`Smazání lokace "{location}" bylo zrušeno`,confirmBulkDelete:`Opravdu chcete smazat {count} lokací?`,bulkDeleted:`{count} lokací bylo smazáno`,bulkDeleteFailed:`Nepodařilo se smazat {count} lokací`,bulkDeleteCanceled:`Hromadné smazání lokací bylo zrušeno`,noLocations:`Žádné lokace nejsou nakonfigurovány. Přidejte lokaci pro získání dat o počasí.`,notFound:`Lokace nebyla nalezena`,confirmDeleteLocation:`Opravdu chcete smazat lokaci "{name}"?`,deletedWhileEditing:`Lokace byla smazána. Přesměrování...`}},buttons:{add:{title:`Přidat`},save:{title:`Uložit`},cancel:{title:`Zrušit`},discard:{title:`Zahodit`},resetFilters:{title:`Resetovat filtry`},yes:{title:`Ano`},no:{title:`Ne`},reset:{title:`Resetovat filtry`},detail:{title:`Detail`},retry:{title:`Opakovat`},back:{title:`Zpět`}},fields:{locations:{search:{placeholder:`Hledat lokace...`},provider:{title:`Poskytovatel počasí`,placeholder:`Vyberte poskytovatele meteorologických dat`},name:{title:`Název lokace`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název lokace je povinný`}}},config:{primaryLocation:{title:`Primární lokace`,description:`Výchozí lokace zobrazená v widgetech počasí`,placeholder:`Vyberte primární lokaci`}}},texts:{aboutPrimaryLocation:`Vyberte primární lokaci pro zobrazení ve widgetech počasí. Lokace lze spravovat v sekci Lokace. Data o počasí budou načítána pro všechny nakonfigurované lokace.`,selectProvider:`Vyberte poskytovatele meteorologických dat pro přidání nové lokace. Různí poskytovatelé mohou nabízet různé možnosti konfigurace.`,unsupportedProvider:`Vybraný poskytovatel "{provider}" není momentálně podporován. Vyberte prosím jiného poskytovatele.`,weatherError:`Nelze načíst počasí`,weatherErrorDescription:`Data o počasí se nepodařilo načíst pro tuto lokaci. Zkontrolujte prosím konfiguraci API a zkuste to znovu.`,locationDetail:{provider:`Poskytovatel`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmínky`,humidity:`Vlhkost`,wind:`Vítr`,pressure:`Tlak`},misc:{loadingLocations:`Načítání lokací...`,noLocations:`Zatím nejsou nakonfigurovány žádné lokace`,noFilteredLocations:`Žádné lokace neodpovídají kritériím filtru`}},filters:{locations:{types:{title:`Poskytovatel počasí`},primary:{title:`Stav primární lokace`,values:{all:`Vše`,primary:`Primární`,secondary:`Sekundární`}}}},table:{columns:{name:{title:`Název`},weather:{title:`Počasí`,failed:`Selhalo`,error:`Nepodařilo se načíst data o počasí. Zkontrolujte prosím konfiguraci API.`},type:{title:`Poskytovatel`},primary:{title:`Primární`,values:{yes:`Ano`,no:`Ne`}}}},meta:{locations:{list:{title:`Meteorologické lokace`},detail:{title:`Detail meteorologické lokace`},add:{title:`Přidat meteorologickou lokaci`},edit:{title:`Upravit meteorologickou lokaci`}}},conditions:{thunderstormWithLightRain:`Bouřka s lehkým deštěm`,thunderstormWithRain:`Bouřka s deštěm`,thunderstormWithHeavyRain:`Bouřka se silným deštěm`,lightThunderstorm:`Slabá bouřka`,thunderstorm:`Bouřka`,heavyThunderstorm:`Silná bouřka`,raggedThunderstorm:`Přeháňková bouřka`,thunderstormWithLightDrizzle:`Bouřka s lehkým mrholením`,thunderstormWithDrizzle:`Bouřka s mrholením`,thunderstormWithHeavyDrizzle:`Bouřka se silným mrholením`,lightIntensityDrizzle:`Slabé mrholení`,drizzle:`Mrholení`,heavyIntensityDrizzle:`Silné mrholení`,lightIntensityDrizzleRain:`Slabý déšť s mrholením`,drizzleRain:`Déšť s mrholením`,heavyIntensityDrizzleRain:`Silný déšť s mrholením`,showerRainAndDrizzle:`Přeháňky s mrholením`,heavyShowerRainAndDrizzle:`Silné přeháňky s mrholením`,showerDrizzle:`Přeháňkové mrholení`,lightRain:`Lehký déšť`,moderateRain:`Mírný déšť`,heavyIntensityRain:`Silný déšť`,veryHeavyRain:`Velmi silný déšť`,extremeRain:`Extrémní déšť`,freezingRain:`Mrznoucí déšť`,lightIntensityShowerRain:`Slabé přeháňky`,showerRain:`Přeháňky`,heavyIntensityShowerRain:`Silné přeháňky`,raggedShowerRain:`Nepravidelné přeháňky`,lightSnow:`Lehké sněžení`,snow:`Sněžení`,heavySnow:`Silné sněžení`,sleet:`Plískanice`,lightShowerSleet:`Slabá plískanice`,showerSleet:`Přeháňková plískanice`,lightRainAndSnow:`Lehký déšť se sněhem`,rainAndSnow:`Déšť se sněhem`,lightShowerSnow:`Slabé sněhové přeháňky`,showerSnow:`Sněhové přeháňky`,heavyShowerSnow:`Silné sněhové přeháňky`,mist:`Mlha`,smoke:`Kouř`,haze:`Opar`,fog:`Hustá mlha`,sand:`Písek`,dust:`Prach`,volcanicAsh:`Vulkanický popel`,squalls:`Poryvy větru`,tornado:`Tornádo`,clearSky:`Jasno`,fewClouds:`Málo oblačno`,scatteredClouds:`Rozptýlená oblačnost`,brokenClouds:`Oblačno s přeháňkami`,overcastClouds:`Zataženo`,unknown:`Neznámé`}},ao={menu:{title:`Wetterstandorte`},headings:{weather:`Wetter`,aboutPrimaryLocation:`Primärer Standort`,locations:`Wetterstandorte`,locationDetail:`{location}`,forecast:`Vorhersage`,hourlyForecast:`Stundenvorhersage`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`,deleteLocation:`Standort löschen`,bulkDeleteLocations:`Standorte löschen`,discard:`Änderungen verwerfen`,selectProvider:`Wetteranbieter auswählen`,unsupportedProvider:`Nicht unterstützter Anbieter`,adjustFilters:`Filter anpassen`},subHeadings:{locations:`Wetterdaten-Standorte verwalten`,locationDetail:`Wetterinformationen für {location}`,addLocation:`Neuen Wetterstandort hinzufügen`,editLocation:`Standortdetails bearbeiten`,adjustFilters:`Standortlistenfilter anpassen`},breadcrumbs:{locations:`Standorte`,locationDetail:`Standort: {location}`,addLocation:`Standort hinzufügen`,editLocation:`Standort bearbeiten`},messages:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,requestError:`Beim Laden der Daten ist ein Fehler aufgetreten`,config:{edited:`Wetterkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Wetterkonfiguration fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,updated:`Standort "{location}" wurde aktualisiert`,notUpdated:`Standort "{location}" konnte nicht aktualisiert werden`,deleted:`Standort wurde gelöscht`,notDeleted:`Standort konnte nicht gelöscht werden`,deleteCanceled:`Löschung von Standort "{location}" wurde abgebrochen`,confirmBulkDelete:`Sind Sie sicher, dass Sie {count} Standort(e) löschen möchten?`,bulkDeleted:`{count} Standort(e) wurden gelöscht`,bulkDeleteFailed:`Löschen von {count} Standort(en) fehlgeschlagen`,bulkDeleteCanceled:`Massenlöschung von Standorten wurde abgebrochen`,noLocations:`Keine Standorte konfiguriert. Fügen Sie einen Standort hinzu, um Wetterdaten zu erhalten.`,notFound:`Standort nicht gefunden`,confirmDeleteLocation:`Sind Sie sicher, dass Sie den Standort "{name}" löschen möchten?`,deletedWhileEditing:`Der Standort wurde gelöscht. Weiterleitung...`}},buttons:{add:{title:`Hinzufügen`},save:{title:`Speichern`},cancel:{title:`Abbrechen`},discard:{title:`Verwerfen`},resetFilters:{title:`Filter zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},reset:{title:`Filter zurücksetzen`},detail:{title:`Details`},retry:{title:`Wiederholen`},back:{title:`Zurück`}},fields:{locations:{search:{placeholder:`Standorte suchen...`},provider:{title:`Wetteranbieter`,placeholder:`Wetterdatenanbieter auswählen`},name:{title:`Standortname`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Standortname ist erforderlich`}}},config:{primaryLocation:{title:`Primärer Standort`,description:`Der Standardstandort, der in Wetteranzeigen angezeigt wird`,placeholder:`Primären Standort auswählen`}}},texts:{aboutPrimaryLocation:`Wählen Sie den primären Standort für die Anzeige in Wetter-Widgets. Standorte können im Standort-Bereich verwaltet werden. Wetterdaten werden für alle konfigurierten Standorte abgerufen.`,selectProvider:`Wählen Sie einen Wetterdatenanbieter, um einen neuen Standort hinzuzufügen. Verschiedene Anbieter bieten möglicherweise unterschiedliche Konfigurationsoptionen.`,unsupportedProvider:`Der ausgewählte Anbieter "{provider}" wird derzeit nicht unterstützt. Bitte wählen Sie einen anderen Anbieter.`,weatherError:`Wetter konnte nicht geladen werden`,weatherErrorDescription:`Wetterdaten konnten für diesen Standort nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration und versuchen Sie es erneut.`,locationDetail:{provider:`Anbieter`,temperature:`Temperatur`,feelsLike:`Gefühlt wie`,conditions:`Bedingungen`,humidity:`Luftfeuchtigkeit`,wind:`Wind`,pressure:`Luftdruck`},misc:{loadingLocations:`Standorte werden geladen...`,noLocations:`Noch keine Standorte konfiguriert`,noFilteredLocations:`Keine Standorte entsprechen Ihren Filterkriterien`}},filters:{locations:{types:{title:`Wetteranbieter`},primary:{title:`Primärstatus`,values:{all:`Alle`,primary:`Primär`,secondary:`Sekundär`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Wetter`,failed:`Fehlgeschlagen`,error:`Wetterdaten konnten nicht geladen werden. Bitte überprüfen Sie Ihre API-Konfiguration.`},type:{title:`Anbieter`},primary:{title:`Primär`,values:{yes:`Ja`,no:`Nein`}}}},meta:{locations:{list:{title:`Wetterstandorte`},detail:{title:`Wetterstandort-Details`},add:{title:`Wetterstandort hinzufügen`},edit:{title:`Wetterstandort bearbeiten`}}},conditions:{thunderstormWithLightRain:`Gewitter mit leichtem Regen`,thunderstormWithRain:`Gewitter mit Regen`,thunderstormWithHeavyRain:`Gewitter mit starkem Regen`,lightThunderstorm:`Leichtes Gewitter`,thunderstorm:`Gewitter`,heavyThunderstorm:`Starkes Gewitter`,raggedThunderstorm:`Unbeständiges Gewitter`,thunderstormWithLightDrizzle:`Gewitter mit leichtem Nieselregen`,thunderstormWithDrizzle:`Gewitter mit Nieselregen`,thunderstormWithHeavyDrizzle:`Gewitter mit starkem Nieselregen`,lightIntensityDrizzle:`Leichter Nieselregen`,drizzle:`Nieselregen`,heavyIntensityDrizzle:`Starker Nieselregen`,lightIntensityDrizzleRain:`Leichter Niesel-Regen`,drizzleRain:`Niesel-Regen`,heavyIntensityDrizzleRain:`Starker Niesel-Regen`,showerRainAndDrizzle:`Schauerregen mit Nieselregen`,heavyShowerRainAndDrizzle:`Starker Schauerregen mit Nieselregen`,showerDrizzle:`Nieselschauer`,lightRain:`Leichter Regen`,moderateRain:`Mäßiger Regen`,heavyIntensityRain:`Starker Regen`,veryHeavyRain:`Sehr starker Regen`,extremeRain:`Extremer Regen`,freezingRain:`Gefrierender Regen`,lightIntensityShowerRain:`Leichter Schauerregen`,showerRain:`Schauerregen`,heavyIntensityShowerRain:`Starker Schauerregen`,raggedShowerRain:`Unbeständiger Schauerregen`,lightSnow:`Leichter Schneefall`,snow:`Schnee`,heavySnow:`Starker Schneefall`,sleet:`Schneeregen`,lightShowerSleet:`Leichter Schneeregenschauer`,showerSleet:`Schneeregenschauer`,lightRainAndSnow:`Leichter Regen und Schnee`,rainAndSnow:`Regen und Schnee`,lightShowerSnow:`Leichter Schneeschauer`,showerSnow:`Schneeschauer`,heavyShowerSnow:`Starker Schneeschauer`,mist:`Dunst`,smoke:`Rauch`,haze:`Diesig`,fog:`Nebel`,sand:`Sand`,dust:`Staub`,volcanicAsh:`Vulkanasche`,squalls:`Böen`,tornado:`Tornado`,clearSky:`Klarer Himmel`,fewClouds:`Wenige Wolken`,scatteredClouds:`Vereinzelte Wolken`,brokenClouds:`Aufgelockerte Bewölkung`,overcastClouds:`Bedeckt`,unknown:`Unbekannt`}},oo={menu:{title:`Weather locations`},headings:{weather:`Weather`,aboutPrimaryLocation:`Primary location`,locations:`Weather locations`,locationDetail:`{location}`,forecast:`Forecast`,hourlyForecast:`Hourly forecast`,addLocation:`Add location`,editLocation:`Edit location`,deleteLocation:`Delete location`,bulkDeleteLocations:`Delete locations`,discard:`Discard changes`,selectProvider:`Select a weather provider`,unsupportedProvider:`Unsupported provider`,adjustFilters:`Adjust filters`},subHeadings:{locations:`Manage weather data locations`,locationDetail:`Weather information for {location}`,addLocation:`Add a new weather location`,editLocation:`Edit location details`,adjustFilters:`Customize location list filters`},breadcrumbs:{locations:`locations`,locationDetail:`location: {location}`,addLocation:`add location`,editLocation:`edit location`},messages:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,requestError:`An error occurred while loading data`,config:{edited:`Weather configuration has been successfully updated`,notEdited:`Failed to update weather configuration`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,updated:`Location "{location}" has been updated`,notUpdated:`Failed to update location "{location}"`,deleted:`Location has been deleted`,notDeleted:`Failed to delete location`,deleteCanceled:`Location "{location}" deletion was canceled`,confirmBulkDelete:`Are you sure you want to delete {count} location(s)?`,bulkDeleted:`{count} location(s) have been deleted`,bulkDeleteFailed:`Failed to delete {count} location(s)`,bulkDeleteCanceled:`Bulk location deletion was canceled`,noLocations:`No locations configured. Add a location to get weather data.`,notFound:`Location not found`,confirmDeleteLocation:`Are you sure you want to delete location "{name}"?`,deletedWhileEditing:`The location was deleted. Redirecting...`}},buttons:{add:{title:`Add`},save:{title:`Save`},cancel:{title:`Cancel`},discard:{title:`Discard`},resetFilters:{title:`Reset filters`},yes:{title:`Yes`},no:{title:`No`},reset:{title:`Reset filters`},detail:{title:`Detail`},retry:{title:`Retry`},back:{title:`Back`}},fields:{locations:{search:{placeholder:`Search locations...`},provider:{title:`Weather provider`,placeholder:`Choose a weather data provider`},name:{title:`Location name`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Location name is required`}}},config:{primaryLocation:{title:`Primary location`,description:`The default location shown in weather displays`,placeholder:`Select primary location`}}},texts:{aboutPrimaryLocation:`Select the primary location to display in weather widgets. Locations can be managed in the Locations section. Weather data will be fetched for all configured locations.`,selectProvider:`Choose a weather data provider to add a new location. Different providers may offer different configuration options.`,unsupportedProvider:`The selected provider "{provider}" is not currently supported. Please select a different provider.`,weatherError:`Unable to Load Weather`,weatherErrorDescription:`Weather data could not be loaded for this location. Please check your API configuration and try again.`,locationDetail:{provider:`Provider`,temperature:`Temperature`,feelsLike:`Feels Like`,conditions:`Conditions`,humidity:`Humidity`,wind:`Wind`,pressure:`Pressure`},misc:{loadingLocations:`Loading locations...`,noLocations:`No locations configured yet`,noFilteredLocations:`No locations match your filter criteria`}},filters:{locations:{types:{title:`Weather provider`},primary:{title:`Primary status`,values:{all:`All`,primary:`Primary`,secondary:`Secondary`}}}},table:{columns:{name:{title:`Name`},weather:{title:`Weather`,failed:`Failed`,error:`Failed to load weather data. Please check your API configuration.`},type:{title:`Provider`},primary:{title:`Primary`,values:{yes:`Yes`,no:`No`}}}},meta:{locations:{list:{title:`Weather Locations`},detail:{title:`Weather Location Detail`},add:{title:`Add Weather Location`},edit:{title:`Edit Weather Location`}}},conditions:{thunderstormWithLightRain:`Thunderstorm with light rain`,thunderstormWithRain:`Thunderstorm with rain`,thunderstormWithHeavyRain:`Thunderstorm with heavy rain`,lightThunderstorm:`Light thunderstorm`,thunderstorm:`Thunderstorm`,heavyThunderstorm:`Heavy thunderstorm`,raggedThunderstorm:`Ragged thunderstorm`,thunderstormWithLightDrizzle:`Thunderstorm with light drizzle`,thunderstormWithDrizzle:`Thunderstorm with drizzle`,thunderstormWithHeavyDrizzle:`Thunderstorm with heavy drizzle`,lightIntensityDrizzle:`Light intensity drizzle`,drizzle:`Drizzle`,heavyIntensityDrizzle:`Heavy intensity drizzle`,lightIntensityDrizzleRain:`Light intensity drizzle rain`,drizzleRain:`Drizzle rain`,heavyIntensityDrizzleRain:`Heavy intensity drizzle rain`,showerRainAndDrizzle:`Shower rain and drizzle`,heavyShowerRainAndDrizzle:`Heavy shower rain and drizzle`,showerDrizzle:`Shower drizzle`,lightRain:`Light rain`,moderateRain:`Moderate rain`,heavyIntensityRain:`Heavy intensity rain`,veryHeavyRain:`Very heavy rain`,extremeRain:`Extreme rain`,freezingRain:`Freezing rain`,lightIntensityShowerRain:`Light intensity shower rain`,showerRain:`Shower rain`,heavyIntensityShowerRain:`Heavy intensity shower rain`,raggedShowerRain:`Ragged shower rain`,lightSnow:`Light snow`,snow:`Snow`,heavySnow:`Heavy snow`,sleet:`Sleet`,lightShowerSleet:`Light shower sleet`,showerSleet:`Shower sleet`,lightRainAndSnow:`Light rain and snow`,rainAndSnow:`Rain and snow`,lightShowerSnow:`Light shower snow`,showerSnow:`Shower snow`,heavyShowerSnow:`Heavy shower snow`,mist:`Mist`,smoke:`Smoke`,haze:`Haze`,fog:`Fog`,sand:`Sand`,dust:`Dust`,volcanicAsh:`Volcanic ash`,squalls:`Squalls`,tornado:`Tornado`,clearSky:`Clear sky`,fewClouds:`Few clouds`,scatteredClouds:`Scattered clouds`,brokenClouds:`Broken clouds`,overcastClouds:`Overcast clouds`,unknown:`Unknown`}},so={menu:{title:`Ubicaciones meteorológicas`},headings:{weather:`Clima`,aboutPrimaryLocation:`Ubicación principal`,locations:`Ubicaciones meteorológicas`,locationDetail:`{location}`,forecast:`Pronóstico`,hourlyForecast:`Pronóstico por horas`,addLocation:`Añadir ubicación`,editLocation:`Editar ubicación`,deleteLocation:`Eliminar ubicación`,bulkDeleteLocations:`Eliminar ubicaciones`,discard:`Descartar cambios`,selectProvider:`Seleccionar un proveedor meteorológico`,unsupportedProvider:`Proveedor no compatible`,adjustFilters:`Ajustar filtros`},subHeadings:{locations:`Gestionar ubicaciones de datos meteorológicos`,locationDetail:`Información meteorológica de {location}`,addLocation:`Añadir una nueva ubicación meteorológica`,editLocation:`Editar detalles de la ubicación`,adjustFilters:`Personalizar filtros de la lista de ubicaciones`},breadcrumbs:{locations:`ubicaciones`,locationDetail:`ubicación: {location}`,addLocation:`añadir ubicación`,editLocation:`editar ubicación`},messages:{confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`,requestError:`Ocurrió un error al cargar los datos`,config:{edited:`La configuración meteorológica se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración meteorológica`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`Error al crear la ubicación "{location}"`,updated:`La ubicación "{location}" ha sido actualizada`,notUpdated:`Error al actualizar la ubicación "{location}"`,deleted:`La ubicación ha sido eliminada`,notDeleted:`Error al eliminar la ubicación`,deleteCanceled:`La eliminación de la ubicación "{location}" fue cancelada`,confirmBulkDelete:`¿Estás seguro de que deseas eliminar {count} ubicación(es)?`,bulkDeleted:`{count} ubicación(es) han sido eliminadas`,bulkDeleteFailed:`Error al eliminar {count} ubicación(es)`,bulkDeleteCanceled:`La eliminación masiva de ubicaciones fue cancelada`,noLocations:`No hay ubicaciones configuradas. Añade una ubicación para obtener datos meteorológicos.`,notFound:`Ubicación no encontrada`,confirmDeleteLocation:`¿Estás seguro de que deseas eliminar la ubicación "{name}"?`,deletedWhileEditing:`La ubicación fue eliminada. Redirigiendo...`}},buttons:{add:{title:`Añadir`},save:{title:`Guardar`},cancel:{title:`Cancelar`},discard:{title:`Descartar`},resetFilters:{title:`Restablecer filtros`},yes:{title:`Sí`},no:{title:`No`},reset:{title:`Restablecer filtros`},detail:{title:`Detalle`},retry:{title:`Reintentar`},back:{title:`Volver`}},fields:{locations:{search:{placeholder:`Buscar ubicaciones...`},provider:{title:`Proveedor meteorológico`,placeholder:`Elige un proveedor de datos meteorológicos`},name:{title:`Nombre de la ubicación`,placeholder:`ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre de la ubicación es obligatorio`}}},config:{primaryLocation:{title:`Ubicación principal`,description:`La ubicación predeterminada que se muestra en los widgets meteorológicos`,placeholder:`Seleccionar ubicación principal`}}},texts:{aboutPrimaryLocation:`Selecciona la ubicación principal para mostrar en los widgets meteorológicos. Las ubicaciones se pueden gestionar en la sección de Ubicaciones. Los datos meteorológicos se obtendrán para todas las ubicaciones configuradas.`,selectProvider:`Elige un proveedor de datos meteorológicos para añadir una nueva ubicación. Los diferentes proveedores pueden ofrecer diferentes opciones de configuración.`,unsupportedProvider:`El proveedor seleccionado "{provider}" no está soportado actualmente. Por favor selecciona un proveedor diferente.`,weatherError:`No se puede cargar el clima`,weatherErrorDescription:`No se pudieron cargar los datos meteorológicos para esta ubicación. Por favor verifica tu configuración de API e inténtalo de nuevo.`,locationDetail:{provider:`Proveedor`,temperature:`Temperatura`,feelsLike:`Sensación térmica`,conditions:`Condiciones`,humidity:`Humedad`,wind:`Viento`,pressure:`Presión`},misc:{loadingLocations:`Cargando ubicaciones...`,noLocations:`Aún no hay ubicaciones configuradas`,noFilteredLocations:`Ninguna ubicación coincide con los criterios de filtro`}},filters:{locations:{types:{title:`Proveedor meteorológico`},primary:{title:`Estado de principal`,values:{all:`Todas`,primary:`Principal`,secondary:`Secundaria`}}}},table:{columns:{name:{title:`Nombre`},weather:{title:`Clima`,failed:`Error`,error:`Error al cargar datos meteorológicos. Por favor verifica tu configuración de API.`},type:{title:`Proveedor`},primary:{title:`Principal`,values:{yes:`Sí`,no:`No`}}}},meta:{locations:{list:{title:`Ubicaciones meteorológicas`},detail:{title:`Detalle de ubicación meteorológica`},add:{title:`Añadir ubicación meteorológica`},edit:{title:`Editar ubicación meteorológica`}}},conditions:{thunderstormWithLightRain:`Tormenta con lluvia ligera`,thunderstormWithRain:`Tormenta con lluvia`,thunderstormWithHeavyRain:`Tormenta con lluvia intensa`,lightThunderstorm:`Tormenta ligera`,thunderstorm:`Tormenta`,heavyThunderstorm:`Tormenta intensa`,raggedThunderstorm:`Tormenta irregular`,thunderstormWithLightDrizzle:`Tormenta con llovizna ligera`,thunderstormWithDrizzle:`Tormenta con llovizna`,thunderstormWithHeavyDrizzle:`Tormenta con llovizna intensa`,lightIntensityDrizzle:`Llovizna de intensidad ligera`,drizzle:`Llovizna`,heavyIntensityDrizzle:`Llovizna de intensidad fuerte`,lightIntensityDrizzleRain:`Lluvia con llovizna ligera`,drizzleRain:`Lluvia con llovizna`,heavyIntensityDrizzleRain:`Lluvia con llovizna intensa`,showerRainAndDrizzle:`Chaparrón con llovizna`,heavyShowerRainAndDrizzle:`Chaparrón intenso con llovizna`,showerDrizzle:`Llovizna intermitente`,lightRain:`Lluvia ligera`,moderateRain:`Lluvia moderada`,heavyIntensityRain:`Lluvia de intensidad fuerte`,veryHeavyRain:`Lluvia muy intensa`,extremeRain:`Lluvia extrema`,freezingRain:`Lluvia helada`,lightIntensityShowerRain:`Chaparrón ligero`,showerRain:`Chaparrón`,heavyIntensityShowerRain:`Chaparrón intenso`,raggedShowerRain:`Chaparrón irregular`,lightSnow:`Nieve ligera`,snow:`Nieve`,heavySnow:`Nieve intensa`,sleet:`Aguanieve`,lightShowerSleet:`Aguanieve ligera intermitente`,showerSleet:`Aguanieve intermitente`,lightRainAndSnow:`Lluvia ligera con nieve`,rainAndSnow:`Lluvia con nieve`,lightShowerSnow:`Nevada ligera intermitente`,showerSnow:`Nevada intermitente`,heavyShowerSnow:`Nevada intensa intermitente`,mist:`Neblina`,smoke:`Humo`,haze:`Bruma`,fog:`Niebla`,sand:`Arena`,dust:`Polvo`,volcanicAsh:`Ceniza volcánica`,squalls:`Ráfagas`,tornado:`Tornado`,clearSky:`Cielo despejado`,fewClouds:`Pocas nubes`,scatteredClouds:`Nubes dispersas`,brokenClouds:`Nubosidad parcial`,overcastClouds:`Cielo cubierto`,unknown:`Desconocido`}},co={menu:{title:`Lokalizacje pogodowe`},headings:{weather:`Pogoda`,aboutPrimaryLocation:`Lokalizacja główna`,locations:`Lokalizacje pogody`,locationDetail:`{location}`,forecast:`Prognoza`,hourlyForecast:`Prognoza godzinowa`,addLocation:`Dodaj lokalizację`,editLocation:`Edytuj lokalizację`,deleteLocation:`Usuń lokalizację`,bulkDeleteLocations:`Usuń lokalizacje`,discard:`Odrzuć zmiany`,selectProvider:`Wybierz dostawcę pogody`,unsupportedProvider:`Nieobsługiwany dostawca`,adjustFilters:`Dostosuj filtry`},subHeadings:{locations:`Zarządzaj lokalizacjami danych pogodowych`,locationDetail:`Informacje pogodowe dla {location}`,addLocation:`Dodaj nową lokalizację pogody`,editLocation:`Edytuj szczegóły lokalizacji`,adjustFilters:`Dostosuj filtry listy lokalizacji`},breadcrumbs:{locations:`lokalizacje`,locationDetail:`lokalizacja: {location}`,addLocation:`dodaj lokalizację`,editLocation:`edytuj lokalizację`},messages:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,requestError:`Wystąpił błąd podczas ładowania danych`,config:{edited:`Konfiguracja pogody została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji pogody`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,updated:`Lokalizacja "{location}" została zaktualizowana`,notUpdated:`Nie udało się zaktualizować lokalizacji "{location}"`,deleted:`Lokalizacja została usunięta`,notDeleted:`Nie udało się usunąć lokalizacji`,deleteCanceled:`Usuwanie lokalizacji "{location}" zostało anulowane`,confirmBulkDelete:`Czy na pewno chcesz usunąć {count} lokalizacji?`,bulkDeleted:`Usunięto {count} lokalizacji`,bulkDeleteFailed:`Nie udało się usunąć {count} lokalizacji`,bulkDeleteCanceled:`Masowe usuwanie lokalizacji zostało anulowane`,noLocations:`Brak skonfigurowanych lokalizacji. Dodaj lokalizację, aby uzyskać dane pogodowe.`,notFound:`Lokalizacja nie znaleziona`,confirmDeleteLocation:`Czy na pewno chcesz usunąć lokalizację "{name}"?`,deletedWhileEditing:`Lokalizacja została usunięta. Przekierowywanie...`}},buttons:{add:{title:`Dodaj`},save:{title:`Zapisz`},cancel:{title:`Anuluj`},discard:{title:`Odrzuć`},resetFilters:{title:`Resetuj filtry`},yes:{title:`Tak`},no:{title:`Nie`},reset:{title:`Resetuj filtry`},detail:{title:`Szczegóły`},retry:{title:`Ponów`},back:{title:`Wstecz`}},fields:{locations:{search:{placeholder:`Szukaj lokalizacji...`},provider:{title:`Dostawca pogody`,placeholder:`Wybierz dostawcę danych pogodowych`},name:{title:`Nazwa lokalizacji`,placeholder:`np. Dom, Biuro, Domek letniskowy`,validation:{required:`Nazwa lokalizacji jest wymagana`}}},config:{primaryLocation:{title:`Lokalizacja główna`,description:`Domyślna lokalizacja wyświetlana w widżetach pogody`,placeholder:`Wybierz lokalizację główną`}}},texts:{aboutPrimaryLocation:`Wybierz główną lokalizację do wyświetlania w widżetach pogody. Lokalizacjami można zarządzać w sekcji Lokalizacje. Dane pogodowe będą pobierane dla wszystkich skonfigurowanych lokalizacji.`,selectProvider:`Wybierz dostawcę danych pogodowych, aby dodać nową lokalizację. Różni dostawcy mogą oferować różne opcje konfiguracji.`,unsupportedProvider:`Wybrany dostawca "{provider}" nie jest obecnie obsługiwany. Proszę wybrać innego dostawcę.`,weatherError:`Nie udało się załadować pogody`,weatherErrorDescription:`Nie udało się załadować danych pogodowych dla tej lokalizacji. Sprawdź konfigurację API i spróbuj ponownie.`,locationDetail:{provider:`Dostawca`,temperature:`Temperatura`,feelsLike:`Odczuwalna`,conditions:`Warunki`,humidity:`Wilgotność`,wind:`Wiatr`,pressure:`Ciśnienie`},misc:{loadingLocations:`Ładowanie lokalizacji...`,noLocations:`Nie skonfigurowano jeszcze żadnych lokalizacji`,noFilteredLocations:`Żadne lokalizacje nie pasują do kryteriów filtra`}},filters:{locations:{types:{title:`Dostawca pogody`},primary:{title:`Status głównej`,values:{all:`Wszystkie`,primary:`Główna`,secondary:`Drugorzędna`}}}},table:{columns:{name:{title:`Nazwa`},weather:{title:`Pogoda`,failed:`Błąd`,error:`Nie udało się załadować danych pogodowych. Sprawdź konfigurację API.`},type:{title:`Dostawca`},primary:{title:`Główna`,values:{yes:`Tak`,no:`Nie`}}}},meta:{locations:{list:{title:`Lokalizacje pogody`},detail:{title:`Szczegóły lokalizacji pogody`},add:{title:`Dodaj lokalizację pogody`},edit:{title:`Edytuj lokalizację pogody`}}},conditions:{thunderstormWithLightRain:`Burza z lekkim deszczem`,thunderstormWithRain:`Burza z deszczem`,thunderstormWithHeavyRain:`Burza z silnym deszczem`,lightThunderstorm:`Lekka burza`,thunderstorm:`Burza`,heavyThunderstorm:`Silna burza`,raggedThunderstorm:`Burza z porywistym wiatrem`,thunderstormWithLightDrizzle:`Burza z lekką mżawką`,thunderstormWithDrizzle:`Burza z mżawką`,thunderstormWithHeavyDrizzle:`Burza z silną mżawką`,lightIntensityDrizzle:`Lekka mżawka`,drizzle:`Mżawka`,heavyIntensityDrizzle:`Silna mżawka`,lightIntensityDrizzleRain:`Lekki deszcz ze mżawką`,drizzleRain:`Deszcz ze mżawką`,heavyIntensityDrizzleRain:`Silny deszcz ze mżawką`,showerRainAndDrizzle:`Przelotny deszcz ze mżawką`,heavyShowerRainAndDrizzle:`Silny przelotny deszcz ze mżawką`,showerDrizzle:`Przelotna mżawka`,lightRain:`Lekki deszcz`,moderateRain:`Umiarkowany deszcz`,heavyIntensityRain:`Intensywny deszcz`,veryHeavyRain:`Bardzo silny deszcz`,extremeRain:`Ekstremalny deszcz`,freezingRain:`Marznący deszcz`,lightIntensityShowerRain:`Lekki przelotny deszcz`,showerRain:`Przelotny deszcz`,heavyIntensityShowerRain:`Silny przelotny deszcz`,raggedShowerRain:`Nieregularny przelotny deszcz`,lightSnow:`Lekki śnieg`,snow:`Śnieg`,heavySnow:`Intensywny śnieg`,sleet:`Deszcz ze śniegiem`,lightShowerSleet:`Lekki przelotny deszcz ze śniegiem`,showerSleet:`Przelotny deszcz ze śniegiem`,lightRainAndSnow:`Lekki deszcz ze śniegiem`,rainAndSnow:`Deszcz ze śniegiem`,lightShowerSnow:`Lekki przelotny śnieg`,showerSnow:`Przelotny śnieg`,heavyShowerSnow:`Silny przelotny śnieg`,mist:`Mgła`,smoke:`Dym`,haze:`Zamglenie`,fog:`Gęsta mgła`,sand:`Piasek`,dust:`Kurz`,volcanicAsh:`Popiół wulkaniczny`,squalls:`Szkwały`,tornado:`Tornado`,clearSky:`Bezchmurne niebo`,fewClouds:`Lekkie zachmurzenie`,scatteredClouds:`Rozproszone chmury`,brokenClouds:`Duże zachmurzenie`,overcastClouds:`Pochmurno`,unknown:`Nieznane`}},lo={menu:{title:`Lokality počasia`},headings:{weather:`Počasie`,aboutPrimaryLocation:`Primárna poloha`,locations:`Polohy počasia`,locationDetail:`{location}`,forecast:`Predpoveď`,hourlyForecast:`Hodinová predpoveď`,addLocation:`Pridať polohu`,editLocation:`Upraviť polohu`,deleteLocation:`Odstrániť polohu`,bulkDeleteLocations:`Odstrániť polohy`,discard:`Zahodiť zmeny`,selectProvider:`Vyberte poskytovateľa počasia`,unsupportedProvider:`Nepodporovaný poskytovateľ`,adjustFilters:`Upraviť filtre`},subHeadings:{locations:`Spravujte polohy údajov o počasí`,locationDetail:`Informácie o počasí pre {location}`,addLocation:`Pridať novú polohu počasia`,editLocation:`Upraviť detaily polohy`,adjustFilters:`Prispôsobiť filtre zoznamu polôh`},breadcrumbs:{locations:`polohy`,locationDetail:`poloha: {location}`,addLocation:`pridať polohu`,editLocation:`upraviť polohu`},messages:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,requestError:`Pri načítavaní dát sa vyskytla chyba`,config:{edited:`Konfigurácia počasia bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu počasia`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,updated:`Poloha "{location}" bola aktualizovaná`,notUpdated:`Nepodarilo sa aktualizovať polohu "{location}"`,deleted:`Poloha bola odstránená`,notDeleted:`Nepodarilo sa odstrániť polohu`,deleteCanceled:`Odstránenie polohy "{location}" bolo zrušené`,confirmBulkDelete:`Naozaj chcete odstrániť {count} polôh?`,bulkDeleted:`{count} polôh bolo odstránených`,bulkDeleteFailed:`Nepodarilo sa odstrániť {count} polôh`,bulkDeleteCanceled:`Hromadné odstránenie polôh bolo zrušené`,noLocations:`Žiadne polohy nie sú nakonfigurované. Pridajte polohu na získanie údajov o počasí.`,notFound:`Poloha nebola nájdená`,confirmDeleteLocation:`Naozaj chcete odstrániť polohu "{name}"?`,deletedWhileEditing:`Poloha bola odstránená. Presmerovanie...`}},buttons:{add:{title:`Pridať`},save:{title:`Uložiť`},cancel:{title:`Zrušiť`},discard:{title:`Zahodiť`},resetFilters:{title:`Resetovať filtre`},yes:{title:`Áno`},no:{title:`Nie`},reset:{title:`Resetovať filtre`},detail:{title:`Detail`},retry:{title:`Skúsiť znova`},back:{title:`Späť`}},fields:{locations:{search:{placeholder:`Vyhľadať polohy...`},provider:{title:`Poskytovateľ počasia`,placeholder:`Vyberte poskytovateľa údajov o počasí`},name:{title:`Názov polohy`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov polohy je povinný`}}},config:{primaryLocation:{title:`Primárna poloha`,description:`Predvolená poloha zobrazená vo widgetoch počasia`,placeholder:`Vyberte primárnu polohu`}}},texts:{aboutPrimaryLocation:`Vyberte primárnu polohu na zobrazenie vo widgetoch počasia. Polohy je možné spravovať v sekcii Polohy. Údaje o počasí budú získavané pre všetky nakonfigurované polohy.`,selectProvider:`Vyberte poskytovateľa údajov o počasí na pridanie novej polohy. Rôzni poskytovatelia môžu ponúkať rôzne konfiguračné možnosti.`,unsupportedProvider:`Vybraný poskytovateľ "{provider}" nie je momentálne podporovaný. Prosím vyberte iného poskytovateľa.`,weatherError:`Nepodarilo sa načítať počasie`,weatherErrorDescription:`Údaje o počasí sa nepodarilo načítať pre túto polohu. Skontrolujte konfiguráciu API a skúste to znova.`,locationDetail:{provider:`Poskytovateľ`,temperature:`Teplota`,feelsLike:`Pocitová teplota`,conditions:`Podmienky`,humidity:`Vlhkosť`,wind:`Vietor`,pressure:`Tlak`},misc:{loadingLocations:`Načítavanie polôh...`,noLocations:`Zatiaľ nie sú nakonfigurované žiadne polohy`,noFilteredLocations:`Žiadne polohy nezodpovedajú vašim filtrom`}},filters:{locations:{types:{title:`Poskytovateľ počasia`},primary:{title:`Stav primárnej polohy`,values:{all:`Všetky`,primary:`Primárna`,secondary:`Sekundárna`}}}},table:{columns:{name:{title:`Názov`},weather:{title:`Počasie`,failed:`Zlyhanie`,error:`Nepodarilo sa načítať údaje o počasí. Skontrolujte konfiguráciu API.`},type:{title:`Poskytovateľ`},primary:{title:`Primárna`,values:{yes:`Áno`,no:`Nie`}}}},meta:{locations:{list:{title:`Polohy počasia`},detail:{title:`Detail polohy počasia`},add:{title:`Pridať polohu počasia`},edit:{title:`Upraviť polohu počasia`}}},conditions:{thunderstormWithLightRain:`Búrka s miernym dažďom`,thunderstormWithRain:`Búrka s dažďom`,thunderstormWithHeavyRain:`Búrka so silným dažďom`,lightThunderstorm:`Mierna búrka`,thunderstorm:`Búrka`,heavyThunderstorm:`Silná búrka`,raggedThunderstorm:`Nepravidelná búrka`,thunderstormWithLightDrizzle:`Búrka s miernym mrholením`,thunderstormWithDrizzle:`Búrka s mrholením`,thunderstormWithHeavyDrizzle:`Búrka so silným mrholením`,lightIntensityDrizzle:`Mierne mrholenie`,drizzle:`Mrholenie`,heavyIntensityDrizzle:`Silné mrholenie`,lightIntensityDrizzleRain:`Mierny mrholivý dážď`,drizzleRain:`Mrholivý dážď`,heavyIntensityDrizzleRain:`Silný mrholivý dážď`,showerRainAndDrizzle:`Prehánky s mrholením`,heavyShowerRainAndDrizzle:`Silné prehánky s mrholením`,showerDrizzle:`Mrholivé prehánky`,lightRain:`Mierny dážď`,moderateRain:`Stredný dážď`,heavyIntensityRain:`Silný dážď`,veryHeavyRain:`Veľmi silný dážď`,extremeRain:`Extrémny dážď`,freezingRain:`Mrznúci dážď`,lightIntensityShowerRain:`Mierne prehánky`,showerRain:`Prehánky`,heavyIntensityShowerRain:`Silné prehánky`,raggedShowerRain:`Nepravidelné prehánky`,lightSnow:`Mierny sneh`,snow:`Sneh`,heavySnow:`Silný sneh`,sleet:`Čľapkanica`,lightShowerSleet:`Mierne prehánky čľapkanice`,showerSleet:`Prehánky čľapkanice`,lightRainAndSnow:`Mierny dážď so snehom`,rainAndSnow:`Dážď so snehom`,lightShowerSnow:`Mierne snehové prehánky`,showerSnow:`Snehové prehánky`,heavyShowerSnow:`Silné snehové prehánky`,mist:`Hmla`,smoke:`Dym`,haze:`Opar`,fog:`Hustá hmla`,sand:`Piesok`,dust:`Prach`,volcanicAsh:`Sopečný popol`,squalls:`Búrlivý vietor`,tornado:`Tornádo`,clearSky:`Jasná obloha`,fewClouds:`Málo oblakov`,scatteredClouds:`Roztrúsené oblaky`,brokenClouds:`Oblačno s premenou`,overcastClouds:`Zamračené`,unknown:`Neznáme`}},uo={"cs-CZ":io,"de-DE":ao,"en-US":oo,"es-ES":so,"pl-PL":co,"sk-SK":lo},fo=[{path:`weather/locations`,name:Vt.WEATHER_LOCATIONS,component:()=>z(()=>import(`./view-locations-DF-FXbjv.js`),__vite__mapDeps([38,1,2,3,4,5,39,40,41,42,14,18,22,16,23,43])),meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]},title:()=>ft.global.t(`weatherModule.menu.title`),icon:`mdi:map-marker-multiple`,menu:4e3},children:[{path:`add`,name:Vt.WEATHER_LOCATION_ADD,component:()=>z(()=>import(`./view-location-add-B3Bljsk2.js`),__vite__mapDeps([44,1,2,3,4,5,39,40,23])),props:!1,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]}}},{path:`:id`,name:Vt.WEATHER_LOCATION_EDIT,component:()=>z(()=>import(`./view-location-edit-Csq0lDWt.js`),__vite__mapDeps([45,1,2,3,4,5,39,40,46,47,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]}}}]},{path:`weather/location/:id`,name:Vt.WEATHER_LOCATION,component:()=>z(()=>import(`./view-location-BbOLMWOk.js`),__vite__mapDeps([48,1,2,3,4,5,40,49,42,22,47,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]}},children:[{path:`edit`,name:Vt.WEATHER_LOCATION_DETAIL_EDIT,component:()=>z(()=>import(`./view-location-edit-Csq0lDWt.js`),__vite__mapDeps([45,1,2,3,4,5,39,40,46,47,23])),props:!0,meta:{guards:{authenticated:!0,roles:[L.admin,L.owner]}}}]}],po=it.extend({primaryLocationId:B().uuid().nullable().optional()}),mo=Ye.extend({type:Dt(Rt),primaryLocationId:B().uuid().nullable().optional()}),ho=Be.and(I({type:Dt(Rt),primary_location_id:B().uuid().nullable().optional()}));Qe.and(I({type:Dt(Rt),primary_location_id:B().uuid().nullable().optional()}));var go=(e,t=Yt)=>{let n=Ze(e),r=t.safeParse({...n,draft:!1});if(!r.success)throw console.error(`[WEATHER_MODULE] Failed to validate location data:`,r.error.issues),new Wt(`Failed to validate location data`);return r.data},_o=(e,t=en)=>{let n=t.safeParse(e);if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location create request:`,n.error.issues),new Wt(`Failed to validate location create request`);return n.data},vo=(e,t=Qt)=>{let n=t.safeParse(e);if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location update request:`,n.error.issues),new Wt(`Failed to validate location update request`);return n.data},yo=(e,t)=>e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:t,bo=()=>({fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]}),xo=Re(`weather_module-locations`,()=>{let e=Ct(),t=ke(),n=E(bo()),r=E(!1),i=E({}),a=()=>r.value,o=e=>n.value.fetching.item.includes(e),s=()=>n.value.fetching.items,c=()=>Object.values(i.value),l=e=>i.value[e]??null,u={},d={},f=e=>p({id:e.id,data:go(e.data)}),p=e=>{if(e.id&&i.value&&e.id in i.value){let n=Yt.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new Wt(`Failed to insert location.`);return i.value[n.data.id]=n.data}let n=Yt.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new Wt(`Failed to insert location.`);return i.value=i.value??{},i.value[n.data.id]=n.data},m=e=>{i.value&&delete i.value[e.id]},h=async t=>{let r=u[t.id];if(r)return r;let i=(async()=>{if(n.value.fetching.item.includes(t.id))throw new W(`Already fetching location.`);n.value.fetching.item.push(t.id);let r=l(t.id);if(r&&!r.draft)return n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id),r;try{let n=(await e.client.GET(`/${w}/${zt}/locations/{id}`,{params:{path:{id:t.id}}})).data;if(n!==void 0){let e=go(n.data);return p({id:e.id,data:e})}throw new W(`Received invalid response`)}catch(e){let t=e,n=yo(e,`Failed to fetch location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new W(n,Number(t.status)):new W(n)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();u[t.id]=i;try{return await i}finally{delete u[t.id]}};return{data:i,semaphore:n,firstLoad:r,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,onEvent:f,set:p,unset:m,get:h,fetch:async()=>{let t=d.all;if(t)return t;let i=(async()=>{if(n.value.fetching.items)throw new W(`Already fetching locations.`);n.value.fetching.items=!0,r.value=!1;try{let t=(await e.client.GET(`/${w}/${zt}/locations`)).data;if(t!==void 0){let e=[];for(let n of t.data){let t=go(n);e.push(p({id:t.id,data:t}))}return r.value=!0,e}throw new W(`Received invalid response`)}catch(e){let t=e,n=yo(e,`Failed to fetch locations`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new W(n,Number(t.status)):new W(n)}finally{n.value.fetching.items=!1}})();d.all=i;try{return await i}finally{delete d.all}},add:async r=>{let a=tn.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new Wt(`Failed to add location.`);let o=a.data;n.value.creating.push(o.id);let s=Yt.safeParse({id:o.id,draft:o.draft,...o.data,createdAt:new Date,updatedAt:null});if(!s.success)throw n.value.creating=n.value.creating.filter(e=>e!==o.id),new Wt(`Failed to add location.`);if(i.value[s.data.id]=s.data,o.draft)return n.value.creating=n.value.creating.filter(e=>e!==o.id),s.data;try{let t=_o({id:o.id,type:o.data.type,name:o.data.name,...(0,$.omitBy)(o.data,$.isUndefined)}),n=(await e.client.POST(`/${w}/${zt}/locations`,{body:{data:t}})).data;if(n!==void 0){let e=go(n.data);return p({id:e.id,data:e})}throw new W(`Received invalid response`)}catch(e){m({id:o.id});let t=e,n=yo(e,`Failed to add location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new W(n,Number(t.status)):new W(n)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.id)}},edit:async r=>{let a=Xt.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new Wt(`Failed to edit location.`);let o=a.data;if(n.value.updating.includes(o.id))throw new W(`Location is already being updated.`);let s=l(o.id);if(!s)throw new W(`Location not found.`);n.value.updating.push(o.id);let c={...s,...(0,$.omitBy)(o.data,$.isUndefined)};if(i.value[o.id]=c,s.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.id),c;try{let t=vo({type:o.data.type,...(0,$.omitBy)(o.data,$.isUndefined)}),n=(await e.client.PATCH(`/${w}/${zt}/locations/{id}`,{params:{path:{id:o.id}},body:{data:t}})).data;if(n!==void 0){let e=go(n.data);return p({id:e.id,data:e})}throw new W(`Received invalid response`)}catch(e){i.value[o.id]=s;let t=e,n=yo(e,`Failed to edit location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new W(n,Number(t.status)):new W(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==o.id)}},save:async t=>{let r=l(t.id);if(!r)throw new W(`Location not found.`);if(!r.draft)return r;n.value.updating.push(t.id);try{let t=_o({id:r.id,type:r.type,name:r.name}),n=(await e.client.POST(`/${w}/${zt}/locations`,{body:{data:t}})).data;if(n!==void 0){let e=go(n.data);return p({id:e.id,data:e})}throw new W(`Received invalid response`)}catch(e){let t=e,n=yo(e,`Failed to save location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new W(n,Number(t.status)):new W(n)}finally{n.value.updating=n.value.updating.filter(e=>e!==t.id)}},remove:async t=>{if(n.value.deleting.includes(t.id))throw new W(`Location is already being deleted.`);let r=l(t.id);if(!r)return!0;if(n.value.deleting.push(t.id),m({id:t.id}),r.draft)return n.value.deleting=n.value.deleting.filter(e=>e!==t.id),!0;try{if((await e.client.DELETE(`/modules/weather/locations/{id}`,{params:{path:{id:t.id}}})).response.status===204)return!0;throw new W(`Failed to delete location`)}catch(e){await h({id:t.id});let n=e,r=yo(e,`Failed to delete location`);throw n.status&&[401,403,404,422,500].includes(Number(n.status))?new W(r,Number(n.status)):new W(r)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}}}}),So=e=>xo(e),Co={getting:!1},wo=Re(`weather_module-weather-day`,()=>{let e=Ct(),t=ke(),n=E(Co),r=E(!1),i=E(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:Ut(e.data)}),l=e=>{let n=Kt.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new Wt(`Failed to insert weather day.`);return i.value=i.value??null,i.value=n.data};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new W(`Already getting weather day.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${zt}/weather/primary`,{});if(t!==void 0&&t.data?.current)return i.value=Ut(t.data.current),i.value;let a=`Failed to fetch weather day: invalid response structure.`;throw n&&(a=n.message??a),new W(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),To=e=>wo(e),Eo={getting:!1},Do=Re(`weather_module-weather-forecast`,()=>{let e=Ct(),t=ke(),n=E(Eo),r=E(!1),i=E(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:hn(e.data)}),l=e=>{let n=mn.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new Wt(`Failed to insert weather forecast.`);return i.value=i.value??null,i.value=n.data};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,onEvent:c,set:l,get:async()=>{if(s)return s;let t=(async()=>{if(n.value.getting)throw new W(`Already getting weather forecast.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${w}/${zt}/weather/primary`,{});if(t!==void 0&&t.data?.forecast)return i.value=hn(t.data.forecast),i.value;let a=`Failed to fetch weather forecast: invalid response structure.`;throw n&&(a=n.message??a),new W(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),Oo=e=>Do(e),ko=Symbol(`FB-Module-Weather`),Ao={install:(e,t)=>{let n=je(e),r=we(e),i=me(e),a=be(e);for(let[e,n]of Object.entries(uo)){let r=(0,$.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=To(t.store);e.provide(Gt,o),n.addStore(Gt,o);let s=Oo(t.store);e.provide(Ht,s),n.addStore(Ht,s);let c=So(t.store);e.provide(Bt,c),n.addStore(Bt,c),a.addModule(ko,{type:Rt,name:`Weather`,description:`Stay up to date with current conditions and upcoming forecasts.`,elements:[{type:vt,components:{moduleConfigEditForm:ro},schemas:{moduleConfigSchema:mo,moduleConfigEditFormSchema:po,moduleConfigUpdateReqSchema:ho},modules:[Tt]}],modules:[Tt],isCore:!0}),t.router.getRoutes().find(e=>e.name===te.ROOT)&&fo.forEach(e=>{t.router.addRoute(te.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`WeatherModule.`)&&!(typeof e.payload!=`object`||e.payload===null))switch(e.event){case qt.WEATHER_INFO:`current`in e.payload&&typeof e.payload.current==`object`&&e.payload.current!==null&&o.onEvent({data:e.payload.current}),`forecast`in e.payload&&Array.isArray(e.payload.forecast)&&s.onEvent({data:e.payload.forecast});break;case qt.LOCATION_CREATED:case qt.LOCATION_UPDATED:`id`in e.payload&&typeof e.payload.id==`string`&&`type`in e.payload&&typeof e.payload.type==`string`&&c.onEvent({id:e.payload.id,type:e.payload.type,data:e.payload});break;case qt.LOCATION_DELETED:`id`in e.payload&&typeof e.payload.id==`string`&&c.unset({id:e.payload.id});break;default:i.warn(`Unhandled weather module event:`,e.event)}})}},jo=I({id:B().uuid(),type:B().trim().nonempty(),name:B().trim().min(1,`Name is required`)}),Mo=I({id:B().uuid(),type:B().trim().nonempty(),name:B().trim().min(1,`Name is required`)});export{gr as A,In as B,Br as C,Fr as D,Ir as E,Wn as F,Dn as H,Jn as I,Fn as L,hr as M,qn as N,_r as O,Yn as P,Ln as R,zr as S,Lr as T,En as V,$r as _,Xa as a,Gr as b,Ri as c,Ei as d,Si as f,si as g,li as h,no as i,dr as j,mr as k,Pi as l,mi as m,Mo as n,Ui as o,vi as p,Ao as r,Hi as s,jo as t,Ai as u,Wr as v,Rr as w,Hr as x,Ur as y,Q as z};