@fastybird/smart-panel-admin 0.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/README.md +187 -0
- package/dist/assets/auth.constants-Dls_gTTx.js +1 -0
- package/dist/assets/card-add-form-C8k05jix.js +1 -0
- package/dist/assets/card-edit-form-B4Wy_x66.js +1 -0
- package/dist/assets/chunk-DECur_0Z.js +1 -0
- package/dist/assets/common-BY9Gg1EI.css +1 -0
- package/dist/assets/common-DlW3qRTQ.js +150 -0
- package/dist/assets/components-4pZvmdD8.js +1 -0
- package/dist/assets/components-BFT9ksvz.js +1 -0
- package/dist/assets/components-BGiFbtPn.css +1 -0
- package/dist/assets/components-BTNQr9V1.css +1 -0
- package/dist/assets/components-C59v4_pJ.css +1 -0
- package/dist/assets/components-CjdlFz1u.css +1 -0
- package/dist/assets/components-D8PpAJgM.js +1 -0
- package/dist/assets/components-DBRr1g1A.js +1 -0
- package/dist/assets/components-DRDcqY-d.js +1 -0
- package/dist/assets/components-DSMoiSYB.css +1 -0
- package/dist/assets/components-DlofbaXq.js +2 -0
- package/dist/assets/components-W7KcmsWr.css +1 -0
- package/dist/assets/components-o_FTQqv1.js +1 -0
- package/dist/assets/components-tvaQsmsk.js +2 -0
- package/dist/assets/composables-BTOG7VNs2.js +1 -0
- package/dist/assets/composables-CLHFuu4k.js +1 -0
- package/dist/assets/composables-COu_3hI8.js +1 -0
- package/dist/assets/composables-CU6q9-8B.js +1 -0
- package/dist/assets/composables-CjGTzpGj.js +1 -0
- package/dist/assets/composables-Cl0F9F_S.js +1 -0
- package/dist/assets/composables-CzSTR7jk.js +1 -0
- package/dist/assets/composables-DDYun9ja.js +0 -0
- package/dist/assets/composables-Da97cjje.js +1 -0
- package/dist/assets/composables-m3XA9ZFJ.js +1 -0
- package/dist/assets/dashboard-DilMazDB.js +2 -0
- package/dist/assets/dashboard.types-DHlozs9y.js +1 -0
- package/dist/assets/data-source-edit-form-mTdgdACg.js +1 -0
- package/dist/assets/drawer-Db27jij8.js +1 -0
- package/dist/assets/empty-C13Ke09q.js +1 -0
- package/dist/assets/extensions.constants-BtEcoiTe.js +1 -0
- package/dist/assets/gridstack-DrhE8fGa.css +1 -0
- package/dist/assets/gridstack.min-BC6WoZvX.js +3 -0
- package/dist/assets/icon-with-child-1Kb-D21P.css +1 -0
- package/dist/assets/icon-with-child-DmQ_XhQy.js +12 -0
- package/dist/assets/index-DU31qw7A.css +1 -0
- package/dist/assets/index-DW2Q2Ef8.js +16 -0
- package/dist/assets/input-number-BF0uWlX2.js +1 -0
- package/dist/assets/integration-config-dialog-DCF8K0UE.js +1 -0
- package/dist/assets/keys-C6Zi4a10.js +1 -0
- package/dist/assets/keys-CGGnS6tq.js +1 -0
- package/dist/assets/keys-Cm97UJHM.js +1 -0
- package/dist/assets/keys-DHSxrtbW.js +1 -0
- package/dist/assets/layout-config-Bs73Oq0w.css +1 -0
- package/dist/assets/layout-config-DkSTscYx.js +1 -0
- package/dist/assets/layout-default-LKbviw7y.js +1 -0
- package/dist/assets/layout-default-aEpEfGPk.css +1 -0
- package/dist/assets/layout-lock-Cp5xh9ot.js +1 -0
- package/dist/assets/layout-profile-ByHuBl2Y.js +1 -0
- package/dist/assets/layout-profile-wkO5hDf5.js +1 -0
- package/dist/assets/layout-sign-C8xK52Nq.js +1 -0
- package/dist/assets/layout-sign-CjJVcqWG.js +1 -0
- package/dist/assets/leaflet-src-B49UyrlR.js +1 -0
- package/dist/assets/leaflet-src.esm-YKGwaZsZ.js +1 -0
- package/dist/assets/list-data-sources-adjust-Bj-0Adap.js +1 -0
- package/dist/assets/list-data-sources-adjust-REFqavw6.css +1 -0
- package/dist/assets/list-locations-BM5Yvsew.js +1 -0
- package/dist/assets/list-users-dBZVseES.js +1 -0
- package/dist/assets/logs-entries.transformers-BRzpY2MS.js +1 -0
- package/dist/assets/marker-icon-2x-BCzqJChB.js +1 -0
- package/dist/assets/marker-icon-JzPv91fE.js +1 -0
- package/dist/assets/marker-shadow-tj6c2pB6.js +1 -0
- package/dist/assets/page-configure-1ENlHHe8.js +1 -0
- package/dist/assets/page-configure-BLho4eEA.js +1 -0
- package/dist/assets/page-configure-Bhbyv1tV.css +1 -0
- package/dist/assets/page-configure-beBdD2Qu.css +1 -0
- package/dist/assets/pages-cards.contants-B5RdaI3z.js +1 -0
- package/dist/assets/pages-tiles.constants-Day6cR-b.js +1 -0
- package/dist/assets/pagination-BN87kdDs.js +1 -0
- package/dist/assets/popover-DOg0KdzK.js +1 -0
- package/dist/assets/radio-BmI00y-5.js +1 -0
- package/dist/assets/scene-add-form-BcNSeauE.css +1 -0
- package/dist/assets/scene-add-form-DdmUnhy5.js +1 -0
- package/dist/assets/scene-edit-form-BeXK9ZM1.js +1 -0
- package/dist/assets/scene-edit-form-CDPMRZQT.css +1 -0
- package/dist/assets/select-data-source-plugin-CtXn9m8K.js +1 -0
- package/dist/assets/skeleton-DMwdgp1r.js +1 -0
- package/dist/assets/slider-YJlo4Ibo.js +1 -0
- package/dist/assets/steps-BIGbhQaO.js +1 -0
- package/dist/assets/system.exceptions-Ddzmz1RH.js +1 -0
- package/dist/assets/table-5pjI7ihN.js +1 -0
- package/dist/assets/tile-detail-COru-nDQ.js +1 -0
- package/dist/assets/tile-edit-form-jjo5FbvD.js +1 -0
- package/dist/assets/types-B8upWpl6.js +1 -0
- package/dist/assets/useBuddyChat-DREu7Tv5.js +1 -0
- package/dist/assets/useDataSources-Bx93bXrZ.js +1 -0
- package/dist/assets/useDevices-CuJhDHbf.js +1 -0
- package/dist/assets/useGeolocation-QxCQnrMH.js +2 -0
- package/dist/assets/useGeolocation-vh-t_kPv.css +1 -0
- package/dist/assets/useLocation-BM-8kEbz.js +1 -0
- package/dist/assets/usePage-DTL4RY9u.js +1 -0
- package/dist/assets/useSpaces-DnSZteHf.js +1 -0
- package/dist/assets/view-buddy-chat-DKryg2MX.js +1 -0
- package/dist/assets/view-card-add-CYZ9eXg5.js +1 -0
- package/dist/assets/view-card-edit-C5zcGDFz.js +1 -0
- package/dist/assets/view-channel-IJiMTDSG.js +1 -0
- package/dist/assets/view-channel-add-YCqERQS-.js +1 -0
- package/dist/assets/view-channel-edit-Dnct_m0O.js +1 -0
- package/dist/assets/view-channel-property-add-CoaudIGV.js +1 -0
- package/dist/assets/view-channel-property-edit-g0J-yPAY.js +1 -0
- package/dist/assets/view-channels--BS5J8Ro.js +1 -0
- package/dist/assets/view-config-module-edit-RW7YEgut.js +1 -0
- package/dist/assets/view-config-modules-Bi5Ib06n.js +1 -0
- package/dist/assets/view-config-modules-DvbJyCIK.css +1 -0
- package/dist/assets/view-config-plugin-edit-CviUNBYF.js +1 -0
- package/dist/assets/view-config-plugins-BBxIkmDq.js +1 -0
- package/dist/assets/view-config-plugins-BTCfejmZ.css +1 -0
- package/dist/assets/view-data-source-add-3vF7foLh.js +1 -0
- package/dist/assets/view-data-source-add-CNRJiOEl.js +1 -0
- package/dist/assets/view-data-source-edit-5xrflzsE.js +1 -0
- package/dist/assets/view-data-source-edit-BJeCPFQo.js +1 -0
- package/dist/assets/view-device-C6EIYm4K.js +1 -0
- package/dist/assets/view-device-DvKgjKr8.css +1 -0
- package/dist/assets/view-device-add-Dtg4hKNb.js +1 -0
- package/dist/assets/view-device-control-D14Yf_3B.js +1 -0
- package/dist/assets/view-device-edit-D3wfo1SZ.js +1 -0
- package/dist/assets/view-devices-CQyYakG6.js +1 -0
- package/dist/assets/view-display-BoDjtT_C.js +1 -0
- package/dist/assets/view-display-edit-DOBx3FR9.js +1 -0
- package/dist/assets/view-display-tokens-ylzZVdwc.js +1 -0
- package/dist/assets/view-displays-Bv-jxEGc.js +1 -0
- package/dist/assets/view-extension-detail-BAuEjk3c.js +1 -0
- package/dist/assets/view-extension-detail-BjYHp3ZH.css +1 -0
- package/dist/assets/view-extensions-xnAarDlC.js +1 -0
- package/dist/assets/view-location-BbOLMWOk.js +1 -0
- package/dist/assets/view-location-add-B3Bljsk2.js +1 -0
- package/dist/assets/view-location-edit-Csq0lDWt.js +1 -0
- package/dist/assets/view-locations-DBYp9MTj.css +1 -0
- package/dist/assets/view-locations-DF-FXbjv.js +1 -0
- package/dist/assets/view-lock-screen-ClIhVZNt.js +1 -0
- package/dist/assets/view-not-found-C0Nl0aC-.js +1 -0
- package/dist/assets/view-onboarding-vZhyo5Yl.js +1 -0
- package/dist/assets/view-page-DCmbFTnE.js +1 -0
- package/dist/assets/view-page-add-Cpzp9lXV.js +1 -0
- package/dist/assets/view-page-configure-b5zQ9PXr.js +1 -0
- package/dist/assets/view-page-configure-c8DaItoq.js +1 -0
- package/dist/assets/view-page-data-source-add-CJMzSAGm.js +1 -0
- package/dist/assets/view-page-data-source-edit-BI5AXiNz.js +1 -0
- package/dist/assets/view-page-edit-fw913SDe.js +1 -0
- package/dist/assets/view-page-plugin-BrlvGuEU.js +1 -0
- package/dist/assets/view-pages-DVvpvvkt.js +1 -0
- package/dist/assets/view-profile-general-jV0TcOZC.js +1 -0
- package/dist/assets/view-profile-security-CPgtYKl1.js +1 -0
- package/dist/assets/view-scene-add-CT1MOXtu.js +1 -0
- package/dist/assets/view-scene-edit-4B1IzMuu.js +1 -0
- package/dist/assets/view-scenes-DoDkd08z.js +1 -0
- package/dist/assets/view-sign-in-CC7zlx9Q.js +1 -0
- package/dist/assets/view-sign-up-B1l4jvOx.js +1 -0
- package/dist/assets/view-space-VnVbkvKT.js +1 -0
- package/dist/assets/view-space-add-DwONNuir.js +1 -0
- package/dist/assets/view-space-edit-44iZOBav.js +1 -0
- package/dist/assets/view-spaces-CuuMx0iT.js +1 -0
- package/dist/assets/view-spaces-onboarding-CN6qrfN6.js +1 -0
- package/dist/assets/view-stats-F8sYkha0.js +1 -0
- package/dist/assets/view-system-info-AVyQIUWe.js +1 -0
- package/dist/assets/view-system-log-detail-sgFgbNjX.js +1 -0
- package/dist/assets/view-system-logs-eIoNhI5c.js +1 -0
- package/dist/assets/view-tile-add-B7mnK_PA.js +1 -0
- package/dist/assets/view-tile-add-Yt_KOkky.js +1 -0
- package/dist/assets/view-tile-data-source-add-DxaZd4Dp.js +1 -0
- package/dist/assets/view-tile-data-source-edit-jzGg3dBQ.js +1 -0
- package/dist/assets/view-tile-edit-b2LCLrB5.js +1 -0
- package/dist/assets/view-tile-edit-hbO-vs_Y.js +1 -0
- package/dist/assets/view-tile-edit-kHjMhT9e.js +1 -0
- package/dist/assets/view-tile-t4cTwgz2.js +1 -0
- package/dist/assets/view-user-add-CdlbezB7.js +1 -0
- package/dist/assets/view-user-edit-S0Up49jC.js +1 -0
- package/dist/assets/view-users-B-m50sCU.js +1 -0
- package/dist/assets/vue-meta.esm-browser.min-3_YV25pX.js +1 -0
- package/dist/assets/weather-751GlpD1.js +2 -0
- package/dist/assets/weather-BKeryvnv.css +1 -0
- package/dist/assets/weather-forecast.transformers-CxZiOJKt.js +1 -0
- package/dist/assets/weather-icon-CkuFNv0P.js +1 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.html +93 -0
- package/package.json +155 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-sign-CjJVcqWG.js","assets/icon-with-child-DmQ_XhQy.js","assets/chunk-DECur_0Z.js","assets/icon-with-child-1Kb-D21P.css","assets/common-DlW3qRTQ.js","assets/common-BY9Gg1EI.css","assets/layout-sign-C8xK52Nq.js","assets/auth.constants-Dls_gTTx.js","assets/view-sign-in-CC7zlx9Q.js","assets/components-o_FTQqv1.js","assets/vue-meta.esm-browser.min-3_YV25pX.js","assets/view-sign-up-B1l4jvOx.js","assets/layout-lock-Cp5xh9ot.js","assets/view-lock-screen-ClIhVZNt.js","assets/layout-profile-ByHuBl2Y.js","assets/layout-profile-wkO5hDf5.js","assets/view-profile-general-jV0TcOZC.js","assets/composables-m3XA9ZFJ.js","assets/view-profile-security-CPgtYKl1.js","assets/view-users-B-m50sCU.js","assets/list-users-dBZVseES.js","assets/pagination-BN87kdDs.js","assets/table-5pjI7ihN.js","assets/composables-CzSTR7jk.js","assets/drawer-Db27jij8.js","assets/view-user-add-CdlbezB7.js","assets/components-DRDcqY-d.js","assets/view-user-edit-S0Up49jC.js","assets/view-buddy-chat-DKryg2MX.js","assets/useBuddyChat-DREu7Tv5.js","assets/integration-config-dialog-DCF8K0UE.js","assets/empty-C13Ke09q.js","assets/radio-BmI00y-5.js","assets/steps-BIGbhQaO.js","assets/useSpaces-DnSZteHf.js","assets/view-extensions-xnAarDlC.js","assets/components-DBRr1g1A.js","assets/composables-COu_3hI8.js","assets/extensions.constants-BtEcoiTe.js","assets/logs-entries.transformers-BRzpY2MS.js","assets/system.exceptions-Ddzmz1RH.js","assets/input-number-BF0uWlX2.js","assets/skeleton-DMwdgp1r.js","assets/components-W7KcmsWr.css","assets/view-extension-detail-BAuEjk3c.js","assets/view-extension-detail-BjYHp3ZH.css","assets/view-onboarding-vZhyo5Yl.js","assets/keys-Cm97UJHM.js","assets/useGeolocation-QxCQnrMH.js","assets/useGeolocation-vh-t_kPv.css","assets/view-scenes-DoDkd08z.js","assets/composables-CLHFuu4k.js","assets/useDevices-CuJhDHbf.js","assets/components-BFT9ksvz.js","assets/composables-BTOG7VNs2.js","assets/composables-Cl0F9F_S.js","assets/keys-DHSxrtbW.js","assets/components-DSMoiSYB.css","assets/scene-add-form-DdmUnhy5.js","assets/scene-add-form-BcNSeauE.css","assets/scene-edit-form-BeXK9ZM1.js","assets/scene-edit-form-CDPMRZQT.css","assets/view-scene-add-CT1MOXtu.js","assets/view-scene-edit-4B1IzMuu.js","assets/view-stats-F8sYkha0.js","assets/components-tvaQsmsk.js","assets/composables-Da97cjje.js","assets/types-B8upWpl6.js","assets/keys-CGGnS6tq.js","assets/useDataSources-Bx93bXrZ.js","assets/components-D8PpAJgM.js","assets/composables-CU6q9-8B.js","assets/useLocation-BM-8kEbz.js","assets/composables-CjGTzpGj.js","assets/slider-YJlo4Ibo.js","assets/components-BGiFbtPn.css","assets/components-CjdlFz1u.css","assets/select-data-source-plugin-CtXn9m8K.js","assets/data-source-edit-form-mTdgdACg.js","assets/list-data-sources-adjust-Bj-0Adap.js","assets/list-data-sources-adjust-REFqavw6.css","assets/tile-detail-COru-nDQ.js","assets/tile-edit-form-jjo5FbvD.js","assets/usePage-DTL4RY9u.js","assets/dashboard-DilMazDB.js","assets/dashboard.types-DHlozs9y.js","assets/components-DlofbaXq.js","assets/popover-DOg0KdzK.js","assets/components-BTNQr9V1.css","assets/weather-751GlpD1.js","assets/weather-forecast.transformers-CxZiOJKt.js","assets/weather-icon-CkuFNv0P.js","assets/weather-BKeryvnv.css","assets/list-locations-BM5Yvsew.js","assets/composables-DDYun9ja.js","assets/view-page-configure-b5zQ9PXr.js","assets/page-configure-1ENlHHe8.js","assets/gridstack.min-BC6WoZvX.js","assets/gridstack-DrhE8fGa.css","assets/page-configure-Bhbyv1tV.css","assets/pages-cards.contants-B5RdaI3z.js","assets/keys-C6Zi4a10.js","assets/view-card-add-CYZ9eXg5.js","assets/card-add-form-C8k05jix.js","assets/view-card-edit-C5zcGDFz.js","assets/card-edit-form-B4Wy_x66.js","assets/view-tile-add-Yt_KOkky.js","assets/view-tile-edit-b2LCLrB5.js","assets/view-data-source-add-CNRJiOEl.js","assets/view-data-source-edit-5xrflzsE.js","assets/view-page-configure-c8DaItoq.js","assets/page-configure-BLho4eEA.js","assets/page-configure-beBdD2Qu.css","assets/pages-tiles.constants-Day6cR-b.js","assets/view-tile-add-B7mnK_PA.js","assets/view-tile-edit-hbO-vs_Y.js","assets/view-data-source-add-3vF7foLh.js","assets/view-data-source-edit-BJeCPFQo.js","assets/view-not-found-C0Nl0aC-.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e,t}from"./chunk-DECur_0Z.js";import{$r as n,Ar as r,Br as i,Hr as a,Lr as o,Mr as s,Nr as c,O as l,Oi as u,Qr as d,Sr as f,Wr as p,Xr as m,_i as h,_r as g,ai as _,br as v,ci as y,d as b,dr as x,er as S,f as C,fi as w,gr as T,h as E,hr as D,i as O,ji as k,lr as A,m as ee,mr as j,n as te,oi as M,p as ne,pi as re,pt as ie,r as ae,sr as oe,t as se,ui as N,vr as P,xr as F,yr as ce}from"./icon-with-child-DmQ_XhQy.js";import{n as le,r as ue,t as de}from"./vue-meta.esm-browser.min-3_YV25pX.js";import{$n as I,$r as fe,$t as pe,A as me,An as he,B as ge,Bn as _e,C as ve,Cr as ye,D as be,E as xe,Er as Se,F as Ce,Fi as L,Fn as R,G as we,Gn as Te,Hr as Ee,I as De,In as Oe,J as ke,Jn as z,K as Ae,Kn as je,Kr as Me,L as Ne,M as Pe,Mn as Fe,N as Ie,Ni as B,Nn as Le,O as Re,Oi as ze,Ot as Be,P as Ve,Pi as V,Pn as H,Pr as He,Q as Ue,Qn as U,R as We,Rn as Ge,S as Ke,Sn as qe,Sr as Je,T as Ye,Ti as W,Tr as Xe,Un as G,Ur as Ze,Vn as K,Wn as q,X as Qe,Y as $e,Yn as et,Z as tt,Zn as nt,_ as rt,_a as it,_i as J,_n as at,ar as ot,at as st,bi as ct,bn as lt,c as ut,cn as dt,d as ft,di as pt,ei as mt,en as ht,er as gt,et as _t,fi as vt,g as yt,ga as bt,gi as xt,gn as St,h as Ct,hn as wt,in as Tt,it as Et,j as Dt,jn as Ot,k as kt,kr as At,ln as jt,m as Mt,mi as Nt,mn as Pt,n as Ft,nr as It,nt as Lt,or as Rt,p as zt,pi as Bt,pn as Vt,q as Ht,qn as Y,r as Ut,rt as Wt,s as Gt,sn as Kt,sr as qt,st as Jt,t as Yt,tn as Xt,tr as Zt,tt as Qt,u as $t,ui as en,un as tn,v as nn,va as rn,vi as an,vn as on,vr as sn,w as cn,wn as ln,wr as un,xn as dn,y as fn,yi as X,yn as pn,zn as Z}from"./common-DlW3qRTQ.js";import"./table-5pjI7ihN.js";import{a as mn,c as hn,i as gn,n as _n,o as vn,r as yn,s as bn,t as xn}from"./useGeolocation-QxCQnrMH.js";import{t as Sn}from"./input-number-BF0uWlX2.js";import{_ as Cn,b as wn,c as Tn,g as En,h as Dn,v as On,y as kn}from"./components-DlofbaXq.js";import{a as An,c as jn,d as Mn,f as Nn,i as Pn,l as Fn,o as In,s as Ln,u as Rn}from"./useBuddyChat-DREu7Tv5.js";import{t as zn}from"./popover-DOg0KdzK.js";import{c as Bn,i as Vn,l as Hn,n as Un,o as Wn,r as Gn,t as Kn}from"./auth.constants-Dls_gTTx.js";import{_ as qn,c as Jn,d as Yn,f as Xn,g as Zn,l as Qn,m as $n,u as er}from"./composables-CzSTR7jk.js";import"./components-o_FTQqv1.js";import"./layout-profile-wkO5hDf5.js";import"./layout-sign-C8xK52Nq.js";import"./integration-config-dialog-DCF8K0UE.js";import{a as tr,c as nr,d as rr,f as ir,i as ar,o as or,r as sr,t as cr}from"./keys-CGGnS6tq.js";import{n as lr,r as ur,t as dr}from"./dashboard-DilMazDB.js";import{a as fr,c as pr,d as mr,f as hr,o as gr,s as _r}from"./types-B8upWpl6.js";import{c as vr,f as yr,g as br,h as xr,i as Sr,l as Cr,n as wr,o as Tr,p as Er,r as Dr,s as Or,t as kr}from"./composables-Da97cjje.js";import{i as Ar,r as jr}from"./useDataSources-Bx93bXrZ.js";import{c as Mr,i as Nr,l as Pr,n as Fr,r as Ir,s as Lr,t as Rr,u as zr}from"./dashboard.types-DHlozs9y.js";import{c as Br,n as Vr,t as Hr}from"./components-tvaQsmsk.js";import"./composables-CjGTzpGj.js";import{o as Ur}from"./components-D8PpAJgM.js";import"./usePage-DTL4RY9u.js";import{t as Wr}from"./useSpaces-DnSZteHf.js";import{o as Gr,s as Kr}from"./composables-Cl0F9F_S.js";import{a as qr,n as Jr,r as Yr}from"./keys-Cm97UJHM.js";import{c as Xr,d as Zr}from"./useLocation-BM-8kEbz.js";import{a as Qr,f as $r,g as ei,i as ti,o as ni,p as ri}from"./composables-CU6q9-8B.js";import{t as ii}from"./tile-edit-form-jjo5FbvD.js";import"./tile-detail-COru-nDQ.js";import"./list-data-sources-adjust-Bj-0Adap.js";import"./select-data-source-plugin-CtXn9m8K.js";import"./data-source-edit-form-mTdgdACg.js";import{B as ai,F as oi,G as Q,H as si,K as ci,P as li,R as ui,_ as di,b as fi,d as pi,g as mi,l as hi,o as gi,p as _i,s as vi,u as yi,v as bi,w as xi,y as Si,z as Ci}from"./composables-CLHFuu4k.js";import{A as wi,B as Ti,C as Ei,D as Di,E as Oi,F as ki,H as Ai,I as ji,L as Mi,M as Ni,N as Pi,O as Fi,P as Ii,R as Li,S as Ri,T as zi,V as Bi,a as Vi,b as Hi,j as Ui,k as Wi,n as Gi,r as Ki,t as qi,v as Ji,x as Yi,z as Xi}from"./weather-751GlpD1.js";import{t as Zi}from"./useDevices-CuJhDHbf.js";import"./logs-entries.transformers-BRzpY2MS.js";import{a as Qi,i as $i,n as ea,o as ta,r as na}from"./extensions.constants-BtEcoiTe.js";import{d as ra,l as ia}from"./composables-COu_3hI8.js";import{t as aa}from"./components-BFT9ksvz.js";import{_ as oa,b as sa,c as ca,d as la,f as ua,h as da,i as fa,l as pa,m as ma,p as ha,r as ga,s as _a,u as va,v as ya}from"./composables-BTOG7VNs2.js";import"./scene-add-form-DdmUnhy5.js";import"./scene-edit-form-BeXK9ZM1.js";import"./composables-DDYun9ja.js";import"./list-locations-BM5Yvsew.js";import"./weather-forecast.transformers-CxZiOJKt.js";import"./gridstack.min-BC6WoZvX.js";import"./page-configure-1ENlHHe8.js";import{t as ba}from"./keys-C6Zi4a10.js";import"./card-add-form-C8k05jix.js";import"./card-edit-form-B4Wy_x66.js";import{a as xa,i as Sa,o as Ca,r as wa,t as Ta}from"./pages-cards.contants-B5RdaI3z.js";import"./page-configure-BLho4eEA.js";import{n as Ea,r as Da,t as Oa}from"./pages-tiles.constants-Day6cR-b.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function ka(e){return{all:e||=new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}var Aa=/\{[^{}]+\}/g,ja=()=>typeof process==`object`&&Number.parseInt(process?.versions?.node?.substring(0,2))>=18&&process.versions.undici;function Ma(){return Math.random().toString(36).slice(2,11)}function Na(e){let{baseUrl:t=``,Request:n=globalThis.Request,fetch:r=globalThis.fetch,querySerializer:i,bodySerializer:a,pathSerializer:o,headers:s,requestInitExt:c=void 0,...l}={...e};c=ja()?c:void 0,t=Ha(t);let u=[];async function d(e,d){let{baseUrl:f,fetch:p=r,Request:m=n,headers:h,params:g={},parseAs:_=`json`,querySerializer:v,bodySerializer:y=a??za,pathSerializer:b,body:x,middleware:S=[],...C}=d||{},w=t;f&&(w=Ha(f)??t);let T=typeof i==`function`?i:La(i);v&&(T=typeof v==`function`?v:La({...typeof i==`object`?i:{},...v}));let E=b||o||Ra,D=x===void 0?void 0:y(x,Va(s,h,g.header)),O=Va(D===void 0||D instanceof FormData?{}:{"Content-Type":`application/json`},s,h,g.header),k=[...u,...S],A={redirect:`follow`,...l,...C,body:D,headers:O},ee,j,te=new m(Ba(e,{baseUrl:w,params:g,querySerializer:T,pathSerializer:E}),A),M;for(let e in C)e in te||(te[e]=C[e]);if(k.length){ee=Ma(),j=Object.freeze({baseUrl:w,fetch:p,parseAs:_,querySerializer:T,bodySerializer:y,pathSerializer:E});for(let t of k)if(t&&typeof t==`object`&&typeof t.onRequest==`function`){let n=await t.onRequest({request:te,schemaPath:e,params:g,options:j,id:ee});if(n)if(n instanceof m)te=n;else if(n instanceof Response){M=n;break}else throw Error(`onRequest: must return new Request() or Response() when modifying the request`)}}if(!M){try{M=await p(te,c)}catch(t){let n=t;if(k.length)for(let t=k.length-1;t>=0;t--){let r=k[t];if(r&&typeof r==`object`&&typeof r.onError==`function`){let t=await r.onError({request:te,error:n,schemaPath:e,params:g,options:j,id:ee});if(t){if(t instanceof Response){n=void 0,M=t;break}if(t instanceof Error){n=t;continue}throw Error(`onError: must return new Response() or instance of Error`)}}}if(n)throw n}if(k.length)for(let t=k.length-1;t>=0;t--){let n=k[t];if(n&&typeof n==`object`&&typeof n.onResponse==`function`){let t=await n.onResponse({request:te,response:M,schemaPath:e,params:g,options:j,id:ee});if(t){if(!(t instanceof Response))throw Error(`onResponse: must return new Response() when modifying the response`);M=t}}}}let ne=M.headers.get(`Content-Length`);if(M.status===204||te.method===`HEAD`||ne===`0`&&!M.headers.get(`Transfer-Encoding`)?.includes(`chunked`))return M.ok?{data:void 0,response:M}:{error:void 0,response:M};if(M.ok)return{data:await(async()=>{if(_===`stream`)return M.body;if(_===`json`&&!ne){let e=await M.text();return e?JSON.parse(e):void 0}return await M[_]()})(),response:M};let re=await M.text();try{re=JSON.parse(re)}catch{}return{error:re,response:M}}return{request(e,t,n){return d(t,{...n,method:e.toUpperCase()})},GET(e,t){return d(e,{...t,method:`GET`})},PUT(e,t){return d(e,{...t,method:`PUT`})},POST(e,t){return d(e,{...t,method:`POST`})},DELETE(e,t){return d(e,{...t,method:`DELETE`})},OPTIONS(e,t){return d(e,{...t,method:`OPTIONS`})},HEAD(e,t){return d(e,{...t,method:`HEAD`})},PATCH(e,t){return d(e,{...t,method:`PATCH`})},TRACE(e,t){return d(e,{...t,method:`TRACE`})},use(...e){for(let t of e)if(t){if(typeof t!=`object`||!(`onRequest`in t||`onResponse`in t||`onError`in t))throw Error("Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`");u.push(t)}},eject(...e){for(let t of e){let e=u.indexOf(t);e!==-1&&u.splice(e,1)}}}}function Pa(e,t,n){if(t==null)return``;if(typeof t==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${e}=${n?.allowReserved===!0?t:encodeURIComponent(t)}`}function Fa(e,t,n){if(!t||typeof t!=`object`)return``;let r=[],i={simple:`,`,label:`.`,matrix:`;`}[n.style]||`&`;if(n.style!==`deepObject`&&n.explode===!1){for(let e in t)r.push(e,n.allowReserved===!0?t[e]:encodeURIComponent(t[e]));let i=r.join(`,`);switch(n.style){case`form`:return`${e}=${i}`;case`label`:return`.${i}`;case`matrix`:return`;${e}=${i}`;default:return i}}for(let i in t){let a=n.style===`deepObject`?`${e}[${i}]`:i;r.push(Pa(a,t[i],n))}let a=r.join(i);return n.style===`label`||n.style===`matrix`?`${i}${a}`:a}function Ia(e,t,n){if(!Array.isArray(t))return``;if(n.explode===!1){let r={form:`,`,spaceDelimited:`%20`,pipeDelimited:`|`}[n.style]||`,`,i=(n.allowReserved===!0?t:t.map(e=>encodeURIComponent(e))).join(r);switch(n.style){case`simple`:return i;case`label`:return`.${i}`;case`matrix`:return`;${e}=${i}`;default:return`${e}=${i}`}}let r={simple:`,`,label:`.`,matrix:`;`}[n.style]||`&`,i=[];for(let r of t)n.style===`simple`||n.style===`label`?i.push(n.allowReserved===!0?r:encodeURIComponent(r)):i.push(Pa(e,r,n));return n.style===`label`||n.style===`matrix`?`${r}${i.join(r)}`:i.join(r)}function La(e){return function(t){let n=[];if(t&&typeof t==`object`)for(let r in t){let i=t[r];if(i!=null){if(Array.isArray(i)){if(i.length===0)continue;n.push(Ia(r,i,{style:`form`,explode:!0,...e?.array,allowReserved:e?.allowReserved||!1}));continue}if(typeof i==`object`){n.push(Fa(r,i,{style:`deepObject`,explode:!0,...e?.object,allowReserved:e?.allowReserved||!1}));continue}n.push(Pa(r,i,e))}}return n.join(`&`)}}function Ra(e,t){let n=e;for(let r of e.match(Aa)??[]){let e=r.substring(1,r.length-1),i=!1,a=`simple`;if(e.endsWith(`*`)&&(i=!0,e=e.substring(0,e.length-1)),e.startsWith(`.`)?(a=`label`,e=e.substring(1)):e.startsWith(`;`)&&(a=`matrix`,e=e.substring(1)),!t||t[e]===void 0||t[e]===null)continue;let o=t[e];if(Array.isArray(o)){n=n.replace(r,Ia(e,o,{style:a,explode:i}));continue}if(typeof o==`object`){n=n.replace(r,Fa(e,o,{style:a,explode:i}));continue}if(a===`matrix`){n=n.replace(r,`;${Pa(e,o)}`);continue}n=n.replace(r,a===`label`?`.${encodeURIComponent(o)}`:encodeURIComponent(o))}return n}function za(e,t){return e instanceof FormData?e:t&&(t.get instanceof Function?t.get(`Content-Type`)??t.get(`content-type`):t[`Content-Type`]??t[`content-type`])===`application/x-www-form-urlencoded`?new URLSearchParams(e).toString():JSON.stringify(e)}function Ba(e,t){let n=`${t.baseUrl}${e}`;t.params?.path&&(n=t.pathSerializer(n,t.params.path));let r=t.querySerializer(t.params.query??{});return r.startsWith(`?`)&&(r=r.substring(1)),r&&(n+=`?${r}`),n}function Va(...e){let t=new Headers;for(let n of e){if(!n||typeof n!=`object`)continue;let e=n instanceof Headers?n.entries():Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,r)}return t}function Ha(e){return e.endsWith(`/`)?e.substring(0,e.length-1):e}var Ua=[],Wa=f({name:`AppMain`,__name:`app.main`,setup(e){let t=nn(),r=N(!1),a,o=()=>{r.value=!1,window.clearInterval(a)},l=e=>{typeof e==`number`?(a=window.setInterval(o,e*1e3),r.value=!0):typeof e==`boolean`?(window.clearInterval(a),r.value=e):r.value=!r.value};return s(()=>{t.register(`loadingOverlay`,l)}),c(()=>{t.unregister(`loadingOverlay`,l)}),de({title:`SmartPanel`,meta:[{charset:`utf-8`},{name:`viewport`,content:`width=device-width,initial-scale=1.0`},{hid:`description`,name:`description`,content:`Powerful application for administrating and integrating the FastyBird IoT Smart Panel`}],link:[{rel:`icon`,type:`image/x-icon`,href:`/favicon.ico`}],htmlAttrs:{lang:`en`}}),(e,t)=>{let a=p(`metainfo`),o=p(`router-view`);return i(),P(A,null,[F(a,null,{title:d(({content:e})=>[v(k(e?`${e} | FastyBird SmartPanel`:`FastyBird SmartPanel`),1)]),_:1}),n(F(o,null,null,512),[[h(Ee),r.value]])],64)}}}),Ga={install:(e,t)=>{let n=Ye(e),r=ut(t.store);e.provide(yt,r),n.addStore(yt,r)}},Ka=ln(),qa={meta:{sign:{in:{title:`Přihlášení`},up:{title:`Registrace`}},lock:{screen:{title:`Zamknutá obrazovka`}},profile:{general:{title:`Obecné`},security:{title:`Zabezpečení`}}},breadcrumbs:{homepage:`úvodní stránka`,profile:`profil`,general:`obecné`,security:`zabezpečení`},headings:{signIn:`Přihlášení`,signUp:`Registrace`,lockScreen:`Obrazovka zamčena`,profileGeneral:`Obecné nastavení`,profileSecurity:`Nastavení zabezpečení`,yourProfile:`Váš profil`},messages:{requestError:`Něco se pokazilo, zkuste to prosím později.`,invalidPassword:`Zadané heslo je nesprávné.`,profileEdited:`Váš profil byl úspěšně aktualizován.`,profileNotEdited:`Váš profil se nepodařilo upravit.`,passwordEdited:`Vaše heslo bylo úspěšně aktualizováno.`,passwordNotEdited:`Vaše heslo se nepodařilo změnit.`},texts:{processing:`Zpracování požadavku...`},tabs:{general:`Obecné`,security:`Zabezpečení`},fields:{username:{title:`Uživatelské jméno`,validation:{required:`Vyplňte prosím své uživatelské jméno`}},password:{title:`Heslo`,validation:{required:`Vyplňte prosím své heslo`}},email:{title:`E-mail`,placeholder:`např. jan{'@'}novak.cz`,validation:{required:`Vyplňte prosím svou e-mailovou adresu`,email:`Zadejte prosím platnou e-mailovou adresu`}},firstName:{title:`Jméno`,placeholder:`např. Jan`,validation:{required:`Vyplňte prosím jméno`}},lastName:{title:`Příjmení`,placeholder:`např. Novák`,validation:{required:`Vyplňte prosím příjmení`}},language:{title:`Jazyk`,placeholder:`Použít výchozí jazyk prohlížeče`},currentPassword:{title:`Aktuální heslo`,help:`Vaše aktuální heslo`,validation:{required:`Vyplňte prosím své aktuální heslo`}},newPassword:{title:`Nové heslo`,help:`Vaše nové heslo`,validation:{required:`Vyplňte prosím své nové heslo`}},repeatPassword:{title:`Zopakujte nové heslo`,help:`Potvrďte své nové heslo`,validation:{required:`Zopakujte prosím své nové heslo`,different:`Zadaná nová hesla se neshodují`}}},buttons:{signIn:{title:`Přihlásit se`},signUp:{title:`Zaregistrovat se`},unlock:{title:`Odemknout`},signOut:{title:`Odhlásit se`},backToSignIn:{title:`Zpět na přihlášení`},save:{title:`Uložit`},close:{title:`Zavřít`}}},Ja={meta:{sign:{in:{title:`Anmelden`},up:{title:`Registrieren`}},lock:{screen:{title:`Bildschirmsperre`}},profile:{general:{title:`Allgemein`},security:{title:`Sicherheit`}}},breadcrumbs:{homepage:`Startseite`,profile:`Profil`,general:`Allgemein`,security:`Sicherheit`},headings:{signIn:`Anmelden`,signUp:`Registrieren`,lockScreen:`Bildschirm gesperrt`,profileGeneral:`Allgemeine Einstellungen`,profileSecurity:`Sicherheitseinstellungen`,yourProfile:`Ihr Profil`},messages:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`,invalidPassword:`Das eingegebene Passwort ist falsch.`,profileEdited:`Ihr Profil wurde erfolgreich aktualisiert.`,profileNotEdited:`Ihr Profil konnte nicht bearbeitet werden.`,passwordEdited:`Ihr Passwort wurde erfolgreich aktualisiert.`,passwordNotEdited:`Ihr Passwort konnte nicht geändert werden.`},texts:{processing:`Anfrage wird verarbeitet...`},tabs:{general:`Allgemein`,security:`Sicherheit`},fields:{username:{title:`Benutzername`,validation:{required:`Bitte geben Sie Ihren Benutzernamen ein`}},password:{title:`Passwort`,validation:{required:`Bitte geben Sie Ihr Passwort ein`}},email:{title:`E-Mail`,placeholder:`z.B. max{'@'}mustermann.de`,validation:{required:`Bitte geben Sie Ihre E-Mail-Adresse ein`,email:`Bitte geben Sie eine gültige E-Mail-Adresse ein`}},firstName:{title:`Vorname`,placeholder:`z.B. Max`,validation:{required:`Bitte geben Sie den Vornamen ein`}},lastName:{title:`Nachname`,placeholder:`z.B. Mustermann`,validation:{required:`Bitte geben Sie den Nachnamen ein`}},language:{title:`Sprache`,placeholder:`Standard-Browsersprache verwenden`},currentPassword:{title:`Aktuelles Passwort`,help:`Ihr aktuelles Passwort`,validation:{required:`Bitte geben Sie Ihr aktuelles Passwort ein`}},newPassword:{title:`Neues Passwort`,help:`Ihr neues Passwort`,validation:{required:`Bitte geben Sie Ihr neues Passwort ein`}},repeatPassword:{title:`Neues Passwort wiederholen`,help:`Bestätigen Sie Ihr neues Passwort`,validation:{required:`Bitte wiederholen Sie Ihr neues Passwort`,different:`Die eingegebenen neuen Passwörter stimmen nicht überein`}}},buttons:{signIn:{title:`Anmelden`},signUp:{title:`Registrieren`},unlock:{title:`Entsperren`},signOut:{title:`Abmelden`},backToSignIn:{title:`Zurück zur Anmeldung`},save:{title:`Speichern`},close:{title:`Schließen`}}},Ya={meta:{sign:{in:{title:`Sign in`},up:{title:`Sign up`}},lock:{screen:{title:`Lock screen`}},profile:{general:{title:`General`},security:{title:`Security`}}},breadcrumbs:{homepage:`homepage`,profile:`profile`,general:`general`,security:`security`},headings:{signIn:`Sign in`,signUp:`Sign up`,lockScreen:`Screen locked`,profileGeneral:`General settings`,profileSecurity:`Security settings`,yourProfile:`Your profile`},messages:{requestError:`Something went wrong, please try again later.`,invalidPassword:`The password you entered is incorrect.`,profileEdited:`Your profile has been updated successfully.`,profileNotEdited:`Your profile couldn't be edited.`,passwordEdited:`Your password has been updated successfully.`,passwordNotEdited:`Your password couldn't be changed.`},texts:{processing:`Processing request...`},tabs:{general:`General`,security:`Security`},fields:{username:{title:`Username`,validation:{required:`Please fill in your username`}},password:{title:`Password`,validation:{required:`Please fill in your password`}},email:{title:`Email`,placeholder:`eg. john{'@'}doe.com`,validation:{required:`Please fill in your email address`,email:`Please provide valid email address`}},firstName:{title:`First name`,placeholder:`eg. John`,validation:{required:`Please fill in first name`}},lastName:{title:`Last name`,placeholder:`eg. Doe`,validation:{required:`Please fill in last name`}},language:{title:`Language`,placeholder:`Use browser default`},currentPassword:{title:`Current password`,help:`Your actual password`,validation:{required:`Please fill in your current password`}},newPassword:{title:`New password`,help:`Your new password`,validation:{required:`Please fill in your new password`}},repeatPassword:{title:`Repeat new password`,help:`Confirm your new password`,validation:{required:`Please repeat your new password`,different:`Entered new passwords are not same`}}},buttons:{signIn:{title:`Sign in`},signUp:{title:`Sign up`},unlock:{title:`Unlock`},signOut:{title:`Sign out`},backToSignIn:{title:`Back to sign in`},save:{title:`Save`},close:{title:`Close`}}},Xa={meta:{sign:{in:{title:`Iniciar sesión`},up:{title:`Registrarse`}},lock:{screen:{title:`Pantalla bloqueada`}},profile:{general:{title:`General`},security:{title:`Seguridad`}}},breadcrumbs:{homepage:`inicio`,profile:`perfil`,general:`general`,security:`seguridad`},headings:{signIn:`Iniciar sesión`,signUp:`Registrarse`,lockScreen:`Pantalla bloqueada`,profileGeneral:`Configuración general`,profileSecurity:`Configuración de seguridad`,yourProfile:`Tu perfil`},messages:{requestError:`Algo salió mal, por favor inténtalo de nuevo más tarde.`,invalidPassword:`La contraseña que ingresaste es incorrecta.`,profileEdited:`Tu perfil ha sido actualizado correctamente.`,profileNotEdited:`No se pudo editar tu perfil.`,passwordEdited:`Tu contraseña ha sido actualizada correctamente.`,passwordNotEdited:`No se pudo cambiar tu contraseña.`},texts:{processing:`Procesando solicitud...`},tabs:{general:`General`,security:`Seguridad`},fields:{username:{title:`Nombre de usuario`,validation:{required:`Por favor ingresa tu nombre de usuario`}},password:{title:`Contraseña`,validation:{required:`Por favor ingresa tu contraseña`}},email:{title:`Correo electrónico`,placeholder:`ej. juan{'@'}ejemplo.com`,validation:{required:`Por favor ingresa tu dirección de correo electrónico`,email:`Por favor proporciona una dirección de correo electrónico válida`}},firstName:{title:`Nombre`,placeholder:`ej. Juan`,validation:{required:`Por favor ingresa el nombre`}},lastName:{title:`Apellido`,placeholder:`ej. García`,validation:{required:`Por favor ingresa el apellido`}},language:{title:`Idioma`,placeholder:`Usar idioma predeterminado del navegador`},currentPassword:{title:`Contraseña actual`,help:`Tu contraseña actual`,validation:{required:`Por favor ingresa tu contraseña actual`}},newPassword:{title:`Nueva contraseña`,help:`Tu nueva contraseña`,validation:{required:`Por favor ingresa tu nueva contraseña`}},repeatPassword:{title:`Repetir nueva contraseña`,help:`Confirma tu nueva contraseña`,validation:{required:`Por favor repite tu nueva contraseña`,different:`Las nuevas contraseñas ingresadas no coinciden`}}},buttons:{signIn:{title:`Iniciar sesión`},signUp:{title:`Registrarse`},unlock:{title:`Desbloquear`},signOut:{title:`Cerrar sesión`},backToSignIn:{title:`Volver a iniciar sesión`},save:{title:`Guardar`},close:{title:`Cerrar`}}},Za={meta:{sign:{in:{title:`Logowanie`},up:{title:`Rejestracja`}},lock:{screen:{title:`Zablokowany ekran`}},profile:{general:{title:`Ogólne`},security:{title:`Bezpieczeństwo`}}},breadcrumbs:{homepage:`strona główna`,profile:`profil`,general:`ogólne`,security:`bezpieczeństwo`},headings:{signIn:`Logowanie`,signUp:`Rejestracja`,lockScreen:`Ekran zablokowany`,profileGeneral:`Ustawienia ogólne`,profileSecurity:`Ustawienia bezpieczeństwa`,yourProfile:`Twój profil`},messages:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`,invalidPassword:`Wprowadzone hasło jest nieprawidłowe.`,profileEdited:`Twój profil został pomyślnie zaktualizowany.`,profileNotEdited:`Nie udało się edytować Twojego profilu.`,passwordEdited:`Twoje hasło zostało pomyślnie zaktualizowane.`,passwordNotEdited:`Nie udało się zmienić Twojego hasła.`},texts:{processing:`Przetwarzanie żądania...`},tabs:{general:`Ogólne`,security:`Bezpieczeństwo`},fields:{username:{title:`Nazwa użytkownika`,validation:{required:`Proszę podać nazwę użytkownika`}},password:{title:`Hasło`,validation:{required:`Proszę podać hasło`}},email:{title:`E-mail`,placeholder:`np. jan{'@'}kowalski.pl`,validation:{required:`Proszę podać adres e-mail`,email:`Proszę podać prawidłowy adres e-mail`}},firstName:{title:`Imię`,placeholder:`np. Jan`,validation:{required:`Proszę podać imię`}},lastName:{title:`Nazwisko`,placeholder:`np. Kowalski`,validation:{required:`Proszę podać nazwisko`}},language:{title:`Język`,placeholder:`Użyj domyślnego języka przeglądarki`},currentPassword:{title:`Obecne hasło`,help:`Twoje aktualne hasło`,validation:{required:`Proszę podać obecne hasło`}},newPassword:{title:`Nowe hasło`,help:`Twoje nowe hasło`,validation:{required:`Proszę podać nowe hasło`}},repeatPassword:{title:`Powtórz nowe hasło`,help:`Potwierdź nowe hasło`,validation:{required:`Proszę powtórzyć nowe hasło`,different:`Wprowadzone nowe hasła nie są identyczne`}}},buttons:{signIn:{title:`Zaloguj się`},signUp:{title:`Zarejestruj się`},unlock:{title:`Odblokuj`},signOut:{title:`Wyloguj się`},backToSignIn:{title:`Powrót do logowania`},save:{title:`Zapisz`},close:{title:`Zamknij`}}},Qa={meta:{sign:{in:{title:`Prihlásenie`},up:{title:`Registrácia`}},lock:{screen:{title:`Uzamknutá obrazovka`}},profile:{general:{title:`Všeobecné`},security:{title:`Bezpečnosť`}}},breadcrumbs:{homepage:`domovská stránka`,profile:`profil`,general:`všeobecné`,security:`bezpečnosť`},headings:{signIn:`Prihlásiť sa`,signUp:`Zaregistrovať sa`,lockScreen:`Obrazovka uzamknutá`,profileGeneral:`Všeobecné nastavenia`,profileSecurity:`Bezpečnostné nastavenia`,yourProfile:`Váš profil`},messages:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`,invalidPassword:`Zadané heslo je nesprávne.`,profileEdited:`Váš profil bol úspešne aktualizovaný.`,profileNotEdited:`Váš profil sa nepodarilo upraviť.`,passwordEdited:`Vaše heslo bolo úspešne aktualizované.`,passwordNotEdited:`Vaše heslo sa nepodarilo zmeniť.`},texts:{processing:`Spracovanie požiadavky...`},tabs:{general:`Všeobecné`,security:`Bezpečnosť`},fields:{username:{title:`Používateľské meno`,validation:{required:`Prosím vyplňte svoje používateľské meno`}},password:{title:`Heslo`,validation:{required:`Prosím vyplňte svoje heslo`}},email:{title:`Email`,placeholder:`napr. jan{'@'}novak.sk`,validation:{required:`Prosím vyplňte svoju emailovú adresu`,email:`Prosím zadajte platnú emailovú adresu`}},firstName:{title:`Meno`,placeholder:`napr. Ján`,validation:{required:`Prosím vyplňte meno`}},lastName:{title:`Priezvisko`,placeholder:`napr. Novák`,validation:{required:`Prosím vyplňte priezvisko`}},language:{title:`Jazyk`,placeholder:`Použiť predvolený jazyk prehliadača`},currentPassword:{title:`Aktuálne heslo`,help:`Vaše aktuálne heslo`,validation:{required:`Prosím vyplňte svoje aktuálne heslo`}},newPassword:{title:`Nové heslo`,help:`Vaše nové heslo`,validation:{required:`Prosím vyplňte svoje nové heslo`}},repeatPassword:{title:`Zopakujte nové heslo`,help:`Potvrďte svoje nové heslo`,validation:{required:`Prosím zopakujte svoje nové heslo`,different:`Zadané nové heslá sa nezhodujú`}}},buttons:{signIn:{title:`Prihlásiť sa`},signUp:{title:`Zaregistrovať sa`},unlock:{title:`Odomknúť`},signOut:{title:`Odhlásiť sa`},backToSignIn:{title:`Späť na prihlásenie`},save:{title:`Uložiť`},close:{title:`Zavrieť`}}},$a={"cs-CZ":qa,"de-DE":Ja,"en-US":Ya,"es-ES":Xa,"pl-PL":Za,"sk-SK":Qa},eo=(e,t)=>{let n=e.getStore(pe),r=t.meta&&`guards`in t.meta?t.meta.guards:[];return n.isSignedIn()&&r&&(Array.isArray(r)&&r.includes(`anonymous`)||typeof r==`object`&&`anonymous`in r)?{name:O.ROOT}:!0},to=(e,t)=>{let n=e.getStore(pe),r=t.meta&&`guards`in t.meta?t.meta.guards:[];return!n.isSignedIn()&&r&&(Array.isArray(r)&&r.includes(`authenticated`)||typeof r==`object`&&`authenticated`in r)?{name:Hn.SIGN_IN}:!0},no=(e,t)=>{if(!e)return!0;let n=e.isLocked.value,r=e.isSignedIn.value,i=t.name===Hn.LOCK||t.name===Hn.LOCK_SCREEN;return n&&!r?(e.unlock?.(),!0):n&&r&&!i?{name:Hn.LOCK_SCREEN}:!n&&i?{name:O.ROOT}:!0},ro=typeof __SENTRY_DEBUG__>`u`||__SENTRY_DEBUG__,io=globalThis,ao=`10.43.0`;function oo(){return so(io),io}function so(e){let t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||`10.43.0`,t[ao]=t[`10.43.0`]||{}}function co(e,t,n=io){let r=n.__SENTRY__=n.__SENTRY__||{},i=r[ao]=r[`10.43.0`]||{};return i[e]||(i[e]=t())}var lo=`Sentry Logger `,uo={};function fo(e){if(!(`console`in io))return e();let t=io.console,n={},r=Object.keys(uo);r.forEach(e=>{let r=uo[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function po(){bo().enabled=!0}function mo(){bo().enabled=!1}function ho(){return bo().enabled}function go(...e){yo(`log`,...e)}function _o(...e){yo(`warn`,...e)}function vo(...e){yo(`error`,...e)}function yo(e,...t){ro&&ho()&&fo(()=>{io.console[e](`${lo}[${e}]:`,...t)})}function bo(){return ro?co(`loggerSettings`,()=>({enabled:!1})):{enabled:!1}}var xo={enable:po,disable:mo,isEnabled:ho,log:go,warn:_o,error:vo},So=Object.prototype.toString;function Co(e,t){return So.call(e)===`[object ${t}]`}function wo(e){return Co(e,`Object`)}function To(e){return!!(e?.then&&typeof e.then==`function`)}function Eo(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{ro&&xo.log(`Failed to add non-enumerable property "${t}" to object`,e)}}var Do;function Oo(e){if(Do!==void 0)return Do?Do(e):e();let t=Symbol.for(`__SENTRY_SAFE_RANDOM_ID_WRAPPER__`),n=io;return t in n&&typeof n[t]==`function`?(Do=n[t],Do(e)):(Do=null,e())}function ko(){return Oo(()=>Math.random())}function Ao(){return Oo(()=>Date.now())}function jo(e,t=0){return typeof e!=`string`||t===0||e.length<=t?e:`${e.slice(0,t)}...`}function Mo(){let e=io;return e.crypto||e.msCrypto}var No;function Po(){return ko()*16}function Fo(e=Mo()){try{if(e?.randomUUID)return Oo(()=>e.randomUUID()).replace(/-/g,``)}catch{}return No||=`10000000100040008000100000000000`,No.replace(/[018]/g,e=>(e^(Po()&15)>>e/4).toString(16))}var Io=1e3;function Lo(){return Ao()/Io}function Ro(){let{performance:e}=io;if(!e?.now||!e.timeOrigin)return Lo;let t=e.timeOrigin;return()=>(t+Oo(()=>e.now()))/Io}var zo;function Bo(){return(zo??=Ro())()}function Vo(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),!e.did&&!t.did&&(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||Bo(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=t.sid.length===32?t.sid:Fo()),t.init!==void 0&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),typeof t.started==`number`&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if(typeof t.duration==`number`)e.duration=t.duration;else{let t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),typeof t.errors==`number`&&(e.errors=t.errors),t.status&&(e.status=t.status)}function Ho(e,t,n=2){if(!t||typeof t!=`object`||n<=0)return t;if(e&&Object.keys(t).length===0)return e;let r={...e};for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=Ho(r[e],t[e],n-1));return r}function Uo(){return Fo()}var Wo=`_sentrySpan`;function Go(e,t){t?Eo(e,Wo,t):delete e[Wo]}function Ko(e){return e[Wo]}var qo=100,Jo=class e{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:Uo(),sampleRand:ko()}}clone(){let t=new e;return t._breadcrumbs=[...this._breadcrumbs],t._tags={...this._tags},t._attributes={...this._attributes},t._extra={...this._extra},t._contexts={...this._contexts},this._contexts.flags&&(t._contexts.flags={values:[...this._contexts.flags.values]}),t._user=this._user,t._level=this._level,t._session=this._session,t._transactionName=this._transactionName,t._fingerprint=this._fingerprint,t._eventProcessors=[...this._eventProcessors],t._attachments=[...this._attachments],t._sdkProcessingMetadata={...this._sdkProcessingMetadata},t._propagationContext={...this._propagationContext},t._client=this._client,t._lastEventId=this._lastEventId,t._conversationId=this._conversationId,Go(t,Ko(this)),t}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&Vo(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(e){return this._conversationId=e||void 0,this._notifyScopeListeners(),this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return t===null?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(t){if(!t)return this;let n=typeof t==`function`?t(this):t,{tags:r,attributes:i,extra:a,user:o,contexts:s,level:c,fingerprint:l=[],propagationContext:u,conversationId:d}=(n instanceof e?n.getScopeData():wo(n)?t:void 0)||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...i},this._extra={...this._extra,...a},this._contexts={...this._contexts,...s},o&&Object.keys(o).length&&(this._user=o),c&&(this._level=c),l.length&&(this._fingerprint=l),u&&(this._propagationContext=u),d&&(this._conversationId=d),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,Go(this,void 0),this._attachments=[],this.setPropagationContext({traceId:Uo(),sampleRand:ko()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){let n=typeof t==`number`?t:qo;if(n<=0)return this;let r={timestamp:Lo(),...e,message:e.message?jo(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>n&&(this._breadcrumbs=this._breadcrumbs.slice(-n),this._client?.recordDroppedEvent(`buffer_overflow`,`log_item`)),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:Ko(this),conversationId:this._conversationId}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=Ho(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){let n=t?.event_id||Fo();if(!this._client)return ro&&xo.warn(`No client configured on scope - will not capture exception!`),n;let r=Error(`Sentry syntheticException`);return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:n},this),n}captureMessage(e,t,n){let r=n?.event_id||Fo();if(!this._client)return ro&&xo.warn(`No client configured on scope - will not capture message!`),r;let i=n?.syntheticException??Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:i,...n,event_id:r},this),r}captureEvent(e,t){let n=e.event_id||t?.event_id||Fo();return this._client?(this._client.captureEvent(e,{...t,event_id:n},this),n):(ro&&xo.warn(`No client configured on scope - will not capture event!`),n)}_notifyScopeListeners(){this._notifyingListeners||=(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),!1)}};function Yo(){return co(`defaultCurrentScope`,()=>new Jo)}function Xo(){return co(`defaultIsolationScope`,()=>new Jo)}var Zo=class{constructor(e,t){let n;n=e||new Jo;let r;r=t||new Jo,this._stack=[{scope:n}],this._isolationScope=r}withScope(e){let t=this._pushScope(),n;try{n=e(t)}catch(e){throw this._popScope(),e}return To(n)?n.then(e=>(this._popScope(),e),e=>{throw this._popScope(),e}):(this._popScope(),n)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){let e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return this._stack.length<=1?!1:!!this._stack.pop()}};function Qo(){let e=so(oo());return e.stack=e.stack||new Zo(Yo(),Xo())}function $o(e){return Qo().withScope(e)}function es(e,t){let n=Qo();return n.withScope(()=>(n.getStackTop().scope=e,t(e)))}function ts(e){return Qo().withScope(()=>e(Qo().getIsolationScope()))}function ns(){return{withIsolationScope:ts,withScope:$o,withSetScope:es,withSetIsolationScope:(e,t)=>ts(t),getCurrentScope:()=>Qo().getScope(),getIsolationScope:()=>Qo().getIsolationScope()}}function rs(e){let t=so(e);return t.acs?t.acs:ns()}function is(){return rs(oo()).getCurrentScope()}function as(){return rs(oo()).getIsolationScope()}function os(e){if(e)return ss(e)||ls(e)?{captureContext:e}:e}function ss(e){return e instanceof Jo||typeof e==`function`}var cs=[`user`,`level`,`extra`,`contexts`,`tags`,`fingerprint`,`propagationContext`];function ls(e){return Object.keys(e).some(e=>cs.includes(e))}function us(e,t){return is().captureException(e,os(t))}function ds(e){as().setUser(e)}var fs=e=>{let t=e.getStore(pe);t.profile!==null&&ds({id:t.profile.id,email:t.profile.email??`unknown@user.com`})},ps=class extends Error{};ps.prototype.name=`InvalidTokenError`;function ms(e){return decodeURIComponent(atob(e).replace(/(.)/g,(e,t)=>{let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n=`0`+n),`%`+n}))}function hs(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`);switch(t.length%4){case 0:break;case 2:t+=`==`;break;case 3:t+=`=`;break;default:throw Error(`base64 string is not of the correct length`)}try{return ms(t)}catch{return atob(t)}}function gs(e,t){if(typeof e!=`string`)throw new ps(`Invalid token specified: must be a string`);t||={};let n=t.header===!0?0:1,r=e.split(`.`)[n];if(typeof r!=`string`)throw new ps(`Invalid token specified: missing part #${n+1}`);let i;try{i=hs(r)}catch(e){throw new ps(`Invalid token specified: invalid base64 for part #${n+1} (${e.message})`)}try{return JSON.parse(i)}catch(e){throw new ps(`Invalid token specified: invalid json for part #${n+1} (${e.message})`)}}var _s=async(e,t)=>{let n=e.getStore(pe);try{await n.initialize()}catch(e){n.clear(),us(e);return}if(n.accessToken()&&n.refreshToken()){let e=gs(n.accessToken()),r=gs(n.refreshToken());if(new Date().getTime()/1e3>=new Date(r.exp*1e3).getTime()/1e3){n.clear(),t.debug(`ROUTE GUARD: Refresh token is expired`);return}if(new Date().getTime()/1e3>=new Date(e.exp*1e3).getTime()/1e3)try{if(!await n.refresh()){n.clear(),t.debug(`ROUTE GUARD: Session refresh failed`);return}}catch(e){n.clear(),us(e);return}if(n.profile===null)try{if(!await n.get()){n.clear(),t.debug(`ROUTE GUARD: User fetch failed`);return}}catch(e){n.clear(),us(e)}}else if(n.refreshToken()!==null)try{if(!await n.refresh()){n.clear(),t.debug(`ROUTE GUARD: Session refresh failed`);return}}catch(e){n.clear(),us(e)}else n.clear()},vs=[{path:`/sign`,name:Hn.SIGN,component:()=>Et(()=>import(`./layout-sign-CjJVcqWG.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])),meta:{guards:[`anonymous`],title:`Sign`,icon:`mdi:user-key`},redirect:()=>({name:Hn.SIGN_IN}),children:[{path:`in`,name:Hn.SIGN_IN,component:()=>Et(()=>import(`./view-sign-in-CC7zlx9Q.js`),__vite__mapDeps([8,1,2,3,4,5,7,9,10])),meta:{guards:[`anonymous`],title:`Sign in`,icon:`mdi:login`}},{path:`up`,name:Hn.SIGN_UP,component:()=>Et(()=>import(`./view-sign-up-B1l4jvOx.js`),__vite__mapDeps([11,1,2,3,4,5,7,9,10])),meta:{guards:[`anonymous`],title:`Sign up`,icon:`mdi:logout`}}]}],ys=[{path:`/lock`,name:Hn.LOCK,component:()=>Et(()=>import(`./layout-lock-Cp5xh9ot.js`),__vite__mapDeps([12,1,2,3,4,5])),meta:{title:`Lock screen`,icon:`mdi:lock`},redirect:()=>({name:Hn.LOCK_SCREEN}),children:[{path:`screen`,name:Hn.LOCK_SCREEN,component:()=>Et(()=>import(`./view-lock-screen-ClIhVZNt.js`),__vite__mapDeps([13,1,2,3,4,5,7,9,10])),meta:{title:`Lock screen`,icon:`mdi:lock`}}]}],bs=[{path:`profile`,name:Hn.PROFILE,component:()=>Et(()=>import(`./layout-profile-ByHuBl2Y.js`),__vite__mapDeps([14,1,2,3,4,5,15,7])),meta:{guards:[`authenticated`],title:`Your profile`,icon:`mdi:user`},redirect:()=>({name:Hn.PROFILE_GENERAL}),children:[{path:`general`,name:Hn.PROFILE_GENERAL,component:()=>Et(()=>import(`./view-profile-general-jV0TcOZC.js`),__vite__mapDeps([16,1,2,3,4,5,7,9,17,10])),meta:{guards:[`authenticated`],title:`General settings`,icon:`mdi:user-edit`}},{path:`security`,name:Hn.PROFILE_SECURITY,component:()=>Et(()=>import(`./view-profile-security-CPgtYKl1.js`),__vite__mapDeps([18,1,2,3,4,5,7,9,17,10])),meta:{guards:[`authenticated`],title:`Security settings`,icon:`mdi:user-lock`}}]}],xs={expireTimes:`1d`,path:`; path=/`,domain:``,secure:!1,sameSite:`; SameSite=Lax`},Ss=function(){function e(){this.current_default_config=xs}return e.prototype.config=function(e){for(var t in this.current_default_config)this.current_default_config[t]=e[t]?e[t]:xs[t]},e.prototype.get=function(e){var t=decodeURIComponent(document.cookie.replace(RegExp(`(?:(?:^|.*;)\\s*`+encodeURIComponent(e).replace(/[\-\.\+\*]/g,`\\$&`)+`\\s*\\=\\s*([^;]*).*$)|^.*$`),`$1`))||null;if(t&&t.substring(0,1)===`{`&&t.substring(t.length-1,t.length)===`}`)try{t=JSON.parse(t)}catch{return t}return t},e.prototype.set=function(e,t,n,r,i,a,o){if(!e)throw Error(`Cookie name is not found in the first argument.`);if(/^(?:expires|max-age|path|domain|secure|SameSite)$/i.test(e))throw Error(`Cookie name illegality. Cannot be set to ["expires","max-age","path","domain","secure","SameSite"] current key name: `+e);t&&t.constructor===Object&&(t=JSON.stringify(t));var s=``;if(n??=this.current_default_config.expireTimes?this.current_default_config.expireTimes:``,n&&n!=0)switch(n.constructor){case Number:s=n===1/0||n===-1?`; expires=Fri, 31 Dec 9999 23:59:59 GMT`:`; max-age=`+n;break;case String:if(/^(?:\d+(y|m|d|h|min|s))$/i.test(n)){var c=n.replace(/^(\d+)(?:y|m|d|h|min|s)$/i,`$1`);switch(n.replace(/^(?:\d+)(y|m|d|h|min|s)$/i,`$1`).toLowerCase()){case`m`:s=`; max-age=`+c*2592e3;break;case`d`:s=`; max-age=`+c*86400;break;case`h`:s=`; max-age=`+c*3600;break;case`min`:s=`; max-age=`+c*60;break;case`s`:s=`; max-age=`+c;break;case`y`:s=`; max-age=`+c*31104e3;break;default:}}else s=`; expires=`+n;break;case Date:s=`; expires=`+n.toUTCString();break}return document.cookie=encodeURIComponent(e)+`=`+encodeURIComponent(t)+s+(i?`; domain=`+i:this.current_default_config.domain?this.current_default_config.domain:``)+(r?`; path=`+r:this.current_default_config.path?this.current_default_config.path:`; path=/`)+(a==null?this.current_default_config.secure?`; Secure`:``:a?`; Secure`:``)+(o==null?this.current_default_config.sameSite?`; SameSute=`+this.current_default_config.sameSite:``:o?`; SameSite=`+o:``),this},e.prototype.remove=function(e,t,n){return!e||!this.isKey(e)?!1:(document.cookie=encodeURIComponent(e)+`=; expires=Thu, 01 Jan 1970 00:00:00 GMT`+(n?`; domain=`+n:this.current_default_config.domain?this.current_default_config.domain:``)+(t?`; path=`+t:this.current_default_config.path?this.current_default_config.path:`; path=/`)+`; SameSite=Lax`,!0)},e.prototype.isKey=function(e){return RegExp(`(?:^|;\\s*)`+encodeURIComponent(e).replace(/[\-\.\+\*]/g,`\\$&`)+`\\s*\\=`).test(document.cookie)},e.prototype.keys=function(){if(!document.cookie)return[];for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,``).split(/\s*(?:\=[^;]*)?;\s*/),t=0;t<e.length;t++)e[t]=decodeURIComponent(e[t]);return e},e}(),Cs=null;function ws(){return Cs??=new Ss,{cookies:y(Cs)}}var Ts={menu:{title:`Uživatelé`},meta:{users:{list:{title:`Seznam uživatelů`},edit:{title:`Upravit uživatele: {user}`},add:{title:`Přidat uživatele`}}},breadcrumbs:{users:`uživatelé`,addUser:`přidat uživatele`,editUser:`upravit uživatele`},headings:{users:`Uživatelé`,addUser:`Přidat uživatele`,editUser:`Upravit uživatele`,remove:`Odebrat uživatele?`,removeBulk:`Odebrat uživatele?`,discard:`Zahodit změny?`,changeUsername:`Změnit uživatelské jméno`,changePassword:`Změnit heslo`},subHeadings:{users:`Správa uživatelských účtů smart panelu`,addUser:`Přidat nového uživatele smart panelu`},messages:{requestError:`Něco se pokazilo, zkuste to prosím znovu později.`,created:`Nový uživatel byl úspěšně přidán.`,notCreated:`Něco se pokazilo. Uživatele se nepodařilo vytvořit.`,edited:`Změny uloženy! Uživatel: {user} byl aktualizován.`,notEdited:`Něco se pokazilo. Aktualizace uživatele nebyla úspěšná.`,notFound:`Uživatel, kterého hledáte, neexistuje nebo byl odebrán.`,removed:`Uživatel: {user} byl úspěšně odebrán.`,removeCanceled:`Odebrání uživatele: {user} bylo zrušeno.`,notRemoved:`Něco se pokazilo a uživatel: {user} nebyl odebrán.`,deletedWhileEditing:`Tento uživatel byl smazán a již není k dispozici.`,usernameEdited:`Uživatelské jméno bylo úspěšně aktualizováno.`,usernameNotEdited:`Nepodařilo se aktualizovat uživatelské jméno. Zkuste to prosím znovu.`,passwordEdited:`Heslo uživatele bylo úspěšně aktualizováno.`,passwordNotEdited:`Nepodařilo se aktualizovat heslo uživatele. Zkuste to prosím znovu.`,bulkRemoved:`{count} uživatel(ů) bylo odebráno.`,bulkRemoveFailed:`Nepodařilo se odebrat {count} uživatel(ů).`,bulkRemoveCanceled:`Hromadné odebrání uživatelů bylo zrušeno.`},texts:{confirmRemove:`Opravdu chcete odebrat uživatele: {user}? Tuto akci nelze vrátit zpět.`,confirmBulkRemove:`Opravdu chcete odebrat {count} uživatel(ů)? Tuto akci nelze vrátit zpět.`,misc:{noUsers:`Nemáte nakonfigurovaného žádného uživatele`,noFilteredUsers:`Nebyli nalezeni žádní uživatelé odpovídající aktivním kritériím filtru`,loadingUsers:`Načítání uživatelů...`,loadingUser:`Načítání uživatele...`,confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`}},fields:{search:{placeholder:`Hledat uživatele...`},role:{title:`Role uživatele`,placeholder:`Vyberte roli`,validation:{required:`Vyberte prosím roli uživatele`},options:{user:`Uživatel`,admin:`Administrátor`,owner:`Vlastník`}},username:{title:`Uživatelské jméno`,validation:{required:`Vyplňte prosím své uživatelské jméno`}},newUsername:{title:`Nové uživatelské jméno`,validation:{required:`Vyplňte prosím nové uživatelské jméno`}},password:{title:`Heslo`,validation:{required:`Vyplňte prosím své heslo`}},repeatPassword:{title:`Potvrzení hesla`,validation:{required:`Potvrďte prosím své nové heslo`,different:`Hesla se neshodují`}},newPassword:{title:`Nové heslo`,validation:{required:`Vyplňte prosím nové heslo`}},newRepeatPassword:{title:`Potvrzení hesla`,validation:{required:`Potvrďte prosím nové heslo`,different:`Hesla se neshodují`}},email:{title:`E-mail`,placeholder:`např. jan{'@'}novak.cz`,validation:{email:`Zadejte prosím platnou e-mailovou adresu`}},firstName:{title:`Jméno`,placeholder:`např. Jan`},lastName:{title:`Příjmení`,placeholder:`např. Novák`}},table:{columns:{username:{title:`Uživatelské jméno`},firstName:{title:`Jméno`},lastName:{title:`Příjmení`},email:{title:`E-mail`},role:{title:`Role`}}},role:{user:`Uživatel`,admin:`Administrátor`,owner:`Vlastník`,display:`Displej`},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`}}},Es={menu:{title:`Benutzer`},meta:{users:{list:{title:`Benutzer auflisten`},edit:{title:`Benutzer bearbeiten: {user}`},add:{title:`Benutzer hinzufügen`}}},breadcrumbs:{users:`Benutzer`,addUser:`Benutzer hinzufügen`,editUser:`Benutzer bearbeiten`},headings:{users:`Benutzer`,addUser:`Benutzer hinzufügen`,editUser:`Benutzer bearbeiten`,remove:`Benutzer entfernen?`,removeBulk:`Benutzer entfernen?`,discard:`Änderungen verwerfen?`,changeUsername:`Benutzernamen ändern`,changePassword:`Passwort ändern`},subHeadings:{users:`Smart Panel Benutzerkonten verwalten`,addUser:`Neuen Smart Panel Benutzer hinzufügen`},messages:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`,created:`Neuer Benutzer erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Der Benutzer konnte nicht erstellt werden.`,edited:`Änderungen gespeichert! Der Benutzer: {user} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Benutzeraktualisierung war nicht erfolgreich.`,notFound:`Der gesuchte Benutzer existiert nicht oder wurde entfernt.`,removed:`Der Benutzer: {user} wurde erfolgreich entfernt.`,removeCanceled:`Entfernung von Benutzer: {user} wurde abgebrochen.`,notRemoved:`Etwas ist schiefgelaufen, der Benutzer: {user} wurde nicht entfernt.`,deletedWhileEditing:`Dieser Benutzer wurde gelöscht und ist nicht mehr verfügbar.`,usernameEdited:`Benutzername wurde erfolgreich aktualisiert.`,usernameNotEdited:`Aktualisierung des Benutzernamens fehlgeschlagen. Bitte versuchen Sie es erneut.`,passwordEdited:`Benutzerpasswort wurde erfolgreich aktualisiert.`,passwordNotEdited:`Änderung des Benutzerpassworts fehlgeschlagen. Bitte versuchen Sie es erneut.`,bulkRemoved:`{count} Benutzer wurden entfernt.`,bulkRemoveFailed:`Entfernung von {count} Benutzern fehlgeschlagen.`,bulkRemoveCanceled:`Massenentfernung von Benutzern wurde abgebrochen.`},texts:{confirmRemove:`Sind Sie sicher, dass Sie den Benutzer: {user} entfernen möchten? Dies kann nicht rückgängig gemacht werden.`,confirmBulkRemove:`Sind Sie sicher, dass Sie {count} Benutzer entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,misc:{noUsers:`Sie haben noch keine Benutzer konfiguriert`,noFilteredUsers:`Keine Benutzer gefunden, die den aktiven Filterkriterien entsprechen`,loadingUsers:`Benutzer werden geladen...`,loadingUser:`Benutzer wird geladen...`,confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`}},fields:{search:{placeholder:`Benutzer suchen...`},role:{title:`Benutzerrolle`,placeholder:`Rolle auswählen`,validation:{required:`Bitte wählen Sie eine Benutzerrolle`},options:{user:`Benutzer`,admin:`Administrator`,owner:`Besitzer`}},username:{title:`Benutzername`,validation:{required:`Bitte geben Sie Ihren Benutzernamen ein`}},newUsername:{title:`Neuer Benutzername`,validation:{required:`Bitte geben Sie den neuen Benutzernamen ein`}},password:{title:`Passwort`,validation:{required:`Bitte geben Sie Ihr Passwort ein`}},repeatPassword:{title:`Passwort bestätigen`,validation:{required:`Bitte bestätigen Sie Ihr neues Passwort`,different:`Passwörter stimmen nicht überein`}},newPassword:{title:`Neues Passwort`,validation:{required:`Bitte geben Sie ein neues Passwort ein`}},newRepeatPassword:{title:`Passwort bestätigen`,validation:{required:`Bitte bestätigen Sie das neue Passwort`,different:`Passwörter stimmen nicht überein`}},email:{title:`E-Mail`,placeholder:`z.B. max{'@'}mustermann.de`,validation:{email:`Bitte geben Sie eine gültige E-Mail-Adresse ein`}},firstName:{title:`Vorname`,placeholder:`z.B. Max`},lastName:{title:`Nachname`,placeholder:`z.B. Mustermann`}},table:{columns:{username:{title:`Benutzername`},firstName:{title:`Vorname`},lastName:{title:`Nachname`},email:{title:`E-Mail`},role:{title:`Rolle`}}},role:{user:`Benutzer`,admin:`Administrator`,owner:`Besitzer`,display:`Display`},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`}}},Ds={menu:{title:`Users`},meta:{users:{list:{title:`List users`},edit:{title:`Edit user: {user}`},add:{title:`Add user`}}},breadcrumbs:{users:`users`,addUser:`add user`,editUser:`edit user`},headings:{users:`Users`,addUser:`Add user`,editUser:`Edit user`,remove:`Remove user?`,removeBulk:`Remove users?`,discard:`Discard changes?`,changeUsername:`Change username`,changePassword:`Change password`},subHeadings:{users:`Manage smart panel user accounts`,addUser:`Add new smart panel user`},messages:{requestError:`Something went wrong, please try again later.`,created:`New user added successfully.`,notCreated:`Something went wrong. Unable to create the user.`,edited:`Changes saved! The user: {user} has been updated.`,notEdited:`Something went wrong. User update was not successful.`,notFound:`The user you are looking for doesn’t exist or may have been removed.`,removed:`The user: {user} was successfully removed.`,removeCanceled:`User: {user} removal has been canceled.`,notRemoved:`Something went wrong, and the user: {user} was not removed.`,deletedWhileEditing:`This user was deleted and is no longer available.`,usernameEdited:`User username has been successfully updated.`,usernameNotEdited:`Failed to update user username. Please try again.`,passwordEdited:`User password has been successfully updated.`,passwordNotEdited:`Failed to update user password. Please try again.`,bulkRemoved:`{count} user(s) have been removed.`,bulkRemoveFailed:`Failed to remove {count} user(s).`,bulkRemoveCanceled:`Bulk user removal has been canceled.`},texts:{confirmRemove:`Are you sure you want to remove user: {user}? This cannot be reversed.`,confirmBulkRemove:`Are you sure you want to remove {count} user(s)? This action cannot be undone.`,misc:{noUsers:`You don't have configured any user`,noFilteredUsers:`No users found matching the active filter criteria`,loadingUsers:`Loading users...`,loadingUser:`Loading user...`,confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`}},fields:{search:{placeholder:`Search users...`},role:{title:`User role`,placeholder:`Select role`,validation:{required:`Please select user role`},options:{user:`User`,admin:`Admin`,owner:`Owner`}},username:{title:`Username`,validation:{required:`Please fill in your username`}},newUsername:{title:`New username`,validation:{required:`Please fill in new username`}},password:{title:`Password`,validation:{required:`Please fill in your password`}},repeatPassword:{title:`Confirm password`,validation:{required:`Please confirm your new password`,different:`Passwords are not same`}},newPassword:{title:`New password`,validation:{required:`Please fill in new password`}},newRepeatPassword:{title:`Confirm password`,validation:{required:`Please confirm new password`,different:`Passwords are not same`}},email:{title:`Email`,placeholder:`eg. john{'@'}doe.com`,validation:{email:`Please provide valid email address`}},firstName:{title:`First name`,placeholder:`eg. John`},lastName:{title:`Last name`,placeholder:`eg. Doe`}},table:{columns:{username:{title:`Username`},firstName:{title:`First name`},lastName:{title:`Last name`},email:{title:`Email`},role:{title:`Role`}}},role:{user:`User`,admin:`Admin`,owner:`Owner`,display:`Display`},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`}}},Os={menu:{title:`Usuarios`},meta:{users:{list:{title:`Listar usuarios`},edit:{title:`Editar usuario: {user}`},add:{title:`Añadir usuario`}}},breadcrumbs:{users:`usuarios`,addUser:`añadir usuario`,editUser:`editar usuario`},headings:{users:`Usuarios`,addUser:`Añadir usuario`,editUser:`Editar usuario`,remove:`¿Eliminar usuario?`,removeBulk:`¿Eliminar usuarios?`,discard:`¿Descartar cambios?`,changeUsername:`Cambiar nombre de usuario`,changePassword:`Cambiar contraseña`},subHeadings:{users:`Gestionar cuentas de usuario del panel inteligente`,addUser:`Añadir nuevo usuario del panel inteligente`},messages:{requestError:`Algo salió mal, por favor inténtalo de nuevo más tarde.`,created:`Nuevo usuario añadido correctamente.`,notCreated:`Algo salió mal. No se pudo crear el usuario.`,edited:`¡Cambios guardados! El usuario: {user} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del usuario no fue exitosa.`,notFound:`El usuario que buscas no existe o puede haber sido eliminado.`,removed:`El usuario: {user} fue eliminado correctamente.`,removeCanceled:`La eliminación del usuario: {user} ha sido cancelada.`,notRemoved:`Algo salió mal y el usuario: {user} no fue eliminado.`,deletedWhileEditing:`Este usuario fue eliminado y ya no está disponible.`,usernameEdited:`El nombre de usuario ha sido actualizado correctamente.`,usernameNotEdited:`Error al actualizar el nombre de usuario. Por favor, inténtalo de nuevo.`,passwordEdited:`La contraseña del usuario ha sido actualizada correctamente.`,passwordNotEdited:`Error al actualizar la contraseña del usuario. Por favor, inténtalo de nuevo.`,bulkRemoved:`{count} usuario(s) han sido eliminados.`,bulkRemoveFailed:`Error al eliminar {count} usuario(s).`,bulkRemoveCanceled:`La eliminación masiva de usuarios ha sido cancelada.`},texts:{confirmRemove:`¿Estás seguro de que deseas eliminar al usuario: {user}? Esto no se puede revertir.`,confirmBulkRemove:`¿Estás seguro de que deseas eliminar {count} usuario(s)? Esta acción no se puede deshacer.`,misc:{noUsers:`No tienes ningún usuario configurado`,noFilteredUsers:`No se encontraron usuarios que coincidan con los criterios de filtro activos`,loadingUsers:`Cargando usuarios...`,loadingUser:`Cargando usuario...`,confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`}},fields:{search:{placeholder:`Buscar usuarios...`},role:{title:`Rol del usuario`,placeholder:`Seleccionar rol`,validation:{required:`Por favor selecciona el rol del usuario`},options:{user:`Usuario`,admin:`Administrador`,owner:`Propietario`}},username:{title:`Nombre de usuario`,validation:{required:`Por favor introduce tu nombre de usuario`}},newUsername:{title:`Nuevo nombre de usuario`,validation:{required:`Por favor introduce el nuevo nombre de usuario`}},password:{title:`Contraseña`,validation:{required:`Por favor introduce tu contraseña`}},repeatPassword:{title:`Confirmar contraseña`,validation:{required:`Por favor confirma tu nueva contraseña`,different:`Las contraseñas no coinciden`}},newPassword:{title:`Nueva contraseña`,validation:{required:`Por favor introduce la nueva contraseña`}},newRepeatPassword:{title:`Confirmar contraseña`,validation:{required:`Por favor confirma la nueva contraseña`,different:`Las contraseñas no coinciden`}},email:{title:`Correo electrónico`,placeholder:`ej. juan{'@'}ejemplo.com`,validation:{email:`Por favor proporciona una dirección de correo electrónico válida`}},firstName:{title:`Nombre`,placeholder:`ej. Juan`},lastName:{title:`Apellido`,placeholder:`ej. García`}},table:{columns:{username:{title:`Nombre de usuario`},firstName:{title:`Nombre`},lastName:{title:`Apellido`},email:{title:`Correo electrónico`},role:{title:`Rol`}}},role:{user:`Usuario`,admin:`Administrador`,owner:`Propietario`,display:`Pantalla`},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`}}},ks={menu:{title:`Użytkownicy`},meta:{users:{list:{title:`Lista użytkowników`},edit:{title:`Edytuj użytkownika: {user}`},add:{title:`Dodaj użytkownika`}}},breadcrumbs:{users:`użytkownicy`,addUser:`dodaj użytkownika`,editUser:`edytuj użytkownika`},headings:{users:`Użytkownicy`,addUser:`Dodaj użytkownika`,editUser:`Edytuj użytkownika`,remove:`Usunąć użytkownika?`,removeBulk:`Usunąć użytkowników?`,discard:`Odrzucić zmiany?`,changeUsername:`Zmień nazwę użytkownika`,changePassword:`Zmień hasło`},subHeadings:{users:`Zarządzaj kontami użytkowników smart panelu`,addUser:`Dodaj nowego użytkownika smart panelu`},messages:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`,created:`Nowy użytkownik został pomyślnie dodany.`,notCreated:`Coś poszło nie tak. Nie udało się utworzyć użytkownika.`,edited:`Zmiany zapisane! Użytkownik: {user} został zaktualizowany.`,notEdited:`Coś poszło nie tak. Aktualizacja użytkownika nie powiodła się.`,notFound:`Użytkownik, którego szukasz, nie istnieje lub mógł zostać usunięty.`,removed:`Użytkownik: {user} został pomyślnie usunięty.`,removeCanceled:`Usunięcie użytkownika: {user} zostało anulowane.`,notRemoved:`Coś poszło nie tak i użytkownik: {user} nie został usunięty.`,deletedWhileEditing:`Ten użytkownik został usunięty i nie jest już dostępny.`,usernameEdited:`Nazwa użytkownika została pomyślnie zaktualizowana.`,usernameNotEdited:`Nie udało się zaktualizować nazwy użytkownika. Spróbuj ponownie.`,passwordEdited:`Hasło użytkownika zostało pomyślnie zaktualizowane.`,passwordNotEdited:`Nie udało się zmienić hasła użytkownika. Spróbuj ponownie.`,bulkRemoved:`Usunięto {count} użytkowników.`,bulkRemoveFailed:`Nie udało się usunąć {count} użytkowników.`,bulkRemoveCanceled:`Masowe usuwanie użytkowników zostało anulowane.`},texts:{confirmRemove:`Czy na pewno chcesz usunąć użytkownika: {user}? Tej operacji nie można cofnąć.`,confirmBulkRemove:`Czy na pewno chcesz usunąć {count} użytkowników? Tej operacji nie można cofnąć.`,misc:{noUsers:`Nie masz skonfigurowanych żadnych użytkowników`,noFilteredUsers:`Nie znaleziono użytkowników pasujących do aktywnych kryteriów filtra`,loadingUsers:`Ładowanie użytkowników...`,loadingUser:`Ładowanie użytkownika...`,confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`}},fields:{search:{placeholder:`Szukaj użytkowników...`},role:{title:`Rola użytkownika`,placeholder:`Wybierz rolę`,validation:{required:`Proszę wybrać rolę użytkownika`},options:{user:`Użytkownik`,admin:`Administrator`,owner:`Właściciel`}},username:{title:`Nazwa użytkownika`,validation:{required:`Proszę podać nazwę użytkownika`}},newUsername:{title:`Nowa nazwa użytkownika`,validation:{required:`Proszę podać nową nazwę użytkownika`}},password:{title:`Hasło`,validation:{required:`Proszę podać hasło`}},repeatPassword:{title:`Potwierdź hasło`,validation:{required:`Proszę potwierdzić nowe hasło`,different:`Hasła nie są identyczne`}},newPassword:{title:`Nowe hasło`,validation:{required:`Proszę podać nowe hasło`}},newRepeatPassword:{title:`Potwierdź hasło`,validation:{required:`Proszę potwierdzić nowe hasło`,different:`Hasła nie są identyczne`}},email:{title:`E-mail`,placeholder:`np. jan{'@'}kowalski.pl`,validation:{email:`Proszę podać prawidłowy adres e-mail`}},firstName:{title:`Imię`,placeholder:`np. Jan`},lastName:{title:`Nazwisko`,placeholder:`np. Kowalski`}},table:{columns:{username:{title:`Nazwa użytkownika`},firstName:{title:`Imię`},lastName:{title:`Nazwisko`},email:{title:`E-mail`},role:{title:`Rola`}}},role:{user:`Użytkownik`,admin:`Administrator`,owner:`Właściciel`,display:`Wyświetlacz`},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`}}},As={menu:{title:`Používatelia`},meta:{users:{list:{title:`Zoznam používateľov`},edit:{title:`Upraviť používateľa: {user}`},add:{title:`Pridať používateľa`}}},breadcrumbs:{users:`používatelia`,addUser:`pridať používateľa`,editUser:`upraviť používateľa`},headings:{users:`Používatelia`,addUser:`Pridať používateľa`,editUser:`Upraviť používateľa`,remove:`Odstrániť používateľa?`,removeBulk:`Odstrániť používateľov?`,discard:`Zahodiť zmeny?`,changeUsername:`Zmeniť používateľské meno`,changePassword:`Zmeniť heslo`},subHeadings:{users:`Spravujte používateľské účty smart panelu`,addUser:`Pridať nového používateľa smart panelu`},messages:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`,created:`Nový používateľ bol úspešne pridaný.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť používateľa.`,edited:`Zmeny uložené! Používateľ: {user} bol aktualizovaný.`,notEdited:`Niečo sa pokazilo. Aktualizácia používateľa nebola úspešná.`,notFound:`Používateľ, ktorého hľadáte, neexistuje alebo bol odstránený.`,removed:`Používateľ: {user} bol úspešne odstránený.`,removeCanceled:`Odstránenie používateľa: {user} bolo zrušené.`,notRemoved:`Niečo sa pokazilo a používateľ: {user} nebol odstránený.`,deletedWhileEditing:`Tento používateľ bol odstránený a už nie je dostupný.`,usernameEdited:`Používateľské meno bolo úspešne aktualizované.`,usernameNotEdited:`Nepodarilo sa aktualizovať používateľské meno. Skúste to prosím znova.`,passwordEdited:`Heslo používateľa bolo úspešne aktualizované.`,passwordNotEdited:`Nepodarilo sa aktualizovať heslo používateľa. Skúste to prosím znova.`,bulkRemoved:`{count} používateľov bolo odstránených.`,bulkRemoveFailed:`Nepodarilo sa odstrániť {count} používateľov.`,bulkRemoveCanceled:`Hromadné odstránenie používateľov bolo zrušené.`},texts:{confirmRemove:`Naozaj chcete odstrániť používateľa: {user}? Toto sa nedá vrátiť.`,confirmBulkRemove:`Naozaj chcete odstrániť {count} používateľov? Túto akciu nie je možné vrátiť.`,misc:{noUsers:`Nemáte nakonfigurovaného žiadneho používateľa`,noFilteredUsers:`Neboli nájdení žiadni používatelia zodpovedajúci aktívnym filtrom`,loadingUsers:`Načítavanie používateľov...`,loadingUser:`Načítavanie používateľa...`,confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`}},fields:{search:{placeholder:`Vyhľadať používateľov...`},role:{title:`Rola používateľa`,placeholder:`Vyberte rolu`,validation:{required:`Prosím vyberte rolu používateľa`},options:{user:`Používateľ`,admin:`Administrátor`,owner:`Vlastník`}},username:{title:`Používateľské meno`,validation:{required:`Prosím vyplňte svoje používateľské meno`}},newUsername:{title:`Nové používateľské meno`,validation:{required:`Prosím vyplňte nové používateľské meno`}},password:{title:`Heslo`,validation:{required:`Prosím vyplňte svoje heslo`}},repeatPassword:{title:`Potvrdiť heslo`,validation:{required:`Prosím potvrďte svoje nové heslo`,different:`Heslá sa nezhodujú`}},newPassword:{title:`Nové heslo`,validation:{required:`Prosím vyplňte nové heslo`}},newRepeatPassword:{title:`Potvrdiť heslo`,validation:{required:`Prosím potvrďte nové heslo`,different:`Heslá sa nezhodujú`}},email:{title:`Email`,placeholder:`napr. jan{'@'}novak.sk`,validation:{email:`Prosím zadajte platnú emailovú adresu`}},firstName:{title:`Meno`,placeholder:`napr. Ján`},lastName:{title:`Priezvisko`,placeholder:`napr. Novák`}},table:{columns:{username:{title:`Používateľské meno`},firstName:{title:`Meno`},lastName:{title:`Priezvisko`},email:{title:`Email`},role:{title:`Rola`}}},role:{user:`Používateľ`,admin:`Administrátor`,owner:`Vlastník`,display:`Displej`},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`}}},js={"cs-CZ":Ts,"de-DE":Es,"en-US":Ds,"es-ES":Os,"pl-PL":ks,"sk-SK":As},Ms=(e,t)=>{let n=t.meta&&`guards`in t.meta?t.meta.guards:[];return n&&typeof n==`object`&&`roles`in n&&Array.isArray(n.roles)&&n.roles.length>0?e!==void 0&&n.roles.includes(e.role)?!0:{name:O.ROOT}:!0},Ns=[{path:`users`,name:$n.USERS,component:()=>Et(()=>import(`./view-users-B-m50sCU.js`),__vite__mapDeps([19,1,2,3,4,5,20,21,22,23,24,10])),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:()=>Jt.global.t(`usersModule.menu.title`),icon:`mdi:users-group`,menu:1e3},children:[{path:`add`,name:$n.USER_ADD,component:()=>Et(()=>import(`./view-user-add-CdlbezB7.js`),__vite__mapDeps([25,1,2,3,4,5,17,26,23,20,21,22,10])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]}}},{path:`:id`,name:$n.USER_EDIT,component:()=>Et(()=>import(`./view-user-edit-S0Up49jC.js`),__vite__mapDeps([27,1,2,3,4,5,17,26,23,20,21,22,10])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]}}}]}],Ps=Y().uuid(),Fs=q({id:Ps,draft:R().default(!1),isHidden:R().default(!1),username:Y().trim().nonempty(),password:Y().trim().optional(),email:Y().email().nullable().default(null),firstName:Y().nullable().default(null),lastName:Y().nullable().default(null),role:K(nt).default(nt.user),language:Y().nullable().default(null),createdAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});q({fetching:q({items:R().default(!1),item:H(Ps)}),creating:H(Ps),updating:H(Ps),deleting:H(Ps)}),q({id:Ps,data:_e({})}),q({id:Ps,data:q({username:Y().trim().nonempty(),email:Y().email().trim().transform(e=>e===``?null:e).nullable(),firstName:Y().trim().transform(e=>e===``?null:e).nullable(),lastName:Y().trim().transform(e=>e===``?null:e).nullable(),role:K(nt).default(nt.user),language:Y().nullable().optional()})}),q({id:Ps}),q({id:Ps});var Is=q({id:Ps.optional().default(ft()),draft:R().optional().default(!1),data:q({username:Y().trim().nonempty(),password:Y().trim().nonempty(),email:Y().email().trim().transform(e=>e===``?null:e).nullable().optional(),firstName:Y().trim().transform(e=>e===``?null:e).nullable().optional(),lastName:Y().trim().transform(e=>e===``?null:e).nullable().optional(),role:K(nt).default(nt.user),language:Y().nullable().optional()})}),Ls=q({id:Ps,data:q({username:Y().trim().optional(),password:Y().trim().optional(),email:Y().email().trim().transform(e=>e===``?null:e).nullable().optional(),firstName:Y().trim().transform(e=>e===``?null:e).nullable().optional(),lastName:Y().trim().transform(e=>e===``?null:e).nullable().optional(),role:K(nt).optional(),language:Y().nullable().optional()})});q({id:Ps}),q({id:Ps});var Rs=q({id:Y().uuid().optional(),username:Y().trim().nonempty(),password:Y().trim().nonempty(),email:Y().email().trim().transform(e=>e===``?null:e).nullable().optional(),first_name:Y().trim().transform(e=>e===``?null:e).nullable().optional(),last_name:Y().trim().transform(e=>e===``?null:e).nullable().optional(),role:K(nt).optional(),language:Y().nullable().optional()}),zs=q({username:Y().trim().nonempty().optional(),password:Y().trim().nonempty().optional(),email:Y().email().trim().transform(e=>e===``?null:e).nullable().optional(),first_name:Y().trim().transform(e=>e===``?null:e).nullable().optional(),last_name:Y().trim().transform(e=>e===``?null:e).nullable().optional(),role:K(nt).optional(),language:Y().nullable().optional()});q({id:Y().uuid(),username:Y().trim().nonempty(),email:Y().email().trim().nullable(),first_name:Y().trim().nullable(),last_name:Y().trim().nullable(),is_hidden:R(),role:K(nt),language:Y().nullable().optional(),created_at:Y().date(),updated_at:Y().date().nullable().optional()});var Bs=e=>{let t=Fs.safeParse({id:e.id,username:e.username,email:e.email,firstName:e.first_name,lastName:e.last_name,isHidden:e.is_hidden,role:e.role,language:e.language??null,createdAt:e.created_at,updatedAt:e.updated_at});if(!t.success)throw new er(`Failed to validate received user data.`);return t.data},Vs=e=>{let t=Rs.safeParse({id:e.id,username:e.username,password:e.password,email:e.email,first_name:e.firstName,last_name:e.lastName,role:e.role,language:e.language});if(!t.success)throw new er(`Failed to validate create user request.`);return t.data},Hs=e=>{let t=zs.safeParse({username:e.username,password:e.password,email:e.email,first_name:e.firstName,last_name:e.lastName,role:e.role,language:e.language});if(!t.success)throw new er(`Failed to validate update user request.`);return t.data},Us={fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[]},Ws=it(`users_module-users`,()=>{let e=fn(),t=Ke(),n=N(Us),r=N(!1),i=N({}),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=e=>d({id:e.id,data:Bs(e.data)}),d=e=>{if(e.id&&i.value&&e.id in i.value){let n=Fs.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new er(`Failed to insert user.`);return i.value[n.data.id]=n.data}let n=Fs.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new er(`Failed to insert user.`);return i.value=i.value??{},i.value[n.data.id]=n.data},f=e=>{i.value&&delete i.value[e.id]},p=async t=>{if(n.value.fetching.item.includes(t.id))throw new Jn(`Already fetching user.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${te}/${qn}/users/{id}`,{params:{path:{id:t.id}}});if(n!==void 0){let e=Bs(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch user.`;throw r&&(o=Gt(r,o)),new Jn(o,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,onEvent:u,set:d,unset:f,get:p,fetch:async()=>{if(n.value.fetching.items)throw new Jn(`Already fetching users.`);n.value.fetching.items=!0;try{let{data:t,error:n,response:a}=await e.client.GET(`/${te}/${qn}/users`);if(t!==void 0)return i.value=Object.fromEntries(t.data.map(e=>{let t=Bs(e);return[t.id,t]})),r.value=!0,Object.values(i.value);let o=`Failed to fetch users.`;throw n&&(o=Gt(n,o)),new Jn(o,a.status)}finally{n.value.fetching.items=!1}},add:async r=>{let a=Is.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new er(`Failed to add user.`);let o=Fs.safeParse({...a.data.data,id:a.data.id,draft:a.data.draft,createdAt:new Date});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new er(`Failed to add user.`);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;{let t=o.data.password;if(t===void 0)throw new er(`Failed to add user.`);try{let{data:n,error:a,response:s}=await e.client.POST(`/${te}/${qn}/users`,{body:{data:Vs({...o.data,id:r.id,password:t})}});if(n!==void 0&&n.data.id===r.id){let e=Bs(n.data);return i.value[e.id]=e,e}delete i.value[o.data.id];let c=`Failed to create user.`;throw a&&(c=Gt(a,c)),new Jn(c,s.status)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.data.id)}}},edit:async r=>{let a=Ls.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new er(`Failed to edit user.`);if(n.value.updating.includes(r.id))throw new Qn(`User is already being updated.`);if(!(r.id in i.value))throw new Qn(`Failed to get user data to update.`);let o=Fs.safeParse({...i.value[r.id],...(0,Ka.omitBy)(a.data.data,Ka.isUndefined)});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new er(`Failed to edit user.`);if(n.value.updating.push(r.id),i.value[o.data.id]=o.data,o.data.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.data.id),o.data;try{let{data:t,error:n,response:a}=await e.client.PATCH(`/${te}/${qn}/users/{id}`,{params:{path:{id:r.id}},body:{data:Hs(o.data)}});if(t!==void 0){let e=Bs(t.data);return i.value[e.id]=e,e}await p({id:r.id});let s=`Failed to update user.`;throw n&&(s=Gt(n,s)),new Jn(s,a.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},save:async r=>{if(n.value.updating.includes(r.id))throw new Qn(`User is already being saved.`);if(!(r.id in i.value))throw new Qn(`Failed to get user data to save.`);let a=Fs.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new er(`Failed to save user.`);n.value.updating.push(r.id);let o=a.data.password;if(o===void 0)throw new er(`Failed to add user.`);try{let{data:t,error:n,response:s}=await e.client.POST(`/${te}/${qn}/users`,{body:{data:Vs({...a.data,id:r.id,password:o})}});if(t!==void 0&&t.data.id===r.id){let e=Bs(t.data);return i.value[e.id]=e,e}let c=`Failed to create user.`;throw n&&(c=Gt(n,c)),new Jn(c,s.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 Qn(`User 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(`/${te}/${qn}/users/{id}`,{params:{path:{id:t.id}}});if(r.status===204)return!0;await p({id:t.id});let i=`Remove account failed.`;throw n&&(i=Gt(n,i)),new Jn(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),Gs=e=>Ws(e),Ks=Symbol(`FB-Module-Users`),qs={install:(e,t)=>{let n=Ye(e),r=ye(e),i=Re(e),a=Ce(e),o=Ie(e);for(let[e,n]of Object.entries(js)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{usersModule:n});t.i18n.global.setLocaleMessage(e,r)}let s=Gs(t.store);e.provide(Yn,s),n.addStore(Yn,s),o.addModule(Ks,{type:Zn,name:`Users`,description:`Create and manage user accounts and their profiles.`,elements:[]}),r.register((e,t)=>Ms(e,t)),t.router.getRoutes().find(e=>e.name===O.ROOT)&&Ns.forEach(e=>{t.router.addRoute(O.ROOT,e)}),i.on(`event`,e=>{if(e?.event?.startsWith(`UsersModule.`)&&!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case Xn.USER_CREATED:case Xn.USER_UPDATED:s.onEvent({id:e.payload.id,data:e.payload});break;case Xn.USER_DELETED:s.unset({id:e.payload.id});break;default:a.warn(`Unhandled users module event:`,e.event)}})}},Js=class extends Error{exception;constructor(e,t=null){super(e),this.name=`AuthException`,this.exception=t}},Ys=class extends Js{constructor(e,t=null){super(e,t),this.name=`AuthApiException`}},Xs=class extends Js{constructor(e,t=null){super(e,t),this.name=`AuthValidationException`}};q({sub:Y().uuid(),role:K(nt),exp:G(),iat:G(),jti:Y().uuid()});var Zs=q({accessToken:Y().trim().min(1),refreshToken:Y().trim().min(1),expiration:z([Y(),G(),Oe(),Le()]).transform(e=>e?new Date(e):null),type:K(Vn)});q({fetching:R().default(!1),creating:R().default(!1),registering:R().default(!1),updating:R().default(!1)}),q({data:q({username:Y().trim().min(1),password:Y().trim().min(1)})}),q({id:Y().uuid(),data:q({firstName:Y().nullable().optional(),lastName:Y().nullable().optional(),email:Y().nullable().optional(),language:Y().nullable().optional(),password:q({current:Y().trim().min(1),new:Y().trim().min(1)}).optional()})}),q({id:Y().uuid().optional(),data:q({username:Y().trim().min(1),password:Y().trim().min(1),firstName:Y().nullable().optional(),lastName:Y().nullable().optional(),email:Y().nullable().optional()})}),q({username:Y().trim().min(1),password:Y().trim().min(1)}),q({access_token:Y().trim().min(1),refresh_token:Y().trim().min(1),type:K(Vn),expiration:Y().date()});var Qs=e=>{let t=Zs.safeParse({accessToken:e.access_token,refreshToken:e.refresh_token,expiration:e.expiration,type:e.type});if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new Xs(`Failed to validate received token pair data.`);return t.data},$s={fetching:!1,creating:!1,registering:!1,updating:!1},ec=it(`auth_module-session`,()=>{let e=fn(),t=Ke(),{cookies:n}=ws(),r=N($s),i=N(null),a=N(null),o=()=>i.value?.accessToken??null,s=()=>i.value?.refreshToken??null,c=()=>i.value!==null&&a.value!==null,l=()=>{if(i.value===null)return!1;let e=i.value.expiration;return e===null||e.getTime()<new Date().getTime()},u,d,f=async()=>{if(i.value!==null)return!1;let e=y(Kn),n=y(Bn);if(n===null)return p(),!1;if(e!==null){let r=gs(e),a=Zs.safeParse({accessToken:e,refreshToken:n,expiration:r.exp?r.exp*1e3:null,type:Vn.BEARER});if(a.success)i.value=a.data;else return t.error(`Schema validation failed with:`,a.error),p(),!1}else try{if(!await v())return p(),!1}catch(e){throw p(),e instanceof Ys?e:new Js(`Failed to initialize session.`,e instanceof Error?e:void 0)}try{return await m(),!0}catch(e){throw e instanceof Ys?e:new Js(`Failed to initialize session.`,e instanceof Error?e:void 0)}},p=()=>{r.value=$s,i.value=null,a.value=null,x(Kn),x(Bn)},m=async()=>{if(u!==void 0)return u;let t=(async()=>{if(r.value.fetching)throw new Js(`Already fetching profile.`);r.value.fetching=!0;try{let{data:t,error:n}=await e.client.GET(`/${te}/${Gn}/auth/profile`);if(t!==void 0)return a.value=Bs(t.data),a.value;let r=`Failed to get profile.`;throw n&&(r=Gt(n,r)),new Js(r)}finally{r.value.fetching=!1}})();u=t;try{return await t}finally{u=void 0}},h=async t=>{if(r.value.creating)throw new Js(`Already creating session.`);r.value.creating=!0;try{let{data:n,error:r}=await e.client.POST(`/${te}/${Gn}/auth/login`,{body:{data:{username:t.data.username,password:t.data.password}}});if(n!==void 0)return i.value=Qs(n.data),b(Kn,n.data.access_token),b(Bn,n.data.refresh_token),await m();let a=`Failed to create user session.`;throw r&&(a=Gt(r,a)),new Js(a)}finally{r.value.creating=!1}},g=async t=>{if(r.value.updating)throw new Js(`Profile is already being updated.`);if(a.value===null||a.value.id!==t.id)throw new Js(`Cannot edit profile for a different user.`);r.value.updating=!0;try{let n={};t.data.firstName!==void 0&&(n.first_name=t.data.firstName),t.data.lastName!==void 0&&(n.last_name=t.data.lastName),t.data.email!==void 0&&(n.email=t.data.email),t.data.language!==void 0&&(n.language=t.data.language),t.data.password!==void 0&&(n.password={current:t.data.password.current,new:t.data.password.new});let{data:r,error:i}=await e.client.PATCH(`/${te}/${qn}/users/{id}`,{params:{path:{id:t.id}},body:{data:n}});if(r!==void 0)return a.value=Bs(r.data),!0;let o=`Failed to update profile.`;throw i&&(o=Gt(i,o)),new Ys(o)}finally{r.value.updating=!1}},_=async t=>{if(r.value.registering)throw new Js(`Registration is already in progress.`);r.value.registering=!0;try{let{error:n,response:r}=await e.client.POST(`/${te}/${Gn}/auth/register`,{body:{data:{username:t.data.username,password:t.data.password,first_name:t.data.firstName??void 0,last_name:t.data.lastName??void 0,email:t.data.email??void 0}}});if(r.ok)return!0;let i=`Failed to register user.`;throw n&&(i=Gt(n,i)),new Ys(i)}finally{r.value.registering=!1}},v=async()=>{if(d!==void 0)return d;let t=(async()=>{if(r.value.updating)return!1;x(Kn);let t=y(Bn);if(t===null)return x(Bn),!1;r.value.updating=!0;try{let{data:n}=await e.client.POST(`/${te}/${Gn}/auth/refresh`,{body:{data:{token:t}}});return n===void 0?(x(Bn),!1):(i.value=Qs(n.data),b(Kn,n.data.access_token),b(Bn,n.data.refresh_token),!0)}finally{r.value.updating=!1}})();d=t;try{return await t}finally{d=void 0}},y=e=>n.get(e)!==null&&n.get(e)!==void 0&&n.get(e)!==``?n.get(e):null,b=(e,t)=>{let r=gs(t);n.set(e,t,new Date(r.exp*1e3).toUTCString(),`/`)},x=e=>{n.remove(e)};return{semaphore:r,tokenPair:i,profile:a,accessToken:o,refreshToken:s,isSignedIn:c,isExpired:l,initialize:f,clear:p,get:m,create:h,edit:g,register:_,refresh:v}}),tc=e=>ec(e),nc=Symbol(`FB-Module-Auth`),rc={install:(e,t)=>{let n=Ye(e),r=ye(e),i=Ne(e),a=Re(e),o=Ce(e),s=Ie(e);for(let[e,n]of Object.entries($a)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{authModule:n});t.i18n.global.setLocaleMessage(e,r)}let c=tc(t.store);i.use({async onRequest({request:e}){return c.tokenPair!==null&&c.isExpired()&&(await c.refresh()||c.clear()),c.tokenPair!==null&&e.headers.set(`Authorization`,`Bearer ${c.tokenPair.accessToken}`),e},async onResponse({request:e,response:t}){if(t.status!==401)return;let n=e.headers instanceof Headers?e.headers:new Headers(e.headers);if(n.get(`X-Retried`)!==null)return;if(c.tokenPair&&c.isExpired())await c.refresh()||c.clear();else if((n.get(`Authorization`)||``).startsWith(`Bearer`))return;if(c.tokenPair===null)return;let r=new Headers(n);r.set(`X-Retried`,`1`),r.set(`Authorization`,`Bearer ${c.tokenPair.accessToken}`);let i=new Request(e,{headers:r});return fetch(i)}}),e.provide(pe,c),n.addStore(pe,c),s.addModule(nc,{type:Un,name:`Sign‑in & Security`,description:`Sign in, secure your account, and manage your personal profile.`,elements:[]}),t.router.beforeEach(async()=>await _s(n,o)),t.router.beforeEach(()=>fs(n)),t.router.beforeEach(()=>{let e=c.tokenPair?.accessToken??null;return e?((!a.connected||(0,Ka.get)(a.auth??{},`token`,void 0)!==e)&&(a.connected&&a.disconnect(),a.auth={token:e},a.connect()),!0):(a.connected&&a.disconnect(),a.auth={},!0)}),r.register((e,t)=>eo(n,t)),r.register((e,t)=>to(n,t)),vs.forEach(e=>{t.router.addRoute(e)}),ys.forEach(e=>{t.router.addRoute(e)}),t.router.getRoutes().find(e=>e.name===O.ROOT)&&bs.forEach(e=>{t.router.addRoute(O.ROOT,e)});let l=N(localStorage.getItem(Wn)===`true`),u={isSignedIn:j(()=>c.isSignedIn()),isLocked:j(()=>l.value),details:j(()=>{let e=c.profile;return e===null?null:{id:e.id,username:e.username,name:e.firstName||e.lastName?`${e.firstName} ${e.lastName}`:null,email:e.email??null,role:e.role}}),signIn:async e=>{try{return await c.create({data:{username:e.username,password:e.password}}),l.value=!1,localStorage.removeItem(Wn),!0}catch{return!1}},signOut:async()=>{try{return l.value=!1,localStorage.removeItem(Wn),Ht(),c.clear(),!0}catch{return!1}},lock:()=>(l.value=!0,localStorage.setItem(Wn,`true`),Promise.resolve(!0)),unlock:()=>(l.value=!1,localStorage.removeItem(Wn),Promise.resolve(!0)),canAccess:()=>Promise.resolve(!0),routes:{edit:Hn.PROFILE_GENERAL,security:Hn.PROFILE_SECURITY,signIn:Hn.SIGN_IN,signUp:Hn.SIGN_UP,lock:Hn.LOCK_SCREEN}};Se(e,u),m(()=>c.profile,e=>{if(e?.language){let n=st[e.language];n&&(t.i18n.global.locale.value=n,Ae(n))}else if(e&&!e.language){let e=ke();t.i18n.global.locale.value=e,Ht(),Qe(e)}},{immediate:!0}),tt(e).on(we,e=>{let n=c.profile;n&&typeof e==`string`&&c.edit({id:n.id,data:{language:e.split(`-`)[0]}}).catch(()=>{if(n.language){let e=st[n.language];e&&(t.i18n.global.locale.value=e,Ae(e))}else{let e=ke();t.i18n.global.locale.value=e,Ht(),Qe(e)}})}),r.register((e,t)=>no(u,t))}},ic=()=>{let{t:e}=b(),t=fn(),n=N(``),r=N(!1),i=N(null);return{personalityContent:n,personalityLoading:r,personalityError:i,fetchPersonality:async()=>{r.value=!0,i.value=null;try{let r=await t.client.GET(`/${te}/${jn}/personality`);r.data===void 0?i.value=e(`buddyModule.messages.errors.loadPersonality`):n.value=r.data.data.content}catch{i.value=e(`buddyModule.messages.errors.loadPersonality`)}finally{r.value=!1}},savePersonality:async a=>{r.value=!0,i.value=null;try{let r=await t.client.PATCH(`/${te}/${jn}/personality`,{body:{data:{content:a}}}),o=r.response?.status;return o&&o>=400?(i.value=e(`buddyModule.messages.errors.savePersonality`),!1):(r.data!==void 0&&(n.value=r.data.data.content),!0)}catch{return i.value=e(`buddyModule.messages.errors.savePersonality`),!1}finally{r.value=!1}}}},ac=f({name:`BuddyConfigForm`,__name:`buddy-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),c=rt(),{providerStatuses:l,providerFetchFailed:u,fetchProviderStatuses:f}=In(),{sttProviderStatuses:p,sttProviderFetchFailed:_,fetchSttProviderStatuses:x}=An(),{ttsProviderStatuses:S,ttsProviderFetchFailed:C,fetchTtsProviderStatuses:w}=Pn(),{personalityContent:E,fetchPersonality:O,savePersonality:ee}=ic();s(async()=>{await Promise.all([f(),x(),w(),O()])});let{formEl:te,model:M,formChanged:ne,submit:re,formResult:ie}=tn({config:n.config,messages:{success:o(`buddyModule.messages.config.edited`),error:o(`buddyModule.messages.config.notEdited`)}}),ae=N(``),oe=N(``),se=j(()=>ae.value!==oe.value);m(E,e=>{se.value||(ae.value=e,oe.value=e)},{immediate:!0});let ce=j(()=>{let e=[{value:Fn,label:o(`buddyModule.fields.config.provider.options.none`),disabled:!1,tag:o(`buddyModule.fields.config.provider.tags.ruleBasedOnly`),tagType:`info`}];for(let t of l.value){let n,r;t.enabled&&!t.configured&&(n=o(`buddyModule.fields.config.provider.notConfigured`),r=`warning`),e.push({value:t.type,label:t.name,disabled:!t.enabled,tag:n,tagType:r})}return u.value&&M.provider&&M.provider!==`none`&&(e.some(e=>e.value===M.provider)||e.push({value:M.provider,label:M.provider,disabled:!1})),e}),le=j(()=>{let e=[{value:Mn,label:o(`buddyModule.fields.config.sttPlugin.options.none`),disabled:!1,tag:o(`buddyModule.fields.config.sttPlugin.tags.disabled`),tagType:`info`}];for(let t of p.value){let n,r;t.enabled&&!t.configured&&(n=o(`buddyModule.fields.config.sttPlugin.notConfigured`),r=`warning`),e.push({value:t.type,label:t.name,disabled:!t.enabled,tag:n,tagType:r})}return _.value&&M.sttPlugin&&M.sttPlugin!==`none`&&(e.some(e=>e.value===M.sttPlugin)||e.push({value:M.sttPlugin,label:M.sttPlugin,disabled:!1})),e}),ue=j(()=>{let e=[{value:Nn,label:o(`buddyModule.fields.config.ttsPlugin.options.none`),disabled:!1,tag:o(`buddyModule.fields.config.ttsPlugin.tags.disabled`),tagType:`info`}];for(let t of S.value){let n,r;t.enabled&&!t.configured&&(n=o(`buddyModule.fields.config.ttsPlugin.notConfigured`),r=`warning`),e.push({value:t.type,label:t.name,disabled:!t.enabled,tag:n,tagType:r})}return C.value&&M.ttsPlugin&&M.ttsPlugin!==`none`&&(e.some(e=>e.value===M.ttsPlugin)||e.push({value:M.ttsPlugin,label:M.ttsPlugin,disabled:!1})),e}),de=y({});return m(()=>ie.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{if(e){r(`update:remote-form-submit`,!1);try{await re()}catch{return}se.value&&(await ee(ae.value)?(oe.value=E.value,ae.value=E.value):(c.error(o(`buddyModule.messages.errors.savePersonality`)),r(`update:remote-form-result`,dn.ERROR)))}}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!te.value)return;te.value.resetFields(),ae.value=oe.value}}),m(()=>ne.value||se.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:te,model:h(M),rules:de,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`buddyModule.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(M).enabled,"onUpdate:modelValue":t[0]||=e=>h(M).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyModule.fields.config.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(M).name,"onUpdate:modelValue":t[1]||=e=>h(M).name=e,placeholder:h(o)(`buddyModule.fields.config.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(u)?(i(),T(h(L),{key:0,type:`warning`,"show-icon":``,closable:!1,style:{"margin-bottom":`18px`}},{default:d(()=>[v(k(h(o)(`buddyModule.texts.providersFetchFailed`)),1)]),_:1})):g(``,!0),F(h(V),{label:h(o)(`buddyModule.fields.config.provider.title`),prop:`provider`},{default:d(()=>[F(h(X),{modelValue:h(M).provider,"onUpdate:modelValue":t[2]||=e=>h(M).provider=e,placeholder:h(o)(`buddyModule.fields.config.provider.placeholder`),name:`provider`},{default:d(()=>[(i(!0),P(A,null,a(ce.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value,disabled:e.disabled},{default:d(()=>[D(`span`,null,k(e.label),1),e.tag?(i(),T(h(ct),{key:0,size:`small`,type:e.tagType,effect:`light`,style:{"margin-left":`8px`}},{default:d(()=>[v(k(e.tag),1)]),_:2},1032,[`type`])):g(``,!0)]),_:2},1032,[`label`,`value`,`disabled`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`buddyModule.fields.config.personality.title`),prop:`personality`},{default:d(()=>[F(h(W),{modelValue:ae.value,"onUpdate:modelValue":t[3]||=e=>ae.value=e,type:`textarea`,rows:5,maxlength:2e3,"show-word-limit":``,placeholder:h(o)(`buddyModule.fields.config.personality.placeholder`),name:`personality`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(L),{type:`info`,"show-icon":``,closable:!1,style:{"margin-bottom":`18px`}},{default:d(()=>[v(k(h(o)(`buddyModule.fields.config.personality.description`)),1)]),_:1}),F(h(fe)),F(h(V),{label:h(o)(`buddyModule.fields.config.voiceEnabled.title`),prop:`voiceEnabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(M).voiceEnabled,"onUpdate:modelValue":t[4]||=e=>h(M).voiceEnabled=e,name:`voiceEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(L),{type:`info`,"show-icon":``,closable:!1,style:{"margin-bottom":`18px`}},{default:d(()=>[v(k(h(o)(`buddyModule.fields.config.voiceEnabled.description`)),1)]),_:1}),h(_)?(i(),T(h(L),{key:1,type:`warning`,"show-icon":``,closable:!1,style:{"margin-bottom":`18px`}},{default:d(()=>[v(k(h(o)(`buddyModule.texts.sttProvidersFetchFailed`)),1)]),_:1})):g(``,!0),F(h(V),{label:h(o)(`buddyModule.fields.config.sttPlugin.title`),prop:`sttPlugin`},{default:d(()=>[F(h(X),{modelValue:h(M).sttPlugin,"onUpdate:modelValue":t[5]||=e=>h(M).sttPlugin=e,placeholder:h(o)(`buddyModule.fields.config.sttPlugin.placeholder`),name:`sttPlugin`},{default:d(()=>[(i(!0),P(A,null,a(le.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value,disabled:e.disabled},{default:d(()=>[D(`span`,null,k(e.label),1),e.tag?(i(),T(h(ct),{key:0,size:`small`,type:e.tagType,effect:`light`,style:{"margin-left":`8px`}},{default:d(()=>[v(k(e.tag),1)]),_:2},1032,[`type`])):g(``,!0)]),_:2},1032,[`label`,`value`,`disabled`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),h(C)?(i(),T(h(L),{key:2,type:`warning`,"show-icon":``,closable:!1,style:{"margin-bottom":`18px`}},{default:d(()=>[v(k(h(o)(`buddyModule.texts.ttsProvidersFetchFailed`)),1)]),_:1})):g(``,!0),F(h(V),{label:h(o)(`buddyModule.fields.config.ttsPlugin.title`),prop:`ttsPlugin`},{default:d(()=>[F(h(X),{modelValue:h(M).ttsPlugin,"onUpdate:modelValue":t[6]||=e=>h(M).ttsPlugin=e,placeholder:h(o)(`buddyModule.fields.config.ttsPlugin.placeholder`),name:`ttsPlugin`},{default:d(()=>[(i(!0),P(A,null,a(ue.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value,disabled:e.disabled},{default:d(()=>[D(`span`,null,k(e.label),1),e.tag?(i(),T(h(ct),{key:0,size:`small`,type:e.tagType,effect:`light`,style:{"margin-left":`8px`}},{default:d(()=>[v(k(e.tag),1)]),_:2},1032,[`type`])):g(``,!0)]),_:2},1032,[`label`,`value`,`disabled`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),oc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Buddy Chat`,chats:`Konverzace`,aboutBuddy:`Konfigurace AI Buddy`},subHeadings:{settings:`Konfigurace nastavení AI buddy asistenta`,chat:`Chatujte se svým AI buddy asistentem`},messages:{loadError:`Nepodařilo se načíst konfiguraci buddy`,config:{edited:`Konfigurace buddy byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci buddy`},errors:{unexpectedError:`Došlo k neočekávané chybě`,loadConversations:`Nepodařilo se načíst konverzace`,createConversation:`Nepodařilo se vytvořit konverzaci`,loadMessages:`Nepodařilo se načíst zprávy`,providerUnavailable:`AI poskytovatel je dočasně nedostupný. Zkuste to prosím později.`,sendMessage:`Nepodařilo se odeslat zprávu`,deleteConversation:`Nepodařilo se smazat konverzaci`,audioPlayback:`Nepodařilo se přehrát zvuk`,loadPersonality:`Nepodařilo se načíst osobnost`,savePersonality:`Nepodařilo se uložit osobnost`}},buttons:{save:{title:`Uložit`},back:{title:`Zpět`},retry:{title:`Opakovat`},newChat:{title:`Nový chat`},delete:{title:`Smazat`},cancel:{title:`Zrušit`},configure:{title:`Konfigurovat poskytovatele`},goToSettings:{title:`Přejít do nastavení`},setupWizard:{title:`Průvodce nastavením`}},fields:{config:{enabled:{title:`Povolit modul`},name:{title:`Jméno buddy`,placeholder:`Zadejte jméno buddy`},provider:{title:`Plugin AI poskytovatele`,placeholder:`Vyberte plugin AI poskytovatele`,notConfigured:`nenakonfigurováno`,tags:{ruleBasedOnly:`pouze na základě pravidel`},options:{none:`Žádný`}},voiceEnabled:{title:`Hlasové rozhraní`,description:`Povolte rozpoznávání řeči a hlasovou syntézu pro hands-free interakci s asistentem`},sttPlugin:{title:`Poskytovatel rozpoznávání řeči (Speech-to-Text)`,placeholder:`Vyberte poskytovatele rozpoznávání řeči`,notConfigured:`nenakonfigurováno`,options:{none:`Žádný`},tags:{disabled:`zakázáno`}},ttsPlugin:{title:`Poskytovatel hlasové syntézy (Text-to-Speech)`,placeholder:`Vyberte poskytovatele hlasové syntézy`,notConfigured:`nenakonfigurováno`,options:{none:`Žádný`},tags:{disabled:`zakázáno`}},personality:{title:`Osobnost`,description:`Definujte tón, styl a osobnost buddy. Tento text je zahrnut v systémovém promptu AI.`,placeholder:`Jsi nápomocný asistent chytré domácnosti. Buď stručný, přátelský a praktický.
|
|
3
|
+
Zaměř se na realizovatelné návrhy. Používej jednoduchý jazyk.`}},message:{placeholder:`Napište zprávu...`}},texts:{loadingConfig:`Načítání konfigurace buddy...`,loadingConversations:`Načítání konverzací...`,aboutBuddy:`Nakonfigurujte AI buddy asistenta, který sleduje vaše akce, učí se vaše vzorce a navrhuje automatizace. Vyberte plugin AI poskytovatele pro povolení chatovací funkce. Nastavení specifická pro poskytovatele (API klíč, model) se konfigurují na stránce nastavení pluginu. Bez poskytovatele budou nadále fungovat návrhy založené na pravidlech.`,emptyChat:`Vyberte nebo vytvořte konverzaci pro zahájení chatu`,startConversation:`Zeptejte se mě na cokoli ohledně vaší domácnosti!`,thinking:`Přemýšlím...`,newConversation:`Nová konverzace`,confirmDelete:`Smazat tuto konverzaci?`,providerNotConfigured:`AI poskytovatel není nakonfigurován`,providerNotConfiguredHint:`Nakonfigurujte plugin AI poskytovatele pro zahájení chatu s vaším buddy.`,noProviderSelected:`Není vybrán žádný AI poskytovatel`,noProviderSelectedHint:`Vyberte a nakonfigurujte AI poskytovatele pro začátek. Použijte Průvodce nastavením pro řízenou konfiguraci.`,providerNotEnabled:`Poskytovatel {name} není povolen`,providerNotEnabledHint:`Povolte ho v konfiguraci pluginu.`,providerMissingConfig:`Poskytovatel {name} vyžaduje konfiguraci`,providerMissingConfigHint:`Nastavte požadovaný API klíč nebo OAuth připojení.`,availableProviders:`Dostupní poskytovatelé`,configured:`Nakonfigurováno`,notConfigured:`Nenakonfigurováno`,justNow:`právě teď`,minutesAgo:`před {n}m`,hoursAgo:`před {n}h`,daysAgo:`před {n}d`,noSpace:`Žádný prostor`,noActiveConversation:`Není vybrána žádná konverzace`,providersFetchFailed:`Nepodařilo se načíst dostupné poskytovatele. Seznam poskytovatelů může být neúplný.`,sttProvidersFetchFailed:`Nepodařilo se načíst dostupné poskytovatele rozpoznávání řeči. Seznam poskytovatelů může být neúplný.`,ttsProvidersFetchFailed:`Nepodařilo se načíst dostupné poskytovatele hlasové syntézy. Seznam poskytovatelů může být neúplný.`,moduleDisabled:`Modul Buddy je zakázán`,moduleDisabledHint:`Modul AI buddy je aktuálně zakázán. Povolte ho v konfiguraci systému pro použití chatu a návrhů.`},wizard:{title:`Průvodce nastavením Buddy`,steps:{provider:`AI poskytovatel`,voice:`Hlas`,messaging:`Zprávy`,done:`Hotovo`},providerDescription:`Vyberte AI poskytovatele pro napájení chatovacích schopností vašeho buddy. Každý poskytovatel vyžaduje vlastní API klíč nebo přihlašovací údaje.`,voiceDescription:`Volitelně nakonfigurujte hlasové schopnosti. Text-to-Speech umožňuje buddy číst odpovědi nahlas. Speech-to-Text umožňuje hlasový vstup.`,messagingDescription:`Volitelně připojte chatovací platformy pro vzdálenou komunikaci s buddy přes Telegram, Discord, WhatsApp nebo jiné služby.`,noProvidersAvailable:`Nejsou nainstalovány žádné pluginy AI poskytovatelů. Nainstalujte plugin poskytovatele (např. Claude, OpenAI, Ollama) pro povolení AI chatu.`,configureProvider:`Konfigurovat {name}`,configured:`Nakonfigurováno`,needsSetup:`Vyžaduje nastavení`,disabled:`Zakázáno`,configRequired:`Vyžadována konfigurace`,configSaved:`Konfigurace úspěšně uložena`,saveError:`Nepodařilo se uložit konfiguraci`,doneTitle:`Nastavení dokončeno`,doneDescription:`Váš buddy je připraven k použití. Tato nastavení můžete kdykoli změnit na stránce konfigurace.`,summaryLlm:`AI poskytovatel: {name}`,summaryLlmSkipped:`AI poskytovatel nebyl vybrán`,summaryVoice:`Hlas: {summary}`,summaryVoiceSkipped:`Hlas přeskočen`,summaryMessaging:`Zprávy: {name}`,summaryMessagingSkipped:`Zprávy přeskočeny`,notSelected:`Nevybráno`,skipped:`Přeskočeno`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Zpět`,next:`Další`,skip:`Přeskočit`,configure:`Konfigurovat`,saveConfig:`Uložit konfiguraci`,startChatting:`Začít chatovat`}},meta:{settings:{title:`Nastavení Buddy`},chat:{title:`Buddy Chat`}}},sc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Buddy-Chat`,chats:`Chats`,aboutBuddy:`KI-Buddy-Konfiguration`},subHeadings:{settings:`KI-Buddy-Assistenten-Einstellungen konfigurieren`,chat:`Mit Ihrem KI-Buddy-Assistenten chatten`},messages:{loadError:`Buddy-Konfiguration konnte nicht geladen werden`,config:{edited:`Buddy-Konfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Buddy-Konfiguration fehlgeschlagen`},errors:{unexpectedError:`Ein unerwarteter Fehler ist aufgetreten`,loadConversations:`Konversationen konnten nicht geladen werden`,createConversation:`Konversation konnte nicht erstellt werden`,loadMessages:`Nachrichten konnten nicht geladen werden`,providerUnavailable:`Der KI-Anbieter ist vorübergehend nicht verfügbar. Bitte versuchen Sie es später erneut.`,sendMessage:`Nachricht konnte nicht gesendet werden`,deleteConversation:`Konversation konnte nicht gelöscht werden`,audioPlayback:`Audiowiedergabe fehlgeschlagen`,loadPersonality:`Persönlichkeit konnte nicht geladen werden`,savePersonality:`Persönlichkeit konnte nicht gespeichert werden`}},buttons:{save:{title:`Speichern`},back:{title:`Zurück`},retry:{title:`Wiederholen`},newChat:{title:`Neuer Chat`},delete:{title:`Löschen`},cancel:{title:`Abbrechen`},configure:{title:`Anbieter konfigurieren`},goToSettings:{title:`Zu Einstellungen`},setupWizard:{title:`Einrichtungsassistent`}},fields:{config:{enabled:{title:`Modul aktivieren`},name:{title:`Buddy-Name`,placeholder:`Buddy-Namen eingeben`},provider:{title:`KI-Anbieter-Plugin`,placeholder:`KI-Anbieter-Plugin auswählen`,notConfigured:`nicht konfiguriert`,tags:{ruleBasedOnly:`nur regelbasiert`},options:{none:`Keiner`}},voiceEnabled:{title:`Sprachschnittstelle`,description:`Spracherkennung und Sprachsynthese für freihändige Interaktion mit dem Assistenten aktivieren`},sttPlugin:{title:`Spracherkennungsanbieter (Speech-to-Text)`,placeholder:`Spracherkennungsanbieter auswählen`,notConfigured:`nicht konfiguriert`,options:{none:`Keiner`},tags:{disabled:`deaktiviert`}},ttsPlugin:{title:`Sprachsynthesenanbieter (Text-to-Speech)`,placeholder:`Sprachsynthesenanbieter auswählen`,notConfigured:`nicht konfiguriert`,options:{none:`Keiner`},tags:{disabled:`deaktiviert`}},personality:{title:`Persönlichkeit`,description:`Definieren Sie Ton, Stil und Persönlichkeit des Buddys. Dieser Text wird in den KI-Systemprompt eingefügt.`,placeholder:`Du bist ein hilfreicher Smart-Home-Assistent. Sei prägnant, freundlich und praktisch.
|
|
4
|
+
Konzentriere dich auf umsetzbare Vorschläge. Verwende einfache Sprache.`}},message:{placeholder:`Nachricht eingeben...`}},texts:{loadingConfig:`Buddy-Konfiguration wird geladen...`,loadingConversations:`Konversationen werden geladen...`,aboutBuddy:`Konfigurieren Sie den KI-Buddy-Assistenten, der Ihre Aktionen beobachtet, Ihre Muster lernt und Automatisierungen vorschlägt. Wählen Sie ein KI-Anbieter-Plugin, um die Chat-Funktionalität zu aktivieren. Anbieterspezifische Einstellungen (API-Schlüssel, Modell) werden auf der Einstellungsseite des jeweiligen Plugins konfiguriert. Ohne Anbieter funktionieren regelbasierte Vorschläge weiterhin.`,emptyChat:`Wählen Sie eine Konversation aus oder erstellen Sie eine neue, um zu chatten`,startConversation:`Fragen Sie mich alles über Ihr Zuhause!`,thinking:`Denkt nach...`,newConversation:`Neue Konversation`,confirmDelete:`Diese Konversation löschen?`,providerNotConfigured:`KI-Anbieter nicht konfiguriert`,providerNotConfiguredHint:`Konfigurieren Sie ein KI-Anbieter-Plugin, um mit Ihrem Buddy zu chatten.`,noProviderSelected:`Kein KI-Anbieter ausgewählt`,noProviderSelectedHint:`Wählen und konfigurieren Sie einen KI-Anbieter, um zu beginnen. Verwenden Sie den Einrichtungsassistenten für eine geführte Konfiguration.`,providerNotEnabled:`Der Anbieter {name} ist nicht aktiviert`,providerNotEnabledHint:`Aktivieren Sie ihn in der Plugin-Konfiguration.`,providerMissingConfig:`Der Anbieter {name} muss konfiguriert werden`,providerMissingConfigHint:`Richten Sie den erforderlichen API-Schlüssel oder die OAuth-Verbindung ein.`,availableProviders:`Verfügbare Anbieter`,configured:`Konfiguriert`,notConfigured:`Nicht konfiguriert`,justNow:`gerade eben`,minutesAgo:`vor {n}m`,hoursAgo:`vor {n}h`,daysAgo:`vor {n}T`,noSpace:`Kein Raum`,noActiveConversation:`Keine Konversation ausgewählt`,providersFetchFailed:`Verfügbare Anbieter konnten nicht geladen werden. Die Anbieterliste ist möglicherweise unvollständig.`,sttProvidersFetchFailed:`Verfügbare Spracherkennungsanbieter konnten nicht geladen werden. Die Anbieterliste ist möglicherweise unvollständig.`,ttsProvidersFetchFailed:`Verfügbare Sprachsyntheseanbieter konnten nicht geladen werden. Die Anbieterliste ist möglicherweise unvollständig.`,moduleDisabled:`Buddy-Modul ist deaktiviert`,moduleDisabledHint:`Das KI-Buddy-Modul ist derzeit deaktiviert. Aktivieren Sie es in der Systemkonfiguration, um Chat und Vorschläge zu nutzen.`},wizard:{title:`Buddy-Einrichtungsassistent`,steps:{provider:`KI-Anbieter`,voice:`Sprache`,messaging:`Messaging`,done:`Fertig`},providerDescription:`Wählen Sie einen KI-Anbieter für die Chat-Funktionen Ihres Buddys. Jeder Anbieter benötigt eigene API-Schlüssel oder Anmeldedaten.`,voiceDescription:`Konfigurieren Sie optional Sprachfunktionen. Text-to-Speech lässt den Buddy Antworten vorlesen. Speech-to-Text ermöglicht Spracheingabe.`,messagingDescription:`Verbinden Sie optional Messaging-Plattformen, um von unterwegs per Telegram, Discord, WhatsApp oder anderen Diensten mit Ihrem Buddy zu chatten.`,noProvidersAvailable:`Keine KI-Anbieter-Plugins installiert. Installieren Sie ein Anbieter-Plugin (z.B. Claude, OpenAI, Ollama), um den KI-Chat zu aktivieren.`,configureProvider:`{name} konfigurieren`,configured:`Konfiguriert`,needsSetup:`Einrichtung erforderlich`,disabled:`Deaktiviert`,configRequired:`Konfiguration erforderlich`,configSaved:`Konfiguration erfolgreich gespeichert`,saveError:`Konfiguration konnte nicht gespeichert werden`,doneTitle:`Einrichtung abgeschlossen`,doneDescription:`Ihr Buddy ist einsatzbereit. Sie können diese Einstellungen jederzeit auf der Konfigurationsseite ändern.`,summaryLlm:`KI-Anbieter: {name}`,summaryLlmSkipped:`KI-Anbieter nicht ausgewählt`,summaryVoice:`Sprache: {summary}`,summaryVoiceSkipped:`Sprache übersprungen`,summaryMessaging:`Messaging: {name}`,summaryMessagingSkipped:`Messaging übersprungen`,notSelected:`Nicht ausgewählt`,skipped:`Übersprungen`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Zurück`,next:`Weiter`,skip:`Überspringen`,configure:`Konfigurieren`,saveConfig:`Konfiguration speichern`,startChatting:`Chat starten`}},meta:{settings:{title:`Buddy-Einstellungen`},chat:{title:`Buddy-Chat`}}},cc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Buddy Chat`,chats:`Chats`,aboutBuddy:`AI Buddy Configuration`},subHeadings:{settings:`Configure AI buddy assistant settings`,chat:`Chat with your AI buddy assistant`},messages:{loadError:`Failed to load buddy configuration`,config:{edited:`Buddy configuration has been successfully updated`,notEdited:`Failed to update buddy configuration`},errors:{unexpectedError:`An unexpected error occurred`,loadConversations:`Failed to load conversations`,createConversation:`Failed to create conversation`,loadMessages:`Failed to load messages`,providerUnavailable:`The AI provider is temporarily unavailable. Please try again later.`,sendMessage:`Failed to send message`,deleteConversation:`Failed to delete conversation`,audioPlayback:`Failed to play audio`,loadPersonality:`Failed to load personality`,savePersonality:`Failed to save personality`}},buttons:{save:{title:`Save`},back:{title:`Back`},retry:{title:`Retry`},newChat:{title:`New Chat`},delete:{title:`Delete`},cancel:{title:`Cancel`},configure:{title:`Configure Provider`},goToSettings:{title:`Go to Settings`},setupWizard:{title:`Setup Wizard`}},fields:{config:{enabled:{title:`Enable module`},name:{title:`Buddy name`,placeholder:`Enter buddy name`},provider:{title:`AI Provider Plugin`,placeholder:`Select an AI provider plugin`,notConfigured:`not configured`,tags:{ruleBasedOnly:`rule-based only`},options:{none:`None`}},voiceEnabled:{title:`Voice Interface`,description:`Enable speech recognition and voice synthesis for hands-free interaction with the assistant`},sttPlugin:{title:`Speech Recognition Provider (Speech-to-Text)`,placeholder:`Select a speech recognition provider`,notConfigured:`not configured`,options:{none:`None`},tags:{disabled:`disabled`}},ttsPlugin:{title:`Voice Synthesis Provider (Text-to-Speech)`,placeholder:`Select a voice synthesis provider`,notConfigured:`not configured`,options:{none:`None`},tags:{disabled:`disabled`}},personality:{title:`Personality`,description:`Define the buddy's tone, style, and personality. This text is included in the AI system prompt.`,placeholder:`You are a helpful smart home assistant. Be concise, friendly, and practical.
|
|
5
|
+
Focus on actionable suggestions. Use simple language.`}},message:{placeholder:`Type a message...`}},texts:{loadingConfig:`Loading buddy configuration...`,loadingConversations:`Loading conversations...`,aboutBuddy:`Configure the AI buddy assistant that observes your actions, learns your patterns, and suggests automations. Select an AI provider plugin to enable chat functionality. Provider-specific settings (API key, model) are configured in the plugin's own settings page. Without a provider, rule-based suggestions will still work.`,emptyChat:`Select or create a conversation to start chatting`,startConversation:`Ask me anything about your home!`,thinking:`Thinking...`,newConversation:`New conversation`,confirmDelete:`Delete this conversation?`,providerNotConfigured:`AI provider not configured`,providerNotConfiguredHint:`Configure an AI provider plugin to start chatting with your buddy.`,noProviderSelected:`No AI provider is selected`,noProviderSelectedHint:`Select and configure an AI provider to get started. Use the Setup Wizard for guided configuration.`,providerNotEnabled:`The provider {name} is not enabled`,providerNotEnabledHint:`Enable it in the plugin configuration.`,providerMissingConfig:`The provider {name} needs configuration`,providerMissingConfigHint:`Set up the required API key or OAuth connection.`,availableProviders:`Available providers`,configured:`Configured`,notConfigured:`Not configured`,justNow:`just now`,minutesAgo:`{n}m ago`,hoursAgo:`{n}h ago`,daysAgo:`{n}d ago`,noSpace:`No space`,noActiveConversation:`No conversation selected`,providersFetchFailed:`Failed to load available providers. The provider list may be incomplete.`,sttProvidersFetchFailed:`Failed to load available speech recognition providers. The provider list may be incomplete.`,ttsProvidersFetchFailed:`Failed to load available voice synthesis providers. The provider list may be incomplete.`,moduleDisabled:`Buddy module is disabled`,moduleDisabledHint:`The AI buddy module is currently disabled. Enable it in the system configuration to use chat and suggestions.`},wizard:{title:`Buddy Setup Wizard`,steps:{provider:`AI Provider`,voice:`Voice`,messaging:`Messaging`,done:`Done`},providerDescription:`Choose an AI provider to power your buddy's chat capabilities. Each provider requires its own API key or credentials.`,voiceDescription:`Optionally configure voice capabilities. Text-to-Speech lets the buddy read responses aloud. Speech-to-Text enables voice input.`,messagingDescription:`Optionally connect messaging platforms to chat with your buddy remotely via Telegram, Discord, WhatsApp, or other services.`,noProvidersAvailable:`No AI provider plugins are installed. Install a provider plugin (e.g., Claude, OpenAI, Ollama) to enable AI chat.`,configureProvider:`Configure {name}`,configured:`Configured`,needsSetup:`Needs setup`,disabled:`Disabled`,configRequired:`Configuration required`,configSaved:`Configuration saved successfully`,saveError:`Failed to save configuration`,doneTitle:`Setup Complete`,doneDescription:`Your buddy is ready to use. You can always change these settings later in the configuration page.`,summaryLlm:`AI Provider: {name}`,summaryLlmSkipped:`AI Provider not selected`,summaryVoice:`Voice: {summary}`,summaryVoiceSkipped:`Voice skipped`,summaryMessaging:`Messaging: {name}`,summaryMessagingSkipped:`Messaging skipped`,notSelected:`Not selected`,skipped:`Skipped`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Back`,next:`Next`,skip:`Skip`,configure:`Configure`,saveConfig:`Save Configuration`,startChatting:`Start Chatting`}},meta:{settings:{title:`Buddy Settings`},chat:{title:`Buddy Chat`}}},lc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Chat de Buddy`,chats:`Chats`,aboutBuddy:`Configuración del Buddy IA`},subHeadings:{settings:`Configurar los ajustes del asistente Buddy IA`,chat:`Chatea con tu asistente Buddy IA`},messages:{loadError:`Error al cargar la configuración de Buddy`,config:{edited:`La configuración de Buddy se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración de Buddy`},errors:{unexpectedError:`Se produjo un error inesperado`,loadConversations:`Error al cargar las conversaciones`,createConversation:`Error al crear la conversación`,loadMessages:`Error al cargar los mensajes`,providerUnavailable:`El proveedor de IA no está disponible temporalmente. Por favor, inténtalo de nuevo más tarde.`,sendMessage:`Error al enviar el mensaje`,deleteConversation:`Error al eliminar la conversación`,audioPlayback:`Error al reproducir el audio`,loadPersonality:`Error al cargar la personalidad`,savePersonality:`Error al guardar la personalidad`}},buttons:{save:{title:`Guardar`},back:{title:`Atrás`},retry:{title:`Reintentar`},newChat:{title:`Nuevo chat`},delete:{title:`Eliminar`},cancel:{title:`Cancelar`},configure:{title:`Configurar proveedor`},goToSettings:{title:`Ir a configuración`},setupWizard:{title:`Asistente de configuración`}},fields:{config:{enabled:{title:`Activar módulo`},name:{title:`Nombre del Buddy`,placeholder:`Ingresa el nombre del Buddy`},provider:{title:`Plugin de proveedor de IA`,placeholder:`Selecciona un plugin de proveedor de IA`,notConfigured:`no configurado`,tags:{ruleBasedOnly:`solo basado en reglas`},options:{none:`Ninguno`}},voiceEnabled:{title:`Interfaz de voz`,description:`Activa el reconocimiento de voz y la síntesis de voz para interactuar con el asistente manos libres`},sttPlugin:{title:`Proveedor de reconocimiento de voz (Speech-to-Text)`,placeholder:`Selecciona un proveedor de reconocimiento de voz`,notConfigured:`no configurado`,options:{none:`Ninguno`},tags:{disabled:`desactivado`}},ttsPlugin:{title:`Proveedor de síntesis de voz (Text-to-Speech)`,placeholder:`Selecciona un proveedor de síntesis de voz`,notConfigured:`no configurado`,options:{none:`Ninguno`},tags:{disabled:`desactivado`}},personality:{title:`Personalidad`,description:`Define el tono, estilo y personalidad del Buddy. Este texto se incluye en el prompt del sistema de IA.`,placeholder:`Eres un asistente útil para el hogar inteligente. Sé conciso, amigable y práctico.
|
|
6
|
+
Céntrate en sugerencias prácticas. Usa un lenguaje sencillo.`}},message:{placeholder:`Escribe un mensaje...`}},texts:{loadingConfig:`Cargando configuración de Buddy...`,loadingConversations:`Cargando conversaciones...`,aboutBuddy:`Configura el asistente Buddy IA que observa tus acciones, aprende tus patrones y sugiere automatizaciones. Selecciona un plugin de proveedor de IA para habilitar la funcionalidad de chat. Los ajustes específicos del proveedor (clave API, modelo) se configuran en la página de configuración del plugin. Sin un proveedor, las sugerencias basadas en reglas seguirán funcionando.`,emptyChat:`Selecciona o crea una conversación para comenzar a chatear`,startConversation:`¡Pregúntame lo que quieras sobre tu hogar!`,thinking:`Pensando...`,newConversation:`Nueva conversación`,confirmDelete:`¿Eliminar esta conversación?`,providerNotConfigured:`Proveedor de IA no configurado`,providerNotConfiguredHint:`Configura un plugin de proveedor de IA para comenzar a chatear con tu Buddy.`,noProviderSelected:`No se ha seleccionado un proveedor de IA`,noProviderSelectedHint:`Selecciona y configura un proveedor de IA para comenzar. Usa el asistente de configuración para una configuración guiada.`,providerNotEnabled:`El proveedor {name} no está activado`,providerNotEnabledHint:`Actívalo en la configuración del plugin.`,providerMissingConfig:`El proveedor {name} necesita configuración`,providerMissingConfigHint:`Configura la clave API requerida o la conexión OAuth.`,availableProviders:`Proveedores disponibles`,configured:`Configurado`,notConfigured:`No configurado`,justNow:`ahora mismo`,minutesAgo:`hace {n}m`,hoursAgo:`hace {n}h`,daysAgo:`hace {n}d`,noSpace:`Sin espacio`,noActiveConversation:`Ninguna conversación seleccionada`,providersFetchFailed:`Error al cargar los proveedores disponibles. La lista de proveedores puede estar incompleta.`,sttProvidersFetchFailed:`Error al cargar los proveedores de reconocimiento de voz disponibles. La lista de proveedores puede estar incompleta.`,ttsProvidersFetchFailed:`Error al cargar los proveedores de síntesis de voz disponibles. La lista de proveedores puede estar incompleta.`,moduleDisabled:`El módulo Buddy está desactivado`,moduleDisabledHint:`El módulo Buddy IA está actualmente desactivado. Actívalo en la configuración del sistema para usar el chat y las sugerencias.`},wizard:{title:`Asistente de configuración de Buddy`,steps:{provider:`Proveedor de IA`,voice:`Voz`,messaging:`Mensajería`,done:`Listo`},providerDescription:`Elige un proveedor de IA para potenciar las capacidades de chat de tu Buddy. Cada proveedor requiere su propia clave API o credenciales.`,voiceDescription:`Opcionalmente configura las capacidades de voz. Text-to-Speech permite al Buddy leer las respuestas en voz alta. Speech-to-Text habilita la entrada de voz.`,messagingDescription:`Opcionalmente conecta plataformas de mensajería para chatear con tu Buddy de forma remota a través de Telegram, Discord, WhatsApp u otros servicios.`,noProvidersAvailable:`No hay plugins de proveedores de IA instalados. Instala un plugin de proveedor (ej. Claude, OpenAI, Ollama) para habilitar el chat con IA.`,configureProvider:`Configurar {name}`,configured:`Configurado`,needsSetup:`Necesita configuración`,disabled:`Desactivado`,configRequired:`Configuración requerida`,configSaved:`Configuración guardada correctamente`,saveError:`Error al guardar la configuración`,doneTitle:`Configuración completa`,doneDescription:`Tu Buddy está listo para usar. Siempre puedes cambiar estos ajustes más tarde en la página de configuración.`,summaryLlm:`Proveedor de IA: {name}`,summaryLlmSkipped:`Proveedor de IA no seleccionado`,summaryVoice:`Voz: {summary}`,summaryVoiceSkipped:`Voz omitida`,summaryMessaging:`Mensajería: {name}`,summaryMessagingSkipped:`Mensajería omitida`,notSelected:`No seleccionado`,skipped:`Omitido`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Atrás`,next:`Siguiente`,skip:`Omitir`,configure:`Configurar`,saveConfig:`Guardar configuración`,startChatting:`Comenzar a chatear`}},meta:{settings:{title:`Configuración de Buddy`},chat:{title:`Chat de Buddy`}}},uc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Czat Buddy`,chats:`Czaty`,aboutBuddy:`Konfiguracja AI Buddy`},subHeadings:{settings:`Skonfiguruj ustawienia asystenta AI Buddy`,chat:`Rozmawiaj ze swoim asystentem AI Buddy`},messages:{loadError:`Nie udało się wczytać konfiguracji buddy`,config:{edited:`Konfiguracja buddy została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji buddy`},errors:{unexpectedError:`Wystąpił nieoczekiwany błąd`,loadConversations:`Nie udało się wczytać konwersacji`,createConversation:`Nie udało się utworzyć konwersacji`,loadMessages:`Nie udało się wczytać wiadomości`,providerUnavailable:`Dostawca AI jest tymczasowo niedostępny. Spróbuj ponownie później.`,sendMessage:`Nie udało się wysłać wiadomości`,deleteConversation:`Nie udało się usunąć konwersacji`,audioPlayback:`Nie udało się odtworzyć audio`,loadPersonality:`Nie udało się wczytać osobowości`,savePersonality:`Nie udało się zapisać osobowości`}},buttons:{save:{title:`Zapisz`},back:{title:`Wstecz`},retry:{title:`Ponów`},newChat:{title:`Nowy czat`},delete:{title:`Usuń`},cancel:{title:`Anuluj`},configure:{title:`Skonfiguruj dostawcę`},goToSettings:{title:`Przejdź do ustawień`},setupWizard:{title:`Kreator konfiguracji`}},fields:{config:{enabled:{title:`Włącz moduł`},name:{title:`Nazwa buddy`,placeholder:`Wprowadź nazwę buddy`},provider:{title:`Wtyczka dostawcy AI`,placeholder:`Wybierz wtyczkę dostawcy AI`,notConfigured:`nie skonfigurowano`,tags:{ruleBasedOnly:`tylko oparte na regułach`},options:{none:`Brak`}},voiceEnabled:{title:`Interfejs głosowy`,description:`Włącz rozpoznawanie mowy i syntezę głosu do bezręcznej interakcji z asystentem`},sttPlugin:{title:`Dostawca rozpoznawania mowy (Speech-to-Text)`,placeholder:`Wybierz dostawcę rozpoznawania mowy`,notConfigured:`nie skonfigurowano`,options:{none:`Brak`},tags:{disabled:`wyłączony`}},ttsPlugin:{title:`Dostawca syntezy mowy (Text-to-Speech)`,placeholder:`Wybierz dostawcę syntezy mowy`,notConfigured:`nie skonfigurowano`,options:{none:`Brak`},tags:{disabled:`wyłączony`}},personality:{title:`Osobowość`,description:`Zdefiniuj ton, styl i osobowość buddy. Ten tekst jest dołączany do systemowego promptu AI.`,placeholder:`Jesteś pomocnym asystentem inteligentnego domu. Bądź zwięzły, przyjazny i praktyczny.
|
|
7
|
+
Skup się na praktycznych sugestiach. Używaj prostego języka.`}},message:{placeholder:`Wpisz wiadomość...`}},texts:{loadingConfig:`Ładowanie konfiguracji buddy...`,loadingConversations:`Ładowanie konwersacji...`,aboutBuddy:`Skonfiguruj asystenta AI buddy, który obserwuje Twoje działania, uczy się Twoich wzorców i sugeruje automatyzacje. Wybierz wtyczkę dostawcy AI, aby włączyć funkcję czatu. Ustawienia specyficzne dla dostawcy (klucz API, model) konfiguruje się na stronie ustawień wtyczki. Bez dostawcy sugestie oparte na regułach nadal będą działać.`,emptyChat:`Wybierz lub utwórz konwersację, aby rozpocząć czat`,startConversation:`Zapytaj mnie o cokolwiek dotyczącego Twojego domu!`,thinking:`Myślę...`,newConversation:`Nowa konwersacja`,confirmDelete:`Usunąć tę konwersację?`,providerNotConfigured:`Dostawca AI nie jest skonfigurowany`,providerNotConfiguredHint:`Skonfiguruj wtyczkę dostawcy AI, aby rozpocząć czat z buddy.`,noProviderSelected:`Nie wybrano dostawcy AI`,noProviderSelectedHint:`Wybierz i skonfiguruj dostawcę AI, aby rozpocząć. Użyj kreatora konfiguracji dla wspomaganych instrukcji.`,providerNotEnabled:`Dostawca {name} nie jest włączony`,providerNotEnabledHint:`Włącz go w konfiguracji wtyczki.`,providerMissingConfig:`Dostawca {name} wymaga konfiguracji`,providerMissingConfigHint:`Ustaw wymagany klucz API lub połączenie OAuth.`,availableProviders:`Dostępni dostawcy`,configured:`Skonfigurowany`,notConfigured:`Nie skonfigurowany`,justNow:`właśnie teraz`,minutesAgo:`{n}min temu`,hoursAgo:`{n}godz. temu`,daysAgo:`{n}dn. temu`,noSpace:`Brak przestrzeni`,noActiveConversation:`Nie wybrano konwersacji`,providersFetchFailed:`Nie udało się wczytać dostępnych dostawców. Lista dostawców może być niekompletna.`,sttProvidersFetchFailed:`Nie udało się wczytać dostępnych dostawców rozpoznawania mowy. Lista dostawców może być niekompletna.`,ttsProvidersFetchFailed:`Nie udało się wczytać dostępnych dostawców syntezy mowy. Lista dostawców może być niekompletna.`,moduleDisabled:`Moduł Buddy jest wyłączony`,moduleDisabledHint:`Moduł AI buddy jest aktualnie wyłączony. Włącz go w konfiguracji systemu, aby korzystać z czatu i sugestii.`},wizard:{title:`Kreator konfiguracji Buddy`,steps:{provider:`Dostawca AI`,voice:`Głos`,messaging:`Wiadomości`,done:`Gotowe`},providerDescription:`Wybierz dostawcę AI, aby zasilić możliwości czatu buddy. Każdy dostawca wymaga własnego klucza API lub danych uwierzytelniających.`,voiceDescription:`Opcjonalnie skonfiguruj możliwości głosowe. Text-to-Speech pozwala buddy odczytywać odpowiedzi na głos. Speech-to-Text włącza wprowadzanie głosowe.`,messagingDescription:`Opcjonalnie podłącz platformy komunikacyjne, aby czatować z buddy zdalnie przez Telegram, Discord, WhatsApp lub inne usługi.`,noProvidersAvailable:`Nie zainstalowano żadnych wtyczek dostawców AI. Zainstaluj wtyczkę dostawcy (np. Claude, OpenAI, Ollama), aby włączyć czat AI.`,configureProvider:`Skonfiguruj {name}`,configured:`Skonfigurowany`,needsSetup:`Wymaga konfiguracji`,disabled:`Wyłączony`,configRequired:`Wymagana konfiguracja`,configSaved:`Konfiguracja została pomyślnie zapisana`,saveError:`Nie udało się zapisać konfiguracji`,doneTitle:`Konfiguracja zakończona`,doneDescription:`Twój buddy jest gotowy do użycia. Zawsze możesz zmienić te ustawienia później na stronie konfiguracji.`,summaryLlm:`Dostawca AI: {name}`,summaryLlmSkipped:`Nie wybrano dostawcy AI`,summaryVoice:`Głos: {summary}`,summaryVoiceSkipped:`Głos pominięty`,summaryMessaging:`Wiadomości: {name}`,summaryMessagingSkipped:`Wiadomości pominięte`,notSelected:`Nie wybrano`,skipped:`Pominięto`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Wstecz`,next:`Dalej`,skip:`Pomiń`,configure:`Skonfiguruj`,saveConfig:`Zapisz konfigurację`,startChatting:`Rozpocznij czat`}},meta:{settings:{title:`Ustawienia Buddy`},chat:{title:`Czat Buddy`}}},dc={menu:{title:`Buddy`},headings:{settings:`Buddy`,chat:`Buddy Chat`,chats:`Chaty`,aboutBuddy:`Konfigurácia AI Buddy`},subHeadings:{settings:`Konfigurácia nastavení AI buddy asistenta`,chat:`Chatujte so svojím AI buddy asistentom`},messages:{loadError:`Nepodarilo sa načítať konfiguráciu buddy`,config:{edited:`Konfigurácia buddy bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu buddy`},errors:{unexpectedError:`Vyskytla sa neočakávaná chyba`,loadConversations:`Nepodarilo sa načítať konverzácie`,createConversation:`Nepodarilo sa vytvoriť konverzáciu`,loadMessages:`Nepodarilo sa načítať správy`,providerUnavailable:`Poskytovateľ AI je dočasne nedostupný. Skúste to prosím neskôr.`,sendMessage:`Nepodarilo sa odoslať správu`,deleteConversation:`Nepodarilo sa odstrániť konverzáciu`,audioPlayback:`Nepodarilo sa prehrať zvuk`,loadPersonality:`Nepodarilo sa načítať osobnosť`,savePersonality:`Nepodarilo sa uložiť osobnosť`}},buttons:{save:{title:`Uložiť`},back:{title:`Späť`},retry:{title:`Skúsiť znova`},newChat:{title:`Nový chat`},delete:{title:`Odstrániť`},cancel:{title:`Zrušiť`},configure:{title:`Konfigurovať poskytovateľa`},goToSettings:{title:`Prejsť do nastavení`},setupWizard:{title:`Sprievodca nastavením`}},fields:{config:{enabled:{title:`Povoliť modul`},name:{title:`Meno buddy`,placeholder:`Zadajte meno buddy`},provider:{title:`Plugin poskytovateľa AI`,placeholder:`Vyberte plugin poskytovateľa AI`,notConfigured:`nie je nakonfigurovaný`,tags:{ruleBasedOnly:`iba pravidlové`},options:{none:`Žiadny`}},voiceEnabled:{title:`Hlasové rozhranie`,description:`Povoliť rozpoznávanie reči a hlasovú syntézu pre interakciu s asistentom bez použitia rúk`},sttPlugin:{title:`Poskytovateľ rozpoznávania reči (Speech-to-Text)`,placeholder:`Vyberte poskytovateľa rozpoznávania reči`,notConfigured:`nie je nakonfigurovaný`,options:{none:`Žiadny`},tags:{disabled:`zakázaný`}},ttsPlugin:{title:`Poskytovateľ hlasovej syntézy (Text-to-Speech)`,placeholder:`Vyberte poskytovateľa hlasovej syntézy`,notConfigured:`nie je nakonfigurovaný`,options:{none:`Žiadny`},tags:{disabled:`zakázaný`}},personality:{title:`Osobnosť`,description:`Definujte tón, štýl a osobnosť buddy. Tento text je zahrnutý v systémovom prompte AI.`,placeholder:`Ste užitočný asistent inteligentnej domácnosti. Buďte struční, priateľskí a praktickí.
|
|
8
|
+
Zamerajte sa na použiteľné návrhy. Používajte jednoduchý jazyk.`}},message:{placeholder:`Napíšte správu...`}},texts:{loadingConfig:`Načítavanie konfigurácie buddy...`,loadingConversations:`Načítavanie konverzácií...`,aboutBuddy:`Nakonfigurujte AI buddy asistenta, ktorý sleduje vaše akcie, učí sa vaše vzorce a navrhuje automatizácie. Vyberte plugin poskytovateľa AI na povolenie funkcie chatu. Nastavenia špecifické pre poskytovateľa (API kľúč, model) sa konfigurujú na stránke nastavení pluginu. Bez poskytovateľa budú stále fungovať pravidlové návrhy.`,emptyChat:`Vyberte alebo vytvorte konverzáciu na začatie chatovania`,startConversation:`Opýtajte sa ma čokoľvek o vašej domácnosti!`,thinking:`Premýšľam...`,newConversation:`Nová konverzácia`,confirmDelete:`Odstrániť túto konverzáciu?`,providerNotConfigured:`Poskytovateľ AI nie je nakonfigurovaný`,providerNotConfiguredHint:`Nakonfigurujte plugin poskytovateľa AI na začatie chatovania s vaším buddy.`,noProviderSelected:`Nie je vybraný žiadny poskytovateľ AI`,noProviderSelectedHint:`Vyberte a nakonfigurujte poskytovateľa AI na začatie. Použite Sprievodcu nastavením pre riadenú konfiguráciu.`,providerNotEnabled:`Poskytovateľ {name} nie je povolený`,providerNotEnabledHint:`Povoľte ho v konfigurácii pluginu.`,providerMissingConfig:`Poskytovateľ {name} potrebuje konfiguráciu`,providerMissingConfigHint:`Nastavte požadovaný API kľúč alebo OAuth pripojenie.`,availableProviders:`Dostupní poskytovatelia`,configured:`Nakonfigurovaný`,notConfigured:`Nie je nakonfigurovaný`,justNow:`práve teraz`,minutesAgo:`pred {n}m`,hoursAgo:`pred {n}h`,daysAgo:`pred {n}d`,noSpace:`Žiadny priestor`,noActiveConversation:`Žiadna konverzácia nie je vybraná`,providersFetchFailed:`Nepodarilo sa načítať dostupných poskytovateľov. Zoznam poskytovateľov môže byť neúplný.`,sttProvidersFetchFailed:`Nepodarilo sa načítať dostupných poskytovateľov rozpoznávania reči. Zoznam poskytovateľov môže byť neúplný.`,ttsProvidersFetchFailed:`Nepodarilo sa načítať dostupných poskytovateľov hlasovej syntézy. Zoznam poskytovateľov môže byť neúplný.`,moduleDisabled:`Modul Buddy je zakázaný`,moduleDisabledHint:`Modul AI buddy je momentálne zakázaný. Povoľte ho v konfigurácii systému na používanie chatu a návrhov.`},wizard:{title:`Sprievodca nastavením Buddy`,steps:{provider:`Poskytovateľ AI`,voice:`Hlas`,messaging:`Správy`,done:`Hotovo`},providerDescription:`Vyberte poskytovateľa AI na poháňanie chatových schopností vášho buddy. Každý poskytovateľ vyžaduje vlastný API kľúč alebo prihlasovacie údaje.`,voiceDescription:`Voliteľne nakonfigurujte hlasové schopnosti. Text-to-Speech umožní buddy čítať odpovede nahlas. Speech-to-Text povolí hlasový vstup.`,messagingDescription:`Voliteľne pripojte komunikačné platformy na chatovanie s vaším buddy na diaľku cez Telegram, Discord, WhatsApp alebo iné služby.`,noProvidersAvailable:`Nie sú nainštalované žiadne pluginy poskytovateľov AI. Nainštalujte plugin poskytovateľa (napr. Claude, OpenAI, Ollama) na povolenie AI chatu.`,configureProvider:`Konfigurovať {name}`,configured:`Nakonfigurovaný`,needsSetup:`Vyžaduje nastavenie`,disabled:`Zakázaný`,configRequired:`Vyžaduje sa konfigurácia`,configSaved:`Konfigurácia bola úspešne uložená`,saveError:`Nepodarilo sa uložiť konfiguráciu`,doneTitle:`Nastavenie dokončené`,doneDescription:`Váš buddy je pripravený na použitie. Tieto nastavenia môžete kedykoľvek zmeniť na konfiguračnej stránke.`,summaryLlm:`Poskytovateľ AI: {name}`,summaryLlmSkipped:`Poskytovateľ AI nebol vybraný`,summaryVoice:`Hlas: {summary}`,summaryVoiceSkipped:`Hlas preskočený`,summaryMessaging:`Správy: {name}`,summaryMessagingSkipped:`Správy preskočené`,notSelected:`Nevybraný`,skipped:`Preskočený`,ttsHeading:`Text-to-Speech (TTS)`,sttHeading:`Speech-to-Text (STT)`,buttons:{back:`Späť`,next:`Ďalej`,skip:`Preskočiť`,configure:`Konfigurovať`,saveConfig:`Uložiť konfiguráciu`,startChatting:`Začať chatovať`}},meta:{settings:{title:`Nastavenia Buddy`},chat:{title:`Buddy Chat`}}},fc={"cs-CZ":oc,"de-DE":sc,"en-US":cc,"es-ES":lc,"pl-PL":uc,"sk-SK":dc},pc=[{path:`buddy`,name:Rn.BUDDY,component:()=>Et(()=>import(`./view-buddy-chat-DKryg2MX.js`),__vite__mapDeps([28,1,2,3,4,5,29,30,31,32,33,34,10])),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:()=>Jt.global.t(`buddyModule.menu.title`),icon:`mdi:robot-happy`,menu:1e4,module:Ln}}],mc=Pt.extend({name:Y().optional().default(`Buddy`),provider:Y().optional().default(`none`),sttPlugin:Y().optional().default(`none`),ttsPlugin:Y().optional().default(`none`),voiceEnabled:R().optional().default(!1)}),hc=St.extend({type:Z(Ln),name:Y().optional().default(`Buddy`),provider:Y().optional().default(`none`),sttPlugin:Y().optional().default(`none`),ttsPlugin:Y().optional().default(`none`),voiceEnabled:R().optional().default(!1)}),gc=at.and(q({type:Z(Ln),name:Y().optional(),provider:Y().optional(),stt_plugin:Y().optional(),tts_plugin:Y().optional(),voice_enabled:R().optional()}));wt.and(q({type:Z(Ln),name:Y().optional(),provider:Y().optional(),stt_plugin:Y().optional(),tts_plugin:Y().optional(),voice_enabled:R().optional()}));var _c=Symbol(`FB-Module-Buddy`),vc={install:(e,t)=>{let n=Ie(e);for(let[e,n]of Object.entries(fc)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyModule:n});t.i18n.global.setLocaleMessage(e,r)}n.addModule(_c,{type:Ln,name:`Buddy`,description:`AI assistant that observes actions, learns patterns, and suggests automations.`,elements:[{type:on,components:{moduleConfigEditForm:ac},schemas:{moduleConfigSchema:hc,moduleConfigEditFormSchema:mc,moduleConfigUpdateReqSchema:gc},modules:[pn]}],modules:[pn],isCore:!0}),t.router.getRoutes().find(e=>e.name===O.ROOT)&&pc.forEach(e=>{t.router.addRoute(O.ROOT,e)})}},yc=`energy-module`,bc=Symbol(`FB-Module-Energy`),xc={install:(e,t)=>{Ie(e).addModule(bc,{type:yc,name:`Energy`,description:`Energy consumption and production monitoring with per-space tracking and historical analysis`,elements:[],isCore:!0})}},Sc={menu:{title:`Rozšíření`},meta:{extensions:{list:{title:`Seznam rozšíření`},detail:{title:`Rozšíření: {extension}`}}},headings:{list:`Rozšíření`,detail:`Detail rozšíření`,adjustFilters:`Upravit filtry`,bulkEnable:`Povolit rozšíření`,bulkDisable:`Zakázat rozšíření`},subHeadings:{list:`Spravujte moduly a pluginy aplikace`,detail:`Zobrazit informace a konfiguraci rozšíření`,adjustFilters:`Filtrovat rozšíření podle různých kritérií`},breadcrumbs:{extensions:{list:`rozšíření`,detail:`rozšíření: {extension}`}},tabs:{all:`Všechna rozšíření`,modules:`Moduly`,plugins:`Pluginy`,services:`Služby`},labels:{module:`Modul`,plugin:`Plugin`,core:`Jádro`,addon:`Doplněk`,enabled:`Povoleno`,disabled:`Zakázáno`,version:`Verze`,author:`Autor`,type:`Typ`,kind:`Druh`,source:`Zdroj`,status:`Stav`,configuration:`Konfigurace`,description:`Popis`,details:`Podrobnosti`,links:`Odkazy`,readme:`O rozšíření`,documentation:`Dokumentace`,logs:`Protokoly`,live:`Živě`},fields:{search:{placeholder:`Hledat rozšíření...`}},filters:{kind:{title:`Druh`},enabled:{title:`Stav`},type:{title:`Typ`}},states:{all:`Vše`},table:{columns:{name:{title:`Název`},type:{title:`Typ`},kind:{title:`Druh`},version:{title:`Verze`},core:{title:`Jádro`},enabled:{title:`Povoleno`}}},texts:{loadingExtensions:`Načítání rozšíření...`,noExtensions:`Žádná rozšíření nejsou nainstalována`,noFilteredExtensions:`Žádná rozšíření neodpovídají aktuálním filtrům`,logs:{noLogs:`Žádné protokoly nejsou k dispozici`,noLogsDescription:`Toto rozšíření dosud nevytvořilo žádné záznamy`,noFilteredLogs:`Žádné protokoly neodpovídají aktuálním filtrům`,noMessage:`Žádná zpráva`,noMoreEntries:`Žádné další záznamy`,allLevels:`Všechny úrovně`,timeRange:{all:`Celé období`,"1h":`Poslední 1 hodina`,"6h":`Posledních 6 hodin`,"24h":`Posledních 24 hodin`,"7d":`Posledních 7 dní`}}},buttons:{actions:`Akce`,documentation:`Dokumentace`,repository:`Repozitář`,issues:`Problémy`,enable:`Povolit`,disable:`Zakázat`,remove:`Odebrat`,configure:`Konfigurovat`,viewDetails:`Zobrazit podrobnosti`,refresh:`Obnovit`,loadMore:`Načíst další`,detail:{title:`Detail`},reset:{title:`Resetovat filtry`},resetFilters:{title:`Resetovat filtry`},yes:`Ano`,no:`Ne`},tooltips:{coreCannotBeRemoved:`Rozšíření jádra nelze odebrat`,coreModuleCannotBeDisabled:`Moduly jádra nelze zakázat`,removeNotSupported:`Odebrání rozšíření zatím není podporováno`,cannotToggleEnabled:`Toto rozšíření nelze povolit/zakázat`,openConfiguration:`Otevřít konfiguraci rozšíření`},messages:{noExtensions:`Žádná rozšíření nebyla nalezena`,noDescription:`Popis není k dispozici`,extensionEnabled:`Rozšíření bylo povoleno`,extensionDisabled:`Rozšíření bylo zakázáno`,updateError:`Nepodařilo se aktualizovat rozšíření`,coreExtensionError:`Rozšíření jádra nelze upravovat`,notConfigurableError:`Toto rozšíření nepodporuje povolení/zakázání`,loadError:`Nepodařilo se načíst rozšíření`,noMatchingExtensions:`Žádná rozšíření neodpovídají vašim filtrům`,confirmBulkEnable:`Opravdu chcete povolit {count} rozšíření?`,confirmBulkDisable:`Opravdu chcete zakázat {count} rozšíření?`,bulkEnabled:`{count} rozšíření bylo povoleno`,bulkDisabled:`{count} rozšíření bylo zakázáno`,bulkEnableFailed:`Nepodařilo se povolit {count} rozšíření`,bulkDisableFailed:`Nepodařilo se zakázat {count} rozšíření`,bulkEnableCanceled:`Hromadné povolení bylo zrušeno`,bulkDisableCanceled:`Hromadné zakázání bylo zrušeno`,noExtensionsToEnable:`Žádná rozšíření k povolení (všechna vybraná jsou již povolena nebo je nelze přepnout)`,noExtensionsToDisable:`Žádná rozšíření k zakázání (všechna vybraná jsou již zakázána nebo je nelze přepnout)`},actions:{labels:{tab:`Akce`,category:{general:`Obecné`,simulation:`Simulace`,data:`Data`,diagnostics:`Diagnostika`,maintenance:`Údržba`},required:`Povinné`,dangerous:`Nebezpečné`,comingSoon:`Již brzy`},buttons:{run:`Spustit`,confirm:`Potvrdit`,cancel:`Zrušit`},messages:{success:`Akce byla úspěšně dokončena`,error:`Akce selhala`,confirmDangerous:`Tato akce může mít významné dopady. Opravdu chcete pokračovat?`,noActions:`Pro toto rozšíření nejsou k dispozici žádné akce`,interactiveNotAvailable:`Interaktivní akce budou dostupné v budoucí aktualizaci`,loading:`Načítání akcí...`}},services:{headings:{list:`Služby pluginů`,subHeading:`Monitorujte a ovládejte služby pluginů`},labels:{pluginName:`Plugin`,serviceId:`Služba`,state:`Stav`,enabled:`Povoleno`,disabled:`Zakázáno`,healthy:`V pořádku`,unhealthy:`Nefunkční`,uptime:`Doba běhu`,startCount:`Počet spuštění`,lastStarted:`Naposledy spuštěno`,lastStopped:`Naposledy zastaveno`,lastError:`Poslední chyba`},states:{stopped:`Zastaveno`,starting:`Spouštění`,started:`Běží`,stopping:`Zastavování`,error:`Chyba`},buttons:{start:`Spustit`,stop:`Zastavit`,restart:`Restartovat`,refresh:`Obnovit`},messages:{started:`Služba byla spuštěna`,serviceStarting:`Služba se spouští — může chvíli trvat, než bude plně připravena`,stopped:`Služba byla zastavena`,restarted:`Služba byla restartována`,startError:`Nepodařilo se spustit službu`,stopError:`Nepodařilo se zastavit službu`,restartError:`Nepodařilo se restartovat službu`,loadError:`Nepodařilo se načíst služby`,noServices:`Žádné služby nejsou k dispozici`},tooltips:{disabledPlugin:`Plugin je zakázán`,transitioning:`Služba přechází do jiného stavu`,startService:`Spustit tuto službu`,stopService:`Zastavit tuto službu`,restartService:`Restartovat tuto službu`},texts:{loadingServices:`Načítání služeb...`,noServices:`Nebyly nalezeny žádné spravované služby`,pluginDisabled:`Plugin zakázán`}}},Cc={menu:{title:`Erweiterungen`},meta:{extensions:{list:{title:`Erweiterungen auflisten`},detail:{title:`Erweiterung: {extension}`}}},headings:{list:`Erweiterungen`,detail:`Erweiterungsdetails`,adjustFilters:`Filter anpassen`,bulkEnable:`Erweiterungen aktivieren`,bulkDisable:`Erweiterungen deaktivieren`},subHeadings:{list:`Anwendungsmodule und -plugins verwalten`,detail:`Erweiterungsinformationen und -konfiguration anzeigen`,adjustFilters:`Erweiterungen nach verschiedenen Kriterien filtern`},breadcrumbs:{extensions:{list:`Erweiterungen`,detail:`Erweiterung: {extension}`}},tabs:{all:`Alle Erweiterungen`,modules:`Module`,plugins:`Plugins`,services:`Dienste`},labels:{module:`Modul`,plugin:`Plugin`,core:`Kern`,addon:`Erweiterung`,enabled:`Aktiviert`,disabled:`Deaktiviert`,version:`Version`,author:`Autor`,type:`Typ`,kind:`Art`,source:`Quelle`,status:`Status`,configuration:`Konfiguration`,description:`Beschreibung`,details:`Details`,links:`Links`,readme:`Über`,documentation:`Dokumentation`,logs:`Protokolle`,live:`Live`},fields:{search:{placeholder:`Erweiterungen suchen...`}},filters:{kind:{title:`Art`},enabled:{title:`Status`},type:{title:`Typ`}},states:{all:`Alle`},table:{columns:{name:{title:`Name`},type:{title:`Typ`},kind:{title:`Art`},version:{title:`Version`},core:{title:`Kern`},enabled:{title:`Aktiviert`}}},texts:{loadingExtensions:`Erweiterungen werden geladen...`,noExtensions:`Keine Erweiterungen installiert`,noFilteredExtensions:`Keine Erweiterungen entsprechen Ihren aktuellen Filtern`,logs:{noLogs:`Keine Protokolle verfügbar`,noLogsDescription:`Diese Erweiterung hat noch keine Protokolleinträge erzeugt`,noFilteredLogs:`Keine Protokolle entsprechen Ihren aktuellen Filtern`,noMessage:`Keine Nachricht`,noMoreEntries:`Keine weiteren Protokolleinträge`,allLevels:`Alle Stufen`,timeRange:{all:`Gesamte Zeit`,"1h":`Letzte 1 Stunde`,"6h":`Letzte 6 Stunden`,"24h":`Letzte 24 Stunden`,"7d":`Letzte 7 Tage`}}},buttons:{actions:`Aktionen`,documentation:`Doku`,repository:`Repository`,issues:`Probleme`,enable:`Aktivieren`,disable:`Deaktivieren`,remove:`Entfernen`,configure:`Konfigurieren`,viewDetails:`Details anzeigen`,refresh:`Aktualisieren`,loadMore:`Mehr laden`,detail:{title:`Details`},reset:{title:`Filter zurücksetzen`},resetFilters:{title:`Filter zurücksetzen`},yes:`Ja`,no:`Nein`},tooltips:{coreCannotBeRemoved:`Kernerweiterungen können nicht entfernt werden`,coreModuleCannotBeDisabled:`Kernmodule können nicht deaktiviert werden`,removeNotSupported:`Entfernung von Erweiterungen wird noch nicht unterstützt`,cannotToggleEnabled:`Diese Erweiterung kann nicht aktiviert/deaktiviert werden`,openConfiguration:`Erweiterungskonfiguration öffnen`},messages:{noExtensions:`Keine Erweiterungen gefunden`,noDescription:`Keine Beschreibung verfügbar`,extensionEnabled:`Erweiterung wurde aktiviert`,extensionDisabled:`Erweiterung wurde deaktiviert`,updateError:`Aktualisierung der Erweiterung fehlgeschlagen`,coreExtensionError:`Kernerweiterungen können nicht geändert werden`,notConfigurableError:`Diese Erweiterung unterstützt kein Aktivieren/Deaktivieren`,loadError:`Erweiterungen konnten nicht geladen werden`,noMatchingExtensions:`Keine Erweiterungen entsprechen Ihren Filtern`,confirmBulkEnable:`Sind Sie sicher, dass Sie {count} Erweiterung(en) aktivieren möchten?`,confirmBulkDisable:`Sind Sie sicher, dass Sie {count} Erweiterung(en) deaktivieren möchten?`,bulkEnabled:`{count} Erweiterung(en) wurden aktiviert`,bulkDisabled:`{count} Erweiterung(en) wurden deaktiviert`,bulkEnableFailed:`Aktivierung von {count} Erweiterung(en) fehlgeschlagen`,bulkDisableFailed:`Deaktivierung von {count} Erweiterung(en) fehlgeschlagen`,bulkEnableCanceled:`Massenaktivierung wurde abgebrochen`,bulkDisableCanceled:`Massendeaktivierung wurde abgebrochen`,noExtensionsToEnable:`Keine Erweiterungen zum Aktivieren (alle ausgewählten sind bereits aktiviert oder können nicht umgeschaltet werden)`,noExtensionsToDisable:`Keine Erweiterungen zum Deaktivieren (alle ausgewählten sind bereits deaktiviert oder können nicht umgeschaltet werden)`},actions:{labels:{tab:`Aktionen`,category:{general:`Allgemein`,simulation:`Simulation`,data:`Daten`,diagnostics:`Diagnose`,maintenance:`Wartung`},required:`Erforderlich`,dangerous:`Gefährlich`,comingSoon:`Demnächst`},buttons:{run:`Ausführen`,confirm:`Bestätigen`,cancel:`Abbrechen`},messages:{success:`Aktion erfolgreich abgeschlossen`,error:`Aktion fehlgeschlagen`,confirmDangerous:`Diese Aktion kann erhebliche Auswirkungen haben. Sind Sie sicher, dass Sie fortfahren möchten?`,noActions:`Keine Aktionen für diese Erweiterung verfügbar`,interactiveNotAvailable:`Interaktive Aktionen werden in einem zukünftigen Update verfügbar sein`,loading:`Aktionen werden geladen...`}},services:{headings:{list:`Plugin-Dienste`,subHeading:`Plugin-Dienste überwachen und steuern`},labels:{pluginName:`Plugin`,serviceId:`Dienst`,state:`Status`,enabled:`Aktiviert`,disabled:`Deaktiviert`,healthy:`Gesund`,unhealthy:`Fehlerhaft`,uptime:`Betriebszeit`,startCount:`Starts`,lastStarted:`Zuletzt gestartet`,lastStopped:`Zuletzt gestoppt`,lastError:`Letzter Fehler`},states:{stopped:`Gestoppt`,starting:`Startet`,started:`Aktiv`,stopping:`Stoppt`,error:`Fehler`},buttons:{start:`Starten`,stop:`Stoppen`,restart:`Neustarten`,refresh:`Aktualisieren`},messages:{started:`Dienst wurde gestartet`,serviceStarting:`Dienst wird gestartet — es kann einen Moment dauern, bis er vollständig bereit ist`,stopped:`Dienst wurde gestoppt`,restarted:`Dienst wurde neu gestartet`,startError:`Dienst konnte nicht gestartet werden`,stopError:`Dienst konnte nicht gestoppt werden`,restartError:`Dienst konnte nicht neu gestartet werden`,loadError:`Dienste konnten nicht geladen werden`,noServices:`Keine Dienste verfügbar`},tooltips:{disabledPlugin:`Plugin ist deaktiviert`,transitioning:`Dienst wechselt den Zustand`,startService:`Diesen Dienst starten`,stopService:`Diesen Dienst stoppen`,restartService:`Diesen Dienst neu starten`},texts:{loadingServices:`Dienste werden geladen...`,noServices:`Keine verwalteten Dienste gefunden`,pluginDisabled:`Plugin deaktiviert`}}},wc={menu:{title:`Extensions`},meta:{extensions:{list:{title:`List extensions`},detail:{title:`Extension: {extension}`}}},headings:{list:`Extensions`,detail:`Extension Detail`,adjustFilters:`Adjust Filters`,bulkEnable:`Enable extensions`,bulkDisable:`Disable extensions`},subHeadings:{list:`Manage your application modules and plugins`,detail:`View extension information and configuration`,adjustFilters:`Filter extensions by various criteria`},breadcrumbs:{extensions:{list:`extensions`,detail:`extension: {extension}`}},tabs:{all:`All Extensions`,modules:`Modules`,plugins:`Plugins`,services:`Services`},labels:{module:`Module`,plugin:`Plugin`,core:`Core`,addon:`Add-on`,enabled:`Enabled`,disabled:`Disabled`,version:`Version`,author:`Author`,type:`Type`,kind:`Kind`,source:`Source`,status:`Status`,configuration:`Configuration`,description:`Description`,details:`Details`,links:`Links`,readme:`About`,documentation:`Documentation`,logs:`Logs`,live:`Live`},fields:{search:{placeholder:`Search extensions...`}},filters:{kind:{title:`Kind`},enabled:{title:`Status`},type:{title:`Type`}},states:{all:`All`},table:{columns:{name:{title:`Name`},type:{title:`Type`},kind:{title:`Kind`},version:{title:`Version`},core:{title:`Core`},enabled:{title:`Enabled`}}},texts:{loadingExtensions:`Loading extensions...`,noExtensions:`No extensions installed`,noFilteredExtensions:`No extensions match your current filters`,logs:{noLogs:`No logs available`,noLogsDescription:`This extension has not produced any log entries yet`,noFilteredLogs:`No logs match your current filters`,noMessage:`No message`,noMoreEntries:`No more log entries`,allLevels:`All levels`,timeRange:{all:`All time`,"1h":`Last 1 hour`,"6h":`Last 6 hours`,"24h":`Last 24 hours`,"7d":`Last 7 days`}}},buttons:{actions:`Actions`,documentation:`Docs`,repository:`Repository`,issues:`Issues`,enable:`Enable`,disable:`Disable`,remove:`Remove`,configure:`Configure`,viewDetails:`View Details`,refresh:`Refresh`,loadMore:`Load More`,detail:{title:`Detail`},reset:{title:`Reset Filters`},resetFilters:{title:`Reset Filters`},yes:`Yes`,no:`No`},tooltips:{coreCannotBeRemoved:`Core extensions cannot be removed`,coreModuleCannotBeDisabled:`Core modules cannot be disabled`,removeNotSupported:`Extension removal is not yet supported`,cannotToggleEnabled:`This extension cannot be enabled/disabled`,openConfiguration:`Open extension configuration`},messages:{noExtensions:`No extensions found`,noDescription:`No description available`,extensionEnabled:`Extension has been enabled`,extensionDisabled:`Extension has been disabled`,updateError:`Failed to update extension`,coreExtensionError:`Core extensions cannot be modified`,notConfigurableError:`This extension does not support enable/disable`,loadError:`Failed to load extensions`,noMatchingExtensions:`No extensions match your filters`,confirmBulkEnable:`Are you sure you want to enable {count} extension(s)?`,confirmBulkDisable:`Are you sure you want to disable {count} extension(s)?`,bulkEnabled:`{count} extension(s) have been enabled`,bulkDisabled:`{count} extension(s) have been disabled`,bulkEnableFailed:`Failed to enable {count} extension(s)`,bulkDisableFailed:`Failed to disable {count} extension(s)`,bulkEnableCanceled:`Bulk enable was canceled`,bulkDisableCanceled:`Bulk disable was canceled`,noExtensionsToEnable:`No extensions to enable (all selected are already enabled or cannot be toggled)`,noExtensionsToDisable:`No extensions to disable (all selected are already disabled or cannot be toggled)`},actions:{labels:{tab:`Actions`,category:{general:`General`,simulation:`Simulation`,data:`Data`,diagnostics:`Diagnostics`,maintenance:`Maintenance`},required:`Required`,dangerous:`Dangerous`,comingSoon:`Coming soon`},buttons:{run:`Run`,confirm:`Confirm`,cancel:`Cancel`},messages:{success:`Action completed successfully`,error:`Action failed`,confirmDangerous:`This action may have significant effects. Are you sure you want to proceed?`,noActions:`No actions available for this extension`,interactiveNotAvailable:`Interactive actions will be available in a future update`,loading:`Loading actions...`}},services:{headings:{list:`Plugin Services`,subHeading:`Monitor and control plugin services`},labels:{pluginName:`Plugin`,serviceId:`Service`,state:`State`,enabled:`Enabled`,disabled:`Disabled`,healthy:`Healthy`,unhealthy:`Unhealthy`,uptime:`Uptime`,startCount:`Starts`,lastStarted:`Last Started`,lastStopped:`Last Stopped`,lastError:`Last Error`},states:{stopped:`Stopped`,starting:`Starting`,started:`Running`,stopping:`Stopping`,error:`Error`},buttons:{start:`Start`,stop:`Stop`,restart:`Restart`,refresh:`Refresh`},messages:{started:`Service has been started`,serviceStarting:`Service is starting up — it may take a moment to become fully ready`,stopped:`Service has been stopped`,restarted:`Service has been restarted`,startError:`Failed to start service`,stopError:`Failed to stop service`,restartError:`Failed to restart service`,loadError:`Failed to load services`,noServices:`No services available`},tooltips:{disabledPlugin:`Plugin is disabled`,transitioning:`Service is transitioning`,startService:`Start this service`,stopService:`Stop this service`,restartService:`Restart this service`},texts:{loadingServices:`Loading services...`,noServices:`No managed services found`,pluginDisabled:`Plugin disabled`}}},Tc={menu:{title:`Extensiones`},meta:{extensions:{list:{title:`Listar extensiones`},detail:{title:`Extensión: {extension}`}}},headings:{list:`Extensiones`,detail:`Detalle de extensión`,adjustFilters:`Ajustar filtros`,bulkEnable:`Activar extensiones`,bulkDisable:`Desactivar extensiones`},subHeadings:{list:`Gestiona los módulos y complementos de tu aplicación`,detail:`Ver información y configuración de la extensión`,adjustFilters:`Filtra extensiones por varios criterios`},breadcrumbs:{extensions:{list:`extensiones`,detail:`extensión: {extension}`}},tabs:{all:`Todas las extensiones`,modules:`Módulos`,plugins:`Complementos`,services:`Servicios`},labels:{module:`Módulo`,plugin:`Complemento`,core:`Núcleo`,addon:`Complemento`,enabled:`Activado`,disabled:`Desactivado`,version:`Versión`,author:`Autor`,type:`Tipo`,kind:`Clase`,source:`Origen`,status:`Estado`,configuration:`Configuración`,description:`Descripción`,details:`Detalles`,links:`Enlaces`,readme:`Acerca de`,documentation:`Documentación`,logs:`Registros`,live:`En vivo`},fields:{search:{placeholder:`Buscar extensiones...`}},filters:{kind:{title:`Clase`},enabled:{title:`Estado`},type:{title:`Tipo`}},states:{all:`Todos`},table:{columns:{name:{title:`Nombre`},type:{title:`Tipo`},kind:{title:`Clase`},version:{title:`Versión`},core:{title:`Núcleo`},enabled:{title:`Activado`}}},texts:{loadingExtensions:`Cargando extensiones...`,noExtensions:`No hay extensiones instaladas`,noFilteredExtensions:`Ninguna extensión coincide con los filtros actuales`,logs:{noLogs:`No hay registros disponibles`,noLogsDescription:`Esta extensión aún no ha producido ninguna entrada de registro`,noFilteredLogs:`Ningún registro coincide con los filtros actuales`,noMessage:`Sin mensaje`,noMoreEntries:`No hay más entradas de registro`,allLevels:`Todos los niveles`,timeRange:{all:`Todo el tiempo`,"1h":`Última hora`,"6h":`Últimas 6 horas`,"24h":`Últimas 24 horas`,"7d":`Últimos 7 días`}}},buttons:{actions:`Acciones`,documentation:`Docs`,repository:`Repositorio`,issues:`Incidencias`,enable:`Activar`,disable:`Desactivar`,remove:`Eliminar`,configure:`Configurar`,viewDetails:`Ver detalles`,refresh:`Actualizar`,loadMore:`Cargar más`,detail:{title:`Detalle`},reset:{title:`Restablecer filtros`},resetFilters:{title:`Restablecer filtros`},yes:`Sí`,no:`No`},tooltips:{coreCannotBeRemoved:`Las extensiones del núcleo no se pueden eliminar`,coreModuleCannotBeDisabled:`Los módulos del núcleo no se pueden desactivar`,removeNotSupported:`La eliminación de extensiones aún no está disponible`,cannotToggleEnabled:`Esta extensión no se puede activar/desactivar`,openConfiguration:`Abrir configuración de la extensión`},messages:{noExtensions:`No se encontraron extensiones`,noDescription:`No hay descripción disponible`,extensionEnabled:`La extensión ha sido activada`,extensionDisabled:`La extensión ha sido desactivada`,updateError:`Error al actualizar la extensión`,coreExtensionError:`Las extensiones del núcleo no se pueden modificar`,notConfigurableError:`Esta extensión no admite activar/desactivar`,loadError:`Error al cargar las extensiones`,noMatchingExtensions:`Ninguna extensión coincide con los filtros`,confirmBulkEnable:`¿Estás seguro de que deseas activar {count} extensión(es)?`,confirmBulkDisable:`¿Estás seguro de que deseas desactivar {count} extensión(es)?`,bulkEnabled:`{count} extensión(es) han sido activadas`,bulkDisabled:`{count} extensión(es) han sido desactivadas`,bulkEnableFailed:`Error al activar {count} extensión(es)`,bulkDisableFailed:`Error al desactivar {count} extensión(es)`,bulkEnableCanceled:`La activación masiva ha sido cancelada`,bulkDisableCanceled:`La desactivación masiva ha sido cancelada`,noExtensionsToEnable:`No hay extensiones para activar (todas las seleccionadas ya están activadas o no se pueden cambiar)`,noExtensionsToDisable:`No hay extensiones para desactivar (todas las seleccionadas ya están desactivadas o no se pueden cambiar)`},actions:{labels:{tab:`Acciones`,category:{general:`General`,simulation:`Simulación`,data:`Datos`,diagnostics:`Diagnósticos`,maintenance:`Mantenimiento`},required:`Requerido`,dangerous:`Peligroso`,comingSoon:`Próximamente`},buttons:{run:`Ejecutar`,confirm:`Confirmar`,cancel:`Cancelar`},messages:{success:`Acción completada correctamente`,error:`La acción falló`,confirmDangerous:`Esta acción puede tener efectos significativos. ¿Estás seguro de que deseas continuar?`,noActions:`No hay acciones disponibles para esta extensión`,interactiveNotAvailable:`Las acciones interactivas estarán disponibles en una futura actualización`,loading:`Cargando acciones...`}},services:{headings:{list:`Servicios de complementos`,subHeading:`Monitorea y controla los servicios de complementos`},labels:{pluginName:`Complemento`,serviceId:`Servicio`,state:`Estado`,enabled:`Activado`,disabled:`Desactivado`,healthy:`Saludable`,unhealthy:`No saludable`,uptime:`Tiempo activo`,startCount:`Inicios`,lastStarted:`Último inicio`,lastStopped:`Última detención`,lastError:`Último error`},states:{stopped:`Detenido`,starting:`Iniciando`,started:`En ejecución`,stopping:`Deteniéndose`,error:`Error`},buttons:{start:`Iniciar`,stop:`Detener`,restart:`Reiniciar`,refresh:`Actualizar`},messages:{started:`El servicio ha sido iniciado`,serviceStarting:`El servicio está iniciándose — puede tardar un momento en estar completamente listo`,stopped:`El servicio ha sido detenido`,restarted:`El servicio ha sido reiniciado`,startError:`Error al iniciar el servicio`,stopError:`Error al detener el servicio`,restartError:`Error al reiniciar el servicio`,loadError:`Error al cargar los servicios`,noServices:`No hay servicios disponibles`},tooltips:{disabledPlugin:`El complemento está desactivado`,transitioning:`El servicio está en transición`,startService:`Iniciar este servicio`,stopService:`Detener este servicio`,restartService:`Reiniciar este servicio`},texts:{loadingServices:`Cargando servicios...`,noServices:`No se encontraron servicios gestionados`,pluginDisabled:`Complemento desactivado`}}},Ec={menu:{title:`Rozszerzenia`},meta:{extensions:{list:{title:`Lista rozszerzeń`},detail:{title:`Rozszerzenie: {extension}`}}},headings:{list:`Rozszerzenia`,detail:`Szczegóły rozszerzenia`,adjustFilters:`Dostosuj filtry`,bulkEnable:`Włącz rozszerzenia`,bulkDisable:`Wyłącz rozszerzenia`},subHeadings:{list:`Zarządzaj modułami i wtyczkami aplikacji`,detail:`Wyświetl informacje i konfigurację rozszerzenia`,adjustFilters:`Filtruj rozszerzenia według różnych kryteriów`},breadcrumbs:{extensions:{list:`rozszerzenia`,detail:`rozszerzenie: {extension}`}},tabs:{all:`Wszystkie rozszerzenia`,modules:`Moduły`,plugins:`Wtyczki`,services:`Usługi`},labels:{module:`Moduł`,plugin:`Wtyczka`,core:`Rdzeń`,addon:`Dodatek`,enabled:`Włączony`,disabled:`Wyłączony`,version:`Wersja`,author:`Autor`,type:`Typ`,kind:`Rodzaj`,source:`Źródło`,status:`Status`,configuration:`Konfiguracja`,description:`Opis`,details:`Szczegóły`,links:`Łącza`,readme:`O rozszerzeniu`,documentation:`Dokumentacja`,logs:`Logi`,live:`Na żywo`},fields:{search:{placeholder:`Szukaj rozszerzeń...`}},filters:{kind:{title:`Rodzaj`},enabled:{title:`Status`},type:{title:`Typ`}},states:{all:`Wszystkie`},table:{columns:{name:{title:`Nazwa`},type:{title:`Typ`},kind:{title:`Rodzaj`},version:{title:`Wersja`},core:{title:`Rdzeń`},enabled:{title:`Włączony`}}},texts:{loadingExtensions:`Ładowanie rozszerzeń...`,noExtensions:`Brak zainstalowanych rozszerzeń`,noFilteredExtensions:`Żadne rozszerzenia nie pasują do bieżących filtrów`,logs:{noLogs:`Brak dostępnych logów`,noLogsDescription:`To rozszerzenie nie wygenerowało jeszcze żadnych wpisów w logach`,noFilteredLogs:`Żadne logi nie pasują do bieżących filtrów`,noMessage:`Brak wiadomości`,noMoreEntries:`Brak więcej wpisów w logach`,allLevels:`Wszystkie poziomy`,timeRange:{all:`Cały czas`,"1h":`Ostatnia 1 godzina`,"6h":`Ostatnie 6 godzin`,"24h":`Ostatnie 24 godziny`,"7d":`Ostatnie 7 dni`}}},buttons:{actions:`Akcje`,documentation:`Dokumentacja`,repository:`Repozytorium`,issues:`Problemy`,enable:`Włącz`,disable:`Wyłącz`,remove:`Usuń`,configure:`Skonfiguruj`,viewDetails:`Pokaż szczegóły`,refresh:`Odśwież`,loadMore:`Załaduj więcej`,detail:{title:`Szczegóły`},reset:{title:`Resetuj filtry`},resetFilters:{title:`Resetuj filtry`},yes:`Tak`,no:`Nie`},tooltips:{coreCannotBeRemoved:`Rozszerzenia rdzenne nie mogą być usunięte`,coreModuleCannotBeDisabled:`Moduły rdzenne nie mogą być wyłączone`,removeNotSupported:`Usuwanie rozszerzeń nie jest jeszcze obsługiwane`,cannotToggleEnabled:`To rozszerzenie nie może być włączone/wyłączone`,openConfiguration:`Otwórz konfigurację rozszerzenia`},messages:{noExtensions:`Nie znaleziono rozszerzeń`,noDescription:`Brak dostępnego opisu`,extensionEnabled:`Rozszerzenie zostało włączone`,extensionDisabled:`Rozszerzenie zostało wyłączone`,updateError:`Nie udało się zaktualizować rozszerzenia`,coreExtensionError:`Rozszerzenia rdzenne nie mogą być modyfikowane`,notConfigurableError:`To rozszerzenie nie obsługuje włączania/wyłączania`,loadError:`Nie udało się wczytać rozszerzeń`,noMatchingExtensions:`Żadne rozszerzenia nie pasują do filtrów`,confirmBulkEnable:`Czy na pewno chcesz włączyć {count} rozszerzeń?`,confirmBulkDisable:`Czy na pewno chcesz wyłączyć {count} rozszerzeń?`,bulkEnabled:`Włączono {count} rozszerzeń`,bulkDisabled:`Wyłączono {count} rozszerzeń`,bulkEnableFailed:`Nie udało się włączyć {count} rozszerzeń`,bulkDisableFailed:`Nie udało się wyłączyć {count} rozszerzeń`,bulkEnableCanceled:`Masowe włączanie zostało anulowane`,bulkDisableCanceled:`Masowe wyłączanie zostało anulowane`,noExtensionsToEnable:`Brak rozszerzeń do włączenia (wszystkie zaznaczone są już włączone lub nie można ich przełączyć)`,noExtensionsToDisable:`Brak rozszerzeń do wyłączenia (wszystkie zaznaczone są już wyłączone lub nie można ich przełączyć)`},actions:{labels:{tab:`Akcje`,category:{general:`Ogólne`,simulation:`Symulacja`,data:`Dane`,diagnostics:`Diagnostyka`,maintenance:`Konserwacja`},required:`Wymagane`,dangerous:`Niebezpieczne`,comingSoon:`Wkrótce`},buttons:{run:`Uruchom`,confirm:`Potwierdź`,cancel:`Anuluj`},messages:{success:`Akcja zakończona pomyślnie`,error:`Akcja nie powiodła się`,confirmDangerous:`Ta akcja może mieć znaczące konsekwencje. Czy na pewno chcesz kontynuować?`,noActions:`Brak dostępnych akcji dla tego rozszerzenia`,interactiveNotAvailable:`Akcje interaktywne będą dostępne w przyszłej aktualizacji`,loading:`Ładowanie akcji...`}},services:{headings:{list:`Usługi wtyczek`,subHeading:`Monitoruj i kontroluj usługi wtyczek`},labels:{pluginName:`Wtyczka`,serviceId:`Usługa`,state:`Stan`,enabled:`Włączony`,disabled:`Wyłączony`,healthy:`Sprawny`,unhealthy:`Niesprawny`,uptime:`Czas pracy`,startCount:`Uruchomienia`,lastStarted:`Ostatnio uruchomiony`,lastStopped:`Ostatnio zatrzymany`,lastError:`Ostatni błąd`},states:{stopped:`Zatrzymany`,starting:`Uruchamianie`,started:`Działa`,stopping:`Zatrzymywanie`,error:`Błąd`},buttons:{start:`Uruchom`,stop:`Zatrzymaj`,restart:`Uruchom ponownie`,refresh:`Odśwież`},messages:{started:`Usługa została uruchomiona`,serviceStarting:`Usługa się uruchamia — może to chwilę potrwać zanim będzie w pełni gotowa`,stopped:`Usługa została zatrzymana`,restarted:`Usługa została uruchomiona ponownie`,startError:`Nie udało się uruchomić usługi`,stopError:`Nie udało się zatrzymać usługi`,restartError:`Nie udało się uruchomić ponownie usługi`,loadError:`Nie udało się wczytać usług`,noServices:`Brak dostępnych usług`},tooltips:{disabledPlugin:`Wtyczka jest wyłączona`,transitioning:`Usługa jest w trakcie przejścia`,startService:`Uruchom tę usługę`,stopService:`Zatrzymaj tę usługę`,restartService:`Uruchom ponownie tę usługę`},texts:{loadingServices:`Ładowanie usług...`,noServices:`Nie znaleziono zarządzanych usług`,pluginDisabled:`Wtyczka wyłączona`}}},Dc={menu:{title:`Rozšírenia`},meta:{extensions:{list:{title:`Zoznam rozšírení`},detail:{title:`Rozšírenie: {extension}`}}},headings:{list:`Rozšírenia`,detail:`Detail rozšírenia`,adjustFilters:`Upraviť filtre`,bulkEnable:`Povoliť rozšírenia`,bulkDisable:`Zakázať rozšírenia`},subHeadings:{list:`Spravujte moduly a pluginy aplikácie`,detail:`Zobraziť informácie a konfiguráciu rozšírenia`,adjustFilters:`Filtrovať rozšírenia podľa rôznych kritérií`},breadcrumbs:{extensions:{list:`rozšírenia`,detail:`rozšírenie: {extension}`}},tabs:{all:`Všetky rozšírenia`,modules:`Moduly`,plugins:`Pluginy`,services:`Služby`},labels:{module:`Modul`,plugin:`Plugin`,core:`Jadro`,addon:`Doplnok`,enabled:`Povolené`,disabled:`Zakázané`,version:`Verzia`,author:`Autor`,type:`Typ`,kind:`Druh`,source:`Zdroj`,status:`Stav`,configuration:`Konfigurácia`,description:`Popis`,details:`Detaily`,links:`Odkazy`,readme:`O rozšírení`,documentation:`Dokumentácia`,logs:`Logy`,live:`Naživo`},fields:{search:{placeholder:`Vyhľadať rozšírenia...`}},filters:{kind:{title:`Druh`},enabled:{title:`Stav`},type:{title:`Typ`}},states:{all:`Všetky`},table:{columns:{name:{title:`Názov`},type:{title:`Typ`},kind:{title:`Druh`},version:{title:`Verzia`},core:{title:`Jadro`},enabled:{title:`Povolené`}}},texts:{loadingExtensions:`Načítavanie rozšírení...`,noExtensions:`Žiadne rozšírenia nie sú nainštalované`,noFilteredExtensions:`Žiadne rozšírenia nezodpovedajú aktuálnym filtrom`,logs:{noLogs:`Žiadne logy nie sú dostupné`,noLogsDescription:`Toto rozšírenie zatiaľ nevytvorilo žiadne záznamy logov`,noFilteredLogs:`Žiadne logy nezodpovedajú aktuálnym filtrom`,noMessage:`Žiadna správa`,noMoreEntries:`Žiadne ďalšie záznamy logov`,allLevels:`Všetky úrovne`,timeRange:{all:`Celý čas`,"1h":`Posledná 1 hodina`,"6h":`Posledných 6 hodín`,"24h":`Posledných 24 hodín`,"7d":`Posledných 7 dní`}}},buttons:{actions:`Akcie`,documentation:`Dokumentácia`,repository:`Repozitár`,issues:`Problémy`,enable:`Povoliť`,disable:`Zakázať`,remove:`Odstrániť`,configure:`Konfigurovať`,viewDetails:`Zobraziť detaily`,refresh:`Obnoviť`,loadMore:`Načítať viac`,detail:{title:`Detail`},reset:{title:`Resetovať filtre`},resetFilters:{title:`Resetovať filtre`},yes:`Áno`,no:`Nie`},tooltips:{coreCannotBeRemoved:`Jadrové rozšírenia nie je možné odstrániť`,coreModuleCannotBeDisabled:`Jadrové moduly nie je možné zakázať`,removeNotSupported:`Odstránenie rozšírení zatiaľ nie je podporované`,cannotToggleEnabled:`Toto rozšírenie nie je možné povoliť/zakázať`,openConfiguration:`Otvoriť konfiguráciu rozšírenia`},messages:{noExtensions:`Neboli nájdené žiadne rozšírenia`,noDescription:`Popis nie je dostupný`,extensionEnabled:`Rozšírenie bolo povolené`,extensionDisabled:`Rozšírenie bolo zakázané`,updateError:`Nepodarilo sa aktualizovať rozšírenie`,coreExtensionError:`Jadrové rozšírenia nie je možné upravovať`,notConfigurableError:`Toto rozšírenie nepodporuje povolenie/zakázanie`,loadError:`Nepodarilo sa načítať rozšírenia`,noMatchingExtensions:`Žiadne rozšírenia nezodpovedajú vašim filtrom`,confirmBulkEnable:`Naozaj chcete povoliť {count} rozšírení?`,confirmBulkDisable:`Naozaj chcete zakázať {count} rozšírení?`,bulkEnabled:`{count} rozšírení bolo povolených`,bulkDisabled:`{count} rozšírení bolo zakázaných`,bulkEnableFailed:`Nepodarilo sa povoliť {count} rozšírení`,bulkDisableFailed:`Nepodarilo sa zakázať {count} rozšírení`,bulkEnableCanceled:`Hromadné povolenie bolo zrušené`,bulkDisableCanceled:`Hromadné zakázanie bolo zrušené`,noExtensionsToEnable:`Žiadne rozšírenia na povolenie (všetky vybrané sú už povolené alebo ich nie je možné prepnúť)`,noExtensionsToDisable:`Žiadne rozšírenia na zakázanie (všetky vybrané sú už zakázané alebo ich nie je možné prepnúť)`},actions:{labels:{tab:`Akcie`,category:{general:`Všeobecné`,simulation:`Simulácia`,data:`Dáta`,diagnostics:`Diagnostika`,maintenance:`Údržba`},required:`Povinné`,dangerous:`Nebezpečné`,comingSoon:`Čoskoro`},buttons:{run:`Spustiť`,confirm:`Potvrdiť`,cancel:`Zrušiť`},messages:{success:`Akcia bola úspešne dokončená`,error:`Akcia zlyhala`,confirmDangerous:`Táto akcia môže mať významné dôsledky. Naozaj chcete pokračovať?`,noActions:`Pre toto rozšírenie nie sú dostupné žiadne akcie`,interactiveNotAvailable:`Interaktívne akcie budú dostupné v budúcej aktualizácii`,loading:`Načítavanie akcií...`}},services:{headings:{list:`Služby pluginu`,subHeading:`Monitorovať a ovládať služby pluginu`},labels:{pluginName:`Plugin`,serviceId:`Služba`,state:`Stav`,enabled:`Povolené`,disabled:`Zakázané`,healthy:`Zdravé`,unhealthy:`Nezdravé`,uptime:`Doba behu`,startCount:`Počet štartov`,lastStarted:`Naposledy spustené`,lastStopped:`Naposledy zastavené`,lastError:`Posledná chyba`},states:{stopped:`Zastavené`,starting:`Spúšťanie`,started:`Beží`,stopping:`Zastavovanie`,error:`Chyba`},buttons:{start:`Spustiť`,stop:`Zastaviť`,restart:`Reštartovať`,refresh:`Obnoviť`},messages:{started:`Služba bola spustená`,serviceStarting:`Služba sa spúšťa — môže chvíľu trvať, kým bude plne pripravená`,stopped:`Služba bola zastavená`,restarted:`Služba bola reštartovaná`,startError:`Nepodarilo sa spustiť službu`,stopError:`Nepodarilo sa zastaviť službu`,restartError:`Nepodarilo sa reštartovať službu`,loadError:`Nepodarilo sa načítať služby`,noServices:`Žiadne služby nie sú dostupné`},tooltips:{disabledPlugin:`Plugin je zakázaný`,transitioning:`Služba prechádza medzi stavmi`,startService:`Spustiť túto službu`,stopService:`Zastaviť túto službu`,restartService:`Reštartovať túto službu`},texts:{loadingServices:`Načítavanie služieb...`,noServices:`Neboli nájdené žiadne spravované služby`,pluginDisabled:`Plugin zakázaný`}}},Oc={"cs-CZ":Sc,"de-DE":Cc,"en-US":wc,"es-ES":Tc,"pl-PL":Ec,"sk-SK":Dc},kc=[{path:`extensions`,name:ta.EXTENSIONS,component:()=>Et(()=>import(`./view-extensions-xnAarDlC.js`),__vite__mapDeps([35,1,2,3,4,5,36,37,38,39,40,31,41,21,32,42,22,43,24,10])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:()=>Jt.global.t(`extensionsModule.menu.title`),icon:`mdi:puzzle`,menu:3e3}},{path:`extensions/:type`,name:ta.EXTENSION_DETAIL,component:()=>Et(()=>import(`./view-extension-detail-BAuEjk3c.js`),__vite__mapDeps([44,1,2,3,4,5,36,37,38,39,40,31,41,21,32,42,22,43,10,45])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Extension Detail`}}],Ac=Y(),jc=q({name:Ac,kind:K(na),surface:K(Qi),displayName:Y(),description:Y().nullable(),version:Y().nullable(),source:K($i)}),Mc=z([jc.extend({remoteUrl:Y()}),jc.extend({routePrefix:Y()})]);q({fetching:q({items:R().default(!1),item:H(Ac)})}),q({name:Ac}),z([q({name:Y(),kind:K(na),surface:K(Qi),display_name:Y(),description:Y().nullable(),version:Y().nullable(),source:K($i),remote_url:Y(),type:Z(`admin`)}),q({name:Y(),kind:K(na),surface:K(Qi),display_name:Y(),description:Y().nullable(),version:Y().nullable(),source:K($i),route_prefix:Y(),type:Z(`backend`)})]);var Nc=e=>{let t=Mc.safeParse({name:e.name,kind:e.kind,surface:e.surface,displayName:e.display_name,description:e.description,version:e.version,source:e.source,routePrefix:`route_prefix`in e?e.route_prefix:void 0,remoteUrl:`remote_url`in e?e.remote_url:void 0});if(!t.success)throw new ra(`Failed to validate received discovered extension data.`);return t.data},Pc={fetching:{items:!1,item:[]}},Fc=it(`extensions_module-discovered`,()=>{let e=fn(),t=N(Pc),n=N(!1),r=N({}),i=()=>n.value,a=e=>t.value.fetching.item.includes(e),o=()=>t.value.fetching.items,s=()=>Object.values(r.value),c=e=>r.value[e]??null,l={},u={};return{semaphore:t,firstLoad:n,data:r,firstLoadFinished:i,getting:a,fetching:o,findAll:s,findByName:c,get:async n=>{let i=l[n.name];if(i)return i;let a=(async()=>{if(t.value.fetching.item.includes(n.name))throw new ia(`Already fetching discovered extension.`);t.value.fetching.item.push(n.name);try{let{data:t,response:i}=await e.client.GET(`/modules/extensions/discovered/{name}`,{params:{path:{name:n.name}}});if(t?.data){let e={};e[n.name]={};for(let n of t.data){let t=Nc(n);if(!Object.prototype.hasOwnProperty.call(e,t.name))throw new ia(`Received extension name is different`);let r=e[t.name];r&&(t.surface===`admin`?r.admin=t:r.backend=t)}return r.value={...r.value,...e},e[n.name]??{admin:void 0,backend:void 0}}throw new ia(`Failed to fetch discovered extension.`,i.status)}finally{t.value.fetching.item=t.value.fetching.item.filter(e=>e!==n.name)}})();l[n.name]=a;try{return await a}finally{delete l[n.name]}},fetch:async()=>{let i=u.all;if(i)return i;let a=(async()=>{if(t.value.fetching.items)throw new ia(`Already fetching discovered extensions.`);t.value.fetching.items=!0;try{let{data:t,response:i}=await e.client.GET(`/modules/extensions/discovered`);if(t?.data){let e={};for(let n of t.data){let t=Nc(n);Object.prototype.hasOwnProperty.call(e,t.name)||(e[t.name]={});let r=e[t.name];r&&(t.surface===`admin`?r.admin=t:t.surface===`backend`&&(r.backend=t))}return r.value=e,n.value=!0,Object.values(r.value)}throw new ia(`Failed to fetch discovered extensions.`,i.status)}finally{t.value.fetching.items=!1}})();u.all=a;try{return await a}finally{delete u.all}}}}),Ic=e=>Fc(e),Lc=q({documentation:Y().optional(),devDocumentation:Y().optional(),bugsTracking:Y().optional(),repository:Y().optional(),homepage:Y().optional()}),Rc=q({type:Y(),kind:K(na),name:Y(),description:Y().optional(),version:Y().optional(),author:Y().optional(),enabled:R(),isCore:R(),canToggleEnabled:R(),links:Lc.optional()}),zc=q({type:Y(),data:q({enabled:R()})}),Bc=e=>{let t=e.version??(e.is_core?`0.1.0-alpha.5`:void 0);return{type:e.type,kind:e.kind===`module`?na.MODULE:na.PLUGIN,name:e.name,description:e.description,version:t,author:e.author,readme:e.readme,docs:e.docs,enabled:e.enabled,isCore:e.is_core,canToggleEnabled:e.can_toggle_enabled,links:e.links?{documentation:e.links.documentation,devDocumentation:e.links.dev_documentation,bugsTracking:e.links.bugs_tracking,repository:e.links.repository,homepage:e.links.homepage}:void 0}},Vc=e=>({enabled:e.enabled}),Hc={fetching:{items:!1,item:[]},updating:[]},Uc=it(`extensions_module-extensions`,()=>{let e=fn(),t=Ke(),n=N(Hc),r=N(!1),i=N({}),a={},o={},s=()=>r.value,c=e=>n.value.fetching.item.includes(e),l=()=>n.value.fetching.items,u=()=>Object.values(i.value),d=e=>Object.values(i.value).filter(t=>t.kind===e),f=e=>i.value[e]??null,p=e=>{if(e.type&&i.value&&e.type in i.value){let n=Rc.safeParse({...i.value[e.type],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new ra(`Failed to update extension.`);return i.value[n.data.type]=n.data}let n=Rc.safeParse({...e.data,type:e.type});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new ra(`Failed to insert extension.`);return i.value=i.value??{},i.value[n.data.type]=n.data},m=async t=>{let r=a[t.type];if(r)return r;let o=(async()=>{if(n.value.fetching.item.includes(t.type))throw new ia(`Already fetching extension.`);n.value.fetching.item.push(t.type);try{let{data:n,error:r,response:a}=await e.client.GET(`/modules/extensions/extensions/{type}`,{params:{path:{type:t.type}}});if(n!==void 0){let e=Bc(n.data);return i.value[e.type]=e,e}let o=`Failed to fetch extension.`;throw r&&(o=Gt(r,o)),new ia(o,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.type)}})();a[t.type]=o;try{return await o}finally{delete a[t.type]}};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:s,getting:c,fetching:l,findAll:u,findByKind:d,findByType:f,set:p,get:m,fetch:async t=>{let a=t?.kind??`all`,s=o[a];if(s)return s;let c=(async()=>{if(n.value.fetching.items)throw new ia(`Already fetching extensions.`);n.value.fetching.items=!0;try{let n,a,o;if(t?.kind===na.MODULE?{data:n,error:a,response:o}=await e.client.GET(`/modules/extensions/extensions/modules`):t?.kind===na.PLUGIN?{data:n,error:a,response:o}=await e.client.GET(`/modules/extensions/extensions/plugins`):{data:n,error:a,response:o}=await e.client.GET(`/modules/extensions/extensions`),n?.data){let e=n.data.map(e=>Bc(e));for(let t of e)i.value[t.type]=t;return r.value=!0,e}let s=`Failed to fetch extensions.`;throw a&&(s=Gt(a,s)),new ia(s,o?.status)}finally{n.value.fetching.items=!1}})();o[a]=c;try{return await c}finally{delete o[a]}},update:async r=>{let a=zc.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new ra(`Failed to update extension.`);if(n.value.updating.includes(r.type))throw new ia(`Extension is already being updated.`);n.value.updating.push(r.type);try{let{data:t,error:n,response:o}=await e.client.PATCH(`/modules/extensions/extensions/{type}`,{params:{path:{type:r.type}},body:{data:Vc(a.data.data)}});if(t!==void 0){let e=Bc(t.data);return i.value[e.type]=e,e}await m({type:r.type});let s=`Failed to update extension.`;throw n&&(s=Gt(n,s)),new ia(s,o.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.type)}}}}),Wc=e=>Uc(e),Gc=q({pluginName:Y(),serviceId:Y(),state:K(Rt),enabled:R(),healthy:R().optional(),lastStartedAt:Y().optional(),lastStoppedAt:Y().optional(),lastError:Y().optional(),startCount:G(),uptimeMs:G().optional()}),Kc=e=>({pluginName:e.plugin_name,serviceId:e.service_id,state:e.state,enabled:e.enabled,healthy:e.healthy,lastStartedAt:e.last_started_at,lastStoppedAt:e.last_stopped_at,lastError:e.last_error,startCount:e.start_count,uptimeMs:e.uptime_ms}),qc={fetching:{items:!1,item:[]},acting:[]},Jc=(e,t)=>`${e}:${t}`,Yc=it(`extensions_module-services`,()=>{let e=fn(),t=Ke(),n=N(qc),r=N(!1),i=N({}),a={},o={};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:()=>r.value,getting:(e,t)=>n.value.fetching.item.includes(Jc(e,t)),fetching:()=>n.value.fetching.items,acting:(e,t)=>n.value.acting.includes(Jc(e,t)),findAll:()=>Object.values(i.value),findByKey:(e,t)=>{let n=Jc(e,t);return i.value[n]??null},set:e=>{let n=Jc(e.pluginName,e.serviceId);if(n in i.value){let r=Gc.safeParse({...i.value[n],...e.data});if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new ra(`Failed to update service.`);return i.value[n]=r.data}let r=Gc.safeParse(e.data);if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new ra(`Failed to insert service.`);return i.value=i.value??{},i.value[n]=r.data},get:async t=>{let r=Jc(t.pluginName,t.serviceId),o=a[r];if(o)return o;let s=(async()=>{if(n.value.fetching.item.includes(r))throw new ia(`Already fetching service.`);n.value.fetching.item.push(r);try{let{data:n,error:a,response:o}=await e.client.GET(`/modules/extensions/services/{pluginName}/{serviceId}`,{params:{path:{pluginName:t.pluginName,serviceId:t.serviceId}}});if(n!==void 0){let e=Kc(n.data);return i.value[r]=e,e}let s=`Failed to fetch service.`;throw a&&(s=Gt(a,s)),new ia(s,o.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==r)}})();a[r]=s;try{return await s}finally{delete a[r]}},fetch:async()=>{if(`all`in o)return o.all;let t=(async()=>{if(n.value.fetching.items)throw new ia(`Already fetching services.`);n.value.fetching.items=!0;try{let{data:t,error:n,response:a}=await e.client.GET(`/modules/extensions/services`);if(t?.data){let e=t.data.map(e=>Kc(e));for(let t of e){let e=Jc(t.pluginName,t.serviceId);i.value[e]=t}return r.value=!0,e}let o=`Failed to fetch services.`;throw n&&(o=Gt(n,o)),new ia(o,a?.status)}finally{n.value.fetching.items=!1}})();o.all=t;try{return await t}finally{delete o.all}},start:async t=>{let r=Jc(t.pluginName,t.serviceId);if(n.value.acting.includes(r))throw new ia(`Action is already in progress for this service.`);n.value.acting.push(r);try{let{data:n,error:a,response:o}=await e.client.POST(`/modules/extensions/services/{pluginName}/{serviceId}/start`,{params:{path:{pluginName:t.pluginName,serviceId:t.serviceId}}});if(n!==void 0){let e=Kc(n.data);return i.value[r]=e,e}let s=`Failed to start service.`;throw a&&(s=Gt(a,s)),new ia(s,o.status)}finally{n.value.acting=n.value.acting.filter(e=>e!==r)}},stop:async t=>{let r=Jc(t.pluginName,t.serviceId);if(n.value.acting.includes(r))throw new ia(`Action is already in progress for this service.`);n.value.acting.push(r);try{let{data:n,error:a,response:o}=await e.client.POST(`/modules/extensions/services/{pluginName}/{serviceId}/stop`,{params:{path:{pluginName:t.pluginName,serviceId:t.serviceId}}});if(n!==void 0){let e=Kc(n.data);return i.value[r]=e,e}let s=`Failed to stop service.`;throw a&&(s=Gt(a,s)),new ia(s,o.status)}finally{n.value.acting=n.value.acting.filter(e=>e!==r)}},restart:async t=>{let r=Jc(t.pluginName,t.serviceId);if(n.value.acting.includes(r))throw new ia(`Action is already in progress for this service.`);n.value.acting.push(r);try{let{data:n,error:a,response:o}=await e.client.POST(`/modules/extensions/services/{pluginName}/{serviceId}/restart`,{params:{path:{pluginName:t.pluginName,serviceId:t.serviceId}}});if(n!==void 0){let e=Kc(n.data);return i.value[r]=e,e}let s=`Failed to restart service.`;throw a&&(s=Gt(a,s)),new ia(s,o.status)}finally{n.value.acting=n.value.acting.filter(e=>e!==r)}}}}),Xc=e=>Yc(e),Zc=Symbol(`FB-Module-Extensions`),Qc={install:(e,t)=>{let n=Ye(e),r=Ce(e),i=Ie(e);for(let[e,n]of Object.entries(Oc)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{extensionsModule:n});t.i18n.global.setLocaleMessage(e,r)}let a=Wc(t.store);e.provide(dt,a),n.addStore(dt,a);let o=Ic(t.store);e.provide(Kt,o),n.addStore(Kt,o);let s=Xc(t.store);e.provide(jt,s),n.addStore(jt,s),i.addModule(Zc,{type:ea,name:`Extensions`,description:`Manage application modules and plugins`,elements:[],isCore:!0}),t.router.getRoutes().find(e=>e.name===O.ROOT)&&kc.forEach(e=>{t.router.addRoute(O.ROOT,e)}),r.info(`Extensions module has been installed`)}},$c=(e,t,n,r,i)=>{for(let a of i){if(r.has(a.name))continue;let i=a.module;if(typeof i==`function`){i(e,n),r.add(a.name);continue}if(i&&typeof i.install==`function`){i.install(e,n),r.add(a.name);continue}t.error(`Static extension ${a.name} is not a valid Vue plugin export.`)}},el=e=>typeof e==`object`&&!!e&&`install`in e&&typeof e.install==`function`,tl=e=>typeof e==`function`,nl=e=>{let t=e?.default??e;return el(t)||tl(t)?t:null},rl=async(e,t,n,r,i)=>{let{data:a,response:o}=await t.GET(`/modules/extensions/discovered`,{params:{query:{surface:qt.admin}}});if(a?.data&&Array.isArray(a.data)){let t=a.data;for(let a of t)if(a.surface===`admin`)try{let t=`remote_url`in a?a.remote_url:void 0;if(!t)continue;let o=nl(await Et(()=>import(t),[]));if(o){if(i?.has(a.name))continue;tl(o)?o(e,r):o.install(e,r),i?.add(a.name)}else n.error(`The ${a.name} is not a valid Vue plugin export.`)}catch(e){let t=e instanceof Error?e.message:String(e),r=`remote_url`in a?a.remote_url:`unknown`;n.error(`Failed to import ${a.name} from ${r}: ${t}`)}return}n.error(`Failed to fetch extensions assets.${o?.status?` (HTTP ${o.status})`:``}`)},il=f({name:`StorageConfigForm`,__name:`storage-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),s=[{value:`influx-v1-plugin`,label:o(`storageModule.fields.config.plugins.influxV1`)},{value:`memory-storage-plugin`,label:o(`storageModule.fields.config.plugins.memory`)}],{formEl:c,model:l,formChanged:u,submit:f,formResult:p}=tn({config:n.config,messages:{success:o(`storageModule.messages.config.edited`),error:o(`storageModule.messages.config.notEdited`)}}),g=y({primaryStorage:[{required:!0,message:o(`storageModule.fields.config.primaryStorage.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!c.value)return;c.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:c,model:h(l),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`storageModule.headings.aboutStorage`),description:h(o)(`storageModule.texts.aboutStorage`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`storageModule.fields.config.primaryStorage.title`),prop:`primaryStorage`,class:`mt-3`},{default:d(()=>[F(h(X),{modelValue:h(l).primaryStorage,"onUpdate:modelValue":t[0]||=e=>h(l).primaryStorage=e,placeholder:h(o)(`storageModule.fields.config.primaryStorage.placeholder`)},{default:d(()=>[(i(),P(A,null,a(s,e=>F(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`storageModule.fields.config.fallbackStorage.title`),prop:`fallbackStorage`},{default:d(()=>[F(h(X),{modelValue:h(l).fallbackStorage,"onUpdate:modelValue":t[1]||=e=>h(l).fallbackStorage=e,placeholder:h(o)(`storageModule.fields.config.fallbackStorage.placeholder`),clearable:``},{default:d(()=>[(i(),P(A,null,a(s,e=>F(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),al=`storage-module`,ol={headings:{aboutStorage:`Konfigurace úložiště`},messages:{config:{edited:`Konfigurace úložiště byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci úložiště`}},texts:{aboutStorage:`Nakonfigurujte backend datového úložiště pro ukládání časových řad, jako je historie vlastností zařízení a analytika.`},fields:{config:{primaryStorage:{title:`Primární úložiště`,placeholder:`Vyberte plugin primárního úložiště`,validation:{required:`Primární úložiště je povinné`}},fallbackStorage:{title:`Záložní úložiště`,placeholder:`Vyberte plugin záložního úložiště (volitelné)`},plugins:{influxV1:`InfluxDB v1`,memory:`Úložiště v paměti`}}}},sl={headings:{aboutStorage:`Speicherkonfiguration`},messages:{config:{edited:`Speicherkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der Speicherkonfiguration fehlgeschlagen`}},texts:{aboutStorage:`Konfigurieren Sie das Datenspeicher-Backend für die Speicherung von Zeitreihendaten wie Geräteeigenschafts-Verlauf und Analysen.`},fields:{config:{primaryStorage:{title:`Primärspeicher`,placeholder:`Primärspeicher-Plugin auswählen`,validation:{required:`Primärspeicher ist erforderlich`}},fallbackStorage:{title:`Ausweichspeicher`,placeholder:`Ausweichspeicher-Plugin auswählen (optional)`},plugins:{influxV1:`InfluxDB v1`,memory:`In-Memory-Speicher`}}}},cl={headings:{aboutStorage:`Storage Configuration`},messages:{config:{edited:`Storage configuration has been successfully updated`,notEdited:`Failed to update storage configuration`}},texts:{aboutStorage:`Configure the data storage backend for storing time-series data such as device property history and analytics.`},fields:{config:{primaryStorage:{title:`Primary Storage`,placeholder:`Select primary storage plugin`,validation:{required:`Primary storage is required`}},fallbackStorage:{title:`Fallback Storage`,placeholder:`Select fallback storage plugin (optional)`},plugins:{influxV1:`InfluxDB v1`,memory:`In-Memory Storage`}}}},ll={headings:{aboutStorage:`Configuración de almacenamiento`},messages:{config:{edited:`La configuración de almacenamiento se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración de almacenamiento`}},texts:{aboutStorage:`Configura el backend de almacenamiento de datos para almacenar datos de series temporales como el historial de propiedades de dispositivos y analíticas.`},fields:{config:{primaryStorage:{title:`Almacenamiento principal`,placeholder:`Seleccionar complemento de almacenamiento principal`,validation:{required:`El almacenamiento principal es obligatorio`}},fallbackStorage:{title:`Almacenamiento alternativo`,placeholder:`Seleccionar complemento de almacenamiento alternativo (opcional)`},plugins:{influxV1:`InfluxDB v1`,memory:`Almacenamiento en memoria`}}}},ul={headings:{aboutStorage:`Konfiguracja magazynu danych`},messages:{config:{edited:`Konfiguracja magazynu danych została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji magazynu danych`}},texts:{aboutStorage:`Skonfiguruj backend magazynu danych do przechowywania danych szeregów czasowych, takich jak historia właściwości urządzeń i analityka.`},fields:{config:{primaryStorage:{title:`Magazyn główny`,placeholder:`Wybierz główną wtyczkę magazynu`,validation:{required:`Magazyn główny jest wymagany`}},fallbackStorage:{title:`Magazyn zapasowy`,placeholder:`Wybierz zapasową wtyczkę magazynu (opcjonalnie)`},plugins:{influxV1:`InfluxDB v1`,memory:`Magazyn w pamięci`}}}},dl={headings:{aboutStorage:`Konfigurácia úložiska`},messages:{config:{edited:`Konfigurácia úložiska bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu úložiska`}},texts:{aboutStorage:`Nakonfigurujte backend úložiska dát na ukladanie časových radov, ako sú história vlastností zariadení a analytika.`},fields:{config:{primaryStorage:{title:`Primárne úložisko`,placeholder:`Vyberte plugin primárneho úložiska`,validation:{required:`Primárne úložisko je povinné`}},fallbackStorage:{title:`Záložné úložisko`,placeholder:`Vyberte plugin záložného úložiska (voliteľné)`},plugins:{influxV1:`InfluxDB v1`,memory:`Úložisko v pamäti`}}}},fl={"cs-CZ":ol,"de-DE":sl,"en-US":cl,"es-ES":ll,"pl-PL":ul,"sk-SK":dl},pl=Pt.extend({primaryStorage:Y().min(1),fallbackStorage:Y().optional()}),ml=St.extend({type:Z(al),primaryStorage:Y(),fallbackStorage:Y().optional()}),hl=at.and(q({type:Z(al),primary_storage:Y().optional(),fallback_storage:Y().optional()}));wt.and(q({type:Z(al),primary_storage:Y(),fallback_storage:Y().optional()}));var gl=Symbol(`FB-Module-Storage`),_l={install:(e,t)=>{let n=Ie(e);for(let[e,n]of Object.entries(fl)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{storageModule:n});t.i18n.global.setLocaleMessage(e,r)}n.addModule(gl,{type:al,name:`Storage`,description:`Data storage configuration for device data history and analytics`,elements:[{type:on,components:{moduleConfigEditForm:il},schemas:{moduleConfigSchema:ml,moduleConfigEditFormSchema:pl,moduleConfigUpdateReqSchema:hl},modules:[pn]}],modules:[pn],isCore:!0})}},vl=`intents-module`,yl=function(e){return e.INTENT_CREATED=`IntentsModule.Intent.Created`,e.INTENT_COMPLETED=`IntentsModule.Intent.Completed`,e.INTENT_EXPIRED=`IntentsModule.Intent.Expired`,e}({}),bl=function(e){return e.PENDING=`pending`,e.COMPLETED_SUCCESS=`completed_success`,e.COMPLETED_PARTIAL=`completed_partial`,e.COMPLETED_FAILED=`completed_failed`,e.EXPIRED=`expired`,e}({}),xl=function(e){return e.SUCCESS=`success`,e.FAILED=`failed`,e.TIMEOUT=`timeout`,e.SKIPPED=`skipped`,e}({}),Sl=function(e){return e.LIGHT_TOGGLE=`light.toggle`,e.LIGHT_SET_BRIGHTNESS=`light.setBrightness`,e.LIGHT_SET_COLOR=`light.setColor`,e.LIGHT_SET_COLOR_TEMP=`light.setColorTemp`,e.LIGHT_SET_WHITE=`light.setWhite`,e.DEVICE_SET_PROPERTY=`device.setProperty`,e.SCENE_RUN=`scene.run`,e.SPACE_LIGHTING_ON=`space.lighting.on`,e.SPACE_LIGHTING_OFF=`space.lighting.off`,e.SPACE_LIGHTING_SET_MODE=`space.lighting.setMode`,e.SPACE_LIGHTING_BRIGHTNESS_DELTA=`space.lighting.brightnessDelta`,e.SPACE_LIGHTING_ROLE_ON=`space.lighting.roleOn`,e.SPACE_LIGHTING_ROLE_OFF=`space.lighting.roleOff`,e.SPACE_LIGHTING_ROLE_BRIGHTNESS=`space.lighting.roleBrightness`,e.SPACE_LIGHTING_ROLE_COLOR=`space.lighting.roleColor`,e.SPACE_LIGHTING_ROLE_COLOR_TEMP=`space.lighting.roleColorTemp`,e.SPACE_LIGHTING_ROLE_WHITE=`space.lighting.roleWhite`,e.SPACE_LIGHTING_ROLE_SET=`space.lighting.roleSet`,e.SPACE_CLIMATE_SET_MODE=`space.climate.setMode`,e.SPACE_CLIMATE_SETPOINT_SET=`space.climate.setpointSet`,e.SPACE_CLIMATE_SETPOINT_DELTA=`space.climate.setpointDelta`,e.SPACE_CLIMATE_SET=`space.climate.set`,e.SPACE_COVERS_OPEN=`space.covers.open`,e.SPACE_COVERS_CLOSE=`space.covers.close`,e.SPACE_COVERS_STOP=`space.covers.stop`,e.SPACE_COVERS_SET_POSITION=`space.covers.setPosition`,e.SPACE_COVERS_POSITION_DELTA=`space.covers.positionDelta`,e.SPACE_COVERS_ROLE_POSITION=`space.covers.rolePosition`,e.SPACE_COVERS_SET_MODE=`space.covers.setMode`,e.SPACE_MEDIA_ACTIVATE=`space.media.activate`,e.SPACE_MEDIA_DEACTIVATE=`space.media.deactivate`,e}({}),Cl=[`panel.system.room`,`panel.system.master`,`panel.system.entry`,`panel.dashboard.tiles`,`panel.dashboard.cards`,`panel.device`,`panel.scenes`,`panel.spaces`,`admin`,`api`],wl=Symbol(`FB-Module-Intents-IntentsStore`),Tl=class extends Error{exception;constructor(e,t=null){super(e),this.name=`IntentsException`,this.exception=t}},El=class extends Tl{constructor(e,t=null){super(e,t),this.name=`IntentsValidationException`}},Dl=q({deviceId:Y().uuid().nullable(),channelId:Y().uuid().nullable(),propertyId:Y().uuid().nullable(),sceneId:Y().uuid().nullable()}),Ol=q({deviceId:Y().uuid().nullable(),channelId:Y().uuid().nullable(),propertyId:Y().uuid().nullable(),sceneId:Y().uuid().nullable(),status:K(xl),error:Y().nullable()}),kl=q({origin:Fe(Cl).nullable(),displayId:Y().uuid().nullable(),spaceId:Y().uuid().nullable(),roleKey:Y().nullable()}),Al=Te(e=>e==null||e===``?null:e,he().nullable()),jl=q({id:Y().uuid(),requestId:Y().uuid().nullable(),type:K(Sl),context:kl,targets:H(Dl),value:et().transform(e=>e??null),status:K(bl),ttlMs:G(),createdAt:he(),expiresAt:he(),completedAt:Al,results:H(Ol).nullish().transform(e=>e??null)}),Ml=e=>(0,Ka.transform)(e,(e,t,n)=>{let r=(0,Ka.camelCase)(n);(0,Ka.isArray)(t)?e[r]=t.map(e=>(0,Ka.isObject)(e)?Ml(e):e):(0,Ka.isObject)(t)&&t!==null?e[r]=Ml(t):e[r]=t}),Nl=e=>{let t=Ml({...e,id:e.intent_id});delete t.intentId,t.requestId=t.requestId??null;let n=t.context;t.context={origin:n?.origin??null,displayId:n?.displayId??null,spaceId:n?.spaceId??null,roleKey:n?.roleKey??null};let r=jl.safeParse(t);if(!r.success)throw console.error(`[INTENTS] Schema validation failed:`,r.error),Error(`Failed to transform intent response`);return r.data},Pl=()=>({fetching:!1}),Fl=it(`intents_module-intents`,()=>{let e=Ke(),t=N(Pl()),n=N(new Map),r=()=>Array.from(n.value.values()),i=e=>n.value.get(e)??null,a=()=>Array.from(n.value.values()).filter(e=>e.status===bl.PENDING),o=e=>s({id:e.id,data:Nl(e.data)}),s=t=>{let r=n.value.get(t.id);if(r){let i=jl.safeParse({...r,...t.data});if(!i.success)throw e.error(`[INTENTS] Schema validation failed:`,i.error),new El(`Failed to update intent.`);let a=i.data;return n.value.set(a.id,a),a}let i=jl.safeParse({...t.data,id:t.id});if(!i.success)throw e.error(`[INTENTS] Schema validation failed:`,i.error),new El(`Failed to insert intent.`);let a=i.data;return n.value.set(a.id,a),a};return{data:n,semaphore:t,findAll:r,findById:i,findPending:a,onEvent:o,set:s,unset:e=>{n.value.delete(e.id)},clear:()=>{n.value.clear()}}}),Il=e=>Fl(e),Ll=Symbol(`FB-Module-Intents`),Rl={install:(e,t)=>{let n=Ye(e),r=Re(e),i=Ie(e),a=Il(t.store);e.provide(wl,a),n.addStore(wl,a),i.addModule(Ll,{type:vl,name:`Intents`,description:`Intent orchestration for UI anti-jitter and optimistic updates`,elements:[],isCore:!0}),r.on(`event`,e=>{if(!e?.event?.startsWith(`IntentsModule.`)||e.payload===null||typeof e.payload!=`object`)return;let t=e.payload;if(!(!(`intent_id`in t)||typeof t.intent_id!=`string`))try{switch(e.event){case yl.INTENT_CREATED:a.onEvent({id:t.intent_id,data:t});break;case yl.INTENT_COMPLETED:case yl.INTENT_EXPIRED:a.unset({id:t.intent_id});break;default:break}}catch(t){console.warn(`[INTENTS] Failed to process ${e.event} event:`,t)}}),r.on(`disconnect`,()=>{a.clear()})}},zl=f({name:`MdnsConfigForm`,__name:`mdns-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=tn({config:n.config,messages:{success:a(`mdnsModule.messages.config.edited`),error:a(`mdnsModule.messages.config.notEdited`)}}),f=y({serviceName:[{required:!0,message:a(`mdnsModule.fields.config.serviceName.validation.required`),trigger:`change`}],serviceType:[{required:!0,message:a(`mdnsModule.fields.config.serviceType.validation.required`),trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`mdnsModule.headings.aboutServiceAdvertisement`),description:h(a)(`mdnsModule.texts.aboutServiceAdvertisement`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`mdnsModule.fields.config.serviceName.title`),prop:`serviceName`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).serviceName,"onUpdate:modelValue":t[0]||=e=>h(s).serviceName=e,placeholder:h(a)(`mdnsModule.fields.config.serviceName.placeholder`),name:`serviceName`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`mdnsModule.fields.config.serviceType.title`),prop:`serviceType`},{default:d(()=>[F(h(W),{modelValue:h(s).serviceType,"onUpdate:modelValue":t[1]||=e=>h(s).serviceType=e,placeholder:h(a)(`mdnsModule.fields.config.serviceType.placeholder`),name:`serviceType`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Bl=`mdns-module`,Vl={headings:{aboutServiceAdvertisement:`Nastavení inzerce služby`},messages:{config:{edited:`Konfigurace mDNS byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci mDNS`}},texts:{aboutServiceAdvertisement:`Nakonfigurujte, jak Smart Panel inzeruje svou přítomnost v místní síti pomocí mDNS (Multicast DNS). To umožňuje automatické objevení zařízeními a klienty bez nutnosti znát IP adresu.`},fields:{config:{serviceName:{title:`Název služby`,placeholder:`FastyBird Smart Panel`,validation:{required:`Název služby je povinný`}},serviceType:{title:`Typ služby`,placeholder:`fastybird-panel`,validation:{required:`Typ služby je povinný`}}}}},Hl={headings:{aboutServiceAdvertisement:`Dienstankündigungs-Einstellungen`},messages:{config:{edited:`mDNS-Konfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der mDNS-Konfiguration fehlgeschlagen`}},texts:{aboutServiceAdvertisement:`Konfigurieren Sie, wie sich das Smart Panel über mDNS (Multicast DNS) im lokalen Netzwerk ankündigt. Dies ermöglicht die automatische Erkennung durch Geräte und Clients, ohne die IP-Adresse kennen zu müssen.`},fields:{config:{serviceName:{title:`Dienstname`,placeholder:`FastyBird Smart Panel`,validation:{required:`Dienstname ist erforderlich`}},serviceType:{title:`Diensttyp`,placeholder:`fastybird-panel`,validation:{required:`Diensttyp ist erforderlich`}}}}},Ul={headings:{aboutServiceAdvertisement:`Service Advertisement Settings`},messages:{config:{edited:`mDNS configuration has been successfully updated`,notEdited:`Failed to update mDNS configuration`}},texts:{aboutServiceAdvertisement:`Configure how the Smart Panel advertises itself on the local network using mDNS (Multicast DNS). This enables automatic discovery by devices and clients without needing to know the IP address.`},fields:{config:{serviceName:{title:`Service Name`,placeholder:`FastyBird Smart Panel`,validation:{required:`Service name is required`}},serviceType:{title:`Service Type`,placeholder:`fastybird-panel`,validation:{required:`Service type is required`}}}}},Wl={headings:{aboutServiceAdvertisement:`Configuración de anuncio de servicio`},messages:{config:{edited:`La configuración de mDNS se ha actualizado correctamente`,notEdited:`Error al actualizar la configuración de mDNS`}},texts:{aboutServiceAdvertisement:`Configura cómo el Smart Panel se anuncia en la red local usando mDNS (Multicast DNS). Esto permite el descubrimiento automático por dispositivos y clientes sin necesidad de conocer la dirección IP.`},fields:{config:{serviceName:{title:`Nombre del servicio`,placeholder:`FastyBird Smart Panel`,validation:{required:`El nombre del servicio es obligatorio`}},serviceType:{title:`Tipo de servicio`,placeholder:`fastybird-panel`,validation:{required:`El tipo de servicio es obligatorio`}}}}},Gl={headings:{aboutServiceAdvertisement:`Ustawienia rozgłaszania usługi`},messages:{config:{edited:`Konfiguracja mDNS została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji mDNS`}},texts:{aboutServiceAdvertisement:`Skonfiguruj, jak Smart Panel rozgłasza się w sieci lokalnej za pomocą mDNS (Multicast DNS). Umożliwia to automatyczne wykrywanie przez urządzenia i klientów bez konieczności znajomości adresu IP.`},fields:{config:{serviceName:{title:`Nazwa usługi`,placeholder:`FastyBird Smart Panel`,validation:{required:`Nazwa usługi jest wymagana`}},serviceType:{title:`Typ usługi`,placeholder:`fastybird-panel`,validation:{required:`Typ usługi jest wymagany`}}}}},Kl={headings:{aboutServiceAdvertisement:`Nastavenia inzercie služby`},messages:{config:{edited:`Konfigurácia mDNS bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu mDNS`}},texts:{aboutServiceAdvertisement:`Nakonfigurujte, ako Smart Panel inzeruje sám seba na lokálnej sieti pomocou mDNS (Multicast DNS). To umožňuje automatické objavenie zariadeniami a klientmi bez potreby znalosti IP adresy.`},fields:{config:{serviceName:{title:`Názov služby`,placeholder:`FastyBird Smart Panel`,validation:{required:`Názov služby je povinný`}},serviceType:{title:`Typ služby`,placeholder:`fastybird-panel`,validation:{required:`Typ služby je povinný`}}}}},ql={"cs-CZ":Vl,"de-DE":Hl,"en-US":Ul,"es-ES":Wl,"pl-PL":Gl,"sk-SK":Kl},Jl=Pt.extend({serviceName:Y().min(1),serviceType:Y().min(1)}),Yl=St.extend({type:Z(Bl),serviceName:Y(),serviceType:Y()}),Xl=at.and(q({type:Z(Bl),service_name:Y().optional(),service_type:Y().optional()}));wt.and(q({type:Z(Bl),service_name:Y(),service_type:Y()}));var Zl=Symbol(`FB-Module-Mdns`),Ql={install:(e,t)=>{let n=Ie(e);for(let[e,n]of Object.entries(ql)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{mdnsModule:n});t.i18n.global.setLocaleMessage(e,r)}n.addModule(Zl,{type:Bl,name:`mDNS`,description:`Network discovery of Smart Panel service on local network`,elements:[{type:on,components:{moduleConfigEditForm:zl},schemas:{moduleConfigSchema:Yl,moduleConfigEditFormSchema:Jl,moduleConfigUpdateReqSchema:Xl},modules:[pn]}],modules:[pn],isCore:!0})}},$l={wizard:{title:`Nastavení Smart Panelu`,steps:{welcome:`Vítejte`,account:`Účet`,location:`Lokace`,spaces:`Prostory`,integrations:`Integrace`,complete:`Dokončení`},buttons:{getStarted:`Začít`,next:`Další`,back:`Zpět`,skip:`Přeskočit`,finishSetup:`Dokončit nastavení`}},welcome:{title:`Vítejte ve Smart Panelu`,description:`Pojďme nastavit vaši chytrou domácnost. Tento průvodce vás provede počáteční konfigurací.`,steps:{account:`Vytvořit účet`,accountDescription:`Nastavte svůj administrátorský účet`,location:`Nastavit lokaci`,locationDescription:`Nakonfigurujte svou lokaci pro data o počasí`,spaces:`Vytvořit prostory`,spacesDescription:`Přidejte místnosti a oblasti pro organizaci vašich zařízení`,integrations:`Povolit integrace`,integrationsDescription:`Připojte své platformy chytré domácnosti`,finish:`Začít používat`,finishDescription:`Váš smart panel je připraven k použití`}},account:{description:`Vytvořte svůj administrátorský účet. Tento účet bude vlastníkem smart panelu.`,created:`Účet byl úspěšně vytvořen! Nyní jste přihlášeni.`,fields:{firstName:`Jméno`,lastName:`Příjmení`,email:`E-mail`,username:`Uživatelské jméno`,password:`Heslo`},placeholders:{firstName:`Zadejte své jméno`,lastName:`Zadejte své příjmení`,email:`Zadejte svou e-mailovou adresu`,username:`Zvolte uživatelské jméno`,password:`Zvolte heslo`},validation:{firstNameRequired:`Jméno je povinné`,lastNameRequired:`Příjmení je povinné`,emailRequired:`E-mail je povinný`,emailInvalid:`Zadejte prosím platnou e-mailovou adresu`,usernameRequired:`Uživatelské jméno je povinné`,passwordRequired:`Heslo je povinné`},messages:{created:`Váš účet byl vytvořen a nyní jste přihlášeni.`,error:`Nepodařilo se vytvořit účet. Zkuste to prosím znovu.`}},location:{description:`Nastavte svou lokaci pro informace o počasí a další funkce založené na poloze. Tento krok můžete přeskočit a nakonfigurovat později.`,fields:{citySearch:`Hledat město`,latitude:`Zeměpisná šířka`,longitude:`Zeměpisná délka`},placeholders:{citySearch:`Začněte psát název města...`,latitude:`např. 50.0755`,longitude:`např. 14.4378`},buttons:{myLocation:`Moje poloha`},orEnterManually:`Nebo zadejte souřadnice ručně`,hint:`Svou lokaci můžete nakonfigurovat později v nastavení Počasí.`,messages:{error:`Nepodařilo se uložit lokaci.`,geolocationNotSupported:`Geolokace není podporována vaším prohlížečem.`,geolocationDenied:`Přístup k poloze byl zamítnut. Povolte prosím přístup k poloze v nastavení prohlížeče.`,geolocationUnavailable:`Informace o poloze jsou momentálně nedostupné.`,geolocationTimeout:`Požadavek na zjištění polohy vypršel. Zkuste to prosím znovu.`,geolocationError:`Při zjišťování vaší polohy došlo k chybě.`}},spaces:{description:`Vytvořte místnosti a oblasti pro organizaci vašich zařízení. Další prostory můžete přidat později.`,quickAdd:`Rychlé přidání běžných místností`,orAddCustom:`Nebo přidejte vlastní místnost`,fields:{name:`Název místnosti`},placeholders:{name:`např. Hlavní ložnice`},buttons:{add:`Přidat`},roomsToCreate:`Místnosti k vytvoření ({count})`,categories:{livingRoom:`Obývací pokoj`,bedroom:`Ložnice`,kitchen:`Kuchyně`,bathroom:`Koupelna`,toilet:`Toaleta`,office:`Kancelář`,hallway:`Chodba`,entryway:`Předsíň`,garage:`Garáž`,diningRoom:`Jídelna`,laundry:`Prádelna`,nursery:`Dětský pokoj`,guestRoom:`Pokoj pro hosty`,storage:`Sklad`,workshop:`Dílna`},devices:{title:`Přiřadit zařízení k místnostem`,count:`zařízení`,unassigned:`Nepřiřazená zařízení ({count})`,assigned:`Přiřazená zařízení ({count})`,selected:`{count} vybráno`,assignTo:`Přiřadit k místnosti...`,assign:`Přiřadit`,clearSelection:`Vymazat`,selectSpace:`Vyberte místnost...`},hint:`Prostory můžete přidávat, přejmenovávat nebo reorganizovat později v nastavení Prostory.`,messages:{error:`Nepodařilo se vytvořit prostory.`,assignmentError:`Nepodařilo se přiřadit zařízení k prostorům.`}},integrations:{description:`Povolte integrace zařízení pro připojení vašich platforem chytré domácnosti. Zapněte ty, které používáte, a nakonfigurujte jejich nastavení připojení.`,noPlugins:`Žádné integrace zařízení nejsou k dispozici.`,hint:`Integrace můžete povolit nebo zakázat později v nastavení Rozšíření.`,searching:`Vyhledávání zařízení...`,devicesFound:`{count} zařízení nalezeno | {count} zařízení nalezeno | {count} zařízení nalezeno`,noDevicesYet:`Zatím nebyla nalezena žádná zařízení - nakonfigurujte připojení pro vyhledání zařízení`,noDevicesFound:`Zatím nebyla nalezena žádná zařízení`,enabled:`Integrace povolena`,configure:`Konfigurovat`,configRequired:`Pro připojení je vyžadována konfigurace`,setupNow:`Nastavit nyní`,stopScan:`Zastavit`,summary:`{count} integrace povolena | {count} integrace povolena | {count} integrací povoleno`,totalDevices:`{count} zařízení nalezeno | {count} zařízení nalezeno | {count} zařízení nalezeno`,configDialog:{title:`Konfigurovat {name}`,noConfig:`Pro tuto integraci nejsou k dispozici žádné možnosti konfigurace.`,buttons:{cancel:`Zrušit`,validate:`Ověřit`,save:`Uložit`},messages:{saved:`Konfigurace byla úspěšně uložena.`,validationSuccess:`Konfigurace je platná.`,validationFailed:`Ověření konfigurace selhalo.`,validationError:`Nelze ověřit konfiguraci.`}},messages:{error:`Nepodařilo se aktualizovat integrace.`}},complete:{title:`Vše je připraveno!`,description:`Váš Smart Panel je nakonfigurován a připraven k použití. Nyní můžete začít přidávat zařízení, vytvářet prostory a přizpůsobovat svůj panel.`,summary:{accountCreated:`Administrátorský účet vytvořen`,locationConfigured:`Meteorologická lokace nakonfigurována`,locationSkipped:`Meteorologická lokace přeskočena (lze nakonfigurovat později)`,spacesCreated:`{count} místnost(í) bude vytvořeno | {count} místnost bude vytvořena | {count} místností bude vytvořeno`,spacesSkipped:`Nebyly přidány žádné místnosti (lze vytvořit později)`,devicesAssigned:`{count} zařízení přiřazeno k místnostem | {count} zařízení přiřazeno k místnosti | {count} zařízení přiřazeno k místnostem`,devicesSkipped:`Žádná zařízení nebyla přiřazena k místnostem`,integrationsEnabled:`{count} integrace povolena | {count} integrace povolena | {count} integrací povoleno`,integrationsSkipped:`Žádné integrace nebyly povoleny (lze nakonfigurovat později)`},messages:{finished:`Nastavení dokončeno! Vítejte ve Smart Panelu.`,error:`Nepodařilo se dokončit úvodní nastavení.`}}},eu={wizard:{title:`Smart Panel Einrichtung`,steps:{welcome:`Willkommen`,account:`Konto`,location:`Standort`,spaces:`Räume`,integrations:`Integrationen`,complete:`Abgeschlossen`},buttons:{getStarted:`Loslegen`,next:`Weiter`,back:`Zurück`,skip:`Überspringen`,finishSetup:`Einrichtung abschließen`}},welcome:{title:`Willkommen bei Smart Panel`,description:`Lassen Sie uns Ihr Smart Home einrichten. Dieser Assistent führt Sie durch die Erstkonfiguration.`,steps:{account:`Konto erstellen`,accountDescription:`Richten Sie Ihr Administratorkonto ein`,location:`Standort festlegen`,locationDescription:`Konfigurieren Sie Ihren Standort für Wetterdaten`,spaces:`Räume erstellen`,spacesDescription:`Fügen Sie Räume und Bereiche hinzu, um Ihre Geräte zu organisieren`,integrations:`Integrationen aktivieren`,integrationsDescription:`Verbinden Sie Ihre Smart-Home-Plattformen`,finish:`Starten`,finishDescription:`Ihr Smart Panel ist einsatzbereit`}},account:{description:`Erstellen Sie Ihr Administratorkonto. Dieses wird der Besitzer des Smart Panels sein.`,created:`Konto erfolgreich erstellt! Sie sind jetzt angemeldet.`,fields:{firstName:`Vorname`,lastName:`Nachname`,email:`E-Mail`,username:`Benutzername`,password:`Passwort`},placeholders:{firstName:`Geben Sie Ihren Vornamen ein`,lastName:`Geben Sie Ihren Nachnamen ein`,email:`Geben Sie Ihre E-Mail-Adresse ein`,username:`Wählen Sie einen Benutzernamen`,password:`Wählen Sie ein Passwort`},validation:{firstNameRequired:`Vorname ist erforderlich`,lastNameRequired:`Nachname ist erforderlich`,emailRequired:`E-Mail ist erforderlich`,emailInvalid:`Bitte geben Sie eine gültige E-Mail-Adresse ein`,usernameRequired:`Benutzername ist erforderlich`,passwordRequired:`Passwort ist erforderlich`},messages:{created:`Ihr Konto wurde erstellt und Sie sind jetzt angemeldet.`,error:`Kontoerstellung fehlgeschlagen. Bitte versuchen Sie es erneut.`}},location:{description:`Legen Sie Ihren Standort für Wetterinformationen und andere standortbasierte Funktionen fest. Sie können diesen Schritt überspringen und später konfigurieren.`,fields:{citySearch:`Stadt suchen`,latitude:`Breitengrad`,longitude:`Längengrad`},placeholders:{citySearch:`Geben Sie einen Stadtnamen ein...`,latitude:`z.B. 50.0755`,longitude:`z.B. 14.4378`},buttons:{myLocation:`Mein Standort`},orEnterManually:`Oder Koordinaten manuell eingeben`,hint:`Sie können Ihren Standort später in den Wetter-Einstellungen konfigurieren.`,messages:{error:`Standort konnte nicht gespeichert werden.`,geolocationNotSupported:`Geolokalisierung wird von Ihrem Browser nicht unterstützt.`,geolocationDenied:`Standortzugriff wurde verweigert. Bitte erlauben Sie den Standortzugriff in Ihren Browser-Einstellungen.`,geolocationUnavailable:`Standortinformationen sind derzeit nicht verfügbar.`,geolocationTimeout:`Standortanfrage hat das Zeitlimit überschritten. Bitte versuchen Sie es erneut.`,geolocationError:`Beim Abrufen Ihres Standorts ist ein Fehler aufgetreten.`}},spaces:{description:`Erstellen Sie Räume und Bereiche, um Ihre Geräte zu organisieren. Sie können später weitere Räume hinzufügen.`,quickAdd:`Häufige Räume schnell hinzufügen`,orAddCustom:`Oder benutzerdefinierten Raum hinzufügen`,fields:{name:`Raumname`},placeholders:{name:`z.B. Hauptschlafzimmer`},buttons:{add:`Hinzufügen`},roomsToCreate:`Zu erstellende Räume ({count})`,categories:{livingRoom:`Wohnzimmer`,bedroom:`Schlafzimmer`,kitchen:`Küche`,bathroom:`Badezimmer`,toilet:`Toilette`,office:`Büro`,hallway:`Flur`,entryway:`Eingangsbereich`,garage:`Garage`,diningRoom:`Esszimmer`,laundry:`Waschküche`,nursery:`Kinderzimmer`,guestRoom:`Gästezimmer`,storage:`Abstellraum`,workshop:`Werkstatt`},devices:{title:`Geräte Räumen zuweisen`,count:`Geräte`,unassigned:`Nicht zugewiesene Geräte ({count})`,assigned:`Zugewiesene Geräte ({count})`,selected:`{count} ausgewählt`,assignTo:`Raum zuweisen...`,assign:`Zuweisen`,clearSelection:`Löschen`,selectSpace:`Raum auswählen...`},hint:`Sie können Räume später in den Raum-Einstellungen hinzufügen, umbenennen oder neu organisieren.`,messages:{error:`Räume konnten nicht erstellt werden.`,assignmentError:`Geräte konnten den Räumen nicht zugewiesen werden.`}},integrations:{description:`Aktivieren Sie Geräteintegrationen, um Ihre Smart-Home-Plattformen zu verbinden. Aktivieren Sie die gewünschten und konfigurieren Sie deren Verbindungseinstellungen.`,noPlugins:`Keine Geräteintegrationen verfügbar.`,hint:`Sie können Integrationen später in den Erweiterungseinstellungen aktivieren oder deaktivieren.`,searching:`Suche nach Geräten...`,devicesFound:`{count} Gerät gefunden | {count} Gerät gefunden | {count} Geräte gefunden`,noDevicesYet:`Noch keine Geräte gefunden - konfigurieren Sie die Verbindung, um Geräte zu entdecken`,noDevicesFound:`Noch keine Geräte gefunden`,enabled:`Integration aktiviert`,configure:`Konfigurieren`,configRequired:`Konfiguration erforderlich zum Verbinden`,setupNow:`Jetzt einrichten`,stopScan:`Stoppen`,summary:`{count} Integration aktiviert | {count} Integration aktiviert | {count} Integrationen aktiviert`,totalDevices:`{count} Gerät gefunden | {count} Gerät gefunden | {count} Geräte gefunden`,configDialog:{title:`{name} konfigurieren`,noConfig:`Für diese Integration sind keine Konfigurationsoptionen verfügbar.`,buttons:{cancel:`Abbrechen`,validate:`Validieren`,save:`Speichern`},messages:{saved:`Konfiguration erfolgreich gespeichert.`,validationSuccess:`Konfiguration ist gültig.`,validationFailed:`Konfigurationsvalidierung fehlgeschlagen.`,validationError:`Konfiguration konnte nicht validiert werden.`}},messages:{error:`Integrationen konnten nicht aktualisiert werden.`}},complete:{title:`Alles fertig!`,description:`Ihr Smart Panel ist konfiguriert und einsatzbereit. Sie können jetzt Geräte hinzufügen, Räume erstellen und Ihr Dashboard anpassen.`,summary:{accountCreated:`Administratorkonto erstellt`,locationConfigured:`Wetterstandort konfiguriert`,locationSkipped:`Wetterstandort übersprungen (kann später konfiguriert werden)`,spacesCreated:`{count} Raum/Räume werden erstellt | {count} Raum wird erstellt | {count} Räume werden erstellt`,spacesSkipped:`Keine Räume hinzugefügt (können später erstellt werden)`,devicesAssigned:`{count} Gerät(e) Räumen zugewiesen | {count} Gerät einem Raum zugewiesen | {count} Geräte Räumen zugewiesen`,devicesSkipped:`Keine Geräte Räumen zugewiesen`,integrationsEnabled:`{count} Integration(en) aktiviert | {count} Integration aktiviert | {count} Integrationen aktiviert`,integrationsSkipped:`Keine Integrationen aktiviert (können später konfiguriert werden)`},messages:{finished:`Einrichtung abgeschlossen! Willkommen bei Smart Panel.`,error:`Einrichtung konnte nicht abgeschlossen werden.`}}},tu={wizard:{title:`Smart Panel Setup`,steps:{welcome:`Welcome`,account:`Account`,location:`Location`,spaces:`Spaces`,integrations:`Integrations`,complete:`Complete`},buttons:{getStarted:`Get Started`,next:`Next`,back:`Back`,skip:`Skip`,finishSetup:`Finish Setup`}},welcome:{title:`Welcome to Smart Panel`,description:`Let's set up your smart home. This wizard will guide you through the initial configuration.`,steps:{account:`Create Account`,accountDescription:`Set up your administrator account`,location:`Set Location`,locationDescription:`Configure your location for weather data`,spaces:`Create Spaces`,spacesDescription:`Add rooms and areas to organize your devices`,integrations:`Enable Integrations`,integrationsDescription:`Connect your smart home platforms`,finish:`Start Using`,finishDescription:`Your smart panel is ready to go`}},account:{description:`Create your administrator account. This will be the owner of the smart panel.`,created:`Account created successfully! You are now logged in.`,fields:{firstName:`First Name`,lastName:`Last Name`,email:`Email`,username:`Username`,password:`Password`},placeholders:{firstName:`Enter your first name`,lastName:`Enter your last name`,email:`Enter your email address`,username:`Choose a username`,password:`Choose a password`},validation:{firstNameRequired:`First name is required`,lastNameRequired:`Last name is required`,emailRequired:`Email is required`,emailInvalid:`Please enter a valid email address`,usernameRequired:`Username is required`,passwordRequired:`Password is required`},messages:{created:`Your account has been created and you are now logged in.`,error:`Failed to create account. Please try again.`}},location:{description:`Set your location for weather information and other location-based features. You can skip this step and configure it later.`,fields:{citySearch:`Search City`,latitude:`Latitude`,longitude:`Longitude`},placeholders:{citySearch:`Type a city name to search...`,latitude:`e.g. 50.0755`,longitude:`e.g. 14.4378`},buttons:{myLocation:`My Location`},orEnterManually:`Or enter coordinates manually`,hint:`You can configure your location later in the Weather settings.`,messages:{error:`Failed to save location.`,geolocationNotSupported:`Geolocation is not supported by your browser.`,geolocationDenied:`Location access was denied. Please allow location access in your browser settings.`,geolocationUnavailable:`Location information is currently unavailable.`,geolocationTimeout:`Location request timed out. Please try again.`,geolocationError:`An error occurred while getting your location.`}},spaces:{description:`Create rooms and areas to organize your devices. You can add more spaces later.`,quickAdd:`Quick add common rooms`,orAddCustom:`Or add custom room`,fields:{name:`Room Name`},placeholders:{name:`e.g. Master Bedroom`},buttons:{add:`Add`},roomsToCreate:`Rooms to create ({count})`,categories:{livingRoom:`Living Room`,bedroom:`Bedroom`,kitchen:`Kitchen`,bathroom:`Bathroom`,toilet:`Toilet`,office:`Office`,hallway:`Hallway`,entryway:`Entryway`,garage:`Garage`,diningRoom:`Dining Room`,laundry:`Laundry`,nursery:`Nursery`,guestRoom:`Guest Room`,storage:`Storage`,workshop:`Workshop`},devices:{title:`Assign devices to rooms`,count:`devices`,unassigned:`Unassigned devices ({count})`,assigned:`Assigned devices ({count})`,selected:`{count} selected`,assignTo:`Assign to room...`,assign:`Assign`,clearSelection:`Clear`,selectSpace:`Select room...`},hint:`You can add, rename, or reorganize spaces later in the Spaces settings.`,messages:{error:`Failed to create spaces.`,assignmentError:`Failed to assign devices to spaces.`}},integrations:{description:`Enable device integrations to connect your smart home platforms. Toggle on the ones you use and configure their connection settings.`,noPlugins:`No device integrations available.`,hint:`You can enable or disable integrations later in the Extensions settings.`,searching:`Searching for devices...`,devicesFound:`{count} device found | {count} device found | {count} devices found`,noDevicesYet:`No devices found yet - configure connection to discover devices`,noDevicesFound:`No devices found yet`,enabled:`Integration enabled`,configure:`Configure`,configRequired:`Configuration required to connect`,setupNow:`Set up now`,stopScan:`Stop`,summary:`{count} integration enabled | {count} integration enabled | {count} integrations enabled`,totalDevices:`{count} device found | {count} device found | {count} devices found`,configDialog:{title:`Configure {name}`,noConfig:`No configuration options available for this integration.`,buttons:{cancel:`Cancel`,validate:`Validate`,save:`Save`},messages:{saved:`Configuration saved successfully.`,validationSuccess:`Configuration is valid.`,validationFailed:`Configuration validation failed.`,validationError:`Unable to validate configuration.`}},messages:{error:`Failed to update integrations.`}},complete:{title:`You're All Set!`,description:`Your Smart Panel is configured and ready to use. You can now start adding devices, creating spaces, and customizing your dashboard.`,summary:{accountCreated:`Administrator account created`,locationConfigured:`Weather location configured`,locationSkipped:`Weather location skipped (can be configured later)`,spacesCreated:`{count} room(s) will be created | {count} room will be created | {count} rooms will be created`,spacesSkipped:`No rooms added (can be created later)`,devicesAssigned:`{count} device(s) assigned to rooms | {count} device assigned to a room | {count} devices assigned to rooms`,devicesSkipped:`No devices assigned to rooms`,integrationsEnabled:`{count} integration(s) enabled | {count} integration enabled | {count} integrations enabled`,integrationsSkipped:`No integrations enabled (can be configured later)`},messages:{finished:`Setup complete! Welcome to Smart Panel.`,error:`Failed to complete onboarding.`}}},nu={wizard:{title:`Configuración del panel inteligente`,steps:{welcome:`Bienvenida`,account:`Cuenta`,location:`Ubicación`,spaces:`Espacios`,integrations:`Integraciones`,complete:`Completado`},buttons:{getStarted:`Comenzar`,next:`Siguiente`,back:`Atrás`,skip:`Omitir`,finishSetup:`Finalizar configuración`}},welcome:{title:`Bienvenido al panel inteligente`,description:`Configuremos tu hogar inteligente. Este asistente te guiará a través de la configuración inicial.`,steps:{account:`Crear cuenta`,accountDescription:`Configura tu cuenta de administrador`,location:`Establecer ubicación`,locationDescription:`Configura tu ubicación para datos meteorológicos`,spaces:`Crear espacios`,spacesDescription:`Añade habitaciones y áreas para organizar tus dispositivos`,integrations:`Habilitar integraciones`,integrationsDescription:`Conecta tus plataformas de hogar inteligente`,finish:`Comenzar a usar`,finishDescription:`Tu panel inteligente está listo para funcionar`}},account:{description:`Crea tu cuenta de administrador. Este será el propietario del panel inteligente.`,created:`¡Cuenta creada correctamente! Ya has iniciado sesión.`,fields:{firstName:`Nombre`,lastName:`Apellido`,email:`Correo electrónico`,username:`Nombre de usuario`,password:`Contraseña`},placeholders:{firstName:`Ingresa tu nombre`,lastName:`Ingresa tu apellido`,email:`Ingresa tu dirección de correo electrónico`,username:`Elige un nombre de usuario`,password:`Elige una contraseña`},validation:{firstNameRequired:`El nombre es obligatorio`,lastNameRequired:`El apellido es obligatorio`,emailRequired:`El correo electrónico es obligatorio`,emailInvalid:`Por favor ingresa una dirección de correo electrónico válida`,usernameRequired:`El nombre de usuario es obligatorio`,passwordRequired:`La contraseña es obligatoria`},messages:{created:`Tu cuenta ha sido creada y ya has iniciado sesión.`,error:`No se pudo crear la cuenta. Por favor, inténtalo de nuevo.`}},location:{description:`Establece tu ubicación para información meteorológica y otras funciones basadas en la ubicación. Puedes omitir este paso y configurarlo más tarde.`,fields:{citySearch:`Buscar ciudad`,latitude:`Latitud`,longitude:`Longitud`},placeholders:{citySearch:`Escribe un nombre de ciudad para buscar...`,latitude:`ej. 50.0755`,longitude:`ej. 14.4378`},buttons:{myLocation:`Mi ubicación`},orEnterManually:`O ingresa las coordenadas manualmente`,hint:`Puedes configurar tu ubicación más tarde en los ajustes del clima.`,messages:{error:`No se pudo guardar la ubicación.`,geolocationNotSupported:`La geolocalización no es compatible con tu navegador.`,geolocationDenied:`Se denegó el acceso a la ubicación. Por favor, permite el acceso a la ubicación en la configuración de tu navegador.`,geolocationUnavailable:`La información de ubicación no está disponible en este momento.`,geolocationTimeout:`La solicitud de ubicación ha expirado. Por favor, inténtalo de nuevo.`,geolocationError:`Ocurrió un error al obtener tu ubicación.`}},spaces:{description:`Crea habitaciones y áreas para organizar tus dispositivos. Puedes añadir más espacios más tarde.`,quickAdd:`Añadir habitaciones comunes rápidamente`,orAddCustom:`O añadir habitación personalizada`,fields:{name:`Nombre de la habitación`},placeholders:{name:`ej. Dormitorio principal`},buttons:{add:`Añadir`},roomsToCreate:`Habitaciones a crear ({count})`,categories:{livingRoom:`Sala de estar`,bedroom:`Dormitorio`,kitchen:`Cocina`,bathroom:`Baño`,toilet:`Aseo`,office:`Oficina`,hallway:`Pasillo`,entryway:`Entrada`,garage:`Garaje`,diningRoom:`Comedor`,laundry:`Lavandería`,nursery:`Cuarto infantil`,guestRoom:`Habitación de invitados`,storage:`Almacén`,workshop:`Taller`},devices:{title:`Asignar dispositivos a habitaciones`,count:`dispositivos`,unassigned:`Dispositivos sin asignar ({count})`,assigned:`Dispositivos asignados ({count})`,selected:`{count} seleccionados`,assignTo:`Asignar a habitación...`,assign:`Asignar`,clearSelection:`Limpiar`,selectSpace:`Seleccionar habitación...`},hint:`Puedes añadir, renombrar o reorganizar espacios más tarde en los ajustes de Espacios.`,messages:{error:`No se pudieron crear los espacios.`,assignmentError:`No se pudieron asignar los dispositivos a los espacios.`}},integrations:{description:`Habilita las integraciones de dispositivos para conectar tus plataformas de hogar inteligente. Activa las que uses y configura sus ajustes de conexión.`,noPlugins:`No hay integraciones de dispositivos disponibles.`,hint:`Puedes habilitar o deshabilitar integraciones más tarde en los ajustes de Extensiones.`,searching:`Buscando dispositivos...`,devicesFound:`{count} dispositivo encontrado | {count} dispositivo encontrado | {count} dispositivos encontrados`,noDevicesYet:`Aún no se encontraron dispositivos — configura la conexión para descubrir dispositivos`,noDevicesFound:`Aún no se encontraron dispositivos`,enabled:`Integración habilitada`,configure:`Configurar`,configRequired:`Se requiere configuración para conectar`,setupNow:`Configurar ahora`,stopScan:`Detener`,summary:`{count} integración habilitada | {count} integración habilitada | {count} integraciones habilitadas`,totalDevices:`{count} dispositivo encontrado | {count} dispositivo encontrado | {count} dispositivos encontrados`,configDialog:{title:`Configurar {name}`,noConfig:`No hay opciones de configuración disponibles para esta integración.`,buttons:{cancel:`Cancelar`,validate:`Validar`,save:`Guardar`},messages:{saved:`Configuración guardada correctamente.`,validationSuccess:`La configuración es válida.`,validationFailed:`La validación de la configuración falló.`,validationError:`No se pudo validar la configuración.`}},messages:{error:`No se pudieron actualizar las integraciones.`}},complete:{title:`¡Todo listo!`,description:`Tu panel inteligente está configurado y listo para usar. Ahora puedes comenzar a añadir dispositivos, crear espacios y personalizar tu panel de control.`,summary:{accountCreated:`Cuenta de administrador creada`,locationConfigured:`Ubicación meteorológica configurada`,locationSkipped:`Ubicación meteorológica omitida (se puede configurar más tarde)`,spacesCreated:`{count} habitación(es) serán creadas | {count} habitación será creada | {count} habitaciones serán creadas`,spacesSkipped:`No se añadieron habitaciones (se pueden crear más tarde)`,devicesAssigned:`{count} dispositivo(s) asignados a habitaciones | {count} dispositivo asignado a una habitación | {count} dispositivos asignados a habitaciones`,devicesSkipped:`No se asignaron dispositivos a habitaciones`,integrationsEnabled:`{count} integración(es) habilitadas | {count} integración habilitada | {count} integraciones habilitadas`,integrationsSkipped:`No se habilitaron integraciones (se pueden configurar más tarde)`},messages:{finished:`¡Configuración completada! Bienvenido al panel inteligente.`,error:`No se pudo completar la configuración inicial.`}}},ru={wizard:{title:`Konfiguracja Smart Panel`,steps:{welcome:`Witamy`,account:`Konto`,location:`Lokalizacja`,spaces:`Przestrzenie`,integrations:`Integracje`,complete:`Zakończenie`},buttons:{getStarted:`Rozpocznij`,next:`Dalej`,back:`Wstecz`,skip:`Pomiń`,finishSetup:`Zakończ konfigurację`}},welcome:{title:`Witamy w Smart Panel`,description:`Skonfigurujmy Twój inteligentny dom. Ten kreator przeprowadzi Cię przez początkową konfigurację.`,steps:{account:`Utwórz konto`,accountDescription:`Skonfiguruj konto administratora`,location:`Ustaw lokalizację`,locationDescription:`Skonfiguruj lokalizację dla danych pogodowych`,spaces:`Utwórz przestrzenie`,spacesDescription:`Dodaj pokoje i strefy, aby uporządkować urządzenia`,integrations:`Włącz integracje`,integrationsDescription:`Połącz platformy inteligentnego domu`,finish:`Zacznij korzystać`,finishDescription:`Twój smart panel jest gotowy do użycia`}},account:{description:`Utwórz konto administratora. To będzie właściciel smart panelu.`,created:`Konto zostało pomyślnie utworzone! Jesteś teraz zalogowany.`,fields:{firstName:`Imię`,lastName:`Nazwisko`,email:`E-mail`,username:`Nazwa użytkownika`,password:`Hasło`},placeholders:{firstName:`Wprowadź swoje imię`,lastName:`Wprowadź swoje nazwisko`,email:`Wprowadź adres e-mail`,username:`Wybierz nazwę użytkownika`,password:`Wybierz hasło`},validation:{firstNameRequired:`Imię jest wymagane`,lastNameRequired:`Nazwisko jest wymagane`,emailRequired:`E-mail jest wymagany`,emailInvalid:`Proszę podać prawidłowy adres e-mail`,usernameRequired:`Nazwa użytkownika jest wymagana`,passwordRequired:`Hasło jest wymagane`},messages:{created:`Twoje konto zostało utworzone i jesteś teraz zalogowany.`,error:`Nie udało się utworzyć konta. Spróbuj ponownie.`}},location:{description:`Ustaw lokalizację dla informacji pogodowych i innych funkcji opartych na lokalizacji. Możesz pominąć ten krok i skonfigurować go później.`,fields:{citySearch:`Wyszukaj miasto`,latitude:`Szerokość geograficzna`,longitude:`Długość geograficzna`},placeholders:{citySearch:`Wpisz nazwę miasta, aby wyszukać...`,latitude:`np. 52.2297`,longitude:`np. 21.0122`},buttons:{myLocation:`Moja lokalizacja`},orEnterManually:`Lub wprowadź współrzędne ręcznie`,hint:`Lokalizację możesz skonfigurować później w ustawieniach pogody.`,messages:{error:`Nie udało się zapisać lokalizacji.`,geolocationNotSupported:`Geolokalizacja nie jest obsługiwana przez Twoją przeglądarkę.`,geolocationDenied:`Dostęp do lokalizacji został odmówiony. Proszę zezwolić na dostęp do lokalizacji w ustawieniach przeglądarki.`,geolocationUnavailable:`Informacje o lokalizacji są obecnie niedostępne.`,geolocationTimeout:`Żądanie lokalizacji przekroczyło limit czasu. Spróbuj ponownie.`,geolocationError:`Wystąpił błąd podczas pobierania lokalizacji.`}},spaces:{description:`Utwórz pokoje i strefy, aby uporządkować urządzenia. Więcej przestrzeni możesz dodać później.`,quickAdd:`Szybkie dodawanie typowych pokoi`,orAddCustom:`Lub dodaj niestandardowy pokój`,fields:{name:`Nazwa pokoju`},placeholders:{name:`np. Sypialnia główna`},buttons:{add:`Dodaj`},roomsToCreate:`Pokoje do utworzenia ({count})`,categories:{livingRoom:`Salon`,bedroom:`Sypialnia`,kitchen:`Kuchnia`,bathroom:`Łazienka`,toilet:`Toaleta`,office:`Biuro`,hallway:`Korytarz`,entryway:`Przedsionek`,garage:`Garaż`,diningRoom:`Jadalnia`,laundry:`Pralnia`,nursery:`Pokój dziecięcy`,guestRoom:`Pokój gościnny`,storage:`Magazyn`,workshop:`Warsztat`},devices:{title:`Przypisz urządzenia do pokoi`,count:`urządzenia`,unassigned:`Nieprzypisane urządzenia ({count})`,assigned:`Przypisane urządzenia ({count})`,selected:`{count} zaznaczonych`,assignTo:`Przypisz do pokoju...`,assign:`Przypisz`,clearSelection:`Wyczyść`,selectSpace:`Wybierz pokój...`},hint:`Przestrzenie możesz dodawać, zmieniać nazwy lub reorganizować później w ustawieniach przestrzeni.`,messages:{error:`Nie udało się utworzyć przestrzeni.`,assignmentError:`Nie udało się przypisać urządzeń do przestrzeni.`}},integrations:{description:`Włącz integracje urządzeń, aby połączyć platformy inteligentnego domu. Włącz te, których używasz, i skonfiguruj ustawienia połączenia.`,noPlugins:`Brak dostępnych integracji urządzeń.`,hint:`Integracje możesz włączać lub wyłączać później w ustawieniach rozszerzeń.`,searching:`Wyszukiwanie urządzeń...`,devicesFound:`Znaleziono {count} urządzenie | Znaleziono {count} urządzenie | Znaleziono {count} urządzeń`,noDevicesYet:`Nie znaleziono jeszcze urządzeń — skonfiguruj połączenie, aby wykryć urządzenia`,noDevicesFound:`Nie znaleziono jeszcze urządzeń`,enabled:`Integracja włączona`,configure:`Skonfiguruj`,configRequired:`Wymagana konfiguracja połączenia`,setupNow:`Skonfiguruj teraz`,stopScan:`Zatrzymaj`,summary:`Włączono {count} integrację | Włączono {count} integrację | Włączono {count} integracji`,totalDevices:`Znaleziono {count} urządzenie | Znaleziono {count} urządzenie | Znaleziono {count} urządzeń`,configDialog:{title:`Skonfiguruj {name}`,noConfig:`Brak opcji konfiguracji dla tej integracji.`,buttons:{cancel:`Anuluj`,validate:`Sprawdź`,save:`Zapisz`},messages:{saved:`Konfiguracja została pomyślnie zapisana.`,validationSuccess:`Konfiguracja jest prawidłowa.`,validationFailed:`Walidacja konfiguracji nie powiodła się.`,validationError:`Nie udało się sprawdzić konfiguracji.`}},messages:{error:`Nie udało się zaktualizować integracji.`}},complete:{title:`Wszystko gotowe!`,description:`Twój Smart Panel jest skonfigurowany i gotowy do użycia. Możesz teraz zacząć dodawać urządzenia, tworzyć przestrzenie i dostosowywać pulpit.`,summary:{accountCreated:`Konto administratora zostało utworzone`,locationConfigured:`Lokalizacja pogody skonfigurowana`,locationSkipped:`Lokalizacja pogody pominięta (można skonfigurować później)`,spacesCreated:`Zostanie utworzonych {count} pokoi | Zostanie utworzony {count} pokój | Zostanie utworzonych {count} pokoi`,spacesSkipped:`Nie dodano pokoi (można utworzyć później)`,devicesAssigned:`Przypisano {count} urządzeń do pokoi | Przypisano {count} urządzenie do pokoju | Przypisano {count} urządzeń do pokoi`,devicesSkipped:`Nie przypisano urządzeń do pokoi`,integrationsEnabled:`Włączono {count} integracji | Włączono {count} integrację | Włączono {count} integracji`,integrationsSkipped:`Nie włączono integracji (można skonfigurować później)`},messages:{finished:`Konfiguracja zakończona! Witamy w Smart Panel.`,error:`Nie udało się zakończyć wstępnej konfiguracji.`}}},iu={wizard:{title:`Nastavenie Smart Panelu`,steps:{welcome:`Vitajte`,account:`Účet`,location:`Poloha`,spaces:`Priestory`,integrations:`Integrácie`,complete:`Dokončenie`},buttons:{getStarted:`Začať`,next:`Ďalej`,back:`Späť`,skip:`Preskočiť`,finishSetup:`Dokončiť nastavenie`}},welcome:{title:`Vitajte v Smart Paneli`,description:`Poďme nastaviť vašu inteligentnú domácnosť. Tento sprievodca vás prevedie počiatočnou konfiguráciou.`,steps:{account:`Vytvoriť účet`,accountDescription:`Nastavte si účet administrátora`,location:`Nastaviť polohu`,locationDescription:`Nakonfigurujte svoju polohu pre údaje o počasí`,spaces:`Vytvoriť priestory`,spacesDescription:`Pridajte miestnosti a oblasti na organizáciu zariadení`,integrations:`Povoliť integrácie`,integrationsDescription:`Pripojte platformy inteligentnej domácnosti`,finish:`Začať používať`,finishDescription:`Váš smart panel je pripravený`}},account:{description:`Vytvorte si účet administrátora. Tento bude vlastníkom smart panelu.`,created:`Účet bol úspešne vytvorený! Teraz ste prihlásení.`,fields:{firstName:`Meno`,lastName:`Priezvisko`,email:`Email`,username:`Používateľské meno`,password:`Heslo`},placeholders:{firstName:`Zadajte svoje meno`,lastName:`Zadajte svoje priezvisko`,email:`Zadajte svoju emailovú adresu`,username:`Zvoľte si používateľské meno`,password:`Zvoľte si heslo`},validation:{firstNameRequired:`Meno je povinné`,lastNameRequired:`Priezvisko je povinné`,emailRequired:`Email je povinný`,emailInvalid:`Prosím zadajte platnú emailovú adresu`,usernameRequired:`Používateľské meno je povinné`,passwordRequired:`Heslo je povinné`},messages:{created:`Váš účet bol vytvorený a teraz ste prihlásení.`,error:`Nepodarilo sa vytvoriť účet. Skúste to prosím znova.`}},location:{description:`Nastavte svoju polohu pre informácie o počasí a ďalšie funkcie založené na polohe. Tento krok môžete preskočiť a nakonfigurovať neskôr.`,fields:{citySearch:`Vyhľadať mesto`,latitude:`Zemepisná šírka`,longitude:`Zemepisná dĺžka`},placeholders:{citySearch:`Zadajte názov mesta na vyhľadanie...`,latitude:`napr. 50.0755`,longitude:`napr. 14.4378`},buttons:{myLocation:`Moja poloha`},orEnterManually:`Alebo zadajte súradnice manuálne`,hint:`Svoju polohu môžete nakonfigurovať neskôr v nastaveniach Počasia.`,messages:{error:`Nepodarilo sa uložiť polohu.`,geolocationNotSupported:`Geolokácia nie je podporovaná vaším prehliadačom.`,geolocationDenied:`Prístup k polohe bol zamietnutý. Prosím povoľte prístup k polohe v nastaveniach prehliadača.`,geolocationUnavailable:`Informácie o polohe sú momentálne nedostupné.`,geolocationTimeout:`Požiadavka na polohu vypršala. Skúste to prosím znova.`,geolocationError:`Pri získavaní vašej polohy sa vyskytla chyba.`}},spaces:{description:`Vytvorte miestnosti a oblasti na organizáciu zariadení. Ďalšie priestory môžete pridať neskôr.`,quickAdd:`Rýchle pridanie bežných miestností`,orAddCustom:`Alebo pridajte vlastnú miestnosť`,fields:{name:`Názov miestnosti`},placeholders:{name:`napr. Hlavná spálňa`},buttons:{add:`Pridať`},roomsToCreate:`Miestnosti na vytvorenie ({count})`,categories:{livingRoom:`Obývacia izba`,bedroom:`Spálňa`,kitchen:`Kuchyňa`,bathroom:`Kúpeľňa`,toilet:`Toaleta`,office:`Kancelária`,hallway:`Chodba`,entryway:`Vstupná hala`,garage:`Garáž`,diningRoom:`Jedáleň`,laundry:`Práčovňa`,nursery:`Detská izba`,guestRoom:`Hosťovská izba`,storage:`Sklad`,workshop:`Dielňa`},devices:{title:`Priradiť zariadenia k miestnostiam`,count:`zariadení`,unassigned:`Nepriradené zariadenia ({count})`,assigned:`Priradené zariadenia ({count})`,selected:`{count} vybraných`,assignTo:`Priradiť do miestnosti...`,assign:`Priradiť`,clearSelection:`Zrušiť`,selectSpace:`Vyberte miestnosť...`},hint:`Priestory môžete pridávať, premenovávať alebo reorganizovať neskôr v nastaveniach Priestorov.`,messages:{error:`Nepodarilo sa vytvoriť priestory.`,assignmentError:`Nepodarilo sa priradiť zariadenia k priestorom.`}},integrations:{description:`Povoľte integrácie zariadení na pripojenie platforiem inteligentnej domácnosti. Zapnite tie, ktoré používate, a nakonfigurujte ich nastavenia pripojenia.`,noPlugins:`Nie sú dostupné žiadne integrácie zariadení.`,hint:`Integrácie môžete povoliť alebo zakázať neskôr v nastaveniach Rozšírení.`,searching:`Vyhľadávanie zariadení...`,devicesFound:`{count} zariadenie nájdené | {count} zariadenie nájdené | {count} zariadení nájdených`,noDevicesYet:`Zatiaľ neboli nájdené žiadne zariadenia - nakonfigurujte pripojenie na objavenie zariadení`,noDevicesFound:`Zatiaľ neboli nájdené žiadne zariadenia`,enabled:`Integrácia povolená`,configure:`Konfigurovať`,configRequired:`Na pripojenie je potrebná konfigurácia`,setupNow:`Nastaviť teraz`,stopScan:`Zastaviť`,summary:`{count} integrácia povolená | {count} integrácia povolená | {count} integrácií povolených`,totalDevices:`{count} zariadenie nájdené | {count} zariadenie nájdené | {count} zariadení nájdených`,configDialog:{title:`Konfigurovať {name}`,noConfig:`Pre túto integráciu nie sú dostupné žiadne konfiguračné možnosti.`,buttons:{cancel:`Zrušiť`,validate:`Overiť`,save:`Uložiť`},messages:{saved:`Konfigurácia bola úspešne uložená.`,validationSuccess:`Konfigurácia je platná.`,validationFailed:`Overenie konfigurácie zlyhalo.`,validationError:`Konfiguráciu sa nepodarilo overiť.`}},messages:{error:`Nepodarilo sa aktualizovať integrácie.`}},complete:{title:`Všetko je pripravené!`,description:`Váš Smart Panel je nakonfigurovaný a pripravený na použitie. Teraz môžete začať pridávať zariadenia, vytvárať priestory a prispôsobovať dashboard.`,summary:{accountCreated:`Účet administrátora vytvorený`,locationConfigured:`Poloha počasia nakonfigurovaná`,locationSkipped:`Poloha počasia preskočená (možno nakonfigurovať neskôr)`,spacesCreated:`{count} miestností bude vytvorených | {count} miestnosť bude vytvorená | {count} miestností bude vytvorených`,spacesSkipped:`Žiadne miestnosti neboli pridané (možno vytvoriť neskôr)`,devicesAssigned:`{count} zariadení priradených k miestnostiam | {count} zariadenie priradené k miestnosti | {count} zariadení priradených k miestnostiam`,devicesSkipped:`Žiadne zariadenia neboli priradené k miestnostiam`,integrationsEnabled:`{count} integrácií povolených | {count} integrácia povolená | {count} integrácií povolených`,integrationsSkipped:`Žiadne integrácie neboli povolené (možno nakonfigurovať neskôr)`},messages:{finished:`Nastavenie dokončené! Vitajte v Smart Paneli.`,error:`Nepodarilo sa dokončiť úvodné nastavenie.`}}},au={"cs-CZ":$l,"de-DE":eu,"en-US":tu,"es-ES":nu,"pl-PL":ru,"sk-SK":iu},ou=(e,t)=>{let{needsOnboarding:n,isOnboardingCompleted:r,fetchStatus:i}=ht();i();let a=t.name===Be.ONBOARDING;return n.value&&!a?{name:Be.ONBOARDING}:!n.value&&a&&r.value?{name:`app-root`}:!0},su=[{path:`/onboarding`,name:Be.ONBOARDING,component:()=>Et(()=>import(`./view-onboarding-vZhyo5Yl.js`),__vite__mapDeps([46,1,2,3,4,5,47,38,30,31,48,49,33])),meta:{guards:[`onboarding`],title:`Setup`}}],cu={install:(e,t)=>{let n=ye(e);for(let[e,n]of Object.entries(au)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{onboardingModule:n});t.i18n.global.setLocaleMessage(e,r)}t.router.beforeEach(async()=>{let{isOnboardingCompleted:e,fetchStatus:t}=ht();if(!e.value)try{await t()}catch{}}),n.register(ou),su.forEach(e=>{t.router.addRoute(e)})}},lu=Pt.extend({executionTimeoutMs:G().int().min(1e3).max(3e5).default(3e4),maxConcurrentExecutions:G().int().min(1).max(100).default(10),continueOnActionFailure:R().default(!0)}),uu=St.extend({type:Z(oa),executionTimeoutMs:G().int().min(1e3).max(3e5).default(3e4),maxConcurrentExecutions:G().int().min(1).max(100).default(10),continueOnActionFailure:R().default(!0)}),du=at.and(q({type:Z(oa),execution_timeout_ms:G().int().min(1e3).max(3e5).optional(),max_concurrent_executions:G().int().min(1).max(100).optional(),continue_on_action_failure:R().optional()}));wt.and(q({type:Z(oa),execution_timeout_ms:G().int().min(1e3).max(3e5),max_concurrent_executions:G().int().min(1).max(100),continue_on_action_failure:R()}));var fu={scenes:{menu:{title:`Scény`},headings:{list:`Scény`,add:`Přidat scénu`,edit:`Upravit scénu`,delete:`Smazat scénu`,discard:`Zahodit změny`,adjustFilters:`Upravit filtry`,bulkRemove:`Smazat scény`,bulkEnable:`Povolit scény`,bulkDisable:`Zakázat scény`},subHeadings:{list:`Správa automatizačních scén pro vaši chytrou domácnost`,adjustFilters:`Filtrovat scény podle různých kritérií`},breadcrumbs:{scenes:`Scény`},filters:{allSpaces:`Všechny prostory`,enabled:{title:`Stav`,values:{enabled:`Povoleno`,disabled:`Zakázáno`,all:`Vše`}},category:{title:`Kategorie`,placeholder:`Vyberte kategorie`},space:{title:`Prostor`,placeholder:`Všechny prostory`}},fields:{name:`Název`,category:`Kategorie`,space:`Prostor`,enabled:`Povoleno`,actions:`Akce`,unknownSpace:`Neznámý prostor`,wholeHome:`Celý dům`,lastTriggered:`Naposledy spuštěno`,neverTriggered:`Nikdy`,search:{placeholder:`Hledat scény...`},config:{executionTimeoutMs:{title:`Časový limit provedení (ms)`,alertTitle:`Časový limit provedení`,hint:`Maximální čas povolený pro provedení scény, než je považována za neúspěšnou. Pokud je dosažen časový limit, zbývající akce mohou být zrušeny v závislosti na zpracování chyb.`,validation:{range:`Časový limit provedení musí být mezi 1000 a 300000 ms`}},maxConcurrentExecutions:{title:`Maximální počet souběžných provedení`,alertTitle:`Maximální počet souběžných provedení`,hint:`Omezuje, kolik provedení scény může běžet současně. Pomáhá předcházet přetížení při opakovaném nebo paralelním spouštění scén.`,validation:{range:`Maximální počet souběžných provedení musí být mezi 1 a 100`}},continueOnActionFailure:{title:`Pokračovat při selhání akce`,alertTitle:`Pokračovat při selhání akce`,hint:`Je-li povoleno, scéna bude pokračovat v provádění zbývajících akcí, i když jedna akce selže. Je-li zakázáno, scéna se okamžitě zastaví při prvním selhání.`}}},texts:{loadingScenes:`Načítání scén...`,noScenes:`Nemáte nakonfigurovanou žádnou scénu`,noFilteredScenes:`Žádné scény neodpovídají vašim filtrům`,confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,confirmBulkRemove:`Opravdu chcete smazat {count} vybraných scén?`,confirmBulkEnable:`Opravdu chcete povolit {count} vybraných scén?`,confirmBulkDisable:`Opravdu chcete zakázat {count} vybraných scén?`,actionsCount:`Žádné akce | {count} akce | {count} akcí`,lastTriggered:`Naposledy spuštěno`,order:`#`},edit:{sections:{general:{title:`Obecné`,hint:`<strong>Scény jsou ruční předvolby</strong>, které aplikují více akcí zařízení najednou. Nikdy se nespouštějí automaticky a nemají podmínky.`},actions:{title:`Akce`,emptyTitle:`Zatím nebyly přidány žádné akce`,emptyDescription:`Přidejte jednu nebo více akcí zařízení, které se spustí při aktivaci této scény.`,helperText:`Můžete ovládat světla, vypínače, klimatizační zařízení a další.`}}},form:{space:`Prostor`,selectSpace:`Celý dům`,spaceGroups:{rooms:`Místnosti`,zones:`Zóny`},name:`Název scény`,namePlaceholder:`Zadejte název scény`,nameRequired:`Název scény je povinný`,category:`Kategorie`,categoryRequired:`Kategorie je povinná`,description:`Popis`,descriptionPlaceholder:`Volitelný popis pro tuto scénu`,actionsSection:`Akce scény`,noActions:`Nejsou definovány žádné akce. Přidejte akce pro ovládání zařízení při spuštění této scény.`,actionsRequired:`Je vyžadována alespoň jedna akce`,actionNumber:`Akce {number}`,device:`Zařízení`,selectDevice:`Vyberte zařízení`,deviceRequired:`Zařízení je povinné`,actionDeviceRequired:`Akce {number}: Zařízení je povinné`,channel:`Kanál`,selectChannel:`Vyberte kanál`,actionChannelRequired:`Akce {number}: Kanál je povinný`,property:`Vlastnost`,selectProperty:`Vyberte vlastnost`,propertyRequired:`Vlastnost je povinná`,actionPropertyRequired:`Akce {number}: Vlastnost je povinná`,value:`Hodnota`,valuePlaceholder:`Zadejte hodnotu`,valueRequired:`Hodnota je povinná`,actionValueRequired:`Akce {number}: Hodnota je povinná`,addAction:`Přidat akci`,editAction:`Upravit akci`},buttons:{add:{title:`Přidat scénu`},delete:{title:`Smazat`},cancel:{title:`Zrušit`},save:{title:`Uložit`},yes:{title:`Ano`},no:{title:`Ne`},close:{title:`Zavřít`},discard:{title:`Zahodit`},backToList:{title:`Zpět na seznam`},resetFilters:{title:`Resetovat filtry`}},messages:{config:{edited:`Konfigurace modulu scén byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci modulu scén`},triggered:`Scéna "{name}" byla úspěšně spuštěna`,triggerFailed:`Nepodařilo se spustit scénu`,confirmDelete:`Opravdu chcete smazat scénu "{name}"?`,deleted:`Scéna byla úspěšně smazána`,deleteFailed:`Nepodařilo se smazat scénu`,created:`Scéna byla úspěšně vytvořena`,createFailed:`Nepodařilo se vytvořit scénu`,edited:`Scéna "{scene}" byla úspěšně aktualizována`,editFailed:`Nepodařilo se aktualizovat scénu "{scene}"`,notFound:`Scéna nebyla nalezena`,duplicateAction:`Akce pro tuto vlastnost již v této scéně existuje`,addFormPlaceholder:`Formulář pro přidání scény bude implementován zde`,editFormPlaceholder:`Formulář pro úpravu scény bude implementován zde`,requestError:`Při zpracování vašeho požadavku došlo k chybě`,bulkRemoved:`Úspěšně smazáno {count} scén`,bulkRemoveFailed:`Nepodařilo se smazat {count} scén`,bulkEnabled:`Úspěšně povoleno {count} scén`,bulkEnableFailed:`Nepodařilo se povolit {count} scén`,bulkEnableCanceled:`Operace povolení zrušena`,bulkDisabled:`Úspěšně zakázáno {count} scén`,bulkDisableFailed:`Nepodařilo se zakázat {count} scén`,bulkDisableCanceled:`Operace zakázání zrušena`},categories:{generic:`Obecná`,lighting:`Osvětlení`,climate:`Klima`,media:`Média`,work:`Práce`,relax:`Odpočinek`,night:`Noc`,morning:`Ráno`,party:`Párty`,movie:`Film`,away:`Mimo domov`,home:`Doma`,security:`Zabezpečení`,energy:`Energie`,custom:`Vlastní`}}},pu={scenes:{menu:{title:`Szenen`},headings:{list:`Szenen`,add:`Szene hinzufügen`,edit:`Szene bearbeiten`,delete:`Szene löschen`,discard:`Änderungen verwerfen`,adjustFilters:`Filter anpassen`,bulkRemove:`Szenen löschen`,bulkEnable:`Szenen aktivieren`,bulkDisable:`Szenen deaktivieren`},subHeadings:{list:`Automatisierungsszenen für Ihr Smart Home verwalten`,adjustFilters:`Szenen nach verschiedenen Kriterien filtern`},breadcrumbs:{scenes:`Szenen`},filters:{allSpaces:`Alle Räume`,enabled:{title:`Status`,values:{enabled:`Aktiviert`,disabled:`Deaktiviert`,all:`Alle`}},category:{title:`Kategorie`,placeholder:`Kategorien auswählen`},space:{title:`Raum`,placeholder:`Alle Räume`}},fields:{name:`Name`,category:`Kategorie`,space:`Raum`,enabled:`Aktiviert`,actions:`Aktionen`,unknownSpace:`Unbekannter Raum`,wholeHome:`Ganzes Haus`,lastTriggered:`Zuletzt ausgelöst`,neverTriggered:`Nie`,search:{placeholder:`Szenen suchen...`},config:{executionTimeoutMs:{title:`Ausführungszeitlimit (ms)`,alertTitle:`Ausführungszeitlimit`,hint:`Maximale Zeit für eine Szenenausführung, bevor sie als fehlgeschlagen gilt. Bei Erreichen des Zeitlimits können verbleibende Aktionen je nach Fehlerbehandlung abgebrochen werden.`,validation:{range:`Ausführungszeitlimit muss zwischen 1000 und 300000 ms liegen`}},maxConcurrentExecutions:{title:`Max. gleichzeitige Ausführungen`,alertTitle:`Max. gleichzeitige Ausführungen`,hint:`Begrenzt, wie viele Szenenausführungen gleichzeitig laufen können. Hilft, Überlastung zu vermeiden, wenn Szenen wiederholt oder parallel ausgelöst werden.`,validation:{range:`Max. gleichzeitige Ausführungen müssen zwischen 1 und 100 liegen`}},continueOnActionFailure:{title:`Bei Aktionsfehler fortfahren`,alertTitle:`Bei Aktionsfehler fortfahren`,hint:`Wenn aktiviert, führt die Szene verbleibende Aktionen auch dann aus, wenn eine Aktion fehlschlägt. Wenn deaktiviert, stoppt die Szene sofort beim ersten Fehler.`}}},texts:{loadingScenes:`Szenen werden geladen...`,noScenes:`Sie haben noch keine Szenen konfiguriert`,noFilteredScenes:`Keine Szenen entsprechen Ihren Filtern`,confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,confirmBulkRemove:`Sind Sie sicher, dass Sie {count} ausgewählte Szene(n) löschen möchten?`,confirmBulkEnable:`Sind Sie sicher, dass Sie {count} ausgewählte Szene(n) aktivieren möchten?`,confirmBulkDisable:`Sind Sie sicher, dass Sie {count} ausgewählte Szene(n) deaktivieren möchten?`,actionsCount:`Keine Aktionen | {count} Aktion | {count} Aktionen`,lastTriggered:`Zuletzt ausgelöst`,order:`#`},edit:{sections:{general:{title:`Allgemein`,hint:`<strong>Szenen sind manuelle Voreinstellungen</strong>, die mehrere Geräteaktionen gleichzeitig anwenden. Sie laufen nie automatisch ab und haben keine Bedingungen.`},actions:{title:`Aktionen`,emptyTitle:`Noch keine Aktionen hinzugefügt`,emptyDescription:`Fügen Sie eine oder mehrere Geräteaktionen hinzu, die ausgeführt werden, wenn diese Szene aktiviert wird.`,helperText:`Sie können Lichter, Schalter, Klimageräte und mehr steuern.`}}},form:{space:`Raum`,selectSpace:`Ganzes Haus`,spaceGroups:{rooms:`Räume`,zones:`Zonen`},name:`Szenenname`,namePlaceholder:`Szenennamen eingeben`,nameRequired:`Szenenname ist erforderlich`,category:`Kategorie`,categoryRequired:`Kategorie ist erforderlich`,description:`Beschreibung`,descriptionPlaceholder:`Optionale Beschreibung für diese Szene`,actionsSection:`Szenenaktionen`,noActions:`Keine Aktionen definiert. Fügen Sie Aktionen hinzu, um Geräte zu steuern, wenn diese Szene ausgelöst wird.`,actionsRequired:`Mindestens eine Aktion ist erforderlich`,actionNumber:`Aktion {number}`,device:`Gerät`,selectDevice:`Gerät auswählen`,deviceRequired:`Gerät ist erforderlich`,actionDeviceRequired:`Aktion {number}: Gerät ist erforderlich`,channel:`Kanal`,selectChannel:`Kanal auswählen`,actionChannelRequired:`Aktion {number}: Kanal ist erforderlich`,property:`Eigenschaft`,selectProperty:`Eigenschaft auswählen`,propertyRequired:`Eigenschaft ist erforderlich`,actionPropertyRequired:`Aktion {number}: Eigenschaft ist erforderlich`,value:`Wert`,valuePlaceholder:`Wert eingeben`,valueRequired:`Wert ist erforderlich`,actionValueRequired:`Aktion {number}: Wert ist erforderlich`,addAction:`Aktion hinzufügen`,editAction:`Aktion bearbeiten`},buttons:{add:{title:`Szene hinzufügen`},delete:{title:`Löschen`},cancel:{title:`Abbrechen`},save:{title:`Speichern`},yes:{title:`Ja`},no:{title:`Nein`},close:{title:`Schließen`},discard:{title:`Verwerfen`},backToList:{title:`Zurück zur Liste`},resetFilters:{title:`Filter zurücksetzen`}},messages:{config:{edited:`Szenenmodul-Konfiguration erfolgreich aktualisiert`,notEdited:`Aktualisierung der Szenenmodul-Konfiguration fehlgeschlagen`},triggered:`Szene "{name}" erfolgreich ausgelöst`,triggerFailed:`Auslösen der Szene fehlgeschlagen`,confirmDelete:`Sind Sie sicher, dass Sie die Szene "{name}" löschen möchten?`,deleted:`Szene erfolgreich gelöscht`,deleteFailed:`Löschen der Szene fehlgeschlagen`,created:`Szene erfolgreich erstellt`,createFailed:`Erstellen der Szene fehlgeschlagen`,edited:`Szene "{scene}" erfolgreich aktualisiert`,editFailed:`Aktualisierung der Szene "{scene}" fehlgeschlagen`,notFound:`Szene nicht gefunden`,duplicateAction:`Eine Aktion für diese Eigenschaft existiert bereits in dieser Szene`,addFormPlaceholder:`Szenen-Hinzufügen-Formular wird hier implementiert`,editFormPlaceholder:`Szenen-Bearbeiten-Formular wird hier implementiert`,requestError:`Bei der Verarbeitung Ihrer Anfrage ist ein Fehler aufgetreten`,bulkRemoved:`{count} Szene(n) erfolgreich gelöscht`,bulkRemoveFailed:`Löschen von {count} Szene(n) fehlgeschlagen`,bulkEnabled:`{count} Szene(n) erfolgreich aktiviert`,bulkEnableFailed:`Aktivieren von {count} Szene(n) fehlgeschlagen`,bulkEnableCanceled:`Aktivierungsvorgang abgebrochen`,bulkDisabled:`{count} Szene(n) erfolgreich deaktiviert`,bulkDisableFailed:`Deaktivieren von {count} Szene(n) fehlgeschlagen`,bulkDisableCanceled:`Deaktivierungsvorgang abgebrochen`},categories:{generic:`Allgemein`,lighting:`Beleuchtung`,climate:`Klima`,media:`Medien`,work:`Arbeit`,relax:`Entspannung`,night:`Nacht`,morning:`Morgen`,party:`Party`,movie:`Film`,away:`Abwesend`,home:`Zuhause`,security:`Sicherheit`,energy:`Energie`,custom:`Benutzerdefiniert`}}},mu={scenes:{menu:{title:`Scenes`},headings:{list:`Scenes`,add:`Add scene`,edit:`Edit scene`,delete:`Delete scene`,discard:`Discard changes`,adjustFilters:`Adjust filters`,bulkRemove:`Delete scenes`,bulkEnable:`Enable scenes`,bulkDisable:`Disable scenes`},subHeadings:{list:`Manage automation scenes for your smart home`,adjustFilters:`Filter scenes by various criteria`},breadcrumbs:{scenes:`Scenes`},filters:{allSpaces:`All Spaces`,enabled:{title:`Status`,values:{enabled:`Enabled`,disabled:`Disabled`,all:`All`}},category:{title:`Category`,placeholder:`Select categories`},space:{title:`Space`,placeholder:`All spaces`}},fields:{name:`Name`,category:`Category`,space:`Space`,enabled:`Enabled`,actions:`Actions`,unknownSpace:`Unknown Space`,wholeHome:`Whole home`,lastTriggered:`Last Triggered`,neverTriggered:`Never`,search:{placeholder:`Search scenes...`},config:{executionTimeoutMs:{title:`Execution timeout (ms)`,alertTitle:`Execution timeout`,hint:`Maximum time allowed for a scene execution before it is considered failed. If the timeout is reached, remaining actions may be cancelled depending on failure handling.`,validation:{range:`Execution timeout must be between 1000 and 300000 ms`}},maxConcurrentExecutions:{title:`Max concurrent executions`,alertTitle:`Max concurrent executions`,hint:`Limits how many scene executions can run at the same time. Helps prevent overload when scenes are triggered repeatedly or in parallel.`,validation:{range:`Max concurrent executions must be between 1 and 100`}},continueOnActionFailure:{title:`Continue on action failure`,alertTitle:`Continue on action failure`,hint:`When enabled, the scene will continue executing remaining actions even if one action fails. When disabled, the scene stops immediately on the first failure.`}}},texts:{loadingScenes:`Loading scenes...`,noScenes:`You don't have configured any scene`,noFilteredScenes:`No scenes match your filters`,confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,confirmBulkRemove:`Are you sure you want to delete {count} selected scene(s)?`,confirmBulkEnable:`Are you sure you want to enable {count} selected scene(s)?`,confirmBulkDisable:`Are you sure you want to disable {count} selected scene(s)?`,actionsCount:`No actions | {count} action | {count} actions`,lastTriggered:`Last Triggered`,order:`#`},edit:{sections:{general:{title:`General`,hint:`<strong>Scenes are manual presets</strong> that apply multiple device actions at once. They never run automatically and have no conditions.`},actions:{title:`Actions`,emptyTitle:`No actions added yet`,emptyDescription:`Add one or more device actions that will run when this scene is activated.`,helperText:`You can control lights, switches, climate devices, and more.`}}},form:{space:`Space`,selectSpace:`Whole home`,spaceGroups:{rooms:`Rooms`,zones:`Zones`},name:`Scene name`,namePlaceholder:`Enter scene name`,nameRequired:`Scene name is required`,category:`Category`,categoryRequired:`Category is required`,description:`Description`,descriptionPlaceholder:`Optional description for this scene`,actionsSection:`Scene actions`,noActions:`No actions defined. Add actions to control devices when this scene is triggered.`,actionsRequired:`At least one action is required`,actionNumber:`Action {number}`,device:`Device`,selectDevice:`Select a device`,deviceRequired:`Device is required`,actionDeviceRequired:`Action {number}: Device is required`,channel:`Channel`,selectChannel:`Select a channel`,actionChannelRequired:`Action {number}: Channel is required`,property:`Property`,selectProperty:`Select a property`,propertyRequired:`Property is required`,actionPropertyRequired:`Action {number}: Property is required`,value:`Value`,valuePlaceholder:`Enter value`,valueRequired:`Value is required`,actionValueRequired:`Action {number}: Value is required`,addAction:`Add action`,editAction:`Edit action`},buttons:{add:{title:`Add scene`},delete:{title:`Delete`},cancel:{title:`Cancel`},save:{title:`Save`},yes:{title:`Yes`},no:{title:`No`},close:{title:`Close`},discard:{title:`Discard`},backToList:{title:`Back to list`},resetFilters:{title:`Reset filters`}},messages:{config:{edited:`Scenes module configuration updated successfully`,notEdited:`Failed to update scenes module configuration`},triggered:`Scene "{name}" triggered successfully`,triggerFailed:`Failed to trigger scene`,confirmDelete:`Are you sure you want to delete scene "{name}"?`,deleted:`Scene deleted successfully`,deleteFailed:`Failed to delete scene`,created:`Scene created successfully`,createFailed:`Failed to create scene`,edited:`Scene "{scene}" updated successfully`,editFailed:`Failed to update scene "{scene}"`,notFound:`Scene not found`,duplicateAction:`An action for this property already exists in this scene`,addFormPlaceholder:`Scene add form will be implemented here`,editFormPlaceholder:`Scene edit form will be implemented here`,requestError:`An error occurred while processing your request`,bulkRemoved:`Successfully deleted {count} scene(s)`,bulkRemoveFailed:`Failed to delete {count} scene(s)`,bulkEnabled:`Successfully enabled {count} scene(s)`,bulkEnableFailed:`Failed to enable {count} scene(s)`,bulkEnableCanceled:`Enable operation canceled`,bulkDisabled:`Successfully disabled {count} scene(s)`,bulkDisableFailed:`Failed to disable {count} scene(s)`,bulkDisableCanceled:`Disable operation canceled`},categories:{generic:`Generic`,lighting:`Lighting`,climate:`Climate`,media:`Media`,work:`Work`,relax:`Relax`,night:`Night`,morning:`Morning`,party:`Party`,movie:`Movie`,away:`Away`,home:`Home`,security:`Security`,energy:`Energy`,custom:`Custom`}}},hu={scenes:{menu:{title:`Escenas`},headings:{list:`Escenas`,add:`Añadir escena`,edit:`Editar escena`,delete:`Eliminar escena`,discard:`Descartar cambios`,adjustFilters:`Ajustar filtros`,bulkRemove:`Eliminar escenas`,bulkEnable:`Activar escenas`,bulkDisable:`Desactivar escenas`},subHeadings:{list:`Gestiona las escenas de automatización de tu hogar inteligente`,adjustFilters:`Filtra escenas por varios criterios`},breadcrumbs:{scenes:`Escenas`},filters:{allSpaces:`Todos los espacios`,enabled:{title:`Estado`,values:{enabled:`Activada`,disabled:`Desactivada`,all:`Todas`}},category:{title:`Categoría`,placeholder:`Seleccionar categorías`},space:{title:`Espacio`,placeholder:`Todos los espacios`}},fields:{name:`Nombre`,category:`Categoría`,space:`Espacio`,enabled:`Activada`,actions:`Acciones`,unknownSpace:`Espacio desconocido`,wholeHome:`Toda la casa`,lastTriggered:`Última activación`,neverTriggered:`Nunca`,search:{placeholder:`Buscar escenas...`},config:{executionTimeoutMs:{title:`Tiempo límite de ejecución (ms)`,alertTitle:`Tiempo límite de ejecución`,hint:`Tiempo máximo permitido para la ejecución de una escena antes de considerarla fallida. Si se alcanza el tiempo límite, las acciones restantes pueden cancelarse dependiendo del manejo de errores.`,validation:{range:`El tiempo límite de ejecución debe estar entre 1000 y 300000 ms`}},maxConcurrentExecutions:{title:`Máximo de ejecuciones simultáneas`,alertTitle:`Máximo de ejecuciones simultáneas`,hint:`Limita cuántas ejecuciones de escenas pueden ejecutarse al mismo tiempo. Ayuda a prevenir sobrecargas cuando las escenas se activan repetidamente o en paralelo.`,validation:{range:`El máximo de ejecuciones simultáneas debe estar entre 1 y 100`}},continueOnActionFailure:{title:`Continuar si falla una acción`,alertTitle:`Continuar si falla una acción`,hint:`Cuando está activado, la escena continuará ejecutando las acciones restantes incluso si una acción falla. Cuando está desactivado, la escena se detiene inmediatamente en el primer fallo.`}}},texts:{loadingScenes:`Cargando escenas...`,noScenes:`No tienes ninguna escena configurada`,noFilteredScenes:`Ninguna escena coincide con los filtros`,confirmDiscard:`Tienes cambios sin guardar. ¿Estás seguro de que deseas descartarlos?`,confirmBulkRemove:`¿Estás seguro de que deseas eliminar {count} escena(s) seleccionada(s)?`,confirmBulkEnable:`¿Estás seguro de que deseas activar {count} escena(s) seleccionada(s)?`,confirmBulkDisable:`¿Estás seguro de que deseas desactivar {count} escena(s) seleccionada(s)?`,actionsCount:`Sin acciones | {count} acción | {count} acciones`,lastTriggered:`Última activación`,order:`#`},edit:{sections:{general:{title:`General`,hint:`<strong>Las escenas son preajustes manuales</strong> que aplican múltiples acciones de dispositivos a la vez. Nunca se ejecutan automáticamente y no tienen condiciones.`},actions:{title:`Acciones`,emptyTitle:`Aún no se han añadido acciones`,emptyDescription:`Añade una o más acciones de dispositivo que se ejecutarán cuando se active esta escena.`,helperText:`Puedes controlar luces, interruptores, dispositivos de climatización y más.`}}},form:{space:`Espacio`,selectSpace:`Toda la casa`,spaceGroups:{rooms:`Habitaciones`,zones:`Zonas`},name:`Nombre de la escena`,namePlaceholder:`Introduce el nombre de la escena`,nameRequired:`El nombre de la escena es obligatorio`,category:`Categoría`,categoryRequired:`La categoría es obligatoria`,description:`Descripción`,descriptionPlaceholder:`Descripción opcional para esta escena`,actionsSection:`Acciones de la escena`,noActions:`No hay acciones definidas. Añade acciones para controlar dispositivos cuando se active esta escena.`,actionsRequired:`Se requiere al menos una acción`,actionNumber:`Acción {number}`,device:`Dispositivo`,selectDevice:`Seleccionar un dispositivo`,deviceRequired:`El dispositivo es obligatorio`,actionDeviceRequired:`Acción {number}: El dispositivo es obligatorio`,channel:`Canal`,selectChannel:`Seleccionar un canal`,actionChannelRequired:`Acción {number}: El canal es obligatorio`,property:`Propiedad`,selectProperty:`Seleccionar una propiedad`,propertyRequired:`La propiedad es obligatoria`,actionPropertyRequired:`Acción {number}: La propiedad es obligatoria`,value:`Valor`,valuePlaceholder:`Introduce un valor`,valueRequired:`El valor es obligatorio`,actionValueRequired:`Acción {number}: El valor es obligatorio`,addAction:`Añadir acción`,editAction:`Editar acción`},buttons:{add:{title:`Añadir escena`},delete:{title:`Eliminar`},cancel:{title:`Cancelar`},save:{title:`Guardar`},yes:{title:`Sí`},no:{title:`No`},close:{title:`Cerrar`},discard:{title:`Descartar`},backToList:{title:`Volver a la lista`},resetFilters:{title:`Restablecer filtros`}},messages:{config:{edited:`Configuración del módulo de escenas actualizada correctamente`,notEdited:`Error al actualizar la configuración del módulo de escenas`},triggered:`Escena "{name}" activada correctamente`,triggerFailed:`Error al activar la escena`,confirmDelete:`¿Estás seguro de que deseas eliminar la escena "{name}"?`,deleted:`Escena eliminada correctamente`,deleteFailed:`Error al eliminar la escena`,created:`Escena creada correctamente`,createFailed:`Error al crear la escena`,edited:`Escena "{scene}" actualizada correctamente`,editFailed:`Error al actualizar la escena "{scene}"`,notFound:`Escena no encontrada`,duplicateAction:`Ya existe una acción para esta propiedad en esta escena`,addFormPlaceholder:`El formulario para añadir escenas se implementará aquí`,editFormPlaceholder:`El formulario para editar escenas se implementará aquí`,requestError:`Ocurrió un error al procesar tu solicitud`,bulkRemoved:`{count} escena(s) eliminada(s) correctamente`,bulkRemoveFailed:`Error al eliminar {count} escena(s)`,bulkEnabled:`{count} escena(s) activada(s) correctamente`,bulkEnableFailed:`Error al activar {count} escena(s)`,bulkEnableCanceled:`Operación de activación cancelada`,bulkDisabled:`{count} escena(s) desactivada(s) correctamente`,bulkDisableFailed:`Error al desactivar {count} escena(s)`,bulkDisableCanceled:`Operación de desactivación cancelada`},categories:{generic:`Genérica`,lighting:`Iluminación`,climate:`Climatización`,media:`Multimedia`,work:`Trabajo`,relax:`Relajación`,night:`Noche`,morning:`Mañana`,party:`Fiesta`,movie:`Película`,away:`Ausente`,home:`En casa`,security:`Seguridad`,energy:`Energía`,custom:`Personalizada`}}},gu={scenes:{menu:{title:`Sceny`},headings:{list:`Sceny`,add:`Dodaj scenę`,edit:`Edytuj scenę`,delete:`Usuń scenę`,discard:`Odrzuć zmiany`,adjustFilters:`Dostosuj filtry`,bulkRemove:`Usuń sceny`,bulkEnable:`Włącz sceny`,bulkDisable:`Wyłącz sceny`},subHeadings:{list:`Zarządzaj scenami automatyzacji inteligentnego domu`,adjustFilters:`Filtruj sceny według różnych kryteriów`},breadcrumbs:{scenes:`Sceny`},filters:{allSpaces:`Wszystkie przestrzenie`,enabled:{title:`Status`,values:{enabled:`Włączona`,disabled:`Wyłączona`,all:`Wszystkie`}},category:{title:`Kategoria`,placeholder:`Wybierz kategorie`},space:{title:`Przestrzeń`,placeholder:`Wszystkie przestrzenie`}},fields:{name:`Nazwa`,category:`Kategoria`,space:`Przestrzeń`,enabled:`Włączona`,actions:`Akcje`,unknownSpace:`Nieznana przestrzeń`,wholeHome:`Cały dom`,lastTriggered:`Ostatnio uruchomiona`,neverTriggered:`Nigdy`,search:{placeholder:`Szukaj scen...`},config:{executionTimeoutMs:{title:`Limit czasu wykonania (ms)`,alertTitle:`Limit czasu wykonania`,hint:`Maksymalny czas dozwolony na wykonanie sceny zanim zostanie uznana za nieudaną. Po osiągnięciu limitu pozostałe akcje mogą zostać anulowane w zależności od obsługi błędów.`,validation:{range:`Limit czasu wykonania musi wynosić od 1000 do 300000 ms`}},maxConcurrentExecutions:{title:`Maks. równoczesnych wykonań`,alertTitle:`Maks. równoczesnych wykonań`,hint:`Ogranicza liczbę wykonań scen, które mogą działać jednocześnie. Pomaga zapobiegać przeciążeniu, gdy sceny są uruchamiane wielokrotnie lub równolegle.`,validation:{range:`Maks. równoczesnych wykonań musi wynosić od 1 do 100`}},continueOnActionFailure:{title:`Kontynuuj przy błędzie akcji`,alertTitle:`Kontynuuj przy błędzie akcji`,hint:`Po włączeniu scena będzie kontynuować wykonywanie pozostałych akcji nawet jeśli jedna z nich się nie powiedzie. Po wyłączeniu scena zatrzyma się natychmiast przy pierwszym błędzie.`}}},texts:{loadingScenes:`Ładowanie scen...`,noScenes:`Nie masz skonfigurowanych żadnych scen`,noFilteredScenes:`Żadne sceny nie pasują do filtrów`,confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,confirmBulkRemove:`Czy na pewno chcesz usunąć {count} wybranych scen?`,confirmBulkEnable:`Czy na pewno chcesz włączyć {count} wybranych scen?`,confirmBulkDisable:`Czy na pewno chcesz wyłączyć {count} wybranych scen?`,actionsCount:`Brak akcji | {count} akcja | {count} akcji`,lastTriggered:`Ostatnio uruchomiona`,order:`#`},edit:{sections:{general:{title:`Ogólne`,hint:`<strong>Sceny to ręczne presety</strong>, które stosują wiele akcji urządzeń jednocześnie. Nigdy nie uruchamiają się automatycznie i nie mają warunków.`},actions:{title:`Akcje`,emptyTitle:`Nie dodano jeszcze żadnych akcji`,emptyDescription:`Dodaj jedną lub więcej akcji urządzenia, które zostaną wykonane po aktywacji tej sceny.`,helperText:`Możesz sterować oświetleniem, przełącznikami, urządzeniami klimatycznymi i innymi.`}}},form:{space:`Przestrzeń`,selectSpace:`Cały dom`,spaceGroups:{rooms:`Pokoje`,zones:`Strefy`},name:`Nazwa sceny`,namePlaceholder:`Wprowadź nazwę sceny`,nameRequired:`Nazwa sceny jest wymagana`,category:`Kategoria`,categoryRequired:`Kategoria jest wymagana`,description:`Opis`,descriptionPlaceholder:`Opcjonalny opis tej sceny`,actionsSection:`Akcje sceny`,noActions:`Nie zdefiniowano akcji. Dodaj akcje, aby sterować urządzeniami po uruchomieniu tej sceny.`,actionsRequired:`Wymagana jest co najmniej jedna akcja`,actionNumber:`Akcja {number}`,device:`Urządzenie`,selectDevice:`Wybierz urządzenie`,deviceRequired:`Urządzenie jest wymagane`,actionDeviceRequired:`Akcja {number}: Urządzenie jest wymagane`,channel:`Kanał`,selectChannel:`Wybierz kanał`,actionChannelRequired:`Akcja {number}: Kanał jest wymagany`,property:`Właściwość`,selectProperty:`Wybierz właściwość`,propertyRequired:`Właściwość jest wymagana`,actionPropertyRequired:`Akcja {number}: Właściwość jest wymagana`,value:`Wartość`,valuePlaceholder:`Wprowadź wartość`,valueRequired:`Wartość jest wymagana`,actionValueRequired:`Akcja {number}: Wartość jest wymagana`,addAction:`Dodaj akcję`,editAction:`Edytuj akcję`},buttons:{add:{title:`Dodaj scenę`},delete:{title:`Usuń`},cancel:{title:`Anuluj`},save:{title:`Zapisz`},yes:{title:`Tak`},no:{title:`Nie`},close:{title:`Zamknij`},discard:{title:`Odrzuć`},backToList:{title:`Powrót do listy`},resetFilters:{title:`Resetuj filtry`}},messages:{config:{edited:`Konfiguracja modułu scen została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji modułu scen`},triggered:`Scena "{name}" została pomyślnie uruchomiona`,triggerFailed:`Nie udało się uruchomić sceny`,confirmDelete:`Czy na pewno chcesz usunąć scenę "{name}"?`,deleted:`Scena została pomyślnie usunięta`,deleteFailed:`Nie udało się usunąć sceny`,created:`Scena została pomyślnie utworzona`,createFailed:`Nie udało się utworzyć sceny`,edited:`Scena "{scene}" została pomyślnie zaktualizowana`,editFailed:`Nie udało się zaktualizować sceny "{scene}"`,notFound:`Scena nie znaleziona`,duplicateAction:`Akcja dla tej właściwości już istnieje w tej scenie`,addFormPlaceholder:`Formularz dodawania sceny zostanie zaimplementowany tutaj`,editFormPlaceholder:`Formularz edycji sceny zostanie zaimplementowany tutaj`,requestError:`Wystąpił błąd podczas przetwarzania żądania`,bulkRemoved:`Pomyślnie usunięto {count} scen`,bulkRemoveFailed:`Nie udało się usunąć {count} scen`,bulkEnabled:`Pomyślnie włączono {count} scen`,bulkEnableFailed:`Nie udało się włączyć {count} scen`,bulkEnableCanceled:`Operacja włączania została anulowana`,bulkDisabled:`Pomyślnie wyłączono {count} scen`,bulkDisableFailed:`Nie udało się wyłączyć {count} scen`,bulkDisableCanceled:`Operacja wyłączania została anulowana`},categories:{generic:`Ogólna`,lighting:`Oświetlenie`,climate:`Klimat`,media:`Media`,work:`Praca`,relax:`Relaks`,night:`Noc`,morning:`Poranek`,party:`Impreza`,movie:`Film`,away:`Poza domem`,home:`Dom`,security:`Bezpieczeństwo`,energy:`Energia`,custom:`Niestandardowa`}}},_u={scenes:{menu:{title:`Scény`},headings:{list:`Scény`,add:`Pridať scénu`,edit:`Upraviť scénu`,delete:`Odstrániť scénu`,discard:`Zahodiť zmeny`,adjustFilters:`Upraviť filtre`,bulkRemove:`Odstrániť scény`,bulkEnable:`Povoliť scény`,bulkDisable:`Zakázať scény`},subHeadings:{list:`Spravujte automatizačné scény pre vašu inteligentnú domácnosť`,adjustFilters:`Filtrovať scény podľa rôznych kritérií`},breadcrumbs:{scenes:`Scény`},filters:{allSpaces:`Všetky priestory`,enabled:{title:`Stav`,values:{enabled:`Povolené`,disabled:`Zakázané`,all:`Všetky`}},category:{title:`Kategória`,placeholder:`Vyberte kategórie`},space:{title:`Priestor`,placeholder:`Všetky priestory`}},fields:{name:`Názov`,category:`Kategória`,space:`Priestor`,enabled:`Povolené`,actions:`Akcie`,unknownSpace:`Neznámy priestor`,wholeHome:`Celý dom`,lastTriggered:`Naposledy spustené`,neverTriggered:`Nikdy`,search:{placeholder:`Vyhľadať scény...`},config:{executionTimeoutMs:{title:`Časový limit vykonávania (ms)`,alertTitle:`Časový limit vykonávania`,hint:`Maximálny čas povolený na vykonanie scény pred tým, ako je považovaná za neúspešnú. Ak sa dosiahne časový limit, zostávajúce akcie môžu byť zrušené v závislosti od nastavenia spracovania chýb.`,validation:{range:`Časový limit vykonávania musí byť medzi 1000 a 300000 ms`}},maxConcurrentExecutions:{title:`Maximálny počet súbežných vykonaní`,alertTitle:`Maximálny počet súbežných vykonaní`,hint:`Obmedzuje počet vykonaní scén, ktoré môžu bežať súčasne. Pomáha predchádzať preťaženiu pri opakovanom alebo paralelnom spúšťaní scén.`,validation:{range:`Maximálny počet súbežných vykonaní musí byť medzi 1 a 100`}},continueOnActionFailure:{title:`Pokračovať pri zlyhaní akcie`,alertTitle:`Pokračovať pri zlyhaní akcie`,hint:`Keď je povolené, scéna bude pokračovať vo vykonávaní zostávajúcich akcií aj keď jedna akcia zlyhá. Keď je zakázané, scéna sa okamžite zastaví pri prvom zlyhaní.`}}},texts:{loadingScenes:`Načítavanie scén...`,noScenes:`Nemáte nakonfigurovanú žiadnu scénu`,noFilteredScenes:`Žiadne scény nezodpovedajú vašim filtrom`,confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,confirmBulkRemove:`Naozaj chcete odstrániť {count} vybraných scén?`,confirmBulkEnable:`Naozaj chcete povoliť {count} vybraných scén?`,confirmBulkDisable:`Naozaj chcete zakázať {count} vybraných scén?`,actionsCount:`Žiadne akcie | {count} akcia | {count} akcií`,lastTriggered:`Naposledy spustené`,order:`#`},edit:{sections:{general:{title:`Všeobecné`,hint:`<strong>Scény sú manuálne predvoľby</strong>, ktoré aplikujú viacero akcií zariadení naraz. Nikdy sa nespúšťajú automaticky a nemajú žiadne podmienky.`},actions:{title:`Akcie`,emptyTitle:`Zatiaľ neboli pridané žiadne akcie`,emptyDescription:`Pridajte jednu alebo viac akcií zariadení, ktoré sa vykonajú pri aktivácii tejto scény.`,helperText:`Môžete ovládať svetlá, prepínače, klimatizačné zariadenia a ďalšie.`}}},form:{space:`Priestor`,selectSpace:`Celý dom`,spaceGroups:{rooms:`Miestnosti`,zones:`Zóny`},name:`Názov scény`,namePlaceholder:`Zadajte názov scény`,nameRequired:`Názov scény je povinný`,category:`Kategória`,categoryRequired:`Kategória je povinná`,description:`Popis`,descriptionPlaceholder:`Voliteľný popis pre túto scénu`,actionsSection:`Akcie scény`,noActions:`Nie sú definované žiadne akcie. Pridajte akcie na ovládanie zariadení pri spustení tejto scény.`,actionsRequired:`Je vyžadovaná aspoň jedna akcia`,actionNumber:`Akcia {number}`,device:`Zariadenie`,selectDevice:`Vyberte zariadenie`,deviceRequired:`Zariadenie je povinné`,actionDeviceRequired:`Akcia {number}: Zariadenie je povinné`,channel:`Kanál`,selectChannel:`Vyberte kanál`,actionChannelRequired:`Akcia {number}: Kanál je povinný`,property:`Vlastnosť`,selectProperty:`Vyberte vlastnosť`,propertyRequired:`Vlastnosť je povinná`,actionPropertyRequired:`Akcia {number}: Vlastnosť je povinná`,value:`Hodnota`,valuePlaceholder:`Zadajte hodnotu`,valueRequired:`Hodnota je povinná`,actionValueRequired:`Akcia {number}: Hodnota je povinná`,addAction:`Pridať akciu`,editAction:`Upraviť akciu`},buttons:{add:{title:`Pridať scénu`},delete:{title:`Odstrániť`},cancel:{title:`Zrušiť`},save:{title:`Uložiť`},yes:{title:`Áno`},no:{title:`Nie`},close:{title:`Zavrieť`},discard:{title:`Zahodiť`},backToList:{title:`Späť na zoznam`},resetFilters:{title:`Resetovať filtre`}},messages:{config:{edited:`Konfigurácia modulu scén bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu modulu scén`},triggered:`Scéna "{name}" bola úspešne spustená`,triggerFailed:`Nepodarilo sa spustiť scénu`,confirmDelete:`Naozaj chcete odstrániť scénu "{name}"?`,deleted:`Scéna bola úspešne odstránená`,deleteFailed:`Nepodarilo sa odstrániť scénu`,created:`Scéna bola úspešne vytvorená`,createFailed:`Nepodarilo sa vytvoriť scénu`,edited:`Scéna "{scene}" bola úspešne aktualizovaná`,editFailed:`Nepodarilo sa aktualizovať scénu "{scene}"`,notFound:`Scéna nebola nájdená`,duplicateAction:`Akcia pre túto vlastnosť už v tejto scéne existuje`,addFormPlaceholder:`Formulár na pridanie scény bude implementovaný tu`,editFormPlaceholder:`Formulár na úpravu scény bude implementovaný tu`,requestError:`Pri spracovaní vašej požiadavky sa vyskytla chyba`,bulkRemoved:`Úspešne odstránených {count} scén`,bulkRemoveFailed:`Nepodarilo sa odstrániť {count} scén`,bulkEnabled:`Úspešne povolených {count} scén`,bulkEnableFailed:`Nepodarilo sa povoliť {count} scén`,bulkEnableCanceled:`Operácia povolenia bola zrušená`,bulkDisabled:`Úspešne zakázaných {count} scén`,bulkDisableFailed:`Nepodarilo sa zakázať {count} scén`,bulkDisableCanceled:`Operácia zakázania bola zrušená`},categories:{generic:`Všeobecné`,lighting:`Osvetlenie`,climate:`Klíma`,media:`Médiá`,work:`Práca`,relax:`Relax`,night:`Noc`,morning:`Ráno`,party:`Párty`,movie:`Film`,away:`Preč`,home:`Doma`,security:`Bezpečnosť`,energy:`Energia`,custom:`Vlastné`}}},vu={"cs-CZ":fu,"de-DE":pu,"en-US":mu,"es-ES":hu,"pl-PL":gu,"sk-SK":_u},yu=[{path:`scenes`,name:da.SCENES,component:()=>Et(()=>import(`./view-scenes-DoDkd08z.js`),__vite__mapDeps([50,1,2,3,4,5,51,52,47,39,40,53,54,55,56,34,41,21,32,22,57,58,59,60,61,24,10])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:()=>Jt.global.t(`scenes.menu.title`),icon:`mdi:play-box-multiple`,menu:5e3},children:[{path:`add`,name:da.SCENES_ADD,component:()=>Et(()=>import(`./view-scene-add-CT1MOXtu.js`),__vite__mapDeps([62,1,2,3,4,5,58,54,55,47,56,34,59])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]}}},{path:`:id`,name:da.SCENES_EDIT,component:()=>Et(()=>import(`./view-scene-edit-4B1IzMuu.js`),__vite__mapDeps([63,1,2,3,4,5,60,54,55,47,56,34,61])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]}}}]}],bu=Y().uuid(),xu=q({id:bu,draft:R().default(!1),type:Y().trim().nonempty(),scene:bu,configuration:je(Y(),et()).default({}),order:G().int().min(0).default(0),enabled:R().default(!0),createdAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().default(()=>new Date),updatedAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)}).catchall(et());q({fetching:q({items:H(bu).default([]),item:H(bu)}),creating:H(bu),updating:H(bu),deleting:H(bu)}),q({id:bu,type:Y().trim().nonempty(),data:_e({}).catchall(et())}),q({id:bu,data:q({type:Y().trim().nonempty(),scene:bu,configuration:je(Y(),et()).default({}),order:G().int().min(0).default(0),enabled:R().default(!0)}).catchall(et())}),q({id:bu.optional(),sceneId:bu.optional()}),q({id:bu,sceneId:bu}),q({sceneId:bu});var Su=q({id:bu.optional().default(()=>ft()),sceneId:bu,draft:R().optional().default(!1),data:q({type:Y().trim().nonempty(),configuration:je(Y(),et()).default({}),order:G().int().min(0).optional().default(0),enabled:R().optional().default(!0)}).catchall(et())}),Cu=q({id:bu,sceneId:bu,data:q({type:Y().trim().nonempty(),configuration:je(Y(),et()).optional(),order:G().int().min(0).optional(),enabled:R().optional()}).catchall(et())});q({id:bu,sceneId:bu}),q({id:bu,sceneId:bu});var wu=q({id:Y().uuid().optional(),type:Y().trim().nonempty(),configuration:je(Y(),et()).optional(),order:G().int().min(0).optional(),enabled:R().optional()}).catchall(et()),Tu=q({type:Y().trim().nonempty(),configuration:je(Y(),et()).optional(),order:G().int().min(0).optional(),enabled:R().optional()}).catchall(et()),Eu=q({id:Y().uuid(),type:Y(),configuration:je(Y(),et()).optional().default({}),order:G(),enabled:R(),scene:Y().uuid(),created_at:Y(),updated_at:Y().nullable().optional()}).catchall(et()),Du=e=>{let t=Eu.safeParse(e);if(!t.success)throw console.error(`Schema validation failed with:`,t.error),Error(`Failed to validate scene action response data`);let n=Ct(e),r=xu.safeParse({...n,draft:!1});if(!r.success)throw console.error(`Schema validation failed with:`,r.error),Error(`Failed to transform scene action response data`);return r.data},Ou=()=>({fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]}),ku=it(`scenes_module-scenes_actions`,()=>{let e=fn(),t=Ke(),n=N(Ou()),r=N([]),i=N({}),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.scene===e).sort((e,t)=>e.order-t.order),u=e=>i.value[e]??null,d={},f={},p=e=>m({id:e.id,data:Du(e.data)}),m=e=>{if(e.id&&i.value&&e.id in i.value){let n=xu.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new pa(`Failed to insert scene action.`);return i.value[n.data.id]=n.data}let n=xu.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new pa(`Failed to insert scene action.`);return i.value=i.value??{},i.value[n.data.id]=n.data},h=e=>{if(i.value){if(e.sceneId!==void 0){let t=l(e.sceneId);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 ca(`You have to provide at least scene or action 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 _a(`Already fetching scene action.`);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${te}/${ya}/scenes/{sceneId}/actions/{id}`,{params:{path:{sceneId:t.sceneId,id:t.id}}});if(n!==void 0){let e=Du(n.data);return i.value[e.id]=e,e}let o=`Failed to fetch scene action.`;throw r&&typeof r==`object`&&r&&`message`in r&&(o=String(r.message)),new _a(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,findForScene:l,findById:u,onEvent:p,set:m,unset:h,get:g,fetch:async t=>{let a=f[t.sceneId];if(t.sceneId&&a)return a;let o=(async()=>{if(n.value.fetching.items.includes(t.sceneId))throw new _a(`Already fetching actions.`);n.value.fetching.items.push(t.sceneId),r.value=r.value.filter(e=>e!==t.sceneId),r.value=[...new Set(r.value)];try{let{data:n,error:a,response:o}=await e.client.GET(`/${te}/${ya}/scenes/{sceneId}/actions`,{params:{path:{sceneId:t.sceneId}}});if(n!==void 0){r.value.push(t.sceneId),r.value=[...new Set(r.value)];let e=Object.fromEntries(n.data.map(e=>{let t=Du(e);return[t.id,t]}));return i.value={...i.value,...e},l(t.sceneId)}let s=`Failed to fetch scene actions.`;throw a&&typeof a==`object`&&a&&`message`in a&&(s=String(a.message)),new _a(s,o.status)}finally{n.value.fetching.items=n.value.fetching.items.filter(e=>e!==t.sceneId)}})();f[t.sceneId]=o;try{return await o}finally{delete f[t.sceneId]}},add:async r=>{let a=Su.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new pa(`Failed to add action.`);let o=xu.safeParse({...r.data,id:a.data.id,scene:a.data.sceneId,draft:a.data.draft,createdAt:new Date});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new pa(`Failed to add scene action.`);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(`/${te}/${ya}/scenes/{sceneId}/actions`,{params:{path:{sceneId:r.sceneId}},body:{data:Nu(o.data)}});if(t!==void 0){let e=Du(t.data);return e.id!==o.data.id&&delete i.value[o.data.id],i.value[e.id]=e,e}delete i.value[o.data.id];let s=`Failed to create scene action.`;throw n&&typeof n==`object`&&n&&`message`in n&&(s=String(n.message)),new _a(s,a.status)}finally{n.value.creating=n.value.creating.filter(e=>e!==o.data.id)}},edit:async r=>{if(n.value.updating.includes(r.id))throw new ca(`Action is already being updated.`);if(!(r.id in i.value))throw new ca(`Failed to get scene action data to update.`);let a=Cu.safeParse(r);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new pa(`Failed to edit scene action.`);let o=xu.safeParse({...i.value[r.id],...(0,Ka.omitBy)(r.data,Ka.isUndefined)});if(!o.success)throw t.error(`Schema validation failed with:`,o.error),new pa(`Failed to edit scene action.`);if(n.value.updating.push(r.id),i.value[o.data.id]=o.data,o.data.draft)return n.value.updating=n.value.updating.filter(e=>e!==o.data.id),o.data;try{let{data:t,error:n,response:a}=await e.client.PATCH(`/${te}/${ya}/scenes/{sceneId}/actions/{id}`,{params:{path:{sceneId:r.sceneId,id:r.id}},body:{data:Pu(o.data)}});if(t!==void 0){let e=Du(t.data);return i.value[e.id]=e,e}await g({id:r.id,sceneId:r.sceneId});let s=`Failed to update scene action.`;throw n&&typeof n==`object`&&n&&`message`in n&&(s=String(n.message)),new _a(s,a.status)}finally{n.value.updating=n.value.updating.filter(e=>e!==r.id)}},save:async r=>{if(n.value.updating.includes(r.id))throw new ca(`Action is already being saved.`);if(!(r.id in i.value))throw new ca(`Failed to get scene action data to save.`);let a=xu.safeParse(i.value[r.id]);if(!a.success)throw t.error(`Schema validation failed with:`,a.error),new pa(`Failed to save scene action.`);n.value.updating.push(r.id);try{let{data:t,error:n,response:o}=await e.client.POST(`/${te}/${ya}/scenes/{sceneId}/actions`,{params:{path:{sceneId:a.data.scene}},body:{data:Nu(a.data)}});if(t!==void 0){let e=Du(t.data);return e.id!==r.id&&h({sceneId:a.data.scene,id:r.id}),i.value[e.id]=e,e}let s=`Failed to create scene action.`;throw n&&typeof n==`object`&&n&&`message`in n&&(s=String(n.message)),new _a(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 ca(`Action 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(`/${te}/${ya}/scenes/{sceneId}/actions/{id}`,{params:{path:{sceneId:t.sceneId,id:t.id}}});if(r.status===204)return!0;await g({id:t.id,sceneId:t.sceneId});let i=`Remove action failed.`;throw n&&typeof n==`object`&&n&&`message`in n&&(i=String(n.message)),new _a(i,r.status)}finally{n.value.deleting=n.value.deleting.filter(e=>e!==t.id)}return!0}}}),Au=e=>ku(e),ju=new Set([`id`,`draft`,`scene`,`createdAt`,`updatedAt`]),Mu=e=>e.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`),Nu=e=>{let t={};for(let[n,r]of Object.entries(e))!ju.has(n)&&![`type`,`configuration`,`order`,`enabled`].includes(n)&&(t[Mu(n)]=r);let n=wu.safeParse({id:e.id,type:e.type,configuration:e.configuration,order:e.order,enabled:e.enabled,...t});if(!n.success)throw new pa(`Failed to transform scene action create request.`);return n.data},Pu=e=>{let t={};for(let[n,r]of Object.entries(e))!ju.has(n)&&![`type`,`configuration`,`order`,`enabled`].includes(n)&&(t[Mu(n)]=r);let n=Tu.safeParse({type:e.type,configuration:e.configuration,order:e.order,enabled:e.enabled,...t});if(!n.success)throw new pa(`Failed to transform scene action update request.`);return n.data},Fu=q({id:bu,draft:R().default(!1),primarySpaceId:bu.nullable().default(null),category:K(sa).default(sa.GENERIC),name:Y().trim().nonempty(),description:Y().trim().nullable().default(null),order:G().int().min(0).default(0),enabled:R().default(!0),triggerable:R().default(!0),editable:R().default(!0),lastTriggeredAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).nullable().default(null),createdAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});q({fetching:q({items:R().default(!1),item:H(bu)}),creating:H(bu),updating:H(bu),deleting:H(bu),triggering:H(bu)}),q({id:bu,data:_e({})}),q({id:bu,data:q({primarySpaceId:bu.nullable(),category:K(sa).default(sa.GENERIC),name:Y().trim().nonempty(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().int().min(0).optional(),enabled:R(),triggerable:R(),editable:R(),lastTriggeredAt:Oe().nullable().optional()}).catchall(et())}),q({id:bu}),q({id:bu});var Iu=q({id:bu.optional().default(()=>ft()),draft:R().optional().default(!1),data:q({primarySpaceId:bu.nullable().optional(),category:K(sa).default(sa.GENERIC),name:Y().trim().nonempty(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().int().min(0).optional(),enabled:R().optional()}).catchall(et())}),Lu=q({id:bu,data:q({primarySpaceId:bu.nullable().optional(),name:Y().trim().optional(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().int().min(0).optional(),enabled:R().optional()}).catchall(et())});q({id:bu}),q({id:bu}),q({id:bu,source:Y().optional(),context:je(Y(),et()).optional()});var Ru=q({id:Y().uuid().optional(),primary_space_id:Y().uuid().nullable().optional(),category:K(sa).optional(),name:Y().trim().nonempty(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().int().min(0).optional(),enabled:R().optional(),triggerable:R().optional()}),zu=q({primary_space_id:Y().uuid().nullable().optional(),category:K(sa).optional(),name:Y().trim().nonempty().optional(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().int().min(0).optional(),enabled:R().optional(),triggerable:R().optional()});q({id:Y().uuid(),primary_space_id:Y().uuid().nullable(),category:K(sa),name:Y().trim().nonempty(),description:Y().trim().nullable(),order:G().int().min(0),enabled:R(),triggerable:R(),editable:R(),last_triggered_at:Y().nullable(),created_at:Y(),updated_at:Y().nullable(),actions:H(Eu)}),q({source:Y().optional(),context:je(Y(),et()).optional()}),q({scene_id:Y().uuid(),status:Fe([`pending`,`running`,`completed`,`failed`,`partially_completed`]),triggered_by:Y().nullable(),triggered_at:Y(),completed_at:Y().nullable(),total_actions:G(),successful_actions:G(),failed_actions:G(),action_results:H(q({action_id:Y().uuid(),success:R(),error:Y().nullable().optional(),execution_time_ms:G()})),error:Y().nullable()});var Bu=(e,t)=>{let n=Ct(e),r=t.safeParse(n);if(!r.success)throw Ut.error(`Schema validation failed with:`,r.error),new pa(`Failed to validate received scene data.`);return r.data},Vu=(e,t)=>{let n=t.safeParse(zt(e));if(!n.success)throw Ut.error(`Schema validation failed with:`,n.error),new pa(`Failed to validate create scene request.`);return n.data},Hu=(e,t)=>{let n=t.safeParse(zt(e));if(!n.success)throw Ut.error(`Schema validation failed with:`,n.error),new pa(`Failed to validate update scene request.`);return n.data},Uu=()=>({fetching:{items:!1,item:[]},creating:[],updating:[],deleting:[],triggering:[]}),Wu=it(`scenes_module-scenes`,()=>{let e=fn(),t=ku(),n=Ke(),{sendCommand:r}=$t(),i=N(Uu()),a=N(!1),o=N(new Map),s=()=>a.value,c=e=>i.value.fetching.item.includes(e),l=()=>i.value.fetching.items,u=()=>Array.from(o.value.values()),d=e=>o.value.get(e)??null,f=e=>Array.from(o.value.values()).filter(t=>t.primarySpaceId===e),p={},m={},h=e=>g({id:e.id,data:Bu(e.data,Fu)}),g=e=>{let t=o.value.get(e.id);if(t){let r=Fu.safeParse({...t,...e.data});if(!r.success)throw n.error(`Schema validation failed with:`,r.error),new pa(`Failed to insert scene.`);return o.value.set(r.data.id,r.data),r.data}let r=Fu.safeParse({...e.data,id:e.id});if(!r.success)throw n.error(`Schema validation failed with:`,r.error),new pa(`Failed to insert scene.`);return o.value.set(r.data.id,r.data),r.data},_=e=>{o.value.delete(e.id)};return{data:o,semaphore:i,firstLoad:a,firstLoadFinished:s,getting:c,fetching:l,findAll:u,findById:d,findBySpace:f,onEvent:h,set:g,unset:_,get:async r=>{let a=p[r.id];if(a)return a;let s=(async()=>{if(i.value.fetching.item.includes(r.id))throw new _a(`Already fetching scene.`);i.value.fetching.item.push(r.id);let a=o.value.get(r.id);try{let i=(await e.client.GET(`/${te}/${ya}/scenes/{id}`,{params:{path:{id:r.id}}})).data;if(i===void 0)throw new _a(`Received unexpected response.`);let a=i.data,o=Bu(a,Fu),s=g({id:o.id,data:o});if(a.actions&&Array.isArray(a.actions))for(let e of a.actions)try{let n=Du(e);t.set({id:n.id,data:n})}catch(e){n.error(`Failed to transform scene action:`,e)}return s}catch(e){if(a)return a;throw new _a(`Failed to get scene.`,null,e)}finally{i.value.fetching.item=i.value.fetching.item.filter(e=>e!==r.id)}})();p[r.id]=s;try{return await s}finally{delete p[r.id]}},fetch:async()=>{let r=m.all;if(r)return r;let o=(async()=>{if(i.value.fetching.items)throw new _a(`Already fetching scenes.`);i.value.fetching.items=!0;try{let r=(await e.client.GET(`/${te}/${ya}/scenes`,{})).data;if(r===void 0)throw new _a(`Received unexpected response.`);let i=[];for(let e of r.data){let r=Bu(e,Fu);if(g({id:r.id,data:r}),i.push(r),e.actions&&Array.isArray(e.actions))for(let r of e.actions)try{let e=Du(r);t.set({id:e.id,data:e})}catch(e){n.error(`Failed to transform scene action:`,e)}}return a.value=!0,i}catch(e){throw new _a(`Failed to fetch scenes.`,null,e)}finally{i.value.fetching.items=!1}})();m.all=o;try{return await o}finally{delete m.all}},add:async t=>{let r=Iu.safeParse(t);if(!r.success)throw n.error(`Schema validation failed with:`,r.error),new pa(`Failed to add scene.`);let{id:a,draft:o,data:s}=r.data,c=g({id:a,data:{...s,id:a,draft:o,primarySpaceId:s.primarySpaceId??null,enabled:s.enabled??!0,triggerable:!0,editable:!0,lastTriggeredAt:null,createdAt:new Date,updatedAt:null}});if(o)return c;i.value.creating.push(a);try{let t=Vu(s,Ru),n=(await e.client.POST(`/${te}/${ya}/scenes`,{body:{data:t}})).data;if(n===void 0)throw new _a(`Received unexpected response.`);let r=Bu(n.data,Fu);return r.id!==a&&_({id:a}),c=g({id:r.id,data:r}),c}catch(e){throw _({id:a}),new _a(`Failed to create scene.`,null,e)}finally{i.value.creating=i.value.creating.filter(e=>e!==a)}},edit:async t=>{let r=Lu.safeParse(t);if(!r.success)throw n.error(`Schema validation failed with:`,r.error),new pa(`Failed to edit scene.`);let{id:a,data:s}=r.data,c=o.value.get(a);if(!c)throw new _a(`Scene not found.`);let l=g({id:a,data:{...c,...s}});if(c.draft)return l;i.value.updating.push(a);try{let t=Hu(s,zu),n=(await e.client.PATCH(`/${te}/${ya}/scenes/{id}`,{params:{path:{id:a}},body:{data:t}})).data;if(n===void 0)throw new _a(`Received unexpected response.`);let r=Bu(n.data,Fu);return l=g({id:r.id,data:r}),l}catch(e){throw g({id:a,data:c}),new _a(`Failed to update scene.`,null,e)}finally{i.value.updating=i.value.updating.filter(e=>e!==a)}},save:async t=>{let n=o.value.get(t.id);if(!n)throw new _a(`Scene not found.`);if(!n.draft)throw new _a(`Scene is not a draft.`);i.value.creating.push(t.id);try{let r=Vu(n,Ru),i=(await e.client.POST(`/${te}/${ya}/scenes`,{body:{data:r}})).data;if(i===void 0)throw new _a(`Received unexpected response.`);let a=Bu(i.data,Fu);return a.id!==t.id&&_({id:t.id}),g({id:a.id,data:a})}catch(e){throw new _a(`Failed to save scene.`,null,e)}finally{i.value.creating=i.value.creating.filter(e=>e!==t.id)}},remove:async t=>{let n=o.value.get(t.id);if(n){if(n.draft){_({id:t.id});return}i.value.deleting.push(t.id);try{if((await e.client.DELETE(`/modules/scenes/scenes/{id}`,{params:{path:{id:t.id}}})).error!==void 0)throw new _a(`Received unexpected response.`);_({id:t.id})}catch(e){throw new _a(`Failed to remove scene.`,null,e)}finally{i.value.deleting=i.value.deleting.filter(e=>e!==t.id)}}},trigger:async e=>{let n=o.value.get(e.id);if(!n)throw new _a(`Scene not found.`);if(!n.triggerable)throw new _a(`Scene is not triggerable.`);i.value.triggering.push(e.id);try{let i=await r(ua.TRIGGER_SCENE,{sceneId:e.id},la.TRIGGER_SCENE);if(i!==!0)throw new _a(typeof i==`string`?i:`Failed to trigger scene.`);g({id:e.id,data:{...n,lastTriggeredAt:new Date}});let a=t.findForScene(e.id);return{scene_id:e.id,status:`completed`,triggered_at:new Date().toISOString(),completed_at:new Date().toISOString(),triggered_by:e.source||`websocket`,total_actions:a.length,successful_actions:a.length,failed_actions:0,action_results:[],error:null}}catch(e){throw new _a(`Failed to trigger scene.`,null,e)}finally{i.value.triggering=i.value.triggering.filter(t=>t!==e.id)}}}}),Gu=e=>Wu(e),Ku=Symbol(`FB-Module-Scenes`),qu={install:(e,t)=>{let n=Ye(e),r=Re(e),i=Ie(e);for(let[e,n]of Object.entries(vu)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),n);t.i18n.global.setLocaleMessage(e,r)}let a=Gu(t.store),o=Au(t.store);e.provide(Kr,a),n.addStore(Kr,a),e.provide(Gr,o),n.addStore(Gr,o),i.addModule(Ku,{type:oa,name:`Scenes`,description:`Manage automation scenes for your smart home.`,elements:[{type:on,components:{moduleConfigEditForm:aa},schemas:{moduleConfigSchema:uu,moduleConfigEditFormSchema:lu,moduleConfigUpdateReqSchema:du},modules:[pn]}],modules:[pn],isCore:!0}),t.router.getRoutes().find(e=>e.name===O.ROOT)&&yu.forEach(e=>{t.router.addRoute(O.ROOT,e)}),r.on(`event`,e=>{if(e?.event?.startsWith(`ScenesModule.`)&&!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case ha.SCENE_CREATED:case ha.SCENE_UPDATED:try{a.onEvent({id:e.payload.id,data:e.payload})}catch(t){console.warn(`Failed to process ${e.event} event:`,t)}break;case ha.SCENE_TRIGGERED:{let t=a.findById(e.payload.id);t&&a.set({id:e.payload.id,data:{...t,lastTriggeredAt:new Date}})}break;case ha.SCENE_DELETED:a.unset({id:e.payload.id});break;default:break}})}},Ju=`security-module`,Yu=Symbol(`FB-Module-Security`),Xu={install:(e,t)=>{Ie(e).addModule(Yu,{type:Ju,name:`Security`,description:`Security monitoring with armed state, alarm state, and active alerts management`,elements:[],isCore:!0})}},Zu={menu:{title:`Přehled`},meta:{stats:{title:`Přehled aplikace`}},breadcrumbs:{stats:`přehled`},headings:{stats:`Přehled aplikace`,systemInformation:`Systémové informace`,applicationOverview:`Smart Panel`,quickLinks:`Rychlé odkazy`,cpu:`CPU`,memory:`Paměť`,uptime:`Doba běhu`,logs:`Logy`,dashboard:`Stránky Smart Panelu`,devices:`Připojená zařízení`,devicesCommunication:`Aktualizace dnes`,spaces:`Prostory Smart Panelu`},subHeadings:{stats:`Systémové statistiky Smart panelu`},fields:{systemInformation:{timezone:{title:`Časové pásmo`},operatingSystem:{title:`OS`},hostname:{title:`Hostname`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Cesta ke konfiguraci`,tooltip:`Cesta ke konfiguračnímu souboru:`}},applicationOverview:{version:{title:`Verze`},apip95:{title:`API p95 (5m)`,tooltip:`95. percentil doby odezvy API (posledních 5 minut). Ukazuje, jak rychle je zpracováno 95 % API požadavků.`},webSocket:{title:`WebSocket`,tooltip:`Dostupnost 5m: {wsAvailability5m} (aktualizováno {last})`,state:{connected:`Připojeno`,disconnected:`Odpojeno`}}},cpu:{temperature:{title:`Teplota {temperature} {unit}`}},memory:{total:{title:`z {total} {unit}`}},uptime:{process:{title:`Proces {uptime}`}},spaces:{rooms:`{count} místností`,zones:`{count} zón`}},texts:{updated:`Aktualizováno {time}`,noLogs:`Nebyly zaznamenány žádné aplikační logy.`,noFilteredLogs:`Nebyly nalezeny žádné aplikační logy odpovídající aktivním kritériím filtru`},buttons:{copy:{title:`Kopírovat`},spaces:{title:`Prostory`},pages:{title:`Stránky`},devices:{title:`Zařízení`},config:{title:`Konfigurace`},docs:{title:`Dokumentace`},resetFilters:{title:`Resetovat filtry`}}},Qu={menu:{title:`Übersicht`},meta:{stats:{title:`Anwendungsübersicht`}},breadcrumbs:{stats:`Übersicht`},headings:{stats:`Anwendungsübersicht`,systemInformation:`Systeminformationen`,applicationOverview:`Smart Panel`,quickLinks:`Schnellzugriff`,cpu:`CPU`,memory:`Speicher`,uptime:`Betriebszeit`,logs:`Protokolle`,dashboard:`Smart Panel Seiten`,devices:`Verbundene Geräte`,devicesCommunication:`Updates heute`,spaces:`Smart Panel Räume`},subHeadings:{stats:`Smart Panel Systemstatistiken`},fields:{systemInformation:{timezone:{title:`Zeitzone`},operatingSystem:{title:`Betriebssystem`},hostname:{title:`Hostname`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Konfigurationspfad`,tooltip:`Konfigurationsdateipfad:`}},applicationOverview:{version:{title:`Version`},apip95:{title:`API p95 (5m)`,tooltip:`95. Perzentil der API-Antwortzeit (letzte 5 Minuten). Zeigt, wie schnell 95 % der API-Anfragen bearbeitet werden.`},webSocket:{title:`WebSocket`,tooltip:`Verfügb. 5m: {wsAvailability5m} (aktualisiert {last})`,state:{connected:`Verbunden`,disconnected:`Getrennt`}}},cpu:{temperature:{title:`Temp {temperature} {unit}`}},memory:{total:{title:`von {total} {unit}`}},uptime:{process:{title:`Prozess {uptime}`}},spaces:{rooms:`{count} Räume`,zones:`{count} Zonen`}},texts:{updated:`Aktualisiert {time}`,noLogs:`Es wurden keine Anwendungsprotokolle aufgezeichnet.`,noFilteredLogs:`Keine Anwendungsprotokolle gefunden, die den aktiven Filterkriterien entsprechen`},buttons:{copy:{title:`Kopieren`},spaces:{title:`Räume`},pages:{title:`Seiten`},devices:{title:`Geräte`},config:{title:`Konfiguration`},docs:{title:`Doku`},resetFilters:{title:`Filter zurücksetzen`}}},$u={menu:{title:`Overview`},meta:{stats:{title:`Application overview`}},breadcrumbs:{stats:`overview`},headings:{stats:`Application overview`,systemInformation:`System Information`,applicationOverview:`Smart Panel`,quickLinks:`Quick Links`,cpu:`CPU`,memory:`Memory`,uptime:`Uptime`,logs:`Logs`,dashboard:`Smart Panel Pages`,devices:`Connected devices`,devicesCommunication:`Updates today`,spaces:`Smart Panel Spaces`},subHeadings:{stats:`Smart panel system statistics`},fields:{systemInformation:{timezone:{title:`Timezone`},operatingSystem:{title:`OS`},hostname:{title:`Hostname`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Config path`,tooltip:`Config file path:`}},applicationOverview:{version:{title:`Version`},apip95:{title:`API p95 (5m)`,tooltip:`95th percentile API response time (last 5 minutes). Shows how fast 95% of API requests are.`},webSocket:{title:`WebSocket`,tooltip:`Avail 5m: {wsAvailability5m} (updated {last})`,state:{connected:`Connected`,disconnected:`Disconnected`}}},cpu:{temperature:{title:`Temp {temperature} {unit}`}},memory:{total:{title:`of {total} {unit}`}},uptime:{process:{title:`Process {uptime}`}},spaces:{rooms:`{count} rooms`,zones:`{count} zones`}},texts:{updated:`Updated {time}`,noLogs:`No any application logs were recorded.`,noFilteredLogs:`No any application logs found matching the active filter criteria`},buttons:{copy:{title:`Copy`},spaces:{title:`Spaces`},pages:{title:`Pages`},devices:{title:`Devices`},config:{title:`Config`},docs:{title:`Docs`},resetFilters:{title:`Reset filters`}}},ed={menu:{title:`Resumen`},meta:{stats:{title:`Resumen de la aplicación`}},breadcrumbs:{stats:`resumen`},headings:{stats:`Resumen de la aplicación`,systemInformation:`Información del sistema`,applicationOverview:`Smart Panel`,quickLinks:`Accesos rápidos`,cpu:`CPU`,memory:`Memoria`,uptime:`Tiempo activo`,logs:`Registros`,dashboard:`Páginas del Smart Panel`,devices:`Dispositivos conectados`,devicesCommunication:`Actualizaciones hoy`,spaces:`Espacios del Smart Panel`},subHeadings:{stats:`Estadísticas del sistema del panel inteligente`},fields:{systemInformation:{timezone:{title:`Zona horaria`},operatingSystem:{title:`SO`},hostname:{title:`Nombre de host`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Ruta de configuración`,tooltip:`Ruta del archivo de configuración:`}},applicationOverview:{version:{title:`Versión`},apip95:{title:`API p95 (5m)`,tooltip:`Tiempo de respuesta API en el percentil 95 (últimos 5 minutos). Muestra la velocidad del 95% de las solicitudes API.`},webSocket:{title:`WebSocket`,tooltip:`Disp. 5m: {wsAvailability5m} (actualizado {last})`,state:{connected:`Conectado`,disconnected:`Desconectado`}}},cpu:{temperature:{title:`Temp {temperature} {unit}`}},memory:{total:{title:`de {total} {unit}`}},uptime:{process:{title:`Proceso {uptime}`}},spaces:{rooms:`{count} habitaciones`,zones:`{count} zonas`}},texts:{updated:`Actualizado {time}`,noLogs:`No se han registrado registros de la aplicación.`,noFilteredLogs:`No se encontraron registros de la aplicación que coincidan con los criterios de filtro activos`},buttons:{copy:{title:`Copiar`},spaces:{title:`Espacios`},pages:{title:`Páginas`},devices:{title:`Dispositivos`},config:{title:`Configuración`},docs:{title:`Docs`},resetFilters:{title:`Restablecer filtros`}}},td={menu:{title:`Przegląd`},meta:{stats:{title:`Przegląd aplikacji`}},breadcrumbs:{stats:`przegląd`},headings:{stats:`Przegląd aplikacji`,systemInformation:`Informacje o systemie`,applicationOverview:`Smart Panel`,quickLinks:`Szybkie łącza`,cpu:`CPU`,memory:`Pamięć`,uptime:`Czas pracy`,logs:`Logi`,dashboard:`Strony Smart Panel`,devices:`Podłączone urządzenia`,devicesCommunication:`Aktualizacje dziś`,spaces:`Przestrzenie Smart Panel`},subHeadings:{stats:`Statystyki systemu smart panelu`},fields:{systemInformation:{timezone:{title:`Strefa czasowa`},operatingSystem:{title:`System operacyjny`},hostname:{title:`Nazwa hosta`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Ścieżka konfiguracji`,tooltip:`Ścieżka pliku konfiguracji:`}},applicationOverview:{version:{title:`Wersja`},apip95:{title:`API p95 (5m)`,tooltip:`95. percentyl czasu odpowiedzi API (ostatnie 5 minut). Pokazuje, jak szybko obsługiwanych jest 95% żądań API.`},webSocket:{title:`WebSocket`,tooltip:`Dostępność 5m: {wsAvailability5m} (zaktualizowano {last})`,state:{connected:`Połączony`,disconnected:`Rozłączony`}}},cpu:{temperature:{title:`Temp. {temperature} {unit}`}},memory:{total:{title:`z {total} {unit}`}},uptime:{process:{title:`Proces {uptime}`}},spaces:{rooms:`{count} pokoi`,zones:`{count} stref`}},texts:{updated:`Zaktualizowano {time}`,noLogs:`Nie zarejestrowano żadnych logów aplikacji.`,noFilteredLogs:`Nie znaleziono logów aplikacji pasujących do aktywnych kryteriów filtra`},buttons:{copy:{title:`Kopiuj`},spaces:{title:`Przestrzenie`},pages:{title:`Strony`},devices:{title:`Urządzenia`},config:{title:`Konfiguracja`},docs:{title:`Dokumentacja`},resetFilters:{title:`Resetuj filtry`}}},nd={menu:{title:`Prehľad`},meta:{stats:{title:`Prehľad aplikácie`}},breadcrumbs:{stats:`prehľad`},headings:{stats:`Prehľad aplikácie`,systemInformation:`Systémové informácie`,applicationOverview:`Smart Panel`,quickLinks:`Rýchle odkazy`,cpu:`CPU`,memory:`Pamäť`,uptime:`Doba behu`,logs:`Logy`,dashboard:`Stránky Smart Panelu`,devices:`Pripojené zariadenia`,devicesCommunication:`Aktualizácie dnes`,spaces:`Priestory Smart Panelu`},subHeadings:{stats:`Štatistiky systému smart panelu`},fields:{systemInformation:{timezone:{title:`Časové pásmo`},operatingSystem:{title:`OS`},hostname:{title:`Hostname`},ipv4:{title:`IPv4`},ipv6:{title:`IPv6`},configPath:{title:`Cesta ku konfigurácii`,tooltip:`Cesta ku konfiguračnému súboru:`}},applicationOverview:{version:{title:`Verzia`},apip95:{title:`API p95 (5m)`,tooltip:`95. percentil odozvy API (posledných 5 minút). Zobrazuje, ako rýchlo je obslúžených 95% API požiadaviek.`},webSocket:{title:`WebSocket`,tooltip:`Dostupnosť 5m: {wsAvailability5m} (aktualizované {last})`,state:{connected:`Pripojený`,disconnected:`Odpojený`}}},cpu:{temperature:{title:`Teplota {temperature} {unit}`}},memory:{total:{title:`z {total} {unit}`}},uptime:{process:{title:`Proces {uptime}`}},spaces:{rooms:`{count} miestností`,zones:`{count} zón`}},texts:{updated:`Aktualizované {time}`,noLogs:`Neboli zaznamenané žiadne aplikačné logy.`,noFilteredLogs:`Neboli nájdené žiadne aplikačné logy zodpovedajúce aktívnym filtrom`},buttons:{copy:{title:`Kopírovať`},spaces:{title:`Priestory`},pages:{title:`Stránky`},devices:{title:`Zariadenia`},config:{title:`Konfigurácia`},docs:{title:`Dokumentácia`},resetFilters:{title:`Resetovať filtre`}}},rd={"cs-CZ":Zu,"de-DE":Qu,"en-US":$u,"es-ES":ed,"pl-PL":td,"sk-SK":nd},id=[{path:`stats`,name:Ei.STATS,component:()=>Et(()=>import(`./view-stats-F8sYkha0.js`),__vite__mapDeps([64,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,86,51,52,47,39,40,87,88,89,90,91,92,55,93,94,10])),props:!0,meta:{guards:[`authenticated`],title:()=>Jt.global.t(`statsModule.menu.title`),icon:`mdi:monitor-dashboard`,menu:15e3}}],ad=q({"api-module":q({reqPerMin:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"websocket-module":q({clientsNow:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"system-module":q({cpuLoad1m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:q({value:G().nullable(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:q({value:G().nullable(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"dashboard-module":q({registeredPages:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"devices-module":q({registeredDevices:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional()});q({getting:R()}),q({data:_e({})}),q({data:q({"api-module":q({reqPerMin:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),errorRate5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),p95Ms5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"websocket-module":q({clientsNow:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),availability5m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"system-module":q({cpuLoad1m:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),memUsedPct:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),diskUsedPct:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),systemUptimeSec:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),processUptimeSec:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureCpu:q({value:G().nullable(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),temperatureGpu:q({value:G().nullable(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"dashboard-module":q({registeredPages:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredTiles:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredDataSources:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional(),"devices-module":q({registeredDevices:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),registeredChannels:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesPerMin:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),updatesToday:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))}),onlineNow:q({value:G(),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e))})}).optional()})});var od=q({value:G().nullable(),last_updated:Y().datetime({offset:!0})}),sd=je(Y(),od);q({"websocket-module":sd.optional(),"system-module":sd.optional(),"api-module":sd.optional(),"dashboard-module":sd.optional(),"devices-module":sd.optional()}).catchall(sd);var cd=e=>typeof e==`object`&&!!e&&`error`in e&&e.error===!0,ld=e=>{let t={};for(let[n,r]of Object.entries(e))cd(r)||(t[n]=r);return t},ud=e=>{let t=ld(Ct(e)),n=ad.safeParse(t);if(!n.success)throw Ut.error(`Schema validation failed with:`,n.error),new Hi(`Failed to validate received stats data.`);return n.data},dd={getting:!1},fd=it(`stats_module-stats`,()=>{let e=fn(),t=Ke(),n=N(dd),r=N(!1),i=N(null),a=()=>r.value,o=()=>n.value.getting,s=null,c=e=>l({data:ud(e.data)}),l=e=>{let n=ad.safeParse(e.data);if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new Hi(`Failed to insert stats.`);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 Ji(`Already getting stats.`);n.value.getting=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${te}/${Oi}/stats`);if(t!==void 0)return i.value=ud(t.data),i.value;let a=`Failed to fetch stats.`;throw n&&(a=Gt(n,a)),new Ji(a,r.status)}finally{n.value.getting=!1}})();s=t;try{return await t}finally{s=null}}}}),pd=e=>fd(e),md=Symbol(`FB-Module-Stats`),hd={install:(e,t)=>{let n=Ye(e),r=Re(e),i=Ce(e),a=Ie(e);for(let[e,n]of Object.entries(rd)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{statsModule:n});t.i18n.global.setLocaleMessage(e,r)}let o=pd(t.store);e.provide(Yi,o),n.addStore(Yi,o),t.router.getRoutes().find(e=>e.name===O.ROOT)&&id.forEach(e=>{t.router.addRoute(O.ROOT,e)}),a.addModule(md,{type:zi,name:`Statistics`,description:`See how your system is performing and track key metrics over time.`,elements:[]}),r.on(`event`,e=>{if(e?.event?.startsWith(`StatsModule.`)&&typeof e.payload==`object`)switch(e.event){case Ri.STATS_INFO:o.onEvent({data:e.payload});break;default:i.warn(`Unhandled stats module event:`,e.event)}})}},gd=`buddy-claude-plugin`,_d=[`claude-opus-4-6`,`claude-sonnet-4-6`,`claude-haiku-4-5`,`claude-sonnet-4-5`,`claude-opus-4-5`],vd={class:`text-xs text-gray-500 mt-1`},yd={class:`text-xs text-gray-500 mt-1`},bd=f({name:`ClaudeConfigForm`,__name:`claude-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`buddyClaudePlugin.messages.config.edited`),error:o(`buddyClaudePlugin.messages.config.notEdited`)}}),p=_d,g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`buddyClaudePlugin.headings.aboutApiSettings`),description:h(o)(`buddyClaudePlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`buddyClaudePlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyClaudePlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(c).apiKey,"onUpdate:modelValue":t[1]||=e=>h(c).apiKey=e,placeholder:h(o)(`buddyClaudePlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,vd,k(h(o)(`buddyClaudePlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyClaudePlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(X),{modelValue:h(c).model,"onUpdate:modelValue":t[2]||=e=>h(c).model=e,placeholder:h(o)(`buddyClaudePlugin.fields.config.model.placeholder`),filterable:``,"allow-create":``,"default-first-option":``,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(h(p),e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),D(`div`,yd,k(h(o)(`buddyClaudePlugin.fields.config.model.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),xd={headings:{aboutApiSettings:`Nastavení Claude API`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj Anthropic API klíč`,description:`Získejte svůj API klíč na console.anthropic.com`},model:{title:`Model`,placeholder:`např. claude-sonnet-4-20250514`,description:`Model Claude používaný pro generování odpovědí`}}},messages:{config:{edited:`Nastavení Claude bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Claude`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení Anthropic Claude API. Pro použití modelů Claude jako poskytovatele LLM potřebujete platný API klíč.`}},Sd={headings:{aboutApiSettings:`Claude API-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren Anthropic API-Schlüssel ein`,description:`Holen Sie sich Ihren API-Schlüssel von console.anthropic.com`},model:{title:`Modell`,placeholder:`z.B. claude-sonnet-4-20250514`,description:`Das Claude-Modell, das für die Generierung von Antworten verwendet wird`}}},messages:{config:{edited:`Claude-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Claude-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre Anthropic Claude API-Einstellungen. Sie benötigen einen gültigen API-Schlüssel, um Claude-Modelle als Buddy-LLM-Anbieter zu verwenden.`}},Cd={headings:{aboutApiSettings:`Claude API settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your Anthropic API key`,description:`Get your API key from console.anthropic.com`},model:{title:`Model`,placeholder:`e.g., claude-sonnet-4-20250514`,description:`The Claude model to use for generating responses`}}},messages:{config:{edited:`Claude settings have been updated`,notEdited:`Failed to update Claude settings`}},texts:{aboutApiSettings:`Configure your Anthropic Claude API settings. You need a valid API key to use Claude models as the buddy LLM provider.`}},wd={headings:{aboutApiSettings:`Configuración de la API de Claude`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de Anthropic`,description:`Obtenga su clave API en console.anthropic.com`},model:{title:`Modelo`,placeholder:`p. ej., claude-sonnet-4-20250514`,description:`El modelo de Claude a utilizar para generar respuestas`}}},messages:{config:{edited:`La configuración de Claude ha sido actualizada`,notEdited:`Error al actualizar la configuración de Claude`}},texts:{aboutApiSettings:`Configure los ajustes de la API de Anthropic Claude. Necesita una clave API válida para utilizar los modelos de Claude como proveedor LLM del asistente.`}},Td={headings:{aboutApiSettings:`Ustawienia API Claude`},fields:{config:{enabled:{title:`Wlaczony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadz klucz API Anthropic`,description:`Pobierz klucz API z console.anthropic.com`},model:{title:`Model`,placeholder:`np. claude-sonnet-4-20250514`,description:`Model Claude uzywany do generowania odpowiedzi`}}},messages:{config:{edited:`Ustawienia Claude zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien Claude`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia API Anthropic Claude. Potrzebujesz prawidlowego klucza API, aby uzyc modeli Claude jako dostawcy LLM buddy.`}},Ed={headings:{aboutApiSettings:`Nastavenia API Claude`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč Anthropic`,description:`Získajte svoj API kľúč z console.anthropic.com`},model:{title:`Model`,placeholder:`napr. claude-sonnet-4-20250514`,description:`Model Claude použitý na generovanie odpovedí`}}},messages:{config:{edited:`Nastavenia Claude boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Claude`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia API Anthropic Claude. Na používanie modelov Claude ako poskytovateľa LLM buddy potrebujete platný API kľúč.`}},Dd={"cs-CZ":xd,"de-DE":Sd,"en-US":Cd,"es-ES":wd,"pl-PL":Td,"sk-SK":Ed},Od=Tt.extend({apiKey:Y().nullable(),model:Y().nullable()}),kd=Lt.extend({apiKey:Y().trim().nullable(),model:Y().trim().nullable()}),Ad=Wt.and(q({type:Z(gd),api_key:Y().trim().nullable().optional(),model:Y().trim().nullable().optional()}));Qt.and(q({type:Z(gd),api_key:Y().trim().nullable(),model:Y().trim().nullable()}));var jd=Symbol(`FB-Plugin-BuddyClaude`),Md={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Dd)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyClaudePlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(jd,{type:gd,source:`com.fastybird.smart-panel.plugin.buddy-claude`,name:`Claude`,description:`LLM provider plugin for Buddy module using Anthropic Claude API`,links:{documentation:`https://docs.anthropic.com`,devDocumentation:`https://docs.anthropic.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:bd},schemas:{pluginConfigSchema:kd,pluginConfigEditFormSchema:Od,pluginConfigUpdateReqSchema:Ad},modules:[pn]}],modules:[pn],isCore:!0})}},Nd=`buddy-claude-setup-token-plugin`,Pd={class:`text-xs text-gray-500 mt-1`},Fd=f({name:`ClaudeSetupTokenConfigForm`,__name:`claude-setup-token-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`buddyClaudeSetupTokenPlugin.messages.config.edited`),error:o(`buddyClaudeSetupTokenPlugin.messages.config.notEdited`)}}),p=_d,g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`buddyClaudeSetupTokenPlugin.headings.aboutApiSettings`),closable:!1},{default:d(()=>[v(k(h(o)(`buddyClaudeSetupTokenPlugin.texts.aboutApiSettings`)),1)]),_:1},8,[`title`]),F(h(V),{label:h(o)(`buddyClaudeSetupTokenPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyClaudeSetupTokenPlugin.fields.config.accessToken.title`),prop:`accessToken`},{default:d(()=>[F(h(W),{modelValue:h(c).accessToken,"onUpdate:modelValue":t[1]||=e=>h(c).accessToken=e,placeholder:h(o)(`buddyClaudeSetupTokenPlugin.fields.config.accessToken.placeholder`),name:`accessToken`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(L),{type:`info`,closable:!1,"show-icon":``,class:`mb-2!`},{default:d(()=>[v(k(h(o)(`buddyClaudeSetupTokenPlugin.fields.config.accessToken.howTo`))+` `,1),t[3]||=D(`code`,{class:`font-bold`},`claude setup-token`,-1),v(` `+k(h(o)(`buddyClaudeSetupTokenPlugin.fields.config.accessToken.howToSuffix`))+` `,1),t[4]||=D(`br`,null,null,-1),v(` `+k(h(o)(`buddyClaudeSetupTokenPlugin.fields.config.accessToken.machineNote`)),1)]),_:1}),F(h(V),{label:h(o)(`buddyClaudeSetupTokenPlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(X),{modelValue:h(c).model,"onUpdate:modelValue":t[2]||=e=>h(c).model=e,placeholder:h(o)(`buddyClaudeSetupTokenPlugin.fields.config.model.placeholder`),filterable:``,"allow-create":``,"default-first-option":``,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(h(p),e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),D(`div`,Pd,k(h(o)(`buddyClaudeSetupTokenPlugin.fields.config.model.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Id={headings:{aboutApiSettings:`Nastavení tokenu pro nastavení Claude`},fields:{config:{enabled:{title:`Povoleno`},accessToken:{title:`Token pro nastavení`,placeholder:`Vložte svůj token pro nastavení zde`,howTo:`Spusťte`,howToSuffix:`ve svém terminálu a vložte vygenerovaný token sem.`,machineNote:`Příkaz lze spustit na jakémkoli počítači s nainstalovaným Claude CLI — nemusí to být stejný počítač, na kterém běží backend Smart Panelu.`},model:{title:`Model`,placeholder:`např. claude-sonnet-4-20250514`,description:`Model Claude používaný pro generování odpovědí`}}},messages:{config:{edited:`Nastavení tokenu pro nastavení Claude bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení tokenu pro nastavení Claude`}},texts:{aboutApiSettings:`Nakonfigurujte připojení k Anthropic Claude pomocí tokenu pro nastavení. Token pro nastavení autentizuje Smart Panel s vaším předplatným Claude — není vyžadován API klíč.`}},Ld={headings:{aboutApiSettings:`Claude Setup-Token-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},accessToken:{title:`Setup-Token`,placeholder:`Fügen Sie hier Ihren Setup-Token ein`,howTo:`Ausführen`,howToSuffix:`in Ihrem Terminal und fügen Sie den generierten Token hier ein.`,machineNote:`Der Befehl kann auf jedem Computer mit installierter Claude CLI ausgeführt werden — es muss nicht derselbe Computer sein, auf dem das Smart Panel Backend läuft.`},model:{title:`Modell`,placeholder:`z.B. claude-sonnet-4-20250514`,description:`Das Claude-Modell, das für die Generierung von Antworten verwendet wird`}}},messages:{config:{edited:`Claude Setup-Token-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Claude Setup-Token-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre Anthropic Claude-Verbindung mit einem Setup-Token. Der Setup-Token authentifiziert das Smart Panel bei Ihrem Claude-Abonnement — kein API-Schlüssel erforderlich.`}},Rd={headings:{aboutApiSettings:`Claude setup token settings`},fields:{config:{enabled:{title:`Enabled`},accessToken:{title:`Setup token`,placeholder:`Paste your setup token here`,howTo:`Run`,howToSuffix:`in your terminal and paste the generated token here.`,machineNote:`The command can be run on any machine with the Claude CLI installed — it does not need to be the same machine running the Smart Panel backend.`},model:{title:`Model`,placeholder:`e.g., claude-sonnet-4-20250514`,description:`The Claude model to use for generating responses`}}},messages:{config:{edited:`Claude setup token settings have been updated`,notEdited:`Failed to update Claude setup token settings`}},texts:{aboutApiSettings:`Configure your Anthropic Claude connection using a setup token. The setup token authenticates the Smart Panel with your Claude subscription — no API key required.`}},zd={headings:{aboutApiSettings:`Configuración del token de configuración de Claude`},fields:{config:{enabled:{title:`Habilitado`},accessToken:{title:`Token de configuración`,placeholder:`Pegue su token de configuración aquí`,howTo:`Ejecute`,howToSuffix:`en su terminal y pegue el token generado aquí.`,machineNote:`El comando se puede ejecutar en cualquier máquina con la CLI de Claude instalada; no es necesario que sea la misma máquina que ejecuta el backend de Smart Panel.`},model:{title:`Modelo`,placeholder:`p. ej., claude-sonnet-4-20250514`,description:`El modelo de Claude a utilizar para generar respuestas`}}},messages:{config:{edited:`La configuración del token de configuración de Claude ha sido actualizada`,notEdited:`Error al actualizar la configuración del token de configuración de Claude`}},texts:{aboutApiSettings:`Configure su conexión con Anthropic Claude mediante un token de configuración. El token de configuración autentica el Smart Panel con su suscripción a Claude, sin necesidad de clave API.`}},Bd={headings:{aboutApiSettings:`Ustawienia tokenu konfiguracji Claude`},fields:{config:{enabled:{title:`Wlaczony`},accessToken:{title:`Token konfiguracji`,placeholder:`Wklej swoj token konfiguracji tutaj`,howTo:`Uruchom`,howToSuffix:`w terminalu i wklej wygenerowany token tutaj.`,machineNote:`Polecenie mozna uruchomic na dowolnej maszynie z zainstalowanym Claude CLI - nie musi to byc ta sama maszyna, na ktorej dziala backend Smart Panel.`},model:{title:`Model`,placeholder:`np. claude-sonnet-4-20250514`,description:`Model Claude uzywany do generowania odpowiedzi`}}},messages:{config:{edited:`Ustawienia tokenu konfiguracji Claude zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien tokenu konfiguracji Claude`}},texts:{aboutApiSettings:`Skonfiguruj polaczenie z Anthropic Claude za pomoca tokenu konfiguracji. Token konfiguracji uwierzytelnia Smart Panel z Twoja subskrypcja Claude - klucz API nie jest wymagany.`}},Vd={headings:{aboutApiSettings:`Nastavenia setup tokenu Claude`},fields:{config:{enabled:{title:`Povolený`},accessToken:{title:`Setup token`,placeholder:`Vložte sem svoj setup token`,howTo:`Spustite`,howToSuffix:`vo svojom termináli a vložte vygenerovaný token sem.`,machineNote:`Príkaz je možné spustiť na akomkoľvek zariadení s nainštalovaným Claude CLI — nemusí to byť ten istý stroj, na ktorom beží Smart Panel backend.`},model:{title:`Model`,placeholder:`napr. claude-sonnet-4-20250514`,description:`Model Claude použitý na generovanie odpovedí`}}},messages:{config:{edited:`Nastavenia setup tokenu Claude boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia setup tokenu Claude`}},texts:{aboutApiSettings:`Nakonfigurujte pripojenie k Anthropic Claude pomocou setup tokenu. Setup token autentifikuje Smart Panel s vaším predplatným Claude — nie je potrebný API kľúč.`}},Hd={"cs-CZ":Id,"de-DE":Ld,"en-US":Rd,"es-ES":zd,"pl-PL":Bd,"sk-SK":Vd},Ud=Tt.extend({accessToken:Y().nullable(),model:Y().nullable()}),Wd=Lt.extend({accessToken:Y().trim().nullable(),model:Y().trim().nullable()}),Gd=Wt.and(q({type:Z(Nd),access_token:Y().trim().nullable().optional(),model:Y().trim().nullable().optional()}));Qt.and(q({type:Z(Nd),access_token:Y().trim().nullable(),model:Y().trim().nullable()}));var Kd=Symbol(`FB-Plugin-BuddyClaudeSetupToken`),qd={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Hd)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyClaudeSetupTokenPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Kd,{type:Nd,source:`com.fastybird.smart-panel.plugin.buddy-claude-setup-token`,name:`Claude Setup Token`,description:`LLM provider plugin for Buddy module using Anthropic Claude with setup-token authentication`,links:{documentation:`https://docs.anthropic.com`,devDocumentation:`https://docs.anthropic.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Fd},schemas:{pluginConfigSchema:Wd,pluginConfigEditFormSchema:Ud,pluginConfigUpdateReqSchema:Gd},modules:[pn]}],modules:[pn],isCore:!0})}},Jd=`buddy-discord-plugin`,Yd={class:`text-xs text-gray-500 mt-1`},Xd={class:`text-xs text-gray-500 mt-1`},Zd={class:`text-xs text-gray-500 mt-1`},Qd={class:`w-full`},$d={class:`text-xs text-gray-500 mt-1`},ef={class:`text-xs text-gray-500 mt-1`},tf=f({name:`DiscordConfigForm`,__name:`discord-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`buddyDiscordPlugin.messages.config.edited`),error:o(`buddyDiscordPlugin.messages.config.notEdited`)}}),{spaces:p,fetchSpaces:g}=Wr(),_=y([]),x=()=>{let e=[];try{let t=JSON.parse(c.spaceChannelMappings||`{}`);for(let[n,r]of Object.entries(t))e.push({spaceId:n,channelId:r})}catch{}_.splice(0,_.length,...e)},S=()=>{let e={};for(let t of _)t.spaceId&&t.channelId&&(e[t.spaceId]=t.channelId);c.spaceChannelMappings=Object.keys(e).length>0?JSON.stringify(e):null},C=e=>{let t=_.filter((t,n)=>n!==e).map(e=>e.spaceId).filter(Boolean);return p.value.filter(e=>!t.includes(e.id))},w=()=>{_.push({spaceId:``,channelId:``})},O=e=>{_.splice(e,1),S()};x(),g(),m(_,S,{deep:!0});let ee=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields(),x()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:ee,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`buddyDiscordPlugin.headings.aboutDiscordSettings`),description:h(o)(`buddyDiscordPlugin.texts.aboutDiscordSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.botToken.title`),prop:`botToken`},{default:d(()=>[F(h(W),{modelValue:h(c).botToken,"onUpdate:modelValue":t[1]||=e=>h(c).botToken=e,placeholder:h(o)(`buddyDiscordPlugin.fields.config.botToken.placeholder`),name:`botToken`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,Yd,k(h(o)(`buddyDiscordPlugin.fields.config.botToken.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.guildId.title`),prop:`guildId`},{default:d(()=>[F(h(W),{modelValue:h(c).guildId,"onUpdate:modelValue":t[2]||=e=>h(c).guildId=e,placeholder:h(o)(`buddyDiscordPlugin.fields.config.guildId.placeholder`),name:`guildId`},null,8,[`modelValue`,`placeholder`]),D(`div`,Xd,k(h(o)(`buddyDiscordPlugin.fields.config.guildId.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.generalChannelId.title`),prop:`generalChannelId`},{default:d(()=>[F(h(W),{modelValue:h(c).generalChannelId,"onUpdate:modelValue":t[3]||=e=>h(c).generalChannelId=e,placeholder:h(o)(`buddyDiscordPlugin.fields.config.generalChannelId.placeholder`),name:`generalChannelId`},null,8,[`modelValue`,`placeholder`]),D(`div`,Zd,k(h(o)(`buddyDiscordPlugin.fields.config.generalChannelId.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.spaceChannelMappings.title`),prop:`spaceChannelMappings`},{default:d(()=>[D(`div`,Qd,[(i(!0),P(A,null,a(_,(e,t)=>(i(),P(`div`,{key:t,class:`flex items-center gap-2 mb-2`},[F(h(X),{modelValue:e.spaceId,"onUpdate:modelValue":t=>e.spaceId=t,placeholder:h(o)(`buddyDiscordPlugin.fields.config.spaceChannelMappings.selectSpace`),filterable:``,class:`flex-1`},{default:d(()=>[(i(!0),P(A,null,a(C(t),e=>(i(),T(h(J),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),F(h(W),{modelValue:e.channelId,"onUpdate:modelValue":t=>e.channelId=t,placeholder:h(o)(`buddyDiscordPlugin.fields.config.spaceChannelMappings.channelPlaceholder`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),F(h(E),{type:`danger`,plain:``,onClick:e=>O(t)},{icon:d(()=>[F(h(ne),{icon:`mdi:trash`})]),_:1},8,[`onClick`])]))),128)),F(h(E),{type:`primary`,plain:``,size:`small`,onClick:w},{default:d(()=>[v(k(h(o)(`buddyDiscordPlugin.fields.config.spaceChannelMappings.add`)),1)]),_:1}),D(`div`,$d,k(h(o)(`buddyDiscordPlugin.fields.config.spaceChannelMappings.description`)),1)])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyDiscordPlugin.fields.config.allowedRoleId.title`),prop:`allowedRoleId`},{default:d(()=>[F(h(W),{modelValue:h(c).allowedRoleId,"onUpdate:modelValue":t[4]||=e=>h(c).allowedRoleId=e,placeholder:h(o)(`buddyDiscordPlugin.fields.config.allowedRoleId.placeholder`),name:`allowedRoleId`},null,8,[`modelValue`,`placeholder`]),D(`div`,ef,k(h(o)(`buddyDiscordPlugin.fields.config.allowedRoleId.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),nf={headings:{aboutDiscordSettings:`Nastavení Discord bota`},fields:{config:{enabled:{title:`Povoleno`},botToken:{title:`Token bota`,placeholder:`Zadejte svůj Discord bot token`,description:`Získejte svůj bot token z Discord Developer Portal v nastavení Bot vaší aplikace.`},guildId:{title:`ID serveru (guild)`,placeholder:`např. 123456789012345678`,description:`ID Discord serveru. Povolte režim vývojáře v nastavení Discordu, poté klikněte pravým tlačítkem na server pro zkopírování jeho ID.`},generalChannelId:{title:`ID obecného kanálu`,placeholder:`např. 123456789012345678`,description:`Výchozí kanál pro dotazy napříč prostory a nesměrované návrhy. Klikněte pravým tlačítkem na kanál pro zkopírování jeho ID.`},spaceChannelMappings:{title:`Mapování prostor-kanál`,selectSpace:`Vyberte prostor`,channelPlaceholder:`ID Discord kanálu`,add:`Přidat mapování`,description:`Mapujte prostory chytré domácnosti na Discord kanály. Zprávy v mapovaném kanálu budou obsahovat kontext daného prostoru.`},allowedRoleId:{title:`ID povolené role`,placeholder:`např. 123456789012345678`,description:`ID Discord role vyžadované pro interakci s botem. Ponechte prázdné pro povolení všem členům serveru.`}}},messages:{config:{edited:`Nastavení Discord bota bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Discord bota`}},texts:{aboutDiscordSettings:`Nakonfigurujte integraci Discord bota. Vytvořte bota na Discord Developer Portal, povolte Message Content Intent a přidejte ho na svůj server. Mapujte Discord kanály na prostory chytré domácnosti pro kontextové konverzace.`}},rf={headings:{aboutDiscordSettings:`Discord-Bot-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},botToken:{title:`Bot-Token`,placeholder:`Geben Sie Ihren Discord-Bot-Token ein`,description:`Holen Sie sich Ihren Bot-Token vom Discord Developer Portal unter den Bot-Einstellungen Ihrer Anwendung.`},guildId:{title:`Guild (Server) ID`,placeholder:`z.B. 123456789012345678`,description:`Die Discord-Server-ID. Aktivieren Sie den Entwicklermodus in den Discord-Einstellungen, dann klicken Sie mit der rechten Maustaste auf den Server, um seine ID zu kopieren.`},generalChannelId:{title:`Allgemeiner Kanal-ID`,placeholder:`z.B. 123456789012345678`,description:`Der Standardkanal für raumübergreifende Anfragen und nicht zugeordnete Vorschläge. Rechtsklicken Sie auf einen Kanal, um seine ID zu kopieren.`},spaceChannelMappings:{title:`Raum-Kanal-Zuordnungen`,selectSpace:`Raum auswählen`,channelPlaceholder:`Discord-Kanal-ID`,add:`Zuordnung hinzufügen`,description:`Ordnen Sie Smart-Home-Räume Discord-Kanälen zu. Nachrichten in einem zugeordneten Kanal enthalten den Kontext dieses Raums.`},allowedRoleId:{title:`Erlaubte Rollen-ID`,placeholder:`z.B. 123456789012345678`,description:`Discord-Rollen-ID, die für die Interaktion mit dem Bot erforderlich ist. Leer lassen, um allen Servermitgliedern den Zugriff zu erlauben.`}}},messages:{config:{edited:`Discord-Bot-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Discord-Bot-Einstellungen fehlgeschlagen`}},texts:{aboutDiscordSettings:`Konfigurieren Sie Ihre Discord-Bot-Integration. Erstellen Sie einen Bot im Discord Developer Portal, aktivieren Sie den Message Content Intent und fügen Sie ihn Ihrem Server hinzu. Ordnen Sie Discord-Kanäle Smart-Home-Räumen zu für kontextbezogene Konversationen.`}},af={headings:{aboutDiscordSettings:`Discord bot settings`},fields:{config:{enabled:{title:`Enabled`},botToken:{title:`Bot token`,placeholder:`Enter your Discord bot token`,description:`Get your bot token from the Discord Developer Portal under your application's Bot settings.`},guildId:{title:`Guild (server) ID`,placeholder:`e.g., 123456789012345678`,description:`The Discord server ID. Enable Developer Mode in Discord settings, then right-click the server to copy its ID.`},generalChannelId:{title:`General channel ID`,placeholder:`e.g., 123456789012345678`,description:`The default channel for cross-space queries and unrouted suggestions. Right-click a channel to copy its ID.`},spaceChannelMappings:{title:`Space-channel mappings`,selectSpace:`Select a space`,channelPlaceholder:`Discord channel ID`,add:`Add mapping`,description:`Map smart home spaces to Discord channels. Messages in a mapped channel will include that space's context.`},allowedRoleId:{title:`Allowed role ID`,placeholder:`e.g., 123456789012345678`,description:`Discord role ID required to interact with the bot. Leave empty to allow all server members.`}}},messages:{config:{edited:`Discord bot settings have been updated`,notEdited:`Failed to update Discord bot settings`}},texts:{aboutDiscordSettings:`Configure your Discord bot integration. Create a bot at the Discord Developer Portal, enable the Message Content Intent, and add it to your server. Map Discord channels to smart home spaces for context-aware conversations.`}},of={headings:{aboutDiscordSettings:`Configuración del bot de Discord`},fields:{config:{enabled:{title:`Habilitado`},botToken:{title:`Token del bot`,placeholder:`Introduzca el token de su bot de Discord`,description:`Obtenga el token de su bot en el Portal de Desarrolladores de Discord, en la configuración de Bot de su aplicación.`},guildId:{title:`ID del servidor (guild)`,placeholder:`p. ej., 123456789012345678`,description:`El ID del servidor de Discord. Active el Modo Desarrollador en la configuración de Discord, luego haga clic derecho en el servidor para copiar su ID.`},generalChannelId:{title:`ID del canal general`,placeholder:`p. ej., 123456789012345678`,description:`El canal predeterminado para consultas entre espacios y sugerencias sin enrutar. Haga clic derecho en un canal para copiar su ID.`},spaceChannelMappings:{title:`Asignaciones de espacio a canal`,selectSpace:`Seleccione un espacio`,channelPlaceholder:`ID del canal de Discord`,add:`Añadir asignación`,description:`Asigne espacios del hogar inteligente a canales de Discord. Los mensajes en un canal asignado incluirán el contexto de ese espacio.`},allowedRoleId:{title:`ID del rol permitido`,placeholder:`p. ej., 123456789012345678`,description:`ID del rol de Discord requerido para interactuar con el bot. Déjelo vacío para permitir a todos los miembros del servidor.`}}},messages:{config:{edited:`La configuración del bot de Discord ha sido actualizada`,notEdited:`Error al actualizar la configuración del bot de Discord`}},texts:{aboutDiscordSettings:`Configure la integración de su bot de Discord. Cree un bot en el Portal de Desarrolladores de Discord, habilite el Message Content Intent y añádalo a su servidor. Asigne canales de Discord a espacios del hogar inteligente para conversaciones con contexto.`}},sf={headings:{aboutDiscordSettings:`Ustawienia bota Discord`},fields:{config:{enabled:{title:`Wlaczony`},botToken:{title:`Token bota`,placeholder:`Wprowadz token bota Discord`,description:`Pobierz token bota z portalu Discord Developer w ustawieniach Bot aplikacji.`},guildId:{title:`ID serwera (guild)`,placeholder:`np. 123456789012345678`,description:`ID serwera Discord. Wlacz tryb deweloperski w ustawieniach Discord, nastepnie kliknij prawym przyciskiem na serwer, aby skopiowac jego ID.`},generalChannelId:{title:`ID kanalu ogolnego`,placeholder:`np. 123456789012345678`,description:`Domyslny kanal dla zapytan miedzy przestrzeniami i nieprzekierowanych sugestii. Kliknij prawym przyciskiem na kanal, aby skopiowac jego ID.`},spaceChannelMappings:{title:`Mapowanie przestrzeni na kanaly`,selectSpace:`Wybierz przestrzen`,channelPlaceholder:`ID kanalu Discord`,add:`Dodaj mapowanie`,description:`Mapuj przestrzenie inteligentnego domu na kanaly Discord. Wiadomosci na zmapowanym kanale beda zawierac kontekst tej przestrzeni.`},allowedRoleId:{title:`ID dozwolonej roli`,placeholder:`np. 123456789012345678`,description:`ID roli Discord wymaganej do interakcji z botem. Pozostaw puste, aby zezwolic wszystkim czlonkom serwera.`}}},messages:{config:{edited:`Ustawienia bota Discord zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien bota Discord`}},texts:{aboutDiscordSettings:`Skonfiguruj integracje z botem Discord. Utworz bota w portalu Discord Developer, wlacz Message Content Intent i dodaj go do swojego serwera. Zmapuj kanaly Discord na przestrzenie inteligentnego domu, aby prowadzic rozmowy uwzgledniajace kontekst.`}},cf={headings:{aboutDiscordSettings:`Nastavenia Discord bota`},fields:{config:{enabled:{title:`Povolený`},botToken:{title:`Token bota`,placeholder:`Zadajte token svojho Discord bota`,description:`Získajte token bota z Discord Developer Portal v nastaveniach Bot vašej aplikácie.`},guildId:{title:`ID guildu (servera)`,placeholder:`napr. 123456789012345678`,description:`ID Discord servera. Povoľte vývojársky režim v nastaveniach Discordu, potom kliknite pravým tlačidlom na server a skopírujte jeho ID.`},generalChannelId:{title:`ID všeobecného kanála`,placeholder:`napr. 123456789012345678`,description:`Predvolený kanál pre medzipriestorové dotazy a nesmerované návrhy. Kliknite pravým tlačidlom na kanál a skopírujte jeho ID.`},spaceChannelMappings:{title:`Mapovanie priestorov na kanály`,selectSpace:`Vyberte priestor`,channelPlaceholder:`ID Discord kanála`,add:`Pridať mapovanie`,description:`Namapujte priestory inteligentnej domácnosti na Discord kanály. Správy v namapovanom kanáli budú obsahovať kontext daného priestoru.`},allowedRoleId:{title:`ID povolenej roly`,placeholder:`napr. 123456789012345678`,description:`ID Discord roly potrebnej na interakciu s botom. Ponechajte prázdne na povolenie všetkých členov servera.`}}},messages:{config:{edited:`Nastavenia Discord bota boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Discord bota`}},texts:{aboutDiscordSettings:`Nakonfigurujte integráciu Discord bota. Vytvorte bota na Discord Developer Portal, povoľte Message Content Intent a pridajte ho na svoj server. Namapujte Discord kanály na priestory inteligentnej domácnosti pre kontextové konverzácie.`}},lf={"cs-CZ":nf,"de-DE":rf,"en-US":af,"es-ES":of,"pl-PL":sf,"sk-SK":cf},uf=Tt.extend({botToken:Y().nullable(),guildId:Y().nullable(),generalChannelId:Y().nullable(),spaceChannelMappings:Y().nullable(),allowedRoleId:Y().nullable()}),df=Lt.extend({botToken:Y().trim().nullable().default(null),guildId:Y().trim().nullable().default(null),generalChannelId:Y().trim().nullable().default(null),spaceChannelMappings:Y().trim().nullable().default(null),allowedRoleId:Y().trim().nullable().default(null)}),ff=Wt.and(q({type:Z(Jd),bot_token:Y().trim().nullable().optional(),guild_id:Y().trim().nullable().optional(),general_channel_id:Y().trim().nullable().optional(),space_channel_mappings:Y().trim().nullable().optional(),allowed_role_id:Y().trim().nullable().optional()})),pf=Symbol(`FB-Plugin-BuddyDiscord`),mf={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(lf)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyDiscordPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(pf,{type:Jd,source:`com.fastybird.smart-panel.plugin.buddy-discord`,name:`Discord`,description:`Discord bot adapter plugin for Buddy module with multi-channel space mapping`,links:{documentation:`https://discord.com/developers/docs`,devDocumentation:`https://discord.com/developers/docs/intro`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:tf},schemas:{pluginConfigSchema:df,pluginConfigEditFormSchema:uf,pluginConfigUpdateReqSchema:ff},modules:[pn]}],modules:[pn],isCore:!0})}},hf=`buddy-elevenlabs-plugin`,gf={class:`text-xs text-gray-500 mt-1`},_f={class:`text-xs text-gray-500 mt-1`},vf=f({name:`ElevenlabsConfigForm`,__name:`elevenlabs-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddyElevenlabsPlugin.messages.config.edited`),error:a(`buddyElevenlabsPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddyElevenlabsPlugin.headings.aboutApiSettings`),description:h(a)(`buddyElevenlabsPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddyElevenlabsPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyElevenlabsPlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(s).apiKey,"onUpdate:modelValue":t[1]||=e=>h(s).apiKey=e,placeholder:h(a)(`buddyElevenlabsPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,gf,k(h(a)(`buddyElevenlabsPlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyElevenlabsPlugin.fields.config.voiceId.title`),prop:`voiceId`},{default:d(()=>[F(h(W),{modelValue:h(s).voiceId,"onUpdate:modelValue":t[2]||=e=>h(s).voiceId=e,placeholder:h(a)(`buddyElevenlabsPlugin.fields.config.voiceId.placeholder`),name:`voiceId`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,_f,k(h(a)(`buddyElevenlabsPlugin.fields.config.voiceId.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),yf={headings:{aboutApiSettings:`Nastavení ElevenLabs API`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj ElevenLabs API klíč`,description:`Získejte svůj API klíč na elevenlabs.io/app/settings/api-keys`},voiceId:{title:`ID hlasu`,placeholder:`např. 21m00Tcm4TlvDq8ikWAM`,description:`ID hlasu ElevenLabs používaného pro syntézu řeči`}}},messages:{config:{edited:`Nastavení ElevenLabs bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení ElevenLabs`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení ElevenLabs API. Pro použití ElevenLabs jako poskytovatele TTS potřebujete platný API klíč a ID hlasu.`}},bf={headings:{aboutApiSettings:`ElevenLabs API-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren ElevenLabs API-Schlüssel ein`,description:`Holen Sie sich Ihren API-Schlüssel von elevenlabs.io/app/settings/api-keys`},voiceId:{title:`Stimmen-ID`,placeholder:`z.B. 21m00Tcm4TlvDq8ikWAM`,description:`Die ElevenLabs Stimmen-ID für die Sprachsynthese`}}},messages:{config:{edited:`ElevenLabs-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der ElevenLabs-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre ElevenLabs API-Einstellungen. Sie benötigen einen gültigen API-Schlüssel und eine Stimmen-ID, um ElevenLabs als Buddy-TTS-Anbieter zu verwenden.`}},xf={headings:{aboutApiSettings:`ElevenLabs API settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your ElevenLabs API key`,description:`Get your API key from elevenlabs.io/app/settings/api-keys`},voiceId:{title:`Voice ID`,placeholder:`e.g., 21m00Tcm4TlvDq8ikWAM`,description:`The ElevenLabs voice ID to use for speech synthesis`}}},messages:{config:{edited:`ElevenLabs settings have been updated`,notEdited:`Failed to update ElevenLabs settings`}},texts:{aboutApiSettings:`Configure your ElevenLabs API settings. You need a valid API key and voice ID to use ElevenLabs as the buddy TTS provider.`}},Sf={headings:{aboutApiSettings:`Configuración de la API de ElevenLabs`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de ElevenLabs`,description:`Obtenga su clave API en elevenlabs.io/app/settings/api-keys`},voiceId:{title:`ID de voz`,placeholder:`p. ej., 21m00Tcm4TlvDq8ikWAM`,description:`El ID de voz de ElevenLabs a utilizar para la síntesis de voz`}}},messages:{config:{edited:`La configuración de ElevenLabs ha sido actualizada`,notEdited:`Error al actualizar la configuración de ElevenLabs`}},texts:{aboutApiSettings:`Configure los ajustes de la API de ElevenLabs. Necesita una clave API válida y un ID de voz para utilizar ElevenLabs como proveedor TTS del asistente.`}},Cf={headings:{aboutApiSettings:`Ustawienia API ElevenLabs`},fields:{config:{enabled:{title:`Wlaczony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadz klucz API ElevenLabs`,description:`Pobierz klucz API z elevenlabs.io/app/settings/api-keys`},voiceId:{title:`ID glosu`,placeholder:`np. 21m00Tcm4TlvDq8ikWAM`,description:`ID glosu ElevenLabs uzywany do syntezy mowy`}}},messages:{config:{edited:`Ustawienia ElevenLabs zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien ElevenLabs`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia API ElevenLabs. Potrzebujesz prawidlowego klucza API i ID glosu, aby uzyc ElevenLabs jako dostawcy TTS buddy.`}},wf={headings:{aboutApiSettings:`Nastavenia API ElevenLabs`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč ElevenLabs`,description:`Získajte svoj API kľúč z elevenlabs.io/app/settings/api-keys`},voiceId:{title:`ID hlasu`,placeholder:`napr. 21m00Tcm4TlvDq8ikWAM`,description:`ID hlasu ElevenLabs použitého na syntézu reči`}}},messages:{config:{edited:`Nastavenia ElevenLabs boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia ElevenLabs`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia API ElevenLabs. Na používanie ElevenLabs ako poskytovateľa TTS buddy potrebujete platný API kľúč a ID hlasu.`}},Tf={"cs-CZ":yf,"de-DE":bf,"en-US":xf,"es-ES":Sf,"pl-PL":Cf,"sk-SK":wf},Ef=Tt.extend({apiKey:Y().nullable(),voiceId:Y().nullable()}),Df=Lt.extend({apiKey:Y().trim().nullable(),voiceId:Y().trim().nullable()}),Of=Wt.and(q({type:Z(hf),api_key:Y().trim().nullable().optional(),voice_id:Y().trim().nullable().optional()}));Qt.and(q({type:Z(hf),api_key:Y().trim().nullable(),voice_id:Y().trim().nullable()}));var kf=Symbol(`FB-Plugin-BuddyElevenlabs`),Af={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Tf)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyElevenlabsPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(kf,{type:hf,source:`com.fastybird.smart-panel.plugin.buddy-elevenlabs`,name:`ElevenLabs`,description:`TTS provider plugin for Buddy module using ElevenLabs API`,links:{documentation:`https://elevenlabs.io/docs`,devDocumentation:`https://elevenlabs.io/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:vf},schemas:{pluginConfigSchema:Df,pluginConfigEditFormSchema:Ef,pluginConfigUpdateReqSchema:Of},modules:[pn]}],modules:[pn],isCore:!0})}},jf=`buddy-ollama-plugin`,Mf={class:`text-xs text-gray-500 mt-1`},Nf={class:`text-xs text-gray-500 mt-1`},Pf=f({name:`OllamaConfigForm`,__name:`ollama-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddyOllamaPlugin.messages.config.edited`),error:a(`buddyOllamaPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddyOllamaPlugin.headings.aboutApiSettings`),description:h(a)(`buddyOllamaPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddyOllamaPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyOllamaPlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(W),{modelValue:h(s).model,"onUpdate:modelValue":t[1]||=e=>h(s).model=e,placeholder:h(a)(`buddyOllamaPlugin.fields.config.model.placeholder`),name:`model`},null,8,[`modelValue`,`placeholder`]),D(`div`,Mf,k(h(a)(`buddyOllamaPlugin.fields.config.model.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyOllamaPlugin.fields.config.baseUrl.title`),prop:`baseUrl`},{default:d(()=>[F(h(W),{modelValue:h(s).baseUrl,"onUpdate:modelValue":t[2]||=e=>h(s).baseUrl=e,placeholder:h(a)(`buddyOllamaPlugin.fields.config.baseUrl.placeholder`),name:`baseUrl`},null,8,[`modelValue`,`placeholder`]),D(`div`,Nf,k(h(a)(`buddyOllamaPlugin.fields.config.baseUrl.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Ff={headings:{aboutApiSettings:`Nastavení Ollama`},fields:{config:{enabled:{title:`Povoleno`},model:{title:`Model`,placeholder:`např. llama3, mistral, codellama`,description:`Model Ollama používaný pro generování odpovědí`},baseUrl:{title:`Základní URL`,placeholder:`např. http://localhost:11434`,description:`URL vaší lokální instance Ollama`}}},messages:{config:{edited:`Nastavení Ollama bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Ollama`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení vaší lokální instance Ollama. Ollama běží lokálně a nevyžaduje API klíč. Ujistěte se, že Ollama běží a je dostupná na nakonfigurované URL.`}},If={headings:{aboutApiSettings:`Ollama-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},model:{title:`Modell`,placeholder:`z.B. llama3, mistral, codellama`,description:`Das Ollama-Modell, das für die Generierung von Antworten verwendet wird`},baseUrl:{title:`Basis-URL`,placeholder:`z.B. http://localhost:11434`,description:`Die URL Ihrer lokalen Ollama-Instanz`}}},messages:{config:{edited:`Ollama-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Ollama-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre lokale Ollama-Instanz. Ollama läuft lokal und benötigt keinen API-Schlüssel. Stellen Sie sicher, dass Ollama läuft und unter der konfigurierten URL erreichbar ist.`}},Lf={headings:{aboutApiSettings:`Ollama settings`},fields:{config:{enabled:{title:`Enabled`},model:{title:`Model`,placeholder:`e.g., llama3, mistral, codellama`,description:`The Ollama model to use for generating responses`},baseUrl:{title:`Base URL`,placeholder:`e.g., http://localhost:11434`,description:`The URL of your local Ollama instance`}}},messages:{config:{edited:`Ollama settings have been updated`,notEdited:`Failed to update Ollama settings`}},texts:{aboutApiSettings:`Configure your local Ollama instance settings. Ollama runs locally and does not require an API key. Make sure Ollama is running and accessible at the configured URL.`}},Rf={headings:{aboutApiSettings:`Configuración de Ollama`},fields:{config:{enabled:{title:`Habilitado`},model:{title:`Modelo`,placeholder:`p. ej., llama3, mistral, codellama`,description:`El modelo de Ollama a utilizar para generar respuestas`},baseUrl:{title:`URL base`,placeholder:`p. ej., http://localhost:11434`,description:`La URL de su instancia local de Ollama`}}},messages:{config:{edited:`La configuración de Ollama ha sido actualizada`,notEdited:`Error al actualizar la configuración de Ollama`}},texts:{aboutApiSettings:`Configure los ajustes de su instancia local de Ollama. Ollama se ejecuta localmente y no requiere clave API. Asegúrese de que Ollama esté en ejecución y accesible en la URL configurada.`}},zf={headings:{aboutApiSettings:`Ustawienia Ollama`},fields:{config:{enabled:{title:`Wlaczony`},model:{title:`Model`,placeholder:`np. llama3, mistral, codellama`,description:`Model Ollama uzywany do generowania odpowiedzi`},baseUrl:{title:`Bazowy URL`,placeholder:`np. http://localhost:11434`,description:`URL lokalnej instancji Ollama`}}},messages:{config:{edited:`Ustawienia Ollama zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien Ollama`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia lokalnej instancji Ollama. Ollama dziala lokalnie i nie wymaga klucza API. Upewnij sie, ze Ollama jest uruchomiona i dostepna pod skonfigurowanym URL.`}},Bf={headings:{aboutApiSettings:`Nastavenia Ollama`},fields:{config:{enabled:{title:`Povolený`},model:{title:`Model`,placeholder:`napr. llama3, mistral, codellama`,description:`Model Ollama použitý na generovanie odpovedí`},baseUrl:{title:`Základná URL`,placeholder:`napr. http://localhost:11434`,description:`URL vašej lokálnej inštancie Ollama`}}},messages:{config:{edited:`Nastavenia Ollama boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Ollama`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia vašej lokálnej inštancie Ollama. Ollama beží lokálne a nevyžaduje API kľúč. Uistite sa, že Ollama beží a je dostupná na nakonfigurovanej URL.`}},Vf={"cs-CZ":Ff,"de-DE":If,"en-US":Lf,"es-ES":Rf,"pl-PL":zf,"sk-SK":Bf},Hf=Tt.extend({model:Y().nullable(),baseUrl:Y().nullable()}),Uf=Lt.extend({model:Y().trim().nullable(),baseUrl:Y().trim().nullable()}),Wf=Wt.and(q({type:Z(jf),model:Y().trim().nullable().optional(),base_url:Y().trim().nullable().optional()}));Qt.and(q({type:Z(jf),model:Y().trim().nullable(),base_url:Y().trim().nullable()}));var Gf=Symbol(`FB-Plugin-BuddyOllama`),Kf={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Vf)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyOllamaPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Gf,{type:jf,source:`com.fastybird.smart-panel.plugin.buddy-ollama`,name:`Ollama`,description:`LLM provider plugin for Buddy module using local Ollama inference`,links:{documentation:`https://ollama.com`,devDocumentation:`https://ollama.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Pf},schemas:{pluginConfigSchema:Uf,pluginConfigEditFormSchema:Hf,pluginConfigUpdateReqSchema:Wf},modules:[pn]}],modules:[pn],isCore:!0})}},qf=`buddy-openai-plugin`,Jf=[`gpt-5.2`,`gpt-5`,`gpt-5-mini`,`gpt-5-nano`,`gpt-4.1`,`o3`,`o3-pro`,`o3-mini`,`o4-mini`],Yf={class:`text-xs text-gray-500 mt-1`},Xf={class:`text-xs text-gray-500 mt-1`},Zf=f({name:`OpenAiConfigForm`,__name:`openai-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`buddyOpenaiPlugin.messages.config.edited`),error:o(`buddyOpenaiPlugin.messages.config.notEdited`)}}),p=Jf,g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`buddyOpenaiPlugin.headings.aboutApiSettings`),description:h(o)(`buddyOpenaiPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`buddyOpenaiPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyOpenaiPlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(c).apiKey,"onUpdate:modelValue":t[1]||=e=>h(c).apiKey=e,placeholder:h(o)(`buddyOpenaiPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,Yf,k(h(o)(`buddyOpenaiPlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyOpenaiPlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(X),{modelValue:h(c).model,"onUpdate:modelValue":t[2]||=e=>h(c).model=e,placeholder:h(o)(`buddyOpenaiPlugin.fields.config.model.placeholder`),filterable:``,"allow-create":``,"default-first-option":``,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(h(p),e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),D(`div`,Xf,k(h(o)(`buddyOpenaiPlugin.fields.config.model.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Qf={headings:{aboutApiSettings:`Nastavení OpenAI API`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj OpenAI API klíč`,description:`Získejte svůj API klíč na platform.openai.com`},model:{title:`Model`,placeholder:`např. gpt-4o, gpt-4o-mini`,description:`Model OpenAI používaný pro generování odpovědí`}}},messages:{config:{edited:`Nastavení OpenAI bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení OpenAI`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení OpenAI API. Pro použití modelů OpenAI jako poskytovatele LLM potřebujete platný API klíč.`}},$f={headings:{aboutApiSettings:`OpenAI API-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren OpenAI API-Schlüssel ein`,description:`Holen Sie sich Ihren API-Schlüssel von platform.openai.com`},model:{title:`Modell`,placeholder:`z.B. gpt-4o, gpt-4o-mini`,description:`Das OpenAI-Modell, das für die Generierung von Antworten verwendet wird`}}},messages:{config:{edited:`OpenAI-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der OpenAI-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre OpenAI API-Einstellungen. Sie benötigen einen gültigen API-Schlüssel, um OpenAI-Modelle als Buddy-LLM-Anbieter zu verwenden.`}},ep={headings:{aboutApiSettings:`OpenAI API settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your OpenAI API key`,description:`Get your API key from platform.openai.com`},model:{title:`Model`,placeholder:`e.g., gpt-4o, gpt-4o-mini`,description:`The OpenAI model to use for generating responses`}}},messages:{config:{edited:`OpenAI settings have been updated`,notEdited:`Failed to update OpenAI settings`}},texts:{aboutApiSettings:`Configure your OpenAI API settings. You need a valid API key to use OpenAI models as the buddy LLM provider.`}},tp={headings:{aboutApiSettings:`Configuración de la API de OpenAI`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de OpenAI`,description:`Obtenga su clave API en platform.openai.com`},model:{title:`Modelo`,placeholder:`p. ej., gpt-4o, gpt-4o-mini`,description:`El modelo de OpenAI a utilizar para generar respuestas`}}},messages:{config:{edited:`La configuración de OpenAI ha sido actualizada`,notEdited:`Error al actualizar la configuración de OpenAI`}},texts:{aboutApiSettings:`Configure los ajustes de la API de OpenAI. Necesita una clave API válida para utilizar los modelos de OpenAI como proveedor LLM del asistente.`}},np={headings:{aboutApiSettings:`Ustawienia API OpenAI`},fields:{config:{enabled:{title:`Wlaczony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadz klucz API OpenAI`,description:`Pobierz klucz API z platform.openai.com`},model:{title:`Model`,placeholder:`np. gpt-4o, gpt-4o-mini`,description:`Model OpenAI uzywany do generowania odpowiedzi`}}},messages:{config:{edited:`Ustawienia OpenAI zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien OpenAI`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia API OpenAI. Potrzebujesz prawidlowego klucza API, aby uzyc modeli OpenAI jako dostawcy LLM buddy.`}},rp={headings:{aboutApiSettings:`Nastavenia API OpenAI`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč OpenAI`,description:`Získajte svoj API kľúč z platform.openai.com`},model:{title:`Model`,placeholder:`napr. gpt-4o, gpt-4o-mini`,description:`Model OpenAI použitý na generovanie odpovedí`}}},messages:{config:{edited:`Nastavenia OpenAI boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia OpenAI`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia API OpenAI. Na používanie modelov OpenAI ako poskytovateľa LLM buddy potrebujete platný API kľúč.`}},ip={"cs-CZ":Qf,"de-DE":$f,"en-US":ep,"es-ES":tp,"pl-PL":np,"sk-SK":rp},ap=Tt.extend({apiKey:Y().nullable(),model:Y().nullable()}),op=Lt.extend({apiKey:Y().trim().nullable(),model:Y().trim().nullable()}),sp=Wt.and(q({type:Z(qf),api_key:Y().trim().nullable().optional(),model:Y().trim().nullable().optional()}));Qt.and(q({type:Z(qf),api_key:Y().trim().nullable(),model:Y().trim().nullable()}));var cp=Symbol(`FB-Plugin-BuddyOpenai`),lp={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(ip)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyOpenaiPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(cp,{type:qf,source:`com.fastybird.smart-panel.plugin.buddy-openai`,name:`OpenAI`,description:`LLM provider plugin for Buddy module using OpenAI API (GPT models)`,links:{documentation:`https://platform.openai.com/docs`,devDocumentation:`https://platform.openai.com/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Zf},schemas:{pluginConfigSchema:op,pluginConfigEditFormSchema:ap,pluginConfigUpdateReqSchema:sp},modules:[pn]}],modules:[pn],isCore:!0})}},up=`buddy-openai-codex`,dp=`buddy-openai-codex-plugin`,fp=[`codex-mini-latest`,`gpt-5.3-codex`,`gpt-5.2-codex`,`gpt-5-codex`,`gpt-5-codex-mini`],pp={class:`mt-3 mb-4`},mp={class:`flex items-center gap-3`},hp={class:`list-decimal list-inside m-0 p-0 text-xs leading-relaxed`},gp={class:`mt-3`},_p={class:`mt-3`},vp={class:`mt-2`},yp={class:`text-xs text-gray-500 mt-1`},bp={class:`text-xs text-gray-500 mt-1`},xp=f({name:`OpenAiCodexConfigForm`,__name:`openai-codex-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),s=rt(),c=fn(),l=Ye().getStore(At),{formEl:u,model:f,formChanged:p,submit:_,formResult:x,markSaved:S}=Xt({config:n.config,messages:{success:o(`buddyOpenaiCodexPlugin.messages.config.edited`),error:o(`buddyOpenaiCodexPlugin.messages.config.notEdited`)}}),C=fp,w=y({}),O=N(null),ee=N(``),te=N(!1),M=N(!1),ne=j(()=>!!(f.accessToken||f.refreshToken)),re=async()=>{let e=f.accessToken,t=f.refreshToken;f.accessToken=null,f.refreshToken=null,O.value=null,ee.value=``;try{await _(),S()}catch{f.accessToken=e,f.refreshToken=t}},ie=async()=>{te.value=!0,O.value=null,ee.value=``;try{if(!f.clientId){s.error(o(`buddyOpenaiCodexPlugin.messages.oauth.missingClientId`));return}let e=f.clientId,t=(await c.client.GET(`/${ae}/${up}/oauth/authorize`,{params:{query:{client_id:e}}})).data;if(!t)throw Error(`Failed to get authorization URL`);O.value=t.data.authorize_url}catch(e){s.error(e instanceof Error?e.message:o(`buddyOpenaiCodexPlugin.messages.oauth.authorizeError`))}finally{te.value=!1}},oe=async()=>{if(O.value)try{await navigator.clipboard.writeText(O.value)}catch{}},se=()=>{O.value&&window.open(O.value,`_blank`)},ce=async()=>{if(ee.value){M.value=!0;try{let e=(await c.client.POST(`/${ae}/${up}/oauth/exchange`,{body:{callback_url:ee.value}})).data;if(!e||!e.data.success)throw Error(e?.data?.error||o(`buddyOpenaiCodexPlugin.messages.oauth.exchangeError`));let t=await l.get({type:dp});t&&(t.clientId&&(f.clientId=t.clientId),t.accessToken&&(f.accessToken=t.accessToken),t.refreshToken&&(f.refreshToken=t.refreshToken)),await _(),S(),O.value=null,ee.value=``}catch(e){s.error(e instanceof Error?e.message:o(`buddyOpenaiCodexPlugin.messages.oauth.exchangeError`))}finally{M.value=!1}}};return m(()=>x.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),_().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!u.value)return;u.value.resetFields()}}),m(()=>p.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:u,model:h(f),rules:w,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`buddyOpenaiCodexPlugin.headings.aboutApiSettings`),description:h(o)(`buddyOpenaiCodexPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(f).enabled,"onUpdate:modelValue":t[0]||=e=>h(f).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),D(`div`,pp,[D(`div`,mp,[ne.value?(i(),P(A,{key:1},[F(h(E),{type:`danger`,onClick:re},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.buttons.disconnect`)),1)]),_:1}),F(h(ct),{type:`success`,effect:`light`},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.statuses.connected`)),1)]),_:1})],64)):(i(),P(A,{key:0},[F(h(E),{type:`primary`,loading:te.value,onClick:ie},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.buttons.getUrl`)),1)]),_:1},8,[`loading`]),F(h(ct),{type:`info`,effect:`light`},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.statuses.notConnected`)),1)]),_:1})],64))]),!ne.value&&O.value?(i(),P(A,{key:0},[F(h(L),{type:`info`,closable:!1,"show-icon":``,class:`mt-2!`},{default:d(()=>[D(`ol`,hp,[D(`li`,null,k(h(o)(`buddyOpenaiCodexPlugin.texts.oauthStep1`)),1),D(`li`,null,k(h(o)(`buddyOpenaiCodexPlugin.texts.oauthStep2`)),1),D(`li`,null,k(h(o)(`buddyOpenaiCodexPlugin.texts.oauthStep3`)),1),D(`li`,null,k(h(o)(`buddyOpenaiCodexPlugin.texts.oauthStep4`)),1)])]),_:1}),D(`div`,gp,[F(h(W),{"model-value":O.value,readonly:``},{append:d(()=>[F(h(E),{onClick:oe},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.buttons.copyUrl`)),1)]),_:1}),F(h(E),{onClick:se},{default:d(()=>[v(k(h(o)(`buddyOpenaiCodexPlugin.buttons.openUrl`)),1)]),_:1})]),_:1},8,[`model-value`])]),D(`div`,_p,[F(h(W),{modelValue:ee.value,"onUpdate:modelValue":t[1]||=e=>ee.value=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.callbackUrl.placeholder`)},null,8,[`modelValue`,`placeholder`])]),D(`div`,vp,[F(h(E),{type:`success`,loading:M.value,disabled:!ee.value,onClick:ce},{default:d(()=>[v(k(M.value?h(o)(`buddyOpenaiCodexPlugin.buttons.exchanging`):h(o)(`buddyOpenaiCodexPlugin.buttons.exchange`)),1)]),_:1},8,[`loading`,`disabled`])])],64)):g(``,!0)]),F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.clientId.title`),prop:`clientId`},{default:d(()=>[F(h(W),{modelValue:h(f).clientId,"onUpdate:modelValue":t[2]||=e=>h(f).clientId=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.clientId.placeholder`),name:`clientId`},null,8,[`modelValue`,`placeholder`]),D(`div`,yp,k(h(o)(`buddyOpenaiCodexPlugin.fields.config.clientId.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(X),{modelValue:h(f).model,"onUpdate:modelValue":t[3]||=e=>h(f).model=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.model.placeholder`),filterable:``,"allow-create":``,"default-first-option":``,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(h(C),e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),D(`div`,bp,k(h(o)(`buddyOpenaiCodexPlugin.fields.config.model.description`)),1)]),_:1},8,[`label`]),F(h(en),{class:`mt-3`},{default:d(()=>[F(h(pt),{title:h(o)(`buddyOpenaiCodexPlugin.headings.advancedSettings`)},{default:d(()=>[F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.clientSecret.title`),prop:`clientSecret`},{default:d(()=>[F(h(W),{modelValue:h(f).clientSecret,"onUpdate:modelValue":t[4]||=e=>h(f).clientSecret=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.clientSecret.placeholder`),name:`clientSecret`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.accessToken.title`),prop:`accessToken`},{default:d(()=>[F(h(W),{modelValue:h(f).accessToken,"onUpdate:modelValue":t[5]||=e=>h(f).accessToken=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.accessToken.placeholder`),name:`accessToken`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`buddyOpenaiCodexPlugin.fields.config.refreshToken.title`),prop:`refreshToken`},{default:d(()=>[F(h(W),{modelValue:h(f).refreshToken,"onUpdate:modelValue":t[6]||=e=>h(f).refreshToken=e,placeholder:h(o)(`buddyOpenaiCodexPlugin.fields.config.refreshToken.placeholder`),name:`refreshToken`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`title`])]),_:1})]),_:1},8,[`model`,`rules`]))}}),Sp={headings:{aboutApiSettings:`Nastavení OpenAI Codex`,advancedSettings:`Pokročilá nastavení`},fields:{config:{enabled:{title:`Povoleno`},clientId:{title:`ID klienta`,placeholder:`Zadejte své OAuth ID klienta`,description:`OAuth ID klienta pro OpenAI Codex API`},clientSecret:{title:`Tajný klíč klienta`,placeholder:`Zadejte svůj OAuth tajný klíč klienta`},accessToken:{title:`Přístupový token`,placeholder:`Zadejte svůj přístupový token`},refreshToken:{title:`Obnovovací token`,placeholder:`Zadejte svůj obnovovací token`},model:{title:`Model`,placeholder:`např. codex-mini`,description:`Model OpenAI Codex používaný pro generování odpovědí`},callbackUrl:{placeholder:`Vložte URL přesměrování sem...`}}},buttons:{getUrl:`Získat autorizační URL`,copyUrl:`Kopírovat`,openUrl:`Otevřít v prohlížeči`,exchange:`Vyměnit token`,exchanging:`Probíhá výměna...`,disconnect:`Odpojit`},statuses:{connected:`Připojeno`,notConnected:`Nepřipojeno`},messages:{config:{edited:`Nastavení OpenAI Codex bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení OpenAI Codex`},oauth:{urlCopied:`URL zkopírována do schránky`,missingClientId:`Zadejte prosím ID klienta před zahájením OAuth procesu`,authorizeError:`Nepodařilo se získat autorizační URL`,exchangeSuccess:`Výměna tokenu úspěšná`,exchangeError:`Výměna tokenu selhala`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení OAuth pro OpenAI Codex. Klikněte na "Získat autorizační URL" pro zahájení OAuth procesu, nebo rozbalte Pokročilá nastavení pro ruční zadání tokenů.`,oauthStep1:`Klikněte na "Získat autorizační URL" výše`,oauthStep2:`Otevřete URL v prohlížeči a autorizujte`,oauthStep3:`Zkopírujte URL přesměrování z prohlížeče po autorizaci`,oauthStep4:`Vložte ji níže a klikněte na "Vyměnit token"`}},Cp={headings:{aboutApiSettings:`OpenAI Codex-Einstellungen`,advancedSettings:`Erweiterte Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},clientId:{title:`Client-ID`,placeholder:`Geben Sie Ihre OAuth Client-ID ein`,description:`Die OAuth Client-ID für die OpenAI Codex API`},clientSecret:{title:`Client-Geheimnis`,placeholder:`Geben Sie Ihr OAuth Client-Geheimnis ein`},accessToken:{title:`Zugriffstoken`,placeholder:`Geben Sie Ihren Zugriffstoken ein`},refreshToken:{title:`Aktualisierungstoken`,placeholder:`Geben Sie Ihren Aktualisierungstoken ein`},model:{title:`Modell`,placeholder:`z.B. codex-mini`,description:`Das OpenAI Codex-Modell, das für die Generierung von Antworten verwendet wird`},callbackUrl:{placeholder:`Fügen Sie hier die Weiterleitungs-URL ein...`}}},buttons:{getUrl:`Autorisierungs-URL abrufen`,copyUrl:`Kopieren`,openUrl:`Im Browser öffnen`,exchange:`Token austauschen`,exchanging:`Wird ausgetauscht...`,disconnect:`Trennen`},statuses:{connected:`Verbunden`,notConnected:`Nicht verbunden`},messages:{config:{edited:`OpenAI Codex-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der OpenAI Codex-Einstellungen fehlgeschlagen`},oauth:{urlCopied:`URL in Zwischenablage kopiert`,missingClientId:`Bitte geben Sie eine Client-ID ein, bevor Sie den OAuth-Ablauf starten`,authorizeError:`Autorisierungs-URL konnte nicht abgerufen werden`,exchangeSuccess:`Token-Austausch erfolgreich`,exchangeError:`Token-Austausch fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre OpenAI Codex OAuth-Einstellungen. Klicken Sie auf "Autorisierungs-URL abrufen", um den OAuth-Ablauf zu starten, oder erweitern Sie die erweiterten Einstellungen, um Token manuell einzugeben.`,oauthStep1:`Klicken Sie oben auf "Autorisierungs-URL abrufen"`,oauthStep2:`Öffnen Sie die URL in Ihrem Browser und autorisieren Sie`,oauthStep3:`Kopieren Sie die Weiterleitungs-URL aus Ihrem Browser nach der Autorisierung`,oauthStep4:`Fügen Sie sie unten ein und klicken Sie auf "Token austauschen"`}},wp={headings:{aboutApiSettings:`OpenAI Codex settings`,advancedSettings:`Advanced settings`},fields:{config:{enabled:{title:`Enabled`},clientId:{title:`Client ID`,placeholder:`Enter your OAuth client ID`,description:`The OAuth client ID for OpenAI Codex API`},clientSecret:{title:`Client secret`,placeholder:`Enter your OAuth client secret`},accessToken:{title:`Access token`,placeholder:`Enter your access token`},refreshToken:{title:`Refresh token`,placeholder:`Enter your refresh token`},model:{title:`Model`,placeholder:`e.g., codex-mini`,description:`The OpenAI Codex model to use for generating responses`},callbackUrl:{placeholder:`Paste the redirect URL here...`}}},buttons:{getUrl:`Get Authorization URL`,copyUrl:`Copy`,openUrl:`Open in Browser`,exchange:`Exchange Token`,exchanging:`Exchanging...`,disconnect:`Disconnect`},statuses:{connected:`Connected`,notConnected:`Not connected`},messages:{config:{edited:`OpenAI Codex settings have been updated`,notEdited:`Failed to update OpenAI Codex settings`},oauth:{urlCopied:`URL copied to clipboard`,missingClientId:`Please enter a Client ID before starting the OAuth flow`,authorizeError:`Failed to get authorization URL`,exchangeSuccess:`Token exchange successful`,exchangeError:`Token exchange failed`}},texts:{aboutApiSettings:`Configure your OpenAI Codex OAuth settings. Click "Get Authorization URL" to start the OAuth flow, or expand Advanced Settings to enter tokens manually.`,oauthStep1:`Click "Get Authorization URL" above`,oauthStep2:`Open the URL in your browser and authorize`,oauthStep3:`Copy the redirect URL from your browser after authorization`,oauthStep4:`Paste it below and click "Exchange Token"`}},Tp={headings:{aboutApiSettings:`Configuración de OpenAI Codex`,advancedSettings:`Configuración avanzada`},fields:{config:{enabled:{title:`Habilitado`},clientId:{title:`ID de cliente`,placeholder:`Introduzca su ID de cliente OAuth`,description:`El ID de cliente OAuth para la API de OpenAI Codex`},clientSecret:{title:`Secreto de cliente`,placeholder:`Introduzca su secreto de cliente OAuth`},accessToken:{title:`Token de acceso`,placeholder:`Introduzca su token de acceso`},refreshToken:{title:`Token de actualización`,placeholder:`Introduzca su token de actualización`},model:{title:`Modelo`,placeholder:`p. ej., codex-mini`,description:`El modelo de OpenAI Codex a utilizar para generar respuestas`},callbackUrl:{placeholder:`Pegue la URL de redirección aquí...`}}},buttons:{getUrl:`Obtener URL de autorización`,copyUrl:`Copiar`,openUrl:`Abrir en el navegador`,exchange:`Intercambiar token`,exchanging:`Intercambiando...`,disconnect:`Desconectar`},statuses:{connected:`Conectado`,notConnected:`No conectado`},messages:{config:{edited:`La configuración de OpenAI Codex se ha actualizado`,notEdited:`No se pudo actualizar la configuración de OpenAI Codex`},oauth:{urlCopied:`URL copiada al portapapeles`,missingClientId:`Por favor, introduzca un ID de cliente antes de iniciar el flujo OAuth`,authorizeError:`No se pudo obtener la URL de autorización`,exchangeSuccess:`Intercambio de token exitoso`,exchangeError:`El intercambio de token falló`}},texts:{aboutApiSettings:`Configure los ajustes de OAuth de OpenAI Codex. Haga clic en "Obtener URL de autorización" para iniciar el flujo OAuth, o expanda la configuración avanzada para introducir los tokens manualmente.`,oauthStep1:`Haga clic en "Obtener URL de autorización" arriba`,oauthStep2:`Abra la URL en su navegador y autorice`,oauthStep3:`Copie la URL de redirección de su navegador después de la autorización`,oauthStep4:`Péguela a continuación y haga clic en "Intercambiar token"`}},Ep={headings:{aboutApiSettings:`Ustawienia OpenAI Codex`,advancedSettings:`Ustawienia zaawansowane`},fields:{config:{enabled:{title:`Wlaczony`},clientId:{title:`ID klienta`,placeholder:`Wprowadz ID klienta OAuth`,description:`ID klienta OAuth dla API OpenAI Codex`},clientSecret:{title:`Sekret klienta`,placeholder:`Wprowadz sekret klienta OAuth`},accessToken:{title:`Token dostepu`,placeholder:`Wprowadz token dostepu`},refreshToken:{title:`Token odswiezania`,placeholder:`Wprowadz token odswiezania`},model:{title:`Model`,placeholder:`np. codex-mini`,description:`Model OpenAI Codex uzywany do generowania odpowiedzi`},callbackUrl:{placeholder:`Wklej URL przekierowania tutaj...`}}},buttons:{getUrl:`Pobierz URL autoryzacji`,copyUrl:`Kopiuj`,openUrl:`Otworz w przegladarce`,exchange:`Wymien token`,exchanging:`Wymiana...`,disconnect:`Rozlacz`},statuses:{connected:`Polaczony`,notConnected:`Nie polaczony`},messages:{config:{edited:`Ustawienia OpenAI Codex zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien OpenAI Codex`},oauth:{urlCopied:`URL skopiowany do schowka`,missingClientId:`Prosze wprowadzic ID klienta przed rozpoczeciem procesu OAuth`,authorizeError:`Nie udalo sie pobrac URL autoryzacji`,exchangeSuccess:`Wymiana tokenu udana`,exchangeError:`Wymiana tokenu nie powiodla sie`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia OAuth OpenAI Codex. Kliknij "Pobierz URL autoryzacji", aby rozpoczac proces OAuth, lub rozwin Ustawienia zaawansowane, aby wprowadzic tokeny recznie.`,oauthStep1:`Kliknij "Pobierz URL autoryzacji" powyzej`,oauthStep2:`Otworz URL w przegladarce i autoryzuj`,oauthStep3:`Skopiuj URL przekierowania z przegladarki po autoryzacji`,oauthStep4:`Wklej go ponizej i kliknij "Wymien token"`}},Dp={headings:{aboutApiSettings:`Nastavenia OpenAI Codex`,advancedSettings:`Pokročilé nastavenia`},fields:{config:{enabled:{title:`Povolený`},clientId:{title:`Client ID`,placeholder:`Zadajte svoj OAuth client ID`,description:`OAuth client ID pre OpenAI Codex API`},clientSecret:{title:`Client secret`,placeholder:`Zadajte svoj OAuth client secret`},accessToken:{title:`Prístupový token`,placeholder:`Zadajte svoj prístupový token`},refreshToken:{title:`Obnovovací token`,placeholder:`Zadajte svoj obnovovací token`},model:{title:`Model`,placeholder:`napr. codex-mini`,description:`Model OpenAI Codex použitý na generovanie odpovedí`},callbackUrl:{placeholder:`Vložte sem URL presmerovanie...`}}},buttons:{getUrl:`Získať autorizačnú URL`,copyUrl:`Kopírovať`,openUrl:`Otvoriť v prehliadači`,exchange:`Vymeniť token`,exchanging:`Prebieha výmena...`,disconnect:`Odpojiť`},statuses:{connected:`Pripojený`,notConnected:`Nepripojený`},messages:{config:{edited:`Nastavenia OpenAI Codex boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia OpenAI Codex`},oauth:{urlCopied:`URL skopírovaná do schránky`,missingClientId:`Pred spustením OAuth procesu zadajte Client ID`,authorizeError:`Nepodarilo sa získať autorizačnú URL`,exchangeSuccess:`Výmena tokenu bola úspešná`,exchangeError:`Výmena tokenu zlyhala`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia OAuth OpenAI Codex. Kliknite na "Získať autorizačnú URL" na spustenie OAuth procesu, alebo rozbaľte Pokročilé nastavenia na manuálne zadanie tokenov.`,oauthStep1:`Kliknite na "Získať autorizačnú URL" vyššie`,oauthStep2:`Otvorte URL vo svojom prehliadači a autorizujte`,oauthStep3:`Po autorizácii skopírujte URL presmerovanie z prehliadača`,oauthStep4:`Vložte ju nižšie a kliknite na "Vymeniť token"`}},Op={"cs-CZ":Sp,"de-DE":Cp,"en-US":wp,"es-ES":Tp,"pl-PL":Ep,"sk-SK":Dp},kp=Tt.extend({clientId:Y().nullable(),clientSecret:Y().nullable(),accessToken:Y().nullable(),refreshToken:Y().nullable(),model:Y().nullable()}),Ap=Lt.extend({clientId:Y().trim().nullable(),clientSecret:Y().trim().nullable(),accessToken:Y().trim().nullable(),refreshToken:Y().trim().nullable(),model:Y().trim().nullable()}),jp=Wt.and(q({type:Z(dp),client_id:Y().trim().nullable().optional(),client_secret:Y().trim().nullable().optional(),access_token:Y().trim().nullable().optional(),refresh_token:Y().trim().nullable().optional(),model:Y().trim().nullable().optional()}));Qt.and(q({type:Z(dp),client_id:Y().trim().nullable(),client_secret:Y().trim().nullable(),access_token:Y().trim().nullable(),refresh_token:Y().trim().nullable(),model:Y().trim().nullable()}));var Mp=Symbol(`FB-Plugin-BuddyOpenaiCodex`),Np={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Op)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyOpenaiCodexPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Mp,{type:dp,source:`com.fastybird.smart-panel.plugin.buddy-openai-codex`,name:`OpenAI Codex`,description:`LLM provider plugin for Buddy module using OpenAI Codex with OAuth authentication`,links:{documentation:`https://platform.openai.com/docs`,devDocumentation:`https://platform.openai.com/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:xp},schemas:{pluginConfigSchema:Ap,pluginConfigEditFormSchema:kp,pluginConfigUpdateReqSchema:jp},modules:[pn]}],modules:[pn],isCore:!0})}},Pp=`buddy-stt-whisper-local-plugin`,Fp={class:`text-xs text-gray-500 mt-1`},Ip={class:`text-xs text-gray-500 mt-1`},Lp=f({name:`SttWhisperLocalConfigForm`,__name:`stt-whisper-local-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddySttWhisperLocalPlugin.messages.config.edited`),error:a(`buddySttWhisperLocalPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddySttWhisperLocalPlugin.headings.aboutSettings`),description:h(a)(`buddySttWhisperLocalPlugin.texts.aboutSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddySttWhisperLocalPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddySttWhisperLocalPlugin.fields.config.model.title`),prop:`model`},{default:d(()=>[F(h(W),{modelValue:h(s).model,"onUpdate:modelValue":t[1]||=e=>h(s).model=e,placeholder:h(a)(`buddySttWhisperLocalPlugin.fields.config.model.placeholder`),name:`model`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,Fp,k(h(a)(`buddySttWhisperLocalPlugin.fields.config.model.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddySttWhisperLocalPlugin.fields.config.language.title`),prop:`language`},{default:d(()=>[F(h(W),{modelValue:h(s).language,"onUpdate:modelValue":t[2]||=e=>h(s).language=e,placeholder:h(a)(`buddySttWhisperLocalPlugin.fields.config.language.placeholder`),name:`language`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,Ip,k(h(a)(`buddySttWhisperLocalPlugin.fields.config.language.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Rp={headings:{aboutSettings:`Nastavení lokálního Whisper`},fields:{config:{enabled:{title:`Povoleno`},model:{title:`Model`,placeholder:`base`,description:`Velikost modelu Whisper: tiny, base, small, medium nebo large`},language:{title:`Nápověda jazyka`,placeholder:`např. en, de, cs (volitelné)`,description:`Kód jazyka ISO 639-1 pro zlepšení přesnosti přepisu`}}},messages:{config:{edited:`Nastavení lokálního Whisper bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení lokálního Whisper`}},texts:{aboutSettings:`Nakonfigurujte lokální Whisper pro převod řeči na text. Není vyžadován API klíč. Příkaz whisper musí být nainstalován a dostupný v systémové PATH.`}},zp={headings:{aboutSettings:`Lokale Whisper-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},model:{title:`Modell`,placeholder:`base`,description:`Whisper-Modellgröße: tiny, base, small, medium oder large`},language:{title:`Sprachhinweis`,placeholder:`z.B. en, de, cs (optional)`,description:`ISO 639-1 Sprachcode zur Verbesserung der Transkriptionsgenauigkeit`}}},messages:{config:{edited:`Lokale Whisper-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der lokalen Whisper-Einstellungen fehlgeschlagen`}},texts:{aboutSettings:`Konfigurieren Sie die lokale Whisper Speech-to-Text-Funktion. Kein API-Schlüssel erforderlich. Der whisper-Befehl muss installiert und im System-PATH verfügbar sein.`}},Bp={headings:{aboutSettings:`Local Whisper settings`},fields:{config:{enabled:{title:`Enabled`},model:{title:`Model`,placeholder:`base`,description:`Whisper model size: tiny, base, small, medium, or large`},language:{title:`Language hint`,placeholder:`e.g. en, de, cs (optional)`,description:`ISO 639-1 language code to improve transcription accuracy`}}},messages:{config:{edited:`Local Whisper settings have been updated`,notEdited:`Failed to update local Whisper settings`}},texts:{aboutSettings:`Configure local Whisper speech-to-text. No API key required. The whisper command must be installed and available in the system PATH.`}},Vp={headings:{aboutSettings:`Configuración de Whisper local`},fields:{config:{enabled:{title:`Habilitado`},model:{title:`Modelo`,placeholder:`base`,description:`Tamaño del modelo Whisper: tiny, base, small, medium o large`},language:{title:`Indicación de idioma`,placeholder:`p. ej., en, de, cs (opcional)`,description:`Código de idioma ISO 639-1 para mejorar la precisión de la transcripción`}}},messages:{config:{edited:`La configuración de Whisper local ha sido actualizada`,notEdited:`Error al actualizar la configuración de Whisper local`}},texts:{aboutSettings:`Configure la conversión de voz a texto con Whisper local. No se requiere clave API. El comando whisper debe estar instalado y disponible en el PATH del sistema.`}},Hp={headings:{aboutSettings:`Ustawienia lokalnego Whisper`},fields:{config:{enabled:{title:`Wlaczony`},model:{title:`Model`,placeholder:`base`,description:`Rozmiar modelu Whisper: tiny, base, small, medium lub large`},language:{title:`Wskazowka jezyka`,placeholder:`np. en, de, pl (opcjonalnie)`,description:`Kod jezyka ISO 639-1 dla poprawy dokladnosci transkrypcji`}}},messages:{config:{edited:`Ustawienia lokalnego Whisper zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien lokalnego Whisper`}},texts:{aboutSettings:`Skonfiguruj lokalny Whisper speech-to-text. Klucz API nie jest wymagany. Polecenie whisper musi byc zainstalowane i dostepne w systemowym PATH.`}},Up={headings:{aboutSettings:`Nastavenia lokálneho Whisper`},fields:{config:{enabled:{title:`Povolený`},model:{title:`Model`,placeholder:`base`,description:`Veľkosť modelu Whisper: tiny, base, small, medium alebo large`},language:{title:`Nápoveda jazyka`,placeholder:`napr. en, de, cs (voliteľné)`,description:`Kód jazyka ISO 639-1 na zlepšenie presnosti prepisu`}}},messages:{config:{edited:`Nastavenia lokálneho Whisper boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia lokálneho Whisper`}},texts:{aboutSettings:`Nakonfigurujte lokálny Whisper speech-to-text. Nie je potrebný API kľúč. Príkaz whisper musí byť nainštalovaný a dostupný v systémovom PATH.`}},Wp={"cs-CZ":Rp,"de-DE":zp,"en-US":Bp,"es-ES":Vp,"pl-PL":Hp,"sk-SK":Up},Gp=Tt.extend({model:Y().nullable(),language:Y().nullable()}),Kp=Lt.extend({model:Y().trim().nullable(),language:Y().trim().nullable()}),qp=Wt.and(q({type:Z(Pp),model:Y().trim().nullable().optional(),language:Y().trim().nullable().optional()}));Qt.and(q({type:Z(Pp),model:Y().trim().nullable(),language:Y().trim().nullable()}));var Jp=Symbol(`FB-Plugin-BuddySttWhisperLocal`),Yp={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Wp)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddySttWhisperLocalPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Jp,{type:Pp,source:`com.fastybird.smart-panel.plugin.buddy-stt-whisper-local`,name:`Whisper Local`,description:`STT provider plugin for Buddy module using locally installed Whisper`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Lp},schemas:{pluginConfigSchema:Kp,pluginConfigEditFormSchema:Gp,pluginConfigUpdateReqSchema:qp},modules:[pn]}],modules:[pn],isCore:!0})}},Xp=`buddy-system-tts-plugin`,Zp={class:`text-xs text-gray-500 mt-1`},Qp={class:`text-xs text-gray-500 mt-1`},$p=f({name:`SystemTtsConfigForm`,__name:`system-tts-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddySystemTtsPlugin.messages.config.edited`),error:a(`buddySystemTtsPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddySystemTtsPlugin.headings.aboutSettings`),description:h(a)(`buddySystemTtsPlugin.texts.aboutSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddySystemTtsPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddySystemTtsPlugin.fields.config.engine.title`),prop:`engine`},{default:d(()=>[F(h(W),{modelValue:h(s).engine,"onUpdate:modelValue":t[1]||=e=>h(s).engine=e,placeholder:h(a)(`buddySystemTtsPlugin.fields.config.engine.placeholder`),name:`engine`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,Zp,k(h(a)(`buddySystemTtsPlugin.fields.config.engine.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddySystemTtsPlugin.fields.config.voice.title`),prop:`voice`},{default:d(()=>[F(h(W),{modelValue:h(s).voice,"onUpdate:modelValue":t[2]||=e=>h(s).voice=e,placeholder:h(a)(`buddySystemTtsPlugin.fields.config.voice.placeholder`),name:`voice`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,Qp,k(h(a)(`buddySystemTtsPlugin.fields.config.voice.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),em={headings:{aboutSettings:`Nastavení systémového TTS`},fields:{config:{enabled:{title:`Povoleno`},engine:{title:`Engine`,placeholder:`piper nebo espeak (automatická detekce pokud prázdné)`,description:`TTS engine k použití. Ponechte prázdné pro automatickou detekci (preferuje piper, záloha espeak)`},voice:{title:`Hlas`,placeholder:`Název hlasu nebo kód (volitelné)`,description:`Název modelu piper nebo kód hlasu espeak. Ponechte prázdné pro výchozí hlas`}}},messages:{config:{edited:`Nastavení systémového TTS bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení systémového TTS`}},texts:{aboutSettings:`Nakonfigurujte lokální engine pro převod textu na řeč. Není vyžadován API klíč. Používá piper (neurální TTS) nebo espeak (základní TTS) nainstalovaný v systému.`}},tm={headings:{aboutSettings:`System-TTS-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},engine:{title:`Engine`,placeholder:`piper oder espeak (automatisch erkannt wenn leer)`,description:`Zu verwendende TTS-Engine. Leer lassen für automatische Erkennung (bevorzugt piper, fällt auf espeak zurück)`},voice:{title:`Stimme`,placeholder:`Stimmenname oder -code (optional)`,description:`Piper-Modellname oder espeak-Stimmencode. Leer lassen für die Standardstimme`}}},messages:{config:{edited:`System-TTS-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der System-TTS-Einstellungen fehlgeschlagen`}},texts:{aboutSettings:`Konfigurieren Sie die lokale Text-to-Speech-Engine. Kein API-Schlüssel erforderlich. Verwendet piper (neuronales TTS) oder espeak (einfaches TTS), die auf dem System installiert sind.`}},nm={headings:{aboutSettings:`System TTS settings`},fields:{config:{enabled:{title:`Enabled`},engine:{title:`Engine`,placeholder:`piper or espeak (auto-detected if empty)`,description:`TTS engine to use. Leave empty to auto-detect (prefers piper, falls back to espeak)`},voice:{title:`Voice`,placeholder:`Voice name or code (optional)`,description:`Piper model name or espeak voice code. Leave empty for the default voice`}}},messages:{config:{edited:`System TTS settings have been updated`,notEdited:`Failed to update system TTS settings`}},texts:{aboutSettings:`Configure the local text-to-speech engine. No API key is required. Uses piper (neural TTS) or espeak (basic TTS) installed on the system.`}},rm={headings:{aboutSettings:`Configuración de TTS del sistema`},fields:{config:{enabled:{title:`Habilitado`},engine:{title:`Motor`,placeholder:`piper o espeak (autodetectado si está vacío)`,description:`Motor TTS a utilizar. Déjelo vacío para autodetección (prefiere piper, recurre a espeak)`},voice:{title:`Voz`,placeholder:`Nombre o código de voz (opcional)`,description:`Nombre del modelo de piper o código de voz de espeak. Déjelo vacío para la voz predeterminada`}}},messages:{config:{edited:`La configuración de TTS del sistema ha sido actualizada`,notEdited:`Error al actualizar la configuración de TTS del sistema`}},texts:{aboutSettings:`Configure el motor local de texto a voz. No se requiere clave API. Utiliza piper (TTS neuronal) o espeak (TTS básico) instalado en el sistema.`}},im={headings:{aboutSettings:`Ustawienia systemowego TTS`},fields:{config:{enabled:{title:`Wlaczony`},engine:{title:`Silnik`,placeholder:`piper lub espeak (automatyczne wykrywanie jesli puste)`,description:`Silnik TTS do uzycia. Pozostaw puste dla automatycznego wykrywania (preferuje piper, zapasowy espeak)`},voice:{title:`Glos`,placeholder:`Nazwa glosu lub kod (opcjonalnie)`,description:`Nazwa modelu piper lub kod glosu espeak. Pozostaw puste dla domyslnego glosu`}}},messages:{config:{edited:`Ustawienia systemowego TTS zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien systemowego TTS`}},texts:{aboutSettings:`Skonfiguruj lokalny silnik text-to-speech. Klucz API nie jest wymagany. Uzywa piper (neuronowy TTS) lub espeak (podstawowy TTS) zainstalowany w systemie.`}},am={headings:{aboutSettings:`Nastavenia systémového TTS`},fields:{config:{enabled:{title:`Povolený`},engine:{title:`Engine`,placeholder:`piper alebo espeak (automatická detekcia ak prázdne)`,description:`TTS engine na použitie. Ponechajte prázdne na automatickú detekciu (preferuje piper, záloha espeak)`},voice:{title:`Hlas`,placeholder:`Názov hlasu alebo kód (voliteľné)`,description:`Názov modelu piper alebo kód hlasu espeak. Ponechajte prázdne pre predvolený hlas`}}},messages:{config:{edited:`Nastavenia systémového TTS boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia systémového TTS`}},texts:{aboutSettings:`Nakonfigurujte lokálny text-to-speech engine. Nie je potrebný API kľúč. Používa piper (neurónové TTS) alebo espeak (základné TTS) nainštalované v systéme.`}},om={"cs-CZ":em,"de-DE":tm,"en-US":nm,"es-ES":rm,"pl-PL":im,"sk-SK":am},sm=Tt.extend({engine:Y().nullable(),voice:Y().nullable()}),cm=Lt.extend({engine:Y().trim().nullable(),voice:Y().trim().nullable()}),lm=Wt.and(q({type:Z(Xp),engine:Y().trim().nullable().optional(),voice:Y().trim().nullable().optional()}));Qt.and(q({type:Z(Xp),engine:Y().trim().nullable(),voice:Y().trim().nullable()}));var um=Symbol(`FB-Plugin-BuddySystemTts`),dm={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(om)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddySystemTtsPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(um,{type:Xp,source:`com.fastybird.smart-panel.plugin.buddy-system-tts`,name:`System TTS`,description:`Local TTS provider plugin for Buddy module using piper or espeak`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:$p},schemas:{pluginConfigSchema:cm,pluginConfigEditFormSchema:sm,pluginConfigUpdateReqSchema:lm},modules:[pn]}],modules:[pn],isCore:!0})}},fm=`buddy-telegram-plugin`,pm={class:`text-xs text-gray-500 mt-1`},mm={class:`text-xs text-gray-500 mt-1`},hm=f({name:`TelegramConfigForm`,__name:`telegram-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddyTelegramPlugin.messages.config.edited`),error:a(`buddyTelegramPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddyTelegramPlugin.headings.aboutTelegramSettings`),description:h(a)(`buddyTelegramPlugin.texts.aboutTelegramSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddyTelegramPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyTelegramPlugin.fields.config.botToken.title`),prop:`botToken`},{default:d(()=>[F(h(W),{modelValue:h(s).botToken,"onUpdate:modelValue":t[1]||=e=>h(s).botToken=e,placeholder:h(a)(`buddyTelegramPlugin.fields.config.botToken.placeholder`),name:`botToken`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,pm,k(h(a)(`buddyTelegramPlugin.fields.config.botToken.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyTelegramPlugin.fields.config.allowedUserIds.title`),prop:`allowedUserIds`},{default:d(()=>[F(h(W),{modelValue:h(s).allowedUserIds,"onUpdate:modelValue":t[2]||=e=>h(s).allowedUserIds=e,placeholder:h(a)(`buddyTelegramPlugin.fields.config.allowedUserIds.placeholder`),name:`allowedUserIds`},null,8,[`modelValue`,`placeholder`]),D(`div`,mm,k(h(a)(`buddyTelegramPlugin.fields.config.allowedUserIds.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),gm={headings:{aboutTelegramSettings:`Nastavení Telegram bota`},fields:{config:{enabled:{title:`Povoleno`},botToken:{title:`Token bota`,placeholder:`Zadejte svůj Telegram bot token`,description:`Získejte svůj bot token od {'@'}BotFather na Telegramu`},allowedUserIds:{title:`Povolená ID uživatelů`,placeholder:`např. 123456789,987654321`,description:`Čárkou oddělená ID Telegram uživatelů povolených k interakci s botem. Ponechte prázdné pro povolení všem uživatelům.`}}},messages:{config:{edited:`Nastavení Telegram bota bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Telegram bota`}},texts:{aboutTelegramSettings:`Nakonfigurujte integraci Telegram bota. Vytvořte bota pomocí {'@'}BotFather na Telegramu pro získání bot tokenu, poté volitelně omezte přístup na konkrétní ID uživatelů.`}},_m={headings:{aboutTelegramSettings:`Telegram-Bot-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},botToken:{title:`Bot-Token`,placeholder:`Geben Sie Ihren Telegram-Bot-Token ein`,description:`Holen Sie sich Ihren Bot-Token von {'@'}BotFather auf Telegram`},allowedUserIds:{title:`Erlaubte Benutzer-IDs`,placeholder:`z.B. 123456789,987654321`,description:`Kommagetrennte Telegram-Benutzer-IDs, die mit dem Bot interagieren dürfen. Leer lassen, um allen Benutzern den Zugriff zu erlauben.`}}},messages:{config:{edited:`Telegram-Bot-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Telegram-Bot-Einstellungen fehlgeschlagen`}},texts:{aboutTelegramSettings:`Konfigurieren Sie Ihre Telegram-Bot-Integration. Erstellen Sie einen Bot über {'@'}BotFather auf Telegram, um einen Bot-Token zu erhalten, und beschränken Sie optional den Zugriff auf bestimmte Benutzer-IDs.`}},vm={headings:{aboutTelegramSettings:`Telegram bot settings`},fields:{config:{enabled:{title:`Enabled`},botToken:{title:`Bot token`,placeholder:`Enter your Telegram bot token`,description:`Get your bot token from {'@'}BotFather on Telegram`},allowedUserIds:{title:`Allowed user IDs`,placeholder:`e.g., 123456789,987654321`,description:`Comma-separated Telegram user IDs allowed to interact with the bot. Leave empty to allow all users.`}}},messages:{config:{edited:`Telegram bot settings have been updated`,notEdited:`Failed to update Telegram bot settings`}},texts:{aboutTelegramSettings:`Configure your Telegram bot integration. Create a bot via {'@'}BotFather on Telegram to get a bot token, then optionally restrict access to specific user IDs.`}},ym={headings:{aboutTelegramSettings:`Configuración del bot de Telegram`},fields:{config:{enabled:{title:`Habilitado`},botToken:{title:`Token del bot`,placeholder:`Introduzca el token de su bot de Telegram`,description:`Obtenga el token de su bot de {'@'}BotFather en Telegram`},allowedUserIds:{title:`IDs de usuarios permitidos`,placeholder:`p. ej., 123456789,987654321`,description:`IDs de usuario de Telegram separados por comas que pueden interactuar con el bot. Déjelo vacío para permitir a todos los usuarios.`}}},messages:{config:{edited:`La configuración del bot de Telegram ha sido actualizada`,notEdited:`Error al actualizar la configuración del bot de Telegram`}},texts:{aboutTelegramSettings:`Configure la integración de su bot de Telegram. Cree un bot a través de {'@'}BotFather en Telegram para obtener un token de bot y, opcionalmente, restrinja el acceso a IDs de usuario específicos.`}},bm={headings:{aboutTelegramSettings:`Ustawienia bota Telegram`},fields:{config:{enabled:{title:`Wlaczony`},botToken:{title:`Token bota`,placeholder:`Wprowadz token bota Telegram`,description:`Pobierz token bota od {'@'}BotFather na Telegramie`},allowedUserIds:{title:`Dozwolone ID uzytkownikow`,placeholder:`np. 123456789,987654321`,description:`Rozdzielone przecinkami ID uzytkownikow Telegram uprawnionych do interakcji z botem. Pozostaw puste, aby zezwolic wszystkim uzytkownikom.`}}},messages:{config:{edited:`Ustawienia bota Telegram zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien bota Telegram`}},texts:{aboutTelegramSettings:`Skonfiguruj integracje z botem Telegram. Utworz bota przez {'@'}BotFather na Telegramie, aby uzyskac token bota, a nastepnie opcjonalnie ogranicz dostep do konkretnych ID uzytkownikow.`}},xm={headings:{aboutTelegramSettings:`Nastavenia Telegram bota`},fields:{config:{enabled:{title:`Povolený`},botToken:{title:`Token bota`,placeholder:`Zadajte token svojho Telegram bota`,description:`Získajte token bota od {'@'}BotFather na Telegrame`},allowedUserIds:{title:`Povolené ID používateľov`,placeholder:`napr. 123456789,987654321`,description:`Čiarkami oddelené ID Telegram používateľov, ktorí môžu interagovať s botom. Ponechajte prázdne na povolenie všetkých používateľov.`}}},messages:{config:{edited:`Nastavenia Telegram bota boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Telegram bota`}},texts:{aboutTelegramSettings:`Nakonfigurujte integráciu Telegram bota. Vytvorte bota cez {'@'}BotFather na Telegrame na získanie tokenu bota, potom voliteľne obmedzíte prístup na konkrétne ID používateľov.`}},Sm={"cs-CZ":gm,"de-DE":_m,"en-US":vm,"es-ES":ym,"pl-PL":bm,"sk-SK":xm},Cm=Tt.extend({botToken:Y().nullable(),allowedUserIds:Y().nullable()}),wm=Lt.extend({botToken:Y().trim().nullable().default(null),allowedUserIds:Y().trim().nullable().default(null)}),Tm=Wt.and(q({type:Z(fm),bot_token:Y().trim().nullable().optional(),allowed_user_ids:Y().trim().nullable().optional()})),Em=Symbol(`FB-Plugin-BuddyTelegram`),Dm={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Sm)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyTelegramPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Em,{type:fm,source:`com.fastybird.smart-panel.plugin.buddy-telegram`,name:`Telegram`,description:`Telegram bot adapter plugin for Buddy module`,links:{documentation:`https://core.telegram.org/bots`,devDocumentation:`https://core.telegram.org/bots/api`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:hm},schemas:{pluginConfigSchema:wm,pluginConfigEditFormSchema:Cm,pluginConfigUpdateReqSchema:Tm},modules:[pn]}],modules:[pn],isCore:!0})}},Om=`buddy-voiceai-plugin`,km={class:`text-xs text-gray-500 mt-1`},Am={class:`text-xs text-gray-500 mt-1`},jm=f({name:`VoiceaiConfigForm`,__name:`voiceai-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`buddyVoiceaiPlugin.messages.config.edited`),error:a(`buddyVoiceaiPlugin.messages.config.notEdited`)}}),f=y({});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddyVoiceaiPlugin.headings.aboutApiSettings`),description:h(a)(`buddyVoiceaiPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddyVoiceaiPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyVoiceaiPlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(s).apiKey,"onUpdate:modelValue":t[1]||=e=>h(s).apiKey=e,placeholder:h(a)(`buddyVoiceaiPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,km,k(h(a)(`buddyVoiceaiPlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`buddyVoiceaiPlugin.fields.config.voiceId.title`),prop:`voiceId`},{default:d(()=>[F(h(W),{modelValue:h(s).voiceId,"onUpdate:modelValue":t[2]||=e=>h(s).voiceId=e,placeholder:h(a)(`buddyVoiceaiPlugin.fields.config.voiceId.placeholder`),name:`voiceId`,clearable:``},null,8,[`modelValue`,`placeholder`]),D(`div`,Am,k(h(a)(`buddyVoiceaiPlugin.fields.config.voiceId.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Mm={headings:{aboutApiSettings:`Nastavení Voice.ai API`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj Voice.ai API klíč`,description:`Získejte svůj API klíč z panelu Voice.ai`},voiceId:{title:`ID hlasu`,placeholder:`Zadejte ID hlasu Voice.ai`,description:`ID hlasu Voice.ai používaného pro syntézu řeči. Použijte Voice.ai API pro zobrazení dostupných hlasů`}}},messages:{config:{edited:`Nastavení Voice.ai bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Voice.ai`}},texts:{aboutApiSettings:`Nakonfigurujte nastavení Voice.ai API. Pro použití Voice.ai jako poskytovatele TTS potřebujete platný API klíč a ID hlasu.`}},Nm={headings:{aboutApiSettings:`Voice.ai API-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren Voice.ai API-Schlüssel ein`,description:`Holen Sie sich Ihren API-Schlüssel aus Ihrem Voice.ai-Dashboard`},voiceId:{title:`Stimmen-ID`,placeholder:`Geben Sie eine Voice.ai Stimmen-ID ein`,description:`Die Voice.ai Stimmen-ID für die Sprachsynthese. Verwenden Sie die Voice.ai API, um verfügbare Stimmen aufzulisten`}}},messages:{config:{edited:`Voice.ai-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Voice.ai-Einstellungen fehlgeschlagen`}},texts:{aboutApiSettings:`Konfigurieren Sie Ihre Voice.ai API-Einstellungen. Sie benötigen einen gültigen API-Schlüssel und eine Stimmen-ID, um Voice.ai als Buddy-TTS-Anbieter zu verwenden.`}},Pm={headings:{aboutApiSettings:`Voice.ai API settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your Voice.ai API key`,description:`Get your API key from your Voice.ai dashboard`},voiceId:{title:`Voice ID`,placeholder:`Enter a Voice.ai voice ID`,description:`The Voice.ai voice ID to use for speech synthesis. Use the Voice.ai API to list available voices`}}},messages:{config:{edited:`Voice.ai settings have been updated`,notEdited:`Failed to update Voice.ai settings`}},texts:{aboutApiSettings:`Configure your Voice.ai API settings. You need a valid API key and voice ID to use Voice.ai as the buddy TTS provider.`}},Fm={headings:{aboutApiSettings:`Configuración de la API de Voice.ai`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de Voice.ai`,description:`Obtenga su clave API en el panel de Voice.ai`},voiceId:{title:`ID de voz`,placeholder:`Introduzca un ID de voz de Voice.ai`,description:`El ID de voz de Voice.ai a utilizar para la síntesis de voz. Use la API de Voice.ai para ver las voces disponibles`}}},messages:{config:{edited:`La configuración de Voice.ai ha sido actualizada`,notEdited:`Error al actualizar la configuración de Voice.ai`}},texts:{aboutApiSettings:`Configure los ajustes de la API de Voice.ai. Necesita una clave API válida y un ID de voz para utilizar Voice.ai como proveedor TTS del asistente.`}},Im={headings:{aboutApiSettings:`Ustawienia API Voice.ai`},fields:{config:{enabled:{title:`Wlaczony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadz klucz API Voice.ai`,description:`Pobierz klucz API z panelu Voice.ai`},voiceId:{title:`ID glosu`,placeholder:`Wprowadz ID glosu Voice.ai`,description:`ID glosu Voice.ai uzywany do syntezy mowy. Uzyj API Voice.ai, aby wylistowac dostepne glosy`}}},messages:{config:{edited:`Ustawienia Voice.ai zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien Voice.ai`}},texts:{aboutApiSettings:`Skonfiguruj ustawienia API Voice.ai. Potrzebujesz prawidlowego klucza API i ID glosu, aby uzyc Voice.ai jako dostawcy TTS buddy.`}},Lm={headings:{aboutApiSettings:`Nastavenia API Voice.ai`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč Voice.ai`,description:`Získajte svoj API kľúč z dashboardu Voice.ai`},voiceId:{title:`ID hlasu`,placeholder:`Zadajte ID hlasu Voice.ai`,description:`ID hlasu Voice.ai použitého na syntézu reči. Použite API Voice.ai na zobrazenie dostupných hlasov`}}},messages:{config:{edited:`Nastavenia Voice.ai boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Voice.ai`}},texts:{aboutApiSettings:`Nakonfigurujte nastavenia API Voice.ai. Na používanie Voice.ai ako poskytovateľa TTS buddy potrebujete platný API kľúč a ID hlasu.`}},Rm={"cs-CZ":Mm,"de-DE":Nm,"en-US":Pm,"es-ES":Fm,"pl-PL":Im,"sk-SK":Lm},zm=Tt.extend({apiKey:Y().nullable(),voiceId:Y().nullable()}),Bm=Lt.extend({apiKey:Y().trim().nullable(),voiceId:Y().trim().nullable()}),Vm=Wt.and(q({type:Z(Om),api_key:Y().trim().nullable().optional(),voice_id:Y().trim().nullable().optional()}));Qt.and(q({type:Z(Om),api_key:Y().trim().nullable(),voice_id:Y().trim().nullable()}));var Hm=Symbol(`FB-Plugin-BuddyVoiceai`),Um={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Rm)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyVoiceaiPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Hm,{type:Om,source:`com.fastybird.smart-panel.plugin.buddy-voiceai`,name:`Voice.ai`,description:`TTS provider plugin for Buddy module using Voice.ai API`,links:{documentation:`https://voice.ai/docs`,devDocumentation:`https://voice.ai/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:jm},schemas:{pluginConfigSchema:Bm,pluginConfigEditFormSchema:zm,pluginConfigUpdateReqSchema:Vm},modules:[pn]}],modules:[pn],isCore:!0})}},Wm=`buddy-whatsapp`,Gm=`buddy-whatsapp-plugin`,Km=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),qm=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),Jm=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),Ym=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),Xm=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),Zm=t((e=>{var t=qm().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),Qm=t((e=>{var t=qm().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),$m=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),eh=t((e=>{var t=Jm(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),th=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),nh=t((e=>{var t=th();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),rh=t(((e,t)=>{var n=nh();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),ih=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),ah=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
|
|
9
|
+
]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),oh=t((e=>{var t=ih(),n=ah();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),sh=t((e=>{var t=qm(),n=eh(),r=Jm(),i=oh(),a=ih(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),ch=t((e=>{var t=qm(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),lh=t(((e,t)=>{var n=oh();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),uh=t(((e,t)=>{var n=oh(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),dh=t(((e,t)=>{var n=oh();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),fh=t(((e,t)=>{var n=oh(),r=qm();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
|
|
10
|
+
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),ph=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),mh=t((e=>{var t=oh(),n=lh(),r=uh(),i=dh(),a=fh(),o=ah(),s=qm(),c=ph();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
|
|
11
|
+
Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),hh=t((e=>{var t=qm(),n=Jm(),r=Ym(),i=Xm(),a=Zm(),o=Qm(),s=$m(),c=eh(),l=rh(),u=sh(),d=ch(),f=oh(),p=mh();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
|
|
12
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
13
|
+
Minimum version required to store current data is: `+c+`.
|
|
14
|
+
`);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),gh=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[a[t*i+r]?1:0]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),_h=t((e=>{var t=gh();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),vh=t((e=>{var t=gh();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
|
|
15
|
+
`;return typeof a==`function`&&a(null,p),p}})),yh=e(t((e=>{var t=Km(),n=hh(),r=_h(),i=vh();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1),bh={key:0,class:`mb-4`},xh={class:`flex justify-center mt-3`},Sh=[`src`],Ch={class:`text-xs text-gray-500 mt-1`},wh=3e3,Th=15e3,Eh=f({name:`WhatsappConfigForm`,__name:`whatsapp-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:s,model:l,formChanged:u,submit:f,formResult:p}=Xt({config:n.config,messages:{success:a(`buddyWhatsappPlugin.messages.config.edited`),error:a(`buddyWhatsappPlugin.messages.config.notEdited`)}}),_=y({}),x=fn(),S=N(`disconnected`),C=N(null),w=null,O=async()=>{try{let{data:e}=await x.client.GET(`/${ae}/${Wm}/status`),t=e;t&&(S.value=t.data.status,t.data.qr?C.value=await yh.toDataURL(t.data.qr,{width:260,margin:2}):C.value=null)}catch{}},ee=async()=>{try{await x.client.POST(`/${ae}/${Wm}/logout`),te()}catch{}},j=0,te=(e=wh)=>{w&&j===e||(M(),O(),j=e,w=setInterval(()=>{O()},e))},M=()=>{w&&=(clearInterval(w),null),j=0};return o(()=>{l.enabled&&te()}),c(()=>{M()}),m(()=>l.enabled,e=>{e?te():(M(),S.value=`disconnected`,C.value=null)}),m(()=>S.value,e=>{!l.enabled||!w||te(e===`connected`?Th:wh)}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(l),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`buddyWhatsappPlugin.headings.aboutWhatsappSettings`),description:h(a)(`buddyWhatsappPlugin.texts.aboutWhatsappSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`buddyWhatsappPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(l).enabled,"onUpdate:modelValue":t[0]||=e=>h(l).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),h(l).enabled?(i(),P(`div`,bh,[S.value===`connected`?(i(),T(h(L),{key:0,type:`success`,title:h(a)(`buddyWhatsappPlugin.texts.status.connected`),closable:!1},{default:d(()=>[F(h(E),{type:`danger`,plain:``,size:`small`,class:`mt-2`,onClick:ee},{default:d(()=>[v(k(h(a)(`buddyWhatsappPlugin.buttons.logout`)),1)]),_:1})]),_:1},8,[`title`])):S.value===`qr_ready`&&C.value?(i(),P(A,{key:1},[F(h(L),{type:`warning`,title:h(a)(`buddyWhatsappPlugin.texts.status.qrReady`),closable:!1},null,8,[`title`]),D(`div`,xh,[D(`img`,{src:C.value,alt:`WhatsApp QR Code`,class:`rounded`,style:{width:`260px`,height:`260px`}},null,8,Sh)])],64)):S.value===`connecting`?(i(),T(h(L),{key:2,type:`info`,title:h(a)(`buddyWhatsappPlugin.texts.status.connecting`),closable:!1},null,8,[`title`])):(i(),T(h(L),{key:3,type:`warning`,title:h(a)(`buddyWhatsappPlugin.texts.status.disconnected`),closable:!1},null,8,[`title`]))])):g(``,!0),F(h(V),{label:h(a)(`buddyWhatsappPlugin.fields.config.allowedPhoneNumbers.title`),prop:`allowedPhoneNumbers`},{default:d(()=>[F(h(W),{modelValue:h(l).allowedPhoneNumbers,"onUpdate:modelValue":t[1]||=e=>h(l).allowedPhoneNumbers=e,placeholder:h(a)(`buddyWhatsappPlugin.fields.config.allowedPhoneNumbers.placeholder`),name:`allowedPhoneNumbers`},null,8,[`modelValue`,`placeholder`]),D(`div`,Ch,k(h(a)(`buddyWhatsappPlugin.fields.config.allowedPhoneNumbers.description`)),1)]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Dh={headings:{aboutWhatsappSettings:`Nastavení WhatsApp bota`},fields:{config:{enabled:{title:`Povoleno`},allowedPhoneNumbers:{title:`Povolená telefonní čísla`,placeholder:`např. 1234567890,9876543210`,description:`Čárkou oddělená telefonní čísla povolená k interakci s botem (s předponou '+' nebo bez ní). Ponechte prázdné pro povolení všech čísel.`}}},messages:{config:{edited:`Nastavení WhatsApp bota bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení WhatsApp bota`}},texts:{aboutWhatsappSettings:`Připojte vyhrazené WhatsApp číslo pro bota. Použijte druhou SIM, eSIM nebo virtuální číslo — nainstalujte WhatsApp (nebo WhatsApp Business) s tímto číslem a naskenujte QR kód níže. Uživatelé pak mohou posílat zprávy na číslo bota ze svého osobního WhatsAppu.`,status:{disconnected:`Nepřipojeno. Povolte plugin a počkejte na QR kód.`,connecting:`Připojování k WhatsAppu...`,qrReady:`Otevřete WhatsApp na telefonu bota (vyhrazené číslo) a naskenujte tento QR kód přes Nastavení > Propojená zařízení > Propojit zařízení.`,connected:`WhatsApp bot je připojen a běží. Uživatelé mohou posílat zprávy na číslo bota.`}},buttons:{logout:`Odpojit a znovu spárovat`}},Oh={headings:{aboutWhatsappSettings:`WhatsApp-Bot-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},allowedPhoneNumbers:{title:`Erlaubte Telefonnummern`,placeholder:`z.B. 1234567890,9876543210`,description:`Kommagetrennte Telefonnummern, die mit dem Bot interagieren dürfen (mit oder ohne '+'-Präfix). Leer lassen, um alle Nummern zuzulassen.`}}},messages:{config:{edited:`WhatsApp-Bot-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der WhatsApp-Bot-Einstellungen fehlgeschlagen`}},texts:{aboutWhatsappSettings:`Verbinden Sie eine dedizierte WhatsApp-Nummer für den Bot. Verwenden Sie eine zweite SIM, eSIM oder virtuelle Nummer — installieren Sie WhatsApp (oder WhatsApp Business) mit dieser Nummer und scannen Sie den QR-Code unten. Benutzer können dann die Bot-Nummer von ihrem persönlichen WhatsApp aus anschreiben.`,status:{disconnected:`Nicht verbunden. Aktivieren Sie das Plugin und warten Sie auf den QR-Code.`,connecting:`Verbindung mit WhatsApp wird hergestellt...`,qrReady:`Öffnen Sie WhatsApp auf dem Telefon des Bots (die dedizierte Nummer) und scannen Sie diesen QR-Code über Einstellungen > Verknüpfte Geräte > Gerät verknüpfen.`,connected:`WhatsApp-Bot ist verbunden und aktiv. Benutzer können die Nummer des Bots anschreiben, um zu chatten.`}},buttons:{logout:`Trennen & neu koppeln`}},kh={headings:{aboutWhatsappSettings:`WhatsApp bot settings`},fields:{config:{enabled:{title:`Enabled`},allowedPhoneNumbers:{title:`Allowed phone numbers`,placeholder:`e.g., 1234567890,9876543210`,description:`Comma-separated phone numbers allowed to interact with the bot (with or without '+' prefix). Leave empty to allow all numbers.`}}},messages:{config:{edited:`WhatsApp bot settings have been updated`,notEdited:`Failed to update WhatsApp bot settings`}},texts:{aboutWhatsappSettings:`Connect a dedicated WhatsApp number for the bot. Use a second SIM, eSIM, or virtual number — install WhatsApp (or WhatsApp Business) with that number and scan the QR code below. Users can then message the bot number from their personal WhatsApp.`,status:{disconnected:`Not connected. Enable the plugin and wait for the QR code.`,connecting:`Connecting to WhatsApp...`,qrReady:`Open WhatsApp on the bot's phone (the dedicated number) and scan this QR code via Settings > Linked Devices > Link a Device.`,connected:`WhatsApp bot is connected and running. Users can message the bot's number to chat.`}},buttons:{logout:`Disconnect & re-pair`}},Ah={headings:{aboutWhatsappSettings:`Configuración del bot de WhatsApp`},fields:{config:{enabled:{title:`Habilitado`},allowedPhoneNumbers:{title:`Números de teléfono permitidos`,placeholder:`p. ej., 1234567890,9876543210`,description:`Números de teléfono separados por comas que pueden interactuar con el bot (con o sin prefijo '+'). Déjelo vacío para permitir todos los números.`}}},messages:{config:{edited:`La configuración del bot de WhatsApp ha sido actualizada`,notEdited:`Error al actualizar la configuración del bot de WhatsApp`}},texts:{aboutWhatsappSettings:`Conecte un número de WhatsApp dedicado para el bot. Use una segunda SIM, eSIM o número virtual: instale WhatsApp (o WhatsApp Business) con ese número y escanee el código QR a continuación. Los usuarios pueden enviar mensajes al número del bot desde su WhatsApp personal.`,status:{disconnected:`No conectado. Habilite el plugin y espere el código QR.`,connecting:`Conectando a WhatsApp...`,qrReady:`Abra WhatsApp en el teléfono del bot (el número dedicado) y escanee este código QR desde Ajustes > Dispositivos vinculados > Vincular un dispositivo.`,connected:`El bot de WhatsApp está conectado y en funcionamiento. Los usuarios pueden enviar mensajes al número del bot para chatear.`}},buttons:{logout:`Desconectar y volver a vincular`}},jh={headings:{aboutWhatsappSettings:`Ustawienia bota WhatsApp`},fields:{config:{enabled:{title:`Wlaczony`},allowedPhoneNumbers:{title:`Dozwolone numery telefonow`,placeholder:`np. 1234567890,9876543210`,description:`Rozdzielone przecinkami numery telefonow uprawnionych do interakcji z botem (z lub bez prefiksu '+'). Pozostaw puste, aby zezwolic wszystkim numerom.`}}},messages:{config:{edited:`Ustawienia bota WhatsApp zostaly zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac ustawien bota WhatsApp`}},texts:{aboutWhatsappSettings:`Polacz dedykowany numer WhatsApp dla bota. Uzyj drugiej karty SIM, eSIM lub wirtualnego numeru - zainstaluj WhatsApp (lub WhatsApp Business) z tym numerem i zeskanuj kod QR ponizej. Uzytkownicy moga nastepnie napisac na numer bota ze swojego osobistego WhatsApp.`,status:{disconnected:`Nie polaczony. Wlacz wtyczke i poczekaj na kod QR.`,connecting:`Laczenie z WhatsApp...`,qrReady:`Otworz WhatsApp na telefonie bota (dedykowany numer) i zeskanuj ten kod QR przez Ustawienia > Polaczone urzadzenia > Polacz urzadzenie.`,connected:`Bot WhatsApp jest polaczony i dziala. Uzytkownicy moga napisac na numer bota, aby czatowac.`}},buttons:{logout:`Rozlacz i sparuj ponownie`}},Mh={headings:{aboutWhatsappSettings:`Nastavenia WhatsApp bota`},fields:{config:{enabled:{title:`Povolený`},allowedPhoneNumbers:{title:`Povolené telefónne čísla`,placeholder:`napr. 1234567890,9876543210`,description:`Čiarkami oddelené telefónne čísla oprávnené interagovať s botom (s alebo bez predpony '+'). Ponechajte prázdne na povolenie všetkých čísel.`}}},messages:{config:{edited:`Nastavenia WhatsApp bota boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia WhatsApp bota`}},texts:{aboutWhatsappSettings:`Pripojte vyhradené WhatsApp číslo pre bota. Použite druhú SIM, eSIM alebo virtuálne číslo — nainštalujte WhatsApp (alebo WhatsApp Business) s týmto číslom a naskenujte QR kód nižšie. Používatelia potom môžu posielať správy na číslo bota zo svojho osobného WhatsAppu.`,status:{disconnected:`Nepripojený. Povoľte plugin a počkajte na QR kód.`,connecting:`Pripájanie k WhatsAppu...`,qrReady:`Otvorte WhatsApp na telefóne bota (vyhradené číslo) a naskenujte tento QR kód cez Nastavenia > Prepojené zariadenia > Prepojiť zariadenie.`,connected:`WhatsApp bot je pripojený a beží. Používatelia môžu posielať správy na číslo bota na chatovanie.`}},buttons:{logout:`Odpojiť a znovu spárovať`}},Nh={"cs-CZ":Dh,"de-DE":Oh,"en-US":kh,"es-ES":Ah,"pl-PL":jh,"sk-SK":Mh},Ph=Tt.extend({allowedPhoneNumbers:Y().nullable()}),Fh=Lt.extend({allowedPhoneNumbers:Y().trim().nullable().default(null)}),Ih=Wt.and(q({type:Z(Gm),allowed_phone_numbers:Y().trim().nullable().optional()})),Lh=Symbol(`FB-Plugin-BuddyWhatsapp`),Rh={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Nh)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{buddyWhatsappPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Lh,{type:Gm,source:`com.fastybird.smart-panel.plugin.buddy-whatsapp`,name:`WhatsApp`,description:`WhatsApp adapter plugin for Buddy module`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Eh},schemas:{pluginConfigSchema:Fh,pluginConfigEditFormSchema:Ph,pluginConfigUpdateReqSchema:Ih},modules:[pn]}],modules:[pn],isCore:!0})}},zh=`data-sources-device-channel-plugin`,Bh=`data-sources-device-channel`,Vh=f({name:`DeviceChannelDataSourceAddForm`,__name:`device-channel-data-source-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=wr({id:n.id,type:Bh,parent:n.parent,parentId:n.parentId}),{devices:g,fetchDevices:_,areLoading:v}=Zi(),{channels:x,fetchChannels:S,areLoading:C}=li({deviceId:c.device}),{properties:w,fetchProperties:E,areLoading:D}=xi({channelId:j(()=>c.channel||void 0)}),O=y({device:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.device.validation.required`),trigger:`change`}],channel:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.channel.validation.required`),trigger:`change`}],property:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.property.validation.required`),trigger:`change`}]}),k=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),ee=j(()=>Vt(x.value.filter(e=>e.device===c.device),[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),te=j(()=>Vt(w.value.filter(e=>e.channel===c.channel),[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name||e.category})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),m(()=>c.device,()=>{c.device&&(C.value||S().catch(e=>{throw new tr(`Something went wrong`,e)}))}),m(()=>c.channel,()=>{c.channel&&(D.value||E().catch(e=>{throw new tr(`Something went wrong`,e)}))}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:O,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[1]||=e=>h(c).device=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.device.placeholder`),name:`device`,loading:h(v),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(k.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.channel.title`),prop:`channel`},{default:d(()=>[F(h(X),{modelValue:h(c).channel,"onUpdate:modelValue":t[2]||=e=>h(c).channel=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.channel.placeholder`),name:`channel`,loading:h(C),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(ee.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.property.title`),prop:`property`},{default:d(()=>[F(h(X),{modelValue:h(c).property,"onUpdate:modelValue":t[3]||=e=>h(c).property=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.property.placeholder`),name:`property`,loading:h(D),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(te.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[4]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Hh=f({name:`DeviceChannelDataSourceEditForm`,__name:`device-channel-data-source-edit-form`,props:{dataSource:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=kr({dataSource:n.dataSource}),{devices:g,fetchDevices:_,areLoading:v}=Zi(),{channels:x,fetchChannels:S,areLoading:C}=li({deviceId:c.device}),{properties:w,fetchProperties:E,areLoading:D}=xi({channelId:c.channel}),O=y({device:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.device.validation.required`),trigger:`change`}],channel:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.channel.validation.required`),trigger:`change`}],property:[{required:!0,message:o(`dataSourcesDeviceChannelPlugin.fields.property.validation.required`),trigger:`change`}]}),k=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),ee=j(()=>Vt(x.value.filter(e=>e.device===c.device),[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),te=j(()=>Vt(w.value.filter(e=>e.channel===c.channel),[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name||e.category})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),m(()=>c.device,()=>{c.device&&(C.value||S().catch(e=>{throw new tr(`Something went wrong`,e)}))},{immediate:!0}),m(()=>c.channel,()=>{c.channel&&(D.value||E().catch(e=>{throw new tr(`Something went wrong`,e)}))},{immediate:!0}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:O,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[1]||=e=>h(c).device=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.device.placeholder`),name:`device`,loading:h(v),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(k.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.channel.title`),prop:`channel`},{default:d(()=>[F(h(X),{modelValue:h(c).channel,"onUpdate:modelValue":t[2]||=e=>h(c).channel=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.channel.placeholder`),name:`channel`,loading:h(C),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(ee.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.property.title`),prop:`property`},{default:d(()=>[F(h(X),{modelValue:h(c).property,"onUpdate:modelValue":t[3]||=e=>h(c).property=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.property.placeholder`),name:`property`,loading:h(D),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(te.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesDeviceChannelPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[4]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesDeviceChannelPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Uh={fields:{device:{title:`Zařízení`,placeholder:`Zařízení zdroje dat`,validation:{required:`Vyberte prosím zařízení zdroje dat`}},channel:{title:`Kanál`,placeholder:`Kanál zdroje dat`,validation:{required:`Vyberte prosím kanál zdroje dat`}},property:{title:`Vlastnost`,placeholder:`Vlastnost zdroje dat`,validation:{required:`Vyberte prosím vlastnost zdroje dat`}},icon:{title:`Ikona`,placeholder:`Ikona zdroje dat`}}},Wh={fields:{device:{title:`Gerät`,placeholder:`Datenquellen-Gerät`,validation:{required:`Bitte wählen Sie ein Datenquellen-Gerät`}},channel:{title:`Kanal`,placeholder:`Datenquellen-Kanal`,validation:{required:`Bitte wählen Sie einen Datenquellen-Kanal`}},property:{title:`Eigenschaft`,placeholder:`Datenquellen-Eigenschaft`,validation:{required:`Bitte wählen Sie eine Datenquellen-Eigenschaft`}},icon:{title:`Symbol`,placeholder:`Datenquellen-Symbol`}}},Gh={fields:{device:{title:`Device`,placeholder:`Data source device`,validation:{required:`Please select data source device`}},channel:{title:`Channel`,placeholder:`Data source channel`,validation:{required:`Please select data source channel`}},property:{title:`Property`,placeholder:`Data source property`,validation:{required:`Please select data source property`}},icon:{title:`Icon`,placeholder:`Data source icon`}}},Kh={fields:{device:{title:`Dispositivo`,placeholder:`Dispositivo de origen de datos`,validation:{required:`Por favor, seleccione un dispositivo de origen de datos`}},channel:{title:`Canal`,placeholder:`Canal de origen de datos`,validation:{required:`Por favor, seleccione un canal de origen de datos`}},property:{title:`Propiedad`,placeholder:`Propiedad de origen de datos`,validation:{required:`Por favor, seleccione una propiedad de origen de datos`}},icon:{title:`Icono`,placeholder:`Icono de origen de datos`}}},qh={fields:{device:{title:`Urzadzenie`,placeholder:`Urzadzenie zrodla danych`,validation:{required:`Prosze wybrac urzadzenie zrodla danych`}},channel:{title:`Kanal`,placeholder:`Kanal zrodla danych`,validation:{required:`Prosze wybrac kanal zrodla danych`}},property:{title:`Wlasciwosc`,placeholder:`Wlasciwosc zrodla danych`,validation:{required:`Prosze wybrac wlasciwosc zrodla danych`}},icon:{title:`Ikona`,placeholder:`Ikona zrodla danych`}}},Jh={fields:{device:{title:`Zariadenie`,placeholder:`Zariadenie zdroja dát`,validation:{required:`Prosím vyberte zariadenie zdroja dát`}},channel:{title:`Kanál`,placeholder:`Kanál zdroja dát`,validation:{required:`Prosím vyberte kanál zdroja dát`}},property:{title:`Vlastnosť`,placeholder:`Vlastnosť zdroja dát`,validation:{required:`Prosím vyberte vlastnosť zdroja dát`}},icon:{title:`Ikona`,placeholder:`Ikona zdroja dát`}}},Yh={"cs-CZ":Uh,"de-DE":Wh,"en-US":Gh,"es-ES":Kh,"pl-PL":qh,"sk-SK":Jh},Xh=Dr.extend({device:Y().uuid(),channel:Y().uuid(),property:Y().uuid(),icon:Y().trim().transform(e=>e===``?null:e).nullable().default(null).optional()}),Zh=Sr.extend({device:Y().uuid(),channel:Y().uuid(),property:Y().uuid(),icon:Y().trim().transform(e=>e===``?null:e).nullable().default(null).optional()}),Qh=_r.extend({device:mr,channel:mr,property:mr,icon:Y().trim().transform(e=>e===``?null:e).nullable().optional()}),$h=fr.and(q({type:Z(Bh),device:Y().uuid(),channel:Y().uuid(),property:Y().uuid(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional()})),eg=pr.and(q({type:Z(Bh),device:Y().uuid().optional(),channel:Y().uuid().optional(),property:Y().uuid().optional(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional()}));gr.and(q({type:Z(Bh),device:Y().uuid(),channel:Y().uuid(),property:Y().uuid(),icon:Y().nullable()}));var tg=Symbol(`FB-Plugin-DataSourcesDeviceChannel`),ng={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Yh)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{dataSourcesDeviceChannelPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(tg,{type:zh,source:`com.fastybird.smart-panel.plugin.data-source-device-channel`,name:`Device channel property data source`,description:`Enables dashboard tiles, pages, etc. to pull real-time data directly from specific channels within your IoT devices. Ideal for visualizing sensor values, statuses, or actuator states in a granular and dynamic way.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:Bh,name:`Device channel property`,components:{dataSourceAddForm:Vh,dataSourceEditForm:Hh},schemas:{dataSourceSchema:Qh,dataSourceAddFormSchema:Xh,dataSourceEditFormSchema:Zh,dataSourceCreateReqSchema:$h,dataSourceUpdateReqSchema:eg}}],modules:[nr],isCore:!0})}},rg=f({name:`InfluxV1ConfigForm`,__name:`influx-v1-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`influxV1Plugin.messages.config.edited`),error:a(`influxV1Plugin.messages.config.notEdited`)}}),f=y({host:[{required:!0,message:a(`influxV1Plugin.fields.config.host.validation.required`),trigger:`change`}],database:[{required:!0,message:a(`influxV1Plugin.fields.config.database.validation.required`),trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`influxV1Plugin.headings.connection`),description:h(a)(`influxV1Plugin.texts.about`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`influxV1Plugin.fields.config.host.title`),prop:`host`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).host,"onUpdate:modelValue":t[0]||=e=>h(s).host=e,placeholder:h(a)(`influxV1Plugin.fields.config.host.placeholder`),name:`host`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`influxV1Plugin.fields.config.database.title`),prop:`database`},{default:d(()=>[F(h(W),{modelValue:h(s).database,"onUpdate:modelValue":t[1]||=e=>h(s).database=e,placeholder:h(a)(`influxV1Plugin.fields.config.database.placeholder`),name:`database`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe),{"content-position":`left`,class:`mt-6!`},{default:d(()=>[v(k(h(a)(`influxV1Plugin.headings.authentication`)),1)]),_:1}),F(h(V),{label:h(a)(`influxV1Plugin.fields.config.username.title`),prop:`username`},{default:d(()=>[F(h(W),{modelValue:h(s).username,"onUpdate:modelValue":t[2]||=e=>h(s).username=e,placeholder:h(a)(`influxV1Plugin.fields.config.username.placeholder`),name:`username`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`influxV1Plugin.fields.config.password.title`),prop:`password`},{default:d(()=>[F(h(W),{modelValue:h(s).password,"onUpdate:modelValue":t[3]||=e=>h(s).password=e,placeholder:h(a)(`influxV1Plugin.fields.config.password.placeholder`),name:`password`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),ig=`influx-v1-plugin`,ag={headings:{connection:`Připojení InfluxDB`,authentication:`Autentizace (volitelné)`},messages:{config:{edited:`Konfigurace InfluxDB byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci InfluxDB`}},texts:{about:`Nakonfigurujte připojení InfluxDB v1 pro ukládání časových řad.`},fields:{config:{host:{title:`Hostitel`,placeholder:`127.0.0.1`,validation:{required:`Hostitel je povinný`}},database:{title:`Databáze`,placeholder:`fastybird`,validation:{required:`Název databáze je povinný`}},username:{title:`Uživatelské jméno`,placeholder:`Ponechte prázdné, pokud není vyžadováno`},password:{title:`Heslo`,placeholder:`Ponechte prázdné, pokud není vyžadováno`}}}},og={headings:{connection:`InfluxDB-Verbindung`,authentication:`Authentifizierung (Optional)`},messages:{config:{edited:`InfluxDB-Konfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der InfluxDB-Konfiguration fehlgeschlagen`}},texts:{about:`Konfigurieren Sie die InfluxDB v1-Verbindung für die Zeitreihendatenspeicherung.`},fields:{config:{host:{title:`Host`,placeholder:`127.0.0.1`,validation:{required:`Host ist erforderlich`}},database:{title:`Datenbank`,placeholder:`fastybird`,validation:{required:`Datenbankname ist erforderlich`}},username:{title:`Benutzername`,placeholder:`Leer lassen, wenn nicht erforderlich`},password:{title:`Passwort`,placeholder:`Leer lassen, wenn nicht erforderlich`}}}},sg={headings:{connection:`InfluxDB Connection`,authentication:`Authentication (Optional)`},messages:{config:{edited:`InfluxDB configuration has been successfully updated`,notEdited:`Failed to update InfluxDB configuration`}},texts:{about:`Configure the InfluxDB v1 connection for time-series data storage.`},fields:{config:{host:{title:`Host`,placeholder:`127.0.0.1`,validation:{required:`Host is required`}},database:{title:`Database`,placeholder:`fastybird`,validation:{required:`Database name is required`}},username:{title:`Username`,placeholder:`Leave empty if not required`},password:{title:`Password`,placeholder:`Leave empty if not required`}}}},cg={headings:{connection:`Conexión de InfluxDB`,authentication:`Autenticación (Opcional)`},messages:{config:{edited:`La configuración de InfluxDB ha sido actualizada correctamente`,notEdited:`Error al actualizar la configuración de InfluxDB`}},texts:{about:`Configure la conexión de InfluxDB v1 para el almacenamiento de datos de series temporales.`},fields:{config:{host:{title:`Host`,placeholder:`127.0.0.1`,validation:{required:`El host es obligatorio`}},database:{title:`Base de datos`,placeholder:`fastybird`,validation:{required:`El nombre de la base de datos es obligatorio`}},username:{title:`Nombre de usuario`,placeholder:`Déjelo vacío si no es necesario`},password:{title:`Contraseña`,placeholder:`Déjelo vacío si no es necesario`}}}},lg={headings:{connection:`Połączenie InfluxDB`,authentication:`Uwierzytelnianie (opcjonalnie)`},messages:{config:{edited:`Konfiguracja InfluxDB została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji InfluxDB`}},texts:{about:`Skonfiguruj połączenie InfluxDB v1 do przechowywania danych szeregów czasowych.`},fields:{config:{host:{title:`Host`,placeholder:`127.0.0.1`,validation:{required:`Host jest wymagany`}},database:{title:`Baza danych`,placeholder:`fastybird`,validation:{required:`Nazwa bazy danych jest wymagana`}},username:{title:`Nazwa użytkownika`,placeholder:`Pozostaw puste, jeśli nie jest wymagane`},password:{title:`Hasło`,placeholder:`Pozostaw puste, jeśli nie jest wymagane`}}}},ug={headings:{connection:`Pripojenie InfluxDB`,authentication:`Autentifikácia (voliteľná)`},messages:{config:{edited:`Konfigurácia InfluxDB bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu InfluxDB`}},texts:{about:`Nakonfigurujte pripojenie InfluxDB v1 na ukladanie časových radov.`},fields:{config:{host:{title:`Hostiteľ`,placeholder:`127.0.0.1`,validation:{required:`Hostiteľ je povinný`}},database:{title:`Databáza`,placeholder:`fastybird`,validation:{required:`Názov databázy je povinný`}},username:{title:`Používateľské meno`,placeholder:`Ponechajte prázdne ak nie je potrebné`},password:{title:`Heslo`,placeholder:`Ponechajte prázdne ak nie je potrebné`}}}},dg={"cs-CZ":ag,"de-DE":og,"en-US":sg,"es-ES":cg,"pl-PL":lg,"sk-SK":ug},fg=Tt.extend({host:Y().min(1),database:Y().min(1),username:Y().optional(),password:Y().optional()}),pg=Lt.extend({host:Y(),database:Y(),username:Y().optional(),password:Y().optional()}),mg=Wt.and(q({type:Z(ig),host:Y().optional(),database:Y().optional(),username:Y().optional(),password:Y().optional()}));Qt.and(q({type:Z(ig),host:Y(),database:Y(),username:Y().optional(),password:Y().optional()}));var hg=Symbol(`FB-Plugin-InfluxV1`),gg={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(dg)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{influxV1Plugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(hg,{type:ig,source:`com.fastybird.smart-panel.plugin.influx-v1`,name:`InfluxDB v1`,description:`InfluxDB 1.x time-series storage backend with retention policies and continuous queries`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://github.com/FastyBird/smart-panel/issues`},elements:[{type:lt,components:{pluginConfigEditForm:rg},schemas:{pluginConfigSchema:pg,pluginConfigEditFormSchema:fg,pluginConfigUpdateReqSchema:mg},modules:[pn]}],modules:[pn],isCore:!1})}},_g={messages:{config:{edited:`Konfigurace úložiště v paměti byla úspěšně aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci úložiště v paměti`}}},vg={messages:{config:{edited:`In-Memory-Speicherkonfiguration wurde erfolgreich aktualisiert`,notEdited:`Aktualisierung der In-Memory-Speicherkonfiguration fehlgeschlagen`}}},yg={messages:{config:{edited:`In-memory storage configuration has been successfully updated`,notEdited:`Failed to update in-memory storage configuration`}}},bg={messages:{config:{edited:`La configuración del almacenamiento en memoria ha sido actualizada correctamente`,notEdited:`Error al actualizar la configuración del almacenamiento en memoria`}}},xg={messages:{config:{edited:`Konfiguracja pamięci tymczasowej została pomyślnie zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji pamięci tymczasowej`}}},Sg={messages:{config:{edited:`Konfigurácia úložiska v pamäti bola úspešne aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu úložiska v pamäti`}}},Cg={"cs-CZ":_g,"de-DE":vg,"en-US":yg,"es-ES":bg,"pl-PL":xg,"sk-SK":Sg},wg=`memory-storage-plugin`,Tg=Lt.extend({}),Eg=Wt.and(q({type:Z(wg)}));Qt.and(q({type:Z(wg)}));var Dg=Symbol(`FB-Plugin-MemoryStorage`),Og={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Cg)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{memoryStoragePlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Dg,{type:wg,source:`com.fastybird.smart-panel.plugin.memory-storage`,name:`In-Memory Storage`,description:`In-memory ring-buffer storage. Data is lost on restart. Used as default fallback.`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://github.com/FastyBird/smart-panel/issues`},elements:[{type:lt,schemas:{pluginConfigSchema:Tg,pluginConfigUpdateReqSchema:Eg},modules:[pn]}],modules:[pn],isCore:!1})}},kg=`data-sources-weather-plugin`,Ag=`data-source-weather-current`,jg=`data-source-weather-forecast-day`,Mg=function(e){return e.TEMPERATURE=`temperature`,e.TEMPERATURE_MIN=`temperature_min`,e.TEMPERATURE_MAX=`temperature_max`,e.FEELS_LIKE=`feels_like`,e.HUMIDITY=`humidity`,e.PRESSURE=`pressure`,e.WEATHER_ICON=`weather_icon`,e.WEATHER_MAIN=`weather_main`,e.WEATHER_DESCRIPTION=`weather_description`,e.WIND_SPEED=`wind_speed`,e}({}),Ng=f({name:`CurrentWeatherDataSourceAddForm`,__name:`current-weather-data-source-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=wr({id:n.id,type:Ag,parent:n.parent,parentId:n.parentId}),{locations:g,fetchLocations:_,areLoading:v}=ei(),x=y({field:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.field.validation.required`),trigger:`change`}]}),S=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),C=j(()=>Object.values(Mg).map(e=>({value:e,label:o(`dataSourcesWeatherPlugin.fieldOptions.${e}`)})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:x,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.locationId.title`),prop:`locationId`},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,loading:h(v),filterable:``,clearable:``},{default:d(()=>[(i(!0),P(A,null,a(S.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`dataSourcesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`},null,8,[`description`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.field.title`),prop:`field`,class:`mt-4`},{default:d(()=>[F(h(X),{modelValue:h(c).field,"onUpdate:modelValue":t[2]||=e=>h(c).field=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.field.placeholder`),name:`field`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[3]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Pg=f({name:`CurrentWeatherDataSourceEditForm`,__name:`current-weather-data-source-edit-form`,props:{dataSource:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=kr({dataSource:n.dataSource}),{locations:g,fetchLocations:_,areLoading:v}=ei(),x=y({field:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.field.validation.required`),trigger:`change`}]}),S=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),C=j(()=>Object.values(Mg).map(e=>({value:e,label:o(`dataSourcesWeatherPlugin.fieldOptions.${e}`)})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:x,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.locationId.title`),prop:`locationId`},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,loading:h(v),filterable:``,clearable:``},{default:d(()=>[(i(!0),P(A,null,a(S.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`dataSourcesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`},null,8,[`description`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.field.title`),prop:`field`,class:`mt-4`},{default:d(()=>[F(h(X),{modelValue:h(c).field,"onUpdate:modelValue":t[2]||=e=>h(c).field=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.field.placeholder`),name:`field`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[3]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Fg=f({name:`ForecastDayDataSourceAddForm`,__name:`forecast-day-data-source-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=wr({id:n.id,type:jg,parent:n.parent,parentId:n.parentId}),{locations:g,fetchLocations:_,areLoading:v}=ei(),x=y({dayOffset:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.required`),trigger:`change`},{type:`number`,min:0,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.min`),trigger:`change`},{type:`number`,max:7,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.max`),trigger:`change`}],field:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.field.validation.required`),trigger:`change`}]}),S=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),C=j(()=>Object.values(Mg).map(e=>({value:e,label:o(`dataSourcesWeatherPlugin.fieldOptions.${e}`)})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:x,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.locationId.title`),prop:`locationId`},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,loading:h(v),filterable:``,clearable:``},{default:d(()=>[(i(!0),P(A,null,a(S.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`dataSourcesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`},null,8,[`description`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.dayOffset.title`),prop:`dayOffset`,class:`mt-4`},{default:d(()=>[F(h(Sn),{modelValue:h(c).dayOffset,"onUpdate:modelValue":t[2]||=e=>h(c).dayOffset=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.dayOffset.placeholder`),min:0,max:7,name:`dayOffset`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.field.title`),prop:`field`},{default:d(()=>[F(h(X),{modelValue:h(c).field,"onUpdate:modelValue":t[3]||=e=>h(c).field=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.field.placeholder`),name:`field`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[4]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Ig=f({name:`ForecastDayDataSourceEditForm`,__name:`forecast-day-data-source-edit-form`,props:{dataSource:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=kr({dataSource:n.dataSource}),{locations:g,fetchLocations:_,areLoading:v}=ei(),x=y({dayOffset:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.required`),trigger:`change`},{type:`number`,min:0,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.min`),trigger:`change`},{type:`number`,max:7,message:o(`dataSourcesWeatherPlugin.fields.dayOffset.validation.max`),trigger:`change`}],field:[{required:!0,message:o(`dataSourcesWeatherPlugin.fields.field.validation.required`),trigger:`change`}]}),S=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name}))),C=j(()=>Object.values(Mg).map(e=>({value:e,label:o(`dataSourcesWeatherPlugin.fieldOptions.${e}`)})));return s(()=>{v.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:x,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.dataSources.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.dataSources.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.locationId.title`),prop:`locationId`},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,loading:h(v),filterable:``,clearable:``},{default:d(()=>[(i(!0),P(A,null,a(S.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`dataSourcesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`},null,8,[`description`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.dayOffset.title`),prop:`dayOffset`,class:`mt-4`},{default:d(()=>[F(h(Sn),{modelValue:h(c).dayOffset,"onUpdate:modelValue":t[2]||=e=>h(c).dayOffset=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.dayOffset.placeholder`),min:0,max:7,name:`dayOffset`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.field.title`),prop:`field`},{default:d(()=>[F(h(X),{modelValue:h(c).field,"onUpdate:modelValue":t[3]||=e=>h(c).field=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.field.placeholder`),name:`field`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dataSourcesWeatherPlugin.fields.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[4]||=e=>h(c).icon=e,placeholder:h(o)(`dataSourcesWeatherPlugin.fields.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Lg={fields:{locationId:{title:`Meteorologická lokace`,placeholder:`Vyberte lokaci`,description:`Vyberte meteorologickou lokaci k zobrazení. Pokud není nastavena, bude použita primární lokace z nastavení počasí.`},field:{title:`Datové pole`,placeholder:`Vyberte pole`,validation:{required:`Vyberte prosím datové pole`}},dayOffset:{title:`Posun dne`,placeholder:`Dní od dneška`,validation:{required:`Zadejte prosím posun dne`,min:`Posun dne musí být alespoň 0`,max:`Posun dne může být maximálně 7`}},icon:{title:`Vlastní ikona`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Teplota`,temperature_min:`Minimální teplota`,temperature_max:`Maximální teplota`,feels_like:`Pocitová teplota`,humidity:`Vlhkost`,pressure:`Tlak`,weather_icon:`Ikona počasí`,weather_main:`Stav počasí`,weather_description:`Popis počasí`,wind_speed:`Rychlost větru`}},Rg={fields:{locationId:{title:`Wetterstandort`,placeholder:`Standort auswählen`,description:`Wählen Sie einen Wetterstandort zur Anzeige. Wenn nicht festgelegt, wird der primäre Standort aus den Wettereinstellungen verwendet.`},field:{title:`Datenfeld`,placeholder:`Feld auswählen`,validation:{required:`Bitte wählen Sie ein Datenfeld`}},dayOffset:{title:`Tagesversatz`,placeholder:`Tage ab heute`,validation:{required:`Bitte geben Sie einen Tagesversatz ein`,min:`Tagesversatz muss mindestens 0 sein`,max:`Tagesversatz darf höchstens 7 sein`}},icon:{title:`Benutzerdefiniertes Symbol`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Temperatur`,temperature_min:`Mindesttemperatur`,temperature_max:`Höchsttemperatur`,feels_like:`Gefühlt wie`,humidity:`Luftfeuchtigkeit`,pressure:`Luftdruck`,weather_icon:`Wettersymbol`,weather_main:`Wetterbedingung`,weather_description:`Wetterbeschreibung`,wind_speed:`Windgeschwindigkeit`}},zg={fields:{locationId:{title:`Weather location`,placeholder:`Select a location`,description:`Select a weather location to display. If not set, the primary location from weather settings will be used.`},field:{title:`Data field`,placeholder:`Select a field`,validation:{required:`Please select a data field`}},dayOffset:{title:`Day offset`,placeholder:`Days from today`,validation:{required:`Please enter a day offset`,min:`Day offset must be at least 0`,max:`Day offset must be at most 7`}},icon:{title:`Custom icon`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Temperature`,temperature_min:`Min temperature`,temperature_max:`Max temperature`,feels_like:`Feels like`,humidity:`Humidity`,pressure:`Pressure`,weather_icon:`Weather icon`,weather_main:`Weather condition`,weather_description:`Weather description`,wind_speed:`Wind speed`}},Bg={fields:{locationId:{title:`Ubicación meteorológica`,placeholder:`Seleccione una ubicación`,description:`Seleccione una ubicación meteorológica para mostrar. Si no se establece, se utilizará la ubicación principal de la configuración meteorológica.`},field:{title:`Campo de datos`,placeholder:`Seleccione un campo`,validation:{required:`Por favor, seleccione un campo de datos`}},dayOffset:{title:`Desplazamiento de días`,placeholder:`Días desde hoy`,validation:{required:`Por favor, introduzca un desplazamiento de días`,min:`El desplazamiento de días debe ser al menos 0`,max:`El desplazamiento de días debe ser como máximo 7`}},icon:{title:`Icono personalizado`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Temperatura`,temperature_min:`Temperatura mínima`,temperature_max:`Temperatura máxima`,feels_like:`Sensación térmica`,humidity:`Humedad`,pressure:`Presión`,weather_icon:`Icono del clima`,weather_main:`Condición climática`,weather_description:`Descripción del clima`,wind_speed:`Velocidad del viento`}},Vg={fields:{locationId:{title:`Lokalizacja pogody`,placeholder:`Wybierz lokalizacje`,description:`Wybierz lokalizacje pogody do wyswietlenia. Jesli nie ustawiono, zostanie uzyta glowna lokalizacja z ustawien pogody.`},field:{title:`Pole danych`,placeholder:`Wybierz pole`,validation:{required:`Prosze wybrac pole danych`}},dayOffset:{title:`Przesuniecie dni`,placeholder:`Dni od dzisiaj`,validation:{required:`Prosze wprowadzic przesuniecie dni`,min:`Przesuniecie dni musi wynosic co najmniej 0`,max:`Przesuniecie dni moze wynosic najwyzej 7`}},icon:{title:`Ikona niestandardowa`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Temperatura`,temperature_min:`Temperatura minimalna`,temperature_max:`Temperatura maksymalna`,feels_like:`Temperatura odczuwalna`,humidity:`Wilgotnosc`,pressure:`Cisnienie`,weather_icon:`Ikona pogody`,weather_main:`Warunki pogodowe`,weather_description:`Opis pogody`,wind_speed:`Predkosc wiatru`}},Hg={fields:{locationId:{title:`Poloha počasia`,placeholder:`Vyberte polohu`,description:`Vyberte polohu počasia na zobrazenie. Ak nie je nastavená, použije sa primárna poloha z nastavení počasia.`},field:{title:`Dátové pole`,placeholder:`Vyberte pole`,validation:{required:`Prosím vyberte dátové pole`}},dayOffset:{title:`Posun dňa`,placeholder:`Počet dní od dnes`,validation:{required:`Prosím zadajte posun dňa`,min:`Posun dňa musí byť aspoň 0`,max:`Posun dňa musí byť maximálne 7`}},icon:{title:`Vlastná ikona`,placeholder:`mdi:thermometer`}},fieldOptions:{temperature:`Teplota`,temperature_min:`Minimálna teplota`,temperature_max:`Maximálna teplota`,feels_like:`Pocitová teplota`,humidity:`Vlhkosť`,pressure:`Tlak`,weather_icon:`Ikona počasia`,weather_main:`Stav počasia`,weather_description:`Popis počasia`,wind_speed:`Rýchlosť vetra`}},Ug={"cs-CZ":Lg,"de-DE":Rg,"en-US":zg,"es-ES":Bg,"pl-PL":Vg,"sk-SK":Hg},Wg=Dr.extend({locationId:Y().uuid().optional().nullable(),field:K(Mg),icon:Y().nullable().optional(),unit:Y().nullable().optional()}),Gg=Sr.extend({locationId:Y().uuid().optional().nullable(),field:K(Mg).optional(),icon:Y().nullable().optional(),unit:Y().nullable().optional()}),Kg=Dr.extend({locationId:Y().uuid().optional().nullable(),dayOffset:G().min(0).max(7),field:K(Mg),icon:Y().nullable().optional(),unit:Y().nullable().optional()}),qg=Sr.extend({locationId:Y().uuid().optional().nullable(),dayOffset:G().min(0).max(7).optional(),field:K(Mg).optional(),icon:Y().nullable().optional(),unit:Y().nullable().optional()}),Jg=_r.extend({locationId:Y().uuid().optional().nullable().default(null),field:K(Mg).default(Mg.TEMPERATURE),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()}),Yg=_r.extend({locationId:Y().uuid().optional().nullable().default(null),dayOffset:G().min(0).max(7).default(1),field:K(Mg).default(Mg.TEMPERATURE_MAX),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()}),Xg=fr.and(q({type:Z(Ag),location_id:Y().uuid().optional().nullable(),field:K(Mg),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()})),Zg=pr.and(q({type:Z(Ag),location_id:Y().uuid().optional().nullable(),field:K(Mg).optional(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()}));gr.and(q({type:Z(Ag),location_id:Y().uuid().optional().nullable(),field:K(Mg),icon:Y().nullable(),unit:Y().nullable()}));var Qg=fr.and(q({type:Z(jg),location_id:Y().uuid().optional().nullable(),day_offset:G().min(0).max(7),field:K(Mg),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()})),$g=pr.and(q({type:Z(jg),location_id:Y().uuid().optional().nullable(),day_offset:G().min(0).max(7).optional(),field:K(Mg).optional(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),unit:Y().trim().transform(e=>e===``?null:e).nullable().optional()}));gr.and(q({type:Z(jg),location_id:Y().uuid().optional().nullable(),day_offset:G().min(0).max(7),field:K(Mg),icon:Y().nullable(),unit:Y().nullable()}));var e_=Symbol(`FB-Plugin-DataSourcesWeather`),t_={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Ug)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{dataSourcesWeatherPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(e_,{type:kg,source:`com.fastybird.smart-panel.plugin.data-source-weather`,name:`Weather data source`,description:`Enables dashboard tiles, pages, and UI elements to pull real-time weather data. Supports current weather conditions and daily forecasts for displaying temperature, humidity, weather icons, and other meteorological information.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:Ag,name:`Day weather`,description:`Displays current day weather data including temperature, humidity, conditions, and more.`,components:{dataSourceAddForm:Ng,dataSourceEditForm:Pg},schemas:{dataSourceSchema:Jg,dataSourceAddFormSchema:Wg,dataSourceEditFormSchema:Gg,dataSourceCreateReqSchema:Xg,dataSourceUpdateReqSchema:Zg}},{type:jg,name:`Forecast weather`,description:`Displays weather forecast data for a specific day (today, tomorrow, or up to 7 days ahead).`,components:{dataSourceAddForm:Fg,dataSourceEditForm:Ig},schemas:{dataSourceSchema:Yg,dataSourceAddFormSchema:Kg,dataSourceEditFormSchema:qg,dataSourceCreateReqSchema:Qg,dataSourceUpdateReqSchema:$g}}],modules:[nr],isCore:!0})}},n_=`devices-home-assistant`,r_=`devices-home-assistant-plugin`,i_=`devices-home-assistant`,a_=`fb.no_entity`,o_=`fb.no_attribute`,s_=`fb.main_state`,c_=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DevicesHomeAssistantException`,this.exception=t}},l_=class extends c_{code;constructor(e,t=null,n=null){super(e,n),this.name=`DevicesHomeAssistantApiException`,this.code=t}},u_=class extends c_{constructor(e,t=null){super(e,t),this.name=`DevicesHomeAssistantValidationException`}},d_=yi.extend({haDeviceId:Y()}),f_=pi.extend({haDeviceId:Y().optional()}),p_=q({entityId:Y(),channelCategory:K(I).optional(),skip:R().optional()}),m_=q({deviceCategory:K(U).optional(),entityOverrides:H(p_).optional()}),h_=Fe([`static`,`derived`,`command`]),g_=q({category:K(gt),name:Y(),haAttribute:Y(),dataType:K(Zt),permissions:H(K(It)),unit:Y().nullable().optional(),format:H(z([Y(),G()])).nullable().optional(),required:R(),currentValue:z([Y(),G(),R()]).nullable().optional(),haEntityId:Y().nullable().optional(),haTransformer:Y().nullable().optional(),isVirtual:R().optional(),virtualType:h_.nullable().optional()}),__=q({category:K(I),name:Y(),confidence:Fe([`high`,`medium`,`low`])}),v_=q({entityId:Y(),domain:Y(),deviceClass:Y().nullable(),currentState:z([Y(),G(),R()]).nullable(),attributes:je(Y(),et()),status:Fe([`mapped`,`partial`,`unmapped`,`skipped`,`incompatible`]),suggestedChannel:__.nullable(),suggestedProperties:H(g_),unmappedAttributes:H(Y()),missingRequiredProperties:H(K(gt)),incompatibleReason:Y().nullable().optional()}),y_=q({type:Fe([`missing_required_channel`,`missing_required_property`,`unsupported_entity`,`unknown_device_class`,`no_mapping_rule`,`incompatible_channel`]),entityId:Y().optional(),message:Y(),suggestion:Y().optional()}),b_=q({category:K(U),name:Y(),confidence:Fe([`high`,`medium`,`low`])}),x_=q({id:Y(),name:Y(),manufacturer:Y().nullable(),model:Y().nullable()}),S_=q({isValid:R(),missingChannelsCount:G(),missingPropertiesCount:G(),fillableWithVirtualCount:G(),missingChannels:H(Y()),missingProperties:je(Y(),H(Y())),autoFilledVirtual:je(Y(),H(Y())),unknownChannels:H(Y()),duplicateChannels:H(Y()),constraintViolations:H(Y())}),C_=q({haDevice:x_,suggestedDevice:b_,entities:H(v_),warnings:H(y_),readyToAdopt:R(),validation:S_.optional()}),w_=q({category:K(gt),haAttribute:Y(),dataType:K(Zt),permissions:H(K(It)),format:H(z([Y(),G()])).nullable().optional(),haEntityId:Y().optional(),haTransformer:Y().nullable().optional()}),T_=q({entityId:Y(),category:K(I),name:Y(),properties:H(w_)}),E_=q({haDeviceId:Y(),name:Y(),category:K(U),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:R().default(!0).optional(),channels:H(T_)}),D_=q({category:Y(),name:Y(),haAttribute:Y(),dataType:Y(),permissions:H(Y()),unit:Y().nullable().optional(),format:H(z([Y(),G()])).nullable().optional(),required:R(),currentValue:z([Y(),G(),R()]).nullable().optional(),haTransformer:Y().nullable().optional()}),O_=q({category:Y(),name:Y(),confidence:Y(),suggestedProperties:H(D_)}),k_=q({helper:q({entityId:Y(),name:Y(),domain:Y()}),suggestedDevice:q({category:Y(),name:Y(),confidence:Y()}),suggestedChannel:O_,suggestedChannels:H(O_).optional(),warnings:H(q({type:Y(),message:Y(),suggestion:Y().optional()})),readyToAdopt:R()}),A_=e=>{let t=m_.safeParse(e);if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate mapping preview request.`);return zt(t.data)},j_=e=>{let t=E_.safeParse(e);if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate adopt device request.`);return zt(t.data)},M_=e=>{let t=E_.safeParse(e);if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate adopt helper request.`);return{entity_id:t.data.haDeviceId,name:t.data.name,category:t.data.category,description:t.data.description??null,enabled:t.data.enabled??!0,channels:t.data.channels.map(e=>({category:e.category,name:e.name,properties:e.properties.map(e=>({category:e.category,ha_attribute:e.haAttribute,data_type:e.dataType,permissions:e.permissions,format:e.format??null,ha_transformer:e.haTransformer??null}))}))}},N_=e=>{let t=C_.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate mapping preview response.`);return t.data},P_=e=>{let t=k_.safeParse(Ct(e));if(!t.success)throw Ut.error(`Helper mapping preview response validation failed with:`,t.error),new u_(`Failed to validate helper mapping preview response.`);let n=t.data,r=(n.suggestedChannels??[n.suggestedChannel]).map((e,t)=>({entityId:t===0?n.helper.entityId:`${n.helper.entityId}#${e.category}`,domain:n.helper.domain,deviceClass:null,currentState:e.suggestedProperties[0]?.currentValue??null,attributes:{},status:`mapped`,suggestedChannel:{category:e.category,name:e.name,confidence:e.confidence},suggestedProperties:e.suggestedProperties.map(e=>({category:e.category,name:e.name,haAttribute:e.haAttribute,dataType:e.dataType,permissions:e.permissions,unit:e.unit??null,format:e.format??null,required:e.required,currentValue:e.currentValue??null,haEntityId:n.helper.entityId,haTransformer:e.haTransformer??null})),unmappedAttributes:[],missingRequiredProperties:[]})),i={haDevice:{id:n.helper.entityId,name:n.helper.name,manufacturer:`Home Assistant`,model:`Helper (${n.helper.domain})`},suggestedDevice:{category:n.suggestedDevice.category,name:n.suggestedDevice.name,confidence:n.suggestedDevice.confidence},entities:r,warnings:n.warnings.map(e=>({type:e.type,entityId:n.helper.entityId,message:e.message,suggestion:e.suggestion})),readyToAdopt:n.readyToAdopt},a=C_.safeParse(i);if(!a.success)throw Ut.error(`Helper response normalization failed with:`,a.error),new u_(`Failed to normalize helper mapping preview response.`);return a.data},F_=()=>{let{t:e}=b(),t=fn(),n=Ke(),r=rt(),i=Ye(),{getElement:a}=hi(),o=i.getStore(qr),s=N(!1),c=N(null);return{isAdopting:s,error:c,adoptDevice:async(i,l=`device`)=>{if(s.value)throw new l_(`Device adoption is already in progress.`);s.value=!0,c.value=null;let u=null;try{let n,r,c;if(l===`helper`){let e=M_(i),a=await t.client.POST(`/${ae}/${n_}/discovered-helpers/adopt`,{body:e});n=a.data,r=a.error,c=a.response}else{let e=j_(i),a=await t.client.POST(`/${ae}/${n_}/discovered-devices/adopt`,{body:e});n=a.data,r=a.error,c=a.response}if(r||c.status<200||c.status>=300){let t=e(`devicesHomeAssistantPlugin.messages.mapping.adoptionError`);throw r&&(t=Gt(r,t)),new l_(t,c.status)}if(n!==void 0&&n.data){s.value=!1;let e=n.data,t=Fi(e,a(e.type)?.schemas?.deviceSchema||Ui);return o.set({id:t.id,data:t}),u=t.id,t}throw new l_(`Device adoption succeeded but no device data was returned.`,c.status)}catch(t){s.value=!1;let i=t;if(u)try{o.unset({id:u})}catch(e){n.error(`[DEVICE ADOPTION] Failed to remove device ${u} from store:`,e)}throw i instanceof u_||i instanceof l_?(c.value=i,r.error(i.message)):(c.value=i,n.error(`[DEVICE ADOPTION] Failed to adopt device:`,i),r.error(e(`devicesHomeAssistantPlugin.messages.mapping.adoptionError`))),i}}}},I_=Symbol(`FB-Plugin-Devices-Home-Assistant-Discovered-Devices`),L_=Symbol(`FB-Plugin-Devices-Home-Assistant-Discovered-Helpers`),R_=Symbol(`FB-Plugin-Devices-Home-Assistant-States`),z_=()=>{let e=Ye().getStore(I_),{firstLoad:t,semaphore:n}=rn(e);return{devices:j(()=>e.findAll()),areLoading:j(()=>!!n.value.fetching.items||!t.value),loaded:j(()=>t.value),fetchDiscoveredDevices:async()=>{await e.fetch()}}},B_=()=>{let e=Ye().getStore(L_);return{helpers:j(()=>e.findAll()),areLoading:j(()=>e.fetching()),loaded:j(()=>e.firstLoadFinished()),fetchDiscoveredHelpers:async()=>{await e.fetch()}}},V_=()=>{let{devices:e,fetchDiscoveredDevices:t,areLoading:n}=z_(),{helpers:r,fetchDiscoveredHelpers:i,areLoading:a}=B_(),o=j(()=>n.value||a.value),s=j(()=>{let t=[],n=Vt(e.value,[e=>e.name.trim()===``?e.id:e.name],[`asc`]).map(e=>({value:e.id,label:e.name.trim()===``?e.id:e.name,type:`device`}));n.length>0&&t.push({label:`Devices`,options:n});let i=Vt(r.value,[e=>e.name.trim()===``?e.entityId:e.name],[`asc`]).map(e=>({value:e.entityId,label:e.name.trim()===``?e.entityId:e.name,type:`helper`}));return i.length>0&&t.push({label:`Helpers`,options:i}),t});return Promise.all([t(),i()]).catch(()=>{}),{itemsOptions:s,areLoading:o}},H_=()=>{let{t:e}=b(),t=fn(),n=Ke(),r=rt(),i=N(null),a=N(!1),o=N(null),s=N(`device`),c=0,l=async(l,u,d)=>{let f=d??s.value;s.value=f;let p=++c;a.value=!0,o.value=null;try{let n;if(f===`helper`){let r=u?.entityOverrides?.[0]?.channelCategory,i=u?{device_category:u.deviceCategory,channel_category:r}:void 0,{data:a,error:o,response:s}=await t.client.POST(`/${ae}/${n_}/discovered-helpers/{entityId}/preview-mapping`,{params:{path:{entityId:l}},body:i});if(p!==c)throw new l_(`Request was superseded by a newer request.`);if(a!==void 0&&a.data){if(p!==c)throw new l_(`Request was superseded by a newer request.`);n=P_(a.data)}else{let t=e(`devicesHomeAssistantPlugin.messages.mapping.previewError`);throw o&&(t=Gt(o,t)),new l_(t,s?.status)}}else{let r=u?A_(u):void 0,{data:i,error:a,response:o}=await t.client.POST(`/${ae}/${n_}/discovered-devices/{id}/preview-mapping`,{params:{path:{id:l}},body:r});if(p!==c)throw new l_(`Request was superseded by a newer request.`);if(i!==void 0&&i.data){if(p!==c)throw new l_(`Request was superseded by a newer request.`);n=N_(i.data)}else{let t=e(`devicesHomeAssistantPlugin.messages.mapping.previewError`);throw a&&(t=Gt(a,t)),new l_(t,o?.status)}}return i.value=n,a.value=!1,n}catch(t){p===c&&(a.value=!1);let i=t;throw p===c&&(i instanceof u_?(o.value=i,r.error(i.message)):i instanceof l_?i.message.includes(`superseded`)||(o.value=i,r.error(i.message)):(o.value=i,n.error(`Failed to fetch mapping preview:`,i),r.error(e(`devicesHomeAssistantPlugin.messages.mapping.previewError`)))),i}};return{preview:i,isLoading:a,error:o,itemType:s,fetchPreview:l,updatePreview:async(e,t,n)=>l(e,t,n??s.value),clearPreview:()=>{c++,i.value=null,o.value=null,a.value=!1}}},U_=({id:e})=>{let{t}=b(),n=rt(),r=Ke(),i=N(Q.NONE),a,{preview:o,isLoading:s,error:c,itemType:l,fetchPreview:u,clearPreview:d}=H_(),{isAdopting:f,error:p,adoptDevice:h}=F_(),{itemsOptions:g,areLoading:_}=V_(),v=e=>{for(let t of g.value){let n=t.options.find(t=>t.value===e);if(n)return n.type}return`device`},x=j(()=>Object.values(U).filter(e=>e!==U.generic).map(e=>({value:e,label:t(`devicesModule.categories.devices.${e}`)}))),S=y({...Ft(d_),id:e,type:i_,category:Object.values(U).find(e=>e!==U.generic)||U.sensor,name:``,description:``,enabled:!0,haDeviceId:``}),C=Mt(w(S)),T=N(void 0),E=N(void 0),D=N(void 0),O=N(void 0),k=N(void 0),A=N(`one`),ee=N(new Set([`one`])),te=N(!1),M=N([]),ne=N(null),re=async(e,s)=>{if(e===`one`){let e=s||T.value;if(!e)throw new u_(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new u_(`Form not valid`);i.value=Q.WORKING;try{let e=v(S.haDeviceId);if(await u(S.haDeviceId,void 0,e),o.value){S.name=o.value.haDevice.name||S.name,ne.value=o.value.suggestedDevice.category;let e=o.value.suggestedDevice.category;e!==U.generic&&(S.category=e)}return A.value=`two`,ee.value.add(`two`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(ie,2e3),e instanceof u_?n.error(e.message):n.error(t(`devicesHomeAssistantPlugin.messages.mapping.previewError`)),e}}else if(e===`two`){let e=s||E.value;if(!e)throw new u_(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new u_(`Form not valid`);i.value=Q.WORKING;try{return await u(S.haDeviceId,{deviceCategory:S.category},l.value),o.value&&!S.name&&(S.name=o.value.haDevice.name||S.name),A.value=`three`,ee.value.add(`three`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(ie,2e3),e instanceof u_?n.error(e.message):n.error(t(`devicesHomeAssistantPlugin.messages.mapping.previewError`)),e}}else if(e===`three`)return A.value=`four`,ee.value.add(`four`),`ok`;else if(e===`four`){let e=s||O.value;if(!e)throw new u_(`Form reference not available`);e.clearValidate(),i.value=Q.WORKING;try{if(o.value){let n=[];for(let e of o.value.entities){let t=M.value?.find(t=>t.entityId===e.entityId);if(t?.skip===!0)continue;let r=t?.channelCategory!==void 0,i=e.suggestedChannel?.category,a=i!==void 0&&i!==I.generic;t&&!t.skip&&!r&&!a&&n.push(e.entityId)}if(n.length>0)throw await e.validate().catch(()=>{}),new u_(t(`devicesHomeAssistantPlugin.messages.mapping.missingChannelCategory`,{entities:n.slice(0,3).join(`, `)+(n.length>3?` (+${n.length-3} more)`:``)}))}if(!await e.validate())throw new u_(`Form not valid`);if(M.value&&M.value.length>0){let e={entityOverrides:M.value,deviceCategory:S.category};await u(S.haDeviceId,e,l.value)}return A.value=`five`,ee.value.add(`five`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(ie,2e3),e instanceof u_?n.error(e.message):n.error(t(`devicesHomeAssistantPlugin.messages.mapping.previewError`)),e}}else if(e===`five`){if(!o.value)throw new u_(`Mapping preview is required for device adoption.`);if(o.value.readyToAdopt!==!0)throw new u_(t(`devicesHomeAssistantPlugin.messages.mapping.notReadyToAdopt`));let e=s||k.value;if(!e)throw new u_(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new u_(`Form not valid`);let c=d_.safeParse(S);if(!c.success)throw r.error(`Schema validation failed with:`,c.error),new u_(`Failed to validate create device model.`);i.value=Q.WORKING;let u=t(`devicesHomeAssistantPlugin.messages.devices.notCreated`,{device:S.name});try{if(!o.value||o.value.readyToAdopt!==!0)throw new u_(t(`devicesHomeAssistantPlugin.messages.mapping.notReadyToAdopt`));let e=o.value.entities.filter(e=>{if(e.status===`skipped`||e.status===`incompatible`)return!1;let t=M.value?.find(t=>t.entityId===e.entityId);return!(t?.skip||!e.suggestedChannel&&!t?.channelCategory||(t?.channelCategory||e.suggestedChannel?.category)===I.generic||!e.suggestedProperties||e.suggestedProperties.length===0)}).map(e=>{let t=M.value?.find(t=>t.entityId===e.entityId)?.channelCategory||e.suggestedChannel.category,n=e.suggestedChannel?.name||e.entityId;return{entityId:e.entityId,category:t,name:n,properties:e.suggestedProperties.map(t=>({category:t.category,haAttribute:t.haAttribute,dataType:t.dataType,permissions:t.permissions,format:t.format??null,haEntityId:t.haEntityId??e.entityId,haTransformer:t.haTransformer??null}))}});return await h({haDeviceId:S.haDeviceId,name:S.name,category:S.category,description:S.description??null,enabled:S.enabled,channels:e},l.value),i.value=Q.OK,a=window.setTimeout(ie,2e3),n.success(t(`devicesHomeAssistantPlugin.messages.mapping.adoptionSuccess`,{device:S.name})),`added`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(ie,2e3),!(e instanceof l_)&&!(e instanceof u_)&&!(e instanceof ui)&&(r.error(`Unexpected error during device adoption:`,e),n.error(u)),e}}else throw new u_(`Unknown step`)},ie=()=>{window.clearTimeout(a),i.value=Q.NONE};return m(S,()=>{te.value=!(0,Ka.isEqual)(w(S),C)}),m(()=>S.haDeviceId,(e,t)=>{e!==t&&(d(),M.value=[])}),m(()=>o.value,e=>{e&&(S.name||=e.haDevice.name||S.name)}),{categoriesOptions:x,activeStep:A,reachedSteps:ee,preview:o,suggestedCategory:ne,isPreviewLoading:s,previewError:c,isAdopting:f,adoptionError:p,itemsOptions:g,itemsOptionsLoading:_,entityOverrides:M,model:S,stepOneFormEl:T,stepTwoFormEl:E,stepThreeFormEl:D,stepFourFormEl:O,stepFiveFormEl:k,formChanged:te,submitStep:re,clear:ie,clearPreview:d,formResult:i}},W_={class:`space-y-4`},G_={class:`font-semibold`},K_=f({__name:`category-selection-step`,props:{model:{},categoriesOptions:{},suggestedCategory:{}},setup(e,{expose:t}){let{t:n}=b(),r=N(void 0),o=y({category:[{required:!0,message:n(`devicesHomeAssistantPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return t({stepTwoFormEl:r}),(t,s)=>(i(),P(`div`,W_,[F(h(L),{type:`info`,title:h(n)(`devicesHomeAssistantPlugin.headings.device.categorySelection`),description:h(n)(`devicesHomeAssistantPlugin.messages.categorySelection.description`),closable:!1,"show-icon":``},null,8,[`title`,`description`]),F(h(B),{ref_key:`stepTwoFormEl`,ref:r,model:e.model,rules:o,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(n)(`devicesHomeAssistantPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:e.model.category,"onUpdate:modelValue":s[0]||=t=>e.model.category=t,placeholder:h(n)(`devicesHomeAssistantPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(e.categoriesOptions,t=>(i(),T(h(J),{key:t.value,label:t.label,value:t.value},{default:d(()=>[t.value===e.suggestedCategory?(i(),P(A,{key:0},[D(`span`,G_,k(t.label),1),F(h(ct),{size:`small`,type:`success`,class:`ml-2`},{default:d(()=>[v(k(h(n)(`devicesHomeAssistantPlugin.labels.suggested`)),1)]),_:1})],64)):(i(),P(A,{key:1},[v(k(t.label),1)],64))]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),e.model.category?(i(),T(h(L),{key:0,type:`info`,title:h(n)(`devicesModule.fields.devices.category.description`),description:h(n)(`devicesModule.texts.devices.description.${e.model.category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)]),_:1},8,[`model`,`rules`])]))}}),q_={class:`font-semibold`},J_={class:`grid grid-cols-2 md:grid-cols-4 gap-4 text-center`},Y_={class:`text-2xl font-bold text-green-600`},X_={class:`text-sm text-gray-500`},Z_={class:`text-2xl font-bold text-yellow-600`},Q_={class:`text-sm text-gray-500`},$_={class:`text-2xl font-bold text-red-600`},ev={class:`text-sm text-gray-500`},tv={class:`text-2xl font-bold text-blue-600`},nv={class:`text-sm text-gray-500`},rv=f({__name:`device-configuration-step`,props:{model:{},preview:{},entityOverrides:{}},setup(e,{expose:t}){let n=e,{t:r}=b(),a=N(void 0),o=y({name:[{required:!0,message:r(`devicesHomeAssistantPlugin.fields.devices.name.validation.required`),trigger:`change`}]}),s=j(()=>n.preview?n.preview.entities.filter(e=>e.status===`mapped`).length:0),c=j(()=>n.preview?n.preview.entities.filter(e=>e.status===`partial`).length:0),l=j(()=>n.preview?n.preview.entities.filter(e=>e.status===`unmapped`).length:0),u=j(()=>n.preview?n.preview.entities.filter(e=>e.status===`skipped`||n.entityOverrides?.find(t=>t.entityId===e.entityId)?.skip===!0).length:0);return t({stepFourFormEl:a}),(t,n)=>(i(),T(h(B),{ref_key:`stepFourFormEl`,ref:a,model:e.model,rules:o,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(r)(`devicesHomeAssistantPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:e.model.name,"onUpdate:modelValue":n[0]||=t=>e.model.name=t,placeholder:h(r)(`devicesHomeAssistantPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(r)(`devicesHomeAssistantPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:e.model.description,"onUpdate:modelValue":n[1]||=t=>e.model.description=t,placeholder:h(r)(`devicesHomeAssistantPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(r)(`devicesHomeAssistantPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:e.model.enabled,"onUpdate:modelValue":n[2]||=t=>e.model.enabled=t,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(xt),{shadow:`never`,"header-class":`py-2! px-4!`,"body-class":`px-0!`},{header:d(()=>[D(`div`,q_,[v(k(h(r)(`devicesHomeAssistantPlugin.fields.mapping.totalEntities`))+`: `,1),F(h(ct),{type:`info`,size:`small`},{default:d(()=>[v(k(e.preview?.entities.length??0),1)]),_:1})])]),default:d(()=>[D(`div`,J_,[D(`div`,null,[D(`div`,Y_,k(s.value),1),D(`div`,X_,k(h(r)(`devicesHomeAssistantPlugin.fields.mapping.mapped`)),1)]),D(`div`,null,[D(`div`,Z_,k(c.value),1),D(`div`,Q_,k(h(r)(`devicesHomeAssistantPlugin.fields.mapping.partial`)),1)]),D(`div`,null,[D(`div`,$_,k(l.value),1),D(`div`,ev,k(h(r)(`devicesHomeAssistantPlugin.fields.mapping.unmapped`)),1)]),D(`div`,null,[D(`div`,tv,k(u.value),1),D(`div`,nv,k(h(r)(`devicesHomeAssistantPlugin.fields.mapping.excluded`)),1)])])]),_:1})]),_:1},8,[`model`,`rules`]))}}),iv={class:`flex items-center gap-2`},av={key:0,class:`text-sm text-gray-500 mt-2`},ov={class:`flex flex-col gap-2`},sv={class:`grid grid-cols-[auto_1fr] gap-x-4 my-0`},cv={class:`m-0 inline-block font-bold`},lv={key:0},uv={key:1,class:`m-0`},dv={key:2},fv={key:3,class:`m-0`},pv={class:`m-0`},mv=f({__name:`device-selection-step`,props:{model:{},itemsOptions:{},itemsOptionsLoading:{type:Boolean}},emits:[`device-change`],setup(e,{expose:t,emit:n}){let r=e,o=n,{t:s}=b(),{devices:c}=z_(),{helpers:l}=B_(),u=j(()=>r.itemsOptions.reduce((e,t)=>e+t.options.length,0)),f=j(()=>{if(!r.model.haDeviceId)return null;let e=c.value.find(e=>e.id===r.model.haDeviceId);if(e)return{type:`device`,name:e.name,entitiesCount:e.entities.length,adoptedDeviceId:e.adoptedDeviceId};let t=l.value.find(e=>e.entityId===r.model.haDeviceId);return t?{type:`helper`,name:t.name,domain:t.domain,adoptedDeviceId:t.adoptedDeviceId}:null}),p=y({haDeviceId:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.devices.haDeviceId.validation.required`),trigger:`change`}]}),m=e=>{o(`device-change`,e)},_=N(void 0);return t({stepOneFormEl:_}),(t,n)=>(i(),T(h(B),{ref_key:`stepOneFormEl`,ref:_,model:e.model,rules:p,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{prop:`haDeviceId`},{default:d(()=>[F(h(X),{modelValue:e.model.haDeviceId,"onUpdate:modelValue":n[0]||=t=>e.model.haDeviceId=t,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.devices.haDeviceId.placeholder`),loading:e.itemsOptionsLoading,disabled:u.value===0,name:`haDeviceId`,filterable:``,onChange:m},{default:d(()=>[(i(!0),P(A,null,a(e.itemsOptions,e=>(i(),T(h(an),{key:e.label,label:e.label},{default:d(()=>[(i(!0),P(A,null,a(e.options,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},{default:d(()=>[D(`span`,iv,[F(h(ct),{type:e.type===`device`?`primary`:`success`,size:`small`},{default:d(()=>[v(k(e.type===`device`?`Device`:`Helper`),1)]),_:2},1032,[`type`]),v(` `+k(e.label),1)])]),_:2},1032,[`label`,`value`]))),128))]),_:2},1032,[`label`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`]),!e.itemsOptionsLoading&&u.value===0?(i(),P(`div`,av,k(h(s)(`devicesHomeAssistantPlugin.messages.devices.noDiscoveredDevices`)),1)):g(``,!0)]),_:1}),D(`div`,ov,[f.value?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesHomeAssistantPlugin.headings.device.deviceInformation`),closable:!1,"show-icon":``},{default:d(()=>[D(`dl`,sv,[D(`dt`,null,k(h(s)(`devicesHomeAssistantPlugin.fields.devices.name.title`))+`:`,1),D(`dd`,cv,k(f.value.name),1),f.value.type===`device`?(i(),P(`dt`,lv,k(h(s)(`devicesHomeAssistantPlugin.fields.devices.entities.title`))+`: `,1)):g(``,!0),f.value.type===`device`?(i(),P(`dd`,uv,k(f.value.entitiesCount),1)):g(``,!0),f.value.type===`helper`?(i(),P(`dt`,dv,k(h(s)(`devicesHomeAssistantPlugin.fields.devices.domain.title`))+`: `,1)):g(``,!0),f.value.type===`helper`?(i(),P(`dd`,fv,k(f.value.domain),1)):g(``,!0),D(`dt`,null,k(h(s)(`devicesHomeAssistantPlugin.fields.devices.type.title`))+`:`,1),D(`dd`,pv,[F(h(ct),{type:f.value.type===`device`?`primary`:`success`,size:`small`},{default:d(()=>[v(k(f.value.type===`device`?`Device`:`Helper`),1)]),_:1},8,[`type`])])])]),_:1},8,[`title`])):g(``,!0),f.value&&f.value.adoptedDeviceId?(i(),T(h(L),{key:1,type:`warning`,title:h(s)(`devicesHomeAssistantPlugin.messages.devices.alreadyAdopted`),description:h(s)(`devicesHomeAssistantPlugin.messages.devices.alreadyAdoptedDescription`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)])]),_:1},8,[`model`,`rules`]))}}),hv={key:0,class:`text-center py-8 text-gray-500`},gv={class:`text-sm mt-2`},_v={key:1,class:`space-y-4`},vv={class:`flex items-center gap-3 mb-3`},yv={class:`flex-1`},bv={class:`font-semibold`},xv={class:`text-sm text-gray-500 ml-2`},Sv=f({__name:`mapping-customization-step`,props:{preview:{},isPreviewLoading:{type:Boolean},entityOverrides:{}},emits:[`update-overrides`],setup(e,{expose:t,emit:n}){let r=e,o=n,{t:s}=b(),c=e=>e.replace(/[.\[\]]/g,`_`),u=e=>{let t=r.preview?.entities.find(t=>t.entityId===e),n=r.entityOverrides?.find(t=>t.entityId===e);if(n?.skip===!0)return!1;if(n?.channelCategory||n&&!n.skip&&!n.channelCategory)return!0;let i=t?.suggestedChannel?.category;return i?i!==I.generic:!1},f=e=>{let t=r.entityOverrides?.find(t=>t.entityId===e);if(t?.channelCategory)return t.channelCategory;let n=(r.preview?.entities.find(t=>t.entityId===e))?.suggestedChannel?.category;if(n&&n!==I.generic)return n},p=y({});m(()=>[r.entityOverrides,r.preview],()=>{if(r.preview)for(let e of r.preview.entities){let t=e.entityId,n=`category_${c(t)}`;u(t)?p[n]=f(t):delete p[n]}else{let e=Object.keys(p).filter(e=>e.startsWith(`category_`));for(let t of e)delete p[t]}},{immediate:!0,deep:!0});let _=N(void 0),x=j(()=>{let e={};if(r.preview)for(let t of r.preview.entities){let n=t.entityId,r=`category_${c(n)}`;u(n)&&!f(n)&&(e[r]=[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.mapping.suggestedChannel.validation.required`),trigger:`change`}])}return e}),S=e=>{let t=`category_${c(e)}`;return x.value[t]||[]};t({stepThreeFormEl:_,resetForm:()=>{let e=Object.keys(p).filter(e=>e.startsWith(`category_`));for(let t of e)delete p[t];_.value?.resetFields()}});let C=j(()=>Object.values(I).filter(e=>e!==I.generic).map(e=>({value:e,label:s(`devicesModule.categories.channels.${e}`)}))),w=(e,t)=>{let n=[...r.entityOverrides||[]],i=n.findIndex(t=>t.entityId===e),a=(r.preview?.entities.find(t=>t.entityId===e))?.suggestedChannel?.category,s=a&&a!==I.generic;if(t)if(i>=0){let t=n[i];t?.channelCategory?(n[i]={entityId:e,channelCategory:t.channelCategory},p[`category_${c(e)}`]=t.channelCategory):s?(n.splice(i,1),p[`category_${c(e)}`]=a):(n[i]={entityId:e},p[`category_${c(e)}`]=void 0)}else s?p[`category_${c(e)}`]=a:(n.push({entityId:e}),p[`category_${c(e)}`]=void 0);else{if(i>=0){let e=n[i];e&&(n[i]={...e,skip:!0})}else n.push({entityId:e,skip:!0});delete p[`category_${c(e)}`]}o(`update-overrides`,n)},E=e=>{let t=r.entityOverrides?.find(t=>t.entityId===e);return t!==void 0&&!t.skip&&!t.channelCategory},O=(e,t)=>{let n=[...r.entityOverrides||[]],i=n.findIndex(t=>t.entityId===e);if(i>=0){let e=n[i];e&&(n[i]={...e,channelCategory:t,skip:!1})}else n.push({entityId:e,channelCategory:t});p[`category_${c(e)}`]=t,o(`update-overrides`,n)};return(t,n)=>e.preview?(i(),P(`div`,_v,[F(h(L),{type:`info`,title:h(s)(`devicesHomeAssistantPlugin.headings.device.mappingCustomization`),description:h(s)(`devicesHomeAssistantPlugin.texts.mapping.customizationDescription`),closable:!1,"show-icon":``},null,8,[`title`,`description`]),F(h(B),{ref_key:`stepThreeFormEl`,ref:_,model:p,rules:x.value,"label-position":`top`},{default:d(()=>[(i(!0),P(A,null,a(e.preview.entities,e=>(i(),P(`div`,{key:e.entityId},[D(`div`,vv,[F(h(Nt),{"model-value":u(e.entityId),onChange:t=>w(e.entityId,t===!0)},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.use`)),1)]),_:1},8,[`model-value`,`onChange`]),D(`div`,yv,[D(`span`,bv,k(e.entityId),1),F(h(ct),{type:e.status===`mapped`?`success`:e.status===`partial`?`warning`:`danger`,size:`small`,class:`ml-2`},{default:d(()=>[v(k(e.status),1)]),_:2},1032,[`type`]),D(`span`,xv,`(`+k(e.domain)+`)`,1)])]),u(e.entityId)||E(e.entityId)?(i(),T(h(V),{key:0,label:h(s)(`devicesHomeAssistantPlugin.fields.mapping.suggestedChannel.title`),prop:`category_${c(e.entityId)}`,required:!f(e.entityId),rules:S(e.entityId)},{default:d(()=>[F(h(X),{"model-value":f(e.entityId),placeholder:h(s)(`devicesHomeAssistantPlugin.fields.devices.category.placeholder`),onChange:t=>O(e.entityId,t)},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`model-value`,`placeholder`,`onChange`])]),_:2},1032,[`label`,`prop`,`required`,`rules`])):g(``,!0)]))),128))]),_:1},8,[`model`,`rules`])])):(i(),P(`div`,hv,[F(h(l),{size:48,class:`mb-4`},{default:d(()=>[F(h(ne),{icon:`mdi:information-outline`})]),_:1}),D(`p`,null,k(h(s)(`devicesHomeAssistantPlugin.messages.mapping.noPreview`)),1),D(`p`,gv,k(h(s)(`devicesHomeAssistantPlugin.messages.mapping.selectDeviceFirst`)),1)]))}}),Cv={class:`flex items-center justify-between`},wv={class:`flex items-center gap-2`},Tv={class:`font-semibold`},Ev={class:`flex items-center gap-2 text-sm text-gray-500`},Dv={key:0},Ov={key:1},kv={key:0,class:`mb-3`},Av={class:`flex items-center gap-2 mb-2`},jv={class:`font-medium`},Mv={class:`text-sm text-gray-600`},Nv={key:1,class:`mb-3`},Pv={class:`font-medium mb-2`},Fv={class:`grid grid-cols-2 gap-2 text-sm`},Iv={class:`text-gray-600`},Lv={key:2,class:`text-gray-400`},Rv={key:2,class:`text-sm text-gray-500`},zv={class:`font-medium`},Bv={key:3,class:`mt-2`},Vv={key:4,class:`mt-2`},Hv=f({__name:`entity-mapping-card`,props:{entity:{}},setup(e){let t=e,{t:n}=b(),r=j(()=>{switch(t.entity.status){case`mapped`:return`success`;case`partial`:return`warning`;case`unmapped`:return`danger`;case`skipped`:return`info`;case`incompatible`:return`warning`;default:return`info`}}),o=j(()=>{if(!t.entity.suggestedChannel)return`info`;switch(t.entity.suggestedChannel.confidence){case`high`:return`success`;case`medium`:return`warning`;case`low`:return`danger`;default:return`info`}}),s=e=>{switch(e){case`static`:return`info`;case`derived`:return`success`;case`command`:return`warning`;default:return`info`}},c=e=>{switch(e){case`static`:return n(`devicesHomeAssistantPlugin.fields.mapping.virtualTypes.static`);case`derived`:return n(`devicesHomeAssistantPlugin.fields.mapping.virtualTypes.derived`);case`command`:return n(`devicesHomeAssistantPlugin.fields.mapping.virtualTypes.command`);default:return n(`devicesHomeAssistantPlugin.fields.mapping.virtualTypes.virtual`)}};return(t,l)=>(i(),T(h(xt),{shadow:`never`,class:`mb-2`,"header-class":`py-2! px-4!`,"body-class":`py-2! px-4!`},{header:d(()=>[D(`div`,Cv,[D(`div`,wv,[D(`span`,Tv,k(e.entity.entityId),1),F(h(ct),{type:r.value,size:`small`},{default:d(()=>[v(k(e.entity.status),1)]),_:1},8,[`type`])]),D(`div`,Ev,[D(`span`,null,k(e.entity.domain),1),e.entity.deviceClass?(i(),P(`span`,Dv,`•`)):g(``,!0),e.entity.deviceClass?(i(),P(`span`,Ov,k(e.entity.deviceClass),1)):g(``,!0)])])]),default:d(()=>[e.entity.suggestedChannel?(i(),P(`div`,kv,[D(`div`,Av,[D(`span`,jv,k(h(n)(`devicesHomeAssistantPlugin.fields.mapping.suggestedChannel.title`))+`:`,1),D(`span`,null,k(e.entity.suggestedChannel.name),1),F(h(ct),{type:o.value,size:`small`},{default:d(()=>[v(k(e.entity.suggestedChannel.confidence),1)]),_:1},8,[`type`])]),D(`div`,Mv,k(h(n)(`devicesModule.categories.channels.${e.entity.suggestedChannel.category}`)),1)])):g(``,!0),e.entity.suggestedProperties.length>0?(i(),P(`div`,Nv,[D(`div`,Pv,k(h(n)(`devicesHomeAssistantPlugin.fields.mapping.properties`))+`:`,1),D(`div`,Fv,[(i(!0),P(A,null,a(e.entity.suggestedProperties,e=>(i(),P(`div`,{key:`${e.category}-${e.haAttribute}`,class:`flex items-center gap-2`},[D(`span`,Iv,k(e.name)+`:`,1),e.isVirtual?(i(),T(h(ct),{key:0,size:`small`,type:s(e.virtualType),effect:`plain`},{default:d(()=>[v(k(c(e.virtualType)),1)]),_:2},1032,[`type`])):e.currentValue!==null&&e.currentValue!==void 0?(i(),T(h(ct),{key:1,size:`small`,type:`info`},{default:d(()=>[v(k(e.currentValue),1)]),_:2},1024)):(i(),P(`span`,Lv,`—`))]))),128))])])):g(``,!0),e.entity.unmappedAttributes.length>0?(i(),P(`div`,Rv,[D(`span`,zv,k(h(n)(`devicesHomeAssistantPlugin.fields.mapping.unmappedAttributes`))+`:`,1),v(` `+k(e.entity.unmappedAttributes.join(`, `)),1)])):g(``,!0),e.entity.missingRequiredProperties.length>0?(i(),P(`div`,Bv,[F(h(L),{type:`warning`,title:h(n)(`devicesHomeAssistantPlugin.fields.mapping.missingRequiredProperties`),closable:!1,"show-icon":``,description:e.entity.missingRequiredProperties.map(e=>h(n)(`devicesModule.categories.channelsProperties.${e}`)).join(`, `)},null,8,[`title`,`description`])])):g(``,!0),e.entity.status===`incompatible`&&e.entity.incompatibleReason?(i(),P(`div`,Vv,[F(h(L),{type:`info`,title:h(n)(`devicesHomeAssistantPlugin.fields.mapping.incompatibleChannel`),closable:!1,"show-icon":``,description:e.entity.incompatibleReason},null,8,[`title`,`description`])])):g(``,!0)]),_:1}))}}),Uv={class:`flex items-center justify-between`},Wv={class:`font-semibold`},Gv={class:`grid grid-cols-2 md:grid-cols-5 gap-4 text-center`},Kv={class:`text-2xl font-bold text-green-600`},qv={class:`text-sm text-gray-500`},Jv={class:`text-2xl font-bold text-yellow-600`},Yv={class:`text-sm text-gray-500`},Xv={class:`text-2xl font-bold text-red-600`},Zv={class:`text-sm text-gray-500`},Qv={class:`text-2xl font-bold text-gray-600`},$v={class:`text-sm text-gray-500`},ey={class:`text-2xl font-bold text-orange-600`},ty={class:`text-sm text-gray-500`},ny={class:`grid grid-cols-1 gap-4 text-sm mx-4`},ry={class:`font-medium`},iy={class:`ml-2`},ay={class:`font-medium`},oy={class:`ml-2`},sy={key:0},cy={class:`font-medium`},ly={class:`ml-2`},uy={key:1},dy={class:`font-medium`},fy={class:`ml-2`},py={key:2},my={class:`font-medium`},hy=f({__name:`mapping-summary`,props:{preview:{}},emits:[`open-debug`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=j(()=>n.preview.entities.filter(e=>e.status===`mapped`).length),s=j(()=>n.preview.entities.filter(e=>e.status===`partial`).length),c=j(()=>n.preview.entities.filter(e=>e.status===`unmapped`).length),l=j(()=>n.preview.entities.filter(e=>e.status===`skipped`).length),u=j(()=>n.preview.entities.filter(e=>e.status===`incompatible`).length),f=j(()=>n.preview.validation?.fillableWithVirtualCount??0),p=j(()=>{switch(n.preview.suggestedDevice.confidence){case`high`:return`success`;case`medium`:return`warning`;case`low`:return`danger`;default:return`info`}});return(t,n)=>(i(),T(h(xt),{shadow:`never`,"header-class":`py-2! px-4!`,"body-class":`px-0!`},{header:d(()=>[D(`div`,Uv,[D(`div`,Wv,k(h(a)(`devicesHomeAssistantPlugin.headings.mapping.summary`)),1),F(h(E),{type:`info`,size:`small`,plain:``,onClick:n[0]||=e=>r(`open-debug`)},{icon:d(()=>[F(h(ne),{icon:`mdi:bug-outline`})]),default:d(()=>[v(` `+k(h(a)(`devicesHomeAssistantPlugin.buttons.debug`)),1)]),_:1})])]),default:d(()=>[D(`div`,Gv,[D(`div`,null,[D(`div`,Kv,k(o.value),1),D(`div`,qv,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.mapped`)),1)]),D(`div`,null,[D(`div`,Jv,k(s.value),1),D(`div`,Yv,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.partial`)),1)]),D(`div`,null,[D(`div`,Xv,k(c.value),1),D(`div`,Zv,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.unmapped`)),1)]),D(`div`,null,[D(`div`,Qv,k(l.value),1),D(`div`,$v,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.skipped`)),1)]),D(`div`,null,[D(`div`,ey,k(u.value),1),D(`div`,ty,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.incompatible`)),1)])]),F(h(fe)),D(`div`,ny,[D(`div`,null,[D(`span`,ry,k(h(a)(`devicesHomeAssistantPlugin.fields.devices.name.title`))+`:`,1),D(`span`,iy,k(e.preview.haDevice.name),1)]),D(`div`,null,[D(`span`,ay,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.suggestedCategory`))+`:`,1),D(`span`,oy,k(h(a)(`devicesModule.categories.devices.${e.preview.suggestedDevice.category}`)),1),F(h(ct),{type:p.value,size:`small`,class:`ml-2`},{default:d(()=>[v(k(e.preview.suggestedDevice.confidence),1)]),_:1},8,[`type`])]),e.preview.haDevice.manufacturer?(i(),P(`div`,sy,[D(`span`,cy,k(h(a)(`devicesHomeAssistantPlugin.fields.devices.manufacturer.title`))+`:`,1),D(`span`,ly,k(e.preview.haDevice.manufacturer),1)])):g(``,!0),e.preview.haDevice.model?(i(),P(`div`,uy,[D(`span`,dy,k(h(a)(`devicesHomeAssistantPlugin.fields.devices.model.title`))+`:`,1),D(`span`,fy,k(e.preview.haDevice.model),1)])):g(``,!0),f.value>0?(i(),P(`div`,py,[D(`span`,my,k(h(a)(`devicesHomeAssistantPlugin.fields.mapping.validation.autoFilled`))+`:`,1),F(h(ct),{type:`info`,size:`small`,class:`ml-2`},{default:d(()=>[v(k(f.value),1)]),_:1})])):g(``,!0)])]),_:1}))}}),gy={class:`space-y-2`},_y={class:`mb-1`},vy={key:0},yy=f({__name:`mapping-warnings`,props:{warnings:{}},setup(e){let{t}=b(),n=e=>{switch(e){case`missing_required_channel`:case`missing_required_property`:return`error`;case`unsupported_entity`:return`warning`;case`unknown_device_class`:return`info`;default:return`warning`}};return(r,o)=>e.warnings.length>0?(i(),T(h(en),{key:0},{default:d(()=>[F(h(pt),{title:h(t)(`devicesHomeAssistantPlugin.headings.mapping.warnings`,{count:e.warnings.length})},{default:d(()=>[D(`div`,gy,[(i(!0),P(A,null,a(e.warnings,(e,t)=>(i(),T(h(L),{key:t,type:n(e.type),title:e.message,closable:!1,"show-icon":``},ce({_:2},[e.entityId?{name:`title`,fn:d(()=>[v(k(e.entityId),1)]),key:`0`}:void 0,e.entityId?{name:`default`,fn:d(()=>[D(`div`,_y,k(e.message),1),e.suggestion?(i(),P(`small`,vy,k(e.suggestion),1)):g(``,!0)]),key:`1`}:{name:`default`,fn:d(()=>[v(k(e.suggestion),1)]),key:`2`}]),1032,[`type`,`title`]))),128))])]),_:1},8,[`title`])]),_:1})):g(``,!0)}}),by={key:0,class:`flex justify-center items-center py-8`},xy={class:`ml-2`},Sy={key:2,class:`space-y-4`},Cy={class:`text-lg font-semibold mb-3`},wy={class:`space-y-2`},Ty={class:`mb-4`},Ey={class:`flex justify-between`},Dy={key:3,class:`text-center py-8 text-gray-500`},Oy={class:`text-sm mt-2`},ky=f({__name:`mapping-preview-step`,props:{preview:{},isPreviewLoading:{type:Boolean},previewError:{}},setup(e){let t=e,{t:n}=b(),r=rt(),o=N(!1),s=j(()=>{if(!t.preview)return``;let e={_notice:`This data can be shared with developers to help diagnose mapping issues`,_timestamp:new Date().toISOString(),haDevice:t.preview.haDevice,suggestedDevice:t.preview.suggestedDevice,entities:t.preview.entities.map(e=>({entityId:e.entityId,domain:e.domain,deviceClass:e.deviceClass,status:e.status,incompatibleReason:e.incompatibleReason??null,currentState:e.currentState,attributes:e.attributes,suggestedChannel:e.suggestedChannel,suggestedProperties:e.suggestedProperties,unmappedAttributes:e.unmappedAttributes,missingRequiredProperties:e.missingRequiredProperties})),warnings:t.preview.warnings,validation:t.preview.validation,readyToAdopt:t.preview.readyToAdopt};return JSON.stringify(e,null,2)}),c=async()=>{try{await navigator.clipboard.writeText(s.value),r.success(n(`devicesHomeAssistantPlugin.messages.mapping.debugCopied`))}catch{r.error(n(`devicesHomeAssistantPlugin.messages.mapping.debugCopyFailed`))}};return(t,r)=>e.isPreviewLoading?(i(),P(`div`,by,[F(h(l),{class:`is-loading`,size:32},{default:d(()=>[F(h(ne),{icon:`mdi:loading`})]),_:1}),D(`span`,xy,k(h(n)(`devicesHomeAssistantPlugin.messages.mapping.previewLoading`)),1)])):e.previewError?(i(),T(h(L),{key:1,type:`error`,title:h(n)(`devicesHomeAssistantPlugin.messages.mapping.previewError`),description:e.previewError.message,closable:!1,"show-icon":``},null,8,[`title`,`description`])):e.preview?(i(),P(`div`,Sy,[F(hy,{preview:e.preview,onOpenDebug:r[0]||=e=>o.value=!0},null,8,[`preview`]),e.preview.warnings.length>0?(i(),T(yy,{key:0,warnings:e.preview.warnings},null,8,[`warnings`])):g(``,!0),D(`div`,null,[D(`h3`,Cy,k(h(n)(`devicesHomeAssistantPlugin.headings.mapping.entityMappings`)),1),D(`div`,wy,[(i(!0),P(A,null,a(e.preview.entities,e=>(i(),T(Hv,{key:e.entityId,entity:e},null,8,[`entity`]))),128))])]),F(h(L),{type:e.preview.readyToAdopt?`success`:`warning`,title:e.preview.readyToAdopt?h(n)(`devicesHomeAssistantPlugin.messages.mapping.readyToAdopt`):h(n)(`devicesHomeAssistantPlugin.messages.mapping.notReadyToAdopt`),closable:!1,"show-icon":``},null,8,[`type`,`title`]),F(h(mt),{modelValue:o.value,"onUpdate:modelValue":r[3]||=e=>o.value=e,title:h(n)(`devicesHomeAssistantPlugin.headings.mapping.debugData`),width:`80%`,top:`5vh`},{footer:d(()=>[D(`div`,Ey,[F(h(E),{onClick:r[2]||=e=>o.value=!1},{default:d(()=>[v(k(h(n)(`devicesHomeAssistantPlugin.buttons.close`)),1)]),_:1}),F(h(E),{type:`primary`,onClick:c},{icon:d(()=>[F(h(ne),{icon:`mdi:content-copy`})]),default:d(()=>[v(` `+k(h(n)(`devicesHomeAssistantPlugin.buttons.copyToClipboard`)),1)]),_:1})])]),default:d(()=>[D(`div`,Ty,[F(h(L),{type:`info`,title:h(n)(`devicesHomeAssistantPlugin.messages.mapping.debugDescription`),closable:!1,"show-icon":``},null,8,[`title`])]),F(h(W),{modelValue:s.value,"onUpdate:modelValue":r[1]||=e=>s.value=e,type:`textarea`,rows:20,readonly:``,class:`font-mono text-sm`},null,8,[`modelValue`])]),_:1},8,[`modelValue`,`title`])])):(i(),P(`div`,Dy,[F(h(l),{size:48,class:`mb-4`},{default:d(()=>[F(h(ne),{icon:`mdi:information-outline`})]),_:1}),D(`p`,null,k(h(n)(`devicesHomeAssistantPlugin.messages.mapping.noPreview`)),1),D(`p`,Oy,k(h(n)(`devicesHomeAssistantPlugin.messages.mapping.selectDeviceFirst`)),1)]))}}),Ay={class:`flex gap-2`},jy={class:`flex gap-2`},My={class:`flex gap-2`},Ny={class:`flex gap-2`},Py=f({name:`HomeAssistantDeviceAddForm`,__name:`home-assistant-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,a=t,{t:s}=b(),{loaded:c,fetchDevices:u}=Zi(),f=N(null),p=N(null),_=N(null),y=N(null),{activeStep:S,reachedSteps:C,preview:w,suggestedCategory:O,isPreviewLoading:ee,previewError:te,isAdopting:M,categoriesOptions:re,itemsOptions:ie,itemsOptionsLoading:ae,entityOverrides:oe,model:se,formChanged:le,submitStep:ue,clearPreview:de,formResult:I}=U_({id:n.id}),fe=j(()=>{let e=f.value?.stepOneFormEl;return e?h(e):void 0}),pe=j(()=>{let e=p.value?.stepTwoFormEl;return e?h(e):void 0}),me=j(()=>{let e=_.value?.stepThreeFormEl;return e?h(e):void 0}),he=j(()=>{let e=y.value?.stepFourFormEl;return e?h(e):void 0}),ge=N(null),_e=j({get:()=>S.value,set:e=>{let t=S.value;if(!(e&&[`one`,`two`,`three`,`four`,`five`].includes(e))){r(()=>{S.value=t});return}let n=e;if(!C.value.has(n)){r(()=>{S.value=t});return}let i=[`one`,`two`,`three`,`four`,`five`],a=i.indexOf(t),o=i.indexOf(n);if(o<a){i.slice(o+1).forEach(e=>{C.value.delete(e)}),n===`one`||n===`two`?(de(),oe.value=[]):n===`three`&&(oe.value=[]),S.value=n;return}if(o>a)if(t===`one`||t===`two`||t===`four`){ge.value={targetStep:n,currentStep:t},r(()=>{S.value=t,r(async()=>{if(!ge.value)return;let{currentStep:e}=ge.value;ge.value=null;try{e===`one`?await ue(e,fe.value):e===`two`?await ue(e,pe.value):e===`four`&&await ue(e,me.value)}catch{}})});return}else{S.value=n;return}o!==a&&(S.value=n)}}),ve=async()=>{try{S.value===`one`?await ue(S.value,fe.value):S.value===`two`?await ue(S.value,pe.value):S.value===`four`?await ue(S.value,me.value):S.value===`five`?await ue(S.value,he.value):await ue(S.value)}catch{}},ye=()=>{},be=e=>{oe.value=e},xe=()=>{let e=[`one`,`two`,`three`,`four`,`five`],t=e.indexOf(S.value);if(t>0){let n=e[t-1],r=S.value;if(!n)return;C.value.delete(r),t<e.length-1&&e.slice(t+1).forEach(e=>{C.value.delete(e)}),n===`one`||n===`two`?(de(),oe.value=[]):n===`three`&&(oe.value=[]),S.value=n}};return o(()=>{c.value||u().catch(()=>{})}),m(()=>I.value,async e=>{a(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{if(e){a(`update:remote-form-submit`,!1);try{await ve()}catch{}}}),m(()=>n.remoteFormReset,async e=>{a(`update:remote-form-reset`,!1),e&&(S.value=`one`,C.value=new Set([`one`]),de(),O.value=null,oe.value=[],se.name=``,se.description=``,se.enabled=!0,se.haDeviceId=``,se.category=Object.values(U).find(e=>e!==U.generic)||U.sensor,await r(),fe.value?.resetFields(),pe.value?.resetFields(),_.value?.resetForm&&_.value.resetForm(),he.value?.resetFields())}),m(()=>le.value,e=>{a(`update:remote-form-changed`,e)}),(e,t)=>(i(),P(A,null,[F(h(en),{modelValue:_e.value,"onUpdate:modelValue":t[0]||=e=>_e.value=e,accordion:``,"expand-icon-position":`left`},{default:d(()=>[F(h(pt),{title:h(s)(`devicesHomeAssistantPlugin.headings.device.deviceSelection`),name:`one`},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:devices`})]),_:1})]),default:d(()=>[F(mv,{ref_key:`deviceSelectionStepRef`,ref:f,model:h(se),"items-options":h(ie),"items-options-loading":h(ae),onDeviceChange:ye},null,8,[`model`,`items-options`,`items-options-loading`])]),_:1},8,[`title`]),F(h(pt),{title:h(s)(`devicesHomeAssistantPlugin.headings.device.categorySelection`),name:`two`,disabled:!h(C).has(`two`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:tag`})]),_:1})]),default:d(()=>[F(K_,{ref_key:`categorySelectionStepRef`,ref:p,model:h(se),"categories-options":h(re),"suggested-category":h(O)},null,8,[`model`,`categories-options`,`suggested-category`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesHomeAssistantPlugin.headings.device.mappingPreview`),name:`three`,disabled:!h(C).has(`three`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:eye`})]),_:1})]),default:d(()=>[F(ky,{preview:h(w),"is-preview-loading":h(ee),"preview-error":h(te)},null,8,[`preview`,`is-preview-loading`,`preview-error`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesHomeAssistantPlugin.headings.device.mappingCustomization`),name:`four`,disabled:!h(C).has(`four`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:tune`})]),_:1})]),default:d(()=>[F(Sv,{ref_key:`mappingCustomizationStepRef`,ref:_,preview:h(w),"is-preview-loading":h(ee),"entity-overrides":h(oe),onUpdateOverrides:be},null,8,[`preview`,`is-preview-loading`,`entity-overrides`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesHomeAssistantPlugin.headings.device.deviceConfiguration`),name:`five`,disabled:!h(C).has(`five`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:cog`})]),_:1})]),default:d(()=>[F(rv,{ref_key:`deviceConfigurationStepRef`,ref:y,model:h(se),preview:h(w),"entity-overrides":h(oe)},null,8,[`model`,`preview`,`entity-overrides`])]),_:1},8,[`title`,`disabled`])]),_:1},8,[`modelValue`]),h(S)===`one`?(i(),T(x,{key:0,defer:``,to:`#${h(Yt)}`},[F(h(E),{loading:h(I)===h(Q).WORKING,disabled:h(I)!==h(Q).NONE,type:`primary`,onClick:ve},ce({default:d(()=>[v(` `+k(h(s)(`devicesHomeAssistantPlugin.buttons.next`)),1)]),_:2},[h(I)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])],8,[`to`])):h(S)===`two`?(i(),T(x,{key:1,defer:``,to:`#${h(Yt)}`},[D(`div`,Ay,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING,disabled:h(I)!==h(Q).NONE,type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.next`)),1)]),_:1},8,[`loading`,`disabled`])])],8,[`to`])):h(S)===`three`?(i(),T(x,{key:2,defer:``,to:`#${h(Yt)}`},[D(`div`,jy,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.next`)),1)]),_:1})])],8,[`to`])):h(S)===`four`?(i(),T(x,{key:3,defer:``,to:`#${h(Yt)}`},[D(`div`,My,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING||h(ee),disabled:h(I)!==h(Q).NONE||h(ee),type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.next`)),1)]),_:1},8,[`loading`,`disabled`])])],8,[`to`])):h(S)===`five`?(i(),T(x,{key:4,defer:``,to:`#${h(Yt)}`},[D(`div`,Ny,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesHomeAssistantPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING||h(M),disabled:h(I)!==h(Q).NONE||!h(w)?.readyToAdopt,type:`primary`,onClick:ve},ce({default:d(()=>[v(` `+k(h(s)(`devicesHomeAssistantPlugin.buttons.adoptDevice`)),1)]),_:2},[h(I)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])])],8,[`to`])):g(``,!0)],64))}}),Fy=()=>{let{devices:e,fetchDiscoveredDevices:t,areLoading:n}=z_(),r=j(()=>Vt(e.value,[e=>e.name.trim()===``?e.id:e.name],[`asc`]).map(e=>({value:e.id,label:e.name.trim()===``?e.id:e.name})));return t().catch(()=>{}),{devicesOptions:r,areLoading:n}},Iy=f({name:`HomeAssistantDeviceEditForm`,__name:`home-assistant-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=gi({device:n.device}),{devicesOptions:_,areLoading:v}=Fy(),x=y({name:[{required:!0,message:o(`devicesHomeAssistantPlugin.fields.devices.name.validation.required`),trigger:`change`}],haDeviceId:[{required:!0,message:o(`devicesHomeAssistantPlugin.fields.devices.haDeviceId.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:x,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.identifier.title`),prop:`identifier`},{default:d(()=>[F(h(W),{modelValue:h(c).identifier,"onUpdate:modelValue":t[1]||=e=>h(c).identifier=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.identifier.placeholder`),name:`identifier`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[2]||=e=>h(c).name=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[3]||=e=>h(c).category=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[4]||=e=>h(c).description=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[5]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesHomeAssistantPlugin.fields.devices.haDeviceId.title`),prop:`haDeviceId`},{default:d(()=>[F(h(X),{modelValue:h(c).haDeviceId,"onUpdate:modelValue":t[6]||=e=>h(c).haDeviceId=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.devices.haDeviceId.placeholder`),loading:h(v),name:`haDeviceId`,filterable:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(_),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Ly=({id:e})=>{let t=Ye().getStore(I_),{data:n,semaphore:r}=rn(t);return{device:j(()=>e===null?null:n.value[e]??null),isLoading:j(()=>r.value.fetching.item.includes(e)?!0:n.value[e]===void 0?r.value.fetching.items:!1),fetchDevice:async()=>{await t.get({id:e})}}},Ry=()=>{let e=Ye().getStore(R_),{firstLoad:t,semaphore:n}=rn(e);return{states:j(()=>e.findAll()),areLoading:j(()=>!!n.value.fetching.items||!t.value),loaded:j(()=>t.value),fetchStates:async()=>{await e.fetch()}}},zy=({deviceId:e})=>{let{t}=b(),{device:n,fetchDevice:r}=Ly({id:e}),{states:i,fetchStates:a,areLoading:o}=Ry(),s=j(()=>{let e=Vt(i.value.filter(e=>(n.value?.entities??[]).includes(e.entityId)),[e=>e.entityId],[`asc`]).map(e=>({value:e.entityId,label:`HA: ${`friendlyName`in e.attributes?e.attributes.friendlyName:e.entityId}`}));return[{value:a_,label:t(`devicesHomeAssistantPlugin.misc.options.entities.noEntity`)},...e]});return r().then(()=>{a().catch(()=>{})}).catch(()=>{}),{entitiesOptions:s,areLoading:o}},By=f({name:`SelectDiscoveredDeviceEntity`,__name:`select-discovered-device-entity`,props:{deviceId:{},modelValue:{},disabled:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),s=N(n.modelValue),{entitiesOptions:c,areLoading:l}=zy({deviceId:n.deviceId});return m(()=>s.value,e=>{r(`update:modelValue`,e)}),(e,t)=>(i(),T(h(X),{modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.channelsProperties.haEntityId.placeholder`),loading:h(l),disabled:n.disabled,name:`haEntityId`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(c),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`]))}}),Vy=({entityId:e})=>{let t=Ye().getStore(R_),{data:n,semaphore:r}=rn(t);return{state:j(()=>e===null?null:n.value[e]??null),isLoading:j(()=>r.value.fetching.item.includes(e)?!0:n.value[e]===void 0?r.value.fetching.items:!1),fetchState:async()=>{await t.get({entityId:e})}}},Hy=({entityId:e})=>{let{t}=b(),{state:n,fetchState:r,isLoading:i}=Vy({entityId:e}),a=j(()=>{if(!n.value||!n.value.attributes)return[];let e=Vt(Object.entries(n.value.attributes).map(([e])=>({value:e.replace(/([A-Z])/g,`_$1`).toLowerCase(),label:`HA: ${e}`})),[`label`],[`asc`]);return[{value:s_,label:t(`devicesHomeAssistantPlugin.misc.options.attributes.mainState`)},...e]});return r().catch(()=>{}),{attributesOptions:a,isLoading:i}},Uy=f({name:`SelectEntityAttribute`,__name:`select-entity-attribute`,props:{entityId:{},modelValue:{},disabled:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),s=N(n.modelValue),{attributesOptions:c,isLoading:l}=Hy({entityId:n.entityId});return m(()=>s.value,e=>{r(`update:modelValue`,e)}),(e,t)=>(i(),T(h(X),{modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e,placeholder:h(o)(`devicesHomeAssistantPlugin.fields.channelsProperties.haAttribute.placeholder`),loading:h(l),disabled:n.disabled,name:`haAttribute`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(c),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`]))}}),Wy=[`element-loading-text`],Gy=f({name:`HomeAssistantChannelPropertyAddForm`,__name:`home-assistant-channel-property-add-form`,props:{id:{},type:{},channel:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let r=e,o=t,{t:s}=b(),{devices:c}=Zi(),{categoriesOptions:l,channelsOptions:u,permissionsOptions:f,dataTypesOptions:p,formEl:_,model:v,formChanged:x,submit:S,formResult:C,loadingChannels:w}=bi({id:r.id,type:r.type,channelId:r.channel?.id}),E=j(()=>{let e=c.value.find(e=>e.id===r.channel?.device);return e&&`haDeviceId`in e&&typeof e.haDeviceId==`string`?e.haDeviceId:void 0}),D=y({channel:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.channel.validation.required`),trigger:`change`}],category:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.category.validation.required`),trigger:`change`}],permissions:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.permissions.validation.required`),trigger:`change`}],dataType:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.dataType.validation.required`),trigger:`change`}],haEntityId:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.haEntityId.validation.required`),trigger:`change`}],haAttribute:[{required:!0,message:s(`devicesHomeAssistantPlugin.fields.channelsProperties.haAttribute.validation.required`),trigger:`change`}]});return m(()=>C.value,async e=>{o(`update:remote-form-result`,e)}),m(()=>r.remoteFormSubmit,async e=>{e&&(o(`update:remote-form-submit`,!1),S().catch(()=>{}))}),m(()=>r.remoteFormReset,e=>{if(o(`update:remote-form-reset`,!1),e){if(!_.value)return;_.value.resetFields()}}),m(()=>x.value,e=>{o(`update:remote-form-changed`,e)}),m(()=>v.haEntityId,e=>{e===`fb.no_entity`?v.haAttribute=o_:v.haAttribute===`fb.no_attribute`&&(v.haAttribute=s_)}),(t,r)=>(i(),T(h(B),{ref_key:`formEl`,ref:_,model:h(v),rules:D,"label-position":`top`,"status-icon":``},{default:d(()=>[n((i(),P(`div`,{"element-loading-text":h(s)(`devicesModule.texts.channels.loadingChannels`)},[F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.channel.title`),prop:`channel`},{default:d(()=>[F(h(X),{modelValue:h(v).channel,"onUpdate:modelValue":r[0]||=e=>h(v).channel=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.channel.placeholder`),name:`channel`,size:`large`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(u),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),e.channel?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesModule.fields.channelsProperties.channel.description`),description:h(s)(`devicesModule.texts.channels.description.${e.channel.category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)],8,Wy)),[[h(Ee),h(w)]]),F(h(fe)),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(v).id,"onUpdate:modelValue":r[1]||=e=>h(v).id=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(v).name,"onUpdate:modelValue":r[2]||=e=>h(v).name=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.name.placeholder`),name:`name`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(v).category,"onUpdate:modelValue":r[3]||=e=>h(v).category=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.category.placeholder`),name:`category`,size:`large`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(l),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),(i(),T(h(En),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-permissions`,modelValue:h(v).permissions,"onUpdate:modelValue":r[4]||=e=>h(v).permissions=e,"permissions-options":h(f),"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`permissions-options`,`channel-category`,`property-category`])),(i(),T(h(wn),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-dataType`,modelValue:h(v).dataType,"onUpdate:modelValue":r[5]||=e=>h(v).dataType=e,"data-types-options":h(p),"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`data-types-options`,`channel-category`,`property-category`])),[h(Zt).char,h(Zt).uchar,h(Zt).short,h(Zt).ushort,h(Zt).int,h(Zt).uint,h(Zt).float].includes(h(v).dataType)?(i(),T(h(Cn),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-min-max`,"min-value":h(v).minValue,"onUpdate:minValue":r[6]||=e=>h(v).minValue=e,"max-value":h(v).maxValue,"onUpdate:maxValue":r[7]||=e=>h(v).maxValue=e,"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`min-value`,`max-value`,`channel-category`,`property-category`])):g(``,!0),[h(Zt).enum].includes(h(v).dataType)?(i(),T(h(kn),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-enum`,modelValue:h(v).enumValues,"onUpdate:modelValue":r[8]||=e=>h(v).enumValues=e,"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])):g(``,!0),(i(),T(h(On),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-invalid`,modelValue:h(v).invalid,"onUpdate:modelValue":r[9]||=e=>h(v).invalid=e,"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])),[h(Zt).char,h(Zt).uchar,h(Zt).short,h(Zt).ushort,h(Zt).int,h(Zt).uint,h(Zt).float].includes(h(v).dataType)?(i(),T(h(Dn),{key:`${e.channel?.category||h(I).generic}-${h(v).category}-step`,modelValue:h(v).step,"onUpdate:modelValue":r[10]||=e=>h(v).step=e,"channel-category":e.channel?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])):g(``,!0),E.value?(i(),P(A,{key:3},[F(h(fe)),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.haEntityId.title`),prop:`haEntityId`},{default:d(()=>[F(By,{modelValue:h(v).haEntityId,"onUpdate:modelValue":r[11]||=e=>h(v).haEntityId=e,"device-id":E.value},null,8,[`modelValue`,`device-id`])]),_:1},8,[`label`])],64)):g(``,!0),h(v).haEntityId&&h(v).haEntityId!==h(`fb.no_entity`)?(i(),P(A,{key:4},[F(h(fe)),(i(),T(h(V),{key:`${e.channel?.category||h(I).generic}-${h(v).haEntityId}-haAttribute`,label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.haAttribute.title`),prop:`haAttribute`},{default:d(()=>[F(Uy,{modelValue:h(v).haAttribute,"onUpdate:modelValue":r[12]||=e=>h(v).haAttribute=e,"entity-id":h(v).haEntityId},null,8,[`modelValue`,`entity-id`])]),_:1},8,[`label`]))],64)):g(``,!0),F(h(fe)),F(h(V),{label:h(s)(`devicesModule.fields.channelsProperties.enterValue.title`),"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(v).enterValue,"onUpdate:modelValue":r[13]||=e=>h(v).enterValue=e},null,8,[`modelValue`])]),_:1},8,[`label`]),h(v).enterValue?(i(),T(h(L),{key:5,type:`warning`,description:h(s)(`devicesModule.texts.channelsProperties.editValue`),closable:!1,"show-icon":``},null,8,[`description`])):g(``,!0),h(v).enterValue?(i(),T(h(V),{key:6,label:h(s)(`devicesModule.fields.channelsProperties.value.title`),prop:`value`,class:`mt-2`},{default:d(()=>[F(h(W),{modelValue:h(v).value,"onUpdate:modelValue":r[14]||=e=>h(v).value=e,placeholder:h(s)(`devicesModule.fields.channelsProperties.value.placeholder`),name:`value`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),Ky=[`element-loading-text`],qy=f({name:`HomeAssistantChannelPropertyEditForm`,__name:`home-assistant-channel-property-edit-form`,props:{property:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let r=e,o=t,{t:s}=b(),{devices:c}=Zi(),{categoriesOptions:l,channelsOptions:u,permissionsOptions:f,dataTypesOptions:p,formEl:_,model:v,formChanged:y,submit:x,formResult:S,loadingChannels:C}=di({property:r.property}),{channel:w}=oi({id:r.property.channel}),E=j(()=>{let e=c.value.find(e=>e.id===w.value?.device);return e&&`haDeviceId`in e&&typeof e.haDeviceId==`string`?e.haDeviceId:void 0});return m(()=>S.value,async e=>{o(`update:remote-form-result`,e)}),m(()=>r.remoteFormSubmit,async e=>{e&&(o(`update:remote-form-submit`,!1),x().catch(()=>{}))}),m(()=>r.remoteFormReset,e=>{if(o(`update:remote-form-reset`,!1),e){if(!_.value)return;_.value.resetFields()}}),m(()=>y.value,e=>{o(`update:remote-form-changed`,e)}),m(()=>v.haEntityId,e=>{e===`fb.no_entity`?v.haAttribute=o_:v.haAttribute===`fb.no_attribute`&&(v.haAttribute=void 0)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:_,model:h(v),"label-position":`top`,"status-icon":``},{default:d(()=>[n((i(),P(`div`,{"element-loading-text":h(s)(`devicesModule.texts.channels.loadingChannels`)},[F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.channel.title`),prop:`channel`},{default:d(()=>[F(h(X),{modelValue:h(v).channel,"onUpdate:modelValue":t[0]||=e=>h(v).channel=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.channel.placeholder`),name:`channel`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(u),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(w)?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesModule.fields.channelsProperties.channel.description`),description:h(s)(`devicesModule.texts.channels.description.${h(w).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)],8,Ky)),[[h(Ee),h(C)]]),F(h(fe)),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(v).id,"onUpdate:modelValue":t[1]||=e=>h(v).id=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(v).name,"onUpdate:modelValue":t[2]||=e=>h(v).name=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.name.placeholder`),name:`name`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(v).category,"onUpdate:modelValue":t[3]||=e=>h(v).category=e,placeholder:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.category.placeholder`),name:`category`,size:`large`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(l),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),(i(),T(En,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-permissions`,modelValue:h(v).permissions,"onUpdate:modelValue":t[4]||=e=>h(v).permissions=e,"permissions-options":h(f),"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category,disabled:``},null,8,[`modelValue`,`permissions-options`,`channel-category`,`property-category`])),(i(),T(wn,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-dataType`,modelValue:h(v).dataType,"onUpdate:modelValue":t[5]||=e=>h(v).dataType=e,"data-types-options":h(p),"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category,disabled:``},null,8,[`modelValue`,`data-types-options`,`channel-category`,`property-category`])),[h(Zt).char,h(Zt).uchar,h(Zt).short,h(Zt).ushort,h(Zt).int,h(Zt).uint,h(Zt).float].includes(h(v).dataType)?(i(),T(Cn,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-min-max`,"min-value":h(v).minValue,"onUpdate:minValue":t[6]||=e=>h(v).minValue=e,"max-value":h(v).maxValue,"onUpdate:maxValue":t[7]||=e=>h(v).maxValue=e,"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category},null,8,[`min-value`,`max-value`,`channel-category`,`property-category`])):g(``,!0),[h(Zt).enum].includes(h(v).dataType)?(i(),T(kn,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-enum`,modelValue:h(v).enumValues,"onUpdate:modelValue":t[8]||=e=>h(v).enumValues=e,"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])):g(``,!0),(i(),T(On,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-invalid`,modelValue:h(v).invalid,"onUpdate:modelValue":t[9]||=e=>h(v).invalid=e,"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])),[h(Zt).char,h(Zt).uchar,h(Zt).short,h(Zt).ushort,h(Zt).int,h(Zt).uint,h(Zt).float].includes(h(v).dataType)?(i(),T(Dn,{key:`${h(w)?.category||h(I).generic}-${h(v).category}-step`,modelValue:h(v).step,"onUpdate:modelValue":t[10]||=e=>h(v).step=e,"channel-category":h(w)?.category||h(I).generic,"property-category":h(v).category},null,8,[`modelValue`,`channel-category`,`property-category`])):g(``,!0),E.value?(i(),P(A,{key:3},[F(h(fe)),F(h(V),{label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.haEntityId.title`),prop:`haEntityId`},{default:d(()=>[F(By,{modelValue:h(v).haEntityId,"onUpdate:modelValue":t[11]||=e=>h(v).haEntityId=e,"device-id":E.value},null,8,[`modelValue`,`device-id`])]),_:1},8,[`label`])],64)):g(``,!0),h(v).haEntityId&&h(v).haEntityId!==h(`fb.no_entity`)?(i(),P(A,{key:4},[F(h(fe)),(i(),T(h(V),{key:`${h(w)?.category||h(I).generic}-${h(v).haEntityId}-haAttribute`,label:h(s)(`devicesHomeAssistantPlugin.fields.channelsProperties.haAttribute.title`),prop:`haAttribute`},{default:d(()=>[F(Uy,{modelValue:h(v).haAttribute,"onUpdate:modelValue":t[12]||=e=>h(v).haAttribute=e,"entity-id":h(v).haEntityId},null,8,[`modelValue`,`entity-id`])]),_:1},8,[`label`]))],64)):g(``,!0),F(h(fe)),F(h(V),{label:h(s)(`devicesModule.fields.channelsProperties.enterValue.title`),"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(v).enterValue,"onUpdate:modelValue":t[13]||=e=>h(v).enterValue=e},null,8,[`modelValue`])]),_:1},8,[`label`]),h(v).enterValue?(i(),T(h(L),{key:5,type:`warning`,description:h(s)(`devicesModule.texts.channelsProperties.editValue`),closable:!1,"show-icon":``},null,8,[`description`])):g(``,!0),h(v).enterValue?(i(),T(h(V),{key:6,label:h(s)(`devicesModule.fields.channelsProperties.value.title`),prop:`value`,class:`mt-2`},{default:d(()=>[F(h(W),{modelValue:h(v).value,"onUpdate:modelValue":t[14]||=e=>h(v).value=e,placeholder:h(s)(`devicesModule.fields.channelsProperties.value.placeholder`),name:`value`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0)]),_:1},8,[`model`]))}}),Jy=N([]),Yy=N(!1),Xy=N(null),Zy=()=>{let{t:e}=b(),t=fn(),n=e=>{if(e&&typeof e==`object`&&`data`in e){let t=e.data;Array.isArray(t)&&(Jy.value=t.map(e=>({hostname:e.hostname,port:e.port,name:e.name,version:e.version??null,uuid:e.uuid??null})))}};return{instances:Jy,isLoading:Yy,error:Xy,fetchInstances:async()=>{if(!Yy.value){Yy.value=!0,Xy.value=null;try{let{data:r,error:i}=await t.client.GET(`/${ae}/${n_}/discovery`);i?Xy.value=e(`devicesHomeAssistantPlugin.messages.discovery.fetchFailed`):n(r)}catch(t){Xy.value=t instanceof Error?t.message:e(`devicesHomeAssistantPlugin.messages.discovery.fetchFailed`)}finally{Yy.value=!1}}},refreshInstances:async()=>{if(!Yy.value){Yy.value=!0,Xy.value=null;try{let{data:r,error:i}=await t.client.POST(`/${ae}/${n_}/discovery/refresh`);i?Xy.value=e(`devicesHomeAssistantPlugin.messages.discovery.refreshFailed`):n(r)}catch(t){Xy.value=t instanceof Error?t.message:e(`devicesHomeAssistantPlugin.messages.discovery.refreshFailed`)}finally{Yy.value=!1}}}}},Qy={class:`flex gap-2 w-full`},$y={class:`flex flex-col`},eb={class:`font-medium`},tb={class:`text-xs text-gray-500`},nb=f({name:`HomeAssistantConfigForm`,__name:`home-assistant-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},remoteFormErrors:{default:()=>[]},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:a(`devicesHomeAssistantPlugin.messages.config.edited`),error:a(`devicesHomeAssistantPlugin.messages.config.notEdited`)}}),p=j(()=>{let e={};for(let t of n.remoteFormErrors)e[t.field]=t.message;return e}),{instances:_,isLoading:x,fetchInstances:S,refreshInstances:C}=Zy(),w=j(()=>_.value.map(e=>({value:`${e.hostname}:${e.port}`,name:e.name,version:e.version}))),O=(e,t)=>{t(e?w.value.filter(t=>t.value.toLowerCase().includes(e.toLowerCase())):w.value)},ee=()=>{_.value.length===0&&S()},te=()=>{C()};o(()=>{S()});let M=y({hostname:[{required:!0,message:a(`devicesHomeAssistantPlugin.fields.config.hostname.validation.required`),trigger:`change`}]});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:M,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`devicesHomeAssistantPlugin.headings.aboutConnectionSettings`),description:h(a)(`devicesHomeAssistantPlugin.texts.aboutConnectionSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesHomeAssistantPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesHomeAssistantPlugin.fields.config.apiKey.title`),prop:`apiKey`,error:p.value.apiKey},{default:d(()=>[F(h(W),{modelValue:h(c).apiKey,"onUpdate:modelValue":t[1]||=e=>h(c).apiKey=e,placeholder:h(a)(`devicesHomeAssistantPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,rows:4,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`,`error`]),F(h(V),{label:h(a)(`devicesHomeAssistantPlugin.fields.config.hostname.title`),prop:`hostname`,error:p.value.hostname},{default:d(()=>[D(`div`,Qy,[F(h(hn),{modelValue:h(c).hostname,"onUpdate:modelValue":t[2]||=e=>h(c).hostname=e,"fetch-suggestions":O,placeholder:h(a)(`devicesHomeAssistantPlugin.fields.config.hostname.placeholder`),loading:h(x),class:`flex-1`,clearable:``,onFocus:ee},{default:d(({item:e})=>[D(`div`,$y,[D(`span`,eb,k(e.value),1),D(`span`,tb,[v(k(e.name)+` `,1),e.version?(i(),P(A,{key:0},[v(` (v`+k(e.version)+`)`,1)],64)):g(``,!0)])])]),_:1},8,[`modelValue`,`placeholder`,`loading`]),F(h(ze),{content:h(a)(`devicesHomeAssistantPlugin.buttons.refreshDiscovery`),placement:`top`},{default:d(()=>[F(h(E),{loading:h(x),onClick:te},{default:d(()=>[...t[3]||=[D(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[D(`path`,{d:`M21.5 2v6h-6M2.5 22v-6h6M2 11.5a10 10 0 0 1 18.8-4.3M22 12.5a10 10 0 0 1-18.8 4.2`})],-1)]]),_:1},8,[`loading`])]),_:1},8,[`content`])])]),_:1},8,[`label`,`error`])]),_:1},8,[`model`,`rules`]))}}),rb={fields:{devices:{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í`},haDeviceId:{title:`Zařízení Home Assistant`,placeholder:`Vyberte zařízení z instance Home Assistant`,validation:{required:`Vyberte prosím zařízení Home Assistant`}},manufacturer:{title:`Výrobce`},model:{title:`Model`},entities:{title:`Entity`},domain:{title:`Doména`},type:{title:`Typ`}},channelsProperties:{id:{title:`Interní identifikátor`,placeholder:`ID vlastnosti kanálu`},channel:{title:`Kanál`,placeholder:`Vyberte kanál`,validation:{required:`Vyberte prosím kanál vlastnosti kanálu`}},category:{title:`Kategorie`,placeholder:`Kategorie vlastnosti kanálu`,validation:{required:`Vyberte prosím kategorii vlastnosti kanálu`}},name:{title:`Název`,placeholder:`Název vlastnosti kanálu`},dataType:{validation:{required:`Vyberte prosím datový typ`}},permissions:{validation:{required:`Vyberte prosím oprávnění`}},haEntityId:{title:`Entita zařízení Home Assistant`,placeholder:`Vyberte entitu zařízení Home Assistant`,validation:{required:`Vyberte prosím entitu zařízení Home Assistant`}},haAttribute:{title:`Atribut entity Home Assistant`,placeholder:`Vyberte atribut entity Home Assistant`,validation:{required:`Vyberte prosím atribut entity Home Assistant`}}},mapping:{totalEntities:`Celkem entit`,mapped:`Mapováno`,partial:`Částečně`,unmapped:`Nemapováno`,skipped:`Přeskočeno`,incompatible:`Nekompatibilní`,excluded:`Vyloučeno`,suggestedCategory:`Navrhovaná kategorie`,suggestedChannel:{title:`Navrhovaný kanál`,validation:{required:`Vyberte prosím kategorii kanálu pro tuto entitu`}},properties:`Vlastnosti`,unmappedAttributes:`Nemapované atributy`,missingRequiredProperties:`Chybějící povinné vlastnosti`,incompatibleChannel:`Kanál není podporován pro tuto kategorii zařízení`,virtualTypes:{static:`Statický`,derived:`Automatický`,command:`Příkaz`,virtual:`Virtuální`},validation:{valid:`Konfigurace zařízení je platná`,invalid:`Konfigurace zařízení má problémy`,missingChannels:`Chybějící povinné kanály`,missingProperties:`Chybějící povinné vlastnosti`,autoFilled:`Automaticky doplněno virtuálními vlastnostmi`,unknownChannels:`Kanály nepovolené pro tento typ zařízení`,duplicateChannels:`Duplicitní kanály (měly by být unikátní)`,constraintViolations:`Porušení omezení konfigurace`}},config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj dlouhodobý přístupový token Home Assistant`,validation:{required:`Vyplňte prosím API klíč`}},hostname:{title:`Název hostitele`,placeholder:`Zadejte název hostitele Home Assistant (např. homeassistant.local:8123)`,validation:{required:`Vyplňte prosím název hostitele`}}}},headings:{aboutConnectionSettings:`Připojení Home Assistant`,device:{deviceSelection:`Vybrat zařízení`,deviceInformation:`Informace o zařízení`,categorySelection:`Kategorie zařízení`,mappingPreview:`Náhled mapování`,mappingCustomization:`Přizpůsobení mapování`,deviceConfiguration:`Konfigurace zařízení`},mapping:{entityMappings:`Mapování entit`,warnings:`Varování mapování ({count})`,errors:`Chyby`,summary:`Souhrn mapování`,debugData:`Ladicí data`}},messages:{config:{edited:`Změny uloženy! Konfigurace pluginu Home Assistant byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace pluginu Home Assistant nebyla úspěšná.`},devices:{created:`Nové zařízení Home Assistant bylo úspěšně přidáno.`,notCreated:`Něco se pokazilo. Nepodařilo se vytvořit zařízení Home Assistant.`,exists:`Zařízení je již adoptováno v systému.`,alreadyAdopted:`Toto zařízení je již adoptováno`,alreadyAdoptedDescription:`Pokračování znovu adoptuje zařízení s novou konfigurací. Stávající zařízení bude aktualizováno.`,noDiscoveredDevices:`Žádná zařízení Home Assistant nejsou k dispozici. Ujistěte se, že vaše instance Home Assistant je připojena a zařízení jsou vyhledána.`},mapping:{previewLoading:`Načítání náhledu mapování...`,previewError:`Nepodařilo se načíst náhled mapování`,adoptionSuccess:`Zařízení {device} bylo úspěšně adoptováno`,adoptionError:`Nepodařilo se adoptovat zařízení`,readyToAdopt:`Zařízení je připraveno k adopci`,notReadyToAdopt:`Zařízení má chybějící povinná mapování`,noPreview:`Žádný náhled mapování není k dispozici`,selectDeviceFirst:`Vyberte prosím zařízení v kroku 1 pro vygenerování náhledu mapování`,invalidSuggestedCategory:`Navrhovaná kategorie není podporována. Vyberte prosím platnou kategorii.`,missingChannelCategory:`Následující entity jsou povoleny, ale chybí jim kategorie kanálu: {entities}. Vyberte prosím kategorii kanálu pro každou povolenou entitu před pokračováním.`,debugDescription:`Zkopírujte tato data a sdílejte je s vývojáři pro pomoc s diagnostikou problémů mapování nebo požadavkem na vlastní mapování.`,debugCopied:`Ladicí data zkopírována do schránky`,debugCopyFailed:`Nepodařilo se zkopírovat ladicí data do schránky`},categorySelection:{description:`Na základě entit zařízení byla navržena kategorie. Zkontrolujte prosím a vyberte správnou kategorii pro toto zařízení. Náhled mapování bude aktualizován na základě vašeho výběru.`},discovery:{fetchFailed:`Nepodařilo se načíst nalezené instance`,refreshFailed:`Nepodařilo se obnovit nalezené instance`}},buttons:{loadPreview:`Načíst náhled`,updatePreview:`Aktualizovat náhled`,adoptDevice:`Adoptovat zařízení`,next:`Další`,previous:`Předchozí`,skip:`Přeskočit`,use:`Použít`,applyChanges:`Aplikovat změny`,refreshDiscovery:`Obnovit vyhledávání`,debug:`Ladění`,copyToClipboard:`Kopírovat do schránky`,close:`Zavřít`},labels:{suggested:`Navrhováno`},misc:{options:{entities:{noEntity:`Nepřipojeno k entitě zařízení`},attributes:{noAttribute:`Nepřipojeno k atributu entity`,mainState:`Hlavní stavový atribut entity`}}},texts:{aboutConnectionSettings:`Nakonfigurujte připojení k vaší instanci Home Assistant. Pokud je povoleno, zařízení z Home Assistant budou dostupná ve Smart Panelu. Budete potřebovat dlouhodobý přístupový token z Home Assistant a název hostitele nebo IP adresu vaší instance.`,mapping:{customizationDescription:`Můžete přizpůsobit mapování změnou kategorií kanálů pro entity nebo povolením/zakázáním entit. Ve výchozím nastavení jsou všechny entity s navrženou kategorií kanálu povoleny. Klikněte na 'Další' pro pokračování s vybranou konfigurací.`}}},ib={fields:{devices:{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`},haDeviceId:{title:`Home Assistant-Gerät`,placeholder:`Gerät aus der Home Assistant-Instanz auswählen`,validation:{required:`Bitte wählen Sie ein Home Assistant-Gerät`}},manufacturer:{title:`Hersteller`},model:{title:`Modell`},entities:{title:`Entitäten`},domain:{title:`Domäne`},type:{title:`Typ`}},channelsProperties:{id:{title:`Interner Bezeichner`,placeholder:`Kanaleigenschafts-ID`},channel:{title:`Kanal`,placeholder:`Kanal auswählen`,validation:{required:`Bitte wählen Sie einen Kanaleigenschafts-Kanal`}},category:{title:`Kategorie`,placeholder:`Kanaleigenschafts-Kategorie`,validation:{required:`Bitte wählen Sie eine Kanaleigenschafts-Kategorie`}},name:{title:`Name`,placeholder:`Kanaleigenschafts-Name`},dataType:{validation:{required:`Bitte wählen Sie einen Datentyp`}},permissions:{validation:{required:`Bitte wählen Sie Berechtigungen`}},haEntityId:{title:`Home Assistant Geräteentität`,placeholder:`Home Assistant Geräteentität auswählen`,validation:{required:`Bitte wählen Sie eine Home Assistant Geräteentität`}},haAttribute:{title:`Home Assistant Entitätsattribut`,placeholder:`Home Assistant Entitätsattribut auswählen`,validation:{required:`Bitte wählen Sie ein Home Assistant Entitätsattribut`}}},mapping:{totalEntities:`Entitäten gesamt`,mapped:`Zugeordnet`,partial:`Teilweise`,unmapped:`Nicht zugeordnet`,skipped:`Übersprungen`,incompatible:`Inkompatibel`,excluded:`Ausgeschlossen`,suggestedCategory:`Vorgeschlagene Kategorie`,suggestedChannel:{title:`Vorgeschlagener Kanal`,validation:{required:`Bitte wählen Sie eine Kanalkategorie für diese Entität`}},properties:`Eigenschaften`,unmappedAttributes:`Nicht zugeordnete Attribute`,missingRequiredProperties:`Fehlende erforderliche Eigenschaften`,incompatibleChannel:`Kanal wird für diese Gerätekategorie nicht unterstützt`,virtualTypes:{static:`Statisch`,derived:`Auto`,command:`Befehl`,virtual:`Virtuell`},validation:{valid:`Gerätekonfiguration ist gültig`,invalid:`Gerätekonfiguration hat Probleme`,missingChannels:`Fehlende erforderliche Kanäle`,missingProperties:`Fehlende erforderliche Eigenschaften`,autoFilled:`Automatisch mit virtuellen Eigenschaften ausgefüllt`,unknownChannels:`Kanäle für diesen Gerätetyp nicht erlaubt`,duplicateChannels:`Doppelte Kanäle (sollten eindeutig sein)`,constraintViolations:`Konfigurationsbeschränkungsverletzungen`}},config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren langlebigen Home Assistant-Zugriffstoken ein`,validation:{required:`Bitte geben Sie den API-Schlüssel ein`}},hostname:{title:`Hostname`,placeholder:`Geben Sie den Home Assistant-Hostname ein (z.B. homeassistant.local:8123)`,validation:{required:`Bitte geben Sie den Hostname ein`}}}},headings:{aboutConnectionSettings:`Home Assistant-Verbindung`,device:{deviceSelection:`Gerät auswählen`,deviceInformation:`Geräteinformationen`,categorySelection:`Gerätekategorie`,mappingPreview:`Zuordnungsvorschau`,mappingCustomization:`Zuordnungsanpassung`,deviceConfiguration:`Gerätekonfiguration`},mapping:{entityMappings:`Entitätszuordnungen`,warnings:`Zuordnungswarnungen ({count})`,errors:`Fehler`,summary:`Zuordnungszusammenfassung`,debugData:`Debug-Daten`}},messages:{config:{edited:`Änderungen gespeichert! Die Home Assistant Plugin-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Home Assistant Plugin-Konfiguration war nicht erfolgreich.`},devices:{created:`Neues Home Assistant-Gerät erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Das Home Assistant-Gerät konnte nicht erstellt werden.`,exists:`Gerät ist bereits im System übernommen.`,alreadyAdopted:`Dieses Gerät ist bereits übernommen`,alreadyAdoptedDescription:`Fortfahren wird das Gerät mit der neuen Konfiguration erneut übernehmen. Das bestehende Gerät wird aktualisiert.`,noDiscoveredDevices:`Keine Home Assistant-Geräte verfügbar. Stellen Sie sicher, dass Ihre Home Assistant-Instanz verbunden ist und Geräte erkannt werden.`},mapping:{previewLoading:`Zuordnungsvorschau wird geladen...`,previewError:`Zuordnungsvorschau konnte nicht geladen werden`,adoptionSuccess:`Gerät {device} erfolgreich übernommen`,adoptionError:`Geräteübernahme fehlgeschlagen`,readyToAdopt:`Gerät ist bereit zur Übernahme`,notReadyToAdopt:`Gerät hat fehlende erforderliche Zuordnungen`,noPreview:`Keine Zuordnungsvorschau verfügbar`,selectDeviceFirst:`Bitte wählen Sie in Schritt 1 ein Gerät aus, um eine Zuordnungsvorschau zu generieren`,invalidSuggestedCategory:`Die vorgeschlagene Kategorie wird nicht unterstützt. Bitte wählen Sie eine gültige Kategorie.`,missingChannelCategory:`Die folgenden Entitäten sind aktiviert, aber es fehlt eine Kanalkategorie: {entities}. Bitte wählen Sie eine Kanalkategorie für jede aktivierte Entität, bevor Sie fortfahren.`,debugDescription:`Kopieren Sie diese Daten und teilen Sie sie mit Entwicklern, um Zuordnungsprobleme zu diagnostizieren oder benutzerdefinierte Zuordnungen anzufordern.`,debugCopied:`Debug-Daten in die Zwischenablage kopiert`,debugCopyFailed:`Kopieren der Debug-Daten in die Zwischenablage fehlgeschlagen`},categorySelection:{description:`Basierend auf den Entitäten des Geräts wurde eine Kategorie vorgeschlagen. Bitte überprüfen und wählen Sie die richtige Kategorie für dieses Gerät. Die Zuordnungsvorschau wird basierend auf Ihrer Auswahl aktualisiert.`},discovery:{fetchFailed:`Abrufen der erkannten Instanzen fehlgeschlagen`,refreshFailed:`Aktualisieren der erkannten Instanzen fehlgeschlagen`}},buttons:{loadPreview:`Vorschau laden`,updatePreview:`Vorschau aktualisieren`,adoptDevice:`Gerät übernehmen`,next:`Weiter`,previous:`Zurück`,skip:`Überspringen`,use:`Verwenden`,applyChanges:`Änderungen anwenden`,refreshDiscovery:`Erkennung aktualisieren`,debug:`Debug`,copyToClipboard:`In Zwischenablage kopieren`,close:`Schließen`},labels:{suggested:`Vorgeschlagen`},misc:{options:{entities:{noEntity:`Nicht mit Geräteentität verbunden`},attributes:{noAttribute:`Nicht mit Entitätsattribut verbunden`,mainState:`Hauptstatusattribut der Entität`}}},texts:{aboutConnectionSettings:`Konfigurieren Sie die Verbindung zu Ihrer Home Assistant-Instanz. Wenn aktiviert, werden Geräte aus Home Assistant im Smart Panel verfügbar. Sie benötigen einen langlebigen Zugriffstoken von Home Assistant und den Hostname oder die IP-Adresse Ihrer Instanz.`,mapping:{customizationDescription:`Sie können die Zuordnung anpassen, indem Sie Kanalkategorien für Entitäten ändern oder Entitäten aktivieren/deaktivieren. Standardmäßig sind alle Entitäten mit einer vorgeschlagenen Kanalkategorie aktiviert. Klicken Sie auf 'Weiter', um mit der ausgewählten Konfiguration fortzufahren.`}}},ab={fields:{devices:{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`},haDeviceId:{title:`Home Assistant device`,placeholder:`Select device from Home Assistant instance`,validation:{required:`Please select Home Assistant device`}},manufacturer:{title:`Manufacturer`},model:{title:`Model`},entities:{title:`Entities`},domain:{title:`Domain`},type:{title:`Type`}},channelsProperties:{id:{title:`Internal identifier`,placeholder:`Channel property id`},channel:{title:`Channel`,placeholder:`Select channel`,validation:{required:`Please select channel property channel`}},category:{title:`Category`,placeholder:`Channel property category`,validation:{required:`Please select channel property category`}},name:{title:`Name`,placeholder:`Channel property name`},dataType:{validation:{required:`Please select data type`}},permissions:{validation:{required:`Please select permissions`}},haEntityId:{title:`Home Assistant device entity`,placeholder:`Select Home Assistant device entity`,validation:{required:`Please select Home Assistant device entity`}},haAttribute:{title:`Home Assistant entity attribute`,placeholder:`Select Home Assistant entity attribute`,validation:{required:`Please select Home Assistant entity attribute`}}},mapping:{totalEntities:`Total entities`,mapped:`Mapped`,partial:`Partial`,unmapped:`Unmapped`,skipped:`Skipped`,incompatible:`Incompatible`,excluded:`Excluded`,suggestedCategory:`Suggested category`,suggestedChannel:{title:`Suggested channel`,validation:{required:`Please select a channel category for this entity`}},properties:`Properties`,unmappedAttributes:`Unmapped attributes`,missingRequiredProperties:`Missing required properties`,incompatibleChannel:`Channel not supported for this device category`,virtualTypes:{static:`Static`,derived:`Auto`,command:`Command`,virtual:`Virtual`},validation:{valid:`Device configuration is valid`,invalid:`Device configuration has issues`,missingChannels:`Missing required channels`,missingProperties:`Missing required properties`,autoFilled:`Auto-filled with virtual properties`,unknownChannels:`Channels not allowed for this device type`,duplicateChannels:`Duplicate channels (should be unique)`,constraintViolations:`Configuration constraint violations`}},config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your Home Assistant long-lived access token`,validation:{required:`Please fill in API key`}},hostname:{title:`Hostname`,placeholder:`Enter the Home Assistant hostname (e.g., homeassistant.local:8123)`,validation:{required:`Please fill in hostname`}}}},headings:{aboutConnectionSettings:`Home Assistant connection`,device:{deviceSelection:`Select device`,deviceInformation:`Device information`,categorySelection:`Device category`,mappingPreview:`Mapping preview`,mappingCustomization:`Mapping customization`,deviceConfiguration:`Device configuration`},mapping:{entityMappings:`Entity mappings`,warnings:`Mapping warnings ({count})`,errors:`Errors`,summary:`Mapping summary`,debugData:`Debug Data`}},messages:{config:{edited:`Changes saved! The Home Assistant plugin config has been updated.`,notEdited:`Something went wrong. Home Assistant plugin config update was not successful.`},devices:{created:`New Home Assistant device added successfully.`,notCreated:`Something went wrong. Unable to create the Home Assistant device.`,exists:`Device is already adopted in the system.`,alreadyAdopted:`This device is already adopted`,alreadyAdoptedDescription:`Continuing will re-adopt the device with the new configuration. The existing device will be updated.`,noDiscoveredDevices:`No Home Assistant devices are available. Make sure your Home Assistant instance is connected and devices are discovered.`},mapping:{previewLoading:`Loading mapping preview...`,previewError:`Failed to load mapping preview`,adoptionSuccess:`Device {device} adopted successfully`,adoptionError:`Failed to adopt device`,readyToAdopt:`Device is ready to be adopted`,notReadyToAdopt:`Device has missing required mappings`,noPreview:`No mapping preview available`,selectDeviceFirst:`Please select a device in step 1 to generate a mapping preview`,invalidSuggestedCategory:`The suggested category is not supported. Please select a valid category.`,missingChannelCategory:`The following entities are enabled but missing a channel category: {entities}. Please select a channel category for each enabled entity before proceeding.`,debugDescription:`Copy this data and share it with developers to help diagnose mapping issues or request custom mappings.`,debugCopied:`Debug data copied to clipboard`,debugCopyFailed:`Failed to copy debug data to clipboard`},categorySelection:{description:`Based on the device's entities, a category has been suggested. Please review and select the correct category for this device. The mapping preview will be updated based on your selection.`},discovery:{fetchFailed:`Failed to fetch discovered instances`,refreshFailed:`Failed to refresh discovered instances`}},buttons:{loadPreview:`Load preview`,updatePreview:`Update preview`,adoptDevice:`Adopt device`,next:`Next`,previous:`Previous`,skip:`Skip`,use:`Use`,applyChanges:`Apply changes`,refreshDiscovery:`Refresh discovery`,debug:`Debug`,copyToClipboard:`Copy to clipboard`,close:`Close`},labels:{suggested:`Suggested`},misc:{options:{entities:{noEntity:`Not connected to device entity`},attributes:{noAttribute:`Not connected to entity attribute`,mainState:`Entity main state attribute`}}},texts:{aboutConnectionSettings:`Configure the connection to your Home Assistant instance. When enabled, devices from Home Assistant will be available in the Smart Panel. You'll need a long-lived access token from Home Assistant and the hostname or IP address of your instance.`,mapping:{customizationDescription:`You can customize the mapping by changing channel categories for entities or enabling/disabling entities. By default, all entities with a suggested channel category are enabled. Click 'Next' to proceed with the selected configuration.`}}},ob={fields:{devices:{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, introduzca el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`,placeholder:`Habilitar o deshabilitar el dispositivo`},haDeviceId:{title:`Dispositivo de Home Assistant`,placeholder:`Seleccione un dispositivo de la instancia de Home Assistant`,validation:{required:`Por favor, seleccione un dispositivo de Home Assistant`}},manufacturer:{title:`Fabricante`},model:{title:`Modelo`},entities:{title:`Entidades`},domain:{title:`Dominio`},type:{title:`Tipo`}},channelsProperties:{id:{title:`Identificador interno`,placeholder:`ID de la propiedad del canal`},channel:{title:`Canal`,placeholder:`Seleccionar canal`,validation:{required:`Por favor, seleccione el canal de la propiedad`}},category:{title:`Categoría`,placeholder:`Categoría de la propiedad del canal`,validation:{required:`Por favor, seleccione la categoría de la propiedad del canal`}},name:{title:`Nombre`,placeholder:`Nombre de la propiedad del canal`},dataType:{validation:{required:`Por favor, seleccione el tipo de dato`}},permissions:{validation:{required:`Por favor, seleccione los permisos`}},haEntityId:{title:`Entidad del dispositivo de Home Assistant`,placeholder:`Seleccione la entidad del dispositivo de Home Assistant`,validation:{required:`Por favor, seleccione la entidad del dispositivo de Home Assistant`}},haAttribute:{title:`Atributo de entidad de Home Assistant`,placeholder:`Seleccione el atributo de entidad de Home Assistant`,validation:{required:`Por favor, seleccione el atributo de entidad de Home Assistant`}}},mapping:{totalEntities:`Total de entidades`,mapped:`Mapeado`,partial:`Parcial`,unmapped:`Sin mapear`,skipped:`Omitido`,incompatible:`Incompatible`,excluded:`Excluido`,suggestedCategory:`Categoría sugerida`,suggestedChannel:{title:`Canal sugerido`,validation:{required:`Por favor, seleccione una categoría de canal para esta entidad`}},properties:`Propiedades`,unmappedAttributes:`Atributos sin mapear`,missingRequiredProperties:`Propiedades requeridas faltantes`,incompatibleChannel:`Canal no compatible con esta categoría de dispositivo`,virtualTypes:{static:`Estático`,derived:`Automático`,command:`Comando`,virtual:`Virtual`},validation:{valid:`La configuración del dispositivo es válida`,invalid:`La configuración del dispositivo tiene problemas`,missingChannels:`Faltan canales requeridos`,missingProperties:`Faltan propiedades requeridas`,autoFilled:`Completado automáticamente con propiedades virtuales`,unknownChannels:`Canales no permitidos para este tipo de dispositivo`,duplicateChannels:`Canales duplicados (deben ser únicos)`,constraintViolations:`Violaciones de restricciones de configuración`}},config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su token de acceso de larga duración de Home Assistant`,validation:{required:`Por favor, introduzca la clave API`}},hostname:{title:`Nombre de host`,placeholder:`Introduzca el nombre de host de Home Assistant (p. ej., homeassistant.local:8123)`,validation:{required:`Por favor, introduzca el nombre de host`}}}},headings:{aboutConnectionSettings:`Conexión de Home Assistant`,device:{deviceSelection:`Seleccionar dispositivo`,deviceInformation:`Información del dispositivo`,categorySelection:`Categoría del dispositivo`,mappingPreview:`Vista previa del mapeo`,mappingCustomization:`Personalización del mapeo`,deviceConfiguration:`Configuración del dispositivo`},mapping:{entityMappings:`Mapeo de entidades`,warnings:`Advertencias del mapeo ({count})`,errors:`Errores`,summary:`Resumen del mapeo`,debugData:`Datos de depuración`}},messages:{config:{edited:`¡Cambios guardados! La configuración del plugin de Home Assistant ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del plugin de Home Assistant no fue exitosa.`},devices:{created:`Nuevo dispositivo de Home Assistant agregado correctamente.`,notCreated:`Algo salió mal. No se pudo crear el dispositivo de Home Assistant.`,exists:`El dispositivo ya está registrado en el sistema.`,alreadyAdopted:`Este dispositivo ya ha sido adoptado`,alreadyAdoptedDescription:`Al continuar se volverá a adoptar el dispositivo con la nueva configuración. El dispositivo existente será actualizado.`,noDiscoveredDevices:`No hay dispositivos de Home Assistant disponibles. Asegúrese de que su instancia de Home Assistant esté conectada y los dispositivos hayan sido descubiertos.`},mapping:{previewLoading:`Cargando vista previa del mapeo...`,previewError:`Error al cargar la vista previa del mapeo`,adoptionSuccess:`El dispositivo {device} ha sido adoptado correctamente`,adoptionError:`Error al adoptar el dispositivo`,readyToAdopt:`El dispositivo está listo para ser adoptado`,notReadyToAdopt:`El dispositivo tiene mapeos requeridos faltantes`,noPreview:`No hay vista previa de mapeo disponible`,selectDeviceFirst:`Por favor, seleccione un dispositivo en el paso 1 para generar una vista previa del mapeo`,invalidSuggestedCategory:`La categoría sugerida no es compatible. Por favor, seleccione una categoría válida.`,missingChannelCategory:`Las siguientes entidades están habilitadas pero no tienen una categoría de canal: {entities}. Por favor, seleccione una categoría de canal para cada entidad habilitada antes de continuar.`,debugDescription:`Copie estos datos y compártalos con los desarrolladores para ayudar a diagnosticar problemas de mapeo o solicitar mapeos personalizados.`,debugCopied:`Datos de depuración copiados al portapapeles`,debugCopyFailed:`Error al copiar los datos de depuración al portapapeles`},categorySelection:{description:`Basándose en las entidades del dispositivo, se ha sugerido una categoría. Por favor, revise y seleccione la categoría correcta para este dispositivo. La vista previa del mapeo se actualizará según su selección.`},discovery:{fetchFailed:`Error al obtener las instancias descubiertas`,refreshFailed:`Error al actualizar las instancias descubiertas`}},buttons:{loadPreview:`Cargar vista previa`,updatePreview:`Actualizar vista previa`,adoptDevice:`Adoptar dispositivo`,next:`Siguiente`,previous:`Anterior`,skip:`Omitir`,use:`Usar`,applyChanges:`Aplicar cambios`,refreshDiscovery:`Actualizar descubrimiento`,debug:`Depuración`,copyToClipboard:`Copiar al portapapeles`,close:`Cerrar`},labels:{suggested:`Sugerido`},misc:{options:{entities:{noEntity:`No conectado a la entidad del dispositivo`},attributes:{noAttribute:`No conectado al atributo de la entidad`,mainState:`Atributo de estado principal de la entidad`}}},texts:{aboutConnectionSettings:`Configure la conexión a su instancia de Home Assistant. Cuando esté habilitado, los dispositivos de Home Assistant estarán disponibles en el Smart Panel. Necesitará un token de acceso de larga duración de Home Assistant y el nombre de host o la dirección IP de su instancia.`,mapping:{customizationDescription:`Puede personalizar el mapeo cambiando las categorías de canal para las entidades o habilitando/deshabilitando entidades. Por defecto, todas las entidades con una categoría de canal sugerida están habilitadas. Haga clic en 'Siguiente' para continuar con la configuración seleccionada.`}}},sb={fields:{devices:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID urzadzenia`},identifier:{title:`Identyfikator systemowy`,placeholder:`Identyfikator systemowy urzadzenia`},category:{title:`Kategoria`,placeholder:`Kategoria urzadzenia`,description:`O kategorii`,validation:{required:`Prosze wybrac kategorie urzadzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urzadzenia`,validation:{required:`Prosze podac nazwe urzadzenia`}},description:{title:`Opis`,placeholder:`Opis urzadzenia`},enabled:{title:`Wlaczony`,placeholder:`Wlacz lub wylacz urzadzenie`},haDeviceId:{title:`Urzadzenie Home Assistant`,placeholder:`Wybierz urzadzenie z instancji Home Assistant`,validation:{required:`Prosze wybrac urzadzenie Home Assistant`}},manufacturer:{title:`Producent`},model:{title:`Model`},entities:{title:`Encje`},domain:{title:`Domena`},type:{title:`Typ`}},channelsProperties:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID wlasciwosci kanalu`},channel:{title:`Kanal`,placeholder:`Wybierz kanal`,validation:{required:`Prosze wybrac kanal wlasciwosci`}},category:{title:`Kategoria`,placeholder:`Kategoria wlasciwosci kanalu`,validation:{required:`Prosze wybrac kategorie wlasciwosci kanalu`}},name:{title:`Nazwa`,placeholder:`Nazwa wlasciwosci kanalu`},dataType:{validation:{required:`Prosze wybrac typ danych`}},permissions:{validation:{required:`Prosze wybrac uprawnienia`}},haEntityId:{title:`Encja urzadzenia Home Assistant`,placeholder:`Wybierz encje urzadzenia Home Assistant`,validation:{required:`Prosze wybrac encje urzadzenia Home Assistant`}},haAttribute:{title:`Atrybut encji Home Assistant`,placeholder:`Wybierz atrybut encji Home Assistant`,validation:{required:`Prosze wybrac atrybut encji Home Assistant`}}},mapping:{totalEntities:`Laczna liczba encji`,mapped:`Zmapowane`,partial:`Czesciowe`,unmapped:`Niezmapowane`,skipped:`Pominiete`,incompatible:`Niekompatybilne`,excluded:`Wykluczone`,suggestedCategory:`Sugerowana kategoria`,suggestedChannel:{title:`Sugerowany kanal`,validation:{required:`Prosze wybrac kategorie kanalu dla tej encji`}},properties:`Wlasciwosci`,unmappedAttributes:`Niezmapowane atrybuty`,missingRequiredProperties:`Brakujace wymagane wlasciwosci`,incompatibleChannel:`Kanal nie jest obslugiwany dla tej kategorii urzadzenia`,virtualTypes:{static:`Statyczny`,derived:`Automatyczny`,command:`Komenda`,virtual:`Wirtualny`},validation:{valid:`Konfiguracja urzadzenia jest prawidlowa`,invalid:`Konfiguracja urzadzenia ma problemy`,missingChannels:`Brakujace wymagane kanaly`,missingProperties:`Brakujace wymagane wlasciwosci`,autoFilled:`Automatycznie uzupelnione wirtualnymi wlasciwosciami`,unknownChannels:`Kanaly niedozwolone dla tego typu urzadzenia`,duplicateChannels:`Zduplikowane kanaly (powinny byc unikalne)`,constraintViolations:`Naruszenia ograniczen konfiguracji`}},config:{enabled:{title:`Wlaczony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadz dlugoterminowy token dostepu Home Assistant`,validation:{required:`Prosze podac klucz API`}},hostname:{title:`Nazwa hosta`,placeholder:`Wprowadz nazwe hosta Home Assistant (np. homeassistant.local:8123)`,validation:{required:`Prosze podac nazwe hosta`}}}},headings:{aboutConnectionSettings:`Polaczenie Home Assistant`,device:{deviceSelection:`Wybierz urzadzenie`,deviceInformation:`Informacje o urzadzeniu`,categorySelection:`Kategoria urzadzenia`,mappingPreview:`Podglad mapowania`,mappingCustomization:`Dostosowanie mapowania`,deviceConfiguration:`Konfiguracja urzadzenia`},mapping:{entityMappings:`Mapowania encji`,warnings:`Ostrzezenia mapowania ({count})`,errors:`Bledy`,summary:`Podsumowanie mapowania`,debugData:`Dane debugowania`}},messages:{config:{edited:`Zmiany zapisane! Konfiguracja wtyczki Home Assistant zostala zaktualizowana.`,notEdited:`Cos poszlo nie tak. Aktualizacja konfiguracji wtyczki Home Assistant nie powiodla sie.`},devices:{created:`Nowe urzadzenie Home Assistant zostalo pomyslnie dodane.`,notCreated:`Cos poszlo nie tak. Nie udalo sie utworzyc urzadzenia Home Assistant.`,exists:`Urzadzenie jest juz zaadoptowane w systemie.`,alreadyAdopted:`To urzadzenie jest juz zaadoptowane`,alreadyAdoptedDescription:`Kontynuowanie spowoduje ponowna adopcje urzadzenia z nowa konfiguracja. Istniejace urzadzenie zostanie zaktualizowane.`,noDiscoveredDevices:`Brak dostepnych urzadzen Home Assistant. Upewnij sie, ze instancja Home Assistant jest polaczona i urzadzenia sa wykryte.`},mapping:{previewLoading:`Ladowanie podgladu mapowania...`,previewError:`Nie udalo sie zaladowac podgladu mapowania`,adoptionSuccess:`Urzadzenie {device} pomyslnie zaadoptowane`,adoptionError:`Nie udalo sie zaadoptowac urzadzenia`,readyToAdopt:`Urzadzenie jest gotowe do adopcji`,notReadyToAdopt:`Urzadzenie ma brakujace wymagane mapowania`,noPreview:`Brak dostepnego podgladu mapowania`,selectDeviceFirst:`Prosze wybrac urzadzenie w kroku 1, aby wygenerowac podglad mapowania`,invalidSuggestedCategory:`Sugerowana kategoria nie jest obslugiwana. Prosze wybrac prawidlowa kategorie.`,missingChannelCategory:`Nastepujace encje sa wlaczone, ale brakuje im kategorii kanalu: {entities}. Prosze wybrac kategorie kanalu dla kazdej wlaczonej encji przed kontynuowaniem.`,debugDescription:`Skopiuj te dane i udostepnij deweloperom, aby pomoc zdiagnozowac problemy z mapowaniem lub zlozyc prosbe o niestandardowe mapowania.`,debugCopied:`Dane debugowania skopiowane do schowka`,debugCopyFailed:`Nie udalo sie skopiowac danych debugowania do schowka`},categorySelection:{description:`Na podstawie encji urzadzenia zasugerowano kategorie. Prosze przejrzec i wybrac prawidlowa kategorie dla tego urzadzenia. Podglad mapowania zostanie zaktualizowany na podstawie wyboru.`},discovery:{fetchFailed:`Nie udalo sie pobrac wykrytych instancji`,refreshFailed:`Nie udalo sie odswiezyc wykrytych instancji`}},buttons:{loadPreview:`Zaladuj podglad`,updatePreview:`Zaktualizuj podglad`,adoptDevice:`Adoptuj urzadzenie`,next:`Dalej`,previous:`Wstecz`,skip:`Pomin`,use:`Uzyj`,applyChanges:`Zastosuj zmiany`,refreshDiscovery:`Odswiez wykrywanie`,debug:`Debugowanie`,copyToClipboard:`Kopiuj do schowka`,close:`Zamknij`},labels:{suggested:`Sugerowane`},misc:{options:{entities:{noEntity:`Nie polaczone z encja urzadzenia`},attributes:{noAttribute:`Nie polaczone z atrybutem encji`,mainState:`Glowny atrybut stanu encji`}}},texts:{aboutConnectionSettings:`Skonfiguruj polaczenie z instancja Home Assistant. Po wlaczeniu urzadzenia z Home Assistant beda dostepne w Smart Panel. Potrzebujesz dlugoterminowego tokenu dostepu z Home Assistant i nazwy hosta lub adresu IP instancji.`,mapping:{customizationDescription:`Mozesz dostosowac mapowanie zmieniajac kategorie kanalow dla encji lub wlaczajac/wylaczajac encje. Domyslnie wszystkie encje z sugerowana kategoria kanalu sa wlaczone. Kliknij 'Dalej', aby kontynuowac z wybrana konfiguracja.`}}},cb={fields:{devices:{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`},haDeviceId:{title:`Zariadenie Home Assistant`,placeholder:`Vyberte zariadenie z inštancie Home Assistant`,validation:{required:`Prosím vyberte zariadenie Home Assistant`}},manufacturer:{title:`Výrobca`},model:{title:`Model`},entities:{title:`Entity`},domain:{title:`Doména`},type:{title:`Typ`}},channelsProperties:{id:{title:`Interný identifikátor`,placeholder:`ID vlastnosti kanála`},channel:{title:`Kanál`,placeholder:`Vyberte kanál`,validation:{required:`Prosím vyberte kanál vlastnosti kanála`}},category:{title:`Kategória`,placeholder:`Kategória vlastnosti kanála`,validation:{required:`Prosím vyberte kategóriu vlastnosti kanála`}},name:{title:`Názov`,placeholder:`Názov vlastnosti kanála`},dataType:{validation:{required:`Prosím vyberte dátový typ`}},permissions:{validation:{required:`Prosím vyberte oprávnenia`}},haEntityId:{title:`Entita zariadenia Home Assistant`,placeholder:`Vyberte entitu zariadenia Home Assistant`,validation:{required:`Prosím vyberte entitu zariadenia Home Assistant`}},haAttribute:{title:`Atribút entity Home Assistant`,placeholder:`Vyberte atribút entity Home Assistant`,validation:{required:`Prosím vyberte atribút entity Home Assistant`}}},mapping:{totalEntities:`Celkový počet entít`,mapped:`Namapované`,partial:`Čiastočné`,unmapped:`Nenamapované`,skipped:`Preskočené`,incompatible:`Nekompatibilné`,excluded:`Vylúčené`,suggestedCategory:`Navrhovaná kategória`,suggestedChannel:{title:`Navrhovaný kanál`,validation:{required:`Prosím vyberte kategóriu kanála pre túto entitu`}},properties:`Vlastnosti`,unmappedAttributes:`Nenamapované atribúty`,missingRequiredProperties:`Chýbajúce povinné vlastnosti`,incompatibleChannel:`Kanál nie je podporovaný pre túto kategóriu zariadenia`,virtualTypes:{static:`Statický`,derived:`Automaticky`,command:`Príkaz`,virtual:`Virtuálny`},validation:{valid:`Konfigurácia zariadenia je platná`,invalid:`Konfigurácia zariadenia má problémy`,missingChannels:`Chýbajúce povinné kanály`,missingProperties:`Chýbajúce povinné vlastnosti`,autoFilled:`Automaticky vyplnené virtuálnymi vlastnosťami`,unknownChannels:`Kanály nie sú povolené pre tento typ zariadenia`,duplicateChannels:`Duplicitné kanály (mali by byť jedinečné)`,constraintViolations:`Porušenia konfiguračných obmedzení`}},config:{enabled:{title:`Povolené`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj dlhodobý prístupový token Home Assistant`,validation:{required:`Prosím vyplňte API kľúč`}},hostname:{title:`Hostname`,placeholder:`Zadajte hostname Home Assistant (napr. homeassistant.local:8123)`,validation:{required:`Prosím vyplňte hostname`}}}},headings:{aboutConnectionSettings:`Pripojenie Home Assistant`,device:{deviceSelection:`Výber zariadenia`,deviceInformation:`Informácie o zariadení`,categorySelection:`Kategória zariadenia`,mappingPreview:`Náhľad mapovania`,mappingCustomization:`Prispôsobenie mapovania`,deviceConfiguration:`Konfigurácia zariadenia`},mapping:{entityMappings:`Mapovania entít`,warnings:`Varovania mapovania ({count})`,errors:`Chyby`,summary:`Súhrn mapovania`,debugData:`Debug dáta`}},messages:{config:{edited:`Zmeny uložené! Konfigurácia pluginu Home Assistant bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie pluginu Home Assistant nebola úspešná.`},devices:{created:`Nové zariadenie Home Assistant bolo úspešne pridané.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť zariadenie Home Assistant.`,exists:`Zariadenie je už prijaté v systéme.`,alreadyAdopted:`Toto zariadenie je už prijaté`,alreadyAdoptedDescription:`Pokračovaním sa zariadenie znovu prijme s novou konfiguráciou. Existujúce zariadenie bude aktualizované.`,noDiscoveredDevices:`Žiadne zariadenia Home Assistant nie sú dostupné. Uistite sa, že vaša inštancia Home Assistant je pripojená a zariadenia sú objavené.`},mapping:{previewLoading:`Načítavanie náhľadu mapovania...`,previewError:`Nepodarilo sa načítať náhľad mapovania`,adoptionSuccess:`Zariadenie {device} bolo úspešne prijaté`,adoptionError:`Nepodarilo sa prijať zariadenie`,readyToAdopt:`Zariadenie je pripravené na prijatie`,notReadyToAdopt:`Zariadenie má chýbajúce povinné mapovania`,noPreview:`Náhľad mapovania nie je dostupný`,selectDeviceFirst:`Prosím vyberte zariadenie v kroku 1 na generovanie náhľadu mapovania`,invalidSuggestedCategory:`Navrhovaná kategória nie je podporovaná. Prosím vyberte platnú kategóriu.`,missingChannelCategory:`Nasledujúce entity sú povolené, ale chýba im kategória kanála: {entities}. Prosím vyberte kategóriu kanála pre každú povolenú entitu pred pokračovaním.`,debugDescription:`Skopírujte tieto dáta a zdieľajte ich s vývojármi na pomoc pri diagnostike problémov mapovania alebo na žiadosť o vlastné mapovania.`,debugCopied:`Debug dáta skopírované do schránky`,debugCopyFailed:`Nepodarilo sa skopírovať debug dáta do schránky`},categorySelection:{description:`Na základe entít zariadenia bola navrhnutá kategória. Prosím skontrolujte a vyberte správnu kategóriu pre toto zariadenie. Náhľad mapovania bude aktualizovaný na základe vášho výberu.`},discovery:{fetchFailed:`Nepodarilo sa načítať objavené inštancie`,refreshFailed:`Nepodarilo sa obnoviť objavené inštancie`}},buttons:{loadPreview:`Načítať náhľad`,updatePreview:`Aktualizovať náhľad`,adoptDevice:`Prijať zariadenie`,next:`Ďalej`,previous:`Predchádzajúci`,skip:`Preskočiť`,use:`Použiť`,applyChanges:`Aplikovať zmeny`,refreshDiscovery:`Obnoviť objavovanie`,debug:`Debug`,copyToClipboard:`Kopírovať do schránky`,close:`Zavrieť`},labels:{suggested:`Navrhované`},misc:{options:{entities:{noEntity:`Nepripojené k entite zariadenia`},attributes:{noAttribute:`Nepripojené k atribútu entity`,mainState:`Hlavný stavový atribút entity`}}},texts:{aboutConnectionSettings:`Nakonfigurujte pripojenie k vašej inštancii Home Assistant. Keď je povolená, zariadenia z Home Assistant budú dostupné v Smart Paneli. Budete potrebovať dlhodobý prístupový token z Home Assistant a hostname alebo IP adresu vašej inštancie.`,mapping:{customizationDescription:`Môžete prispôsobiť mapovanie zmenou kategórií kanálov pre entity alebo povolením/zakázaním entít. Predvolene sú všetky entity s navrhovanou kategóriou kanála povolené. Kliknite na 'Ďalej' pre pokračovanie s vybranou konfiguráciou.`}}},lb={"cs-CZ":rb,"de-DE":ib,"en-US":ab,"es-ES":ob,"pl-PL":sb,"sk-SK":cb},ub=Si.extend({haEntityId:Y(),haAttribute:Y()}),db=fi.extend({haEntityId:Y().optional(),haAttribute:Y().optional()}),fb=Tt.extend({apiKey:Y().nullable(),hostname:Y()}),pb=Xi.extend({haEntityId:Y().trim().nonempty().nullable().transform(e=>e===null?a_:e),haAttribute:Y().trim().nonempty().nullable().transform(e=>e===null?o_:e)}),mb=Mi.and(q({type:Z(i_),ha_entity_id:Y().trim().nonempty().nullable().transform(e=>e===`fb.no_entity`?null:e),ha_attribute:Y().trim().nonempty().nullable().transform(e=>e===`fb.no_attribute`?null:e),ha_transformer:Y().trim().nonempty().nullable()})),hb=Ti.and(q({type:Z(i_),ha_entity_id:Y().trim().nonempty().nullable().transform(e=>e===`fb.no_entity`?null:e),ha_attribute:Y().trim().nonempty().nullable().transform(e=>e===`fb.no_attribute`?null:e),ha_transformer:Y().trim().nonempty().nullable()})),gb=Li.and(q({type:Z(i_),ha_entity_id:Y().trim().nonempty().nullable(),ha_attribute:Y().trim().nonempty().nullable(),ha_transformer:Y().trim().nonempty().nullable()})),_b=ki,vb=q({id:Y().uuid().optional(),type:Z(i_),device:Y().uuid(),category:K(I),identifier:Y().trim().nonempty().nullable().optional(),name:Y().trim().nonempty(),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),parent:Y().uuid().nullable().optional(),controls:H(Bi).optional(),properties:H(mb).optional()}),yb=ji.and(q({type:Z(i_)}));q({id:Y().uuid(),type:Z(i_),device:Y().uuid(),category:K(I),identifier:Y().trim().nonempty().nullable(),name:Y().trim().nonempty(),description:Y().trim().nullable(),parent:Y().uuid().nullable().optional(),created_at:Y().date(),updated_at:Y().date().nullable(),controls:H(Ai),properties:H(gb)});var bb=Lt.extend({apiKey:Y().trim().nonempty().nullable(),hostname:Y().trim().nonempty()}),xb=Wt.and(q({type:Z(r_),api_key:Y().trim().nonempty().nullable().optional(),hostname:Y().trim().nonempty().optional()}));Qt.and(q({type:Z(r_),api_key:Y().trim().nonempty().nullable(),hostname:Y().trim().nonempty()}));var Sb=Ui.extend({haDeviceId:Y().trim().nonempty()}),Cb=Wi.and(q({type:Z(i_),ha_device_id:Y().trim().nonempty()})),wb=Ni.and(q({type:Z(i_)}));wi.and(q({type:Z(i_),ha_device_id:Y().trim().nonempty()}));var Tb=q({entityId:Y().trim().nonempty(),state:z([Y(),G(),R()]),attributes:je(Y(),et()),lastChanged:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),lastReported:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});q({fetching:q({items:R().default(!1),item:H(Y())})}),q({entityId:Y().trim().nonempty(),data:q({state:z([Y(),G(),R()]),attributes:je(Y(),et()),lastChanged:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),lastReported:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null),lastUpdated:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)})}),q({entityId:Y().trim().nonempty()}),q({entityId:Y().trim().nonempty()});var Eb=q({entity_id:Y().trim().nonempty(),state:z([Y(),G(),R()]),attributes:je(Y(),et()),last_changed:Y().date().nullable(),last_reported:Y().date().nullable(),last_updated:Y().date().nullable()}),Db=q({id:Y().trim().nonempty(),name:Y().trim(),entities:H(Y().trim().nonempty()),adoptedDeviceId:Y().uuid().nullable()});q({fetching:q({items:R().default(!1),item:H(Y())})}),q({id:Y().trim().nonempty(),data:q({name:Y().trim(),entities:H(Y().trim().nonempty()),adoptedDeviceId:Y().uuid().nullable()})}),q({id:Y().trim().nonempty()}),q({id:Y().trim().nonempty()}),q({id:Y().trim().nonempty(),name:Y().trim(),entities:H(Y().trim().nonempty()),adopted_device_id:Y().uuid().nullable(),states:H(Eb)});var Ob=e=>{let t=Db.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate received Home Assistant device data.`);return t.data},kb=e=>{let t=Tb.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new u_(`Failed to validate received Home Assistant state data.`);return t.data},Ab={fetching:{items:!1,item:[]}},jb=it(`devices_home_assistant_plugin-discovered_devices`,()=>{let e=fn(),t=Ke(),n=Ye(),r=N(Ab),i=N(!1),a=N({}),o=()=>i.value,s=e=>r.value.fetching.item.includes(e),c=()=>r.value.fetching.items,l=()=>Object.values(a.value),u=e=>a.value[e]??null,d={},f={},p=e=>{if(e.id&&a.value&&e.id in a.value){let n=Db.safeParse({...a.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert HomeAssistantDiscoveredDevice.`);return a.value[n.data.id]=n.data}let n=Db.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert Home Assistant device.`);return a.value=a.value??{},a.value[n.data.id]=n.data},m=e=>{a.value&&delete a.value[e.id]},h=async t=>{let n=d[t.id];if(n)return n;let i=(async()=>{if(r.value.fetching.item.includes(t.id))throw new l_(`Already fetching HomeAssistantDiscoveredDevice.`);r.value.fetching.item.push(t.id);try{let{data:n,error:r,response:i}=await e.client.GET(`/${ae}/${n_}/discovered-devices/{id}`,{params:{path:{id:t.id}}});if(n!==void 0){let e=Ob(n.data);return a.value[e.id]=e,_(e,n.data.states),e}let o=`Failed to fetch HomeAssistantDiscoveredDevice.`;throw r&&(o=Gt(r,o)),new l_(o,i.status)}finally{r.value.fetching.item=r.value.fetching.item.filter(e=>e!==t.id)}})();d[t.id]=i;try{return await i}finally{delete d[t.id]}},g=async()=>{let t=f.all;if(t)return t;let n=(async()=>{if(r.value.fetching.items)throw new l_(`Already fetching Home Assistant devices.`);r.value.fetching.items=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${ae}/${n_}/discovered-devices`);if(t!==void 0)return a.value=Object.fromEntries(t.data.map(e=>{let t=Ob(e);return _(t,e.states),[t.id,t]})),i.value=!0,Object.values(a.value);let o=`Failed to fetch Home Assistant devices.`;throw n&&(o=Gt(n,o)),new l_(o,r.status)}finally{r.value.fetching.items=!1}})();f.all=n;try{return await n}finally{delete f.all}},_=(e,t)=>{let r=n.getStore(R_);t.forEach(e=>{r.set({entityId:e.entity_id,data:kb(e)})})};return{semaphore:r,firstLoad:i,data:a,firstLoadFinished:o,getting:s,fetching:c,findAll:l,findById:u,set:p,unset:m,get:h,fetch:g}}),Mb=e=>jb(e),Nb=q({entityId:Y().trim().nonempty(),name:Y().trim(),domain:Y().trim().nonempty(),adoptedDeviceId:Y().uuid().nullable(),state:Tb.nullable().optional()});q({fetching:q({items:R().default(!1),item:H(Y())})}),q({entityId:Y().trim().nonempty(),data:q({name:Y().trim(),domain:Y().trim().nonempty(),adoptedDeviceId:Y().uuid().nullable()})}),q({entityId:Y().trim().nonempty()}),q({entityId:Y().trim().nonempty()});var Pb=q({entity_id:Y().trim().nonempty(),name:Y().trim(),domain:Y().trim().nonempty(),adopted_device_id:Y().uuid().nullable(),state:q({entity_id:Y().trim().nonempty(),state:z([Y(),G(),R()]).nullable(),attributes:je(Y(),et()),last_changed:Y().datetime().nullable().optional(),last_reported:Y().datetime().nullable().optional(),last_updated:Y().datetime().nullable().optional()}).nullable().optional()}),Fb=e=>{let t=Pb.safeParse(e);if(!t.success)throw Ut.error(`Helper response validation failed with:`,t.error),new u_(`Failed to validate Home Assistant helper response.`);let n=t.data,r={entityId:n.entity_id,name:n.name,domain:n.domain,adoptedDeviceId:n.adopted_device_id,state:n.state?kb(n.state):null},i=Nb.safeParse(r);if(!i.success)throw Ut.error(`Helper transformation validation failed with:`,i.error),new u_(`Failed to transform Home Assistant helper data.`);return i.data},Ib={fetching:{items:!1,item:[]}},Lb=it(`devices_home_assistant_plugin-discovered_helpers`,()=>{let e=fn(),t=Ke(),n=Ye(),r=N(Ib),i=N(!1),a=N({}),o=()=>i.value,s=e=>r.value.fetching.item.includes(e),c=()=>r.value.fetching.items,l=()=>Object.values(a.value),u=e=>a.value[e]??null,d={},f={},p=e=>{if(e.entityId&&a.value&&e.entityId in a.value){let n=Nb.safeParse({...a.value[e.entityId],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert HomeAssistantDiscoveredHelper.`);return a.value[n.data.entityId]=n.data}let n=Nb.safeParse({...e.data,entityId:e.entityId});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert Home Assistant helper.`);return a.value=a.value??{},a.value[n.data.entityId]=n.data},m=e=>{a.value&&delete a.value[e.entityId]},h=async t=>{let n=d[t.entityId];if(n)return n;let i=(async()=>{if(r.value.fetching.item.includes(t.entityId))throw new l_(`Already fetching HomeAssistantDiscoveredHelper.`);r.value.fetching.item.push(t.entityId);try{let{data:n,error:r,response:i}=await e.client.GET(`/${ae}/${n_}/discovered-helpers/{entityId}`,{params:{path:{entityId:t.entityId}}});if(n!==void 0){let e=Fb(n.data);return a.value[e.entityId]=e,n.data.state&&_(n.data.state),e}let o=`Failed to fetch HomeAssistantDiscoveredHelper.`;throw r&&(o=r?.error?.message??o),new l_(o,i.status)}finally{r.value.fetching.item=r.value.fetching.item.filter(e=>e!==t.entityId)}})();d[t.entityId]=i;try{return await i}finally{delete d[t.entityId]}},g=async()=>{let t=f.all;if(t)return t;let n=(async()=>{if(r.value.fetching.items)throw new l_(`Already fetching Home Assistant helpers.`);r.value.fetching.items=!0;try{let{data:t,error:n,response:r}=await e.client.GET(`/${ae}/${n_}/discovered-helpers`);if(t!==void 0)return a.value=Object.fromEntries(t.data.map(e=>{let t=Fb(e);return e.state&&_(e.state),[t.entityId,t]})),i.value=!0,Object.values(a.value);let o=`Failed to fetch Home Assistant helpers.`;throw n&&(o=n?.error?.message??o),new l_(o,r.status)}finally{r.value.fetching.items=!1}})();f.all=n;try{return await n}finally{delete f.all}},_=e=>{n.getStore(R_).set({entityId:e.entity_id,data:kb(e)})};return{semaphore:r,firstLoad:i,data:a,firstLoadFinished:o,getting:s,fetching:c,findAll:l,findByEntityId:u,set:p,unset:m,get:h,fetch:g}}),Rb=e=>Lb(e),zb={fetching:{items:!1,item:[]}},Bb=it(`devices_home_assistant_plugin-states`,()=>{let e=fn(),t=Ke(),n=N(zb),r=N(!1),i=N({}),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={};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,set:e=>{if(e.entityId&&i.value&&e.entityId in i.value){let n=Tb.safeParse({...i.value[e.entityId],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert HomeAssistantState.`);return i.value[n.data.entityId]=n.data}let n=Tb.safeParse({...e.data,entityId:e.entityId});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new u_(`Failed to insert Home Assistant device.`);return i.value=i.value??{},i.value[n.data.entityId]=n.data},unset:e=>{i.value&&delete i.value[e.entityId]},get:async t=>{let r=u[t.entityId];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.entityId))throw new l_(`Already fetching HomeAssistantState.`);n.value.fetching.item.push(t.entityId);try{let{data:n,error:r,response:a}=await e.client.GET(`/${ae}/${n_}/states/{entityId}`,{params:{path:{entityId:t.entityId}}});if(n!==void 0){let e=kb(n.data);return i.value[e.entityId]=e,e}let o=`Failed to fetch HomeAssistantState.`;throw r&&(o=Gt(r,o)),new l_(o,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.entityId)}})();u[t.entityId]=a;try{return await a}finally{delete u[t.entityId]}},fetch:async()=>{let t=d.all;if(t)return t;let a=(async()=>{if(n.value.fetching.items)throw new l_(`Already fetching Home Assistant states.`);n.value.fetching.items=!0;try{let{data:t,error:n,response:a}=await e.client.GET(`/${ae}/${n_}/states`);if(t!==void 0)return i.value=Object.fromEntries(t.data.map(e=>{let t=kb(e);return[t.entityId,t]})),r.value=!0,Object.values(i.value);let o=`Failed to fetch Home Assistant states.`;throw n&&(o=Gt(n,o)),new l_(o,a.status)}finally{n.value.fetching.items=!1}})();d.all=a;try{return await a}finally{delete d.all}}}}),Vb=e=>Bb(e),Hb=Symbol(`FB-Plugin-DevicesHomeAssistant`),Ub={install:(e,t)=>{let n=me(e),r=Ye(e);for(let[e,n]of Object.entries(lb)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesHomeAssistantPlugin:n});t.i18n.global.setLocaleMessage(e,r)}let i=Mb(t.store);e.provide(I_,i),r.addStore(I_,i);let a=Rb(t.store);e.provide(L_,a),r.addStore(L_,a);let o=Vb(t.store);e.provide(R_,o),r.addStore(R_,o),n.addPlugin(Hb,{type:r_,source:`com.fastybird.smart-panel.plugin.devices-home-assistant`,name:`Home Assistant`,description:`Connect and control your Home Assistant devices directly from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:nb},schemas:{pluginConfigSchema:bb,pluginConfigEditFormSchema:fb,pluginConfigUpdateReqSchema:xb},modules:[pn]},{type:i_,components:{deviceAddForm:Py,deviceEditForm:Iy,channelPropertyAddForm:Gy,channelPropertyEditForm:qy},schemas:{deviceSchema:Sb,deviceAddFormSchema:d_,deviceEditFormSchema:f_,deviceCreateReqSchema:Cb,deviceUpdateReqSchema:wb,channelSchema:_b,channelCreateReqSchema:vb,channelUpdateReqSchema:yb,channelPropertySchema:pb,channelPropertyAddFormSchema:ub,channelPropertyEditFormSchema:db,channelPropertyCreateReqSchema:mb,channelPropertyUpdateReqSchema:hb},modules:[si]}],modules:[si,pn],isCore:!0})}},Wb=f({name:`ReTerminalConfigForm`,__name:`reterminal-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`devicesReTerminalPlugin.messages.config.edited`),error:a(`devicesReTerminalPlugin.messages.config.notEdited`)}}),f=y({"polling.interval":[{required:!0,message:a(`devicesReTerminalPlugin.fields.config.polling.interval.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesReTerminalPlugin.fields.config.polling.interval.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`devicesReTerminalPlugin.headings.aboutPluginStatus`),description:h(a)(`devicesReTerminalPlugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesReTerminalPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[2]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesReTerminalPlugin.headings.aboutPolling`),description:h(a)(`devicesReTerminalPlugin.texts.aboutPolling`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesReTerminalPlugin.fields.config.polling.interval.title`),prop:`polling.interval`,class:`mt-3`},{default:d(()=>[F(h(Sn),{modelValue:h(s).polling.interval,"onUpdate:modelValue":t[1]||=e=>h(s).polling.interval=e,min:1e3,step:1e3,name:`polling.interval`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Gb=`devices-reterminal-plugin`,Kb=`devices-reterminal`,qb=class extends Error{},Jb=class extends qb{},Yb=yi.extend({variant:K(ot).nullable()}),Xb=pi.extend({variant:K(ot).nullable()}),Zb=[U.terminal],Qb=({id:e})=>{let t=Ye().getStore(qr),{t:n}=b(),r=rt(),i=Ke(),a=N(Q.NONE),o,s=j(()=>Vt(Zb,[e=>n(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:n(`devicesModule.categories.devices.${e}`)}))),c=y({...Ft(Yb),id:e,type:Kb,category:U.terminal,name:``,description:``,variant:null,enabled:!0}),l=Mt(w(c)),u=N(void 0),d=N(!1),f=async()=>{if(u.value.clearValidate(),!await u.value.validate())throw new Jb(`Form not valid`);let s=Yb.safeParse(c);if(!s.success)throw i.error(`Schema validation failed with:`,s.error),new Jb(`Failed to validate create device model.`);a.value=Q.WORKING;let l=n(`devicesReTerminalPlugin.messages.devices.notCreated`,{device:c.name});try{await t.add({id:e,draft:!1,data:{...s.data,type:Kb}})}catch(e){throw a.value=Q.ERROR,o=window.setTimeout(p,2e3),e instanceof ui&&e.code===422?r.error(e.message):r.error(l),e}return a.value=Q.OK,o=window.setTimeout(p,2e3),r.success(n(`devicesReTerminalPlugin.messages.devices.created`,{device:c.name})),`added`},p=()=>{window.clearTimeout(o),a.value=Q.NONE};return m(c,()=>{d.value=!(0,Ka.isEqual)(w(c),l)}),{categoriesOptions:s,model:c,formEl:u,formChanged:d,submit:f,clear:p,formResult:a}},$b=f({name:`ReTerminalDeviceAddForm`,__name:`reterminal-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Qb({id:n.id}),_=[{value:ot.reterminal,label:`reTerminal CM4`},{value:ot.reterminal_dm,label:`reTerminal DM`}],v=y({name:[{required:!0,message:o(`devicesReTerminalPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesReTerminalPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:v,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[0]||=e=>h(c).name=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[1]||=e=>h(c).category=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.variant.title`),prop:`variant`},{default:d(()=>[F(h(X),{modelValue:h(c).variant,"onUpdate:modelValue":t[2]||=e=>h(c).variant=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.variant.placeholder`),name:`variant`},{default:d(()=>[(i(),P(A,null,a(_,e=>F(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),ex=[U.terminal],tx=({device:e,messages:t})=>{let n=Ye().getStore(qr),{t:r}=b(),i=rt(),a=Ke(),o=N(Q.NONE),s,c=j(()=>Vt(ex,[e=>r(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:r(`devicesModule.categories.devices.${e}`)}))),l=y(e),u=Mt(w(l)),d=N(void 0),f=N(!1),p=async()=>{let c=e.draft,p=t&&t.error?t.error:e.draft?r(`devicesReTerminalPlugin.messages.devices.notCreated`,{device:e.name}):r(`devicesReTerminalPlugin.messages.devices.notEdited`,{device:e.name});if(d.value.clearValidate(),!await d.value.validate())throw new ai(`Form not valid`);let m=Xb.safeParse(l);if(!m.success)throw a.error(`Schema validation failed with:`,m.error),new Jb(`Failed to validate edit device model.`);o.value=Q.WORKING;try{await n.edit({id:e.id,data:{...m.data,type:e.type}}),e.draft&&await n.save({id:e.id})}catch(e){throw o.value=Q.ERROR,s=window.setTimeout(h,2e3),e instanceof ui&&e.code===422?i.error(e.message):i.error(p),e}return o.value=Q.OK,s=window.setTimeout(h,2e3),c?(i.success(r(t&&t.success?t.success:`devicesReTerminalPlugin.messages.devices.created`,{device:e.name})),`added`):(i.success(r(t&&t.success?t.success:`devicesReTerminalPlugin.messages.devices.edited`,{device:e.name})),f.value=!1,u=Mt(w(l)),`saved`)},h=()=>{window.clearTimeout(s),o.value=Q.NONE};return m(l,()=>{f.value=!(0,Ka.isEqual)(w(l),u)}),{categoriesOptions:c,model:l,formEl:d,formChanged:f,submit:p,clear:h,formResult:o}},nx=f({name:`ReTerminalDeviceEditForm`,__name:`reterminal-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=tx({device:n.device}),_=[{value:ot.reterminal,label:`reTerminal CM4`},{value:ot.reterminal_dm,label:`reTerminal DM`}],v=y({name:[{required:!0,message:o(`devicesReTerminalPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesReTerminalPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:v,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[1]||=e=>h(c).name=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[2]||=e=>h(c).category=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesReTerminalPlugin.fields.devices.variant.title`),prop:`variant`},{default:d(()=>[F(h(X),{modelValue:h(c).variant,"onUpdate:modelValue":t[5]||=e=>h(c).variant=e,placeholder:h(o)(`devicesReTerminalPlugin.fields.devices.variant.placeholder`),name:`variant`},{default:d(()=>[(i(),P(A,null,a(_,e=>F(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),rx={headings:{aboutPluginStatus:`Stav pluginu`,aboutPolling:`Dotazování senzorů`},texts:{aboutPluginStatus:`Povolte nebo zakažte plugin reTerminal. Pokud je zakázán, žádné periferie hardwaru reTerminal nebudou monitorovány ani ovládány.`,aboutPolling:`Nakonfigurujte, jak často plugin dotazuje hardwarové senzory (světlo, akcelerometr, teplota) na aktualizované hodnoty.`},fields:{config:{enabled:{title:`Povolit plugin`},polling:{interval:{title:`Interval dotazování (ms)`,validation:{required:`Interval dotazování je povinný`,number:`Musí být číslo >= 1000`}}}},devices:{id:{title:`ID zařízení`,placeholder:`ID zařízení`},name:{title:`Název zařízení`,placeholder:`Zadejte název zařízení`,validation:{required:`Název zařízení je povinný`}},category:{title:`Kategorie zařízení`,placeholder:`Vyberte kategorii`,validation:{required:`Kategorie zařízení je povinná`}},description:{title:`Popis`,placeholder:`Zadejte popis zařízení (volitelné)`},variant:{title:`Hardwarová varianta`,placeholder:`Vyberte hardwarovou variantu`,validation:{required:`Hardwarová varianta je povinná`}},enabled:{title:`Povoleno`}}},messages:{config:{edited:`Konfigurace pluginu reTerminal byla aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci pluginu reTerminal`},devices:{created:`Zařízení reTerminal '{device}' bylo vytvořeno`,notCreated:`Nepodařilo se vytvořit zařízení reTerminal '{device}'`,edited:`Zařízení reTerminal '{device}' bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat zařízení reTerminal '{device}'`}}},ix={headings:{aboutPluginStatus:`Plugin-Status`,aboutPolling:`Sensor-Abfrage`},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie das reTerminal-Plugin. Wenn deaktiviert, werden keine reTerminal-Hardwareperipheriegeräte überwacht oder gesteuert.`,aboutPolling:`Konfigurieren Sie, wie oft das Plugin Hardware-Sensoren (Licht, Beschleunigungsmesser, Temperatur) nach aktualisierten Messwerten abfragt.`},fields:{config:{enabled:{title:`Plugin aktivieren`},polling:{interval:{title:`Abfrageintervall (ms)`,validation:{required:`Abfrageintervall ist erforderlich`,number:`Muss eine Zahl >= 1000 sein`}}}},devices:{id:{title:`Geräte-ID`,placeholder:`Geräte-ID`},name:{title:`Gerätename`,placeholder:`Gerätenamen eingeben`,validation:{required:`Gerätename ist erforderlich`}},category:{title:`Gerätekategorie`,placeholder:`Kategorie auswählen`,validation:{required:`Gerätekategorie ist erforderlich`}},description:{title:`Beschreibung`,placeholder:`Gerätebeschreibung eingeben (optional)`},variant:{title:`Hardware-Variante`,placeholder:`Hardware-Variante auswählen`,validation:{required:`Hardware-Variante ist erforderlich`}},enabled:{title:`Aktiviert`}}},messages:{config:{edited:`reTerminal-Plugin-Konfiguration wurde aktualisiert`,notEdited:`Aktualisierung der reTerminal-Plugin-Konfiguration fehlgeschlagen`},devices:{created:`reTerminal-Gerät '{device}' wurde erstellt`,notCreated:`Erstellung des reTerminal-Geräts '{device}' fehlgeschlagen`,edited:`reTerminal-Gerät '{device}' wurde aktualisiert`,notEdited:`Aktualisierung des reTerminal-Geräts '{device}' fehlgeschlagen`}}},ax={headings:{aboutPluginStatus:`Plugin Status`,aboutPolling:`Sensor Polling`},texts:{aboutPluginStatus:`Enable or disable the reTerminal plugin. When disabled, no reTerminal hardware peripherals will be monitored or controlled.`,aboutPolling:`Configure how often the plugin polls hardware sensors (light, accelerometer, temperature) for updated readings.`},fields:{config:{enabled:{title:`Enable Plugin`},polling:{interval:{title:`Polling Interval (ms)`,validation:{required:`Polling interval is required`,number:`Must be a number >= 1000`}}}},devices:{id:{title:`Device ID`,placeholder:`Device ID`},name:{title:`Device Name`,placeholder:`Enter device name`,validation:{required:`Device name is required`}},category:{title:`Device Category`,placeholder:`Select category`,validation:{required:`Device category is required`}},description:{title:`Description`,placeholder:`Enter device description (optional)`},variant:{title:`Hardware Variant`,placeholder:`Select hardware variant`,validation:{required:`Hardware variant is required`}},enabled:{title:`Enabled`}}},messages:{config:{edited:`reTerminal plugin configuration has been updated`,notEdited:`Failed to update reTerminal plugin configuration`},devices:{created:`reTerminal device '{device}' has been created`,notCreated:`Failed to create reTerminal device '{device}'`,edited:`reTerminal device '{device}' has been updated`,notEdited:`Failed to update reTerminal device '{device}'`}}},ox={headings:{aboutPluginStatus:`Estado del plugin`,aboutPolling:`Sondeo de sensores`},texts:{aboutPluginStatus:`Habilitar o deshabilitar el plugin reTerminal. Cuando está deshabilitado, no se monitorizarán ni controlarán los periféricos de hardware del reTerminal.`,aboutPolling:`Configure con qué frecuencia el plugin sondea los sensores de hardware (luz, acelerómetro, temperatura) para obtener lecturas actualizadas.`},fields:{config:{enabled:{title:`Habilitar plugin`},polling:{interval:{title:`Intervalo de sondeo (ms)`,validation:{required:`El intervalo de sondeo es obligatorio`,number:`Debe ser un número >= 1000`}}}},devices:{id:{title:`ID del dispositivo`,placeholder:`ID del dispositivo`},name:{title:`Nombre del dispositivo`,placeholder:`Introduzca el nombre del dispositivo`,validation:{required:`El nombre del dispositivo es obligatorio`}},category:{title:`Categoría del dispositivo`,placeholder:`Seleccionar categoría`,validation:{required:`La categoría del dispositivo es obligatoria`}},description:{title:`Descripción`,placeholder:`Introduzca la descripción del dispositivo (opcional)`},variant:{title:`Variante de hardware`,placeholder:`Seleccione la variante de hardware`,validation:{required:`La variante de hardware es obligatoria`}},enabled:{title:`Habilitado`}}},messages:{config:{edited:`La configuración del plugin reTerminal ha sido actualizada`,notEdited:`Error al actualizar la configuración del plugin reTerminal`},devices:{created:`El dispositivo reTerminal '{device}' ha sido creado`,notCreated:`Error al crear el dispositivo reTerminal '{device}'`,edited:`El dispositivo reTerminal '{device}' ha sido actualizado`,notEdited:`Error al actualizar el dispositivo reTerminal '{device}'`}}},sx={headings:{aboutPluginStatus:`Status wtyczki`,aboutPolling:`Odpytywanie czujnikow`},texts:{aboutPluginStatus:`Wlacz lub wylacz wtyczke reTerminal. Po wylaczeniu zadne peryferia sprzetowe reTerminal nie beda monitorowane ani sterowane.`,aboutPolling:`Skonfiguruj, jak czesto wtyczka odpytuje czujniki sprzetowe (swiatlo, akcelerometr, temperatura) w celu uzyskania zaktualizowanych odczytow.`},fields:{config:{enabled:{title:`Wlacz wtyczke`},polling:{interval:{title:`Interwal odpytywania (ms)`,validation:{required:`Interwal odpytywania jest wymagany`,number:`Musi byc liczba >= 1000`}}}},devices:{id:{title:`ID urzadzenia`,placeholder:`ID urzadzenia`},name:{title:`Nazwa urzadzenia`,placeholder:`Wprowadz nazwe urzadzenia`,validation:{required:`Nazwa urzadzenia jest wymagana`}},category:{title:`Kategoria urzadzenia`,placeholder:`Wybierz kategorie`,validation:{required:`Kategoria urzadzenia jest wymagana`}},description:{title:`Opis`,placeholder:`Wprowadz opis urzadzenia (opcjonalnie)`},variant:{title:`Wariant sprzetowy`,placeholder:`Wybierz wariant sprzetowy`,validation:{required:`Wariant sprzetowy jest wymagany`}},enabled:{title:`Wlaczony`}}},messages:{config:{edited:`Konfiguracja wtyczki reTerminal zostala zaktualizowana`,notEdited:`Nie udalo sie zaktualizowac konfiguracji wtyczki reTerminal`},devices:{created:`Urzadzenie reTerminal '{device}' zostalo utworzone`,notCreated:`Nie udalo sie utworzyc urzadzenia reTerminal '{device}'`,edited:`Urzadzenie reTerminal '{device}' zostalo zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac urzadzenia reTerminal '{device}'`}}},cx={headings:{aboutPluginStatus:`Stav pluginu`,aboutPolling:`Dotazovanie senzorov`},texts:{aboutPluginStatus:`Povoľte alebo zakážte plugin reTerminal. Keď je zakázaný, žiadne periférie hardvéru reTerminal nebudú monitorované ani ovládané.`,aboutPolling:`Nakonfigurujte, ako často plugin dotazuje hardvérové senzory (svetlo, akcelerometer, teplota) na aktualizované hodnoty.`},fields:{config:{enabled:{title:`Povoliť plugin`},polling:{interval:{title:`Interval dotazovania (ms)`,validation:{required:`Interval dotazovania je povinný`,number:`Musí byť číslo >= 1000`}}}},devices:{id:{title:`ID zariadenia`,placeholder:`ID zariadenia`},name:{title:`Názov zariadenia`,placeholder:`Zadajte názov zariadenia`,validation:{required:`Názov zariadenia je povinný`}},category:{title:`Kategória zariadenia`,placeholder:`Vyberte kategóriu`,validation:{required:`Kategória zariadenia je povinná`}},description:{title:`Popis`,placeholder:`Zadajte popis zariadenia (voliteľné)`},variant:{title:`Hardvérový variant`,placeholder:`Vyberte hardvérový variant`,validation:{required:`Hardvérový variant je povinný`}},enabled:{title:`Povolené`}}},messages:{config:{edited:`Konfigurácia pluginu reTerminal bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu pluginu reTerminal`},devices:{created:`Zariadenie reTerminal '{device}' bolo vytvorené`,notCreated:`Nepodarilo sa vytvoriť zariadenie reTerminal '{device}'`,edited:`Zariadenie reTerminal '{device}' bolo aktualizované`,notEdited:`Nepodarilo sa aktualizovať zariadenie reTerminal '{device}'`}}},lx={"cs-CZ":rx,"de-DE":ix,"en-US":ax,"es-ES":ox,"pl-PL":sx,"sk-SK":cx},ux=Tt.extend({polling:q({interval:Ot().int().min(1e3)})}),dx=Xi,fx=Mi.and(q({type:Z(Kb)})),px=Ti.and(q({type:Z(Kb)}));Li.and(q({type:Z(Kb)}));var mx=ki,hx=Pi.and(q({type:Z(Kb)})),gx=ji.and(q({type:Z(Kb)}));Ii.and(q({type:Z(Kb)}));var _x=Lt.extend({polling:q({interval:G()})}),vx=Wt.and(q({type:Z(Gb),polling:q({interval:G().optional()}).optional()}));Qt.and(q({type:Z(Gb),polling:q({interval:G()})}));var yx=Ui.extend({variant:K(ot).nullable()}),bx=Wi.and(q({type:Z(Kb),variant:K(ot).optional()})),xx=Ni.and(q({type:Z(Kb),category:K(U).optional(),variant:K(ot).optional()}));wi.and(q({type:Z(Kb),variant:K(ot).optional()}));var Sx=Symbol(`FB-Plugin-DevicesReTerminal`),Cx={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(lx)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesReTerminalPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Sx,{type:Gb,source:`com.fastybird.smart-panel.plugin.devices-reterminal`,name:`reTerminal`,description:`SeeedStudio reTerminal host device hardware peripherals plugin`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Wb},schemas:{pluginConfigSchema:_x,pluginConfigEditFormSchema:ux,pluginConfigUpdateReqSchema:vx},modules:[pn]},{type:Kb,components:{deviceAddForm:$b,deviceEditForm:nx},schemas:{deviceSchema:yx,deviceAddFormSchema:Yb,deviceEditFormSchema:Xb,deviceCreateReqSchema:bx,deviceUpdateReqSchema:xx,channelSchema:mx,channelCreateReqSchema:hx,channelUpdateReqSchema:gx,channelPropertySchema:dx,channelPropertyCreateReqSchema:fx,channelPropertyUpdateReqSchema:px},modules:[si]}],modules:[si,pn],isCore:!0})}},wx=`devices-shelly-ng`,Tx=`devices-shelly-ng-plugin`,Ex=`devices-shelly-ng`,Dx=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DevicesShellyNgException`,this.exception=t}},Ox=class extends Dx{code;constructor(e,t=null,n=null){super(e,n),this.name=`DevicesShellyNgApiException`,this.code=t}},kx=class extends Dx{constructor(e,t=null){super(e,t),this.name=`DevicesShellyNgValidationException`}},Ax=yi.extend({password:Y().nullable().optional(),hostname:Y().trim().nonempty()}),jx=pi.extend({password:Y().nullable().optional(),hostname:Y().trim().nonempty()}),Mx=q({group:Y(),name:Y(),models:H(Y()),categories:H(K(U)),components:H(q({type:Y(),ids:H(G())})),system:H(q({type:Y()}))}),Nx=q({hostname:Y(),password:Y().nullable().optional()}),Px=q({id:Y(),name:Y().nullable(),mac:Y(),model:Y(),firmware:Y(),app:Y(),profile:Y().optional(),authentication:q({domain:Y().nullable().optional(),enabled:R()}),discoverable:R(),components:H(q({type:Y(),ids:H(G())}))}),Fx=e=>{let t=[];for(let n of e){let e=Mx.safeParse(Ct(n));if(!e.success)throw Ut.error(`Schema validation failed with:`,e.error),new kx(`Failed to validate received supported device data.`);t.push(e.data)}return t},Ix=e=>{let t=Px.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new kx(`Failed to validate received device info data.`);return t.data},Lx=e=>{let t=Nx.safeParse(zt(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new kx(`Failed to validate get device info request.`);return t.data},Rx=()=>{let{t:e}=b(),t=fn(),n=rt(),r=N([]),i=N(!1);return{supportedDevices:r,loaded:i,fetchDevices:async a=>{if(i.value&&!a)return;let{data:o,error:s,response:c}=await t.client.GET(`/${ae}/${wx}/devices/supported`,{});if(o!==void 0){r.value=Fx(o.data),i.value=!0;return}let l=e(`devicesShellyNgPlugin.messages.devices.failedLoadSupportedDevices`);if(c.status===422){let e=l;s&&(e=Gt(s,e)),n.error(e)}else n.error(l)}}},zx=({id:e})=>{let t=Ye().getStore(qr),{t:n}=b(),r=fn(),i=rt(),a=Ke(),{supportedDevices:o,fetchDevices:s}=Rx(),c=N(Q.NONE),l,u=j(()=>x.value===null?null:o.value.find(e=>e.models.includes(x.value.model.toUpperCase()))||null),d=j(()=>Vt(u.value?.categories||[],[e=>n(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:n(`devicesModule.categories.devices.${e}`)}))),f=y({...Ft(Ax),id:e,type:Ex,category:U.generic,name:``,description:``,hostname:``,password:``,enabled:!0}),p=Mt(w(f)),h=N(void 0),g=N(void 0),_=N(`one`),v=N(!1),x=N(null),S=async o=>{if(o===`one`){if(h.value.clearValidate(),!await h.value.validate())throw new kx(`Form not valid`);c.value=Q.WORKING;let e=n(`devicesShellyNgPlugin.messages.devices.notChecked`,{device:f.name});try{let{data:t,error:n,response:i}=await r.client.POST(`/${ae}/${wx}/devices/info`,{body:{data:Lx({hostname:f.hostname,password:f.password})}});if(t!==void 0)return x.value=Ix(t.data),_.value=`two`,c.value=Q.NONE,`ok`;let a=e;throw n&&(a=Gt(n,a)),new Ox(a,i.status)}catch(t){throw c.value=Q.ERROR,l=window.setTimeout(C,2e3),t instanceof Ox&&(t.code===422||t.code===404)?i.error(t.message):i.error(e),t}}else if(o===`two`){if(g.value.clearValidate(),!await g.value.validate())throw new kx(`Form not valid`);let r=Ax.safeParse(f);if(!r.success)throw a.error(`Schema validation failed with:`,r.error),new kx(`Failed to validate create device model.`);c.value=Q.WORKING;let o=n(`devicesShellyNgPlugin.messages.devices.notCreated`,{device:f.name});try{await t.add({id:e,draft:!1,data:{...r.data,type:Ex}})}catch(e){throw c.value=Q.ERROR,l=window.setTimeout(C,2e3),e instanceof ui&&e.code===422?i.error(e.message):i.error(o),e}return c.value=Q.OK,l=window.setTimeout(C,2e3),i.success(n(`devicesShellyNgPlugin.messages.devices.created`,{device:f.name})),`added`}else throw new kx(`Unknown step`)},C=()=>{window.clearTimeout(l),c.value=Q.NONE};return He(()=>{s().catch(()=>{})}),m(f,()=>{v.value=!(0,Ka.isEqual)(w(f),p)}),m(()=>f.hostname,(e,t)=>{e!==t&&(x.value=null)}),m(()=>x.value,e=>{f.identifier=e?.id||null}),{categoriesOptions:d,activeStep:_,deviceInfo:x,supportedDevices:o,model:f,stepOneFormEl:h,stepTwoFormEl:g,formChanged:v,submitStep:S,clear:C,formResult:c}},Bx={class:`grid grid-cols-[auto_1fr] gap-x-4 my-0`},Vx={class:`m-0 inline-block font-bold`},Hx={class:`m-0 inline-block font-bold`},Ux=f({name:`ShellyNgDeviceAddForm`,__name:`shelly-ng-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:s}=b(),c=rt(),{devices:u,loaded:f,fetchDevices:p}=Zi(),{model:S,stepOneFormEl:C,stepTwoFormEl:w,activeStep:O,categoriesOptions:ee,supportedDevices:te,formChanged:M,deviceInfo:re,submitStep:ie,formResult:ae}=zx({id:n.id}),oe=j(()=>re.value===null?null:te.value.find(e=>e.models.includes(re.value.model.toUpperCase()))||null),se=y({hostname:[{required:!0,message:s(`devicesShellyNgPlugin.fields.devices.hostname.validation.required`),trigger:`change`}]}),N=y({name:[{required:!0,message:s(`devicesShellyNgPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:s(`devicesShellyNgPlugin.fields.devices.category.validation.required`),trigger:`change`}],hostname:[{required:!0,message:s(`devicesShellyNgPlugin.fields.devices.hostname.validation.required`),trigger:`change`}]}),le=async()=>{O.value===`one`?ie(`one`).catch(()=>{}):O.value===`two`&&ie(`two`).catch(()=>{})};return o(()=>{f.value||p().catch(()=>{})}),m(()=>ae.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),O.value===`one`?ie(`one`).catch(()=>{}):O.value===`two`&&ie(`two`).catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{r(`update:remote-form-reset`,!1),e&&(C.value?.resetFields(),w.value?.resetFields())}),m(()=>M.value,e=>{r(`update:remote-form-changed`,e)}),m(()=>ee.value,e=>{e.length>0&&e[0]&&(S.category=e[0].value)}),m(()=>re.value,e=>{if(e===null)return;S.name=e.name||S.name;let t=u.value.find(t=>t.identifier===e.id&&t.type===`devices-shelly-ng`);t!==void 0&&(c.success(s(`devicesShellyNgPlugin.messages.devices.exists`,{device:t.name})),ve.push({name:ci.DEVICES_EDIT,params:{id:t.id},state:{prefills:{hostname:S.hostname,password:S.password}}}))}),(e,t)=>(i(),P(A,null,[F(h(en),{modelValue:h(O),"onUpdate:modelValue":t[6]||=e=>_(O)?O.value=e:null,accordion:``,"expand-icon-position":`left`},{default:d(()=>[F(h(pt),{title:h(s)(`devicesShellyNgPlugin.headings.device.deviceConnection`),name:`one`},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:connection`})]),_:1})]),default:d(()=>[F(h(B),{ref_key:`stepOneFormEl`,ref:C,model:h(S),rules:se,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(S).hostname,"onUpdate:modelValue":t[0]||=e=>h(S).hostname=e,placeholder:h(s)(`devicesShellyNgPlugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.password.title`),prop:`password`,class:`mb-0!`},{default:d(()=>[F(h(W),{modelValue:h(S).password,"onUpdate:modelValue":t[1]||=e=>h(S).password=e,placeholder:h(s)(`devicesShellyNgPlugin.fields.devices.password.placeholder`),name:`password`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`])]),_:1},8,[`title`]),F(h(pt),{title:h(s)(`devicesShellyNgPlugin.headings.device.information`),name:`two`,disabled:h(re)===null},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:devices`})]),_:1})]),default:d(()=>[F(h(L),{type:oe.value?`success`:`error`,title:oe.value?h(s)(`devicesShellyNgPlugin.headings.device.supported`):h(s)(`devicesShellyNgPlugin.headings.device.notSupported`),closable:!1,"show-icon":``},{default:d(()=>[D(`dl`,Bx,[D(`dt`,null,k(h(s)(`devicesShellyNgPlugin.headings.device.model`))+`:`,1),D(`dd`,Vx,k(oe.value===null?`unknown`:oe.value.name),1),D(`dt`,null,k(h(s)(`devicesShellyNgPlugin.headings.device.firmware`))+`:`,1),D(`dd`,Hx,k(h(re)?.firmware),1)])]),_:1},8,[`type`,`title`]),F(h(B),{ref_key:`stepTwoFormEl`,ref:w,model:h(S),rules:N,"label-position":`top`,"status-icon":``,class:`mt-4`},{default:d(()=>[F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(S).name,"onUpdate:modelValue":t[2]||=e=>h(S).name=e,placeholder:h(s)(`devicesShellyNgPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(S).category,"onUpdate:modelValue":t[3]||=e=>h(S).category=e,placeholder:h(s)(`devicesShellyNgPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(ee),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(S).category?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesModule.fields.devices.category.description`),description:h(s)(`devicesModule.texts.devices.description.${h(S).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(S).description,"onUpdate:modelValue":t[4]||=e=>h(S).description=e,placeholder:h(s)(`devicesShellyNgPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesShellyNgPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(S).enabled,"onUpdate:modelValue":t[5]||=e=>h(S).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`])]),_:1},8,[`title`,`disabled`])]),_:1},8,[`modelValue`]),h(O)===`one`?(i(),T(x,{key:0,defer:``,to:`#${h(Yt)}`},[F(h(E),{loading:h(ae)===h(Q).WORKING,disabled:h(ae)!==h(Q).NONE,type:`primary`,onClick:le},ce({default:d(()=>[v(` `+k(h(s)(`devicesShellyNgPlugin.buttons.next.title`)),1)]),_:2},[h(ae)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])],8,[`to`])):g(``,!0)],64))}}),Wx=({device:e,messages:t})=>{let n=Ye(),r=n.getStore(qr),i=n.getStore(Yr),a=n.getStore(Jr),{t:o}=b(),s=rt(),c=Ke(),{supportedDevices:l,fetchDevices:u}=Rx(),d=N(Q.NONE),f,p=j(()=>{let t=i.findForDevice(e.id).find(e=>e.category===I.device_information);if(t!==void 0){let e=a.findForChannel(t.id).find(e=>e.category===gt.model);return typeof e?.value==`string`?e?.value:void 0}}),h=j(()=>{let e=p.value;return typeof e==`string`&&l.value.find(t=>t.models.includes(e.toUpperCase()))||null}),g=j(()=>Vt(h.value?.categories||[],[e=>o(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:o(`devicesModule.categories.devices.${e}`)}))),_=y(e),v=Mt(w(_)),x=N(void 0),S=N(!1),C=async()=>{let n=e.draft,i=t&&t.error?t.error:e.draft?o(`devicesShellyNgPlugin.messages.devices.notCreated`,{device:e.name}):o(`devicesShellyNgPlugin.messages.devices.notEdited`,{device:e.name});if(x.value.clearValidate(),!await x.value.validate())throw new ai(`Form not valid`);let a=jx.safeParse(_);if(!a.success)throw c.error(`Schema validation failed with:`,a.error),new kx(`Failed to validate edit device model.`);d.value=Q.WORKING;try{await r.edit({id:e.id,data:{...a.data,type:e.type}}),e.draft&&await r.save({id:e.id})}catch(e){throw d.value=Q.ERROR,f=window.setTimeout(T,2e3),e instanceof ui&&e.code===422?s.error(e.message):s.error(i),e}return d.value=Q.OK,f=window.setTimeout(T,2e3),n?(s.success(o(t&&t.success?t.success:`devicesShellyNgPlugin.messages.devices.created`,{device:e.name})),`added`):(s.success(o(t&&t.success?t.success:`devicesShellyNgPlugin.messages.devices.edited`,{device:e.name})),S.value=!1,v=Mt(w(_)),`saved`)},T=()=>{window.clearTimeout(f),d.value=Q.NONE};return He(()=>{u().catch(()=>{})}),m(_,()=>{S.value=!(0,Ka.isEqual)(w(_),v)}),{categoriesOptions:g,supportedDevices:l,model:_,formEl:x,formChanged:S,submit:C,clear:T,formResult:d}},Gx=f({name:`ShellyNgDeviceEditForm`,__name:`shelly-ng-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Wx({device:n.device}),_=window.history.state?.prefills??null;if(_){c.hostname=_.hostname??c.hostname,c.password=_.password??c.password;let e={...window.history.state};delete e.prefills,history.replaceState(e,``)}let v=y({name:[{required:!0,message:o(`devicesShellyNgPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesShellyNgPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:v,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[1]||=e=>h(c).name=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[2]||=e=>h(c).category=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(c).hostname,"onUpdate:modelValue":t[5]||=e=>h(c).hostname=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.devices.password.title`),prop:`password`},{default:d(()=>[F(h(W),{modelValue:h(c).password,"onUpdate:modelValue":t[6]||=e=>h(c).password=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.devices.password.placeholder`),name:`password`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Kx=f({name:`ShellyNgConfigForm`,__name:`shelly-ng-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`devicesShellyNgPlugin.messages.config.edited`),error:o(`devicesShellyNgPlugin.messages.config.notEdited`)}}),p=y({"websockets.requestTimeout":[{required:!0,message:o(`devicesShellyNgPlugin.fields.config.websockets.requestTimeout.validation.required`),trigger:`change`},{type:`integer`,message:o(`devicesShellyNgPlugin.fields.config.websockets.requestTimeout.validation.number`),validator:(e,t)=>t>=1,trigger:`change`}],"websockets.pingInterval":[{required:!0,message:o(`devicesShellyNgPlugin.fields.config.websockets.pingInterval.validation.required`),trigger:`change`},{type:`integer`,message:o(`devicesShellyNgPlugin.fields.config.websockets.pingInterval.validation.number`),validator:(e,t)=>t>=0,trigger:`change`}],"websockets.reconnectInterval":[{required:!0,message:o(`devicesShellyNgPlugin.fields.config.websockets.reconnectInterval.validation.required`),trigger:`change`},{type:`array`,min:1,defaultField:{type:`integer`,message:o(`devicesShellyNgPlugin.fields.config.websockets.reconnectInterval.validation.number`),validator:(e,t)=>t>=1},message:o(`devicesShellyNgPlugin.fields.config.websockets.reconnectInterval.validation.array`),trigger:`change`}]});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:p,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`devicesShellyNgPlugin.headings.aboutPluginStatus`),description:h(o)(`devicesShellyNgPlugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[6]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(o)(`devicesShellyNgPlugin.headings.aboutMdns`),description:h(o)(`devicesShellyNgPlugin.texts.aboutMdns`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.mdns.enabled.title`),prop:`mdns.enabled`,class:`mt-3`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).mdns.enabled,"onUpdate:modelValue":t[1]||=e=>h(c).mdns.enabled=e,name:`mdnsEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.mdns.interface.title`),prop:`mdns.interface`},{default:d(()=>[F(h(W),{modelValue:h(c).mdns.interface,"onUpdate:modelValue":t[2]||=e=>h(c).mdns.interface=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.config.mdns.interface.placeholder`),name:`mdnsInterface`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),t[7]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(o)(`devicesShellyNgPlugin.headings.aboutWebsockets`),description:h(o)(`devicesShellyNgPlugin.texts.aboutWebsockets`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.websockets.requestTimeout.title`),prop:`websockets.requestTimeout`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(c).websockets.requestTimeout,"onUpdate:modelValue":t[3]||=e=>h(c).websockets.requestTimeout=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.config.websockets.requestTimeout.placeholder`),name:`websockets.requestTimeout`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.websockets.pingInterval.title`),prop:`websockets.pingInterval`},{default:d(()=>[F(h(W),{modelValue:h(c).websockets.pingInterval,"onUpdate:modelValue":t[4]||=e=>h(c).websockets.pingInterval=e,placeholder:h(o)(`devicesShellyNgPlugin.fields.config.websockets.pingInterval.placeholder`),name:`websockets.pingInterval`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyNgPlugin.fields.config.websockets.reconnectInterval.title`),prop:`websockets.reconnectInterval`},{default:d(()=>[F(h(X),{modelValue:h(c).websockets.reconnectInterval,"onUpdate:modelValue":t[5]||=e=>h(c).websockets.reconnectInterval=e,name:`websockets.reconnectInterval`,multiple:``,filterable:``,"allow-create":``,"default-first-option":``,"reserve-keyword":!1,placeholder:h(o)(`devicesShellyNgPlugin.fields.config.websockets.reconnectInterval.placeholder`)},{default:d(()=>[(i(!0),P(A,null,a(h(c).websockets.reconnectInterval,e=>(i(),T(h(J),{key:e,label:e,value:Number(e)},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),qx={headings:{aboutPluginStatus:`Stav pluginu`,aboutMdns:`Nastavení mDNS`,aboutWebsockets:`Nastavení WebSocket`,device:{deviceConnection:`Připojení zařízení`,information:`Informace o zařízení`,supported:`Gratulujeme! Zařízení je podporováno`,notSupported:`Je nám líto, vaše zařízení není podporováno`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interní identifikátor`,placeholder:`ID 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í`},password:{title:`Heslo administrátora`,placeholder:`Zadejte heslo zařízení, pokud je chráněno`},hostname:{title:`Název hostitele zařízení`,placeholder:`Síťový název nebo IP adresa zařízení`,validation:{required:`Vyplňte prosím název hostitele nebo IP adresu zařízení`}}},config:{enabled:{title:`Povoleno`},mdns:{enabled:{title:`Vyhledávání povoleno`},interface:{title:`Rozhraní`,placeholder:`Síťové rozhraní k použití. Pokud není zadáno, budou použita všechna dostupná rozhraní.`}},websockets:{requestTimeout:{title:`Časový limit požadavku`,placeholder:`Čas v sekundách pro čekání na odpověď před přerušením požadavku.`,validation:{required:`Vyplňte prosím časový limit požadavku`,number:`Časový limit požadavku musí být číslo`}},pingInterval:{title:`Interval pingu`,placeholder:`Interval v sekundách, ve kterém se odesílají ping požadavky pro ověření otevřeného spojení. Nastavte na 0 pro zakázání.`,validation:{required:`Vyplňte prosím interval pingu`,number:`Interval pingu musí být číslo`}},reconnectInterval:{title:`Interval opětovného připojení`,placeholder:`Interval v sekundách, ve kterém by měl být proveden pokus o připojení po uzavření socketu.`,validation:{required:`Vyplňte prosím interval opětovného připojení`,number:`Interval opětovného připojení musí být číslo`,array:`Interval opětovného připojení musí být pole čísel`}}}}},messages:{config:{edited:`Změny uloženy! Konfigurace pluginu Shelly Next Generation byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace pluginu Shelly Next Generation nebyla úspěšná.`},devices:{exists:`Zařízení se zadaným názvem hostitele a heslem je již registrováno v systému.`,created:`Nové zařízení Shelly Next-Generation bylo úspěšně přidáno.`,notCreated:`Něco se pokazilo. Nepodařilo se vytvořit zařízení Shelly Next-Generation.`,notChecked:`Něco se pokazilo. Nepodařilo se načíst informace o zařízení. Zkontrolujte název hostitele nebo heslo zařízení.`,edited:`Změny uloženy! Zařízení Shelly Next-Generation: {device} bylo aktualizováno.`,notEdited:`Něco se pokazilo. Aktualizace zařízení Shelly Next-Generation nebyla úspěšná.`,failedLoadSupportedDevices:`Něco se pokazilo. Nepodařilo se načíst podporovaná zařízení pluginu.`}},texts:{aboutPluginStatus:`Povolte nebo zakažte integraci zařízení Shelly Next Generation. Pokud je povolena, zařízení Shelly mohou být vyhledána a ovládána prostřednictvím Smart Panelu.`,aboutMdns:`Nakonfigurujte, jak plugin vyhledává zařízení Shelly ve vaší lokální síti pomocí Multicast DNS (mDNS). To umožňuje automatickou detekci bez nutnosti ručního zadávání IP adres.`,aboutWebsockets:`Spravujte parametry WebSocket připojení pro zařízení Shelly. Tato nastavení řídí stabilitu komunikace, zpracování požadavků a chování opětovného připojení.`},buttons:{next:{title:`Další`}}},Jx={headings:{aboutPluginStatus:`Plugin-Status`,aboutMdns:`MDNS-Einstellungen`,aboutWebsockets:`WebSocket-Einstellungen`,device:{deviceConnection:`Geräteverbindung`,information:`Geräteinformationen`,supported:`Glückwunsch! Gerät wird unterstützt`,notSupported:`Leider wird Ihr Gerät nicht unterstützt`,model:`Modell`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interner Bezeichner`,placeholder:`Geräte-ID`},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`},password:{title:`Admin-Passwort`,placeholder:`Gerätepasswort eingeben, falls das Gerät geschützt ist`},hostname:{title:`Geräte-Hostname`,placeholder:`Netzwerkname oder IP-Adresse des Geräts`,validation:{required:`Bitte geben Sie den Geräte-Hostname oder die IP-Adresse ein`}}},config:{enabled:{title:`Aktiviert`},mdns:{enabled:{title:`Erkennung aktiviert`},interface:{title:`Schnittstelle`,placeholder:`Die zu verwendende Netzwerkschnittstelle. Wenn keine angegeben ist, werden alle verfügbaren Schnittstellen verwendet.`}},websockets:{requestTimeout:{title:`Anfragezeitlimit`,placeholder:`Die Zeit in Sekunden, die auf eine Antwort gewartet wird, bevor eine Anfrage abgebrochen wird.`,validation:{required:`Bitte geben Sie das Anfragezeitlimit ein`,number:`Anfragezeitlimit muss eine Zahl sein`}},pingInterval:{title:`Ping-Intervall`,placeholder:`Das Intervall in Sekunden, in dem Ping-Anfragen gesendet werden, um zu überprüfen, ob die Verbindung offen ist. Auf 0 setzen zum Deaktivieren.`,validation:{required:`Bitte geben Sie das Ping-Intervall ein`,number:`Ping-Intervall muss eine Zahl sein`}},reconnectInterval:{title:`Wiederverbindungsintervall`,placeholder:`Das Intervall in Sekunden, in dem ein Verbindungsversuch nach dem Schließen eines Sockets unternommen wird.`,validation:{required:`Bitte geben Sie das Wiederverbindungsintervall ein`,number:`Wiederverbindungsintervall muss eine Zahl sein`,array:`Wiederverbindungsintervall muss ein Array von Zahlen sein`}}}}},messages:{config:{edited:`Änderungen gespeichert! Die Shelly Next Generation Plugin-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Shelly Next Generation Plugin-Konfiguration war nicht erfolgreich.`},devices:{exists:`Ein Gerät mit diesem Hostname und Passwort ist bereits im System registriert.`,created:`Neues Shelly Next-Generation-Gerät erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Das Shelly Next-Generation-Gerät konnte nicht erstellt werden.`,notChecked:`Etwas ist schiefgelaufen. Geräteinformationen konnten nicht geladen werden. Überprüfen Sie den Geräte-Hostname oder das Passwort.`,edited:`Änderungen gespeichert! Das Shelly Next-Generation-Gerät: {device} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung des Shelly Next-Generation-Geräts war nicht erfolgreich.`,failedLoadSupportedDevices:`Etwas ist schiefgelaufen. Die unterstützten Geräte des Plugins konnten nicht geladen werden.`}},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie die Shelly Next Generation Geräteintegration. Wenn aktiviert, können Shelly-Geräte über das Smart Panel erkannt und gesteuert werden.`,aboutMdns:`Konfigurieren Sie, wie das Plugin Shelly-Geräte in Ihrem lokalen Netzwerk über Multicast DNS (mDNS) erkennt. Dies ermöglicht die automatische Erkennung ohne manuelle Eingabe von IP-Adressen.`,aboutWebsockets:`Verwalten Sie WebSocket-Verbindungsparameter für Shelly-Geräte. Diese Einstellungen steuern Kommunikationsstabilität, Anfrageverarbeitung und Wiederverbindungsverhalten.`},buttons:{next:{title:`Weiter`}}},Yx={headings:{aboutPluginStatus:`Plugin Status`,aboutMdns:`MDNS settings`,aboutWebsockets:`Websockets settings`,device:{deviceConnection:`Device connection`,information:`Device information`,supported:`Congrats! Device is supported`,notSupported:`We are sorry, you device is not supported`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Internal identifier`,placeholder:`Device id`},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`},password:{title:`Admin password`,placeholder:`Provide device password if device is protected`},hostname:{title:`Device hostname`,placeholder:`Device network name or IP address`,validation:{required:`Please fill in device hostname or IP address`}}},config:{enabled:{title:`Enabled`},mdns:{enabled:{title:`Discovery enabled`},interface:{title:`Interface`,placeholder:`The network interface to use. If none is specified, all available interfaces will be used.`}},websockets:{requestTimeout:{title:`Request timeout`,placeholder:`The time, in seconds, to wait for a response before a request is aborted.`,validation:{required:`Please fill in request timeout`,number:`Request timeout must be a number`}},pingInterval:{title:`Ping interval`,placeholder:`The interval, in seconds, at which ping requests should be made to verify that the connection is open. Set to 0 to disable.`,validation:{required:`Please fill in ping interval`,number:`Ping interval must be a number`}},reconnectInterval:{title:`Reconnect interval`,placeholder:`The interval, in seconds, at which a connection attempt should be made after a socket has been closed.`,validation:{required:`Please fill in reconnect interval`,number:`Reconnect interval must be a number`,array:`Reconnect interval must be an array of numbers`}}}}},messages:{config:{edited:`Changes saved! The Shelly Next Generation plugin config has been updated.`,notEdited:`Something went wrong. Shelly Next Generation plugin config update was not successful.`},devices:{exists:`Device with provided hostname and password is already registered in system.`,created:`New Shelly Next-Generation device added successfully.`,notCreated:`Something went wrong. Unable to create the Shelly Next-Generation device.`,notChecked:`Something went wrong. Device information could not be loaded. Check the device hostname or password.`,edited:`Changes saved! The Shelly Next-Generation device: {device} has been updated.`,notEdited:`Something went wrong. Shelly Next-Generation device update was not successful.`,failedLoadSupportedDevices:`Something went wrong. Plugin supported devices could not be loaded.`}},texts:{aboutPluginStatus:`Enable or disable the Shelly Next Generation device integration. When enabled, Shelly devices can be discovered and controlled through the Smart Panel.`,aboutMdns:`Configure how the plugin discovers Shelly devices on your local network using Multicast DNS (mDNS). This enables automatic detection without needing to manually enter IP addresses.`,aboutWebsockets:`Manage WebSocket connection parameters for Shelly devices. These settings control communication stability, request handling, and reconnection behavior.`},buttons:{next:{title:`Next`}}},Xx={headings:{aboutPluginStatus:`Estado del plugin`,aboutMdns:`Configuración de mDNS`,aboutWebsockets:`Configuración de WebSockets`,device:{deviceConnection:`Conexión del dispositivo`,information:`Información del dispositivo`,supported:`¡Felicidades! El dispositivo es compatible`,notSupported:`Lo sentimos, su dispositivo no es compatible`,model:`Modelo`,firmware:`Firmware`}},fields:{devices:{id:{title:`Identificador interno`,placeholder:`ID 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, introduzca el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`,placeholder:`Habilitar o deshabilitar el dispositivo`},password:{title:`Contraseña de administrador`,placeholder:`Proporcione la contraseña del dispositivo si está protegido`},hostname:{title:`Nombre de host del dispositivo`,placeholder:`Nombre de red o dirección IP del dispositivo`,validation:{required:`Por favor, introduzca el nombre de host o la dirección IP del dispositivo`}}},config:{enabled:{title:`Habilitado`},mdns:{enabled:{title:`Descubrimiento habilitado`},interface:{title:`Interfaz`,placeholder:`La interfaz de red a utilizar. Si no se especifica ninguna, se utilizarán todas las interfaces disponibles.`}},websockets:{requestTimeout:{title:`Tiempo de espera de solicitud`,placeholder:`El tiempo, en segundos, de espera para una respuesta antes de abortar la solicitud.`,validation:{required:`Por favor, introduzca el tiempo de espera de solicitud`,number:`El tiempo de espera de solicitud debe ser un número`}},pingInterval:{title:`Intervalo de ping`,placeholder:`El intervalo, en segundos, para realizar solicitudes de ping y verificar que la conexión está abierta. Establezca en 0 para deshabilitar.`,validation:{required:`Por favor, introduzca el intervalo de ping`,number:`El intervalo de ping debe ser un número`}},reconnectInterval:{title:`Intervalo de reconexión`,placeholder:`El intervalo, en segundos, para intentar reconectar después de que un socket se haya cerrado.`,validation:{required:`Por favor, introduzca el intervalo de reconexión`,number:`El intervalo de reconexión debe ser un número`,array:`El intervalo de reconexión debe ser un arreglo de números`}}}}},messages:{config:{edited:`¡Cambios guardados! La configuración del plugin Shelly Next Generation ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del plugin Shelly Next Generation no fue exitosa.`},devices:{exists:`El dispositivo con el nombre de host y la contraseña proporcionados ya está registrado en el sistema.`,created:`Nuevo dispositivo Shelly Next-Generation agregado correctamente.`,notCreated:`Algo salió mal. No se pudo crear el dispositivo Shelly Next-Generation.`,notChecked:`Algo salió mal. No se pudo cargar la información del dispositivo. Verifique el nombre de host o la contraseña del dispositivo.`,edited:`¡Cambios guardados! El dispositivo Shelly Next-Generation: {device} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del dispositivo Shelly Next-Generation no fue exitosa.`,failedLoadSupportedDevices:`Algo salió mal. No se pudieron cargar los dispositivos compatibles del plugin.`}},texts:{aboutPluginStatus:`Habilitar o deshabilitar la integración de dispositivos Shelly Next Generation. Cuando está habilitado, los dispositivos Shelly pueden ser descubiertos y controlados a través del Smart Panel.`,aboutMdns:`Configure cómo el plugin descubre dispositivos Shelly en su red local usando DNS Multidifusión (mDNS). Esto permite la detección automática sin necesidad de introducir direcciones IP manualmente.`,aboutWebsockets:`Gestione los parámetros de conexión WebSocket para los dispositivos Shelly. Estos ajustes controlan la estabilidad de la comunicación, el manejo de solicitudes y el comportamiento de reconexión.`},buttons:{next:{title:`Siguiente`}}},Zx={headings:{aboutPluginStatus:`Status wtyczki`,aboutMdns:`Ustawienia MDNS`,aboutWebsockets:`Ustawienia WebSocket`,device:{deviceConnection:`Polaczenie urzadzenia`,information:`Informacje o urzadzeniu`,supported:`Gratulacje! Urzadzenie jest obslugiwane`,notSupported:`Przepraszamy, Twoje urzadzenie nie jest obslugiwane`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID urzadzenia`},category:{title:`Kategoria`,placeholder:`Kategoria urzadzenia`,description:`O kategorii`,validation:{required:`Prosze wybrac kategorie urzadzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urzadzenia`,validation:{required:`Prosze podac nazwe urzadzenia`}},description:{title:`Opis`,placeholder:`Opis urzadzenia`},enabled:{title:`Wlaczony`,placeholder:`Wlacz lub wylacz urzadzenie`},password:{title:`Haslo administratora`,placeholder:`Podaj haslo urzadzenia, jesli urzadzenie jest chronione`},hostname:{title:`Nazwa hosta urzadzenia`,placeholder:`Nazwa sieciowa lub adres IP urzadzenia`,validation:{required:`Prosze podac nazwe hosta lub adres IP urzadzenia`}}},config:{enabled:{title:`Wlaczony`},mdns:{enabled:{title:`Wykrywanie wlaczone`},interface:{title:`Interfejs`,placeholder:`Interfejs sieciowy do uzycia. Jesli nie podano, zostaną uzyty wszystkie dostepne interfejsy.`}},websockets:{requestTimeout:{title:`Limit czasu zadania`,placeholder:`Czas w sekundach oczekiwania na odpowiedz przed przerwaniem zadania.`,validation:{required:`Prosze podac limit czasu zadania`,number:`Limit czasu zadania musi byc liczba`}},pingInterval:{title:`Interwal ping`,placeholder:`Interwal w sekundach, w jakim wykonywane sa zadania ping w celu weryfikacji polaczenia. Ustaw 0, aby wylaczyc.`,validation:{required:`Prosze podac interwal ping`,number:`Interwal ping musi byc liczba`}},reconnectInterval:{title:`Interwal ponownego polaczenia`,placeholder:`Interwal w sekundach, w jakim podejmowana jest proba polaczenia po zamknieciu gniazda.`,validation:{required:`Prosze podac interwal ponownego polaczenia`,number:`Interwal ponownego polaczenia musi byc liczba`,array:`Interwal ponownego polaczenia musi byc tablica liczb`}}}}},messages:{config:{edited:`Zmiany zapisane! Konfiguracja wtyczki Shelly Next Generation zostala zaktualizowana.`,notEdited:`Cos poszlo nie tak. Aktualizacja konfiguracji wtyczki Shelly Next Generation nie powiodla sie.`},devices:{exists:`Urzadzenie z podana nazwa hosta i haslem jest juz zarejestrowane w systemie.`,created:`Nowe urzadzenie Shelly Next-Generation zostalo pomyslnie dodane.`,notCreated:`Cos poszlo nie tak. Nie udalo sie utworzyc urzadzenia Shelly Next-Generation.`,notChecked:`Cos poszlo nie tak. Informacje o urzadzeniu nie mogly zostac zaladowane. Sprawdz nazwe hosta lub haslo urzadzenia.`,edited:`Zmiany zapisane! Urzadzenie Shelly Next-Generation: {device} zostalo zaktualizowane.`,notEdited:`Cos poszlo nie tak. Aktualizacja urzadzenia Shelly Next-Generation nie powiodla sie.`,failedLoadSupportedDevices:`Cos poszlo nie tak. Obslugiwane urzadzenia wtyczki nie mogly zostac zaladowane.`}},texts:{aboutPluginStatus:`Wlacz lub wylacz integracje urzadzen Shelly Next Generation. Po wlaczeniu urzadzenia Shelly moga byc wykrywane i sterowane przez Smart Panel.`,aboutMdns:`Skonfiguruj, jak wtyczka wykrywa urzadzenia Shelly w sieci lokalnej za pomoca Multicast DNS (mDNS). Umozliwia to automatyczne wykrywanie bez koniecznosci recznego wprowadzania adresow IP.`,aboutWebsockets:`Zarzadzaj parametrami polaczenia WebSocket dla urzadzen Shelly. Te ustawienia kontroluja stabilnosc komunikacji, obsluge zadan i zachowanie ponownego polaczenia.`},buttons:{next:{title:`Dalej`}}},Qx={headings:{aboutPluginStatus:`Stav pluginu`,aboutMdns:`Nastavenia MDNS`,aboutWebsockets:`Nastavenia Websockets`,device:{deviceConnection:`Pripojenie zariadenia`,information:`Informácie o zariadení`,supported:`Gratulujeme! Zariadenie je podporované`,notSupported:`Ľutujeme, vaše zariadenie nie je podporované`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interný identifikátor`,placeholder:`ID 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`},password:{title:`Heslo administrátora`,placeholder:`Zadajte heslo zariadenia, ak je chránené`},hostname:{title:`Hostname zariadenia`,placeholder:`Sieťový názov alebo IP adresa zariadenia`,validation:{required:`Prosím vyplňte hostname alebo IP adresu zariadenia`}}},config:{enabled:{title:`Povolené`},mdns:{enabled:{title:`Objavovanie povolené`},interface:{title:`Rozhranie`,placeholder:`Sieťové rozhranie na použitie. Ak nie je špecifikované, budú použité všetky dostupné rozhrania.`}},websockets:{requestTimeout:{title:`Časový limit požiadavky`,placeholder:`Čas v sekundách na čakanie na odpoveď pred zrušením požiadavky.`,validation:{required:`Prosím vyplňte časový limit požiadavky`,number:`Časový limit požiadavky musí byť číslo`}},pingInterval:{title:`Interval pingu`,placeholder:`Interval v sekundách, v ktorom sa odosielajú ping požiadavky na overenie, že pripojenie je otvorené. Nastavte na 0 na zakázanie.`,validation:{required:`Prosím vyplňte interval pingu`,number:`Interval pingu musí byť číslo`}},reconnectInterval:{title:`Interval opätovného pripojenia`,placeholder:`Interval v sekundách, v ktorom sa má vykonať pokus o pripojenie po zatvorení socketu.`,validation:{required:`Prosím vyplňte interval opätovného pripojenia`,number:`Interval opätovného pripojenia musí byť číslo`,array:`Interval opätovného pripojenia musí byť pole čísel`}}}}},messages:{config:{edited:`Zmeny uložené! Konfigurácia pluginu Shelly Next Generation bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie pluginu Shelly Next Generation nebola úspešná.`},devices:{exists:`Zariadenie s poskytnutým hostname a heslom je už zaregistrované v systéme.`,created:`Nové zariadenie Shelly Next-Generation bolo úspešne pridané.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť zariadenie Shelly Next-Generation.`,notChecked:`Niečo sa pokazilo. Informácie o zariadení sa nepodarilo načítať. Skontrolujte hostname alebo heslo zariadenia.`,edited:`Zmeny uložené! Zariadenie Shelly Next-Generation: {device} bolo aktualizované.`,notEdited:`Niečo sa pokazilo. Aktualizácia zariadenia Shelly Next-Generation nebola úspešná.`,failedLoadSupportedDevices:`Niečo sa pokazilo. Podporované zariadenia pluginu sa nepodarilo načítať.`}},texts:{aboutPluginStatus:`Povoľte alebo zakážte integráciu zariadení Shelly Next Generation. Keď je povolená, zariadenia Shelly môžu byť objavené a ovládané cez Smart Panel.`,aboutMdns:`Nakonfigurujte, ako plugin objavuje zariadenia Shelly na vašej lokálnej sieti pomocou Multicast DNS (mDNS). To umožňuje automatickú detekciu bez potreby manuálneho zadávania IP adries.`,aboutWebsockets:`Spravujte parametre WebSocket pripojenia pre zariadenia Shelly. Tieto nastavenia ovládajú stabilitu komunikácie, spracovanie požiadaviek a správanie pri opätovnom pripojení.`},buttons:{next:{title:`Ďalej`}}},$x={"cs-CZ":qx,"de-DE":Jx,"en-US":Yx,"es-ES":Xx,"pl-PL":Zx,"sk-SK":Qx},eS=Tt.extend({mdns:q({enabled:R(),interface:Y().nullable()}),websockets:q({requestTimeout:Ot().int().min(1),pingInterval:Ot().int().min(0),reconnectInterval:H(Ot().int().min(1)).nonempty()})}),tS=Xi,nS=Mi.and(q({type:Z(Ex)})),rS=Ti.and(q({type:Z(Ex)}));Li.and(q({type:Z(Ex)}));var iS=ki,aS=Pi.and(q({type:Z(Ex)})),oS=ji.and(q({type:Z(Ex)}));Ii.and(q({type:Z(Ex)}));var sS=Lt.extend({mdns:q({enabled:R(),interface:Y().nullable()}),websockets:q({requestTimeout:G(),pingInterval:G(),reconnectInterval:H(G())})}),cS=Wt.and(q({type:Z(Tx),mdns:q({enabled:R().optional(),interface:Y().nullable().optional()}).optional(),websockets:q({request_timeout:G().optional(),ping_interval:G().optional(),reconnect_interval:H(G()).optional()}).optional()}));Qt.and(q({type:Z(Tx),mdns:q({enabled:R(),interface:Y().nullable()}),websockets:q({request_timeout:G(),ping_interval:G(),reconnect_interval:H(G())})}));var lS=Ui.extend({password:Y().nullable(),hostname:Y()}),uS=Wi.and(q({type:Z(Ex),password:Y().nullable(),hostname:Y()})),dS=Ni.and(q({type:Z(Ex),category:K(U).optional(),password:Y().nullable().optional(),hostname:Y().optional()}));wi.and(q({type:Z(Ex),password:Y().nullable(),hostname:Y()}));var fS=Symbol(`FB-Plugin-DevicesShellyNg`),pS={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries($x)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesShellyNgPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(fS,{type:Tx,source:`com.fastybird.smart-panel.plugin.devices-shelly-ng`,name:`Shelly Next Generation`,description:`Connect and control your Shelly Next Generation devices directly from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Kx},schemas:{pluginConfigSchema:sS,pluginConfigEditFormSchema:eS,pluginConfigUpdateReqSchema:cS},modules:[pn]},{type:Ex,components:{deviceAddForm:Ux,deviceEditForm:Gx},schemas:{deviceSchema:lS,deviceAddFormSchema:Ax,deviceEditFormSchema:jx,deviceCreateReqSchema:uS,deviceUpdateReqSchema:dS,channelSchema:iS,channelCreateReqSchema:aS,channelUpdateReqSchema:oS,channelPropertySchema:tS,channelPropertyCreateReqSchema:nS,channelPropertyUpdateReqSchema:rS},modules:[si]}],modules:[si,pn],isCore:!0})}},mS=`devices-shelly-v1`,hS=`devices-shelly-v1-plugin`,gS=`devices-shelly-v1`,_S=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DevicesShellyV1Exception`,this.exception=t}},vS=class extends _S{code;constructor(e,t=null,n=null){super(e,n),this.name=`DevicesShellyV1ApiException`,this.code=t}},yS=class extends _S{constructor(e,t=null){super(e,t),this.name=`DevicesShellyV1ValidationException`}},bS=yi.extend({password:Y().nullable().optional(),hostname:Y().trim().nonempty()}),xS=pi.extend({password:Y().nullable().optional(),hostname:Y().trim().nonempty()}),SS=q({group:Y(),name:Y(),models:H(Y()),categories:H(K(U))}),CS=q({hostname:Y(),password:Y().nullable().optional()}),wS=q({reachable:R(),authRequired:R(),authValid:R(),host:Y(),ip:Y(),mac:Y(),model:Y(),firmware:Y(),deviceType:Y()}),TS=e=>{let t=[];for(let n of e){let e=SS.safeParse(Ct(n));if(!e.success)throw Ut.error(`Schema validation failed with:`,e.error),new yS(`Failed to validate received supported device data.`);t.push(e.data)}return t},ES=e=>{let t=wS.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new yS(`Failed to validate received device info data.`);return t.data},DS=e=>{let t=CS.safeParse(zt(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new yS(`Failed to validate get device info request.`);return t.data},OS=()=>{let{t:e}=b(),t=fn(),n=rt(),r=N([]),i=N(!1);return{supportedDevices:r,loaded:i,fetchDevices:async a=>{if(i.value&&!a)return;let{data:o,error:s,response:c}=await t.client.GET(`/${ae}/${mS}/devices/supported`,{});if(o!==void 0){r.value=TS(o.data),i.value=!0;return}let l=e(`devicesShellyV1Plugin.messages.devices.failedLoadSupportedDevices`);if(c.status===422){let e=l;s&&(e=Gt(s,e)),n.error(e)}else n.error(l)}}},kS=({id:e})=>{let t=Ye().getStore(qr),{t:n}=b(),r=fn(),i=rt(),a=Ke(),{supportedDevices:o,fetchDevices:s}=OS(),c=N(Q.NONE),l,u=j(()=>x.value===null?null:o.value.find(e=>e.models.includes(x.value.model.toUpperCase()))||null),d=j(()=>Vt(u.value?.categories||[],[e=>n(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:n(`devicesModule.categories.devices.${e}`)}))),f=y({...Ft(bS),id:e,type:gS,category:U.generic,name:``,description:``,hostname:``,password:``,enabled:!0}),p=Mt(w(f)),h=N(void 0),g=N(void 0),_=N(`one`),v=N(!1),x=N(null),S=async o=>{if(o===`one`){if(h.value.clearValidate(),!await h.value.validate())throw new yS(`Form not valid`);c.value=Q.WORKING;let e=n(`devicesShellyV1Plugin.messages.devices.notChecked`,{device:f.name});try{let{data:t,error:i,response:a}=await r.client.POST(`/${ae}/${mS}/devices/info`,{body:{data:DS({hostname:f.hostname,password:f.password})}});if(t!==void 0){let e=ES(t.data);if(!e.reachable)throw new vS(n(`devicesShellyV1Plugin.messages.devices.notReachable`),404);if(e.authRequired&&!e.authValid)throw new vS(n(`devicesShellyV1Plugin.messages.devices.invalidPassword`),401);return x.value=e,_.value=`two`,c.value=Q.NONE,`ok`}let o=e;throw i&&(o=Gt(i,o)),new vS(o,a.status)}catch(t){throw c.value=Q.ERROR,l=window.setTimeout(C,2e3),t instanceof vS&&(t.code===422||t.code===404||t.code===401)?i.error(t.message):i.error(e),t}}else if(o===`two`){if(g.value.clearValidate(),!await g.value.validate())throw new yS(`Form not valid`);let r=bS.safeParse(f);if(!r.success)throw a.error(`Schema validation failed with:`,r.error),new yS(`Failed to validate create device model.`);c.value=Q.WORKING;let o=n(`devicesShellyV1Plugin.messages.devices.notCreated`,{device:f.name});try{await t.add({id:e,draft:!1,data:{...r.data,type:gS}})}catch(e){throw c.value=Q.ERROR,l=window.setTimeout(C,2e3),e instanceof ui&&e.code===422?i.error(e.message):i.error(o),e}return c.value=Q.OK,l=window.setTimeout(C,2e3),i.success(n(`devicesShellyV1Plugin.messages.devices.created`,{device:f.name})),`added`}else throw new yS(`Unknown step`)},C=()=>{window.clearTimeout(l),c.value=Q.NONE};return He(()=>{s().catch(()=>{})}),m(f,()=>{v.value=!(0,Ka.isEqual)(w(f),p)}),m(()=>f.hostname,(e,t)=>{e!==t&&(x.value=null)}),m(()=>x.value,e=>{f.identifier=e?.mac||null}),{categoriesOptions:d,activeStep:_,deviceInfo:x,supportedDevices:o,model:f,stepOneFormEl:h,stepTwoFormEl:g,formChanged:v,submitStep:S,clear:C,formResult:c}},AS={class:`grid grid-cols-[auto_1fr] gap-x-4 my-0`},jS={class:`m-0 inline-block font-bold`},MS={class:`m-0 inline-block font-bold`},NS=f({name:`ShellyV1DeviceAddForm`,__name:`shelly-v1-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:s}=b(),c=rt(),{devices:u,loaded:f,fetchDevices:p}=Zi(),{model:S,stepOneFormEl:C,stepTwoFormEl:w,activeStep:O,categoriesOptions:ee,supportedDevices:te,formChanged:M,deviceInfo:re,submitStep:ie,formResult:ae}=kS({id:n.id}),oe=j(()=>re.value===null?null:te.value.find(e=>e.models.includes(re.value.model.toUpperCase()))||null),se=y({hostname:[{required:!0,message:s(`devicesShellyV1Plugin.fields.devices.hostname.validation.required`),trigger:`change`}]}),N=y({name:[{required:!0,message:s(`devicesShellyV1Plugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:s(`devicesShellyV1Plugin.fields.devices.category.validation.required`),trigger:`change`}],hostname:[{required:!0,message:s(`devicesShellyV1Plugin.fields.devices.hostname.validation.required`),trigger:`change`}]}),le=async()=>{O.value===`one`?ie(`one`).catch(()=>{}):O.value===`two`&&ie(`two`).catch(()=>{})};return o(()=>{f.value||p().catch(()=>{})}),m(()=>ae.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),O.value===`one`?ie(`one`).catch(()=>{}):O.value===`two`&&ie(`two`).catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{r(`update:remote-form-reset`,!1),e&&(C.value?.resetFields(),w.value?.resetFields())}),m(()=>M.value,e=>{r(`update:remote-form-changed`,e)}),m(()=>ee.value,e=>{e.length>0&&e[0]&&(S.category=e[0].value)}),m([()=>re.value,()=>f.value],([e,t])=>{if(e===null||!t)return;let n=u.value.find(t=>t.identifier===e.mac&&t.type===`devices-shelly-v1`);n!==void 0&&(c.success(s(`devicesShellyV1Plugin.messages.devices.exists`,{device:n.name})),ve.push({name:ci.DEVICES_EDIT,params:{id:n.id},state:{prefills:{hostname:S.hostname,password:S.password}}}))}),(e,t)=>(i(),P(A,null,[F(h(en),{modelValue:h(O),"onUpdate:modelValue":t[6]||=e=>_(O)?O.value=e:null,accordion:``,"expand-icon-position":`left`},{default:d(()=>[F(h(pt),{title:h(s)(`devicesShellyV1Plugin.headings.device.deviceConnection`),name:`one`},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:connection`})]),_:1})]),default:d(()=>[F(h(B),{ref_key:`stepOneFormEl`,ref:C,model:h(S),rules:se,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(S).hostname,"onUpdate:modelValue":t[0]||=e=>h(S).hostname=e,placeholder:h(s)(`devicesShellyV1Plugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.password.title`),prop:`password`,class:`mb-0!`},{default:d(()=>[F(h(W),{modelValue:h(S).password,"onUpdate:modelValue":t[1]||=e=>h(S).password=e,placeholder:h(s)(`devicesShellyV1Plugin.fields.devices.password.placeholder`),name:`password`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`])]),_:1},8,[`title`]),F(h(pt),{title:h(s)(`devicesShellyV1Plugin.headings.device.information`),name:`two`,disabled:h(re)===null},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:devices`})]),_:1})]),default:d(()=>[F(h(L),{type:oe.value?`success`:`error`,title:oe.value?h(s)(`devicesShellyV1Plugin.headings.device.supported`):h(s)(`devicesShellyV1Plugin.headings.device.notSupported`),closable:!1,"show-icon":``},{default:d(()=>[D(`dl`,AS,[D(`dt`,null,k(h(s)(`devicesShellyV1Plugin.headings.device.model`))+`:`,1),D(`dd`,jS,k(oe.value===null?`unknown`:oe.value.name),1),D(`dt`,null,k(h(s)(`devicesShellyV1Plugin.headings.device.firmware`))+`:`,1),D(`dd`,MS,k(h(re)?.firmware),1)])]),_:1},8,[`type`,`title`]),F(h(B),{ref_key:`stepTwoFormEl`,ref:w,model:h(S),rules:N,"label-position":`top`,"status-icon":``,class:`mt-4`},{default:d(()=>[F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(S).name,"onUpdate:modelValue":t[2]||=e=>h(S).name=e,placeholder:h(s)(`devicesShellyV1Plugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(S).category,"onUpdate:modelValue":t[3]||=e=>h(S).category=e,placeholder:h(s)(`devicesShellyV1Plugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(ee),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(S).category?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesModule.fields.devices.category.description`),description:h(s)(`devicesModule.texts.devices.description.${h(S).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(S).description,"onUpdate:modelValue":t[4]||=e=>h(S).description=e,placeholder:h(s)(`devicesShellyV1Plugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(s)(`devicesShellyV1Plugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(S).enabled,"onUpdate:modelValue":t[5]||=e=>h(S).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`])]),_:1},8,[`title`,`disabled`])]),_:1},8,[`modelValue`]),h(O)===`one`?(i(),T(x,{key:0,defer:``,to:`#${h(Yt)}`},[F(h(E),{loading:h(ae)===h(Q).WORKING,disabled:h(ae)!==h(Q).NONE,type:`primary`,onClick:le},ce({default:d(()=>[v(` `+k(h(s)(`devicesShellyV1Plugin.buttons.next.title`)),1)]),_:2},[h(ae)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])],8,[`to`])):g(``,!0)],64))}}),PS=({device:e,messages:t})=>{let n=Ye(),r=n.getStore(qr),i=n.getStore(Yr),a=n.getStore(Jr),{t:o}=b(),s=rt(),c=Ke(),{supportedDevices:l,fetchDevices:u}=OS(),d=N(Q.NONE),f,p=j(()=>{let t=i.findForDevice(e.id).find(e=>e.category===I.device_information);if(t!==void 0){let e=a.findForChannel(t.id).find(e=>e.category===gt.model);return typeof e?.value==`string`?e?.value:void 0}}),h=j(()=>{let e=p.value;return typeof e==`string`&&l.value.find(t=>t.models.includes(e.toUpperCase()))||null}),g=j(()=>Vt(h.value?.categories||[],[e=>o(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:o(`devicesModule.categories.devices.${e}`)}))),_=y(e),v=Mt(w(_)),x=N(void 0),S=N(!1),C=async()=>{let n=e.draft,i=t&&t.error?t.error:e.draft?o(`devicesShellyV1Plugin.messages.devices.notCreated`,{device:e.name}):o(`devicesShellyV1Plugin.messages.devices.notEdited`,{device:e.name});if(x.value.clearValidate(),!await x.value.validate())throw new ai(`Form not valid`);let a=xS.safeParse(_);if(!a.success)throw c.error(`Schema validation failed with:`,a.error),new yS(`Failed to validate edit device model.`);d.value=Q.WORKING;try{await r.edit({id:e.id,data:{...a.data,type:e.type}}),e.draft&&await r.save({id:e.id})}catch(e){throw d.value=Q.ERROR,f=window.setTimeout(T,2e3),e instanceof ui&&e.code===422?s.error(e.message):s.error(i),e}return d.value=Q.OK,f=window.setTimeout(T,2e3),n?(s.success(o(t&&t.success?t.success:`devicesShellyV1Plugin.messages.devices.created`,{device:e.name})),`added`):(s.success(o(t&&t.success?t.success:`devicesShellyV1Plugin.messages.devices.edited`,{device:e.name})),S.value=!1,v=Mt(w(_)),`saved`)},T=()=>{window.clearTimeout(f),d.value=Q.NONE};return He(()=>{u().catch(()=>{})}),m(_,()=>{S.value=!(0,Ka.isEqual)(w(_),v)}),{categoriesOptions:g,supportedDevices:l,model:_,formEl:x,formChanged:S,submit:C,clear:T,formResult:d}},FS=f({name:`ShellyV1DeviceEditForm`,__name:`shelly-v1-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=PS({device:n.device}),_=window.history.state?.prefills??null;if(_){c.hostname=_.hostname??c.hostname,c.password=_.password??c.password;let e={...window.history.state};delete e.prefills,history.replaceState(e,``)}let v=y({name:[{required:!0,message:o(`devicesShellyV1Plugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesShellyV1Plugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:v,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[1]||=e=>h(c).name=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[2]||=e=>h(c).category=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(c).hostname,"onUpdate:modelValue":t[5]||=e=>h(c).hostname=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesShellyV1Plugin.fields.devices.password.title`),prop:`password`},{default:d(()=>[F(h(W),{modelValue:h(c).password,"onUpdate:modelValue":t[6]||=e=>h(c).password=e,placeholder:h(o)(`devicesShellyV1Plugin.fields.devices.password.placeholder`),name:`password`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),IS=f({name:`ShellyV1ConfigForm`,__name:`shelly-v1-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`devicesShellyV1Plugin.messages.config.edited`),error:a(`devicesShellyV1Plugin.messages.config.notEdited`)}}),f=y({"timeouts.requestTimeout":[{required:!0,message:a(`devicesShellyV1Plugin.fields.config.timeouts.requestTimeout.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesShellyV1Plugin.fields.config.timeouts.requestTimeout.validation.number`),validator:(e,t)=>t>=1,trigger:`change`}],"timeouts.staleTimeout":[{required:!0,message:a(`devicesShellyV1Plugin.fields.config.timeouts.staleTimeout.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesShellyV1Plugin.fields.config.timeouts.staleTimeout.validation.number`),validator:(e,t)=>t>=1,trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`devicesShellyV1Plugin.headings.aboutPluginStatus`),description:h(a)(`devicesShellyV1Plugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesShellyV1Plugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[5]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesShellyV1Plugin.headings.aboutDiscovery`),description:h(a)(`devicesShellyV1Plugin.texts.aboutDiscovery`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesShellyV1Plugin.fields.config.discovery.enabled.title`),prop:`discovery.enabled`,class:`mt-3`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).discovery.enabled,"onUpdate:modelValue":t[1]||=e=>h(s).discovery.enabled=e,name:`discoveryEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesShellyV1Plugin.fields.config.discovery.interface.title`),prop:`discovery.interface`},{default:d(()=>[F(h(W),{modelValue:h(s).discovery.interface,"onUpdate:modelValue":t[2]||=e=>h(s).discovery.interface=e,placeholder:h(a)(`devicesShellyV1Plugin.fields.config.discovery.interface.placeholder`),name:`discoveryInterface`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),t[6]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesShellyV1Plugin.headings.aboutTimeouts`),description:h(a)(`devicesShellyV1Plugin.texts.aboutTimeouts`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesShellyV1Plugin.fields.config.timeouts.requestTimeout.title`),prop:`timeouts.requestTimeout`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).timeouts.requestTimeout,"onUpdate:modelValue":t[3]||=e=>h(s).timeouts.requestTimeout=e,placeholder:h(a)(`devicesShellyV1Plugin.fields.config.timeouts.requestTimeout.placeholder`),name:`timeouts.requestTimeout`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesShellyV1Plugin.fields.config.timeouts.staleTimeout.title`),prop:`timeouts.staleTimeout`},{default:d(()=>[F(h(W),{modelValue:h(s).timeouts.staleTimeout,"onUpdate:modelValue":t[4]||=e=>h(s).timeouts.staleTimeout=e,placeholder:h(a)(`devicesShellyV1Plugin.fields.config.timeouts.staleTimeout.placeholder`),name:`timeouts.staleTimeout`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),LS={headings:{aboutPluginStatus:`Stav pluginu`,aboutDiscovery:`Nastavení vyhledávání`,aboutTimeouts:`Nastavení časových limitů`,device:{deviceConnection:`Připojení zařízení`,information:`Informace o zařízení`,supported:`Gratulujeme! Zařízení je podporováno`,notSupported:`Je nám líto, vaše zařízení není podporováno`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interní identifikátor`,placeholder:`ID 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í`},password:{title:`Heslo administrátora`,placeholder:`Zadejte heslo zařízení, pokud je chráněno`},hostname:{title:`Název hostitele zařízení`,placeholder:`Síťový název nebo IP adresa zařízení`,validation:{required:`Vyplňte prosím název hostitele nebo IP adresu zařízení`}}},config:{enabled:{title:`Povoleno`},discovery:{enabled:{title:`Vyhledávání povoleno`},interface:{title:`Rozhraní`,placeholder:`Síťové rozhraní k použití. Pokud není zadáno, budou použita všechna dostupná rozhraní.`}},timeouts:{requestTimeout:{title:`Časový limit požadavku`,placeholder:`Čas v sekundách pro čekání na odpověď před přerušením požadavku.`,validation:{required:`Vyplňte prosím časový limit požadavku`,number:`Časový limit požadavku musí být kladné celé číslo`}},staleTimeout:{title:`Časový limit zastarání`,placeholder:`Čas v sekundách, po kterém je zařízení považováno za offline, pokud není přijata aktualizace stavu.`,validation:{required:`Vyplňte prosím časový limit zastarání`,number:`Časový limit zastarání musí být kladné celé číslo`}}}}},messages:{config:{edited:`Změny uloženy! Konfigurace pluginu Shelly Gen 1 byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace pluginu Shelly Gen 1 nebyla úspěšná.`},devices:{exists:`Zařízení se zadaným názvem hostitele a heslem je již registrováno v systému.`,created:`Nové zařízení Shelly Gen 1 bylo úspěšně přidáno.`,notCreated:`Něco se pokazilo. Nepodařilo se vytvořit zařízení Shelly Gen 1.`,notChecked:`Něco se pokazilo. Nepodařilo se načíst informace o zařízení. Zkontrolujte název hostitele nebo heslo zařízení.`,notReachable:`Zařízení není dostupné. Zkontrolujte prosím název hostitele nebo IP adresu.`,invalidPassword:`Neplatné heslo. Zkontrolujte prosím heslo zařízení.`,edited:`Změny uloženy! Zařízení Shelly Gen 1: {device} bylo aktualizováno.`,notEdited:`Něco se pokazilo. Aktualizace zařízení Shelly Gen 1 nebyla úspěšná.`,failedLoadSupportedDevices:`Něco se pokazilo. Nepodařilo se načíst podporovaná zařízení pluginu.`}},texts:{aboutPluginStatus:`Povolte nebo zakažte integraci zařízení Shelly Gen 1. Pokud je povolena, zařízení Shelly mohou být vyhledána a ovládána prostřednictvím Smart Panelu.`,aboutDiscovery:`Nakonfigurujte, jak plugin vyhledává zařízení Shelly Gen 1 ve vaší lokální síti pomocí Multicast DNS (mDNS). To umožňuje automatickou detekci bez nutnosti ručního zadávání IP adres.`,aboutTimeouts:`Nakonfigurujte nastavení časových limitů pro HTTP komunikaci se zařízeními Shelly Gen 1. Tato nastavení řídí zpracování požadavků a monitorování stavu zařízení.`},buttons:{next:{title:`Další`}}},RS={headings:{aboutPluginStatus:`Plugin-Status`,aboutDiscovery:`Erkennungseinstellungen`,aboutTimeouts:`Zeitlimit-Einstellungen`,device:{deviceConnection:`Geräteverbindung`,information:`Geräteinformationen`,supported:`Glückwunsch! Gerät wird unterstützt`,notSupported:`Leider wird Ihr Gerät nicht unterstützt`,model:`Modell`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interner Bezeichner`,placeholder:`Geräte-ID`},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`},password:{title:`Admin-Passwort`,placeholder:`Gerätepasswort eingeben, falls das Gerät geschützt ist`},hostname:{title:`Geräte-Hostname`,placeholder:`Netzwerkname oder IP-Adresse des Geräts`,validation:{required:`Bitte geben Sie den Geräte-Hostname oder die IP-Adresse ein`}}},config:{enabled:{title:`Aktiviert`},discovery:{enabled:{title:`Erkennung aktiviert`},interface:{title:`Schnittstelle`,placeholder:`Die zu verwendende Netzwerkschnittstelle. Wenn keine angegeben ist, werden alle verfügbaren Schnittstellen verwendet.`}},timeouts:{requestTimeout:{title:`Anfragezeitlimit`,placeholder:`Die Zeit in Sekunden, die auf eine Antwort gewartet wird, bevor eine Anfrage abgebrochen wird.`,validation:{required:`Bitte geben Sie das Anfragezeitlimit ein`,number:`Anfragezeitlimit muss eine positive Ganzzahl sein`}},staleTimeout:{title:`Veraltetungs-Zeitlimit`,placeholder:`Die Zeit in Sekunden, bevor ein Gerät als offline gilt, wenn kein Statusupdate empfangen wird.`,validation:{required:`Bitte geben Sie das Veraltetungs-Zeitlimit ein`,number:`Veraltetungs-Zeitlimit muss eine positive Ganzzahl sein`}}}}},messages:{config:{edited:`Änderungen gespeichert! Die Shelly Gen 1 Plugin-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Shelly Gen 1 Plugin-Konfiguration war nicht erfolgreich.`},devices:{exists:`Ein Gerät mit diesem Hostname und Passwort ist bereits im System registriert.`,created:`Neues Shelly Gen 1-Gerät erfolgreich hinzugefügt.`,notCreated:`Etwas ist schiefgelaufen. Das Shelly Gen 1-Gerät konnte nicht erstellt werden.`,notChecked:`Etwas ist schiefgelaufen. Geräteinformationen konnten nicht geladen werden. Überprüfen Sie den Geräte-Hostname oder das Passwort.`,notReachable:`Gerät ist nicht erreichbar. Bitte überprüfen Sie den Hostname oder die IP-Adresse.`,invalidPassword:`Ungültiges Passwort. Bitte überprüfen Sie das Gerätepasswort.`,edited:`Änderungen gespeichert! Das Shelly Gen 1-Gerät: {device} wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung des Shelly Gen 1-Geräts war nicht erfolgreich.`,failedLoadSupportedDevices:`Etwas ist schiefgelaufen. Die unterstützten Geräte des Plugins konnten nicht geladen werden.`}},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie die Shelly Gen 1 Geräteintegration. Wenn aktiviert, können Shelly-Geräte über das Smart Panel erkannt und gesteuert werden.`,aboutDiscovery:`Konfigurieren Sie, wie das Plugin Shelly Gen 1-Geräte in Ihrem lokalen Netzwerk über Multicast DNS (mDNS) erkennt. Dies ermöglicht die automatische Erkennung ohne manuelle Eingabe von IP-Adressen.`,aboutTimeouts:`Konfigurieren Sie Zeitlimit-Einstellungen für die HTTP-Kommunikation mit Shelly Gen 1-Geräten. Diese Einstellungen steuern die Anfrageverarbeitung und Gerätestatusüberwachung.`},buttons:{next:{title:`Weiter`}}},zS={headings:{aboutPluginStatus:`Plugin Status`,aboutDiscovery:`Discovery settings`,aboutTimeouts:`Timeout settings`,device:{deviceConnection:`Device connection`,information:`Device information`,supported:`Congrats! Device is supported`,notSupported:`We are sorry, your device is not supported`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Internal identifier`,placeholder:`Device id`},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`},password:{title:`Admin password`,placeholder:`Provide device password if device is protected`},hostname:{title:`Device hostname`,placeholder:`Device network name or IP address`,validation:{required:`Please fill in device hostname or IP address`}}},config:{enabled:{title:`Enabled`},discovery:{enabled:{title:`Discovery enabled`},interface:{title:`Interface`,placeholder:`The network interface to use. If none is specified, all available interfaces will be used.`}},timeouts:{requestTimeout:{title:`Request timeout`,placeholder:`The time, in seconds, to wait for a response before a request is aborted.`,validation:{required:`Please fill in request timeout`,number:`Request timeout must be a positive integer`}},staleTimeout:{title:`Stale timeout`,placeholder:`The time, in seconds, before a device is considered offline if no status update is received.`,validation:{required:`Please fill in stale timeout`,number:`Stale timeout must be a positive integer`}}}}},messages:{config:{edited:`Changes saved! The Shelly Gen 1 plugin config has been updated.`,notEdited:`Something went wrong. Shelly Gen 1 plugin config update was not successful.`},devices:{exists:`Device with provided hostname and password is already registered in system.`,created:`New Shelly Gen 1 device added successfully.`,notCreated:`Something went wrong. Unable to create the Shelly Gen 1 device.`,notChecked:`Something went wrong. Device information could not be loaded. Check the device hostname or password.`,notReachable:`Device is not reachable. Please check the hostname or IP address.`,invalidPassword:`Invalid password. Please check the device password.`,edited:`Changes saved! The Shelly Gen 1 device: {device} has been updated.`,notEdited:`Something went wrong. Shelly Gen 1 device update was not successful.`,failedLoadSupportedDevices:`Something went wrong. Plugin supported devices could not be loaded.`}},texts:{aboutPluginStatus:`Enable or disable the Shelly Gen 1 device integration. When enabled, Shelly devices can be discovered and controlled through the Smart Panel.`,aboutDiscovery:`Configure how the plugin discovers Shelly Gen 1 devices on your local network using Multicast DNS (mDNS). This enables automatic detection without needing to manually enter IP addresses.`,aboutTimeouts:`Configure timeout settings for HTTP communication with Shelly Gen 1 devices. These settings control request handling and device state monitoring.`},buttons:{next:{title:`Next`}}},BS={headings:{aboutPluginStatus:`Estado del plugin`,aboutDiscovery:`Configuración de descubrimiento`,aboutTimeouts:`Configuración de tiempos de espera`,device:{deviceConnection:`Conexión del dispositivo`,information:`Información del dispositivo`,supported:`¡Felicidades! El dispositivo es compatible`,notSupported:`Lo sentimos, su dispositivo no es compatible`,model:`Modelo`,firmware:`Firmware`}},fields:{devices:{id:{title:`Identificador interno`,placeholder:`ID 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, introduzca el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`,placeholder:`Habilitar o deshabilitar el dispositivo`},password:{title:`Contraseña de administrador`,placeholder:`Proporcione la contraseña del dispositivo si está protegido`},hostname:{title:`Nombre de host del dispositivo`,placeholder:`Nombre de red o dirección IP del dispositivo`,validation:{required:`Por favor, introduzca el nombre de host o la dirección IP del dispositivo`}}},config:{enabled:{title:`Habilitado`},discovery:{enabled:{title:`Descubrimiento habilitado`},interface:{title:`Interfaz`,placeholder:`La interfaz de red a utilizar. Si no se especifica ninguna, se utilizarán todas las interfaces disponibles.`}},timeouts:{requestTimeout:{title:`Tiempo de espera de solicitud`,placeholder:`El tiempo, en segundos, de espera para una respuesta antes de abortar la solicitud.`,validation:{required:`Por favor, introduzca el tiempo de espera de solicitud`,number:`El tiempo de espera de solicitud debe ser un entero positivo`}},staleTimeout:{title:`Tiempo de espera de inactividad`,placeholder:`El tiempo, en segundos, antes de que un dispositivo se considere desconectado si no se recibe ninguna actualización de estado.`,validation:{required:`Por favor, introduzca el tiempo de espera de inactividad`,number:`El tiempo de espera de inactividad debe ser un entero positivo`}}}}},messages:{config:{edited:`¡Cambios guardados! La configuración del plugin Shelly Gen 1 ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del plugin Shelly Gen 1 no fue exitosa.`},devices:{exists:`El dispositivo con el nombre de host y la contraseña proporcionados ya está registrado en el sistema.`,created:`Nuevo dispositivo Shelly Gen 1 agregado correctamente.`,notCreated:`Algo salió mal. No se pudo crear el dispositivo Shelly Gen 1.`,notChecked:`Algo salió mal. No se pudo cargar la información del dispositivo. Verifique el nombre de host o la contraseña del dispositivo.`,notReachable:`El dispositivo no es accesible. Por favor, verifique el nombre de host o la dirección IP.`,invalidPassword:`Contraseña incorrecta. Por favor, verifique la contraseña del dispositivo.`,edited:`¡Cambios guardados! El dispositivo Shelly Gen 1: {device} ha sido actualizado.`,notEdited:`Algo salió mal. La actualización del dispositivo Shelly Gen 1 no fue exitosa.`,failedLoadSupportedDevices:`Algo salió mal. No se pudieron cargar los dispositivos compatibles del plugin.`}},texts:{aboutPluginStatus:`Habilitar o deshabilitar la integración de dispositivos Shelly Gen 1. Cuando está habilitado, los dispositivos Shelly pueden ser descubiertos y controlados a través del Smart Panel.`,aboutDiscovery:`Configure cómo el plugin descubre dispositivos Shelly Gen 1 en su red local usando DNS Multidifusión (mDNS). Esto permite la detección automática sin necesidad de introducir direcciones IP manualmente.`,aboutTimeouts:`Configure los tiempos de espera para la comunicación HTTP con los dispositivos Shelly Gen 1. Estos ajustes controlan el manejo de solicitudes y la monitorización del estado del dispositivo.`},buttons:{next:{title:`Siguiente`}}},VS={headings:{aboutPluginStatus:`Status wtyczki`,aboutDiscovery:`Ustawienia wykrywania`,aboutTimeouts:`Ustawienia limitow czasu`,device:{deviceConnection:`Polaczenie urzadzenia`,information:`Informacje o urzadzeniu`,supported:`Gratulacje! Urzadzenie jest obslugiwane`,notSupported:`Przepraszamy, Twoje urzadzenie nie jest obslugiwane`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID urzadzenia`},category:{title:`Kategoria`,placeholder:`Kategoria urzadzenia`,description:`O kategorii`,validation:{required:`Prosze wybrac kategorie urzadzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urzadzenia`,validation:{required:`Prosze podac nazwe urzadzenia`}},description:{title:`Opis`,placeholder:`Opis urzadzenia`},enabled:{title:`Wlaczony`,placeholder:`Wlacz lub wylacz urzadzenie`},password:{title:`Haslo administratora`,placeholder:`Podaj haslo urzadzenia, jesli urzadzenie jest chronione`},hostname:{title:`Nazwa hosta urzadzenia`,placeholder:`Nazwa sieciowa lub adres IP urzadzenia`,validation:{required:`Prosze podac nazwe hosta lub adres IP urzadzenia`}}},config:{enabled:{title:`Wlaczony`},discovery:{enabled:{title:`Wykrywanie wlaczone`},interface:{title:`Interfejs`,placeholder:`Interfejs sieciowy do uzycia. Jesli nie podano, wszystkie dostepne interfejsy zostana uzyte.`}},timeouts:{requestTimeout:{title:`Limit czasu zadania`,placeholder:`Czas w sekundach oczekiwania na odpowiedz przed przerwaniem zadania.`,validation:{required:`Prosze podac limit czasu zadania`,number:`Limit czasu zadania musi byc dodatnia liczba calkowita`}},staleTimeout:{title:`Limit czasu przestarzalosci`,placeholder:`Czas w sekundach, po jakim urzadzenie jest uznawane za offline, jesli nie otrzymano aktualizacji stanu.`,validation:{required:`Prosze podac limit czasu przestarzalosci`,number:`Limit czasu przestarzalosci musi byc dodatnia liczba calkowita`}}}}},messages:{config:{edited:`Zmiany zapisane! Konfiguracja wtyczki Shelly Gen 1 zostala zaktualizowana.`,notEdited:`Cos poszlo nie tak. Aktualizacja konfiguracji wtyczki Shelly Gen 1 nie powiodla sie.`},devices:{exists:`Urzadzenie z podana nazwa hosta i haslem jest juz zarejestrowane w systemie.`,created:`Nowe urzadzenie Shelly Gen 1 zostalo pomyslnie dodane.`,notCreated:`Cos poszlo nie tak. Nie udalo sie utworzyc urzadzenia Shelly Gen 1.`,notChecked:`Cos poszlo nie tak. Informacje o urzadzeniu nie mogly zostac zaladowane. Sprawdz nazwe hosta lub haslo urzadzenia.`,notReachable:`Urzadzenie jest nieosiagalne. Sprawdz nazwe hosta lub adres IP.`,invalidPassword:`Nieprawidlowe haslo. Sprawdz haslo urzadzenia.`,edited:`Zmiany zapisane! Urzadzenie Shelly Gen 1: {device} zostalo zaktualizowane.`,notEdited:`Cos poszlo nie tak. Aktualizacja urzadzenia Shelly Gen 1 nie powiodla sie.`,failedLoadSupportedDevices:`Cos poszlo nie tak. Obslugiwane urzadzenia wtyczki nie mogly zostac zaladowane.`}},texts:{aboutPluginStatus:`Wlacz lub wylacz integracje urzadzen Shelly Gen 1. Po wlaczeniu urzadzenia Shelly moga byc wykrywane i sterowane przez Smart Panel.`,aboutDiscovery:`Skonfiguruj, jak wtyczka wykrywa urzadzenia Shelly Gen 1 w sieci lokalnej za pomoca Multicast DNS (mDNS).`,aboutTimeouts:`Skonfiguruj ustawienia limitow czasu komunikacji HTTP z urzadzeniami Shelly Gen 1.`},buttons:{next:{title:`Dalej`}}},HS={headings:{aboutPluginStatus:`Stav pluginu`,aboutDiscovery:`Nastavenia objavovania`,aboutTimeouts:`Nastavenia časových limitov`,device:{deviceConnection:`Pripojenie zariadenia`,information:`Informácie o zariadení`,supported:`Gratulujeme! Zariadenie je podporované`,notSupported:`Ľutujeme, vaše zariadenie nie je podporované`,model:`Model`,firmware:`Firmware`}},fields:{devices:{id:{title:`Interný identifikátor`,placeholder:`ID 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`},password:{title:`Heslo administrátora`,placeholder:`Zadajte heslo zariadenia, ak je chránené`},hostname:{title:`Hostname zariadenia`,placeholder:`Sieťový názov alebo IP adresa zariadenia`,validation:{required:`Prosím vyplňte hostname alebo IP adresu zariadenia`}}},config:{enabled:{title:`Povolené`},discovery:{enabled:{title:`Objavovanie povolené`},interface:{title:`Rozhranie`,placeholder:`Sieťové rozhranie na použitie. Ak nie je špecifikované, budú použité všetky dostupné rozhrania.`}},timeouts:{requestTimeout:{title:`Časový limit požiadavky`,placeholder:`Čas v sekundách na čakanie na odpoveď pred zrušením požiadavky.`,validation:{required:`Prosím vyplňte časový limit požiadavky`,number:`Časový limit požiadavky musí byť kladné celé číslo`}},staleTimeout:{title:`Časový limit neaktivity`,placeholder:`Čas v sekundách, po ktorom je zariadenie považované za offline, ak nie je prijatá žiadna aktualizácia stavu.`,validation:{required:`Prosím vyplňte časový limit neaktivity`,number:`Časový limit neaktivity musí byť kladné celé číslo`}}}}},messages:{config:{edited:`Zmeny uložené! Konfigurácia pluginu Shelly Gen 1 bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie pluginu Shelly Gen 1 nebola úspešná.`},devices:{exists:`Zariadenie s poskytnutým hostname a heslom je už zaregistrované v systéme.`,created:`Nové zariadenie Shelly Gen 1 bolo úspešne pridané.`,notCreated:`Niečo sa pokazilo. Nepodarilo sa vytvoriť zariadenie Shelly Gen 1.`,notChecked:`Niečo sa pokazilo. Informácie o zariadení sa nepodarilo načítať. Skontrolujte hostname alebo heslo zariadenia.`,notReachable:`Zariadenie nie je dosiahnuteľné. Skontrolujte hostname alebo IP adresu.`,invalidPassword:`Neplatné heslo. Skontrolujte heslo zariadenia.`,edited:`Zmeny uložené! Zariadenie Shelly Gen 1: {device} bolo aktualizované.`,notEdited:`Niečo sa pokazilo. Aktualizácia zariadenia Shelly Gen 1 nebola úspešná.`,failedLoadSupportedDevices:`Niečo sa pokazilo. Podporované zariadenia pluginu sa nepodarilo načítať.`}},texts:{aboutPluginStatus:`Povoľte alebo zakážte integráciu zariadení Shelly Gen 1. Keď je povolená, zariadenia Shelly môžu byť objavené a ovládané cez Smart Panel.`,aboutDiscovery:`Nakonfigurujte, ako plugin objavuje zariadenia Shelly Gen 1 na vašej lokálnej sieti pomocou Multicast DNS (mDNS). To umožňuje automatickú detekciu bez potreby manuálneho zadávania IP adries.`,aboutTimeouts:`Nakonfigurujte nastavenia časových limitov pre HTTP komunikáciu so zariadeniami Shelly Gen 1. Tieto nastavenia ovládajú spracovanie požiadaviek a monitorovanie stavu zariadení.`},buttons:{next:{title:`Ďalej`}}},US={"cs-CZ":LS,"de-DE":RS,"en-US":zS,"es-ES":BS,"pl-PL":VS,"sk-SK":HS},WS=Tt.extend({discovery:q({enabled:R(),interface:Y().nullable()}),timeouts:q({requestTimeout:Ot().int().min(1),staleTimeout:Ot().int().min(1)})}),GS=Xi,KS=Mi.and(q({type:Z(gS)})),qS=Ti.and(q({type:Z(gS)}));Li.and(q({type:Z(gS)}));var JS=ki,YS=Pi.and(q({type:Z(gS)})),XS=ji.and(q({type:Z(gS)}));Ii.and(q({type:Z(gS)}));var ZS=Lt.extend({discovery:q({enabled:R(),interface:Y().nullable()}),timeouts:q({requestTimeout:G(),staleTimeout:G()})}),QS=Wt.and(q({type:Z(hS),discovery:q({enabled:R().optional(),interface:Y().nullable().optional()}).optional(),timeouts:q({request_timeout:G().optional(),stale_timeout:G().optional()}).optional()}));Qt.and(q({type:Z(hS),discovery:q({enabled:R(),interface:Y().nullable()}),timeouts:q({request_timeout:G(),stale_timeout:G()})}));var $S=Ui.extend({password:Y().nullable(),hostname:Y()}),eC=Wi.and(q({type:Z(gS),password:Y().nullable(),hostname:Y()})),tC=Ni.and(q({type:Z(gS),category:K(U).optional(),password:Y().nullable().optional(),hostname:Y().optional()}));wi.and(q({type:Z(gS),password:Y().nullable(),hostname:Y()}));var nC=Symbol(`FB-Plugin-DevicesShellyV1`),rC={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(US)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesShellyV1Plugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(nC,{type:hS,source:`com.fastybird.smart-panel.plugin.devices-shelly-v1`,name:`Shelly Gen 1`,description:`Connect and control your Shelly Gen 1 devices directly from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:IS},schemas:{pluginConfigSchema:ZS,pluginConfigEditFormSchema:WS,pluginConfigUpdateReqSchema:QS},modules:[pn]},{type:gS,components:{deviceAddForm:NS,deviceEditForm:FS},schemas:{deviceSchema:$S,deviceAddFormSchema:bS,deviceEditFormSchema:xS,deviceCreateReqSchema:eC,deviceUpdateReqSchema:tC,channelSchema:JS,channelCreateReqSchema:YS,channelUpdateReqSchema:XS,channelPropertySchema:GS,channelPropertyCreateReqSchema:KS,channelPropertyUpdateReqSchema:qS},modules:[si]}],modules:[si,pn],isCore:!0})}},iC=`devices-third-party-plugin`,aC=`devices-third-party`,oC=f({name:`ThirdPartyDeviceAddForm`,__name:`third-party-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=vi({id:n.id,type:aC}),_=y({category:[{required:!0,message:o(`devicesThirdPartyPlugin.fields.devices.category.validation.required`),trigger:`change`}],name:[{required:!0,message:o(`devicesThirdPartyPlugin.fields.devices.name.validation.required`),trigger:`change`}],serviceAddress:[{required:!0,message:o(`devicesThirdPartyPlugin.fields.devices.serviceAddress.validation.required`),trigger:`change`},{type:`url`,message:o(`devicesThirdPartyPlugin.fields.devices.serviceAddress.validation.url`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.identifier.title`),prop:`identifier`},{default:d(()=>[F(h(W),{modelValue:h(c).identifier,"onUpdate:modelValue":t[1]||=e=>h(c).identifier=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.identifier.placeholder`),name:`identifier`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[2]||=e=>h(c).name=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[3]||=e=>h(c).category=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[4]||=e=>h(c).description=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[5]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.serviceAddress.title`),prop:`serviceAddress`},{default:d(()=>[F(h(W),{modelValue:h(c).serviceAddress,"onUpdate:modelValue":t[6]||=e=>h(c).serviceAddress=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.serviceAddress.placeholder`),name:`serviceAddress`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),sC=f({name:`ThirdPartyDeviceEditForm`,__name:`third-party-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=gi({device:n.device}),_=y({name:[{required:!0,message:o(`devicesThirdPartyPlugin.fields.devices.name.validation.required`),trigger:`change`}],serviceAddress:[{required:!0,message:o(`devicesThirdPartyPlugin.fields.devices.serviceAddress.validation.required`),trigger:`change`},{type:`url`,message:o(`devicesThirdPartyPlugin.fields.devices.serviceAddress.validation.url`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.identifier.title`),prop:`identifier`},{default:d(()=>[F(h(W),{modelValue:h(c).identifier,"onUpdate:modelValue":t[1]||=e=>h(c).identifier=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.identifier.placeholder`),name:`identifier`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[2]||=e=>h(c).name=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[3]||=e=>h(c).category=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[4]||=e=>h(c).description=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[5]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesThirdPartyPlugin.fields.devices.serviceAddress.title`),prop:`serviceAddress`},{default:d(()=>[F(h(W),{modelValue:h(c).serviceAddress,"onUpdate:modelValue":t[6]||=e=>h(c).serviceAddress=e,placeholder:h(o)(`devicesThirdPartyPlugin.fields.devices.serviceAddress.placeholder`),name:`serviceAddress`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),cC={fields:{devices:{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í`,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`},serviceAddress:{title:`Adresa služby`,placeholder:`http://device-address.local`,validation:{required:`Vyplňte prosím adresu služby zařízení`,url:`Zadejte prosím platnou URL adresu`}}}}},lC={fields:{devices:{id:{title:`Interner Bezeichner`,placeholder:`Geräte-ID`},identifier:{title:`Systembezeichner`,placeholder:`Geräte-Systembezeichner`},category:{title:`Kategorie`,placeholder:`Gerätekategorie`,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`},serviceAddress:{title:`Dienstadresse`,placeholder:`http://device-address.local`,validation:{required:`Bitte geben Sie die Geräte-Dienstadresse ein`,url:`Bitte geben Sie eine gültige URL-Adresse ein`}}}}},uC={fields:{devices:{id:{title:`Internal identifier`,placeholder:`Device id`},identifier:{title:`System identifier`,placeholder:`Device system identifier`},category:{title:`Category`,placeholder:`Device 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`},serviceAddress:{title:`Service address`,placeholder:`http://device-address.local`,validation:{required:`Please fill in device service address`,url:`Please provide valid URL address`}}}}},dC={fields:{devices:{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`,validation:{required:`Por favor, seleccione la categoría del dispositivo`}},name:{title:`Nombre`,placeholder:`Nombre del dispositivo`,validation:{required:`Por favor, introduzca el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`},serviceAddress:{title:`Dirección del servicio`,placeholder:`http://device-address.local`,validation:{required:`Por favor, introduzca la dirección del servicio del dispositivo`,url:`Por favor, proporcione una dirección URL válida`}}}}},fC={fields:{devices:{id:{title:`Identyfikator wewnetrzny`,placeholder:`ID urzadzenia`},identifier:{title:`Identyfikator systemowy`,placeholder:`Identyfikator systemowy urzadzenia`},category:{title:`Kategoria`,placeholder:`Kategoria urzadzenia`,validation:{required:`Prosze wybrac kategorie urzadzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urzadzenia`,validation:{required:`Prosze podac nazwe urzadzenia`}},description:{title:`Opis`,placeholder:`Opis urzadzenia`},enabled:{title:`Wlaczony`},serviceAddress:{title:`Adres uslugi`,placeholder:`http://device-address.local`,validation:{required:`Prosze podac adres uslugi urzadzenia`,url:`Prosze podac prawidlowy adres URL`}}}}},pC={fields:{devices:{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`,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é`},serviceAddress:{title:`Adresa služby`,placeholder:`http://device-address.local`,validation:{required:`Prosím vyplňte adresu služby zariadenia`,url:`Prosím zadajte platnú URL adresu`}}}}},mC={"cs-CZ":cC,"de-DE":lC,"en-US":uC,"es-ES":dC,"pl-PL":fC,"sk-SK":pC},hC=yi.extend({serviceAddress:Y().url()}),gC=pi.extend({serviceAddress:Y().url().optional()}),_C=Xi;Mi.and(q({type:Z(aC)})),Ti.and(q({type:Z(aC)})),Li.and(q({type:Z(aC)}));var vC=ki;Pi.and(q({type:Z(aC)})),ji.and(q({type:Z(aC)})),Ii.and(q({type:Z(aC)}));var yC=Ui.extend({serviceAddress:Y().trim().url()}),bC=Wi.and(q({type:Z(aC),service_address:Y().trim().url()})),xC=Ni.and(q({type:Z(aC),service_address:Y().trim().url().optional()}));wi.and(q({type:Z(aC),service_address:Y().trim().url()}));var SC=Symbol(`FB-Plugin-DevicesThirdParty`),CC={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(mC)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesThirdPartyPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(SC,{type:iC,source:`com.fastybird.smart-panel.plugin.devices-third-party`,name:`Third Party`,description:`Control and monitor third-party devices seamlessly from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:aC,components:{deviceAddForm:oC,deviceEditForm:sC},schemas:{deviceSchema:yC,deviceAddFormSchema:hC,deviceEditFormSchema:gC,deviceCreateReqSchema:bC,deviceUpdateReqSchema:xC,channelSchema:vC,channelPropertySchema:_C}}],modules:[si],isCore:!0})}},wC=f({name:`WledConfigForm`,__name:`wled-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`devicesWledPlugin.messages.config.edited`),error:a(`devicesWledPlugin.messages.config.notEdited`)}}),f=y({"polling.interval":[{required:!0,message:a(`devicesWledPlugin.fields.config.polling.interval.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesWledPlugin.fields.config.polling.interval.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}],"websocket.reconnectInterval":[{required:!0,message:a(`devicesWledPlugin.fields.config.websocket.reconnectInterval.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesWledPlugin.fields.config.websocket.reconnectInterval.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}],"timeouts.connectionTimeout":[{required:!0,message:a(`devicesWledPlugin.fields.config.timeouts.connectionTimeout.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesWledPlugin.fields.config.timeouts.connectionTimeout.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}],"timeouts.commandDebounce":[{required:!0,message:a(`devicesWledPlugin.fields.config.timeouts.commandDebounce.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesWledPlugin.fields.config.timeouts.commandDebounce.validation.number`),validator:(e,t)=>t>=0,trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`devicesWledPlugin.headings.aboutPluginStatus`),description:h(a)(`devicesWledPlugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[9]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesWledPlugin.headings.aboutMdns`),description:h(a)(`devicesWledPlugin.texts.aboutMdns`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.mdns.enabled.title`),prop:`mdns.enabled`,class:`mt-3`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).mdns.enabled,"onUpdate:modelValue":t[1]||=e=>h(s).mdns.enabled=e,name:`mdnsEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.mdns.interface.title`),prop:`mdns.interface`},{default:d(()=>[F(h(W),{modelValue:h(s).mdns.interface,"onUpdate:modelValue":t[2]||=e=>h(s).mdns.interface=e,placeholder:h(a)(`devicesWledPlugin.fields.config.mdns.interface.placeholder`),name:`mdnsInterface`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.mdns.autoAdd.title`),prop:`mdns.autoAdd`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).mdns.autoAdd,"onUpdate:modelValue":t[3]||=e=>h(s).mdns.autoAdd=e,name:`mdnsAutoAdd`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[10]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesWledPlugin.headings.aboutWebsocket`),description:h(a)(`devicesWledPlugin.texts.aboutWebsocket`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.websocket.enabled.title`),prop:`websocket.enabled`,class:`mt-3`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).websocket.enabled,"onUpdate:modelValue":t[4]||=e=>h(s).websocket.enabled=e,name:`websocketEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.websocket.reconnectInterval.title`),prop:`websocket.reconnectInterval`},{default:d(()=>[F(h(Sn),{modelValue:h(s).websocket.reconnectInterval,"onUpdate:modelValue":t[5]||=e=>h(s).websocket.reconnectInterval=e,min:1e3,step:1e3,name:`websocket.reconnectInterval`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[11]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesWledPlugin.headings.aboutPolling`),description:h(a)(`devicesWledPlugin.texts.aboutPolling`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.polling.interval.title`),prop:`polling.interval`,class:`mt-3`},{default:d(()=>[F(h(Sn),{modelValue:h(s).polling.interval,"onUpdate:modelValue":t[6]||=e=>h(s).polling.interval=e,min:1e3,step:1e3,name:`polling.interval`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[12]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesWledPlugin.headings.aboutTimeouts`),description:h(a)(`devicesWledPlugin.texts.aboutTimeouts`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.timeouts.connectionTimeout.title`),prop:`timeouts.connectionTimeout`,class:`mt-3`},{default:d(()=>[F(h(Sn),{modelValue:h(s).timeouts.connectionTimeout,"onUpdate:modelValue":t[7]||=e=>h(s).timeouts.connectionTimeout=e,min:1e3,step:1e3,name:`timeouts.connectionTimeout`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesWledPlugin.fields.config.timeouts.commandDebounce.title`),prop:`timeouts.commandDebounce`},{default:d(()=>[F(h(Sn),{modelValue:h(s).timeouts.commandDebounce,"onUpdate:modelValue":t[8]||=e=>h(s).timeouts.commandDebounce=e,min:0,step:100,name:`timeouts.commandDebounce`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),TC=`devices-wled-plugin`,EC=`devices-wled`,DC=class extends Error{},OC=class extends DC{},kC=yi.extend({hostname:Y().trim().nonempty()}),AC=pi.extend({hostname:Y().trim().nonempty()}),jC=[U.lighting],MC=({id:e})=>{let t=Ye().getStore(qr),{t:n}=b(),r=rt(),i=Ke(),a=N(Q.NONE),o,s=j(()=>Vt(jC,[e=>n(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:n(`devicesModule.categories.devices.${e}`)}))),c=y({...Ft(kC),id:e,type:EC,category:U.lighting,name:``,description:``,hostname:``,enabled:!0}),l=Mt(w(c)),u=N(void 0),d=N(!1),f=async()=>{if(u.value.clearValidate(),!await u.value.validate())throw new OC(`Form not valid`);let s=kC.safeParse(c);if(!s.success)throw i.error(`Schema validation failed with:`,s.error),new OC(`Failed to validate create device model.`);a.value=Q.WORKING;let l=n(`devicesWledPlugin.messages.devices.notCreated`,{device:c.name});try{await t.add({id:e,draft:!1,data:{...s.data,type:EC}})}catch(e){throw a.value=Q.ERROR,o=window.setTimeout(p,2e3),e instanceof ui&&e.code===422?r.error(e.message):r.error(l),e}return a.value=Q.OK,o=window.setTimeout(p,2e3),r.success(n(`devicesWledPlugin.messages.devices.created`,{device:c.name})),`added`},p=()=>{window.clearTimeout(o),a.value=Q.NONE};return m(c,()=>{d.value=!(0,Ka.isEqual)(w(c),l)}),{categoriesOptions:s,model:c,formEl:u,formChanged:d,submit:f,clear:p,formResult:a}},NC=f({name:`WledDeviceAddForm`,__name:`wled-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=MC({id:n.id}),_=y({name:[{required:!0,message:o(`devicesWledPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesWledPlugin.fields.devices.category.validation.required`),trigger:`change`}],hostname:[{required:!0,message:o(`devicesWledPlugin.fields.devices.hostname.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[0]||=e=>h(c).name=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[1]||=e=>h(c).category=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(c).hostname,"onUpdate:modelValue":t[2]||=e=>h(c).hostname=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),PC=[U.lighting],FC=({device:e,messages:t})=>{let n=Ye().getStore(qr),{t:r}=b(),i=rt(),a=Ke(),o=N(Q.NONE),s,c=j(()=>Vt(PC,[e=>r(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:r(`devicesModule.categories.devices.${e}`)}))),l=y(e),u=Mt(w(l)),d=N(void 0),f=N(!1),p=async()=>{let c=e.draft,p=t&&t.error?t.error:e.draft?r(`devicesWledPlugin.messages.devices.notCreated`,{device:e.name}):r(`devicesWledPlugin.messages.devices.notEdited`,{device:e.name});if(d.value.clearValidate(),!await d.value.validate())throw new ai(`Form not valid`);let m=AC.safeParse(l);if(!m.success)throw a.error(`Schema validation failed with:`,m.error),new OC(`Failed to validate edit device model.`);o.value=Q.WORKING;try{await n.edit({id:e.id,data:{...m.data,type:e.type}}),e.draft&&await n.save({id:e.id})}catch(e){throw o.value=Q.ERROR,s=window.setTimeout(h,2e3),e instanceof ui&&e.code===422?i.error(e.message):i.error(p),e}return o.value=Q.OK,s=window.setTimeout(h,2e3),c?(i.success(r(t&&t.success?t.success:`devicesWledPlugin.messages.devices.created`,{device:e.name})),`added`):(i.success(r(t&&t.success?t.success:`devicesWledPlugin.messages.devices.edited`,{device:e.name})),f.value=!1,u=Mt(w(l)),`saved`)},h=()=>{window.clearTimeout(s),o.value=Q.NONE};return m(l,()=>{f.value=!(0,Ka.isEqual)(w(l),u)}),{categoriesOptions:c,model:l,formEl:d,formChanged:f,submit:p,clear:h,formResult:o}},IC=f({name:`WledDeviceEditForm`,__name:`wled-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=FC({device:n.device}),_=y({name:[{required:!0,message:o(`devicesWledPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesWledPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[1]||=e=>h(c).name=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[2]||=e=>h(c).category=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesWledPlugin.fields.devices.hostname.title`),prop:`hostname`},{default:d(()=>[F(h(W),{modelValue:h(c).hostname,"onUpdate:modelValue":t[5]||=e=>h(c).hostname=e,placeholder:h(o)(`devicesWledPlugin.fields.devices.hostname.placeholder`),name:`hostname`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),LC={headings:{aboutPluginStatus:`Stav pluginu`,aboutMdns:`Vyhledávání mDNS`,aboutWebsocket:`WebSocket připojení`,aboutPolling:`Dotazování zařízení`,aboutTimeouts:`Konfigurace časových limitů`},texts:{aboutPluginStatus:`Povolte nebo zakažte plugin WLED. Pokud je zakázán, žádná zařízení WLED nebudou monitorována ani ovládána.`,aboutMdns:`Vyhledávání mDNS umožňuje automatickou detekci zařízení WLED ve vaší síti.`,aboutWebsocket:`WebSocket poskytuje aktualizace v reálném čase z vašich zařízení WLED pro rychlejší synchronizaci stavu.`,aboutPolling:`Nakonfigurujte, jak často plugin dotazuje zařízení na aktualizace stavu, když WebSocket není k dispozici.`,aboutTimeouts:`Nakonfigurujte časové limity připojení a příkazů pro komunikaci se zařízeními WLED.`},fields:{config:{enabled:{title:`Povolit plugin`},mdns:{enabled:{title:`Povolit vyhledávání mDNS`},interface:{title:`Síťové rozhraní`,placeholder:`Ponechte prázdné pro výchozí`},autoAdd:{title:`Automaticky přidávat nalezená zařízení`}},websocket:{enabled:{title:`Povolit WebSocket`},reconnectInterval:{title:`Interval opětovného připojení (ms)`,validation:{required:`Interval opětovného připojení je povinný`,number:`Musí být číslo >= 1000`}}},polling:{interval:{title:`Interval dotazování (ms)`,validation:{required:`Interval dotazování je povinný`,number:`Musí být číslo >= 1000`}}},timeouts:{connectionTimeout:{title:`Časový limit připojení (ms)`,validation:{required:`Časový limit připojení je povinný`,number:`Musí být číslo >= 1000`}},commandDebounce:{title:`Debounce příkazů (ms)`,validation:{required:`Debounce příkazů je povinný`,number:`Musí být číslo >= 0`}}}},devices:{id:{title:`ID zařízení`,placeholder:`ID zařízení`},name:{title:`Název zařízení`,placeholder:`Zadejte název zařízení`,validation:{required:`Název zařízení je povinný`}},category:{title:`Kategorie zařízení`,placeholder:`Vyberte kategorii`,validation:{required:`Kategorie zařízení je povinná`}},description:{title:`Popis`,placeholder:`Zadejte popis zařízení (volitelné)`},hostname:{title:`Název hostitele nebo IP adresa`,placeholder:`např. 192.168.1.100 nebo wled-device.local`,validation:{required:`Název hostitele nebo IP adresa je povinná`}},enabled:{title:`Povoleno`}}},messages:{config:{edited:`Konfigurace pluginu WLED byla aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci pluginu WLED`},devices:{created:`Zařízení WLED '{device}' bylo vytvořeno`,notCreated:`Nepodařilo se vytvořit zařízení WLED '{device}'`,edited:`Zařízení WLED '{device}' bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat zařízení WLED '{device}'`}}},RC={headings:{aboutPluginStatus:`Plugin-Status`,aboutMdns:`mDNS-Erkennung`,aboutWebsocket:`WebSocket-Verbindung`,aboutPolling:`Geräte-Abfrage`,aboutTimeouts:`Zeitlimit-Konfiguration`},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie das WLED-Plugin. Wenn deaktiviert, werden keine WLED-Geräte überwacht oder gesteuert.`,aboutMdns:`mDNS-Erkennung ermöglicht die automatische Erkennung von WLED-Geräten in Ihrem Netzwerk.`,aboutWebsocket:`WebSocket bietet Echtzeitaktualisierungen von Ihren WLED-Geräten für eine schnellere Zustandssynchronisierung.`,aboutPolling:`Konfigurieren Sie, wie oft das Plugin Geräte nach Statusaktualisierungen abfragt, wenn WebSocket nicht verfügbar ist.`,aboutTimeouts:`Konfigurieren Sie Verbindungs- und Befehlszeitlimits für die WLED-Gerätekommunikation.`},fields:{config:{enabled:{title:`Plugin aktivieren`},mdns:{enabled:{title:`mDNS-Erkennung aktivieren`},interface:{title:`Netzwerkschnittstelle`,placeholder:`Leer lassen für Standard`},autoAdd:{title:`Erkannte Geräte automatisch hinzufügen`}},websocket:{enabled:{title:`WebSocket aktivieren`},reconnectInterval:{title:`Wiederverbindungsintervall (ms)`,validation:{required:`Wiederverbindungsintervall ist erforderlich`,number:`Muss eine Zahl >= 1000 sein`}}},polling:{interval:{title:`Abfrageintervall (ms)`,validation:{required:`Abfrageintervall ist erforderlich`,number:`Muss eine Zahl >= 1000 sein`}}},timeouts:{connectionTimeout:{title:`Verbindungszeitlimit (ms)`,validation:{required:`Verbindungszeitlimit ist erforderlich`,number:`Muss eine Zahl >= 1000 sein`}},commandDebounce:{title:`Befehls-Entprellung (ms)`,validation:{required:`Befehls-Entprellung ist erforderlich`,number:`Muss eine Zahl >= 0 sein`}}}},devices:{id:{title:`Geräte-ID`,placeholder:`Geräte-ID`},name:{title:`Gerätename`,placeholder:`Gerätenamen eingeben`,validation:{required:`Gerätename ist erforderlich`}},category:{title:`Gerätekategorie`,placeholder:`Kategorie auswählen`,validation:{required:`Gerätekategorie ist erforderlich`}},description:{title:`Beschreibung`,placeholder:`Gerätebeschreibung eingeben (optional)`},hostname:{title:`Hostname oder IP-Adresse`,placeholder:`z.B. 192.168.1.100 oder wled-device.local`,validation:{required:`Hostname oder IP-Adresse ist erforderlich`}},enabled:{title:`Aktiviert`}}},messages:{config:{edited:`WLED-Plugin-Konfiguration wurde aktualisiert`,notEdited:`Aktualisierung der WLED-Plugin-Konfiguration fehlgeschlagen`},devices:{created:`WLED-Gerät '{device}' wurde erstellt`,notCreated:`Erstellung des WLED-Geräts '{device}' fehlgeschlagen`,edited:`WLED-Gerät '{device}' wurde aktualisiert`,notEdited:`Aktualisierung des WLED-Geräts '{device}' fehlgeschlagen`}}},zC={headings:{aboutPluginStatus:`Plugin Status`,aboutMdns:`mDNS Discovery`,aboutWebsocket:`WebSocket Connection`,aboutPolling:`Device Polling`,aboutTimeouts:`Timeouts Configuration`},texts:{aboutPluginStatus:`Enable or disable the WLED plugin. When disabled, no WLED devices will be monitored or controlled.`,aboutMdns:`mDNS discovery allows automatic detection of WLED devices on your network.`,aboutWebsocket:`WebSocket provides real-time updates from your WLED devices for faster state synchronization.`,aboutPolling:`Configure how often the plugin polls devices for state updates when WebSocket is not available.`,aboutTimeouts:`Configure connection and command timeouts for WLED device communication.`},fields:{config:{enabled:{title:`Enable Plugin`},mdns:{enabled:{title:`Enable mDNS Discovery`},interface:{title:`Network Interface`,placeholder:`Leave empty for default`},autoAdd:{title:`Auto-Add Discovered Devices`}},websocket:{enabled:{title:`Enable WebSocket`},reconnectInterval:{title:`Reconnect Interval (ms)`,validation:{required:`Reconnect interval is required`,number:`Must be a number >= 1000`}}},polling:{interval:{title:`Polling Interval (ms)`,validation:{required:`Polling interval is required`,number:`Must be a number >= 1000`}}},timeouts:{connectionTimeout:{title:`Connection Timeout (ms)`,validation:{required:`Connection timeout is required`,number:`Must be a number >= 1000`}},commandDebounce:{title:`Command Debounce (ms)`,validation:{required:`Command debounce is required`,number:`Must be a number >= 0`}}}},devices:{id:{title:`Device ID`,placeholder:`Device ID`},name:{title:`Device Name`,placeholder:`Enter device name`,validation:{required:`Device name is required`}},category:{title:`Device Category`,placeholder:`Select category`,validation:{required:`Device category is required`}},description:{title:`Description`,placeholder:`Enter device description (optional)`},hostname:{title:`Hostname or IP Address`,placeholder:`e.g., 192.168.1.100 or wled-device.local`,validation:{required:`Hostname or IP address is required`}},enabled:{title:`Enabled`}}},messages:{config:{edited:`WLED plugin configuration has been updated`,notEdited:`Failed to update WLED plugin configuration`},devices:{created:`WLED device '{device}' has been created`,notCreated:`Failed to create WLED device '{device}'`,edited:`WLED device '{device}' has been updated`,notEdited:`Failed to update WLED device '{device}'`}}},BC={headings:{aboutPluginStatus:`Estado del plugin`,aboutMdns:`Descubrimiento mDNS`,aboutWebsocket:`Conexión WebSocket`,aboutPolling:`Sondeo de dispositivos`,aboutTimeouts:`Configuración de tiempos de espera`},texts:{aboutPluginStatus:`Habilitar o deshabilitar el plugin WLED. Cuando está deshabilitado, no se monitorizarán ni controlarán dispositivos WLED.`,aboutMdns:`El descubrimiento mDNS permite la detección automática de dispositivos WLED en su red.`,aboutWebsocket:`WebSocket proporciona actualizaciones en tiempo real desde sus dispositivos WLED para una sincronización de estado más rápida.`,aboutPolling:`Configure con qué frecuencia el plugin sondea los dispositivos para obtener actualizaciones de estado cuando WebSocket no está disponible.`,aboutTimeouts:`Configure los tiempos de espera de conexión y comandos para la comunicación con dispositivos WLED.`},fields:{config:{enabled:{title:`Habilitar plugin`},mdns:{enabled:{title:`Habilitar descubrimiento mDNS`},interface:{title:`Interfaz de red`,placeholder:`Dejar vacío para usar la predeterminada`},autoAdd:{title:`Agregar automáticamente dispositivos descubiertos`}},websocket:{enabled:{title:`Habilitar WebSocket`},reconnectInterval:{title:`Intervalo de reconexión (ms)`,validation:{required:`El intervalo de reconexión es obligatorio`,number:`Debe ser un número >= 1000`}}},polling:{interval:{title:`Intervalo de sondeo (ms)`,validation:{required:`El intervalo de sondeo es obligatorio`,number:`Debe ser un número >= 1000`}}},timeouts:{connectionTimeout:{title:`Tiempo de espera de conexión (ms)`,validation:{required:`El tiempo de espera de conexión es obligatorio`,number:`Debe ser un número >= 1000`}},commandDebounce:{title:`Rebote de comandos (ms)`,validation:{required:`El rebote de comandos es obligatorio`,number:`Debe ser un número >= 0`}}}},devices:{id:{title:`ID del dispositivo`,placeholder:`ID del dispositivo`},name:{title:`Nombre del dispositivo`,placeholder:`Introduzca el nombre del dispositivo`,validation:{required:`El nombre del dispositivo es obligatorio`}},category:{title:`Categoría del dispositivo`,placeholder:`Seleccionar categoría`,validation:{required:`La categoría del dispositivo es obligatoria`}},description:{title:`Descripción`,placeholder:`Introduzca la descripción del dispositivo (opcional)`},hostname:{title:`Nombre de host o dirección IP`,placeholder:`p. ej., 192.168.1.100 o wled-device.local`,validation:{required:`El nombre de host o la dirección IP es obligatorio`}},enabled:{title:`Habilitado`}}},messages:{config:{edited:`La configuración del plugin WLED ha sido actualizada`,notEdited:`Error al actualizar la configuración del plugin WLED`},devices:{created:`El dispositivo WLED '{device}' ha sido creado`,notCreated:`Error al crear el dispositivo WLED '{device}'`,edited:`El dispositivo WLED '{device}' ha sido actualizado`,notEdited:`Error al actualizar el dispositivo WLED '{device}'`}}},VC={headings:{aboutPluginStatus:`Status wtyczki`,aboutMdns:`Wykrywanie mDNS`,aboutWebsocket:`Polaczenie WebSocket`,aboutPolling:`Odpytywanie urzadzen`,aboutTimeouts:`Konfiguracja limitow czasu`},texts:{aboutPluginStatus:`Wlacz lub wylacz wtyczke WLED. Po wylaczeniu zadne urzadzenia WLED nie beda monitorowane ani sterowane.`,aboutMdns:`Wykrywanie mDNS umozliwia automatyczne wykrywanie urzadzen WLED w sieci.`,aboutWebsocket:`WebSocket zapewnia aktualizacje w czasie rzeczywistym z urzadzen WLED dla szybszej synchronizacji stanu.`,aboutPolling:`Skonfiguruj, jak czesto wtyczka odpytuje urzadzenia o aktualizacje stanu, gdy WebSocket nie jest dostepny.`,aboutTimeouts:`Skonfiguruj limity czasu polaczenia i komend dla komunikacji z urzadzeniami WLED.`},fields:{config:{enabled:{title:`Wlacz wtyczke`},mdns:{enabled:{title:`Wlacz wykrywanie mDNS`},interface:{title:`Interfejs sieciowy`,placeholder:`Pozostaw puste dla domyslnego`},autoAdd:{title:`Automatyczne dodawanie wykrytych urzadzen`}},websocket:{enabled:{title:`Wlacz WebSocket`},reconnectInterval:{title:`Interwal ponownego polaczenia (ms)`,validation:{required:`Interwal ponownego polaczenia jest wymagany`,number:`Musi byc liczba >= 1000`}}},polling:{interval:{title:`Interwal odpytywania (ms)`,validation:{required:`Interwal odpytywania jest wymagany`,number:`Musi byc liczba >= 1000`}}},timeouts:{connectionTimeout:{title:`Limit czasu polaczenia (ms)`,validation:{required:`Limit czasu polaczenia jest wymagany`,number:`Musi byc liczba >= 1000`}},commandDebounce:{title:`Opoznienie komendy (ms)`,validation:{required:`Opoznienie komendy jest wymagane`,number:`Musi byc liczba >= 0`}}}},devices:{id:{title:`ID urzadzenia`,placeholder:`ID urzadzenia`},name:{title:`Nazwa urzadzenia`,placeholder:`Wprowadz nazwe urzadzenia`,validation:{required:`Nazwa urzadzenia jest wymagana`}},category:{title:`Kategoria urzadzenia`,placeholder:`Wybierz kategorie`,validation:{required:`Kategoria urzadzenia jest wymagana`}},description:{title:`Opis`,placeholder:`Wprowadz opis urzadzenia (opcjonalnie)`},hostname:{title:`Nazwa hosta lub adres IP`,placeholder:`np. 192.168.1.100 lub wled-device.local`,validation:{required:`Nazwa hosta lub adres IP jest wymagana`}},enabled:{title:`Wlaczony`}}},messages:{config:{edited:`Konfiguracja wtyczki WLED zostala zaktualizowana`,notEdited:`Nie udalo sie zaktualizowac konfiguracji wtyczki WLED`},devices:{created:`Urzadzenie WLED '{device}' zostalo utworzone`,notCreated:`Nie udalo sie utworzyc urzadzenia WLED '{device}'`,edited:`Urzadzenie WLED '{device}' zostalo zaktualizowane`,notEdited:`Nie udalo sie zaktualizowac urzadzenia WLED '{device}'`}}},HC={headings:{aboutPluginStatus:`Stav pluginu`,aboutMdns:`mDNS objavovanie`,aboutWebsocket:`WebSocket pripojenie`,aboutPolling:`Dotazovanie zariadení`,aboutTimeouts:`Konfigurácia časových limitov`},texts:{aboutPluginStatus:`Povoľte alebo zakážte plugin WLED. Keď je zakázaný, žiadne zariadenia WLED nebudú monitorované ani ovládané.`,aboutMdns:`mDNS objavovanie umožňuje automatickú detekciu zariadení WLED na vašej sieti.`,aboutWebsocket:`WebSocket poskytuje aktualizácie v reálnom čase z vašich zariadení WLED pre rýchlejšiu synchronizáciu stavu.`,aboutPolling:`Nakonfigurujte, ako často plugin dotazuje zariadenia na aktualizácie stavu, keď WebSocket nie je dostupný.`,aboutTimeouts:`Nakonfigurujte časové limity pripojenia a príkazov pre komunikáciu so zariadeniami WLED.`},fields:{config:{enabled:{title:`Povoliť plugin`},mdns:{enabled:{title:`Povoliť mDNS objavovanie`},interface:{title:`Sieťové rozhranie`,placeholder:`Ponechajte prázdne pre predvolené`},autoAdd:{title:`Automaticky pridávať objavené zariadenia`}},websocket:{enabled:{title:`Povoliť WebSocket`},reconnectInterval:{title:`Interval opätovného pripojenia (ms)`,validation:{required:`Interval opätovného pripojenia je povinný`,number:`Musí byť číslo >= 1000`}}},polling:{interval:{title:`Interval dotazovania (ms)`,validation:{required:`Interval dotazovania je povinný`,number:`Musí byť číslo >= 1000`}}},timeouts:{connectionTimeout:{title:`Časový limit pripojenia (ms)`,validation:{required:`Časový limit pripojenia je povinný`,number:`Musí byť číslo >= 1000`}},commandDebounce:{title:`Odrazenie príkazu (ms)`,validation:{required:`Odrazenie príkazu je povinné`,number:`Musí byť číslo >= 0`}}}},devices:{id:{title:`ID zariadenia`,placeholder:`ID zariadenia`},name:{title:`Názov zariadenia`,placeholder:`Zadajte názov zariadenia`,validation:{required:`Názov zariadenia je povinný`}},category:{title:`Kategória zariadenia`,placeholder:`Vyberte kategóriu`,validation:{required:`Kategória zariadenia je povinná`}},description:{title:`Popis`,placeholder:`Zadajte popis zariadenia (voliteľné)`},hostname:{title:`Hostname alebo IP adresa`,placeholder:`napr. 192.168.1.100 alebo wled-device.local`,validation:{required:`Hostname alebo IP adresa je povinná`}},enabled:{title:`Povolené`}}},messages:{config:{edited:`Konfigurácia pluginu WLED bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu pluginu WLED`},devices:{created:`Zariadenie WLED '{device}' bolo vytvorené`,notCreated:`Nepodarilo sa vytvoriť zariadenie WLED '{device}'`,edited:`Zariadenie WLED '{device}' bolo aktualizované`,notEdited:`Nepodarilo sa aktualizovať zariadenie WLED '{device}'`}}},UC={"cs-CZ":LC,"de-DE":RC,"en-US":zC,"es-ES":BC,"pl-PL":VC,"sk-SK":HC},WC=Tt.extend({mdns:q({enabled:R(),interface:Y().nullable(),autoAdd:R()}),websocket:q({enabled:R(),reconnectInterval:Ot().int().min(1e3)}),polling:q({interval:Ot().int().min(1e3)}),timeouts:q({connectionTimeout:Ot().int().min(1e3),commandDebounce:Ot().int().min(0)})}),GC=Xi,KC=Mi.and(q({type:Z(EC)})),qC=Ti.and(q({type:Z(EC)}));Li.and(q({type:Z(EC)}));var JC=ki,YC=Pi.and(q({type:Z(EC)})),XC=ji.and(q({type:Z(EC)}));Ii.and(q({type:Z(EC)}));var ZC=Lt.extend({timeouts:q({connectionTimeout:G(),commandDebounce:G()}),polling:q({interval:G()}),mdns:q({enabled:R(),interface:Y().nullable(),autoAdd:R()}),websocket:q({enabled:R(),reconnectInterval:G()})}),QC=Wt.and(q({type:Z(TC),timeouts:q({connection_timeout:G().optional(),command_debounce:G().optional()}).optional(),polling:q({interval:G().optional()}).optional(),mdns:q({enabled:R().optional(),interface:Y().nullable().optional(),auto_add:R().optional()}).optional(),websocket:q({enabled:R().optional(),reconnect_interval:G().optional()}).optional()}));Qt.and(q({type:Z(TC),timeouts:q({connection_timeout:G(),command_debounce:G()}),polling:q({interval:G()}),mdns:q({enabled:R(),interface:Y().nullable(),auto_add:R()}),websocket:q({enabled:R(),reconnect_interval:G()})}));var $C=Ui.extend({hostname:Y()}),ew=Wi.and(q({type:Z(EC),hostname:Y()})),tw=Ni.and(q({type:Z(EC),category:K(U).optional(),hostname:Y().optional()}));wi.and(q({type:Z(EC),hostname:Y()}));var nw=Symbol(`FB-Plugin-DevicesWled`),rw={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(UC)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesWledPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(nw,{type:TC,source:`com.fastybird.smart-panel.plugin.devices-wled`,name:`WLED`,description:`Connect and control your WLED addressable LED controllers from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:wC},schemas:{pluginConfigSchema:ZC,pluginConfigEditFormSchema:WC,pluginConfigUpdateReqSchema:QC},modules:[pn]},{type:EC,components:{deviceAddForm:NC,deviceEditForm:IC},schemas:{deviceSchema:$C,deviceAddFormSchema:kC,deviceEditFormSchema:AC,deviceCreateReqSchema:ew,deviceUpdateReqSchema:tw,channelSchema:JC,channelCreateReqSchema:YC,channelUpdateReqSchema:XC,channelPropertySchema:GC,channelPropertyCreateReqSchema:KC,channelPropertyUpdateReqSchema:qC},modules:[si]}],modules:[si,pn],isCore:!0})}},iw=f({name:`Zigbee2mqttConfigForm`,__name:`zigbee2mqtt-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},remoteFormErrors:{default:()=>[]},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`devicesZigbee2mqttPlugin.messages.config.edited`),error:a(`devicesZigbee2mqttPlugin.messages.config.notEdited`)}}),f=j(()=>{let e={};for(let t of n.remoteFormErrors)e[t.field]=t.message;return e}),p=y({"mqtt.host":[{required:!0,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.host.validation.required`),trigger:`blur`}],"mqtt.port":[{required:!0,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.port.validation.required`),trigger:`change`},{type:`integer`,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.port.validation.range`),validator:(e,t)=>t>=1&&t<=65535,trigger:`change`}],"mqtt.baseTopic":[{required:!0,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.baseTopic.validation.required`),trigger:`blur`}],"mqtt.keepalive":[{type:`integer`,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.keepalive.validation.number`),validator:(e,t)=>t>=10,trigger:`change`}],"mqtt.connectTimeout":[{type:`integer`,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.connectTimeout.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}],"mqtt.reconnectInterval":[{type:`integer`,message:a(`devicesZigbee2mqttPlugin.fields.config.mqtt.reconnectInterval.validation.number`),validator:(e,t)=>t>=1e3,trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:p,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`devicesZigbee2mqttPlugin.headings.aboutPluginStatus`),description:h(a)(`devicesZigbee2mqttPlugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[18]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesZigbee2mqttPlugin.headings.aboutMqtt`),description:h(a)(`devicesZigbee2mqttPlugin.texts.aboutMqtt`),closable:!1},null,8,[`title`,`description`]),F(h(Bt),{gutter:20,class:`mt-3`},{default:d(()=>[F(h(vt),{xs:24,sm:16},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.host.title`),prop:`mqtt.host`,error:f.value[`mqtt.host`]},{default:d(()=>[F(h(W),{modelValue:h(s).mqtt.host,"onUpdate:modelValue":t[1]||=e=>h(s).mqtt.host=e,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.host.placeholder`),name:`mqttHost`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`,`error`])]),_:1}),F(h(vt),{xs:24,sm:8},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.port.title`),prop:`mqtt.port`},{default:d(()=>[F(h(Sn),{modelValue:h(s).mqtt.port,"onUpdate:modelValue":t[2]||=e=>h(s).mqtt.port=e,min:1,max:65535,name:`mqttPort`,class:`w-full!`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1})]),_:1}),F(h(Bt),{gutter:20},{default:d(()=>[F(h(vt),{xs:24,sm:12},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.username.title`),prop:`mqtt.username`,error:f.value[`mqtt.username`]},{default:d(()=>[F(h(W),{modelValue:h(s).mqtt.username,"onUpdate:modelValue":t[3]||=e=>h(s).mqtt.username=e,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.username.placeholder`),name:`mqttUsername`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`,`error`])]),_:1}),F(h(vt),{xs:24,sm:12},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.password.title`),prop:`mqtt.password`},{default:d(()=>[F(h(W),{modelValue:h(s).mqtt.password,"onUpdate:modelValue":t[4]||=e=>h(s).mqtt.password=e,type:`password`,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.password.placeholder`),name:`mqttPassword`,"show-password":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1}),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.baseTopic.title`),prop:`mqtt.baseTopic`},{default:d(()=>[F(h(W),{modelValue:h(s).mqtt.baseTopic,"onUpdate:modelValue":t[5]||=e=>h(s).mqtt.baseTopic=e,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.baseTopic.placeholder`),name:`mqttBaseTopic`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(en),{class:`mt-3`},{default:d(()=>[F(h(pt),{title:h(a)(`devicesZigbee2mqttPlugin.headings.advancedMqttSettings`)},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.clientId.title`),prop:`mqtt.clientId`},{default:d(()=>[F(h(W),{modelValue:h(s).mqtt.clientId,"onUpdate:modelValue":t[6]||=e=>h(s).mqtt.clientId=e,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.clientId.placeholder`),name:`mqttClientId`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.cleanSession.title`),prop:`mqtt.cleanSession`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).mqtt.cleanSession,"onUpdate:modelValue":t[7]||=e=>h(s).mqtt.cleanSession=e,name:`mqttCleanSession`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(Bt),{gutter:20},{default:d(()=>[F(h(vt),{xs:24,sm:8},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.keepalive.title`),prop:`mqtt.keepalive`},{default:d(()=>[F(h(Sn),{modelValue:h(s).mqtt.keepalive,"onUpdate:modelValue":t[8]||=e=>h(s).mqtt.keepalive=e,min:10,step:10,name:`mqttKeepalive`,class:`w-full!`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{xs:24,sm:8},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.connectTimeout.title`),prop:`mqtt.connectTimeout`},{default:d(()=>[F(h(Sn),{modelValue:h(s).mqtt.connectTimeout,"onUpdate:modelValue":t[9]||=e=>h(s).mqtt.connectTimeout=e,min:1e3,step:1e3,name:`mqttConnectTimeout`,class:`w-full!`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{xs:24,sm:8},{default:d(()=>[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.mqtt.reconnectInterval.title`),prop:`mqtt.reconnectInterval`},{default:d(()=>[F(h(Sn),{modelValue:h(s).mqtt.reconnectInterval,"onUpdate:modelValue":t[10]||=e=>h(s).mqtt.reconnectInterval=e,min:1e3,step:1e3,name:`mqttReconnectInterval`,class:`w-full!`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1})]),_:1})]),_:1},8,[`title`])]),_:1}),t[19]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesZigbee2mqttPlugin.headings.aboutTls`),description:h(a)(`devicesZigbee2mqttPlugin.texts.aboutTls`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.enabled.title`),prop:`tls.enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).tls.enabled,"onUpdate:modelValue":t[11]||=e=>h(s).tls.enabled=e,name:`tlsEnabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),h(s).tls.enabled?(i(),P(A,{key:0},[F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.rejectUnauthorized.title`),prop:`tls.rejectUnauthorized`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).tls.rejectUnauthorized,"onUpdate:modelValue":t[12]||=e=>h(s).tls.rejectUnauthorized=e,name:`tlsRejectUnauthorized`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.ca.title`),prop:`tls.ca`},{default:d(()=>[F(h(W),{modelValue:h(s).tls.ca,"onUpdate:modelValue":t[13]||=e=>h(s).tls.ca=e,type:`textarea`,rows:3,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.ca.placeholder`),name:`tlsCa`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.cert.title`),prop:`tls.cert`},{default:d(()=>[F(h(W),{modelValue:h(s).tls.cert,"onUpdate:modelValue":t[14]||=e=>h(s).tls.cert=e,type:`textarea`,rows:3,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.cert.placeholder`),name:`tlsCert`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.key.title`),prop:`tls.key`},{default:d(()=>[F(h(W),{modelValue:h(s).tls.key,"onUpdate:modelValue":t[15]||=e=>h(s).tls.key=e,type:`textarea`,rows:3,placeholder:h(a)(`devicesZigbee2mqttPlugin.fields.config.tls.key.placeholder`),name:`tlsKey`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])],64)):g(``,!0),t[20]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(a)(`devicesZigbee2mqttPlugin.headings.aboutDiscovery`),description:h(a)(`devicesZigbee2mqttPlugin.texts.aboutDiscovery`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.discovery.autoAdd.title`),prop:`discovery.autoAdd`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).discovery.autoAdd,"onUpdate:modelValue":t[16]||=e=>h(s).discovery.autoAdd=e,name:`discoveryAutoAdd`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`devicesZigbee2mqttPlugin.fields.config.discovery.syncOnStartup.title`),prop:`discovery.syncOnStartup`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(s).discovery.syncOnStartup,"onUpdate:modelValue":t[17]||=e=>h(s).discovery.syncOnStartup=e,name:`discoverySyncOnStartup`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),aw=`devices-zigbee2mqtt`,ow=`devices-zigbee2mqtt-plugin`,sw=`devices-zigbee2mqtt`,cw=class extends Error{},lw=class extends cw{},uw=class extends cw{code;constructor(e,t){super(e),this.code=t}},dw=yi,fw=pi,pw=q({id:Y().uuid(),type:Y(),ieeeAddress:Y().min(1),name:Y().min(1),category:K(U),description:Y().trim().transform(e=>e===``?null:e).nullable().optional(),enabled:R().default(!0)}),mw=[U.generic,U.lighting,U.sensor,U.switcher,U.thermostat,U.window_covering,U.lock],hw=({id:e})=>{let t=Ye().getStore(qr),{t:n}=b(),r=rt(),i=Ke(),a=N(Q.NONE),o,s=j(()=>Vt(mw,[e=>n(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:n(`devicesModule.categories.devices.${e}`)}))),c=y({...Ft(dw),id:e,type:sw,category:U.generic,name:``,description:``,enabled:!0}),l=Mt(w(c)),u=N(void 0),d=N(!1),f=async()=>{if(u.value.clearValidate(),!await u.value.validate())throw new lw(`Form not valid`);let s=dw.safeParse(c);if(!s.success)throw i.error(`Schema validation failed with:`,s.error),new lw(`Failed to validate create device model.`);a.value=Q.WORKING;let l=n(`devicesZigbee2mqttPlugin.messages.devices.notCreated`,{device:c.name});try{await t.add({id:e,draft:!1,data:{...s.data,type:sw}})}catch(e){throw a.value=Q.ERROR,o=window.setTimeout(p,2e3),e instanceof ui&&e.code===422?r.error(e.message):r.error(l),e}return a.value=Q.OK,o=window.setTimeout(p,2e3),r.success(n(`devicesZigbee2mqttPlugin.messages.devices.created`,{device:c.name})),`added`},p=()=>{window.clearTimeout(o),a.value=Q.NONE};return m(c,()=>{d.value=!(0,Ka.isEqual)(w(c),l)}),{categoriesOptions:s,model:c,formEl:u,formChanged:d,submit:f,clear:p,formResult:a}};f({name:`Zigbee2mqttDeviceAddForm`,__name:`zigbee2mqtt-device-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=hw({id:n.id}),_=y({name:[{required:!0,message:o(`devicesZigbee2mqttPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesZigbee2mqttPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:_,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[0]||=e=>h(c).name=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[1]||=e=>h(c).category=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[2]||=e=>h(c).description=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[3]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}});var gw=Ui,_w=Wi.and(q({type:Z(sw)})),vw=Ni.and(q({type:Z(sw),category:K(U).optional()}));wi.and(q({type:Z(sw)}));var yw=e=>({data:{device_category:e.deviceCategory,expose_overrides:e.exposeOverrides?.map(e=>({expose_name:e.exposeName,channel_category:e.channelCategory,skip:e.skip}))}}),bw=e=>({data:{ieee_address:e.ieeeAddress,name:e.name,category:e.category,description:e.description,enabled:e.enabled,channels:e.channels.map(e=>({identifier:e.identifier,category:e.category,name:e.name,properties:e.properties.map(e=>({category:e.category,z2m_property:e.z2mProperty,data_type:e.dataType,permissions:e.permissions,format:e.format}))}))}}),xw=e=>({ieeeAddress:e.ieee_address,friendlyName:e.friendly_name,manufacturer:e.manufacturer??null,model:e.model??null,description:e.description??null}),Sw=e=>({category:e.category,name:e.name,confidence:e.confidence}),Cw=e=>({category:e.category,name:e.name,confidence:e.confidence}),ww=e=>({category:e.category,name:e.name,z2mProperty:e.z2m_property,dataType:e.data_type,permissions:e.permissions,format:e.format??null,required:e.required,currentValue:e.current_value??null}),Tw=e=>({exposeName:e.expose_name,exposeType:e.expose_type,status:e.status,suggestedChannel:e.suggested_channel?Cw(e.suggested_channel):null,suggestedProperties:e.suggested_properties.map(ww),missingRequiredProperties:e.missing_required_properties}),Ew=e=>({type:e.type,exposeName:e.expose_name,message:e.message,suggestion:e.suggestion}),Dw=e=>({z2mDevice:xw(e.z2m_device),suggestedDevice:Sw(e.suggested_device),exposes:e.exposes.map(Tw),warnings:e.warnings.map(Ew),readyToAdopt:e.ready_to_adopt}),Ow=()=>{let{t:e}=b(),t=fn(),n=Ke(),r=rt(),i=Ye().getStore(qr),a=N(!1),o=N(null);return{isAdopting:a,adoptionError:o,adoptDevice:async s=>{a.value=!0,o.value=null;try{let r=bw(s),{data:o,error:c,response:l}=await t.client.POST(`/${ae}/${aw}/discovered-devices/adopt`,{body:r});if(o!==void 0&&o.data){let e=gw.safeParse({...Ct(o.data),type:sw});if(!e.success)throw n.error(`Schema validation failed with:`,e.error),new lw(`Failed to parse adopted device response.`);return i.set({id:e.data.id,data:e.data}),a.value=!1,e.data}let u=e(`devicesZigbee2mqttPlugin.messages.devices.notAdopted`,{device:``});throw c&&(u=Gt(c,u)),new uw(u,l?.status)}catch(t){a.value=!1;let i=t;throw o.value=i,i instanceof lw||i instanceof uw?r.error(i.message):(n.error(`Failed to adopt device:`,i),r.error(e(`devicesZigbee2mqttPlugin.messages.devices.notAdopted`,{device:``}))),i}}}},kw=Symbol(`devices_zigbee2mqtt_plugin-discovered_devices`),Aw=()=>{let e=Ye().getStore(kw),t=j(()=>Vt(e.findAll(),[e=>e.friendlyName.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.friendlyName,manufacturer:e.manufacturer,model:e.model,available:e.available}))),n=re(()=>e.fetching()),r=async()=>{await e.fetch()};return o(()=>{e.firstLoadFinished()||r().catch(()=>{})}),{devicesOptions:t,devicesOptionsLoading:n,refreshDevices:r}},jw=()=>{let{t:e}=b(),t=fn(),n=Ke(),r=rt(),i=N(null),a=N(!1),o=N(null),s=0,c=async(c,l)=>{let u=++s;a.value=!0,o.value=null;try{let n=l?yw(l):void 0,{data:r,error:o,response:d}=await t.client.POST(`/${ae}/${aw}/discovered-devices/{ieeeAddress}/preview-mapping`,{params:{path:{ieeeAddress:c}},body:n});if(u!==s)throw new uw(`Request was superseded by a newer request.`,0);if(r!==void 0&&r.data){if(u!==s)throw new uw(`Request was superseded by a newer request.`,0);let e=Dw(r.data);return i.value=e,a.value=!1,e}throw new uw(o?String(o):e(`devicesZigbee2mqttPlugin.messages.mapping.previewError`),d?.status??500)}catch(t){u===s&&(a.value=!1);let i=t;throw u===s&&(i instanceof lw?(o.value=i,r.error(i.message)):i instanceof uw?i.message.includes(`superseded`)||(o.value=i,r.error(i.message)):(o.value=i,n.error(`Failed to fetch mapping preview:`,i),r.error(e(`devicesZigbee2mqttPlugin.messages.mapping.previewError`)))),i}};return{preview:i,isLoading:a,error:o,fetchPreview:c,updatePreview:async(e,t)=>c(e,t),clearPreview:()=>{s++,i.value=null,o.value=null,a.value=!1}}},Mw=({id:e})=>{let{t}=b(),n=rt(),r=Ke(),i=N(Q.NONE),a,{preview:o,isLoading:s,error:c,fetchPreview:l,clearPreview:u}=jw(),{isAdopting:d,adoptDevice:f}=Ow(),{devicesOptions:p,devicesOptionsLoading:h}=Aw(),g=j(()=>Object.values(U).filter(e=>e!==U.generic).map(e=>({value:e,label:t(`devicesModule.categories.devices.${e}`)}))),_=y({...Ft(pw),id:e,type:sw,category:Object.values(U).find(e=>e!==U.generic)||U.sensor,name:``,description:``,enabled:!0,ieeeAddress:``}),v=Mt(w(_)),x=N(`one`),S=N(new Set([`one`])),C=N(!1),T=N([]),E=N(null),D=async(e,s)=>{if(e===`one`){let e=s;if(!e)throw new lw(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new lw(`Form not valid`);i.value=Q.WORKING;try{if(await l(_.ieeeAddress),o.value){_.name=o.value.suggestedDevice.name||_.name,E.value=o.value.suggestedDevice.category;let e=o.value.suggestedDevice.category;e!==U.generic&&(_.category=e)}return x.value=`two`,S.value.add(`two`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(O,2e3),e instanceof lw?n.error(e.message):n.error(t(`devicesZigbee2mqttPlugin.messages.mapping.previewError`)),e}}else if(e===`two`){let e=s;if(!e)throw new lw(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new lw(`Form not valid`);i.value=Q.WORKING;try{return await l(_.ieeeAddress,{deviceCategory:_.category}),o.value&&!_.name&&(_.name=o.value.suggestedDevice.name||_.name),x.value=`three`,S.value.add(`three`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(O,2e3),e instanceof lw?n.error(e.message):n.error(t(`devicesZigbee2mqttPlugin.messages.mapping.previewError`)),e}}else if(e===`three`)return x.value=`four`,S.value.add(`four`),`ok`;else if(e===`four`){let e=s;if(!e)throw new lw(`Form reference not available`);e.clearValidate(),i.value=Q.WORKING;try{if(o.value){let n=[];for(let e of o.value.exposes){let t=T.value?.find(t=>t.exposeName===e.exposeName);if(t?.skip===!0)continue;let r=t?.channelCategory!==void 0,i=e.suggestedChannel?.category,a=i!==void 0&&i!==I.generic;t&&!t.skip&&!r&&!a&&n.push(e.exposeName)}if(n.length>0)throw await e.validate().catch(()=>{}),new lw(t(`devicesZigbee2mqttPlugin.messages.mapping.missingChannelCategory`,{exposes:n.slice(0,3).join(`, `)+(n.length>3?` (+${n.length-3} more)`:``)}))}if(!await e.validate())throw new lw(`Form not valid`);if(T.value&&T.value.length>0){let e={exposeOverrides:T.value,deviceCategory:_.category};await l(_.ieeeAddress,e)}return x.value=`five`,S.value.add(`five`),i.value=Q.NONE,`ok`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(O,2e3),e instanceof lw?n.error(e.message):n.error(t(`devicesZigbee2mqttPlugin.messages.mapping.previewError`)),e}}else if(e===`five`){if(!o.value)throw new lw(`Mapping preview is required for device adoption.`);if(o.value.readyToAdopt!==!0)throw new lw(t(`devicesZigbee2mqttPlugin.messages.mapping.notReadyToAdopt`));let e=s;if(!e)throw new lw(`Form reference not available`);if(e.clearValidate(),!await e.validate())throw new lw(`Form not valid`);let c=pw.safeParse(_);if(!c.success)throw r.error(`Schema validation failed with:`,c.error),new lw(`Failed to validate create device model.`);i.value=Q.WORKING;let l=t(`devicesZigbee2mqttPlugin.messages.devices.notCreated`,{device:_.name});try{if(!o.value||o.value.readyToAdopt!==!0)throw new lw(t(`devicesZigbee2mqttPlugin.messages.mapping.notReadyToAdopt`));let e=new Map;for(let t of o.value.exposes){if(t.status===`skipped`)continue;let n=T.value?.find(e=>e.exposeName===t.exposeName);if(n?.skip||!t.suggestedChannel&&!n?.channelCategory)continue;let r=n?.channelCategory||t.suggestedChannel?.category;if(!r||r===I.generic||!t.suggestedProperties||t.suggestedProperties.length===0)continue;let i=e.get(r);i||(i={category:r,name:t.suggestedChannel?.name||r,identifier:r,properties:[]},e.set(r,i));for(let e of t.suggestedProperties)i.properties.find(t=>t.category===e.category)||i.properties.push({category:e.category,z2mProperty:e.z2mProperty,dataType:e.dataType,permissions:e.permissions,format:e.format??null})}let r=Array.from(e.values());return await f({ieeeAddress:_.ieeeAddress,name:_.name,category:_.category,description:_.description??null,enabled:_.enabled,channels:r}),i.value=Q.OK,a=window.setTimeout(O,2e3),n.success(t(`devicesZigbee2mqttPlugin.messages.mapping.adoptionSuccess`,{device:_.name})),ve.push({name:ci.DEVICES}),`added`}catch(e){throw i.value=Q.ERROR,a=window.setTimeout(O,2e3),!(e instanceof uw)&&!(e instanceof lw)&&!(e instanceof ui)&&(r.error(`Unexpected error during device adoption:`,e),n.error(l)),e}}else throw new lw(`Unknown step`)},O=()=>{window.clearTimeout(a),i.value=Q.NONE};return m(_,()=>{C.value=!(0,Ka.isEqual)(w(_),v)}),m(()=>_.ieeeAddress,(e,t)=>{e!==t&&(u(),T.value=[])}),m(()=>o.value,e=>{e&&(_.name||=e.suggestedDevice.name||_.name)}),{categoriesOptions:g,activeStep:x,reachedSteps:S,preview:o,suggestedCategory:E,isPreviewLoading:s,previewError:c,isAdopting:d,devicesOptions:p,devicesOptionsLoading:h,exposeOverrides:T,model:_,formChanged:C,submitStep:D,clear:O,clearPreview:u,formResult:i}},Nw={class:`space-y-4`},Pw={class:`font-semibold`},Fw=f({__name:`category-selection-step`,props:{model:{},categoriesOptions:{},suggestedCategory:{}},setup(e,{expose:t}){let{t:n}=b(),r=N(void 0),o=y({category:[{required:!0,message:n(`devicesZigbee2mqttPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return t({stepTwoFormEl:r}),(t,s)=>(i(),P(`div`,Nw,[F(h(L),{type:`info`,title:h(n)(`devicesZigbee2mqttPlugin.headings.device.categorySelection`),description:h(n)(`devicesZigbee2mqttPlugin.messages.categorySelection.description`),closable:!1,"show-icon":``},null,8,[`title`,`description`]),F(h(B),{ref_key:`stepTwoFormEl`,ref:r,model:e.model,rules:o,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(n)(`devicesZigbee2mqttPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:e.model.category,"onUpdate:modelValue":s[0]||=t=>e.model.category=t,placeholder:h(n)(`devicesZigbee2mqttPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``},{default:d(()=>[(i(!0),P(A,null,a(e.categoriesOptions,t=>(i(),T(h(J),{key:t.value,label:t.label,value:t.value},{default:d(()=>[t.value===e.suggestedCategory?(i(),P(A,{key:0},[D(`span`,Pw,k(t.label),1),F(h(ct),{size:`small`,type:`success`,class:`ml-2`},{default:d(()=>[v(k(h(n)(`devicesZigbee2mqttPlugin.labels.suggested`)),1)]),_:1})],64)):(i(),P(A,{key:1},[v(k(t.label),1)],64))]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),e.model.category?(i(),T(h(L),{key:0,type:`info`,title:h(n)(`devicesModule.fields.devices.category.description`),description:h(n)(`devicesModule.texts.devices.description.${e.model.category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)]),_:1},8,[`model`,`rules`])]))}}),Iw={class:`font-semibold`},Lw={class:`grid grid-cols-2 md:grid-cols-4 gap-4 text-center`},Rw={class:`text-2xl font-bold text-green-600`},zw={class:`text-sm text-gray-500`},Bw={class:`text-2xl font-bold text-yellow-600`},Vw={class:`text-sm text-gray-500`},Hw={class:`text-2xl font-bold text-red-600`},Uw={class:`text-sm text-gray-500`},Ww={class:`text-2xl font-bold text-blue-600`},Gw={class:`text-sm text-gray-500`},Kw=f({__name:`device-configuration-step`,props:{model:{},preview:{},exposeOverrides:{}},setup(e,{expose:t}){let n=e,{t:r}=b(),a=N(void 0),o=y({name:[{required:!0,message:r(`devicesZigbee2mqttPlugin.fields.devices.name.validation.required`),trigger:`change`}]}),s=j(()=>n.preview?n.preview.exposes.filter(e=>e.status===`mapped`).length:0),c=j(()=>n.preview?n.preview.exposes.filter(e=>e.status===`partial`).length:0),l=j(()=>n.preview?n.preview.exposes.filter(e=>e.status===`unmapped`).length:0),u=j(()=>n.preview?n.preview.exposes.filter(e=>e.status===`skipped`||n.exposeOverrides?.find(t=>t.exposeName===e.exposeName)?.skip===!0).length:0);return t({stepFourFormEl:a}),(t,n)=>(i(),T(h(B),{ref_key:`stepFourFormEl`,ref:a,model:e.model,rules:o,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(r)(`devicesZigbee2mqttPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:e.model.name,"onUpdate:modelValue":n[0]||=t=>e.model.name=t,placeholder:h(r)(`devicesZigbee2mqttPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(r)(`devicesZigbee2mqttPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:e.model.description,"onUpdate:modelValue":n[1]||=t=>e.model.description=t,placeholder:h(r)(`devicesZigbee2mqttPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(r)(`devicesZigbee2mqttPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:e.model.enabled,"onUpdate:modelValue":n[2]||=t=>e.model.enabled=t,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(xt),{shadow:`never`,"header-class":`py-2! px-4!`,"body-class":`px-0!`},{header:d(()=>[D(`div`,Iw,[v(k(h(r)(`devicesZigbee2mqttPlugin.fields.mapping.totalExposes`))+`: `,1),F(h(ct),{type:`info`,size:`small`},{default:d(()=>[v(k(e.preview?.exposes.length??0),1)]),_:1})])]),default:d(()=>[D(`div`,Lw,[D(`div`,null,[D(`div`,Rw,k(s.value),1),D(`div`,zw,k(h(r)(`devicesZigbee2mqttPlugin.fields.mapping.mapped`)),1)]),D(`div`,null,[D(`div`,Bw,k(c.value),1),D(`div`,Vw,k(h(r)(`devicesZigbee2mqttPlugin.fields.mapping.partial`)),1)]),D(`div`,null,[D(`div`,Hw,k(l.value),1),D(`div`,Uw,k(h(r)(`devicesZigbee2mqttPlugin.fields.mapping.unmapped`)),1)]),D(`div`,null,[D(`div`,Ww,k(u.value),1),D(`div`,Gw,k(h(r)(`devicesZigbee2mqttPlugin.fields.mapping.excluded`)),1)])])]),_:1})]),_:1},8,[`model`,`rules`]))}}),qw=()=>{let e=Ye().getStore(kw);return{devices:j(()=>e.findAll()),isLoading:re(()=>e.fetching()),firstLoadFinished:j(()=>e.firstLoadFinished()),fetchDiscoveredDevices:async()=>e.fetch(),getDiscoveredDevice:async t=>e.get({id:t}),findById:t=>e.findById(t)}},Jw={class:`flex flex-row justify-between items-center w-full overflow-hidden`},Yw={class:`grow-1`},Xw={key:0,class:`text-sm`},Zw={key:0,class:`text-sm text-gray-500 mt-2`},Qw={class:`flex flex-col gap-2`},$w={class:`grid grid-cols-[auto_1fr] gap-x-4 my-0`},eT={class:`m-0 inline-block font-bold`},tT={class:`m-0`},nT={class:`m-0`},rT=f({__name:`device-selection-step`,props:{model:{},devicesOptions:{},devicesOptionsLoading:{type:Boolean}},emits:[`device-change`],setup(e,{expose:t,emit:n}){let r=e,o=n,{t:s}=b(),{devices:c}=qw(),l=j(()=>r.model.ieeeAddress&&c.value.find(e=>e.id===r.model.ieeeAddress)||null),u=y({ieeeAddress:[{required:!0,message:s(`devicesZigbee2mqttPlugin.fields.devices.ieeeAddress.validation.required`),trigger:`change`}]}),f=e=>{o(`device-change`,e)},p=N(void 0);return t({stepOneFormEl:p}),(t,n)=>(i(),T(h(B),{ref_key:`stepOneFormEl`,ref:p,model:e.model,rules:u,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{prop:`ieeeAddress`},{default:d(()=>[F(h(X),{modelValue:e.model.ieeeAddress,"onUpdate:modelValue":n[0]||=t=>e.model.ieeeAddress=t,placeholder:h(s)(`devicesZigbee2mqttPlugin.fields.devices.ieeeAddress.placeholder`),loading:e.devicesOptionsLoading,disabled:e.devicesOptions.length===0,name:`ieeeAddress`,filterable:``,onChange:f},{default:d(()=>[(i(!0),P(A,null,a(e.devicesOptions,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},{default:d(()=>[D(`div`,Jw,[D(`div`,Yw,k(e.label),1),e.manufacturer?(i(),P(`div`,Xw,k(e.manufacturer),1)):g(``,!0)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`]),!e.devicesOptionsLoading&&e.devicesOptions.length===0?(i(),P(`div`,Zw,k(h(s)(`devicesZigbee2mqttPlugin.messages.devices.noDiscoveredDevices`)),1)):g(``,!0)]),_:1}),D(`div`,Qw,[l.value?(i(),T(h(L),{key:0,type:`info`,title:h(s)(`devicesZigbee2mqttPlugin.headings.device.deviceInfo`),closable:!1,"show-icon":``},{default:d(()=>[D(`dl`,$w,[D(`dt`,null,k(h(s)(`devicesZigbee2mqttPlugin.fields.devices.friendlyName.title`))+`:`,1),D(`dd`,eT,k(l.value.friendlyName),1),l.value.manufacturer?(i(),P(A,{key:0},[D(`dt`,null,k(h(s)(`devicesZigbee2mqttPlugin.fields.devices.manufacturer.title`))+`:`,1),D(`dd`,tT,k(l.value.manufacturer),1)],64)):g(``,!0),l.value.model?(i(),P(A,{key:1},[D(`dt`,null,k(h(s)(`devicesZigbee2mqttPlugin.fields.devices.model.title`))+`:`,1),D(`dd`,nT,k(l.value.model),1)],64)):g(``,!0)])]),_:1},8,[`title`])):g(``,!0),l.value&&!l.value.available?(i(),T(h(L),{key:1,type:`warning`,title:h(s)(`devicesZigbee2mqttPlugin.messages.devices.deviceOffline`),closable:!1,"show-icon":``},null,8,[`title`])):g(``,!0),l.value&&l.value.adoptedDeviceId?(i(),T(h(L),{key:2,type:`warning`,title:h(s)(`devicesZigbee2mqttPlugin.messages.devices.alreadyAdopted`),description:h(s)(`devicesZigbee2mqttPlugin.messages.devices.alreadyAdoptedDescription`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0)])]),_:1},8,[`model`,`rules`]))}}),iT={key:0,class:`text-center py-8 text-gray-500`},aT={class:`text-sm mt-2`},oT={key:1,class:`space-y-4`},sT={class:`flex items-center gap-3 mb-3`},cT={class:`flex-1`},lT={class:`font-semibold`},uT={class:`text-sm text-gray-500 ml-2`},dT=f({__name:`mapping-customization-step`,props:{preview:{},isPreviewLoading:{type:Boolean},exposeOverrides:{}},emits:[`update-overrides`],setup(e,{expose:t,emit:n}){let r=e,o=n,{t:s}=b(),c=e=>e.replace(/[.\[\]]/g,`_`),u=e=>{let t=r.preview?.exposes.find(t=>t.exposeName===e),n=r.exposeOverrides?.find(t=>t.exposeName===e);if(n?.skip===!0)return!1;if(n?.channelCategory||n&&!n.skip&&!n.channelCategory)return!0;let i=t?.suggestedChannel?.category;return i?i!==I.generic:!1},f=e=>{let t=r.exposeOverrides?.find(t=>t.exposeName===e);if(t?.channelCategory)return t.channelCategory;let n=(r.preview?.exposes.find(t=>t.exposeName===e))?.suggestedChannel?.category;if(n&&n!==I.generic)return n},p=y({});m(()=>[r.exposeOverrides,r.preview],()=>{if(r.preview)for(let e of r.preview.exposes){let t=e.exposeName,n=`category_${c(t)}`;u(t)?p[n]=f(t):delete p[n]}else{let e=Object.keys(p).filter(e=>e.startsWith(`category_`));for(let t of e)delete p[t]}},{immediate:!0,deep:!0});let _=N(void 0),x=j(()=>{let e={};if(r.preview)for(let t of r.preview.exposes){let n=t.exposeName,r=`category_${c(n)}`;u(n)&&!f(n)&&(e[r]=[{required:!0,message:s(`devicesZigbee2mqttPlugin.fields.mapping.suggestedChannel.validation.required`),trigger:`change`}])}return e}),S=e=>{let t=`category_${c(e)}`;return x.value[t]||[]};t({stepThreeFormEl:_,resetForm:()=>{let e=Object.keys(p).filter(e=>e.startsWith(`category_`));for(let t of e)delete p[t];_.value?.resetFields()}});let C=j(()=>Object.values(I).filter(e=>e!==I.generic).map(e=>({value:e,label:s(`devicesModule.categories.channels.${e}`)}))),w=(e,t)=>{let n=[...r.exposeOverrides||[]],i=n.findIndex(t=>t.exposeName===e),a=(r.preview?.exposes.find(t=>t.exposeName===e))?.suggestedChannel?.category,s=a&&a!==I.generic;if(t)if(i>=0){let t=n[i];t?.channelCategory?(n[i]={exposeName:e,channelCategory:t.channelCategory},p[`category_${c(e)}`]=t.channelCategory):s?(n.splice(i,1),p[`category_${c(e)}`]=a):(n[i]={exposeName:e},p[`category_${c(e)}`]=void 0)}else s?p[`category_${c(e)}`]=a:(n.push({exposeName:e}),p[`category_${c(e)}`]=void 0);else{if(i>=0){let e=n[i];e&&(n[i]={...e,skip:!0})}else n.push({exposeName:e,skip:!0});delete p[`category_${c(e)}`]}o(`update-overrides`,n)},E=e=>{let t=r.exposeOverrides?.find(t=>t.exposeName===e);return t!==void 0&&!t.skip&&!t.channelCategory},O=(e,t)=>{let n=[...r.exposeOverrides||[]],i=n.findIndex(t=>t.exposeName===e);if(i>=0){let e=n[i];e&&(n[i]={...e,channelCategory:t,skip:!1})}else n.push({exposeName:e,channelCategory:t});p[`category_${c(e)}`]=t,o(`update-overrides`,n)};return(t,n)=>e.preview?(i(),P(`div`,oT,[F(h(L),{type:`info`,title:h(s)(`devicesZigbee2mqttPlugin.headings.device.mappingCustomization`),description:h(s)(`devicesZigbee2mqttPlugin.texts.mapping.customizationDescription`),closable:!1,"show-icon":``},null,8,[`title`,`description`]),F(h(B),{ref_key:`stepThreeFormEl`,ref:_,model:p,rules:x.value,"label-position":`top`},{default:d(()=>[(i(!0),P(A,null,a(e.preview.exposes,e=>(i(),P(`div`,{key:e.exposeName},[D(`div`,sT,[F(h(Nt),{"model-value":u(e.exposeName),onChange:t=>w(e.exposeName,t===!0)},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.use`)),1)]),_:1},8,[`model-value`,`onChange`]),D(`div`,cT,[D(`span`,lT,k(e.exposeName),1),F(h(ct),{type:e.status===`mapped`?`success`:e.status===`partial`?`warning`:`danger`,size:`small`,class:`ml-2`},{default:d(()=>[v(k(e.status),1)]),_:2},1032,[`type`]),D(`span`,uT,`(`+k(e.exposeType)+`)`,1)])]),u(e.exposeName)||E(e.exposeName)?(i(),T(h(V),{key:0,label:h(s)(`devicesZigbee2mqttPlugin.fields.mapping.suggestedChannel.title`),prop:`category_${c(e.exposeName)}`,required:!f(e.exposeName),rules:S(e.exposeName)},{default:d(()=>[F(h(X),{"model-value":f(e.exposeName),placeholder:h(s)(`devicesZigbee2mqttPlugin.fields.devices.category.placeholder`),onChange:t=>O(e.exposeName,t)},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`model-value`,`placeholder`,`onChange`])]),_:2},1032,[`label`,`prop`,`required`,`rules`])):g(``,!0)]))),128))]),_:1},8,[`model`,`rules`])])):(i(),P(`div`,iT,[F(h(l),{size:48,class:`mb-4`},{default:d(()=>[F(h(ne),{icon:`mdi:information-outline`})]),_:1}),D(`p`,null,k(h(s)(`devicesZigbee2mqttPlugin.messages.mapping.noPreview`)),1),D(`p`,aT,k(h(s)(`devicesZigbee2mqttPlugin.messages.mapping.selectDeviceFirst`)),1)]))}}),fT={class:`flex items-center justify-between`},pT={class:`flex items-center gap-2`},mT={class:`font-semibold`},hT={class:`flex items-center gap-2 text-sm text-gray-500`},gT={key:0,class:`mb-3`},_T={class:`flex items-center gap-2 mb-2`},vT={class:`font-medium`},yT={class:`text-sm text-gray-600`},bT={key:1,class:`mb-3`},xT={class:`font-medium mb-2`},ST={class:`grid grid-cols-2 gap-2 text-sm`},CT={class:`text-gray-600`},wT={key:1,class:`text-gray-400`},TT={key:2,class:`mt-2`},ET=f({__name:`expose-mapping-card`,props:{expose:{}},setup(e){let t=e,{t:n}=b(),r=j(()=>{switch(t.expose.status){case`mapped`:return`success`;case`partial`:return`warning`;case`unmapped`:return`danger`;case`skipped`:return`info`;default:return`info`}}),o=j(()=>{if(!t.expose.suggestedChannel)return`info`;switch(t.expose.suggestedChannel.confidence){case`high`:return`success`;case`medium`:return`warning`;case`low`:return`danger`;default:return`info`}});return(t,s)=>(i(),T(h(xt),{shadow:`never`,class:`mb-2`,"header-class":`py-2! px-4!`,"body-class":`py-2! px-4!`},{header:d(()=>[D(`div`,fT,[D(`div`,pT,[D(`span`,mT,k(e.expose.exposeName),1),F(h(ct),{type:r.value,size:`small`},{default:d(()=>[v(k(e.expose.status),1)]),_:1},8,[`type`])]),D(`div`,hT,[D(`span`,null,k(e.expose.exposeType),1)])])]),default:d(()=>[e.expose.suggestedChannel?(i(),P(`div`,gT,[D(`div`,_T,[D(`span`,vT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.suggestedChannel.title`))+`:`,1),D(`span`,null,k(e.expose.suggestedChannel.name),1),F(h(ct),{type:o.value,size:`small`},{default:d(()=>[v(k(e.expose.suggestedChannel.confidence),1)]),_:1},8,[`type`])]),D(`div`,yT,k(h(n)(`devicesModule.categories.channels.${e.expose.suggestedChannel.category}`)),1)])):g(``,!0),e.expose.suggestedProperties.length>0?(i(),P(`div`,bT,[D(`div`,xT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.properties`))+`:`,1),D(`div`,ST,[(i(!0),P(A,null,a(e.expose.suggestedProperties,e=>(i(),P(`div`,{key:`${e.category}-${e.z2mProperty}`,class:`flex items-center gap-2`},[D(`span`,CT,k(e.name)+`:`,1),e.currentValue!==null&&e.currentValue!==void 0?(i(),T(h(ct),{key:0,size:`small`,type:`info`},{default:d(()=>[v(k(e.currentValue),1)]),_:2},1024)):(i(),P(`span`,wT,`-`))]))),128))])])):g(``,!0),e.expose.missingRequiredProperties.length>0?(i(),P(`div`,TT,[F(h(L),{type:`warning`,title:h(n)(`devicesZigbee2mqttPlugin.fields.mapping.missingRequiredProperties`),closable:!1,"show-icon":``,description:e.expose.missingRequiredProperties.map(e=>h(n)(`devicesModule.categories.channelsProperties.${e}`)).join(`, `)},null,8,[`title`,`description`])])):g(``,!0)]),_:1}))}}),DT={class:`font-semibold`},OT={class:`grid grid-cols-2 md:grid-cols-4 gap-4 text-center`},kT={class:`text-2xl font-bold text-green-600`},AT={class:`text-sm text-gray-500`},jT={class:`text-2xl font-bold text-yellow-600`},MT={class:`text-sm text-gray-500`},NT={class:`text-2xl font-bold text-red-600`},PT={class:`text-sm text-gray-500`},FT={class:`text-2xl font-bold text-gray-600`},IT={class:`text-sm text-gray-500`},LT={class:`grid grid-cols-1 gap-4 text-sm mx-4`},RT={class:`font-medium`},zT={class:`ml-2`},BT={class:`font-medium`},VT={class:`ml-2`},HT={key:0},UT={class:`font-medium`},WT={class:`ml-2`},GT={key:1},KT={class:`font-medium`},qT={class:`ml-2`},JT=f({__name:`mapping-summary`,props:{preview:{}},setup(e){let t=e,{t:n}=b(),r=j(()=>t.preview.exposes.filter(e=>e.status===`mapped`).length),a=j(()=>t.preview.exposes.filter(e=>e.status===`partial`).length),o=j(()=>t.preview.exposes.filter(e=>e.status===`unmapped`).length),s=j(()=>t.preview.exposes.filter(e=>e.status===`skipped`).length),c=j(()=>{switch(t.preview.suggestedDevice.confidence){case`high`:return`success`;case`medium`:return`warning`;case`low`:return`danger`;default:return`info`}});return(t,l)=>(i(),T(h(xt),{shadow:`never`,"header-class":`py-2! px-4!`,"body-class":`px-0!`},{header:d(()=>[D(`div`,DT,k(h(n)(`devicesZigbee2mqttPlugin.headings.mapping.summary`)),1)]),default:d(()=>[D(`div`,OT,[D(`div`,null,[D(`div`,kT,k(r.value),1),D(`div`,AT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.mapped`)),1)]),D(`div`,null,[D(`div`,jT,k(a.value),1),D(`div`,MT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.partial`)),1)]),D(`div`,null,[D(`div`,NT,k(o.value),1),D(`div`,PT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.unmapped`)),1)]),D(`div`,null,[D(`div`,FT,k(s.value),1),D(`div`,IT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.skipped`)),1)])]),F(h(fe)),D(`div`,LT,[D(`div`,null,[D(`span`,RT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.deviceName`))+`:`,1),D(`span`,zT,k(e.preview.z2mDevice.friendlyName),1)]),D(`div`,null,[D(`span`,BT,k(h(n)(`devicesZigbee2mqttPlugin.fields.mapping.suggestedCategory`))+`:`,1),D(`span`,VT,k(h(n)(`devicesModule.categories.devices.${e.preview.suggestedDevice.category}`)),1),F(h(ct),{type:c.value,size:`small`,class:`ml-2`},{default:d(()=>[v(k(e.preview.suggestedDevice.confidence),1)]),_:1},8,[`type`])]),e.preview.z2mDevice.manufacturer?(i(),P(`div`,HT,[D(`span`,UT,k(h(n)(`devicesZigbee2mqttPlugin.fields.devices.manufacturer.title`))+`:`,1),D(`span`,WT,k(e.preview.z2mDevice.manufacturer),1)])):g(``,!0),e.preview.z2mDevice.model?(i(),P(`div`,GT,[D(`span`,KT,k(h(n)(`devicesZigbee2mqttPlugin.fields.devices.model.title`))+`:`,1),D(`span`,qT,k(e.preview.z2mDevice.model),1)])):g(``,!0)])]),_:1}))}}),YT={class:`space-y-2`},XT={class:`mb-1`},ZT=f({__name:`mapping-warnings`,props:{warnings:{}},setup(e){let{t}=b(),n=e=>{switch(e){case`missing_required_channel`:case`missing_required_property`:return`error`;case`unsupported_expose`:case`device_not_available`:return`warning`;case`unknown_device_class`:return`info`;default:return`warning`}};return(r,o)=>e.warnings.length>0?(i(),T(h(en),{key:0},{default:d(()=>[F(h(pt),{title:h(t)(`devicesZigbee2mqttPlugin.headings.mapping.warnings`,{count:e.warnings.length})},{default:d(()=>[D(`div`,YT,[(i(!0),P(A,null,a(e.warnings,(e,t)=>(i(),T(h(L),{key:t,type:n(e.type),title:e.message,closable:!1,"show-icon":``},ce({_:2},[e.exposeName?{name:`title`,fn:d(()=>[v(k(e.exposeName),1)]),key:`0`}:void 0,e.exposeName?{name:`default`,fn:d(()=>[D(`div`,XT,k(e.message),1),D(`small`,null,k(e.suggestion),1)]),key:`1`}:{name:`default`,fn:d(()=>[v(k(e.suggestion),1)]),key:`2`}]),1032,[`type`,`title`]))),128))])]),_:1},8,[`title`])]),_:1})):g(``,!0)}}),QT={key:0,class:`flex justify-center items-center py-8`},$T={class:`ml-2`},eE={key:2,class:`space-y-4`},tE={class:`text-lg font-semibold mb-3`},nE={class:`space-y-2`},rE={key:3,class:`text-center py-8 text-gray-500`},iE={class:`text-sm mt-2`},aE=f({__name:`mapping-preview-step`,props:{preview:{},isPreviewLoading:{type:Boolean},previewError:{}},setup(e){let{t}=b();return(n,r)=>e.isPreviewLoading?(i(),P(`div`,QT,[F(h(l),{class:`is-loading`,size:32},{default:d(()=>[F(h(ne),{icon:`mdi:loading`})]),_:1}),D(`span`,$T,k(h(t)(`devicesZigbee2mqttPlugin.messages.mapping.previewLoading`)),1)])):e.previewError?(i(),T(h(L),{key:1,type:`error`,title:h(t)(`devicesZigbee2mqttPlugin.messages.mapping.previewError`),description:e.previewError.message,closable:!1,"show-icon":``},null,8,[`title`,`description`])):e.preview?(i(),P(`div`,eE,[F(JT,{preview:e.preview},null,8,[`preview`]),e.preview.warnings.length>0?(i(),T(ZT,{key:0,warnings:e.preview.warnings},null,8,[`warnings`])):g(``,!0),D(`div`,null,[D(`h3`,tE,k(h(t)(`devicesZigbee2mqttPlugin.headings.mapping.exposeMappings`)),1),D(`div`,nE,[(i(!0),P(A,null,a(e.preview.exposes,e=>(i(),T(ET,{key:e.exposeName,expose:e},null,8,[`expose`]))),128))])]),F(h(L),{type:e.preview.readyToAdopt?`success`:`warning`,title:e.preview.readyToAdopt?h(t)(`devicesZigbee2mqttPlugin.messages.mapping.readyToAdopt`):h(t)(`devicesZigbee2mqttPlugin.messages.mapping.notReadyToAdopt`),closable:!1,"show-icon":``},null,8,[`type`,`title`])])):(i(),P(`div`,rE,[F(h(l),{size:48,class:`mb-4`},{default:d(()=>[F(h(ne),{icon:`mdi:information-outline`})]),_:1}),D(`p`,null,k(h(t)(`devicesZigbee2mqttPlugin.messages.mapping.noPreview`)),1),D(`p`,iE,k(h(t)(`devicesZigbee2mqttPlugin.messages.mapping.selectDeviceFirst`)),1)]))}}),oE={class:`flex gap-2`},sE={class:`flex gap-2`},cE={class:`flex gap-2`},lE={class:`flex gap-2`},uE=f({name:`Zigbee2mqttDeviceAddFormMultiStep`,__name:`zigbee2mqtt-device-add-form-multi-step`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,a=t,{t:s}=b(),{loaded:c,fetchDevices:u}=Zi(),f=N(null),p=N(null),_=N(null),y=N(null),{activeStep:S,reachedSteps:C,preview:w,suggestedCategory:O,isPreviewLoading:ee,previewError:te,isAdopting:M,categoriesOptions:re,devicesOptions:ie,devicesOptionsLoading:ae,exposeOverrides:oe,model:se,formChanged:le,submitStep:ue,clearPreview:de,formResult:I}=Mw({id:n.id}),fe=j(()=>{let e=f.value?.stepOneFormEl;return e?h(e):void 0}),pe=j(()=>{let e=p.value?.stepTwoFormEl;return e?h(e):void 0}),me=j(()=>{let e=_.value?.stepThreeFormEl;return e?h(e):void 0}),he=j(()=>{let e=y.value?.stepFourFormEl;return e?h(e):void 0}),ge=N(null),_e=j({get:()=>S.value,set:e=>{let t=S.value;if(!(e&&[`one`,`two`,`three`,`four`,`five`].includes(e))){r(()=>{S.value=t});return}let n=e;if(!C.value.has(n)){r(()=>{S.value=t});return}let i=[`one`,`two`,`three`,`four`,`five`],a=i.indexOf(t),o=i.indexOf(n);if(o<a){i.slice(o+1).forEach(e=>{C.value.delete(e)}),n===`one`||n===`two`?(de(),oe.value=[]):n===`three`&&(oe.value=[]),S.value=n;return}if(o>a)if(t===`one`||t===`two`||t===`four`){ge.value={targetStep:n,currentStep:t},r(()=>{S.value=t,r(async()=>{if(!ge.value)return;let{currentStep:e}=ge.value;ge.value=null;try{e===`one`?await ue(e,fe.value):e===`two`?await ue(e,pe.value):e===`four`&&await ue(e,me.value)}catch{}})});return}else{S.value=n;return}o!==a&&(S.value=n)}}),ve=async()=>{try{S.value===`one`?await ue(S.value,fe.value):S.value===`two`?await ue(S.value,pe.value):S.value===`four`?await ue(S.value,me.value):S.value===`five`?await ue(S.value,he.value):await ue(S.value)}catch{}},ye=()=>{},be=e=>{oe.value=e},xe=()=>{let e=[`one`,`two`,`three`,`four`,`five`],t=e.indexOf(S.value);if(t>0){let n=e[t-1],r=S.value;if(!n)return;C.value.delete(r),t<e.length-1&&e.slice(t+1).forEach(e=>{C.value.delete(e)}),n===`one`||n===`two`?(de(),oe.value=[]):n===`three`&&(oe.value=[]),S.value=n}};return o(()=>{c.value||u().catch(()=>{})}),m(()=>I.value,async e=>{a(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{if(e){a(`update:remote-form-submit`,!1);try{await ve()}catch{}}}),m(()=>n.remoteFormReset,async e=>{e&&(a(`update:remote-form-reset`,!1),S.value=`one`,C.value=new Set([`one`]),de(),O.value=null,oe.value=[],se.name=``,se.description=``,se.enabled=!0,se.ieeeAddress=``,se.category=Object.values(U).find(e=>e!==U.generic)||U.sensor,await r(),fe.value?.resetFields(),pe.value?.resetFields(),_.value?.resetForm&&_.value.resetForm(),he.value?.resetFields())}),m(()=>le.value,e=>{a(`update:remote-form-changed`,e)}),(e,t)=>(i(),P(A,null,[F(h(en),{modelValue:_e.value,"onUpdate:modelValue":t[0]||=e=>_e.value=e,accordion:``,"expand-icon-position":`left`},{default:d(()=>[F(h(pt),{title:h(s)(`devicesZigbee2mqttPlugin.headings.device.deviceSelection`),name:`one`},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:devices`})]),_:1})]),default:d(()=>[F(rT,{ref_key:`deviceSelectionStepRef`,ref:f,model:h(se),"devices-options":h(ie),"devices-options-loading":h(ae),onDeviceChange:ye},null,8,[`model`,`devices-options`,`devices-options-loading`])]),_:1},8,[`title`]),F(h(pt),{title:h(s)(`devicesZigbee2mqttPlugin.headings.device.categorySelection`),name:`two`,disabled:!h(C).has(`two`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:tag`})]),_:1})]),default:d(()=>[F(Fw,{ref_key:`categorySelectionStepRef`,ref:p,model:h(se),"categories-options":h(re),"suggested-category":h(O)},null,8,[`model`,`categories-options`,`suggested-category`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesZigbee2mqttPlugin.headings.device.mappingPreview`),name:`three`,disabled:!h(C).has(`three`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:eye`})]),_:1})]),default:d(()=>[F(aE,{preview:h(w),"is-preview-loading":h(ee),"preview-error":h(te)},null,8,[`preview`,`is-preview-loading`,`preview-error`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesZigbee2mqttPlugin.headings.device.mappingCustomization`),name:`four`,disabled:!h(C).has(`four`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:tune`})]),_:1})]),default:d(()=>[F(dT,{ref_key:`mappingCustomizationStepRef`,ref:_,preview:h(w),"is-preview-loading":h(ee),"expose-overrides":h(oe),onUpdateOverrides:be},null,8,[`preview`,`is-preview-loading`,`expose-overrides`])]),_:1},8,[`title`,`disabled`]),F(h(pt),{title:h(s)(`devicesZigbee2mqttPlugin.headings.device.deviceConfiguration`),name:`five`,disabled:!h(C).has(`five`)},{icon:d(()=>[F(h(l),{size:20},{default:d(()=>[F(h(ne),{icon:`mdi:cog`})]),_:1})]),default:d(()=>[F(Kw,{ref_key:`deviceConfigurationStepRef`,ref:y,model:h(se),preview:h(w),"expose-overrides":h(oe)},null,8,[`model`,`preview`,`expose-overrides`])]),_:1},8,[`title`,`disabled`])]),_:1},8,[`modelValue`]),h(S)===`one`?(i(),T(x,{key:0,defer:``,to:`#${h(Yt)}`},[F(h(E),{loading:h(I)===h(Q).WORKING,disabled:h(I)!==h(Q).NONE,type:`primary`,onClick:ve},ce({default:d(()=>[v(` `+k(h(s)(`devicesZigbee2mqttPlugin.buttons.next`)),1)]),_:2},[h(I)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])],8,[`to`])):h(S)===`two`?(i(),T(x,{key:1,defer:``,to:`#${h(Yt)}`},[D(`div`,oE,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING,disabled:h(I)!==h(Q).NONE,type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.next`)),1)]),_:1},8,[`loading`,`disabled`])])],8,[`to`])):h(S)===`three`?(i(),T(x,{key:2,defer:``,to:`#${h(Yt)}`},[D(`div`,sE,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.next`)),1)]),_:1})])],8,[`to`])):h(S)===`four`?(i(),T(x,{key:3,defer:``,to:`#${h(Yt)}`},[D(`div`,cE,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING||h(ee),disabled:h(I)!==h(Q).NONE||h(ee),type:`primary`,onClick:ve},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.next`)),1)]),_:1},8,[`loading`,`disabled`])])],8,[`to`])):h(S)===`five`?(i(),T(x,{key:4,defer:``,to:`#${h(Yt)}`},[D(`div`,lE,[F(h(E),{onClick:xe},{default:d(()=>[v(k(h(s)(`devicesZigbee2mqttPlugin.buttons.previous`)),1)]),_:1}),F(h(E),{loading:h(I)===h(Q).WORKING||h(M),disabled:h(I)!==h(Q).NONE||!h(w)?.readyToAdopt,type:`primary`,onClick:ve},ce({default:d(()=>[v(` `+k(h(s)(`devicesZigbee2mqttPlugin.buttons.adoptDevice`)),1)]),_:2},[h(I)===h(Q).ERROR?{name:`icon`,fn:d(()=>[F(h(ne),{icon:`mdi:cross-circle`})]),key:`0`}:void 0]),1032,[`loading`,`disabled`])])],8,[`to`])):g(``,!0)],64))}}),dE=[U.generic,U.lighting,U.sensor,U.switcher,U.thermostat,U.window_covering,U.lock],fE=({device:e,messages:t})=>{let n=Ye().getStore(qr),{t:r}=b(),i=rt(),a=Ke(),o=N(Q.NONE),s,c=j(()=>Vt(dE,[e=>r(`devicesModule.categories.devices.${e}`)],[`asc`]).map(e=>({value:e,label:r(`devicesModule.categories.devices.${e}`)}))),l=y({id:e.id,type:e.type,identifier:e.identifier,category:e.category,name:e.name,description:e.description??``,enabled:e.enabled}),u=Mt(w(l)),d=N(void 0),f=N(!1),p=async()=>{let c=e.draft,p=t&&t.error?t.error:e.draft?r(`devicesZigbee2mqttPlugin.messages.devices.notCreated`,{device:e.name}):r(`devicesZigbee2mqttPlugin.messages.devices.notEdited`,{device:e.name});if(d.value.clearValidate(),!await d.value.validate())throw new ai(`Form not valid`);let m=fw.safeParse(l);if(!m.success)throw a.error(`Schema validation failed with:`,m.error),new lw(`Failed to validate edit device model.`);o.value=Q.WORKING;try{await n.edit({id:e.id,data:{...m.data,type:e.type}}),e.draft&&await n.save({id:e.id})}catch(e){throw o.value=Q.ERROR,s=window.setTimeout(h,2e3),e instanceof ui&&e.code===422?i.error(e.message):i.error(p),e}return o.value=Q.OK,s=window.setTimeout(h,2e3),c?(i.success(r(t&&t.success?t.success:`devicesZigbee2mqttPlugin.messages.devices.created`,{device:e.name})),`added`):(i.success(r(t&&t.success?t.success:`devicesZigbee2mqttPlugin.messages.devices.edited`,{device:e.name})),f.value=!1,u=Mt(w(l)),`saved`)},h=()=>{window.clearTimeout(s),o.value=Q.NONE};return m(l,()=>{f.value=!(0,Ka.isEqual)(w(l),u)}),{categoriesOptions:c,model:l,formEl:d,formChanged:f,submit:p,clear:h,formResult:o}},pE=f({name:`Zigbee2mqttDeviceEditForm`,__name:`zigbee2mqtt-device-edit-form`,props:{device:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:Q.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{categoriesOptions:s,model:c,formEl:l,formChanged:u,submit:f,formResult:p}=fE({device:n.device}),{devices:_,isLoading:v}=qw(),x=j(()=>Vt(_.value,[e=>e.friendlyName.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.friendlyName,manufacturer:e.manufacturer,model:e.model,available:e.available}))),S=y({name:[{required:!0,message:o(`devicesZigbee2mqttPlugin.fields.devices.name.validation.required`),trigger:`change`}],category:[{required:!0,message:o(`devicesZigbee2mqttPlugin.fields.devices.category.validation.required`),trigger:`change`}]});return m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:h(c).name,"onUpdate:modelValue":t[1]||=e=>h(c).name=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.name.placeholder`),name:`name`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.category.title`),prop:`category`},{default:d(()=>[F(h(X),{modelValue:h(c).category,"onUpdate:modelValue":t[2]||=e=>h(c).category=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.category.placeholder`),name:`category`,filterable:``,readonly:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(h(s),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),h(c).category?(i(),T(h(L),{key:0,type:`info`,title:h(o)(`devicesModule.fields.devices.category.description`),description:h(o)(`devicesModule.texts.devices.description.${h(c).category}`),closable:!1,"show-icon":``},null,8,[`title`,`description`])):g(``,!0),F(h(fe)),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.description.title`),prop:`description`},{default:d(()=>[F(h(W),{modelValue:h(c).description,"onUpdate:modelValue":t[3]||=e=>h(c).description=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.description.placeholder`),rows:4,type:`textarea`,name:`description`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.enabled.title`),prop:`enabled`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[4]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(fe)),F(h(V),{label:h(o)(`devicesZigbee2mqttPlugin.fields.devices.zigbee2mqttDeviceId.title`),prop:`identifier`},{default:d(()=>[F(h(X),{modelValue:h(c).identifier,"onUpdate:modelValue":t[5]||=e=>h(c).identifier=e,placeholder:h(o)(`devicesZigbee2mqttPlugin.fields.devices.zigbee2mqttDeviceId.placeholder`),loading:h(v),name:`identifier`,filterable:``,disabled:``},{default:d(()=>[(i(!0),P(A,null,a(x.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),mE={headings:{aboutPluginStatus:`Stav pluginu`,aboutMqtt:`MQTT připojení`,advancedMqttSettings:`Pokročilé nastavení MQTT`,aboutTls:`Konfigurace TLS/SSL`,aboutDiscovery:`Vyhledávání zařízení`,steps:{selectDevice:`Vybrat zařízení`,selectCategory:`Kategorie zařízení`,mappingPreview:`Náhled mapování`,customizeMapping:`Přizpůsobit mapování`,deviceConfiguration:`Konfigurace zařízení`},mapping:{summary:`Souhrn mapování`,warnings:`Varování mapování ({count})`,exposeMappings:`Mapování expozic`,customization:`Přizpůsobení mapování`},device:{deviceSelection:`Vybrat zařízení`,categorySelection:`Kategorie zařízení`,mappingPreview:`Náhled mapování`,mappingCustomization:`Přizpůsobit mapování`,deviceConfiguration:`Konfigurace zařízení`,deviceInfo:`Informace o zařízení`}},texts:{aboutPluginStatus:`Povolte nebo zakažte plugin Zigbee2MQTT. Pokud je zakázán, žádná Zigbee zařízení nebudou monitorována ani ovládána.`,aboutMqtt:`Nakonfigurujte připojení k vašemu MQTT brokeru, kde Zigbee2MQTT publikuje data zařízení.`,aboutTls:`Nakonfigurujte nastavení TLS/SSL pro zabezpečená MQTT připojení. Povolte TLS, pokud váš broker vyžaduje šifrovaná připojení.`,aboutDiscovery:`Nakonfigurujte, jak jsou zařízení vyhledávána a přidávána z bridge Zigbee2MQTT.`,steps:{selectDevice:`Vyberte Zigbee zařízení k adopci ze seznamu nalezených zařízení.`,selectCategory:`Vyberte kategorii zařízení. Navrhovaná kategorie je založena na expozicích zařízení.`,mappingPreview:`Zkontrolujte, jak budou expozice zařízení mapovány na kanály a vlastnosti Smart Panelu.`,customizeMapping:`Přizpůsobte, které expozice zahrnout, a upravte kategorie kanálů podle potřeby.`,deviceConfiguration:`Nakonfigurujte název zařízení, popis a další nastavení.`},noDiscoveredDevices:`Žádná nalezená zařízení nejsou k dispozici. Ujistěte se, že Zigbee2MQTT běží a zařízení jsou spárována.`,loadingDevices:`Načítání nalezených zařízení...`,loadingPreview:`Načítání náhledu mapování...`,mapping:{customizationDescription:`Přepněte, které expozice zahrnout, a přizpůsobte kategorie kanálů. Zakázané expozice nebudou vytvořeny.`}},fields:{config:{enabled:{title:`Povoleno`},mqtt:{host:{title:`Hostitel MQTT brokeru`,placeholder:`např. localhost nebo 192.168.1.100`,validation:{required:`Hostitel MQTT brokeru je povinný`}},port:{title:`Port`,validation:{required:`Port je povinný`,range:`Port musí být mezi 1 a 65535`}},username:{title:`Uživatelské jméno`,placeholder:`Uživatelské jméno MQTT (volitelné)`},password:{title:`Heslo`,placeholder:`Heslo MQTT (volitelné)`},baseTopic:{title:`Základní téma`,placeholder:`např. zigbee2mqtt`,validation:{required:`Základní téma je povinné`}},clientId:{title:`ID klienta`,placeholder:`Automaticky generováno pokud prázdné`},cleanSession:{title:`Čistá relace`},keepalive:{title:`Keepalive (s)`,validation:{number:`Musí být číslo >= 10`}},connectTimeout:{title:`Časový limit (ms)`,validation:{number:`Musí být číslo >= 1000`}},reconnectInterval:{title:`Opětovné připojení (ms)`,validation:{number:`Musí být číslo >= 1000`}}},tls:{enabled:{title:`Povolit TLS`},rejectUnauthorized:{title:`Odmítnout neautorizované certifikáty`},ca:{title:`CA certifikát`,placeholder:`Vložte obsah CA certifikátu nebo cestu`},cert:{title:`Klientský certifikát`,placeholder:`Vložte obsah klientského certifikátu nebo cestu`},key:{title:`Soukromý klíč klienta`,placeholder:`Vložte obsah soukromého klíče klienta nebo cestu`}},discovery:{autoAdd:{title:`Automaticky přidávat nalezená zařízení`},syncOnStartup:{title:`Synchronizovat zařízení při spuštění`}}},devices:{id:{title:`ID zařízení`,placeholder:`ID zařízení`},name:{title:`Název`,placeholder:`Název zařízení`,validation:{required:`Vyplňte prosím název zařízení`}},category:{title:`Kategorie`,placeholder:`Kategorie zařízení`,validation:{required:`Vyberte prosím kategorii zařízení`}},description:{title:`Popis`,placeholder:`Popis zařízení`},enabled:{title:`Povoleno`},ieeeAddress:{title:`IEEE adresa`,placeholder:`Vyberte zařízení`,validation:{required:`Vyberte prosím zařízení`}},friendlyName:{title:`Přátelský název`},manufacturer:{title:`Výrobce`},model:{title:`Model`},zigbee2mqttDeviceId:{title:`Připojené zařízení Zigbee2MQTT`,placeholder:`Vyberte připojené zařízení`}},mapping:{mapped:`Mapováno`,partial:`Částečně`,unmapped:`Nemapováno`,skipped:`Přeskočeno`,excluded:`Vyloučeno`,totalExposes:`Celkem expozic`,deviceName:`Název zařízení`,suggestedCategory:`Navrhovaná kategorie`,suggestedChannel:{title:`Navrhovaný kanál`,validation:{required:`Vyberte prosím kategorii kanálu`}},properties:`Vlastnosti`,missingRequiredProperties:`Chybějící povinné vlastnosti`,exposeEnabled:`Povoleno`,channelCategory:`Kategorie kanálu`,noChannelSuggested:`Žádný kanál navrhnut`}},messages:{config:{edited:`Konfigurace pluginu Zigbee2MQTT byla aktualizována`,notEdited:`Nepodařilo se aktualizovat konfiguraci pluginu Zigbee2MQTT`},devices:{created:`Zařízení Zigbee2MQTT '{device}' bylo vytvořeno`,notCreated:`Nepodařilo se vytvořit zařízení Zigbee2MQTT '{device}'`,edited:`Zařízení Zigbee2MQTT '{device}' bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat zařízení Zigbee2MQTT '{device}'`,adopted:`Zařízení '{device}' bylo úspěšně adoptováno`,notAdopted:`Nepodařilo se adoptovat zařízení '{device}'`,noDiscoveredDevices:`Žádná nalezená zařízení nejsou k dispozici. Ujistěte se, že Zigbee2MQTT běží a zařízení jsou spárována.`,deviceOffline:`Toto zařízení je momentálně offline`,alreadyAdopted:`Toto zařízení je již adoptováno`,alreadyAdoptedDescription:`Pokračování znovu adoptuje zařízení s novou konfigurací. Stávající zařízení bude aktualizováno.`},discoveredDevices:{loadFailed:`Nepodařilo se načíst nalezená zařízení`,mappingPreviewFailed:`Nepodařilo se načíst náhled mapování`},mapping:{previewError:`Nepodařilo se načíst náhled mapování`,previewLoading:`Načítání náhledu mapování...`,missingChannelCategory:`Vyberte prosím kategorii kanálu pro: {exposes}`,notReadyToAdopt:`Zařízení není připraveno k adopci. Zkontrolujte a opravte prosím všechna varování.`,readyToAdopt:`Zařízení je připraveno k adopci`,noPreview:`Žádný náhled mapování není k dispozici`,selectDeviceFirst:`Nejprve prosím vyberte zařízení pro zobrazení náhledu mapování`,adoptionSuccess:`Zařízení '{device}' bylo úspěšně adoptováno`},categorySelection:{description:`Vyberte kategorii zařízení. Navrhovaná kategorie je založena na schopnostech zařízení.`}},labels:{suggested:`Navrhováno`},buttons:{next:`Další`,previous:`Předchozí`,adoptDevice:`Adoptovat zařízení`,refresh:`Obnovit`,use:`Použít`}},hE={headings:{aboutPluginStatus:`Plugin-Status`,aboutMqtt:`MQTT-Verbindung`,advancedMqttSettings:`Erweiterte MQTT-Einstellungen`,aboutTls:`TLS/SSL-Konfiguration`,aboutDiscovery:`Geräteerkennung`,steps:{selectDevice:`Gerät auswählen`,selectCategory:`Gerätekategorie`,mappingPreview:`Zuordnungsvorschau`,customizeMapping:`Zuordnung anpassen`,deviceConfiguration:`Gerätekonfiguration`},mapping:{summary:`Zuordnungszusammenfassung`,warnings:`Zuordnungswarnungen ({count})`,exposeMappings:`Expose-Zuordnungen`,customization:`Zuordnungsanpassung`},device:{deviceSelection:`Gerät auswählen`,categorySelection:`Gerätekategorie`,mappingPreview:`Zuordnungsvorschau`,mappingCustomization:`Zuordnung anpassen`,deviceConfiguration:`Gerätekonfiguration`,deviceInfo:`Geräteinformationen`}},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie das Zigbee2MQTT-Plugin. Wenn deaktiviert, werden keine Zigbee-Geräte überwacht oder gesteuert.`,aboutMqtt:`Konfigurieren Sie die Verbindung zu Ihrem MQTT-Broker, über den Zigbee2MQTT Gerätedaten veröffentlicht.`,aboutTls:`Konfigurieren Sie TLS/SSL-Einstellungen für sichere MQTT-Verbindungen. Aktivieren Sie TLS, wenn Ihr Broker verschlüsselte Verbindungen erfordert.`,aboutDiscovery:`Konfigurieren Sie, wie Geräte von der Zigbee2MQTT-Bridge erkannt und hinzugefügt werden.`,steps:{selectDevice:`Wählen Sie ein Zigbee-Gerät zur Übernahme aus der Liste der erkannten Geräte.`,selectCategory:`Wählen Sie die Gerätekategorie. Die vorgeschlagene Kategorie basiert auf den Exposes des Geräts.`,mappingPreview:`Überprüfen Sie, wie die Exposes des Geräts auf Smart Panel-Kanäle und -Eigenschaften zugeordnet werden.`,customizeMapping:`Passen Sie an, welche Exposes einbezogen werden, und ändern Sie bei Bedarf die Kanalkategorien.`,deviceConfiguration:`Konfigurieren Sie Gerätename, Beschreibung und andere Einstellungen.`},noDiscoveredDevices:`Keine erkannten Geräte verfügbar. Stellen Sie sicher, dass Zigbee2MQTT läuft und Geräte gekoppelt sind.`,loadingDevices:`Erkannte Geräte werden geladen...`,loadingPreview:`Zuordnungsvorschau wird geladen...`,mapping:{customizationDescription:`Schalten Sie ein, welche Exposes einbezogen werden, und passen Sie Kanalkategorien an. Deaktivierte Exposes werden nicht erstellt.`}},fields:{config:{enabled:{title:`Aktiviert`},mqtt:{host:{title:`MQTT-Broker-Host`,placeholder:`z.B. localhost oder 192.168.1.100`,validation:{required:`MQTT-Broker-Host ist erforderlich`}},port:{title:`Port`,validation:{required:`Port ist erforderlich`,range:`Port muss zwischen 1 und 65535 liegen`}},username:{title:`Benutzername`,placeholder:`MQTT-Benutzername (optional)`},password:{title:`Passwort`,placeholder:`MQTT-Passwort (optional)`},baseTopic:{title:`Basis-Topic`,placeholder:`z.B. zigbee2mqtt`,validation:{required:`Basis-Topic ist erforderlich`}},clientId:{title:`Client-ID`,placeholder:`Automatisch generiert wenn leer`},cleanSession:{title:`Saubere Sitzung`},keepalive:{title:`Keepalive (s)`,validation:{number:`Muss eine Zahl >= 10 sein`}},connectTimeout:{title:`Zeitlimit (ms)`,validation:{number:`Muss eine Zahl >= 1000 sein`}},reconnectInterval:{title:`Wiederverbindung (ms)`,validation:{number:`Muss eine Zahl >= 1000 sein`}}},tls:{enabled:{title:`TLS aktivieren`},rejectUnauthorized:{title:`Nicht autorisierte Zertifikate ablehnen`},ca:{title:`CA-Zertifikat`,placeholder:`CA-Zertifikatinhalt oder -pfad einfügen`},cert:{title:`Client-Zertifikat`,placeholder:`Client-Zertifikatinhalt oder -pfad einfügen`},key:{title:`Privater Client-Schlüssel`,placeholder:`Privaten Client-Schlüsselinhalt oder -pfad einfügen`}},discovery:{autoAdd:{title:`Erkannte Geräte automatisch hinzufügen`},syncOnStartup:{title:`Geräte beim Start synchronisieren`}}},devices:{id:{title:`Geräte-ID`,placeholder:`Geräte-ID`},name:{title:`Name`,placeholder:`Gerätename`,validation:{required:`Bitte geben Sie den Gerätenamen ein`}},category:{title:`Kategorie`,placeholder:`Gerätekategorie`,validation:{required:`Bitte wählen Sie eine Gerätekategorie`}},description:{title:`Beschreibung`,placeholder:`Gerätebeschreibung`},enabled:{title:`Aktiviert`},ieeeAddress:{title:`IEEE-Adresse`,placeholder:`Gerät auswählen`,validation:{required:`Bitte wählen Sie ein Gerät`}},friendlyName:{title:`Anzeigename`},manufacturer:{title:`Hersteller`},model:{title:`Modell`},zigbee2mqttDeviceId:{title:`Verbundenes Zigbee2MQTT-Gerät`,placeholder:`Verbundenes Gerät auswählen`}},mapping:{mapped:`Zugeordnet`,partial:`Teilweise`,unmapped:`Nicht zugeordnet`,skipped:`Übersprungen`,excluded:`Ausgeschlossen`,totalExposes:`Exposes gesamt`,deviceName:`Gerätename`,suggestedCategory:`Vorgeschlagene Kategorie`,suggestedChannel:{title:`Vorgeschlagener Kanal`,validation:{required:`Bitte wählen Sie eine Kanalkategorie`}},properties:`Eigenschaften`,missingRequiredProperties:`Fehlende erforderliche Eigenschaften`,exposeEnabled:`Aktiviert`,channelCategory:`Kanalkategorie`,noChannelSuggested:`Kein Kanal vorgeschlagen`}},messages:{config:{edited:`Zigbee2MQTT-Plugin-Konfiguration wurde aktualisiert`,notEdited:`Aktualisierung der Zigbee2MQTT-Plugin-Konfiguration fehlgeschlagen`},devices:{created:`Zigbee2MQTT-Gerät '{device}' wurde erstellt`,notCreated:`Erstellung des Zigbee2MQTT-Geräts '{device}' fehlgeschlagen`,edited:`Zigbee2MQTT-Gerät '{device}' wurde aktualisiert`,notEdited:`Aktualisierung des Zigbee2MQTT-Geräts '{device}' fehlgeschlagen`,adopted:`Gerät '{device}' wurde erfolgreich übernommen`,notAdopted:`Übernahme des Geräts '{device}' fehlgeschlagen`,noDiscoveredDevices:`Keine erkannten Geräte verfügbar. Stellen Sie sicher, dass Zigbee2MQTT läuft und Geräte gekoppelt sind.`,deviceOffline:`Dieses Gerät ist derzeit offline`,alreadyAdopted:`Dieses Gerät ist bereits übernommen`,alreadyAdoptedDescription:`Fortfahren wird das Gerät mit der neuen Konfiguration erneut übernehmen. Das bestehende Gerät wird aktualisiert.`},discoveredDevices:{loadFailed:`Erkannte Geräte konnten nicht geladen werden`,mappingPreviewFailed:`Zuordnungsvorschau konnte nicht geladen werden`},mapping:{previewError:`Zuordnungsvorschau konnte nicht geladen werden`,previewLoading:`Zuordnungsvorschau wird geladen...`,missingChannelCategory:`Bitte wählen Sie eine Kanalkategorie für: {exposes}`,notReadyToAdopt:`Gerät ist nicht bereit zur Übernahme. Bitte überprüfen und beheben Sie alle Warnungen.`,readyToAdopt:`Gerät ist bereit zur Übernahme`,noPreview:`Keine Zuordnungsvorschau verfügbar`,selectDeviceFirst:`Bitte wählen Sie zuerst ein Gerät aus, um die Zuordnungsvorschau zu sehen`,adoptionSuccess:`Gerät '{device}' wurde erfolgreich übernommen`},categorySelection:{description:`Wählen Sie die Gerätekategorie. Die vorgeschlagene Kategorie basiert auf den Fähigkeiten des Geräts.`}},labels:{suggested:`Vorgeschlagen`},buttons:{next:`Weiter`,previous:`Zurück`,adoptDevice:`Gerät übernehmen`,refresh:`Aktualisieren`,use:`Verwenden`}},gE={headings:{aboutPluginStatus:`Plugin status`,aboutMqtt:`MQTT connection`,advancedMqttSettings:`Advanced MQTT settings`,aboutTls:`TLS/SSL configuration`,aboutDiscovery:`Device discovery`,steps:{selectDevice:`Select device`,selectCategory:`Device category`,mappingPreview:`Mapping preview`,customizeMapping:`Customize mapping`,deviceConfiguration:`Device configuration`},mapping:{summary:`Mapping summary`,warnings:`Mapping warnings ({count})`,exposeMappings:`Expose mappings`,customization:`Mapping customization`},device:{deviceSelection:`Select device`,categorySelection:`Device category`,mappingPreview:`Mapping preview`,mappingCustomization:`Customize mapping`,deviceConfiguration:`Device configuration`,deviceInfo:`Device information`}},texts:{aboutPluginStatus:`Enable or disable the Zigbee2MQTT plugin. When disabled, no Zigbee devices will be monitored or controlled.`,aboutMqtt:`Configure the connection to your MQTT broker where Zigbee2MQTT publishes device data.`,aboutTls:`Configure TLS/SSL settings for secure MQTT connections. Enable TLS if your broker requires encrypted connections.`,aboutDiscovery:`Configure how devices are discovered and added from the Zigbee2MQTT bridge.`,steps:{selectDevice:`Select a Zigbee device to adopt from the discovered devices list.`,selectCategory:`Choose the device category. The suggested category is based on the device's exposes.`,mappingPreview:`Review how the device's exposes will be mapped to Smart Panel channels and properties.`,customizeMapping:`Customize which exposes to include and adjust channel categories if needed.`,deviceConfiguration:`Configure device name, description, and other settings.`},noDiscoveredDevices:`No discovered devices available. Make sure Zigbee2MQTT is running and devices are paired.`,loadingDevices:`Loading discovered devices...`,loadingPreview:`Loading mapping preview...`,mapping:{customizationDescription:`Toggle which exposes to include and customize channel categories. Disabled exposes will not be created.`}},fields:{config:{enabled:{title:`Enabled`},mqtt:{host:{title:`MQTT broker host`,placeholder:`e.g., localhost or 192.168.1.100`,validation:{required:`MQTT broker host is required`}},port:{title:`Port`,validation:{required:`Port is required`,range:`Port must be between 1 and 65535`}},username:{title:`Username`,placeholder:`MQTT username (optional)`},password:{title:`Password`,placeholder:`MQTT password (optional)`},baseTopic:{title:`Base topic`,placeholder:`e.g., zigbee2mqtt`,validation:{required:`Base topic is required`}},clientId:{title:`Client ID`,placeholder:`Auto-generated if empty`},cleanSession:{title:`Clean session`},keepalive:{title:`Keepalive (s)`,validation:{number:`Must be a number >= 10`}},connectTimeout:{title:`Timeout (ms)`,validation:{number:`Must be a number >= 1000`}},reconnectInterval:{title:`Reconnect (ms)`,validation:{number:`Must be a number >= 1000`}}},tls:{enabled:{title:`Enable TLS`},rejectUnauthorized:{title:`Reject unauthorized certificates`},ca:{title:`CA certificate`,placeholder:`Paste CA certificate content or path`},cert:{title:`Client certificate`,placeholder:`Paste client certificate content or path`},key:{title:`Client private key`,placeholder:`Paste client private key content or path`}},discovery:{autoAdd:{title:`Auto-add discovered devices`},syncOnStartup:{title:`Sync devices on startup`}}},devices:{id:{title:`Device ID`,placeholder:`Device ID`},name:{title:`Name`,placeholder:`Device name`,validation:{required:`Please fill in device name`}},category:{title:`Category`,placeholder:`Device category`,validation:{required:`Please select device category`}},description:{title:`Description`,placeholder:`Device description`},enabled:{title:`Enabled`},ieeeAddress:{title:`IEEE address`,placeholder:`Select a device`,validation:{required:`Please select a device`}},friendlyName:{title:`Friendly name`},manufacturer:{title:`Manufacturer`},model:{title:`Model`},zigbee2mqttDeviceId:{title:`Connected Zigbee2MQTT device`,placeholder:`Select connected device`}},mapping:{mapped:`Mapped`,partial:`Partial`,unmapped:`Unmapped`,skipped:`Skipped`,excluded:`Excluded`,totalExposes:`Total exposes`,deviceName:`Device name`,suggestedCategory:`Suggested category`,suggestedChannel:{title:`Suggested channel`,validation:{required:`Please select a channel category`}},properties:`Properties`,missingRequiredProperties:`Missing required properties`,exposeEnabled:`Enabled`,channelCategory:`Channel category`,noChannelSuggested:`No channel suggested`}},messages:{config:{edited:`Zigbee2MQTT plugin configuration has been updated`,notEdited:`Failed to update Zigbee2MQTT plugin configuration`},devices:{created:`Zigbee2MQTT device '{device}' has been created`,notCreated:`Failed to create Zigbee2MQTT device '{device}'`,edited:`Zigbee2MQTT device '{device}' has been updated`,notEdited:`Failed to update Zigbee2MQTT device '{device}'`,adopted:`Device '{device}' has been successfully adopted`,notAdopted:`Failed to adopt device '{device}'`,noDiscoveredDevices:`No discovered devices available. Make sure Zigbee2MQTT is running and devices are paired.`,deviceOffline:`This device is currently offline`,alreadyAdopted:`This device is already adopted`,alreadyAdoptedDescription:`Continuing will re-adopt the device with the new configuration. The existing device will be updated.`},discoveredDevices:{loadFailed:`Failed to load discovered devices`,mappingPreviewFailed:`Failed to load mapping preview`},mapping:{previewError:`Failed to load mapping preview`,previewLoading:`Loading mapping preview...`,missingChannelCategory:`Please select a channel category for: {exposes}`,notReadyToAdopt:`Device is not ready to be adopted. Please review and fix any warnings.`,readyToAdopt:`Device is ready to be adopted`,noPreview:`No mapping preview available`,selectDeviceFirst:`Please select a device first to see the mapping preview`,adoptionSuccess:`Device '{device}' has been successfully adopted`},categorySelection:{description:`Choose the device category. The suggested category is based on the device's capabilities.`}},labels:{suggested:`Suggested`},buttons:{next:`Next`,previous:`Previous`,adoptDevice:`Adopt device`,refresh:`Refresh`,use:`Use`}},_E={headings:{aboutPluginStatus:`Estado del plugin`,aboutMqtt:`Conexión MQTT`,advancedMqttSettings:`Configuración avanzada de MQTT`,aboutTls:`Configuración TLS/SSL`,aboutDiscovery:`Descubrimiento de dispositivos`,steps:{selectDevice:`Seleccionar dispositivo`,selectCategory:`Categoría del dispositivo`,mappingPreview:`Vista previa del mapeo`,customizeMapping:`Personalizar mapeo`,deviceConfiguration:`Configuración del dispositivo`},mapping:{summary:`Resumen del mapeo`,warnings:`Advertencias del mapeo ({count})`,exposeMappings:`Mapeo de exposes`,customization:`Personalización del mapeo`},device:{deviceSelection:`Seleccionar dispositivo`,categorySelection:`Categoría del dispositivo`,mappingPreview:`Vista previa del mapeo`,mappingCustomization:`Personalizar mapeo`,deviceConfiguration:`Configuración del dispositivo`,deviceInfo:`Información del dispositivo`}},texts:{aboutPluginStatus:`Habilitar o deshabilitar el plugin Zigbee2MQTT. Cuando está deshabilitado, no se monitorizarán ni controlarán dispositivos Zigbee.`,aboutMqtt:`Configure la conexión al broker MQTT donde Zigbee2MQTT publica los datos de los dispositivos.`,aboutTls:`Configure los ajustes TLS/SSL para conexiones MQTT seguras. Habilite TLS si su broker requiere conexiones cifradas.`,aboutDiscovery:`Configure cómo se descubren y agregan los dispositivos desde el puente Zigbee2MQTT.`,steps:{selectDevice:`Seleccione un dispositivo Zigbee para adoptar de la lista de dispositivos descubiertos.`,selectCategory:`Elija la categoría del dispositivo. La categoría sugerida se basa en los exposes del dispositivo.`,mappingPreview:`Revise cómo los exposes del dispositivo se mapearán a canales y propiedades del Smart Panel.`,customizeMapping:`Personalice qué exposes incluir y ajuste las categorías de canal si es necesario.`,deviceConfiguration:`Configure el nombre del dispositivo, la descripción y otros ajustes.`},noDiscoveredDevices:`No hay dispositivos descubiertos disponibles. Asegúrese de que Zigbee2MQTT esté en ejecución y los dispositivos estén emparejados.`,loadingDevices:`Cargando dispositivos descubiertos...`,loadingPreview:`Cargando vista previa del mapeo...`,mapping:{customizationDescription:`Active o desactive los exposes a incluir y personalice las categorías de canal. Los exposes deshabilitados no serán creados.`}},fields:{config:{enabled:{title:`Habilitado`},mqtt:{host:{title:`Host del broker MQTT`,placeholder:`p. ej., localhost o 192.168.1.100`,validation:{required:`El host del broker MQTT es obligatorio`}},port:{title:`Puerto`,validation:{required:`El puerto es obligatorio`,range:`El puerto debe estar entre 1 y 65535`}},username:{title:`Nombre de usuario`,placeholder:`Nombre de usuario MQTT (opcional)`},password:{title:`Contraseña`,placeholder:`Contraseña MQTT (opcional)`},baseTopic:{title:`Tema base`,placeholder:`p. ej., zigbee2mqtt`,validation:{required:`El tema base es obligatorio`}},clientId:{title:`ID de cliente`,placeholder:`Generado automáticamente si se deja vacío`},cleanSession:{title:`Sesión limpia`},keepalive:{title:`Keepalive (s)`,validation:{number:`Debe ser un número >= 10`}},connectTimeout:{title:`Tiempo de espera (ms)`,validation:{number:`Debe ser un número >= 1000`}},reconnectInterval:{title:`Reconexión (ms)`,validation:{number:`Debe ser un número >= 1000`}}},tls:{enabled:{title:`Habilitar TLS`},rejectUnauthorized:{title:`Rechazar certificados no autorizados`},ca:{title:`Certificado CA`,placeholder:`Pegue el contenido o la ruta del certificado CA`},cert:{title:`Certificado del cliente`,placeholder:`Pegue el contenido o la ruta del certificado del cliente`},key:{title:`Clave privada del cliente`,placeholder:`Pegue el contenido o la ruta de la clave privada del cliente`}},discovery:{autoAdd:{title:`Agregar automáticamente dispositivos descubiertos`},syncOnStartup:{title:`Sincronizar dispositivos al iniciar`}}},devices:{id:{title:`ID del dispositivo`,placeholder:`ID del dispositivo`},name:{title:`Nombre`,placeholder:`Nombre del dispositivo`,validation:{required:`Por favor, introduzca el nombre del dispositivo`}},category:{title:`Categoría`,placeholder:`Categoría del dispositivo`,validation:{required:`Por favor, seleccione la categoría del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`},ieeeAddress:{title:`Dirección IEEE`,placeholder:`Seleccione un dispositivo`,validation:{required:`Por favor, seleccione un dispositivo`}},friendlyName:{title:`Nombre descriptivo`},manufacturer:{title:`Fabricante`},model:{title:`Modelo`},zigbee2mqttDeviceId:{title:`Dispositivo Zigbee2MQTT conectado`,placeholder:`Seleccione el dispositivo conectado`}},mapping:{mapped:`Mapeado`,partial:`Parcial`,unmapped:`Sin mapear`,skipped:`Omitido`,excluded:`Excluido`,totalExposes:`Total de exposes`,deviceName:`Nombre del dispositivo`,suggestedCategory:`Categoría sugerida`,suggestedChannel:{title:`Canal sugerido`,validation:{required:`Por favor, seleccione una categoría de canal`}},properties:`Propiedades`,missingRequiredProperties:`Propiedades requeridas faltantes`,exposeEnabled:`Habilitado`,channelCategory:`Categoría del canal`,noChannelSuggested:`No se sugirió ningún canal`}},messages:{config:{edited:`La configuración del plugin Zigbee2MQTT ha sido actualizada`,notEdited:`Error al actualizar la configuración del plugin Zigbee2MQTT`},devices:{created:`El dispositivo Zigbee2MQTT '{device}' ha sido creado`,notCreated:`Error al crear el dispositivo Zigbee2MQTT '{device}'`,edited:`El dispositivo Zigbee2MQTT '{device}' ha sido actualizado`,notEdited:`Error al actualizar el dispositivo Zigbee2MQTT '{device}'`,adopted:`El dispositivo '{device}' ha sido adoptado correctamente`,notAdopted:`Error al adoptar el dispositivo '{device}'`,noDiscoveredDevices:`No hay dispositivos descubiertos disponibles. Asegúrese de que Zigbee2MQTT esté en ejecución y los dispositivos estén emparejados.`,deviceOffline:`Este dispositivo está actualmente desconectado`,alreadyAdopted:`Este dispositivo ya ha sido adoptado`,alreadyAdoptedDescription:`Al continuar se volverá a adoptar el dispositivo con la nueva configuración. El dispositivo existente será actualizado.`},discoveredDevices:{loadFailed:`Error al cargar los dispositivos descubiertos`,mappingPreviewFailed:`Error al cargar la vista previa del mapeo`},mapping:{previewError:`Error al cargar la vista previa del mapeo`,previewLoading:`Cargando vista previa del mapeo...`,missingChannelCategory:`Por favor, seleccione una categoría de canal para: {exposes}`,notReadyToAdopt:`El dispositivo no está listo para ser adoptado. Por favor, revise y corrija las advertencias.`,readyToAdopt:`El dispositivo está listo para ser adoptado`,noPreview:`No hay vista previa de mapeo disponible`,selectDeviceFirst:`Por favor, seleccione un dispositivo primero para ver la vista previa del mapeo`,adoptionSuccess:`El dispositivo '{device}' ha sido adoptado correctamente`},categorySelection:{description:`Elija la categoría del dispositivo. La categoría sugerida se basa en las capacidades del dispositivo.`}},labels:{suggested:`Sugerido`},buttons:{next:`Siguiente`,previous:`Anterior`,adoptDevice:`Adoptar dispositivo`,refresh:`Actualizar`,use:`Usar`}},vE={headings:{aboutPluginStatus:`Status wtyczki`,aboutMqtt:`Połączenie MQTT`,advancedMqttSettings:`Zaawansowane ustawienia MQTT`,aboutTls:`Konfiguracja TLS/SSL`,aboutDiscovery:`Wykrywanie urządzeń`,steps:{selectDevice:`Wybierz urządzenie`,selectCategory:`Kategoria urządzenia`,mappingPreview:`Podgląd mapowania`,customizeMapping:`Dostosuj mapowanie`,deviceConfiguration:`Konfiguracja urządzenia`},mapping:{summary:`Podsumowanie mapowania`,warnings:`Ostrzeżenia mapowania ({count})`,exposeMappings:`Mapowania expose`,customization:`Dostosowanie mapowania`},device:{deviceSelection:`Wybierz urządzenie`,categorySelection:`Kategoria urządzenia`,mappingPreview:`Podgląd mapowania`,mappingCustomization:`Dostosuj mapowanie`,deviceConfiguration:`Konfiguracja urządzenia`,deviceInfo:`Informacje o urządzeniu`}},texts:{aboutPluginStatus:`Włącz lub wyłącz wtyczkę Zigbee2MQTT. Po wyłączeniu żadne urządzenia Zigbee nie będą monitorowane ani sterowane.`,aboutMqtt:`Skonfiguruj połączenie z brokerem MQTT, na którym Zigbee2MQTT publikuje dane urządzeń.`,aboutTls:`Skonfiguruj ustawienia TLS/SSL dla bezpiecznych połączeń MQTT. Włącz TLS, jeśli Twój broker wymaga szyfrowanych połączeń.`,aboutDiscovery:`Skonfiguruj sposób wykrywania i dodawania urządzeń z mostu Zigbee2MQTT.`,steps:{selectDevice:`Wybierz urządzenie Zigbee do adoptowania z listy wykrytych urządzeń.`,selectCategory:`Wybierz kategorię urządzenia. Sugerowana kategoria jest oparta na expose urządzenia.`,mappingPreview:`Sprawdź, jak expose urządzenia zostaną mapowane na kanały i właściwości Smart Panel.`,customizeMapping:`Dostosuj, które expose uwzględnić i dostosuj kategorie kanałów w razie potrzeby.`,deviceConfiguration:`Skonfiguruj nazwę urządzenia, opis i inne ustawienia.`},noDiscoveredDevices:`Brak dostępnych wykrytych urządzeń. Upewnij się, że Zigbee2MQTT jest uruchomiony i urządzenia są sparowane.`,loadingDevices:`Ładowanie wykrytych urządzeń...`,loadingPreview:`Ładowanie podglądu mapowania...`,mapping:{customizationDescription:`Przełączaj, które expose uwzględnić i dostosuj kategorie kanałów. Wyłączone expose nie zostaną utworzone.`}},fields:{config:{enabled:{title:`Włączony`},mqtt:{host:{title:`Host brokera MQTT`,placeholder:`np. localhost lub 192.168.1.100`,validation:{required:`Host brokera MQTT jest wymagany`}},port:{title:`Port`,validation:{required:`Port jest wymagany`,range:`Port musi być między 1 a 65535`}},username:{title:`Nazwa użytkownika`,placeholder:`Nazwa użytkownika MQTT (opcjonalnie)`},password:{title:`Hasło`,placeholder:`Hasło MQTT (opcjonalnie)`},baseTopic:{title:`Bazowy temat`,placeholder:`np. zigbee2mqtt`,validation:{required:`Bazowy temat jest wymagany`}},clientId:{title:`Client ID`,placeholder:`Generowany automatycznie, jeśli puste`},cleanSession:{title:`Czysta sesja`},keepalive:{title:`Keepalive (s)`,validation:{number:`Musi być liczbą >= 10`}},connectTimeout:{title:`Limit czasu (ms)`,validation:{number:`Musi być liczbą >= 1000`}},reconnectInterval:{title:`Ponowne połączenie (ms)`,validation:{number:`Musi być liczbą >= 1000`}}},tls:{enabled:{title:`Włącz TLS`},rejectUnauthorized:{title:`Odrzucaj nieautoryzowane certyfikaty`},ca:{title:`Certyfikat CA`,placeholder:`Wklej zawartość certyfikatu CA lub ścieżkę`},cert:{title:`Certyfikat klienta`,placeholder:`Wklej zawartość certyfikatu klienta lub ścieżkę`},key:{title:`Klucz prywatny klienta`,placeholder:`Wklej zawartość klucza prywatnego klienta lub ścieżkę`}},discovery:{autoAdd:{title:`Automatyczne dodawanie wykrytych urządzeń`},syncOnStartup:{title:`Synchronizuj urządzenia przy starcie`}}},devices:{id:{title:`ID urządzenia`,placeholder:`ID urządzenia`},name:{title:`Nazwa`,placeholder:`Nazwa urządzenia`,validation:{required:`Wprowadź nazwę urządzenia`}},category:{title:`Kategoria`,placeholder:`Kategoria urządzenia`,validation:{required:`Wybierz kategorię urządzenia`}},description:{title:`Opis`,placeholder:`Opis urządzenia`},enabled:{title:`Włączone`},ieeeAddress:{title:`Adres IEEE`,placeholder:`Wybierz urządzenie`,validation:{required:`Wybierz urządzenie`}},friendlyName:{title:`Przyjazna nazwa`},manufacturer:{title:`Producent`},model:{title:`Model`},zigbee2mqttDeviceId:{title:`Podłączone urządzenie Zigbee2MQTT`,placeholder:`Wybierz podłączone urządzenie`}},mapping:{mapped:`Zmapowane`,partial:`Częściowe`,unmapped:`Niezmapowane`,skipped:`Pominięte`,excluded:`Wykluczone`,totalExposes:`Łączna liczba expose`,deviceName:`Nazwa urządzenia`,suggestedCategory:`Sugerowana kategoria`,suggestedChannel:{title:`Sugerowany kanał`,validation:{required:`Wybierz kategorię kanału`}},properties:`Właściwości`,missingRequiredProperties:`Brakujące wymagane właściwości`,exposeEnabled:`Włączone`,channelCategory:`Kategoria kanału`,noChannelSuggested:`Brak sugerowanego kanału`}},messages:{config:{edited:`Konfiguracja wtyczki Zigbee2MQTT została zaktualizowana`,notEdited:`Nie udało się zaktualizować konfiguracji wtyczki Zigbee2MQTT`},devices:{created:`Urządzenie Zigbee2MQTT '{device}' zostało utworzone`,notCreated:`Nie udało się utworzyć urządzenia Zigbee2MQTT '{device}'`,edited:`Urządzenie Zigbee2MQTT '{device}' zostało zaktualizowane`,notEdited:`Nie udało się zaktualizować urządzenia Zigbee2MQTT '{device}'`,adopted:`Urządzenie '{device}' zostało pomyślnie adoptowane`,notAdopted:`Nie udało się adoptować urządzenia '{device}'`,noDiscoveredDevices:`Brak dostępnych wykrytych urządzeń. Upewnij się, że Zigbee2MQTT jest uruchomiony i urządzenia są sparowane.`,deviceOffline:`To urządzenie jest obecnie offline`,alreadyAdopted:`To urządzenie jest już adoptowane`,alreadyAdoptedDescription:`Kontynuowanie spowoduje ponowne adoptowanie urządzenia z nową konfiguracją. Istniejące urządzenie zostanie zaktualizowane.`},discoveredDevices:{loadFailed:`Nie udało się załadować wykrytych urządzeń`,mappingPreviewFailed:`Nie udało się załadować podglądu mapowania`},mapping:{previewError:`Nie udało się załadować podglądu mapowania`,previewLoading:`Ładowanie podglądu mapowania...`,missingChannelCategory:`Wybierz kategorię kanału dla: {exposes}`,notReadyToAdopt:`Urządzenie nie jest gotowe do adoptowania. Sprawdź i napraw ewentualne ostrzeżenia.`,readyToAdopt:`Urządzenie jest gotowe do adoptowania`,noPreview:`Brak dostępnego podglądu mapowania`,selectDeviceFirst:`Najpierw wybierz urządzenie, aby zobaczyć podgląd mapowania`,adoptionSuccess:`Urządzenie '{device}' zostało pomyślnie adoptowane`},categorySelection:{description:`Wybierz kategorię urządzenia. Sugerowana kategoria jest oparta na możliwościach urządzenia.`}},labels:{suggested:`Sugerowane`},buttons:{next:`Dalej`,previous:`Wstecz`,adoptDevice:`Adoptuj urządzenie`,refresh:`Odśwież`,use:`Użyj`}},yE={headings:{aboutPluginStatus:`Stav pluginu`,aboutMqtt:`MQTT pripojenie`,advancedMqttSettings:`Pokročilé nastavenia MQTT`,aboutTls:`Konfigurácia TLS/SSL`,aboutDiscovery:`Objavovanie zariadení`,steps:{selectDevice:`Výber zariadenia`,selectCategory:`Kategória zariadenia`,mappingPreview:`Náhľad mapovania`,customizeMapping:`Prispôsobenie mapovania`,deviceConfiguration:`Konfigurácia zariadenia`},mapping:{summary:`Súhrn mapovania`,warnings:`Varovania mapovania ({count})`,exposeMappings:`Mapovania expozícií`,customization:`Prispôsobenie mapovania`},device:{deviceSelection:`Výber zariadenia`,categorySelection:`Kategória zariadenia`,mappingPreview:`Náhľad mapovania`,mappingCustomization:`Prispôsobenie mapovania`,deviceConfiguration:`Konfigurácia zariadenia`,deviceInfo:`Informácie o zariadení`}},texts:{aboutPluginStatus:`Povoľte alebo zakážte plugin Zigbee2MQTT. Keď je zakázaný, žiadne Zigbee zariadenia nebudú monitorované ani ovládané.`,aboutMqtt:`Nakonfigurujte pripojenie k vášmu MQTT brokeru, kde Zigbee2MQTT publikuje dáta zariadení.`,aboutTls:`Nakonfigurujte nastavenia TLS/SSL pre bezpečné MQTT pripojenia. Povoľte TLS ak váš broker vyžaduje šifrované pripojenia.`,aboutDiscovery:`Nakonfigurujte, ako sú zariadenia objavované a pridávané z mosta Zigbee2MQTT.`,steps:{selectDevice:`Vyberte Zigbee zariadenie na prijatie zo zoznamu objavených zariadení.`,selectCategory:`Zvoľte kategóriu zariadenia. Navrhovaná kategória je založená na expozíciách zariadenia.`,mappingPreview:`Skontrolujte, ako budú expozície zariadenia namapované na kanály a vlastnosti Smart Panelu.`,customizeMapping:`Prispôsobte, ktoré expozície zahrnúť a upravte kategórie kanálov podľa potreby.`,deviceConfiguration:`Nakonfigurujte názov zariadenia, popis a ďalšie nastavenia.`},noDiscoveredDevices:`Žiadne objavené zariadenia nie sú dostupné. Uistite sa, že Zigbee2MQTT beží a zariadenia sú spárované.`,loadingDevices:`Načítavanie objavených zariadení...`,loadingPreview:`Načítavanie náhľadu mapovania...`,mapping:{customizationDescription:`Prepnite, ktoré expozície zahrnúť a prispôsobte kategórie kanálov. Zakázané expozície nebudú vytvorené.`}},fields:{config:{enabled:{title:`Povolené`},mqtt:{host:{title:`Hostiteľ MQTT brokera`,placeholder:`napr. localhost alebo 192.168.1.100`,validation:{required:`Hostiteľ MQTT brokera je povinný`}},port:{title:`Port`,validation:{required:`Port je povinný`,range:`Port musí byť medzi 1 a 65535`}},username:{title:`Používateľské meno`,placeholder:`MQTT používateľské meno (voliteľné)`},password:{title:`Heslo`,placeholder:`MQTT heslo (voliteľné)`},baseTopic:{title:`Základná téma`,placeholder:`napr. zigbee2mqtt`,validation:{required:`Základná téma je povinná`}},clientId:{title:`Client ID`,placeholder:`Automaticky generované ak prázdne`},cleanSession:{title:`Čistá relácia`},keepalive:{title:`Keepalive (s)`,validation:{number:`Musí byť číslo >= 10`}},connectTimeout:{title:`Timeout (ms)`,validation:{number:`Musí byť číslo >= 1000`}},reconnectInterval:{title:`Opätovné pripojenie (ms)`,validation:{number:`Musí byť číslo >= 1000`}}},tls:{enabled:{title:`Povoliť TLS`},rejectUnauthorized:{title:`Odmietnuť neautorizované certifikáty`},ca:{title:`CA certifikát`,placeholder:`Vložte obsah alebo cestu CA certifikátu`},cert:{title:`Klientský certifikát`,placeholder:`Vložte obsah alebo cestu klientského certifikátu`},key:{title:`Súkromný kľúč klienta`,placeholder:`Vložte obsah alebo cestu súkromného kľúča klienta`}},discovery:{autoAdd:{title:`Automaticky pridávať objavené zariadenia`},syncOnStartup:{title:`Synchronizovať zariadenia pri štarte`}}},devices:{id:{title:`ID zariadenia`,placeholder:`ID zariadenia`},name:{title:`Názov`,placeholder:`Názov zariadenia`,validation:{required:`Prosím vyplňte názov zariadenia`}},category:{title:`Kategória`,placeholder:`Kategória zariadenia`,validation:{required:`Prosím vyberte kategóriu zariadenia`}},description:{title:`Popis`,placeholder:`Popis zariadenia`},enabled:{title:`Povolené`},ieeeAddress:{title:`IEEE adresa`,placeholder:`Vyberte zariadenie`,validation:{required:`Prosím vyberte zariadenie`}},friendlyName:{title:`Priateľský názov`},manufacturer:{title:`Výrobca`},model:{title:`Model`},zigbee2mqttDeviceId:{title:`Pripojené Zigbee2MQTT zariadenie`,placeholder:`Vyberte pripojené zariadenie`}},mapping:{mapped:`Namapované`,partial:`Čiastočné`,unmapped:`Nenamapované`,skipped:`Preskočené`,excluded:`Vylúčené`,totalExposes:`Celkový počet expozícií`,deviceName:`Názov zariadenia`,suggestedCategory:`Navrhovaná kategória`,suggestedChannel:{title:`Navrhovaný kanál`,validation:{required:`Prosím vyberte kategóriu kanála`}},properties:`Vlastnosti`,missingRequiredProperties:`Chýbajúce povinné vlastnosti`,exposeEnabled:`Povolené`,channelCategory:`Kategória kanála`,noChannelSuggested:`Žiadny kanál navrhovaný`}},messages:{config:{edited:`Konfigurácia pluginu Zigbee2MQTT bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať konfiguráciu pluginu Zigbee2MQTT`},devices:{created:`Zariadenie Zigbee2MQTT '{device}' bolo vytvorené`,notCreated:`Nepodarilo sa vytvoriť zariadenie Zigbee2MQTT '{device}'`,edited:`Zariadenie Zigbee2MQTT '{device}' bolo aktualizované`,notEdited:`Nepodarilo sa aktualizovať zariadenie Zigbee2MQTT '{device}'`,adopted:`Zariadenie '{device}' bolo úspešne prijaté`,notAdopted:`Nepodarilo sa prijať zariadenie '{device}'`,noDiscoveredDevices:`Žiadne objavené zariadenia nie sú dostupné. Uistite sa, že Zigbee2MQTT beží a zariadenia sú spárované.`,deviceOffline:`Toto zariadenie je momentálne offline`,alreadyAdopted:`Toto zariadenie je už prijaté`,alreadyAdoptedDescription:`Pokračovaním sa zariadenie znovu prijme s novou konfiguráciou. Existujúce zariadenie bude aktualizované.`},discoveredDevices:{loadFailed:`Nepodarilo sa načítať objavené zariadenia`,mappingPreviewFailed:`Nepodarilo sa načítať náhľad mapovania`},mapping:{previewError:`Nepodarilo sa načítať náhľad mapovania`,previewLoading:`Načítavanie náhľadu mapovania...`,missingChannelCategory:`Prosím vyberte kategóriu kanála pre: {exposes}`,notReadyToAdopt:`Zariadenie nie je pripravené na prijatie. Skontrolujte a opravte varovania.`,readyToAdopt:`Zariadenie je pripravené na prijatie`,noPreview:`Náhľad mapovania nie je dostupný`,selectDeviceFirst:`Prosím najprv vyberte zariadenie na zobrazenie náhľadu mapovania`,adoptionSuccess:`Zariadenie '{device}' bolo úspešne prijaté`},categorySelection:{description:`Zvoľte kategóriu zariadenia. Navrhovaná kategória je založená na schopnostiach zariadenia.`}},labels:{suggested:`Navrhované`},buttons:{next:`Ďalej`,previous:`Predchádzajúci`,adoptDevice:`Prijať zariadenie`,refresh:`Obnoviť`,use:`Použiť`}},bE={"cs-CZ":mE,"de-DE":hE,"en-US":gE,"es-ES":_E,"pl-PL":vE,"sk-SK":yE},xE=Tt.extend({mqtt:q({host:Y().trim().min(1),port:Ot().int().min(1).max(65535),username:Y().nullable(),password:Y().nullable(),baseTopic:Y().trim().min(1),clientId:Y().nullable(),cleanSession:R(),keepalive:Ot().int().min(10),connectTimeout:Ot().int().min(1e3),reconnectInterval:Ot().int().min(1e3)}),tls:q({enabled:R(),rejectUnauthorized:R(),ca:Y().nullable(),cert:Y().nullable(),key:Y().nullable()}),discovery:q({autoAdd:R(),syncOnStartup:R()})}),SE=Xi,CE=Mi.and(q({type:Z(sw)})),wE=Ti.and(q({type:Z(sw)}));Li.and(q({type:Z(sw)}));var TE=ki,EE=Pi.and(q({type:Z(sw)})),DE=ji.and(q({type:Z(sw)}));Ii.and(q({type:Z(sw)}));var OE=Lt.extend({mqtt:q({host:Y(),port:G(),username:Y().nullable(),password:Y().nullable(),baseTopic:Y(),clientId:Y().nullable(),cleanSession:R(),keepalive:G(),connectTimeout:G(),reconnectInterval:G()}),tls:q({enabled:R(),rejectUnauthorized:R(),ca:Y().nullable(),cert:Y().nullable(),key:Y().nullable()}),discovery:q({autoAdd:R(),syncOnStartup:R()})}),kE=Wt.and(q({type:Z(ow),mqtt:q({host:Y().optional(),port:G().optional(),username:Y().nullable().optional(),password:Y().nullable().optional(),base_topic:Y().optional(),client_id:Y().nullable().optional(),clean_session:R().optional(),keepalive:G().optional(),connect_timeout:G().optional(),reconnect_interval:G().optional()}).optional(),tls:q({enabled:R().optional(),reject_unauthorized:R().optional(),ca:Y().nullable().optional(),cert:Y().nullable().optional(),key:Y().nullable().optional()}).optional(),discovery:q({auto_add:R().optional(),sync_on_startup:R().optional()}).optional()}));Qt.and(q({type:Z(ow),mqtt:q({host:Y(),port:G(),username:Y().nullable(),password:Y().nullable(),base_topic:Y(),client_id:Y().nullable(),clean_session:R(),keepalive:G(),connect_timeout:G(),reconnect_interval:G()}),tls:q({enabled:R(),reject_unauthorized:R(),ca:Y().nullable(),cert:Y().nullable(),key:Y().nullable()}),discovery:q({auto_add:R(),sync_on_startup:R()})}));var AE=q({type:Y(),property:Y().optional(),name:Y().optional(),access:G().optional(),unit:Y().optional(),valueMin:G().optional(),valueMax:G().optional(),valueStep:G().optional(),values:H(Y()).optional(),features:Ge(()=>H(AE).optional())}),jE=q({id:Y(),friendlyName:Y(),type:Fe([`Router`,`EndDevice`]),modelId:Y().nullable(),manufacturer:Y().nullable(),model:Y().nullable(),description:Y().nullable(),powerSource:Y().nullable(),supported:R(),available:R(),adopted:R(),adoptedDeviceId:Y().nullable(),exposes:H(AE),suggestedCategory:Y().nullable()}),ME=e=>e.map(e=>({type:e.type,property:e.property,name:e.name,access:e.access,unit:e.unit,valueMin:e.value_min,valueMax:e.value_max,valueStep:e.value_step,values:e.values,features:e.features?ME(e.features):void 0})),NE=e=>({id:e.ieee_address,friendlyName:e.friendly_name,type:e.type,modelId:e.model_id??null,manufacturer:e.manufacturer??null,model:e.model??null,description:e.description??null,powerSource:e.power_source??null,supported:e.supported,available:e.available,adopted:e.adopted,adoptedDeviceId:e.adopted_device_id??null,exposes:e.exposes?ME(e.exposes):[],suggestedCategory:e.suggested_category??null}),PE={fetching:{items:!1,item:[]}},FE=it(`devices_zigbee2mqtt_plugin-discovered_devices`,()=>{let e=fn(),t=Ke(),n=N(PE),r=N(!1),i=N({}),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={};return{semaphore:n,firstLoad:r,data:i,firstLoadFinished:a,getting:o,fetching:s,findAll:c,findById:l,set:e=>{if(e.id&&i.value&&e.id in i.value){let n=jE.safeParse({...i.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new lw(`Failed to update Zigbee2MQTT discovered device.`);return i.value[n.data.id]=n.data}let n=jE.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new lw(`Failed to insert Zigbee2MQTT discovered device.`);return i.value=i.value??{},i.value[n.data.id]=n.data},unset:e=>{i.value&&delete i.value[e.id]},get:async t=>{let r=u[t.id];if(r)return r;let a=(async()=>{if(n.value.fetching.item.includes(t.id))throw new uw(`Already fetching Zigbee2MQTT discovered device.`,409);n.value.fetching.item.push(t.id);try{let{data:n,error:r,response:a}=await e.client.GET(`/${ae}/${aw}/discovered-devices/{ieeeAddress}`,{params:{path:{ieeeAddress:t.id}}});if(n!==void 0){let e=NE(n.data);return i.value[e.id]=e,e}throw new uw(r?String(r):`Failed to fetch Zigbee2MQTT discovered device.`,a.status)}finally{n.value.fetching.item=n.value.fetching.item.filter(e=>e!==t.id)}})();u[t.id]=a;try{return await a}finally{delete u[t.id]}},fetch:async()=>{if(`all`in d)return d.all;let t=(async()=>{if(n.value.fetching.items)throw new uw(`Already fetching Zigbee2MQTT discovered devices.`,409);n.value.fetching.items=!0;try{let{data:t,error:n,response:a}=await e.client.GET(`/${ae}/${aw}/discovered-devices`);if(t!==void 0)return i.value=Object.fromEntries(t.data.map(e=>{let t=NE(e);return[t.id,t]})),r.value=!0,Object.values(i.value);throw new uw(n?String(n):`Failed to fetch Zigbee2MQTT discovered devices.`,a.status)}finally{n.value.fetching.items=!1}})();d.all=t;try{return await t}finally{delete d.all}}}}),IE=e=>FE(e),LE=Symbol(`FB-Plugin-DevicesZigbee2mqtt`),RE={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(bE)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{devicesZigbee2mqttPlugin:n});t.i18n.global.setLocaleMessage(e,r)}let r=Ye(e),i=IE(t.store);e.provide(kw,i),r.addStore(kw,i),n.addPlugin(LE,{type:ow,source:`com.fastybird.smart-panel.plugin.devices-zigbee2mqtt`,name:`Zigbee2MQTT`,description:`Connect and control your Zigbee devices via Zigbee2MQTT from the FastyBird Smart Panel`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:iw},schemas:{pluginConfigSchema:OE,pluginConfigEditFormSchema:xE,pluginConfigUpdateReqSchema:kE},modules:[pn]},{type:sw,components:{deviceAddForm:uE,deviceEditForm:pE},schemas:{deviceSchema:gw,deviceAddFormSchema:dw,deviceEditFormSchema:fw,deviceCreateReqSchema:_w,deviceUpdateReqSchema:vw,channelSchema:TE,channelCreateReqSchema:EE,channelUpdateReqSchema:DE,channelPropertySchema:SE,channelPropertyCreateReqSchema:CE,channelPropertyUpdateReqSchema:wE},modules:[si]}],modules:[si,pn],isCore:!0})}},zE=f({name:`RotatingFileConfigForm`,__name:`rotating-file-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{formEl:o,model:s,formChanged:c,submit:l,formResult:u}=Xt({config:n.config,messages:{success:a(`loggerRotatingFilePlugin.messages.config.edited`),error:a(`loggerRotatingFilePlugin.messages.config.notEdited`)}}),f=y({dir:[{type:`string`,trigger:`change`,message:a(`loggerRotatingFilePlugin.fields.config.dir.validation.nonEmpty`)}],retentionDays:[{type:`integer`,min:1,trigger:`change`,message:a(`loggerRotatingFilePlugin.fields.config.retentionDays.validation.min`)}],cleanupCron:[{validator:(e,t)=>p(t),trigger:`blur`,message:a(`loggerRotatingFilePlugin.fields.config.cleanupCron.validation.invalid`)}],filePrefix:[{validator:(e,t)=>g(t),trigger:`blur`,message:a(`loggerRotatingFilePlugin.fields.config.filePrefix.validation.pattern`)}]}),p=e=>{if(e===``||e===null)return!0;let t=e.trim();return/^([\d*/?,\-]+)\s+([\d*/?,\-]+)\s+([\d*/?,\-]+)\s+([\d*/?,A-Za-z\-]+)\s+([\d*/?,A-Za-z\-]+)$/.test(t)},g=e=>e===``||e===null||/^[A-Za-z0-9._-]+$/.test(e??``);return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!o.value)return;o.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:o,model:h(s),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(a)(`loggerRotatingFilePlugin.headings.aboutFileLoggingSettings`),description:h(a)(`loggerRotatingFilePlugin.texts.aboutFileLoggingSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(a)(`loggerRotatingFilePlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(s).enabled,"onUpdate:modelValue":t[0]||=e=>h(s).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[5]||=D(`hr`,null,null,-1),F(h(V),{label:h(a)(`loggerRotatingFilePlugin.fields.config.dir.title`),prop:`dir`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).dir,"onUpdate:modelValue":t[1]||=e=>h(s).dir=e,placeholder:h(a)(`loggerRotatingFilePlugin.fields.config.dir.placeholder`),name:`dir`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`loggerRotatingFilePlugin.fields.config.retentionDays.title`),prop:`retentionDays`,class:`mt-3`},{default:d(()=>[F(h(Sn),{modelValue:h(s).retentionDays,"onUpdate:modelValue":t[2]||=e=>h(s).retentionDays=e,placeholder:h(a)(`loggerRotatingFilePlugin.fields.config.retentionDays.placeholder`),name:`retentionDays`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`loggerRotatingFilePlugin.fields.config.cleanupCron.title`),prop:`cleanupCron`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).cleanupCron,"onUpdate:modelValue":t[3]||=e=>h(s).cleanupCron=e,placeholder:h(a)(`loggerRotatingFilePlugin.fields.config.cleanupCron.placeholder`),name:`cleanupCron`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`loggerRotatingFilePlugin.fields.config.filePrefix.title`),prop:`filePrefix`,class:`mt-3`},{default:d(()=>[F(h(W),{modelValue:h(s).filePrefix,"onUpdate:modelValue":t[4]||=e=>h(s).filePrefix=e,placeholder:h(a)(`loggerRotatingFilePlugin.fields.config.filePrefix.placeholder`),name:`filePrefix`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),BE={headings:{aboutFileLoggingSettings:`Nastavení souborového protokolování`},fields:{config:{enabled:{title:`Povoleno`},dir:{title:`Adresář protokolů`,placeholder:`Absolutní nebo relativní cesta, např. /var/log/smart-panel`,validation:{nonEmpty:`Adresář protokolů nesmí být prázdný.`}},retentionDays:{title:`Doba uchovávání (dny)`,placeholder:`Kolik dní uchovávat soubory protokolů (např. 7)`,validation:{min:`Doba uchovávání musí být alespoň 1 den.`}},cleanupCron:{title:`Plán úklidu (cron)`,placeholder:`Cron výraz, např. 15 3 * * * (denně ve 03:15)`,validation:{invalid:`Zadejte prosím platný cron výraz (např. 15 3 * * *).`}},filePrefix:{title:`Prefix souboru`,placeholder:`Prefix názvu souboru, např. smart-panel`,validation:{pattern:`Jsou povolena pouze písmena, čísla, tečka, podtržítko a pomlčka.`}}}},messages:{config:{edited:`Změny uloženy! Konfigurace pluginu rotujícího souboru protokolů byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace pluginu rotujícího souboru protokolů nebyla úspěšná.`}},texts:{aboutFileLoggingSettings:`Nakonfigurujte souborovou persistenci protokolů s denní rotací a automatickým úklidem. Pokud je povoleno, protokoly se ukládají do souborů pro dlouhodobé uchovávání a offline analýzu. Soubory jsou automaticky rotovány denně a uklízeny na základě nastavení doby uchovávání.`}},VE={headings:{aboutFileLoggingSettings:`Dateiprotokollierungs-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},dir:{title:`Protokollverzeichnis`,placeholder:`Absoluter oder relativer Pfad, z.B. /var/log/smart-panel`,validation:{nonEmpty:`Protokollverzeichnis darf nicht leer sein.`}},retentionDays:{title:`Aufbewahrung (Tage)`,placeholder:`Wie viele Tage Protokolldateien aufbewahrt werden sollen (z.B. 7)`,validation:{min:`Aufbewahrungstage müssen mindestens 1 sein.`}},cleanupCron:{title:`Bereinigungszeitplan (Cron)`,placeholder:`Cron-Ausdruck, z.B. 15 3 * * * (täglich um 03:15)`,validation:{invalid:`Bitte geben Sie einen gültigen Cron-Ausdruck ein (z.B. 15 3 * * *).`}},filePrefix:{title:`Dateipräfix`,placeholder:`Dateinamen-Präfix, z.B. smart-panel`,validation:{pattern:`Nur Buchstaben, Zahlen, Punkt, Unterstrich und Bindestrich sind erlaubt.`}}}},messages:{config:{edited:`Änderungen gespeichert! Die Konfiguration des Rotating-File-Logger-Plugins wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Rotating-File-Logger-Plugin-Konfiguration war nicht erfolgreich.`}},texts:{aboutFileLoggingSettings:`Konfigurieren Sie die dateibasierte Protokollpersistenz mit täglicher Rotation und automatischer Bereinigung. Wenn aktiviert, werden Protokolle in Dateien für langfristige Aufbewahrung und Offline-Analyse gespeichert. Dateien werden automatisch täglich rotiert und basierend auf den Aufbewahrungseinstellungen bereinigt.`}},HE={headings:{aboutFileLoggingSettings:`File Logging Settings`},fields:{config:{enabled:{title:`Enabled`},dir:{title:`Log directory`,placeholder:`Absolute or relative path, e.g. /var/log/smart-panel`,validation:{nonEmpty:`Log directory must not be empty.`}},retentionDays:{title:`Retention (days)`,placeholder:`How many days to keep log files (e.g. 7)`,validation:{min:`Retention days must be at least 1.`}},cleanupCron:{title:`Cleanup schedule (cron)`,placeholder:`Cron expression, e.g. 15 3 * * * (daily at 03:15)`,validation:{invalid:`Please enter a valid cron expression (e.g. 15 3 * * *).`}},filePrefix:{title:`File prefix`,placeholder:`Filename prefix, e.g. smart-panel`,validation:{pattern:`Only letters, numbers, dot, underscore, and hyphen are allowed.`}}}},messages:{config:{edited:`Changes saved! The Rotating File Logger plugin config has been updated.`,notEdited:`Something went wrong. Rotating File Logger plugin config update was not successful.`}},texts:{aboutFileLoggingSettings:`Configure file-based log persistence with daily rotation and automatic cleanup. When enabled, logs are saved to files for long-term retention and offline analysis. Files are automatically rotated daily and cleaned up based on retention settings.`}},UE={headings:{aboutFileLoggingSettings:`Configuración de registro en archivo`},fields:{config:{enabled:{title:`Habilitado`},dir:{title:`Directorio de registros`,placeholder:`Ruta absoluta o relativa, p. ej., /var/log/smart-panel`,validation:{nonEmpty:`El directorio de registros no debe estar vacío.`}},retentionDays:{title:`Retención (días)`,placeholder:`Cuántos días conservar los archivos de registro (p. ej., 7)`,validation:{min:`Los días de retención deben ser al menos 1.`}},cleanupCron:{title:`Programación de limpieza (cron)`,placeholder:`Expresión cron, p. ej., 15 3 * * * (diariamente a las 03:15)`,validation:{invalid:`Por favor, introduzca una expresión cron válida (p. ej., 15 3 * * *).`}},filePrefix:{title:`Prefijo del archivo`,placeholder:`Prefijo del nombre de archivo, p. ej., smart-panel`,validation:{pattern:`Solo se permiten letras, números, puntos, guiones bajos y guiones.`}}}},messages:{config:{edited:`¡Cambios guardados! La configuración del plugin de registro en archivo rotativo ha sido actualizada.`,notEdited:`Algo salió mal. La actualización de la configuración del plugin de registro en archivo rotativo no fue exitosa.`}},texts:{aboutFileLoggingSettings:`Configure la persistencia de registros basada en archivos con rotación diaria y limpieza automática. Cuando está habilitado, los registros se guardan en archivos para retención a largo plazo y análisis sin conexión. Los archivos se rotan automáticamente a diario y se limpian según la configuración de retención.`}},WE={headings:{aboutFileLoggingSettings:`Ustawienia logowania do pliku`},fields:{config:{enabled:{title:`Włączony`},dir:{title:`Katalog logów`,placeholder:`Ścieżka bezwzględna lub względna, np. /var/log/smart-panel`,validation:{nonEmpty:`Katalog logów nie może być pusty.`}},retentionDays:{title:`Przechowywanie (dni)`,placeholder:`Ile dni przechowywać pliki logów (np. 7)`,validation:{min:`Liczba dni przechowywania musi wynosić co najmniej 1.`}},cleanupCron:{title:`Harmonogram czyszczenia (cron)`,placeholder:`Wyrażenie cron, np. 15 3 * * * (codziennie o 03:15)`,validation:{invalid:`Wprowadź prawidłowe wyrażenie cron (np. 15 3 * * *).`}},filePrefix:{title:`Prefiks pliku`,placeholder:`Prefiks nazwy pliku, np. smart-panel`,validation:{pattern:`Dozwolone są tylko litery, cyfry, kropka, podkreślenie i myślnik.`}}}},messages:{config:{edited:`Zmiany zapisane! Konfiguracja wtyczki Rotating File Logger została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji wtyczki Rotating File Logger nie powiodła się.`}},texts:{aboutFileLoggingSettings:`Skonfiguruj trwałe zapisywanie logów do plików z codzienną rotacją i automatycznym czyszczeniem. Po włączeniu logi są zapisywane do plików w celu długoterminowego przechowywania i analizy offline. Pliki są automatycznie rotowane codziennie i czyszczone zgodnie z ustawieniami przechowywania.`}},GE={headings:{aboutFileLoggingSettings:`Nastavenia logovania do súborov`},fields:{config:{enabled:{title:`Povolený`},dir:{title:`Adresár logov`,placeholder:`Absolútna alebo relatívna cesta, napr. /var/log/smart-panel`,validation:{nonEmpty:`Adresár logov nesmie byť prázdny.`}},retentionDays:{title:`Uchovávanie (dní)`,placeholder:`Koľko dní uchovávať súbory logov (napr. 7)`,validation:{min:`Počet dní uchovávania musí byť aspoň 1.`}},cleanupCron:{title:`Plán čistenia (cron)`,placeholder:`Cron výraz, napr. 15 3 * * * (denne o 03:15)`,validation:{invalid:`Prosím zadajte platný cron výraz (napr. 15 3 * * *).`}},filePrefix:{title:`Prefix súboru`,placeholder:`Prefix názvu súboru, napr. smart-panel`,validation:{pattern:`Povolené sú iba písmená, čísla, bodka, podčiarkovník a pomlčka.`}}}},messages:{config:{edited:`Zmeny uložené! Konfigurácia pluginu Rotating File Logger bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie pluginu Rotating File Logger nebola úspešná.`}},texts:{aboutFileLoggingSettings:`Nakonfigurujte perzistenciu logov do súborov s dennou rotáciou a automatickým čistením. Keď je povolené, logy sa ukladajú do súborov na dlhodobé uchovávanie a offline analýzu. Súbory sa automaticky rotujú denne a čistia podľa nastavení uchovávania.`}},KE={"cs-CZ":BE,"de-DE":VE,"en-US":HE,"es-ES":UE,"pl-PL":WE,"sk-SK":GE},qE=`logger-rotating-file-plugin`,JE=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),YE=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronField=void 0,e.CronField=class e{#e=!1;#t=!1;#n=!1;#r=[];options={rawValue:``};static get min(){throw Error(`min must be overridden`)}static get max(){throw Error(`max must be overridden`)}static get chars(){return Object.freeze([])}static get validChars(){return/^[?,*\dH/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}static get constraints(){return{min:this.min,max:this.max,chars:this.chars,validChars:this.validChars}}constructor(t,n={rawValue:``}){if(!Array.isArray(t))throw Error(`${this.constructor.name} Validation error, values is not an array`);if(!(t.length>0))throw Error(`${this.constructor.name} Validation error, values contains no values`);this.options={...n,rawValue:n.rawValue??``},this.#r=t.sort(e.sorter),this.#n=this.options.wildcard===void 0?this.#i():this.options.wildcard,this.#e=this.options.rawValue.includes(`L`)||t.includes(`L`),this.#t=this.options.rawValue.includes(`?`)||t.includes(`?`)}get min(){return this.constructor.min}get max(){return this.constructor.max}get chars(){return this.constructor.chars}get hasLastChar(){return this.#e}get hasQuestionMarkChar(){return this.#t}get isWildcard(){return this.#n}get values(){return this.#r}static sorter(e,t){let n=typeof e==`number`,r=typeof t==`number`;return n&&r?e-t:!n&&!r?e.localeCompare(t):n?-1:1}static findNearestValueInList(e,t,n=!1){if(n){for(let n=e.length-1;n>=0;n--)if(e[n]<t)return e[n];return null}for(let n=0;n<e.length;n++)if(e[n]>t)return e[n];return null}findNearestValue(e,t=!1){return this.constructor.findNearestValueInList(this.values,e,t)}serialize(){return{wildcard:this.#n,values:this.#r}}validate(){let e,t=this.chars.length>0?` or chars ${this.chars.join(``)}`:``,n=e=>t=>RegExp(`^\\d{0,2}${t}$`).test(e);if(!this.#r.every(t=>(e=t,typeof t==`number`?t>=this.min&&t<=this.max:this.chars.some(n(t)))))throw Error(`${this.constructor.name} Validation error, got value ${e} expected range ${this.min}-${this.max}${t}`);let r=this.#r.find((e,t)=>this.#r.indexOf(e)!==t);if(r)throw Error(`${this.constructor.name} Validation error, duplicate values found: ${r}`)}#i(){return this.options.rawValue.length>0?[`*`,`?`].includes(this.options.rawValue):Array.from({length:this.max-this.min+1},(e,t)=>t+this.min).every(e=>this.#r.includes(e))}}})),XE=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronDayOfMonth=void 0;var t=YE(),n=1,r=31,i=Object.freeze([`L`]);e.CronDayOfMonth=class extends t.CronField{static get min(){return n}static get max(){return r}static get chars(){return i}static get validChars(){return/^[?,*\dLH/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}}})),ZE=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronDayOfWeek=void 0;var t=YE(),n=0,r=7,i=Object.freeze([`L`]);e.CronDayOfWeek=class extends t.CronField{static get min(){return n}static get max(){return r}static get chars(){return i}static get validChars(){return/^[?,*\dLH#/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}get nthDay(){return this.options.nthDayOfWeek??0}}})),QE=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronHour=void 0;var t=YE(),n=0,r=23,i=Object.freeze([]);e.CronHour=class extends t.CronField{static get min(){return n}static get max(){return r}static get chars(){return i}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}}})),$E=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronMinute=void 0;var t=YE(),n=0,r=59,i=Object.freeze([]);e.CronMinute=class extends t.CronField{static get min(){return n}static get max(){return r}static get chars(){return i}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}}})),eD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t=class extends Error{},n=class extends t{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},r=class extends t{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},i=class extends t{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},a=class extends t{},o=class extends t{constructor(e){super(`Invalid unit ${e}`)}},s=class extends t{},c=class extends t{constructor(){super(`Zone is an abstract class`)}},l=`numeric`,u=`short`,d=`long`,f={year:l,month:l,day:l},p={year:l,month:u,day:l},m={year:l,month:u,day:l,weekday:u},h={year:l,month:d,day:l},g={year:l,month:d,day:l,weekday:d},_={hour:l,minute:l},v={hour:l,minute:l,second:l},y={hour:l,minute:l,second:l,timeZoneName:u},b={hour:l,minute:l,second:l,timeZoneName:d},x={hour:l,minute:l,hourCycle:`h23`},S={hour:l,minute:l,second:l,hourCycle:`h23`},C={hour:l,minute:l,second:l,hourCycle:`h23`,timeZoneName:u},w={hour:l,minute:l,second:l,hourCycle:`h23`,timeZoneName:d},T={year:l,month:l,day:l,hour:l,minute:l},E={year:l,month:l,day:l,hour:l,minute:l,second:l},D={year:l,month:u,day:l,hour:l,minute:l},O={year:l,month:u,day:l,hour:l,minute:l,second:l},k={year:l,month:u,day:l,weekday:u,hour:l,minute:l},A={year:l,month:d,day:l,hour:l,minute:l,timeZoneName:u},ee={year:l,month:d,day:l,hour:l,minute:l,second:l,timeZoneName:u},j={year:l,month:d,day:l,weekday:d,hour:l,minute:l,timeZoneName:d},te={year:l,month:d,day:l,weekday:d,hour:l,minute:l,second:l,timeZoneName:d},M=class{get type(){throw new c}get name(){throw new c}get ianaName(){return this.name}get isUniversal(){throw new c}offsetName(e,t){throw new c}formatOffset(e,t){throw new c}offset(e){throw new c}equals(e){throw new c}get isValid(){throw new c}},ne=null,re=class e extends M{static get instance(){return ne===null&&(ne=new e),ne}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return kt(e,t,n)}formatOffset(e,t){return Nt(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},ie=new Map;function ae(e){let t=ie.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,era:`short`}),ie.set(e,t)),t}var oe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function se(e,t){let n=e.format(t).replace(/\u200E/g,``),[,r,i,a,o,s,c,l]=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n);return[a,r,i,o,s,c,l]}function N(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=oe[t];t===`era`?r[a]=i:it(a)||(r[a]=parseInt(i,10))}return r}var P=new Map,F=class e extends M{static create(t){let n=P.get(t);return n===void 0&&P.set(t,n=new e(t)),n}static resetCache(){P.clear(),ie.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).format(),!0}catch{return!1}}constructor(t){super(),this.zoneName=t,this.valid=e.isValidZone(t)}get type(){return`iana`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return kt(e,t,n,this.name)}formatOffset(e,t){return Nt(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=ae(this.name),[r,i,a,o,s,c,l]=n.formatToParts?N(n,t):se(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=Tt({year:r,month:i,day:a,hour:s===24?0:s,minute:c,second:l,millisecond:0}),d=+t,f=d%1e3;return d-=f>=0?f:1e3+f,(u-d)/(60*1e3)}equals(e){return e.type===`iana`&&e.name===this.name}get isValid(){return this.valid}},ce={};function le(e,t={}){let n=JSON.stringify([e,t]),r=ce[n];return r||(r=new Intl.ListFormat(e,t),ce[n]=r),r}var ue=new Map;function de(e,t={}){let n=JSON.stringify([e,t]),r=ue.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),ue.set(n,r)),r}var I=new Map;function fe(e,t={}){let n=JSON.stringify([e,t]),r=I.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),I.set(n,r)),r}var pe=new Map;function me(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=pe.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),pe.set(i,a)),a}var he=null;function ge(){return he||(he=new Intl.DateTimeFormat().resolvedOptions().locale,he)}var _e=new Map;function ve(e){let t=_e.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),_e.set(e,t)),t}var ye=new Map;function be(e){let t=ye.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...Oe,...t}),ye.set(e,t)}return t}function xe(e){let t=e.indexOf(`-x-`);t!==-1&&(e=e.substring(0,t));let n=e.indexOf(`-u-`);if(n===-1)return[e];{let t,r;try{t=de(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=de(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function Se(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function Ce(e){let t=[];for(let n=1;n<=12;n++){let r=_i.utc(2009,n,1);t.push(e(r))}return t}function L(e){let t=[];for(let n=1;n<=7;n++){let r=_i.utc(2016,11,13+n);t.push(e(r))}return t}function R(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function we(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||ve(e.locale).numberingSystem===`latn`}var Te=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:i,...a}=n;if(!t||Object.keys(a).length>0){let t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=fe(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return _t(this.floor?Math.floor(e):xt(e,3),this.padTo)}},Ee=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type===`fixed`){let t=-1*(e.offset/60),n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;e.offset!==0&&F.create(n).valid?(r=n,this.dt=e):(r=`UTC`,this.dt=e.offset===0?e:e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type===`system`?this.dt=e:e.zone.type===`iana`?(this.dt=e,r=e.zone.name):(r=`UTC`,this.dt=e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||r,this.dtf=de(t,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(``):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(e=>{if(e.type===`timeZoneName`){let t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}else return e}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},De=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&ct()&&(this.rtf=me(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):Zt(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},Oe={firstDay:1,minimalDays:4,weekend:[6,7]},ke=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,r,i,a=!1){let o=t||We.defaultLocale;return new e(o||(a?`en-US`:ge()),n||We.defaultNumberingSystem,r||We.defaultOutputCalendar,mt(i)||We.defaultWeekSettings,o)}static resetCache(){he=null,ue.clear(),I.clear(),pe.clear(),_e.clear(),ye.clear()}static fromObject({locale:t,numberingSystem:n,outputCalendar:r,weekSettings:i}={}){return e.create(t,n,r,i)}constructor(e,t,n,r,i){let[a,o,s]=xe(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=Se(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached??=we(this),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem===`latn`)&&(this.outputCalendar===null||this.outputCalendar===`gregory`);return e&&t?`en`:`intl`}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,mt(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return R(this,e,Rt,()=>{let n=this.intl===`ja`||this.intl.startsWith(`ja-`);t&=!n;let r=t?{month:e,day:`numeric`}:{month:e},i=t?`format`:`standalone`;if(!this.monthsCache[i][e]){let t=n?e=>this.dtFormatter(e,r).format():e=>this.extract(e,r,`month`);this.monthsCache[i][e]=Ce(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return R(this,e,Ht,()=>{let n=t?{weekday:e,year:`numeric`,month:`long`,day:`numeric`}:{weekday:e},r=t?`format`:`standalone`;return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=L(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return R(this,void 0,()=>Y,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[_i.utc(2016,11,13,9),_i.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return R(this,e,Kt,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[_i.utc(-40,1,1),_i.utc(2017,1,1)].map(e=>this.extract(e,t,`era`))),this.eraCache[e]})}extract(e,t,n){let r=this.dtFormatter(e,t).formatToParts().find(e=>e.type.toLowerCase()===n);return r?r.value:null}numberFormatter(e={}){return new Te(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Ee(e,this.intl,t)}relFormatter(e={}){return new De(this.intl,this.isEnglish(),e)}listFormatter(e={}){return le(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||ve(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:lt()?be(this.locale):Oe}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},z=null,Ae=class e extends M{static get utcInstance(){return z===null&&(z=new e(0)),z}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new e(At(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${Nt(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${Nt(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return Nt(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type===`fixed`&&e.fixed===this.fixed}get isValid(){return!0}},je=class extends M{constructor(e){super(),this.zoneName=e}get type(){return`invalid`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return``}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Me(e,t){if(it(e)||e===null)return t;if(e instanceof M)return e;if(ot(e)){let n=e.toLowerCase();return n===`default`?t:n===`local`||n===`system`?re.instance:n===`utc`||n===`gmt`?Ae.utcInstance:Ae.parseSpecifier(n)||F.create(e)}else if(J(e))return Ae.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new je(e)}var Ne={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},Pe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Fe=Ne.hanidec.replace(/[\[|\]]/g,``).split(``);function Ie(e){let t=parseInt(e,10);if(isNaN(t)){t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(e[n].search(Ne.hanidec)!==-1)t+=Fe.indexOf(e[n]);else for(let e in Pe){let[n,i]=Pe[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var B=new Map;function Le(){B.clear()}function Re({numberingSystem:e},t=``){let n=e||`latn`,r=B.get(n);r===void 0&&(r=new Map,B.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${Ne[n]}${t}`),r.set(t,i)),i}var ze=()=>Date.now(),Be=`system`,Ve=null,V=null,H=null,He=60,Ue,U=null,We=class{static get now(){return ze}static set now(e){ze=e}static set defaultZone(e){Be=e}static get defaultZone(){return Me(Be,re.instance)}static get defaultLocale(){return Ve}static set defaultLocale(e){Ve=e}static get defaultNumberingSystem(){return V}static set defaultNumberingSystem(e){V=e}static get defaultOutputCalendar(){return H}static set defaultOutputCalendar(e){H=e}static get defaultWeekSettings(){return U}static set defaultWeekSettings(e){U=mt(e)}static get twoDigitCutoffYear(){return He}static set twoDigitCutoffYear(e){He=e%100}static get throwOnInvalid(){return Ue}static set throwOnInvalid(e){Ue=e}static resetCaches(){ke.resetCache(),F.resetCache(),_i.resetCache(),Le()}},Ge=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},Ke=[0,31,59,90,120,151,181,212,243,273,304,334],qe=[0,31,60,91,121,152,182,213,244,274,305,335];function Je(e,t){return new Ge(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Ye(e,t,n){let r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let i=r.getUTCDay();return i===0?7:i}function W(e,t,n){return n+(St(e)?qe:Ke)[t-1]}function Xe(e,t){let n=St(e)?qe:Ke,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function G(e,t){return(e-t+7)%7+1}function Ze(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=W(r,i,a),s=G(Ye(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=Dt(l,t,n)):c>Dt(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...Pt(e)}}function K(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=G(Ye(r,1,t),n),s=Ct(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=Ct(l)):c>s?(l=r+1,c-=Ct(r)):l=r;let{month:u,day:d}=Xe(l,c);return{year:l,month:u,day:d,...Pt(e)}}function q(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:W(t,n,r),...Pt(e)}}function Qe(e){let{year:t,ordinal:n}=e,{month:r,day:i}=Xe(t,n);return{year:t,month:r,day:i,...Pt(e)}}function $e(e,t){if(!it(e.localWeekday)||!it(e.localWeekNumber)||!it(e.localWeekYear)){if(!it(e.weekday)||!it(e.weekNumber)||!it(e.weekYear))throw new a(`Cannot mix locale-based week fields with ISO-based week fields`);return it(e.localWeekday)||(e.weekday=e.localWeekday),it(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),it(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function et(e,t=4,n=1){let r=at(e.weekYear),i=ht(e.weekNumber,1,Dt(e.weekYear,t,n)),a=ht(e.weekday,1,7);return r?i?a?!1:Je(`weekday`,e.weekday):Je(`week`,e.weekNumber):Je(`weekYear`,e.weekYear)}function tt(e){let t=at(e.year),n=ht(e.ordinal,1,Ct(e.year));return t?n?!1:Je(`ordinal`,e.ordinal):Je(`year`,e.year)}function nt(e){let t=at(e.year),n=ht(e.month,1,12),r=ht(e.day,1,wt(e.year,e.month));return t?n?r?!1:Je(`day`,e.day):Je(`month`,e.month):Je(`year`,e.year)}function rt(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=ht(t,0,23)||t===24&&n===0&&r===0&&i===0,o=ht(n,0,59),s=ht(r,0,59),c=ht(i,0,999);return a?o?s?c?!1:Je(`millisecond`,i):Je(`second`,r):Je(`minute`,n):Je(`hour`,t)}function it(e){return e===void 0}function J(e){return typeof e==`number`}function at(e){return typeof e==`number`&&e%1==0}function ot(e){return typeof e==`string`}function st(e){return Object.prototype.toString.call(e)===`[object Date]`}function ct(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function lt(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function ut(e){return Array.isArray(e)?e:[e]}function dt(e,t,n){if(e.length!==0)return e.reduce((e,r)=>{let i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function ft(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function pt(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function mt(e){if(e==null)return null;if(typeof e!=`object`)throw new s(`Week settings must be an object`);if(!ht(e.firstDay,1,7)||!ht(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!ht(e,1,7)))throw new s(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function ht(e,t,n){return at(e)&&e>=t&&e<=n}function gt(e,t){return e-t*Math.floor(e/t)}function _t(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function vt(e){if(!(it(e)||e===null||e===``))return parseInt(e,10)}function yt(e){if(!(it(e)||e===null||e===``))return parseFloat(e)}function bt(e){if(!(it(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function xt(e,t,n=`round`){let r=10**t;switch(n){case`expand`:return e>0?Math.ceil(e*r)/r:Math.floor(e*r)/r;case`trunc`:return Math.trunc(e*r)/r;case`round`:return Math.round(e*r)/r;case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:throw RangeError(`Value rounding ${n} is out of range`)}}function St(e){return e%4==0&&(e%100!=0||e%400==0)}function Ct(e){return St(e)?366:365}function wt(e,t){let n=gt(t-1,12)+1,r=e+(t-n)/12;return n===2?St(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Tt(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Et(e,t,n){return-G(Ye(e,1,t),n)+t-1}function Dt(e,t=4,n=1){let r=Et(e,t,n),i=Et(e+1,t,n);return(Ct(e)-r+i)/7}function Ot(e){return e>99?e:e>We.twoDigitCutoffYear?1900+e:2e3+e}function kt(e,t,n,r=null){let i=new Date(e),a={hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};r&&(a.timeZone=r);let o={timeZoneName:t,...a},s=new Intl.DateTimeFormat(n,o).formatToParts(i).find(e=>e.type.toLowerCase()===`timezonename`);return s?s.value:null}function At(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);let r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function jt(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new s(`Invalid unit value ${e}`);return t}function Mt(e,t){let n={};for(let r in e)if(pt(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=jt(i)}return n}function Nt(e,t){let n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?`+`:`-`;switch(t){case`short`:return`${i}${_t(n,2)}:${_t(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${_t(n,2)}${_t(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function Pt(e){return ft(e,[`hour`,`minute`,`second`,`millisecond`])}var Ft=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],It=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Lt=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function Rt(e){switch(e){case`narrow`:return[...Lt];case`short`:return[...It];case`long`:return[...Ft];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`];case`2-digit`:return[`01`,`02`,`03`,`04`,`05`,`06`,`07`,`08`,`09`,`10`,`11`,`12`];default:return null}}var zt=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],Bt=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],Vt=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function Ht(e){switch(e){case`narrow`:return[...Vt];case`short`:return[...Bt];case`long`:return[...zt];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var Y=[`AM`,`PM`],Ut=[`Before Christ`,`Anno Domini`],Wt=[`BC`,`AD`],Gt=[`B`,`A`];function Kt(e){switch(e){case`narrow`:return[...Gt];case`short`:return[...Wt];case`long`:return[...Ut];default:return null}}function qt(e){return Y[e.hour<12?0:1]}function Jt(e,t){return Ht(t)[e.weekday-1]}function Yt(e,t){return Rt(t)[e.month-1]}function Xt(e,t){return Kt(t)[e.year<0?0:1]}function Zt(e,t,n=`always`,r=!1){let i={years:[`year`,`yr.`],quarters:[`quarter`,`qtr.`],months:[`month`,`mo.`],weeks:[`week`,`wk.`],days:[`day`,`day`,`days`],hours:[`hour`,`hr.`],minutes:[`minute`,`min.`],seconds:[`second`,`sec.`]},a=[`hours`,`minutes`,`seconds`].indexOf(e)===-1;if(n===`auto`&&a){let n=e===`days`;switch(t){case 1:return n?`tomorrow`:`next ${i[e][0]}`;case-1:return n?`yesterday`:`last ${i[e][0]}`;case 0:return n?`today`:`this ${i[e][0]}`}}let o=Object.is(t,-0)||t<0,s=Math.abs(t),c=s===1,l=i[e],u=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return o?`${s} ${u} ago`:`in ${s} ${u}`}function Qt(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var $t={D:f,DD:p,DDD:h,DDDD:g,t:_,tt:v,ttt:y,tttt:b,T:x,TT:S,TTT:C,TTTT:w,f:T,ff:D,fff:A,ffff:j,F:E,FF:O,FFF:ee,FFFF:te},en=class e{static create(t,n={}){return new e(t,n)}static parseFormat(e){let t=null,n=``,r=!1,i=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o===`'`?((n.length>0||r)&&i.push({literal:r||/^\s+$/.test(n),val:n===``?`'`:n}),t=null,n=``,r=!r):r||o===t?n+=o:(n.length>0&&i.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&i.push({literal:r||/^\s+$/.test(n),val:n}),i}static macroTokenToFormatOpts(e){return $t[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return _t(e,t);let r={...this.opts};return t>0&&(r.padTo=t),n&&(r.signDisplay=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(t,n){let r=this.loc.listingMode()===`en`,i=this.loc.outputCalendar&&this.loc.outputCalendar!==`gregory`,a=(e,n)=>this.loc.extract(t,e,n),o=e=>t.isOffsetFixed&&t.offset===0&&e.allowZ?`Z`:t.isValid?t.zone.formatOffset(t.ts,e.format):``,s=()=>r?qt(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?Yt(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?Jt(t,e):a(n?{weekday:e}:{weekday:e,month:`long`,day:`numeric`},`weekday`),u=n=>{let r=e.macroTokenToFormatOpts(n);return r?this.formatWithSystemDefault(t,r):n},d=e=>r?Xt(t,e):a({era:e},`era`);return Qt(e.parseFormat(n),e=>{switch(e){case`S`:return this.num(t.millisecond);case`u`:case`SSS`:return this.num(t.millisecond,3);case`s`:return this.num(t.second);case`ss`:return this.num(t.second,2);case`uu`:return this.num(Math.floor(t.millisecond/10),2);case`uuu`:return this.num(Math.floor(t.millisecond/100));case`m`:return this.num(t.minute);case`mm`:return this.num(t.minute,2);case`h`:return this.num(t.hour%12==0?12:t.hour%12);case`hh`:return this.num(t.hour%12==0?12:t.hour%12,2);case`H`:return this.num(t.hour);case`HH`:return this.num(t.hour,2);case`Z`:return o({format:`narrow`,allowZ:this.opts.allowZ});case`ZZ`:return o({format:`short`,allowZ:this.opts.allowZ});case`ZZZ`:return o({format:`techie`,allowZ:this.opts.allowZ});case`ZZZZ`:return t.zone.offsetName(t.ts,{format:`short`,locale:this.loc.locale});case`ZZZZZ`:return t.zone.offsetName(t.ts,{format:`long`,locale:this.loc.locale});case`z`:return t.zoneName;case`a`:return s();case`d`:return i?a({day:`numeric`},`day`):this.num(t.day);case`dd`:return i?a({day:`2-digit`},`day`):this.num(t.day,2);case`c`:return this.num(t.weekday);case`ccc`:return l(`short`,!0);case`cccc`:return l(`long`,!0);case`ccccc`:return l(`narrow`,!0);case`E`:return this.num(t.weekday);case`EEE`:return l(`short`,!1);case`EEEE`:return l(`long`,!1);case`EEEEE`:return l(`narrow`,!1);case`L`:return i?a({month:`numeric`,day:`numeric`},`month`):this.num(t.month);case`LL`:return i?a({month:`2-digit`,day:`numeric`},`month`):this.num(t.month,2);case`LLL`:return c(`short`,!0);case`LLLL`:return c(`long`,!0);case`LLLLL`:return c(`narrow`,!0);case`M`:return i?a({month:`numeric`},`month`):this.num(t.month);case`MM`:return i?a({month:`2-digit`},`month`):this.num(t.month,2);case`MMM`:return c(`short`,!1);case`MMMM`:return c(`long`,!1);case`MMMMM`:return c(`narrow`,!1);case`y`:return i?a({year:`numeric`},`year`):this.num(t.year);case`yy`:return i?a({year:`2-digit`},`year`):this.num(t.year.toString().slice(-2),2);case`yyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,4);case`yyyyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,6);case`G`:return d(`short`);case`GG`:return d(`long`);case`GGGGG`:return d(`narrow`);case`kk`:return this.num(t.weekYear.toString().slice(-2),2);case`kkkk`:return this.num(t.weekYear,4);case`W`:return this.num(t.weekNumber);case`WW`:return this.num(t.weekNumber,2);case`n`:return this.num(t.localWeekNumber);case`nn`:return this.num(t.localWeekNumber,2);case`ii`:return this.num(t.localWeekYear.toString().slice(-2),2);case`iiii`:return this.num(t.localWeekYear,4);case`o`:return this.num(t.ordinal);case`ooo`:return this.num(t.ordinal,3);case`q`:return this.num(t.quarter);case`qq`:return this.num(t.quarter,2);case`X`:return this.num(Math.floor(t.ts/1e3));case`x`:return this.num(t.ts);default:return u(e)}})}formatDurationFromString(t,n){let r=this.opts.signMode===`negativeLargestOnly`?-1:1,i=e=>{switch(e[0]){case`S`:return`milliseconds`;case`s`:return`seconds`;case`m`:return`minutes`;case`h`:return`hours`;case`d`:return`days`;case`w`:return`weeks`;case`M`:return`months`;case`y`:return`years`;default:return null}},a=(e,t)=>n=>{let a=i(n);if(a){let i=t.isNegativeDuration&&a!==t.largestUnit?r:1,o;return o=this.opts.signMode===`negativeLargestOnly`&&a!==t.largestUnit?`never`:this.opts.signMode===`all`?`always`:`auto`,this.num(e.get(a)*i,n.length,o)}else return n},o=e.parseFormat(n),s=o.reduce((e,{literal:t,val:n})=>t?e:e.concat(n),[]),c=t.shiftTo(...s.map(i).filter(e=>e));return Qt(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},tn=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function nn(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function rn(...e){return t=>e.reduce(([e,n,r],i)=>{let[a,o,s]=i(t,r);return[{...e,...a},o||n,s]},[{},null,1]).slice(0,2)}function an(e,...t){if(e==null)return[null,null];for(let[n,r]of t){let t=n.exec(e);if(t)return r(t)}return[null,null]}function on(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=vt(t[n+i]);return[r,null,n+i]}}var sn=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,cn=`(?:${sn.source}?(?:\\[(${tn.source})\\])?)?`,ln=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,un=RegExp(`${ln.source}${cn}`),dn=RegExp(`(?:[Tt]${un.source})?`),fn=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,X=/(\d{4})-?W(\d\d)(?:-?(\d))?/,pn=/(\d{4})-?(\d{3})/,Z=on(`weekYear`,`weekNumber`,`weekDay`),mn=on(`year`,`ordinal`),hn=/(\d{4})-(\d\d)-(\d\d)/,gn=RegExp(`${ln.source} ?(?:${sn.source}|(${tn.source}))?`),_n=RegExp(`(?: ${gn.source})?`);function vn(e,t,n){let r=e[t];return it(r)?n:vt(r)}function yn(e,t){return[{year:vn(e,t),month:vn(e,t+1,1),day:vn(e,t+2,1)},null,t+3]}function bn(e,t){return[{hours:vn(e,t,0),minutes:vn(e,t+1,0),seconds:vn(e,t+2,0),milliseconds:bt(e[t+3])},null,t+4]}function xn(e,t){let n=!e[t]&&!e[t+1],r=At(e[t+1],e[t+2]);return[{},n?null:Ae.instance(r),t+3]}function Sn(e,t){return[{},e[t]?F.create(e[t]):null,t+1]}var Cn=RegExp(`^T?${ln.source}$`),wn=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function Tn(e){let[t,n,r,i,a,o,s,c,l]=e,u=t[0]===`-`,d=c&&c[0]===`-`,f=(e,t=!1)=>e!==void 0&&(t||e&&u)?-e:e;return[{years:f(yt(n)),months:f(yt(r)),weeks:f(yt(i)),days:f(yt(a)),hours:f(yt(o)),minutes:f(yt(s)),seconds:f(yt(c),c===`-0`),milliseconds:f(bt(l),d)}]}var En={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dn(e,t,n,r,i,a,o){let s={year:t.length===2?Ot(vt(t)):vt(t),month:It.indexOf(n)+1,day:vt(r),hour:vt(i),minute:vt(a)};return o&&(s.second=vt(o)),e&&(s.weekday=e.length>3?zt.indexOf(e)+1:Bt.indexOf(e)+1),s}var On=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function kn(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=Dn(t,i,r,n,a,o,s),p;return p=c?En[c]:l?0:At(u,d),[f,new Ae(p)]}function An(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var jn=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Mn=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Nn=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Pn(e){let[,t,n,r,i,a,o,s]=e;return[Dn(t,i,r,n,a,o,s),Ae.utcInstance]}function Fn(e){let[,t,n,r,i,a,o,s]=e;return[Dn(t,s,n,r,i,a,o),Ae.utcInstance]}var In=nn(fn,dn),Ln=nn(X,dn),Rn=nn(pn,dn),zn=nn(un),Bn=rn(yn,bn,xn,Sn),Vn=rn(Z,bn,xn,Sn),Hn=rn(mn,bn,xn,Sn),Un=rn(bn,xn,Sn);function Wn(e){return an(e,[In,Bn],[Ln,Vn],[Rn,Hn],[zn,Un])}function Gn(e){return an(An(e),[On,kn])}function Kn(e){return an(e,[jn,Pn],[Mn,Pn],[Nn,Fn])}function qn(e){return an(e,[wn,Tn])}var Jn=rn(bn);function Yn(e){return an(e,[Cn,Jn])}var Xn=nn(hn,_n),Zn=nn(gn),Qn=rn(bn,xn,Sn);function $n(e){return an(e,[Xn,Bn],[Zn,Qn])}var er=`Invalid Duration`,tr={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},nr={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...tr},rr=146097/400,ir=146097/4800,ar={years:{quarters:4,months:12,weeks:rr/7,days:rr,hours:rr*24,minutes:rr*24*60,seconds:rr*24*60*60,milliseconds:rr*24*60*60*1e3},quarters:{months:3,weeks:rr/28,days:rr/4,hours:rr*24/4,minutes:rr*24*60/4,seconds:rr*24*60*60/4,milliseconds:rr*24*60*60*1e3/4},months:{weeks:ir/7,days:ir,hours:ir*24,minutes:ir*24*60,seconds:ir*24*60*60,milliseconds:ir*24*60*60*1e3},...tr},or=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],sr=or.slice(0).reverse();function cr(e,t,n=!1){return new fr({values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix})}function lr(e,t){let n=t.milliseconds??0;for(let r of sr.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function ur(e,t){let n=lr(e,t)<0?-1:1;or.reduceRight((r,i)=>{if(it(t[i]))return r;if(r){let a=t[r]*n,o=e[i][r],s=Math.floor(a/o);t[i]+=s*n,t[r]-=s*o*n}return i},null),or.reduce((n,r)=>{if(it(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function dr(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var fr=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?ar:nr;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||ke.create(),this.conversionAccuracy=t?`longterm`:`casual`,this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,n){return e.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(typeof t!=`object`||!t)throw new s(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:Mt(t,e.normalizeUnit),loc:ke.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(J(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new s(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=qn(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){let[r]=Yn(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new s(`need to specify a reason the Duration is invalid`);let r=t instanceof Ge?t:new Ge(t,n);if(We.throwOnInvalid)throw new i(r);return new e({invalid:r})}static normalizeUnit(e){let t={year:`years`,years:`years`,quarter:`quarters`,quarters:`quarters`,month:`months`,months:`months`,week:`weeks`,weeks:`weeks`,day:`days`,days:`days`,hour:`hours`,hours:`hours`,minute:`minutes`,minutes:`minutes`,second:`seconds`,seconds:`seconds`,millisecond:`milliseconds`,milliseconds:`milliseconds`}[e&&e.toLowerCase()];if(!t)throw new o(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?en.create(this.loc,n).formatDurationFromString(this,e):er}toHuman(e={}){if(!this.isValid)return er;let t=e.showZeros!==!1,n=or.map(n=>{let r=this.values[n];return it(r)||r===0&&!t?null:this.loc.numberFormatter({style:`unit`,unitDisplay:`long`,...e,unit:n.slice(0,-1)}).format(r)}).filter(e=>e);return this.loc.listFormatter({type:`conjunction`,style:e.listStyle||`narrow`,...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e=`P`;return this.years!==0&&(e+=this.years+`Y`),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+`M`),this.weeks!==0&&(e+=this.weeks+`W`),this.days!==0&&(e+=this.days+`D`),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+=`T`),this.hours!==0&&(e+=this.hours+`H`),this.minutes!==0&&(e+=this.minutes+`M`),(this.seconds!==0||this.milliseconds!==0)&&(e+=xt(this.seconds+this.milliseconds/1e3,3)+`S`),e===`P`&&(e+=`T0S`),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:`extended`,...e,includeOffset:!1},_i.fromMillis(t,{zone:`UTC`}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?lr(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t),r={};for(let e of or)(pt(n.values,e)||pt(this.values,e))&&(r[e]=n.get(e)+this.get(e));return cr(this,{values:r},!0)}minus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=jt(e(this.values[n],n));return cr(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...Mt(t,e.normalizeUnit)};return cr(this,{values:n})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){let i={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n};return cr(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return ur(this.matrix,e),cr(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=dr(this.normalize().shiftToAll().toObject());return cr(this,{values:e},!0)}shiftTo(...t){if(!this.isValid||t.length===0)return this;t=t.map(t=>e.normalizeUnit(t));let n={},r={},i=this.toObject(),a;for(let e of or)if(t.indexOf(e)>=0){a=e;let t=0;for(let n in r)t+=this.matrix[n][e]*r[n],r[n]=0;J(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else J(i[e])&&(r[e]=i[e]);for(let e in r)r[e]!==0&&(n[a]+=e===a?r[e]:r[e]/this.matrix[a][e]);return ur(this.matrix,n),cr(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo(`years`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return cr(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=dr(this.values);return cr(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(e,t){return e===void 0||e===0?t===void 0||t===0:e===t}for(let n of or)if(!t(this.values[n],e.values[n]))return!1;return!0}},pr=`Invalid Interval`;function mr(e,t){return!e||!e.isValid?hr.invalid(`missing or invalid start`):!t||!t.isValid?hr.invalid(`missing or invalid end`):t<e?hr.invalid(`end before start`,`The end of an interval must be after its start, but you had start=${e.toISO()} and end=${t.toISO()}`):null}var hr=class e{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(t,n=null){if(!t)throw new s(`need to specify a reason the Interval is invalid`);let i=t instanceof Ge?t:new Ge(t,n);if(We.throwOnInvalid)throw new r(i);return new e({invalid:i})}static fromDateTimes(t,n){let r=vi(t),i=vi(n);return mr(r,i)??new e({start:r,end:i})}static after(t,n){let r=fr.fromDurationLike(n),i=vi(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=fr.fromDurationLike(n),i=vi(t);return e.fromDateTimes(i.minus(r),i)}static fromISO(t,n){let[r,i]=(t||``).split(`/`,2);if(r&&i){let t,a;try{t=_i.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=_i.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=fr.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=fr.fromISO(r,n);if(t.isValid)return e.before(o,t)}}return e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e=`milliseconds`){return this.isValid?this.toDuration(e).get(e):NaN}count(e=`milliseconds`,t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),r;return r=t!=null&&t.useLocaleWeeks?this.end.reconfigure({locale:n.locale}):this.end,r=r.startOf(e,t),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:t,end:n}={}){return this.isValid?e.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];let n=t.map(vi).filter(e=>this.contains(e)).sort((e,t)=>e.toMillis()-t.toMillis()),r=[],{s:i}=this,a=0;for(;i<this.e;){let t=n[a]||this.e,o=+t>+this.e?this.e:t;r.push(e.fromDateTimes(i,o)),i=o,a+=1}return r}splitBy(t){let n=fr.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as(`milliseconds`)===0)return[];let{s:r}=this,i=1,a,o=[];for(;r<this.e;){let t=this.start.plus(n.mapUnits(e=>e*i));a=+t>+this.e?this.e:t,o.push(e.fromDateTimes(r,a)),r=a,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(t){if(!this.isValid)return this;let n=this.s>t.s?this.s:t.s,r=this.e<t.e?this.e:t.e;return n>=r?null:e.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;let n=this.s<t.s?this.s:t.s,r=this.e>t.e?this.e:t.e;return e.fromDateTimes(n,r)}static merge(e){let[t,n]=e.sort((e,t)=>e.s-t.s).reduce(([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n],[[],null]);return n&&t.push(n),t}static xor(t){let n=null,r=0,i=[],a=t.map(e=>[{time:e.s,type:`s`},{time:e.e,type:`e`}]),o=Array.prototype.concat(...a).sort((e,t)=>e.time-t.time);for(let t of o)r+=t.type===`s`?1:-1,r===1?n=t.time:(n&&+n!=+t.time&&i.push(e.fromDateTimes(n,t.time)),n=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:pr}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?en.create(this.s.loc.clone(t),e).formatInterval(this):pr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:pr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:pr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:pr}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:pr}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):fr.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},gr=class{static hasDST(e=We.defaultZone){let t=_i.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return F.isValidZone(e)}static normalizeZone(e){return Me(e,We.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||ke.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||ke.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||ke.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||ke.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||ke.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||ke.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||ke.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return ke.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return ke.create(t,null,`gregory`).eras(e)}static features(){return{relative:ct(),localeWeek:lt()}}};function _r(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(fr.fromMillis(r).as(`days`))}function vr(e,t,n){let r=[[`years`,(e,t)=>t.year-e.year],[`quarters`,(e,t)=>t.quarter-e.quarter+(t.year-e.year)*4],[`months`,(e,t)=>t.month-e.month+(t.year-e.year)*12],[`weeks`,(e,t)=>{let n=_r(e,t);return(n-n%7)/7}],[`days`,_r]],i={},a=e,o,s;for(let[c,l]of r)n.indexOf(c)>=0&&(o=c,i[c]=l(e,t),s=a.plus(i),s>t?(i[c]--,e=a.plus(i),e>t&&(s=e,i[c]--,e=a.plus(i))):e=s);return[e,i,s,o]}function yr(e,t,n,r){let[i,a,o,s]=vr(e,t,n),c=t-i,l=n.filter(e=>[`hours`,`minutes`,`seconds`,`milliseconds`].indexOf(e)>=0);l.length===0&&(o<t&&(o=i.plus({[s]:1})),o!==i&&(a[s]=(a[s]||0)+c/(o-i)));let u=fr.fromObject(a,r);return l.length>0?fr.fromMillis(c,r).shiftTo(...l).plus(u):u}var br=`missing Intl.DateTimeFormat.formatToParts support`;function xr(e,t=e=>e){return{regex:e,deser:([e])=>t(Ie(e))}}var Sr=`[ \xA0]`,Cr=new RegExp(Sr,`g`);function wr(e){return e.replace(/\./g,`\\.?`).replace(Cr,Sr)}function Tr(e){return e.replace(/\./g,``).replace(Cr,` `).toLowerCase()}function Er(e,t){return e===null?null:{regex:RegExp(e.map(wr).join(`|`)),deser:([n])=>e.findIndex(e=>Tr(n)===Tr(e))+t}}function Dr(e,t){return{regex:e,deser:([,e,t])=>At(e,t),groups:t}}function Or(e){return{regex:e,deser:([e])=>e}}function kr(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function Ar(e,t){let n=Re(t),r=Re(t,`{2}`),i=Re(t,`{3}`),a=Re(t,`{4}`),o=Re(t,`{6}`),s=Re(t,`{1,2}`),c=Re(t,`{1,3}`),l=Re(t,`{1,6}`),u=Re(t,`{1,9}`),d=Re(t,`{2,4}`),f=Re(t,`{4,6}`),p=e=>({regex:RegExp(kr(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return Er(t.eras(`short`),0);case`GG`:return Er(t.eras(`long`),0);case`y`:return xr(l);case`yy`:return xr(d,Ot);case`yyyy`:return xr(a);case`yyyyy`:return xr(f);case`yyyyyy`:return xr(o);case`M`:return xr(s);case`MM`:return xr(r);case`MMM`:return Er(t.months(`short`,!0),1);case`MMMM`:return Er(t.months(`long`,!0),1);case`L`:return xr(s);case`LL`:return xr(r);case`LLL`:return Er(t.months(`short`,!1),1);case`LLLL`:return Er(t.months(`long`,!1),1);case`d`:return xr(s);case`dd`:return xr(r);case`o`:return xr(c);case`ooo`:return xr(i);case`HH`:return xr(r);case`H`:return xr(s);case`hh`:return xr(r);case`h`:return xr(s);case`mm`:return xr(r);case`m`:return xr(s);case`q`:return xr(s);case`qq`:return xr(r);case`s`:return xr(s);case`ss`:return xr(r);case`S`:return xr(c);case`SSS`:return xr(i);case`u`:return Or(u);case`uu`:return Or(s);case`uuu`:return xr(n);case`a`:return Er(t.meridiems(),0);case`kkkk`:return xr(a);case`kk`:return xr(d,Ot);case`W`:return xr(s);case`WW`:return xr(r);case`E`:case`c`:return xr(n);case`EEE`:return Er(t.weekdays(`short`,!1),1);case`EEEE`:return Er(t.weekdays(`long`,!1),1);case`ccc`:return Er(t.weekdays(`short`,!0),1);case`cccc`:return Er(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return Dr(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return Dr(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return Or(/[a-z_+-/]{1,256}?/i);case` `:return Or(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:br};return m.token=e,m}var jr={year:{"2-digit":`yy`,numeric:`yyyyy`},month:{numeric:`M`,"2-digit":`MM`,short:`MMM`,long:`MMMM`},day:{numeric:`d`,"2-digit":`dd`},weekday:{short:`EEE`,long:`EEEE`},dayperiod:`a`,dayPeriod:`a`,hour12:{numeric:`h`,"2-digit":`hh`},hour24:{numeric:`H`,"2-digit":`HH`},minute:{numeric:`m`,"2-digit":`mm`},second:{numeric:`s`,"2-digit":`ss`},timeZoneName:{long:`ZZZZZ`,short:`ZZZ`}};function Mr(e,t,n){let{type:r,value:i}=e;if(r===`literal`){let e=/^\s+$/.test(i);return{literal:!e,val:e?` `:i}}let a=t[r],o=r;r===`hour`&&(o=t.hour12==null?t.hourCycle==null?n.hour12?`hour12`:`hour24`:t.hourCycle===`h11`||t.hourCycle===`h12`?`hour12`:`hour24`:t.hour12?`hour12`:`hour24`);let s=jr[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function Nr(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function Pr(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(pt(n,i)){let a=n[i],o=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(r.slice(t,t+o))),t+=o}return[r,e]}else return[r,{}]}function Fr(e){let t=e=>{switch(e){case`S`:return`millisecond`;case`s`:return`second`;case`m`:return`minute`;case`h`:case`H`:return`hour`;case`d`:return`day`;case`o`:return`ordinal`;case`L`:case`M`:return`month`;case`y`:return`year`;case`E`:case`c`:return`weekday`;case`W`:return`weekNumber`;case`k`:return`weekYear`;case`q`:return`quarter`;default:return null}},n=null,r;return it(e.z)||(n=F.create(e.z)),it(e.Z)||(n||=new Ae(e.Z),r=e.Z),it(e.q)||(e.M=(e.q-1)*3+1),it(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),it(e.u)||(e.S=bt(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var Ir=null;function Lr(){return Ir||=_i.fromMillis(1555555555555),Ir}function Rr(e,t){if(e.literal)return e;let n=Ur(en.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function zr(e,t){return Array.prototype.concat(...e.map(e=>Rr(e,t)))}var Br=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=zr(en.parseFormat(t),e),this.units=this.tokens.map(t=>Ar(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=Nr(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=Pr(e,this.regex,this.handlers),[r,i,o]=n?Fr(n):[null,null,void 0];if(pt(n,`a`)&&pt(n,`H`))throw new a(`Can't include meridiem when specifying 24-hour format`);return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:r,zone:i,specificOffset:o}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Vr(e,t,n){return new Br(e,n).explainFromTokens(t)}function Hr(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=Vr(e,t,n);return[r,i,a,o]}function Ur(e,t){if(!e)return null;let n=en.create(t,e).dtFormatter(Lr()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>Mr(t,e,i))}var Wr=`Invalid DateTime`,Gr=864e13;function Kr(e){return new Ge(`unsupported zone`,`the zone "${e.name}" is not supported`)}function qr(e){return e.weekData===null&&(e.weekData=Ze(e.c)),e.weekData}function Jr(e){return e.localWeekData===null&&(e.localWeekData=Ze(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Yr(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new _i({...n,...t,old:n})}function Xr(e,t,n){let r=e-t*60*1e3,i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;let a=n.offset(r);return i===a?[r,i]:[e-Math.min(i,a)*60*1e3,Math.max(i,a)]}function Zr(e,t){e+=t*60*1e3;let n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Qr(e,t,n){return Xr(Tt(e),t,n)}function $r(e,t){let n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,a={...e.c,year:r,month:i,day:Math.min(e.c.day,wt(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=fr.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as(`milliseconds`),[s,c]=Xr(Tt(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function ei(e,t,n,r,i,a){let{setZone:o,zone:s}=n;if(e&&Object.keys(e).length!==0||t){let r=t||s,i=_i.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return _i.invalid(new Ge(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function ti(e,t,n=!0){return e.isValid?en.create(ke.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ni(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=_t(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=_t(e.c.month),n===`month`)return i;i+=`-`}else if(i+=_t(e.c.month),n===`month`)return i;return i+=_t(e.c.day),i}function ri(e,t,n,r,i,a,o){let s=!n||e.c.millisecond!==0||e.c.second!==0,c=``;switch(o){case`day`:case`month`:case`year`:break;default:if(c+=_t(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=_t(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=_t(e.c.second))}else{if(c+=_t(e.c.minute),o===`minute`)break;s&&(c+=_t(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=_t(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=_t(Math.trunc(-e.o/60)),c+=`:`,c+=_t(Math.trunc(-e.o%60))):(c+=`+`,c+=_t(Math.trunc(e.o/60)),c+=`:`,c+=_t(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var ii={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},ai={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},oi={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Q=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],si=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],ci=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function li(e){let t={year:`year`,years:`year`,month:`month`,months:`month`,day:`day`,days:`day`,hour:`hour`,hours:`hour`,minute:`minute`,minutes:`minute`,quarter:`quarter`,quarters:`quarter`,second:`second`,seconds:`second`,millisecond:`millisecond`,milliseconds:`millisecond`,weekday:`weekday`,weekdays:`weekday`,weeknumber:`weekNumber`,weeksnumber:`weekNumber`,weeknumbers:`weekNumber`,weekyear:`weekYear`,weekyears:`weekYear`,ordinal:`ordinal`}[e.toLowerCase()];if(!t)throw new o(e);return t}function ui(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return li(e)}}function di(e){if(hi===void 0&&(hi=We.now()),e.type!==`iana`)return e.offset(hi);let t=e.name,n=gi.get(t);return n===void 0&&(n=e.offset(hi),gi.set(t,n)),n}function fi(e,t){let n=Me(t.zone,We.defaultZone);if(!n.isValid)return _i.invalid(Kr(n));let r=ke.fromObject(t),i,a;if(it(e.year))i=We.now();else{for(let t of Q)it(e[t])&&(e[t]=ii[t]);let t=nt(e)||rt(e);if(t)return _i.invalid(t);let r=di(n);[i,a]=Qr(e,r,n)}return new _i({ts:i,zone:n,loc:r,o:a})}function pi(e,t,n){let r=it(n.round)?!0:n.round,i=it(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=xt(e,r||n.calendary?0:2,n.calendary?`round`:i),t.loc.clone(n).relFormatter(n).format(e,a)),o=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return a(o(n.unit),n.unit);for(let e of n.units){let t=o(e);if(Math.abs(t)>=1)return a(t,e)}return a(e>t?-0:0,n.units[n.units.length-1])}function mi(e){let t={},n;return e.length>0&&typeof e[e.length-1]==`object`?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}var hi,gi=new Map,_i=class e{constructor(e){let t=e.zone||We.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Ge(`invalid input`):null)||(t.isValid?null:Kr(t));this.ts=it(e.ts)?We.now():e.ts;let r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,i]=[e.old.c,e.old.o];else{let a=J(e.o)&&!e.old?e.o:t.offset(this.ts);r=Zr(this.ts,a),n=Number.isNaN(r.year)?new Ge(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||ke.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[e,t]=mi(arguments),[n,r,i,a,o,s,c]=t;return fi({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=mi(arguments),[n,r,i,a,o,s,c]=t;return e.zone=Ae.utcInstance,fi({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=st(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=Me(n.zone,We.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:ke.fromObject(n)}):e.invalid(Kr(i))}static fromMillis(t,n={}){if(!J(t))throw new s(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`);return t<-Gr||t>Gr?e.invalid(`Timestamp out of range`):new e({ts:t,zone:Me(n.zone,We.defaultZone),loc:ke.fromObject(n)})}static fromSeconds(t,n={}){if(J(t))return new e({ts:t*1e3,zone:Me(n.zone,We.defaultZone),loc:ke.fromObject(n)});throw new s(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=Me(n.zone,We.defaultZone);if(!r.isValid)return e.invalid(Kr(r));let i=ke.fromObject(n),o=Mt(t,ui),{minDaysInFirstWeek:s,startOfWeek:c}=$e(o,i),l=We.now(),u=it(n.specificOffset)?r.offset(l):n.specificOffset,d=!it(o.ordinal),f=!it(o.year),p=!it(o.month)||!it(o.day),m=f||p,h=o.weekYear||o.weekNumber;if((m||d)&&h)throw new a(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(p&&d)throw new a(`Can't mix ordinal dates with month/day`);let g=h||o.weekday&&!m,_,v,y=Zr(l,u);g?(_=si,v=ai,y=Ze(y,s,c)):d?(_=ci,v=oi,y=q(y)):(_=Q,v=ii);let b=!1;for(let e of _){let t=o[e];it(t)?b?o[e]=v[e]:o[e]=y[e]:b=!0}let x=(g?et(o,s,c):d?tt(o):nt(o))||rt(o);if(x)return e.invalid(x);let[S,C]=Qr(g?K(o,s,c):d?Qe(o):o,u,r),w=new e({ts:S,zone:r,o:C,loc:i});return o.weekday&&m&&t.weekday!==w.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${o.weekday} and a date of ${w.toISO()}`):w.isValid?w:e.invalid(w.invalid)}static fromISO(e,t={}){let[n,r]=Wn(e);return ei(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=Gn(e);return ei(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=Kn(e);return ei(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(it(t)||it(n))throw new s(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,c,l,u]=Hr(ke.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return u?e.invalid(u):ei(o,c,r,`format ${n}`,t,l)}static fromString(t,n,r={}){return e.fromFormat(t,n,r)}static fromSQL(e,t={}){let[n,r]=$n(e);return ei(n,r,t,`SQL`,e)}static invalid(t,r=null){if(!t)throw new s(`need to specify a reason the DateTime is invalid`);let i=t instanceof Ge?t:new Ge(t,r);if(We.throwOnInvalid)throw new n(i);return new e({invalid:i})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=Ur(e,ke.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return zr(en.parseFormat(e),ke.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){hi=void 0,gi.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?qr(this).weekYear:NaN}get weekNumber(){return this.isValid?qr(this).weekNumber:NaN}get weekday(){return this.isValid?qr(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Jr(this).weekday:NaN}get localWeekNumber(){return this.isValid?Jr(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Jr(this).weekYear:NaN}get ordinal(){return this.isValid?q(this.c).ordinal:NaN}get monthShort(){return this.isValid?gr.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?gr.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?gr.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?gr.weekdays(`long`,{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:`short`,locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:`long`,locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=Tt(this.c),r=this.zone.offset(n-e),i=this.zone.offset(n+e),a=this.zone.offset(n-r*t),o=this.zone.offset(n-i*t);if(a===o)return[this];let s=n-a*t,c=n-o*t,l=Zr(s,a),u=Zr(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[Yr(this,{ts:s}),Yr(this,{ts:c})]:[this]}get isInLeapYear(){return St(this.year)}get daysInMonth(){return wt(this.year,this.month)}get daysInYear(){return this.isValid?Ct(this.year):NaN}get weeksInWeekYear(){return this.isValid?Dt(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Dt(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=en.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(Ae.instance(e),t)}toLocal(){return this.setZone(We.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Me(t,We.defaultZone),t.equals(this.zone))return this;if(t.isValid){let e=this.ts;if(n||r){let n=t.offset(this.ts),r=this.toObject();[e]=Qr(r,n,t)}return Yr(this,{ts:e,zone:t})}else return e.invalid(Kr(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return Yr(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Mt(e,ui),{minDaysInFirstWeek:n,startOfWeek:r}=$e(t,this.loc),i=!it(t.weekYear)||!it(t.weekNumber)||!it(t.weekday),o=!it(t.ordinal),s=!it(t.year),c=!it(t.month)||!it(t.day),l=s||c,u=t.weekYear||t.weekNumber;if((l||o)&&u)throw new a(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(c&&o)throw new a(`Can't mix ordinal dates with month/day`);let d;i?d=K({...Ze(this.c,n,r),...t},n,r):it(t.ordinal)?(d={...this.toObject(),...t},it(t.day)&&(d.day=Math.min(wt(d.year,d.month),d.day))):d=Qe({...q(this.c),...t});let[f,p]=Qr(d,this.o,this.zone);return Yr(this,{ts:f,o:p})}plus(e){if(!this.isValid)return this;let t=fr.fromDurationLike(e);return Yr(this,$r(this,t))}minus(e){if(!this.isValid)return this;let t=fr.fromDurationLike(e).negate();return Yr(this,$r(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=fr.normalizeUnit(e);switch(r){case`years`:n.month=1;case`quarters`:case`months`:n.day=1;case`weeks`:case`days`:n.hour=0;case`hours`:n.minute=0;case`minutes`:n.second=0;case`seconds`:n.millisecond=0;break}if(r===`weeks`)if(t){let e=this.loc.getStartOfWeek(),{weekday:t}=this;t<e&&(n.weekNumber=this.weekNumber-1),n.weekday=e}else n.weekday=1;return r===`quarters`&&(n.month=(Math.ceil(this.month/3)-1)*3+1),this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?en.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Wr}toLocaleString(e=f,t={}){return this.isValid?en.create(this.loc.clone(t),e).formatDateTime(this):Wr}toLocaleParts(e={}){return this.isValid?en.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e=`extended`,suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:i=!1,precision:a=`milliseconds`}={}){if(!this.isValid)return null;a=li(a);let o=e===`extended`,s=ni(this,o,a);return Q.indexOf(a)>=3&&(s+=`T`),s+=ri(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?ni(this,e===`extended`,li(t)):null}toISOWeekDate(){return ti(this,`kkkk-'W'WW-c`)}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:i=!1,format:a=`extended`,precision:o=`milliseconds`}={}){return this.isValid?(o=li(o),(r&&Q.indexOf(o)>=3?`T`:``)+ri(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return ti(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return ti(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?ni(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let r=`HH:mm:ss.SSS`;return(t||e)&&(n&&(r+=` `),t?r+=`z`:e&&(r+=`ZZ`)),ti(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Wr}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t=`milliseconds`,n={}){if(!this.isValid||!e.isValid)return fr.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=ut(t).map(fr.normalizeUnit),a=e.valueOf()>this.valueOf(),o=yr(a?this:e,a?e:this,i,r);return a?o.negate():o}diffNow(t=`milliseconds`,n={}){return this.diff(e.now(),t,n)}until(e){return this.isValid?hr.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(t,n)<=r&&r<=i.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(t={}){if(!this.isValid)return null;let n=t.base||e.fromObject({},{zone:this.zone}),r=t.padding?this<n?-t.padding:t.padding:0,i=[`years`,`months`,`days`,`hours`,`minutes`,`seconds`],a=t.unit;return Array.isArray(t.unit)&&(i=t.unit,a=void 0),pi(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?pi(t.base||e.fromObject({},{zone:this.zone}),this,{...t,numeric:`auto`,units:[`years`,`months`,`days`],calendary:!0}):null}static min(...t){if(!t.every(e.isDateTime))throw new s(`min requires all arguments be DateTimes`);return dt(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new s(`max requires all arguments be DateTimes`);return dt(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return Vr(ke.fromOpts({locale:r,numberingSystem:i,defaultToEN:!0}),e,t)}static fromStringExplain(t,n,r={}){return e.fromFormatExplain(t,n,r)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:r=null}=t;return new Br(ke.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(it(t)||it(n))throw new s(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=ke.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new s(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${n.locale}`);let{result:c,zone:l,specificOffset:u,invalidReason:d}=n.explainFromTokens(t);return d?e.invalid(d):ei(c,l,r,`format ${n.format}`,t,u)}static get DATE_SHORT(){return f}static get DATE_MED(){return p}static get DATE_MED_WITH_WEEKDAY(){return m}static get DATE_FULL(){return h}static get DATE_HUGE(){return g}static get TIME_SIMPLE(){return _}static get TIME_WITH_SECONDS(){return v}static get TIME_WITH_SHORT_OFFSET(){return y}static get TIME_WITH_LONG_OFFSET(){return b}static get TIME_24_SIMPLE(){return x}static get TIME_24_WITH_SECONDS(){return S}static get TIME_24_WITH_SHORT_OFFSET(){return C}static get TIME_24_WITH_LONG_OFFSET(){return w}static get DATETIME_SHORT(){return T}static get DATETIME_SHORT_WITH_SECONDS(){return E}static get DATETIME_MED(){return D}static get DATETIME_MED_WITH_SECONDS(){return O}static get DATETIME_MED_WITH_WEEKDAY(){return k}static get DATETIME_FULL(){return A}static get DATETIME_FULL_WITH_SECONDS(){return ee}static get DATETIME_HUGE(){return j}static get DATETIME_HUGE_WITH_SECONDS(){return te}};function vi(e){if(_i.isDateTime(e))return e;if(e&&e.valueOf&&J(e.valueOf()))return _i.fromJSDate(e);if(e&&typeof e==`object`)return _i.fromObject(e);throw new s(`Unknown datetime argument: ${e}, of type ${typeof e}`)}e.DateTime=_i,e.Duration=fr,e.FixedOffsetZone=Ae,e.IANAZone=F,e.Info=gr,e.Interval=hr,e.InvalidZone=je,e.Settings=We,e.SystemZone=re,e.VERSION=`3.7.2`,e.Zone=M})),tD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronDate=e.DAYS_IN_MONTH=e.DateMathOp=e.TimeUnit=void 0;var t=eD(),n;(function(e){e.Second=`Second`,e.Minute=`Minute`,e.Hour=`Hour`,e.Day=`Day`,e.Month=`Month`,e.Year=`Year`})(n||(e.TimeUnit=n={}));var r;(function(e){e.Add=`Add`,e.Subtract=`Subtract`})(r||(e.DateMathOp=r={})),e.DAYS_IN_MONTH=Object.freeze([31,29,31,30,31,30,31,31,30,31,30,31]);var i=class i{#e;#t=null;#n=null;#r={add:{[n.Year]:this.addYear.bind(this),[n.Month]:this.addMonth.bind(this),[n.Day]:this.addDay.bind(this),[n.Hour]:this.addHour.bind(this),[n.Minute]:this.addMinute.bind(this),[n.Second]:this.addSecond.bind(this)},subtract:{[n.Year]:this.subtractYear.bind(this),[n.Month]:this.subtractMonth.bind(this),[n.Day]:this.subtractDay.bind(this),[n.Hour]:this.subtractHour.bind(this),[n.Minute]:this.subtractMinute.bind(this),[n.Second]:this.subtractSecond.bind(this)}};constructor(e,n){let r={zone:n};if(e?e instanceof i?(this.#e=e.#e,this.#t=e.#t,this.#n=e.#n):e instanceof Date?this.#e=t.DateTime.fromJSDate(e,r):typeof e==`number`?this.#e=t.DateTime.fromMillis(e,r):(this.#e=t.DateTime.fromISO(e,r),this.#e.isValid||(this.#e=t.DateTime.fromRFC2822(e,r)),this.#e.isValid||(this.#e=t.DateTime.fromSQL(e,r)),this.#e.isValid||(this.#e=t.DateTime.fromFormat(e,`EEE, d MMM yyyy HH:mm:ss`,r))):this.#e=t.DateTime.local(),!this.#e.isValid)throw Error(`CronDate: unhandled timestamp: ${e}`);n&&n!==this.#e.zoneName&&(this.#e=this.#e.setZone(n))}static#i(e){return e%4==0&&e%100!=0||e%400==0}get dstStart(){return this.#t}set dstStart(e){this.#t=e}get dstEnd(){return this.#n}set dstEnd(e){this.#n=e}addYear(){this.#e=this.#e.plus({years:1})}addMonth(){this.#e=this.#e.plus({months:1}).startOf(`month`)}addDay(){this.#e=this.#e.plus({days:1}).startOf(`day`)}addHour(){this.#e=this.#e.plus({hours:1}).startOf(`hour`)}addMinute(){this.#e=this.#e.plus({minutes:1}).startOf(`minute`)}addSecond(){this.#e=this.#e.plus({seconds:1})}subtractYear(){this.#e=this.#e.minus({years:1})}subtractMonth(){this.#e=this.#e.minus({months:1}).endOf(`month`).startOf(`second`)}subtractDay(){this.#e=this.#e.minus({days:1}).endOf(`day`).startOf(`second`)}subtractHour(){this.#e=this.#e.minus({hours:1}).endOf(`hour`).startOf(`second`)}subtractMinute(){this.#e=this.#e.minus({minutes:1}).endOf(`minute`).startOf(`second`)}subtractSecond(){this.#e=this.#e.minus({seconds:1})}addUnit(e){this.#r.add[e]()}subtractUnit(e){this.#r.subtract[e]()}invokeDateOperation(e,t){if(e===r.Add){this.addUnit(t);return}if(e===r.Subtract){this.subtractUnit(t);return}throw Error(`Invalid verb: ${e}`)}getDate(){return this.#e.day}getFullYear(){return this.#e.year}getDay(){let e=this.#e.weekday;return e===7?0:e}getMonth(){return this.#e.month-1}getHours(){return this.#e.hour}getMinutes(){return this.#e.minute}getSeconds(){return this.#e.second}getMilliseconds(){return this.#e.millisecond}getUTCOffset(){return this.#e.offset}setStartOfDay(){this.#e=this.#e.startOf(`day`)}setEndOfDay(){this.#e=this.#e.endOf(`day`)}getTime(){return this.#e.valueOf()}getUTCDate(){return this.#a().day}getUTCFullYear(){return this.#a().year}getUTCDay(){let e=this.#a().weekday;return e===7?0:e}getUTCMonth(){return this.#a().month-1}getUTCHours(){return this.#a().hour}getUTCMinutes(){return this.#a().minute}getUTCSeconds(){return this.#a().second}toISOString(){return this.#e.toUTC().toISO()}toJSON(){return this.#e.toJSON()}setDate(e){this.#e=this.#e.set({day:e})}setFullYear(e){this.#e=this.#e.set({year:e})}setDay(e){this.#e=this.#e.set({weekday:e})}setMonth(e){this.#e=this.#e.set({month:e+1})}setHours(e){this.#e=this.#e.set({hour:e})}setMinutes(e){this.#e=this.#e.set({minute:e})}setSeconds(e){this.#e=this.#e.set({second:e})}setMilliseconds(e){this.#e=this.#e.set({millisecond:e})}toString(){return this.toDate().toString()}toDate(){return this.#e.toJSDate()}isLastDayOfMonth(){let{day:t,month:n}=this.#e;if(n===2){let r=i.#i(this.#e.year);return t===e.DAYS_IN_MONTH[n-1]-(r?0:1)}return t===e.DAYS_IN_MONTH[n-1]}isLastWeekdayOfMonth(){let{day:t,month:n}=this.#e,r;return r=n===2?e.DAYS_IN_MONTH[n-1]-(i.#i(this.#e.year)?0:1):e.DAYS_IN_MONTH[n-1],t>r-7}applyDateOperation(e,t,r){if(t===n.Month||t===n.Day){this.invokeDateOperation(e,t);return}let i=this.getHours();this.invokeDateOperation(e,t);let a=this.getHours(),o=a-i;o===2?r!==24&&(this.dstStart=a):o===0&&this.getMinutes()===0&&this.getSeconds()===0&&r!==24&&(this.dstEnd=a)}#a(){return this.#e.toUTC()}};e.CronDate=i,e.default=i})),nD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronMonth=void 0;var t=tD(),n=YE(),r=1,i=12,a=Object.freeze([]);e.CronMonth=class extends n.CronField{static get min(){return r}static get max(){return i}static get chars(){return a}static get daysInMonth(){return t.DAYS_IN_MONTH}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}}})),rD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronSecond=void 0;var t=YE(),n=0,r=59,i=Object.freeze([]);e.CronSecond=class extends t.CronField{static get min(){return n}static get max(){return r}static get chars(){return i}constructor(e,t){super(e,t),this.validate()}get values(){return super.values}}})),iD=t((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),n(JE(),e),n(XE(),e),n(ZE(),e),n(YE(),e),n(QE(),e),n($E(),e),n(nD(),e),n(rD(),e)})),aD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronFieldCollection=void 0;var t=iD();e.CronFieldCollection=class e{#e;#t;#n;#r;#i;#a;static from(n,r){return new e({second:this.resolveField(t.CronSecond,n.second,r.second),minute:this.resolveField(t.CronMinute,n.minute,r.minute),hour:this.resolveField(t.CronHour,n.hour,r.hour),dayOfMonth:this.resolveField(t.CronDayOfMonth,n.dayOfMonth,r.dayOfMonth),month:this.resolveField(t.CronMonth,n.month,r.month),dayOfWeek:this.resolveField(t.CronDayOfWeek,n.dayOfWeek,r.dayOfWeek)})}static resolveField(e,n,r){return r?r instanceof t.CronField?r:new e(r):n}constructor({second:e,minute:n,hour:r,dayOfMonth:i,month:a,dayOfWeek:o}){if(!e)throw Error(`Validation error, Field second is missing`);if(!n)throw Error(`Validation error, Field minute is missing`);if(!r)throw Error(`Validation error, Field hour is missing`);if(!i)throw Error(`Validation error, Field dayOfMonth is missing`);if(!a)throw Error(`Validation error, Field month is missing`);if(!o)throw Error(`Validation error, Field dayOfWeek is missing`);if(a.values.length===1&&!i.hasLastChar&&!(parseInt(i.values[0],10)<=t.CronMonth.daysInMonth[a.values[0]-1]))throw Error(`Invalid explicit day of month definition`);this.#e=e,this.#t=n,this.#n=r,this.#i=a,this.#a=o,this.#r=i}get second(){return this.#e}get minute(){return this.#t}get hour(){return this.#n}get dayOfMonth(){return this.#r}get month(){return this.#i}get dayOfWeek(){return this.#a}static compactField(e){if(e.length===0)return[];let t=[],n;return e.forEach((e,r,i)=>{if(n===void 0){n={start:e,count:1};return}let a=i[r-1]||n.start,o=i[r+1];if(e===`L`||e===`W`){t.push(n),t.push({start:e,count:1}),n=void 0;return}if(n.step===void 0&&o!==void 0){let t=e-a;if(t<=o-e){n={...n,count:2,end:e,step:t};return}n.step=1}e-(n.end??0)===n.step?(n.count++,n.end=e):(n.count===1?t.push({start:n.start,count:1}):n.count===2?(t.push({start:n.start,count:1}),t.push({start:n.end??a,count:1})):t.push(n),n={start:e,count:1})}),n&&t.push(n),t}static#o(e,t,n){let r=t.step;return r?r===1&&t.start===e.min&&t.end&&t.end>=n?e.hasQuestionMarkChar?`?`:`*`:r!==1&&t.start===e.min&&t.end&&t.end>=n-r+1?`*/${r}`:null:null}static#s(e,t){let n=e.step;if(n===1)return`${e.start}-${e.end}`;let r=e.start===0?e.count-1:e.count;if(!n)throw Error(`Unexpected range step`);if(!e.end)throw Error(`Unexpected range end`);if(n*r>e.end){let t=(t,r)=>{if(typeof e.start!=`number`)throw Error(`Unexpected range start`);return r%n===0?e.start+r:null};if(typeof e.start!=`number`)throw Error(`Unexpected range start`);let r={length:e.end-e.start+1};return Array.from(r,t).filter(e=>e!==null).join(`,`)}return e.end===t-n+1?`${e.start}/${n}`:`${e.start}-${e.end}/${n}`}stringifyField(n){let r=n.max,i=n.values;if(n instanceof t.CronDayOfWeek){r=6;let e=this.#a.values;i=e[e.length-1]===7?e.slice(0,-1):e}n instanceof t.CronDayOfMonth&&(r=this.#i.values.length===1?t.CronMonth.daysInMonth[this.#i.values[0]-1]:n.max);let a=e.compactField(i);if(a.length===1){let t=e.#o(n,a[0],r);if(t)return t}return a.map(i=>{let a=i.count===1?i.start.toString():e.#s(i,r);return n instanceof t.CronDayOfWeek&&n.nthDay>0?`${a}#${n.nthDay}`:a}).join(`,`)}stringify(e=!1){let t=[];return e&&t.push(this.stringifyField(this.#e)),t.push(this.stringifyField(this.#t),this.stringifyField(this.#n),this.stringifyField(this.#r),this.stringifyField(this.#i),this.stringifyField(this.#a)),t.join(` `)}serialize(){return{second:this.#e.serialize(),minute:this.#t.serialize(),hour:this.#n.serialize(),dayOfMonth:this.#r.serialize(),month:this.#i.serialize(),dayOfWeek:this.#a.serialize()}}}})),oD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronExpression=e.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE=e.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE=void 0;var t=tD();e.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE=`Out of the time span range`,e.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE=`Invalid expression, loop limit exceeded`;var n=1e4,r=class r{#e;#t;#n;#r;#i;#a;#o=null;#s=!1;constructor(e,n){this.#e=n,this.#t=n.tz,this.#r=n.startDate?new t.CronDate(n.startDate,this.#t):null,this.#i=n.endDate?new t.CronDate(n.endDate,this.#t):null;let r=n.currentDate??n.startDate;if(r){let e=new t.CronDate(r,this.#t);this.#r&&e.getTime()<this.#r.getTime()?r=this.#r:this.#i&&e.getTime()>this.#i.getTime()&&(r=this.#i)}this.#n=new t.CronDate(r,this.#t),this.#a=e}get fields(){return this.#a}static fieldsToExpression(e,t){return new r(e,t||{})}static#c(e,t){return t.some(t=>t===e)}#l(e,t){return e[t?e.length-1:0]}#u(e){let n=`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`;if(this.#o===n)return this.#s;let r=new t.CronDate(e);r.setStartOfDay();let i=new t.CronDate(e);return i.setEndOfDay(),this.#o=n,this.#s=r.getUTCOffset()!==i.getUTCOffset(),this.#s}#d(e,n,r){let i=this.#a.second.values,a=e.getSeconds(),o=this.#a.second.findNearestValue(a,r);if(o!==null){e.setSeconds(o);return}e.applyDateOperation(n,t.TimeUnit.Minute,this.#a.hour.values.length),e.setSeconds(this.#l(i,r))}#f(e,n,r){let i=this.#a.minute.values,a=this.#a.second.values,o=e.getMinutes(),s=this.#a.minute.findNearestValue(o,r);if(s!==null){e.setMinutes(s),e.setSeconds(this.#l(a,r));return}e.applyDateOperation(n,t.TimeUnit.Hour,this.#a.hour.values.length),e.setMinutes(this.#l(i,r)),e.setSeconds(this.#l(a,r))}static#p(e,t){let n=t.isLastWeekdayOfMonth();return e.some(e=>{let r=parseInt(e.toString().charAt(0),10)%7;if(Number.isNaN(r))throw Error(`Invalid last weekday of the month expression: ${e}`);return t.getDay()===r&&n})}next(){return this.#_()}prev(){return this.#_(!0)}hasNext(){let e=this.#n;try{return this.#_(),!0}catch{return!1}finally{this.#n=e}}hasPrev(){let e=this.#n;try{return this.#_(!0),!0}catch{return!1}finally{this.#n=e}}take(e){let t=[];if(e>=0)for(let n=0;n<e;n++)try{t.push(this.next())}catch{return t}else for(let n=0;n>e;n--)try{t.push(this.prev())}catch{return t}return t}reset(e){this.#n=new t.CronDate(e||this.#e.currentDate)}stringify(e=!1){return this.#a.stringify(e)}includesDate(e){let{second:n,minute:r,hour:i,month:a}=this.#a,o=new t.CronDate(e,this.#t);return!(!n.values.includes(o.getSeconds())||!r.values.includes(o.getMinutes())||!i.values.includes(o.getHours())||!a.values.includes(o.getMonth()+1)||!this.#m(o)||this.#a.dayOfWeek.nthDay>0&&Math.ceil(o.getDate()/7)!==this.#a.dayOfWeek.nthDay)}toString(){return this.#e.expression||this.stringify(!0)}#m(e){let t=this.#a.dayOfMonth.isWildcard,n=!t,i=this.#a.dayOfWeek.isWildcard,a=!i,o=r.#c(e.getDate(),this.#a.dayOfMonth.values)||this.#a.dayOfMonth.hasLastChar&&e.isLastDayOfMonth(),s=r.#c(e.getDay(),this.#a.dayOfWeek.values)||this.#a.dayOfWeek.hasLastChar&&r.#p(this.#a.dayOfWeek.values,e);return!!(n&&a&&(o||s)||o&&!a||t&&!i&&s)}#h(e,n,i){let a=this.#a.hour.values,o=a,s=e.getHours(),c=r.#c(s,a),l=e.dstStart===s,u=e.dstEnd===s;if(l)return r.#c(s-1,a)?!0:(e.invokeDateOperation(n,t.TimeUnit.Hour),!1);if(u&&!i)return e.dstEnd=null,e.applyDateOperation(t.DateMathOp.Add,t.TimeUnit.Hour,o.length),!1;if(c)return!0;e.dstStart=null;let d=this.#a.hour.findNearestValue(s,i);if(d===null)return e.applyDateOperation(n,t.TimeUnit.Day,o.length),!1;if(this.#u(e)){let r=i?s-d:d-s;for(let i=0;i<r;i++)e.applyDateOperation(n,t.TimeUnit.Hour,o.length)}else e.setHours(d);return e.setMinutes(this.#l(this.#a.minute.values,i)),e.setSeconds(this.#l(this.#a.second.values,i)),!1}#g(t){if(!this.#r&&!this.#i)return;let n=t.getTime();if(this.#r&&n<this.#r.getTime()||this.#i&&n>this.#i.getTime())throw Error(e.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE)}#_(i=!1){let a=i?t.DateMathOp.Subtract:t.DateMathOp.Add,o=new t.CronDate(this.#n),s=o.getTime(),c=0;for(;++c<n;){if(this.#g(o),!this.#m(o)){o.applyDateOperation(a,t.TimeUnit.Day,this.#a.hour.values.length);continue}if(!(this.#a.dayOfWeek.nthDay<=0||Math.ceil(o.getDate()/7)===this.#a.dayOfWeek.nthDay)){o.applyDateOperation(a,t.TimeUnit.Day,this.#a.hour.values.length);continue}if(!r.#c(o.getMonth()+1,this.#a.month.values)){o.applyDateOperation(a,t.TimeUnit.Month,this.#a.hour.values.length);continue}if(this.#h(o,a,i)){if(!r.#c(o.getMinutes(),this.#a.minute.values)){this.#f(o,a,i);continue}if(!r.#c(o.getSeconds(),this.#a.second.values)){this.#d(o,a,i);continue}if(s===o.getTime()){(a===`Add`||o.getMilliseconds()===0)&&o.applyDateOperation(a,t.TimeUnit.Second,this.#a.hour.values.length);continue}break}}if(c>n)throw Error(e.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE);return o.getMilliseconds()!==0&&o.setMilliseconds(0),this.#n=o,o}[Symbol.iterator](){return{next:()=>({value:this.#_(),done:!this.hasNext()})}}};e.CronExpression=r,e.default=r})),sD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.seededRandom=r;function t(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return()=>t>>>0}function n(e){return()=>{let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function r(e){return n(e?t(e)():Math.floor(Math.random()*1e10))}})),cD=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CronExpressionParser=e.DayOfWeek=e.Months=e.CronUnit=e.PredefinedExpressions=void 0;var t=aD(),n=oD(),r=sD(),i=iD(),a;(function(e){e[`@yearly`]=`0 0 0 1 1 *`,e[`@annually`]=`0 0 0 1 1 *`,e[`@monthly`]=`0 0 0 1 * *`,e[`@weekly`]=`0 0 0 * * 0`,e[`@daily`]=`0 0 0 * * *`,e[`@hourly`]=`0 0 * * * *`,e[`@minutely`]=`0 * * * * *`,e[`@secondly`]=`* * * * * *`,e[`@weekdays`]=`0 0 0 * * 1-5`,e[`@weekends`]=`0 0 0 * * 0,6`})(a||(e.PredefinedExpressions=a={}));var o;(function(e){e.Second=`Second`,e.Minute=`Minute`,e.Hour=`Hour`,e.DayOfMonth=`DayOfMonth`,e.Month=`Month`,e.DayOfWeek=`DayOfWeek`})(o||(e.CronUnit=o={}));var s;(function(e){e[e.jan=1]=`jan`,e[e.feb=2]=`feb`,e[e.mar=3]=`mar`,e[e.apr=4]=`apr`,e[e.may=5]=`may`,e[e.jun=6]=`jun`,e[e.jul=7]=`jul`,e[e.aug=8]=`aug`,e[e.sep=9]=`sep`,e[e.oct=10]=`oct`,e[e.nov=11]=`nov`,e[e.dec=12]=`dec`})(s||(e.Months=s={}));var c;(function(e){e[e.sun=0]=`sun`,e[e.mon=1]=`mon`,e[e.tue=2]=`tue`,e[e.wed=3]=`wed`,e[e.thu=4]=`thu`,e[e.fri=5]=`fri`,e[e.sat=6]=`sat`})(c||(e.DayOfWeek=c={})),e.CronExpressionParser=class e{static parse(s,c={}){let{strict:l=!1,hashSeed:u}=c,d=(0,r.seededRandom)(u);s=a[s]||s;let f=e.#e(s,l);if(!(f.dayOfMonth===`*`||f.dayOfWeek===`*`||!l))throw Error(`Cannot use both dayOfMonth and dayOfWeek together in strict mode!`);let p=e.#t(o.Second,f.second,i.CronSecond.constraints,d),m=e.#t(o.Minute,f.minute,i.CronMinute.constraints,d),h=e.#t(o.Hour,f.hour,i.CronHour.constraints,d),g=e.#t(o.Month,f.month,i.CronMonth.constraints,d),_=e.#t(o.DayOfMonth,f.dayOfMonth,i.CronDayOfMonth.constraints,d),{dayOfWeek:v,nthDayOfWeek:y}=e.#u(f.dayOfWeek),b=e.#t(o.DayOfWeek,v,i.CronDayOfWeek.constraints,d),x=new t.CronFieldCollection({second:new i.CronSecond(p,{rawValue:f.second}),minute:new i.CronMinute(m,{rawValue:f.minute}),hour:new i.CronHour(h,{rawValue:f.hour}),dayOfMonth:new i.CronDayOfMonth(_,{rawValue:f.dayOfMonth}),month:new i.CronMonth(g,{rawValue:f.month}),dayOfWeek:new i.CronDayOfWeek(b,{rawValue:f.dayOfWeek,nthDayOfWeek:y})});return new n.CronExpression(x,{...c,expression:s})}static#e(e,t){if(t&&!e.length)throw Error(`Invalid cron expression`);e||=`0 * * * * *`;let n=e.trim().split(/\s+/);if(t&&n.length<6)throw Error(`Invalid cron expression, expected 6 fields`);if(n.length>6)throw Error(`Invalid cron expression, too many fields`);let r=[`*`,`*`,`*`,`*`,`*`,`0`];n.length<r.length&&n.unshift(...r.slice(n.length));let[i,a,o,s,c,l]=n;return{second:i,minute:a,hour:o,dayOfMonth:s,month:c,dayOfWeek:l}}static#t(e,t,n,r){if((e===o.Month||e===o.DayOfWeek)&&(t=t.replace(/[a-z]{3}/gi,e=>{e=e.toLowerCase();let t=s[e]||c[e];if(t===void 0)throw Error(`Validation error, cannot resolve alias "${e}"`);return t.toString()})),!n.validChars.test(t))throw Error(`Invalid characters, got value: ${t}`);return t=this.#n(t,n),t=this.#r(t,n,r),this.#i(e,t,n)}static#n(e,t){return e.replace(/[*?]/g,t.min+`-`+t.max)}static#r(e,t,n){let r=n();return e.replace(/H(?:\((\d+)-(\d+)\))?(?:\/(\d+))?/g,(e,n,i,a)=>{if(n&&i&&a){let e=parseInt(n,10),o=parseInt(i,10),s=parseInt(a,10);if(e>o)throw Error(`Invalid range: ${e}-${o}, min > max`);if(s<=0)throw Error(`Invalid step: ${s}, must be positive`);let c=Math.max(e,t.min),l=Math.floor(r*s),u=[];for(let e=Math.floor(c/s)*s+l;e<=o;e+=s)e>=c&&u.push(e);return u.join(`,`)}else if(n&&i){let e=parseInt(n,10),t=parseInt(i,10);if(e>t)throw Error(`Invalid range: ${e}-${t}, min > max`);return String(Math.floor(r*(t-e+1))+e)}else if(a){let e=parseInt(a,10);if(e<=0)throw Error(`Invalid step: ${e}, must be positive`);let n=Math.floor(r*e),i=[];for(let r=Math.floor(t.min/e)*e+n;r<=t.max;r+=e)r>=t.min&&i.push(r);return i.join(`,`)}else return String(Math.floor(r*(t.max-t.min+1)+t.min))})}static#i(t,n,r){let i=[];function a(n,r){if(Array.isArray(n))i.push(...n);else if(e.#d(r,n))i.push(n);else{let e=parseInt(n.toString(),10);if(!(e>=r.min&&e<=r.max))throw Error(`Constraint error, got value ${n} expected range ${r.min}-${r.max}`);i.push(t===o.DayOfWeek?e%7:n)}}return n.split(`,`).forEach(n=>{if(!(n.length>0))throw Error(`Invalid list value format`);a(e.#a(t,n,r),r)}),i}static#a(t,n,r){let i=n.split(`/`);if(i.length>2)throw Error(`Invalid repeat: ${n}`);return i.length===2?(isNaN(parseInt(i[0],10))||(i[0]=`${i[0]}-${r.max}`),e.#l(t,i[0],parseInt(i[1],10),r)):e.#l(t,n,1,r)}static#o(e,t,n){if(!(!isNaN(e)&&!isNaN(t)&&e>=n.min&&t<=n.max))throw Error(`Constraint error, got range ${e}-${t} expected range ${n.min}-${n.max}`);if(e>t)throw Error(`Invalid range: ${e}-${t}, min(${e}) > max(${t})`)}static#s(e){if(!(!isNaN(e)&&e>0))throw Error(`Constraint error, cannot repeat at every ${e} time.`)}static#c(e,t,n,r){let i=[];e===o.DayOfWeek&&n%7==0&&i.push(0);for(let e=t;e<=n;e+=r)i.indexOf(e)===-1&&i.push(e);return i}static#l(e,t,n,r){let i=t.split(`-`);if(i.length<=1)return isNaN(+t)?t:+t;let[a,o]=i.map(e=>parseInt(e,10));return this.#o(a,o,r),this.#s(n),this.#c(e,a,o,n)}static#u(e){let t=e.split(`#`);if(t.length<=1)return{dayOfWeek:t[0]};let n=+t[t.length-1],r=e.match(/([,-/])/);if(r!==null)throw Error(`Constraint error, invalid dayOfWeek \`#\` and \`${r?.[0]}\` special characters are incompatible`);if(!(t.length<=2&&!isNaN(n)&&n>=1&&n<=5))throw Error(`Constraint error, invalid dayOfWeek occurrence number (#)`);return{dayOfWeek:t[0],nthDayOfWeek:n}}static#d(e,t){return e.chars.some(e=>t.toString().includes(e))}}})),lD=t(((e,t)=>{t.exports={}})),uD=t((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=e(r),o=0;o<a.length;o++)a[o]!==`default`&&t(i,r,a[o]);return n(i,r),i}})();Object.defineProperty(e,`__esModule`,{value:!0}),e.CronFileParser=void 0;var i=cD();e.CronFileParser=class e{static async parseFile(t){let{readFile:n}=await Promise.resolve().then(()=>r(lD())),i=await n(t,`utf8`);return e.#e(i)}static parseFileSync(t){let{readFileSync:n}=lD(),r=n(t,`utf8`);return e.#e(r)}static#e(t){let n=t.split(`
|
|
16
|
+
`),r={variables:{},expressions:[],errors:{}};for(let t of n){let n=t.trim();if(n.length===0||n.startsWith(`#`))continue;let i=n.match(/^(.*)=(.*)$/);if(i){let[,e,t]=i;r.variables[e]=t.replace(/["']/g,``);continue}try{let t=e.#t(n);r.expressions.push(t.interval)}catch(e){r.errors[n]=e}}return r}static#t(e){let t=e.split(` `);return{interval:i.CronExpressionParser.parse(t.slice(0,5).join(` `)),command:t.slice(5,t.length)}}}})),dD=t((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.CronFileParser=e.CronExpressionParser=e.CronExpression=e.CronFieldCollection=e.CronDate=void 0;var r=cD(),i=tD();Object.defineProperty(e,`CronDate`,{enumerable:!0,get:function(){return i.CronDate}});var a=aD();Object.defineProperty(e,`CronFieldCollection`,{enumerable:!0,get:function(){return a.CronFieldCollection}});var o=oD();Object.defineProperty(e,`CronExpression`,{enumerable:!0,get:function(){return o.CronExpression}});var s=cD();Object.defineProperty(e,`CronExpressionParser`,{enumerable:!0,get:function(){return s.CronExpressionParser}});var c=uD();Object.defineProperty(e,`CronFileParser`,{enumerable:!0,get:function(){return c.CronFileParser}}),n(iD(),e),e.default=r.CronExpressionParser}))(),fD=e=>{try{return dD.CronExpressionParser.parse(e),!0}catch{return!1}},pD=Tt.extend({dir:Y().trim().transform(e=>e===``?null:e).nullable().optional(),retentionDays:G().int().min(1),cleanupCron:Y().trim().transform(e=>e===``?null:e).refine(e=>e===null||fD(e)).nullable().optional(),filePrefix:Y().trim().transform(e=>e===``?null:e).nullable().optional()}),mD=Lt.extend({dir:Y().nullable(),retentionDays:G().min(1),cleanupCron:Y().nullable(),filePrefix:Y().nullable()}),hD=Wt.and(q({type:Z(qE),dir:Y().nullable().optional(),retention_days:G().optional(),cleanup_cron:Y().nullable().optional(),file_prefix:Y().nullable().optional()}));Qt.and(q({type:Z(qE),dir:Y().nullable(),retention_days:G(),cleanup_cron:Y().nullable(),file_prefix:Y().nullable()}));var gD=Symbol(`FB-Plugin-LoggerRotatingFile`),_D={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(KE)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{loggerRotatingFilePlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(gD,{type:qE,source:`com.fastybird.smart-panel.plugin.logger-rotating-file`,name:`Rotating File Logger`,description:`File-based log persistence with daily rotation and automatic cleanup for long-term retention.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:zE},schemas:{pluginConfigSchema:mD,pluginConfigEditFormSchema:pD,pluginConfigUpdateReqSchema:hD},modules:[pn]}],modules:[pn],isCore:!0})}},vD=f({name:`CardsPageAddForm`,__name:`cards-page-add-form`,props:{id:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{model:o,formEl:s,formChanged:c,submit:l,formResult:u}=Er({id:n.id,type:xa}),f=y({title:[{required:!0,message:a(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(o),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(a)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(o).id,"onUpdate:modelValue":t[0]||=e=>h(o).id=e,placeholder:h(a)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(o).title,"onUpdate:modelValue":t[1]||=e=>h(o).title=e,placeholder:h(a)(`dashboardModule.fields.pages.title.placeholder`),name:`title`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(o).icon,"onUpdate:modelValue":t[2]||=e=>h(o).icon=e,placeholder:h(a)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(o).order,"onUpdate:modelValue":t[3]||=e=>h(o).order=e,placeholder:h(a)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(o).showTopBar,"onUpdate:modelValue":t[4]||=e=>h(o).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(o).displays,"onUpdate:modelValue":t[5]||=e=>h(o).displays=e,placeholder:h(a)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(a)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),yD=f({name:`CardsPageEditForm`,__name:`cards-page-edit-form`,props:{page:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{model:o,formEl:s,formChanged:c,submit:l,formResult:u}=yr({page:n.page}),f=y({title:[{required:!0,message:a(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]});return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(o),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(a)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(o).id,"onUpdate:modelValue":t[0]||=e=>h(o).id=e,placeholder:h(a)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(o).title,"onUpdate:modelValue":t[1]||=e=>h(o).title=e,placeholder:h(a)(`dashboardModule.fields.pages.title.placeholder`),name:`title`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(o).icon,"onUpdate:modelValue":t[2]||=e=>h(o).icon=e,placeholder:h(a)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(o).order,"onUpdate:modelValue":t[3]||=e=>h(o).order=e,placeholder:h(a)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(o).showTopBar,"onUpdate:modelValue":t[4]||=e=>h(o).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(o).displays,"onUpdate:modelValue":t[5]||=e=>h(o).displays=e,placeholder:h(a)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(a)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),bD={meta:{pages:{editCard:{title:`Upravit kartu`},addCard:{title:`Přidat kartu`},editTile:{title:`Upravit dlaždici karty`},addTile:{title:`Přidat dlaždici karty`},editDataSource:{title:`Upravit zdroj dat stránky`},addDataSource:{title:`Přidat zdroj dat stránky`}}},breadcrumbs:{pages:{configure:`stránka: {page}`,addCard:`přidat kartu`,editCard:`upravit kartu`,addTile:`přidat dlaždici karty`,editTile:`upravit dlaždici karty`,addDataSource:`přidat zdroj dat stránky`,editDataSource:`upravit zdroj dat stránky`}},headings:{pages:{addCard:`Přidat kartu`,editCard:`Upravit kartu`,addTile:`Přidat dlaždici karty`,editTile:`Upravit dlaždici karty`,addDataSource:`Přidat zdroj dat stránky`,editDataSource:`Upravit zdroj dat stránky`},cards:{remove:`Odebrat kartu`},configure:{display:`Displej`,cards:`Karty`},misc:{discard:`Zahodit změny?`}},subHeadings:{pages:{addCard:`Přidat novou kartu na tuto stránku`,editCard:`Upravit vlastnosti karty`,addTile:`Přidat novou dlaždici na tuto kartu`,editTile:`Upravit dlaždici karty`,addDataSource:`Přidat nový zdroj dat stránky`,editDataSource:`Upravit zdroj dat stránky`}},messages:{cards:{removed:`Karta {card} byla úspěšně odebrána.`,notFound:`Karta {card} nebyla nalezena.`,notRemoved:`Kartu {card} se nepodařilo odebrat.`,removeCanceled:`Odebrání karty {card} bylo zrušeno.`,deletedWhileEditing:`Tato karta byla smazána a již není k dispozici.`},tiles:{deletedWhileEditing:`Tato dlaždice byla smazána a již není k dispozici.`},dataSources:{deletedWhileEditing:`Tento zdroj dat byl smazán a již není k dispozici.`},misc:{requestError:`Něco se pokazilo, zkuste to prosím znovu později.`}},texts:{cards:{confirmRemove:`Opravdu chcete odebrat kartu {card}?`,noCards:`Na tuto stránku zatím nebyly přidány žádné karty.`,noTiles:`V této kartě nejsou žádné dlaždice. Klikněte na + pro přidání.`,tilesCount:`dlaždice`,loadingCard:`Načítání karty...`},tiles:{loadingTile:`Načítání dlaždice...`},dataSources:{loadingDataSource:`Načítání zdroje dat...`},misc:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`}},buttons:{discard:{title:`Zahodit`},close:{title:`Zavřít`},add:{title:`Přidat`},save:{title:`Uložit`},update:{title:`Aktualizovat`},yes:{title:`Ano`},no:{title:`Ne`},manageElements:{title:`Spravovat prvky`},addCard:{title:`Přidat kartu`},addPageDataSource:{title:`Přidat zdroj dat stránky`}},fields:{cards:{id:{title:`Identifikátor`},title:{title:`Název`,placeholder:`Zadejte název karty`,validation:{required:`Zadejte prosím název karty`}},icon:{title:`Ikona`,placeholder:`Vyberte ikonu`},order:{title:`Pořadí`,placeholder:`Pořadí zobrazení`},rows:{title:`Řádky`,placeholder:`Počet řádků`},cols:{title:`Sloupce`,placeholder:`Počet sloupců`}}}},xD={meta:{pages:{editCard:{title:`Karte bearbeiten`},addCard:{title:`Karte hinzufügen`},editTile:{title:`Kartenkachel bearbeiten`},addTile:{title:`Kartenkachel hinzufügen`},editDataSource:{title:`Seitendatenquelle bearbeiten`},addDataSource:{title:`Seitendatenquelle hinzufügen`}}},breadcrumbs:{pages:{configure:`Seite: {page}`,addCard:`Karte hinzufügen`,editCard:`Karte bearbeiten`,addTile:`Kartenkachel hinzufügen`,editTile:`Kartenkachel bearbeiten`,addDataSource:`Seitendatenquelle hinzufügen`,editDataSource:`Seitendatenquelle bearbeiten`}},headings:{pages:{addCard:`Karte hinzufügen`,editCard:`Karte bearbeiten`,addTile:`Kartenkachel hinzufügen`,editTile:`Kartenkachel bearbeiten`,addDataSource:`Seitendatenquelle hinzufügen`,editDataSource:`Seitendatenquelle bearbeiten`},cards:{remove:`Karte entfernen`},configure:{display:`Anzeige`,cards:`Karten`},misc:{discard:`Änderungen verwerfen?`}},subHeadings:{pages:{addCard:`Neue Karte zu dieser Seite hinzufügen`,editCard:`Karteneigenschaften bearbeiten`,addTile:`Neue Kachel zu dieser Karte hinzufügen`,editTile:`Kartenkachel bearbeiten`,addDataSource:`Neue Seitendatenquelle hinzufügen`,editDataSource:`Seitendatenquelle bearbeiten`}},messages:{cards:{removed:`Karte {card} wurde erfolgreich entfernt.`,notFound:`Karte {card} wurde nicht gefunden.`,notRemoved:`Karte {card} konnte nicht entfernt werden.`,removeCanceled:`Entfernung von Karte {card} wurde abgebrochen.`,deletedWhileEditing:`Diese Karte wurde gelöscht und ist nicht mehr verfügbar.`},tiles:{deletedWhileEditing:`Diese Kachel wurde gelöscht und ist nicht mehr verfügbar.`},dataSources:{deletedWhileEditing:`Diese Datenquelle wurde gelöscht und ist nicht mehr verfügbar.`},misc:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`}},texts:{cards:{confirmRemove:`Sind Sie sicher, dass Sie Karte {card} entfernen möchten?`,noCards:`Dieser Seite wurden noch keine Karten hinzugefügt.`,noTiles:`Keine Kacheln in dieser Karte. Klicken Sie auf +, um eine hinzuzufügen.`,tilesCount:`Kacheln`,loadingCard:`Karte wird geladen...`},tiles:{loadingTile:`Kachel wird geladen...`},dataSources:{loadingDataSource:`Datenquelle wird geladen...`},misc:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`}},buttons:{discard:{title:`Verwerfen`},close:{title:`Schließen`},add:{title:`Hinzufügen`},save:{title:`Speichern`},update:{title:`Aktualisieren`},yes:{title:`Ja`},no:{title:`Nein`},manageElements:{title:`Elemente verwalten`},addCard:{title:`Karte hinzufügen`},addPageDataSource:{title:`Seitendatenquelle hinzufügen`}},fields:{cards:{id:{title:`Bezeichner`},title:{title:`Titel`,placeholder:`Kartentitel eingeben`,validation:{required:`Bitte geben Sie einen Kartentitel ein`}},icon:{title:`Symbol`,placeholder:`Symbol auswählen`},order:{title:`Reihenfolge`,placeholder:`Anzeigereihenfolge`},rows:{title:`Zeilen`,placeholder:`Anzahl der Zeilen`},cols:{title:`Spalten`,placeholder:`Anzahl der Spalten`}}}},SD={meta:{pages:{editCard:{title:`Edit card`},addCard:{title:`Add card`},editTile:{title:`Edit card tile`},addTile:{title:`Add card tile`},editDataSource:{title:`Edit page data source`},addDataSource:{title:`Add page data source`}}},breadcrumbs:{pages:{configure:`page: {page}`,addCard:`add card`,editCard:`edit card`,addTile:`add card tile`,editTile:`edit card tile`,addDataSource:`add page data source`,editDataSource:`edit page data source`}},headings:{pages:{addCard:`Add card`,editCard:`Edit card`,addTile:`Add card tile`,editTile:`Edit card tile`,addDataSource:`Add page data source`,editDataSource:`Edit page data source`},cards:{remove:`Remove card`},configure:{display:`Display`,cards:`Cards`},misc:{discard:`Discard changes?`}},subHeadings:{pages:{addCard:`Add new card to this page`,editCard:`Edit card properties`,addTile:`Add new tile to this card`,editTile:`Edit card tile`,addDataSource:`Add new page data source`,editDataSource:`Edit page data source`}},messages:{cards:{removed:`Card {card} was successfully removed.`,notFound:`Card {card} was not found.`,notRemoved:`Card {card} couldn't be removed.`,removeCanceled:`Card {card} removal was canceled.`,deletedWhileEditing:`This card was deleted and is no longer available.`},tiles:{deletedWhileEditing:`This tile was deleted and is no longer available.`},dataSources:{deletedWhileEditing:`This data source was deleted and is no longer available.`},misc:{requestError:`Something went wrong, please try again later.`}},texts:{cards:{confirmRemove:`Are you sure you want to remove card {card}?`,noCards:`No cards have been added to this page yet.`,noTiles:`No tiles in this card. Click + to add one.`,tilesCount:`tiles`,loadingCard:`Loading card...`},tiles:{loadingTile:`Loading tile...`},dataSources:{loadingDataSource:`Loading data source...`},misc:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`}},buttons:{discard:{title:`Discard`},close:{title:`Close`},add:{title:`Add`},save:{title:`Save`},update:{title:`Update`},yes:{title:`Yes`},no:{title:`No`},manageElements:{title:`Manage elements`},addCard:{title:`Add card`},addPageDataSource:{title:`Add page data source`}},fields:{cards:{id:{title:`Identifier`},title:{title:`Title`,placeholder:`Enter card title`,validation:{required:`Please enter a card title`}},icon:{title:`Icon`,placeholder:`Select an icon`},order:{title:`Order`,placeholder:`Display order`},rows:{title:`Rows`,placeholder:`Number of rows`},cols:{title:`Columns`,placeholder:`Number of columns`}}}},CD={meta:{pages:{editCard:{title:`Editar tarjeta`},addCard:{title:`Añadir tarjeta`},editTile:{title:`Editar mosaico de tarjeta`},addTile:{title:`Añadir mosaico de tarjeta`},editDataSource:{title:`Editar fuente de datos de página`},addDataSource:{title:`Añadir fuente de datos de página`}}},breadcrumbs:{pages:{configure:`página: {page}`,addCard:`añadir tarjeta`,editCard:`editar tarjeta`,addTile:`añadir mosaico de tarjeta`,editTile:`editar mosaico de tarjeta`,addDataSource:`añadir fuente de datos de página`,editDataSource:`editar fuente de datos de página`}},headings:{pages:{addCard:`Añadir tarjeta`,editCard:`Editar tarjeta`,addTile:`Añadir mosaico de tarjeta`,editTile:`Editar mosaico de tarjeta`,addDataSource:`Añadir fuente de datos de página`,editDataSource:`Editar fuente de datos de página`},cards:{remove:`Eliminar tarjeta`},configure:{display:`Pantalla`,cards:`Tarjetas`},misc:{discard:`¿Descartar cambios?`}},subHeadings:{pages:{addCard:`Añadir nueva tarjeta a esta página`,editCard:`Editar propiedades de la tarjeta`,addTile:`Añadir nuevo mosaico a esta tarjeta`,editTile:`Editar mosaico de tarjeta`,addDataSource:`Añadir nueva fuente de datos de página`,editDataSource:`Editar fuente de datos de página`}},messages:{cards:{removed:`La tarjeta {card} se ha eliminado correctamente.`,notFound:`No se encontró la tarjeta {card}.`,notRemoved:`No se pudo eliminar la tarjeta {card}.`,removeCanceled:`Se canceló la eliminación de la tarjeta {card}.`,deletedWhileEditing:`Esta tarjeta fue eliminada y ya no está disponible.`},tiles:{deletedWhileEditing:`Este mosaico fue eliminado y ya no está disponible.`},dataSources:{deletedWhileEditing:`Esta fuente de datos fue eliminada y ya no está disponible.`},misc:{requestError:`Algo salió mal, por favor inténtelo de nuevo más tarde.`}},texts:{cards:{confirmRemove:`¿Está seguro de que desea eliminar la tarjeta {card}?`,noCards:`Aún no se han añadido tarjetas a esta página.`,noTiles:`No hay mosaicos en esta tarjeta. Haga clic en + para añadir uno.`,tilesCount:`mosaicos`,loadingCard:`Cargando tarjeta...`},tiles:{loadingTile:`Cargando mosaico...`},dataSources:{loadingDataSource:`Cargando fuente de datos...`},misc:{confirmDiscard:`Tiene cambios sin guardar. ¿Está seguro de que desea descartarlos?`}},buttons:{discard:{title:`Descartar`},close:{title:`Cerrar`},add:{title:`Añadir`},save:{title:`Guardar`},update:{title:`Actualizar`},yes:{title:`Sí`},no:{title:`No`},manageElements:{title:`Gestionar elementos`},addCard:{title:`Añadir tarjeta`},addPageDataSource:{title:`Añadir fuente de datos de página`}},fields:{cards:{id:{title:`Identificador`},title:{title:`Título`,placeholder:`Introduzca el título de la tarjeta`,validation:{required:`Por favor, introduzca un título de tarjeta`}},icon:{title:`Icono`,placeholder:`Seleccione un icono`},order:{title:`Orden`,placeholder:`Orden de visualización`},rows:{title:`Filas`,placeholder:`Número de filas`},cols:{title:`Columnas`,placeholder:`Número de columnas`}}}},wD={meta:{pages:{editCard:{title:`Edytuj kartę`},addCard:{title:`Dodaj kartę`},editTile:{title:`Edytuj kafelek karty`},addTile:{title:`Dodaj kafelek karty`},editDataSource:{title:`Edytuj źródło danych strony`},addDataSource:{title:`Dodaj źródło danych strony`}}},breadcrumbs:{pages:{configure:`strona: {page}`,addCard:`dodaj kartę`,editCard:`edytuj kartę`,addTile:`dodaj kafelek karty`,editTile:`edytuj kafelek karty`,addDataSource:`dodaj źródło danych strony`,editDataSource:`edytuj źródło danych strony`}},headings:{pages:{addCard:`Dodaj kartę`,editCard:`Edytuj kartę`,addTile:`Dodaj kafelek karty`,editTile:`Edytuj kafelek karty`,addDataSource:`Dodaj źródło danych strony`,editDataSource:`Edytuj źródło danych strony`},cards:{remove:`Usuń kartę`},configure:{display:`Wyświetlanie`,cards:`Karty`},misc:{discard:`Odrzucić zmiany?`}},subHeadings:{pages:{addCard:`Dodaj nową kartę do tej strony`,editCard:`Edytuj właściwości karty`,addTile:`Dodaj nowy kafelek do tej karty`,editTile:`Edytuj kafelek karty`,addDataSource:`Dodaj nowe źródło danych strony`,editDataSource:`Edytuj źródło danych strony`}},messages:{cards:{removed:`Karta {card} została pomyślnie usunięta.`,notFound:`Karta {card} nie została znaleziona.`,notRemoved:`Nie udało się usunąć karty {card}.`,removeCanceled:`Usuwanie karty {card} zostało anulowane.`,deletedWhileEditing:`Ta karta została usunięta i nie jest już dostępna.`},tiles:{deletedWhileEditing:`Ten kafelek został usunięty i nie jest już dostępny.`},dataSources:{deletedWhileEditing:`To źródło danych zostało usunięte i nie jest już dostępne.`},misc:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`}},texts:{cards:{confirmRemove:`Czy na pewno chcesz usunąć kartę {card}?`,noCards:`Do tej strony nie dodano jeszcze żadnych kart.`,noTiles:`Brak kafelków w tej karcie. Kliknij +, aby dodać jeden.`,tilesCount:`kafelki`,loadingCard:`Ładowanie karty...`},tiles:{loadingTile:`Ładowanie kafelka...`},dataSources:{loadingDataSource:`Ładowanie źródła danych...`},misc:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`}},buttons:{discard:{title:`Odrzuć`},close:{title:`Zamknij`},add:{title:`Dodaj`},save:{title:`Zapisz`},update:{title:`Zaktualizuj`},yes:{title:`Tak`},no:{title:`Nie`},manageElements:{title:`Zarządzaj elementami`},addCard:{title:`Dodaj kartę`},addPageDataSource:{title:`Dodaj źródło danych strony`}},fields:{cards:{id:{title:`Identyfikator`},title:{title:`Tytuł`,placeholder:`Wprowadź tytuł karty`,validation:{required:`Wprowadź tytuł karty`}},icon:{title:`Ikona`,placeholder:`Wybierz ikonę`},order:{title:`Kolejność`,placeholder:`Kolejność wyświetlania`},rows:{title:`Wiersze`,placeholder:`Liczba wierszy`},cols:{title:`Kolumny`,placeholder:`Liczba kolumn`}}}},TD={meta:{pages:{editCard:{title:`Upraviť kartu`},addCard:{title:`Pridať kartu`},editTile:{title:`Upraviť dlaždicu karty`},addTile:{title:`Pridať dlaždicu karty`},editDataSource:{title:`Upraviť zdroj dát stránky`},addDataSource:{title:`Pridať zdroj dát stránky`}}},breadcrumbs:{pages:{configure:`stránka: {page}`,addCard:`pridať kartu`,editCard:`upraviť kartu`,addTile:`pridať dlaždicu karty`,editTile:`upraviť dlaždicu karty`,addDataSource:`pridať zdroj dát stránky`,editDataSource:`upraviť zdroj dát stránky`}},headings:{pages:{addCard:`Pridať kartu`,editCard:`Upraviť kartu`,addTile:`Pridať dlaždicu karty`,editTile:`Upraviť dlaždicu karty`,addDataSource:`Pridať zdroj dát stránky`,editDataSource:`Upraviť zdroj dát stránky`},cards:{remove:`Odstrániť kartu`},configure:{display:`Displej`,cards:`Karty`},misc:{discard:`Zahodiť zmeny?`}},subHeadings:{pages:{addCard:`Pridať novú kartu na túto stránku`,editCard:`Upraviť vlastnosti karty`,addTile:`Pridať novú dlaždicu do tejto karty`,editTile:`Upraviť dlaždicu karty`,addDataSource:`Pridať nový zdroj dát stránky`,editDataSource:`Upraviť zdroj dát stránky`}},messages:{cards:{removed:`Karta {card} bola úspešne odstránená.`,notFound:`Karta {card} nebola nájdená.`,notRemoved:`Kartu {card} sa nepodarilo odstrániť.`,removeCanceled:`Odstránenie karty {card} bolo zrušené.`,deletedWhileEditing:`Táto karta bola odstránená a už nie je dostupná.`},tiles:{deletedWhileEditing:`Táto dlaždica bola odstránená a už nie je dostupná.`},dataSources:{deletedWhileEditing:`Tento zdroj dát bol odstránený a už nie je dostupný.`},misc:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`}},texts:{cards:{confirmRemove:`Naozaj chcete odstrániť kartu {card}?`,noCards:`Na túto stránku ešte neboli pridané žiadne karty.`,noTiles:`Žiadne dlaždice v tejto karte. Kliknite na + pre pridanie.`,tilesCount:`dlaždíc`,loadingCard:`Načítavanie karty...`},tiles:{loadingTile:`Načítavanie dlaždice...`},dataSources:{loadingDataSource:`Načítavanie zdroja dát...`},misc:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`}},buttons:{discard:{title:`Zahodiť`},close:{title:`Zavrieť`},add:{title:`Pridať`},save:{title:`Uložiť`},update:{title:`Aktualizovať`},yes:{title:`Áno`},no:{title:`Nie`},manageElements:{title:`Spravovať elementy`},addCard:{title:`Pridať kartu`},addPageDataSource:{title:`Pridať zdroj dát stránky`}},fields:{cards:{id:{title:`Identifikátor`},title:{title:`Názov`,placeholder:`Zadajte názov karty`,validation:{required:`Prosím zadajte názov karty`}},icon:{title:`Ikona`,placeholder:`Vyberte ikonu`},order:{title:`Poradie`,placeholder:`Poradie zobrazenia`},rows:{title:`Riadky`,placeholder:`Počet riadkov`},cols:{title:`Stĺpce`,placeholder:`Počet stĺpcov`}}}},ED={"cs-CZ":bD,"de-DE":xD,"en-US":SD,"es-ES":CD,"pl-PL":wD,"sk-SK":TD},DD=[{path:`pages-cards/configure`,name:Ca.PAGE,component:()=>Et(()=>import(`./view-page-configure-b5zQ9PXr.js`),__vite__mapDeps([95,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,96,31,87,97,98,99,100,101,24])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Page configuration`,icon:`mdi:view-dashboard-variant`},children:[{path:`card/add`,name:Ca.PAGE_ADD_CARD,component:()=>Et(()=>import(`./view-card-add-CYZ9eXg5.js`),__vite__mapDeps([102,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,103,101,100,10])),props:e=>({pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Add card`,icon:`mdi:add-circle`}},{path:`card/:cardId`,name:Ca.PAGE_EDIT_CARD,component:()=>Et(()=>import(`./view-card-edit-C5zcGDFz.js`),__vite__mapDeps([104,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,105,101,100,10])),props:e=>({id:e.params.cardId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Edit card`,icon:`mdi:pencil-circle`}},{path:`card/:cardId/tile/add`,name:Ca.PAGE_CARD_ADD_TILE,component:()=>Et(()=>import(`./view-tile-add-Yt_KOkky.js`),__vite__mapDeps([106,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,100,10])),props:e=>({cardId:e.params.cardId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Add tile`,icon:`mdi:add-circle`}},{path:`card/:cardId/tile/:tileId`,name:Ca.PAGE_CARD_EDIT_TILE,component:()=>Et(()=>import(`./view-tile-edit-b2LCLrB5.js`),__vite__mapDeps([107,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,100,10])),props:e=>({id:e.params.tileId,cardId:e.params.cardId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Edit tile`,icon:`mdi:pencil-circle`}},{path:`data-source/add`,name:Ca.PAGE_ADD_DATA_SOURCE,component:()=>Et(()=>import(`./view-data-source-add-CNRJiOEl.js`),__vite__mapDeps([108,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,100,10])),props:e=>({pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Add data source`,icon:`mdi:add-circle`}},{path:`data-source/:dataSourceId`,name:Ca.PAGE_EDIT_DATA_SOURCE,component:()=>Et(()=>import(`./view-data-source-edit-5xrflzsE.js`),__vite__mapDeps([109,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,100,10])),props:e=>({id:e.params.dataSourceId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Edit data source`,icon:`mdi:pencil-circle`}}]}],OD=xr,kD=br,AD=q({id:mr,draft:R().default(!1),page:mr,title:Y().trim().nonempty(),icon:Y().trim().nullable().default(null),order:G().default(0),rows:G().gte(1).nullable().default(null),cols:G().gte(1).nullable().default(null),createdAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:z([Y().datetime({offset:!0}),Oe()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)});q({fetching:q({items:H(mr).default([]),item:H(mr)}),creating:H(mr),updating:H(mr),deleting:H(mr)}),q({id:mr,data:_e({})}),q({id:mr,data:q({title:Y().trim().nonempty(),icon:Y().trim().transform(e=>e===``?null:e).nullable().default(null).optional(),order:G().default(0),rows:G().gte(1).nullable().default(null).optional(),cols:G().gte(1).nullable().default(null).optional()}).catchall(et())}),q({id:mr.optional(),pageId:mr.optional()}),q({id:mr,pageId:mr}),q({pageId:mr});var jD=q({id:mr.optional().default(ft()),pageId:mr,draft:R().optional().default(!1),data:q({title:Y().trim().nonempty(),icon:Y().trim().transform(e=>e===``?null:e).nullable().default(null).optional(),order:G().default(0),rows:G().gte(1).nullable().default(null).optional(),cols:G().gte(1).nullable().default(null).optional()})}),MD=q({id:mr,pageId:mr,data:q({title:Y().trim().nonempty().optional(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().default(0),rows:G().gte(1).nullable().optional(),cols:G().gte(1).nullable().optional()})});q({id:mr,pageId:mr}),q({id:mr,pageId:mr});var ND=q({id:Y().uuid().optional(),title:Y().trim().nonempty(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G(),rows:G().gte(1).nullable().optional(),cols:G().gte(1).nullable().optional(),tiles:H(Rr).optional(),data_source:H(fr).optional()}),PD=q({title:Y().trim().nonempty().optional(),icon:Y().trim().transform(e=>e===``?null:e).nullable().optional(),order:G().optional(),rows:G().gte(1).nullable().optional(),cols:G().gte(1).nullable().optional()}),FD=q({id:Y().uuid(),page:Y().uuid(),title:Y().trim().nonempty(),icon:Y().trim().nullable(),order:G(),rows:G().gte(1).nullable(),cols:G().gte(1).nullable(),created_at:Y().date(),updated_at:Y().date().nullable(),tiles:H(Fr),data_source:H(gr)}),ID=e=>{let t=AD.safeParse(Ct(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new or(`Failed to validate received card data.`);return t.data},LD=e=>{let t=ND.safeParse(zt(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new or(`Failed to validate create card request.`);return t.data},RD=e=>{let t=PD.safeParse(zt(e));if(!t.success)throw Ut.error(`Schema validation failed with:`,t.error),new or(`Failed to validate update card request.`);return t.data},zD={fetching:{items:[],item:[]},creating:[],updating:[],deleting:[]},BD=it(`pages_cards_plugin-cards`,()=>{let e=fn(),t=Ke(),{getElement:n}=Ar(),{getElement:r}=hr(),i=Ye(),a=N(zD),o=N([]),s=N({}),c=e=>o.value.includes(e),l=e=>a.value.fetching.item.includes(e),u=e=>a.value.fetching.items.includes(e),d=()=>Object.values(s.value),f=e=>Object.values(s.value??{}).filter(t=>t.page===e),p=e=>s.value[e]??null,m={},h={},g=e=>_({id:e.id,data:ID(e.data)}),_=e=>{if(e.id&&s.value&&e.id in s.value){let n=AD.safeParse({...s.value[e.id],...e.data});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new or(`Failed to insert card.`);return s.value[n.data.id]=n.data}let n=AD.safeParse({...e.data,id:e.id});if(!n.success)throw t.error(`Schema validation failed with:`,n.error),new or(`Failed to insert card.`);return s.value=s.value??{},s.value[n.data.id]=n.data},v=e=>{if(s.value){if(e.pageId!==void 0){let t=f(e.pageId);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 tr(`You have to provide at least page or card id`)}},y=async t=>{let n=m[t.id];if(n)return n;let r=(async()=>{if(a.value.fetching.item.includes(t.id))throw new ar(`Already fetching card.`);a.value.fetching.item.push(t.id);try{let{data:n,error:r,response:i}=await e.client.GET(`/${ae}/${Sa}/cards/{id}`,{params:{path:{pageId:t.pageId,id:t.id}}});if(n!==void 0){let e=ID(n.data);return s.value[e.id]=e,T(e,n.data.data_source),E(e,n.data.tiles),e}let a=`Failed to fetch card.`;throw r&&(a=Gt(r,a)),new ar(a,i.status)}finally{a.value.fetching.item=a.value.fetching.item.filter(e=>e!==t.id)}})();m[t.id]=r;try{return await r}finally{delete m[t.id]}},b=async t=>{let n=h[t.pageId];if(n)return n;let r=(async()=>{if(a.value.fetching.items.includes(t.pageId))throw new ar(`Already fetching cards.`);a.value.fetching.items.push(t.pageId),o.value=o.value.filter(e=>e!==t.pageId),o.value=[...new Set(o.value)];try{let{data:n,error:r,response:i}=await e.client.GET(`/${ae}/${Sa}/cards`,{params:{query:{page:t.pageId}}});if(n!==void 0){o.value.push(t.pageId),o.value=[...new Set(o.value)];let e=Object.fromEntries(n.data.map(e=>{let t=ID(e);return T(t,e.data_source),E(t,e.tiles),[t.id,t]}));return s.value={...s.value,...e},t.pageId?f(t.pageId):Object.values(s.value)}let a=`Failed to fetch cards.`;throw r&&(a=Gt(r,a)),new ar(a,i.status)}finally{a.value.fetching.items=a.value.fetching.items.filter(e=>e!==t.pageId)}})();h[t.pageId]=r;try{return await r}finally{delete h[t.pageId]}},x=async n=>{let r=jD.safeParse(n);if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new or(`Failed to add card.`);let i=AD.safeParse({...r.data.data,id:r.data.id,page:r.data.pageId,draft:r.data.draft,createdAt:new Date});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new or(`Failed to add card.`);if(a.value.creating.push(i.data.id),s.value[i.data.id]=i.data,i.data.draft)return a.value.creating=a.value.creating.filter(e=>e!==i.data.id),i.data;try{let{data:t,error:r,response:a}=await e.client.POST(`/${ae}/${Sa}/cards`,{body:{data:{...LD({...i.data,id:n.id}),page:n.pageId}}});if(t!==void 0&&t.data.id===n.id){let e=ID(t.data);return s.value[e.id]=e,T(e,t.data.data_source),E(e,t.data.tiles),e}delete s.value[i.data.id];let o=`Failed to create card.`;throw r&&(o=Gt(r,o)),new ar(o,a.status)}finally{a.value.creating=a.value.creating.filter(e=>e!==i.data.id)}},S=async n=>{let r=MD.safeParse(n);if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new or(`Failed to edit card.`);if(a.value.updating.includes(n.id))throw new tr(`Card is already being updated.`);if(!(n.id in s.value))throw new tr(`Failed to get card data to update.`);let i=AD.safeParse({...s.value[n.id],...(0,Ka.omitBy)(r.data.data,Ka.isUndefined)});if(!i.success)throw t.error(`Schema validation failed with:`,i.error),new or(`Failed to edit card.`);if(a.value.updating.push(n.id),s.value[i.data.id]=i.data,i.data.draft)return a.value.updating=a.value.updating.filter(e=>e!==i.data.id),i.data;try{let{data:t,error:r,response:a}=await e.client.PATCH(`/${ae}/${Sa}/cards/{id}`,{params:{path:{id:n.id}},body:{data:RD(i.data)}});if(t!==void 0){let e=ID(t.data);return s.value[e.id]=e,e}await y({id:n.id,pageId:n.pageId});let o=`Failed to update card.`;throw r&&(o=Gt(r,o)),new ar(o,a.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==n.id)}},C=async n=>{if(a.value.updating.includes(n.id))throw new tr(`Cards is already being saved.`);if(!(n.id in s.value))throw new tr(`Failed to get card data to save.`);let r=AD.safeParse(s.value[n.id]);if(!r.success)throw t.error(`Schema validation failed with:`,r.error),new or(`Failed to save card.`);a.value.updating.push(n.id);try{let{data:t,error:i,response:a}=await e.client.POST(`/${ae}/${Sa}/cards`,{body:{data:{...LD({...r.data,id:n.id}),page:n.pageId}}});if(t!==void 0&&t.data.id===n.id){let e=ID(t.data);return s.value[e.id]=e,T(e,t.data.data_source),E(e,t.data.tiles),e}let o=`Failed to create card.`;throw i&&(o=Gt(i,o)),new ar(o,a.status)}finally{a.value.updating=a.value.updating.filter(e=>e!==n.id)}},w=async t=>{if(a.value.deleting.includes(t.id))throw new tr(`Card 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{error:n,response:r}=await e.client.DELETE(`/${ae}/${Sa}/cards/{id}`,{params:{path:{pageId:t.pageId,id:t.id}}});if(r.status===204){let e=i.getStore(sr),n=i.getStore(cr);return n.unset({parent:{type:`card`,id:t.id}}),e.findForParent(`card`,t.id).forEach(e=>{n.unset({parent:{type:`tile`,id:e.id}})}),e.unset({parent:{type:`card`,id:t.id}}),!0}await y({id:t.id,pageId:t.pageId});let a=`Remove card failed.`;throw n&&(a=Gt(n,a)),new ar(a,r.status)}finally{a.value.deleting=a.value.deleting.filter(e=>e!==t.id)}return!0},T=(e,t)=>{let n=i.getStore(cr);t.forEach(t=>{let i=r(t.type);n.set({id:t.id,parent:{type:`card`,id:e.id},data:ur(t,i?.schemas?.dataSourceSchema||_r)})}),n.firstLoad.push(e.id)},E=(e,t)=>{let a=i.getStore(sr),o=i.getStore(cr);t.forEach(t=>{let i=n(t.type);a.set({id:t.id,parent:{type:`card`,id:e.id},data:lr(t,i?.schemas?.tileSchema||Ir)}),t.data_source.forEach(e=>{let n=r(e.type);o.set({id:e.id,parent:{type:`tile`,id:t.id},data:ur(e,n?.schemas?.dataSourceSchema||_r)})}),o.firstLoad.push(t.id)}),a.firstLoad.push(e.id)};return{semaphore:a,firstLoad:o,data:s,firstLoadFinished:c,getting:l,fetching:u,findAll:d,findForPage:f,findById:p,onEvent:g,set:_,unset:v,get:y,fetch:b,add:x,edit:S,save:C,remove:w}}),VD=e=>BD(e),HD=Pr.extend({}),UD=Lr.and(q({type:Z(xa),cards:H(ND).optional(),data_source:H(fr).optional()})),WD=zr.and(q({type:Z(xa)}));Mr.and(q({type:Z(xa),cards:H(FD),data_source:H(gr)}));var GD=Symbol(`FB-Plugin-PagesCards`),KD={install:(e,t)=>{let n=me(e),r=Ye(e),i=Re(e),a=Ce(e);for(let[e,n]of Object.entries(ED)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{pagesCardsPlugin:n});t.i18n.global.setLocaleMessage(e,r)}t.router.getRoutes().find(e=>e.name===O.ROOT)&&DD.forEach(e=>{t.router.addRoute(ir.PAGE_PLUGIN,e)});let o=VD(t.store);e.provide(ba,o),r.addStore(ba,o),n.addPlugin(GD,{type:wa,source:`com.fastybird.smart-panel.plugin.pages-cards`,name:`Cards page`,description:`Organize tiles into separate cards for better structure. Useful for grouping related controls and data on a single page.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:xa,name:`Cards`,components:{pageAddForm:vD,pageEditForm:yD},schemas:{pageSchema:HD,pageAddFormSchema:OD,pageEditFormSchema:kD,pageCreateReqSchema:UD,pageUpdateReqSchema:WD}}],routes:{configure:e=>t.router.resolve({name:Ca.PAGE,params:{id:e}})},modules:[nr],isCore:!0}),i.on(`event`,e=>{if(e?.event?.startsWith(`PagesCardsPlugin.`)&&!(e.payload===null||typeof e.payload!=`object`||!(`id`in e.payload)||typeof e.payload.id!=`string`))switch(e.event){case Ta.CARD_CREATED:case Ta.CARD_UPDATED:o.onEvent({id:e.payload.id,data:e.payload});break;case Ta.CARD_DELETED:o.unset({id:e.payload.id});break;default:a.warn(`Unhandled pages cards plugin event:`,e.event)}})}},qD=`pages-device-detail-plugin`,JD=`pages-device-detail`,YD=f({name:`DeviceDetailPageAddForm`,__name:`device-detail-page-add-form`,props:{id:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Er({id:n.id,type:JD}),{devices:g,fetchDevices:_,areLoading:x}=Zi(),S=y({title:[{required:!0,message:o(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}],device:[{required:!0,message:o(`pagesDeviceDetailPlugin.fields.device.validation.required`),trigger:`change`}]}),C=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(c).title,"onUpdate:modelValue":t[1]||=e=>h(c).title=e,placeholder:h(o)(`dashboardModule.fields.pages.title.placeholder`),name:`title`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`pagesDeviceDetailPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[2]||=e=>h(c).device=e,placeholder:h(o)(`pagesDeviceDetailPlugin.fields.device.placeholder`),name:`device`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[3]||=e=>h(c).icon=e,placeholder:h(o)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(c).order,"onUpdate:modelValue":t[4]||=e=>h(c).order=e,placeholder:h(o)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(c).showTopBar,"onUpdate:modelValue":t[5]||=e=>h(c).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(c).displays,"onUpdate:modelValue":t[6]||=e=>h(c).displays=e,placeholder:h(o)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(o)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),XD=f({name:`DeviceDetailPageEditForm`,__name:`device-detail-page-edit-form`,props:{page:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=yr({page:n.page}),{devices:g,fetchDevices:_,areLoading:x}=Zi(),S=y({title:[{required:!0,message:o(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}],device:[{required:!0,message:o(`pagesDeviceDetailPlugin.fields.device.validation.required`),trigger:`change`}]}),C=j(()=>Vt(g.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||_().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(c).title,"onUpdate:modelValue":t[1]||=e=>h(c).title=e,placeholder:h(o)(`dashboardModule.fields.pages.title.placeholder`),name:`title`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`pagesDeviceDetailPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[2]||=e=>h(c).device=e,placeholder:h(o)(`pagesDeviceDetailPlugin.fields.device.placeholder`),name:`device`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(c).icon,"onUpdate:modelValue":t[3]||=e=>h(c).icon=e,placeholder:h(o)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(c).order,"onUpdate:modelValue":t[4]||=e=>h(c).order=e,placeholder:h(o)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(c).showTopBar,"onUpdate:modelValue":t[5]||=e=>h(c).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(c).displays,"onUpdate:modelValue":t[6]||=e=>h(c).displays=e,placeholder:h(o)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(o)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),ZD={fields:{device:{title:`Zařízení`,placeholder:`Zařízení stránky`,description:`O zařízení`,validation:{required:`Vyberte prosím zařízení stránky`}}}},QD={fields:{device:{title:`Gerät`,placeholder:`Seitengerät`,description:`Über Gerät`,validation:{required:`Bitte wählen Sie ein Seitengerät`}}}},$D={fields:{device:{title:`Device`,placeholder:`Page device`,description:`About device`,validation:{required:`Please select page device`}}}},eO={fields:{device:{title:`Dispositivo`,placeholder:`Dispositivo de la página`,description:`Acerca del dispositivo`,validation:{required:`Por favor, seleccione un dispositivo para la página`}}}},tO={fields:{device:{title:`Urządzenie`,placeholder:`Urządzenie strony`,description:`O urządzeniu`,validation:{required:`Wybierz urządzenie strony`}}}},nO={fields:{device:{title:`Zariadenie`,placeholder:`Zariadenie stránky`,description:`O zariadení`,validation:{required:`Prosím vyberte zariadenie stránky`}}}},rO={"cs-CZ":ZD,"de-DE":QD,"en-US":$D,"es-ES":eO,"pl-PL":tO,"sk-SK":nO},iO=xr.extend({device:Y().uuid().optional()}),aO=br.extend({device:Y().uuid()}),oO=Pr.extend({device:$r}),sO=Lr.and(q({type:Z(JD),device:Y().uuid()})),cO=zr.and(q({type:Z(JD),device:Y().uuid().optional()}));Mr.and(q({type:Z(JD),device:Y().uuid()}));var lO=Symbol(`FB-Plugin-PagesDeviceDetail`),uO={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(rO)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{pagesDeviceDetailPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(lO,{type:qD,source:`com.fastybird.smart-panel.plugin.pages-device-detail`,name:`Device detail page`,description:`A dedicated page focused on a single device. Perfect for viewing and controlling all properties of a specific device in detail.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:JD,name:`Device detail`,components:{pageAddForm:YD,pageEditForm:XD},schemas:{pageSchema:oO,pageAddFormSchema:iO,pageEditFormSchema:aO,pageCreateReqSchema:sO,pageUpdateReqSchema:cO}}],modules:[nr],isCore:!0})}};f({name:`TileAddForm`,__name:`tile-add-form`,props:{id:{},page:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=N(void 0),s=N(n.remoteFormSubmit),c=N(n.remoteFormResult),l=N(n.remoteFormReset),u=N(n.remoteFormChanged);return m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),s.value=!0)}),m(()=>n.remoteFormReset,e=>{r(`update:remote-form-reset`,!1),e&&(l.value=!0)}),m(()=>c.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),P(A,null,[F(h(Hr),{modelValue:o.value,"onUpdate:modelValue":t[0]||=e=>o.value=e},null,8,[`modelValue`]),F(h(fe)),o.value?(i(),T(h(Vr),{key:0,id:n.id,"remote-form-submit":s.value,"onUpdate:remoteFormSubmit":t[1]||=e=>s.value=e,"remote-form-result":c.value,"onUpdate:remoteFormResult":t[2]||=e=>c.value=e,"remote-form-reset":l.value,"onUpdate:remoteFormReset":t[3]||=e=>l.value=e,"remote-form-changed":u.value,"onUpdate:remoteFormChanged":t[4]||=e=>u.value=e,type:o.value,parent:`page`,"parent-id":n.page.id,"only-draft":``},null,8,[`id`,`remote-form-submit`,`remote-form-result`,`remote-form-reset`,`remote-form-changed`,`type`,`parent-id`])):(i(),T(h(L),{key:1,title:h(a)(`dashboardModule.headings.tiles.selectPlugin`),description:h(a)(`dashboardModule.texts.tiles.selectPlugin`),closable:!1,"show-icon":``,type:`info`},null,8,[`title`,`description`]))],64))}}),f({name:`TileEditForm`,__name:`tile-edit-form`,props:{page:{},id:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{tile:a,fetchTile:o,isLoading:c}=jr({id:n.id,parent:`page`,parentId:n.page.id}),l=N(n.remoteFormSubmit),u=N(n.remoteFormResult),d=N(n.remoteFormReset),f=N(n.remoteFormChanged);return s(async()=>{c.value||o().catch(e=>{let t=e;throw t instanceof ar&&t.code===404?new tr(`Tile not found`):new tr(`Something went wrong`,t)})}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l.value=!0)}),m(()=>n.remoteFormReset,e=>{r(`update:remote-form-reset`,!1),e&&(d.value=!0)}),m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>f.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>h(a)?(i(),T(h(ii),{key:0,"remote-form-submit":l.value,"onUpdate:remoteFormSubmit":t[0]||=e=>l.value=e,"remote-form-result":u.value,"onUpdate:remoteFormResult":t[1]||=e=>u.value=e,"remote-form-reset":d.value,"onUpdate:remoteFormReset":t[2]||=e=>d.value=e,"remote-form-changed":f.value,"onUpdate:remoteFormChanged":t[3]||=e=>f.value=e,tile:h(a),"only-draft":``},null,8,[`remote-form-submit`,`remote-form-result`,`remote-form-reset`,`remote-form-changed`,`tile`])):g(``,!0)}});var dO=f({name:`TilesPageAddForm`,__name:`tiles-page-add-form`,props:{id:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{model:o,formEl:s,formChanged:c,submit:l,formResult:u}=Er({id:n.id,type:Ea}),f=y({title:[{required:!0,message:a(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]}),p=()=>{o.rows=null},g=()=>{o.cols=null},_=()=>{o.tileSize=null};return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(o),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(a)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(o).id,"onUpdate:modelValue":t[0]||=e=>h(o).id=e,placeholder:h(a)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(o).title,"onUpdate:modelValue":t[1]||=e=>h(o).title=e,placeholder:h(a)(`dashboardModule.fields.pages.title.placeholder`),name:`title`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(o).icon,"onUpdate:modelValue":t[2]||=e=>h(o).icon=e,placeholder:h(a)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(o).order,"onUpdate:modelValue":t[3]||=e=>h(o).order=e,placeholder:h(a)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(o).showTopBar,"onUpdate:modelValue":t[4]||=e=>h(o).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(o).displays,"onUpdate:modelValue":t[5]||=e=>h(o).displays=e,placeholder:h(a)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(a)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`]),F(h(fe)),F(h(Bt),{gutter:10,class:`mx-0!`},{default:d(()=>[F(h(vt),{span:12,class:`px-0!`},{default:d(()=>[F(h(V),{label:h(a)(`pagesTilesPlugin.fields.rows.title`),prop:`rows`},{default:d(()=>[F(h(Sn),{modelValue:h(o).rows,"onUpdate:modelValue":t[6]||=e=>h(o).rows=e,placeholder:h(a)(`pagesTilesPlugin.fields.rows.placeholder`),disabled:h(o).tileSize!==null,min:1,max:12,name:`rows`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:p},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12,class:`px-0!`},{default:d(()=>[F(h(V),{label:h(a)(`pagesTilesPlugin.fields.cols.title`),prop:`cols`},{default:d(()=>[F(h(Sn),{modelValue:h(o).cols,"onUpdate:modelValue":t[7]||=e=>h(o).cols=e,placeholder:h(a)(`pagesTilesPlugin.fields.cols.placeholder`),disabled:h(o).tileSize!==null,min:1,max:12,name:`cols`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:g},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`])]),_:1})]),_:1}),F(h(V),{label:h(a)(`pagesTilesPlugin.fields.tileSize.title`),prop:`tileSize`},{default:d(()=>[F(h(Sn),{modelValue:h(o).tileSize,"onUpdate:modelValue":t[8]||=e=>h(o).tileSize=e,placeholder:h(a)(`pagesTilesPlugin.fields.tileSize.placeholder`),disabled:h(o).rows!==null||h(o).cols!==null,min:40,max:200,name:`tileSize`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:_},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`]),F(h(L),{title:h(a)(`pagesTilesPlugin.headings.misc.tip`),description:h(a)(`pagesTilesPlugin.texts.misc.gridLayoutTip`),closable:!1,"show-icon":``,type:`success`},{icon:d(()=>[F(h(ne),{icon:`mdi:lightbulb-on`})]),_:1},8,[`title`,`description`])]),_:1},8,[`model`,`rules`]))}}),fO=f({name:`TilesPageEditForm`,__name:`tiles-page-edit-form`,props:{page:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),{model:o,formEl:s,formChanged:c,submit:l,formResult:u}=yr({page:n.page}),f=y({title:[{required:!0,message:a(`dashboardModule.fields.pages.title.validation.required`),trigger:`change`}]}),p=()=>{o.rows=null},g=()=>{o.cols=null},_=()=>{o.tileSize=null};return m(()=>u.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),l().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>c.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(o),rules:f,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(a)(`dashboardModule.fields.pages.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(o).id,"onUpdate:modelValue":t[0]||=e=>h(o).id=e,placeholder:h(a)(`dashboardModule.fields.pages.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.title.title`),prop:`title`},{default:d(()=>[F(h(W),{modelValue:h(o).title,"onUpdate:modelValue":t[1]||=e=>h(o).title=e,placeholder:h(a)(`dashboardModule.fields.pages.title.placeholder`),name:`title`,size:`large`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.icon.title`),prop:`icon`},{default:d(()=>[F(h(ge),{modelValue:h(o).icon,"onUpdate:modelValue":t[2]||=e=>h(o).icon=e,placeholder:h(a)(`dashboardModule.fields.pages.icon.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.order.title`),prop:`order`},{default:d(()=>[F(h(Sn),{modelValue:h(o).order,"onUpdate:modelValue":t[3]||=e=>h(o).order=e,placeholder:h(a)(`dashboardModule.fields.pages.order.placeholder`),name:`order`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.showTopBar.title`),prop:`showTopBar`},{default:d(()=>[F(h(Me),{modelValue:h(o).showTopBar,"onUpdate:modelValue":t[4]||=e=>h(o).showTopBar=e,name:`showTopBar`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`dashboardModule.fields.pages.displays.title`),prop:[`displays`]},{default:d(()=>[F(h(Ur),{modelValue:h(o).displays,"onUpdate:modelValue":t[5]||=e=>h(o).displays=e,placeholder:h(a)(`dashboardModule.fields.pages.displays.placeholder`)},null,8,[`modelValue`,`placeholder`]),F(h(Ze),{size:`small`,class:`block mt-1 text-gray-500`},{default:d(()=>[v(k(h(a)(`dashboardModule.fields.pages.displays.description`)),1)]),_:1})]),_:1},8,[`label`]),F(h(fe)),F(h(Bt),{gutter:10,class:`mx-0!`},{default:d(()=>[F(h(vt),{span:12,class:`px-0!`},{default:d(()=>[F(h(V),{label:h(a)(`pagesTilesPlugin.fields.rows.title`),prop:`rows`},{default:d(()=>[F(h(Sn),{modelValue:h(o).rows,"onUpdate:modelValue":t[6]||=e=>h(o).rows=e,placeholder:h(a)(`pagesTilesPlugin.fields.rows.placeholder`),disabled:h(o).tileSize!==null,min:1,max:12,name:`rows`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:p},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12,class:`px-0!`},{default:d(()=>[F(h(V),{label:h(a)(`pagesTilesPlugin.fields.cols.title`),prop:`cols`},{default:d(()=>[F(h(Sn),{modelValue:h(o).cols,"onUpdate:modelValue":t[7]||=e=>h(o).cols=e,placeholder:h(a)(`pagesTilesPlugin.fields.cols.placeholder`),disabled:h(o).tileSize!==null,min:1,max:12,name:`cols`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:g},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`])]),_:1})]),_:1}),F(h(V),{label:h(a)(`pagesTilesPlugin.fields.tileSize.title`),prop:`tileSize`},{default:d(()=>[F(h(Sn),{modelValue:h(o).tileSize,"onUpdate:modelValue":t[8]||=e=>h(o).tileSize=e,placeholder:h(a)(`pagesTilesPlugin.fields.tileSize.placeholder`),disabled:h(o).rows!==null||h(o).cols!==null,min:40,max:200,name:`tileSize`},null,8,[`modelValue`,`placeholder`,`disabled`]),F(h(E),{plain:``,class:`ml-2 px-3!`,onClick:_},{icon:d(()=>[F(h(ne),{icon:`mdi:close`})]),_:1})]),_:1},8,[`label`]),F(h(L),{title:h(a)(`pagesTilesPlugin.headings.misc.tip`),description:h(a)(`pagesTilesPlugin.texts.misc.gridLayoutTip`),closable:!1,"show-icon":``,type:`success`},{icon:d(()=>[F(h(ne),{icon:`mdi:lightbulb-on`})]),_:1},8,[`title`,`description`])]),_:1},8,[`model`,`rules`]))}}),pO={meta:{pages:{editTile:{title:`Upravit dlaždici stránky`},addTile:{title:`Přidat dlaždici stránky`},editDataSource:{title:`Upravit zdroj dat stránky`},addDataSource:{title:`Přidat zdroj dat stránky`}}},breadcrumbs:{pages:{configure:`stránka: {page}`,addTile:`přidat dlaždici stránky`,editTile:`upravit dlaždici stránky`,addDataSource:`přidat zdroj dat stránky`,editDataSource:`upravit zdroj dat stránky`}},headings:{pages:{addTile:`Přidat dlaždici stránky`,editTile:`Upravit dlaždici stránky`,addDataSource:`Přidat zdroj dat stránky`,editDataSource:`Upravit zdroj dat stránky`},configure:{draft:`Koncept`,display:`Displej`,quickAddTile:`Rychle přidat dlaždici`},misc:{discard:`Zahodit změny?`,tip:`Tip`}},subHeadings:{pages:{addTile:`Přidat novou dlaždici stránky smart panelu`,editTile:`Upravit dlaždici stránky smart panelu`,addDataSource:`Přidat nový zdroj dat stránky smart panelu`,editDataSource:`Upravit zdroj dat stránky smart panelu`}},messages:{tiles:{deletedWhileEditing:`Tato dlaždice byla smazána a již není k dispozici.`},dataSources:{deletedWhileEditing:`Tento zdroj dat byl smazán a již není k dispozici.`},misc:{requestError:`Něco se pokazilo, zkuste to prosím znovu později.`}},texts:{misc:{confirmDiscard:`Máte neuložené změny. Opravdu je chcete zahodit?`,gridLayoutTip:`Můžete změnit, kolik dlaždic se vejde na stránku — nastavte Řádky a Sloupce nebo zvolte Velikost dlaždice.`},tiles:{loadingTile:`Načítání dlaždice...`},dataSources:{loadingDataSource:`Načítání zdroje dat...`}},buttons:{discard:{title:`Zahodit`},close:{title:`Zavřít`},add:{title:`Přidat`},save:{title:`Uložit`},update:{title:`Aktualizovat`},yes:{title:`Ano`},no:{title:`Ne`},manageElements:{title:`Spravovat prvky`},addPageTile:{title:`Přidat dlaždici stránky`},addPageDataSource:{title:`Přidat zdroj dat stránky`}},fields:{rows:{title:`Řádky`,placeholder:`Počet řádků`},cols:{title:`Sloupce`,placeholder:`Počet sloupců`},tileSize:{title:`Velikost dlaždice`,placeholder:`Velikost dlaždice`}}},mO={meta:{pages:{editTile:{title:`Seitenkachel bearbeiten`},addTile:{title:`Seitenkachel hinzufügen`},editDataSource:{title:`Seitendatenquelle bearbeiten`},addDataSource:{title:`Seitendatenquelle hinzufügen`}}},breadcrumbs:{pages:{configure:`Seite: {page}`,addTile:`Seitenkachel hinzufügen`,editTile:`Seitenkachel bearbeiten`,addDataSource:`Seitendatenquelle hinzufügen`,editDataSource:`Seitendatenquelle bearbeiten`}},headings:{pages:{addTile:`Seitenkachel hinzufügen`,editTile:`Seitenkachel bearbeiten`,addDataSource:`Seitendatenquelle hinzufügen`,editDataSource:`Seitendatenquelle bearbeiten`},configure:{draft:`Entwurf`,display:`Anzeige`,quickAddTile:`Kachel schnell hinzufügen`},misc:{discard:`Änderungen verwerfen?`,tip:`Tipp`}},subHeadings:{pages:{addTile:`Neue Smart Panel Seitenkachel hinzufügen`,editTile:`Smart Panel Seitenkachel bearbeiten`,addDataSource:`Neue Smart Panel Seitendatenquelle hinzufügen`,editDataSource:`Smart Panel Seitendatenquelle bearbeiten`}},messages:{tiles:{deletedWhileEditing:`Diese Kachel wurde gelöscht und ist nicht mehr verfügbar.`},dataSources:{deletedWhileEditing:`Diese Datenquelle wurde gelöscht und ist nicht mehr verfügbar.`},misc:{requestError:`Etwas ist schiefgelaufen, bitte versuchen Sie es später erneut.`}},texts:{misc:{confirmDiscard:`Sie haben ungespeicherte Änderungen. Möchten Sie diese wirklich verwerfen?`,gridLayoutTip:`Sie können einstellen, wie viele Kacheln auf die Seite passen — legen Sie Zeilen und Spalten fest oder wählen Sie eine Kachelgröße.`},tiles:{loadingTile:`Kachel wird geladen...`},dataSources:{loadingDataSource:`Datenquelle wird geladen...`}},buttons:{discard:{title:`Verwerfen`},close:{title:`Schließen`},add:{title:`Hinzufügen`},save:{title:`Speichern`},update:{title:`Aktualisieren`},yes:{title:`Ja`},no:{title:`Nein`},manageElements:{title:`Elemente verwalten`},addPageTile:{title:`Seitenkachel hinzufügen`},addPageDataSource:{title:`Seitendatenquelle hinzufügen`}},fields:{rows:{title:`Zeilen`,placeholder:`Zeilenanzahl`},cols:{title:`Spalten`,placeholder:`Spaltenanzahl`},tileSize:{title:`Kachelgröße`,placeholder:`Kachelgröße`}}},hO={meta:{pages:{editTile:{title:`Edit page tile`},addTile:{title:`Add page tile`},editDataSource:{title:`Edit page data source`},addDataSource:{title:`Add page data source`}}},breadcrumbs:{pages:{configure:`page: {page}`,addTile:`add page tile`,editTile:`edit page tile`,addDataSource:`add page data source`,editDataSource:`edit page data source`}},headings:{pages:{addTile:`Add page tile`,editTile:`Edit page tile`,addDataSource:`Add page data source`,editDataSource:`Edit page data source`},configure:{draft:`Draft`,display:`Display`,quickAddTile:`Quick add tile`},misc:{discard:`Discard changes?`,tip:`Tip`}},subHeadings:{pages:{addTile:`Add new smart panel page tile`,editTile:`Edit smart panel page tile`,addDataSource:`Add new smart panel page data source`,editDataSource:`Edit smart panel page data source`}},messages:{tiles:{deletedWhileEditing:`This tile was deleted and is no longer available.`},dataSources:{deletedWhileEditing:`This data source was deleted and is no longer available.`},misc:{requestError:`Something went wrong, please try again later.`}},texts:{misc:{confirmDiscard:`You have unsaved changes. Are you sure you want to discard them?`,gridLayoutTip:`You can change how many tiles fit on the page — set Rows and Columns or choose a Tile size.`},tiles:{loadingTile:`Loading tile...`},dataSources:{loadingDataSource:`Loading data source...`}},buttons:{discard:{title:`Discard`},close:{title:`Close`},add:{title:`Add`},save:{title:`Save`},update:{title:`Update`},yes:{title:`Yes`},no:{title:`No`},manageElements:{title:`Manage elements`},addPageTile:{title:`Add page tile`},addPageDataSource:{title:`Add page data source`}},fields:{rows:{title:`Rows`,placeholder:`Rows count`},cols:{title:`Cols`,placeholder:`Cols count`},tileSize:{title:`Tile size`,placeholder:`Tile size`}}},gO={meta:{pages:{editTile:{title:`Editar mosaico de página`},addTile:{title:`Añadir mosaico de página`},editDataSource:{title:`Editar fuente de datos de página`},addDataSource:{title:`Añadir fuente de datos de página`}}},breadcrumbs:{pages:{configure:`página: {page}`,addTile:`añadir mosaico de página`,editTile:`editar mosaico de página`,addDataSource:`añadir fuente de datos de página`,editDataSource:`editar fuente de datos de página`}},headings:{pages:{addTile:`Añadir mosaico de página`,editTile:`Editar mosaico de página`,addDataSource:`Añadir fuente de datos de página`,editDataSource:`Editar fuente de datos de página`},configure:{draft:`Borrador`,display:`Pantalla`,quickAddTile:`Añadir mosaico rápido`},misc:{discard:`¿Descartar cambios?`,tip:`Consejo`}},subHeadings:{pages:{addTile:`Añadir nuevo mosaico de página del panel inteligente`,editTile:`Editar mosaico de página del panel inteligente`,addDataSource:`Añadir nueva fuente de datos de página del panel inteligente`,editDataSource:`Editar fuente de datos de página del panel inteligente`}},messages:{tiles:{deletedWhileEditing:`Este mosaico fue eliminado y ya no está disponible.`},dataSources:{deletedWhileEditing:`Esta fuente de datos fue eliminada y ya no está disponible.`},misc:{requestError:`Algo salió mal, por favor inténtelo de nuevo más tarde.`}},texts:{misc:{confirmDiscard:`Tiene cambios sin guardar. ¿Está seguro de que desea descartarlos?`,gridLayoutTip:`Puede cambiar cuántos mosaicos caben en la página — establezca Filas y Columnas o elija un tamaño de mosaico.`},tiles:{loadingTile:`Cargando mosaico...`},dataSources:{loadingDataSource:`Cargando fuente de datos...`}},buttons:{discard:{title:`Descartar`},close:{title:`Cerrar`},add:{title:`Añadir`},save:{title:`Guardar`},update:{title:`Actualizar`},yes:{title:`Sí`},no:{title:`No`},manageElements:{title:`Gestionar elementos`},addPageTile:{title:`Añadir mosaico de página`},addPageDataSource:{title:`Añadir fuente de datos de página`}},fields:{rows:{title:`Filas`,placeholder:`Número de filas`},cols:{title:`Columnas`,placeholder:`Número de columnas`},tileSize:{title:`Tamaño de mosaico`,placeholder:`Tamaño de mosaico`}}},_O={meta:{pages:{editTile:{title:`Edytuj kafelek strony`},addTile:{title:`Dodaj kafelek strony`},editDataSource:{title:`Edytuj źródło danych strony`},addDataSource:{title:`Dodaj źródło danych strony`}}},breadcrumbs:{pages:{configure:`strona: {page}`,addTile:`dodaj kafelek strony`,editTile:`edytuj kafelek strony`,addDataSource:`dodaj źródło danych strony`,editDataSource:`edytuj źródło danych strony`}},headings:{pages:{addTile:`Dodaj kafelek strony`,editTile:`Edytuj kafelek strony`,addDataSource:`Dodaj źródło danych strony`,editDataSource:`Edytuj źródło danych strony`},configure:{draft:`Wersja robocza`,display:`Wyświetlanie`,quickAddTile:`Szybkie dodawanie kafelka`},misc:{discard:`Odrzucić zmiany?`,tip:`Wskazówka`}},subHeadings:{pages:{addTile:`Dodaj nowy kafelek strony Smart Panel`,editTile:`Edytuj kafelek strony Smart Panel`,addDataSource:`Dodaj nowe źródło danych strony Smart Panel`,editDataSource:`Edytuj źródło danych strony Smart Panel`}},messages:{tiles:{deletedWhileEditing:`Ten kafelek został usunięty i nie jest już dostępny.`},dataSources:{deletedWhileEditing:`To źródło danych zostało usunięte i nie jest już dostępne.`},misc:{requestError:`Coś poszło nie tak, spróbuj ponownie później.`}},texts:{misc:{confirmDiscard:`Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?`,gridLayoutTip:`Możesz zmienić, ile kafelków mieści się na stronie — ustaw Wiersze i Kolumny lub wybierz Rozmiar kafelka.`},tiles:{loadingTile:`Ładowanie kafelka...`},dataSources:{loadingDataSource:`Ładowanie źródła danych...`}},buttons:{discard:{title:`Odrzuć`},close:{title:`Zamknij`},add:{title:`Dodaj`},save:{title:`Zapisz`},update:{title:`Zaktualizuj`},yes:{title:`Tak`},no:{title:`Nie`},manageElements:{title:`Zarządzaj elementami`},addPageTile:{title:`Dodaj kafelek strony`},addPageDataSource:{title:`Dodaj źródło danych strony`}},fields:{rows:{title:`Wiersze`,placeholder:`Liczba wierszy`},cols:{title:`Kolumny`,placeholder:`Liczba kolumn`},tileSize:{title:`Rozmiar kafelka`,placeholder:`Rozmiar kafelka`}}},vO={meta:{pages:{editTile:{title:`Upraviť dlaždicu stránky`},addTile:{title:`Pridať dlaždicu stránky`},editDataSource:{title:`Upraviť zdroj dát stránky`},addDataSource:{title:`Pridať zdroj dát stránky`}}},breadcrumbs:{pages:{configure:`stránka: {page}`,addTile:`pridať dlaždicu stránky`,editTile:`upraviť dlaždicu stránky`,addDataSource:`pridať zdroj dát stránky`,editDataSource:`upraviť zdroj dát stránky`}},headings:{pages:{addTile:`Pridať dlaždicu stránky`,editTile:`Upraviť dlaždicu stránky`,addDataSource:`Pridať zdroj dát stránky`,editDataSource:`Upraviť zdroj dát stránky`},configure:{draft:`Návrh`,display:`Displej`,quickAddTile:`Rýchle pridanie dlaždice`},misc:{discard:`Zahodiť zmeny?`,tip:`Tip`}},subHeadings:{pages:{addTile:`Pridať novú dlaždicu stránky smart panelu`,editTile:`Upraviť dlaždicu stránky smart panelu`,addDataSource:`Pridať nový zdroj dát stránky smart panelu`,editDataSource:`Upraviť zdroj dát stránky smart panelu`}},messages:{tiles:{deletedWhileEditing:`Táto dlaždica bola odstránená a už nie je dostupná.`},dataSources:{deletedWhileEditing:`Tento zdroj dát bol odstránený a už nie je dostupný.`},misc:{requestError:`Niečo sa pokazilo, skúste to prosím neskôr.`}},texts:{misc:{confirmDiscard:`Máte neuložené zmeny. Naozaj ich chcete zahodiť?`,gridLayoutTip:`Môžete zmeniť, koľko dlaždíc sa zmestí na stránku — nastavte Riadky a Stĺpce alebo zvoľte veľkosť Dlaždice.`},tiles:{loadingTile:`Načítavanie dlaždice...`},dataSources:{loadingDataSource:`Načítavanie zdroja dát...`}},buttons:{discard:{title:`Zahodiť`},close:{title:`Zavrieť`},add:{title:`Pridať`},save:{title:`Uložiť`},update:{title:`Aktualizovať`},yes:{title:`Áno`},no:{title:`Nie`},manageElements:{title:`Spravovať elementy`},addPageTile:{title:`Pridať dlaždicu stránky`},addPageDataSource:{title:`Pridať zdroj dát stránky`}},fields:{rows:{title:`Riadky`,placeholder:`Počet riadkov`},cols:{title:`Stĺpce`,placeholder:`Počet stĺpcov`},tileSize:{title:`Veľkosť dlaždice`,placeholder:`Veľkosť dlaždice`}}},yO={"cs-CZ":pO,"de-DE":mO,"en-US":hO,"es-ES":gO,"pl-PL":_O,"sk-SK":vO},bO=[{path:`pages-tiles/configure`,name:Da.PAGE,component:()=>Et(()=>import(`./view-page-configure-c8DaItoq.js`),__vite__mapDeps([110,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,111,87,97,98,112,113,24])),props:!0,meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Page configuration`,icon:`mdi:monitor-dashboard`},children:[{path:`tile/add`,name:Da.PAGE_ADD_TILE,component:()=>Et(()=>import(`./view-tile-add-B7mnK_PA.js`),__vite__mapDeps([114,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,113,10])),props:e=>({pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Add tile`,icon:`mdi:add-circle`}},{path:`tile/:tileId`,name:Da.PAGE_EDIT_TILE,component:()=>Et(()=>import(`./view-tile-edit-hbO-vs_Y.js`),__vite__mapDeps([115,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,113,10])),props:e=>({id:e.params.tileId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Edit tile`,icon:`mdi:pencil-circle`}},{path:`data-source/add`,name:Da.PAGE_ADD_DATA_SOURCE,component:()=>Et(()=>import(`./view-data-source-add-3vF7foLh.js`),__vite__mapDeps([116,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,113,10])),props:e=>({pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Add tile`,icon:`mdi:add-circle`}},{path:`data-source/:dataSourceId`,name:Da.PAGE_EDIT_DATA_SOURCE,component:()=>Et(()=>import(`./view-data-source-edit-BJeCPFQo.js`),__vite__mapDeps([117,1,2,3,4,5,65,66,67,68,69,70,71,72,73,56,34,41,21,32,74,22,75,76,77,78,79,80,81,82,83,84,85,55,47,113,10])),props:e=>({id:e.params.dataSourceId,pageId:e.params.id}),meta:{guards:{authenticated:!0,roles:[nt.admin,nt.owner]},title:`Edit tile`,icon:`mdi:pencil-circle`}}]}],xO=xr.extend({rows:G().gte(1).nullable().default(null),cols:G().gte(1).nullable().default(null),tileSize:G().gt(0).nullable().default(null)}),SO=br.extend({rows:G().gte(1).nullable().default(null),cols:G().gte(1).nullable().default(null),tileSize:G().gt(0).nullable().default(null)}),CO=Pr.extend({tileSize:G().gte(0).nullable().default(null),rows:G().gte(1).nullable().default(null),cols:G().gte(1).nullable().default(null)}),wO=Lr.and(q({type:Z(Ea),tiles:H(Rr).optional(),data_source:H(fr).optional(),tile_size:G().gte(0).nullable().default(null),rows:G().gte(1).nullable().default(null),cols:G().gte(1).nullable().default(null)})),TO=zr.and(q({type:Z(Ea),tile_size:G().gte(0).nullable(),rows:G().gte(1).nullable(),cols:G().gte(1).nullable()}));Mr.and(q({type:Z(Ea),tiles:H(Fr),data_source:H(gr),tile_size:G().nullable(),rows:G().nullable(),cols:G().nullable()}));var EO=Symbol(`FB-Plugin-PagesTiles`),DO={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(yO)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{pagesTilesPlugin:n});t.i18n.global.setLocaleMessage(e,r)}t.router.getRoutes().find(e=>e.name===O.ROOT)&&bO.forEach(e=>{t.router.addRoute(ir.PAGE_PLUGIN,e)}),n.addPlugin(EO,{type:Oa,source:`com.fastybird.smart-panel.plugin.pages-tiles`,name:`Tiles page`,description:`A flexible page layout displaying multiple tiles in a grid. Ideal for visualizing device data and controls in a compact format.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:Ea,name:`Tiles`,components:{pageAddForm:dO,pageEditForm:fO},schemas:{pageSchema:CO,pageAddFormSchema:xO,pageEditFormSchema:SO,pageCreateReqSchema:wO,pageUpdateReqSchema:TO}}],routes:{configure:e=>t.router.resolve({name:Da.PAGE,params:{id:e}})},modules:[nr],isCore:!0})}},OO=`scenes-local-plugin`,kO=`scenes-local`,AO={[sa.GENERIC]:null,[sa.LIGHTING]:[U.lighting,U.switcher,U.outlet],[sa.CLIMATE]:[U.thermostat,U.heating_unit,U.air_conditioner,U.air_dehumidifier,U.air_humidifier,U.air_purifier,U.fan],[sa.MEDIA]:[U.television,U.media,U.speaker],[sa.WORK]:[U.lighting,U.outlet],[sa.RELAX]:[U.lighting,U.media],[sa.NIGHT]:[U.lighting,U.window_covering],[sa.MORNING]:[U.lighting,U.window_covering],[sa.PARTY]:[U.lighting,U.speaker,U.media],[sa.MOVIE]:[U.television,U.lighting,U.speaker],[sa.AWAY]:[U.alarm,U.lock,U.camera],[sa.HOME]:null,[sa.SECURITY]:[U.camera,U.alarm,U.lock,U.door],[sa.ENERGY]:[U.outlet,U.switcher,U.sensor],[sa.CUSTOM]:null},jO={class:`grow-1`},MO=C(f({name:`LocalSceneActionAddForm`,__name:`local-scene-action-add-form`,props:{id:{},sceneId:{},sceneCategory:{default:void 0},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:ma.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`,`submit`],setup(e,{emit:t}){let n=ie(`local-scene-action-add-form`),r=e,o=t,{t:c}=b(),l=N(void 0),f=N(ma.NONE),p=N(!1),_=N(!1),x=y({id:r.id||ft(),type:kO,deviceId:``,channelId:null,propertyId:null,value:``,enabled:!0}),S=j(()=>x.channelId??void 0),C=j(()=>r.sceneCategory?AO[r.sceneCategory]??null:null),w=j(()=>C.value!==null&&C.value.length>0),{devices:E,fetchDevices:O,areLoading:te,loaded:M}=Zi(),{channels:re,fetchChannels:ae,areLoading:oe}=li({deviceId:j(()=>x.deviceId)}),{properties:ce,fetchProperties:le,areLoading:ue}=xi({channelId:S}),de=e=>e.permissions.includes(It.rw)||e.permissions.includes(It.wo),I=j(()=>ce.value.filter(de)),fe=j(()=>re.value.filter(e=>ce.value.filter(t=>t.channel===e.id).some(de))),pe=j(()=>{if(x.propertyId)return ce.value.find(e=>e.id===x.propertyId)}),me=j(()=>{if(!pe.value)return`string`;let e=pe.value.dataType;return e===Zt.bool?`boolean`:e===Zt.enum?`enum`:[Zt.int,Zt.uint,Zt.float,Zt.char,Zt.uchar,Zt.short,Zt.ushort].includes(e)?`number`:`string`}),he=j(()=>{if(!pe.value)return null;let e=pe.value.format;if(!Array.isArray(e))return null;let t=e.filter(e=>typeof e==`string`);return t.length>0?t:null}),ge=j(()=>he.value||[]),_e=j(()=>{if(!pe.value)return;let e=pe.value.format;if(!Array.isArray(e)||e.length<1)return;let t=e[0];return typeof t==`number`?t:void 0}),ve=j(()=>{if(!pe.value)return;let e=pe.value.format;if(!Array.isArray(e)||e.length<2)return;let t=e[1];return typeof t==`number`?t:void 0}),ye=j(()=>pe.value&&pe.value.step!==null&&pe.value.step!==void 0?pe.value.step:1),be=j({get:()=>x.value===!0||x.value===`true`||x.value===1,set:e=>{x.value=e,p.value=!0}}),xe=j({get:()=>typeof x.value==`number`?x.value:parseFloat(String(x.value))||0,set:e=>{x.value=e,p.value=!0}}),Se=j({get:()=>String(x.value),set:e=>{x.value=e,p.value=!0}}),Ce=j(()=>Vt(E.value,[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),R=j(()=>!w.value||!C.value?Ce.value:Vt(E.value.filter(e=>C.value.includes(e.category)),[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),we=j(()=>!w.value||!C.value?[]:Vt(E.value.filter(e=>!C.value.includes(e.category)),[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),Te=j(()=>Vt(ce.value.length>0?fe.value:re.value,[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),Ee=j(()=>Vt(I.value,[e=>(e.name??c(`devicesModule.categories.channelsProperties.${e.category}`)).toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name??c(`devicesModule.categories.channelsProperties.${e.category}`)}))),De=y({deviceId:[{required:!0,message:c(`scenesLocalPlugin.fields.device.validation.required`),trigger:`change`}],channelId:[{required:!0,message:c(`scenesLocalPlugin.fields.channel.validation.required`),trigger:`change`}],propertyId:[{required:!0,message:c(`scenesLocalPlugin.fields.property.validation.required`),trigger:`change`}],value:[{required:!0,message:c(`scenesLocalPlugin.fields.value.validation.required`),trigger:`change`}]}),Oe=async()=>{x.channelId=null,x.propertyId=null,x.value=``,p.value=!0,x.deviceId&&await ae()},ke=async()=>{x.propertyId=null,x.value=``,p.value=!0,x.channelId&&await le()},z=()=>{ce.value.find(e=>e.id===x.propertyId)?.dataType===Zt.bool?x.value=!1:x.value=``,p.value=!0},Ae=async()=>{if(f.value=ma.WORKING,!l.value){f.value=ma.ERROR;return}if(l.value.clearValidate(),!await l.value.validate().catch(()=>!1))throw f.value=ma.ERROR,Error(`Form not valid`);o(`submit`,{id:x.id,type:x.type,configuration:{},deviceId:x.deviceId,channelId:x.channelId,propertyId:x.propertyId,value:x.value,order:x.order,enabled:x.enabled}),f.value=ma.OK};return s(async()=>{M.value||await O().catch(e=>{throw new Ci(`Something went wrong`,e)})}),m(()=>f.value,async e=>{o(`update:remote-form-result`,e)}),m(()=>r.remoteFormSubmit,async e=>{e&&(o(`update:remote-form-submit`,!1),Ae().catch(()=>{}))}),m(()=>r.remoteFormReset,e=>{if(o(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>p.value,e=>{o(`update:remote-form-changed`,e)}),(e,t)=>!h(te)&&Ce.value.length===0?(i(),T(h(ee),{key:0,class:`h-full w-full`},{icon:d(()=>[F(h(se),{size:80},{primary:d(()=>[F(h(ne),{icon:`mdi:devices`})]),secondary:d(()=>[F(h(ne),{icon:`mdi:information`})]),_:1})]),title:d(()=>[v(k(h(c)(`scenesLocalPlugin.messages.noDevices`)),1)]),_:1})):(i(),T(h(B),{key:1,ref_key:`formEl`,ref:l,model:x,rules:De,"label-position":`top`,"status-icon":``},{default:d(()=>[w.value?(i(),P(A,{key:0},[_.value?(i(),T(h(L),{key:1,type:`warning`,closable:!1,"show-icon":``,class:`mb-2!`},{default:d(()=>[v(k(h(c)(`scenesLocalPlugin.fields.device.hints.allDevices`)),1)]),_:1})):(i(),T(h(L),{key:0,type:`info`,closable:!1,"show-icon":``,class:`mb-2!`},{default:d(()=>[v(k(h(c)(`scenesLocalPlugin.fields.device.hints.recommended`)),1)]),_:1}))],64)):g(``,!0),F(h(V),{class:u([h(n).e(`device-field`)]),prop:`deviceId`},{label:d(()=>[D(`div`,jO,k(h(c)(`scenesLocalPlugin.fields.device.title`)),1),w.value?(i(),T(h(Nt),{key:0,modelValue:_.value,"onUpdate:modelValue":t[0]||=e=>_.value=e,size:`small`},{default:d(()=>[v(k(h(c)(`scenesLocalPlugin.fields.device.showAll`)),1)]),_:1},8,[`modelValue`])):g(``,!0)]),default:d(()=>[F(h(X),{modelValue:x.deviceId,"onUpdate:modelValue":t[1]||=e=>x.deviceId=e,placeholder:h(c)(`scenesLocalPlugin.fields.device.placeholder`),name:`deviceId`,loading:h(te),disabled:Ce.value.length===0,filterable:``,class:`w-full`,onChange:Oe},{default:d(()=>[!_.value&&w.value&&R.value.length>0?(i(!0),P(A,{key:0},a(R.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128)):w.value?(i(),P(A,{key:1},[R.value.length>0?(i(),T(h(an),{key:0,label:h(c)(`scenesLocalPlugin.fields.device.groups.recommended`)},{default:d(()=>[(i(!0),P(A,null,a(R.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`label`])):g(``,!0),we.value.length>0?(i(),T(h(an),{key:1,label:h(c)(`scenesLocalPlugin.fields.device.groups.other`)},{default:d(()=>[(i(!0),P(A,null,a(we.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`label`])):g(``,!0)],64)):(i(!0),P(A,{key:2},a(Ce.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`class`]),F(h(V),{label:h(c)(`scenesLocalPlugin.fields.channel.title`),prop:`channelId`},{default:d(()=>[F(h(X),{modelValue:x.channelId,"onUpdate:modelValue":t[2]||=e=>x.channelId=e,placeholder:Te.value.length===0&&x.deviceId&&!h(oe)?h(c)(`scenesLocalPlugin.fields.channel.noChannels`):h(c)(`scenesLocalPlugin.fields.channel.placeholder`),name:`channelId`,loading:h(oe),disabled:!x.deviceId||Te.value.length===0,filterable:``,class:`w-full`,onChange:ke},{default:d(()=>[(i(!0),P(A,null,a(Te.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`label`]),F(h(V),{label:h(c)(`scenesLocalPlugin.fields.property.title`),prop:`propertyId`},{default:d(()=>[F(h(X),{modelValue:x.propertyId,"onUpdate:modelValue":t[3]||=e=>x.propertyId=e,placeholder:Ee.value.length===0&&x.channelId&&!h(ue)?h(c)(`scenesLocalPlugin.fields.property.noProperties`):h(c)(`scenesLocalPlugin.fields.property.placeholder`),name:`propertyId`,loading:h(ue),disabled:!x.channelId||Ee.value.length===0,filterable:``,class:`w-full`,onChange:z},{default:d(()=>[(i(!0),P(A,null,a(Ee.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`label`]),F(h(V),{label:h(c)(`scenesLocalPlugin.fields.value.title`),prop:`value`},{default:d(()=>[me.value===`boolean`?(i(),T(h(Me),{key:0,modelValue:be.value,"onUpdate:modelValue":t[4]||=e=>be.value=e},null,8,[`modelValue`])):me.value===`enum`&&he.value?(i(),T(h(X),{key:1,modelValue:x.value,"onUpdate:modelValue":t[5]||=e=>x.value=e,placeholder:h(c)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(ge.value,e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])):me.value===`number`?(i(),T(h(Sn),{key:2,modelValue:xe.value,"onUpdate:modelValue":t[6]||=e=>xe.value=e,placeholder:h(c)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`,min:_e.value,max:ve.value,step:ye.value,class:`w-full`},null,8,[`modelValue`,`placeholder`,`min`,`max`,`step`])):(i(),T(h(W),{key:3,modelValue:Se.value,"onUpdate:modelValue":t[7]||=e=>Se.value=e,placeholder:h(c)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`},null,8,[`modelValue`,`placeholder`]))]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),[[`__scopeId`,`data-v-68a93a3a`]]),NO={class:`flex items-center gap-1 min-w-0`},PO={class:`action-detail-popover`},FO={class:`detail-row`},IO={class:`detail-label`},LO={class:`detail-row`},RO={class:`detail-label`},zO={class:`detail-row`},BO={class:`detail-label`},VO={class:`detail-row`},HO={class:`detail-label`},UO=C(f({name:`LocalSceneActionCard`,__name:`local-scene-action-card`,props:{action:{}},setup(e){let t=e,{t:n}=b(),r=j(()=>t.action.deviceId??t.action.configuration?.device_id??``),a=j(()=>t.action.channelId??t.action.configuration?.channel_id??null),o=j(()=>t.action.propertyId??t.action.configuration?.property_id??``),c=j(()=>t.action.value??t.action.configuration?.value),{devices:f,fetchDevices:p,loaded:m}=Zi(),{channels:_,fetchChannels:y}=li({deviceId:r}),{properties:x,fetchProperties:S}=xi({channelId:j(()=>a.value??void 0)}),C=j(()=>f.value.find(e=>e.id===r.value)),w=j(()=>_.value.find(e=>e.id===a.value)),E=j(()=>x.value.find(e=>e.id===o.value)),O=j(()=>!C.value&&!!r.value),ee=j(()=>!w.value&&!!a.value),te=j(()=>!E.value&&!!o.value),M=j(()=>O.value||ee.value||te.value),re=j(()=>C.value?.name??n(`scenesLocalPlugin.actionCard.unknownDevice`)),ie=j(()=>w.value?.name??n(`scenesLocalPlugin.actionCard.unknownChannel`)),ae=j(()=>E.value?E.value.name??n(`devicesModule.categories.channelsProperties.${E.value.category}`):n(`scenesLocalPlugin.actionCard.unknownProperty`)),oe=j(()=>re.value.toLowerCase()!==ie.value.toLowerCase()),se=j(()=>{let e=c.value;return typeof e==`boolean`?e?`ON`:`OFF`:String(e??``)}),N=j(()=>{let e=c.value;return typeof e==`boolean`?e?`success`:`danger`:`info`});return s(async()=>{if(m.value||await p(),f.value.find(e=>e.id===r.value)){if(r.value)try{await y()}catch{return}if(a.value)try{await S()}catch{}}}),(e,t)=>(i(),P(`div`,{class:u([`local-action-content`,{"has-missing-resource":M.value}])},[D(`div`,NO,[M.value?(i(),T(h(ze),{key:0,content:h(n)(`scenesLocalPlugin.actionCard.missingResource`),placement:`top`},{default:d(()=>[F(h(l),{class:`warning-icon flex-shrink-0`,size:14},{default:d(()=>[F(h(ne),{icon:`mdi:alert-circle`})]),_:1})]),_:1},8,[`content`])):g(``,!0),F(h(zn),{placement:`top`,width:300,trigger:`click`},{reference:d(()=>[F(h(l),{class:`info-icon flex-shrink-0`,size:14},{default:d(()=>[F(h(ne),{icon:`mdi:information-outline`})]),_:1})]),default:d(()=>[D(`div`,PO,[D(`div`,FO,[D(`span`,IO,k(h(n)(`scenesLocalPlugin.actionCard.device`))+`:`,1),D(`span`,{class:u([`detail-value`,{"text-danger":O.value}])},k(re.value),3)]),D(`div`,LO,[D(`span`,RO,k(h(n)(`scenesLocalPlugin.actionCard.channel`))+`:`,1),D(`span`,{class:u([`detail-value`,{"text-danger":ee.value}])},k(ie.value),3)]),D(`div`,zO,[D(`span`,BO,k(h(n)(`scenesLocalPlugin.actionCard.property`))+`:`,1),D(`span`,{class:u([`detail-value`,{"text-danger":te.value}])},k(ae.value),3)]),D(`div`,VO,[D(`span`,HO,k(h(n)(`scenesLocalPlugin.actionCard.value`))+`:`,1),F(h(ct),{size:`small`,type:N.value},{default:d(()=>[v(k(se.value),1)]),_:1},8,[`type`])])])]),_:1}),F(h(Ze),{class:u([`font-medium flex-shrink-1 min-w-0`,{"text-danger":O.value}]),truncated:``},{default:d(()=>[v(k(re.value),1)]),_:1},8,[`class`]),oe.value?(i(),P(A,{key:1},[t[0]||=D(`span`,{class:`text-gray-400 flex-shrink-0`},`›`,-1),F(h(Ze),{class:u([`flex-shrink-1 min-w-0`,ee.value?`text-danger`:`text-gray-600`]),truncated:``},{default:d(()=>[v(k(ie.value),1)]),_:1},8,[`class`])],64)):g(``,!0),t[1]||=D(`span`,{class:`text-gray-400 flex-shrink-0`},`›`,-1),F(h(Ze),{class:u([`flex-shrink-1 min-w-0`,te.value?`text-danger`:`text-gray-600`]),truncated:``},{default:d(()=>[v(k(ae.value),1)]),_:1},8,[`class`]),t[2]||=D(`span`,{class:`text-gray-400 flex-shrink-0 mx-1`},`→`,-1),F(h(ct),{size:`small`,type:N.value,class:`flex-shrink-0`},{default:d(()=>[v(k(se.value),1)]),_:1},8,[`type`])])],2))}}),[[`__scopeId`,`data-v-11c3b695`]]),WO=f({name:`LocalSceneActionEditForm`,__name:`local-scene-action-edit-form`,props:{action:{},sceneId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:ma.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`,`submit`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),c=N(void 0),l=N(ma.NONE),u=N(!1),f=y({id:n.action.id,type:kO,deviceId:n.action.deviceId??n.action.configuration?.device_id??``,channelId:n.action.channelId??n.action.configuration?.channel_id??null,propertyId:n.action.propertyId??n.action.configuration?.property_id??``,value:n.action.value??n.action.configuration?.value??``,enabled:n.action.enabled}),_=j(()=>f.channelId??void 0),{devices:x,fetchDevices:S,areLoading:C,loaded:w}=Zi(),{channels:E,fetchChannels:D,areLoading:O}=li({deviceId:j(()=>f.deviceId??``)}),{properties:te,fetchProperties:M,areLoading:ne}=xi({channelId:_}),re=e=>e.permissions.includes(It.rw)||e.permissions.includes(It.wo),ie=j(()=>te.value.filter(re)),ae=j(()=>E.value.filter(e=>te.value.filter(t=>t.channel===e.id).some(re))),oe=j(()=>{if(f.propertyId)return te.value.find(e=>e.id===f.propertyId)}),se=j(()=>{if(!oe.value)return`string`;let e=oe.value.dataType;return e===Zt.bool?`boolean`:e===Zt.enum?`enum`:[Zt.int,Zt.uint,Zt.float,Zt.char,Zt.uchar,Zt.short,Zt.ushort].includes(e)?`number`:`string`}),ce=j(()=>{if(!oe.value)return null;let e=oe.value.format;if(!Array.isArray(e))return null;let t=e.filter(e=>typeof e==`string`);return t.length>0?t:null}),le=j(()=>ce.value||[]),ue=j(()=>{if(!oe.value)return;let e=oe.value.format;if(!Array.isArray(e)||e.length<1)return;let t=e[0];return typeof t==`number`?t:void 0}),de=j(()=>{if(!oe.value)return;let e=oe.value.format;if(!Array.isArray(e)||e.length<2)return;let t=e[1];return typeof t==`number`?t:void 0}),I=j(()=>oe.value&&oe.value.step!==null&&oe.value.step!==void 0?oe.value.step:1),fe=j({get:()=>f.value===!0||f.value===`true`||f.value===1,set:e=>{f.value=e,u.value=!0}}),pe=j({get:()=>typeof f.value==`number`?f.value:parseFloat(String(f.value))||0,set:e=>{f.value=e,u.value=!0}}),me=j({get:()=>String(f.value),set:e=>{f.value=e,u.value=!0}}),he=j(()=>Vt(x.value,[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),ge=j(()=>Vt(te.value.length>0?ae.value:E.value,[e=>e.name.toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name}))),_e=j(()=>Vt(ie.value,[e=>(e.name??o(`devicesModule.categories.channelsProperties.${e.category}`)).toLowerCase()],[`asc`]).map(e=>({value:e.id,label:e.name??o(`devicesModule.categories.channelsProperties.${e.category}`)}))),ve=y({deviceId:[{required:!0,message:o(`scenesLocalPlugin.fields.device.validation.required`),trigger:`change`}],channelId:[{required:!0,message:o(`scenesLocalPlugin.fields.channel.validation.required`),trigger:`change`}],propertyId:[{required:!0,message:o(`scenesLocalPlugin.fields.property.validation.required`),trigger:`change`}],value:[{required:!0,message:o(`scenesLocalPlugin.fields.value.validation.required`),trigger:`change`}]}),ye=async()=>{f.channelId=null,f.propertyId=``,f.value=``,u.value=!0,f.deviceId&&await D()},be=async()=>{f.propertyId=``,f.value=``,u.value=!0,f.channelId&&await M()},xe=()=>{te.value.find(e=>e.id===f.propertyId)?.dataType===Zt.bool?f.value=!1:f.value=``,u.value=!0},Se=async()=>{if(l.value=ma.WORKING,!c.value){l.value=ma.ERROR;return}if(c.value.clearValidate(),!await c.value.validate().catch(()=>!1))throw l.value=ma.ERROR,Error(`Form not valid`);r(`submit`,{id:f.id,type:f.type,configuration:{},deviceId:f.deviceId,channelId:f.channelId,propertyId:f.propertyId,value:f.value,order:f.order,enabled:f.enabled}),l.value=ma.OK};return s(async()=>{w.value||await S().catch(e=>{throw new Ci(`Something went wrong`,e)}),f.deviceId&&await D(),f.channelId&&await M()}),m(()=>l.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),Se().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!c.value)return;c.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>{let n=p(`icon`),r=p(`icon-with-child`);return i(),P(A,null,[!h(C)&&he.value.length===0?(i(),T(h(ee),{key:0,class:`h-full w-full`},{icon:d(()=>[F(r,{size:80},{primary:d(()=>[F(n,{icon:`mdi:devices`})]),secondary:d(()=>[F(n,{icon:`mdi:information`})]),_:1})]),title:d(()=>[v(k(h(o)(`scenesLocalPlugin.messages.noDevices`)),1)]),_:1})):g(``,!0),F(h(B),{ref_key:`formEl`,ref:c,model:f,rules:ve,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`scenesLocalPlugin.fields.device.title`),prop:`deviceId`},{default:d(()=>[F(h(X),{modelValue:f.deviceId,"onUpdate:modelValue":t[0]||=e=>f.deviceId=e,placeholder:h(o)(`scenesLocalPlugin.fields.device.placeholder`),name:`deviceId`,loading:h(C),disabled:he.value.length===0,filterable:``,class:`w-full`,onChange:ye},{default:d(()=>[(i(!0),P(A,null,a(he.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`scenesLocalPlugin.fields.channel.title`),prop:`channelId`},{default:d(()=>[F(h(X),{modelValue:f.channelId,"onUpdate:modelValue":t[1]||=e=>f.channelId=e,placeholder:ge.value.length===0&&f.deviceId&&!h(O)?h(o)(`scenesLocalPlugin.fields.channel.noChannels`):h(o)(`scenesLocalPlugin.fields.channel.placeholder`),name:`channelId`,loading:h(O),disabled:!f.deviceId||ge.value.length===0,filterable:``,class:`w-full`,onChange:be},{default:d(()=>[(i(!0),P(A,null,a(ge.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`scenesLocalPlugin.fields.property.title`),prop:`propertyId`},{default:d(()=>[F(h(X),{modelValue:f.propertyId,"onUpdate:modelValue":t[2]||=e=>f.propertyId=e,placeholder:_e.value.length===0&&f.channelId&&!h(ne)?h(o)(`scenesLocalPlugin.fields.property.noProperties`):h(o)(`scenesLocalPlugin.fields.property.placeholder`),name:`propertyId`,loading:h(ne),disabled:!f.channelId||_e.value.length===0,filterable:``,class:`w-full`,onChange:xe},{default:d(()=>[(i(!0),P(A,null,a(_e.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`,`disabled`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`scenesLocalPlugin.fields.value.title`),prop:`value`},{default:d(()=>[se.value===`boolean`?(i(),T(h(Me),{key:0,modelValue:fe.value,"onUpdate:modelValue":t[3]||=e=>fe.value=e},null,8,[`modelValue`])):se.value===`enum`&&ce.value?(i(),T(h(X),{key:1,modelValue:f.value,"onUpdate:modelValue":t[4]||=e=>f.value=e,placeholder:h(o)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`,class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(le.value,e=>(i(),T(h(J),{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])):se.value===`number`?(i(),T(h(Sn),{key:2,modelValue:pe.value,"onUpdate:modelValue":t[5]||=e=>pe.value=e,placeholder:h(o)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`,min:ue.value,max:de.value,step:I.value,class:`w-full`},null,8,[`modelValue`,`placeholder`,`min`,`max`,`step`])):(i(),T(h(W),{key:3,modelValue:me.value,"onUpdate:modelValue":t[6]||=e=>me.value=e,placeholder:h(o)(`scenesLocalPlugin.fields.value.placeholder`),name:`value`},null,8,[`modelValue`,`placeholder`]))]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`])],64)}}}),GO={plugin:{name:`Lokální scény`,description:`Provádějte scény lokálně ovládáním vlastností zařízení`},actionCard:{device:`Zařízení`,channel:`Kanál`,property:`Vlastnost`,value:`Hodnota`,unknownDevice:`Neznámé zařízení`,unknownChannel:`Neznámý kanál`,unknownProperty:`Neznámá vlastnost`,missingResource:`Tato akce odkazuje na smazané zařízení, kanál nebo vlastnost`},fields:{device:{title:`Zařízení`,placeholder:`Vyberte zařízení`,showAll:`Zobrazit všechna zařízení`,hints:{recommended:`Zobrazení zařízení doporučených pro tuto kategorii scén.`,allDevices:`Vybíráte zařízení mimo doporučenou kategorii.`},groups:{recommended:`Doporučená`,other:`Ostatní zařízení`},validation:{required:`Zařízení je povinné`}},channel:{title:`Kanál`,placeholder:`Vyberte kanál`,noChannels:`Žádné kanály nejsou k dispozici`,validation:{required:`Kanál je povinný`}},property:{title:`Vlastnost`,placeholder:`Vyberte vlastnost`,noProperties:`Žádné zapisovatelné vlastnosti`,validation:{required:`Vlastnost je povinná`}},value:{title:`Hodnota`,placeholder:`Zadejte hodnotu`,validation:{required:`Hodnota je povinná`}}},messages:{noDevices:`Žádná zařízení nejsou k dispozici. Nejprve prosím přidejte zařízení v sekci Zařízení.`}},KO={plugin:{name:`Lokale Szenen`,description:`Szenen lokal durch Steuerung von Geräteeigenschaften ausführen`},actionCard:{device:`Gerät`,channel:`Kanal`,property:`Eigenschaft`,value:`Wert`,unknownDevice:`Unbekanntes Gerät`,unknownChannel:`Unbekannter Kanal`,unknownProperty:`Unbekannte Eigenschaft`,missingResource:`Diese Aktion verweist auf ein gelöschtes Gerät, einen Kanal oder eine Eigenschaft`},fields:{device:{title:`Gerät`,placeholder:`Gerät auswählen`,showAll:`Alle Geräte anzeigen`,hints:{recommended:`Empfohlene Geräte für diese Szenenkategorie werden angezeigt.`,allDevices:`Sie wählen Geräte außerhalb der empfohlenen Kategorie aus.`},groups:{recommended:`Empfohlen`,other:`Andere Geräte`},validation:{required:`Gerät ist erforderlich`}},channel:{title:`Kanal`,placeholder:`Kanal auswählen`,noChannels:`Keine Kanäle verfügbar`,validation:{required:`Kanal ist erforderlich`}},property:{title:`Eigenschaft`,placeholder:`Eigenschaft auswählen`,noProperties:`Keine beschreibbaren Eigenschaften`,validation:{required:`Eigenschaft ist erforderlich`}},value:{title:`Wert`,placeholder:`Wert eingeben`,validation:{required:`Wert ist erforderlich`}}},messages:{noDevices:`Keine Geräte verfügbar. Bitte fügen Sie zuerst Geräte im Geräte-Bereich hinzu.`}},qO={plugin:{name:`Local Scenes`,description:`Execute scenes locally by controlling device properties`},actionCard:{device:`Device`,channel:`Channel`,property:`Property`,value:`Value`,unknownDevice:`Unknown device`,unknownChannel:`Unknown channel`,unknownProperty:`Unknown property`,missingResource:`This action references a deleted device, channel, or property`},fields:{device:{title:`Device`,placeholder:`Select a device`,showAll:`Show all devices`,hints:{recommended:`Showing devices recommended for this scene category.`,allDevices:`You are selecting devices outside the recommended category.`},groups:{recommended:`Recommended`,other:`Other devices`},validation:{required:`Device is required`}},channel:{title:`Channel`,placeholder:`Select a channel`,noChannels:`No channels available`,validation:{required:`Channel is required`}},property:{title:`Property`,placeholder:`Select a property`,noProperties:`No writable properties`,validation:{required:`Property is required`}},value:{title:`Value`,placeholder:`Enter a value`,validation:{required:`Value is required`}}},messages:{noDevices:`No devices available. Please add devices first in the Devices section.`}},JO={plugin:{name:`Escenas locales`,description:`Ejecutar escenas localmente controlando las propiedades de los dispositivos`},actionCard:{device:`Dispositivo`,channel:`Canal`,property:`Propiedad`,value:`Valor`,unknownDevice:`Dispositivo desconocido`,unknownChannel:`Canal desconocido`,unknownProperty:`Propiedad desconocida`,missingResource:`Esta acción hace referencia a un dispositivo, canal o propiedad eliminado`},fields:{device:{title:`Dispositivo`,placeholder:`Seleccione un dispositivo`,showAll:`Mostrar todos los dispositivos`,hints:{recommended:`Mostrando dispositivos recomendados para esta categoría de escena.`,allDevices:`Está seleccionando dispositivos fuera de la categoría recomendada.`},groups:{recommended:`Recomendados`,other:`Otros dispositivos`},validation:{required:`El dispositivo es obligatorio`}},channel:{title:`Canal`,placeholder:`Seleccione un canal`,noChannels:`No hay canales disponibles`,validation:{required:`El canal es obligatorio`}},property:{title:`Propiedad`,placeholder:`Seleccione una propiedad`,noProperties:`No hay propiedades editables`,validation:{required:`La propiedad es obligatoria`}},value:{title:`Valor`,placeholder:`Introduzca un valor`,validation:{required:`El valor es obligatorio`}}},messages:{noDevices:`No hay dispositivos disponibles. Por favor, añada dispositivos primero en la sección Dispositivos.`}},YO={plugin:{name:`Lokalne sceny`,description:`Wykonuj sceny lokalnie, sterując właściwościami urządzeń`},actionCard:{device:`Urządzenie`,channel:`Kanał`,property:`Właściwość`,value:`Wartość`,unknownDevice:`Nieznane urządzenie`,unknownChannel:`Nieznany kanał`,unknownProperty:`Nieznana właściwość`,missingResource:`Ta akcja odwołuje się do usuniętego urządzenia, kanału lub właściwości`},fields:{device:{title:`Urządzenie`,placeholder:`Wybierz urządzenie`,showAll:`Pokaż wszystkie urządzenia`,hints:{recommended:`Wyświetlanie urządzeń zalecanych dla tej kategorii sceny.`,allDevices:`Wybierasz urządzenia spoza zalecanej kategorii.`},groups:{recommended:`Zalecane`,other:`Inne urządzenia`},validation:{required:`Urządzenie jest wymagane`}},channel:{title:`Kanał`,placeholder:`Wybierz kanał`,noChannels:`Brak dostępnych kanałów`,validation:{required:`Kanał jest wymagany`}},property:{title:`Właściwość`,placeholder:`Wybierz właściwość`,noProperties:`Brak właściwości do zapisu`,validation:{required:`Właściwość jest wymagana`}},value:{title:`Wartość`,placeholder:`Wprowadź wartość`,validation:{required:`Wartość jest wymagana`}}},messages:{noDevices:`Brak dostępnych urządzeń. Najpierw dodaj urządzenia w sekcji Urządzenia.`}},XO={plugin:{name:`Lokálne scény`,description:`Vykonávajte scény lokálne ovládaním vlastností zariadení`},actionCard:{device:`Zariadenie`,channel:`Kanál`,property:`Vlastnosť`,value:`Hodnota`,unknownDevice:`Neznáme zariadenie`,unknownChannel:`Neznámy kanál`,unknownProperty:`Neznáma vlastnosť`,missingResource:`Táto akcia odkazuje na odstránené zariadenie, kanál alebo vlastnosť`},fields:{device:{title:`Zariadenie`,placeholder:`Vyberte zariadenie`,showAll:`Zobraziť všetky zariadenia`,hints:{recommended:`Zobrazujú sa zariadenia odporúčané pre túto kategóriu scény.`,allDevices:`Vyberáte zariadenia mimo odporúčanej kategórie.`},groups:{recommended:`Odporúčané`,other:`Ostatné zariadenia`},validation:{required:`Zariadenie je povinné`}},channel:{title:`Kanál`,placeholder:`Vyberte kanál`,noChannels:`Žiadne dostupné kanály`,validation:{required:`Kanál je povinný`}},property:{title:`Vlastnosť`,placeholder:`Vyberte vlastnosť`,noProperties:`Žiadne zapisovateľné vlastnosti`,validation:{required:`Vlastnosť je povinná`}},value:{title:`Hodnota`,placeholder:`Zadajte hodnotu`,validation:{required:`Hodnota je povinná`}}},messages:{noDevices:`Žiadne zariadenia nie sú dostupné. Najprv pridajte zariadenia v sekcii Zariadenia.`}},ZO={"cs-CZ":GO,"de-DE":KO,"en-US":qO,"es-ES":JO,"pl-PL":YO,"sk-SK":XO},QO=q({id:Y().uuid().optional(),type:Y().trim().nonempty(),deviceId:Y().uuid(),channelId:Y().uuid().nullable().optional(),propertyId:Y().uuid().nullable().optional(),value:z([Y(),G(),R()]),order:G().int().min(0).optional(),enabled:R().default(!0)}),$O=q({id:Y().uuid(),type:Y().trim().nonempty(),deviceId:Y().uuid().optional(),channelId:Y().uuid().nullable().optional(),propertyId:Y().uuid().nullable().optional(),value:z([Y(),G(),R()]).optional(),order:G().int().min(0).optional(),enabled:R().optional()}),ek=Symbol(`FB-Plugin-ScenesLocal`),tk={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(ZO)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{scenesLocalPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(ek,{type:OO,source:`com.fastybird.smart-panel.plugin.scenes-local-plugin`,name:`Local Scenes`,description:`Execute scenes locally by controlling device properties`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:kO,name:`Device property action`,components:{sceneActionAddForm:MO,sceneActionEditForm:WO,sceneActionCard:UO},schemas:{sceneActionAddFormSchema:QO,sceneActionEditFormSchema:$O}}],modules:[oa],isCore:!0})}},nk=`simulator-plugin`,rk=`simulator`,ik=[`connected`,`disconnected`,`init`,`ready`,`running`,`sleeping`,`stopped`,`lost`,`alert`,`unknown`],ak=f({name:`SimulatorConfigForm`,__name:`simulator-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`simulatorPlugin.messages.config.edited`),error:o(`simulatorPlugin.messages.config.notEdited`)}}),p=ik.map(e=>({value:e,label:o(`simulatorPlugin.fields.config.connectionStateOnStart.options.${e}`)})),g=y({simulationInterval:[{required:!0,message:o(`simulatorPlugin.fields.config.simulationInterval.validation.required`),trigger:`change`},{type:`integer`,message:o(`simulatorPlugin.fields.config.simulationInterval.validation.number`),validator:(e,t)=>typeof t==`number`&&t>=0&&t<=36e5,trigger:`change`}],latitude:[{required:!0,message:o(`simulatorPlugin.fields.config.latitude.validation.required`),trigger:`change`},{type:`number`,message:o(`simulatorPlugin.fields.config.latitude.validation.number`),validator:(e,t)=>typeof t==`number`&&t>=-90&&t<=90,trigger:`change`}],connectionStateOnStart:[{required:!0,message:o(`simulatorPlugin.fields.config.connectionStateOnStart.validation.required`),trigger:`change`}]});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`simulatorPlugin.headings.aboutPluginStatus`),description:h(o)(`simulatorPlugin.texts.aboutPluginStatus`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[6]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(o)(`simulatorPlugin.headings.aboutSimulation`),description:h(o)(`simulatorPlugin.texts.aboutSimulation`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.updateOnStart.title`),prop:`updateOnStart`,class:`mt-3`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).updateOnStart,"onUpdate:modelValue":t[1]||=e=>h(c).updateOnStart=e,name:`updateOnStart`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.simulationInterval.title`),prop:`simulationInterval`},{default:d(()=>[F(h(Sn),{modelValue:h(c).simulationInterval,"onUpdate:modelValue":t[2]||=e=>h(c).simulationInterval=e,min:0,max:36e5,step:1e3,name:`simulationInterval`},null,8,[`modelValue`])]),_:1},8,[`label`]),t[7]||=D(`hr`,null,null,-1),F(h(L),{type:`info`,title:h(o)(`simulatorPlugin.headings.aboutEnvironment`),description:h(o)(`simulatorPlugin.texts.aboutEnvironment`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.latitude.title`),prop:`latitude`,class:`mt-3`},{default:d(()=>[F(h(Sn),{modelValue:h(c).latitude,"onUpdate:modelValue":t[3]||=e=>h(c).latitude=e,min:-90,max:90,step:.1,name:`latitude`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.smoothTransitions.title`),prop:`smoothTransitions`,"label-position":`left`},{default:d(()=>[F(h(Me),{modelValue:h(c).smoothTransitions,"onUpdate:modelValue":t[4]||=e=>h(c).smoothTransitions=e,name:`smoothTransitions`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`simulatorPlugin.fields.config.connectionStateOnStart.title`),prop:`connectionStateOnStart`},{default:d(()=>[F(h(X),{modelValue:h(c).connectionStateOnStart,"onUpdate:modelValue":t[5]||=e=>h(c).connectionStateOnStart=e,name:`connectionStateOnStart`,placeholder:h(o)(`simulatorPlugin.fields.config.connectionStateOnStart.placeholder`)},{default:d(()=>[(i(!0),P(A,null,a(h(p),e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),ok={headings:{aboutPluginStatus:`Stav pluginu`,aboutSimulation:`Chování simulace`,aboutEnvironment:`Nastavení prostředí`},fields:{devices:{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í`,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`}},config:{enabled:{title:`Povoleno`},updateOnStart:{title:`Simulovat při spuštění služby`},simulationInterval:{title:`Interval automatické simulace (ms)`,placeholder:`Nastavte 0 pro zakázání automatických aktualizací`,validation:{required:`Nastavte prosím interval simulace`,number:`Interval simulace musí být mezi 0 a 3 600 000`}},latitude:{title:`Zeměpisná šířka`,placeholder:`Zeměpisná šířka používaná pro simulace založené na prostředí`,validation:{required:`Nastavte prosím zeměpisnou šířku`,number:`Zeměpisná šířka musí být mezi -90 a 90`}},smoothTransitions:{title:`Plynulé přechody hodnot`},connectionStateOnStart:{title:`Počáteční stav připojení`,placeholder:`Vyberte stav připojení při spuštění`,validation:{required:`Vyberte prosím počáteční stav připojení`},options:{connected:`Připojeno`,disconnected:`Odpojeno`,init:`Inicializace`,ready:`Připraveno`,running:`Běží`,sleeping:`Uspáno`,stopped:`Zastaveno`,lost:`Ztraceno`,alert:`Výstraha`,unknown:`Neznámý`}}}},messages:{config:{edited:`Změny uloženy! Konfigurace simulátoru zařízení byla aktualizována.`,notEdited:`Něco se pokazilo. Aktualizace konfigurace simulátoru zařízení nebyla úspěšná.`}},texts:{aboutPluginStatus:`Povolte nebo zakažte integraci simulátoru zařízení, aby byla simulovaná zařízení dostupná v celém Smart Panelu.`,aboutSimulation:`Nakonfigurujte, jak simulátor automaticky aktualizuje hodnoty. Můžete spustit jednorázový průchod při startu služby nebo spustit opakovanou smyčku aktualizací.`,aboutEnvironment:`Nastavte parametry prostředí používané simulátorem při generování realistických hodnot. Ve výpočtech se používá pouze zeměpisná šířka; zeměpisná délka je ignorována.`}},sk={headings:{aboutPluginStatus:`Plugin-Status`,aboutSimulation:`Simulationsverhalten`,aboutEnvironment:`Umgebungseinstellungen`},fields:{devices:{id:{title:`Interner Bezeichner`,placeholder:`Geräte-ID`},identifier:{title:`Systembezeichner`,placeholder:`Geräte-Systembezeichner`},category:{title:`Kategorie`,placeholder:`Gerätekategorie`,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`}},config:{enabled:{title:`Aktiviert`},updateOnStart:{title:`Bei Dienststart simulieren`},simulationInterval:{title:`Automatisches Simulationsintervall (ms)`,placeholder:`0 setzen, um automatische Aktualisierungen zu deaktivieren`,validation:{required:`Bitte legen Sie das Simulationsintervall fest`,number:`Simulationsintervall muss zwischen 0 und 3 600 000 liegen`}},latitude:{title:`Breitengrad`,placeholder:`Breitengrad für umgebungsbasierte Simulationen`,validation:{required:`Bitte legen Sie den Breitengrad fest`,number:`Breitengrad muss zwischen -90 und 90 liegen`}},smoothTransitions:{title:`Sanfte Wertübergänge`},connectionStateOnStart:{title:`Anfänglicher Verbindungsstatus`,placeholder:`Wählen Sie den Verbindungsstatus beim Start`,validation:{required:`Bitte wählen Sie den anfänglichen Verbindungsstatus`},options:{connected:`Verbunden`,disconnected:`Getrennt`,init:`Initialisierung`,ready:`Bereit`,running:`Aktiv`,sleeping:`Ruhezustand`,stopped:`Gestoppt`,lost:`Verloren`,alert:`Alarm`,unknown:`Unbekannt`}}}},messages:{config:{edited:`Änderungen gespeichert! Die Gerätesimulator-Konfiguration wurde aktualisiert.`,notEdited:`Etwas ist schiefgelaufen. Die Aktualisierung der Gerätesimulator-Konfiguration war nicht erfolgreich.`}},texts:{aboutPluginStatus:`Aktivieren oder deaktivieren Sie die Gerätesimulator-Integration, damit simulierte Geräte im gesamten Smart Panel verfügbar sind.`,aboutSimulation:`Konfigurieren Sie, wie der Simulator Werte automatisch aktualisiert. Sie können einen einzelnen Durchlauf beim Dienststart auslösen oder eine wiederkehrende Aktualisierungsschleife ausführen.`,aboutEnvironment:`Legen Sie Umgebungsparameter fest, die der Simulator bei der Generierung realistischer Werte verwendet. Für Berechnungen wird nur der Breitengrad verwendet; der Längengrad wird ignoriert.`}},ck={headings:{aboutPluginStatus:`Plugin status`,aboutSimulation:`Simulation behaviour`,aboutEnvironment:`Environment settings`},fields:{devices:{id:{title:`Internal identifier`,placeholder:`Device id`},identifier:{title:`System identifier`,placeholder:`Device system identifier`},category:{title:`Category`,placeholder:`Device 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`}},config:{enabled:{title:`Enabled`},updateOnStart:{title:`Simulate on service start`},simulationInterval:{title:`Auto simulation interval (ms)`,placeholder:`Set 0 to disable automatic updates`,validation:{required:`Please set simulation interval`,number:`Simulation interval must be between 0 and 3 600 000`}},latitude:{title:`Latitude`,placeholder:`Latitude used for environment-based simulations`,validation:{required:`Please set latitude`,number:`Latitude must be between -90 and 90`}},smoothTransitions:{title:`Smooth value transitions`},connectionStateOnStart:{title:`Initial connection state`,placeholder:`Choose the connection state to set on startup`,validation:{required:`Please select initial connection state`},options:{connected:`Connected`,disconnected:`Disconnected`,init:`Initializing`,ready:`Ready`,running:`Running`,sleeping:`Sleeping`,stopped:`Stopped`,lost:`Lost`,alert:`Alert`,unknown:`Unknown`}}}},messages:{config:{edited:`Changes saved! The device simulator configuration has been updated.`,notEdited:`Something went wrong. Device simulator configuration update was not successful.`}},texts:{aboutPluginStatus:`Enable or disable the Device Simulator integration so that simulated devices are available across the Smart Panel.`,aboutSimulation:`Configure how the simulator updates values automatically. You can trigger a single pass on service start or run a recurring update loop.`,aboutEnvironment:`Set environmental parameters used by the simulator when generating realistic values. Only latitude is used in calculations; longitude is ignored.`}},lk={headings:{aboutPluginStatus:`Estado del plugin`,aboutSimulation:`Comportamiento de la simulación`,aboutEnvironment:`Configuración del entorno`},fields:{devices:{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`,validation:{required:`Por favor, seleccione la categoría del dispositivo`}},name:{title:`Nombre`,placeholder:`Nombre del dispositivo`,validation:{required:`Por favor, introduzca el nombre del dispositivo`}},description:{title:`Descripción`,placeholder:`Descripción del dispositivo`},enabled:{title:`Habilitado`}},config:{enabled:{title:`Habilitado`},updateOnStart:{title:`Simular al iniciar el servicio`},simulationInterval:{title:`Intervalo de simulación automática (ms)`,placeholder:`Establezca 0 para desactivar las actualizaciones automáticas`,validation:{required:`Por favor, establezca el intervalo de simulación`,number:`El intervalo de simulación debe estar entre 0 y 3 600 000`}},latitude:{title:`Latitud`,placeholder:`Latitud utilizada para simulaciones basadas en el entorno`,validation:{required:`Por favor, establezca la latitud`,number:`La latitud debe estar entre -90 y 90`}},smoothTransitions:{title:`Transiciones suaves de valores`},connectionStateOnStart:{title:`Estado de conexión inicial`,placeholder:`Elija el estado de conexión al iniciar`,validation:{required:`Por favor, seleccione el estado de conexión inicial`},options:{connected:`Conectado`,disconnected:`Desconectado`,init:`Inicializando`,ready:`Listo`,running:`En ejecución`,sleeping:`En reposo`,stopped:`Detenido`,lost:`Perdido`,alert:`Alerta`,unknown:`Desconocido`}}}},messages:{config:{edited:`¡Cambios guardados! La configuración del simulador de dispositivos se ha actualizado.`,notEdited:`Algo salió mal. La actualización de la configuración del simulador de dispositivos no fue exitosa.`}},texts:{aboutPluginStatus:`Habilite o deshabilite la integración del simulador de dispositivos para que los dispositivos simulados estén disponibles en todo el panel inteligente.`,aboutSimulation:`Configure cómo el simulador actualiza los valores automáticamente. Puede activar una única pasada al iniciar el servicio o ejecutar un ciclo de actualización recurrente.`,aboutEnvironment:`Establezca los parámetros ambientales utilizados por el simulador al generar valores realistas. Solo se utiliza la latitud en los cálculos; la longitud se ignora.`}},uk={headings:{aboutPluginStatus:`Status wtyczki`,aboutSimulation:`Zachowanie symulacji`,aboutEnvironment:`Ustawienia środowiska`},fields:{devices:{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`,validation:{required:`Wybierz kategorię urządzenia`}},name:{title:`Nazwa`,placeholder:`Nazwa urządzenia`,validation:{required:`Wprowadź nazwę urządzenia`}},description:{title:`Opis`,placeholder:`Opis urządzenia`},enabled:{title:`Włączone`}},config:{enabled:{title:`Włączony`},updateOnStart:{title:`Symuluj przy starcie usługi`},simulationInterval:{title:`Interwał automatycznej symulacji (ms)`,placeholder:`Ustaw 0, aby wyłączyć automatyczne aktualizacje`,validation:{required:`Ustaw interwał symulacji`,number:`Interwał symulacji musi być między 0 a 3 600 000`}},latitude:{title:`Szerokość geograficzna`,placeholder:`Szerokość geograficzna używana do symulacji opartych na środowisku`,validation:{required:`Ustaw szerokość geograficzną`,number:`Szerokość geograficzna musi być między -90 a 90`}},smoothTransitions:{title:`Płynne przejścia wartości`},connectionStateOnStart:{title:`Początkowy stan połączenia`,placeholder:`Wybierz stan połączenia ustawiany przy starcie`,validation:{required:`Wybierz początkowy stan połączenia`},options:{connected:`Połączony`,disconnected:`Rozłączony`,init:`Inicjalizacja`,ready:`Gotowy`,running:`Uruchomiony`,sleeping:`Uśpiony`,stopped:`Zatrzymany`,lost:`Utracony`,alert:`Alert`,unknown:`Nieznany`}}}},messages:{config:{edited:`Zmiany zapisane! Konfiguracja symulatora urządzeń została zaktualizowana.`,notEdited:`Coś poszło nie tak. Aktualizacja konfiguracji symulatora urządzeń nie powiodła się.`}},texts:{aboutPluginStatus:`Włącz lub wyłącz integrację symulatora urządzeń, aby symulowane urządzenia były dostępne w Smart Panel.`,aboutSimulation:`Skonfiguruj sposób automatycznej aktualizacji wartości przez symulator. Możesz uruchomić jednorazowy przebieg przy starcie usługi lub uruchomić cykliczną pętlę aktualizacji.`,aboutEnvironment:`Ustaw parametry środowiskowe używane przez symulator do generowania realistycznych wartości. W obliczeniach używana jest tylko szerokość geograficzna; długość geograficzna jest ignorowana.`}},dk={headings:{aboutPluginStatus:`Stav pluginu`,aboutSimulation:`Správanie simulácie`,aboutEnvironment:`Nastavenia prostredia`},fields:{devices:{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`,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é`}},config:{enabled:{title:`Povolené`},updateOnStart:{title:`Simulovať pri štarte služby`},simulationInterval:{title:`Interval automatickej simulácie (ms)`,placeholder:`Nastavte 0 na zakázanie automatických aktualizácií`,validation:{required:`Prosím nastavte interval simulácie`,number:`Interval simulácie musí byť medzi 0 a 3 600 000`}},latitude:{title:`Zemepisná šírka`,placeholder:`Zemepisná šírka používaná pre simulácie založené na prostredí`,validation:{required:`Prosím nastavte zemepisnú šírku`,number:`Zemepisná šírka musí byť medzi -90 a 90`}},smoothTransitions:{title:`Plynulé prechody hodnôt`},connectionStateOnStart:{title:`Počiatočný stav pripojenia`,placeholder:`Vyberte stav pripojenia pri štarte`,validation:{required:`Prosím vyberte počiatočný stav pripojenia`},options:{connected:`Pripojený`,disconnected:`Odpojený`,init:`Inicializácia`,ready:`Pripravený`,running:`Beží`,sleeping:`Spí`,stopped:`Zastavený`,lost:`Stratený`,alert:`Výstraha`,unknown:`Neznámy`}}}},messages:{config:{edited:`Zmeny uložené! Konfigurácia simulátora zariadení bola aktualizovaná.`,notEdited:`Niečo sa pokazilo. Aktualizácia konfigurácie simulátora zariadení nebola úspešná.`}},texts:{aboutPluginStatus:`Povoľte alebo zakážte integráciu Simulátora zariadení, aby boli simulované zariadenia dostupné v celom Smart Paneli.`,aboutSimulation:`Nakonfigurujte, ako simulátor automaticky aktualizuje hodnoty. Môžete spustiť jednorazový prechod pri štarte služby alebo bežať opakovanú aktualizačnú slučku.`,aboutEnvironment:`Nastavte parametre prostredia používané simulátorom pri generovaní realistických hodnôt. V výpočtoch sa používa iba zemepisná šírka; zemepisná dĺžka je ignorovaná.`}},fk={"cs-CZ":ok,"de-DE":sk,"en-US":ck,"es-ES":lk,"pl-PL":uk,"sk-SK":dk},pk=Tt.extend({updateOnStart:R().default(!1),simulationInterval:Ot().int().min(0).max(36e5),latitude:Ot().min(-90).max(90),smoothTransitions:R().default(!0),connectionStateOnStart:Fe(ik).default(`connected`)}),mk=yi,hk=pi,gk=Xi;Mi.and(q({type:Z(rk)})),Ti.and(q({type:Z(rk)})),Li.and(q({type:Z(rk)}));var _k=ki;Pi.and(q({type:Z(rk)})),ji.and(q({type:Z(rk)})),Ii.and(q({type:Z(rk)}));var vk=Lt.extend({updateOnStart:R(),simulationInterval:G().min(0).max(36e5),latitude:G().min(-90).max(90),smoothTransitions:R(),connectionStateOnStart:Fe(ik).optional()}),yk=Wt.and(q({type:Z(nk),update_on_start:R().optional(),simulation_interval:G().min(0).max(36e5).optional(),latitude:G().min(-90).max(90).optional(),smooth_transitions:R().optional(),connection_state_on_start:Fe(ik).optional()}));Qt.and(q({type:Z(nk),update_on_start:R(),simulation_interval:G(),latitude:G(),smooth_transitions:R(),connection_state_on_start:Fe(ik).optional()}));var bk=Ui,xk=Wi.and(q({type:Z(rk)})),Sk=Ni.and(q({type:Z(rk)}));wi.and(q({type:Z(rk)}));var Ck=Symbol(`FB-Plugin-Simulator`),wk={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(fk)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{simulatorPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Ck,{type:nk,source:`com.fastybird.smart-panel.plugin.simulator`,name:`Device Simulator`,description:`Create virtual devices for testing and development without physical hardware`,links:{documentation:`https://smart-panel.fastybird.com/docs`,devDocumentation:`https://smart-panel.fastybird.com/docs`,bugsTracking:`https://github.com/FastyBird/smart-panel/issues`},elements:[{type:lt,components:{pluginConfigEditForm:ak},schemas:{pluginConfigSchema:vk,pluginConfigEditFormSchema:pk,pluginConfigUpdateReqSchema:yk},modules:[pn]},{type:rk,schemas:{deviceSchema:bk,deviceAddFormSchema:mk,deviceEditFormSchema:hk,deviceCreateReqSchema:xk,deviceUpdateReqSchema:Sk,channelSchema:_k,channelPropertySchema:gk}}],modules:[si,pn],isCore:!1})}},Tk=`tiles-device-preview-plugin`,Ek=`tiles-device-preview`,Dk=f({name:`DevicePreviewTileAddForm`,__name:`device-preview-tile-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Or({id:n.id,type:Ek,parent:n.parent,parentId:n.parentId,onlyDraft:n.onlyDraft}),{devices:_,fetchDevices:v,areLoading:x}=Zi(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}],device:[{required:!0,message:o(`tilesDevicePreviewPlugin.fields.device.validation.required`),trigger:`change`}]}),C=j(()=>Vt(_.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||v().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`pagesDeviceDetailPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[1]||=e=>h(c).device=e,placeholder:h(o)(`pagesDeviceDetailPlugin.fields.device.placeholder`),name:`device`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:`row`},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:`col`},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:`rowSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:`colSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),Ok=f({name:`DevicePreviewTileEditForm`,__name:`device-preview-tile-edit-form`,props:{tile:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Tr({tile:n.tile,onlyDraft:n.onlyDraft}),{devices:_,fetchDevices:v,areLoading:x}=Zi(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}],device:[{required:!0,message:o(`tilesDevicePreviewPlugin.fields.device.validation.required`),trigger:`change`}]}),C=j(()=>Vt(_.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||v().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`pagesDeviceDetailPlugin.fields.device.title`),prop:`device`},{default:d(()=>[F(h(X),{modelValue:h(c).device,"onUpdate:modelValue":t[1]||=e=>h(c).device=e,placeholder:h(o)(`pagesDeviceDetailPlugin.fields.device.placeholder`),name:`device`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:`row`},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:`col`},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:`rowSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:`colSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),kk={key:0,class:`flex flex-col justify-center min-w-0`},Ak=f({name:`DevicePreviewTilePreview`,__name:`tile-preview`,props:{tile:{}},setup(e){let t=e,{t:n}=b(),r=t.tile.device??null,{device:a,fetchDevice:o}=mi({id:r??``}),{icon:c}=_i({id:r??``}),f=j(()=>t.tile.icon??null),p=j(()=>f.value??c.value??`mdi:devices`),m=j(()=>a.value?.name??n(`tilesDevicePreviewPlugin.preview.defaultName`)),_=j(()=>a.value?a.value.status?.online?n(`tilesDevicePreviewPlugin.preview.statusOnline`):n(`tilesDevicePreviewPlugin.preview.statusOffline`):``),y=j(()=>t.tile.rowSpan===1&&t.tile.colSpan===1),x=j(()=>t.tile.rowSpan===t.tile.colSpan),S=j(()=>x.value?`flex-col items-center justify-center`:`flex-row items-center`),C=j(()=>t.tile.rowSpan>=2?`w-10 h-10`:`w-7 h-7`),w=j(()=>t.tile.rowSpan>=2?22:16);return s(()=>{r&&o().catch(()=>{})}),(e,t)=>(i(),P(`div`,{class:u([`flex h-full w-full p-2 gap-2 overflow-hidden`,S.value])},[D(`div`,{class:u([`flex items-center justify-center rounded-full shrink-0`,C.value]),style:{backgroundColor:`var(--el-color-primary-light-9)`}},[F(h(l),{size:w.value,color:`var(--el-color-primary)`},{default:d(()=>[F(h(ne),{icon:p.value},null,8,[`icon`])]),_:1},8,[`size`])],2),y.value?g(``,!0):(i(),P(`div`,kk,[F(h(Ze),{size:`small`,class:`font-bold truncate`},{default:d(()=>[v(k(m.value),1)]),_:1}),F(h(Ze),{type:`info`,size:`small`,class:`truncate`},{default:d(()=>[v(k(_.value),1)]),_:1})]))],2))}}),jk={preview:{defaultName:`Zařízení`,statusOnline:`Online`,statusOffline:`Offline`},fields:{device:{title:`Zařízení`,placeholder:`Zařízení dlaždice`,validation:{required:`Vyberte prosím zařízení dlaždice`}}}},Mk={preview:{defaultName:`Gerät`,statusOnline:`Online`,statusOffline:`Offline`},fields:{device:{title:`Gerät`,placeholder:`Kachel-Gerät`,validation:{required:`Bitte wählen Sie ein Kachel-Gerät`}}}},Nk={preview:{defaultName:`Device`,statusOnline:`Online`,statusOffline:`Offline`},fields:{device:{title:`Device`,placeholder:`Tile device`,validation:{required:`Please select tile device`}}}},Pk={preview:{defaultName:`Dispositivo`,statusOnline:`En línea`,statusOffline:`Desconectado`},fields:{device:{title:`Dispositivo`,placeholder:`Dispositivo del mosaico`,validation:{required:`Por favor, seleccione un dispositivo para el mosaico`}}}},Fk={preview:{defaultName:`Urządzenie`,statusOnline:`Online`,statusOffline:`Offline`},fields:{device:{title:`Urządzenie`,placeholder:`Urządzenie kafelka`,validation:{required:`Wybierz urządzenie kafelka`}}}},Ik={preview:{defaultName:`Zariadenie`,statusOnline:`Online`,statusOffline:`Offline`},fields:{device:{title:`Zariadenie`,placeholder:`Zariadenie dlaždice`,validation:{required:`Prosím vyberte zariadenie dlaždice`}}}},Lk={"cs-CZ":jk,"de-DE":Mk,"en-US":Nk,"es-ES":Pk,"pl-PL":Fk,"sk-SK":Ik},Rk=vr.extend({device:Y().uuid()}),zk=Cr.extend({device:Y().uuid()}),Bk=Ir.extend({device:mr,icon:Y().trim().nullable().default(null)}),Vk=Rr.and(q({type:Z(Ek),device:Y().uuid(),icon:Y().trim().nullable()})),Hk=Nr.and(q({type:Z(Ek),device:Y().uuid().optional(),icon:Y().trim().nullable().optional()}));Fr.and(q({type:Z(Ek),device:Y().uuid(),icon:Y().trim().nullable()}));var Uk=M(Ak),Wk=Symbol(`FB-Plugin-TilesDevicePreview`),Gk={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Lk)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{tilesDevicePreviewPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Wk,{type:Tk,source:`com.fastybird.smart-panel.plugin.tiles-device-preview`,name:`Device preview tile`,description:`A compact tile for previewing the state of a device, including icons and key attributes. Ideal for at-a-glance control or status display.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:Ek,name:`Device preview`,components:{tileAddForm:Dk,tileEditForm:Ok,tilePreview:Uk},schemas:{tileSchema:Bk,tileAddFormSchema:Rk,tileEditFormSchema:zk,tileCreateReqSchema:Vk,tileUpdateReqSchema:Hk}}],modules:[nr],isCore:!0})}},Kk=`tiles-scene-plugin`,qk=`tiles-scene`,Jk=f({name:`SceneTileAddForm`,__name:`scene-tile-add-form`,props:{id:{},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Or({id:n.id,type:qk,parent:n.parent,parentId:n.parentId,onlyDraft:n.onlyDraft}),{scenes:_,fetchScenes:v,fetching:x}=ga(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}],scene:[{required:!0,message:o(`tilesScenePlugin.fields.scene.validation.required`),trigger:`change`}]}),C=j(()=>Vt(_.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||v().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,required:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`tilesScenePlugin.fields.scene.title`),prop:`scene`},{default:d(()=>[F(h(X),{modelValue:h(c).scene,"onUpdate:modelValue":t[1]||=e=>h(c).scene=e,placeholder:h(o)(`tilesScenePlugin.fields.scene.placeholder`),name:`scene`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:`row`},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:`col`},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:`rowSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:`colSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),Yk=f({name:`SceneTileEditForm`,__name:`scene-tile-edit-form`,props:{tile:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Tr({tile:n.tile,onlyDraft:n.onlyDraft}),{scenes:_,fetchScenes:v,fetching:x}=ga(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}],scene:[{required:!0,message:o(`tilesScenePlugin.fields.scene.validation.required`),trigger:`change`}]}),C=j(()=>Vt(_.value,[e=>e.name],[`asc`]).map(e=>({value:e.id,label:e.name})));return s(()=>{x.value||v().catch(e=>{throw new tr(`Something went wrong`,e)})}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:`id`},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`tilesScenePlugin.fields.scene.title`),prop:`scene`},{default:d(()=>[F(h(X),{modelValue:h(c).scene,"onUpdate:modelValue":t[1]||=e=>h(c).scene=e,placeholder:h(o)(`tilesScenePlugin.fields.scene.placeholder`),name:`scene`,loading:h(x),filterable:``},{default:d(()=>[(i(!0),P(A,null,a(C.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:`row`},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:`col`},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:`rowSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:`colSpan`},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),Xk={class:`flex flex-col items-center justify-center h-full w-full p-2 gap-1 overflow-hidden`},Zk=f({name:`SceneTilePreview`,__name:`tile-preview`,props:{tile:{}},setup(e){let t=e,{t:n}=b(),r=t.tile.scene??null,{scene:a,fetchScene:o}=va({id:r??``}),{icon:c}=fa({id:r??``}),u=j(()=>t.tile.icon??null),f=j(()=>u.value??c.value??`mdi:movie-open-outline`),p=j(()=>a.value?.name??n(`tilesScenePlugin.preview.defaultName`)),m=j(()=>t.tile.rowSpan>=2?32:22);return s(()=>{r&&o().catch(()=>{})}),(e,n)=>(i(),P(`div`,Xk,[F(h(l),{size:m.value,color:`var(--el-color-primary)`},{default:d(()=>[F(h(ne),{icon:f.value},null,8,[`icon`])]),_:1},8,[`size`]),t.tile.rowSpan>1||t.tile.colSpan>1?(i(),T(h(Ze),{key:0,size:`small`,class:`truncate max-w-full text-center`},{default:d(()=>[v(k(p.value),1)]),_:1})):g(``,!0)]))}}),Qk={preview:{defaultName:`Scéna`},fields:{scene:{title:`Scéna`,placeholder:`Vyberte scénu`,validation:{required:`Vyberte prosím scénu`}}}},$k={preview:{defaultName:`Szene`},fields:{scene:{title:`Szene`,placeholder:`Szene auswählen`,validation:{required:`Bitte wählen Sie eine Szene`}}}},eA={preview:{defaultName:`Scene`},fields:{scene:{title:`Scene`,placeholder:`Select scene`,validation:{required:`Please select a scene`}}}},tA={preview:{defaultName:`Escena`},fields:{scene:{title:`Escena`,placeholder:`Seleccionar escena`,validation:{required:`Por favor, seleccione una escena`}}}},nA={preview:{defaultName:`Scena`},fields:{scene:{title:`Scena`,placeholder:`Wybierz scenę`,validation:{required:`Wybierz scenę`}}}},rA={preview:{defaultName:`Scéna`},fields:{scene:{title:`Scéna`,placeholder:`Vyberte scénu`,validation:{required:`Prosím vyberte scénu`}}}},iA={"cs-CZ":Qk,"de-DE":$k,"en-US":eA,"es-ES":tA,"pl-PL":nA,"sk-SK":rA},aA=vr.extend({scene:Y().uuid()}),oA=Cr.extend({scene:Y().uuid()}),sA=Ir.extend({scene:mr,icon:Y().trim().nullable().default(null)}),cA=Rr.and(q({type:Z(qk),scene:Y().uuid(),icon:Y().trim().nullable()})),lA=Nr.and(q({type:Z(qk),scene:Y().uuid().optional(),icon:Y().trim().nullable().optional()}));Fr.and(q({type:Z(qk),scene:Y().uuid(),icon:Y().trim().nullable()}));var uA=M(Zk),dA=Symbol(`FB-Plugin-TilesScene`),fA={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(iA)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{tilesScenePlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(dA,{type:Kk,source:`com.fastybird.smart-panel.plugin.tiles-scene`,name:`Scene tile`,description:`A compact tile for displaying and triggering scenes. Ideal for quick access to your favorite scenes from the dashboard.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:qk,name:`Scene`,components:{tileAddForm:Jk,tileEditForm:Yk,tilePreview:uA},schemas:{tileSchema:sA,tileAddFormSchema:aA,tileEditFormSchema:oA,tileCreateReqSchema:cA,tileUpdateReqSchema:lA}}],modules:[nr],isCore:!0})}},pA={class:`flex flex-col items-start justify-center h-full w-full p-2 overflow-hidden`},mA=f({name:`TimeTilePreview`,__name:`tile-preview`,props:{tile:{}},setup(e){let t=N(``),n=N(``),r,a=()=>{let e=new Date;t.value=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),n.value=e.toLocaleDateString([],{weekday:`short`,month:`short`,day:`numeric`})};return o(()=>{a(),r=setInterval(a,1e3)}),c(()=>{r&&clearInterval(r)}),(e,r)=>(i(),P(`div`,pA,[F(h(Ze),{class:`font-mono font-bold leading-none`,style:{"font-size":`clamp(14px, 2.5vw, 28px)`}},{default:d(()=>[v(k(t.value),1)]),_:1}),F(h(Ze),{class:`font-mono mt-1`,type:`info`,size:`small`},{default:d(()=>[v(k(n.value),1)]),_:1})]))}}),hA=`tiles-time-plugin`,gA=`tiles-time`,_A=Ir.extend({}),vA=Rr.and(q({type:Z(gA)})),yA=Nr.and(q({type:Z(gA)}));Fr.and(q({type:Z(gA)}));var bA=M(mA),xA=Symbol(`FB-Plugin-TilesTime`),SA={install:e=>{me(e).addPlugin(xA,{type:hA,source:`com.fastybird.smart-panel.plugin.tiles-time`,name:`Clock tile`,description:`A simple tile for displaying the current time, optionally with the date. Great for keeping your smart panel visually synced with real-time.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:gA,name:`Clock`,components:{tilePreview:bA},schemas:{tileSchema:_A,tileCreateReqSchema:vA,tileUpdateReqSchema:yA}}],modules:[nr],isCore:!0})}},CA=`tiles-weather-plugin`,wA=`tiles-weather-day`,TA=`tiles-weather-forecast`,EA=f({name:`WeatherTileAddForm`,__name:`weather-tile-add-form`,props:{id:{},type:{default:wA},parent:{},parentId:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Or({id:n.id,type:n.type,parent:n.parent,parentId:n.parentId,onlyDraft:n.onlyDraft}),{locations:_,areLoading:v,fetchLocations:x}=ei(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}]});return s(async()=>{await x()}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:[`id`]},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`tilesWeatherPlugin.fields.locationId.title`),prop:[`locationId`]},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`tilesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,clearable:``,loading:h(v)},{default:d(()=>[(i(!0),P(A,null,a(h(_),e=>(i(),T(h(J),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`tilesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`,class:`mb-4`},null,8,[`description`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:[`row`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:[`col`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:[`rowSpan`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:[`colSpan`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),DA=f({name:`WeatherTileEditForm`,__name:`weather-tile-edit-form`,props:{tile:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:rr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},onlyDraft:{type:Boolean,default:!1},withPosition:{type:Boolean,default:!0},withSize:{type:Boolean,default:!0}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{model:c,formEl:l,formChanged:u,submit:f,formResult:p}=Tr({tile:n.tile,onlyDraft:n.onlyDraft}),{locations:_,areLoading:v,fetchLocations:x}=ei(),S=y({row:[{required:!0,message:o(`dashboardModule.fields.tiles.row.validation.required`),trigger:`change`}],col:[{required:!0,message:o(`dashboardModule.fields.tiles.col.validation.required`),trigger:`change`}]});return s(async()=>{await x()}),m(()=>p.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),f().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!l.value)return;l.value.resetFields()}}),m(()=>u.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:l,model:h(c),rules:S,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.id.title`),prop:[`id`]},{default:d(()=>[F(h(W),{modelValue:h(c).id,"onUpdate:modelValue":t[0]||=e=>h(c).id=e,placeholder:h(o)(`dashboardModule.fields.tiles.id.placeholder`),name:`id`,readonly:``,disabled:``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`tilesWeatherPlugin.fields.locationId.title`),prop:[`locationId`]},{default:d(()=>[F(h(X),{modelValue:h(c).locationId,"onUpdate:modelValue":t[1]||=e=>h(c).locationId=e,placeholder:h(o)(`tilesWeatherPlugin.fields.locationId.placeholder`),name:`locationId`,clearable:``,loading:h(v)},{default:d(()=>[(i(!0),P(A,null,a(h(_),e=>(i(),T(h(J),{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`loading`])]),_:1},8,[`label`]),F(h(L),{description:h(o)(`tilesWeatherPlugin.fields.locationId.description`),closable:!1,"show-icon":``,type:`info`,class:`mb-4`},null,8,[`description`]),n.withPosition?(i(),T(h(Bt),{key:0},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.row.title`),prop:[`row`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).row,"onUpdate:modelValue":t[2]||=e=>h(c).row=e,placeholder:h(o)(`dashboardModule.fields.tiles.row.placeholder`),name:`row`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.col.title`),prop:[`col`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).col,"onUpdate:modelValue":t[3]||=e=>h(c).col=e,placeholder:h(o)(`dashboardModule.fields.tiles.col.placeholder`),name:`col`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0),n.withSize?(i(),T(h(Bt),{key:1},{default:d(()=>[F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.rowSpan.title`),prop:[`rowSpan`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).rowSpan,"onUpdate:modelValue":t[4]||=e=>h(c).rowSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.rowSpan.placeholder`),name:`rowSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),F(h(vt),{span:12},{default:d(()=>[F(h(V),{label:h(o)(`dashboardModule.fields.tiles.colSpan.title`),prop:[`colSpan`]},{default:d(()=>[F(h(Sn),{modelValue:h(c).colSpan,"onUpdate:modelValue":t[5]||=e=>h(c).colSpan=e,placeholder:h(o)(`dashboardModule.fields.tiles.colSpan.placeholder`),name:`colSpan`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1})):g(``,!0)]),_:1},8,[`model`,`rules`]))}}),OA={class:`flex flex-row items-center justify-center h-full w-full p-2 gap-2 overflow-hidden`},kA={class:`flex flex-col min-w-0`},AA=f({name:`DayWeatherTilePreview`,__name:`tile-preview-day`,props:{tile:{}},setup(e){let t=e,{t:n}=b(),r=j(()=>t.tile.rowSpan>=2?36:24);return(e,t)=>(i(),P(`div`,OA,[F(h(l),{size:r.value,color:`var(--el-color-warning)`},{default:d(()=>[F(h(ne),{icon:`mdi:weather-sunny`})]),_:1},8,[`size`]),D(`div`,kA,[F(h(Ze),{class:`font-bold leading-none`,style:{"font-size":`clamp(14px, 2.5vw, 24px)`}},{default:d(()=>[v(k(h(n)(`tilesWeatherPlugin.preview.day.temperature`)),1)]),_:1}),F(h(Ze),{type:`info`,size:`small`,class:`truncate`},{default:d(()=>[v(k(h(n)(`tilesWeatherPlugin.preview.day.condition`)),1)]),_:1})])]))}}),jA={class:`flex flex-row items-center justify-around h-full w-full p-2 gap-1 overflow-hidden`},MA=f({name:`ForecastWeatherTilePreview`,__name:`tile-preview-forecast`,props:{tile:{}},setup(e){let{t}=b(),n=j(()=>[{label:t(`tilesWeatherPlugin.preview.forecast.mon`),icon:`mdi:weather-sunny`,color:`var(--el-color-warning)`,temp:`22°`},{label:t(`tilesWeatherPlugin.preview.forecast.tue`),icon:`mdi:weather-partly-cloudy`,color:`var(--el-color-info)`,temp:`19°`},{label:t(`tilesWeatherPlugin.preview.forecast.wed`),icon:`mdi:weather-rainy`,color:`var(--el-color-primary)`,temp:`16°`},{label:t(`tilesWeatherPlugin.preview.forecast.thu`),icon:`mdi:weather-sunny`,color:`var(--el-color-warning)`,temp:`21°`}]);return(e,t)=>(i(),P(`div`,jA,[(i(!0),P(A,null,a(n.value,e=>(i(),P(`div`,{key:e.label,class:`flex flex-col items-center min-w-0`},[F(h(Ze),{size:`small`,type:`info`,class:`truncate`},{default:d(()=>[v(k(e.label),1)]),_:2},1024),F(h(l),{size:18,color:e.color},{default:d(()=>[F(h(ne),{icon:e.icon},null,8,[`icon`])]),_:2},1032,[`color`]),F(h(Ze),{size:`small`},{default:d(()=>[v(k(e.temp),1)]),_:2},1024)]))),128))]))}}),NA={preview:{day:{temperature:`22°C`,condition:`Slunečno`},forecast:{mon:`Po`,tue:`Út`,wed:`St`,thu:`Čt`}},fields:{locationId:{title:`Meteorologická lokace`,placeholder:`Vyberte lokaci`,description:`Vyberte meteorologickou lokaci k zobrazení. Pokud není nastavena, bude použita primární lokace z nastavení počasí.`}}},PA={preview:{day:{temperature:`22°C`,condition:`Sonnig`},forecast:{mon:`Mo`,tue:`Di`,wed:`Mi`,thu:`Do`}},fields:{locationId:{title:`Wetterstandort`,placeholder:`Standort auswählen`,description:`Wählen Sie einen Wetterstandort zur Anzeige. Wenn nicht festgelegt, wird der primäre Standort aus den Wettereinstellungen verwendet.`}}},FA={preview:{day:{temperature:`22°C`,condition:`Sunny`},forecast:{mon:`Mon`,tue:`Tue`,wed:`Wed`,thu:`Thu`}},fields:{locationId:{title:`Weather location`,placeholder:`Select a location`,description:`Select a weather location to display. If not set, the primary location from weather settings will be used.`}}},IA={preview:{day:{temperature:`22°C`,condition:`Soleado`},forecast:{mon:`Lun`,tue:`Mar`,wed:`Mié`,thu:`Jue`}},fields:{locationId:{title:`Ubicación meteorológica`,placeholder:`Seleccione una ubicación`,description:`Seleccione una ubicación meteorológica para mostrar. Si no se establece, se utilizará la ubicación principal de la configuración meteorológica.`}}},LA={preview:{day:{temperature:`22°C`,condition:`Słonecznie`},forecast:{mon:`Pon`,tue:`Wt`,wed:`Śr`,thu:`Czw`}},fields:{locationId:{title:`Lokalizacja pogodowa`,placeholder:`Wybierz lokalizację`,description:`Wybierz lokalizację pogodową do wyświetlenia. Jeśli nie ustawiono, zostanie użyta główna lokalizacja z ustawień pogody.`}}},RA={preview:{day:{temperature:`22°C`,condition:`Slnečno`},forecast:{mon:`Po`,tue:`Ut`,wed:`St`,thu:`Št`}},fields:{locationId:{title:`Poloha počasia`,placeholder:`Vyberte polohu`,description:`Vyberte polohu počasia na zobrazenie. Ak nie je nastavená, použije sa primárna poloha z nastavení počasia.`}}},zA={"cs-CZ":NA,"de-DE":PA,"en-US":FA,"es-ES":IA,"pl-PL":LA,"sk-SK":RA},BA=vr.extend({locationId:Y().uuid().optional().nullable()}),VA=Cr.extend({locationId:Y().uuid().optional().nullable()}),HA=Ir.extend({locationId:Y().uuid().optional().nullable().default(null)}),UA=Ir.extend({locationId:Y().uuid().optional().nullable().default(null)}),WA=Rr.and(q({type:Z(wA),location_id:Y().uuid().optional().nullable()})),GA=Rr.and(q({type:Z(TA),location_id:Y().uuid().optional().nullable()})),KA=Nr.and(q({type:Z(wA),location_id:Y().uuid().optional().nullable()})),qA=Nr.and(q({type:Z(TA),location_id:Y().uuid().optional().nullable()}));Fr.and(q({type:Z(wA),location_id:Y().uuid().optional()})),Fr.and(q({type:Z(TA),location_id:Y().uuid().optional()}));var JA=M(EA),YA=M(DA),XA=M(AA),ZA=M(MA),QA=Symbol(`FB-Plugin-TilesWeather`),$A={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(zA)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{tilesWeatherPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(QA,{type:CA,source:`com.fastybird.smart-panel.plugin.tiles-weather`,name:`Weather tiles`,description:`Displays current weather conditions and daily details alongside a multi-day forecast. Provides temperature, conditions, and icons in a clear, compact tile layout - perfect for checking today's weather or planning ahead at a glance.`,links:{documentation:`https://smart-panel.fastybird.com`,devDocumentation:`https://smart-panel.fastybird.com`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:wA,name:`Day weather`,description:`Displays daily weather information including temperature, conditions, and icons. Perfect for showing today's forecast in a compact tile.`,components:{tileAddForm:JA,tileEditForm:YA,tilePreview:XA},schemas:{tileSchema:HA,tileAddFormSchema:BA,tileEditFormSchema:VA,tileCreateReqSchema:WA,tileUpdateReqSchema:KA}},{type:TA,name:`Forecast weather`,description:`Shows a multi-day weather forecast in a clear and informative tile layout. Ideal for planning ahead at a glance.`,components:{tileAddForm:JA,tileEditForm:YA,tilePreview:ZA},schemas:{tileSchema:UA,tileAddFormSchema:BA,tileEditFormSchema:VA,tileCreateReqSchema:GA,tileUpdateReqSchema:qA}}],modules:[nr],isCore:!0})}},ej=f({name:`OpenMeteoConfigForm`,__name:`open-meteo-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`weatherOpenMeteoPlugin.messages.config.edited`),error:o(`weatherOpenMeteoPlugin.messages.config.notEdited`)}}),p=j(()=>[{value:mn.CELSIUS,label:o(`weatherOpenMeteoPlugin.fields.config.unit.values.celsius`)},{value:mn.FAHRENHEIT,label:o(`weatherOpenMeteoPlugin.fields.config.unit.values.fahrenheit`)}]),g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(e){if(r(`update:remote-form-reset`,!1),!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`weatherOpenMeteoPlugin.headings.aboutSettings`),description:h(o)(`weatherOpenMeteoPlugin.texts.aboutSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`weatherOpenMeteoPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`weatherOpenMeteoPlugin.fields.config.unit.title`),prop:`unit`},{default:d(()=>[F(h(X),{modelValue:h(c).unit,"onUpdate:modelValue":t[1]||=e=>h(c).unit=e,placeholder:h(o)(`weatherOpenMeteoPlugin.fields.config.unit.placeholder`),class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(p.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),tj=e=>{let{t}=b(),n=rt(),{searchCities:r,isSearching:i}=xn(),a=N(``),o=N(!1),c=N(10),l=N([50.083328,14.46667]),u=N(null),d=e=>{if(e==null||e===``)return!1;let t=Number(e);return!isNaN(t)&&isFinite(t)},f=(e,t,n)=>{u.value=[e,t],l.value=[e,t],n!==void 0&&(c.value=n)};return s(()=>{d(e.latitude)&&d(e.longitude)&&f(Number(e.latitude),Number(e.longitude),18)}),m(()=>[e.latitude,e.longitude],([e,t])=>{if(d(e)&&d(t)){let n=Number(e),r=Number(t);u.value=[n,r],l.value=[n,r]}}),{searchQuery:a,isSearching:i,isGettingLocation:o,zoom:c,center:l,marker:u,setMarker:f,onMapClick:t=>{let{lat:n,lng:r}=t.latlng;e.latitude=n,e.longitude=r,u.value=[n,r]},onMarkerMoveEnd:t=>{let{lat:n,lng:r}=t.target.getLatLng();e.latitude=n,e.longitude=r,u.value=[n,r]},handleCitySearch:(e,t)=>{if(!e||e.length<2){t([]);return}r(e).then(e=>{t(e.map(e=>({...e,value:`${e.name}${e.state?`, ${e.state}`:``}, ${e.country}`})))}).catch(()=>{t([])})},handleCitySelect:t=>{let n=t;e.name=`${n.name}${n.state?`, ${n.state}`:``}, ${n.country}`,e.latitude=n.lat,e.longitude=n.lon,e.countryCode=n.country_code,a.value=``,f(n.lat,n.lon,12)},getMyLocation:r=>{let i=typeof r==`function`?r:void 0;if(!navigator.geolocation){n.error(t(`weatherOpenMeteoPlugin.messages.geolocationNotSupported`));return}o.value=!0,navigator.geolocation.getCurrentPosition(t=>{let n=t.coords.latitude,r=t.coords.longitude;e.latitude=n,e.longitude=r,f(n,r,12),i?.(),o.value=!1},e=>{switch(o.value=!1,e.code){case e.PERMISSION_DENIED:n.error(t(`weatherOpenMeteoPlugin.messages.geolocationDenied`));break;case e.POSITION_UNAVAILABLE:n.error(t(`weatherOpenMeteoPlugin.messages.geolocationUnavailable`));break;case e.TIMEOUT:n.error(t(`weatherOpenMeteoPlugin.messages.geolocationTimeout`));break;default:n.error(t(`weatherOpenMeteoPlugin.messages.geolocationError`))}},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0})}}},nj={class:`text-xs text-gray-500 mt-1`},rj={class:`flex flex-row items-center gap-2 w-full`},ij={class:`flex flex-col py-1`},aj={class:`font-medium`},oj={class:`text-xs text-gray-500`},sj={class:`ml-2 text-gray-400`},cj={class:`text-xs text-gray-500 mt-1`},lj={class:`flex flex-row items-start gap-4`},uj={style:{height:`35vh`,width:`100%`}},dj=f({name:`OpenMeteoLocationAddForm`,__name:`open-meteo-location-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{add:s}=ri(),c=N(void 0),l=y({name:``,latitude:null,longitude:null,countryCode:``}),{searchQuery:u,isSearching:f,isGettingLocation:p,zoom:x,center:S,marker:C,onMapClick:w,onMarkerMoveEnd:O,handleCitySearch:ee,handleCitySelect:j,getMyLocation:te}=tj(l),M={name:[{required:!0,message:a(`weatherOpenMeteoPlugin.fields.locations.name.validation.required`),trigger:`blur`}],latitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.latitude.validation.required`))):isNaN(Number(t))||Number(t)<-90||Number(t)>90?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.longitude.validation.required`))):isNaN(Number(t))||Number(t)<-180||Number(t)>180?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}]},re=async()=>{if(c.value){if(r(`update:remote-form-result`,Xr.WORKING),!await c.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={name:l.name,type:n.type,latitude:l.latitude===null?void 0:Number(l.latitude),longitude:l.longitude===null?void 0:Number(l.longitude)};l.countryCode&&(e.country_code=l.countryCode),await s({id:n.id,draft:!1,data:e}),o.success(a(`weatherOpenMeteoPlugin.messages.locations.created`,{location:l.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenMeteoPlugin.messages.locations.notCreated`,{location:l.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),re())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),c.value?.resetFields())}),m(l,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:c,model:l,rules:M,"label-position":`top`,"status-icon":``,onSubmit:oe(re,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:l.name,"onUpdate:modelValue":t[0]||=e=>l.name=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,nj,k(h(a)(`weatherOpenMeteoPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.title`)},{default:d(()=>[D(`div`,rj,[F(h(hn),{modelValue:h(u),"onUpdate:modelValue":t[1]||=e=>_(u)?u.value=e:null,"fetch-suggestions":h(ee),placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.placeholder`),loading:h(f),debounce:500,clearable:``,class:`flex-1`,onSelect:h(j)},{default:d(({item:e})=>[D(`div`,ij,[D(`span`,aj,k(e.name),1),D(`span`,oj,[v(k(e.state?`${e.state}, `:``)+k(e.country)+` `,1),D(`span`,sj,` (`+k(e.lat.toFixed(4))+`, `+k(e.lon.toFixed(4))+`) `,1)])])]),_:1},8,[`modelValue`,`fetch-suggestions`,`placeholder`,`loading`,`onSelect`]),F(h(E),{loading:h(p),class:`px-2!`,onClick:h(te)},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenMeteoPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`,`onClick`])]),D(`div`,cj,k(h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.description`)),1)]),_:1},8,[`label`]),F(h(fe),{"content-position":`left`,class:`mt-6!`},{default:d(()=>[v(k(h(a)(`weatherOpenMeteoPlugin.texts.orEnterManually`)),1)]),_:1}),D(`div`,lj,[F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:l.latitude,"onUpdate:modelValue":t[2]||=e=>l.latitude=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:l.longitude,"onUpdate:modelValue":t[3]||=e=>l.longitude=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),_:1},8,[`model`]),D(`div`,uj,[F(h(_n),{zoom:h(x),"onUpdate:zoom":t[4]||=e=>_(x)?x.value=e:null,"use-global-leaflet":!1,center:h(S),onClick:h(w)},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),h(C)?(i(),T(h(yn),{key:0,"lat-lng":h(C),draggable:!0,onMoveend:h(O)},null,8,[`lat-lng`,`onMoveend`])):g(``,!0)]),_:1},8,[`zoom`,`center`,`onClick`])])],64))}}),fj={class:`text-xs text-gray-500 mt-1`},pj={class:`flex flex-row items-center gap-2 w-full`},mj={class:`flex flex-col py-1`},hj={class:`font-medium`},gj={class:`text-xs text-gray-500`},_j={class:`ml-2 text-gray-400`},vj={class:`text-xs text-gray-500 mt-1`},yj={class:`flex flex-row items-start gap-4`},bj={style:{height:`35vh`,width:`100%`}},xj=f({name:`OpenMeteoLocationEditForm`,__name:`open-meteo-location-edit-form`,props:{location:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{edit:s}=ri(),c=N(void 0),l=()=>{let e=n.location;return{name:e.name||``,latitude:e.latitude??null,longitude:e.longitude??null,countryCode:e.countryCode||``}},u=y(l()),{searchQuery:f,isSearching:p,isGettingLocation:x,zoom:S,center:C,marker:w,onMapClick:O,onMarkerMoveEnd:ee,handleCitySearch:j,handleCitySelect:te,getMyLocation:M}=tj(u),re={name:[{required:!0,message:a(`weatherOpenMeteoPlugin.fields.locations.name.validation.required`),trigger:`blur`}],latitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.latitude.validation.required`))):isNaN(Number(t))||Number(t)<-90||Number(t)>90?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.longitude.validation.required`))):isNaN(Number(t))||Number(t)<-180||Number(t)>180?n(Error(a(`weatherOpenMeteoPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}]},ie=async()=>{if(c.value){if(r(`update:remote-form-result`,Xr.WORKING),!await c.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={type:bn,name:u.name,latitude:u.latitude===null?void 0:Number(u.latitude),longitude:u.longitude===null?void 0:Number(u.longitude)};u.countryCode&&(e.country_code=u.countryCode),await s({id:n.location.id,data:e}),o.success(a(`weatherOpenMeteoPlugin.messages.locations.edited`,{location:u.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenMeteoPlugin.messages.locations.notEdited`,{location:u.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),ie())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),Object.assign(u,l()),c.value?.clearValidate())}),m(u,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:c,model:u,rules:re,"label-position":`top`,"status-icon":``,onSubmit:oe(ie,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:u.name,"onUpdate:modelValue":t[0]||=e=>u.name=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,fj,k(h(a)(`weatherOpenMeteoPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.title`)},{default:d(()=>[D(`div`,pj,[F(h(hn),{modelValue:h(f),"onUpdate:modelValue":t[1]||=e=>_(f)?f.value=e:null,"fetch-suggestions":h(j),placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.placeholder`),loading:h(p),debounce:500,clearable:``,class:`flex-1`,onSelect:h(te)},{default:d(({item:e})=>[D(`div`,mj,[D(`span`,hj,k(e.name),1),D(`span`,gj,[v(k(e.state?`${e.state}, `:``)+k(e.country)+` `,1),D(`span`,_j,` (`+k(e.lat.toFixed(4))+`, `+k(e.lon.toFixed(4))+`) `,1)])])]),_:1},8,[`modelValue`,`fetch-suggestions`,`placeholder`,`loading`,`onSelect`]),F(h(E),{loading:h(x),class:`px-2!`,onClick:h(M)},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenMeteoPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`,`onClick`])]),D(`div`,vj,k(h(a)(`weatherOpenMeteoPlugin.fields.locations.citySearch.description`)),1)]),_:1},8,[`label`]),F(h(fe),{"content-position":`left`,class:`mt-6!`},{default:d(()=>[v(k(h(a)(`weatherOpenMeteoPlugin.texts.orEnterManually`)),1)]),_:1}),D(`div`,yj,[F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:u.latitude,"onUpdate:modelValue":t[2]||=e=>u.latitude=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenMeteoPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:u.longitude,"onUpdate:modelValue":t[3]||=e=>u.longitude=e,placeholder:h(a)(`weatherOpenMeteoPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),_:1},8,[`model`]),D(`div`,bj,[F(h(_n),{zoom:h(S),"onUpdate:zoom":t[4]||=e=>_(S)?S.value=e:null,"use-global-leaflet":!1,center:h(C),onClick:h(O)},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),h(w)?(i(),T(h(yn),{key:0,"lat-lng":h(w),draggable:!0,onMoveend:h(ee)},null,8,[`lat-lng`,`onMoveend`])):g(``,!0)]),_:1},8,[`zoom`,`center`,`onClick`])])],64))}}),Sj={headings:{aboutSettings:`Nastavení Open-Meteo počasí`},fields:{config:{enabled:{title:`Povoleno`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Název`,description:`Přátelský název pro tuto lokaci`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název je povinný`}},citySearch:{title:`Hledat město`,placeholder:`Začněte psát pro vyhledání města...`,description:`Vyhledejte město a automaticky vyplníme souřadnice`},latitude:{title:`Zeměpisná šířka`,placeholder:`např. 51.5074`,validation:{required:`Zeměpisná šířka je povinná`,range:`Zeměpisná šířka musí být mezi -90 a 90`}},longitude:{title:`Zeměpisná délka`,placeholder:`např. -0.1278`,validation:{required:`Zeměpisná délka je povinná`,range:`Zeměpisná délka musí být mezi -180 a 180`}}}},buttons:{myLocation:{title:`Moje poloha`}},messages:{config:{edited:`Nastavení Open-Meteo bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení Open-Meteo`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,edited:`Lokace "{location}" byla aktualizována`,notEdited:`Nepodařilo se aktualizovat lokaci "{location}"`},geolocationNotSupported:`Geolokace není podporována vaším prohlížečem`,geolocationDenied:`Přístup k poloze byl zamítnut. Povolte prosím oprávnění k poloze.`,geolocationUnavailable:`Informace o poloze jsou nedostupné`,geolocationTimeout:`Požadavek na zjištění vaší polohy vypršel`,geolocationError:`Při zjišťování vaší polohy došlo k chybě`},texts:{aboutSettings:`Nakonfigurujte nastavení počasí Open-Meteo. Tento poskytovatel je zdarma a nevyžaduje API klíč.`,orEnterManually:`Nebo zadejte lokaci ručně`}},Cj={headings:{aboutSettings:`Open-Meteo Wetter-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},unit:{title:`Temperatureinheit`,placeholder:`Temperatureinheit auswählen`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`Ein freundlicher Name für diesen Standort`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Name ist erforderlich`}},citySearch:{title:`Stadt suchen`,placeholder:`Beginnen Sie zu tippen, um eine Stadt zu suchen...`,description:`Suchen Sie eine Stadt und wir füllen die Koordinaten automatisch aus`},latitude:{title:`Breitengrad`,placeholder:`z.B. 51.5074`,validation:{required:`Breitengrad ist erforderlich`,range:`Breitengrad muss zwischen -90 und 90 liegen`}},longitude:{title:`Längengrad`,placeholder:`z.B. -0.1278`,validation:{required:`Längengrad ist erforderlich`,range:`Längengrad muss zwischen -180 und 180 liegen`}}}},buttons:{myLocation:{title:`Mein Standort`}},messages:{config:{edited:`Open-Meteo-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der Open-Meteo-Einstellungen fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,edited:`Standort "{location}" wurde aktualisiert`,notEdited:`Standort "{location}" konnte nicht aktualisiert werden`},geolocationNotSupported:`Geolokalisierung wird von Ihrem Browser nicht unterstützt`,geolocationDenied:`Standortzugriff wurde verweigert. Bitte aktivieren Sie die Standortberechtigung.`,geolocationUnavailable:`Standortinformationen sind nicht verfügbar`,geolocationTimeout:`Die Anfrage zur Standortermittlung hat das Zeitlimit überschritten`,geolocationError:`Beim Abrufen Ihres Standorts ist ein Fehler aufgetreten`},texts:{aboutSettings:`Konfigurieren Sie Ihre Open-Meteo Wetter-Einstellungen. Dieser Anbieter ist kostenlos und erfordert keinen API-Schlüssel.`,orEnterManually:`Oder Standort manuell eingeben`}},wj={headings:{aboutSettings:`Open-Meteo weather settings`},fields:{config:{enabled:{title:`Enabled`},unit:{title:`Temperature unit`,placeholder:`Select temperature unit`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`A friendly name for this location`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Name is required`}},citySearch:{title:`Search city`,placeholder:`Start typing to search for a city...`,description:`Search for a city and we'll auto-fill the coordinates`},latitude:{title:`Latitude`,placeholder:`e.g., 51.5074`,validation:{required:`Latitude is required`,range:`Latitude must be between -90 and 90`}},longitude:{title:`Longitude`,placeholder:`e.g., -0.1278`,validation:{required:`Longitude is required`,range:`Longitude must be between -180 and 180`}}}},buttons:{myLocation:{title:`My location`}},messages:{config:{edited:`Open-Meteo settings have been updated`,notEdited:`Failed to update Open-Meteo settings`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,edited:`Location "{location}" has been updated`,notEdited:`Failed to update location "{location}"`},geolocationNotSupported:`Geolocation is not supported by your browser`,geolocationDenied:`Location access was denied. Please enable location permissions.`,geolocationUnavailable:`Location information is unavailable`,geolocationTimeout:`The request to get your location timed out`,geolocationError:`An error occurred while getting your location`},texts:{aboutSettings:`Configure your Open-Meteo weather settings. This provider is free and requires no API key.`,orEnterManually:`Or enter location manually`}},Tj={headings:{aboutSettings:`Configuración del clima Open-Meteo`},fields:{config:{enabled:{title:`Habilitado`},unit:{title:`Unidad de temperatura`,placeholder:`Seleccione la unidad de temperatura`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nombre`,description:`Un nombre descriptivo para esta ubicación`,placeholder:`p. ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre es obligatorio`}},citySearch:{title:`Buscar ciudad`,placeholder:`Comience a escribir para buscar una ciudad...`,description:`Busque una ciudad y completaremos automáticamente las coordenadas`},latitude:{title:`Latitud`,placeholder:`p. ej., 51.5074`,validation:{required:`La latitud es obligatoria`,range:`La latitud debe estar entre -90 y 90`}},longitude:{title:`Longitud`,placeholder:`p. ej., -0.1278`,validation:{required:`La longitud es obligatoria`,range:`La longitud debe estar entre -180 y 180`}}}},buttons:{myLocation:{title:`Mi ubicación`}},messages:{config:{edited:`La configuración de Open-Meteo se ha actualizado`,notEdited:`No se pudo actualizar la configuración de Open-Meteo`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`No se pudo crear la ubicación "{location}"`,edited:`La ubicación "{location}" ha sido actualizada`,notEdited:`No se pudo actualizar la ubicación "{location}"`},geolocationNotSupported:`La geolocalización no es compatible con su navegador`,geolocationDenied:`Se denegó el acceso a la ubicación. Por favor, habilite los permisos de ubicación.`,geolocationUnavailable:`La información de ubicación no está disponible`,geolocationTimeout:`La solicitud para obtener su ubicación ha expirado`,geolocationError:`Se produjo un error al obtener su ubicación`},texts:{aboutSettings:`Configure los ajustes del clima Open-Meteo. Este proveedor es gratuito y no requiere clave API.`,orEnterManually:`O introduzca la ubicación manualmente`}},Ej={headings:{aboutSettings:`Ustawienia pogody Open-Meteo`},fields:{config:{enabled:{title:`Włączony`},unit:{title:`Jednostka temperatury`,placeholder:`Wybierz jednostkę temperatury`,values:{celsius:`Celsjusz (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nazwa`,description:`Przyjazna nazwa dla tej lokalizacji`,placeholder:`np. Dom, Biuro, Domek na plaży`,validation:{required:`Nazwa jest wymagana`}},citySearch:{title:`Wyszukaj miasto`,placeholder:`Zacznij pisać, aby wyszukać miasto...`,description:`Wyszukaj miasto, a współrzędne zostaną uzupełnione automatycznie`},latitude:{title:`Szerokość geograficzna`,placeholder:`np. 51.5074`,validation:{required:`Szerokość geograficzna jest wymagana`,range:`Szerokość geograficzna musi być między -90 a 90`}},longitude:{title:`Długość geograficzna`,placeholder:`np. -0.1278`,validation:{required:`Długość geograficzna jest wymagana`,range:`Długość geograficzna musi być między -180 a 180`}}}},buttons:{myLocation:{title:`Moja lokalizacja`}},messages:{config:{edited:`Ustawienia Open-Meteo zostały zaktualizowane`,notEdited:`Nie udało się zaktualizować ustawień Open-Meteo`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,edited:`Lokalizacja "{location}" została zaktualizowana`,notEdited:`Nie udało się zaktualizować lokalizacji "{location}"`},geolocationNotSupported:`Geolokalizacja nie jest obsługiwana przez Twoją przeglądarkę`,geolocationDenied:`Dostęp do lokalizacji został odrzucony. Włącz uprawnienia do lokalizacji.`,geolocationUnavailable:`Informacje o lokalizacji są niedostępne`,geolocationTimeout:`Żądanie pobrania Twojej lokalizacji przekroczyło limit czasu`,geolocationError:`Wystąpił błąd podczas pobierania Twojej lokalizacji`},texts:{aboutSettings:`Skonfiguruj ustawienia pogody Open-Meteo. Ten dostawca jest darmowy i nie wymaga klucza API.`,orEnterManually:`Lub wprowadź lokalizację ręcznie`}},Dj={headings:{aboutSettings:`Nastavenia počasia Open-Meteo`},fields:{config:{enabled:{title:`Povolený`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Názov`,description:`Priateľský názov pre túto polohu`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov je povinný`}},citySearch:{title:`Vyhľadať mesto`,placeholder:`Začnite písať na vyhľadanie mesta...`,description:`Vyhľadajte mesto a automaticky vyplníme súradnice`},latitude:{title:`Zemepisná šírka`,placeholder:`napr. 51.5074`,validation:{required:`Zemepisná šírka je povinná`,range:`Zemepisná šírka musí byť medzi -90 a 90`}},longitude:{title:`Zemepisná dĺžka`,placeholder:`napr. -0.1278`,validation:{required:`Zemepisná dĺžka je povinná`,range:`Zemepisná dĺžka musí byť medzi -180 a 180`}}}},buttons:{myLocation:{title:`Moja poloha`}},messages:{config:{edited:`Nastavenia Open-Meteo boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia Open-Meteo`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,edited:`Poloha "{location}" bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať polohu "{location}"`},geolocationNotSupported:`Geolokácia nie je podporovaná vaším prehliadačom`,geolocationDenied:`Prístup k polohe bol zamietnutý. Prosím povoľte oprávnenia polohy.`,geolocationUnavailable:`Informácie o polohe nie sú dostupné`,geolocationTimeout:`Požiadavka na získanie polohy vypršala`,geolocationError:`Pri získavaní vašej polohy sa vyskytla chyba`},texts:{aboutSettings:`Nakonfigurujte nastavenia počasia Open-Meteo. Tento poskytovateľ je zadarmo a nevyžaduje API kľúč.`,orEnterManually:`Alebo zadajte polohu manuálne`}},Oj={"cs-CZ":Sj,"de-DE":Cj,"en-US":wj,"es-ES":Tj,"pl-PL":Ej,"sk-SK":Dj},kj=Tt.extend({unit:K(mn)}),Aj=qi.extend({latitude:G().min(-90).max(90),longitude:G().min(-180).max(180),countryCode:Y().nullable().optional()}),jj=Gi.extend({latitude:G().min(-90).max(90).optional(),longitude:G().min(-180).max(180).optional(),countryCode:Y().nullable().optional()}),Mj=Lt.extend({unit:K(mn).default(mn.CELSIUS)}),Nj=Wt.and(q({type:Z(vn),unit:K(mn).optional()})),Pj=Qr.extend({latitude:G(),longitude:G(),countryCode:Y().nullable().optional()}),Fj=ti.and(q({type:Z(bn),latitude:G(),longitude:G(),country_code:Y().optional()})),Ij=ni.and(q({type:Z(bn),latitude:G().optional(),longitude:G().optional(),country_code:Y().optional()})),Lj=Symbol(`FB-Plugin-WeatherOpenMeteo`),Rj={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(Oj)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherOpenMeteoPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(Lj,{type:vn,source:`com.fastybird.smart-panel.plugin.weather-open-meteo`,name:`Open-Meteo`,description:`Free weather data provider using Open-Meteo API. No API key required.`,links:{documentation:`https://open-meteo.com/en/docs`,devDocumentation:`https://open-meteo.com/en/docs`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:ej},schemas:{pluginConfigSchema:Mj,pluginConfigEditFormSchema:kj,pluginConfigUpdateReqSchema:Nj},modules:[pn]},{type:bn,components:{locationAddForm:dj,locationEditForm:xj},schemas:{locationSchema:Pj,locationAddFormSchema:Aj,locationEditFormSchema:jj,locationCreateReqSchema:Fj,locationUpdateReqSchema:Ij},modules:[Zr]}],modules:[pn,Zr],isCore:!0})}},zj=`weather-openweathermap-plugin`,Bj=`weather-openweathermap`,Vj=function(e){return e.CELSIUS=`celsius`,e.FAHRENHEIT=`fahrenheit`,e}({}),Hj=sn,Uj={class:`text-xs text-gray-500 mt-1`},Wj=f({name:`OpenWeatherMapConfigForm`,__name:`openweathermap-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`weatherOpenweathermapPlugin.messages.config.edited`),error:o(`weatherOpenweathermapPlugin.messages.config.notEdited`)}}),p=j(()=>[{value:Vj.CELSIUS,label:o(`weatherOpenweathermapPlugin.fields.config.unit.values.celsius`)},{value:Vj.FAHRENHEIT,label:o(`weatherOpenweathermapPlugin.fields.config.unit.values.fahrenheit`)}]),g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`weatherOpenweathermapPlugin.headings.aboutApiSettings`),description:h(o)(`weatherOpenweathermapPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`weatherOpenweathermapPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`weatherOpenweathermapPlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(c).apiKey,"onUpdate:modelValue":t[1]||=e=>h(c).apiKey=e,placeholder:h(o)(`weatherOpenweathermapPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,Uj,k(h(o)(`weatherOpenweathermapPlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`weatherOpenweathermapPlugin.fields.config.unit.title`),prop:`unit`},{default:d(()=>[F(h(X),{modelValue:h(c).unit,"onUpdate:modelValue":t[2]||=e=>h(c).unit=e,placeholder:h(o)(`weatherOpenweathermapPlugin.fields.config.unit.placeholder`),class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(p.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),Gj={class:`text-xs text-gray-500 mt-1`},Kj={class:`flex flex-row items-center gap-2 w-full`},qj={key:0,class:`flex flex-row items-start gap-4`},Jj={class:`text-xs text-gray-500 mt-1`},Yj={key:0,style:{height:`35vh`,width:`100%`}},Xj=f({name:`OpenWeatherMapLocationAddForm`,__name:`openweathermap-location-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{add:c}=ri(),l=N(void 0),u=N(!1),f=N(10),p=N([50.083328,14.46667]),_=N(null),x=y({name:``,locationType:Hj.lat_lon,latitude:null,longitude:null,cityName:``,countryCode:``,cityId:``,zipCode:``,zipCountryCode:``}),S={name:[{required:!0,message:a(`weatherOpenweathermapPlugin.fields.locations.name.validation.required`),trigger:`blur`}],locationType:[{required:!0,message:a(`weatherOpenweathermapPlugin.fields.locations.locationType.validation.required`),trigger:`change`}],latitude:[{validator:(e,t,n)=>{x.locationType===Hj.lat_lon&&(t==null||t===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.latitude.validation.required`))):x.locationType===Hj.lat_lon&&(Number(t)<-90||Number(t)>90)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{x.locationType===Hj.lat_lon&&(t==null||t===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.longitude.validation.required`))):x.locationType===Hj.lat_lon&&(Number(t)<-180||Number(t)>180)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}],cityName:[{validator:(e,t,n)=>{x.locationType===Hj.city_name&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.cityName.validation.required`))):n()},trigger:[`change`,`blur`]}],cityId:[{validator:(e,t,n)=>{x.locationType===Hj.city_id&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.cityId.validation.required`))):n()},trigger:[`change`,`blur`]}],zipCode:[{validator:(e,t,n)=>{x.locationType===Hj.zip_code&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.zipCode.validation.required`))):n()},trigger:[`change`,`blur`]}]},C=(e,t)=>{_.value=[e,t],p.value=[e,t],x.locationType===Hj.lat_lon?f.value=18:f.value=13},w=e=>{if(x.locationType!==Hj.lat_lon)return;let{lat:t,lng:n}=e.latlng;C(t,n),x.latitude=t,x.longitude=n},O=e=>{let{lat:t,lng:n}=e.target.getLatLng();x.latitude=t,x.longitude=n,_.value=[t,n]},ee=()=>{if(!navigator.geolocation){o.error(a(`weatherOpenweathermapPlugin.messages.geolocationNotSupported`));return}u.value=!0,navigator.geolocation.getCurrentPosition(e=>{let t=e.coords.latitude,n=e.coords.longitude;x.latitude=t,x.longitude=n,x.locationType=Hj.lat_lon,C(t,n),u.value=!1},e=>{switch(u.value=!1,e.code){case e.PERMISSION_DENIED:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationDenied`));break;case e.POSITION_UNAVAILABLE:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationUnavailable`));break;case e.TIMEOUT:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationTimeout`));break;default:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationError`))}},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0})},j=async()=>{if(l.value){if(r(`update:remote-form-result`,Xr.WORKING),!await l.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={name:x.name,type:Bj,location_type:x.locationType};x.locationType===Hj.lat_lon?(e.latitude=x.latitude===null?void 0:Number(x.latitude),e.longitude=x.longitude===null?void 0:Number(x.longitude)):x.locationType===Hj.city_name?(e.city_name=x.cityName,e.country_code=x.countryCode||void 0):x.locationType===Hj.city_id?e.city_id=x.cityId?parseInt(x.cityId,10):void 0:x.locationType===Hj.zip_code&&(e.zip_code=x.zipCode,e.country_code=x.zipCountryCode||void 0),await c({id:n.id,draft:!1,data:e}),o.success(a(`weatherOpenweathermapPlugin.messages.locations.created`,{location:x.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenweathermapPlugin.messages.locations.notCreated`,{location:x.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return s(()=>{x.latitude&&x.longitude&&C(x.latitude,x.longitude)}),m(()=>x.locationType,()=>{x.locationType===Hj.lat_lon&&x.latitude&&x.longitude&&C(x.latitude,x.longitude)}),m(()=>x.latitude,()=>{x.locationType===Hj.lat_lon&&x.latitude!==null&&x.latitude!==void 0&&x.longitude!==null&&x.longitude!==void 0&&C(x.latitude,x.longitude)}),m(()=>x.longitude,()=>{x.locationType===Hj.lat_lon&&x.latitude!==null&&x.latitude!==void 0&&x.longitude!==null&&x.longitude!==void 0&&C(x.latitude,x.longitude)}),m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),j())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),l.value?.resetFields())}),m(x,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:l,model:x,rules:S,"label-position":`top`,"status-icon":``,onSubmit:oe(j,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:x.name,"onUpdate:modelValue":t[0]||=e=>x.name=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,Gj,k(h(a)(`weatherOpenweathermapPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.title`),prop:`locationType`},{default:d(()=>[D(`div`,Kj,[F(h(X),{modelValue:x.locationType,"onUpdate:modelValue":t[1]||=e=>x.locationType=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.placeholder`),name:`locationType`,class:`flex-1`},{default:d(()=>[F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.latLon`),value:h(Hj).lat_lon},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.cityName`),value:h(Hj).city_name},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.cityId`),value:h(Hj).city_id},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.zipCode`),value:h(Hj).zip_code},null,8,[`label`,`value`])]),_:1},8,[`modelValue`,`placeholder`]),F(h(E),{loading:u.value,disabled:x.locationType!==h(Hj).lat_lon,class:`px-2!`,onClick:ee},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenweathermapPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`,`disabled`])])]),_:1},8,[`label`]),x.locationType===h(Hj).lat_lon?(i(),P(`div`,qj,[F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:x.latitude,"onUpdate:modelValue":t[2]||=e=>x.latitude=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:x.longitude,"onUpdate:modelValue":t[3]||=e=>x.longitude=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])):g(``,!0),x.locationType===h(Hj).city_name?(i(),T(h(V),{key:1,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityName.title`),prop:`cityName`},{default:d(()=>[F(h(W),{modelValue:x.cityName,"onUpdate:modelValue":t[4]||=e=>x.cityName=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityName.placeholder`),name:`cityName`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),x.locationType===h(Hj).city_name?(i(),T(h(V),{key:2,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.title`),prop:`countryCode`},{default:d(()=>[F(h(W),{modelValue:x.countryCode,"onUpdate:modelValue":t[5]||=e=>x.countryCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.placeholder`),name:`countryCode`,maxlength:`2`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),x.locationType===h(Hj).city_id?(i(),T(h(V),{key:3,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.title`),prop:`cityId`},{default:d(()=>[F(h(W),{modelValue:x.cityId,"onUpdate:modelValue":t[6]||=e=>x.cityId=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.placeholder`),name:`cityId`,type:`number`},null,8,[`modelValue`,`placeholder`]),D(`div`,Jj,k(h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.description`)),1)]),_:1},8,[`label`])):g(``,!0),x.locationType===h(Hj).zip_code?(i(),T(h(V),{key:4,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.zipCode.title`),prop:`zipCode`},{default:d(()=>[F(h(W),{modelValue:x.zipCode,"onUpdate:modelValue":t[7]||=e=>x.zipCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.zipCode.placeholder`),name:`zipCode`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),x.locationType===h(Hj).zip_code?(i(),T(h(V),{key:5,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.title`),prop:`zipCountryCode`},{default:d(()=>[F(h(W),{modelValue:x.zipCountryCode,"onUpdate:modelValue":t[8]||=e=>x.zipCountryCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.placeholder`),name:`zipCountryCode`,maxlength:`2`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0)]),_:1},8,[`model`]),x.locationType===h(Hj).lat_lon?(i(),P(`div`,Yj,[F(h(_n),{zoom:f.value,"onUpdate:zoom":t[9]||=e=>f.value=e,"use-global-leaflet":!1,center:p.value,onClick:w},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),_.value?(i(),T(h(yn),{key:0,"lat-lng":_.value,draggable:!0,onMoveend:O},null,8,[`lat-lng`])):g(``,!0)]),_:1},8,[`zoom`,`center`])])):g(``,!0)],64))}}),Zj={class:`text-xs text-gray-500 mt-1`},Qj={class:`flex flex-row items-center gap-2 w-full`},$j={key:0,class:`flex flex-row items-start gap-4`},eM={class:`text-xs text-gray-500 mt-1`},tM={key:0,style:{height:`35vh`,width:`100%`}},nM=f({name:`OpenWeatherMapLocationEditForm`,__name:`openweathermap-location-edit-form`,props:{location:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{edit:c}=ri(),l=N(void 0),u=N(!1),f=N(10),p=N([50.083328,14.46667]),_=N(null),x=()=>{let e=n.location;return{name:e.name||``,locationType:e.locationType||Hj.lat_lon,latitude:e.latitude??null,longitude:e.longitude??null,cityName:e.cityName||``,countryCode:e.countryCode||``,cityId:e.cityId!==null&&e.cityId!==void 0?String(e.cityId):``,zipCode:e.zipCode||``,zipCountryCode:e.countryCode||``}},S=y(x()),C={name:[{required:!0,message:a(`weatherOpenweathermapPlugin.fields.locations.name.validation.required`),trigger:`blur`}],locationType:[{required:!0,message:a(`weatherOpenweathermapPlugin.fields.locations.locationType.validation.required`),trigger:`change`}],latitude:[{validator:(e,t,n)=>{S.locationType===Hj.lat_lon&&(t==null||t===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.latitude.validation.required`))):S.locationType===Hj.lat_lon&&(Number(t)<-90||Number(t)>90)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{S.locationType===Hj.lat_lon&&(t==null||t===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.longitude.validation.required`))):S.locationType===Hj.lat_lon&&(Number(t)<-180||Number(t)>180)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}],cityName:[{validator:(e,t,n)=>{S.locationType===Hj.city_name&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.cityName.validation.required`))):n()},trigger:[`change`,`blur`]}],cityId:[{validator:(e,t,n)=>{S.locationType===Hj.city_id&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.cityId.validation.required`))):n()},trigger:[`change`,`blur`]}],zipCode:[{validator:(e,t,n)=>{S.locationType===Hj.zip_code&&(!t||t.trim()===``)?n(Error(a(`weatherOpenweathermapPlugin.fields.locations.zipCode.validation.required`))):n()},trigger:[`change`,`blur`]}]},w=(e,t)=>{_.value=[e,t],p.value=[e,t],S.locationType===Hj.lat_lon?f.value=18:f.value=13},O=e=>{if(S.locationType!==Hj.lat_lon)return;let{lat:t,lng:n}=e.latlng;w(t,n),S.latitude=t,S.longitude=n},ee=e=>{let{lat:t,lng:n}=e.target.getLatLng();S.latitude=t,S.longitude=n,_.value=[t,n]},j=()=>{if(!navigator.geolocation){o.error(a(`weatherOpenweathermapPlugin.messages.geolocationNotSupported`));return}u.value=!0,navigator.geolocation.getCurrentPosition(e=>{let t=e.coords.latitude,n=e.coords.longitude;S.latitude=t,S.longitude=n,S.locationType=Hj.lat_lon,w(t,n),u.value=!1},e=>{switch(u.value=!1,e.code){case e.PERMISSION_DENIED:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationDenied`));break;case e.POSITION_UNAVAILABLE:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationUnavailable`));break;case e.TIMEOUT:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationTimeout`));break;default:o.error(a(`weatherOpenweathermapPlugin.messages.geolocationError`))}},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0})},te=async()=>{if(l.value){if(r(`update:remote-form-result`,Xr.WORKING),!await l.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={type:Bj,name:S.name,location_type:S.locationType};S.locationType===Hj.lat_lon?(e.latitude=S.latitude===null?void 0:Number(S.latitude),e.longitude=S.longitude===null?void 0:Number(S.longitude)):S.locationType===Hj.city_name?(e.city_name=S.cityName,e.country_code=S.countryCode||void 0):S.locationType===Hj.city_id?e.city_id=S.cityId?parseInt(S.cityId,10):void 0:S.locationType===Hj.zip_code&&(e.zip_code=S.zipCode,e.country_code=S.zipCountryCode||void 0),await c({id:n.location.id,data:e}),o.success(a(`weatherOpenweathermapPlugin.messages.locations.edited`,{location:S.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenweathermapPlugin.messages.locations.notEdited`,{location:S.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return s(()=>{S.latitude&&S.longitude&&w(S.latitude,S.longitude)}),m(()=>S.locationType,()=>{S.locationType===Hj.lat_lon&&S.latitude&&S.longitude&&w(S.latitude,S.longitude)}),m(()=>S.latitude,()=>{S.locationType===Hj.lat_lon&&S.latitude!==null&&S.latitude!==void 0&&S.longitude!==null&&S.longitude!==void 0&&w(S.latitude,S.longitude)}),m(()=>S.longitude,()=>{S.locationType===Hj.lat_lon&&S.latitude!==null&&S.latitude!==void 0&&S.longitude!==null&&S.longitude!==void 0&&w(S.latitude,S.longitude)}),m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),te())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),Object.assign(S,x()),l.value?.clearValidate())}),m(S,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:l,model:S,rules:C,"label-position":`top`,"status-icon":``,onSubmit:oe(te,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:S.name,"onUpdate:modelValue":t[0]||=e=>S.name=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,Zj,k(h(a)(`weatherOpenweathermapPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.title`),prop:`locationType`},{default:d(()=>[D(`div`,Qj,[F(h(X),{modelValue:S.locationType,"onUpdate:modelValue":t[1]||=e=>S.locationType=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.placeholder`),name:`locationType`,class:`flex-1`},{default:d(()=>[F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.latLon`),value:h(Hj).lat_lon},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.cityName`),value:h(Hj).city_name},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.cityId`),value:h(Hj).city_id},null,8,[`label`,`value`]),F(h(J),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.locationType.values.zipCode`),value:h(Hj).zip_code},null,8,[`label`,`value`])]),_:1},8,[`modelValue`,`placeholder`]),F(h(E),{loading:u.value,disabled:S.locationType!==h(Hj).lat_lon,class:`px-2!`,onClick:j},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenweathermapPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`,`disabled`])])]),_:1},8,[`label`]),S.locationType===h(Hj).lat_lon?(i(),P(`div`,$j,[F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:S.latitude,"onUpdate:modelValue":t[2]||=e=>S.latitude=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:S.longitude,"onUpdate:modelValue":t[3]||=e=>S.longitude=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])):g(``,!0),S.locationType===h(Hj).city_name?(i(),T(h(V),{key:1,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityName.title`),prop:`cityName`},{default:d(()=>[F(h(W),{modelValue:S.cityName,"onUpdate:modelValue":t[4]||=e=>S.cityName=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityName.placeholder`),name:`cityName`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),S.locationType===h(Hj).city_name?(i(),T(h(V),{key:2,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.title`),prop:`countryCode`},{default:d(()=>[F(h(W),{modelValue:S.countryCode,"onUpdate:modelValue":t[5]||=e=>S.countryCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.placeholder`),name:`countryCode`,maxlength:`2`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),S.locationType===h(Hj).city_id?(i(),T(h(V),{key:3,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.title`),prop:`cityId`},{default:d(()=>[F(h(W),{modelValue:S.cityId,"onUpdate:modelValue":t[6]||=e=>S.cityId=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.placeholder`),name:`cityId`,type:`number`},null,8,[`modelValue`,`placeholder`]),D(`div`,eM,k(h(a)(`weatherOpenweathermapPlugin.fields.locations.cityId.description`)),1)]),_:1},8,[`label`])):g(``,!0),S.locationType===h(Hj).zip_code?(i(),T(h(V),{key:4,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.zipCode.title`),prop:`zipCode`},{default:d(()=>[F(h(W),{modelValue:S.zipCode,"onUpdate:modelValue":t[7]||=e=>S.zipCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.zipCode.placeholder`),name:`zipCode`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0),S.locationType===h(Hj).zip_code?(i(),T(h(V),{key:5,label:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.title`),prop:`zipCountryCode`},{default:d(()=>[F(h(W),{modelValue:S.zipCountryCode,"onUpdate:modelValue":t[8]||=e=>S.zipCountryCode=e,placeholder:h(a)(`weatherOpenweathermapPlugin.fields.locations.countryCode.placeholder`),name:`zipCountryCode`,maxlength:`2`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):g(``,!0)]),_:1},8,[`model`]),S.locationType===h(Hj).lat_lon?(i(),P(`div`,tM,[F(h(_n),{zoom:f.value,"onUpdate:zoom":t[9]||=e=>f.value=e,"use-global-leaflet":!1,center:p.value,onClick:O},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),_.value?(i(),T(h(yn),{key:0,"lat-lng":_.value,draggable:!0,onMoveend:ee},null,8,[`lat-lng`])):g(``,!0)]),_:1},8,[`zoom`,`center`])])):g(``,!0)],64))}}),rM={headings:{aboutApiSettings:`Nastavení OpenWeatherMap API`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj OpenWeatherMap API klíč`,description:`Získejte svůj bezplatný API klíč na openweathermap.org`,validation:{required:`Zadejte prosím svůj API klíč`}},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Název`,description:`Přátelský název pro tuto lokaci`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název je povinný`}},citySearch:{title:`Hledat město`,placeholder:`Začněte psát pro vyhledání města...`,description:`Vyhledejte město a automaticky vyplníme souřadnice`},locationType:{title:`Typ lokace`,placeholder:`Vyberte způsob identifikace lokace`,values:{latLon:`GPS souřadnice`,cityName:`Název města`,cityId:`ID města`,zipCode:`PSČ`},validation:{required:`Typ lokace je povinný`}},coordinates:{title:`Souřadnice`},latitude:{title:`Zeměpisná šířka`,placeholder:`např. 51.5074`,validation:{required:`Zeměpisná šířka je povinná`,range:`Zeměpisná šířka musí být mezi -90 a 90`}},longitude:{title:`Zeměpisná délka`,placeholder:`např. -0.1278`,validation:{required:`Zeměpisná délka je povinná`,range:`Zeměpisná délka musí být mezi -180 a 180`}},map:{title:`Lokace na mapě`},cityName:{title:`Název města`,placeholder:`např. Praha`,validation:{required:`Název města je povinný`}},countryCode:{title:`Kód země`,placeholder:`např. CZ`},cityId:{title:`ID města`,placeholder:`např. 2643743`,description:`ID města na OpenWeatherMap (najdete na openweathermap.org)`,validation:{required:`ID města je povinné`}},zipCode:{title:`PSČ`,placeholder:`např. 10000`,validation:{required:`PSČ je povinné`}}}},buttons:{myLocation:{title:`Moje poloha`}},messages:{config:{edited:`Nastavení OpenWeatherMap bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení OpenWeatherMap`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,edited:`Lokace "{location}" byla aktualizována`,notEdited:`Nepodařilo se aktualizovat lokaci "{location}"`},geolocationNotSupported:`Geolokace není podporována vaším prohlížečem`,geolocationDenied:`Přístup k poloze byl zamítnut. Povolte prosím oprávnění k poloze.`,geolocationUnavailable:`Informace o poloze jsou nedostupné`,geolocationTimeout:`Požadavek na zjištění vaší polohy vypršel`,geolocationError:`Při zjišťování vaší polohy došlo k chybě`},texts:{aboutApiSettings:`Nakonfigurujte nastavení OpenWeatherMap API. Pro načítání dat o počasí potřebujete platný API klíč. Vyberte preferovanou jednotku teploty pro zobrazení počasí.`}},iM={headings:{aboutApiSettings:`OpenWeatherMap API-Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren OpenWeatherMap API-Schlüssel ein`,description:`Holen Sie sich Ihren kostenlosen API-Schlüssel von openweathermap.org`,validation:{required:`Bitte geben Sie Ihren API-Schlüssel ein`}},unit:{title:`Temperatureinheit`,placeholder:`Temperatureinheit auswählen`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`Ein freundlicher Name für diesen Standort`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Name ist erforderlich`}},citySearch:{title:`Stadt suchen`,placeholder:`Beginnen Sie zu tippen, um eine Stadt zu suchen...`,description:`Suchen Sie eine Stadt und wir füllen die Koordinaten automatisch aus`},locationType:{title:`Standorttyp`,placeholder:`Wählen Sie, wie der Standort identifiziert wird`,values:{latLon:`GPS-Koordinaten`,cityName:`Stadtname`,cityId:`Stadt-ID`,zipCode:`Postleitzahl`},validation:{required:`Standorttyp ist erforderlich`}},coordinates:{title:`Koordinaten`},latitude:{title:`Breitengrad`,placeholder:`z.B. 51.5074`,validation:{required:`Breitengrad ist erforderlich`,range:`Breitengrad muss zwischen -90 und 90 liegen`}},longitude:{title:`Längengrad`,placeholder:`z.B. -0.1278`,validation:{required:`Längengrad ist erforderlich`,range:`Längengrad muss zwischen -180 und 180 liegen`}},map:{title:`Standort auf Karte`},cityName:{title:`Stadtname`,placeholder:`z.B. Berlin`,validation:{required:`Stadtname ist erforderlich`}},countryCode:{title:`Ländercode`,placeholder:`z.B. DE`},cityId:{title:`Stadt-ID`,placeholder:`z.B. 2643743`,description:`OpenWeatherMap Stadt-ID (finden Sie unter openweathermap.org)`,validation:{required:`Stadt-ID ist erforderlich`}},zipCode:{title:`Postleitzahl`,placeholder:`z.B. 10115`,validation:{required:`Postleitzahl ist erforderlich`}}}},buttons:{myLocation:{title:`Mein Standort`}},messages:{config:{edited:`OpenWeatherMap-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der OpenWeatherMap-Einstellungen fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,edited:`Standort "{location}" wurde aktualisiert`,notEdited:`Standort "{location}" konnte nicht aktualisiert werden`},geolocationNotSupported:`Geolokalisierung wird von Ihrem Browser nicht unterstützt`,geolocationDenied:`Standortzugriff wurde verweigert. Bitte aktivieren Sie die Standortberechtigung.`,geolocationUnavailable:`Standortinformationen sind nicht verfügbar`,geolocationTimeout:`Die Anfrage zur Standortermittlung hat das Zeitlimit überschritten`,geolocationError:`Beim Abrufen Ihres Standorts ist ein Fehler aufgetreten`},texts:{aboutApiSettings:`Konfigurieren Sie Ihre OpenWeatherMap API-Einstellungen. Sie benötigen einen gültigen API-Schlüssel, um Wetterdaten abzurufen. Wählen Sie Ihre bevorzugte Temperatureinheit für die Wetteranzeige.`}},aM={headings:{aboutApiSettings:`OpenWeatherMap API settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your OpenWeatherMap API key`,description:`Get your free API key from openweathermap.org`,validation:{required:`Please enter your API key`}},unit:{title:`Temperature unit`,placeholder:`Select temperature unit`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`A friendly name for this location`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Name is required`}},citySearch:{title:`Search city`,placeholder:`Start typing to search for a city...`,description:`Search for a city and we'll auto-fill the coordinates`},locationType:{title:`Location type`,placeholder:`Select how to identify the location`,values:{latLon:`GPS coordinates`,cityName:`City name`,cityId:`City ID`,zipCode:`ZIP code`},validation:{required:`Location type is required`}},coordinates:{title:`Coordinates`},latitude:{title:`Latitude`,placeholder:`e.g., 51.5074`,validation:{required:`Latitude is required`,range:`Latitude must be between -90 and 90`}},longitude:{title:`Longitude`,placeholder:`e.g., -0.1278`,validation:{required:`Longitude is required`,range:`Longitude must be between -180 and 180`}},map:{title:`Location on map`},cityName:{title:`City name`,placeholder:`e.g., London`,validation:{required:`City name is required`}},countryCode:{title:`Country code`,placeholder:`e.g., GB`},cityId:{title:`City ID`,placeholder:`e.g., 2643743`,description:`OpenWeatherMap city ID (find it at openweathermap.org)`,validation:{required:`City ID is required`}},zipCode:{title:`ZIP code`,placeholder:`e.g., 10001`,validation:{required:`ZIP code is required`}}}},buttons:{myLocation:{title:`My location`}},messages:{config:{edited:`OpenWeatherMap settings have been updated`,notEdited:`Failed to update OpenWeatherMap settings`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,edited:`Location "{location}" has been updated`,notEdited:`Failed to update location "{location}"`},geolocationNotSupported:`Geolocation is not supported by your browser`,geolocationDenied:`Location access was denied. Please enable location permissions.`,geolocationUnavailable:`Location information is unavailable`,geolocationTimeout:`The request to get your location timed out`,geolocationError:`An error occurred while getting your location`},texts:{aboutApiSettings:`Configure your OpenWeatherMap API settings. You need a valid API key to fetch weather data. Select your preferred temperature unit for weather displays.`}},oM={headings:{aboutApiSettings:`Configuración de la API de OpenWeatherMap`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de OpenWeatherMap`,description:`Obtenga su clave API gratuita en openweathermap.org`,validation:{required:`Por favor, introduzca su clave API`}},unit:{title:`Unidad de temperatura`,placeholder:`Seleccione la unidad de temperatura`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nombre`,description:`Un nombre descriptivo para esta ubicación`,placeholder:`p. ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre es obligatorio`}},citySearch:{title:`Buscar ciudad`,placeholder:`Comience a escribir para buscar una ciudad...`,description:`Busque una ciudad y completaremos automáticamente las coordenadas`},locationType:{title:`Tipo de ubicación`,placeholder:`Seleccione cómo identificar la ubicación`,values:{latLon:`Coordenadas GPS`,cityName:`Nombre de ciudad`,cityId:`ID de ciudad`,zipCode:`Código postal`},validation:{required:`El tipo de ubicación es obligatorio`}},coordinates:{title:`Coordenadas`},latitude:{title:`Latitud`,placeholder:`p. ej., 51.5074`,validation:{required:`La latitud es obligatoria`,range:`La latitud debe estar entre -90 y 90`}},longitude:{title:`Longitud`,placeholder:`p. ej., -0.1278`,validation:{required:`La longitud es obligatoria`,range:`La longitud debe estar entre -180 y 180`}},map:{title:`Ubicación en el mapa`},cityName:{title:`Nombre de ciudad`,placeholder:`p. ej., Londres`,validation:{required:`El nombre de ciudad es obligatorio`}},countryCode:{title:`Código de país`,placeholder:`p. ej., ES`},cityId:{title:`ID de ciudad`,placeholder:`p. ej., 2643743`,description:`ID de ciudad de OpenWeatherMap (encuéntrelo en openweathermap.org)`,validation:{required:`El ID de ciudad es obligatorio`}},zipCode:{title:`Código postal`,placeholder:`p. ej., 10001`,validation:{required:`El código postal es obligatorio`}}}},buttons:{myLocation:{title:`Mi ubicación`}},messages:{config:{edited:`La configuración de OpenWeatherMap se ha actualizado`,notEdited:`No se pudo actualizar la configuración de OpenWeatherMap`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`No se pudo crear la ubicación "{location}"`,edited:`La ubicación "{location}" ha sido actualizada`,notEdited:`No se pudo actualizar la ubicación "{location}"`},geolocationNotSupported:`La geolocalización no es compatible con su navegador`,geolocationDenied:`Se denegó el acceso a la ubicación. Por favor, habilite los permisos de ubicación.`,geolocationUnavailable:`La información de ubicación no está disponible`,geolocationTimeout:`La solicitud para obtener su ubicación ha expirado`,geolocationError:`Se produjo un error al obtener su ubicación`},texts:{aboutApiSettings:`Configure los ajustes de la API de OpenWeatherMap. Necesita una clave API válida para obtener datos del clima. Seleccione su unidad de temperatura preferida para las visualizaciones del clima.`}},sM={headings:{aboutApiSettings:`Ustawienia API OpenWeatherMap`},fields:{config:{enabled:{title:`Włączony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadź swój klucz API OpenWeatherMap`,description:`Uzyskaj darmowy klucz API na openweathermap.org`,validation:{required:`Wprowadź swój klucz API`}},unit:{title:`Jednostka temperatury`,placeholder:`Wybierz jednostkę temperatury`,values:{celsius:`Celsjusz (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nazwa`,description:`Przyjazna nazwa dla tej lokalizacji`,placeholder:`np. Dom, Biuro, Domek na plaży`,validation:{required:`Nazwa jest wymagana`}},citySearch:{title:`Wyszukaj miasto`,placeholder:`Zacznij pisać, aby wyszukać miasto...`,description:`Wyszukaj miasto, a współrzędne zostaną uzupełnione automatycznie`},locationType:{title:`Typ lokalizacji`,placeholder:`Wybierz sposób identyfikacji lokalizacji`,values:{latLon:`Współrzędne GPS`,cityName:`Nazwa miasta`,cityId:`ID miasta`,zipCode:`Kod pocztowy`},validation:{required:`Typ lokalizacji jest wymagany`}},coordinates:{title:`Współrzędne`},latitude:{title:`Szerokość geograficzna`,placeholder:`np. 51.5074`,validation:{required:`Szerokość geograficzna jest wymagana`,range:`Szerokość geograficzna musi być między -90 a 90`}},longitude:{title:`Długość geograficzna`,placeholder:`np. -0.1278`,validation:{required:`Długość geograficzna jest wymagana`,range:`Długość geograficzna musi być między -180 a 180`}},map:{title:`Lokalizacja na mapie`},cityName:{title:`Nazwa miasta`,placeholder:`np. Warszawa`,validation:{required:`Nazwa miasta jest wymagana`}},countryCode:{title:`Kod kraju`,placeholder:`np. PL`},cityId:{title:`ID miasta`,placeholder:`np. 2643743`,description:`ID miasta OpenWeatherMap (znajdziesz je na openweathermap.org)`,validation:{required:`ID miasta jest wymagane`}},zipCode:{title:`Kod pocztowy`,placeholder:`np. 00-001`,validation:{required:`Kod pocztowy jest wymagany`}}}},buttons:{myLocation:{title:`Moja lokalizacja`}},messages:{config:{edited:`Ustawienia OpenWeatherMap zostały zaktualizowane`,notEdited:`Nie udało się zaktualizować ustawień OpenWeatherMap`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,edited:`Lokalizacja "{location}" została zaktualizowana`,notEdited:`Nie udało się zaktualizować lokalizacji "{location}"`},geolocationNotSupported:`Geolokalizacja nie jest obsługiwana przez Twoją przeglądarkę`,geolocationDenied:`Dostęp do lokalizacji został odrzucony. Włącz uprawnienia do lokalizacji.`,geolocationUnavailable:`Informacje o lokalizacji są niedostępne`,geolocationTimeout:`Żądanie pobrania Twojej lokalizacji przekroczyło limit czasu`,geolocationError:`Wystąpił błąd podczas pobierania Twojej lokalizacji`},texts:{aboutApiSettings:`Skonfiguruj ustawienia API OpenWeatherMap. Potrzebujesz prawidłowego klucza API, aby pobierać dane pogodowe. Wybierz preferowaną jednostkę temperatury dla wyświetlania pogody.`}},cM={headings:{aboutApiSettings:`Nastavenia API OpenWeatherMap`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč OpenWeatherMap`,description:`Získajte svoj bezplatný API kľúč z openweathermap.org`,validation:{required:`Prosím zadajte svoj API kľúč`}},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Názov`,description:`Priateľský názov pre túto polohu`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov je povinný`}},citySearch:{title:`Vyhľadať mesto`,placeholder:`Začnite písať na vyhľadanie mesta...`,description:`Vyhľadajte mesto a automaticky vyplníme súradnice`},locationType:{title:`Typ polohy`,placeholder:`Vyberte spôsob identifikácie polohy`,values:{latLon:`GPS súradnice`,cityName:`Názov mesta`,cityId:`ID mesta`,zipCode:`PSČ`},validation:{required:`Typ polohy je povinný`}},coordinates:{title:`Súradnice`},latitude:{title:`Zemepisná šírka`,placeholder:`napr. 51.5074`,validation:{required:`Zemepisná šírka je povinná`,range:`Zemepisná šírka musí byť medzi -90 a 90`}},longitude:{title:`Zemepisná dĺžka`,placeholder:`napr. -0.1278`,validation:{required:`Zemepisná dĺžka je povinná`,range:`Zemepisná dĺžka musí byť medzi -180 a 180`}},map:{title:`Poloha na mape`},cityName:{title:`Názov mesta`,placeholder:`napr. Bratislava`,validation:{required:`Názov mesta je povinný`}},countryCode:{title:`Kód krajiny`,placeholder:`napr. SK`},cityId:{title:`ID mesta`,placeholder:`napr. 2643743`,description:`ID mesta OpenWeatherMap (nájdete ho na openweathermap.org)`,validation:{required:`ID mesta je povinné`}},zipCode:{title:`PSČ`,placeholder:`napr. 81101`,validation:{required:`PSČ je povinné`}}}},buttons:{myLocation:{title:`Moja poloha`}},messages:{config:{edited:`Nastavenia OpenWeatherMap boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia OpenWeatherMap`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,edited:`Poloha "{location}" bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať polohu "{location}"`},geolocationNotSupported:`Geolokácia nie je podporovaná vaším prehliadačom`,geolocationDenied:`Prístup k polohe bol zamietnutý. Prosím povoľte oprávnenia polohy.`,geolocationUnavailable:`Informácie o polohe nie sú dostupné`,geolocationTimeout:`Požiadavka na získanie polohy vypršala`,geolocationError:`Pri získavaní vašej polohy sa vyskytla chyba`},texts:{aboutApiSettings:`Nakonfigurujte nastavenia API OpenWeatherMap. Na získavanie údajov o počasí potrebujete platný API kľúč. Vyberte preferovanú jednotku teploty pre zobrazenie počasia.`}},lM={"cs-CZ":rM,"de-DE":iM,"en-US":aM,"es-ES":oM,"pl-PL":sM,"sk-SK":cM},uM=Tt.extend({apiKey:Y().nullable(),unit:K(Vj)}),dM=qi.extend({locationType:K(sn),latitude:G().min(-90).max(90).nullable().optional(),longitude:G().min(-180).max(180).nullable().optional(),cityName:Y().nullable().optional(),countryCode:Y().nullable().optional(),cityId:G().nullable().optional(),zipCode:Y().nullable().optional()}),fM=Gi.extend({locationType:K(sn).optional(),latitude:G().min(-90).max(90).nullable().optional(),longitude:G().min(-180).max(180).nullable().optional(),cityName:Y().nullable().optional(),countryCode:Y().nullable().optional(),cityId:G().nullable().optional(),zipCode:Y().nullable().optional()}),pM=Lt.extend({apiKey:Y().trim().nullable(),unit:K(Vj).default(Vj.CELSIUS)}),mM=Wt.and(q({type:Z(zj),api_key:Y().trim().nullable().optional(),unit:K(Vj).optional()}));Qt.and(q({type:Z(zj),api_key:Y().trim().nullable(),unit:K(Vj)}));var hM=Qr.extend({locationType:K(sn),latitude:G().nullable().optional(),longitude:G().nullable().optional(),cityName:Y().nullable().optional(),countryCode:Y().nullable().optional(),cityId:G().nullable().optional(),zipCode:Y().nullable().optional()}),gM=ti.and(q({type:Z(Bj),location_type:K(sn),latitude:G().optional(),longitude:G().optional(),city_name:Y().optional(),country_code:Y().optional(),city_id:G().optional(),zip_code:Y().optional()})),_M=ni.and(q({type:Z(Bj),location_type:K(sn).optional(),latitude:G().optional(),longitude:G().optional(),city_name:Y().optional(),country_code:Y().optional(),city_id:G().optional(),zip_code:Y().optional()})),vM=Symbol(`FB-Plugin-WeatherOpenweathermap`),yM={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries(lM)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherOpenweathermapPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(vM,{type:zj,source:`com.fastybird.smart-panel.plugin.weather-openweathermap`,name:`OpenWeatherMap`,description:`Weather data provider using OpenWeatherMap API 2.5`,links:{documentation:`https://openweathermap.org/api`,devDocumentation:`https://openweathermap.org/api`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:Wj},schemas:{pluginConfigSchema:pM,pluginConfigEditFormSchema:uM,pluginConfigUpdateReqSchema:mM},modules:[pn]},{type:Bj,components:{locationAddForm:Xj,locationEditForm:nM},schemas:{locationSchema:hM,locationAddFormSchema:dM,locationEditFormSchema:fM,locationCreateReqSchema:gM,locationUpdateReqSchema:_M},modules:[Zr]}],modules:[pn,Zr],isCore:!0})}},bM=`weather-openweathermap-onecall`,xM=`weather-openweathermap-onecall-plugin`,SM=`weather-openweathermap-onecall`,CM=function(e){return e.CELSIUS=`celsius`,e.FAHRENHEIT=`fahrenheit`,e}({}),wM={class:`text-xs text-gray-500 mt-1`},TM=f({name:`OpenWeatherMapOneCallConfigForm`,__name:`openweathermap-onecall-config-form`,props:{config:{},remoteFormSubmit:{type:Boolean},remoteFormResult:{default:dn.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1},layout:{default:qe.DEFAULT}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:o}=b(),{formEl:s,model:c,formChanged:l,submit:u,formResult:f}=Xt({config:n.config,messages:{success:o(`weatherOpenweathermapOnecallPlugin.messages.config.edited`),error:o(`weatherOpenweathermapOnecallPlugin.messages.config.notEdited`)}}),p=j(()=>[{value:CM.CELSIUS,label:o(`weatherOpenweathermapOnecallPlugin.fields.config.unit.values.celsius`)},{value:CM.FAHRENHEIT,label:o(`weatherOpenweathermapOnecallPlugin.fields.config.unit.values.fahrenheit`)}]),g=y({});return m(()=>f.value,async e=>{r(`update:remote-form-result`,e)}),m(()=>n.remoteFormSubmit,async e=>{e&&(r(`update:remote-form-submit`,!1),u().catch(()=>{}))}),m(()=>n.remoteFormReset,e=>{if(r(`update:remote-form-reset`,!1),e){if(!s.value)return;s.value.resetFields()}}),m(()=>l.value,e=>{r(`update:remote-form-changed`,e)}),(e,t)=>(i(),T(h(B),{ref_key:`formEl`,ref:s,model:h(c),rules:g,"label-position":`top`,"status-icon":``},{default:d(()=>[F(h(L),{type:`info`,title:h(o)(`weatherOpenweathermapOnecallPlugin.headings.aboutApiSettings`),description:h(o)(`weatherOpenweathermapOnecallPlugin.texts.aboutApiSettings`),closable:!1},null,8,[`title`,`description`]),F(h(V),{label:h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.enabled.title`),prop:`enabled`,"label-position":`left`,class:`mt-3`},{default:d(()=>[F(h(Me),{modelValue:h(c).enabled,"onUpdate:modelValue":t[0]||=e=>h(c).enabled=e,name:`enabled`},null,8,[`modelValue`])]),_:1},8,[`label`]),F(h(V),{label:h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.apiKey.title`),prop:`apiKey`},{default:d(()=>[F(h(W),{modelValue:h(c).apiKey,"onUpdate:modelValue":t[1]||=e=>h(c).apiKey=e,placeholder:h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.apiKey.placeholder`),name:`apiKey`,type:`password`,"show-password":``},null,8,[`modelValue`,`placeholder`]),D(`div`,wM,k(h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.apiKey.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.unit.title`),prop:`unit`},{default:d(()=>[F(h(X),{modelValue:h(c).unit,"onUpdate:modelValue":t[2]||=e=>h(c).unit=e,placeholder:h(o)(`weatherOpenweathermapOnecallPlugin.fields.config.unit.placeholder`),class:`w-full`},{default:d(()=>[(i(!0),P(A,null,a(p.value,e=>(i(),T(h(J),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`]))}}),EM=()=>{let e=fn(),t=N(!1);return{searchCities:async n=>{if(!n||n.length<2)return[];t.value=!0;try{let{data:t,response:r}=await e.client.GET(`/${ae}/${bM}/geolocation/city-to-coordinates`,{params:{query:{city:n}}});return r.ok&&t&&t.data||[]}catch{return[]}finally{t.value=!1}},isSearching:t}},DM={class:`text-xs text-gray-500 mt-1`},OM={class:`flex flex-row items-center gap-2 w-full`},kM={class:`flex flex-col py-1`},AM={class:`font-medium`},jM={class:`text-xs text-gray-500`},MM={class:`ml-2 text-gray-400`},NM={class:`text-xs text-gray-500 mt-1`},PM={class:`flex flex-row items-start gap-4`},FM={style:{height:`35vh`,width:`100%`}},IM=f({name:`OpenWeatherMapOneCallLocationAddForm`,__name:`openweathermap-onecall-location-add-form`,props:{id:{},type:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{add:c}=ri(),{searchCities:l,isSearching:u}=EM(),f=N(void 0),p=N(``),_=N(!1),x=N(10),S=N([50.083328,14.46667]),C=N(null),w=y({name:``,latitude:null,longitude:null,countryCode:``}),O={name:[{required:!0,message:a(`weatherOpenweathermapOnecallPlugin.fields.locations.name.validation.required`),trigger:`blur`}],latitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.validation.required`))):Number(t)<-90||Number(t)>90?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.validation.required`))):Number(t)<-180||Number(t)>180?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}]},ee=(e,t)=>{C.value=[e,t],S.value=[e,t],x.value=18},j=e=>{let{lat:t,lng:n}=e.latlng;ee(t,n),w.latitude=t,w.longitude=n},te=e=>{let{lat:t,lng:n}=e.target.getLatLng();w.latitude=t,w.longitude=n,C.value=[t,n]},M=(e,t)=>{if(!e||e.length<2){t([]);return}l(e).then(e=>{t(e.map(e=>({...e,value:`${e.name}${e.state?`, ${e.state}`:``}, ${e.country}`})))})},re=e=>{let t=e;w.name=`${t.name}${t.state?`, ${t.state}`:``}, ${t.country}`,w.latitude=t.lat,w.longitude=t.lon,w.countryCode=t.country,p.value=``,ee(t.lat,t.lon)},ie=()=>{if(!navigator.geolocation){o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationNotSupported`));return}_.value=!0,navigator.geolocation.getCurrentPosition(e=>{let t=e.coords.latitude,n=e.coords.longitude;w.latitude=t,w.longitude=n,ee(t,n),_.value=!1},e=>{switch(_.value=!1,e.code){case e.PERMISSION_DENIED:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationDenied`));break;case e.POSITION_UNAVAILABLE:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationUnavailable`));break;case e.TIMEOUT:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationTimeout`));break;default:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationError`))}},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0})},ae=async()=>{if(f.value){if(r(`update:remote-form-result`,Xr.WORKING),!await f.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={name:w.name,type:SM,latitude:w.latitude===null?void 0:Number(w.latitude),longitude:w.longitude===null?void 0:Number(w.longitude)};w.countryCode&&(e.country_code=w.countryCode),await c({id:n.id,draft:!1,data:e}),o.success(a(`weatherOpenweathermapOnecallPlugin.messages.locations.created`,{location:w.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenweathermapOnecallPlugin.messages.locations.notCreated`,{location:w.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return s(()=>{w.latitude&&w.longitude&&ee(w.latitude,w.longitude)}),m(()=>w.latitude,()=>{w.latitude!==null&&w.latitude!==void 0&&w.longitude!==null&&w.longitude!==void 0&&ee(w.latitude,w.longitude)}),m(()=>w.longitude,()=>{w.latitude!==null&&w.latitude!==void 0&&w.longitude!==null&&w.longitude!==void 0&&ee(w.latitude,w.longitude)}),m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),ae())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),f.value?.resetFields())}),m(w,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:f,model:w,rules:O,"label-position":`top`,"status-icon":``,onSubmit:oe(ae,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:w.name,"onUpdate:modelValue":t[0]||=e=>w.name=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,DM,k(h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.title`)},{default:d(()=>[D(`div`,OM,[F(h(hn),{modelValue:p.value,"onUpdate:modelValue":t[1]||=e=>p.value=e,"fetch-suggestions":M,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.placeholder`),loading:h(u),debounce:500,clearable:``,class:`flex-1`,onSelect:re},{default:d(({item:e})=>[D(`div`,kM,[D(`span`,AM,k(e.name),1),D(`span`,jM,[v(k(e.state?`${e.state}, `:``)+k(e.country)+` `,1),D(`span`,MM,` (`+k(e.lat.toFixed(4))+`, `+k(e.lon.toFixed(4))+`) `,1)])])]),_:1},8,[`modelValue`,`placeholder`,`loading`]),F(h(E),{loading:_.value,class:`px-2!`,onClick:ie},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenweathermapOnecallPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`])]),D(`div`,NM,k(h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.description`)),1)]),_:1},8,[`label`]),F(h(fe),{"content-position":`left`,class:`mt-6!`},{default:d(()=>[v(k(h(a)(`weatherOpenweathermapOnecallPlugin.texts.orEnterManually`)),1)]),_:1}),D(`div`,PM,[F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:w.latitude,"onUpdate:modelValue":t[2]||=e=>w.latitude=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:w.longitude,"onUpdate:modelValue":t[3]||=e=>w.longitude=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),_:1},8,[`model`]),D(`div`,FM,[F(h(_n),{zoom:x.value,"onUpdate:zoom":t[4]||=e=>x.value=e,"use-global-leaflet":!1,center:S.value,onClick:j},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),C.value?(i(),T(h(yn),{key:0,"lat-lng":C.value,draggable:!0,onMoveend:te},null,8,[`lat-lng`])):g(``,!0)]),_:1},8,[`zoom`,`center`])])],64))}}),LM={class:`text-xs text-gray-500 mt-1`},RM={class:`flex flex-row items-center gap-2 w-full`},zM={class:`flex flex-col py-1`},BM={class:`font-medium`},VM={class:`text-xs text-gray-500`},HM={class:`ml-2 text-gray-400`},UM={class:`text-xs text-gray-500 mt-1`},WM={class:`flex flex-row items-start gap-4`},GM={style:{height:`35vh`,width:`100%`}},KM=f({name:`OpenWeatherMapOneCallLocationEditForm`,__name:`openweathermap-onecall-location-edit-form`,props:{location:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:Xr.NONE},remoteFormReset:{type:Boolean,default:!1},remoteFormChanged:{type:Boolean,default:!1}},emits:[`update:remote-form-submit`,`update:remote-form-result`,`update:remote-form-reset`,`update:remote-form-changed`],setup(e,{emit:t}){let n=e,r=t,{t:a}=b(),o=rt(),{edit:c}=ri(),{searchCities:l,isSearching:u}=EM(),f=N(void 0),p=N(``),_=N(!1),x=N(10),S=N([50.083328,14.46667]),C=N(null),w=()=>{let e=n.location;return{name:e.name||``,latitude:e.latitude??null,longitude:e.longitude??null,countryCode:e.countryCode||``}},O=y(w()),ee={name:[{required:!0,message:a(`weatherOpenweathermapOnecallPlugin.fields.locations.name.validation.required`),trigger:`blur`}],latitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.validation.required`))):Number(t)<-90||Number(t)>90?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.validation.range`))):n()},trigger:[`change`,`blur`]}],longitude:[{validator:(e,t,n)=>{t==null||t===``?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.validation.required`))):Number(t)<-180||Number(t)>180?n(Error(a(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.validation.range`))):n()},trigger:[`change`,`blur`]}]},j=(e,t)=>{C.value=[e,t],S.value=[e,t],x.value=18},te=e=>{let{lat:t,lng:n}=e.latlng;j(t,n),O.latitude=t,O.longitude=n},M=e=>{let{lat:t,lng:n}=e.target.getLatLng();O.latitude=t,O.longitude=n,C.value=[t,n]},re=(e,t)=>{if(!e||e.length<2){t([]);return}l(e).then(e=>{t(e.map(e=>({...e,value:`${e.name}${e.state?`, ${e.state}`:``}, ${e.country}`})))})},ie=e=>{let t=e;O.name=`${t.name}${t.state?`, ${t.state}`:``}, ${t.country}`,O.latitude=t.lat,O.longitude=t.lon,O.countryCode=t.country,p.value=``,j(t.lat,t.lon)},ae=()=>{if(!navigator.geolocation){o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationNotSupported`));return}_.value=!0,navigator.geolocation.getCurrentPosition(e=>{let t=e.coords.latitude,n=e.coords.longitude;O.latitude=t,O.longitude=n,j(t,n),_.value=!1},e=>{switch(_.value=!1,e.code){case e.PERMISSION_DENIED:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationDenied`));break;case e.POSITION_UNAVAILABLE:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationUnavailable`));break;case e.TIMEOUT:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationTimeout`));break;default:o.error(a(`weatherOpenweathermapOnecallPlugin.messages.geolocationError`))}},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0})},se=async()=>{if(f.value){if(r(`update:remote-form-result`,Xr.WORKING),!await f.value.validate().catch(()=>!1)){r(`update:remote-form-result`,Xr.NONE);return}try{let e={type:SM,name:O.name,latitude:O.latitude===null?void 0:Number(O.latitude),longitude:O.longitude===null?void 0:Number(O.longitude)};O.countryCode&&(e.country_code=O.countryCode),await c({id:n.location.id,data:e}),o.success(a(`weatherOpenweathermapOnecallPlugin.messages.locations.edited`,{location:O.name})),r(`update:remote-form-result`,Xr.OK)}catch{o.error(a(`weatherOpenweathermapOnecallPlugin.messages.locations.notEdited`,{location:O.name})),r(`update:remote-form-result`,Xr.ERROR),setTimeout(()=>{r(`update:remote-form-result`,Xr.NONE)},2e3)}}};return s(()=>{O.latitude&&O.longitude&&j(O.latitude,O.longitude)}),m(()=>O.latitude,()=>{O.latitude!==null&&O.latitude!==void 0&&O.longitude!==null&&O.longitude!==void 0&&j(O.latitude,O.longitude)}),m(()=>O.longitude,()=>{O.latitude!==null&&O.latitude!==void 0&&O.longitude!==null&&O.longitude!==void 0&&j(O.latitude,O.longitude)}),m(()=>n.remoteFormSubmit,e=>{e&&(r(`update:remote-form-submit`,!1),se())}),m(()=>n.remoteFormReset,e=>{e&&(r(`update:remote-form-reset`,!1),Object.assign(O,w()),f.value?.clearValidate())}),m(O,()=>{r(`update:remote-form-changed`,!0)},{deep:!0}),(e,t)=>(i(),P(A,null,[F(h(B),{ref_key:`formEl`,ref:f,model:O,rules:ee,"label-position":`top`,"status-icon":``,onSubmit:oe(se,[`prevent`])},{default:d(()=>[F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.title`),prop:`name`},{default:d(()=>[F(h(W),{modelValue:O.name,"onUpdate:modelValue":t[0]||=e=>O.name=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.placeholder`)},null,8,[`modelValue`,`placeholder`]),D(`div`,LM,k(h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.name.description`)),1)]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.title`)},{default:d(()=>[D(`div`,RM,[F(h(hn),{modelValue:p.value,"onUpdate:modelValue":t[1]||=e=>p.value=e,"fetch-suggestions":re,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.placeholder`),loading:h(u),debounce:500,clearable:``,class:`flex-1`,onSelect:ie},{default:d(({item:e})=>[D(`div`,zM,[D(`span`,BM,k(e.name),1),D(`span`,VM,[v(k(e.state?`${e.state}, `:``)+k(e.country)+` `,1),D(`span`,HM,` (`+k(e.lat.toFixed(4))+`, `+k(e.lon.toFixed(4))+`) `,1)])])]),_:1},8,[`modelValue`,`placeholder`,`loading`]),F(h(E),{loading:_.value,class:`px-2!`,onClick:ae},{icon:d(()=>[F(h(ne),{icon:`mdi:map-marker-account-outline`})]),default:d(()=>[v(` `+k(h(a)(`weatherOpenweathermapOnecallPlugin.buttons.myLocation.title`)),1)]),_:1},8,[`loading`])]),D(`div`,UM,k(h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.citySearch.description`)),1)]),_:1},8,[`label`]),F(h(fe),{"content-position":`left`,class:`mt-6!`},{default:d(()=>[v(k(h(a)(`weatherOpenweathermapOnecallPlugin.texts.orEnterManually`)),1)]),_:1}),D(`div`,WM,[F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.title`),prop:`latitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:O.latitude,"onUpdate:modelValue":t[2]||=e=>O.latitude=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.latitude.placeholder`),name:`latitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(h(V),{label:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.title`),prop:`longitude`,class:`flex-1`},{default:d(()=>[F(h(W),{modelValue:O.longitude,"onUpdate:modelValue":t[3]||=e=>O.longitude=e,placeholder:h(a)(`weatherOpenweathermapOnecallPlugin.fields.locations.longitude.placeholder`),name:`longitude`,type:`number`,step:`0.0001`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),_:1},8,[`model`]),D(`div`,GM,[F(h(_n),{zoom:x.value,"onUpdate:zoom":t[4]||=e=>x.value=e,"use-global-leaflet":!1,center:S.value,onClick:te},{default:d(()=>[F(h(gn),{url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`}),C.value?(i(),T(h(yn),{key:0,"lat-lng":C.value,draggable:!0,onMoveend:M},null,8,[`lat-lng`])):g(``,!0)]),_:1},8,[`zoom`,`center`])])],64))}}),qM={headings:{aboutApiSettings:`Nastavení OpenWeatherMap One Call API 3.0`},fields:{config:{enabled:{title:`Povoleno`},apiKey:{title:`API klíč`,placeholder:`Zadejte svůj OpenWeatherMap One Call API klíč`,description:`Vyžaduje placené předplatné OpenWeatherMap One Call API 3.0`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Název`,description:`Přátelský název pro tuto lokaci`,placeholder:`např. Domov, Kancelář, Chata`,validation:{required:`Název je povinný`}},citySearch:{title:`Hledat město`,placeholder:`Začněte psát pro vyhledání města...`,description:`Vyhledejte město a automaticky vyplníme souřadnice`},latitude:{title:`Zeměpisná šířka`,placeholder:`např. 51.5074`,validation:{required:`Zeměpisná šířka je povinná`,range:`Zeměpisná šířka musí být mezi -90 a 90`}},longitude:{title:`Zeměpisná délka`,placeholder:`např. -0.1278`,validation:{required:`Zeměpisná délka je povinná`,range:`Zeměpisná délka musí být mezi -180 a 180`}}}},buttons:{myLocation:{title:`Moje poloha`}},messages:{config:{edited:`Nastavení OpenWeatherMap One Call bylo aktualizováno`,notEdited:`Nepodařilo se aktualizovat nastavení OpenWeatherMap One Call`},locations:{created:`Lokace "{location}" byla vytvořena`,notCreated:`Nepodařilo se vytvořit lokaci "{location}"`,edited:`Lokace "{location}" byla aktualizována`,notEdited:`Nepodařilo se aktualizovat lokaci "{location}"`},geolocationNotSupported:`Geolokace není podporována vaším prohlížečem`,geolocationDenied:`Přístup k poloze byl zamítnut. Povolte prosím oprávnění k poloze.`,geolocationUnavailable:`Informace o poloze jsou nedostupné`,geolocationTimeout:`Požadavek na zjištění vaší polohy vypršel`,geolocationError:`Při zjišťování vaší polohy došlo k chybě`},texts:{aboutApiSettings:`Nakonfigurujte nastavení OpenWeatherMap One Call API 3.0. Toto API vyžaduje placené předplatné a poskytuje podrobnější data o počasí včetně upozornění na počasí.`,orEnterManually:`Nebo zadejte lokaci ručně`}},JM={headings:{aboutApiSettings:`OpenWeatherMap One Call API 3.0 Einstellungen`},fields:{config:{enabled:{title:`Aktiviert`},apiKey:{title:`API-Schlüssel`,placeholder:`Geben Sie Ihren OpenWeatherMap One Call API-Schlüssel ein`,description:`Erfordert ein kostenpflichtiges Abonnement der OpenWeatherMap One Call API 3.0`},unit:{title:`Temperatureinheit`,placeholder:`Temperatureinheit auswählen`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`Ein freundlicher Name für diesen Standort`,placeholder:`z.B. Zuhause, Büro, Ferienhaus`,validation:{required:`Name ist erforderlich`}},citySearch:{title:`Stadt suchen`,placeholder:`Beginnen Sie zu tippen, um eine Stadt zu suchen...`,description:`Suchen Sie eine Stadt und wir füllen die Koordinaten automatisch aus`},latitude:{title:`Breitengrad`,placeholder:`z.B. 51.5074`,validation:{required:`Breitengrad ist erforderlich`,range:`Breitengrad muss zwischen -90 und 90 liegen`}},longitude:{title:`Längengrad`,placeholder:`z.B. -0.1278`,validation:{required:`Längengrad ist erforderlich`,range:`Längengrad muss zwischen -180 und 180 liegen`}}}},buttons:{myLocation:{title:`Mein Standort`}},messages:{config:{edited:`OpenWeatherMap One Call-Einstellungen wurden aktualisiert`,notEdited:`Aktualisierung der OpenWeatherMap One Call-Einstellungen fehlgeschlagen`},locations:{created:`Standort "{location}" wurde erstellt`,notCreated:`Standort "{location}" konnte nicht erstellt werden`,edited:`Standort "{location}" wurde aktualisiert`,notEdited:`Standort "{location}" konnte nicht aktualisiert werden`},geolocationNotSupported:`Geolokalisierung wird von Ihrem Browser nicht unterstützt`,geolocationDenied:`Standortzugriff wurde verweigert. Bitte aktivieren Sie die Standortberechtigung.`,geolocationUnavailable:`Standortinformationen sind nicht verfügbar`,geolocationTimeout:`Die Anfrage zur Standortermittlung hat das Zeitlimit überschritten`,geolocationError:`Beim Abrufen Ihres Standorts ist ein Fehler aufgetreten`},texts:{aboutApiSettings:`Konfigurieren Sie Ihre OpenWeatherMap One Call API 3.0 Einstellungen. Diese API erfordert ein kostenpflichtiges Abonnement und bietet detailliertere Wetterdaten einschließlich Wetterwarnungen.`,orEnterManually:`Oder Standort manuell eingeben`}},YM={headings:{aboutApiSettings:`OpenWeatherMap One Call API 3.0 settings`},fields:{config:{enabled:{title:`Enabled`},apiKey:{title:`API key`,placeholder:`Enter your OpenWeatherMap One Call API key`,description:`Requires a paid subscription to OpenWeatherMap One Call API 3.0`},unit:{title:`Temperature unit`,placeholder:`Select temperature unit`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Name`,description:`A friendly name for this location`,placeholder:`e.g., Home, Office, Beach House`,validation:{required:`Name is required`}},citySearch:{title:`Search city`,placeholder:`Start typing to search for a city...`,description:`Search for a city and we'll auto-fill the coordinates`},latitude:{title:`Latitude`,placeholder:`e.g., 51.5074`,validation:{required:`Latitude is required`,range:`Latitude must be between -90 and 90`}},longitude:{title:`Longitude`,placeholder:`e.g., -0.1278`,validation:{required:`Longitude is required`,range:`Longitude must be between -180 and 180`}}}},buttons:{myLocation:{title:`My location`}},messages:{config:{edited:`OpenWeatherMap One Call settings have been updated`,notEdited:`Failed to update OpenWeatherMap One Call settings`},locations:{created:`Location "{location}" has been created`,notCreated:`Failed to create location "{location}"`,edited:`Location "{location}" has been updated`,notEdited:`Failed to update location "{location}"`},geolocationNotSupported:`Geolocation is not supported by your browser`,geolocationDenied:`Location access was denied. Please enable location permissions.`,geolocationUnavailable:`Location information is unavailable`,geolocationTimeout:`The request to get your location timed out`,geolocationError:`An error occurred while getting your location`},texts:{aboutApiSettings:`Configure your OpenWeatherMap One Call API 3.0 settings. This API requires a paid subscription and provides more detailed weather data including weather alerts.`,orEnterManually:`Or enter location manually`}},XM={headings:{aboutApiSettings:`Configuración de OpenWeatherMap One Call API 3.0`},fields:{config:{enabled:{title:`Habilitado`},apiKey:{title:`Clave API`,placeholder:`Introduzca su clave API de OpenWeatherMap One Call`,description:`Requiere una suscripción de pago a OpenWeatherMap One Call API 3.0`},unit:{title:`Unidad de temperatura`,placeholder:`Seleccione la unidad de temperatura`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nombre`,description:`Un nombre descriptivo para esta ubicación`,placeholder:`p. ej., Casa, Oficina, Casa de playa`,validation:{required:`El nombre es obligatorio`}},citySearch:{title:`Buscar ciudad`,placeholder:`Comience a escribir para buscar una ciudad...`,description:`Busque una ciudad y completaremos automáticamente las coordenadas`},latitude:{title:`Latitud`,placeholder:`p. ej., 51.5074`,validation:{required:`La latitud es obligatoria`,range:`La latitud debe estar entre -90 y 90`}},longitude:{title:`Longitud`,placeholder:`p. ej., -0.1278`,validation:{required:`La longitud es obligatoria`,range:`La longitud debe estar entre -180 y 180`}}}},buttons:{myLocation:{title:`Mi ubicación`}},messages:{config:{edited:`La configuración de OpenWeatherMap One Call se ha actualizado`,notEdited:`No se pudo actualizar la configuración de OpenWeatherMap One Call`},locations:{created:`La ubicación "{location}" ha sido creada`,notCreated:`No se pudo crear la ubicación "{location}"`,edited:`La ubicación "{location}" ha sido actualizada`,notEdited:`No se pudo actualizar la ubicación "{location}"`},geolocationNotSupported:`La geolocalización no es compatible con su navegador`,geolocationDenied:`Se denegó el acceso a la ubicación. Por favor, habilite los permisos de ubicación.`,geolocationUnavailable:`La información de ubicación no está disponible`,geolocationTimeout:`La solicitud para obtener su ubicación ha expirado`,geolocationError:`Se produjo un error al obtener su ubicación`},texts:{aboutApiSettings:`Configure los ajustes de OpenWeatherMap One Call API 3.0. Esta API requiere una suscripción de pago y proporciona datos del clima más detallados, incluidas alertas meteorológicas.`,orEnterManually:`O introduzca la ubicación manualmente`}},ZM={headings:{aboutApiSettings:`Ustawienia OpenWeatherMap One Call API 3.0`},fields:{config:{enabled:{title:`Włączony`},apiKey:{title:`Klucz API`,placeholder:`Wprowadź swój klucz API OpenWeatherMap One Call`,description:`Wymaga płatnej subskrypcji OpenWeatherMap One Call API 3.0`},unit:{title:`Jednostka temperatury`,placeholder:`Wybierz jednostkę temperatury`,values:{celsius:`Celsjusz (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Nazwa`,description:`Przyjazna nazwa dla tej lokalizacji`,placeholder:`np. Dom, Biuro, Domek na plaży`,validation:{required:`Nazwa jest wymagana`}},citySearch:{title:`Wyszukaj miasto`,placeholder:`Zacznij pisać, aby wyszukać miasto...`,description:`Wyszukaj miasto, a współrzędne zostaną uzupełnione automatycznie`},latitude:{title:`Szerokość geograficzna`,placeholder:`np. 51.5074`,validation:{required:`Szerokość geograficzna jest wymagana`,range:`Szerokość geograficzna musi być między -90 a 90`}},longitude:{title:`Długość geograficzna`,placeholder:`np. -0.1278`,validation:{required:`Długość geograficzna jest wymagana`,range:`Długość geograficzna musi być między -180 a 180`}}}},buttons:{myLocation:{title:`Moja lokalizacja`}},messages:{config:{edited:`Ustawienia OpenWeatherMap One Call zostały zaktualizowane`,notEdited:`Nie udało się zaktualizować ustawień OpenWeatherMap One Call`},locations:{created:`Lokalizacja "{location}" została utworzona`,notCreated:`Nie udało się utworzyć lokalizacji "{location}"`,edited:`Lokalizacja "{location}" została zaktualizowana`,notEdited:`Nie udało się zaktualizować lokalizacji "{location}"`},geolocationNotSupported:`Geolokalizacja nie jest obsługiwana przez Twoją przeglądarkę`,geolocationDenied:`Dostęp do lokalizacji został odrzucony. Włącz uprawnienia do lokalizacji.`,geolocationUnavailable:`Informacje o lokalizacji są niedostępne`,geolocationTimeout:`Żądanie pobrania Twojej lokalizacji przekroczyło limit czasu`,geolocationError:`Wystąpił błąd podczas pobierania Twojej lokalizacji`},texts:{aboutApiSettings:`Skonfiguruj ustawienia OpenWeatherMap One Call API 3.0. To API wymaga płatnej subskrypcji i zapewnia bardziej szczegółowe dane pogodowe, w tym alerty pogodowe.`,orEnterManually:`Lub wprowadź lokalizację ręcznie`}},QM={headings:{aboutApiSettings:`Nastavenia OpenWeatherMap One Call API 3.0`},fields:{config:{enabled:{title:`Povolený`},apiKey:{title:`API kľúč`,placeholder:`Zadajte svoj API kľúč OpenWeatherMap One Call`,description:`Vyžaduje platené predplatné OpenWeatherMap One Call API 3.0`},unit:{title:`Jednotka teploty`,placeholder:`Vyberte jednotku teploty`,values:{celsius:`Celsius (°C)`,fahrenheit:`Fahrenheit (°F)`}}},locations:{name:{title:`Názov`,description:`Priateľský názov pre túto polohu`,placeholder:`napr. Domov, Kancelária, Chata`,validation:{required:`Názov je povinný`}},citySearch:{title:`Vyhľadať mesto`,placeholder:`Začnite písať na vyhľadanie mesta...`,description:`Vyhľadajte mesto a automaticky vyplníme súradnice`},latitude:{title:`Zemepisná šírka`,placeholder:`napr. 51.5074`,validation:{required:`Zemepisná šírka je povinná`,range:`Zemepisná šírka musí byť medzi -90 a 90`}},longitude:{title:`Zemepisná dĺžka`,placeholder:`napr. -0.1278`,validation:{required:`Zemepisná dĺžka je povinná`,range:`Zemepisná dĺžka musí byť medzi -180 a 180`}}}},buttons:{myLocation:{title:`Moja poloha`}},messages:{config:{edited:`Nastavenia OpenWeatherMap One Call boli aktualizované`,notEdited:`Nepodarilo sa aktualizovať nastavenia OpenWeatherMap One Call`},locations:{created:`Poloha "{location}" bola vytvorená`,notCreated:`Nepodarilo sa vytvoriť polohu "{location}"`,edited:`Poloha "{location}" bola aktualizovaná`,notEdited:`Nepodarilo sa aktualizovať polohu "{location}"`},geolocationNotSupported:`Geolokácia nie je podporovaná vaším prehliadačom`,geolocationDenied:`Prístup k polohe bol zamietnutý. Prosím povoľte oprávnenia polohy.`,geolocationUnavailable:`Informácie o polohe nie sú dostupné`,geolocationTimeout:`Požiadavka na získanie polohy vypršala`,geolocationError:`Pri získavaní vašej polohy sa vyskytla chyba`},texts:{aboutApiSettings:`Nakonfigurujte nastavenia OpenWeatherMap One Call API 3.0. Toto API vyžaduje platené predplatné a poskytuje podrobnejšie údaje o počasí vrátane výstrah.`,orEnterManually:`Alebo zadajte polohu manuálne`}},$M={"cs-CZ":qM,"de-DE":JM,"en-US":YM,"es-ES":XM,"pl-PL":ZM,"sk-SK":QM},eN=Tt.extend({apiKey:Y().nullable(),unit:K(CM)}),tN=qi.extend({latitude:G().min(-90).max(90),longitude:G().min(-180).max(180),countryCode:Y().nullable().optional()}),nN=Gi.extend({latitude:G().min(-90).max(90).optional(),longitude:G().min(-180).max(180).optional(),countryCode:Y().nullable().optional()}),rN=Lt.extend({apiKey:Y().trim().nullable(),unit:K(CM).default(CM.CELSIUS)}),iN=Wt.and(q({type:Z(xM),api_key:Y().trim().nullable().optional(),unit:K(CM).optional()}));Qt.and(q({type:Z(xM),api_key:Y().trim().nullable(),unit:K(CM)}));var aN=Qr.extend({latitude:G(),longitude:G(),countryCode:Y().nullable().optional()}),oN=ti.and(q({type:Z(SM),latitude:G(),longitude:G(),country_code:Y().optional()})),sN=ni.and(q({type:Z(SM),latitude:G().optional(),longitude:G().optional(),country_code:Y().optional()})),cN=Symbol(`FB-Plugin-WeatherOpenweathermapOnecall`),lN={install:(e,t)=>{let n=me(e);for(let[e,n]of Object.entries($M)){let r=(0,Ka.defaultsDeep)(t.i18n.global.getLocaleMessage(e),{weatherOpenweathermapOnecallPlugin:n});t.i18n.global.setLocaleMessage(e,r)}n.addPlugin(cN,{type:xM,source:`com.fastybird.smart-panel.plugin.weather-openweathermap-onecall`,name:`OpenWeatherMap OneCall 3.0`,description:`Weather data provider using OpenWeatherMap One Call API 3.0`,links:{documentation:`https://openweathermap.org/api/one-call-3`,devDocumentation:`https://openweathermap.org/api/one-call-3`,bugsTracking:`https://smart-panel.fastybird.com`},elements:[{type:lt,components:{pluginConfigEditForm:TM},schemas:{pluginConfigSchema:rN,pluginConfigEditFormSchema:eN,pluginConfigUpdateReqSchema:iN},modules:[pn]},{type:SM,components:{locationAddForm:IM,locationEditForm:KM},schemas:{locationSchema:aN,locationAddFormSchema:tN,locationEditFormSchema:nN,locationCreateReqSchema:oN,locationUpdateReqSchema:sN},modules:[Zr]}],modules:[pn,Zr],isCore:!0})}},$=S(Wa);$.use(Jt);var uN=$e()??ke();Jt.global.locale.value=uN,Qe(uN),$.use(le()),$.use(ue);var dN=bt();$.use(dN);var fN=new cn;$.config.globalProperties.storesManager=fN,xe($,fN);var pN=new kt;$.config.globalProperties.pluginsManager=pN,Dt($,pN);var mN=new Pe;$.config.globalProperties.modulesManager=mN,Ve($,mN);var hN=Na({baseUrl:`${window.location.protocol}//${window.location.hostname}:3000/api/v1`});$.config.globalProperties.backend=hN,We($,hN),$.config.globalProperties.logger=Ut,De($,Ut);var gN=ka();$.config.globalProperties.eventBus=gN,Ue($,gN);var _N=new Je;$.config.globalProperties.routerGuards=_N,un($,_N),$.use(be,{baseUrl:`${window.location.protocol}//${window.location.hostname}:3000`}),$.use(Ga,{store:dN});var vN={router:ve,store:dN,i18n:Jt};$.use(Vi,vN),$.use(_t,vN),$.use(cu,vN),$.use(rc,vN),$.use(dr,vN),$.use(Di,vN),$.use(Br,vN),$.use(Tn,vN),$.use(Qc,vN),$.use(qs,vN),$.use(hd,vN),$.use(Ki,vN),$.use(Ql,vN),$.use(qu,vN),$.use(_l,vN),$.use(Rl,vN),$.use(Xu,vN),$.use(xc,vN),$.use(vc,vN);var yN={router:ve,store:dN,i18n:Jt};$.use(CC,yN),$.use(Ub,yN),$.use(Cx,yN),$.use(pS,yN),$.use(rC,yN),$.use(wk,yN),$.use(rw,yN),$.use(RE,yN),$.use(KD,yN),$.use(uO,yN),$.use(DO,yN),$.use(Gk,yN),$.use(fA,yN),$.use(SA),$.use($A,yN),$.use(ng,yN),$.use(t_,yN),$.use(_D,yN),$.use(Rj,yN),$.use(yM,yN),$.use(lN,yN),$.use(tk,yN),$.use(gg,yN),$.use(Og,yN),$.use(lp,yN),$.use(Md,yN),$.use(Kf,yN),$.use(qd,yN),$.use(Np,yN),$.use(Af,yN),$.use(dm,yN),$.use(Um,yN),$.use(Yp,yN),$.use(Dm,yN),$.use(Rh,yN),$.use(mf,yN);var bN=new Set;$c($,Ut,{router:ve,store:dN,i18n:Jt},bN,Ua);try{await rl($,hN,Ut,{router:ve,store:dN,i18n:Jt},bN)}catch(e){Ut.error(`Failed to load remote extensions, continuing without them`,e)}ve.beforeEach(e=>{let t=Xe($);return _N.handle(t?.details.value??void 0,e)}),ve.addRoute({path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>Et(()=>import(`./view-not-found-C0Nl0aC-.js`),__vite__mapDeps([118,1,2,3])),meta:{title:`Page not found`}}),$.use(ve),ve.isReady().then(()=>$.mount(`#app`));
|