@fastybird/smart-panel-admin 0.8.0-alpha.0 → 0.9.0-alpha.0
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.
- package/dist/assets/{card-add-form-DCedaTn3.js → card-add-form-Jioi0iN7.js} +1 -1
- package/dist/assets/{card-edit-form-DziEugFc.js → card-edit-form-B7Fet4IO.js} +1 -1
- package/dist/assets/common-CsIAoFIi.js +150 -0
- package/dist/assets/{components-DSqvBTya.js → components-Bt1bQrgU.js} +2 -2
- package/dist/assets/{components-GWm0hgQh.js → components-CUIekTLa.js} +1 -1
- package/dist/assets/{components-CMK0gDCp.js → components-CwPnZE22.js} +1 -1
- package/dist/assets/{components-BrAf-RJg.js → components-DSNUaG5K.js} +1 -1
- package/dist/assets/{components-C_HvCpT4.js → components-DrxOjhHk.js} +1 -1
- package/dist/assets/{components-_k2VKZQT.js → components-IFJ75CNu.js} +1 -1
- package/dist/assets/{components-c1epF7E-.js → components-hGLjXrPN.js} +1 -1
- package/dist/assets/{components-CdF8DZml.js → components-qkXxLtX2.js} +1 -1
- package/dist/assets/{composables-DfpUdQTp.js → composables-9wK3zPtz.js} +1 -1
- package/dist/assets/{composables-B_71n432.js → composables-BS0Kku0a.js} +1 -1
- package/dist/assets/{composables-DLNfKORz2.js → composables-BnnF69pf2.js} +1 -1
- package/dist/assets/{composables-5JPJUgKe.js → composables-CQ4PrCaW.js} +1 -1
- package/dist/assets/{composables-BEEHFlkU.js → composables-CRYj51Xh.js} +1 -1
- package/dist/assets/{composables-DO4WyFIN.js → composables-DodZqn7g.js} +1 -1
- package/dist/assets/{composables-DOc8b-Nv.js → composables-DwI89uBp.js} +1 -1
- package/dist/assets/{composables-BGAbz9D6.js → composables-J-vOwaiQ.js} +1 -1
- package/dist/assets/{composables-CXPXTZYE.js → composables-KQkKkLzX.js} +1 -1
- package/dist/assets/{dashboard-Bwl1moRS.js → dashboard--0xxBMX3.js} +2 -2
- package/dist/assets/{dashboard.types-BWvt1eV6.js → dashboard.types-CABARb5u.js} +1 -1
- package/dist/assets/{data-source-edit-form-Bb8XbcJj.js → data-source-edit-form-1griWkcx.js} +1 -1
- package/dist/assets/{drawer-9BrwP53p.js → drawer-BSmqol3W.js} +1 -1
- package/dist/assets/{index-8G_27KRI.js → index-ChA-6tkW.js} +4 -4
- package/dist/assets/{input-number-DvPtEsoF.js → input-number-BvUgeFU0.js} +1 -1
- package/dist/assets/{integration-config-dialog-Bjc7Q8Bp.js → integration-config-dialog-JFllPoZC.js} +1 -1
- package/dist/assets/{layout-config-CeSZfdZE.js → layout-config-BwUjBtMz.js} +1 -1
- package/dist/assets/{layout-default-BVzpSMUy.js → layout-default-CDMeTPwh.js} +1 -1
- package/dist/assets/{layout-lock-CF48vqic.js → layout-lock-DOeSTzUX.js} +1 -1
- package/dist/assets/{layout-profile-CoFg77uC.js → layout-profile-D54-9SFr.js} +1 -1
- package/dist/assets/layout-profile-DY7I476D.js +1 -0
- package/dist/assets/layout-sign-DdabOjeM.js +1 -0
- package/dist/assets/{layout-sign-D8nAePxS.js → layout-sign-Dvh0Uq87.js} +1 -1
- package/dist/assets/{list-data-sources-adjust-BH9ogQkA.js → list-data-sources-adjust-CBo2VBKQ.js} +1 -1
- package/dist/assets/{list-locations-BZxukcZM.js → list-locations-DnED0uZO.js} +1 -1
- package/dist/assets/{list-users-lN96y0RG.js → list-users-DKY2n0DG.js} +1 -1
- package/dist/assets/{logs-entries.transformers-BRvrBqiQ.js → logs-entries.transformers-CkJklIVs.js} +1 -1
- package/dist/assets/{page-configure-DPaFSSdI.js → page-configure-DFZxNOAU.js} +1 -1
- package/dist/assets/{page-configure-lWfAVkSz.js → page-configure-DXNz8cFw.js} +1 -1
- package/dist/assets/{pagination-CZ4jiyxa.js → pagination-_mhqQTAs.js} +1 -1
- package/dist/assets/{popover-BfAst2mZ.js → popover-CtKRrgVc.js} +1 -1
- package/dist/assets/{radio-n1KvuN2C.js → radio-BEUEdly3.js} +1 -1
- package/dist/assets/{scene-add-form-DQPVDmeW.js → scene-add-form-BE1RuM4w.js} +1 -1
- package/dist/assets/{scene-edit-form-Cz5aPdlM.js → scene-edit-form-BU_AFTQi.js} +1 -1
- package/dist/assets/{select-data-source-plugin-CAYTXWzW.js → select-data-source-plugin-BJeX7tpk.js} +1 -1
- package/dist/assets/{steps-uN6IlAcu.js → steps-CYvv5wyK.js} +1 -1
- package/dist/assets/{system-Di-WFuM7.js → system-CPCEuUH_.js} +2 -2
- package/dist/assets/{table-F4z-5gbH.js → table-DeA21nO5.js} +1 -1
- package/dist/assets/{tile-detail-D-26JTMN.js → tile-detail-BWGXIHTV.js} +1 -1
- package/dist/assets/{tile-edit-form-DeFggT4B.js → tile-edit-form-DIuQXV2x.js} +1 -1
- package/dist/assets/{types-CchA8Wmm.js → types-Mf9vwQkG.js} +1 -1
- package/dist/assets/{useBuddyChat-CApvAiGE.js → useBuddyChat-BbSYF959.js} +1 -1
- package/dist/assets/{useDataSources-CprVpbHE.js → useDataSources-C5ZMkS7x.js} +1 -1
- package/dist/assets/{useDevices-DxXqJ_nb.js → useDevices-BS1LIKb-.js} +1 -1
- package/dist/assets/useGeolocation-BLscIajG.js +2 -0
- package/dist/assets/{useLocation-Rrxn6HvJ.js → useLocation-B0umEGPB.js} +1 -1
- package/dist/assets/{usePage-BaX0yHPY.js → usePage-DaPp80g5.js} +1 -1
- package/dist/assets/{useSpaces-C12q9q5Q.js → useSpaces-B_w1o4H5.js} +1 -1
- package/dist/assets/{view-buddy-chat-DW34rzR9.js → view-buddy-chat-CkfhJxxv.js} +1 -1
- package/dist/assets/{view-card-add-CieaYa63.js → view-card-add-ocsXLnyn.js} +1 -1
- package/dist/assets/{view-card-edit-C5umbCIq.js → view-card-edit-CM2I_t1y.js} +1 -1
- package/dist/assets/{view-channel-C-fOWWRX.js → view-channel-CFgdqXSy.js} +1 -1
- package/dist/assets/{view-channel-add-DV7C8y80.js → view-channel-add-DtJuqAmB.js} +1 -1
- package/dist/assets/{view-channel-edit-5--_eck7.js → view-channel-edit-WV3RumBA.js} +1 -1
- package/dist/assets/{view-channel-property-add-wDJXaHo2.js → view-channel-property-add-BFbEarXp.js} +1 -1
- package/dist/assets/{view-channel-property-edit-B7HA2nnd.js → view-channel-property-edit-DHhuT5By.js} +1 -1
- package/dist/assets/{view-channels-Db2KuPaM.js → view-channels-CJTtzU_S.js} +1 -1
- package/dist/assets/{view-config-module-edit-IuAZceQY.js → view-config-module-edit-BL-AEtjP.js} +1 -1
- package/dist/assets/{view-config-modules--xgrpao4.js → view-config-modules-BouYyChi.js} +1 -1
- package/dist/assets/{view-config-plugin-edit-Bbwxb7cZ.js → view-config-plugin-edit-koeVC_il.js} +1 -1
- package/dist/assets/{view-config-plugins-D16Pq90F.js → view-config-plugins-BXRVhuAt.js} +1 -1
- package/dist/assets/{view-data-source-add-BvvULVFs.js → view-data-source-add-D7YLpOT1.js} +1 -1
- package/dist/assets/{view-data-source-add-DPq16k0M.js → view-data-source-add-aST8EQWD.js} +1 -1
- package/dist/assets/{view-data-source-edit-DlXyGIbG.js → view-data-source-edit-CeaBk0e_.js} +1 -1
- package/dist/assets/{view-data-source-edit-9MgqKtIH.js → view-data-source-edit-DeTvzMHZ.js} +1 -1
- package/dist/assets/{view-device-DZv1M8Lr.js → view-device-BknRNJxs.js} +1 -1
- package/dist/assets/{view-device-add-CxewPpiB.js → view-device-add-Cou_1j9U.js} +1 -1
- package/dist/assets/{view-device-control-C180PepT.js → view-device-control-BI0ywD2p.js} +1 -1
- package/dist/assets/{view-device-edit-Dt84BT5r.js → view-device-edit-DYcvOOLf.js} +1 -1
- package/dist/assets/{view-devices-CCEfFGxO.js → view-devices-zZs4P2WD.js} +1 -1
- package/dist/assets/{view-display-DCM7oLnE.js → view-display-DLYy_v0U.js} +1 -1
- package/dist/assets/{view-display-edit-CfkL-Vgz.js → view-display-edit-BtxZSzoK.js} +1 -1
- package/dist/assets/{view-display-tokens-BZQnvWFN.js → view-display-tokens-DYs7OnDb.js} +1 -1
- package/dist/assets/{view-displays-DnqZ4It-.js → view-displays-BVjVtpEK.js} +1 -1
- package/dist/assets/{view-extension-detail-Cpq-1-vB.js → view-extension-detail-oA-xs1i3.js} +1 -1
- package/dist/assets/{view-extensions-B2xiSBmt.js → view-extensions-C2wo3m9k.js} +1 -1
- package/dist/assets/{view-location-w7E7h5dl.js → view-location-DY1DtY2h.js} +1 -1
- package/dist/assets/{view-location-add-ucbk868d.js → view-location-add-DzjdE674.js} +1 -1
- package/dist/assets/{view-location-edit-CV308tlg.js → view-location-edit-DU0nTBjq.js} +1 -1
- package/dist/assets/{view-locations-DiHaHPaw.js → view-locations-KxBwakg7.js} +1 -1
- package/dist/assets/{view-lock-screen-D_kKbwJ0.js → view-lock-screen-CAQwoaJr.js} +1 -1
- package/dist/assets/{view-onboarding-BpUVrpsJ.js → view-onboarding-C8kGEvpn.js} +1 -1
- package/dist/assets/{view-page-CnKMzrK3.js → view-page-Brg8Ntij.js} +1 -1
- package/dist/assets/{view-page-add-Bs37phc4.js → view-page-add-BS7o1DsR.js} +1 -1
- package/dist/assets/{view-page-configure-BnibCrwy.js → view-page-configure-8yc99MMp.js} +1 -1
- package/dist/assets/{view-page-configure-CKqBhTXo.js → view-page-configure-CW9D8Knv.js} +1 -1
- package/dist/assets/{view-page-data-source-add-DQoCLe3r.js → view-page-data-source-add-BlX0JgOQ.js} +1 -1
- package/dist/assets/{view-page-data-source-edit-9DZ2Z8ED.js → view-page-data-source-edit-B-JRXRgI.js} +1 -1
- package/dist/assets/{view-page-edit-DHCziJsf.js → view-page-edit-DnV07TJ5.js} +1 -1
- package/dist/assets/{view-page-plugin-B8lpU_yI.js → view-page-plugin-C2crYGWv.js} +1 -1
- package/dist/assets/{view-pages-WY1tS9F0.js → view-pages-Bks4ktZU.js} +1 -1
- package/dist/assets/{view-profile-general-CvcqqnT0.js → view-profile-general-DpgO9OtK.js} +1 -1
- package/dist/assets/{view-profile-security-BCPrVqHA.js → view-profile-security-CaLgwQ9n.js} +1 -1
- package/dist/assets/{view-scene-add-D6BQ-QjZ.js → view-scene-add-5dOO1TGE.js} +1 -1
- package/dist/assets/{view-scene-edit-U01SiuqE.js → view-scene-edit-_f-_dZ7k.js} +1 -1
- package/dist/assets/{view-scenes-U6LOZX5J.js → view-scenes-CRgM98tk.js} +1 -1
- package/dist/assets/{view-sign-in-Dop_D0u1.js → view-sign-in--HtFCY4C.js} +1 -1
- package/dist/assets/{view-sign-up-CN9FUgS3.js → view-sign-up-C2aynlrB.js} +1 -1
- package/dist/assets/{view-space-CfoK-7op.js → view-space-CbNaQz4b.js} +1 -1
- package/dist/assets/{view-space-add-CpMFTOLa.js → view-space-add-D8INN3lc.js} +1 -1
- package/dist/assets/{view-space-edit-DFsIcG7t.js → view-space-edit-DPsmFYAP.js} +1 -1
- package/dist/assets/{view-spaces-6X_ollTy.js → view-spaces-EjnZ8U1r.js} +1 -1
- package/dist/assets/{view-spaces-onboarding-B_Q4z0aj.js → view-spaces-onboarding-C49gJlT6.js} +1 -1
- package/dist/assets/{view-stats-wsrYRdIZ.js → view-stats-ZSgTmcwn.js} +1 -1
- package/dist/assets/{view-system-info-Mjmt-jg8.js → view-system-info-C311MoZ3.js} +1 -1
- package/dist/assets/{view-system-log-detail-DjpaSCsY.js → view-system-log-detail-CwaPZU6f.js} +1 -1
- package/dist/assets/{view-system-logs-D0KfSCQV.js → view-system-logs-CfuI-INL.js} +1 -1
- package/dist/assets/{view-tile-DIRBj4gV.js → view-tile-Bb9hZXtO.js} +1 -1
- package/dist/assets/{view-tile-add-BxeM6Ohp.js → view-tile-add-4ukIsB2E.js} +1 -1
- package/dist/assets/{view-tile-add-DX-JsGxr.js → view-tile-add-CxMWn9je.js} +1 -1
- package/dist/assets/{view-tile-data-source-add-BV3z8_JV.js → view-tile-data-source-add-DPyUMfRU.js} +1 -1
- package/dist/assets/{view-tile-data-source-edit-COWZ99J9.js → view-tile-data-source-edit-DE-UgmN5.js} +1 -1
- package/dist/assets/{view-tile-edit-BVSVskXZ.js → view-tile-edit-C8fePOoN.js} +1 -1
- package/dist/assets/{view-tile-edit-DNVW7Ry7.js → view-tile-edit-DwHdTTLq.js} +1 -1
- package/dist/assets/{view-tile-edit-Dh5GsDmT.js → view-tile-edit-pq8fjQbM.js} +1 -1
- package/dist/assets/{view-user-add--HRflXBU.js → view-user-add-Cqfm2j_z.js} +1 -1
- package/dist/assets/{view-user-edit-CDeh4OU9.js → view-user-edit-D0bNBKkI.js} +1 -1
- package/dist/assets/{view-users-DowokAN0.js → view-users-DDwKiXr_.js} +1 -1
- package/dist/assets/weather-DC46ELCW.js +2 -0
- package/dist/assets/{weather-forecast.transformers-RDeqCiOa.js → weather-forecast.transformers-CA5z0vm4.js} +1 -1
- package/dist/index.html +86 -86
- package/package.json +1 -1
- package/dist/assets/common-1h7wnZKI.js +0 -150
- package/dist/assets/layout-profile-BIxgqLEU.js +0 -1
- package/dist/assets/layout-sign-CRwjf2zl.js +0 -1
- package/dist/assets/useGeolocation-DJuwtAxC.js +0 -2
- package/dist/assets/weather-CHc3NgDg.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/view-devices-CCEfFGxO.js","assets/icon-with-child-DmQ_XhQy.js","assets/chunk-DECur_0Z.js","assets/icon-with-child-1Kb-D21P.css","assets/common-1h7wnZKI.js","assets/common-D_v-7H8R.css","assets/components-CdF8DZml.js","assets/composables-DO4WyFIN.js","assets/useDevices-DxXqJ_nb.js","assets/keys-o2K4DVjh.js","assets/logs-entries.transformers-BRvrBqiQ.js","assets/system.exceptions-CLPql-b3.js","assets/components-GWm0hgQh.js","assets/composables-B_71n432.js","assets/keys-DWeeqbdi.js","assets/composables-CXPXTZYE.js","assets/composables-BEEHFlkU.js","assets/useSpaces-C12q9q5Q.js","assets/input-number-DvPtEsoF.js","assets/pagination-CZ4jiyxa.js","assets/radio-n1KvuN2C.js","assets/skeleton-DMwdgp1r.js","assets/table-F4z-5gbH.js","assets/components-DTDNlAlb.css","assets/drawer-9BrwP53p.js","assets/popover-BfAst2mZ.js","assets/components-BTNQr9V1.css","assets/system-Di-WFuM7.js","assets/vue-meta.esm-browser.min-3_YV25pX.js","assets/view-device-add-CxewPpiB.js","assets/view-device-edit-Dt84BT5r.js","assets/view-device-DZv1M8Lr.js","assets/view-device-BzjcofqN.css","assets/view-device-control-C180PepT.js","assets/view-channel-add-DV7C8y80.js","assets/view-channel-edit-5--_eck7.js","assets/view-channel-property-add-wDJXaHo2.js","assets/view-channel-property-edit-B7HA2nnd.js","assets/view-channels-Db2KuPaM.js","assets/view-channel-C-fOWWRX.js","assets/view-spaces-6X_ollTy.js","assets/view-space-add-CpMFTOLa.js","assets/view-space-edit-DFsIcG7t.js","assets/view-spaces-onboarding-B_Q4z0aj.js","assets/steps-uN6IlAcu.js","assets/view-space-CfoK-7op.js","assets/view-space-FBfL1ie4.css","assets/view-locations-DiHaHPaw.js","assets/composables-BGAbz9D6.js","assets/useLocation-Rrxn6HvJ.js","assets/list-locations-BZxukcZM.js","assets/weather-icon-CkuFNv0P.js","assets/view-locations-DBYp9MTj.css","assets/view-location-add-ucbk868d.js","assets/view-location-edit-CV308tlg.js","assets/composables-BU1aKa642.js","assets/view-location-w7E7h5dl.js","assets/weather-forecast.transformers-RDeqCiOa.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import"./chunk-DECur_0Z.js";import{$r as e,Br as t,Hr as n,Mr as r,O as i,Oi as a,Qr as o,Sr as s,Ur as c,Xr as l,_i as u,_r as d,br as f,c as p,ci as m,d as h,gr as g,h as _,hr as v,i as y,ji as b,kr as ee,lr as te,m as ne,mr as x,n as S,p as C,sr as re,t as ie,ui as w,vr as T,xr as E}from"./icon-with-child-DmQ_XhQy.js";import{$n as ae,Ai as oe,Bn as se,Cn as ce,Di as le,F as ue,Fi as de,Fn as D,Fr as fe,Gn as pe,Gr as me,Ii as he,In as O,Jn as k,Li as ge,Lt as _e,Mt as A,N as ve,Nn as ye,O as be,Pn as j,Pr as xe,Pt as Se,Qn as M,Qt as Ce,S as we,Si as Te,Sn as Ee,T as De,Tn as Oe,Un as N,Vn as P,Wn as F,Wr as ke,Yn as Ae,Yr as je,Zt as Me,_ as Ne,_n as Pe,a as Fe,ar as Ie,ba as Le,ci as Re,d as ze,dr as Be,er as I,gn as Ve,gr as He,h as Ue,hn as We,i as Ge,ir as Ke,it as L,mn as qe,nr as Je,o as Ye,p as Xe,qn as R,r as z,rr as Ze,s as B,si as Qe,st as $e,tr as et,u as tt,un as nt,vi as rt,vn as it,wn as at,xi as ot,xn as st,y as ct,ya as lt,yi as ut,yn as dt,yr as V,zn as ft}from"./common-1h7wnZKI.js";import{f as pt}from"./keys-DVEtutPb.js";import{r as mt,t as ht}from"./useSpaces-C12q9q5Q.js";import{a as gt,i as _t,n as vt,o as yt,r as bt,t as xt}from"./keys-o2K4DVjh.js";import{B as St,F as H,H as U,I as W,L as G,V as K,W as q,k as Ct,l as wt,y as Tt}from"./composables-DO4WyFIN.js";import{a as Et,c as Dt,d as Ot,f as kt,h as At,i as J,l as jt,m as Mt,n as Nt,o as Pt,p as Ft,r as It,s as Lt}from"./useLocation-Rrxn6HvJ.js";import{_ as Rt,c as zt,d as Bt,f as Y,g as Vt,l as Ht,r as Ut,s as Wt,u as Gt}from"./composables-BGAbz9D6.js";import{t as Kt}from"./weather-icon-CkuFNv0P.js";import{n as qt,t as Jt}from"./weather-forecast.transformers-RDeqCiOa.js";var Yt={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:{liveTail:`Živý přenos`,paused:`Pozastaveno`,overview:`Přehled`,validation:`Validace`,logs:`Protokoly`},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í)`}}},Xt={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:{liveTail:`Live-Verfolgung`,paused:`Pausiert`,overview:`Übersicht`,validation:`Validierung`,logs:`Protokolle`},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)`}}},Zt={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","detail":"Log detail","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:{liveTail:`Live tail`,paused:`Paused`,overview:`Overview`,validation:`Validation`,logs:`Logs`},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)`}}},Qt={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:{liveTail:`Seguimiento en vivo`,paused:`Pausado`,overview:`Resumen`,validation:`Validación`,logs:`Registros`},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)`}}},$t={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:{liveTail:`Podgląd na żywo`,paused:`Wstrzymane`,overview:`Przegląd`,validation:`Walidacja`,logs:`Dzienniki`},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)`}}},en={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:{liveTail:`Živý prenos`,paused:`Pozastavené`,overview:`Prehľad`,validation:`Validácia`,logs:`Protokoly`},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)`}}},tn={"cs-CZ":Yt,"de-DE":Xt,"en-US":Zt,"es-ES":Qt,"pl-PL":$t,"sk-SK":en},nn=[{path:`devices`,name:q.DEVICES,component:()=>L(()=>import(`./view-devices-CCEfFGxO.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:()=>$e.global.t(`devicesModule.menu.title`),icon:`mdi:devices`,menu:7e3},children:[{path:`add`,name:q.DEVICES_ADD,component:()=>L(()=>import(`./view-device-add-CxewPpiB.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,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Add new device`,icon:`mdi:add-circle`}},{path:`:id`,name:q.DEVICES_EDIT,component:()=>L(()=>import(`./view-device-edit-Dt84BT5r.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,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit device`,icon:`mdi:pencil-circle`}}]},{path:`device/:id`,name:q.DEVICE,component:()=>L(()=>import(`./view-device-DZv1M8Lr.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,22,23,24,25,26,27,28,32])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Device detail`,icon:`mdi:devices`},children:[{path:`edit`,name:q.DEVICE_EDIT,component:()=>L(()=>import(`./view-device-edit-Dt84BT5r.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,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit device`,icon:`mdi:pencil-circle`}},{path:`control`,name:q.DEVICE_CONTROL,component:()=>L(()=>import(`./view-device-control-C180PepT.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,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Control device`,icon:`mdi:tune-variant`}},{path:`channel/add`,name:q.DEVICE_ADD_CHANNEL,component:()=>L(()=>import(`./view-channel-add-DV7C8y80.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,24,25,26,27,28])),props:!1,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Add new channel`,icon:`mdi:plus-circle`}},{path:`channel/:channelId`,name:q.DEVICE_EDIT_CHANNEL,component:()=>L(()=>import(`./view-channel-edit-5--_eck7.js`),__vite__mapDeps([35,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:e=>({id:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}},{path:`channel/:channelId/property/add`,name:q.DEVICE_CHANNEL_ADD_PROPERTY,component:()=>L(()=>import(`./view-channel-property-add-wDJXaHo2.js`),__vite__mapDeps([36,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:e=>({channelId:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Add new channel property`,icon:`mdi:plus-circle`}},{path:`channel/:channelId/property/:propertyId`,name:q.DEVICE_CHANNEL_EDIT_PROPERTY,component:()=>L(()=>import(`./view-channel-property-edit-B7HA2nnd.js`),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:e=>({id:e.params.propertyId,channelId:e.params.channelId}),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit channel property`,icon:`mdi:pencil-circle`}}]},{path:`channels`,name:q.CHANNELS,component:()=>L(()=>import(`./view-channels-Db2KuPaM.js`),__vite__mapDeps([38,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Channels`,icon:`mdi:chip`},children:[{path:`add`,name:q.CHANNELS_ADD,component:()=>L(()=>import(`./view-channel-add-DV7C8y80.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,24,25,26,27,28])),props:!1,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Add new channel`,icon:`mdi:add-circle`}},{path:`:id`,name:q.CHANNELS_EDIT,component:()=>L(()=>import(`./view-channel-edit-5--_eck7.js`),__vite__mapDeps([35,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}}]},{path:`channel/:id`,name:q.CHANNEL,component:()=>L(()=>import(`./view-channel-C-fOWWRX.js`),__vite__mapDeps([39,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Channel detail`,icon:`mdi:chip`},children:[{path:`edit`,name:q.CHANNEL_EDIT,component:()=>L(()=>import(`./view-channel-edit-5--_eck7.js`),__vite__mapDeps([35,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit channel`,icon:`mdi:pencil-circle`}},{path:`property/add`,name:q.CHANNEL_ADD_PROPERTY,component:()=>L(()=>import(`./view-channel-property-add-wDJXaHo2.js`),__vite__mapDeps([36,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:e=>({channelId:e.params.id}),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Add new channel property`,icon:`mdi:plus-circle`}},{path:`property/:propertyId`,name:q.CHANNEL_EDIT_PROPERTY,component:()=>L(()=>import(`./view-channel-property-edit-B7HA2nnd.js`),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28])),props:e=>({id:e.params.propertyId,channelId:e.params.id}),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:`Edit channel property`,icon:`mdi:pencil-circle`}}]}],rn=F({id:Y,draft:D().default(!1),channel:Y,name:R().trim().nonempty(),createdAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});F({fetching:F({items:j(Y).default([]),item:j(Y)}),creating:j(Y),updating:j(Y),deleting:j(Y)}),F({id:Y,data:se({})}),F({id:Y,data:F({name:R().trim().nonempty()})}),F({id:Y.optional(),channelId:Y.optional()}),F({id:Y,channelId:Y}),F({channelId:Y});var an=F({id:Y.optional().default(ze()),channelId:Y,draft:D().optional().default(!1),data:F({name:R().trim().nonempty()})});F({id:Y,channelId:Y}),F({id:Y,channelId:Y});var on=F({id:R().uuid().optional(),channel:R().uuid(),name:R().trim().nonempty()}),sn=F({id:R().uuid(),channel:R().uuid(),name:R().trim().nonempty(),created_at:R().date(),updated_at:R().date().nullable()}),cn=e=>{let t=rn.safeParse({id:e.id,channel:e.channel,name:e.name,createdAt:e.created_at,updatedAt:e.updated_at});if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate received channel control data.`);return t.data},ln=e=>{let t=on.safeParse({id:e.id,channel:e.channel,name:e.name});if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate create channel control request.`);return t.data},un={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},dn=lt(`devices_module-channels_controls`,()=>{let e=ct(),t=we(),n=w(un),r=w([]),i=w({}),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:cn(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=rn.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`Failed to insert channel control.`);return i.value[n.data.id]=n.data}let n=rn.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`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 W(`You have to provide at least channel or control id`)}},g=async t=>{let r=d[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new H(`Already fetching channel control.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${S}/${K}/channels/{channelId}/controls/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(n!==void 0){let e=cn(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch channel control.`;throw r&&(o=B(r,o)),new H(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:g,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 H(`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(`/${S}/${K}/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=cn(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=B(a,s)),new H(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=an.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new G(`Failed to add channel control.`);let o=rn.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 G(`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(`/${S}/${K}/channels/{channelId}/controls`,{params:{path:{channelId:r.channelId}},body:{data:ln({...o.data,id:r.id,channel:r.channelId})}});if(t!==void 0&&t.data.id===r.id){let e=cn(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=B(n,s)),new H(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 W(`ChannelsControls is already being saved.`);if(!(r.id in i.value))throw new W(`Failed to get channel control data to save.`);let a=rn.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new G(`Failed to save channel control.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${S}/${K}/channels/{channelId}/controls`,{params:{path:{channelId:a.data.channel}},body:{data:ln({...a.data,id:r.id,channel:r.channelId})}});if(t!==void 0&&t.data.id===r.id){let e=cn(t.data);return i.value[e.id]=e,e}let s=`Failed to create channel control.`;throw n&&(s=B(n,s)),new H(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 W(`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(`/${S}/${K}/channels/{channelId}/controls/{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 channel control failed.`;throw n&&(i=B(n,i)),new H(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),fn=e=>dn(e),X=F({id:Y,draft:D().default(!1),type:R().trim().nonempty(),channel:Y,category:P(et).default(et.generic),identifier:R().trim().nonempty().nullable().default(null),name:R().trim().nullable(),permissions:j(P(Ze)),dataType:P(Je),unit:R().nullable().optional().default(null),format:j(k([R(),k([N(),ye()])])).nullable(),invalid:k([R(),N(),D()]).nullable(),step:N().nullable(),value:pe(e=>e==null?null:typeof e==`object`&&e&&`value`in e?e:{value:e,lastUpdated:null,trend:null},F({value:k([R(),N(),D()]).nullable().default(null),lastUpdated:R().nullable().optional().default(null),trend:P(He).nullable().optional().default(null)}).nullable()).default(null),createdAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});F({fetching:F({items:j(Y).default([]),item:j(Y)}),creating:j(Y),updating:j(Y),deleting:j(Y)}),F({id:Y,type:R().trim().nonempty(),data:se({})}),F({id:Y,data:F({type:R().trim().nonempty(),category:P(et).default(et.generic),identifier:R().trim().nonempty().nullable(),name:R().trim().nullable(),permissions:j(P(Ze)),dataType:P(Je),format:j(k([R(),k([N(),ye()])])).nullable(),invalid:k([R(),N(),D()]).nullable(),step:N().nullable(),value:F({value:k([R(),N(),D()]).nullable().default(null),lastUpdated:R().nullable().optional().default(null),trend:P(He).nullable().optional().default(null)}).nullable()})}),F({id:Y.optional(),channelId:Y.optional()}),F({id:Y,channelId:Y}),F({channelId:Y});var pn=F({id:Y.optional().default(ze()),channelId:Y,draft:D().optional().default(!1),data:F({type:R().trim().nonempty(),category:P(et).default(et.generic),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nullable(),permissions:j(P(Ze)),dataType:P(Je),format:j(k([R(),k([N(),ye()])])).nullable(),invalid:k([R(),N(),D()]).nullable(),step:k([R(),N()]).transform(e=>e===``?void 0:Number(e)).nullable(),value:k([R(),N(),D()]).nullable().optional()})}),mn=F({id:Y,channelId:Y,data:F({type:R().trim().nonempty(),category:P(et).optional(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nullable().optional(),format:j(k([R(),k([N(),ye()])])).nullable().optional(),invalid:k([R(),N(),D()]).nullable().optional(),step:k([R(),N()]).transform(e=>e===``?void 0:Number(e)).nullable(),value:k([R(),N(),D()]).nullable().optional()})});F({id:Y,channelId:Y}),F({id:Y,channelId:Y});var hn=F({id:R().uuid().optional(),type:R().trim().nonempty(),category:P(et),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nullable(),permissions:j(P(Ze)),data_type:P(Je),format:j(k([R(),k([N(),ye()])])).nullable(),invalid:k([R(),N(),D()]).nullable(),step:N().nullable(),value:k([R(),N(),D()]).nullable()}),gn=F({type:R().trim().nonempty(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nullable().optional(),format:j(k([R(),k([N(),ye()])])).nullable().optional(),invalid:k([R(),N(),D()]).nullable().optional(),step:N().nullable().optional(),value:k([R(),N(),D()]).nullable().optional()}),_n=F({id:R().uuid(),type:R().trim().nonempty(),channel:R().uuid(),category:P(et),identifier:R().trim().nonempty().nullable(),name:R().trim().nullable(),permissions:j(P(Ze)),data_type:P(Je),format:j(k([R(),k([N(),ye()])])).nullable(),invalid:k([R(),N(),D()]).nullable(),step:N().nullable(),value:F({value:k([R(),N(),D()]).nullable().optional(),last_updated:R().nullable().optional(),trend:P(He).nullable().optional()}).nullable().optional(),created_at:R().date(),updated_at:R().date().nullable()}),vn=(e,t)=>{let n=t.safeParse(Ue(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate received channel property data.`);return n.data},yn=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate create channel property request.`);return n.data},bn=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate update channel property request.`);return n.data},Z=at(),xn={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},Sn=lt(`devices_module-channels_properties`,()=>{let e=ct(),t=we(),{getElement:n}=Tt(),r=w(xn),i=w([]),a=w({}),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:vn(e.data,t?.schemas?.channelPropertySchema||X)})},h=e=>{let r=n(e.data.type);if(e.id&&a.value&&e.id in a.value){let n=(r?.schemas?.channelPropertySchema||X).safeParse({...a.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`Failed to insert channel property.`);return a.value[n.data.id]=n.data}let i=(r?.schemas?.channelPropertySchema||X).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to insert channel property.`);return a.value=a.value??{},a.value[i.data.id]=i.data},g=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 W(`You have to provide at least channel or property id`)}},_=async t=>{let i=f[t.id];if(i)return i;let o=(async()=>{if(r.value.fetching.item.includes(t.id))throw new H(`Already fetching channel property.`);r.value.fetching.item.push(t.id);try{let{data:r,error:i,response:o}=await e.client.GET(`/${S}/${K}/channels/{channelId}/properties/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(r!==void 0){let e=n(r.data.type),t=vn(r.data,e?.schemas?.channelPropertySchema||X);return a.value[t.id]=t,t}let s=`Failed to fetch channel property.`;throw i&&(s=B(i,s)),new H(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:g,get:_,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 H(`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(`/${S}/${K}/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=vn(e,n(e.type)?.schemas?.channelPropertySchema||X);return[t.id,t]}));return a.value={...a.value,...e},Object.values(a.value)}let c=`Failed to fetch channel properties.`;throw o&&(c=B(o,c)),new H(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=pn.safeParse(i);if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new G(`Failed to add property.`);let s=n(i.data.type),c=(s?.schemas?.channelPropertySchema||X).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 G(`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(`/${S}/${K}/channels/{channelId}/properties`,{params:{path:{channelId:i.channelId}},body:{data:yn({...c.data,value:c.data.value?.value??null},s?.schemas?.channelPropertyCreateReqSchema||hn)}});if(t!==void 0&&t.data.id===i.id){let e=n(t.data.type),r=vn(t.data,e?.schemas?.channelPropertySchema||X);return a.value[r.id]=r,r}delete a.value[c.data.id];let l=`Failed to create channel property.`;throw r&&(l=B(r,l)),new H(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 W(`Property is already being updated.`);if(!(i.id in a.value))throw new W(`Failed to get channel property data to update.`);let o=mn.safeParse(i);if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new G(`Failed to edit channel property.`);let s=n(i.data.type),c=(s?.schemas?.channelPropertySchema||X).safeParse({...(0,Z.omit)(a.value[i.id],`value`),...(0,Z.omitBy)(i.data,Z.isUndefined)});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new G(`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(`/${S}/${K}/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,Z.omit)(c.data,`value`)},s?.schemas?.channelPropertyUpdateReqSchema||gn)}});if(t!==void 0){let e=n(t.data.type),r=vn(t.data,e?.schemas?.channelPropertySchema||X);return a.value[r.id]=r,r}await _({id:i.id,channelId:i.channelId});let l=`Failed to update channel property.`;throw r&&(l=B(r,l)),new H(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 W(`Property is already being saved.`);let o=a.value[i.id];if(!o)throw new W(`Failed to get channel property data to save.`);let s=n(o.type),c=(s?.schemas?.channelPropertySchema||X).safeParse(o);if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new G(`Failed to save channel property.`);r.value.updating.push(i.id);try{let{data:t,error:r,response:o}=await e.client.POST(`/${S}/${K}/channels/{channelId}/properties`,{params:{path:{channelId:c.data.channel}},body:{data:yn({...c.data,value:c.data.value?.value??null},s?.schemas?.channelPropertyCreateReqSchema||hn)}});if(t!==void 0&&t.data.id===i.id){let e=n(t.data.type),r=vn(t.data,e?.schemas?.channelPropertySchema||X);return a.value[r.id]=r,r}let l=`Failed to create channel property.`;throw r&&(l=B(r,l)),new H(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 W(`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(`/${S}/${K}/channels/{channelId}/properties/{id}`,{params:{path:{channelId:t.channelId,id:t.id}}});if(r.status===204)return!0;await _({id:t.id,channelId:t.channelId});let i=`Remove property failed.`;throw n&&(i=B(n,i)),new H(i,r.status)}finally{r.value.deleting=r.value.deleting.filter(e=>e!==t.id)}return!0}}}),Cn=e=>Sn(e),Q=F({id:Y,draft:D().default(!1),type:R().trim().nonempty(),device:Y,category:P(I).default(I.generic),identifier:R().trim().nonempty().nullable().default(null),name:R().trim().nonempty(),description:R().trim().nullable().default(null),parent:R().uuid().nullable().default(null),createdAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});F({fetching:F({items:j(k([Y,ft(`all`)])).default([]),item:j(Y)}),creating:j(Y),updating:j(Y),deleting:j(Y)}),F({id:Y,type:R().trim().nonempty(),data:se({})}),F({id:Y,data:F({type:R().trim().nonempty(),category:P(I).default(I.generic),identifier:R().trim().nonempty().nullable(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),parent:R().uuid().nullable().optional()})}),F({id:Y.optional(),deviceId:Y.optional()}),F({id:Y,deviceId:Y.optional()}),F({deviceId:Y.optional()});var wn=F({id:Y.optional().default(ze()),deviceId:Y,draft:D().optional().default(!1),data:F({type:R().trim().nonempty(),category:P(I).default(I.generic),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),parent:R().uuid().nullable().optional()})}),Tn=F({id:Y,deviceId:Y.optional(),data:F({type:R().trim().nonempty(),category:P(I).optional(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().optional(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),parent:R().uuid().nullable().optional()})});F({id:Y,deviceId:Y}),F({id:Y,deviceId:Y.optional()});var En=F({id:R().uuid().optional(),type:R().trim().nonempty(),device:R().uuid(),category:P(I),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),parent:R().uuid().nullable().optional(),controls:j(on).optional(),properties:j(hn).optional()}),Dn=F({type:R().trim().nonempty(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty().optional(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),parent:R().uuid().nullable().optional()}),On=F({id:R().uuid(),type:R().trim().nonempty(),device:R().uuid(),category:P(I),identifier:R().trim().nonempty().nullable(),name:R().trim().nonempty(),description:R().trim().nullable(),parent:R().uuid().nullable().optional(),created_at:R().date(),updated_at:R().date().nullable(),controls:j(sn),properties:j(_n)}),kn=(e,t)=>{let n=t.safeParse(Ue(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate received channel data.`);return n.data},An=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate create channel request.`);return n.data},jn=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate update channel request.`);return n.data},Mn={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},Nn=lt(`devices_module-channels`,()=>{let e=ct(),t=we(),{getElement:n}=Ct(),{getElement:r}=Tt(),i=De(),a=w(Mn),o=w([]),s=w({}),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={},g=e=>{let t=n(e.type);return _({id:e.id,data:kn(e.data,t?.schemas?.channelSchema||Q)})},_=e=>{let r=n(e.data.type);if(e.id&&s.value&&e.id in s.value){let n=(r?.schemas?.channelSchema||Q).safeParse({...s.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`Failed to insert channel.`);return s.value[n.data.id]=n.data}let i=(r?.schemas?.channelSchema||Q).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to insert channel.`);return s.value=s.value??{},s.value[i.data.id]=i.data},v=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 W(`You have to provide at least device or channel id`)}},y=async t=>{let r=m[t.id];if(r)return r;let i=(async()=>{if(a.value.fetching.item.includes(t.id))throw new H(`Already fetching channel.`);a.value.fetching.item.push(t.id);try{let r;r=t.deviceId?await e.client.GET(`/${S}/${K}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}}):await e.client.GET(`/${S}/${K}/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=kn(i.data,e?.schemas?.channelSchema||Q);return s.value[t.id]=t,C(t,i.data.controls),re(t,i.data.properties),t}let c=`Failed to fetch channel.`;throw a&&(c=(t.deviceId,B(a,c))),new H(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]}},b=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 H(`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(`/${S}/${K}/devices/{deviceId}/channels`,{params:{path:{deviceId:t.deviceId}}}):await e.client.GET(`/${S}/${K}/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=kn(e,n(e.type)?.schemas?.channelSchema||Q);return C(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,B(a,l))),new H(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`]}},ee=async r=>{let i=wn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to add channel.`);let o=n(r.data.type),c=(o?.schemas?.channelSchema||Q).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 G(`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(`/${S}/${K}/devices/{deviceId}/channels`,{params:{path:{deviceId:r.deviceId}},body:{data:An(c.data,o?.schemas?.channelCreateReqSchema||En)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=kn(t.data,e?.schemas?.channelSchema||Q);return s.value[r.id]=r,C(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=B(i,l)),new H(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 W(`Channel is already being updated.`);if(!(r.id in s.value))throw new W(`Failed to get channel data to update.`);let i=Tn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to edit channel.`);let o=n(r.data.type),c=(o?.schemas?.channelSchema||Q).safeParse({...s.value[r.id],...(0,Z.omitBy)(r.data,Z.isUndefined)});if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new G(`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(`/${S}/${K}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:r.deviceId,id:r.id}},body:{data:jn(c.data,o?.schemas?.channelUpdateReqSchema||Dn)}}):await e.client.PATCH(`/${S}/${K}/channels/{id}`,{params:{path:{id:r.id}},body:{data:jn(c.data,o?.schemas?.channelUpdateReqSchema||Dn)}});let{data:i,error:a,response:l}=t;if(i!==void 0){let e=n(i.data.type),t=kn(i.data,e?.schemas?.channelSchema||Q);return s.value[t.id]=t,t}await y({id:r.id});let u=`Failed to update channel.`;throw a&&(u=(r.deviceId,B(a,u))),new H(u,l.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==r.id)}},ne=async r=>{if(a.value.updating.includes(r.id))throw new W(`Channels is already being saved.`);let i=s.value[r.id];if(!i)throw new W(`Failed to get channel data to save.`);let o=n(i.type),c=(o?.schemas?.channelSchema||Q).safeParse(i);if(!c.success)throw t.error(`Schema validation failed with:`,c.error),new G(`Failed to save channel.`);a.value.updating.push(r.id);try{let{data:t,error:i,response:a}=await e.client.POST(`/${S}/${K}/devices/{deviceId}/channels`,{params:{path:{deviceId:c.data.device}},body:{data:An(c.data,o?.schemas?.channelCreateReqSchema||En)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=kn(t.data,e?.schemas?.channelSchema||Q);return s.value[r.id]=r,C(r,t.data.controls),re(r,t.data.properties),r}let l=`Failed to create channel.`;throw i&&(l=B(i,l)),new H(l,a.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==r.id)}},x=async t=>{if(a.value.deleting.includes(t.id))throw new W(`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(`/${S}/${K}/devices/{deviceId}/channels/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}}):await e.client.DELETE(`/${S}/${K}/channels/{id}`,{params:{path:{id:t.id}}});let{error:r,response:a}=n;if(a.status===204)return i.getStore(xt).unset({channelId:t.id}),i.getStore(vt).unset({channelId:t.id}),!0;await y({id:t.id});let o=`Remove channel failed.`;throw r&&(o=(t.deviceId,B(r,o))),new H(o,a.status)}finally{a.value.deleting=a.value.deleting.filter(e=>e!==t.id)}return!0},C=(e,t)=>{let n=i.getStore(xt);t.forEach(e=>{n.set({id:e.id,data:cn(e)})}),n.firstLoad.push(e.id)},re=(e,t)=>{let n=i.getStore(vt);t.forEach(e=>{let t=r(e.type);n.set({id:e.id,data:vn(e,t?.schemas?.channelPropertySchema||X)})}),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:g,set:_,unset:v,get:y,fetch:b,add:ee,edit:te,save:ne,remove:x}}),Pn=e=>Nn(e),Fn=F({id:Y,draft:D().default(!1),device:Y,name:R().trim().nonempty(),createdAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});F({fetching:F({items:j(Y).default([]),item:j(Y)}),creating:j(Y),updating:j(Y),deleting:j(Y)}),F({id:Y,data:se({})}),F({id:Y,data:F({name:R().trim().nonempty()})}),F({id:Y.optional(),deviceId:Y.optional()}),F({id:Y,deviceId:Y}),F({deviceId:Y});var In=F({id:Y.optional().default(ze()),deviceId:Y,draft:D().optional().default(!1),data:F({name:R().trim().nonempty()})});F({id:Y,deviceId:Y}),F({id:Y,deviceId:Y});var Ln=F({id:R().uuid().optional(),device:R().uuid(),name:R().trim().nonempty()}),Rn=F({id:R().uuid(),device:R().uuid(),name:R().trim().nonempty(),created_at:R().date(),updated_at:R().date().nullable()}),zn=e=>{let t=Fn.safeParse({id:e.id,device:e.device,name:e.name,createdAt:e.created_at,updatedAt:e.updated_at});if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate received device control data.`);return t.data},Bn=e=>{let t=Ln.safeParse({id:e.id,device:e.device,name:e.name});if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate create device control request.`);return t.data},Vn={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},Hn=lt(`devices_module-devices_controls`,()=>{let e=ct(),t=we(),n=w(Vn),r=w([]),i=w({}),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:zn(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=Fn.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`Failed to insert device control.`);return i.value[n.data.id]=n.data}let n=Fn.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new G(`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 W(`You have to provide at least device or control id`)}},g=async t=>{let r=d[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new H(`Already fetching device control.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${S}/${K}/devices/{deviceId}/controls/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}});if(n!==void 0){let e=zn(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch device control.`;throw r&&(o=B(r,o)),new H(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:g,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 H(`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(`/${S}/${K}/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=zn(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=B(a,s)),new H(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=In.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new G(`Failed to add device control.`);let o=Fn.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 G(`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(`/${S}/${K}/devices/{deviceId}/controls`,{params:{path:{deviceId:r.deviceId}},body:{data:Bn({...o.data,id:r.id,device:r.deviceId})}});if(t!==void 0&&t.data.id===r.id){let e=zn(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=B(n,s)),new H(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 W(`DevicesControls is already being saved.`);if(!(r.id in i.value))throw new W(`Failed to get device control data to save.`);let a=Fn.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new G(`Failed to save device control.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${S}/${K}/devices/{deviceId}/controls`,{params:{path:{deviceId:a.data.device}},body:{data:Bn({...a.data,id:r.id,device:r.deviceId})}});if(t!==void 0&&t.data.id===r.id){let e=zn(t.data);return i.value[e.id]=e,e}let s=`Failed to create device control.`;throw n&&(s=B(n,s)),new H(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 W(`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(`/${S}/${K}/devices/{deviceId}/controls/{id}`,{params:{path:{deviceId:t.deviceId,id:t.id}}});if(r.status===204)return!0;await g({id:t.id,deviceId:t.deviceId});let i=`Remove device control failed.`;throw n&&(i=B(n,i)),new H(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),Un=e=>Hn(e),$=F({id:Y,draft:D().default(!1),type:R().trim().nonempty(),category:P(ae).default(ae.generic),identifier:R().trim().nonempty().nullable().default(null),name:R().trim().nonempty(),description:R().trim().nullable().default(null),enabled:D().default(!0),roomId:R().uuid().nullable().default(null),zoneIds:j(R().uuid()).default([]),status:F({online:D().default(!1),status:P(Be).default(Be.unknown),lastChanged:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).nullable().default(null)}).default({online:!1,status:Be.unknown,lastChanged:null}),createdAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});F({fetching:F({items:D().default(!1),item:j(Y)}),creating:j(Y),updating:j(Y),deleting:j(Y)}),F({id:Y,type:R().trim().nonempty(),data:se({})}),F({id:Y,data:F({type:R().trim().nonempty(),category:P(ae).default(ae.generic),identifier:R().trim().nonempty().nullable(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:D(),roomId:R().uuid().nullable().optional(),status:F({online:D(),status:P(Be),lastChanged:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e)).nullable().optional()})}).catchall(Ae())}),F({id:Y}),F({id:Y});var Wn=F({id:Y.optional().default(ze()),draft:D().optional().default(!1),data:F({type:R().trim().nonempty(),category:P(ae).default(ae.generic),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:D().optional(),roomId:R().uuid().nullable().optional()}).catchall(Ae())}),Gn=F({id:Y,data:F({type:R().trim().nonempty(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().optional(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:D().optional(),roomId:R().uuid().nullable().optional()}).catchall(Ae())});F({id:Y}),F({id:Y}),F({id:Y,zoneId:R().uuid()}),F({id:Y,zoneId:R().uuid()});var Kn=F({id:R().uuid().optional(),type:R().trim().nonempty(),category:P(ae),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:D().optional(),room_id:R().uuid().nullable().optional(),controls:j(Ln).optional(),channels:j(En).optional()}),qn=F({type:R().trim().nonempty(),category:P(ae).optional(),identifier:R().trim().nonempty().nullable().optional(),name:R().trim().nonempty().optional(),description:R().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:D().optional(),room_id:R().uuid().nullable().optional()}),Jn=F({id:R().uuid(),type:R(),category:P(ae),identifier:R().trim().nonempty().nullable(),name:R().trim().nonempty(),description:R().trim().nullable(),enabled:D(),room_id:R().uuid().nullable(),zone_ids:j(R().uuid()),status:F({online:D(),status:P(Be),last_changed:R().datetime({offset:!0}).nullable().optional()}),created_at:R().date(),updated_at:R().date().nullable(),controls:j(Rn),channels:j(On)}),Yn=(e,t)=>{let n=t.safeParse(Ue(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate received device data.`);return n.data},Xn=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate create device request.`);return n.data},Zn=(e,t)=>{let n=t.safeParse(Xe(e));if(!n.success)throw z.error(`Schema validation failed with:`,n.error),new G(`Failed to validate update device request.`);return n.data},Qn={fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]},$n=lt(`devices_module-devices`,()=>{let e=ct(),t=we(),{getElement:n}=wt(),{getElement:r}=Ct(),{getElement:i}=Tt(),a=De(),o=w(Qn),s=w(!1),c=w({}),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={},g=e=>{let t=n(e.type);return _({id:e.id,data:Yn(e.data,t?.schemas?.deviceSchema||$)})},_=e=>{let r=n(e.data.type);if(e.id&&c.value&&e.id in c.value){let n=(0,Z.omitBy)(e.data,Z.isUndefined),i=(r?.schemas?.deviceSchema||$).safeParse({...c.value[e.id],...n});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to insert device.`);return c.value[i.data.id]=i.data}let i=(r?.schemas?.deviceSchema||$).safeParse({...e.data,id:e.id});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to insert device.`);return c.value=c.value??{},c.value[i.data.id]=i.data},v=e=>{c.value&&delete c.value[e.id]},y=async t=>{let r=m[t.id];if(r)return r;let i=(async()=>{if(o.value.fetching.item.includes(t.id))throw new H(`Already fetching device.`);o.value.fetching.item.push(t.id);try{let{data:r,error:i,response:a}=await e.client.GET(`/${S}/${K}/devices/{id}`,{params:{path:{id:t.id}}});if(r!==void 0){let e=n(r.data.type),t=Yn(r.data,e?.schemas?.deviceSchema||$);return c.value[t.id]=t,ie(t,r.data.controls),T(t,r.data.channels),t}let o=`Failed to fetch device.`;throw i&&(o=B(i,o)),new H(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]}},b=async()=>{if(`all`in h)return h.all;let t=(async()=>{if(o.value.fetching.items)throw new H(`Already fetching devices.`);o.value.fetching.items=!0;try{let{data:t,error:r,response:i}=await e.client.GET(`/${S}/${K}/devices`);if(t!==void 0)return c.value=Object.fromEntries(t.data.map(e=>{let t=Yn(e,n(e.type)?.schemas?.deviceSchema||$);return ie(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=B(r,a)),new H(a,i.status)}finally{o.value.fetching.items=!1}})();h.all=t;try{return await t}finally{delete h.all}},ee=async r=>{let i=Wn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to add device.`);let a=n(r.data.type),s=(a?.schemas?.deviceSchema||$).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 G(`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(`/${S}/${K}/devices`,{body:{data:Xn(s.data,a?.schemas?.deviceCreateReqSchema||Kn)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=Yn(t.data,e?.schemas?.deviceSchema||$);return c.value[r.id]=r,ie(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=B(i,l)),new H(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 W(`Device is already being updated.`);if(!(r.id in c.value))throw new W(`Failed to get device data to update.`);let i=Gn.safeParse(r);if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new G(`Failed to edit device.`);let a=n(r.data.type),s=(a?.schemas?.deviceSchema||$).safeParse({...c.value[r.id],...(0,Z.omitBy)(r.data,Z.isUndefined)});if(!s.success)throw t.error(`Schema validation failed with:`,s.error),new G(`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(`/${S}/${K}/devices/{id}`,{params:{path:{id:r.id}},body:{data:Zn(s.data,a?.schemas?.deviceUpdateReqSchema||qn)}});if(t!==void 0){let e=n(t.data.type),r=Yn(t.data,e?.schemas?.deviceSchema||$);return c.value[r.id]=r,r}await y({id:r.id});let l=`Failed to update device.`;throw i&&(l=B(i,l)),new H(l,o.status)}finally{o.value.updating=o.value.updating.filter(e=>e!==r.id)}},ne=async r=>{if(o.value.updating.includes(r.id))throw new W(`Device is already being saved.`);let i=c.value[r.id];if(!i)throw new W(`Failed to get device data to save.`);let a=n(i.type),s=(a?.schemas?.deviceSchema||$).safeParse(i);if(!s.success)throw t.error(`Schema validation failed with:`,s.error),new G(`Failed to save device.`);o.value.updating.push(r.id);try{let{data:t,error:i,response:o}=await e.client.POST(`/${S}/${K}/devices`,{body:{data:Xn(s.data,a?.schemas?.deviceCreateReqSchema||Kn)}});if(t!==void 0&&t.data.id===r.id){let e=n(t.data.type),r=Yn(t.data,e?.schemas?.deviceSchema||$);return c.value[r.id]=r,ie(r,t.data.controls),T(r,t.data.channels),r}let l=`Failed to create device.`;throw i&&(l=B(i,l)),new H(l,o.status)}finally{o.value.updating=o.value.updating.filter(e=>e!==r.id)}},x=async t=>{if(o.value.deleting.includes(t.id))throw new W(`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(`/${S}/${K}/devices/{id}`,{params:{path:{id:t.id}}});if(r.status===204){a.getStore(_t).unset({deviceId:t.id});let e=a.getStore(bt),n=a.getStore(xt),r=a.getStore(vt);return e.findForDevice(t.id).forEach(e=>{n.unset({channelId:e.id}),r.unset({channelId:e.id})}),e.unset({deviceId:t.id}),!0}await y({id:t.id});let i=`Remove account failed.`;throw n&&(i=B(n,i)),new H(i,r.status)}finally{o.value.deleting=o.value.deleting.filter(e=>e!==t.id)}return!0},C=async t=>{if(!c.value[t.id])throw new W(`Device [${t.id}] not found.`);o.value.updating.push(t.id);try{let{response:n}=await e.client.POST(`/${S}/${K}/devices/{id}/zones/{zoneId}`,{params:{path:{id:t.id,zoneId:t.zoneId}}});if(!n.ok)throw new H(`Failed to add device to zone.`,n.status);return await y({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 W(`Device [${t.id}] not found.`);o.value.updating.push(t.id);try{let{response:n}=await e.client.DELETE(`/${S}/${K}/devices/{id}/zones/{zoneId}`,{params:{path:{id:t.id,zoneId:t.zoneId}}});if(!n.ok)throw new H(`Failed to remove device from zone.`,n.status);return await y({id:t.id})}finally{o.value.updating=o.value.updating.filter(e=>e!==t.id)}},ie=(e,t)=>{let n=a.getStore(_t);t.forEach(e=>{n.set({id:e.id,data:zn(e)})}),n.firstLoad.push(e.id)},T=(e,t)=>{let n=a.getStore(bt),o=a.getStore(xt),s=a.getStore(vt);t.forEach(e=>{let t=r(e.type);n.set({id:e.id,data:kn(e,t?.schemas?.channelSchema||Q)}),e.controls.forEach(e=>{o.set({id:e.id,data:cn(e)})}),o.firstLoad.push(e.id),e.properties.forEach(e=>{let t=i(e.type);s.set({id:e.id,data:vn(e,t?.schemas?.channelPropertySchema||X)})}),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:g,set:_,unset:v,get:y,fetch:b,add:ee,edit:te,save:ne,remove:x,addZone:C,removeZone:re}}),er=e=>$n(e),tr=F({type:P(Ie),severity:P(Ke),channelCategory:P(I).optional(),channelId:Y.nullable().optional(),propertyCategory:P(et).optional(),propertyId:Y.nullable().optional(),message:R().trim().nonempty(),expected:R().nullable().optional(),actual:R().nullable().optional()}),nr=F({deviceId:Y,deviceIdentifier:R().nullable().optional(),deviceName:R().trim().nonempty(),deviceCategory:P(ae),pluginType:R().trim().nonempty(),isValid:D(),issues:j(tr)}),rr=F({summary:F({totalDevices:N().int().nonnegative(),validDevices:N().int().nonnegative(),invalidDevices:N().int().nonnegative(),totalIssues:N().int().nonnegative(),errorCount:N().int().nonnegative(),warningCount:N().int().nonnegative()}),devices:j(nr)});F({fetching:F({items:D().default(!1),item:j(Y)})});var ir=F({type:P(Ie),severity:P(Ke),channel_category:P(I).optional(),channel_id:R().uuid().nullable().optional(),property_category:P(et).optional(),property_id:R().uuid().nullable().optional(),message:R(),expected:R().nullable().optional(),actual:R().nullable().optional()}),ar=F({device_id:R().uuid(),device_identifier:R().nullable().optional(),device_name:R(),device_category:P(ae),plugin_type:R(),is_valid:D(),issues:j(ir)});F({summary:F({total_devices:N(),valid_devices:N(),invalid_devices:N(),total_issues:N(),error_count:N(),warning_count:N()}),devices:j(ar)});var or=e=>{let t=rr.safeParse(Ue(e));if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate received devices validation data.`);return t.data},sr=e=>{let t=nr.safeParse(Ue(e));if(!t.success)throw z.error(`Schema validation failed with:`,t.error),new G(`Failed to validate received device validation result data.`);return t.data},cr={fetching:{items:!1,item:[]}},lr=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}},ur=lt(`devices_module-devices_validation`,()=>{let e=ct(),t=w(cr),n=w(!1),r=w(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 H(`Already fetching validation.`);t.value.fetching.items=!0;try{let{data:t,error:i,response:a}=await e.client.GET(`/${S}/${K}/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=B(i,o)),new H(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 H(`Already fetching device validation.`);t.value.fetching.item.push(n.id);try{let{data:t,error:i,response:a}=await e.client.GET(`/${S}/${K}/devices/{id}/validation`,{params:{path:{id:n.id}}});if(t!==void 0){let e=sr(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:lr(n),devices:n}}else{let t=[e];r.value={summary:lr(t),devices:t}}return e}let o=`Failed to fetch device validation.`;throw i&&(o=B(i,o)),new H(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}}}),dr=e=>ur(e),fr=Symbol(`FB-Module-Devices`),pr={install:(e,t)=>{let n=De(e),r=be(e),i=ue(e),a=ve(e);for(let[e,n]of Object.entries(tn)){let r=(0,Z.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=er(t.store);e.provide(gt,o),n.addStore(gt,o);let s=Un(t.store);e.provide(_t,s),n.addStore(_t,s);let c=Pn(t.store);e.provide(bt,c),n.addStore(bt,c);let l=fn(t.store);e.provide(xt,l),n.addStore(xt,l);let u=Cn(t.store);e.provide(vt,u),n.addStore(vt,u);let d=dr(t.store);e.provide(yt,d),n.addStore(yt,d),a.addModule(fr,{type:St,name:`Devices`,description:`Manage your devices, channels, properties, and controls in one place.`,elements:[]}),t.router.getRoutes().find(e=>e.name===y.ROOT)&&nn.forEach(e=>{t.router.addRoute(y.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`DevicesModule.`)){if(e.event===U.DEVICE_CONNECTION_CHANGED){let t=(0,Z.get)(e.payload,`device`);if(t&&typeof t==`object`&&`id`in t&&typeof t.id==`string`){let e=o.findById(t.id);if(e){let n=(0,Z.get)(t,`status`);n&&typeof n==`object`&&o.set({id:t.id,data:{...e,status:Ue(n)}})}}return}if(!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case U.DEVICE_CREATED:case U.DEVICE_UPDATED:o.onEvent({id:e.payload.id,type:String((0,Z.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case U.DEVICE_DELETED:o.unset({id:e.payload.id});break;case U.DEVICE_CONTROL_CREATED:s.onEvent({id:e.payload.id,data:e.payload});break;case U.DEVICE_CONTROL_DELETED:s.unset({id:e.payload.id});break;case U.CHANNEL_CREATED:case U.CHANNEL_UPDATED:c.onEvent({id:e.payload.id,type:String((0,Z.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case U.CHANNEL_DELETED:c.unset({id:e.payload.id});break;case U.CHANNEL_CONTROL_CREATED:l.onEvent({id:e.payload.id,data:e.payload});break;case U.CHANNEL_CONTROL_DELETED:l.unset({id:e.payload.id});break;case U.CHANNEL_PROPERTY_CREATED:case U.CHANNEL_PROPERTY_UPDATED:case U.CHANNEL_PROPERTY_VALUE_SET:u.onEvent({id:e.payload.id,type:String((0,Z.get)(e.payload,`type`,`unknown`)),data:e.payload});break;case U.CHANNEL_PROPERTY_DELETED:u.unset({id:e.payload.id});break;case U.CHANNEL_PROPERTY_SET:u.onEvent({id:e.payload.id,type:String((0,Z.get)(e.payload,`type`,`unknown`)),data:e.payload});break;default:i.warn(`Unhandled devices module event:`,e.event)}}})}},mr={menu:{title:`Prostory`},title:`Prostory`,description:`Správa vašich prostorů (místnosti a zóny)`,headings:{list:`Prostory`,spaces:`Prostory`,detail:`Detail prostoru`,add:`Přidat prostor`,edit:`Upravit prostor`,removeSpace:`Odebrat prostor`,bulkRemoveSpace:`Odebrat prostory`,discard:`Zahodit změny`,adjustFilters:`Filtrovat prostory`},edit:{sections:{general:{title:`Obecné`},organization:{title:`Organizace`,hint:`Přiřaďte tuto místnost k zóně (např. "Přízemí", "Patro"), abyste mohli seskupit související místnosti.`},devicesDisplays:{title:`Zařízení a displeje`,titleDevicesOnly:`Zařízení`,summary:`{devices} zařízení a {displays} displejů je aktuálně přiřazeno k tomuto prostoru.`,summaryDevicesOnly:`{devices} zařízení je aktuálně přiřazeno k tomuto prostoru.`,manageDevices:`Spravovat zařízení`,manageDisplays:`Spravovat displeje`},statusWidgets:{title:`Stavové widgety`,hint:`Nakonfigurujte widgety zobrazené ve stavové oblasti prostoru na panelu.`},smartOverrides:{title:`Chytrá přepsání`,badge:`Pokročilé`,hint:`Volitelná nastavení pro zlepšení chytrého chování a ovládání na základě záměrů.`,lightingRoles:`Role osvětlení`,climateRoles:`Role klimatu`,coversRoles:`Role rolet`,sensorRoles:`Role senzorů`,smartSuggestions:`Chytré návrhy`}}},subHeadings:{list:`Organizujte zařízení a displeje podle místností nebo zón`,adjustFilters:`Upravit nastavení filtrů`,add:`Přidat nový prostor`,detail:`Správa prostoru: {space}`,onboarding:`Průvodce nastavením prostorů, zařízení a displejů`},breadcrumbs:{spaces:{list:`prostory`,detail:`prostor: {space}`,edit:`upravit prostor`,add:`přidat prostor`,onboarding:`průvodce nastavením`}},meta:{spaces:{list:{title:`Seznam prostorů`},edit:{title:`Upravit prostor: {space}`},add:{title:`Přidat prostor`},detail:{title:`Prostor: {space}`},onboarding:{title:`Průvodce nastavením prostorů`}}},table:{columns:{name:`Název`,type:`Typ`,category:`Kategorie`,description:`Popis`,order:`Pořadí`,devices:`Zařízení`,displays:`Displeje`,actions:`Akce`},empty:`Nebyly nalezeny žádné prostory. Vytvořte svůj první prostor a začněte.`},fields:{search:{placeholder:`Hledat prostory...`},spaces:{id:{title:`Interní identifikátor`,placeholder:`ID prostoru`},name:{title:`Název`,placeholder:`Zadejte název prostoru (např. Obývací pokoj)`,validation:{required:`Název je povinný`,maxLength:`Název musí mít méně než 100 znaků`}},description:{title:`Popis`,placeholder:`Volitelný popis prostoru`},type:{title:`Typ`,options:{room:`Místnost`,zone:`Zóna`},validation:{required:`Typ je povinný`}},category:{title:`Kategorie`,placeholder:`Vyberte kategorii`,hint:`Volba kategorie automaticky navrhne ikonu a popis pro tento prostor. Dostupné kategorie závisí na tom, zda se jedná o místnost nebo zónu.`,validation:{requiredForZone:`Kategorie je povinná pro zóny`},groups:{floors:`Podlaží`,outdoor:`Venkovní prostory`,other:`Ostatní`},options:{living_room:`Obývací pokoj`,bedroom:`Ložnice`,bathroom:`Koupelna`,toilet:`Toaleta`,kitchen:`Kuchyně`,dining_room:`Jídelna`,office:`Pracovna`,entryway:`Předsíň`,garage:`Garáž`,hallway:`Chodba`,laundry:`Prádelna`,utility_room:`Technická místnost`,storage:`Sklad`,closet:`Šatna`,pantry:`Spíž`,nursery:`Dětský pokoj`,guest_room:`Pokoj pro hosty`,gym:`Posilovna`,media_room:`Mediální místnost`,workshop:`Dílna`,other:`Ostatní`,floor_ground:`Přízemí`,floor_first:`První patro`,floor_second:`Druhé patro`,floor_basement:`Suterén`,floor_attic:`Podkroví`,outdoor_front_yard:`Předzahrádka`,outdoor_backyard:`Zahrada za domem`,outdoor_driveway:`Příjezdová cesta`,outdoor_garden:`Zahrada`,outdoor_terrace:`Terasa`,outdoor_balcony:`Balkón`,outdoor_walkway:`Chodník`,security_perimeter:`Bezpečnostní obvod`,utility:`Technická`,zone_other:`Ostatní`}},icon:{title:`Ikona`,placeholder:`mdi:home (název ikony Iconify)`},displayOrder:{title:`Pořadí zobrazení`,placeholder:`Pořadí v seznamech`},parentZone:{title:`Nadřazená zóna`,placeholder:`Vyberte nadřazenou zónu (volitelné)`,hint:`Tuto místnost můžete organizovat přiřazením k zóně, jako je "Přízemí" nebo "Patro". To pomáhá seskupit související místnosti.`},lightingRoles:{title:`Role osvětlení`,description:`Přiřaďte role světlům, aby panel rozuměl, jak se každé světlo obvykle používá (Práce, Relax, Noc)`,noLights:`V tomto prostoru nebyla nalezena žádná světla`,role:{title:`Role`,placeholder:`Vyberte roli`},applyDefaults:`Použít výchozí`,applyDefaultsHint:`Nastaví první světlo jako Hlavní, ostatní jako Ambientní`},climateRoles:{title:`Role klimatu`,description:`Přiřaďte role klimatickým zařízením, aby panel rozuměl, jak každé zařízení ovládá teplotu a kvalitu vzduchu`,noDevices:`V tomto prostoru nebyla nalezena žádná klimatická zařízení`,role:{title:`Role`,placeholder:`Vyberte roli`},applyDefaults:`Použít výchozí`,applyDefaultsHint:`Automaticky přiřadí role na základě typu zařízení`},coversRoles:{title:`Role rolet`,description:`Přiřaďte role okenním roletám, aby panel rozuměl, jak se každá roleta používá (primární, zatemňovací, záclonová)`,noCovers:`V tomto prostoru nebyly nalezeny žádné okenní rolety`,role:{title:`Role`,placeholder:`Vyberte roli`},applyDefaults:`Použít výchozí`,applyDefaultsHint:`Nastaví první roletu jako Primární, ostatní na základě typu`},sensorRoles:{title:`Role senzorů`,description:`Přiřaďte role kanálům senzorů, aby panel mohl seskupit hodnoty prostředí, bezpečnosti, zabezpečení, kvality vzduchu a energie.`,noSensors:`V tomto prostoru nebyly nalezeny žádné senzory`,channel:{title:`Kanál`},role:{title:`Role`,placeholder:`Vyberte roli`},applyDefaults:`Použít výchozí`,applyDefaultsHint:`Automaticky přiřadí role na základě kategorie kanálu senzoru`},suggestions:{title:`Chytré návrhy`},suggestionsEnabled:{title:`Povolit návrhy`,hint:`Když je povoleno, panel bude zobrazovat nenápadné návrhy osvětlení na základě denní doby a aktuálního stavu.`},statusWidgets:{energy:{title:`Energie`,range:{title:`Rozsah`,options:{today:`Dnes`,week:`Týden`,month:`Měsíc`}},showProduction:{title:`Zobrazit výrobu`}}}}},lightingRoles:{main:`Hlavní`,task:`Pracovní`,ambient:`Ambientní`,accent:`Akcentové`,night:`Noční`,other:`Ostatní`,hidden:`Skryté`,unassigned:`Nepřiřazeno`,descriptions:{main:`Hlavní osvětlení prostoru, obvykle stropní nebo centrální svítidla pro obecné osvětlení.`,task:`Zaměřené osvětlení pro specifické činnosti jako čtení, vaření nebo práci.`,ambient:`Jemné pozadí osvětlení pro vytvoření atmosféry a komfortu.`,accent:`Dekorativní osvětlení pro zvýraznění prvků nebo vytvoření vizuálního efektu.`,night:`Slabé osvětlení pro noční navigaci a bezpečnost.`,other:`Osvětlení, které nespadá do standardních kategorií.`,hidden:`Skrytá světla jsou vyloučena z panelového rozhraní a ovládání na základě záměrů.`}},climateRoles:{heating_only:`Pouze topení`,cooling_only:`Pouze chlazení`,auto:`Automaticky`,auxiliary:`Pomocné`,sensor:`Senzor`,hidden:`Skryté`,unassigned:`Nepřiřazeno`,descriptions:{heating_only:`Zařízení je používáno pouze pro topení v klimatické doméně.`,cooling_only:`Zařízení je používáno pouze pro chlazení v klimatické doméně.`,auto:`Zařízení může být automaticky použito pro topení i chlazení.`,auxiliary:`Pomocná klimatická zařízení jako odvlhčovače, zvlhčovače, čističky vzduchu a ventilátory.`,sensor:`Klimatický senzor poskytující hodnoty (teplota, vlhkost, kvalita vzduchu atd.) pro prostor.`,hidden:`Skrytá zařízení jsou vyloučena z rozhraní klimatické domény a ovládání.`}},sensorRoles:{environment:`Prostředí`,safety:`Bezpečnost`,security:`Zabezpečení`,air_quality:`Kvalita vzduchu`,energy:`Energie`,other:`Ostatní`,hidden:`Skryté`,descriptions:{environment:`Senzory prostředí jako teplota, vlhkost, tlak nebo úroveň osvětlení.`,safety:`Bezpečnostní senzory jako detektory kouře, plynu, úniku vody nebo oxidu uhelnatého.`,security:`Zabezpečovací senzory a senzory přítomnosti jako pohybové, obsazenostní a kontaktní senzory.`,air_quality:`Senzory kvality vzduchu včetně CO2, VOC, pevných částic a dalších znečišťujících látek.`,energy:`Senzory pro monitoring energie jako spotřeba elektřiny nebo energie.`,other:`Senzory, které nespadají do specifické kategorie.`,hidden:`Skryté senzory jsou vyloučeny z rozhraní.`},categories:{temperature:`Teplota`,humidity:`Vlhkost`,pressure:`Tlak`,illuminance:`Osvětlení`,smoke:`Kouř`,gas:`Plyn`,carbon_monoxide:`Oxid uhelnatý`,carbon_dioxide:`Oxid uhličitý`,leak:`Únik`,motion:`Pohyb`,occupancy:`Obsazenost`,contact:`Kontakt`,air_quality:`Kvalita vzduchu`,air_particulate:`Pevné částice`,nitrogen_dioxide:`Oxid dusičitý`,ozone:`Ozón`,sulphur_dioxide:`Oxid siřičitý`,volatile_organic_compounds:`Těkavé organické sloučeniny`,electrical_energy:`Energie`,electrical_generation:`Výroba`,electrical_power:`Výkon`,battery:`Baterie`}},coversRoles:{primary:`Primární`,blackout:`Zatemňovací`,sheer:`Záclonová`,outdoor:`Venkovní`,hidden:`Skryté`,unassigned:`Nepřiřazeno`,descriptions:{primary:`Hlavní okenní roleta prostoru, obvykle používaná pro obecné soukromí a regulaci světla.`,blackout:`Zatemňovací rolety navržené pro úplnou tmu, ideální pro ložnice nebo mediální místnosti.`,sheer:`Poloprůhledné záclony zajišťující soukromí a zároveň propouštějící přirozené světlo.`,outdoor:`Vnější žaluzie, markýzy nebo pergolové kryty pro venkovní ochranu.`,hidden:`Skryté rolety jsou vyloučeny z panelového rozhraní a ovládání na základě záměrů.`}},filters:{type:{title:`Typ`,all:`Vše`}},texts:{loadingSpaces:`Načítání prostorů...`,loadingSpace:`Načítání prostoru...`,noSpaces:`Nemáte nakonfigurovaný žádný prostor`,noFilteredSpaces:`Žádné prostory neodpovídají kritériím filtru`,confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`},dialogs:{lightingRoles:{title:`Upravit role osvětlení`},climateRoles:{title:`Upravit role klimatu`},coversRoles:{title:`Upravit role rolet`},sensorRoles:{title:`Upravit role senzorů`},mediaActivities:{title:`Upravit mediální aktivity`}},buttons:{add:{title:`Přidat`},done:{title:`Hotovo`},detail:{title:`Detail`},adjust:{title:`Filtr`},resetFilters:{title:`Resetovat filtry`},reset:{title:`Resetovat`},yes:{title:`Ano`},no:{title:`Ne`},save:{title:`Uložit`},cancel:{title:`Zrušit`},close:{title:`Zavřít`},discard:{title:`Zahodit`},edit:{title:`Upravit`},delete:{title:`Smazat`},previous:{title:`Předchozí`},next:{title:`Další`},finish:{title:`Dokončit`},onboarding:{title:`Průvodce nastavením`},viewAll:{title:`Zobrazit vše`},back:{title:`Zpět`}},detail:{title:`Detail prostoru`,domains:{title:`Domény`,notConfigured:`Nenastaveno`,lighting:{title:`Osvětlení`,description:`Nastavte, jak se v tomto prostoru používají světla — hlavní, pracovní, ambientní, akcentové a noční role osvětlení.`},climate:{title:`Klima`,description:`Přiřaďte role vytápění, chlazení a senzorů ke klimatickým zařízením v tomto prostoru.`},covers:{title:`Žaluzie`,description:`Nastavte role okenních krytin — primární, zatemňovací, záclonové a venkovní žaluzie.`},sensor:{title:`Senzory`,description:`Seskupte senzorové kanály podle účelu — prostředí, bezpečnost, zabezpečení, kvalita vzduchu a energie.`},media:{title:`Média`,description:`Definujte mediální aktivity jako sledování, poslech a hraní her se směrováním koncových bodů zařízení.`}},lightingRoles:{title:`Role osvětlení`,lightsAssigned:`Přiřazená světla`,noRolesAssigned:`Zatím nejsou přiřazeny žádné role`},climateRoles:{title:`Role klimatu`,devicesAssigned:`Přiřazená zařízení`,noRolesAssigned:`Zatím nejsou přiřazeny žádné role`},coversRoles:{title:`Role rolet`,coversAssigned:`Přiřazené rolety`,noRolesAssigned:`Zatím nejsou přiřazeny žádné role`},sensorRoles:{title:`Role senzorů`,sensorsAssigned:`Přiřazené senzory`,noRolesAssigned:`Zatím nejsou přiřazeny žádné role`},mediaActivities:{title:`Mediální aktivity`,noActivities:`Zatím nejsou nakonfigurovány žádné aktivity`},info:{title:`Informace o prostoru`,name:`Název`,description:`Popis`,type:`Typ`,icon:`Ikona`,displayOrder:`Pořadí zobrazení`},devices:{title:`Zařízení`,add:`Přidat zařízení`,empty:`K tomuto prostoru nejsou přiřazena žádná zařízení`,loading:`Načítání zařízení...`,remove:`Odebrat`,removeHeading:`Odebrat zařízení z prostoru`,reassign:`Přeřadit`,assign:`Přiřadit`,selectDevice:`Vyberte zařízení k přidání`,confirmRemove:`Odebrat zařízení "{name}" z tohoto prostoru?`,selectRoom:`Vyberte místnost pro zařízení`,noAvailable:`Nejsou k dispozici žádná zařízení k přidání`,removed:`Zařízení "{name}" bylo odebráno z tohoto prostoru.`,removeCanceled:`Odebrání zařízení bylo zrušeno.`},parentZone:{title:`Podlaží`,none:`Žádné podlaží nepřiřazeno`,select:`Vyberte podlaží`},displays:{title:`Displeje`,add:`Přidat displej`,empty:`K tomuto prostoru nejsou přiřazeny žádné displeje`,loading:`Načítání displejů...`,remove:`Odebrat`,removeHeading:`Odebrat displej z prostoru`,reassign:`Přeřadit`,assign:`Přiřadit`,selectDisplay:`Vyberte displej k přidání`,confirmRemove:`Odebrat displej "{name}" z tohoto prostoru?`,selectRoom:`Vyberte místnost pro tento displej`,noAvailable:`Nejsou k dispozici žádné displeje k přidání`,removed:`Displej "{name}" byl odebrán z tohoto prostoru.`,removeCanceled:`Odebrání displeje bylo zrušeno.`},media:{activities:`Mediální aktivity`},scenes:{title:`Scény`,add:`Přidat scénu`,empty:`K tomuto prostoru nejsou přiřazeny žádné scény`,loading:`Načítání scén...`,name:`Název scény`,category:`Kategorie`,status:`Stav`,enabled:`Povoleno`,disabled:`Zakázáno`,remove:`Odebrat`,removeHeading:`Odebrat scénu z prostoru`,reassign:`Přeřadit`,reassigned:`Scéna "{name}" byla úspěšně přeřazena.`,assign:`Přiřadit`,selectScene:`Vyberte scénu k přidání`,selectSpace:`Vyberte prostor pro scénu`,searchPlaceholder:`Hledat scény...`,confirmRemove:`Odebrat scénu "{name}" z tohoto prostoru?`,assignedSpace:`Přiřazený prostor`,noAvailable:`Nejsou k dispozici žádné scény k přidání`,noFilteredScenes:`Žádné scény neodpovídají vašemu hledání`,assigned:`Scéna "{name}" byla přiřazena k tomuto prostoru.`,removed:`Scéna "{name}" byla odebrána z tohoto prostoru.`,removeCanceled:`Odebrání scény bylo zrušeno.`}},media:{endpointTypes:{display:`Displej`,audio_output:`Zvukový výstup`,source:`Zdroj`,remote_target:`Vzdálený cíl`},capabilities:{power:`Napájení`,input:`Vstup`,volume:`Hlasitost`,playback:`Přehrávání`,track:`Stopa`,remote:`Dálkové ovládání`,mute:`Ztlumení`},activityLabels:{watch:`Sledování`,listen:`Poslech`,gaming:`Hraní`,background:`Pozadí`,off:`Vypnuto`},activities:{loading:`Načítání konfigurace médií...`,description:`Přiřaďte displej, zvuk, zdroj a dálkově ovládaná zařízení ke každé mediální aktivitě. Změny se ukládají automaticky.`,applyDefaults:`Použít výchozí`,applyDefaultsHint:`Automaticky přiřadí koncové body na základě typů zařízení a jejich schopností`,defaultsApplied:`Výchozí vazby byly použity.`,defaultsFailed:`Nepodařilo se použít výchozí vazby.`,selectPrompt:`Vyberte aktivitu ze seznamu pro konfiguraci jejích vazeb.`,selectEndpoint:`Vyberte koncový bod...`,save:`Uložit`,reset:`Resetovat`,saveError:`Nepodařilo se uložit vazbu`,savedSuccessfully:`Vazba byla úspěšně uložena.`,slots:{display:`Displej`,audio:`Zvukový výstup`,source:`Zdroj`,remote:`Vzdálený cíl`},overrides:{displayInput:`Preset vstupu displeje`,displayInputPlaceholder:`např. HDMI1, Apps`,audioInput:`Preset zvukového vstupu`,audioInputPlaceholder:`např. HDMI1, ARC`,sourceInput:`Preset vstupu zdroje`,sourceInputPlaceholder:`např. HDMI1, Apps`,audioVolume:`Preset hlasitosti zvuku`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Kabel`,satellite:`Satelit`,antenna:`Anténa`,av1:`AV 1`,av2:`AV 2`,component:`Komponent`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Ostatní`},status:{configured:`Nakonfigurováno`,incomplete:`Neúplné`,unconfigured:`Nenastaveno`},run:`Spustit`,deactivate:`Deaktivovat`,refreshStatus:`Obnovit stav`,rerun:`Spustit znovu`,copyDebugJson:`Kopírovat ladící JSON`,copiedToClipboard:`Ladící JSON byl zkopírován do schránky.`,activateSuccess:`Aktivita byla úspěšně aktivována.`,activateFailed:`Nepodařilo se aktivovat aktivitu.`,deactivateSuccess:`Aktivita byla deaktivována.`,deactivateFailed:`Nepodařilo se deaktivovat aktivitu.`,fetchFailed:`Nepodařilo se obnovit stav aktivity.`,preview:`Náhled`,previewFailed:`Nepodařilo se zobrazit náhled aktivity.`,previewDialog:{title:`Náhled plánu provedení`,resolvedDevices:`Rozpoznaná zařízení`,executionPlan:`Plán provedení`,step:`#`,action:`Akce`,device:`Zařízení`,critical:`Kritické`,criticalYes:`Kritické`,criticalNo:`Volitelné`,warnings:`Varování a přeskočené kroky`,noSteps:`V plánu nejsou žádné kroky provedení.`,close:`Zavřít`},activePanel:{title:`Aktivní stav`,currentActivity:`Aktuální aktivita`,none:`Žádná`,state:`Stav`,activatedAt:`Aktivováno v`,updatedAt:`Aktualizováno v`,resolvedDevices:`Rozpoznaná zařízení`,display:`Displej`,audio:`Zvuk`,source:`Zdroj`,remote:`Dálkové ovládání`},failures:{title:`Selhání`,total:`Celkem kroků`,succeeded:`Úspěšných`,failed:`Neúspěšných`,stepIndex:`Krok`,device:`Zařízení`,property:`Vlastnost`,reason:`Důvod`},activationState:{activating:`Aktivace`,active:`Aktivní`,failed:`Selhalo`,deactivated:`Deaktivováno`}}},messages:{notFound:`Prostor nebyl nalezen`,loadError:`Nepodařilo se načíst prostory`,notLoaded:`Nepodařilo se načíst prostor. Zkuste to prosím později.`,confirmRemove:`Opravdu chcete odebrat prostor "{name}"? Tuto akci nelze vrátit zpět.`,confirmDelete:`Opravdu chcete smazat tento prostor?`,created:`Nový prostor byl úspěšně přidán.`,notCreated:`Něco se pokazilo. Prostor se nepodařilo vytvořit.`,edited:`Změny uloženy! Prostor: {space} byl aktualizován.`,notEdited:`Něco se pokazilo. Aktualizace prostoru nebyla úspěšná.`,removed:`Prostor: {space} byl úspěšně odebrán.`,removeCanceled:`Odebrání prostoru: {space} bylo zrušeno.`,deletedWhileEditing:`Tento prostor byl smazán a již není dostupný.`,createError:`Nepodařilo se vytvořit prostor. Zkuste to prosím znovu.`,saveError:`Nepodařilo se uložit změny. Zkuste to prosím znovu.`,confirmBulkRemove:`Opravdu chcete odebrat {count} prostorů? Tuto akci nelze vrátit zpět.`,bulkRemoved:`{count} prostorů bylo úspěšně odebráno.`,bulkRemoveFailed:`Nepodařilo se odebrat {count} prostorů.`,bulkRemoveCanceled:`Hromadné odebrání prostorů bylo zrušeno.`},misc:{types:{room:`Místnost`,zone:`Zóna`}},onboarding:{title:`Průvodce nastavením prostorů`,devices:`zařízení`,displays:`displeje`,selectSpace:`Vyberte prostor`,selectZones:`Vyberte zóny...`,deviceName:`Název zařízení`,displayName:`Název displeje`,assignedSpace:`Přiřazený prostor`,spaceName:`Název prostoru`,zones:`Zóny (volitelné)`,advanced:`Pokročilé`,basic:`Základní`,steps:{spaces:{title:`Vytvořit prostory`,description:`Prostory vám pomáhají organizovat zařízení a displeje podle místností nebo zón (např. Obývací pokoj, Kuchyně, Ložnice). Automaticky jsme detekovali některé prostory z názvů vašich zařízení - zkontrolujte a vyberte ty, které chcete vytvořit, nebo přidejte vlastní prostory níže.`,alertTitle:`Prostory představují místnosti nebo oblasti ve vašem domě`,alertDescription:`Navrhli jsme některé prostory na základě názvů vašich zařízení. Můžete je nyní upravit nebo vše změnit později.`,proposed:`Navrhované prostory`,custom:`Vlastní prostory`,existing:`Existující prostory`,matchedExisting:`Použití existujících prostorů`,usingExisting:`Použití existujícího`,matchedWith:`Bude použit: {name}`,addManual:`Přidat vlastní prostor`,placeholder:`Zadejte název prostoru (např. Obývací pokoj)`,noProposals:`Z názvů vašich zařízení nebylo možné detekovat žádné prostory. Přidejte prostory ručně níže.`,duplicateWarning:`Prostor podobný "{name}" již existuje.`,convertedToMatch:`Tento prostor odpovídá existujícímu prostoru a byl přesunut do sekce "Použití existujících prostorů".`,multipleMatchedWith:`{count} detekovaných prostorů bude používat existující prostor "{name}"`,existingTag:`Existující`},displays:{title:`Přiřadit displeje`,description:`Přiřaďte každý displej k prostoru. Toto určuje, který prostor bude displej ve výchozím nastavení zobrazovat.`,alertTitle:`Vyberte výchozí prostor pro každý displej`,alertDescription:`Toto nastavuje pouze počáteční zobrazení - prostory můžete kdykoli přepínat přímo na displeji.`,noDisplays:`Zatím nejsou registrovány žádné displeje.`},devices:{title:`Přiřadit zařízení`,description:`Přiřaďte zařízení k prostorům. Zařízení budou předvyplněna na základě jejich názvů, pokud byly detekovány.`,alertTitle:`Propojte zařízení s místnostmi`,alertDescription:`Některá zařízení jsou předvyplněna na základě jejich názvů. Můžete je upravit - přiřazení můžete kdykoli změnit později.`,noDevices:`Nebyla nalezena žádná zařízení.`},summary:{title:`Souhrn`,description:`Zkontrolujte konfiguraci před použitím změn.`,alertTitle:`Souhrn vašeho nastavení`,alertDescription:`Stále se můžete vrátit zpět a cokoli upravit před dokončením.`}},summary:{overview:`Souhrn`,totalSpaces:`Celkem prostorů`,assignedDevices:`Přiřazená zařízení`,unassignedDevices:`Nepřiřazená zařízení`,assignedDisplays:`Přiřazené displeje`,unassignedDisplays:`Nepřiřazené displeje`,bySpace:`Přiřazení podle prostoru`,unassignedDevicesTitle:`Nepřiřazená zařízení`,unassignedDisplaysTitle:`Nepřiřazené displeje`,noDevices:`Žádná zařízení`,clickToAssignDevices:`Klikněte pro přiřazení zařízení`,clickToAssignDisplays:`Klikněte pro přiřazení displejů`},messages:{spacesCreated:`{count} prostor(ů) bylo úspěšně vytvořeno`,completed:`Nastavení dokončeno! {devices} zařízení, {displays} displej(ů) a {zones} přiřazení zón.`}},labels:{rooms:`Místnosti`,zones:`Zóny`}},hr={menu:{title:`Räume`},title:`Bereiche`,description:`Verwalten Sie Ihre Bereiche (Räume und Zonen)`,headings:{list:`Bereiche`,spaces:`Bereiche`,detail:`Bereichsdetails`,add:`Bereich hinzufügen`,edit:`Bereich bearbeiten`,removeSpace:`Bereich entfernen`,bulkRemoveSpace:`Bereiche entfernen`,discard:`Änderungen verwerfen`,adjustFilters:`Bereiche filtern`},edit:{sections:{general:{title:`Allgemein`},organization:{title:`Organisation`,hint:`Weisen Sie diesen Raum einer Zone zu (z. B. "Erdgeschoss", "Obergeschoss"), um verwandte Räume zusammenzufassen.`},devicesDisplays:{title:`Geräte & Displays`,titleDevicesOnly:`Geräte`,summary:`{devices} Geräte und {displays} Displays sind diesem Bereich derzeit zugewiesen.`,summaryDevicesOnly:`{devices} Geräte sind diesem Bereich derzeit zugewiesen.`,manageDevices:`Geräte verwalten`,manageDisplays:`Displays verwalten`},statusWidgets:{title:`Status-Widgets`,hint:`Konfigurieren Sie Widgets, die im Statusbereich des Panels angezeigt werden.`},smartOverrides:{title:`Intelligente Überschreibungen`,badge:`Erweitert`,hint:`Optionale Einstellungen zur Verbesserung des intelligenten Verhaltens und der absichtsbasierten Steuerung.`,lightingRoles:`Beleuchtungsrollen`,climateRoles:`Klimarollen`,coversRoles:`Abdeckungsrollen`,sensorRoles:`Sensorrollen`,smartSuggestions:`Intelligente Vorschläge`}}},subHeadings:{list:`Geräte und Displays nach Räumen oder Zonen organisieren`,adjustFilters:`Anzeigefilter anpassen`,add:`Neuen Bereich hinzufügen`,detail:`Bereich verwalten: {space}`,onboarding:`Einrichtungsassistent für Bereiche, Geräte und Displays`},breadcrumbs:{spaces:{list:`Bereiche`,detail:`Bereich: {space}`,edit:`Bereich bearbeiten`,add:`Bereich hinzufügen`,onboarding:`Einrichtungsassistent`}},meta:{spaces:{list:{title:`Bereiche auflisten`},edit:{title:`Bereich bearbeiten: {space}`},add:{title:`Bereich hinzufügen`},detail:{title:`Bereich: {space}`},onboarding:{title:`Einrichtungsassistent für Bereiche`}}},table:{columns:{name:`Name`,type:`Typ`,category:`Kategorie`,description:`Beschreibung`,order:`Reihenfolge`,devices:`Geräte`,displays:`Displays`,actions:`Aktionen`},empty:`Keine Bereiche gefunden. Erstellen Sie Ihren ersten Bereich, um zu beginnen.`},fields:{search:{placeholder:`Bereiche suchen...`},spaces:{id:{title:`Interner Bezeichner`,placeholder:`Bereichs-ID`},name:{title:`Name`,placeholder:`Bereichsname eingeben (z. B. Wohnzimmer)`,validation:{required:`Name ist erforderlich`,maxLength:`Name muss weniger als 100 Zeichen haben`}},description:{title:`Beschreibung`,placeholder:`Optionale Beschreibung des Bereichs`},type:{title:`Typ`,options:{room:`Raum`,zone:`Zone`},validation:{required:`Typ ist erforderlich`}},category:{title:`Kategorie`,placeholder:`Kategorie auswählen`,hint:`Die Auswahl einer Kategorie schlägt automatisch ein Symbol und eine Beschreibung für diesen Bereich vor. Verfügbare Kategorien hängen davon ab, ob es sich um einen Raum oder eine Zone handelt.`,validation:{requiredForZone:`Kategorie ist für Zonen erforderlich`},groups:{floors:`Stockwerke`,outdoor:`Außenbereiche`,other:`Sonstige`},options:{living_room:`Wohnzimmer`,bedroom:`Schlafzimmer`,bathroom:`Badezimmer`,toilet:`Toilette`,kitchen:`Küche`,dining_room:`Esszimmer`,office:`Büro`,entryway:`Eingangsbereich`,garage:`Garage`,hallway:`Flur`,laundry:`Waschküche`,utility_room:`Hauswirtschaftsraum`,storage:`Abstellraum`,closet:`Abstellkammer`,pantry:`Speisekammer`,nursery:`Kinderzimmer`,guest_room:`Gästezimmer`,gym:`Fitnessraum`,media_room:`Medienraum`,workshop:`Werkstatt`,other:`Sonstige`,floor_ground:`Erdgeschoss`,floor_first:`Erstes Obergeschoss`,floor_second:`Zweites Obergeschoss`,floor_basement:`Keller`,floor_attic:`Dachboden`,outdoor_front_yard:`Vorgarten`,outdoor_backyard:`Hinterhof`,outdoor_driveway:`Einfahrt`,outdoor_garden:`Garten`,outdoor_terrace:`Terrasse`,outdoor_balcony:`Balkon`,outdoor_walkway:`Gehweg`,security_perimeter:`Sicherheitsbereich`,utility:`Versorgung`,zone_other:`Sonstige`}},icon:{title:`Symbol`,placeholder:`mdi:home (Iconify-Symbolname)`},displayOrder:{title:`Anzeigereihenfolge`,placeholder:`Reihenfolge in Listen`},parentZone:{title:`Übergeordnete Zone`,placeholder:`Übergeordnete Zone auswählen (optional)`,hint:`Sie können diesen Raum einer Zone zuordnen, z. B. "Erdgeschoss" oder "Obergeschoss". Dies hilft, verwandte Räume zusammenzufassen.`},lightingRoles:{title:`Beleuchtungsrollen`,description:`Weisen Sie Lichtern Rollen zu, damit das Panel versteht, wie jedes Licht typischerweise verwendet wird (Arbeit, Entspannung, Nacht)`,noLights:`Keine Lichter in diesem Bereich gefunden`,role:{title:`Rolle`,placeholder:`Rolle auswählen`},applyDefaults:`Standards anwenden`,applyDefaultsHint:`Setzt das erste Licht als Haupt, andere als Ambiente`},climateRoles:{title:`Klimarollen`,description:`Weisen Sie Klimageräten Rollen zu, damit das Panel versteht, wie jedes Gerät Temperatur und Luftqualität steuert`,noDevices:`Keine Klimageräte in diesem Bereich gefunden`,role:{title:`Rolle`,placeholder:`Rolle auswählen`},applyDefaults:`Standards anwenden`,applyDefaultsHint:`Weist Rollen automatisch basierend auf dem Gerätetyp zu`},coversRoles:{title:`Abdeckungsrollen`,description:`Weisen Sie Fensterabdeckungen Rollen zu, damit das Panel versteht, wie jede Abdeckung verwendet wird (primär, Verdunkelung, transparent)`,noCovers:`Keine Fensterabdeckungen in diesem Bereich gefunden`,role:{title:`Rolle`,placeholder:`Rolle auswählen`},applyDefaults:`Standards anwenden`,applyDefaultsHint:`Setzt die erste Abdeckung als Primär, andere basierend auf dem Typ`},sensorRoles:{title:`Sensorrollen`,description:`Weisen Sie Sensorkanälen Rollen zu, damit das Panel Umgebungs-, Sicherheits-, Luftqualitäts- und Energiemessungen gruppieren kann.`,noSensors:`Keine Sensoren in diesem Bereich gefunden`,channel:{title:`Kanal`},role:{title:`Rolle`,placeholder:`Rolle auswählen`},applyDefaults:`Standards anwenden`,applyDefaultsHint:`Weist Rollen automatisch basierend auf der Sensorkanal-Kategorie zu`},suggestions:{title:`Intelligente Vorschläge`},suggestionsEnabled:{title:`Vorschläge aktivieren`,hint:`Wenn aktiviert, zeigt das Panel unauffällige Beleuchtungsvorschläge basierend auf Tageszeit und aktuellem Zustand an.`},statusWidgets:{energy:{title:`Energie`,range:{title:`Zeitraum`,options:{today:`Heute`,week:`Woche`,month:`Monat`}},showProduction:{title:`Erzeugung anzeigen`}}}}},lightingRoles:{main:`Haupt`,task:`Aufgabe`,ambient:`Ambiente`,accent:`Akzent`,night:`Nacht`,other:`Sonstige`,hidden:`Verborgen`,unassigned:`Nicht zugewiesen`,descriptions:{main:`Primäre Beleuchtung für den Bereich, typischerweise Decken- oder zentrale Leuchten für die allgemeine Beleuchtung.`,task:`Gezielte Beleuchtung für bestimmte Aktivitäten wie Lesen, Kochen oder Arbeiten.`,ambient:`Sanfte Hintergrundbeleuchtung zur Schaffung von Atmosphäre und Behaglichkeit.`,accent:`Dekorative Beleuchtung zur Hervorhebung von Merkmalen oder zur Schaffung visueller Akzente.`,night:`Schwache Beleuchtung für die nächtliche Navigation und Sicherheit.`,other:`Beleuchtung, die nicht in Standardkategorien passt.`,hidden:`Verborgene Lichter werden von der Panel-Oberfläche und der absichtsbasierten Steuerung ausgeschlossen.`}},climateRoles:{heating_only:`Nur Heizen`,cooling_only:`Nur Kühlen`,auto:`Automatisch`,auxiliary:`Zusatz`,sensor:`Sensor`,hidden:`Verborgen`,unassigned:`Nicht zugewiesen`,descriptions:{heating_only:`Gerät wird nur zum Heizen im Klimabereich verwendet.`,cooling_only:`Gerät wird nur zum Kühlen im Klimabereich verwendet.`,auto:`Gerät kann automatisch zum Heizen und Kühlen verwendet werden.`,auxiliary:`Zusätzliche Klimageräte wie Luftentfeuchter, Luftbefeuchter, Luftreiniger und Ventilatoren.`,sensor:`Klimasensor, der Messwerte (Temperatur, Luftfeuchtigkeit, Luftqualität usw.) für den Bereich liefert.`,hidden:`Verborgene Geräte werden von der Klima-Oberfläche und der Steuerung ausgeschlossen.`}},sensorRoles:{environment:`Umgebung`,safety:`Sicherheit`,security:`Überwachung`,air_quality:`Luftqualität`,energy:`Energie`,other:`Sonstige`,hidden:`Verborgen`,descriptions:{environment:`Umgebungssensoren wie Temperatur, Luftfeuchtigkeit, Druck oder Lichtstärke.`,safety:`Sicherheitssensoren wie Rauch-, Gas-, Leck- oder Kohlenmonoxid-Melder.`,security:`Sicherheits- und Anwesenheitssensoren wie Bewegungs-, Belegungs- und Kontaktsensoren.`,air_quality:`Luftqualitätssensoren einschließlich CO2, VOC, Feinstaub und andere Schadstoffe.`,energy:`Energieüberwachungssensoren wie Leistungs- oder Energieverbrauch.`,other:`Sensoren, die keiner bestimmten Kategorie zugeordnet sind.`,hidden:`Verborgene Sensoren werden von der Oberfläche ausgeschlossen.`},categories:{temperature:`Temperatur`,humidity:`Luftfeuchtigkeit`,pressure:`Druck`,illuminance:`Beleuchtungsstärke`,smoke:`Rauch`,gas:`Gas`,carbon_monoxide:`Kohlenmonoxid`,carbon_dioxide:`Kohlendioxid`,leak:`Leck`,motion:`Bewegung`,occupancy:`Belegung`,contact:`Kontakt`,air_quality:`Luftqualität`,air_particulate:`Feinstaub`,nitrogen_dioxide:`Stickstoffdioxid`,ozone:`Ozon`,sulphur_dioxide:`Schwefeldioxid`,volatile_organic_compounds:`Flüchtige organische Verbindungen`,electrical_energy:`Energie`,electrical_generation:`Erzeugung`,electrical_power:`Leistung`,battery:`Batterie`}},coversRoles:{primary:`Primär`,blackout:`Verdunkelung`,sheer:`Transparent`,outdoor:`Außen`,hidden:`Verborgen`,unassigned:`Nicht zugewiesen`,descriptions:{primary:`Hauptfensterabdeckung für den Bereich, typischerweise für allgemeinen Sichtschutz und Lichtkontrolle.`,blackout:`Lichtblockierende Abdeckungen für vollständige Dunkelheit, ideal für Schlafzimmer oder Medienräume.`,sheer:`Halbtransparente Abdeckungen, die Privatsphäre bieten und gleichzeitig natürliches Licht durchlassen.`,outdoor:`Außenrollläden, Markisen oder Pergolaabdeckungen für den Außenschutz.`,hidden:`Verborgene Abdeckungen werden von der Panel-Oberfläche und der absichtsbasierten Steuerung ausgeschlossen.`}},filters:{type:{title:`Typ`,all:`Alle`}},texts:{loadingSpaces:`Bereiche werden geladen...`,loadingSpace:`Bereich wird geladen...`,noSpaces:`Sie haben noch keine Bereiche konfiguriert`,noFilteredSpaces:`Keine Bereiche entsprechen Ihren Filterkriterien`,confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`},dialogs:{lightingRoles:{title:`Beleuchtungsrollen bearbeiten`},climateRoles:{title:`Klimarollen bearbeiten`},coversRoles:{title:`Abdeckungsrollen bearbeiten`},sensorRoles:{title:`Sensorrollen bearbeiten`},mediaActivities:{title:`Medienaktivitäten bearbeiten`}},buttons:{add:{title:`Hinzufügen`},done:{title:`Fertig`},detail:{title:`Details`},adjust:{title:`Filtern`},resetFilters:{title:`Filter zurücksetzen`},reset:{title:`Zurücksetzen`},yes:{title:`Ja`},no:{title:`Nein`},save:{title:`Speichern`},cancel:{title:`Abbrechen`},close:{title:`Schließen`},discard:{title:`Verwerfen`},edit:{title:`Bearbeiten`},delete:{title:`Löschen`},previous:{title:`Zurück`},next:{title:`Weiter`},finish:{title:`Abschließen`},onboarding:{title:`Einrichtungsassistent`},viewAll:{title:`Alle anzeigen`},back:{title:`Zurück`}},detail:{title:`Bereichsdetails`,domains:{title:`Domänen`,notConfigured:`Nicht konfiguriert`,lighting:{title:`Beleuchtung`,description:`Konfigurieren Sie, wie Lichter in diesem Bereich verwendet werden — Haupt-, Arbeits-, Ambiente-, Akzent- und Nachtbeleuchtungsrollen.`},climate:{title:`Klima`,description:`Weisen Sie Heiz-, Kühl- und Sensorrollen den Klimageräten in diesem Bereich zu.`},covers:{title:`Abdeckungen`,description:`Legen Sie Rollen für Fensterabdeckungen fest — Primär-, Verdunkelungs-, Gardinen- und Außenjalousien.`},sensor:{title:`Sensoren`,description:`Gruppieren Sie Sensorkanäle nach Zweck — Umgebung, Sicherheit, Schutz, Luftqualität und Energie.`},media:{title:`Medien`,description:`Definieren Sie Medienaktivitäten wie Fernsehen, Musik hören und Spielen mit Geräte-Endpunkt-Routing.`}},lightingRoles:{title:`Beleuchtungsrollen`,lightsAssigned:`Lichter zugewiesen`,noRolesAssigned:`Noch keine Rollen zugewiesen`},climateRoles:{title:`Klimarollen`,devicesAssigned:`Geräte zugewiesen`,noRolesAssigned:`Noch keine Rollen zugewiesen`},coversRoles:{title:`Abdeckungsrollen`,coversAssigned:`Abdeckungen zugewiesen`,noRolesAssigned:`Noch keine Rollen zugewiesen`},sensorRoles:{title:`Sensorrollen`,sensorsAssigned:`Sensoren zugewiesen`,noRolesAssigned:`Noch keine Rollen zugewiesen`},mediaActivities:{title:`Medienaktivitäten`,noActivities:`Noch keine Aktivitäten konfiguriert`},info:{title:`Bereichsinformationen`,name:`Name`,description:`Beschreibung`,type:`Typ`,icon:`Symbol`,displayOrder:`Anzeigereihenfolge`},devices:{title:`Geräte`,add:`Gerät hinzufügen`,empty:`Diesem Bereich sind keine Geräte zugewiesen`,loading:`Geräte werden geladen...`,remove:`Entfernen`,removeHeading:`Gerät aus Bereich entfernen`,reassign:`Neu zuweisen`,assign:`Zuweisen`,selectDevice:`Geräte zum Hinzufügen auswählen`,confirmRemove:`Gerät "{name}" aus diesem Bereich entfernen?`,selectRoom:`Raum für Gerät auswählen`,noAvailable:`Keine Geräte zum Hinzufügen verfügbar`,removed:`Gerät "{name}" wurde aus diesem Bereich entfernt.`,removeCanceled:`Geräteentfernung wurde abgebrochen.`},parentZone:{title:`Stockwerk`,none:`Kein Stockwerk zugewiesen`,select:`Stockwerk auswählen`},displays:{title:`Displays`,add:`Display hinzufügen`,empty:`Diesem Bereich sind keine Displays zugewiesen`,loading:`Displays werden geladen...`,remove:`Entfernen`,removeHeading:`Display aus Bereich entfernen`,reassign:`Neu zuweisen`,assign:`Zuweisen`,selectDisplay:`Display zum Hinzufügen auswählen`,confirmRemove:`Display "{name}" aus diesem Bereich entfernen?`,selectRoom:`Raum für dieses Display auswählen`,noAvailable:`Keine Displays zum Hinzufügen verfügbar`,removed:`Display "{name}" wurde aus diesem Bereich entfernt.`,removeCanceled:`Display-Entfernung wurde abgebrochen.`},media:{activities:`Medienaktivitäten`},scenes:{title:`Szenen`,add:`Szene hinzufügen`,empty:`Diesem Bereich sind keine Szenen zugewiesen`,loading:`Szenen werden geladen...`,name:`Szenenname`,category:`Kategorie`,status:`Status`,enabled:`Aktiviert`,disabled:`Deaktiviert`,remove:`Entfernen`,removeHeading:`Szene aus Bereich entfernen`,reassign:`Neu zuweisen`,reassigned:`Szene "{name}" wurde erfolgreich neu zugewiesen.`,assign:`Zuweisen`,selectScene:`Szene zum Hinzufügen auswählen`,selectSpace:`Bereich für Szene auswählen`,searchPlaceholder:`Szenen suchen...`,confirmRemove:`Szene "{name}" aus diesem Bereich entfernen?`,assignedSpace:`Zugewiesener Bereich`,noAvailable:`Keine Szenen zum Hinzufügen verfügbar`,noFilteredScenes:`Keine Szenen entsprechen Ihrer Suche`,assigned:`Szene "{name}" wurde diesem Bereich zugewiesen.`,removed:`Szene "{name}" wurde aus diesem Bereich entfernt.`,removeCanceled:`Szenenentfernung wurde abgebrochen.`}},media:{endpointTypes:{display:`Display`,audio_output:`Audioausgang`,source:`Quelle`,remote_target:`Fernziel`},capabilities:{power:`Strom`,input:`Eingang`,volume:`Lautstärke`,playback:`Wiedergabe`,track:`Titel`,remote:`Fernbedienung`,mute:`Stummschaltung`},activityLabels:{watch:`Schauen`,listen:`Hören`,gaming:`Spielen`,background:`Hintergrund`,off:`Aus`},activities:{loading:`Medienkonfiguration wird geladen...`,description:`Weisen Sie jeder Medienaktivität Display-, Audio-, Quell- und Fernbedienungsgeräte zu. Änderungen werden automatisch gespeichert.`,applyDefaults:`Standards anwenden`,applyDefaultsHint:`Weist Endpunkte automatisch basierend auf Gerätetypen und Fähigkeiten zu`,defaultsApplied:`Standardzuordnungen wurden angewendet.`,defaultsFailed:`Standardzuordnungen konnten nicht angewendet werden.`,selectPrompt:`Wählen Sie eine Aktivität aus der Liste, um ihre Zuordnungen zu konfigurieren.`,selectEndpoint:`Endpunkt auswählen...`,save:`Speichern`,reset:`Zurücksetzen`,saveError:`Zuordnung konnte nicht gespeichert werden`,savedSuccessfully:`Zuordnung erfolgreich gespeichert.`,slots:{display:`Display`,audio:`Audioausgang`,source:`Quelle`,remote:`Fernziel`},overrides:{displayInput:`Display-Eingangsvoreinstellung`,displayInputPlaceholder:`z. B. HDMI1, Apps`,audioInput:`Audio-Eingangsvoreinstellung`,audioInputPlaceholder:`z. B. HDMI1, ARC`,sourceInput:`Quell-Eingangsvoreinstellung`,sourceInputPlaceholder:`z. B. HDMI1, Apps`,audioVolume:`Audio-Lautstärkevoreinstellung`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Kabel`,satellite:`Satellit`,antenna:`Antenne`,av1:`AV 1`,av2:`AV 2`,component:`Component`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Sonstige`},status:{configured:`Konfiguriert`,incomplete:`Unvollständig`,unconfigured:`Nicht eingerichtet`},run:`Ausführen`,deactivate:`Deaktivieren`,refreshStatus:`Status aktualisieren`,rerun:`Erneut ausführen`,copyDebugJson:`Debug-JSON kopieren`,copiedToClipboard:`Debug-JSON in die Zwischenablage kopiert.`,activateSuccess:`Aktivität erfolgreich aktiviert.`,activateFailed:`Aktivierung der Aktivität fehlgeschlagen.`,deactivateSuccess:`Aktivität deaktiviert.`,deactivateFailed:`Deaktivierung der Aktivität fehlgeschlagen.`,fetchFailed:`Aktualisierung des Aktivitätsstatus fehlgeschlagen.`,preview:`Vorschau`,previewFailed:`Vorschau der Aktivität fehlgeschlagen.`,previewDialog:{title:`Ausführungsplan-Vorschau`,resolvedDevices:`Aufgelöste Geräte`,executionPlan:`Ausführungsplan`,step:`#`,action:`Aktion`,device:`Gerät`,critical:`Kritisch`,criticalYes:`Kritisch`,criticalNo:`Optional`,warnings:`Warnungen & übersprungene Schritte`,noSteps:`Keine Ausführungsschritte im Plan.`,close:`Schließen`},activePanel:{title:`Aktiver Zustand`,currentActivity:`Aktuelle Aktivität`,none:`Keine`,state:`Zustand`,activatedAt:`Aktiviert am`,updatedAt:`Aktualisiert am`,resolvedDevices:`Aufgelöste Geräte`,display:`Display`,audio:`Audio`,source:`Quelle`,remote:`Fernbedienung`},failures:{title:`Fehler`,total:`Schritte gesamt`,succeeded:`Erfolgreich`,failed:`Fehlgeschlagen`,stepIndex:`Schritt`,device:`Gerät`,property:`Eigenschaft`,reason:`Grund`},activationState:{activating:`Wird aktiviert`,active:`Aktiv`,failed:`Fehlgeschlagen`,deactivated:`Deaktiviert`}}},messages:{notFound:`Bereich nicht gefunden`,loadError:`Bereiche konnten nicht geladen werden`,notLoaded:`Bereich konnte nicht geladen werden. Bitte versuchen Sie es später erneut.`,confirmRemove:`Sind Sie sicher, dass Sie den Bereich "{name}" entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,confirmDelete:`Sind Sie sicher, dass Sie diesen Bereich löschen möchten?`,created:`Neuer Bereich erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Der Bereich konnte nicht erstellt werden.`,edited:`Änderungen gespeichert! Der Bereich: {space} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Bereichsaktualisierung war nicht erfolgreich.`,removed:`Der Bereich: {space} wurde erfolgreich entfernt.`,removeCanceled:`Entfernung von Bereich: {space} wurde abgebrochen.`,deletedWhileEditing:`Dieser Bereich wurde gelöscht und ist nicht mehr verfügbar.`,createError:`Bereich konnte nicht erstellt werden. Bitte versuchen Sie es erneut.`,saveError:`Änderungen konnten nicht gespeichert werden. Bitte versuchen Sie es erneut.`,confirmBulkRemove:`Sind Sie sicher, dass Sie {count} Bereiche entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,bulkRemoved:`{count} Bereiche wurden erfolgreich entfernt.`,bulkRemoveFailed:`Entfernung von {count} Bereichen fehlgeschlagen.`,bulkRemoveCanceled:`Massenentfernung von Bereichen wurde abgebrochen.`},misc:{types:{room:`Raum`,zone:`Zone`}},onboarding:{title:`Einrichtungsassistent für Bereiche`,devices:`Geräte`,displays:`Displays`,selectSpace:`Bereich auswählen`,selectZones:`Zonen auswählen...`,deviceName:`Gerätename`,displayName:`Displayname`,assignedSpace:`Zugewiesener Bereich`,spaceName:`Bereichsname`,zones:`Zonen (optional)`,advanced:`Erweitert`,basic:`Einfach`,steps:{spaces:{title:`Bereiche erstellen`,description:`Bereiche helfen Ihnen, Ihre Geräte und Displays nach Räumen oder Zonen zu organisieren (z. B. Wohnzimmer, Küche, Schlafzimmer). Wir haben einige Bereiche automatisch aus Ihren Gerätenamen erkannt – überprüfen und wählen Sie die gewünschten aus, oder fügen Sie unten eigene Bereiche hinzu.`,alertTitle:`Bereiche repräsentieren Räume oder Zonen in Ihrem Zuhause`,alertDescription:`Wir haben einige Bereiche basierend auf Ihren Gerätenamen vorgeschlagen. Sie können sie jetzt anpassen oder später alles ändern.`,proposed:`Vorgeschlagene Bereiche`,custom:`Benutzerdefinierte Bereiche`,existing:`Vorhandene Bereiche`,matchedExisting:`Vorhandene Bereiche verwenden`,usingExisting:`Vorhandenen verwenden`,matchedWith:`Verwendet: {name}`,addManual:`Benutzerdefinierten Bereich hinzufügen`,placeholder:`Bereichsname eingeben (z. B. Wohnzimmer)`,noProposals:`Aus Ihren Gerätenamen konnten keine Bereiche erkannt werden. Fügen Sie unten manuell Bereiche hinzu.`,duplicateWarning:`Ein ähnlicher Bereich wie "{name}" existiert bereits.`,convertedToMatch:`Dieser Bereich stimmt mit einem vorhandenen Bereich überein und wurde in den Abschnitt "Vorhandene Bereiche verwenden" verschoben.`,multipleMatchedWith:`{count} erkannte Bereiche verwenden den vorhandenen Bereich '{name}'`,existingTag:`Vorhanden`},displays:{title:`Displays zuweisen`,description:`Weisen Sie jedes Display einem Bereich zu. Dies bestimmt, welcher Bereich standardmäßig angezeigt wird.`,alertTitle:`Wählen Sie einen Standardbereich für jedes Display`,alertDescription:`Dies setzt nur die anfängliche Ansicht – Sie können Bereiche jederzeit vom Display aus wechseln.`,noDisplays:`Noch keine Displays registriert.`},devices:{title:`Geräte zuweisen`,description:`Weisen Sie Geräte Bereichen zu. Geräte werden basierend auf ihren Namen vorab zugewiesen, falls erkannt.`,alertTitle:`Verbinden Sie Ihre Geräte mit Räumen`,alertDescription:`Einige Geräte sind basierend auf ihren Namen vorausgefüllt. Sie können die Zuweisungen jederzeit anpassen.`,noDevices:`Keine Geräte gefunden.`},summary:{title:`Zusammenfassung`,description:`Überprüfen Sie Ihre Konfiguration, bevor Sie Änderungen anwenden.`,alertTitle:`Zusammenfassung Ihrer Einrichtung`,alertDescription:`Sie können noch zurückgehen und alles anpassen, bevor Sie abschließen.`}},summary:{overview:`Zusammenfassung`,totalSpaces:`Bereiche gesamt`,assignedDevices:`Zugewiesene Geräte`,unassignedDevices:`Nicht zugewiesene Geräte`,assignedDisplays:`Zugewiesene Displays`,unassignedDisplays:`Nicht zugewiesene Displays`,bySpace:`Zuweisungen nach Bereich`,unassignedDevicesTitle:`Nicht zugewiesene Geräte`,unassignedDisplaysTitle:`Nicht zugewiesene Displays`,noDevices:`Keine Geräte`,clickToAssignDevices:`Klicken, um Geräte zuzuweisen`,clickToAssignDisplays:`Klicken, um Displays zuzuweisen`},messages:{spacesCreated:`{count} Bereich(e) erfolgreich erstellt`,completed:`Einrichtung abgeschlossen! {devices} Gerät(e), {displays} Display(s) und {zones} Zonenzuweisung(en).`}},labels:{rooms:`Räume`,zones:`Zonen`}},gr={menu:{title:`Spaces`},title:`Spaces`,description:`Manage your spaces (rooms and zones)`,headings:{list:`Spaces`,spaces:`Spaces`,detail:`Space detail`,add:`Add space`,edit:`Edit space`,removeSpace:`Remove space`,bulkRemoveSpace:`Remove spaces`,discard:`Discard changes`,adjustFilters:`Filter spaces`},edit:{sections:{general:{title:`General`},organization:{title:`Organization`,hint:`Assign this room to a zone (e.g. "Ground Floor", "Upstairs") to group related rooms together.`},devicesDisplays:{title:`Devices & Displays`,titleDevicesOnly:`Devices`,summary:`{devices} devices and {displays} displays are currently assigned to this space.`,summaryDevicesOnly:`{devices} devices are currently assigned to this space.`,manageDevices:`Manage devices`,manageDisplays:`Manage displays`},statusWidgets:{title:`Status widgets`,hint:`Configure widgets displayed in the space status area on the panel.`},smartOverrides:{title:`Smart overrides`,badge:`Advanced`,hint:`Optional settings to improve smart behavior and intent-based control.`,lightingRoles:`Lighting roles`,climateRoles:`Climate roles`,coversRoles:`Covers roles`,sensorRoles:`Sensor roles`,smartSuggestions:`Smart suggestions`}}},subHeadings:{list:`Organize devices and displays by rooms or zones`,adjustFilters:`Adjust display filters`,add:`Add new space`,detail:`Manage space: {space}`,onboarding:`Setup wizard for spaces, devices and displays`},breadcrumbs:{spaces:{list:`spaces`,detail:`space: {space}`,edit:`edit space`,add:`add space`,onboarding:`setup wizard`}},meta:{spaces:{list:{title:`List spaces`},edit:{title:`Edit space: {space}`},add:{title:`Add space`},detail:{title:`Space: {space}`},onboarding:{title:`Spaces setup wizard`}}},table:{columns:{name:`Name`,type:`Type`,category:`Category`,description:`Description`,order:`Order`,devices:`Devices`,displays:`Displays`,actions:`Actions`},empty:`No spaces found. Create your first space to get started.`},fields:{search:{placeholder:`Search spaces...`},spaces:{id:{title:`Internal identifier`,placeholder:`Space id`},name:{title:`Name`,placeholder:`Enter space name (e.g., Living Room)`,validation:{required:`Name is required`,maxLength:`Name must be less than 100 characters`}},description:{title:`Description`,placeholder:`Optional description of the space`},type:{title:`Type`,options:{room:`Room`,zone:`Zone`},validation:{required:`Type is required`}},category:{title:`Category`,placeholder:`Select a category`,hint:`Choosing a category will automatically suggest an icon and description for this space. Available categories depend on whether this is a room or zone.`,validation:{requiredForZone:`Category is required for zones`},groups:{floors:`Floors`,outdoor:`Outdoor areas`,other:`Other`},options:{living_room:`Living room`,bedroom:`Bedroom`,bathroom:`Bathroom`,toilet:`Toilet`,kitchen:`Kitchen`,dining_room:`Dining room`,office:`Office`,entryway:`Entryway`,garage:`Garage`,hallway:`Hallway`,laundry:`Laundry`,utility_room:`Utility room`,storage:`Storage`,closet:`Closet`,pantry:`Pantry`,nursery:`Nursery`,guest_room:`Guest room`,gym:`Gym`,media_room:`Media room`,workshop:`Workshop`,other:`Other`,floor_ground:`Ground floor`,floor_first:`First floor`,floor_second:`Second floor`,floor_basement:`Basement`,floor_attic:`Attic`,outdoor_front_yard:`Front yard`,outdoor_backyard:`Backyard`,outdoor_driveway:`Driveway`,outdoor_garden:`Garden`,outdoor_terrace:`Terrace`,outdoor_balcony:`Balcony`,outdoor_walkway:`Walkway`,security_perimeter:`Security perimeter`,utility:`Utility`,zone_other:`Other`}},icon:{title:`Icon`,placeholder:`mdi:home (Iconify icon name)`},displayOrder:{title:`Display order`,placeholder:`Order in lists`},parentZone:{title:`Parent zone`,placeholder:`Select a parent zone (optional)`,hint:`You can organize this room by assigning it to a zone, like 'Ground Floor' or 'Upstairs'. This helps group related rooms together.`},lightingRoles:{title:`Lighting roles`,description:`Assign roles to lights to help the panel understand how each light is typically used (Work, Relax, Night)`,noLights:`No lights found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Sets first light as Main, others as Ambient`},climateRoles:{title:`Climate roles`,description:`Assign roles to climate devices to help the panel understand how each device controls temperature and air quality`,noDevices:`No climate devices found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns roles based on device type`},coversRoles:{title:`Covers roles`,description:`Assign roles to window coverings to help the panel understand how each cover is used (primary, blackout, sheer)`,noCovers:`No window coverings found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Sets first cover as Primary, others based on type`},sensorRoles:{title:`Sensor roles`,description:`Assign roles to sensor channels so the panel can group environment, safety, security, air quality, and energy readings.`,noSensors:`No sensors found in this space`,channel:{title:`Channel`},role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns roles based on sensor channel category`},suggestions:{title:`Smart suggestions`},suggestionsEnabled:{title:`Enable suggestions`,hint:`When enabled, the panel will show non-intrusive lighting suggestions based on time of day and current state.`},statusWidgets:{energy:{title:`Energy`,range:{title:`Range`,options:{today:`Today`,week:`Week`,month:`Month`}},showProduction:{title:`Show production`}}}}},lightingRoles:{main:`Main`,task:`Task`,ambient:`Ambient`,accent:`Accent`,night:`Night`,other:`Other`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{main:`Primary lighting for the space, typically overhead or central fixtures used for general illumination.`,task:`Focused lighting for specific activities like reading, cooking, or working.`,ambient:`Soft background lighting used to create atmosphere and comfort.`,accent:`Decorative lighting used to highlight features or create visual interest.`,night:`Low-level lighting for nighttime navigation and safety.`,other:`Lighting that doesn't fit into standard categories.`,hidden:`Hidden lights are excluded from the panel UI and intent-based control.`}},climateRoles:{heating_only:`Heating Only`,cooling_only:`Cooling Only`,auto:`Auto`,auxiliary:`Auxiliary`,sensor:`Sensor`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{heating_only:`Device is used only for heating in the climate domain.`,cooling_only:`Device is used only for cooling in the climate domain.`,auto:`Device can be used for both heating and cooling automatically.`,auxiliary:`Auxiliary climate devices like dehumidifiers, humidifiers, air purifiers, and fans.`,sensor:`Climate sensor providing readings (temperature, humidity, air quality, etc.) for the space.`,hidden:`Hidden devices are excluded from the climate domain UI and control.`}},sensorRoles:{environment:`Environment`,safety:`Safety`,security:`Security`,air_quality:`Air quality`,energy:`Energy`,other:`Other`,hidden:`Hidden`,descriptions:{environment:`Environmental sensors such as temperature, humidity, pressure, or light levels.`,safety:`Safety sensors like smoke, gas, leak, or carbon monoxide detectors.`,security:`Security and presence sensors like motion, occupancy, and contact sensors.`,air_quality:`Air quality sensors including CO2, VOC, particulate matter, and other pollutants.`,energy:`Energy monitoring sensors such as power or energy consumption.`,other:`Sensors that don't fit a specific category.`,hidden:`Hidden sensors are excluded from the UI.`},categories:{temperature:`Temperature`,humidity:`Humidity`,pressure:`Pressure`,illuminance:`Illuminance`,smoke:`Smoke`,gas:`Gas`,carbon_monoxide:`Carbon monoxide`,carbon_dioxide:`Carbon dioxide`,leak:`Leak`,motion:`Motion`,occupancy:`Occupancy`,contact:`Contact`,air_quality:`Air quality`,air_particulate:`Air particulate`,nitrogen_dioxide:`Nitrogen dioxide`,ozone:`Ozone`,sulphur_dioxide:`Sulphur dioxide`,volatile_organic_compounds:`Volatile organic compounds`,electrical_energy:`Energy`,electrical_generation:`Generation`,electrical_power:`Power`,battery:`Battery`}},coversRoles:{primary:`Primary`,blackout:`Blackout`,sheer:`Sheer`,outdoor:`Outdoor`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{primary:`Main window covering for the space, typically used for general privacy and light control.`,blackout:`Light-blocking covers designed for complete darkness, ideal for bedrooms or media rooms.`,sheer:`Semi-transparent covers that provide privacy while allowing natural light to filter through.`,outdoor:`External shutters, awnings, or pergola covers for outdoor protection.`,hidden:`Hidden covers are excluded from the panel UI and intent-based control.`}},filters:{type:{title:`Type`,all:`All`}},texts:{loadingSpaces:`Loading spaces...`,loadingSpace:`Loading space...`,noSpaces:`You don't have configured any space`,noFilteredSpaces:`No spaces match your filter criteria`,confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`},dialogs:{lightingRoles:{title:`Edit Lighting Roles`},climateRoles:{title:`Edit Climate Roles`},coversRoles:{title:`Edit Covers Roles`},sensorRoles:{title:`Edit Sensor Roles`},mediaActivities:{title:`Edit Media Activities`}},buttons:{add:{title:`Add`},done:{title:`Done`},detail:{title:`Detail`},adjust:{title:`Filter`},resetFilters:{title:`Reset filters`},reset:{title:`Reset`},yes:{title:`Yes`},no:{title:`No`},save:{title:`Save`},cancel:{title:`Cancel`},close:{title:`Close`},discard:{title:`Discard`},edit:{title:`Edit`},delete:{title:`Delete`},previous:{title:`Previous`},next:{title:`Next`},finish:{title:`Finish`},onboarding:{title:`Setup wizard`},viewAll:{title:`View all`},back:{title:`Go back`}},detail:{title:`Space detail`,domains:{title:`Domains`,notConfigured:`Not configured`,lighting:{title:`Lighting`,description:`Configure how lights in this space are used — main, task, ambient, accent, and night lighting roles.`},climate:{title:`Climate`,description:`Assign heating, cooling, and sensor roles to climate devices in this space.`},covers:{title:`Covers`,description:`Set roles for window coverings — primary, blackout, sheer, and outdoor blinds.`},sensor:{title:`Sensors`,description:`Group sensor channels by purpose — environment, safety, security, air quality, and energy.`},media:{title:`Media`,description:`Define media activities like watching, listening, and gaming with device endpoint routing.`}},lightingRoles:{title:`Lighting roles`,lightsAssigned:`Lights assigned`,noRolesAssigned:`No roles assigned yet`},climateRoles:{title:`Climate roles`,devicesAssigned:`Devices assigned`,noRolesAssigned:`No roles assigned yet`},coversRoles:{title:`Covers roles`,coversAssigned:`Covers assigned`,noRolesAssigned:`No roles assigned yet`},sensorRoles:{title:`Sensor roles`,sensorsAssigned:`Sensors assigned`,noRolesAssigned:`No roles assigned yet`},mediaActivities:{title:`Media Activities`,noActivities:`No activities configured yet`},info:{title:`Space information`,name:`Name`,description:`Description`,type:`Type`,icon:`Icon`,displayOrder:`Display order`},devices:{title:`Devices`,add:`Add device`,empty:`No devices assigned to this space`,loading:`Loading devices...`,remove:`Remove`,removeHeading:`Remove device from space`,reassign:`Reassign`,assign:`Assign`,selectDevice:`Select devices to add`,confirmRemove:`Remove device "{name}" from this space?`,selectRoom:`Select room for device`,noAvailable:`No devices available to add`,removed:`Device "{name}" was removed from this space.`,removeCanceled:`Device removal was canceled.`},parentZone:{title:`Floor`,none:`No floor assigned`,select:`Select floor`},displays:{title:`Displays`,add:`Add display`,empty:`No displays assigned to this space`,loading:`Loading displays...`,remove:`Remove`,removeHeading:`Remove display from space`,reassign:`Reassign`,assign:`Assign`,selectDisplay:`Select display to add`,confirmRemove:`Remove display "{name}" from this space?`,selectRoom:`Select the room for this display`,noAvailable:`No displays available to add`,removed:`Display "{name}" was removed from this space.`,removeCanceled:`Display removal was canceled.`},media:{activities:`Media Activities`},scenes:{title:`Scenes`,add:`Add scene`,empty:`No scenes assigned to this space`,loading:`Loading scenes...`,name:`Scene name`,category:`Category`,status:`Status`,enabled:`Enabled`,disabled:`Disabled`,remove:`Remove`,removeHeading:`Remove scene from space`,reassign:`Reassign`,reassigned:`Scene "{name}" was reassigned successfully.`,assign:`Assign`,selectScene:`Select scene to add`,selectSpace:`Select space for scene`,searchPlaceholder:`Search scenes...`,confirmRemove:`Remove scene "{name}" from this space?`,assignedSpace:`Assigned space`,noAvailable:`No scenes available to add`,noFilteredScenes:`No scenes match your search`,assigned:`Scene "{name}" was assigned to this space.`,removed:`Scene "{name}" was removed from this space.`,removeCanceled:`Scene removal was canceled.`}},media:{endpointTypes:{display:`Display`,audio_output:`Audio Output`,source:`Source`,remote_target:`Remote Target`},capabilities:{power:`Power`,input:`Input`,volume:`Volume`,playback:`Playback`,track:`Track`,remote:`Remote`,mute:`Mute`},activityLabels:{watch:`Watch`,listen:`Listen`,gaming:`Gaming`,background:`Background`,off:`Off`},activities:{loading:`Loading media configuration...`,description:`Assign display, audio, source, and remote devices to each media activity. Changes are saved automatically.`,applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns endpoints based on device types and capabilities`,defaultsApplied:`Default bindings have been applied.`,defaultsFailed:`Failed to apply default bindings.`,selectPrompt:`Select an activity from the list to configure its bindings.`,selectEndpoint:`Select endpoint...`,save:`Save`,reset:`Reset`,saveError:`Failed to save binding`,savedSuccessfully:`Binding saved successfully.`,slots:{display:`Display`,audio:`Audio output`,source:`Source`,remote:`Remote target`},overrides:{displayInput:`Display input preset`,displayInputPlaceholder:`e.g. HDMI1, Apps`,audioInput:`Audio input preset`,audioInputPlaceholder:`e.g. HDMI1, ARC`,sourceInput:`Source input preset`,sourceInputPlaceholder:`e.g. HDMI1, Apps`,audioVolume:`Audio volume preset`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Cable`,satellite:`Satellite`,antenna:`Antenna`,av1:`AV 1`,av2:`AV 2`,component:`Component`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Other`},status:{configured:`Configured`,incomplete:`Incomplete`,unconfigured:`Not set`},run:`Run`,deactivate:`Deactivate`,refreshStatus:`Refresh status`,rerun:`Re-run`,copyDebugJson:`Copy debug JSON`,copiedToClipboard:`Debug JSON copied to clipboard.`,activateSuccess:`Activity activated successfully.`,activateFailed:`Failed to activate activity.`,deactivateSuccess:`Activity deactivated.`,deactivateFailed:`Failed to deactivate activity.`,fetchFailed:`Failed to refresh activity status.`,preview:`Preview`,previewFailed:`Failed to preview activity.`,previewDialog:{title:`Execution Plan Preview`,resolvedDevices:`Resolved devices`,executionPlan:`Execution plan`,step:`#`,action:`Action`,device:`Device`,critical:`Critical`,criticalYes:`Critical`,criticalNo:`Optional`,warnings:`Warnings & skipped steps`,noSteps:`No execution steps in plan.`,close:`Close`},activePanel:{title:`Active State`,currentActivity:`Current activity`,none:`None`,state:`State`,activatedAt:`Activated at`,updatedAt:`Updated at`,resolvedDevices:`Resolved devices`,display:`Display`,audio:`Audio`,source:`Source`,remote:`Remote`},failures:{title:`Failures`,total:`Total steps`,succeeded:`Succeeded`,failed:`Failed`,stepIndex:`Step`,device:`Device`,property:`Property`,reason:`Reason`},activationState:{activating:`Activating`,active:`Active`,failed:`Failed`,deactivated:`Deactivated`}}},messages:{notFound:`Space not found`,loadError:`Failed to load spaces`,notLoaded:`Failed to load space. Please try again later.`,confirmRemove:`Are you sure you want to remove space "{name}"? This action cannot be undone.`,confirmDelete:`Are you sure you want to delete this space?`,created:`New space added successfully.`,notCreated:`Something went wrong. Unable to create the space.`,edited:`Changes saved! The space: {space} has been updated.`,notEdited:`Something went wrong. Space update was not successful.`,removed:`The space: {space} was successfully removed.`,removeCanceled:`Space: {space} removal has been canceled.`,deletedWhileEditing:`This space was deleted and is no longer available.`,createError:`Failed to create space. Please try again.`,saveError:`Failed to save changes. Please try again.`,confirmBulkRemove:`Are you sure you want to remove {count} spaces? This action cannot be undone.`,bulkRemoved:`{count} spaces were successfully removed.`,bulkRemoveFailed:`Failed to remove {count} spaces.`,bulkRemoveCanceled:`Bulk space removal has been canceled.`},misc:{types:{room:`Room`,zone:`Zone`}},onboarding:{title:`Spaces setup wizard`,devices:`devices`,displays:`displays`,selectSpace:`Select space`,selectZones:`Select zones...`,deviceName:`Device name`,displayName:`Display name`,assignedSpace:`Assigned space`,spaceName:`Space name`,zones:`Zones (optional)`,advanced:`Advanced`,basic:`Basic`,steps:{spaces:{title:`Create spaces`,description:`Spaces help you organize your devices and displays by rooms or zones (e.g., Living Room, Kitchen, Bedroom). We've automatically detected some spaces from your device names - review and select the ones you want to create, or add your own custom spaces below.`,alertTitle:`Spaces represent rooms or areas in your home`,alertDescription:`We've suggested some spaces based on your device names. You can adjust them now or change everything later.`,proposed:`Proposed spaces`,custom:`Custom spaces`,existing:`Existing spaces`,matchedExisting:`Using existing spaces`,usingExisting:`Using existing`,matchedWith:`Will use: {name}`,addManual:`Add custom space`,placeholder:`Enter space name (e.g., Living Room)`,noProposals:`No spaces could be detected from your device names. Add spaces manually below.`,duplicateWarning:`A space similar to "{name}" already exists.`,convertedToMatch:`This space matches an existing space and has been moved to the 'Using existing spaces' section.`,multipleMatchedWith:`{count} detected spaces will use existing space '{name}'`,existingTag:`Existing`},displays:{title:`Assign displays`,description:`Assign each display to a space. This determines which space the display will show by default.`,alertTitle:`Choose a default space for each display`,alertDescription:`This only sets the initial view—you can switch spaces anytime from the display itself.`,noDisplays:`No displays registered yet.`},devices:{title:`Assign devices`,description:`Assign devices to spaces. Devices will be pre-assigned based on their names if detected.`,alertTitle:`Connect your devices to rooms`,alertDescription:`Some devices are pre-filled based on their names. Feel free to adjust—you can always change assignments later.`,noDevices:`No devices found.`},summary:{title:`Summary`,description:`Review your configuration before applying changes.`,alertTitle:`Summary of your setup`,alertDescription:`You can still go back and adjust anything before finishing.`}},summary:{overview:`Summary`,totalSpaces:`Total spaces`,assignedDevices:`Assigned devices`,unassignedDevices:`Unassigned devices`,assignedDisplays:`Assigned displays`,unassignedDisplays:`Unassigned displays`,bySpace:`Assignments by space`,unassignedDevicesTitle:`Unassigned devices`,unassignedDisplaysTitle:`Unassigned displays`,noDevices:`No devices`,clickToAssignDevices:`Click to assign devices`,clickToAssignDisplays:`Click to assign displays`},messages:{spacesCreated:`{count} space(s) created successfully`,completed:`Onboarding complete! {devices} device(s), {displays} display(s), and {zones} zone assignment(s).`}},labels:{rooms:`Rooms`,zones:`Zones`}},_r={menu:{title:`Espacios`},title:`Espacios`,description:`Gestiona tus espacios (habitaciones y zonas)`,headings:{list:`Espacios`,spaces:`Espacios`,detail:`Detalle del espacio`,add:`Añadir espacio`,edit:`Editar espacio`,removeSpace:`Eliminar espacio`,bulkRemoveSpace:`Eliminar espacios`,discard:`Descartar cambios`,adjustFilters:`Filtrar espacios`},edit:{sections:{general:{title:`General`},organization:{title:`Organización`,hint:`Asigne esta habitación a una zona (p. ej., "Planta baja", "Planta alta") para agrupar habitaciones relacionadas.`},devicesDisplays:{title:`Dispositivos y pantallas`,titleDevicesOnly:`Dispositivos`,summary:`Actualmente hay {devices} dispositivos y {displays} pantallas asignados a este espacio.`,summaryDevicesOnly:`Actualmente hay {devices} dispositivos asignados a este espacio.`,manageDevices:`Gestionar dispositivos`,manageDisplays:`Gestionar pantallas`},statusWidgets:{title:`Widgets de estado`,hint:`Configure los widgets que se muestran en el área de estado del espacio en el panel.`},smartOverrides:{title:`Anulaciones inteligentes`,badge:`Avanzado`,hint:`Configuraciones opcionales para mejorar el comportamiento inteligente y el control basado en intenciones.`,lightingRoles:`Roles de iluminación`,climateRoles:`Roles de climatización`,coversRoles:`Roles de cubiertas`,sensorRoles:`Roles de sensores`,smartSuggestions:`Sugerencias inteligentes`}}},subHeadings:{list:`Organiza dispositivos y pantallas por habitaciones o zonas`,adjustFilters:`Ajustar filtros de visualización`,add:`Añadir nuevo espacio`,detail:`Gestionar espacio: {space}`,onboarding:`Asistente de configuración para espacios, dispositivos y pantallas`},breadcrumbs:{spaces:{list:`espacios`,detail:`espacio: {space}`,edit:`editar espacio`,add:`añadir espacio`,onboarding:`asistente de configuración`}},meta:{spaces:{list:{title:`Listar espacios`},edit:{title:`Editar espacio: {space}`},add:{title:`Añadir espacio`},detail:{title:`Espacio: {space}`},onboarding:{title:`Asistente de configuración de espacios`}}},table:{columns:{name:`Nombre`,type:`Tipo`,category:`Categoría`,description:`Descripción`,order:`Orden`,devices:`Dispositivos`,displays:`Pantallas`,actions:`Acciones`},empty:`No se encontraron espacios. Cree su primer espacio para comenzar.`},fields:{search:{placeholder:`Buscar espacios...`},spaces:{id:{title:`Identificador interno`,placeholder:`ID de espacio`},name:{title:`Nombre`,placeholder:`Introduzca el nombre del espacio (p. ej., Salón)`,validation:{required:`El nombre es obligatorio`,maxLength:`El nombre debe tener menos de 100 caracteres`}},description:{title:`Descripción`,placeholder:`Descripción opcional del espacio`},type:{title:`Tipo`,options:{room:`Habitación`,zone:`Zona`},validation:{required:`El tipo es obligatorio`}},category:{title:`Categoría`,placeholder:`Seleccione una categoría`,hint:`Elegir una categoría sugerirá automáticamente un icono y una descripción para este espacio. Las categorías disponibles dependen de si se trata de una habitación o una zona.`,validation:{requiredForZone:`La categoría es obligatoria para las zonas`},groups:{floors:`Plantas`,outdoor:`Áreas exteriores`,other:`Otros`},options:{living_room:`Salón`,bedroom:`Dormitorio`,bathroom:`Baño`,toilet:`Aseo`,kitchen:`Cocina`,dining_room:`Comedor`,office:`Oficina`,entryway:`Entrada`,garage:`Garaje`,hallway:`Pasillo`,laundry:`Lavandería`,utility_room:`Cuarto de servicio`,storage:`Almacén`,closet:`Armario`,pantry:`Despensa`,nursery:`Habitación infantil`,guest_room:`Habitación de invitados`,gym:`Gimnasio`,media_room:`Sala multimedia`,workshop:`Taller`,other:`Otro`,floor_ground:`Planta baja`,floor_first:`Primera planta`,floor_second:`Segunda planta`,floor_basement:`Sótano`,floor_attic:`Ático`,outdoor_front_yard:`Jardín delantero`,outdoor_backyard:`Jardín trasero`,outdoor_driveway:`Entrada de vehículos`,outdoor_garden:`Jardín`,outdoor_terrace:`Terraza`,outdoor_balcony:`Balcón`,outdoor_walkway:`Pasarela`,security_perimeter:`Perímetro de seguridad`,utility:`Servicios`,zone_other:`Otro`}},icon:{title:`Icono`,placeholder:`mdi:home (nombre de icono Iconify)`},displayOrder:{title:`Orden de visualización`,placeholder:`Orden en las listas`},parentZone:{title:`Zona principal`,placeholder:`Seleccione una zona principal (opcional)`,hint:`Puede organizar esta habitación asignándola a una zona, como 'Planta baja' o 'Planta alta'. Esto ayuda a agrupar habitaciones relacionadas.`},lightingRoles:{title:`Roles de iluminación`,description:`Asigne roles a las luces para ayudar al panel a comprender cómo se usa normalmente cada luz (Trabajo, Relax, Noche)`,noLights:`No se encontraron luces en este espacio`,role:{title:`Rol`,placeholder:`Seleccione un rol`},applyDefaults:`Aplicar valores predeterminados`,applyDefaultsHint:`Establece la primera luz como Principal, las demás como Ambiental`},climateRoles:{title:`Roles de climatización`,description:`Asigne roles a los dispositivos de climatización para ayudar al panel a comprender cómo cada dispositivo controla la temperatura y la calidad del aire`,noDevices:`No se encontraron dispositivos de climatización en este espacio`,role:{title:`Rol`,placeholder:`Seleccione un rol`},applyDefaults:`Aplicar valores predeterminados`,applyDefaultsHint:`Asigna automáticamente roles según el tipo de dispositivo`},coversRoles:{title:`Roles de cubiertas`,description:`Asigne roles a las cubiertas de ventanas para ayudar al panel a comprender cómo se usa cada cubierta (principal, opaca, translúcida)`,noCovers:`No se encontraron cubiertas de ventanas en este espacio`,role:{title:`Rol`,placeholder:`Seleccione un rol`},applyDefaults:`Aplicar valores predeterminados`,applyDefaultsHint:`Establece la primera cubierta como Principal, las demás según el tipo`},sensorRoles:{title:`Roles de sensores`,description:`Asigne roles a los canales de sensores para que el panel pueda agrupar lecturas de entorno, seguridad, calidad del aire y energía.`,noSensors:`No se encontraron sensores en este espacio`,channel:{title:`Canal`},role:{title:`Rol`,placeholder:`Seleccione un rol`},applyDefaults:`Aplicar valores predeterminados`,applyDefaultsHint:`Asigna automáticamente roles según la categoría del canal del sensor`},suggestions:{title:`Sugerencias inteligentes`},suggestionsEnabled:{title:`Activar sugerencias`,hint:`Cuando está activado, el panel mostrará sugerencias de iluminación no intrusivas basadas en la hora del día y el estado actual.`},statusWidgets:{energy:{title:`Energía`,range:{title:`Rango`,options:{today:`Hoy`,week:`Semana`,month:`Mes`}},showProduction:{title:`Mostrar producción`}}}}},lightingRoles:{main:`Principal`,task:`Tarea`,ambient:`Ambiental`,accent:`Acento`,night:`Nocturna`,other:`Otra`,hidden:`Oculta`,unassigned:`Sin asignar`,descriptions:{main:`Iluminación principal del espacio, normalmente luminarias de techo o centrales utilizadas para la iluminación general.`,task:`Iluminación enfocada para actividades específicas como leer, cocinar o trabajar.`,ambient:`Iluminación suave de fondo utilizada para crear ambiente y confort.`,accent:`Iluminación decorativa utilizada para resaltar elementos o crear interés visual.`,night:`Iluminación de bajo nivel para la navegación y seguridad nocturna.`,other:`Iluminación que no encaja en las categorías estándar.`,hidden:`Las luces ocultas se excluyen de la interfaz del panel y del control basado en intenciones.`}},climateRoles:{heating_only:`Solo calefacción`,cooling_only:`Solo refrigeración`,auto:`Automático`,auxiliary:`Auxiliar`,sensor:`Sensor`,hidden:`Oculto`,unassigned:`Sin asignar`,descriptions:{heating_only:`El dispositivo se utiliza solo para calefacción en el dominio de climatización.`,cooling_only:`El dispositivo se utiliza solo para refrigeración en el dominio de climatización.`,auto:`El dispositivo puede utilizarse tanto para calefacción como para refrigeración automáticamente.`,auxiliary:`Dispositivos auxiliares de climatización como deshumidificadores, humidificadores, purificadores de aire y ventiladores.`,sensor:`Sensor de climatización que proporciona lecturas (temperatura, humedad, calidad del aire, etc.) del espacio.`,hidden:`Los dispositivos ocultos se excluyen de la interfaz de climatización y del control.`}},sensorRoles:{environment:`Entorno`,safety:`Seguridad`,security:`Vigilancia`,air_quality:`Calidad del aire`,energy:`Energía`,other:`Otro`,hidden:`Oculto`,descriptions:{environment:`Sensores ambientales como temperatura, humedad, presión o niveles de luz.`,safety:`Sensores de seguridad como detectores de humo, gas, fugas o monóxido de carbono.`,security:`Sensores de vigilancia y presencia como sensores de movimiento, ocupación y contacto.`,air_quality:`Sensores de calidad del aire incluyendo CO2, COV, partículas en suspensión y otros contaminantes.`,energy:`Sensores de monitorización energética como consumo de potencia o energía.`,other:`Sensores que no encajan en una categoría específica.`,hidden:`Los sensores ocultos se excluyen de la interfaz.`},categories:{temperature:`Temperatura`,humidity:`Humedad`,pressure:`Presión`,illuminance:`Iluminancia`,smoke:`Humo`,gas:`Gas`,carbon_monoxide:`Monóxido de carbono`,carbon_dioxide:`Dióxido de carbono`,leak:`Fuga`,motion:`Movimiento`,occupancy:`Ocupación`,contact:`Contacto`,air_quality:`Calidad del aire`,air_particulate:`Partículas en el aire`,nitrogen_dioxide:`Dióxido de nitrógeno`,ozone:`Ozono`,sulphur_dioxide:`Dióxido de azufre`,volatile_organic_compounds:`Compuestos orgánicos volátiles`,electrical_energy:`Energía`,electrical_generation:`Generación`,electrical_power:`Potencia`,battery:`Batería`}},coversRoles:{primary:`Principal`,blackout:`Opaca`,sheer:`Translúcida`,outdoor:`Exterior`,hidden:`Oculta`,unassigned:`Sin asignar`,descriptions:{primary:`Cubierta de ventana principal del espacio, normalmente utilizada para privacidad general y control de luz.`,blackout:`Cubiertas que bloquean la luz diseñadas para oscuridad total, ideales para dormitorios o salas multimedia.`,sheer:`Cubiertas semitransparentes que proporcionan privacidad mientras permiten el paso de la luz natural.`,outdoor:`Persianas exteriores, toldos o cubiertas de pérgola para protección exterior.`,hidden:`Las cubiertas ocultas se excluyen de la interfaz del panel y del control basado en intenciones.`}},filters:{type:{title:`Tipo`,all:`Todos`}},texts:{loadingSpaces:`Cargando espacios...`,loadingSpace:`Cargando espacio...`,noSpaces:`No tiene ningún espacio configurado`,noFilteredSpaces:`Ningún espacio coincide con los criterios de filtro`,confirmDiscard:`Tiene cambios sin guardar. ¿Está seguro de que desea descartarlos?`},dialogs:{lightingRoles:{title:`Editar roles de iluminación`},climateRoles:{title:`Editar roles de climatización`},coversRoles:{title:`Editar roles de cubiertas`},sensorRoles:{title:`Editar roles de sensores`},mediaActivities:{title:`Editar actividades multimedia`}},buttons:{add:{title:`Añadir`},done:{title:`Hecho`},detail:{title:`Detalle`},adjust:{title:`Filtrar`},resetFilters:{title:`Restablecer filtros`},reset:{title:`Restablecer`},yes:{title:`Sí`},no:{title:`No`},save:{title:`Guardar`},cancel:{title:`Cancelar`},close:{title:`Cerrar`},discard:{title:`Descartar`},edit:{title:`Editar`},delete:{title:`Eliminar`},previous:{title:`Anterior`},next:{title:`Siguiente`},finish:{title:`Finalizar`},onboarding:{title:`Asistente de configuración`},viewAll:{title:`Ver todo`},back:{title:`Volver`}},detail:{title:`Detalle del espacio`,domains:{title:`Dominios`,notConfigured:`No configurado`,lighting:{title:`Iluminación`,description:`Configure cómo se usan las luces en este espacio — roles de iluminación principal, de trabajo, ambiental, de acento y nocturna.`},climate:{title:`Clima`,description:`Asigne roles de calefacción, refrigeración y sensores a los dispositivos climáticos en este espacio.`},covers:{title:`Cubiertas`,description:`Establezca roles para las cubiertas de ventanas — persianas primarias, de oscurecimiento, visillos y exteriores.`},sensor:{title:`Sensores`,description:`Agrupe los canales de sensores por propósito — entorno, seguridad, protección, calidad del aire y energía.`},media:{title:`Medios`,description:`Defina actividades multimedia como ver, escuchar y jugar con enrutamiento de puntos finales de dispositivos.`}},lightingRoles:{title:`Roles de iluminación`,lightsAssigned:`Luces asignadas`,noRolesAssigned:`Aún no se han asignado roles`},climateRoles:{title:`Roles de climatización`,devicesAssigned:`Dispositivos asignados`,noRolesAssigned:`Aún no se han asignado roles`},coversRoles:{title:`Roles de cubiertas`,coversAssigned:`Cubiertas asignadas`,noRolesAssigned:`Aún no se han asignado roles`},sensorRoles:{title:`Roles de sensores`,sensorsAssigned:`Sensores asignados`,noRolesAssigned:`Aún no se han asignado roles`},mediaActivities:{title:`Actividades multimedia`,noActivities:`Aún no se han configurado actividades`},info:{title:`Información del espacio`,name:`Nombre`,description:`Descripción`,type:`Tipo`,icon:`Icono`,displayOrder:`Orden de visualización`},devices:{title:`Dispositivos`,add:`Añadir dispositivo`,empty:`No hay dispositivos asignados a este espacio`,loading:`Cargando dispositivos...`,remove:`Eliminar`,removeHeading:`Eliminar dispositivo del espacio`,reassign:`Reasignar`,assign:`Asignar`,selectDevice:`Seleccione los dispositivos a añadir`,confirmRemove:`¿Eliminar el dispositivo "{name}" de este espacio?`,selectRoom:`Seleccione la habitación para el dispositivo`,noAvailable:`No hay dispositivos disponibles para añadir`,removed:`El dispositivo "{name}" fue eliminado de este espacio.`,removeCanceled:`La eliminación del dispositivo ha sido cancelada.`},parentZone:{title:`Planta`,none:`Sin planta asignada`,select:`Seleccionar planta`},displays:{title:`Pantallas`,add:`Añadir pantalla`,empty:`No hay pantallas asignadas a este espacio`,loading:`Cargando pantallas...`,remove:`Eliminar`,removeHeading:`Eliminar pantalla del espacio`,reassign:`Reasignar`,assign:`Asignar`,selectDisplay:`Seleccione la pantalla a añadir`,confirmRemove:`¿Eliminar la pantalla "{name}" de este espacio?`,selectRoom:`Seleccione la habitación para esta pantalla`,noAvailable:`No hay pantallas disponibles para añadir`,removed:`La pantalla "{name}" fue eliminada de este espacio.`,removeCanceled:`La eliminación de la pantalla ha sido cancelada.`},media:{activities:`Actividades multimedia`},scenes:{title:`Escenas`,add:`Añadir escena`,empty:`No hay escenas asignadas a este espacio`,loading:`Cargando escenas...`,name:`Nombre de la escena`,category:`Categoría`,status:`Estado`,enabled:`Activada`,disabled:`Desactivada`,remove:`Eliminar`,removeHeading:`Eliminar escena del espacio`,reassign:`Reasignar`,reassigned:`La escena "{name}" fue reasignada correctamente.`,assign:`Asignar`,selectScene:`Seleccione la escena a añadir`,selectSpace:`Seleccione el espacio para la escena`,searchPlaceholder:`Buscar escenas...`,confirmRemove:`¿Eliminar la escena "{name}" de este espacio?`,assignedSpace:`Espacio asignado`,noAvailable:`No hay escenas disponibles para añadir`,noFilteredScenes:`Ninguna escena coincide con su búsqueda`,assigned:`La escena "{name}" fue asignada a este espacio.`,removed:`La escena "{name}" fue eliminada de este espacio.`,removeCanceled:`La eliminación de la escena ha sido cancelada.`}},media:{endpointTypes:{display:`Pantalla`,audio_output:`Salida de audio`,source:`Fuente`,remote_target:`Destino remoto`},capabilities:{power:`Alimentación`,input:`Entrada`,volume:`Volumen`,playback:`Reproducción`,track:`Pista`,remote:`Remoto`,mute:`Silencio`},activityLabels:{watch:`Ver`,listen:`Escuchar`,gaming:`Juegos`,background:`Fondo`,off:`Apagado`},activities:{loading:`Cargando configuración multimedia...`,description:`Asigne dispositivos de pantalla, audio, fuente y remoto a cada actividad multimedia. Los cambios se guardan automáticamente.`,applyDefaults:`Aplicar valores predeterminados`,applyDefaultsHint:`Asigna automáticamente los endpoints según los tipos de dispositivo y capacidades`,defaultsApplied:`Se han aplicado las asignaciones predeterminadas.`,defaultsFailed:`Error al aplicar las asignaciones predeterminadas.`,selectPrompt:`Seleccione una actividad de la lista para configurar sus asignaciones.`,selectEndpoint:`Seleccionar endpoint...`,save:`Guardar`,reset:`Restablecer`,saveError:`Error al guardar la asignación`,savedSuccessfully:`Asignación guardada correctamente.`,slots:{display:`Pantalla`,audio:`Salida de audio`,source:`Fuente`,remote:`Destino remoto`},overrides:{displayInput:`Preajuste de entrada de pantalla`,displayInputPlaceholder:`p. ej., HDMI1, Apps`,audioInput:`Preajuste de entrada de audio`,audioInputPlaceholder:`p. ej., HDMI1, ARC`,sourceInput:`Preajuste de entrada de fuente`,sourceInputPlaceholder:`p. ej., HDMI1, Apps`,audioVolume:`Preajuste de volumen de audio`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Cable`,satellite:`Satélite`,antenna:`Antena`,av1:`AV 1`,av2:`AV 2`,component:`Componente`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Otro`},status:{configured:`Configurado`,incomplete:`Incompleto`,unconfigured:`Sin configurar`},run:`Ejecutar`,deactivate:`Desactivar`,refreshStatus:`Actualizar estado`,rerun:`Volver a ejecutar`,copyDebugJson:`Copiar JSON de depuración`,copiedToClipboard:`JSON de depuración copiado al portapapeles.`,activateSuccess:`Actividad activada correctamente.`,activateFailed:`Error al activar la actividad.`,deactivateSuccess:`Actividad desactivada.`,deactivateFailed:`Error al desactivar la actividad.`,fetchFailed:`Error al actualizar el estado de la actividad.`,preview:`Vista previa`,previewFailed:`Error al previsualizar la actividad.`,previewDialog:{title:`Vista previa del plan de ejecución`,resolvedDevices:`Dispositivos resueltos`,executionPlan:`Plan de ejecución`,step:`#`,action:`Acción`,device:`Dispositivo`,critical:`Crítico`,criticalYes:`Crítico`,criticalNo:`Opcional`,warnings:`Advertencias y pasos omitidos`,noSteps:`No hay pasos de ejecución en el plan.`,close:`Cerrar`},activePanel:{title:`Estado activo`,currentActivity:`Actividad actual`,none:`Ninguna`,state:`Estado`,activatedAt:`Activado a las`,updatedAt:`Actualizado a las`,resolvedDevices:`Dispositivos resueltos`,display:`Pantalla`,audio:`Audio`,source:`Fuente`,remote:`Remoto`},failures:{title:`Errores`,total:`Pasos totales`,succeeded:`Exitosos`,failed:`Fallidos`,stepIndex:`Paso`,device:`Dispositivo`,property:`Propiedad`,reason:`Razón`},activationState:{activating:`Activando`,active:`Activo`,failed:`Fallido`,deactivated:`Desactivado`}}},messages:{notFound:`Espacio no encontrado`,loadError:`Error al cargar los espacios`,notLoaded:`Error al cargar el espacio. Por favor, inténtelo de nuevo más tarde.`,confirmRemove:`¿Está seguro de que desea eliminar el espacio "{name}"? Esta acción no se puede deshacer.`,confirmDelete:`¿Está seguro de que desea eliminar este espacio?`,created:`Nuevo espacio añadido correctamente.`,notCreated:`Algo salió mal. No se pudo crear el espacio.`,edited:`¡Cambios guardados! El espacio: {space} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del espacio no fue exitosa.`,removed:`El espacio: {space} fue eliminado correctamente.`,removeCanceled:`La eliminación del espacio: {space} ha sido cancelada.`,deletedWhileEditing:`Este espacio fue eliminado y ya no está disponible.`,createError:`Error al crear el espacio. Por favor, inténtelo de nuevo.`,saveError:`Error al guardar los cambios. Por favor, inténtelo de nuevo.`,confirmBulkRemove:`¿Está seguro de que desea eliminar {count} espacios? Esta acción no se puede deshacer.`,bulkRemoved:`{count} espacios fueron eliminados correctamente.`,bulkRemoveFailed:`Error al eliminar {count} espacios.`,bulkRemoveCanceled:`La eliminación masiva de espacios ha sido cancelada.`},misc:{types:{room:`Habitación`,zone:`Zona`}},onboarding:{title:`Asistente de configuración de espacios`,devices:`dispositivos`,displays:`pantallas`,selectSpace:`Seleccionar espacio`,selectZones:`Seleccionar zonas...`,deviceName:`Nombre del dispositivo`,displayName:`Nombre de la pantalla`,assignedSpace:`Espacio asignado`,spaceName:`Nombre del espacio`,zones:`Zonas (opcional)`,advanced:`Avanzado`,basic:`Básico`,steps:{spaces:{title:`Crear espacios`,description:`Los espacios le ayudan a organizar sus dispositivos y pantallas por habitaciones o zonas (p. ej., Salón, Cocina, Dormitorio). Hemos detectado automáticamente algunos espacios a partir de los nombres de sus dispositivos. Revise y seleccione los que desea crear, o añada sus propios espacios personalizados a continuación.`,alertTitle:`Los espacios representan habitaciones o áreas de su hogar`,alertDescription:`Hemos sugerido algunos espacios basándonos en los nombres de sus dispositivos. Puede ajustarlos ahora o cambiar todo más tarde.`,proposed:`Espacios propuestos`,custom:`Espacios personalizados`,existing:`Espacios existentes`,matchedExisting:`Usando espacios existentes`,usingExisting:`Usando existente`,matchedWith:`Usará: {name}`,addManual:`Añadir espacio personalizado`,placeholder:`Introduzca el nombre del espacio (p. ej., Salón)`,noProposals:`No se pudieron detectar espacios a partir de los nombres de sus dispositivos. Añada espacios manualmente a continuación.`,duplicateWarning:`Ya existe un espacio similar a "{name}".`,convertedToMatch:`Este espacio coincide con un espacio existente y se ha movido a la sección 'Usando espacios existentes'.`,multipleMatchedWith:`{count} espacios detectados usarán el espacio existente '{name}'`,existingTag:`Existente`},displays:{title:`Asignar pantallas`,description:`Asigne cada pantalla a un espacio. Esto determina qué espacio mostrará la pantalla de forma predeterminada.`,alertTitle:`Elija un espacio predeterminado para cada pantalla`,alertDescription:`Esto solo establece la vista inicial; puede cambiar de espacio en cualquier momento desde la propia pantalla.`,noDisplays:`Aún no hay pantallas registradas.`},devices:{title:`Asignar dispositivos`,description:`Asigne dispositivos a espacios. Los dispositivos se preasignarán según sus nombres si se detectan.`,alertTitle:`Conecte sus dispositivos a las habitaciones`,alertDescription:`Algunos dispositivos se han rellenado previamente según sus nombres. Puede ajustarlos; siempre podrá cambiar las asignaciones más tarde.`,noDevices:`No se encontraron dispositivos.`},summary:{title:`Resumen`,description:`Revise su configuración antes de aplicar los cambios.`,alertTitle:`Resumen de su configuración`,alertDescription:`Todavía puede volver atrás y ajustar cualquier cosa antes de finalizar.`}},summary:{overview:`Resumen`,totalSpaces:`Total de espacios`,assignedDevices:`Dispositivos asignados`,unassignedDevices:`Dispositivos sin asignar`,assignedDisplays:`Pantallas asignadas`,unassignedDisplays:`Pantallas sin asignar`,bySpace:`Asignaciones por espacio`,unassignedDevicesTitle:`Dispositivos sin asignar`,unassignedDisplaysTitle:`Pantallas sin asignar`,noDevices:`Sin dispositivos`,clickToAssignDevices:`Haga clic para asignar dispositivos`,clickToAssignDisplays:`Haga clic para asignar pantallas`},messages:{spacesCreated:`{count} espacio(s) creado(s) correctamente`,completed:`¡Configuración completada! {devices} dispositivo(s), {displays} pantalla(s) y {zones} asignación(es) de zona.`}},labels:{rooms:`Habitaciones`,zones:`Zonas`}},vr={menu:{title:`Przestrzenie`},title:`Przestrzenie`,description:`Zarzadzaj przestrzeniami (pokoje i strefy)`,headings:{list:`Przestrzenie`,spaces:`Przestrzenie`,detail:`Szczegoly przestrzeni`,add:`Dodaj przestrzen`,edit:`Edytuj przestrzen`,removeSpace:`Usun przestrzen`,bulkRemoveSpace:`Usun przestrzenie`,discard:`Odrzuc zmiany`,adjustFilters:`Filtruj przestrzenie`},edit:{sections:{general:{title:`Ogolne`},organization:{title:`Organizacja`,hint:`Przypisz ten pokoj do strefy (np. "Parter", "Pietro"), aby pogrupowac powiazane pokoje.`},devicesDisplays:{title:`Urzadzenia i wyswietlacze`,titleDevicesOnly:`Urzadzenia`,summary:`Do tej przestrzeni jest przypisanych {devices} urzadzen i {displays} wyswietlaczy.`,summaryDevicesOnly:`Do tej przestrzeni jest przypisanych {devices} urzadzen.`,manageDevices:`Zarzadzaj urzadzeniami`,manageDisplays:`Zarzadzaj wyswietlaczami`},statusWidgets:{title:`Widzety statusu`,hint:`Skonfiguruj widzety wyswietlane w obszarze statusu przestrzeni na panelu.`},smartOverrides:{title:`Inteligentne nadpisania`,badge:`Zaawansowane`,hint:`Opcjonalne ustawienia poprawiajace inteligentne zachowanie i sterowanie oparte na intencjach.`,lightingRoles:`Role oswietlenia`,climateRoles:`Role klimatu`,coversRoles:`Role oslon`,sensorRoles:`Role czujnikow`,smartSuggestions:`Inteligentne sugestie`}}},subHeadings:{list:`Organizuj urzadzenia i wyswietlacze wedlug pokoi lub stref`,adjustFilters:`Dostosuj filtry wyswietlania`,add:`Dodaj nowa przestrzen`,detail:`Zarzadzaj przestrzenia: {space}`,onboarding:`Kreator konfiguracji przestrzeni, urzadzen i wyswietlaczy`},breadcrumbs:{spaces:{list:`przestrzenie`,detail:`przestrzen: {space}`,edit:`edytuj przestrzen`,add:`dodaj przestrzen`,onboarding:`kreator konfiguracji`}},meta:{spaces:{list:{title:`Lista przestrzeni`},edit:{title:`Edytuj przestrzen: {space}`},add:{title:`Dodaj przestrzen`},detail:{title:`Przestrzen: {space}`},onboarding:{title:`Kreator konfiguracji przestrzeni`}}},table:{columns:{name:`Nazwa`,type:`Typ`,category:`Kategoria`,description:`Opis`,order:`Kolejnosc`,devices:`Urzadzenia`,displays:`Wyswietlacze`,actions:`Akcje`},empty:`Nie znaleziono przestrzeni. Utworz pierwsza przestrzen, aby rozpoczac.`},fields:{search:{placeholder:`Szukaj przestrzeni...`},spaces:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID przestrzeni`},name:{title:`Nazwa`,placeholder:`Wprowadz nazwe przestrzeni (np. Salon)`,validation:{required:`Nazwa jest wymagana`,maxLength:`Nazwa musi miec mniej niz 100 znakow`}},description:{title:`Opis`,placeholder:`Opcjonalny opis przestrzeni`},type:{title:`Typ`,options:{room:`Pokoj`,zone:`Strefa`},validation:{required:`Typ jest wymagany`}},category:{title:`Kategoria`,placeholder:`Wybierz kategorie`,hint:`Wybor kategorii automatycznie zasugeruje ikone i opis dla tej przestrzeni. Dostepne kategorie zaleza od tego, czy jest to pokoj czy strefa.`,validation:{requiredForZone:`Kategoria jest wymagana dla stref`},groups:{floors:`Pietra`,outdoor:`Tereny zewnetrzne`,other:`Inne`},options:{living_room:`Salon`,bedroom:`Sypialnia`,bathroom:`Lazienka`,toilet:`Toaleta`,kitchen:`Kuchnia`,dining_room:`Jadalnia`,office:`Biuro`,entryway:`Przedsionek`,garage:`Garaz`,hallway:`Korytarz`,laundry:`Pralnia`,utility_room:`Pomieszczenie gospodarcze`,storage:`Magazyn`,closet:`Garderoba`,pantry:`Spizarnia`,nursery:`Pokoj dzieciecy`,guest_room:`Pokoj goscinny`,gym:`Silownia`,media_room:`Pokoj multimedialny`,workshop:`Warsztat`,other:`Inne`,floor_ground:`Parter`,floor_first:`Pierwsze pietro`,floor_second:`Drugie pietro`,floor_basement:`Piwnica`,floor_attic:`Poddasze`,outdoor_front_yard:`Ogrod frontowy`,outdoor_backyard:`Ogrod tylny`,outdoor_driveway:`Podjazd`,outdoor_garden:`Ogrod`,outdoor_terrace:`Taras`,outdoor_balcony:`Balkon`,outdoor_walkway:`Chodnik`,security_perimeter:`Strefa bezpieczenstwa`,utility:`Gospodarcza`,zone_other:`Inne`}},icon:{title:`Ikona`,placeholder:`mdi:home (nazwa ikony Iconify)`},displayOrder:{title:`Kolejnosc wyswietlania`,placeholder:`Kolejnosc na listach`},parentZone:{title:`Strefa nadrzedna`,placeholder:`Wybierz strefe nadrzedna (opcjonalnie)`,hint:`Mozesz uporzadkowac ten pokoj, przypisujac go do strefy, np. 'Parter' lub 'Pietro'. Pomaga to grupowac powiazane pokoje.`},lightingRoles:{title:`Role oswietlenia`,description:`Przypisz role do oswietlenia, aby pomoc panelowi zrozumiec, jak kazde swiatlo jest typowo uzywane (Praca, Relaks, Noc)`,noLights:`Nie znaleziono oswietlenia w tej przestrzeni`,role:{title:`Rola`,placeholder:`Wybierz role`},applyDefaults:`Zastosuj domyslne`,applyDefaultsHint:`Ustawia pierwsze swiatlo jako Glowne, pozostale jako Ambientowe`},climateRoles:{title:`Role klimatu`,description:`Przypisz role do urzadzen klimatycznych, aby pomoc panelowi zrozumiec, jak kazde urzadzenie steruje temperatura i jakoscia powietrza`,noDevices:`Nie znaleziono urzadzen klimatycznych w tej przestrzeni`,role:{title:`Rola`,placeholder:`Wybierz role`},applyDefaults:`Zastosuj domyslne`,applyDefaultsHint:`Automatycznie przypisuje role na podstawie typu urzadzenia`},coversRoles:{title:`Role oslon`,description:`Przypisz role do oslon okiennych, aby pomoc panelowi zrozumiec, jak kazda oslona jest uzywana (glowna, zaciemniajaca, przezroczysta)`,noCovers:`Nie znaleziono oslon okiennych w tej przestrzeni`,role:{title:`Rola`,placeholder:`Wybierz role`},applyDefaults:`Zastosuj domyslne`,applyDefaultsHint:`Ustawia pierwsza oslone jako Glowna, pozostale na podstawie typu`},sensorRoles:{title:`Role czujnikow`,description:`Przypisz role do kanalow czujnikow, aby panel mogl grupowac odczyty srodowiskowe, bezpieczenstwa, jakosci powietrza i energii.`,noSensors:`Nie znaleziono czujnikow w tej przestrzeni`,channel:{title:`Kanal`},role:{title:`Rola`,placeholder:`Wybierz role`},applyDefaults:`Zastosuj domyslne`,applyDefaultsHint:`Automatycznie przypisuje role na podstawie kategorii kanalu czujnika`},suggestions:{title:`Inteligentne sugestie`},suggestionsEnabled:{title:`Wlacz sugestie`,hint:`Po wlaczeniu panel bedzie wyswietlac nieinwazyjne sugestie oswietleniowe na podstawie pory dnia i biezacego stanu.`},statusWidgets:{energy:{title:`Energia`,range:{title:`Zakres`,options:{today:`Dzisiaj`,week:`Tydzien`,month:`Miesiac`}},showProduction:{title:`Pokaz produkcje`}}}}},lightingRoles:{main:`Glowne`,task:`Zadaniowe`,ambient:`Ambientowe`,accent:`Akcentowe`,night:`Nocne`,other:`Inne`,hidden:`Ukryte`,unassigned:`Nieprzypisane`,descriptions:{main:`Glowne oswietlenie przestrzeni.`,task:`Skupione oswietlenie do konkretnych czynnosci.`,ambient:`Miekkie oswietlenie tla.`,accent:`Oswietlenie dekoracyjne.`,night:`Oswietlenie o niskim natezeniu do nocnej nawigacji.`,other:`Oswietlenie niepasujace do standardowych kategorii.`,hidden:`Ukryte swiatla sa wykluczone z interfejsu panelu.`}},climateRoles:{heating_only:`Tylko ogrzewanie`,cooling_only:`Tylko chlodzenie`,auto:`Automatyczny`,auxiliary:`Pomocniczy`,sensor:`Czujnik`,hidden:`Ukryty`,unassigned:`Nieprzypisany`,descriptions:{heating_only:`Urzadzenie uzywane tylko do ogrzewania.`,cooling_only:`Urzadzenie uzywane tylko do chlodzenia.`,auto:`Urzadzenie moze byc uzywane do ogrzewania i chlodzenia automatycznie.`,auxiliary:`Pomocnicze urzadzenia klimatyczne.`,sensor:`Czujnik klimatu dostarczajacy odczyty dla przestrzeni.`,hidden:`Ukryte urzadzenia sa wykluczone z interfejsu klimatu.`}},sensorRoles:{environment:`Srodowisko`,safety:`Bezpieczenstwo`,security:`Ochrona`,air_quality:`Jakosc powietrza`,energy:`Energia`,other:`Inne`,hidden:`Ukryty`,descriptions:{environment:`Czujniki srodowiskowe.`,safety:`Czujniki bezpieczenstwa.`,security:`Czujniki ochrony i obecnosci.`,air_quality:`Czujniki jakosci powietrza.`,energy:`Czujniki monitorowania energii.`,other:`Czujniki niepasujace do kategorii.`,hidden:`Ukryte czujniki sa wykluczone z interfejsu.`},categories:{temperature:`Temperatura`,humidity:`Wilgotnosc`,pressure:`Cisnienie`,illuminance:`Natezenie oswietlenia`,smoke:`Dym`,gas:`Gaz`,carbon_monoxide:`Tlenek wegla`,carbon_dioxide:`Dwutlenek wegla`,leak:`Wyciek`,motion:`Ruch`,occupancy:`Obecnosc`,contact:`Kontakt`,air_quality:`Jakosc powietrza`,air_particulate:`Czastki w powietrzu`,nitrogen_dioxide:`Dwutlenek azotu`,ozone:`Ozon`,sulphur_dioxide:`Dwutlenek siarki`,volatile_organic_compounds:`Lotne zwiazki organiczne`,electrical_energy:`Energia`,electrical_generation:`Generacja`,electrical_power:`Moc`,battery:`Bateria`}},coversRoles:{primary:`Glowna`,blackout:`Zaciemniajaca`,sheer:`Przezroczysta`,outdoor:`Zewnetrzna`,hidden:`Ukryta`,unassigned:`Nieprzypisana`,descriptions:{primary:`Glowna oslona okienna przestrzeni.`,blackout:`Oslony blokujace swiatlo.`,sheer:`Polprzezroczyste oslony.`,outdoor:`Zewnetrzne oslony.`,hidden:`Ukryte oslony sa wykluczone z interfejsu panelu.`}},filters:{type:{title:`Typ`,all:`Wszystkie`}},texts:{loadingSpaces:`Ladowanie przestrzeni...`,loadingSpace:`Ladowanie przestrzeni...`,noSpaces:`Nie masz skonfigurowanych zadnych przestrzeni`,noFilteredSpaces:`Zadne przestrzenie nie pasuja do kryteriow filtra`,confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucic?`},dialogs:{lightingRoles:{title:`Edytuj role oswietlenia`},climateRoles:{title:`Edytuj role klimatu`},coversRoles:{title:`Edytuj role oslon`},sensorRoles:{title:`Edytuj role czujnikow`},mediaActivities:{title:`Edytuj aktywnosci mediow`}},buttons:{add:{title:`Dodaj`},done:{title:`Gotowe`},detail:{title:`Szczegoly`},adjust:{title:`Filtruj`},resetFilters:{title:`Resetuj filtry`},reset:{title:`Resetuj`},yes:{title:`Tak`},no:{title:`Nie`},save:{title:`Zapisz`},cancel:{title:`Anuluj`},close:{title:`Zamknij`},discard:{title:`Odrzuc`},edit:{title:`Edytuj`},delete:{title:`Usun`},previous:{title:`Poprzedni`},next:{title:`Nastepny`},finish:{title:`Zakoncz`},onboarding:{title:`Kreator konfiguracji`},viewAll:{title:`Pokaz wszystko`},back:{title:`Wroc`}},detail:{title:`Szczegoly przestrzeni`,domains:{title:`Domeny`,notConfigured:`Nie skonfigurowano`,lighting:{title:`Oswietlenie`,description:`Skonfiguruj sposob uzycia swiatel w tej przestrzeni — role oswietlenia glownego, roboczego, nastrojowego, akcentowego i nocnego.`},climate:{title:`Klimat`,description:`Przypisz role ogrzewania, chlodzenia i czujnikow do urzadzen klimatycznych w tej przestrzeni.`},covers:{title:`Oslony`,description:`Ustaw role dla oslon okiennych — rolety glowne, zaciemniajace, firanki i zewnetrzne.`},sensor:{title:`Czujniki`,description:`Grupuj kanaly czujnikow wedlug przeznaczenia — srodowisko, bezpieczenstwo, ochrona, jakosc powietrza i energia.`},media:{title:`Media`,description:`Zdefiniuj aktywnosci multimedialne, takie jak ogladanie, sluchanie i granie z routingiem punktow koncowych urzadzen.`}},lightingRoles:{title:`Role oswietlenia`,lightsAssigned:`Przypisane oswietlenie`,noRolesAssigned:`Nie przypisano jeszcze zadnych rol`},climateRoles:{title:`Role klimatu`,devicesAssigned:`Przypisane urzadzenia`,noRolesAssigned:`Nie przypisano jeszcze zadnych rol`},coversRoles:{title:`Role oslon`,coversAssigned:`Przypisane oslony`,noRolesAssigned:`Nie przypisano jeszcze zadnych rol`},sensorRoles:{title:`Role czujnikow`,sensorsAssigned:`Przypisane czujniki`,noRolesAssigned:`Nie przypisano jeszcze zadnych rol`},mediaActivities:{title:`Aktywnosci mediow`,noActivities:`Nie skonfigurowano jeszcze zadnych aktywnosci`},info:{title:`Informacje o przestrzeni`,name:`Nazwa`,description:`Opis`,type:`Typ`,icon:`Ikona`,displayOrder:`Kolejnosc wyswietlania`},devices:{title:`Urzadzenia`,add:`Dodaj urzadzenie`,empty:`Do tej przestrzeni nie przypisano zadnych urzadzen`,loading:`Ladowanie urzadzen...`,remove:`Usun`,removeHeading:`Usun urzadzenie z przestrzeni`,reassign:`Przypisz ponownie`,assign:`Przypisz`,selectDevice:`Wybierz urzadzenia do dodania`,confirmRemove:`Usunac urzadzenie "{name}" z tej przestrzeni?`,selectRoom:`Wybierz pokoj dla urzadzenia`,noAvailable:`Brak dostepnych urzadzen do dodania`,removed:`Urzadzenie "{name}" zostalo usuniete z tej przestrzeni.`,removeCanceled:`Usuwanie urzadzenia zostalo anulowane.`},parentZone:{title:`Pietro`,none:`Nie przypisano pietra`,select:`Wybierz pietro`},displays:{title:`Wyswietlacze`,add:`Dodaj wyswietlacz`,empty:`Do tej przestrzeni nie przypisano zadnych wyswietlaczy`,loading:`Ladowanie wyswietlaczy...`,remove:`Usun`,removeHeading:`Usun wyswietlacz z przestrzeni`,reassign:`Przypisz ponownie`,assign:`Przypisz`,selectDisplay:`Wybierz wyswietlacz do dodania`,confirmRemove:`Usunac wyswietlacz "{name}" z tej przestrzeni?`,selectRoom:`Wybierz pokoj dla tego wyswietlacza`,noAvailable:`Brak dostepnych wyswietlaczy do dodania`,removed:`Wyswietlacz "{name}" zostal usuniety z tej przestrzeni.`,removeCanceled:`Usuwanie wyswietlacza zostalo anulowane.`},media:{activities:`Aktywnosci mediow`},scenes:{title:`Sceny`,add:`Dodaj scene`,empty:`Do tej przestrzeni nie przypisano zadnych scen`,loading:`Ladowanie scen...`,name:`Nazwa sceny`,category:`Kategoria`,status:`Status`,enabled:`Wlaczona`,disabled:`Wylaczona`,remove:`Usun`,removeHeading:`Usun scene z przestrzeni`,reassign:`Przypisz ponownie`,reassigned:`Scena "{name}" zostala pomyslnie przypisana ponownie.`,assign:`Przypisz`,selectScene:`Wybierz scene do dodania`,selectSpace:`Wybierz przestrzen dla sceny`,searchPlaceholder:`Szukaj scen...`,confirmRemove:`Usunac scene "{name}" z tej przestrzeni?`,assignedSpace:`Przypisana przestrzen`,noAvailable:`Brak dostepnych scen do dodania`,noFilteredScenes:`Zadne sceny nie pasuja do wyszukiwania`,assigned:`Scena "{name}" zostala przypisana do tej przestrzeni.`,removed:`Scena "{name}" zostala usunieta z tej przestrzeni.`,removeCanceled:`Usuwanie sceny zostalo anulowane.`}},media:{endpointTypes:{display:`Display`,audio_output:`Audio Output`,source:`Source`,remote_target:`Remote Target`},capabilities:{power:`Power`,input:`Input`,volume:`Volume`,playback:`Playback`,track:`Track`,remote:`Remote`,mute:`Mute`},activityLabels:{watch:`Watch`,listen:`Listen`,gaming:`Gaming`,background:`Background`,off:`Off`},activities:{loading:`Loading media configuration...`,description:`Assign display, audio, source, and remote devices to each media activity. Changes are saved automatically.`,applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns endpoints based on device types and capabilities`,defaultsApplied:`Default bindings have been applied.`,defaultsFailed:`Failed to apply default bindings.`,selectPrompt:`Select an activity from the list to configure its bindings.`,selectEndpoint:`Select endpoint...`,save:`Save`,reset:`Reset`,saveError:`Failed to save binding`,savedSuccessfully:`Binding saved successfully.`,slots:{display:`Display`,audio:`Audio output`,source:`Source`,remote:`Remote target`},overrides:{displayInput:`Display input preset`,displayInputPlaceholder:`e.g. HDMI1, Apps`,audioInput:`Audio input preset`,audioInputPlaceholder:`e.g. HDMI1, ARC`,sourceInput:`Source input preset`,sourceInputPlaceholder:`e.g. HDMI1, Apps`,audioVolume:`Audio volume preset`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Cable`,satellite:`Satellite`,antenna:`Antenna`,av1:`AV 1`,av2:`AV 2`,component:`Component`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Other`},status:{configured:`Configured`,incomplete:`Incomplete`,unconfigured:`Not set`},run:`Run`,deactivate:`Deactivate`,refreshStatus:`Refresh status`,rerun:`Re-run`,copyDebugJson:`Copy debug JSON`,copiedToClipboard:`Debug JSON copied to clipboard.`,activateSuccess:`Activity activated successfully.`,activateFailed:`Failed to activate activity.`,deactivateSuccess:`Activity deactivated.`,deactivateFailed:`Failed to deactivate activity.`,fetchFailed:`Failed to refresh activity status.`,preview:`Preview`,previewFailed:`Failed to preview activity.`,previewDialog:{title:`Execution Plan Preview`,resolvedDevices:`Resolved devices`,executionPlan:`Execution plan`,step:`#`,action:`Action`,device:`Device`,critical:`Critical`,criticalYes:`Critical`,criticalNo:`Optional`,warnings:`Warnings & skipped steps`,noSteps:`No execution steps in plan.`,close:`Close`},activePanel:{title:`Active State`,currentActivity:`Current activity`,none:`None`,state:`State`,activatedAt:`Activated at`,updatedAt:`Updated at`,resolvedDevices:`Resolved devices`,display:`Display`,audio:`Audio`,source:`Source`,remote:`Remote`},failures:{title:`Failures`,total:`Total steps`,succeeded:`Succeeded`,failed:`Failed`,stepIndex:`Step`,device:`Device`,property:`Property`,reason:`Reason`},activationState:{activating:`Activating`,active:`Active`,failed:`Failed`,deactivated:`Deactivated`}}},messages:{notFound:`Przestrzen nie znaleziona`,loadError:`Nie udalo sie wczytac przestrzeni`,notLoaded:`Nie udalo sie wczytac przestrzeni. Sprobuj ponownie pozniej.`,confirmRemove:`Czy na pewno chcesz usunac przestrzen "{name}"? Tej operacji nie mozna cofnac.`,confirmDelete:`Czy na pewno chcesz usunac te przestrzen?`,created:`Nowa przestrzen zostala pomyslnie dodana.`,notCreated:`Cos poszlo nie tak. Nie udalo sie utworzyc przestrzeni.`,edited:`Zmiany zapisane! Przestrzen: {space} zostala zaktualizowana.`,notEdited:`Cos poszlo nie tak. Aktualizacja przestrzeni nie powiodla sie.`,removed:`Przestrzen: {space} zostala pomyslnie usunieta.`,removeCanceled:`Usuniecie przestrzeni: {space} zostalo anulowane.`,deletedWhileEditing:`Ta przestrzen zostala usunieta i nie jest juz dostepna.`,createError:`Nie udalo sie utworzyc przestrzeni. Sprobuj ponownie.`,saveError:`Nie udalo sie zapisac zmian. Sprobuj ponownie.`,confirmBulkRemove:`Czy na pewno chcesz usunac {count} przestrzeni? Tej operacji nie mozna cofnac.`,bulkRemoved:`Pomyslnie usunieto {count} przestrzeni.`,bulkRemoveFailed:`Nie udalo sie usunac {count} przestrzeni.`,bulkRemoveCanceled:`Masowe usuwanie przestrzeni zostalo anulowane.`},misc:{types:{room:`Pokoj`,zone:`Strefa`}},onboarding:{title:`Kreator konfiguracji przestrzeni`,devices:`urzadzenia`,displays:`wyswietlacze`,selectSpace:`Wybierz przestrzen`,selectZones:`Wybierz strefy...`,deviceName:`Nazwa urzadzenia`,displayName:`Nazwa wyswietlacza`,assignedSpace:`Przypisana przestrzen`,spaceName:`Nazwa przestrzeni`,zones:`Strefy (opcjonalnie)`,advanced:`Zaawansowane`,basic:`Podstawowe`,steps:{spaces:{title:`Utworz przestrzenie`,description:`Przestrzenie pomagaja organizowac urzadzenia i wyswietlacze wedlug pokoi lub stref.`,alertTitle:`Przestrzenie reprezentuja pokoje lub strefy w Twoim domu`,alertDescription:`Zasugerowalismy kilka przestrzeni na podstawie nazw Twoich urzadzen.`,proposed:`Proponowane przestrzenie`,custom:`Niestandardowe przestrzenie`,existing:`Istniejace przestrzenie`,matchedExisting:`Uzywanie istniejacych przestrzeni`,usingExisting:`Uzywanie istniejacej`,matchedWith:`Zostanie uzyta: {name}`,addManual:`Dodaj niestandardowa przestrzen`,placeholder:`Wprowadz nazwe przestrzeni (np. Salon)`,noProposals:`Nie udalo sie wykryc przestrzeni z nazw urzadzen. Dodaj przestrzenie recznie ponizej.`,duplicateWarning:`Przestrzen podobna do "{name}" juz istnieje.`,convertedToMatch:`Ta przestrzen pasuje do istniejacej przestrzeni.`,multipleMatchedWith:`{count} wykrytych przestrzeni uzyje istniejacej przestrzeni '{name}'`,existingTag:`Istniejaca`},displays:{title:`Przypisz wyswietlacze`,description:`Przypisz kazdy wyswietlacz do przestrzeni.`,alertTitle:`Wybierz domyslna przestrzen dla kazdego wyswietlacza`,alertDescription:`To ustawia tylko poczatkowy widok.`,noDisplays:`Nie zarejestrowano jeszcze zadnych wyswietlaczy.`},devices:{title:`Przypisz urzadzenia`,description:`Przypisz urzadzenia do przestrzeni.`,alertTitle:`Polacz urzadzenia z pokojami`,alertDescription:`Niektore urzadzenia zostaly wstepnie wypelnione na podstawie ich nazw.`,noDevices:`Nie znaleziono urzadzen.`},summary:{title:`Podsumowanie`,description:`Przejrzyj konfiguracje przed zastosowaniem zmian.`,alertTitle:`Podsumowanie konfiguracji`,alertDescription:`Nadal mozesz wrocic i dostosowac cokolwiek przed zakonczeniem.`}},summary:{overview:`Podsumowanie`,totalSpaces:`Laczna liczba przestrzeni`,assignedDevices:`Przypisane urzadzenia`,unassignedDevices:`Nieprzypisane urzadzenia`,assignedDisplays:`Przypisane wyswietlacze`,unassignedDisplays:`Nieprzypisane wyswietlacze`,bySpace:`Przypisania wedlug przestrzeni`,unassignedDevicesTitle:`Nieprzypisane urzadzenia`,unassignedDisplaysTitle:`Nieprzypisane wyswietlacze`,noDevices:`Brak urzadzen`,clickToAssignDevices:`Kliknij, aby przypisac urzadzenia`,clickToAssignDisplays:`Kliknij, aby przypisac wyswietlacze`},messages:{spacesCreated:`Pomyslnie utworzono {count} przestrzeni`,completed:`Konfiguracja zakonczona! {devices} urzadzen, {displays} wyswietlaczy i {zones} przypisan stref.`}},labels:{rooms:`Pokoje`,zones:`Strefy`}},yr={menu:{title:`Priestory`},title:`Priestory`,description:`Spravujte svoje priestory (miestnosti a zóny)`,headings:{list:`Priestory`,spaces:`Priestory`,detail:`Detail priestoru`,add:`Pridať priestor`,edit:`Upraviť priestor`,removeSpace:`Odstrániť priestor`,bulkRemoveSpace:`Odstrániť priestory`,discard:`Zahodiť zmeny`,adjustFilters:`Filtrovať priestory`},edit:{sections:{general:{title:`General`},organization:{title:`Organization`,hint:`Assign this room to a zone (e.g. "Ground Floor", "Upstairs") to group related rooms together.`},devicesDisplays:{title:`Devices & Displays`,titleDevicesOnly:`Devices`,summary:`{devices} devices and {displays} displays are currently assigned to this space.`,summaryDevicesOnly:`{devices} devices are currently assigned to this space.`,manageDevices:`Manage devices`,manageDisplays:`Manage displays`},statusWidgets:{title:`Status widgets`,hint:`Configure widgets displayed in the space status area on the panel.`},smartOverrides:{title:`Smart overrides`,badge:`Advanced`,hint:`Optional settings to improve smart behavior and intent-based control.`,lightingRoles:`Lighting roles`,climateRoles:`Climate roles`,coversRoles:`Covers roles`,sensorRoles:`Sensor roles`,smartSuggestions:`Smart suggestions`}}},subHeadings:{list:`Organizujte zariadenia a displeje podľa miestností alebo zón`,adjustFilters:`Upraviť filtre zobrazenia`,add:`Pridať nový priestor`,detail:`Spravovať priestor: {space}`,onboarding:`Sprievodca nastavením pre priestory, zariadenia a displeje`},breadcrumbs:{spaces:{list:`priestory`,detail:`priestor: {space}`,edit:`upraviť priestor`,add:`pridať priestor`,onboarding:`sprievodca nastavením`}},meta:{spaces:{list:{title:`Zoznam priestorov`},edit:{title:`Upraviť priestor: {space}`},add:{title:`Pridať priestor`},detail:{title:`Priestor: {space}`},onboarding:{title:`Sprievodca nastavením priestorov`}}},table:{columns:{name:`Názov`,type:`Typ`,category:`Kategória`,description:`Popis`,order:`Poradie`,devices:`Zariadenia`,displays:`Displeje`,actions:`Akcie`},empty:`Neboli nájdené žiadne priestory. Vytvorte svoj prvý priestor.`},fields:{search:{placeholder:`Vyhľadať priestory...`},spaces:{id:{title:`Interný identifikátor`,placeholder:`ID priestoru`},name:{title:`Názov`,placeholder:`Zadajte názov priestoru (napr. Obývacia izba)`,validation:{required:`Názov je povinný`,maxLength:`Názov musí mať menej ako 100 znakov`}},description:{title:`Popis`,placeholder:`Voliteľný popis priestoru`},type:{title:`Typ`,options:{room:`Miestnosť`,zone:`Zóna`},validation:{required:`Typ je povinný`}},category:{title:`Kategória`,placeholder:`Vyberte kategóriu`,hint:`Výber kategórie automaticky navrhne ikonu a popis pre tento priestor. Dostupné kategórie závisia od toho, či sa jedná o miestnosť alebo zónu.`,validation:{requiredForZone:`Kategória je povinná pre zóny`},groups:{floors:`Poschodia`,outdoor:`Vonkajšie oblasti`,other:`Ostatné`},options:{living_room:`Obývacia izba`,bedroom:`Spálňa`,bathroom:`Kúpeľňa`,toilet:`Toaleta`,kitchen:`Kuchyňa`,dining_room:`Jedáleň`,office:`Kancelária`,entryway:`Vstupná hala`,garage:`Garáž`,hallway:`Chodba`,laundry:`Práčovňa`,utility_room:`Technická miestnosť`,storage:`Sklad`,closet:`Šatník`,pantry:`Špajza`,nursery:`Detská izba`,guest_room:`Hosťovská izba`,gym:`Posilňovňa`,media_room:`Mediálna miestnosť`,workshop:`Dielňa`,other:`Ostatné`,floor_ground:`Prízemie`,floor_first:`Prvé poschodie`,floor_second:`Druhé poschodie`,floor_basement:`Suterén`,floor_attic:`Podkrovie`,outdoor_front_yard:`Predný dvor`,outdoor_backyard:`Zadný dvor`,outdoor_driveway:`Príjazdová cesta`,outdoor_garden:`Záhrada`,outdoor_terrace:`Terasa`,outdoor_balcony:`Balkón`,outdoor_walkway:`Chodník`,security_perimeter:`Bezpečnostný obvod`,utility:`Technická`,zone_other:`Ostatné`}},icon:{title:`Ikona`,placeholder:`mdi:home (názov ikony Iconify)`},displayOrder:{title:`Poradie zobrazenia`,placeholder:`Poradie v zoznamoch`},parentZone:{title:`Nadradená zóna`,placeholder:`Vyberte nadradenú zónu (voliteľné)`,hint:`Môžete organizovať túto miestnosť priradením k zóne, ako napríklad 'Prízemie' alebo 'Poschodie'. To pomáha zoskupovať súvisiace miestnosti.`},lightingRoles:{title:`Lighting roles`,description:`Assign roles to lights to help the panel understand how each light is typically used (Work, Relax, Night)`,noLights:`No lights found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Sets first light as Main, others as Ambient`},climateRoles:{title:`Climate roles`,description:`Assign roles to climate devices to help the panel understand how each device controls temperature and air quality`,noDevices:`No climate devices found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns roles based on device type`},coversRoles:{title:`Covers roles`,description:`Assign roles to window coverings to help the panel understand how each cover is used (primary, blackout, sheer)`,noCovers:`No window coverings found in this space`,role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Sets first cover as Primary, others based on type`},sensorRoles:{title:`Sensor roles`,description:`Assign roles to sensor channels so the panel can group environment, safety, security, air quality, and energy readings.`,noSensors:`No sensors found in this space`,channel:{title:`Channel`},role:{title:`Role`,placeholder:`Select a role`},applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns roles based on sensor channel category`},suggestions:{title:`Smart suggestions`},suggestionsEnabled:{title:`Enable suggestions`,hint:`When enabled, the panel will show non-intrusive lighting suggestions based on time of day and current state.`},statusWidgets:{energy:{title:`Energy`,range:{title:`Range`,options:{today:`Today`,week:`Week`,month:`Month`}},showProduction:{title:`Show production`}}}}},lightingRoles:{main:`Main`,task:`Task`,ambient:`Ambient`,accent:`Accent`,night:`Night`,other:`Other`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{main:`Primary lighting for the space, typically overhead or central fixtures used for general illumination.`,task:`Focused lighting for specific activities like reading, cooking, or working.`,ambient:`Soft background lighting used to create atmosphere and comfort.`,accent:`Decorative lighting used to highlight features or create visual interest.`,night:`Low-level lighting for nighttime navigation and safety.`,other:`Lighting that doesn't fit into standard categories.`,hidden:`Hidden lights are excluded from the panel UI and intent-based control.`}},climateRoles:{heating_only:`Heating Only`,cooling_only:`Cooling Only`,auto:`Auto`,auxiliary:`Auxiliary`,sensor:`Sensor`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{heating_only:`Device is used only for heating in the climate domain.`,cooling_only:`Device is used only for cooling in the climate domain.`,auto:`Device can be used for both heating and cooling automatically.`,auxiliary:`Auxiliary climate devices like dehumidifiers, humidifiers, air purifiers, and fans.`,sensor:`Climate sensor providing readings (temperature, humidity, air quality, etc.) for the space.`,hidden:`Hidden devices are excluded from the climate domain UI and control.`}},sensorRoles:{environment:`Environment`,safety:`Safety`,security:`Security`,air_quality:`Air quality`,energy:`Energy`,other:`Other`,hidden:`Hidden`,descriptions:{environment:`Environmental sensors such as temperature, humidity, pressure, or light levels.`,safety:`Safety sensors like smoke, gas, leak, or carbon monoxide detectors.`,security:`Security and presence sensors like motion, occupancy, and contact sensors.`,air_quality:`Air quality sensors including CO2, VOC, particulate matter, and other pollutants.`,energy:`Energy monitoring sensors such as power or energy consumption.`,other:`Sensors that don't fit a specific category.`,hidden:`Hidden sensors are excluded from the UI.`},categories:{temperature:`Temperature`,humidity:`Humidity`,pressure:`Pressure`,illuminance:`Illuminance`,smoke:`Smoke`,gas:`Gas`,carbon_monoxide:`Carbon monoxide`,carbon_dioxide:`Carbon dioxide`,leak:`Leak`,motion:`Motion`,occupancy:`Occupancy`,contact:`Contact`,air_quality:`Air quality`,air_particulate:`Air particulate`,nitrogen_dioxide:`Nitrogen dioxide`,ozone:`Ozone`,sulphur_dioxide:`Sulphur dioxide`,volatile_organic_compounds:`Volatile organic compounds`,electrical_energy:`Energy`,electrical_generation:`Generation`,electrical_power:`Power`,battery:`Battery`}},coversRoles:{primary:`Primary`,blackout:`Blackout`,sheer:`Sheer`,outdoor:`Outdoor`,hidden:`Hidden`,unassigned:`Unassigned`,descriptions:{primary:`Main window covering for the space, typically used for general privacy and light control.`,blackout:`Light-blocking covers designed for complete darkness, ideal for bedrooms or media rooms.`,sheer:`Semi-transparent covers that provide privacy while allowing natural light to filter through.`,outdoor:`External shutters, awnings, or pergola covers for outdoor protection.`,hidden:`Hidden covers are excluded from the panel UI and intent-based control.`}},filters:{type:{title:`Typ`,all:`Všetky`}},texts:{loadingSpaces:`Načítavanie priestorov...`,loadingSpace:`Načítavanie priestoru...`,noSpaces:`Nemáte nakonfigurovaný žiadny priestor`,noFilteredSpaces:`Žiadne priestory nezodpovedajú vašim filtrom`,confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`},dialogs:{lightingRoles:{title:`Edit Lighting Roles`},climateRoles:{title:`Edit Climate Roles`},coversRoles:{title:`Edit Covers Roles`},sensorRoles:{title:`Edit Sensor Roles`},mediaActivities:{title:`Edit Media Activities`}},buttons:{add:{title:`Pridať`},done:{title:`Hotovo`},detail:{title:`Detail`},adjust:{title:`Filter`},resetFilters:{title:`Resetovať filtre`},reset:{title:`Resetovať`},yes:{title:`Áno`},no:{title:`Nie`},save:{title:`Uložiť`},cancel:{title:`Zrušiť`},close:{title:`Zavrieť`},discard:{title:`Zahodiť`},edit:{title:`Upraviť`},delete:{title:`Odstrániť`},previous:{title:`Predchádzajúci`},next:{title:`Ďalej`},finish:{title:`Dokončiť`},onboarding:{title:`Sprievodca nastavením`},viewAll:{title:`Zobraziť všetko`},back:{title:`Späť`}},detail:{title:`Space detail`,domains:{title:`Domény`,notConfigured:`Nenakonfigurované`,lighting:{title:`Osvetlenie`,description:`Nastavte, ako sa v tomto priestore používajú svetlá — hlavné, pracovné, ambientné, akcentové a nočné role osvetlenia.`},climate:{title:`Klíma`,description:`Priraďte role vykurovania, chladenia a senzorov ku klimatickým zariadeniam v tomto priestore.`},covers:{title:`Žalúzie`,description:`Nastavte role okenných krytín — primárne, zatemňovacie, záclonové a vonkajšie žalúzie.`},sensor:{title:`Senzory`,description:`Zoskupte senzorové kanály podľa účelu — prostredie, bezpečnosť, zabezpečenie, kvalita vzduchu a energia.`},media:{title:`Médiá`,description:`Definujte mediálne aktivity ako sledovanie, počúvanie a hranie hier so smerovaním koncových bodov zariadení.`}},lightingRoles:{title:`Lighting roles`,lightsAssigned:`Lights assigned`,noRolesAssigned:`No roles assigned yet`},climateRoles:{title:`Climate roles`,devicesAssigned:`Devices assigned`,noRolesAssigned:`No roles assigned yet`},coversRoles:{title:`Covers roles`,coversAssigned:`Covers assigned`,noRolesAssigned:`No roles assigned yet`},sensorRoles:{title:`Sensor roles`,sensorsAssigned:`Sensors assigned`,noRolesAssigned:`No roles assigned yet`},mediaActivities:{title:`Media Activities`,noActivities:`No activities configured yet`},info:{title:`Space information`,name:`Name`,description:`Description`,type:`Type`,icon:`Icon`,displayOrder:`Display order`},devices:{title:`Devices`,add:`Add device`,empty:`No devices assigned to this space`,loading:`Loading devices...`,remove:`Remove`,removeHeading:`Remove device from space`,reassign:`Reassign`,assign:`Assign`,selectDevice:`Select devices to add`,confirmRemove:`Remove device "{name}" from this space?`,selectRoom:`Select room for device`,noAvailable:`No devices available to add`,removed:`Device "{name}" was removed from this space.`,removeCanceled:`Device removal was canceled.`},parentZone:{title:`Floor`,none:`No floor assigned`,select:`Select floor`},displays:{title:`Displays`,add:`Add display`,empty:`No displays assigned to this space`,loading:`Loading displays...`,remove:`Remove`,removeHeading:`Remove display from space`,reassign:`Reassign`,assign:`Assign`,selectDisplay:`Select display to add`,confirmRemove:`Remove display "{name}" from this space?`,selectRoom:`Select the room for this display`,noAvailable:`No displays available to add`,removed:`Display "{name}" was removed from this space.`,removeCanceled:`Display removal was canceled.`},media:{activities:`Media Activities`},scenes:{title:`Scenes`,add:`Add scene`,empty:`No scenes assigned to this space`,loading:`Loading scenes...`,name:`Scene name`,category:`Category`,status:`Status`,enabled:`Enabled`,disabled:`Disabled`,remove:`Remove`,removeHeading:`Remove scene from space`,reassign:`Reassign`,reassigned:`Scene "{name}" was reassigned successfully.`,assign:`Assign`,selectScene:`Select scene to add`,selectSpace:`Select space for scene`,searchPlaceholder:`Search scenes...`,confirmRemove:`Remove scene "{name}" from this space?`,assignedSpace:`Assigned space`,noAvailable:`No scenes available to add`,noFilteredScenes:`No scenes match your search`,assigned:`Scene "{name}" was assigned to this space.`,removed:`Scene "{name}" was removed from this space.`,removeCanceled:`Scene removal was canceled.`}},media:{endpointTypes:{display:`Display`,audio_output:`Audio Output`,source:`Source`,remote_target:`Remote Target`},capabilities:{power:`Power`,input:`Input`,volume:`Volume`,playback:`Playback`,track:`Track`,remote:`Remote`,mute:`Mute`},activityLabels:{watch:`Watch`,listen:`Listen`,gaming:`Gaming`,background:`Background`,off:`Off`},activities:{loading:`Loading media configuration...`,description:`Assign display, audio, source, and remote devices to each media activity. Changes are saved automatically.`,applyDefaults:`Apply defaults`,applyDefaultsHint:`Auto-assigns endpoints based on device types and capabilities`,defaultsApplied:`Default bindings have been applied.`,defaultsFailed:`Failed to apply default bindings.`,selectPrompt:`Select an activity from the list to configure its bindings.`,selectEndpoint:`Select endpoint...`,save:`Save`,reset:`Reset`,saveError:`Failed to save binding`,savedSuccessfully:`Binding saved successfully.`,slots:{display:`Display`,audio:`Audio output`,source:`Source`,remote:`Remote target`},overrides:{displayInput:`Display input preset`,displayInputPlaceholder:`e.g. HDMI1, Apps`,audioInput:`Audio input preset`,audioInputPlaceholder:`e.g. HDMI1, ARC`,sourceInput:`Source input preset`,sourceInputPlaceholder:`e.g. HDMI1, Apps`,audioVolume:`Audio volume preset`},mediaInputSources:{hdmi1:`HDMI 1`,hdmi2:`HDMI 2`,hdmi3:`HDMI 3`,hdmi4:`HDMI 4`,hdmi5:`HDMI 5`,hdmi6:`HDMI 6`,arc:`ARC`,earc:`eARC`,tv:`TV`,cable:`Cable`,satellite:`Satellite`,antenna:`Antenna`,av1:`AV 1`,av2:`AV 2`,component:`Component`,vga:`VGA`,dvi:`DVI`,usb:`USB`,bluetooth:`Bluetooth`,wifi:`Wi-Fi`,airplay:`AirPlay`,cast:`Chromecast`,dlna:`DLNA`,miracast:`Miracast`,app_netflix:`Netflix`,app_youtube:`YouTube`,app_spotify:`Spotify`,app_prime_video:`Prime Video`,app_disney_plus:`Disney+`,app_hbo_max:`HBO Max`,app_apple_tv:`Apple TV`,app_plex:`Plex`,app_kodi:`Kodi`,other:`Other`},status:{configured:`Configured`,incomplete:`Incomplete`,unconfigured:`Not set`},run:`Run`,deactivate:`Deactivate`,refreshStatus:`Refresh status`,rerun:`Re-run`,copyDebugJson:`Copy debug JSON`,copiedToClipboard:`Debug JSON copied to clipboard.`,activateSuccess:`Activity activated successfully.`,activateFailed:`Failed to activate activity.`,deactivateSuccess:`Activity deactivated.`,deactivateFailed:`Failed to deactivate activity.`,fetchFailed:`Failed to refresh activity status.`,preview:`Preview`,previewFailed:`Failed to preview activity.`,previewDialog:{title:`Execution Plan Preview`,resolvedDevices:`Resolved devices`,executionPlan:`Execution plan`,step:`#`,action:`Action`,device:`Device`,critical:`Critical`,criticalYes:`Critical`,criticalNo:`Optional`,warnings:`Warnings & skipped steps`,noSteps:`No execution steps in plan.`,close:`Close`},activePanel:{title:`Active State`,currentActivity:`Current activity`,none:`None`,state:`State`,activatedAt:`Activated at`,updatedAt:`Updated at`,resolvedDevices:`Resolved devices`,display:`Display`,audio:`Audio`,source:`Source`,remote:`Remote`},failures:{title:`Failures`,total:`Total steps`,succeeded:`Succeeded`,failed:`Failed`,stepIndex:`Step`,device:`Device`,property:`Property`,reason:`Reason`},activationState:{activating:`Activating`,active:`Active`,failed:`Failed`,deactivated:`Deactivated`}}},messages:{notFound:`Priestor nebol nájdený`,loadError:`Nepodarilo sa načítať priestory`,notLoaded:`Nepodarilo sa načítať priestor. Skúste to prosím neskôr.`,confirmRemove:`Naozaj chcete odstrániť priestor "{name}"? Túto akciu nie je možné vrátiť.`,confirmDelete:`Naozaj chcete odstrániť tento priestor?`,created:`Nový priestor bol úspešne pridaný.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť priestor.`,edited:`Zmeny uložené! Priestor: {space} bol aktualizovaný.`,notEdited:`Niečo sa pokazilo. Aktualizácia priestoru nebola úspešná.`,removed:`Priestor: {space} bol úspešne odstránený.`,removeCanceled:`Odstránenie priestoru: {space} bolo zrušené.`,deletedWhileEditing:`Tento priestor bol odstránený a už nie je dostupný.`,createError:`Nepodarilo sa vytvoriť priestor. Skúste to prosím znova.`,saveError:`Nepodarilo sa uložiť zmeny. Skúste to prosím znova.`,confirmBulkRemove:`Naozaj chcete odstrániť {count} priestorov? Túto akciu nie je možné vrátiť.`,bulkRemoved:`{count} priestorov bolo úspešne odstránených.`,bulkRemoveFailed:`Nepodarilo sa odstrániť {count} priestorov.`,bulkRemoveCanceled:`Hromadné odstránenie priestorov bolo zrušené.`},misc:{types:{room:`Miestnosť`,zone:`Zóna`}},onboarding:{title:`Spaces setup wizard`,devices:`devices`,displays:`displays`,selectSpace:`Select space`,selectZones:`Select zones...`,deviceName:`Device name`,displayName:`Display name`,assignedSpace:`Assigned space`,spaceName:`Space name`,zones:`Zones (optional)`,advanced:`Advanced`,basic:`Basic`,steps:{spaces:{title:`Create spaces`,description:`Spaces help you organize your devices and displays by rooms or zones (e.g., Living Room, Kitchen, Bedroom). We've automatically detected some spaces from your device names - review and select the ones you want to create, or add your own custom spaces below.`,alertTitle:`Spaces represent rooms or areas in your home`,alertDescription:`We've suggested some spaces based on your device names. You can adjust them now or change everything later.`,proposed:`Proposed spaces`,custom:`Custom spaces`,existing:`Existing spaces`,matchedExisting:`Using existing spaces`,usingExisting:`Using existing`,matchedWith:`Will use: {name}`,addManual:`Add custom space`,placeholder:`Enter space name (e.g., Living Room)`,noProposals:`No spaces could be detected from your device names. Add spaces manually below.`,duplicateWarning:`A space similar to "{name}" already exists.`,convertedToMatch:`This space matches an existing space and has been moved to the 'Using existing spaces' section.`,multipleMatchedWith:`{count} detected spaces will use existing space '{name}'`,existingTag:`Existing`},displays:{title:`Assign displays`,description:`Assign each display to a space. This determines which space the display will show by default.`,alertTitle:`Choose a default space for each display`,alertDescription:`This only sets the initial view—you can switch spaces anytime from the display itself.`,noDisplays:`No displays registered yet.`},devices:{title:`Assign devices`,description:`Assign devices to spaces. Devices will be pre-assigned based on their names if detected.`,alertTitle:`Connect your devices to rooms`,alertDescription:`Some devices are pre-filled based on their names. Feel free to adjust—you can always change assignments later.`,noDevices:`No devices found.`},summary:{title:`Summary`,description:`Review your configuration before applying changes.`,alertTitle:`Summary of your setup`,alertDescription:`You can still go back and adjust anything before finishing.`}},summary:{overview:`Summary`,totalSpaces:`Total spaces`,assignedDevices:`Assigned devices`,unassignedDevices:`Unassigned devices`,assignedDisplays:`Assigned displays`,unassignedDisplays:`Unassigned displays`,bySpace:`Assignments by space`,unassignedDevicesTitle:`Unassigned devices`,unassignedDisplaysTitle:`Unassigned displays`,noDevices:`No devices`,clickToAssignDevices:`Click to assign devices`,clickToAssignDisplays:`Click to assign displays`},messages:{spacesCreated:`{count} space(s) created successfully`,completed:`Onboarding complete! {devices} device(s), {displays} display(s), and {zones} zone assignment(s).`}},labels:{rooms:`Miestnosti`,zones:`Zóny`}},br={"cs-CZ":mr,"de-DE":hr,"en-US":gr,"es-ES":_r,"pl-PL":vr,"sk-SK":yr},xr=[{path:`spaces`,name:Se.SPACES,component:()=>L(()=>import(`./view-spaces-6X_ollTy.js`),__vite__mapDeps([40,1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,12,18,19,20,21,22,23,24,28])),meta:{guards:{authenticated:!0},title:()=>$e.global.t(`spacesModule.menu.title`),icon:`mdi:home-group`,menu:9e3},children:[{path:`add`,name:Se.SPACES_ADD,component:()=>L(()=>import(`./view-space-add-CpMFTOLa.js`),__vite__mapDeps([41,1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,12,18,19,20,21,22,23,28])),meta:{guards:{authenticated:!0},title:`Add space`}},{path:`:id`,name:Se.SPACES_EDIT,component:()=>L(()=>import(`./view-space-edit-DFsIcG7t.js`),__vite__mapDeps([42,1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,12,18,19,20,21,22,23,28])),props:!0,meta:{guards:{authenticated:!0},title:`Edit space`}},{path:`onboarding`,name:Se.SPACES_ONBOARDING,component:()=>L(()=>import(`./view-spaces-onboarding-B_Q4z0aj.js`),__vite__mapDeps([43,1,2,3,4,5,16,9,14,17,44,22,28])),meta:{guards:{authenticated:!0},title:`Spaces Onboarding`}}]},{path:`space/:id`,name:Se.SPACE,component:()=>L(()=>import(`./view-space-CfoK-7op.js`),__vite__mapDeps([45,1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,12,18,19,20,21,22,23,24,28,46])),props:!0,meta:{guards:{authenticated:!0}},children:[{path:`edit`,name:Se.SPACE_EDIT,component:()=>L(()=>import(`./view-space-edit-DFsIcG7t.js`),__vite__mapDeps([42,1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,12,18,19,20,21,22,23,28])),props:!0,meta:{guards:{authenticated:!0},title:`Edit space`}}]}],Sr={install:(e,t)=>{let n=De(e),r=be(e),i=ue(e),a=ve(e);for(let[e,n]of Object.entries(br)){let r=(0,Z.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{spacesModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=mt(t.store);e.provide(Ce,o),n.addStore(Ce,o);let s={climate:w(0),lighting:w(0),covers:w(0),sensor:w(0),climateState:w(0),lightingState:w(0),coversState:w(0),sensorState:w(0)};e.provide(Me,s),a.addModule(Symbol(`FB-Module-Spaces`),{type:_e,name:`Spaces`,description:`Manage spaces (rooms/zones) and organize devices and displays.`,elements:[],modules:[],isCore:!0}),t.router.getRoutes().find(e=>e.name===y.ROOT)&&xr.forEach(e=>{t.router.addRoute(y.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`SpacesModule.`)&&!(e.payload===null||typeof e.payload!=`object`)){if(e.event===A.LIGHTING_STATE_CHANGED&&`space_id`in e.payload){s.lightingState.value++;return}if(e.event===A.CLIMATE_STATE_CHANGED&&`space_id`in e.payload){s.climateState.value++;return}if(e.event===A.COVERS_STATE_CHANGED&&`space_id`in e.payload){s.coversState.value++;return}if(e.event===A.SENSOR_STATE_CHANGED&&`space_id`in e.payload){s.sensorState.value++;return}if(!(!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case A.SPACE_CREATED:case A.SPACE_UPDATED:o.onEvent({id:e.payload.id,data:e.payload});break;case A.SPACE_DELETED:o.unset({id:e.payload.id});break;case A.CLIMATE_TARGET_CREATED:case A.CLIMATE_TARGET_UPDATED:case A.CLIMATE_TARGET_DELETED:s.climate.value++;break;case A.LIGHT_TARGET_CREATED:case A.LIGHT_TARGET_UPDATED:case A.LIGHT_TARGET_DELETED:s.lighting.value++;break;case A.COVERS_TARGET_CREATED:case A.COVERS_TARGET_UPDATED:case A.COVERS_TARGET_DELETED:s.covers.value++;break;case A.SENSOR_TARGET_CREATED:case A.SENSOR_TARGET_UPDATED:case A.SENSOR_TARGET_DELETED:s.sensor.value++;break;case A.SUGGESTION_CREATED:break;default:i.warn(`Unhandled spaces module event:`,e.event)}}})}};F({reqPerMin:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))})}),F({clientsNow:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))})}),F({cpuLoad1m:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:F({value:N().nullable(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:F({value:N().nullable(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))})}),F({registeredPages:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))})}),F({registeredDevices:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:F({value:N(),lastUpdated:k([R().datetime({offset:!0}),O()]).transform(e=>e instanceof Date?e:new Date(e))})});var Cr=`stats`,wr=`stats-module`,Tr=`StatsModule.`,Er=function(e){return e.STATS_INFO=`StatsModule.Stats.Info`,e}({}),Dr={STATS:`stats_module-module`},Or=300*1e3,kr=Symbol(`FB-Module-Stats-Stats`),Ar=class extends Error{exception;constructor(e,t=null){super(e),this.name=`StatsException`,this.exception=t}},jr=class extends Ar{code;constructor(e,t=null,n=null){super(e,n),this.name=`StatsApiException`,this.code=t}},Mr=class extends Ar{constructor(e,t=null){super(e,t),this.name=`StatsValidationException`}},Nr={class:`flex flex-row items-center justify-between`},Pr={key:0},Fr={key:1},Ir={key:2,class:`max-h-[350px] overflow-auto bg-[var(--el-fill-color-light)]`},Lr={class:`truncate`},Rr={key:0,class:`text-gray-500`},zr={class:`ml-1`},Br=s({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,s=i,{t:c}=h(),l=fe(a,`filters`,s),p=[V.silent,V.fatal,V.error,V.warn,V.log,V.info,V.success,V.fail,V.debug],m=e=>xe(new Date(e)),y=e=>new Date(e).toISOString(),x=e=>[V.fatal,V.error,V.fail].includes(e)?{type:`danger`,effect:`light`}:[V.warn].includes(e)?{type:`warning`,effect:`light`}:[V.success,V.info,V.log].includes(e)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`};return(i,h)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:o(()=>[v(`div`,Nr,[f(b(u(c)(`statsModule.headings.logs`))+` `,1),v(`div`,null,[E(u(ot),{modelValue:u(l).levels,"onUpdate:modelValue":h[0]||=e=>u(l).levels=e,size:`small`,class:`mr-1 w-[180px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``},{default:o(()=>[(t(),T(te,null,n(p,e=>E(u(ut),{key:e,label:u(c)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),E(u(_),{size:`small`,class:`px-2! ml-1!`,onClick:h[1]||=e=>s(`refresh`)},{icon:o(()=>[E(u(C),{icon:`mdi:refresh`})]),_:1}),E(u(_),{size:`small`,class:`px-2! ml-1!`,onClick:h[2]||=e=>s(`detail`)},{icon:o(()=>[E(u(C),{icon:`mdi:console`})]),_:1})])])]),default:o(()=>[e((t(),T(`div`,null,[r.filtersActive&&r.systemLogs.length===0&&!a.loading?(t(),T(`div`,Pr,[E(u(ne),{class:`h-full w-full`},{icon:o(()=>[E(u(ie),{size:80},{primary:o(()=>[E(u(C),{icon:`mdi:console`})]),secondary:o(()=>[E(u(C),{icon:`mdi:filter-multiple`})]),_:1})]),title:o(()=>[E(u(me),{class:`block`},{default:o(()=>[f(b(u(c)(`statsModule.texts.noFilteredLogs`)),1)]),_:1}),E(u(_),{type:`primary`,plain:``,class:`mt-4`,onClick:h[3]||=e=>s(`reset`)},{icon:o(()=>[E(u(C),{icon:`mdi:filter-off`})]),default:o(()=>[f(` `+b(u(c)(`statsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):r.systemLogs.length===0&&!a.loading?(t(),T(`div`,Fr,[E(u(ne),{class:`h-full w-full`},{icon:o(()=>[E(u(ie),{size:80},{primary:o(()=>[E(u(C),{icon:`mdi:console`})]),secondary:o(()=>[E(u(C),{icon:`mdi:information`})]),_:1})]),title:o(()=>[f(b(u(c)(`statsModule.texts.noLogs`)),1)]),_:1})])):(t(),T(`div`,Ir,[(t(!0),T(te,null,n(r.systemLogs,(e,n)=>(t(),T(`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`},[E(u(oe),{content:y(e.ts),placement:`top-start`},{default:o(()=>[f(b(m(e.ts)),1)]),_:2},1032,[`content`]),E(u(Te),ee({ref_for:!0},x(e.type),{size:`small`}),{default:o(()=>[f(b(e.type),1)]),_:2},1040),v(`div`,Lr,[e.tag?(t(),T(`span`,Rr,` [`+b(e.tag)+`] `,1)):d(``,!0),v(`span`,zr,b(e.message),1)])]))),128))]))])),[[u(ke),r.loading]])]),_:1}))}}),Vr={class:`grid grid-cols-3 gap-2`},Hr={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},Ur={class:`font-bold text-lg mt-1`},Wr={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},Gr={class:`font-bold text-lg mt-1`},Kr={class:`color-[var(--el-text-color-secondary)] flex flex-row items-center`},qr={class:`font-bold text-lg mt-1 flex flex-row items-center`},Jr=s({name:`ApplicationOverview`,__name:`application-overview`,props:{apiModuleSection:{},websocketModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let{t:n}=h(),{connected:r}=tt(),s=w(`0.8.0-alpha.0`);return(c,l)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(n)(`statsModule.headings.applicationOverview`)),1)]),default:o(()=>[v(`div`,Vr,[v(`div`,null,[v(`div`,Hr,b(u(n)(`statsModule.fields.applicationOverview.version.title`)),1),v(`div`,Ur,b(s.value),1)]),v(`div`,null,[v(`div`,Wr,[E(u(oe),{content:u(n)(`statsModule.fields.applicationOverview.apip95.tooltip`),placement:`top-start`},{default:o(()=>[E(u(i),{class:`mr-2`,size:14},{default:o(()=>[E(u(C),{icon:`mdi:info-circle-outline`})]),_:1})]),_:1},8,[`content`]),f(` `+b(u(n)(`statsModule.fields.applicationOverview.apip95.title`)),1)]),v(`div`,Gr,b(e.apiModuleSection?.p95Ms5m.value??0)+` ms`,1)]),v(`div`,null,[v(`div`,Kr,b(u(n)(`statsModule.fields.applicationOverview.webSocket.title`)),1),v(`div`,qr,[v(`span`,{class:a({"color-[var(--el-color-success)]":u(r),"color-[var(--el-color-warning)]":!u(r)})},b(u(r)?u(n)(`statsModule.fields.applicationOverview.webSocket.state.connected`):u(n)(`statsModule.fields.applicationOverview.webSocket.state.disconnected`)),3)])])])]),_:1}))}}),Yr={class:`flex flex-row flex-wrap gap-2`},Xr=s({name:`QuickLinks`,__name:`quick-links`,setup(e){let n=p(),{t:r}=h(),i=()=>{n.push({name:Se.SPACES})},a=()=>{n.push({name:pt.PAGES})},s=()=>{n.push({name:q.DEVICES})},c=()=>{n.push({name:ce.CONFIG})},l=()=>{window.open(`https://smart-panel.fastybird.com/docs`,`_blank`,`noopener,noreferrer`)};return(e,n)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(r)(`statsModule.headings.quickLinks`)),1)]),default:o(()=>[v(`div`,Yr,[E(u(_),{class:`flex-1 min-w-[120px] ml-0!`,onClick:i},{icon:o(()=>[E(u(C),{icon:`mdi:home-group`})]),default:o(()=>[f(` `+b(u(r)(`statsModule.buttons.spaces.title`)),1)]),_:1}),E(u(_),{class:`flex-1 min-w-[120px] ml-0!`,onClick:a},{icon:o(()=>[E(u(C),{icon:`mdi:view-dashboard`})]),default:o(()=>[f(` `+b(u(r)(`statsModule.buttons.pages.title`)),1)]),_:1}),E(u(_),{class:`flex-1 min-w-[120px] ml-0!`,onClick:s},{icon:o(()=>[E(u(C),{icon:`mdi:devices`})]),default:o(()=>[f(` `+b(u(r)(`statsModule.buttons.devices.title`)),1)]),_:1}),E(u(_),{class:`flex-1 min-w-[120px] ml-0!`,onClick:c},{icon:o(()=>[E(u(C),{icon:`mdi:cog`})]),default:o(()=>[f(` `+b(u(r)(`statsModule.buttons.config.title`)),1)]),_:1}),E(u(_),{class:`flex-1 min-w-[120px] ml-0!`,onClick:l},{icon:o(()=>[E(u(C),{icon:`mdi:book-open-page-variant`})]),default:o(()=>[f(` `+b(u(r)(`statsModule.buttons.docs.title`)),1)]),_:1})])]),_:1}))}}),Zr={class:`flex flex-col gap-2`},Qr={class:`font-bold`},$r={class:`font-mono text-xs`},ei={class:`block overflow-hidden text-ellipsis whitespace-nowrap pr-4`},ti=s({name:`SystemInformation`,__name:`system-information`,props:{systemInfo:{},configApp:{},loading:{type:Boolean,default:!1}},setup(n){let r=n,{t:i}=h(),{success:a}=Ne(),s=()=>{navigator.clipboard.writeText(r.configApp?.path||``),a(`Config path copied to clipboard!`)};return(r,a)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`,"body-class":`p-0!`},{header:o(()=>[f(b(u(i)(`statsModule.headings.systemInformation`)),1)]),default:o(()=>[e((t(),g(u(Qe),{column:1,size:`small`,border:``},{default:o(()=>[E(u(Re),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.timezone.title`)),1)]),default:o(()=>[f(` `+b(n.systemInfo?.os.timezone),1)]),_:1}),E(u(Re),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.operatingSystem.title`)),1)]),default:o(()=>[f(` `+b(n.systemInfo?.os.distro)+` `+b(n.systemInfo?.os.platform)+` `+b(n.systemInfo?.os.release),1)]),_:1}),E(u(Re),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.hostname.title`)),1)]),default:o(()=>[f(` `+b(n.systemInfo?.defaultNetwork.hostname),1)]),_:1}),E(u(Re),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.ipv4.title`))+` (`+b(n.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:o(()=>[f(` `+b(n.systemInfo?.defaultNetwork.ip4),1)]),_:1}),E(u(Re),{"label-width":150,"class-name":`border-l-none! border-t-none!`,"label-class-name":`border-l-none! border-t-none!`},{label:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.ipv6.title`))+` (`+b(n.systemInfo?.defaultNetwork.interface)+`)`,1)]),default:o(()=>[f(` `+b(n.systemInfo?.defaultNetwork.ip6),1)]),_:1}),E(u(Re),{"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:o(()=>[f(b(u(i)(`statsModule.fields.systemInformation.configPath.title`)),1)]),default:o(()=>[E(u(oe),{placement:`top-start`},{content:o(()=>[v(`div`,Zr,[v(`div`,Qr,b(u(i)(`statsModule.fields.systemInformation.configPath.tooltip`)),1),v(`span`,$r,b(n.configApp?.path),1),E(u(_),{size:`small`,type:`primary`,onClick:re(s,[`stop`])},{default:o(()=>[f(b(u(i)(`statsModule.buttons.copy.title`)),1)]),_:1})])]),default:o(()=>[v(`span`,ei,b(n.configApp?.path),1)]),_:1})]),_:1})]),_:1})),[[u(ke),n.loading]])]),_:1}))}}),ni={class:`flex flex-col gap-2`},ri={class:`font-bold text-2xl`},ii={class:`color-[var(--el-text-color-secondary)]`},ai=s({name:`StatsCpu`,__name:`stats-cpu`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=x(()=>{let e=n.systemModuleSection?.cpuLoad1m.lastUpdated?n.systemModuleSection?.cpuLoad1m.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0}),s=x(()=>Number(n.systemModuleSection?.cpuLoad1m.value??0));return(n,c)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(r)(`statsModule.headings.cpu`)),1)]),default:o(()=>[v(`div`,ni,[v(`div`,ri,[e.systemModuleSection?.cpuLoad1m.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.systemModuleSection?.cpuLoad1m.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:18},{default:o(()=>[a.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),f(` `+b(u(Ge)(e.systemModuleSection?.cpuLoad1m.value)),1)]),v(`div`,ii,b(u(r)(`statsModule.fields.cpu.temperature.title`,{temperature:e.systemInfo?.temperature.cpu??u(r)(`application.value.notAvailable`),unit:`°C`})),1),E(u(je),{percentage:s.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}))}}),oi={class:`flex flex-row items-center`},si={class:`color-[var(--el-text-color-secondary)]`},ci={class:`text-3xl mt-1 flex flex-row items-center`},li=s({name:`StatsDashboard`,__name:`stats-dashboard`,props:{dashboardModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=x(()=>{let e=n.dashboardModuleSection?.registeredPages.lastUpdated?n.dashboardModuleSection?.registeredPages.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0});return(n,s)=>(t(),T(te,null,[v(`div`,oi,[e.dashboardModuleSection?.registeredPages.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.dashboardModuleSection?.registeredPages.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:12,class:`mr-1`},{default:o(()=>[a.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),v(`span`,si,b(u(r)(`statsModule.headings.dashboard`)),1)]),v(`div`,ci,b(e.dashboardModuleSection?.registeredPages.value??0),1)],64))}}),ui={class:`flex flex-row items-center`},di={class:`color-[var(--el-text-color-secondary)]`},fi={class:`text-3xl mt-1 flex flex-row items-center`},pi=s({name:`StatsDevices`,__name:`stats-devices`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=x(()=>{let e=n.devicesModuleSection?.onlineNow.lastUpdated?n.devicesModuleSection?.onlineNow.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0});return(n,s)=>(t(),T(te,null,[v(`div`,ui,[e.devicesModuleSection?.onlineNow.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.devicesModuleSection?.onlineNow.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:12,class:`mr-1`},{default:o(()=>[a.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),v(`span`,di,b(u(r)(`statsModule.headings.devices`)),1)]),v(`div`,fi,b(u(Ye)(e.devicesModuleSection?.onlineNow.value??0,{maximumFractionDigits:0})),1)],64))}}),mi={class:`flex flex-row items-center`},hi={class:`color-[var(--el-text-color-secondary)]`},gi={class:`text-3xl mt-1 flex flex-row items-center`},_i=s({name:`StatsDevicesCommunication`,__name:`stats-devices-communication`,props:{devicesModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=x(()=>{let e=n.devicesModuleSection?.updatesToday.lastUpdated?n.devicesModuleSection?.updatesToday.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0});return(n,s)=>(t(),T(te,null,[v(`div`,mi,[e.devicesModuleSection?.updatesToday.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.devicesModuleSection?.updatesToday.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:12,class:`mr-1`},{default:o(()=>[a.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),v(`span`,hi,b(u(r)(`statsModule.headings.devicesCommunication`)),1)]),v(`div`,gi,b(u(Ye)(e.devicesModuleSection?.updatesToday.value??0,{maximumFractionDigits:0})),1)],64))}}),vi={class:`flex flex-col gap-2`},yi={class:`font-bold text-2xl`},bi={class:`color-[var(--el-text-color-secondary)]`},xi=s({name:`StatsMemory`,__name:`stats-memory`,props:{systemModuleSection:{},systemInfo:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=x(()=>{let e=n.systemModuleSection?.memUsedPct.lastUpdated?n.systemModuleSection?.memUsedPct.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0}),s=x(()=>Number(n.systemModuleSection?.memUsedPct.value??0));return(n,c)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(r)(`statsModule.headings.memory`)),1)]),default:o(()=>[v(`div`,vi,[v(`div`,yi,[e.systemModuleSection?.memUsedPct.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.systemModuleSection?.memUsedPct.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:18},{default:o(()=>[a.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),f(` `+b(u(Ye)((e.systemInfo?.memory.used??0)/1024/1024,{maximumFractionDigits:0}))+` MB `,1)]),v(`div`,bi,b(u(r)(`statsModule.fields.memory.total.title`,{total:u(Ye)((e.systemInfo?.memory.total??0)/1024/1024,{maximumFractionDigits:0}),unit:`MB`})),1),E(u(je),{percentage:s.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}))}}),Si={class:`flex flex-row items-center`},Ci={class:`color-[var(--el-text-color-secondary)]`},wi={class:`text-3xl mt-1 flex flex-row items-center`},Ti=s({name:`StatsSpaces`,__name:`stats-spaces`,props:{loading:{type:Boolean,default:!1}},setup(e){let{t:n}=h(),{spaces:i,fetchSpaces:a}=ht(),o=x(()=>i.value.filter(e=>!e.draft)),s=x(()=>o.value.length);return r(()=>{a()}),(e,r)=>(t(),T(te,null,[v(`div`,Si,[v(`span`,Ci,b(u(n)(`statsModule.headings.spaces`)),1)]),v(`div`,wi,b(s.value),1)],64))}}),Ei={class:`flex flex-col gap-2`},Di={class:`font-bold text-2xl`},Oi={class:`color-[var(--el-text-color-secondary)]`},ki=s({name:`StatsUptime`,__name:`stats-uptime`,props:{systemModuleSection:{},loading:{type:Boolean,default:!1}},setup(e){let n=e,{t:r}=h(),a=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}`},s=x(()=>{let e=n.systemModuleSection?.systemUptimeSec.lastUpdated?n.systemModuleSection?.systemUptimeSec.lastUpdated.getTime():0;return e?Date.now()-e>Or:!0});return(n,c)=>(t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(r)(`statsModule.headings.uptime`)),1)]),default:o(()=>[v(`div`,Ei,[v(`div`,Di,[e.systemModuleSection?.systemUptimeSec.lastUpdated?(t(),g(u(oe),{key:0,content:u(r)(`statsModule.texts.updated`,{time:u(Fe)(e.systemModuleSection?.systemUptimeSec.lastUpdated)}),placement:`top-start`},{default:o(()=>[E(u(i),{size:18},{default:o(()=>[s.value?(t(),g(u(C),{key:0,icon:`mdi:warning`})):(t(),g(u(C),{key:1,icon:`mdi:info-circle-outline`}))]),_:1})]),_:1},8,[`content`])):d(``,!0),f(` `+b(a(e.systemModuleSection?.systemUptimeSec.value)),1)]),v(`div`,Oi,b(u(r)(`statsModule.fields.uptime.process.title`,{uptime:a(e.systemModuleSection?.processUptimeSec.value)})),1)])]),_:1}))}}),Ai=()=>{let e=De().getStore(kr),{data:t,semaphore:n}=Le(e);return{stats:x(()=>t.value),isLoading:x(()=>t.value===null?n.value.getting:!1),fetchStats:async()=>{await e.get()}}},ji={class:`flex flex-col items-center gap-3`},Mi={class:`font-bold text-2xl`},Ni={class:`flex flex-row items-start gap-1`},Pi={class:`font-bold text-4xl`},Fi={class:`text-lg text-gray-400`},Ii=s({name:`WeatherDay`,__name:`weather-day`,setup(n){let{t:a}=h(),{weatherDay:s,fetchWeatherDay:c,isLoading:l}=Rt(),{configModule:d,fetchConfigModule:p}=Oe({type:Ot}),m=x(()=>s.value?.temperature||null),_=x(()=>d.value?.unit===`fahrenheit`?`°F`:`°C`),y=x(()=>s.value===null?`wi:na`:Kt(s.value.weather.code,s.value.sunrise,s.value.sunset)),ee=x(()=>{if(s.value===null)return a(`weatherModule.conditions.unknown`);switch(s.value.weather.code){case 200:return a(`weatherModule.conditions.thunderstormWithLightRain`);case 201:return a(`weatherModule.conditions.thunderstormWithRain`);case 202:return a(`weatherModule.conditions.thunderstormWithHeavyRain`);case 210:return a(`weatherModule.conditions.lightThunderstorm`);case 211:return a(`weatherModule.conditions.thunderstorm`);case 212:return a(`weatherModule.conditions.heavyThunderstorm`);case 221:return a(`weatherModule.conditions.raggedThunderstorm`);case 230:return a(`weatherModule.conditions.thunderstormWithLightDrizzle`);case 231:return a(`weatherModule.conditions.thunderstormWithDrizzle`);case 232:return a(`weatherModule.conditions.thunderstormWithHeavyDrizzle`);case 300:return a(`weatherModule.conditions.lightIntensityDrizzle`);case 301:return a(`weatherModule.conditions.drizzle`);case 302:return a(`weatherModule.conditions.heavyIntensityDrizzle`);case 310:return a(`weatherModule.conditions.lightIntensityDrizzleRain`);case 311:return a(`weatherModule.conditions.drizzleRain`);case 312:return a(`weatherModule.conditions.heavyIntensityDrizzleRain`);case 313:return a(`weatherModule.conditions.showerRainAndDrizzle`);case 314:return a(`weatherModule.conditions.heavyShowerRainAndDrizzle`);case 321:return a(`weatherModule.conditions.showerDrizzle`);case 500:return a(`weatherModule.conditions.lightRain`);case 501:return a(`weatherModule.conditions.moderateRain`);case 502:return a(`weatherModule.conditions.heavyIntensityRain`);case 503:return a(`weatherModule.conditions.veryHeavyRain`);case 504:return a(`weatherModule.conditions.extremeRain`);case 511:return a(`weatherModule.conditions.freezingRain`);case 520:return a(`weatherModule.conditions.lightIntensityShowerRain`);case 521:return a(`weatherModule.conditions.showerRain`);case 522:return a(`weatherModule.conditions.heavyIntensityShowerRain`);case 531:return a(`weatherModule.conditions.raggedShowerRain`);case 600:return a(`weatherModule.conditions.lightSnow`);case 601:return a(`weatherModule.conditions.snow`);case 602:return a(`weatherModule.conditions.heavySnow`);case 611:return a(`weatherModule.conditions.sleet`);case 612:return a(`weatherModule.conditions.lightShowerSleet`);case 613:return a(`weatherModule.conditions.showerSleet`);case 615:return a(`weatherModule.conditions.lightRainAndSnow`);case 616:return a(`weatherModule.conditions.rainAndSnow`);case 620:return a(`weatherModule.conditions.lightShowerSnow`);case 621:return a(`weatherModule.conditions.showerSnow`);case 622:return a(`weatherModule.conditions.heavyShowerSnow`);case 701:return a(`weatherModule.conditions.mist`);case 711:return a(`weatherModule.conditions.smoke`);case 721:return a(`weatherModule.conditions.haze`);case 731:return a(`weatherModule.conditions.dust`);case 741:return a(`weatherModule.conditions.fog`);case 751:return a(`weatherModule.conditions.sand`);case 761:return a(`weatherModule.conditions.dust`);case 762:return a(`weatherModule.conditions.volcanicAsh`);case 771:return a(`weatherModule.conditions.squalls`);case 781:return a(`weatherModule.conditions.tornado`);case 800:return a(`weatherModule.conditions.clearSky`);case 801:return a(`weatherModule.conditions.fewClouds`);case 802:return a(`weatherModule.conditions.scatteredClouds`);case 803:return a(`weatherModule.conditions.brokenClouds`);case 804:return a(`weatherModule.conditions.overcastClouds`);default:return a(`weatherModule.conditions.unknown`)}});return r(async()=>{p().catch(e=>{throw new Et(`Something went wrong`,e)}),c().catch(e=>{throw new Et(`Something went wrong`,e)})}),(n,r)=>e((t(),g(u(rt),{shadow:`never`,"header-class":`px-3! py-3! font-bold`},{header:o(()=>[f(b(u(a)(`weatherModule.headings.weather`)),1)]),default:o(()=>[v(`div`,ji,[E(u(i),{class:`mr-2`,size:80},{default:o(()=>[E(u(C),{icon:y.value},null,8,[`icon`])]),_:1}),v(`span`,Mi,b(ee.value),1),v(`span`,Ni,[v(`span`,Pi,b(m.value===null?`-`:u(Ye)(m.value,{maximumFractionDigits:1})),1),v(`span`,Fi,b(_.value),1)])])]),_:1})),[[u(ke),u(l)]])}}),Li=s({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:Ee.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:i}){let a=e,s=i,{t:c}=h(),{formEl:f,model:p,formChanged:_,submit:v,formResult:y}=nt({config:a.config,messages:{success:c(`weatherModule.messages.config.edited`),error:c(`weatherModule.messages.config.notEdited`)}}),{locations:b,areLoading:ee,fetchLocations:ne}=Vt(),x=m({});return r(()=>{ee.value||ne().catch(e=>{throw new Et(`Failed to fetch locations`,e)})}),l(()=>y.value,async e=>{s(`update:remote-form-result`,e)}),l(()=>a.remoteFormSubmit,async e=>{e&&(s(`update:remote-form-submit`,!1),v().catch(()=>{}))}),l(()=>a.remoteFormReset,e=>{if(s(`update:remote-form-reset`,!1),e){if(!f.value)return;f.value.resetFields()}}),l(()=>_.value,e=>{s(`update:remote-form-changed`,e)}),(e,r)=>(t(),g(u(de),{ref_key:`formEl`,ref:f,model:u(p),rules:x,"label-position":`top`,"status-icon":``},{default:o(()=>[E(u(ge),{type:`info`,title:u(c)(`weatherModule.headings.aboutPrimaryLocation`),description:u(c)(`weatherModule.texts.aboutPrimaryLocation`),closable:!1},null,8,[`title`,`description`]),E(u(he),{label:u(c)(`weatherModule.fields.config.primaryLocation.title`),prop:`primaryLocationId`,class:`mt-3`},{default:o(()=>[E(u(ot),{modelValue:u(p).primaryLocationId,"onUpdate:modelValue":r[0]||=e=>u(p).primaryLocationId=e,placeholder:u(c)(`weatherModule.fields.config.primaryLocation.placeholder`),name:`primaryLocationId`,clearable:``,loading:u(ee)},{default:o(()=>[(t(!0),T(te,null,n(u(b),e=>(t(),g(u(ut),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),u(b).length===0&&!u(ee)?(t(),g(u(ge),{key:0,type:`warning`,title:u(c)(`weatherModule.messages.locations.noLocations`),closable:!1,class:`mt-3`},null,8,[`title`])):d(``,!0)]),_:1},8,[`model`,`rules`]))}});s({name:`LocationEditForm`,__name:`location-edit-form`,props:{location:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Dt.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}=h(),{model:s,formEl:d,formChanged:f,submit:p}=Ut({id:x(()=>r.location.id)}),m={name:[{required:!0,message:a(`weatherModule.fields.locations.name.validation.required`),trigger:`blur`}]},_=async()=>{if(d.value){if(i(`update:remote-form-result`,Dt.WORKING),!await d.value.validate().catch(()=>!1)){i(`update:remote-form-result`,Dt.NONE);return}try{await p(),i(`update:remote-form-result`,Dt.OK)}catch{i(`update:remote-form-result`,Dt.ERROR),setTimeout(()=>{i(`update:remote-form-result`,Dt.NONE)},2e3)}}};return l(()=>r.remoteFormSubmit,e=>{e&&(i(`update:remote-form-submit`,!1),_())}),l(()=>r.remoteFormReset,e=>{e&&(i(`update:remote-form-reset`,!1),d.value?.resetFields())}),l(()=>f.value,e=>{i(`update:remote-form-changed`,e)}),(e,n)=>(t(),g(u(de),{ref_key:`formEl`,ref:d,model:u(s),rules:m,"label-position":`top`,"status-icon":``,onSubmit:re(_,[`prevent`])},{default:o(()=>[E(u(he),{label:u(a)(`weatherModule.fields.locations.name.title`),prop:`name`},{default:o(()=>[E(u(le),{modelValue:u(s).name,"onUpdate:modelValue":n[0]||=e=>u(s).name=e,placeholder:u(a)(`weatherModule.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),c(e.$slots,`extra-fields`)]),_:3},8,[`model`]))}});var Ri={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é`}},zi={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`}},Bi={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`}},Vi={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`}},Hi={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`}},Ui={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`}},Wi={"cs-CZ":Ri,"de-DE":zi,"en-US":Bi,"es-ES":Vi,"pl-PL":Hi,"sk-SK":Ui},Gi=[{path:`weather/locations`,name:jt.WEATHER_LOCATIONS,component:()=>L(()=>import(`./view-locations-DiHaHPaw.js`),__vite__mapDeps([47,1,2,3,4,5,48,49,50,51,19,22,24,20,28,52])),meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]},title:()=>$e.global.t(`weatherModule.menu.title`),icon:`mdi:map-marker-multiple`,menu:4e3},children:[{path:`add`,name:jt.WEATHER_LOCATION_ADD,component:()=>L(()=>import(`./view-location-add-ucbk868d.js`),__vite__mapDeps([53,1,2,3,4,5,48,49,28])),props:!1,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]}}},{path:`:id`,name:jt.WEATHER_LOCATION_EDIT,component:()=>L(()=>import(`./view-location-edit-CV308tlg.js`),__vite__mapDeps([54,1,2,3,4,5,48,49,55,21,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]}}}]},{path:`weather/location/:id`,name:jt.WEATHER_LOCATION,component:()=>L(()=>import(`./view-location-w7E7h5dl.js`),__vite__mapDeps([56,1,2,3,4,5,49,57,51,24,21,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]}},children:[{path:`edit`,name:jt.WEATHER_LOCATION_DETAIL_EDIT,component:()=>L(()=>import(`./view-location-edit-CV308tlg.js`),__vite__mapDeps([54,1,2,3,4,5,48,49,55,21,28])),props:!0,meta:{guards:{authenticated:!0,roles:[M.admin,M.owner]}}}]}],Ki=qe.extend({primaryLocationId:R().uuid().nullable().optional()}),qi=Ve.extend({type:ft(Ot),primaryLocationId:R().uuid().nullable().optional()}),Ji=Pe.and(F({type:ft(Ot),primary_location_id:R().uuid().nullable().optional()}));We.and(F({type:ft(Ot),primary_location_id:R().uuid().nullable().optional()}));var Yi=(e,t=zt)=>{let n=Ue(e),r=t.safeParse({...n,draft:!1});if(!r.success)throw console.error(`[WEATHER_MODULE] Failed to validate location data:`,r.error.issues),new Pt(`Failed to validate location data`);return r.data},Xi=(e,t=Wt)=>{let n=t.safeParse(e);if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location create request:`,n.error.issues),new Pt(`Failed to validate location create request`);return n.data},Zi=(e,t=Ht)=>{let n=t.safeParse(e);if(!n.success)throw console.error(`[WEATHER_MODULE] Failed to validate location update request:`,n.error.issues),new Pt(`Failed to validate location update request`);return n.data},Qi=(e,t)=>e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:t,$i=()=>({fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]}),ea=lt(`weather_module-locations`,()=>{let e=ct(),t=we(),n=w($i()),r=w(!1),i=w({}),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:Yi(e.data)}),p=e=>{if(e.id&&i.value&&e.id in i.value){let n=zt.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new Pt(`Failed to insert location.`);return i.value[n.data.id]=n.data}let n=zt.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,n.error),new Pt(`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 J(`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(`/${S}/${kt}/locations/{id}`,{params:{path:{id:t.id}}})).data;if(n!==void 0){let e=Yi(n.data);return p({id:e.id,data:e})}throw new J(`Received invalid response`)}catch(e){let t=e,n=Qi(e,`Failed to fetch location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new J(n,Number(t.status)):new J(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 J(`Already fetching locations.`);n.value.fetching.items=!0,r.value=!1;try{let t=(await e.client.GET(`/${S}/${kt}/locations`)).data;if(t!==void 0){let e=[];for(let n of t.data){let t=Yi(n);e.push(p({id:t.id,data:t}))}return r.value=!0,e}throw new J(`Received invalid response`)}catch(e){let t=e,n=Qi(e,`Failed to fetch locations`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new J(n,Number(t.status)):new J(n)}finally{n.value.fetching.items=!1}})();d.all=i;try{return await i}finally{delete d.all}},add:async r=>{let a=Gt.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new Pt(`Failed to add location.`);let o=a.data;n.value.creating.push(o.id);let s=zt.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 Pt(`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=Xi({id:o.id,type:o.data.type,name:o.data.name,...(0,Z.omitBy)(o.data,Z.isUndefined)}),n=(await e.client.POST(`/${S}/${kt}/locations`,{body:{data:t}})).data;if(n!==void 0){let e=Yi(n.data);return p({id:e.id,data:e})}throw new J(`Received invalid response`)}catch(e){m({id:o.id});let t=e,n=Qi(e,`Failed to add location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new J(n,Number(t.status)):new J(n)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.id)}},edit:async r=>{let a=Bt.safeParse(r);if(!a.success)throw t.error(`[WEATHER_MODULE] Schema validation failed:`,a.error),new Pt(`Failed to edit location.`);let o=a.data;if(n.value.updating.includes(o.id))throw new J(`Location is already being updated.`);let s=l(o.id);if(!s)throw new J(`Location not found.`);n.value.updating.push(o.id);let c={...s,...(0,Z.omitBy)(o.data,Z.isUndefined)};if(i.value[o.id]=c,s.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.id),c;try{let t=Zi({type:o.data.type,...(0,Z.omitBy)(o.data,Z.isUndefined)}),n=(await e.client.PATCH(`/${S}/${kt}/locations/{id}`,{params:{path:{id:o.id}},body:{data:t}})).data;if(n!==void 0){let e=Yi(n.data);return p({id:e.id,data:e})}throw new J(`Received invalid response`)}catch(e){i.value[o.id]=s;let t=e,n=Qi(e,`Failed to edit location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new J(n,Number(t.status)):new J(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 J(`Location not found.`);if(!r.draft)return r;n.value.updating.push(t.id);try{let t=Xi({id:r.id,type:r.type,name:r.name}),n=(await e.client.POST(`/${S}/${kt}/locations`,{body:{data:t}})).data;if(n!==void 0){let e=Yi(n.data);return p({id:e.id,data:e})}throw new J(`Received invalid response`)}catch(e){let t=e,n=Qi(e,`Failed to save location`);throw t.status&&[401,403,404,422,500].includes(Number(t.status))?new J(n,Number(t.status)):new J(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 J(`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 J(`Failed to delete location`)}catch(e){await h({id:t.id});let n=e,r=Qi(e,`Failed to delete location`);throw n.status&&[401,403,404,422,500].includes(Number(n.status))?new J(r,Number(n.status)):new J(r)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}}}}),ta=e=>ea(e),na={getting:!1},ra=lt(`weather_module-weather-day`,()=>{let e=ct(),t=we(),n=w(na),r=w(!1),i=w(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:Nt(e.data)}),l=e=>{let n=It.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new Pt(`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 J(`Already getting weather day.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${S}/${kt}/weather/primary`,{});if(t!==void 0&&t.data?.current)return i.value=Nt(t.data.current),i.value;let a=`Failed to fetch weather day: invalid response structure.`;throw n&&(a=n.message??a),new J(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),ia=e=>ra(e),aa={getting:!1},oa=lt(`weather_module-weather-forecast`,()=>{let e=ct(),t=we(),n=w(aa),r=w(!1),i=w(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:Jt(e.data)}),l=e=>{let n=qt.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new Pt(`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 J(`Already getting weather forecast.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${S}/${kt}/weather/primary`,{});if(t!==void 0&&t.data?.forecast)return i.value=Jt(t.data.forecast),i.value;let a=`Failed to fetch weather forecast: invalid response structure.`;throw n&&(a=n.message??a),new J(a,r?.status??500)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),sa=e=>oa(e),ca=Symbol(`FB-Module-Weather`),la={install:(e,t)=>{let n=De(e),r=be(e),i=ue(e),a=ve(e);for(let[e,n]of Object.entries(Wi)){let r=(0,Z.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=ia(t.store);e.provide(Ft,o),n.addStore(Ft,o);let s=sa(t.store);e.provide(Mt,s),n.addStore(Mt,s);let c=ta(t.store);e.provide(At,c),n.addStore(At,c),a.addModule(ca,{type:Ot,name:`Weather`,description:`Stay up to date with current conditions and upcoming forecasts.`,elements:[{type:it,components:{moduleConfigEditForm:Li},schemas:{moduleConfigSchema:qi,moduleConfigEditFormSchema:Ki,moduleConfigUpdateReqSchema:Ji},modules:[dt]}],modules:[dt],isCore:!0}),t.router.getRoutes().find(e=>e.name===y.ROOT)&&Gi.forEach(e=>{t.router.addRoute(y.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`WeatherModule.`)&&!(typeof e.payload!=`object`||e.payload===null))switch(e.event){case Lt.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 Lt.LOCATION_CREATED:case Lt.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 Lt.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)}})}},ua=F({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)}),da=F({id:R().uuid(),type:R().trim().nonempty(),name:R().trim().min(1,`Name is required`)});export{Jn as A,gn as B,Tr as C,pr as D,Sr as E,Q as F,sn as H,Dn as I,hn as L,qn as M,En as N,Yn as O,On as P,_n as R,Dr as S,Cr as T,on as V,jr as _,Ai as a,kr as b,xi as c,li as d,ai as f,Br as g,Jr as h,Ii as i,$ as j,Kn as k,_i as l,Xr as m,da as n,ki as o,ti as p,la as r,Ti as s,ua as t,pi as u,Ar as v,wr as w,Er as x,Mr as y,X as z};
|