zigbee2mqtt-windfront 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{About-DM8DLf16.js → About-CBXe3LF9.js} +1 -1
- package/dist/assets/About-CBXe3LF9.js.br +0 -0
- package/dist/assets/{Availability-C54inj6H.js → Availability-DZ-ZY3Ib.js} +1 -1
- package/dist/assets/Availability-DZ-ZY3Ib.js.br +0 -0
- package/dist/assets/{Bind-CfYMw6IF.js → Bind-CUr18btA.js} +1 -1
- package/dist/assets/Bind-CUr18btA.js.br +0 -0
- package/dist/assets/Bridge-CpN8YQde.js +1 -0
- package/dist/assets/Bridge-CpN8YQde.js.br +0 -0
- package/dist/assets/{CheckboxField-ZdCJFDzF.js → CheckboxField-D0wHGmUZ.js} +1 -1
- package/dist/assets/CheckboxField-D0wHGmUZ.js.br +1 -0
- package/dist/assets/{ClusterSinglePicker-CSi-qv6j.js → ClusterSinglePicker-TClcBWb_.js} +1 -1
- package/dist/assets/ClusterSinglePicker-TClcBWb_.js.br +0 -0
- package/dist/assets/{Clusters-CRRgSSw_.js → Clusters-C95yiwgC.js} +1 -1
- package/dist/assets/Clusters-C95yiwgC.js.br +0 -0
- package/dist/assets/{ContributePage-C2_5zZPu.js → ContributePage-I_45rELu.js} +1 -1
- package/dist/assets/ContributePage-I_45rELu.js.br +0 -0
- package/dist/assets/Dashboard-NFKeHuZ2.js +1 -0
- package/dist/assets/Dashboard-NFKeHuZ2.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-CC4xEX29.js → DashboardFeatureWrapper-DAZ17bMu.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-DAZ17bMu.js.br +0 -0
- package/dist/assets/{DebouncedInput-CB_1_bR4.js → DebouncedInput-E4d1IUlA.js} +1 -1
- package/dist/assets/DebouncedInput-E4d1IUlA.js.br +0 -0
- package/dist/assets/{DevConsole-D_fDyr1Y.js → DevConsole-D2K3QBeF.js} +1 -1
- package/dist/assets/DevConsole-D2K3QBeF.js.br +0 -0
- package/dist/assets/{DevConsole-CyYc3Be6.js → DevConsole-DPEtlBix.js} +1 -1
- package/dist/assets/DevConsole-DPEtlBix.js.br +0 -0
- package/dist/assets/{DeviceCard-BgokW0wu.js → DeviceCard-BQTqTIzx.js} +1 -1
- package/dist/assets/DeviceCard-BQTqTIzx.js.br +0 -0
- package/dist/assets/{DeviceImage-DGFxocTf.js → DeviceImage-CHwoOcls.js} +1 -1
- package/dist/assets/DeviceImage-CHwoOcls.js.br +0 -0
- package/dist/assets/{DeviceInfo-BbBCaH8W.js → DeviceInfo-Cm1T4POk.js} +1 -1
- package/dist/assets/DeviceInfo-Cm1T4POk.js.br +0 -0
- package/dist/assets/{DevicePage-DdZWtHIC.js → DevicePage-X_J0uLvv.js} +2 -2
- package/dist/assets/DevicePage-X_J0uLvv.js.br +0 -0
- package/dist/assets/{DevicePicker-B-XE2jT1.js → DevicePicker-BKPECTmF.js} +1 -1
- package/dist/assets/DevicePicker-BKPECTmF.js.br +0 -0
- package/dist/assets/{DeviceSettings-CrswMb5M.js → DeviceSettings-B8zTmPZ6.js} +1 -1
- package/dist/assets/DeviceSettings-B8zTmPZ6.js.br +0 -0
- package/dist/assets/{DeviceSpecificSettings-yYPxiYP8.js → DeviceSpecificSettings-BR-eoWMM.js} +1 -1
- package/dist/assets/DeviceSpecificSettings-BR-eoWMM.js.br +0 -0
- package/dist/assets/{Devices-Lip94CC3.js → Devices-DQMExlfM.js} +1 -1
- package/dist/assets/Devices-DQMExlfM.js.br +0 -0
- package/dist/assets/{DevicesPage-CfdvYarn.js → DevicesPage-x2h663Pn.js} +1 -1
- package/dist/assets/DevicesPage-x2h663Pn.js.br +0 -0
- package/dist/assets/{DisplayValue-CmowE72l.js → DisplayValue-DcXMP9Gf.js} +1 -1
- package/dist/assets/DisplayValue-DcXMP9Gf.js.br +0 -0
- package/dist/assets/{EndpointPicker-BXByV-vM.js → EndpointPicker-Dnt0o2EO.js} +1 -1
- package/dist/assets/EndpointPicker-Dnt0o2EO.js.br +0 -0
- package/dist/assets/{Exposes-CJ-B3VqR.js → Exposes-BKgT6prr.js} +1 -1
- package/dist/assets/Exposes-BKgT6prr.js.br +0 -0
- package/dist/assets/{Feature-NdqklTM_.js → Feature-CgMuzQp3.js} +1 -1
- package/dist/assets/Feature-CgMuzQp3.js.br +0 -0
- package/dist/assets/{FrontendSettingsPage-D0cBhAU8.js → FrontendSettingsPage-Cug7TKW7.js} +1 -1
- package/dist/assets/FrontendSettingsPage-Cug7TKW7.js.br +0 -0
- package/dist/assets/{GroupPage-D_vC8J62.js → GroupPage-2bYv8nal.js} +2 -2
- package/dist/assets/GroupPage-2bYv8nal.js.br +0 -0
- package/dist/assets/{GroupSettings-BhuaasNV.js → GroupSettings-DnkJ0ONP.js} +1 -1
- package/dist/assets/GroupSettings-DnkJ0ONP.js.br +0 -0
- package/dist/assets/{Groups-CsYeFpE5.js → Groups-CtntS-XD.js} +1 -1
- package/dist/assets/Groups-CtntS-XD.js.br +0 -0
- package/dist/assets/{GroupsPage-eUfcf9-b.js → GroupsPage-BU0zPu08.js} +1 -1
- package/dist/assets/GroupsPage-BU0zPu08.js.br +0 -0
- package/dist/assets/{Health-BuzHRaKg.js → Health-DlIcPYjL.js} +1 -1
- package/dist/assets/Health-DlIcPYjL.js.br +0 -0
- package/dist/assets/{HomePage-Cix1ynu7.js → HomePage-vHwZidUF.js} +1 -1
- package/dist/assets/HomePage-vHwZidUF.js.br +0 -0
- package/dist/assets/{InfoAlert-BCwbz_U1.js → InfoAlert-B2RwtOeQ.js} +1 -1
- package/dist/assets/InfoAlert-B2RwtOeQ.js.br +0 -0
- package/dist/assets/{InputField-CoouO8KX.js → InputField-D9KJc30P.js} +1 -1
- package/dist/assets/InputField-D9KJc30P.js.br +0 -0
- package/dist/assets/{Json-AbCAC2T4.js → Json-BZbhIKAk.js} +1 -1
- package/dist/assets/Json-BZbhIKAk.js.br +0 -0
- package/dist/assets/{LastSeen-DpZtjfR1.js → LastSeen-F90Gw0JI.js} +1 -1
- package/dist/assets/LastSeen-F90Gw0JI.js.br +0 -0
- package/dist/assets/{LogsPage-aFp3H3ps.js → LogsPage-CiCW-D3e.js} +1 -1
- package/dist/assets/LogsPage-CiCW-D3e.js.br +0 -0
- package/dist/assets/Lqi-OUPQk-S2.js +1 -0
- package/dist/assets/Lqi-OUPQk-S2.js.br +0 -0
- package/dist/assets/{NetworkPage-CwIfurAG.js → NetworkPage-B7Jry1o1.js} +2 -2
- package/dist/assets/NetworkPage-B7Jry1o1.js.br +0 -0
- package/dist/assets/{NumberField-C7vPZa-K.js → NumberField-Bz4sSMOV.js} +1 -1
- package/dist/assets/NumberField-Bz4sSMOV.js.br +0 -0
- package/dist/assets/{OtaPage-BWLHx0N1.js → OtaPage-DkIMQS5w.js} +1 -1
- package/dist/assets/OtaPage-DkIMQS5w.js.br +0 -0
- package/dist/assets/{PowerSource-DDICmrah.js → PowerSource-BDEov_ab.js} +1 -1
- package/dist/assets/PowerSource-BDEov_ab.js.br +0 -0
- package/dist/assets/{RawNetworkData-CO29F09S.js → RawNetworkData-BZusvAN3.js} +1 -1
- package/dist/assets/RawNetworkData-BZusvAN3.js.br +0 -0
- package/dist/assets/{RawNetworkMap-COMKS7ES.js → RawNetworkMap-DJJp1qE4.js} +1 -1
- package/dist/assets/RawNetworkMap-DJJp1qE4.js.br +0 -0
- package/dist/assets/{RecallRemove-Pj_lOD1S.js → RecallRemove-BrzsS3Vg.js} +1 -1
- package/dist/assets/RecallRemove-BrzsS3Vg.js.br +0 -0
- package/dist/assets/{RemoveDeviceModal-BwBAE1DK.js → RemoveDeviceModal-7DiwN3ck.js} +1 -1
- package/dist/assets/RemoveDeviceModal-7DiwN3ck.js.br +0 -0
- package/dist/assets/{Reporting-DQtJCIne.js → Reporting-Bw9GN5C_.js} +1 -1
- package/dist/assets/Reporting-Bw9GN5C_.js.br +0 -0
- package/dist/assets/{Scene-CZ25eal3.js → Scene-DbwZttCL.js} +1 -1
- package/dist/assets/Scene-DbwZttCL.js.br +0 -0
- package/dist/assets/{SelectField-Cjwi2kGD.js → SelectField-dfeWrxvV.js} +1 -1
- package/dist/assets/SelectField-dfeWrxvV.js.br +0 -0
- package/dist/assets/{Settings-DTtiIaMv.js → Settings-BAzvJnW3.js} +1 -1
- package/dist/assets/Settings-BAzvJnW3.js.br +0 -0
- package/dist/assets/{SettingsList-C-g0oLGN.js → SettingsList-CDX9ME9V.js} +1 -1
- package/dist/assets/SettingsList-CDX9ME9V.js.br +0 -0
- package/dist/assets/{SettingsPage-BwzbXtfF.js → SettingsPage-D4PEYHCe.js} +2 -2
- package/dist/assets/SettingsPage-D4PEYHCe.js.br +0 -0
- package/dist/assets/State-HlrU5DRw.js +1 -0
- package/dist/assets/State-HlrU5DRw.js.br +0 -0
- package/dist/assets/{Table-Ck6LUpsh.js → Table-FUtHXzGb.js} +1 -1
- package/dist/assets/Table-FUtHXzGb.js.br +0 -0
- package/dist/assets/{TextareaField-DXMOX-ZG.js → TextareaField-LpcEEomy.js} +1 -1
- package/dist/assets/TextareaField-LpcEEomy.js.br +0 -0
- package/dist/assets/{Tools-Df4YVKTu.js → Tools-p7CNLqZ_.js} +1 -1
- package/dist/assets/Tools-p7CNLqZ_.js.br +0 -0
- package/dist/assets/{TouchlinkPage-CAp3tBCH.js → TouchlinkPage-CNaEzWU8.js} +1 -1
- package/dist/assets/TouchlinkPage-CNaEzWU8.js.br +0 -0
- package/dist/assets/{VendorLink-CloJvn5I.js → VendorLink-D2p34CmW.js} +1 -1
- package/dist/assets/VendorLink-D2p34CmW.js.br +0 -0
- package/dist/assets/{_createCompounder-JFMc-LTw.js → _createCompounder-Dcznv9Az.js} +1 -1
- package/dist/assets/_createCompounder-Dcznv9Az.js.br +0 -0
- package/dist/assets/{format-CR8fnhJq.js → format-BHlbVbae.js} +1 -1
- package/dist/assets/format-BHlbVbae.js.br +0 -0
- package/dist/assets/{index-BdHs_BcQ.js → index-BbB5QEu8.js} +1 -1
- package/dist/assets/index-BbB5QEu8.js.br +3 -0
- package/dist/assets/{index-Dm1jDR4v.js → index-BwjSpuUu.js} +1 -1
- package/dist/assets/index-BwjSpuUu.js.br +0 -0
- package/dist/assets/{index-C9teBVht.js → index-Cg_dwqpD.js} +3 -3
- package/dist/assets/index-Cg_dwqpD.js.br +0 -0
- package/dist/assets/{index-B0IjLmAW.css → index-UjZc6d-V.css} +1 -1
- package/dist/assets/index-UjZc6d-V.css.br +0 -0
- package/dist/assets/{isArray-atDF8gHr.js → isArray-uIIfUpwr.js} +1 -1
- package/dist/assets/isArray-uIIfUpwr.js.br +0 -0
- package/dist/assets/{jszip.min-CHZdFArg.js → jszip.min-D78Hqesd.js} +1 -1
- package/dist/assets/jszip.min-D78Hqesd.js.br +0 -0
- package/dist/assets/{merge-qpjScXxg.js → merge-X6TqzNNw.js} +1 -1
- package/dist/assets/merge-X6TqzNNw.js.br +0 -0
- package/dist/assets/snakeCase-CrKq36vi.js +1 -0
- package/dist/assets/snakeCase-CrKq36vi.js.br +0 -0
- package/dist/assets/{useColumnCount-Blfbr5hF.js → useColumnCount-B-PyuU0g.js} +1 -1
- package/dist/assets/useColumnCount-B-PyuU0g.js.br +0 -0
- package/dist/assets/{useSearch-DWt9mTiA.js → useSearch-DX_EYdJN.js} +1 -1
- package/dist/assets/useSearch-DX_EYdJN.js.br +0 -0
- package/dist/assets/{useTable-DxvhHQuW.js → useTable-B3JMT6Iq.js} +1 -1
- package/dist/assets/useTable-B3JMT6Iq.js.br +0 -0
- package/dist/index.html +2 -2
- package/dist/index.html.br +0 -0
- package/package.json +9 -9
- package/dist/assets/About-DM8DLf16.js.br +0 -0
- package/dist/assets/Availability-C54inj6H.js.br +0 -0
- package/dist/assets/Bind-CfYMw6IF.js.br +0 -0
- package/dist/assets/Bridge-CE2xOmDz.js +0 -1
- package/dist/assets/Bridge-CE2xOmDz.js.br +0 -0
- package/dist/assets/CheckboxField-ZdCJFDzF.js.br +0 -0
- package/dist/assets/ClusterSinglePicker-CSi-qv6j.js.br +0 -0
- package/dist/assets/Clusters-CRRgSSw_.js.br +0 -0
- package/dist/assets/ContributePage-C2_5zZPu.js.br +0 -0
- package/dist/assets/Dashboard-D9cep-yd.js +0 -1
- package/dist/assets/Dashboard-D9cep-yd.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-CC4xEX29.js.br +0 -0
- package/dist/assets/DebouncedInput-CB_1_bR4.js.br +0 -0
- package/dist/assets/DevConsole-CyYc3Be6.js.br +0 -0
- package/dist/assets/DevConsole-D_fDyr1Y.js.br +0 -0
- package/dist/assets/DeviceCard-BgokW0wu.js.br +0 -0
- package/dist/assets/DeviceImage-DGFxocTf.js.br +0 -0
- package/dist/assets/DeviceInfo-BbBCaH8W.js.br +0 -0
- package/dist/assets/DevicePage-DdZWtHIC.js.br +0 -0
- package/dist/assets/DevicePicker-B-XE2jT1.js.br +0 -0
- package/dist/assets/DeviceSettings-CrswMb5M.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-yYPxiYP8.js.br +0 -0
- package/dist/assets/Devices-Lip94CC3.js.br +0 -0
- package/dist/assets/DevicesPage-CfdvYarn.js.br +0 -0
- package/dist/assets/DisplayValue-CmowE72l.js.br +0 -0
- package/dist/assets/EndpointPicker-BXByV-vM.js.br +0 -0
- package/dist/assets/Exposes-CJ-B3VqR.js.br +0 -0
- package/dist/assets/Feature-NdqklTM_.js.br +0 -0
- package/dist/assets/FrontendSettingsPage-D0cBhAU8.js.br +0 -0
- package/dist/assets/GroupPage-D_vC8J62.js.br +0 -0
- package/dist/assets/GroupSettings-BhuaasNV.js.br +0 -0
- package/dist/assets/Groups-CsYeFpE5.js.br +0 -0
- package/dist/assets/GroupsPage-eUfcf9-b.js.br +0 -0
- package/dist/assets/Health-BuzHRaKg.js.br +0 -0
- package/dist/assets/HomePage-Cix1ynu7.js.br +0 -0
- package/dist/assets/InfoAlert-BCwbz_U1.js.br +0 -0
- package/dist/assets/InputField-CoouO8KX.js.br +0 -0
- package/dist/assets/Json-AbCAC2T4.js.br +0 -0
- package/dist/assets/LastSeen-DpZtjfR1.js.br +0 -0
- package/dist/assets/LogsPage-aFp3H3ps.js.br +0 -0
- package/dist/assets/Lqi-BUi3mqI9.js +0 -1
- package/dist/assets/Lqi-BUi3mqI9.js.br +0 -0
- package/dist/assets/NetworkPage-CwIfurAG.js.br +0 -0
- package/dist/assets/NumberField-C7vPZa-K.js.br +0 -0
- package/dist/assets/OtaPage-BWLHx0N1.js.br +0 -0
- package/dist/assets/PowerSource-DDICmrah.js.br +0 -0
- package/dist/assets/RawNetworkData-CO29F09S.js.br +0 -0
- package/dist/assets/RawNetworkMap-COMKS7ES.js.br +0 -0
- package/dist/assets/RecallRemove-Pj_lOD1S.js.br +0 -0
- package/dist/assets/RemoveDeviceModal-BwBAE1DK.js.br +0 -0
- package/dist/assets/Reporting-DQtJCIne.js.br +0 -0
- package/dist/assets/Scene-CZ25eal3.js.br +0 -0
- package/dist/assets/SelectField-Cjwi2kGD.js.br +0 -0
- package/dist/assets/Settings-DTtiIaMv.js.br +0 -0
- package/dist/assets/SettingsList-C-g0oLGN.js.br +0 -0
- package/dist/assets/SettingsPage-BwzbXtfF.js.br +0 -0
- package/dist/assets/State-BAmjdkUj.js +0 -1
- package/dist/assets/State-BAmjdkUj.js.br +0 -0
- package/dist/assets/Table-Ck6LUpsh.js.br +0 -0
- package/dist/assets/TextareaField-DXMOX-ZG.js.br +0 -0
- package/dist/assets/Tools-Df4YVKTu.js.br +0 -0
- package/dist/assets/TouchlinkPage-CAp3tBCH.js.br +0 -0
- package/dist/assets/VendorLink-CloJvn5I.js.br +0 -0
- package/dist/assets/_createCompounder-JFMc-LTw.js.br +0 -0
- package/dist/assets/format-CR8fnhJq.js.br +0 -0
- package/dist/assets/index-B0IjLmAW.css.br +0 -0
- package/dist/assets/index-BdHs_BcQ.js.br +0 -1
- package/dist/assets/index-C9teBVht.js.br +0 -0
- package/dist/assets/index-Dm1jDR4v.js.br +0 -0
- package/dist/assets/isArray-atDF8gHr.js.br +0 -0
- package/dist/assets/jszip.min-CHZdFArg.js.br +0 -0
- package/dist/assets/merge-qpjScXxg.js.br +0 -0
- package/dist/assets/snakeCase-DMy2ZOvg.js +0 -1
- package/dist/assets/snakeCase-DMy2ZOvg.js.br +0 -0
- package/dist/assets/useColumnCount-Blfbr5hF.js.br +0 -0
- package/dist/assets/useSearch-DWt9mTiA.js.br +0 -0
- package/dist/assets/useTable-DxvhHQuW.js.br +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bh as ua,bi as ma,bj as $,bk as E,bl as B,bm as g,bn as M,bo as pa,bp as P,bq as G,br as h,bs as ba,a$ as ga,bt as O,bu as I,bv as L,bw as U,bx as K,by as W,bz as x,bA as V,bB as ha,bC as ya,bD as wa,bE as v,bF as Q,a7 as X,bG as ka,bH as xa,v as va,bI as Ca,bJ as Ta,bK as l,bL as j,bM as s,bN as A,bO as C,bP as Sa,bQ as D,bR as R,bS as Fa,bT as Ha,bU as fa,bV as J,bW as Ba,K as Pa,bX as T,bY as u,bZ as Ia,b_ as La,b$ as Y,c0 as S,c1 as Wa,c2 as Aa,c3 as n,c4 as Z,c5 as aa,c6 as ea,W as o,c7 as f,c8 as Da,b1 as Ra,c9 as qa,ca as za,cb as Na,cc as ta,cd as $a,ce as Ea,cf as ra,cg as y,ch as p,ci as F,cj as q,ck as z,cl as N,cm as sa,cn as Ma,co as Ga,cp as oa,cq as b,cr as m,cs as Oa,ct as w,cu as Ua,cv as Ka,cw as d,cx as Va,cy as Qa,cz as _,cA as Xa,cB as ia,cC as ca,cD as ja,cE as H,cF as Ja,cG as na,cH as Ya,cI as i,bg as k,cJ as Za,b2 as ae,cK as la,cL as ee,cM as te,cN as re,cO as se,bc as da,bd as oe,be as _a,bf as ie,cP as ce}from"./index-
|
|
1
|
+
import{bh as ua,bi as ma,bj as $,bk as E,bl as B,bm as g,bn as M,bo as pa,bp as P,bq as G,br as h,bs as ba,a$ as ga,bt as O,bu as I,bv as L,bw as U,bx as K,by as W,bz as x,bA as V,bB as ha,bC as ya,bD as wa,bE as v,bF as Q,a7 as X,bG as ka,bH as xa,v as va,bI as Ca,bJ as Ta,bK as l,bL as j,bM as s,bN as A,bO as C,bP as Sa,bQ as D,bR as R,bS as Fa,bT as Ha,bU as fa,bV as J,bW as Ba,K as Pa,bX as T,bY as u,bZ as Ia,b_ as La,b$ as Y,c0 as S,c1 as Wa,c2 as Aa,c3 as n,c4 as Z,c5 as aa,c6 as ea,W as o,c7 as f,c8 as Da,b1 as Ra,c9 as qa,ca as za,cb as Na,cc as ta,cd as $a,ce as Ea,cf as ra,cg as y,ch as p,ci as F,cj as q,ck as z,cl as N,cm as sa,cn as Ma,co as Ga,cp as oa,cq as b,cr as m,cs as Oa,ct as w,cu as Ua,cv as Ka,cw as d,cx as Va,cy as Qa,cz as _,cA as Xa,cB as ia,cC as ca,cD as ja,cE as H,cF as Ja,cG as na,cH as Ya,cI as i,bg as k,cJ as Za,b2 as ae,cK as la,cL as ee,cM as te,cN as re,cO as se,bc as da,bd as oe,be as _a,bf as ie,cP as ce}from"./index-Cg_dwqpD.js";const ne={action:Za,battery_low:k,rms_voltage:i,over_voltage:i,under_voltage:i,voltage:i,overpower:i,overcurrent:i,current:i,reactive_energy:i,signed_power:i,power:i,energy:i,watt:i,frequency:Ya,power_factor:L,heating_stop:H,heat_protect:H,warm_floor:H,cold_water:na,frost:na,cool:Ja,hot_water:H,pressure:ja,humidity:ca,moisture:ca,soil_moisture:g,co2:_,eco2:_,pm25:_,pm10:_,voc:_,aqi:_,air_quality:_,hcho:ia,formaldehyd:ia,gas:_,smoke:Xa,carbon_monoxide:_,active_water_leak:d,water_leak:d,leakage:d,leak:d,rainwater:Qa,rain:Va,irrigation:g,watering:g,tank_level:d,tds:d,salinity:d,ph:d,orp:d,free_chlorine:d,flow:Ka,away_mode:Ua,mmwave:w,motionless:m,motion:w,movement:w,moving:w,radar:w,vibration:Oa,presence:m,occupancy:m,occupied:m,vacancy:m,vacant:m,human:m,people:m,keypad:b,child_lock:b,button_lock:b,lock_mode:b,hooks_lock:b,lock:b,pin_code:oa,master_pin:oa,rfid:Ga,permission:Ma,admin:sa,master:sa,garage_door:O,door_state:N,door:N,window_open:z,window:z,fixed_window_sash:z,relay:q,switch:q,toggle:q,electric_valve:F,valve:F,flow_switch:F,pump:F,led_disabled:y,led:y,backlight:y,brightness:p,luminance:p,illuminance:p,illuminance_lux:p,illuminance_raw:p,lux_value:p,white_brightness:p,light_mode:y,light:y,rgb_light:h,color:h,color_hs:h,color_temp:ra,color_temp_startup:ra,color_xy:h,gradient:Ea,orientation:$a,target_distance:l,distance:l,position:v,tilt:ta,direction:ta,axis:l,location_x:l,range:l,angle_x:Na,angle_y:za,angle_z:qa,approach_distance:Ra,side:Da,timestamp:o,countdown:o,timer:o,schedule:f,weekdays:f,monday:f,tuesday:f,wednesday:f,thursday:f,friday:f,saturday:f,sunday:f,week:f,dayTime:o,hour:o,minute:o,time_format:o,time:o,uptime:o,interval:o,duration:o,delay:o,holidays_schedule:ea,workdays_schedule:ea,gradient_scene:aa,scene:aa,individual_led_effect:Z,effect:Z,ringtone:n,melody:n,sound_volume:n,volume:n,buzzer:n,beep:n,handlesound:n,keysound:n,play_voice:n,pulse_command:n,squawk:n,siren_and_light:Aa,sound:Wa,humidity_alarm:u,sos:u,broadcast_alarm:u,linkage_alarm:u,alarm:u,alert_behaviour:u,warning:u,clear_fault:J,fault:S,error:S,breaker:S,trouble:S,supervision:Y,protection:Y,power_outage_count:La,tamper:Ia,temperature_alarm:u,factory_reset:T,restore_default:T,reset_switch:T,powerup_status:T,status:Pa,state:Ba,enabled:J,online:R,lifecycle:fa,test:Ha,trigger_count:Fa,wifi:R,rssi:R,transmit_power:D,radio_strength:D,rf_pairing:D,ip_address:Sa,update_frequency:C,refresh_rate:C,forceupdate:C,update:C,data_report:A,data:A,payload:A,config:s,settings_reset:s,settings:s,setup:s,adaptation_run_settings:s,adaptation:s,regulator_mode:s,operating_mode:s,operation_mode:s,manual_mode:s,automatic_mode:s,mode:s,options:s,advanced:s,algorithm:j,control_algorithm:j,calibration:l,calibrate:l,limits_calibration:l,set_upper_limit:l,limit:l,level_config:Ta,sensitivity:Ca,system_mode:va,identify:xa,heartbeat:X,breathing_rate:ka,pulse:X,strength:Q,force:Q,percent_state:v,percent:v,percentage:v,play:wa,pause:ya,stop:ha,restart:V,relaunch:V,serial_number:x,meter_id:x,sceneid:x,id:x,group:W,zone:W,zones:W,region:K,sub_region:K,contract:U,contract_type:U,production:L,producer:L,model:I,name:I,type:I,station:O,icon_application:ga,font_size:ba,theme:h,language:G,translation:G,learn_ir_code:P,spatial_learning:P,learning:P,fan_speed:pa,speed:M,supported_max_motor_speed:M,fertility:g,feed:g,replace_filter:B,filter_age:B,filter:B,radiation_dose_per_hour:$,radioactive_events_per_minute:E,radioactive_events:E,radiation:$,weather:ma},le=a=>{let e=k,t="";return a==null?[e,t]:(a>=85?(e=da,t="text-success"):a>=65?e=oe:a>=40?e=_a:a>=20?e=ie:(e=k,t="text-error"),[e,t])},fe=a=>{let e=k,t="";switch(a){case"high":{e=da,t="text-success";break}case"medium":{e=_a;break}case"low":{e=k,t="text-error";break}}return[e,t]},de=(a,e)=>{let t=la,r="";return a==null?[t,r]:(e==="°F"&&(a=(a-32)/1.8),a>=30?(t=ee,r="text-error"):a>=25?t=te:a>=20?t=re:a>=15?t=se:a<5&&(t=la,r="text-info"),[t,r])},_e=a=>{let e="";return a&&(a<75?e="text-error":a<125?e="text-warning":a>200&&(e="text-success")),[ua,e]},me=(a,e,t)=>{let r,c="";switch(a){case"linkquality":{[r,c]=_e(e);break}case"battery":{[r,c]=le(e);break}case"battery_state":{[r,c]=fe(e);break}case"battery_low":case"tamper":{e&&(c="text-error");break}case"cpu_temperature":case"device_temperature":case"temperature":case"local_temperature":{[r,c]=de(e,t);break}case"humidity":{e!=null&&e>60&&(c="text-info");break}case"contact":{r=e?N:ce,e||(c="text-primary");break}case"occupancy":case"presence":{e&&(c="text-warning");break}case"water_leak":case"vibration":{e&&(c="text-primary");break}default:{a.includes("cyclic")&&(r=fa);break}}return r?[r,c]:(r=ne[a],r?[r,c]:[ae,"opacity-0"])},pe=a=>`${a.type}-${a.name}-${a.label}-${a.property}-${a.access}-${a.category}-${a.endpoint}`;export{me as a,_e as b,pe as g};
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./HomePage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./HomePage-vHwZidUF.js","./envs-CSqIi4cL.js","./DevicesPage-x2h663Pn.js","./Availability-DZ-ZY3Ib.js","./RemoveDeviceModal-7DiwN3ck.js","./CheckboxField-D0wHGmUZ.js","./InputField-D9KJc30P.js","./DeviceImage-CHwoOcls.js","./index-BbB5QEu8.js","./Table-FUtHXzGb.js","./useTable-B3JMT6Iq.js","./DebouncedInput-E4d1IUlA.js","./LastSeen-F90Gw0JI.js","./format-BHlbVbae.js","./Lqi-OUPQk-S2.js","./index-BwjSpuUu.js","./DisplayValue-DcXMP9Gf.js","./VendorLink-D2p34CmW.js","./DevicePage-X_J0uLvv.js","./useSearch-DX_EYdJN.js","./Dashboard-NFKeHuZ2.js","./useColumnCount-B-PyuU0g.js","./DeviceCard-BQTqTIzx.js","./Feature-CgMuzQp3.js","./isObject--vsEa_js.js","./_createCompounder-Dcznv9Az.js","./isArray-uIIfUpwr.js","./PowerSource-BDEov_ab.js","./snakeCase-CrKq36vi.js","./DashboardFeatureWrapper-DAZ17bMu.js","./NetworkPage-B7Jry1o1.js","./SelectField-dfeWrxvV.js","./GroupsPage-BU0zPu08.js","./GroupPage-2bYv8nal.js","./OtaPage-DkIMQS5w.js","./TouchlinkPage-CNaEzWU8.js","./LogsPage-CiCW-D3e.js","./SettingsPage-D4PEYHCe.js","./FrontendSettingsPage-Cug7TKW7.js","./NumberField-Bz4sSMOV.js","./ContributePage-I_45rELu.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{Z as O4,a as C4,U as DP}from"./envs-CSqIi4cL.js";function jP(t,r){for(var n=0;n<r.length;n++){const i=r[n];if(typeof i!="string"&&!Array.isArray(i)){for(const o in i)if(o!=="default"&&!(o in t)){const l=Object.getOwnPropertyDescriptor(i,o);l&&Object.defineProperty(t,o,l.get?l:{enumerable:!0,get:()=>i[o]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&i(c)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();var Fo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var jv={exports:{}},cl={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react-jsx-runtime.production.js
|
|
@@ -63,7 +63,7 @@ Error generating stack: `+s.message+`
|
|
|
63
63
|
*/var EM="popstate";function sQ(t={}){function r(o,l){let{pathname:c="/",search:d="",hash:f=""}=Xi(o.location.hash.substring(1));return!c.startsWith("/")&&!c.startsWith(".")&&(c="/"+c),y1("",{pathname:c,search:d,hash:f},l.state&&l.state.usr||null,l.state&&l.state.key||"default")}function n(o,l){let c=o.document.querySelector("base"),d="";if(c&&c.getAttribute("href")){let f=o.location.href,v=f.indexOf("#");d=v===-1?f:f.slice(0,v)}return d+"#"+(typeof l=="string"?l:bl(l))}function i(o,l){$a(o.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(l)})`)}return cQ(r,n,i,t)}function rr(t,r){if(t===!1||t===null||typeof t>"u")throw new Error(r)}function $a(t,r){if(!t){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function lQ(){return Math.random().toString(36).substring(2,10)}function wM(t,r){return{usr:t.state,key:t.key,idx:r}}function y1(t,r,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof r=="string"?Xi(r):r,state:n,key:r&&r.key||i||lQ()}}function bl({pathname:t="/",search:r="",hash:n=""}){return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Xi(t){let r={};if(t){let n=t.indexOf("#");n>=0&&(r.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(r.search=t.substring(i),t=t.substring(0,i)),t&&(r.pathname=t)}return r}function cQ(t,r,n,i={}){let{window:o=document.defaultView,v5Compat:l=!1}=i,c=o.history,d="POP",f=null,v=p();v==null&&(v=0,c.replaceState({...c.state,idx:v},""));function p(){return(c.state||{idx:null}).idx}function g(){d="POP";let w=p(),E=w==null?null:w-v;v=w,f&&f({action:d,location:k.location,delta:E})}function h(w,E){d="PUSH";let S=y1(k.location,w,E);n&&n(S,w),v=p()+1;let T=wM(S,v),x=k.createHref(S);try{c.pushState(T,"",x)}catch(A){if(A instanceof DOMException&&A.name==="DataCloneError")throw A;o.location.assign(x)}l&&f&&f({action:d,location:k.location,delta:1})}function y(w,E){d="REPLACE";let S=y1(k.location,w,E);n&&n(S,w),v=p();let T=wM(S,v),x=k.createHref(S);c.replaceState(T,"",x),l&&f&&f({action:d,location:k.location,delta:0})}function b(w){return uQ(w)}let k={get action(){return d},get location(){return t(o,c)},listen(w){if(f)throw new Error("A history only accepts one active listener");return o.addEventListener(EM,g),f=w,()=>{o.removeEventListener(EM,g),f=null}},createHref(w){return r(o,w)},createURL:b,encodeLocation(w){let E=b(w);return{pathname:E.pathname,search:E.search,hash:E.hash}},push:h,replace:y,go(w){return c.go(w)}};return k}function uQ(t,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),rr(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:bl(t);return i=i.replace(/ $/,"%20"),!r&&i.startsWith("//")&&(i=n+i),new URL(i,n)}function ZL(t,r,n="/"){return dQ(t,r,n,!1)}function dQ(t,r,n,i){let o=typeof r=="string"?Xi(r):r,l=zn(o.pathname||"/",n);if(l==null)return null;let c=WL(t);fQ(c);let d=null;for(let f=0;d==null&&f<c.length;++f){let v=EQ(l);d=kQ(c[f],v,i)}return d}function WL(t,r=[],n=[],i="",o=!1){let l=(c,d,f=o,v)=>{let p={relativePath:v===void 0?c.path||"":v,caseSensitive:c.caseSensitive===!0,childrenIndex:d,route:c};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(i)&&f)return;rr(p.relativePath.startsWith(i),`Absolute route path "${p.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(i.length)}let g=xn([i,p.relativePath]),h=n.concat(p);c.children&&c.children.length>0&&(rr(c.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${g}".`),WL(c.children,r,h,g,f)),!(c.path==null&&!c.index)&&r.push({path:g,score:yQ(g,c.index),routesMeta:h})};return t.forEach((c,d)=>{if(c.path===""||!c.path?.includes("?"))l(c,d);else for(let f of YL(c.path))l(c,d,!0,f)}),r}function YL(t){let r=t.split("/");if(r.length===0)return[];let[n,...i]=r,o=n.endsWith("?"),l=n.replace(/\?$/,"");if(i.length===0)return o?[l,""]:[l];let c=YL(i.join("/")),d=[];return d.push(...c.map(f=>f===""?l:[l,f].join("/"))),o&&d.push(...c),d.map(f=>t.startsWith("/")&&f===""?"/":f)}function fQ(t){t.sort((r,n)=>r.score!==n.score?n.score-r.score:bQ(r.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var vQ=/^:[\w-]+$/,pQ=3,_Q=2,gQ=1,mQ=10,hQ=-2,TM=t=>t==="*";function yQ(t,r){let n=t.split("/"),i=n.length;return n.some(TM)&&(i+=hQ),r&&(i+=_Q),n.filter(o=>!TM(o)).reduce((o,l)=>o+(vQ.test(l)?pQ:l===""?gQ:mQ),i)}function bQ(t,r){return t.length===r.length&&t.slice(0,-1).every((i,o)=>i===r[o])?t[t.length-1]-r[r.length-1]:0}function kQ(t,r,n=!1){let{routesMeta:i}=t,o={},l="/",c=[];for(let d=0;d<i.length;++d){let f=i[d],v=d===i.length-1,p=l==="/"?r:r.slice(l.length)||"/",g=Lu({path:f.relativePath,caseSensitive:f.caseSensitive,end:v},p),h=f.route;if(!g&&v&&n&&!i[i.length-1].route.index&&(g=Lu({path:f.relativePath,caseSensitive:f.caseSensitive,end:!1},p)),!g)return null;Object.assign(o,g.params),c.push({params:o,pathname:xn([l,g.pathname]),pathnameBase:xQ(xn([l,g.pathnameBase])),route:h}),g.pathnameBase!=="/"&&(l=xn([l,g.pathnameBase]))}return c}function Lu(t,r){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[n,i]=SQ(t.path,t.caseSensitive,t.end),o=r.match(n);if(!o)return null;let l=o[0],c=l.replace(/(.)\/+$/,"$1"),d=o.slice(1);return{params:i.reduce((v,{paramName:p,isOptional:g},h)=>{if(p==="*"){let b=d[h]||"";c=l.slice(0,l.length-b.length).replace(/(.)\/+$/,"$1")}const y=d[h];return g&&!y?v[p]=void 0:v[p]=(y||"").replace(/%2F/g,"/"),v},{}),pathname:l,pathnameBase:c,pattern:t}}function SQ(t,r=!1,n=!0){$a(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],o="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,d,f)=>(i.push({paramName:d,isOptional:f!=null}),f?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),o+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":t!==""&&t!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,r?void 0:"i"),i]}function EQ(t){try{return t.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return $a(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),t}}function zn(t,r){if(r==="/")return t;if(!t.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}function wQ(t,r="/"){let{pathname:n,search:i="",hash:o=""}=typeof t=="string"?Xi(t):t;return{pathname:n?n.startsWith("/")?n:TQ(n,r):r,search:zQ(i),hash:RQ(o)}}function TQ(t,r){let n=r.replace(/\/+$/,"").split("/");return t.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function i1(t,r,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${r}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function AQ(t){return t.filter((r,n)=>n===0||r.route.path&&r.route.path.length>0)}function XL(t){let r=AQ(t);return r.map((n,i)=>i===r.length-1?n.pathname:n.pathnameBase)}function JL(t,r,n,i=!1){let o;typeof t=="string"?o=Xi(t):(o={...t},rr(!o.pathname||!o.pathname.includes("?"),i1("?","pathname","search",o)),rr(!o.pathname||!o.pathname.includes("#"),i1("#","pathname","hash",o)),rr(!o.search||!o.search.includes("#"),i1("#","search","hash",o)));let l=t===""||o.pathname==="",c=l?"/":o.pathname,d;if(c==null)d=n;else{let g=r.length-1;if(!i&&c.startsWith("..")){let h=c.split("/");for(;h[0]==="..";)h.shift(),g-=1;o.pathname=h.join("/")}d=g>=0?r[g]:"/"}let f=wQ(o,d),v=c&&c!=="/"&&c.endsWith("/"),p=(l||c===".")&&n.endsWith("/");return!f.pathname.endsWith("/")&&(v||p)&&(f.pathname+="/"),f}var xn=t=>t.join("/").replace(/\/\/+/g,"/"),xQ=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),zQ=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,RQ=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function OQ(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}var eN=["POST","PUT","PATCH","DELETE"];new Set(eN);var CQ=["GET",...eN];new Set(CQ);var ps=K.createContext(null);ps.displayName="DataRouter";var Ad=K.createContext(null);Ad.displayName="DataRouterState";K.createContext(!1);var tN=K.createContext({isTransitioning:!1});tN.displayName="ViewTransition";var MQ=K.createContext(new Map);MQ.displayName="Fetchers";var IQ=K.createContext(null);IQ.displayName="Await";var nn=K.createContext(null);nn.displayName="Navigation";var jl=K.createContext(null);jl.displayName="Location";var on=K.createContext({outlet:null,matches:[],isDataRoute:!1});on.displayName="Route";var C2=K.createContext(null);C2.displayName="RouteError";function qQ(t,{relative:r}={}){rr(Pl(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:i}=K.useContext(nn),{hash:o,pathname:l,search:c}=Bl(t,{relative:r}),d=l;return n!=="/"&&(d=l==="/"?n:xn([n,l])),i.createHref({pathname:d,search:c,hash:o})}function Pl(){return K.useContext(jl)!=null}function jn(){return rr(Pl(),"useLocation() may be used only in the context of a <Router> component."),K.useContext(jl).location}var rN="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function aN(t){K.useContext(nn).static||K.useLayoutEffect(t)}function LQ(){let{isDataRoute:t}=K.useContext(on);return t?KQ():NQ()}function NQ(){rr(Pl(),"useNavigate() may be used only in the context of a <Router> component.");let t=K.useContext(ps),{basename:r,navigator:n}=K.useContext(nn),{matches:i}=K.useContext(on),{pathname:o}=jn(),l=JSON.stringify(XL(i)),c=K.useRef(!1);return aN(()=>{c.current=!0}),K.useCallback((f,v={})=>{if($a(c.current,rN),!c.current)return;if(typeof f=="number"){n.go(f);return}let p=JL(f,JSON.parse(l),o,v.relative==="path");t==null&&r!=="/"&&(p.pathname=p.pathname==="/"?r:xn([r,p.pathname])),(v.replace?n.replace:n.push)(p,v.state,v)},[r,n,l,o,t])}K.createContext(null);function Que(){let{matches:t}=K.useContext(on),r=t[t.length-1];return r?r.params:{}}function Bl(t,{relative:r}={}){let{matches:n}=K.useContext(on),{pathname:i}=jn(),o=JSON.stringify(XL(n));return K.useMemo(()=>JL(t,JSON.parse(o),i,r==="path"),[t,o,i,r])}function DQ(t,r){return nN(t,r)}function nN(t,r,n,i,o){rr(Pl(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:l}=K.useContext(nn),{matches:c}=K.useContext(on),d=c[c.length-1],f=d?d.params:{},v=d?d.pathname:"/",p=d?d.pathnameBase:"/",g=d&&d.route;{let S=g&&g.path||"";iN(v,!g||S.endsWith("*")||S.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${v}" (under <Route path="${S}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
64
64
|
|
|
65
65
|
Please change the parent <Route path="${S}"> to <Route path="${S==="/"?"*":`${S}/*`}">.`)}let h=jn(),y;if(r){let S=typeof r=="string"?Xi(r):r;rr(p==="/"||S.pathname?.startsWith(p),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${S.pathname}" was given in the \`location\` prop.`),y=S}else y=h;let b=y.pathname||"/",k=b;if(p!=="/"){let S=p.replace(/^\//,"").split("/");k="/"+b.replace(/^\//,"").split("/").slice(S.length).join("/")}let w=ZL(t,{pathname:k});$a(g||w!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),$a(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let E=FQ(w&&w.map(S=>Object.assign({},S,{params:Object.assign({},f,S.params),pathname:xn([p,l.encodeLocation?l.encodeLocation(S.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:S.pathname]),pathnameBase:S.pathnameBase==="/"?p:xn([p,l.encodeLocation?l.encodeLocation(S.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:S.pathnameBase])})),c,n,i,o);return r&&E?K.createElement(jl.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...y},navigationType:"POP"}},E):E}function jQ(){let t=QQ(),r=OQ(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:i},l={padding:"2px 4px",backgroundColor:i},c=null;return console.error("Error handled by React Router default ErrorBoundary:",t),c=K.createElement(K.Fragment,null,K.createElement("p",null,"💿 Hey developer 👋"),K.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",K.createElement("code",{style:l},"ErrorBoundary")," or"," ",K.createElement("code",{style:l},"errorElement")," prop on your route.")),K.createElement(K.Fragment,null,K.createElement("h2",null,"Unexpected Application Error!"),K.createElement("h3",{style:{fontStyle:"italic"}},r),n?K.createElement("pre",{style:o},n):null,c)}var PQ=K.createElement(jQ,null),BQ=class extends K.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){this.props.unstable_onError?this.props.unstable_onError(t,r):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?K.createElement(on.Provider,{value:this.props.routeContext},K.createElement(C2.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function UQ({routeContext:t,match:r,children:n}){let i=K.useContext(ps);return i&&i.static&&i.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=r.route.id),K.createElement(on.Provider,{value:t},n)}function FQ(t,r=[],n=null,i=null,o=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(r.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let l=t,c=n?.errors;if(c!=null){let v=l.findIndex(p=>p.route.id&&c?.[p.route.id]!==void 0);rr(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(c).join(",")}`),l=l.slice(0,Math.min(l.length,v+1))}let d=!1,f=-1;if(n)for(let v=0;v<l.length;v++){let p=l[v];if((p.route.HydrateFallback||p.route.hydrateFallbackElement)&&(f=v),p.route.id){let{loaderData:g,errors:h}=n,y=p.route.loader&&!g.hasOwnProperty(p.route.id)&&(!h||h[p.route.id]===void 0);if(p.route.lazy||y){d=!0,f>=0?l=l.slice(0,f+1):l=[l[0]];break}}}return l.reduceRight((v,p,g)=>{let h,y=!1,b=null,k=null;n&&(h=c&&p.route.id?c[p.route.id]:void 0,b=p.route.errorElement||PQ,d&&(f<0&&g===0?(iN("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),y=!0,k=null):f===g&&(y=!0,k=p.route.hydrateFallbackElement||null)));let w=r.concat(l.slice(0,g+1)),E=()=>{let S;return h?S=b:y?S=k:p.route.Component?S=K.createElement(p.route.Component,null):p.route.element?S=p.route.element:S=v,K.createElement(UQ,{match:p,routeContext:{outlet:v,matches:w,isDataRoute:n!=null},children:S})};return n&&(p.route.ErrorBoundary||p.route.errorElement||g===0)?K.createElement(BQ,{location:n.location,revalidation:n.revalidation,component:b,error:h,children:E(),routeContext:{outlet:null,matches:w,isDataRoute:!0},unstable_onError:i}):E()},null)}function M2(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function $Q(t){let r=K.useContext(ps);return rr(r,M2(t)),r}function HQ(t){let r=K.useContext(Ad);return rr(r,M2(t)),r}function GQ(t){let r=K.useContext(on);return rr(r,M2(t)),r}function I2(t){let r=GQ(t),n=r.matches[r.matches.length-1];return rr(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function VQ(){return I2("useRouteId")}function QQ(){let t=K.useContext(C2),r=HQ("useRouteError"),n=I2("useRouteError");return t!==void 0?t:r.errors?.[n]}function KQ(){let{router:t}=$Q("useNavigate"),r=I2("useNavigate"),n=K.useRef(!1);return aN(()=>{n.current=!0}),K.useCallback(async(o,l={})=>{$a(n.current,rN),n.current&&(typeof o=="number"?t.navigate(o):await t.navigate(o,{fromRouteId:r,...l}))},[t,r])}var AM={};function iN(t,r,n){!r&&!AM[t]&&(AM[t]=!0,$a(!1,n))}K.memo(ZQ);function ZQ({routes:t,future:r,state:n,unstable_onError:i}){return nN(t,void 0,n,i,r)}function Kr(t){rr(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function WQ({basename:t="/",children:r=null,location:n,navigationType:i="POP",navigator:o,static:l=!1}){rr(!Pl(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let c=t.replace(/^\/*/,"/"),d=K.useMemo(()=>({basename:c,navigator:o,static:l,future:{}}),[c,o,l]);typeof n=="string"&&(n=Xi(n));let{pathname:f="/",search:v="",hash:p="",state:g=null,key:h="default"}=n,y=K.useMemo(()=>{let b=zn(f,c);return b==null?null:{location:{pathname:b,search:v,hash:p,state:g,key:h},navigationType:i}},[c,f,v,p,g,h,i]);return $a(y!=null,`<Router basename="${c}"> is not able to match the URL "${f}${v}${p}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:K.createElement(nn.Provider,{value:d},K.createElement(jl.Provider,{children:r,value:y}))}function YQ({children:t,location:r}){return DQ(b1(t),r)}function b1(t,r=[]){let n=[];return K.Children.forEach(t,(i,o)=>{if(!K.isValidElement(i))return;let l=[...r,o];if(i.type===K.Fragment){n.push.apply(n,b1(i.props.children,l));return}rr(i.type===Kr,`[${typeof i.type=="string"?i.type:i.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),rr(!i.props.index||!i.props.children,"An index route cannot have child routes.");let c={id:i.props.id||l.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,middleware:i.props.middleware,loader:i.props.loader,action:i.props.action,hydrateFallbackElement:i.props.hydrateFallbackElement,HydrateFallback:i.props.HydrateFallback,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.hasErrorBoundary===!0||i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(c.children=b1(i.props.children,l)),n.push(c)}),n}var xu="get",zu="application/x-www-form-urlencoded";function xd(t){return t!=null&&typeof t.tagName=="string"}function XQ(t){return xd(t)&&t.tagName.toLowerCase()==="button"}function JQ(t){return xd(t)&&t.tagName.toLowerCase()==="form"}function eK(t){return xd(t)&&t.tagName.toLowerCase()==="input"}function tK(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function rK(t,r){return t.button===0&&(!r||r==="_self")&&!tK(t)}var eu=null;function aK(){if(eu===null)try{new FormData(document.createElement("form"),0),eu=!1}catch{eu=!0}return eu}var nK=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function o1(t){return t!=null&&!nK.has(t)?($a(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${zu}"`),null):t}function iK(t,r){let n,i,o,l,c;if(JQ(t)){let d=t.getAttribute("action");i=d?zn(d,r):null,n=t.getAttribute("method")||xu,o=o1(t.getAttribute("enctype"))||zu,l=new FormData(t)}else if(XQ(t)||eK(t)&&(t.type==="submit"||t.type==="image")){let d=t.form;if(d==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let f=t.getAttribute("formaction")||d.getAttribute("action");if(i=f?zn(f,r):null,n=t.getAttribute("formmethod")||d.getAttribute("method")||xu,o=o1(t.getAttribute("formenctype"))||o1(d.getAttribute("enctype"))||zu,l=new FormData(d,t),!aK()){let{name:v,type:p,value:g}=t;if(p==="image"){let h=v?`${v}.`:"";l.append(`${h}x`,"0"),l.append(`${h}y`,"0")}else v&&l.append(v,g)}}else{if(xd(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=xu,i=null,o=zu,c=t}return l&&o==="text/plain"&&(c=l,l=void 0),{action:i,method:n.toLowerCase(),encType:o,formData:l,body:c}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function q2(t,r){if(t===!1||t===null||typeof t>"u")throw new Error(r)}function oK(t,r,n){let i=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return i.pathname==="/"?i.pathname=`_root.${n}`:r&&zn(i.pathname,r)==="/"?i.pathname=`${r.replace(/\/$/,"")}/_root.${n}`:i.pathname=`${i.pathname.replace(/\/$/,"")}.${n}`,i}async function sK(t,r){if(t.id in r)return r[t.id];try{let n=await import(t.module);return r[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function lK(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function cK(t,r,n){let i=await Promise.all(t.map(async o=>{let l=r.routes[o.route.id];if(l){let c=await sK(l,n);return c.links?c.links():[]}return[]}));return vK(i.flat(1).filter(lK).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function xM(t,r,n,i,o,l){let c=(f,v)=>n[v]?f.route.id!==n[v].route.id:!0,d=(f,v)=>n[v].pathname!==f.pathname||n[v].route.path?.endsWith("*")&&n[v].params["*"]!==f.params["*"];return l==="assets"?r.filter((f,v)=>c(f,v)||d(f,v)):l==="data"?r.filter((f,v)=>{let p=i.routes[f.route.id];if(!p||!p.hasLoader)return!1;if(c(f,v)||d(f,v))return!0;if(f.route.shouldRevalidate){let g=f.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(t,window.origin),nextParams:f.params,defaultShouldRevalidate:!0});if(typeof g=="boolean")return g}return!0}):[]}function uK(t,r,{includeHydrateFallback:n}={}){return dK(t.map(i=>{let o=r.routes[i.route.id];if(!o)return[];let l=[o.module];return o.clientActionModule&&(l=l.concat(o.clientActionModule)),o.clientLoaderModule&&(l=l.concat(o.clientLoaderModule)),n&&o.hydrateFallbackModule&&(l=l.concat(o.hydrateFallbackModule)),o.imports&&(l=l.concat(o.imports)),l}).flat(1))}function dK(t){return[...new Set(t)]}function fK(t){let r={},n=Object.keys(t).sort();for(let i of n)r[i]=t[i];return r}function vK(t,r){let n=new Set;return new Set(r),t.reduce((i,o)=>{let l=JSON.stringify(fK(o));return n.has(l)||(n.add(l),i.push({key:l,link:o})),i},[])}function oN(){let t=K.useContext(ps);return q2(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function pK(){let t=K.useContext(Ad);return q2(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var L2=K.createContext(void 0);L2.displayName="FrameworkContext";function sN(){let t=K.useContext(L2);return q2(t,"You must render this element inside a <HydratedRouter> element"),t}function _K(t,r){let n=K.useContext(L2),[i,o]=K.useState(!1),[l,c]=K.useState(!1),{onFocus:d,onBlur:f,onMouseEnter:v,onMouseLeave:p,onTouchStart:g}=r,h=K.useRef(null);K.useEffect(()=>{if(t==="render"&&c(!0),t==="viewport"){let k=E=>{E.forEach(S=>{c(S.isIntersecting)})},w=new IntersectionObserver(k,{threshold:.5});return h.current&&w.observe(h.current),()=>{w.disconnect()}}},[t]),K.useEffect(()=>{if(i){let k=setTimeout(()=>{c(!0)},100);return()=>{clearTimeout(k)}}},[i]);let y=()=>{o(!0)},b=()=>{o(!1),c(!1)};return n?t!=="intent"?[l,h,{}]:[l,h,{onFocus:fl(d,y),onBlur:fl(f,b),onMouseEnter:fl(v,y),onMouseLeave:fl(p,b),onTouchStart:fl(g,y)}]:[!1,h,{}]}function fl(t,r){return n=>{t&&t(n),n.defaultPrevented||r(n)}}function gK({page:t,...r}){let{router:n}=oN(),i=K.useMemo(()=>ZL(n.routes,t,n.basename),[n.routes,t,n.basename]);return i?K.createElement(hK,{page:t,matches:i,...r}):null}function mK(t){let{manifest:r,routeModules:n}=sN(),[i,o]=K.useState([]);return K.useEffect(()=>{let l=!1;return cK(t,r,n).then(c=>{l||o(c)}),()=>{l=!0}},[t,r,n]),i}function hK({page:t,matches:r,...n}){let i=jn(),{manifest:o,routeModules:l}=sN(),{basename:c}=oN(),{loaderData:d,matches:f}=pK(),v=K.useMemo(()=>xM(t,r,f,o,i,"data"),[t,r,f,o,i]),p=K.useMemo(()=>xM(t,r,f,o,i,"assets"),[t,r,f,o,i]),g=K.useMemo(()=>{if(t===i.pathname+i.search+i.hash)return[];let b=new Set,k=!1;if(r.forEach(E=>{let S=o.routes[E.route.id];!S||!S.hasLoader||(!v.some(T=>T.route.id===E.route.id)&&E.route.id in d&&l[E.route.id]?.shouldRevalidate||S.hasClientLoader?k=!0:b.add(E.route.id))}),b.size===0)return[];let w=oK(t,c,"data");return k&&b.size>0&&w.searchParams.set("_routes",r.filter(E=>b.has(E.route.id)).map(E=>E.route.id).join(",")),[w.pathname+w.search]},[c,d,i,o,v,r,t,l]),h=K.useMemo(()=>uK(p,o),[p,o]),y=mK(p);return K.createElement(K.Fragment,null,g.map(b=>K.createElement("link",{key:b,rel:"prefetch",as:"fetch",href:b,...n})),h.map(b=>K.createElement("link",{key:b,rel:"modulepreload",href:b,...n})),y.map(({key:b,link:k})=>K.createElement("link",{key:b,nonce:n.nonce,...k})))}function yK(...t){return r=>{t.forEach(n=>{typeof n=="function"?n(r):n!=null&&(n.current=r)})}}var lN=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{lN&&(window.__reactRouterVersion="7.9.3")}catch{}function bK({basename:t,children:r,window:n}){let i=K.useRef();i.current==null&&(i.current=sQ({window:n,v5Compat:!0}));let o=i.current,[l,c]=K.useState({action:o.action,location:o.location}),d=K.useCallback(f=>{K.startTransition(()=>c(f))},[c]);return K.useLayoutEffect(()=>o.listen(d),[o,d]),K.createElement(WQ,{basename:t,children:r,location:l.location,navigationType:l.action,navigator:o})}var cN=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,N2=K.forwardRef(function({onClick:r,discover:n="render",prefetch:i="none",relative:o,reloadDocument:l,replace:c,state:d,target:f,to:v,preventScrollReset:p,viewTransition:g,...h},y){let{basename:b}=K.useContext(nn),k=typeof v=="string"&&cN.test(v),w,E=!1;if(typeof v=="string"&&k&&(w=v,lN))try{let q=new URL(window.location.href),N=v.startsWith("//")?new URL(q.protocol+v):new URL(v),j=zn(N.pathname,b);N.origin===q.origin&&j!=null?v=j+N.search+N.hash:E=!0}catch{$a(!1,`<Link to="${v}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let S=qQ(v,{relative:o}),[T,x,A]=_K(i,h),O=EK(v,{replace:c,state:d,target:f,preventScrollReset:p,relative:o,viewTransition:g});function M(q){r&&r(q),q.defaultPrevented||O(q)}let I=K.createElement("a",{...h,...A,href:w||S,onClick:E||l?r:M,ref:yK(y,x),target:f,"data-discover":!k&&n==="render"?"true":void 0});return T&&!k?K.createElement(K.Fragment,null,I,K.createElement(gK,{page:S})):I});N2.displayName="Link";var k1=K.forwardRef(function({"aria-current":r="page",caseSensitive:n=!1,className:i="",end:o=!1,style:l,to:c,viewTransition:d,children:f,...v},p){let g=Bl(c,{relative:v.relative}),h=jn(),y=K.useContext(Ad),{navigator:b,basename:k}=K.useContext(nn),w=y!=null&&zK(g)&&d===!0,E=b.encodeLocation?b.encodeLocation(g).pathname:g.pathname,S=h.pathname,T=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;n||(S=S.toLowerCase(),T=T?T.toLowerCase():null,E=E.toLowerCase()),T&&k&&(T=zn(T,k)||T);const x=E!=="/"&&E.endsWith("/")?E.length-1:E.length;let A=S===E||!o&&S.startsWith(E)&&S.charAt(x)==="/",O=T!=null&&(T===E||!o&&T.startsWith(E)&&T.charAt(E.length)==="/"),M={isActive:A,isPending:O,isTransitioning:w},I=A?r:void 0,q;typeof i=="function"?q=i(M):q=[i,A?"active":null,O?"pending":null,w?"transitioning":null].filter(Boolean).join(" ");let N=typeof l=="function"?l(M):l;return K.createElement(N2,{...v,"aria-current":I,className:q,ref:p,style:N,to:c,viewTransition:d},typeof f=="function"?f(M):f)});k1.displayName="NavLink";var kK=K.forwardRef(({discover:t="render",fetcherKey:r,navigate:n,reloadDocument:i,replace:o,state:l,method:c=xu,action:d,onSubmit:f,relative:v,preventScrollReset:p,viewTransition:g,...h},y)=>{let b=AK(),k=xK(d,{relative:v}),w=c.toLowerCase()==="get"?"get":"post",E=typeof d=="string"&&cN.test(d),S=T=>{if(f&&f(T),T.defaultPrevented)return;T.preventDefault();let x=T.nativeEvent.submitter,A=x?.getAttribute("formmethod")||c;b(x||T.currentTarget,{fetcherKey:r,method:A,navigate:n,replace:o,state:l,relative:v,preventScrollReset:p,viewTransition:g})};return K.createElement("form",{ref:y,method:w,action:k,onSubmit:i?f:S,...h,"data-discover":!E&&t==="render"?"true":void 0})});kK.displayName="Form";function SK(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function uN(t){let r=K.useContext(ps);return rr(r,SK(t)),r}function EK(t,{target:r,replace:n,state:i,preventScrollReset:o,relative:l,viewTransition:c}={}){let d=LQ(),f=jn(),v=Bl(t,{relative:l});return K.useCallback(p=>{if(rK(p,r)){p.preventDefault();let g=n!==void 0?n:bl(f)===bl(v);d(t,{replace:g,state:i,preventScrollReset:o,relative:l,viewTransition:c})}},[f,d,v,n,i,r,t,o,l,c])}var wK=0,TK=()=>`__${String(++wK)}__`;function AK(){let{router:t}=uN("useSubmit"),{basename:r}=K.useContext(nn),n=VQ();return K.useCallback(async(i,o={})=>{let{action:l,method:c,encType:d,formData:f,body:v}=iK(i,r);if(o.navigate===!1){let p=o.fetcherKey||TK();await t.fetch(p,n,o.action||l,{preventScrollReset:o.preventScrollReset,formData:f,body:v,formMethod:o.method||c,formEncType:o.encType||d,flushSync:o.flushSync})}else await t.navigate(o.action||l,{preventScrollReset:o.preventScrollReset,formData:f,body:v,formMethod:o.method||c,formEncType:o.encType||d,replace:o.replace,state:o.state,fromRouteId:n,flushSync:o.flushSync,viewTransition:o.viewTransition})},[t,r,n])}function xK(t,{relative:r}={}){let{basename:n}=K.useContext(nn),i=K.useContext(on);rr(i,"useFormAction must be used inside a RouteContext");let[o]=i.matches.slice(-1),l={...Bl(t||".",{relative:r})},c=jn();if(t==null){l.search=c.search;let d=new URLSearchParams(l.search),f=d.getAll("index");if(f.some(p=>p==="")){d.delete("index"),f.filter(g=>g).forEach(g=>d.append("index",g));let p=d.toString();l.search=p?`?${p}`:""}}return(!t||t===".")&&o.route.index&&(l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(l.pathname=l.pathname==="/"?n:xn([n,l.pathname])),bl(l)}function zK(t,{relative:r}={}){let n=K.useContext(tN);rr(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=uN("useViewTransitionState"),o=Bl(t,{relative:r});if(!n.isTransitioning)return!1;let l=zn(n.currentLocation.pathname,i)||n.currentLocation.pathname,c=zn(n.nextLocation.pathname,i)||n.nextLocation.pathname;return Lu(o.pathname,c)!=null||Lu(o.pathname,l)!=null}var D2=jL();const Kue=Vt(D2),zM=t=>Symbol.iterator in t,RM=t=>"entries"in t,OM=(t,r)=>{const n=t instanceof Map?t:new Map(t.entries()),i=r instanceof Map?r:new Map(r.entries());if(n.size!==i.size)return!1;for(const[o,l]of n)if(!i.has(o)||!Object.is(l,i.get(o)))return!1;return!0},RK=(t,r)=>{const n=t[Symbol.iterator](),i=r[Symbol.iterator]();let o=n.next(),l=i.next();for(;!o.done&&!l.done;){if(!Object.is(o.value,l.value))return!1;o=n.next(),l=i.next()}return!!o.done&&!!l.done};function OK(t,r){return Object.is(t,r)?!0:typeof t!="object"||t===null||typeof r!="object"||r===null||Object.getPrototypeOf(t)!==Object.getPrototypeOf(r)?!1:zM(t)&&zM(r)?RM(t)&&RM(r)?OM(t,r):RK(t,r):OM({entries:()=>Object.entries(t)},{entries:()=>Object.entries(r)})}function Qo(t){const r=sr.useRef(void 0);return n=>{const i=t(n);return OK(r.current,i)?r.current:r.current=i}}const CK=()=>{const{pathname:t}=jn();return K.useEffect(()=>{window.scrollTo(0,0)},[t]),null};var Ru={exports:{}};/*! store2 - v2.14.4 - 2024-12-26
|
|
66
|
-
* Copyright (c) 2024 Nathan Bubna; Licensed MIT */var s1=Ru.exports,CM;function MK(){return CM||(CM=1,(function(t){(function(r,n){var i={version:"2.14.4",areas:{},apis:{},nsdelim:".",inherit:function(l,c){for(var d in l)c.hasOwnProperty(d)||Object.defineProperty(c,d,Object.getOwnPropertyDescriptor(l,d));return c},stringify:function(l,c){return l===void 0||typeof l=="function"?l+"":JSON.stringify(l,c||i.replace)},parse:function(l,c){try{return JSON.parse(l,c||i.revive)}catch{return l}},fn:function(l,c){i.storeAPI[l]=c;for(var d in i.apis)i.apis[d][l]=c},get:function(l,c){return l.getItem(c)},set:function(l,c,d){l.setItem(c,d)},remove:function(l,c){l.removeItem(c)},key:function(l,c){return l.key(c)},length:function(l){return l.length},clear:function(l){l.clear()},Store:function(l,c,d){var f=i.inherit(i.storeAPI,function(p,g,h){return arguments.length===0?f.getAll():typeof g=="function"?f.transact(p,g,h):g!==void 0?f.set(p,g,h):typeof p=="string"||typeof p=="number"?f.get(p):typeof p=="function"?f.each(p):p?f.setAll(p,g):f.clear()});f._id=l;try{var v="__store2_test";c.setItem(v,"ok"),f._area=c,c.removeItem(v)}catch{f._area=i.storage("fake")}return f._ns=d||"",i.areas[l]||(i.areas[l]=f._area),i.apis[f._ns+f._id]||(i.apis[f._ns+f._id]=f),f},storeAPI:{area:function(l,c){var d=this[l];return(!d||!d.area)&&(d=i.Store(l,c,this._ns),this[l]||(this[l]=d)),d},namespace:function(l,c,d){if(d=d||this._delim||i.nsdelim,!l)return this._ns?this._ns.substring(0,this._ns.length-d.length):"";var f=l,v=this[f];if((!v||!v.namespace)&&(v=i.Store(this._id,this._area,this._ns+f+d),v._delim=d,this[f]||(this[f]=v),!c))for(var p in i.areas)v.area(p,i.areas[p]);return v},isFake:function(l){return l?(this._real=this._area,this._area=i.storage("fake")):l===!1&&(this._area=this._real||this._area),this._area.name==="fake"},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(l){return this._area.has?this._area.has(this._in(l)):this._in(l)in this._area},size:function(){return this.keys().length},each:function(l,c){for(var d=0,f=i.length(this._area);d<f;d++){var v=this._out(i.key(this._area,d));if(v!==void 0&&l.call(this,v,this.get(v),c)===!1)break;f>i.length(this._area)&&(f--,d--)}return c||this},keys:function(l){return this.each(function(c,d,f){f.push(c)},l||[])},get:function(l,c){var d=i.get(this._area,this._in(l)),f;return typeof c=="function"&&(f=c,c=null),d!==null?i.parse(d,f):c??d},getAll:function(l){return this.each(function(c,d,f){f[c]=d},l||{})},transact:function(l,c,d){var f=this.get(l,d),v=c(f);return this.set(l,v===void 0?f:v),this},set:function(l,c,d){var f=this.get(l),v;return f!=null&&d===!1?c:(typeof d=="function"&&(v=d,d=void 0),i.set(this._area,this._in(l),i.stringify(c,v),d)||f)},setAll:function(l,c){var d,f;for(var v in l)f=l[v],this.set(v,f,c)!==f&&(d=!0);return d},add:function(l,c,d){var f=this.get(l);if(f instanceof Array)c=f.concat(c);else if(f!==null){var v=typeof f;if(v===typeof c&&v==="object"){for(var p in c)f[p]=c[p];c=f}else c=f+c}return i.set(this._area,this._in(l),i.stringify(c,d)),c},remove:function(l,c){var d=this.get(l,c);return i.remove(this._area,this._in(l)),d},clear:function(){return this._ns?this.each(function(l){i.remove(this._area,this._in(l))},1):i.clear(this._area),this},clearAll:function(){var l=this._area;for(var c in i.areas)i.areas.hasOwnProperty(c)&&(this._area=i.areas[c],this.clear());return this._area=l,this},_in:function(l){return typeof l!="string"&&(l=i.stringify(l)),this._ns?this._ns+l:l},_out:function(l){return this._ns?l&&l.indexOf(this._ns)===0?l.substring(this._ns.length):void 0:l}},storage:function(l){return i.inherit(i.storageAPI,{items:{},name:l})},storageAPI:{length:0,has:function(l){return this.items.hasOwnProperty(l)},key:function(l){var c=0;for(var d in this.items)if(this.has(d)&&l===c++)return d},setItem:function(l,c){this.has(l)||this.length++,this.items[l]=c},removeItem:function(l){this.has(l)&&(delete this.items[l],this.length--)},getItem:function(l){return this.has(l)?this.items[l]:null},clear:function(){for(var l in this.items)this.removeItem(l)}}},o=i.Store("local",(function(){try{return localStorage}catch{}})());o.local=o,o._=i,o.area("session",(function(){try{return sessionStorage}catch{}})()),o.area("page",i.storage("page")),typeof n=="function"&&n.amd!==void 0?n("store2",[],function(){return o}):t.exports?t.exports=o:(r.store&&(i.conflict=r.store),r.store=o)})(s1,s1&&s1.define)})(Ru)),Ru.exports}var IK=MK();const ta=Vt(IK),dN="/availability",Zue=["debug","info","warning","error"],Wue=[100,200,500,1e3],qK={error:"text-error",warning:"text-warning",info:"text-info",debug:"opacity-50"},LK=20,MM=["MQTT publish"," COUNTERS]"],NK={error:"text-error",ok:"text-success"},DK=/^z2m: Publish '(set|get)' '(.+)' to '(.+)' failed.*\((.*)\)'$/,jK={[WebSocket.CONNECTING]:["CONNECTING","text-info"],[WebSocket.OPEN]:["OPEN","text-success"],[WebSocket.CLOSING]:["CLOSING","text-warning"],[WebSocket.CLOSED]:["CLOSED","text-error"]},Yue="https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html",Xue="https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#generic-device-options",Jue="https://www.zigbee2mqtt.io/guide/usage/groups.html#configuration",ede="https://www.zigbee2mqtt.io/guide/configuration/",tde="https://www.zigbee2mqtt.io/guide/usage/mqtt_topics_and_messages.html",rde="https://www.zigbee2mqtt.io/advanced/more/external_converters.html",ade="https://github.com/Nerivec/z2m-external-converter-dev",nde="https://www.zigbee2mqtt.io/advanced/more/external_extensions.html",ide="https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",ode="https://www.digitalocean.com/community/tutorials/load-average-in-linux",sde="https://mqtt.org/mqtt-specification/",lde="https://nodejs.org/en/about/previous-releases",PK="https://github.com/Nerivec/zigbee2mqtt-windfront/issues/new",cde="https://github.com/Koenkk/zigbee2mqtt/issues/new",ude="https://github.com/Koenkk/zigbee-herdsman-converters/issues/new",dde="https://github.com/Koenkk/zigbee2mqtt/commit/",fde="https://github.com/Nerivec/zigbee2mqtt-windfront/releases/tag/v",vde="https://github.com/Koenkk/zigbee2mqtt/releases/tag/",pde="https://github.com/Koenkk/zigbee-herdsman-converters/releases/tag/v",_de="https://github.com/Koenkk/zigbee-herdsman/releases/tag/v",gde="https://github.com/Nerivec/zigbee2mqtt-windfront/issues/199",mde="https://github.com/Nerivec/zigbee2mqtt-windfront/blob/main/CONTRIBUTING.md",hde="https://github.com/Koenkk/zigbee2mqtt/blob/master/CONTRIBUTING.md",yde="https://github.com/Koenkk/zigbee-herdsman-converters?tab=readme-ov-file#contributing",bde="https://github.com/Koenkk/zigbee-herdsman/wiki";var BK=(t=>(t.Pending="PENDING",t.InProgress="IN_PROGRESS",t.Successful="SUCCESSFUL",t.Failed="FAILED",t))(BK||{});const _l="z2m-token",IM="z2m-auth",qM="theme",LM="windfront-sidebar-collapsed",kde="homepage",UK="permit-join-time",FK="max-on-screen-notifications",Sde="hide-static-info-alerts",Ede="table-filters",wde="table-columns",Tde="table-sorting",Ade="network-raw-display-type",xde="network-map-config",$K="multi-instance-show-source-name",zde="i18nextLng",NM=t=>{let r;const n=new Set,i=(v,p)=>{const g=typeof v=="function"?v(r):v;if(!Object.is(g,r)){const h=r;r=p??(typeof g!="object"||g===null)?g:Object.assign({},r,g),n.forEach(y=>y(r,h))}},o=()=>r,d={setState:i,getState:o,getInitialState:()=>f,subscribe:v=>(n.add(v),()=>n.delete(v))},f=r=t(i,o,d);return d},HK=(t=>t?NM(t):NM),GK=t=>t;function VK(t,r=GK){const n=sr.useSyncExternalStore(t.subscribe,sr.useCallback(()=>r(t.getState()),[t,r]),sr.useCallback(()=>r(t.getInitialState()),[t,r]));return sr.useDebugValue(n),n}const DM=t=>{const r=HK(t),n=i=>VK(r,i);return Object.assign(n,r),n},QK=(t=>t?DM(t):DM),KK=t=>!(t.category==="config"||t.type==="list"||t.name&&(t.name==="linkquality"||t.name==="battery"||t.name==="voltage"));var Ou=(t=>(t[t.STATE=1]="STATE",t[t.SET=2]="SET",t[t.GET=4]="GET",t[t.STATE_SET=3]="STATE_SET",t[t.STATE_GET=5]="STATE_GET",t[t.ALL=7]="ALL",t))(Ou||{}),Cu={exports:{}},ZK=Cu.exports,jM;function WK(){return jM||(jM=1,(function(t,r){(function(n,i){i()})(ZK,function(){function n(v,p){return typeof p>"u"?p={autoBom:!1}:typeof p!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),p={autoBom:!p}),p.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(v.type)?new Blob(["\uFEFF",v],{type:v.type}):v}function i(v,p,g){var h=new XMLHttpRequest;h.open("GET",v),h.responseType="blob",h.onload=function(){f(h.response,p,g)},h.onerror=function(){console.error("could not download file")},h.send()}function o(v){var p=new XMLHttpRequest;p.open("HEAD",v,!1);try{p.send()}catch{}return 200<=p.status&&299>=p.status}function l(v){try{v.dispatchEvent(new MouseEvent("click"))}catch{var p=document.createEvent("MouseEvents");p.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),v.dispatchEvent(p)}}var c=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof Fo=="object"&&Fo.global===Fo?Fo:void 0,d=c.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),f=c.saveAs||(typeof window!="object"||window!==c?function(){}:"download"in HTMLAnchorElement.prototype&&!d?function(v,p,g){var h=c.URL||c.webkitURL,y=document.createElement("a");p=p||v.name||"download",y.download=p,y.rel="noopener",typeof v=="string"?(y.href=v,y.origin===location.origin?l(y):o(y.href)?i(v,p,g):l(y,y.target="_blank")):(y.href=h.createObjectURL(v),setTimeout(function(){h.revokeObjectURL(y.href)},4e4),setTimeout(function(){l(y)},0))}:"msSaveOrOpenBlob"in navigator?function(v,p,g){if(p=p||v.name||"download",typeof v!="string")navigator.msSaveOrOpenBlob(n(v,g),p);else if(o(v))i(v,p,g);else{var h=document.createElement("a");h.href=v,h.target="_blank",setTimeout(function(){l(h)})}}:function(v,p,g,h){if(h=h||open("","_blank"),h&&(h.document.title=h.document.body.innerText="downloading..."),typeof v=="string")return i(v,p,g);var y=v.type==="application/octet-stream",b=/constructor/i.test(c.HTMLElement)||c.safari,k=/CriOS\/[\d]+/.test(navigator.userAgent);if((k||y&&b||d)&&typeof FileReader<"u"){var w=new FileReader;w.onloadend=function(){var T=w.result;T=k?T:T.replace(/^data:[^;]*;/,"data:attachment/file;"),h?h.location.href=T:location=T,h=null},w.readAsDataURL(v)}else{var E=c.URL||c.webkitURL,S=E.createObjectURL(v);h?h.location=S:location.href=S,h=null,setTimeout(function(){E.revokeObjectURL(S)},4e4)}});c.saveAs=f.saveAs=f,t.exports=f})})(Cu)),Cu.exports}var fN=WK();const Rde=Vt(fN),Ode=(t,r,n)=>{const[i,o]=n,[l,c]=r;return(t-l)/(c-l)*(o-i)+i},YK=t=>Math.random().toString(36).slice(2,2+t),Cde=t=>{for(const r in t)return r},Mde=t=>{if(!t)return[0,!0];const r=Number(t);return Number.isNaN(r)||!pa[r]?[0,!1]:[r,!0]},PM=t=>JSON.stringify(t,(r,n)=>n===void 0?null:n),Ide=(t,r)=>{if(t)switch(r){case"ISO_8601":case"ISO_8601_local":return Date.parse(t);case"epoch":return t;case"disable":return;default:console.error(`Unknown last_seen type ${r}`);return}},qde=(t,r=4)=>`0x${("0".repeat(r)+t.toString(16)).slice(-1*r).toUpperCase()}`,Lde=t=>t?t.replace(/:|\s|\//g,"-"):"NA";function vN(t){return!("members"in t)}const Nde=t=>{const r=new Set;if(!t)return r;if(vN(t)){for(const n in t.endpoints)r.add(Number.parseInt(n,10));if(t.definition?.exposes)for(const n of t.definition.exposes)n.endpoint&&r.add(n.endpoint)}else for(const n of t.members)r.add(n.endpoint);return r},S1=(t,r)=>{if(r(t)){if("features"in t&&t.features&&t.features.length>0){const n=[];for(const i of t.features){const o=S1(i,r);o&&!n.some(l=>l.property===o.property)&&n.push(o)}return{...t,features:n}}return{...t}}},XK=async(t,r)=>{const{default:n}=await na(async()=>{const{default:l}=await import("./jszip.min-CHZdFArg.js").then(c=>c.j);return{default:l}},[],import.meta.url),i=new n;i.file(r,JSON.stringify(t,null,4),{compression:"DEFLATE"});const o=await i.generateAsync({type:"blob"});fN.saveAs(o,`${r}.zip`)};function Dde(t){if(vN(t)){const r=[];for(const n in t.endpoints){const i=t.endpoints[n];for(const o of i.scenes)r.push({...o})}return r}return t.scenes}const JK=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_","_scene"],eZ=["effect","power_on_behavior","gradient"],tZ=["state","color_temp","color","transition","brightness"],rZ=t=>{if(t.name){if(tZ.includes(t.name))return!0;for(const r of JK)if(t.name.includes(r))return!1;if(eZ.includes(t.name))return!1}return!t.access||t.access===Ou.ALL||t.access===Ou.SET||t.access===Ou.STATE_SET},pa=O4.startsWith("${")?[`${window.location.host}${window.location.pathname}${window.location.pathname.endsWith("/")?"":"/"}api`]:O4.split(",").map(t=>t.trim()),Xa=C4.startsWith("${")?pa.map((t,r)=>`${r}`):C4.split(","),Ul=pa.length>1,aZ=()=>{const t={},r={},n={},i={},o={},l={},c={},d={},f={},v={},p={},g={},h={},y={},b={},k={},w={},E={},S={},T={},x={},A={},O={},M=[],I=[],q={};for(let N=0;N<pa.length;N++)t[N]=[],r[N]={},n[N]={},i[N]={},o[N]=[],l[N]={state:"offline"},c[N]={response_time:0,os:{load_average:[0,0,0],memory_used_mb:0,memory_percent:0},process:{uptime_sec:0,memory_used_mb:0,memory_percent:0},mqtt:{connected:!1,queued:0,received:0,published:0},devices:{}},d[N]={config_schema:{properties:{},required:[],definitions:{}},config:{advanced:{elapsed:!1,last_seen:"disable",log_level:"info",log_rotation:!1,log_console_json:!1,log_symlink_current:!1,log_output:[],log_directory:"",log_file:"",log_namespaced_levels:{},log_syslog:{},log_debug_to_mqtt_frontend:!1,log_debug_namespace_ignore:"",log_directories_to_keep:0,pan_id:0,ext_pan_id:[],channel:0,cache_state:!1,cache_state_persistent:!1,cache_state_send_on_startup:!1,network_key:[],timestamp_format:"",output:"json"},devices:{},device_options:{},frontend:{enabled:!0,package:"zigbee2mqtt-windfront",port:8080,base_url:"/"},homeassistant:{enabled:!1,discovery_topic:"",status_topic:"",experimental_event_entities:!1,legacy_action_sensor:!1},availability:{enabled:!1,active:{timeout:0,max_jitter:0,backoff:!1,pause_on_backoff_gt:0},passive:{timeout:0}},mqtt:{base_topic:"",include_device_information:!1,force_disable_retain:!1,server:"",maximum_packet_size:0},serial:{disable_led:!1},passlist:[],blocklist:[],map_options:{graphviz:{}},ota:{update_check_interval:0,disable_automatic_update_check:!1,zigbee_ota_override_index_location:void 0,image_block_response_delay:void 0,default_maximum_data_size:void 0},groups:{},health:{interval:10,reset_on_check:!1}},permit_join:!1,permit_join_end:void 0,zigbee_herdsman_converters:{version:""},zigbee_herdsman:{version:""},device_options:{},restart_required:!1,version:"",coordinator:{meta:{},type:"",ieee_address:""},os:{version:"",node_version:"",cpus:"",memory_mb:0},mqtt:{server:"",version:0}},f[N]={clusters:{},custom_clusters:{}},v[N]={},p[N]={},g[N]=[],h[N]=[],y[N]=[],b[N]=[],k[N]=[],w[N]=!1,E[N]=!1,S[N]=!1,T[N]=void 0,x[N]=!1,A[N]=!1,O[N]="",M[N]=!1,I[N]=WebSocket.CLOSED,q[N]={messagesSent:0,bytesSent:0,messagesReceived:0,messagesBridge:0,messagesDevice:0,bytesReceived:0,reconnects:0,lastMessageTs:0,pendingRequests:0};return{devices:t,deviceStates:r,deviceDashboardFeatures:n,deviceScenesFeatures:i,groups:o,bridgeState:l,bridgeHealth:c,bridgeInfo:d,bridgeDefinitions:f,availability:v,generatedExternalDefinitions:p,logs:g,notifications:h,extensions:y,converters:b,touchlinkDevices:k,touchlinkScanInProgress:w,touchlinkIdentifyInProgress:E,touchlinkResetInProgress:S,networkMap:T,networkMapIsLoading:x,preparingBackup:A,backup:O,logsLimit:100,notificationsAlert:[!1,!1],toasts:[],authRequired:M,readyStates:I,webSocketMetrics:q}},Ct=QK((t,r,n)=>({...aZ(),setExtensions:(i,o)=>t(l=>({extensions:{...l.extensions,[i]:o}})),setConverters:(i,o)=>t(l=>({converters:{...l.converters,[i]:o}})),setTouchlinkScan:(i,{inProgress:o,devices:l})=>t(c=>({touchlinkScanInProgress:{...c.touchlinkScanInProgress,[i]:o},touchlinkDevices:{...c.touchlinkDevices,[i]:l}})),setTouchlinkIdentifyInProgress:(i,o)=>t(l=>({touchlinkIdentifyInProgress:{...l.touchlinkIdentifyInProgress,[i]:o}})),setTouchlinkResetInProgress:(i,o)=>t(l=>({touchlinkResetInProgress:{...l.touchlinkResetInProgress,[i]:o}})),clearLogs:i=>t(o=>({logs:{...o.logs,[i]:[]}})),clearAllLogs:()=>t(()=>{const i={};for(let o=0;o<pa.length;o++)i[o]=[];return{logs:i}}),setLogsLimit:i=>t(o=>{if(o.logsLimit===i)return o;const l={};for(const c in o.logs){const d=Number(c),f=o.logs[d];l[d]=f.length>i?f.slice(-i):f}return{logsLimit:i,logs:l}}),addLogs:(i,o)=>t(l=>{if(o.length===0)return l;const c=l.bridgeInfo[i].config.frontend.notification_filter,d=l.notifications[i],f=l.logs[i],v=f.length+o.length,p=v>l.logsLimit?v-l.logsLimit:0,g=f.slice(p>0?p:0),h=Array.from(d),y=Array.from(l.toasts);let b=!1;for(const w of o){if(g.push(w),w.level==="debug")continue;if((c?MM.concat(c):MM).some(S=>new RegExp(S).test(w.message))||(h.length>=LK&&h.shift(),h.push(w)),w.level==="error"){const S=w.message.match(DK);if(S){b=!0;const[,T,x,A,O]=S;y.push({sourceIdx:i,topic:`${A}/${T}(${x})`,status:"error",error:O})}}}if(h.length===0)return b?{logs:{...l.logs,[i]:g},toasts:y}:{logs:{...l.logs,[i]:g}};let k=h.some(w=>w.level==="error");if(!k){for(let w=0;w<pa.length;w++)if(i!==w&&l.notifications[w].some(E=>E.level==="error")){k=!0;break}}return l.notificationsAlert[1]!==k?b?{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},notificationsAlert:[l.notificationsAlert[0],k],toasts:y}:{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},notificationsAlert:[l.notificationsAlert[0],k]}:b?{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},toasts:y}:{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h}}}),clearNotifications:i=>t(o=>{let l=!1;for(let c=0;c<pa.length;c++)if(i!==c&&o.notifications[c].some(d=>d.level==="error")){l=!0;break}return o.notificationsAlert[1]!==l?{notifications:{...o.notifications,[i]:[]},notificationsAlert:[o.notificationsAlert[0],l]}:{notifications:{...o.notifications,[i]:[]}}}),clearAllNotifications:()=>t(i=>{const o={};for(let l=0;l<pa.length;l++)o[l]=[];return{notifications:o,notificationsAlert:[i.notificationsAlert[0],!1]}}),updateDeviceStates:(i,o)=>t(l=>{if(o.length===0)return l;const c={...l.deviceStates[i]};for(const{topic:d,payload:f}of o)c[d]={...c[d],...f};return{deviceStates:{...l.deviceStates,[i]:c}}}),resetDeviceState:(i,o)=>t(l=>{const c=l.deviceStates[i];return{deviceStates:{...l.deviceStates,[i]:{...c,[o]:{}}}}}),updateAvailability:(i,{topic:o,payload:l})=>t(c=>{const d=c.availability[i],f=o.slice(0,o.indexOf(dN));return{availability:{...c.availability,[i]:{...d,[f]:l}}}}),setBridgeInfo:(i,o)=>t(l=>l.bridgeInfo[i].restart_required===o.restart_required?{bridgeInfo:{...l.bridgeInfo,[i]:o}}:{bridgeInfo:{...l.bridgeInfo,[i]:o},notificationsAlert:[o.restart_required,l.notificationsAlert[1]]}),setBridgeState:(i,o)=>t(l=>({bridgeState:{...l.bridgeState,[i]:o}})),setBridgeHealth:(i,o)=>t(l=>({bridgeHealth:{...l.bridgeHealth,[i]:o}})),setBridgeDefinitions:(i,o)=>t(l=>({bridgeDefinitions:{...l.bridgeDefinitions,[i]:o}})),setDevices:(i,o)=>t(l=>{const c={},d={};for(const f of o){if(f.disabled||!f.definition||f.definition.exposes.length===0)continue;const v=[],p=[];for(const g of f.definition.exposes){const h=S1(g,KK),y=S1(g,rZ);h&&v.push(h),y&&p.push(y)}c[f.ieee_address]=v,d[f.ieee_address]=p}return{devices:{...l.devices,[i]:o},deviceDashboardFeatures:{...l.deviceDashboardFeatures,[i]:c},deviceScenesFeatures:{...l.deviceScenesFeatures,[i]:d}}}),setGroups:(i,o)=>t(l=>({groups:{...l.groups,[i]:o}})),setNetworkMap:(i,o)=>t(l=>({networkMapIsLoading:{...l.networkMapIsLoading,[i]:!1},networkMap:{...l.networkMap,[i]:o}})),setNetworkMapIsLoading:i=>t(o=>({networkMapIsLoading:{...o.networkMapIsLoading,[i]:!0},networkMap:{...o.networkMap,[i]:void 0}})),setBackup:(i,o)=>t(l=>({preparingBackup:{...l.preparingBackup,[i]:!1},backup:{...l.backup,[i]:o}})),setBackupPreparing:i=>t(o=>({preparingBackup:{...o.preparingBackup,[i]:!0}})),addGeneratedExternalDefinition:(i,{id:o,source:l})=>t(c=>({generatedExternalDefinitions:{...c.generatedExternalDefinitions,[i]:{...c.generatedExternalDefinitions[i],[o]:l}}})),setAuthRequired:(i,o)=>t(l=>{const c=Array.from(l.authRequired);return c[i]=o,{authRequired:c}}),setReadyState:(i,o)=>t(l=>{const c=Array.from(l.readyStates);return c[i]=o,{readyStates:c}}),updateWebSocketMetrics:(i,o)=>t(l=>{const c=l.webSocketMetrics[i],d={messagesSent:c.messagesSent+o.messagesSent,bytesSent:c.bytesSent+o.bytesSent,messagesReceived:c.messagesReceived+o.messagesReceived,messagesBridge:c.messagesBridge+o.messagesBridge,messagesDevice:c.messagesDevice+o.messagesDevice,bytesReceived:c.bytesReceived+o.bytesReceived,reconnects:c.reconnects+o.reconnects,lastMessageTs:o.lastMessageTs||c.lastMessageTs,pendingRequests:c.pendingRequests};return{webSocketMetrics:{...l.webSocketMetrics,[i]:d}}}),resetWebSocketMetrics:i=>t(o=>({webSocketMetrics:{...o.webSocketMetrics,[i]:{messagesSent:0,bytesSent:0,messagesReceived:0,messagesBridge:0,messagesDevice:0,bytesReceived:0,reconnects:0,lastMessageTs:0,pendingRequests:0}}})),setPendingRequestsCount:(i,o)=>t(l=>({webSocketMetrics:{...l.webSocketMetrics,[i]:{...l.webSocketMetrics[i],pendingRequests:o}}})),addToast:i=>t(o=>({toasts:[...o.toasts,i]})),removeToast:i=>t(o=>{const l=Array.from(o.toasts);return l.splice(i,1),{toasts:l}}),reset:()=>{t(n.getInitialState())}})),nZ=5e3,iZ=K.memo(({idx:t,toast:r,remove:n})=>{const[i]=K.useState(Date.now()+nZ);return K.useEffect(()=>{const o=setTimeout(()=>{n(t)},i-Date.now());return()=>{clearTimeout(o)}},[t,n,i]),W.jsxs("div",{className:`alert ${NK[r.status]} break-all cursor-pointer select-none max-w-prose`,onClick:()=>n(t),children:[Ul&&`[${Xa[r.sourceIdx]}] `,r.topic,": ",r.error??"OK",r.transaction?` (${r.transaction})`:""]})});function oZ(){const t=Ct(i=>i.toasts),r=Ct(i=>i.removeToast),n=K.useMemo(()=>{const i=[];for(let o=0;o<ta.get(FK,3);o++){const l=t[o];if(!l)break;i.push(W.jsx(iZ,{idx:o,toast:l,remove:r},`${o}-${l.transaction}`))}return i},[t,r]);return W.jsx("div",{className:"toast z-98",children:n})}const BM={didCatch:!1,error:null},sZ=K.memo(()=>W.jsx("button",{type:"button",className:"btn btn-primary btn-square animate-pulse text-3xl",onClick:async()=>{await XK(Ct.getState(),"state.json")},children:"➘"}));class lZ extends K.Component{constructor(r){super(r),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=BM}static getDerivedStateFromError(r){return{didCatch:!0,error:r}}resetErrorBoundary(){this.state.error!==null&&this.setState(BM)}render(){const{didCatch:r,error:n}=this.state;if(r){const i={template:"bug_report.yaml",stacktrace:[`Current url: ${window.location.toString()}`,`Previous url: ${document.referrer}`,`
|
|
66
|
+
* Copyright (c) 2024 Nathan Bubna; Licensed MIT */var s1=Ru.exports,CM;function MK(){return CM||(CM=1,(function(t){(function(r,n){var i={version:"2.14.4",areas:{},apis:{},nsdelim:".",inherit:function(l,c){for(var d in l)c.hasOwnProperty(d)||Object.defineProperty(c,d,Object.getOwnPropertyDescriptor(l,d));return c},stringify:function(l,c){return l===void 0||typeof l=="function"?l+"":JSON.stringify(l,c||i.replace)},parse:function(l,c){try{return JSON.parse(l,c||i.revive)}catch{return l}},fn:function(l,c){i.storeAPI[l]=c;for(var d in i.apis)i.apis[d][l]=c},get:function(l,c){return l.getItem(c)},set:function(l,c,d){l.setItem(c,d)},remove:function(l,c){l.removeItem(c)},key:function(l,c){return l.key(c)},length:function(l){return l.length},clear:function(l){l.clear()},Store:function(l,c,d){var f=i.inherit(i.storeAPI,function(p,g,h){return arguments.length===0?f.getAll():typeof g=="function"?f.transact(p,g,h):g!==void 0?f.set(p,g,h):typeof p=="string"||typeof p=="number"?f.get(p):typeof p=="function"?f.each(p):p?f.setAll(p,g):f.clear()});f._id=l;try{var v="__store2_test";c.setItem(v,"ok"),f._area=c,c.removeItem(v)}catch{f._area=i.storage("fake")}return f._ns=d||"",i.areas[l]||(i.areas[l]=f._area),i.apis[f._ns+f._id]||(i.apis[f._ns+f._id]=f),f},storeAPI:{area:function(l,c){var d=this[l];return(!d||!d.area)&&(d=i.Store(l,c,this._ns),this[l]||(this[l]=d)),d},namespace:function(l,c,d){if(d=d||this._delim||i.nsdelim,!l)return this._ns?this._ns.substring(0,this._ns.length-d.length):"";var f=l,v=this[f];if((!v||!v.namespace)&&(v=i.Store(this._id,this._area,this._ns+f+d),v._delim=d,this[f]||(this[f]=v),!c))for(var p in i.areas)v.area(p,i.areas[p]);return v},isFake:function(l){return l?(this._real=this._area,this._area=i.storage("fake")):l===!1&&(this._area=this._real||this._area),this._area.name==="fake"},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(l){return this._area.has?this._area.has(this._in(l)):this._in(l)in this._area},size:function(){return this.keys().length},each:function(l,c){for(var d=0,f=i.length(this._area);d<f;d++){var v=this._out(i.key(this._area,d));if(v!==void 0&&l.call(this,v,this.get(v),c)===!1)break;f>i.length(this._area)&&(f--,d--)}return c||this},keys:function(l){return this.each(function(c,d,f){f.push(c)},l||[])},get:function(l,c){var d=i.get(this._area,this._in(l)),f;return typeof c=="function"&&(f=c,c=null),d!==null?i.parse(d,f):c??d},getAll:function(l){return this.each(function(c,d,f){f[c]=d},l||{})},transact:function(l,c,d){var f=this.get(l,d),v=c(f);return this.set(l,v===void 0?f:v),this},set:function(l,c,d){var f=this.get(l),v;return f!=null&&d===!1?c:(typeof d=="function"&&(v=d,d=void 0),i.set(this._area,this._in(l),i.stringify(c,v),d)||f)},setAll:function(l,c){var d,f;for(var v in l)f=l[v],this.set(v,f,c)!==f&&(d=!0);return d},add:function(l,c,d){var f=this.get(l);if(f instanceof Array)c=f.concat(c);else if(f!==null){var v=typeof f;if(v===typeof c&&v==="object"){for(var p in c)f[p]=c[p];c=f}else c=f+c}return i.set(this._area,this._in(l),i.stringify(c,d)),c},remove:function(l,c){var d=this.get(l,c);return i.remove(this._area,this._in(l)),d},clear:function(){return this._ns?this.each(function(l){i.remove(this._area,this._in(l))},1):i.clear(this._area),this},clearAll:function(){var l=this._area;for(var c in i.areas)i.areas.hasOwnProperty(c)&&(this._area=i.areas[c],this.clear());return this._area=l,this},_in:function(l){return typeof l!="string"&&(l=i.stringify(l)),this._ns?this._ns+l:l},_out:function(l){return this._ns?l&&l.indexOf(this._ns)===0?l.substring(this._ns.length):void 0:l}},storage:function(l){return i.inherit(i.storageAPI,{items:{},name:l})},storageAPI:{length:0,has:function(l){return this.items.hasOwnProperty(l)},key:function(l){var c=0;for(var d in this.items)if(this.has(d)&&l===c++)return d},setItem:function(l,c){this.has(l)||this.length++,this.items[l]=c},removeItem:function(l){this.has(l)&&(delete this.items[l],this.length--)},getItem:function(l){return this.has(l)?this.items[l]:null},clear:function(){for(var l in this.items)this.removeItem(l)}}},o=i.Store("local",(function(){try{return localStorage}catch{}})());o.local=o,o._=i,o.area("session",(function(){try{return sessionStorage}catch{}})()),o.area("page",i.storage("page")),typeof n=="function"&&n.amd!==void 0?n("store2",[],function(){return o}):t.exports?t.exports=o:(r.store&&(i.conflict=r.store),r.store=o)})(s1,s1&&s1.define)})(Ru)),Ru.exports}var IK=MK();const ta=Vt(IK),dN="/availability",Zue=["debug","info","warning","error"],Wue=[100,200,500,1e3],qK={error:"text-error",warning:"text-warning",info:"text-info",debug:"opacity-50"},LK=20,MM=["MQTT publish"," COUNTERS]"],NK={error:"text-error",ok:"text-success"},DK=/^z2m: Publish '(set|get)' '(.+)' to '(.+)' failed.*\((.*)\)'$/,jK={[WebSocket.CONNECTING]:["CONNECTING","text-info"],[WebSocket.OPEN]:["OPEN","text-success"],[WebSocket.CLOSING]:["CLOSING","text-warning"],[WebSocket.CLOSED]:["CLOSED","text-error"]},Yue="https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html",Xue="https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#generic-device-options",Jue="https://www.zigbee2mqtt.io/guide/usage/groups.html#configuration",ede="https://www.zigbee2mqtt.io/guide/configuration/",tde="https://www.zigbee2mqtt.io/guide/usage/mqtt_topics_and_messages.html",rde="https://www.zigbee2mqtt.io/advanced/more/external_converters.html",ade="https://github.com/Nerivec/z2m-external-converter-dev",nde="https://www.zigbee2mqtt.io/advanced/more/external_extensions.html",ide="https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",ode="https://www.digitalocean.com/community/tutorials/load-average-in-linux",sde="https://mqtt.org/mqtt-specification/",lde="https://nodejs.org/en/about/previous-releases",PK="https://github.com/Nerivec/zigbee2mqtt-windfront/issues/new",cde="https://github.com/Koenkk/zigbee2mqtt/issues/new",ude="https://github.com/Koenkk/zigbee-herdsman-converters/issues/new",dde="https://github.com/Koenkk/zigbee2mqtt/commit/",fde="https://github.com/Nerivec/zigbee2mqtt-windfront/releases/tag/v",vde="https://github.com/Koenkk/zigbee2mqtt/releases/tag/",pde="https://github.com/Koenkk/zigbee-herdsman-converters/releases/tag/v",_de="https://github.com/Koenkk/zigbee-herdsman/releases/tag/v",gde="https://github.com/Nerivec/zigbee2mqtt-windfront/issues/199",mde="https://github.com/Nerivec/zigbee2mqtt-windfront/blob/main/CONTRIBUTING.md",hde="https://github.com/Koenkk/zigbee2mqtt/blob/master/CONTRIBUTING.md",yde="https://github.com/Koenkk/zigbee-herdsman-converters?tab=readme-ov-file#contributing",bde="https://github.com/Koenkk/zigbee-herdsman/wiki";var BK=(t=>(t.Pending="PENDING",t.InProgress="IN_PROGRESS",t.Successful="SUCCESSFUL",t.Failed="FAILED",t))(BK||{});const _l="z2m-token",IM="z2m-auth",qM="theme",LM="windfront-sidebar-collapsed",kde="homepage",UK="permit-join-time",FK="max-on-screen-notifications",Sde="hide-static-info-alerts",Ede="table-filters",wde="table-columns",Tde="table-sorting",Ade="network-raw-display-type",xde="network-map-config",$K="multi-instance-show-source-name",zde="i18nextLng",NM=t=>{let r;const n=new Set,i=(v,p)=>{const g=typeof v=="function"?v(r):v;if(!Object.is(g,r)){const h=r;r=p??(typeof g!="object"||g===null)?g:Object.assign({},r,g),n.forEach(y=>y(r,h))}},o=()=>r,d={setState:i,getState:o,getInitialState:()=>f,subscribe:v=>(n.add(v),()=>n.delete(v))},f=r=t(i,o,d);return d},HK=(t=>t?NM(t):NM),GK=t=>t;function VK(t,r=GK){const n=sr.useSyncExternalStore(t.subscribe,sr.useCallback(()=>r(t.getState()),[t,r]),sr.useCallback(()=>r(t.getInitialState()),[t,r]));return sr.useDebugValue(n),n}const DM=t=>{const r=HK(t),n=i=>VK(r,i);return Object.assign(n,r),n},QK=(t=>t?DM(t):DM),KK=t=>!(t.category==="config"||t.type==="list"||t.name&&(t.name==="linkquality"||t.name==="battery"||t.name==="voltage"));var Ou=(t=>(t[t.STATE=1]="STATE",t[t.SET=2]="SET",t[t.GET=4]="GET",t[t.STATE_SET=3]="STATE_SET",t[t.STATE_GET=5]="STATE_GET",t[t.ALL=7]="ALL",t))(Ou||{}),Cu={exports:{}},ZK=Cu.exports,jM;function WK(){return jM||(jM=1,(function(t,r){(function(n,i){i()})(ZK,function(){function n(v,p){return typeof p>"u"?p={autoBom:!1}:typeof p!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),p={autoBom:!p}),p.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(v.type)?new Blob(["\uFEFF",v],{type:v.type}):v}function i(v,p,g){var h=new XMLHttpRequest;h.open("GET",v),h.responseType="blob",h.onload=function(){f(h.response,p,g)},h.onerror=function(){console.error("could not download file")},h.send()}function o(v){var p=new XMLHttpRequest;p.open("HEAD",v,!1);try{p.send()}catch{}return 200<=p.status&&299>=p.status}function l(v){try{v.dispatchEvent(new MouseEvent("click"))}catch{var p=document.createEvent("MouseEvents");p.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),v.dispatchEvent(p)}}var c=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof Fo=="object"&&Fo.global===Fo?Fo:void 0,d=c.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),f=c.saveAs||(typeof window!="object"||window!==c?function(){}:"download"in HTMLAnchorElement.prototype&&!d?function(v,p,g){var h=c.URL||c.webkitURL,y=document.createElement("a");p=p||v.name||"download",y.download=p,y.rel="noopener",typeof v=="string"?(y.href=v,y.origin===location.origin?l(y):o(y.href)?i(v,p,g):l(y,y.target="_blank")):(y.href=h.createObjectURL(v),setTimeout(function(){h.revokeObjectURL(y.href)},4e4),setTimeout(function(){l(y)},0))}:"msSaveOrOpenBlob"in navigator?function(v,p,g){if(p=p||v.name||"download",typeof v!="string")navigator.msSaveOrOpenBlob(n(v,g),p);else if(o(v))i(v,p,g);else{var h=document.createElement("a");h.href=v,h.target="_blank",setTimeout(function(){l(h)})}}:function(v,p,g,h){if(h=h||open("","_blank"),h&&(h.document.title=h.document.body.innerText="downloading..."),typeof v=="string")return i(v,p,g);var y=v.type==="application/octet-stream",b=/constructor/i.test(c.HTMLElement)||c.safari,k=/CriOS\/[\d]+/.test(navigator.userAgent);if((k||y&&b||d)&&typeof FileReader<"u"){var w=new FileReader;w.onloadend=function(){var T=w.result;T=k?T:T.replace(/^data:[^;]*;/,"data:attachment/file;"),h?h.location.href=T:location=T,h=null},w.readAsDataURL(v)}else{var E=c.URL||c.webkitURL,S=E.createObjectURL(v);h?h.location=S:location.href=S,h=null,setTimeout(function(){E.revokeObjectURL(S)},4e4)}});c.saveAs=f.saveAs=f,t.exports=f})})(Cu)),Cu.exports}var fN=WK();const Rde=Vt(fN),Ode=(t,r,n)=>{const[i,o]=n,[l,c]=r;return(t-l)/(c-l)*(o-i)+i},YK=t=>Math.random().toString(36).slice(2,2+t),Cde=t=>{for(const r in t)return r},Mde=t=>{if(!t)return[0,!0];const r=Number(t);return Number.isNaN(r)||!pa[r]?[0,!1]:[r,!0]},PM=t=>JSON.stringify(t,(r,n)=>n===void 0?null:n),Ide=(t,r)=>{if(t)switch(r){case"ISO_8601":case"ISO_8601_local":return Date.parse(t);case"epoch":return t;case"disable":return;default:console.error(`Unknown last_seen type ${r}`);return}},qde=(t,r=4)=>`0x${("0".repeat(r)+t.toString(16)).slice(-1*r).toUpperCase()}`,Lde=t=>t?t.replace(/:|\s|\//g,"-"):"NA";function vN(t){return!("members"in t)}const Nde=t=>{const r=new Set;if(!t)return r;if(vN(t)){for(const n in t.endpoints)r.add(Number.parseInt(n,10));if(t.definition?.exposes)for(const n of t.definition.exposes)n.endpoint&&r.add(n.endpoint)}else for(const n of t.members)r.add(n.endpoint);return r},S1=(t,r)=>{if(r(t)){if("features"in t&&t.features&&t.features.length>0){const n=[];for(const i of t.features){const o=S1(i,r);o&&!n.some(l=>l.property===o.property)&&n.push(o)}return{...t,features:n}}return{...t}}},XK=async(t,r)=>{const{default:n}=await na(async()=>{const{default:l}=await import("./jszip.min-D78Hqesd.js").then(c=>c.j);return{default:l}},[],import.meta.url),i=new n;i.file(r,JSON.stringify(t,null,4),{compression:"DEFLATE"});const o=await i.generateAsync({type:"blob"});fN.saveAs(o,`${r}.zip`)};function Dde(t){if(vN(t)){const r=[];for(const n in t.endpoints){const i=t.endpoints[n];for(const o of i.scenes)r.push({...o})}return r}return t.scenes}const JK=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_","_scene"],eZ=["effect","power_on_behavior","gradient"],tZ=["state","color_temp","color","transition","brightness"],rZ=t=>{if(t.name){if(tZ.includes(t.name))return!0;for(const r of JK)if(t.name.includes(r))return!1;if(eZ.includes(t.name))return!1}return!t.access||t.access===Ou.ALL||t.access===Ou.SET||t.access===Ou.STATE_SET},pa=O4.startsWith("${")?[`${window.location.host}${window.location.pathname}${window.location.pathname.endsWith("/")?"":"/"}api`]:O4.split(",").map(t=>t.trim()),Xa=C4.startsWith("${")?pa.map((t,r)=>`${r}`):C4.split(","),Ul=pa.length>1,aZ=()=>{const t={},r={},n={},i={},o={},l={},c={},d={},f={},v={},p={},g={},h={},y={},b={},k={},w={},E={},S={},T={},x={},A={},O={},M=[],I=[],q={};for(let N=0;N<pa.length;N++)t[N]=[],r[N]={},n[N]={},i[N]={},o[N]=[],l[N]={state:"offline"},c[N]={response_time:0,os:{load_average:[0,0,0],memory_used_mb:0,memory_percent:0},process:{uptime_sec:0,memory_used_mb:0,memory_percent:0},mqtt:{connected:!1,queued:0,received:0,published:0},devices:{}},d[N]={config_schema:{properties:{},required:[],definitions:{}},config:{advanced:{elapsed:!1,last_seen:"disable",log_level:"info",log_rotation:!1,log_console_json:!1,log_symlink_current:!1,log_output:[],log_directory:"",log_file:"",log_namespaced_levels:{},log_syslog:{},log_debug_to_mqtt_frontend:!1,log_debug_namespace_ignore:"",log_directories_to_keep:0,pan_id:0,ext_pan_id:[],channel:0,cache_state:!1,cache_state_persistent:!1,cache_state_send_on_startup:!1,network_key:[],timestamp_format:"",output:"json"},devices:{},device_options:{},frontend:{enabled:!0,package:"zigbee2mqtt-windfront",port:8080,base_url:"/"},homeassistant:{enabled:!1,discovery_topic:"",status_topic:"",experimental_event_entities:!1,legacy_action_sensor:!1},availability:{enabled:!1,active:{timeout:0,max_jitter:0,backoff:!1,pause_on_backoff_gt:0},passive:{timeout:0}},mqtt:{base_topic:"",include_device_information:!1,force_disable_retain:!1,server:"",maximum_packet_size:0},serial:{disable_led:!1},passlist:[],blocklist:[],map_options:{graphviz:{}},ota:{update_check_interval:0,disable_automatic_update_check:!1,zigbee_ota_override_index_location:void 0,image_block_response_delay:void 0,default_maximum_data_size:void 0},groups:{},health:{interval:10,reset_on_check:!1}},permit_join:!1,permit_join_end:void 0,zigbee_herdsman_converters:{version:""},zigbee_herdsman:{version:""},device_options:{},restart_required:!1,version:"",coordinator:{meta:{},type:"",ieee_address:""},os:{version:"",node_version:"",cpus:"",memory_mb:0},mqtt:{server:"",version:0}},f[N]={clusters:{},custom_clusters:{}},v[N]={},p[N]={},g[N]=[],h[N]=[],y[N]=[],b[N]=[],k[N]=[],w[N]=!1,E[N]=!1,S[N]=!1,T[N]=void 0,x[N]=!1,A[N]=!1,O[N]="",M[N]=!1,I[N]=WebSocket.CLOSED,q[N]={messagesSent:0,bytesSent:0,messagesReceived:0,messagesBridge:0,messagesDevice:0,bytesReceived:0,reconnects:0,lastMessageTs:0,pendingRequests:0};return{devices:t,deviceStates:r,deviceDashboardFeatures:n,deviceScenesFeatures:i,groups:o,bridgeState:l,bridgeHealth:c,bridgeInfo:d,bridgeDefinitions:f,availability:v,generatedExternalDefinitions:p,logs:g,notifications:h,extensions:y,converters:b,touchlinkDevices:k,touchlinkScanInProgress:w,touchlinkIdentifyInProgress:E,touchlinkResetInProgress:S,networkMap:T,networkMapIsLoading:x,preparingBackup:A,backup:O,logsLimit:100,notificationsAlert:[!1,!1],toasts:[],authRequired:M,readyStates:I,webSocketMetrics:q}},Ct=QK((t,r,n)=>({...aZ(),setExtensions:(i,o)=>t(l=>({extensions:{...l.extensions,[i]:o}})),setConverters:(i,o)=>t(l=>({converters:{...l.converters,[i]:o}})),setTouchlinkScan:(i,{inProgress:o,devices:l})=>t(c=>({touchlinkScanInProgress:{...c.touchlinkScanInProgress,[i]:o},touchlinkDevices:{...c.touchlinkDevices,[i]:l}})),setTouchlinkIdentifyInProgress:(i,o)=>t(l=>({touchlinkIdentifyInProgress:{...l.touchlinkIdentifyInProgress,[i]:o}})),setTouchlinkResetInProgress:(i,o)=>t(l=>({touchlinkResetInProgress:{...l.touchlinkResetInProgress,[i]:o}})),clearLogs:i=>t(o=>({logs:{...o.logs,[i]:[]}})),clearAllLogs:()=>t(()=>{const i={};for(let o=0;o<pa.length;o++)i[o]=[];return{logs:i}}),setLogsLimit:i=>t(o=>{if(o.logsLimit===i)return o;const l={};for(const c in o.logs){const d=Number(c),f=o.logs[d];l[d]=f.length>i?f.slice(-i):f}return{logsLimit:i,logs:l}}),addLogs:(i,o)=>t(l=>{if(o.length===0)return l;const c=l.bridgeInfo[i].config.frontend.notification_filter,d=l.notifications[i],f=l.logs[i],v=f.length+o.length,p=v>l.logsLimit?v-l.logsLimit:0,g=f.slice(p>0?p:0),h=Array.from(d),y=Array.from(l.toasts);let b=!1;for(const w of o){if(g.push(w),w.level==="debug")continue;if((c?MM.concat(c):MM).some(S=>new RegExp(S).test(w.message))||(h.length>=LK&&h.shift(),h.push(w)),w.level==="error"){const S=w.message.match(DK);if(S){b=!0;const[,T,x,A,O]=S;y.push({sourceIdx:i,topic:`${A}/${T}(${x})`,status:"error",error:O})}}}if(h.length===0)return b?{logs:{...l.logs,[i]:g},toasts:y}:{logs:{...l.logs,[i]:g}};let k=h.some(w=>w.level==="error");if(!k){for(let w=0;w<pa.length;w++)if(i!==w&&l.notifications[w].some(E=>E.level==="error")){k=!0;break}}return l.notificationsAlert[1]!==k?b?{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},notificationsAlert:[l.notificationsAlert[0],k],toasts:y}:{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},notificationsAlert:[l.notificationsAlert[0],k]}:b?{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h},toasts:y}:{logs:{...l.logs,[i]:g},notifications:{...l.notifications,[i]:h}}}),clearNotifications:i=>t(o=>{let l=!1;for(let c=0;c<pa.length;c++)if(i!==c&&o.notifications[c].some(d=>d.level==="error")){l=!0;break}return o.notificationsAlert[1]!==l?{notifications:{...o.notifications,[i]:[]},notificationsAlert:[o.notificationsAlert[0],l]}:{notifications:{...o.notifications,[i]:[]}}}),clearAllNotifications:()=>t(i=>{const o={};for(let l=0;l<pa.length;l++)o[l]=[];return{notifications:o,notificationsAlert:[i.notificationsAlert[0],!1]}}),updateDeviceStates:(i,o)=>t(l=>{if(o.length===0)return l;const c={...l.deviceStates[i]};for(const{topic:d,payload:f}of o)c[d]={...c[d],...f};return{deviceStates:{...l.deviceStates,[i]:c}}}),resetDeviceState:(i,o)=>t(l=>{const c=l.deviceStates[i];return{deviceStates:{...l.deviceStates,[i]:{...c,[o]:{}}}}}),updateAvailability:(i,{topic:o,payload:l})=>t(c=>{const d=c.availability[i],f=o.slice(0,o.indexOf(dN));return{availability:{...c.availability,[i]:{...d,[f]:l}}}}),setBridgeInfo:(i,o)=>t(l=>l.bridgeInfo[i].restart_required===o.restart_required?{bridgeInfo:{...l.bridgeInfo,[i]:o}}:{bridgeInfo:{...l.bridgeInfo,[i]:o},notificationsAlert:[o.restart_required,l.notificationsAlert[1]]}),setBridgeState:(i,o)=>t(l=>({bridgeState:{...l.bridgeState,[i]:o}})),setBridgeHealth:(i,o)=>t(l=>({bridgeHealth:{...l.bridgeHealth,[i]:o}})),setBridgeDefinitions:(i,o)=>t(l=>({bridgeDefinitions:{...l.bridgeDefinitions,[i]:o}})),setDevices:(i,o)=>t(l=>{const c={},d={};for(const f of o){if(f.disabled||!f.definition||f.definition.exposes.length===0)continue;const v=[],p=[];for(const g of f.definition.exposes){const h=S1(g,KK),y=S1(g,rZ);h&&v.push(h),y&&p.push(y)}c[f.ieee_address]=v,d[f.ieee_address]=p}return{devices:{...l.devices,[i]:o},deviceDashboardFeatures:{...l.deviceDashboardFeatures,[i]:c},deviceScenesFeatures:{...l.deviceScenesFeatures,[i]:d}}}),setGroups:(i,o)=>t(l=>({groups:{...l.groups,[i]:o}})),setNetworkMap:(i,o)=>t(l=>({networkMapIsLoading:{...l.networkMapIsLoading,[i]:!1},networkMap:{...l.networkMap,[i]:o}})),setNetworkMapIsLoading:i=>t(o=>({networkMapIsLoading:{...o.networkMapIsLoading,[i]:!0},networkMap:{...o.networkMap,[i]:void 0}})),setBackup:(i,o)=>t(l=>({preparingBackup:{...l.preparingBackup,[i]:!1},backup:{...l.backup,[i]:o}})),setBackupPreparing:i=>t(o=>({preparingBackup:{...o.preparingBackup,[i]:!0}})),addGeneratedExternalDefinition:(i,{id:o,source:l})=>t(c=>({generatedExternalDefinitions:{...c.generatedExternalDefinitions,[i]:{...c.generatedExternalDefinitions[i],[o]:l}}})),setAuthRequired:(i,o)=>t(l=>{const c=Array.from(l.authRequired);return c[i]=o,{authRequired:c}}),setReadyState:(i,o)=>t(l=>{const c=Array.from(l.readyStates);return c[i]=o,{readyStates:c}}),updateWebSocketMetrics:(i,o)=>t(l=>{const c=l.webSocketMetrics[i],d={messagesSent:c.messagesSent+o.messagesSent,bytesSent:c.bytesSent+o.bytesSent,messagesReceived:c.messagesReceived+o.messagesReceived,messagesBridge:c.messagesBridge+o.messagesBridge,messagesDevice:c.messagesDevice+o.messagesDevice,bytesReceived:c.bytesReceived+o.bytesReceived,reconnects:c.reconnects+o.reconnects,lastMessageTs:o.lastMessageTs||c.lastMessageTs,pendingRequests:c.pendingRequests};return{webSocketMetrics:{...l.webSocketMetrics,[i]:d}}}),resetWebSocketMetrics:i=>t(o=>({webSocketMetrics:{...o.webSocketMetrics,[i]:{messagesSent:0,bytesSent:0,messagesReceived:0,messagesBridge:0,messagesDevice:0,bytesReceived:0,reconnects:0,lastMessageTs:0,pendingRequests:0}}})),setPendingRequestsCount:(i,o)=>t(l=>({webSocketMetrics:{...l.webSocketMetrics,[i]:{...l.webSocketMetrics[i],pendingRequests:o}}})),addToast:i=>t(o=>({toasts:[...o.toasts,i]})),removeToast:i=>t(o=>{const l=Array.from(o.toasts);return l.splice(i,1),{toasts:l}}),reset:()=>{t(n.getInitialState())}})),nZ=5e3,iZ=K.memo(({idx:t,toast:r,remove:n})=>{const[i]=K.useState(Date.now()+nZ);return K.useEffect(()=>{const o=setTimeout(()=>{n(t)},i-Date.now());return()=>{clearTimeout(o)}},[t,n,i]),W.jsxs("div",{className:`alert ${NK[r.status]} break-all cursor-pointer select-none max-w-prose`,onClick:()=>n(t),children:[Ul&&`[${Xa[r.sourceIdx]}] `,r.topic,": ",r.error??"OK",r.transaction?` (${r.transaction})`:""]})});function oZ(){const t=Ct(i=>i.toasts),r=Ct(i=>i.removeToast),n=K.useMemo(()=>{const i=[];for(let o=0;o<ta.get(FK,3);o++){const l=t[o];if(!l)break;i.push(W.jsx(iZ,{idx:o,toast:l,remove:r},`${o}-${l.transaction}`))}return i},[t,r]);return W.jsx("div",{className:"toast z-98",children:n})}const BM={didCatch:!1,error:null},sZ=K.memo(()=>W.jsx("button",{type:"button",className:"btn btn-primary btn-square animate-pulse text-3xl",onClick:async()=>{await XK(Ct.getState(),"state.json")},children:"➘"}));class lZ extends K.Component{constructor(r){super(r),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=BM}static getDerivedStateFromError(r){return{didCatch:!0,error:r}}resetErrorBoundary(){this.state.error!==null&&this.setState(BM)}render(){const{didCatch:r,error:n}=this.state;if(r){const i={template:"bug_report.yaml",stacktrace:[`Current url: ${window.location.toString()}`,`Previous url: ${document.referrer}`,`
|
|
67
67
|
`,`Error type: ${n?.name}`,`Error message: ${n?.message}`,`
|
|
68
68
|
|
|
69
69
|
`,n?.stack].join(`
|
|
@@ -631,4 +631,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
631
631
|
}`;function aD(){var t=ZN,r=WN,n=Xe.cssPrefix,i=Xe.replacementClass,o=Ole;if(n!==t||i!==r){var l=new RegExp("\\.".concat(t,"\\-"),"g"),c=new RegExp("\\--".concat(t,"\\-"),"g"),d=new RegExp("\\.".concat(r),"g");o=o.replace(l,".".concat(n,"-")).replace(c,"--".concat(n,"-")).replace(d,".".concat(i))}return o}var jI=!1;function f1(){Xe.autoAddCss&&!jI&&(Tle(aD()),jI=!0)}var Cle={mixout:function(){return{dom:{css:aD,insertCss:f1}}},hooks:function(){return{beforeDOMElementCreation:function(){f1()},beforeI2svg:function(){f1()}}}},On=ci||{};On[Rn]||(On[Rn]={});On[Rn].styles||(On[Rn].styles={});On[Rn].hooks||(On[Rn].hooks={});On[Rn].shims||(On[Rn].shims=[]);var Ua=On[Rn],nD=[],iD=function(){Kt.removeEventListener("DOMContentLoaded",iD),Pu=1,nD.map(function(r){return r()})},Pu=!1;Pn&&(Pu=(Kt.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Kt.readyState),Pu||Kt.addEventListener("DOMContentLoaded",iD));function Mle(t){Pn&&(Pu?setTimeout(t,0):nD.push(t))}function Hl(t){var r=t.tag,n=t.attributes,i=n===void 0?{}:n,o=t.children,l=o===void 0?[]:o;return typeof t=="string"?rD(t):"<".concat(r," ").concat(xle(i),">").concat(l.map(Hl).join(""),"</").concat(r,">")}function PI(t,r,n){if(t&&t[r]&&t[r][n])return{prefix:r,iconName:n,icon:t[r][n]}}var v1=function(r,n,i,o){var l=Object.keys(r),c=l.length,d=n,f,v,p;for(i===void 0?(f=1,p=r[l[0]]):(f=0,p=i);f<c;f++)v=l[f],p=d(p,r[v],v,r);return p};function oD(t){return Ha(t).length!==1?null:t.codePointAt(0).toString(16)}function BI(t){return Object.keys(t).reduce(function(r,n){var i=t[n],o=!!i.icon;return o?r[i.iconName]=i.icon:r[n]=i,r},{})}function q1(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=n.skipHooks,o=i===void 0?!1:i,l=BI(r);typeof Ua.hooks.addPack=="function"&&!o?Ua.hooks.addPack(t,BI(r)):Ua.styles[t]=Oe(Oe({},Ua.styles[t]||{}),l),t==="fas"&&q1("fa",r)}var El=Ua.styles,Ile=Ua.shims,sD=Object.keys(F2),qle=sD.reduce(function(t,r){return t[r]=Object.keys(F2[r]),t},{}),G2=null,lD={},cD={},uD={},dD={},fD={};function Lle(t){return~ble.indexOf(t)}function Nle(t,r){var n=r.split("-"),i=n[0],o=n.slice(1).join("-");return i===t&&o!==""&&!Lle(o)?o:null}var vD=function(){var r=function(l){return v1(El,function(c,d,f){return c[f]=v1(d,l,{}),c},{})};lD=r(function(o,l,c){if(l[3]&&(o[l[3]]=c),l[2]){var d=l[2].filter(function(f){return typeof f=="number"});d.forEach(function(f){o[f.toString(16)]=c})}return o}),cD=r(function(o,l,c){if(o[c]=c,l[2]){var d=l[2].filter(function(f){return typeof f=="string"});d.forEach(function(f){o[f]=c})}return o}),fD=r(function(o,l,c){var d=l[2];return o[c]=c,d.forEach(function(f){o[f]=c}),o});var n="far"in El||Xe.autoFetchSvg,i=v1(Ile,function(o,l){var c=l[0],d=l[1],f=l[2];return d==="far"&&!n&&(d="fas"),typeof c=="string"&&(o.names[c]={prefix:d,iconName:f}),typeof c=="number"&&(o.unicodes[c.toString(16)]={prefix:d,iconName:f}),o},{names:{},unicodes:{}});uD=i.names,dD=i.unicodes,G2=Cd(Xe.styleDefault,{family:Xe.familyDefault})};wle(function(t){G2=Cd(t.styleDefault,{family:Xe.familyDefault})});vD();function V2(t,r){return(lD[t]||{})[r]}function Dle(t,r){return(cD[t]||{})[r]}function Ci(t,r){return(fD[t]||{})[r]}function pD(t){return uD[t]||{prefix:null,iconName:null}}function jle(t){var r=dD[t],n=V2("fas",t);return r||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function ui(){return G2}var _D=function(){return{prefix:null,iconName:null,rest:[]}};function Ple(t){var r=Lr,n=sD.reduce(function(i,o){return i[o]="".concat(Xe.cssPrefix,"-").concat(o),i},{});return GN.forEach(function(i){(t.includes(n[i])||t.some(function(o){return qle[i].includes(o)}))&&(r=i)}),r}function Cd(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=r.family,i=n===void 0?Lr:n,o=_le[i][t];if(i===Fl&&!t)return"fad";var l=NI[i][t]||NI[i][o],c=t in Ua.styles?t:null,d=l||c||null;return d}function Ble(t){var r=[],n=null;return t.forEach(function(i){var o=Nle(Xe.cssPrefix,i);o?n=o:i&&r.push(i)}),{iconName:n,rest:r}}function UI(t){return t.sort().filter(function(r,n,i){return i.indexOf(r)===n})}var FI=QN.concat(VN);function Md(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=r.skipLookups,i=n===void 0?!1:n,o=null,l=UI(t.filter(function(y){return FI.includes(y)})),c=UI(t.filter(function(y){return!FI.includes(y)})),d=l.filter(function(y){return o=y,!CN.includes(y)}),f=Rd(d,1),v=f[0],p=v===void 0?null:v,g=Ple(l),h=Oe(Oe({},Ble(c)),{},{prefix:Cd(p,{family:g})});return Oe(Oe(Oe({},h),Hle({values:t,family:g,styles:El,config:Xe,canonical:h,givenPrefix:o})),Ule(i,o,h))}function Ule(t,r,n){var i=n.prefix,o=n.iconName;if(t||!i||!o)return{prefix:i,iconName:o};var l=r==="fa"?pD(o):{},c=Ci(i,o);return o=l.iconName||c||o,i=l.prefix||i,i==="far"&&!El.far&&El.fas&&!Xe.autoFetchSvg&&(i="fas"),{prefix:i,iconName:o}}var Fle=GN.filter(function(t){return t!==Lr||t!==Fl}),$le=Object.keys(z1).filter(function(t){return t!==Lr}).map(function(t){return Object.keys(z1[t])}).flat();function Hle(t){var r=t.values,n=t.family,i=t.canonical,o=t.givenPrefix,l=o===void 0?"":o,c=t.styles,d=c===void 0?{}:c,f=t.config,v=f===void 0?{}:f,p=n===Fl,g=r.includes("fa-duotone")||r.includes("fad"),h=v.familyDefault==="duotone",y=i.prefix==="fad"||i.prefix==="fa-duotone";if(!p&&(g||h||y)&&(i.prefix="fad"),(r.includes("fa-brands")||r.includes("fab"))&&(i.prefix="fab"),!i.prefix&&Fle.includes(n)){var b=Object.keys(d).find(function(w){return $le.includes(w)});if(b||v.autoFetchSvg){var k=vse.get(n).defaultShortPrefixId;i.prefix=k,i.iconName=Ci(i.prefix,i.iconName)||i.iconName}}return(i.prefix==="fa"||l==="fa")&&(i.prefix=ui()||"fas"),i}var Gle=(function(){function t(){joe(this,t),this.definitions={}}return Boe(t,[{key:"add",value:function(){for(var n=this,i=arguments.length,o=new Array(i),l=0;l<i;l++)o[l]=arguments[l];var c=o.reduce(this._pullDefinitions,{});Object.keys(c).forEach(function(d){n.definitions[d]=Oe(Oe({},n.definitions[d]||{}),c[d]),q1(d,c[d]);var f=F2[Lr][d];f&&q1(f,c[d]),vD()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,i){var o=i.prefix&&i.iconName&&i.icon?{0:i}:i;return Object.keys(o).map(function(l){var c=o[l],d=c.prefix,f=c.iconName,v=c.icon,p=v[2];n[d]||(n[d]={}),p.length>0&&p.forEach(function(g){typeof g=="string"&&(n[d][g]=v)}),n[d][f]=v}),n}}])})(),$I=[],$o={},Go={},Vle=Object.keys(Go);function Qle(t,r){var n=r.mixoutsTo;return $I=t,$o={},Object.keys(Go).forEach(function(i){Vle.indexOf(i)===-1&&delete Go[i]}),$I.forEach(function(i){var o=i.mixout?i.mixout():{};if(Object.keys(o).forEach(function(c){typeof o[c]=="function"&&(n[c]=o[c]),ju(o[c])==="object"&&Object.keys(o[c]).forEach(function(d){n[c]||(n[c]={}),n[c][d]=o[c][d]})}),i.hooks){var l=i.hooks();Object.keys(l).forEach(function(c){$o[c]||($o[c]=[]),$o[c].push(l[c])})}i.provides&&i.provides(Go)}),n}function L1(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];var l=$o[t]||[];return l.forEach(function(c){r=c.apply(null,[r].concat(i))}),r}function qi(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];var o=$o[t]||[];o.forEach(function(l){l.apply(null,n)})}function di(){var t=arguments[0],r=Array.prototype.slice.call(arguments,1);return Go[t]?Go[t].apply(null,r):void 0}function N1(t){t.prefix==="fa"&&(t.prefix="fas");var r=t.iconName,n=t.prefix||ui();if(r)return r=Ci(n,r)||r,PI(gD.definitions,n,r)||PI(Ua.styles,n,r)}var gD=new Gle,Kle=function(){Xe.autoReplaceSvg=!1,Xe.observeMutations=!1,qi("noAuto")},Zle={i2svg:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Pn?(qi("beforeI2svg",r),di("pseudoElements2svg",r),di("i2svg",r)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=r.autoReplaceSvgRoot;Xe.autoReplaceSvg===!1&&(Xe.autoReplaceSvg=!0),Xe.observeMutations=!0,Mle(function(){Yle({autoReplaceSvgRoot:n}),qi("watch",r)})}},Wle={icon:function(r){if(r===null)return null;if(ju(r)==="object"&&r.prefix&&r.iconName)return{prefix:r.prefix,iconName:Ci(r.prefix,r.iconName)||r.iconName};if(Array.isArray(r)&&r.length===2){var n=r[1].indexOf("fa-")===0?r[1].slice(3):r[1],i=Cd(r[0]);return{prefix:i,iconName:Ci(i,n)||n}}if(typeof r=="string"&&(r.indexOf("".concat(Xe.cssPrefix,"-"))>-1||r.match(gle))){var o=Md(r.split(" "),{skipLookups:!0});return{prefix:o.prefix||ui(),iconName:Ci(o.prefix,o.iconName)||o.iconName}}if(typeof r=="string"){var l=ui();return{prefix:l,iconName:Ci(l,r)||r}}}},Ea={noAuto:Kle,config:Xe,dom:Zle,parse:Wle,library:gD,findIconDefinition:N1,toHtml:Hl},Yle=function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=r.autoReplaceSvgRoot,i=n===void 0?Kt:n;(Object.keys(Ua.styles).length>0||Xe.autoFetchSvg)&&Pn&&Xe.autoReplaceSvg&&Ea.dom.i2svg({node:i})};function Id(t,r){return Object.defineProperty(t,"abstract",{get:r}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(i){return Hl(i)})}}),Object.defineProperty(t,"node",{get:function(){if(Pn){var i=Kt.createElement("div");return i.innerHTML=t.html,i.children}}}),t}function Xle(t){var r=t.children,n=t.main,i=t.mask,o=t.attributes,l=t.styles,c=t.transform;if(H2(c)&&n.found&&!i.found){var d=n.width,f=n.height,v={x:d/f/2,y:.5};o.style=Od(Oe(Oe({},l),{},{"transform-origin":"".concat(v.x+c.x/16,"em ").concat(v.y+c.y/16,"em")}))}return[{tag:"svg",attributes:o,children:r}]}function Jle(t){var r=t.prefix,n=t.iconName,i=t.children,o=t.attributes,l=t.symbol,c=l===!0?"".concat(r,"-").concat(Xe.cssPrefix,"-").concat(n):l;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:Oe(Oe({},o),{},{id:c}),children:i}]}]}function ece(t){var r=["aria-label","aria-labelledby","title","role"];return r.some(function(n){return n in t})}function Q2(t){var r=t.icons,n=r.main,i=r.mask,o=t.prefix,l=t.iconName,c=t.transform,d=t.symbol,f=t.maskId,v=t.extra,p=t.watchable,g=p===void 0?!1:p,h=i.found?i:n,y=h.width,b=h.height,k=[Xe.replacementClass,l?"".concat(Xe.cssPrefix,"-").concat(l):""].filter(function(A){return v.classes.indexOf(A)===-1}).filter(function(A){return A!==""||!!A}).concat(v.classes).join(" "),w={children:[],attributes:Oe(Oe({},v.attributes),{},{"data-prefix":o,"data-icon":l,class:k,role:v.attributes.role||"img",viewBox:"0 0 ".concat(y," ").concat(b)})};!ece(v.attributes)&&!v.attributes["aria-hidden"]&&(w.attributes["aria-hidden"]="true"),g&&(w.attributes[Ii]="");var E=Oe(Oe({},w),{},{prefix:o,iconName:l,main:n,mask:i,maskId:f,transform:c,symbol:d,styles:Oe({},v.styles)}),S=i.found&&n.found?di("generateAbstractMask",E)||{children:[],attributes:{}}:di("generateAbstractIcon",E)||{children:[],attributes:{}},T=S.children,x=S.attributes;return E.children=T,E.attributes=x,d?Jle(E):Xle(E)}function HI(t){var r=t.content,n=t.width,i=t.height,o=t.transform,l=t.extra,c=t.watchable,d=c===void 0?!1:c,f=Oe(Oe({},l.attributes),{},{class:l.classes.join(" ")});d&&(f[Ii]="");var v=Oe({},l.styles);H2(o)&&(v.transform=Rle({transform:o,width:n,height:i}),v["-webkit-transform"]=v.transform);var p=Od(v);p.length>0&&(f.style=p);var g=[];return g.push({tag:"span",attributes:f,children:[r]}),g}function tce(t){var r=t.content,n=t.extra,i=Oe(Oe({},n.attributes),{},{class:n.classes.join(" ")}),o=Od(n.styles);o.length>0&&(i.style=o);var l=[];return l.push({tag:"span",attributes:i,children:[r]}),l}var p1=Ua.styles;function D1(t){var r=t[0],n=t[1],i=t.slice(4),o=Rd(i,1),l=o[0],c=null;return Array.isArray(l)?c={tag:"g",attributes:{class:"".concat(Xe.cssPrefix,"-").concat(d1.GROUP)},children:[{tag:"path",attributes:{class:"".concat(Xe.cssPrefix,"-").concat(d1.SECONDARY),fill:"currentColor",d:l[0]}},{tag:"path",attributes:{class:"".concat(Xe.cssPrefix,"-").concat(d1.PRIMARY),fill:"currentColor",d:l[1]}}]}:c={tag:"path",attributes:{fill:"currentColor",d:l}},{found:!0,width:r,height:n,icon:c}}var rce={found:!1,width:512,height:512};function ace(t,r){!XN&&!Xe.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(r,'" is missing.'))}function j1(t,r){var n=r;return r==="fa"&&Xe.styleDefault!==null&&(r=ui()),new Promise(function(i,o){if(n==="fa"){var l=pD(t)||{};t=l.iconName||t,r=l.prefix||r}if(t&&r&&p1[r]&&p1[r][t]){var c=p1[r][t];return i(D1(c))}ace(t,r),i(Oe(Oe({},rce),{},{icon:Xe.showMissingIcons&&t?di("missingIconAbstract")||{}:{}}))})}var GI=function(){},P1=Xe.measurePerformance&&Tu&&Tu.mark&&Tu.measure?Tu:{mark:GI,measure:GI},pl='FA "7.0.1"',nce=function(r){return P1.mark("".concat(pl," ").concat(r," begins")),function(){return mD(r)}},mD=function(r){P1.mark("".concat(pl," ").concat(r," ends")),P1.measure("".concat(pl," ").concat(r),"".concat(pl," ").concat(r," begins"),"".concat(pl," ").concat(r," ends"))},K2={begin:nce,end:mD},Iu=function(){};function VI(t){var r=t.getAttribute?t.getAttribute(Ii):null;return typeof r=="string"}function ice(t){var r=t.getAttribute?t.getAttribute(B2):null,n=t.getAttribute?t.getAttribute(U2):null;return r&&n}function oce(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(Xe.replacementClass)}function sce(){if(Xe.autoReplaceSvg===!0)return qu.replace;var t=qu[Xe.autoReplaceSvg];return t||qu.replace}function lce(t){return Kt.createElementNS("http://www.w3.org/2000/svg",t)}function cce(t){return Kt.createElement(t)}function hD(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=r.ceFn,i=n===void 0?t.tag==="svg"?lce:cce:n;if(typeof t=="string")return Kt.createTextNode(t);var o=i(t.tag);Object.keys(t.attributes||[]).forEach(function(c){o.setAttribute(c,t.attributes[c])});var l=t.children||[];return l.forEach(function(c){o.appendChild(hD(c,{ceFn:i}))}),o}function uce(t){var r=" ".concat(t.outerHTML," ");return r="".concat(r,"Font Awesome fontawesome.com "),r}var qu={replace:function(r){var n=r[0];if(n.parentNode)if(r[1].forEach(function(o){n.parentNode.insertBefore(hD(o),n)}),n.getAttribute(Ii)===null&&Xe.keepOriginalSource){var i=Kt.createComment(uce(n));n.parentNode.replaceChild(i,n)}else n.remove()},nest:function(r){var n=r[0],i=r[1];if(~$2(n).indexOf(Xe.replacementClass))return qu.replace(r);var o=new RegExp("".concat(Xe.cssPrefix,"-.*"));if(delete i[0].attributes.id,i[0].attributes.class){var l=i[0].attributes.class.split(" ").reduce(function(d,f){return f===Xe.replacementClass||f.match(o)?d.toSvg.push(f):d.toNode.push(f),d},{toNode:[],toSvg:[]});i[0].attributes.class=l.toSvg.join(" "),l.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",l.toNode.join(" "))}var c=i.map(function(d){return Hl(d)}).join(`
|
|
632
632
|
`);n.setAttribute(Ii,""),n.innerHTML=c}};function QI(t){t()}function yD(t,r){var n=typeof r=="function"?r:Iu;if(t.length===0)n();else{var i=QI;Xe.mutateApproach===vle&&(i=ci.requestAnimationFrame||QI),i(function(){var o=sce(),l=K2.begin("mutate");t.map(o),l(),n()})}}var Z2=!1;function bD(){Z2=!0}function B1(){Z2=!1}var Bu=null;function KI(t){if(MI&&Xe.observeMutations){var r=t.treeCallback,n=r===void 0?Iu:r,i=t.nodeCallback,o=i===void 0?Iu:i,l=t.pseudoElementsCallback,c=l===void 0?Iu:l,d=t.observeMutationsRoot,f=d===void 0?Kt:d;Bu=new MI(function(v){if(!Z2){var p=ui();_s(v).forEach(function(g){if(g.type==="childList"&&g.addedNodes.length>0&&!VI(g.addedNodes[0])&&(Xe.searchPseudoElements&&c(g.target),n(g.target)),g.type==="attributes"&&g.target.parentNode&&Xe.searchPseudoElements&&c([g.target],!0),g.type==="attributes"&&VI(g.target)&&~yle.indexOf(g.attributeName))if(g.attributeName==="class"&&ice(g.target)){var h=Md($2(g.target)),y=h.prefix,b=h.iconName;g.target.setAttribute(B2,y||p),b&&g.target.setAttribute(U2,b)}else oce(g.target)&&o(g.target)})}}),Pn&&Bu.observe(f,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function dce(){Bu&&Bu.disconnect()}function fce(t){var r=t.getAttribute("style"),n=[];return r&&(n=r.split(";").reduce(function(i,o){var l=o.split(":"),c=l[0],d=l.slice(1);return c&&d.length>0&&(i[c]=d.join(":").trim()),i},{})),n}function vce(t){var r=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),i=t.innerText!==void 0?t.innerText.trim():"",o=Md($2(t));return o.prefix||(o.prefix=ui()),r&&n&&(o.prefix=r,o.iconName=n),o.iconName&&o.prefix||(o.prefix&&i.length>0&&(o.iconName=Dle(o.prefix,t.innerText)||V2(o.prefix,oD(t.innerText))),!o.iconName&&Xe.autoFetchSvg&&t.firstChild&&t.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=t.firstChild.data)),o}function pce(t){var r=_s(t.attributes).reduce(function(n,i){return n.name!=="class"&&n.name!=="style"&&(n[i.name]=i.value),n},{});return r}function _ce(){return{iconName:null,prefix:null,transform:en,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function ZI(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=vce(t),i=n.iconName,o=n.prefix,l=n.rest,c=pce(t),d=L1("parseNodeAttributes",{},t),f=r.styleParser?fce(t):[];return Oe({iconName:i,prefix:o,transform:en,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:l,styles:f,attributes:c}},d)}var gce=Ua.styles;function kD(t){var r=Xe.autoReplaceSvg==="nest"?ZI(t,{styleParser:!1}):ZI(t);return~r.extra.classes.indexOf(eD)?di("generateLayersText",t,r):di("generateSvgReplacementMutation",t,r)}function mce(){return[].concat(Ha(VN),Ha(QN))}function WI(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Pn)return Promise.resolve();var n=Kt.documentElement.classList,i=function(g){return n.add("".concat(LI,"-").concat(g))},o=function(g){return n.remove("".concat(LI,"-").concat(g))},l=Xe.autoFetchSvg?mce():CN.concat(Object.keys(gce));l.includes("fa")||l.push("fa");var c=[".".concat(eD,":not([").concat(Ii,"])")].concat(l.map(function(p){return".".concat(p,":not([").concat(Ii,"])")})).join(", ");if(c.length===0)return Promise.resolve();var d=[];try{d=_s(t.querySelectorAll(c))}catch{}if(d.length>0)i("pending"),o("complete");else return Promise.resolve();var f=K2.begin("onTree"),v=d.reduce(function(p,g){try{var h=kD(g);h&&p.push(h)}catch(y){XN||y.name==="MissingIcon"&&console.error(y)}return p},[]);return new Promise(function(p,g){Promise.all(v).then(function(h){yD(h,function(){i("active"),i("complete"),o("pending"),typeof r=="function"&&r(),f(),p()})}).catch(function(h){f(),g(h)})})}function hce(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;kD(t).then(function(n){n&&yD([n],r)})}function yce(t){return function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=(r||{}).icon?r:N1(r||{}),o=n.mask;return o&&(o=(o||{}).icon?o:N1(o||{})),t(i,Oe(Oe({},n),{},{mask:o}))}}var bce=function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.transform,o=i===void 0?en:i,l=n.symbol,c=l===void 0?!1:l,d=n.mask,f=d===void 0?null:d,v=n.maskId,p=v===void 0?null:v,g=n.classes,h=g===void 0?[]:g,y=n.attributes,b=y===void 0?{}:y,k=n.styles,w=k===void 0?{}:k;if(r){var E=r.prefix,S=r.iconName,T=r.icon;return Id(Oe({type:"icon"},r),function(){return qi("beforeDOMElementCreation",{iconDefinition:r,params:n}),Q2({icons:{main:D1(T),mask:f?D1(f.icon):{found:!1,width:null,height:null,icon:{}}},prefix:E,iconName:S,transform:Oe(Oe({},en),o),symbol:c,maskId:p,extra:{attributes:b,styles:w,classes:h}})})}},kce={mixout:function(){return{icon:yce(bce)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=WI,n.nodeCallback=hce,n}}},provides:function(r){r.i2svg=function(n){var i=n.node,o=i===void 0?Kt:i,l=n.callback,c=l===void 0?function(){}:l;return WI(o,c)},r.generateSvgReplacementMutation=function(n,i){var o=i.iconName,l=i.prefix,c=i.transform,d=i.symbol,f=i.mask,v=i.maskId,p=i.extra;return new Promise(function(g,h){Promise.all([j1(o,l),f.iconName?j1(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(y){var b=Rd(y,2),k=b[0],w=b[1];g([n,Q2({icons:{main:k,mask:w},prefix:l,iconName:o,transform:c,symbol:d,maskId:v,extra:p,watchable:!0})])}).catch(h)})},r.generateAbstractIcon=function(n){var i=n.children,o=n.attributes,l=n.main,c=n.transform,d=n.styles,f=Od(d);f.length>0&&(o.style=f);var v;return H2(c)&&(v=di("generateAbstractTransformGrouping",{main:l,transform:c,containerWidth:l.width,iconWidth:l.width})),i.push(v||l.icon),{children:i,attributes:o}}}},Sce={mixout:function(){return{layer:function(n){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=i.classes,l=o===void 0?[]:o;return Id({type:"layer"},function(){qi("beforeDOMElementCreation",{assembler:n,params:i});var c=[];return n(function(d){Array.isArray(d)?d.map(function(f){c=c.concat(f.abstract)}):c=c.concat(d.abstract)}),[{tag:"span",attributes:{class:["".concat(Xe.cssPrefix,"-layers")].concat(Ha(l)).join(" ")},children:c}]})}}}},Ece={mixout:function(){return{counter:function(n){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};i.title;var o=i.classes,l=o===void 0?[]:o,c=i.attributes,d=c===void 0?{}:c,f=i.styles,v=f===void 0?{}:f;return Id({type:"counter",content:n},function(){return qi("beforeDOMElementCreation",{content:n,params:i}),tce({content:n.toString(),extra:{attributes:d,styles:v,classes:["".concat(Xe.cssPrefix,"-layers-counter")].concat(Ha(l))}})})}}}},wce={mixout:function(){return{text:function(n){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=i.transform,l=o===void 0?en:o,c=i.classes,d=c===void 0?[]:c,f=i.attributes,v=f===void 0?{}:f,p=i.styles,g=p===void 0?{}:p;return Id({type:"text",content:n},function(){return qi("beforeDOMElementCreation",{content:n,params:i}),HI({content:n,transform:Oe(Oe({},en),l),extra:{attributes:v,styles:g,classes:["".concat(Xe.cssPrefix,"-layers-text")].concat(Ha(d))}})})}}},provides:function(r){r.generateLayersText=function(n,i){var o=i.transform,l=i.extra,c=null,d=null;if(RN){var f=parseInt(getComputedStyle(n).fontSize,10),v=n.getBoundingClientRect();c=v.width/f,d=v.height/f}return Promise.resolve([n,HI({content:n.innerHTML,width:c,height:d,transform:o,extra:l,watchable:!0})])}}},SD=new RegExp('"',"ug"),YI=[1105920,1112319],XI=Oe(Oe(Oe(Oe({},{FontAwesome:{normal:"fas",400:"fas"}}),fse),dle),kse),U1=Object.keys(XI).reduce(function(t,r){return t[r.toLowerCase()]=XI[r],t},{}),Tce=Object.keys(U1).reduce(function(t,r){var n=U1[r];return t[r]=n[900]||Ha(Object.entries(n))[0][1],t},{});function Ace(t){var r=t.replace(SD,"");return oD(Ha(r)[0]||"")}function xce(t){var r=t.getPropertyValue("font-feature-settings").includes("ss01"),n=t.getPropertyValue("content"),i=n.replace(SD,""),o=i.codePointAt(0),l=o>=YI[0]&&o<=YI[1],c=i.length===2?i[0]===i[1]:!1;return l||c||r}function zce(t,r){var n=t.replace(/^['"]|['"]$/g,"").toLowerCase(),i=parseInt(r),o=isNaN(i)?"normal":i;return(U1[n]||{})[o]||Tce[n]}function JI(t,r){var n="".concat(fle).concat(r.replace(":","-"));return new Promise(function(i,o){if(t.getAttribute(n)!==null)return i();var l=_s(t.children),c=l.filter(function(O){return O.getAttribute(O1)===r})[0],d=ci.getComputedStyle(t,r),f=d.getPropertyValue("font-family"),v=f.match(mle),p=d.getPropertyValue("font-weight"),g=d.getPropertyValue("content");if(c&&!v)return t.removeChild(c),i();if(v&&g!=="none"&&g!==""){var h=d.getPropertyValue("content"),y=zce(f,p),b=Ace(h),k=v[0].startsWith("FontAwesome"),w=xce(d),E=V2(y,b),S=E;if(k){var T=jle(b);T.iconName&&T.prefix&&(E=T.iconName,y=T.prefix)}if(E&&!w&&(!c||c.getAttribute(B2)!==y||c.getAttribute(U2)!==S)){t.setAttribute(n,S),c&&t.removeChild(c);var x=_ce(),A=x.extra;A.attributes[O1]=r,j1(E,y).then(function(O){var M=Q2(Oe(Oe({},x),{},{icons:{main:O,mask:_D()},prefix:y,iconName:S,extra:A,watchable:!0})),I=Kt.createElementNS("http://www.w3.org/2000/svg","svg");r==="::before"?t.insertBefore(I,t.firstChild):t.appendChild(I),I.outerHTML=M.map(function(q){return Hl(q)}).join(`
|
|
633
633
|
`),t.removeAttribute(n),i()}).catch(o)}else i()}else i()})}function Rce(t){return Promise.all([JI(t,"::before"),JI(t,"::after")])}function Oce(t){return t.parentNode!==document.head&&!~ple.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(O1)&&(!t.parentNode||t.parentNode.tagName!=="svg")}var Cce=function(r){return!!r&&YN.some(function(n){return r.includes(n)})},Mce=function(r){if(!r)return[];var n=new Set,i=r.split(/,(?![^()]*\))/).map(function(f){return f.trim()});i=i.flatMap(function(f){return f.includes("(")?f:f.split(",").map(function(v){return v.trim()})});var o=Mu(i),l;try{for(o.s();!(l=o.n()).done;){var c=l.value;if(Cce(c)){var d=YN.reduce(function(f,v){return f.replace(v,"")},c);d!==""&&d!=="*"&&n.add(d)}}}catch(f){o.e(f)}finally{o.f()}return n};function eq(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(Pn){var n;if(r)n=t;else if(Xe.searchPseudoElementsFullScan)n=t.querySelectorAll("*");else{var i=new Set,o=Mu(document.styleSheets),l;try{for(o.s();!(l=o.n()).done;){var c=l.value;try{var d=Mu(c.cssRules),f;try{for(d.s();!(f=d.n()).done;){var v=f.value,p=Mce(v.selectorText),g=Mu(p),h;try{for(g.s();!(h=g.n()).done;){var y=h.value;i.add(y)}}catch(k){g.e(k)}finally{g.f()}}}catch(k){d.e(k)}finally{d.f()}}catch(k){Xe.searchPseudoElementsWarnings&&console.warn("Font Awesome: cannot parse stylesheet: ".concat(c.href," (").concat(k.message,`)
|
|
634
|
-
If it declares any Font Awesome CSS pseudo-elements, they will not be rendered as SVG icons. Add crossorigin="anonymous" to the <link>, enable searchPseudoElementsFullScan for slower but more thorough DOM parsing, or suppress this warning by setting searchPseudoElementsWarnings to false.`))}}}catch(k){o.e(k)}finally{o.f()}if(!i.size)return;var b=Array.from(i).join(", ");try{n=t.querySelectorAll(b)}catch{}}return new Promise(function(k,w){var E=_s(n).filter(Oce).map(Rce),S=K2.begin("searchPseudoElements");bD(),Promise.all(E).then(function(){S(),B1(),k()}).catch(function(){S(),B1(),w()})})}}var Ice={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=eq,n}}},provides:function(r){r.pseudoElements2svg=function(n){var i=n.node,o=i===void 0?Kt:i;Xe.searchPseudoElements&&eq(o)}}},tq=!1,qce={mixout:function(){return{dom:{unwatch:function(){bD(),tq=!0}}}},hooks:function(){return{bootstrap:function(){KI(L1("mutationObserverCallbacks",{}))},noAuto:function(){dce()},watch:function(n){var i=n.observeMutationsRoot;tq?B1():KI(L1("mutationObserverCallbacks",{observeMutationsRoot:i}))}}}},rq=function(r){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return r.toLowerCase().split(" ").reduce(function(i,o){var l=o.toLowerCase().split("-"),c=l[0],d=l.slice(1).join("-");if(c&&d==="h")return i.flipX=!0,i;if(c&&d==="v")return i.flipY=!0,i;if(d=parseFloat(d),isNaN(d))return i;switch(c){case"grow":i.size=i.size+d;break;case"shrink":i.size=i.size-d;break;case"left":i.x=i.x-d;break;case"right":i.x=i.x+d;break;case"up":i.y=i.y-d;break;case"down":i.y=i.y+d;break;case"rotate":i.rotate=i.rotate+d;break}return i},n)},Lce={mixout:function(){return{parse:{transform:function(n){return rq(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-transform");return o&&(n.transform=rq(o)),n}}},provides:function(r){r.generateAbstractTransformGrouping=function(n){var i=n.main,o=n.transform,l=n.containerWidth,c=n.iconWidth,d={transform:"translate(".concat(l/2," 256)")},f="translate(".concat(o.x*32,", ").concat(o.y*32,") "),v="scale(".concat(o.size/16*(o.flipX?-1:1),", ").concat(o.size/16*(o.flipY?-1:1),") "),p="rotate(".concat(o.rotate," 0 0)"),g={transform:"".concat(f," ").concat(v," ").concat(p)},h={transform:"translate(".concat(c/2*-1," -256)")},y={outer:d,inner:g,path:h};return{tag:"g",attributes:Oe({},y.outer),children:[{tag:"g",attributes:Oe({},y.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:Oe(Oe({},i.icon.attributes),y.path)}]}]}}}},_1={x:0,y:0,width:"100%",height:"100%"};function aq(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||r)&&(t.attributes.fill="black"),t}function Nce(t){return t.tag==="g"?t.children:[t]}var Dce={hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-mask"),l=o?Md(o.split(" ").map(function(c){return c.trim()})):_D();return l.prefix||(l.prefix=ui()),n.mask=l,n.maskId=i.getAttribute("data-fa-mask-id"),n}}},provides:function(r){r.generateAbstractMask=function(n){var i=n.children,o=n.attributes,l=n.main,c=n.mask,d=n.maskId,f=n.transform,v=l.width,p=l.icon,g=c.width,h=c.icon,y=zle({transform:f,containerWidth:g,iconWidth:v}),b={tag:"rect",attributes:Oe(Oe({},_1),{},{fill:"white"})},k=p.children?{children:p.children.map(aq)}:{},w={tag:"g",attributes:Oe({},y.inner),children:[aq(Oe({tag:p.tag,attributes:Oe(Oe({},p.attributes),y.path)},k))]},E={tag:"g",attributes:Oe({},y.outer),children:[w]},S="mask-".concat(d||DI()),T="clip-".concat(d||DI()),x={tag:"mask",attributes:Oe(Oe({},_1),{},{id:S,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[b,E]},A={tag:"defs",children:[{tag:"clipPath",attributes:{id:T},children:Nce(h)},x]};return i.push(A,{tag:"rect",attributes:Oe({fill:"currentColor","clip-path":"url(#".concat(T,")"),mask:"url(#".concat(S,")")},_1)}),{children:i,attributes:o}}}},jce={provides:function(r){var n=!1;ci.matchMedia&&(n=ci.matchMedia("(prefers-reduced-motion: reduce)").matches),r.missingIconAbstract=function(){var i=[],o={fill:"currentColor"},l={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};i.push({tag:"path",attributes:Oe(Oe({},o),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var c=Oe(Oe({},l),{},{attributeName:"opacity"}),d={tag:"circle",attributes:Oe(Oe({},o),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||d.children.push({tag:"animate",attributes:Oe(Oe({},l),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:Oe(Oe({},c),{},{values:"1;0;1;1;0;1;"})}),i.push(d),i.push({tag:"path",attributes:Oe(Oe({},o),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:Oe(Oe({},c),{},{values:"1;0;0;0;0;1;"})}]}),n||i.push({tag:"path",attributes:Oe(Oe({},o),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:Oe(Oe({},c),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:i}}}},Pce={hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-symbol"),l=o===null?!1:o===""?!0:o;return n.symbol=l,n}}}},Bce=[Cle,kce,Sce,Ece,wce,Ice,qce,Lce,Dce,jce,Pce];Qle(Bce,{mixoutsTo:Ea});Ea.noAuto;var Uce=Ea.config;Ea.library;Ea.dom;var ED=Ea.parse;Ea.findIconDefinition;Ea.toHtml;var Fce=Ea.icon;Ea.layer;Ea.text;Ea.counter;function $ce(t){return t=t-0,t===t}function wD(t){return $ce(t)?t:(t=t.replaceAll(/[_-]+(.)?/g,(r,n)=>n?n.toUpperCase():""),t.charAt(0).toLowerCase()+t.slice(1))}function Hce(t){return t.charAt(0).toUpperCase()+t.slice(1)}var Uo=new Map,Gce=1e3;function Vce(t){if(Uo.has(t))return Uo.get(t);const r={};let n=0;const i=t.length;for(;n<i;){const o=t.indexOf(";",n),l=o===-1?i:o,c=t.slice(n,l).trim();if(c){const d=c.indexOf(":");if(d>0){const f=c.slice(0,d).trim(),v=c.slice(d+1).trim();if(f&&v){const p=wD(f);r[p.startsWith("webkit")?Hce(p):p]=v}}}n=l+1}if(Uo.size===Gce){const o=Uo.keys().next().value;o&&Uo.delete(o)}return Uo.set(t,r),r}function TD(t,r,n={}){if(typeof r=="string")return r;const i=(r.children||[]).map(v=>TD(t,v)),o=r.attributes||{},l={};for(const[v,p]of Object.entries(o))switch(!0){case v==="class":{l.className=p,delete o.class;break}case v==="style":{l.style=Vce(String(p));break}case v.startsWith("aria-"):case v.startsWith("data-"):{l[v.toLowerCase()]=p;break}default:l[wD(v)]=p}const{style:c,"aria-label":d,...f}=n;return c&&(l.style=l.style?{...l.style,...c}:c),d&&(l["aria-label"]=d,l["aria-hidden"]="false"),t(r.tag,{...f,...l},...i)}var nq=(t,r)=>{const n=K.useId();return t||(r?n:void 0)},Qce=class{constructor(t="react-fontawesome"){this.enabled=!1;let r=!1;try{r=typeof process<"u"&&!1}catch{}this.scope=t,this.enabled=r}log(...t){this.enabled&&console.log(`[${this.scope}]`,...t)}warn(...t){this.enabled&&console.warn(`[${this.scope}]`,...t)}error(...t){this.enabled&&console.error(`[${this.scope}]`,...t)}},Kce="searchPseudoElementsFullScan"in Uce?"7.0.0":"6.0.0",Zce=Number.parseInt(Kce)>=7,wn={beat:"fa-beat",fade:"fa-fade",beatFade:"fa-beat-fade",bounce:"fa-bounce",shake:"fa-shake",spin:"fa-spin",spinPulse:"fa-spin-pulse",spinReverse:"fa-spin-reverse",pulse:"fa-pulse"},Wce={left:"fa-pull-left",right:"fa-pull-right"},Yce={90:"fa-rotate-90",180:"fa-rotate-180",270:"fa-rotate-270"},Xce={"2xs":"fa-2xs",xs:"fa-xs",sm:"fa-sm",lg:"fa-lg",xl:"fa-xl","2xl":"fa-2xl","1x":"fa-1x","2x":"fa-2x","3x":"fa-3x","4x":"fa-4x","5x":"fa-5x","6x":"fa-6x","7x":"fa-7x","8x":"fa-8x","9x":"fa-9x","10x":"fa-10x"},Tn={border:"fa-border",fixedWidth:"fa-fw",flip:"fa-flip",flipHorizontal:"fa-flip-horizontal",flipVertical:"fa-flip-vertical",inverse:"fa-inverse",rotateBy:"fa-rotate-by",swapOpacity:"fa-swap-opacity",widthAuto:"fa-width-auto"};function Jce(t){const{beat:r,fade:n,beatFade:i,bounce:o,shake:l,spin:c,spinPulse:d,spinReverse:f,pulse:v,fixedWidth:p,inverse:g,border:h,flip:y,size:b,rotation:k,pull:w,swapOpacity:E,rotateBy:S,widthAuto:T,className:x}=t,A=[];return x&&A.push(...x.split(" ")),r&&A.push(wn.beat),n&&A.push(wn.fade),i&&A.push(wn.beatFade),o&&A.push(wn.bounce),l&&A.push(wn.shake),c&&A.push(wn.spin),f&&A.push(wn.spinReverse),d&&A.push(wn.spinPulse),v&&A.push(wn.pulse),p&&A.push(Tn.fixedWidth),g&&A.push(Tn.inverse),h&&A.push(Tn.border),y===!0&&A.push(Tn.flip),(y==="horizontal"||y==="both")&&A.push(Tn.flipHorizontal),(y==="vertical"||y==="both")&&A.push(Tn.flipVertical),b!=null&&A.push(Xce[b]),k!=null&&k!==0&&A.push(Yce[k]),w!=null&&A.push(Wce[w]),E&&A.push(Tn.swapOpacity),Zce&&(S&&A.push(Tn.rotateBy),T&&A.push(Tn.widthAuto)),A}var eue=t=>typeof t=="object"&&"icon"in t&&!!t.icon;function iq(t){if(t)return eue(t)?t:ED.icon(t)}function tue(t){return Object.keys(t)}var oq=new Qce("FontAwesomeIcon"),AD={border:!1,className:"",mask:void 0,maskId:void 0,fixedWidth:!1,inverse:!1,flip:!1,icon:void 0,listItem:!1,pull:void 0,pulse:!1,rotation:void 0,rotateBy:!1,size:void 0,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:void 0,transform:void 0,swapOpacity:!1,widthAuto:!1},rue=new Set(Object.keys(AD)),wr=sr.forwardRef((t,r)=>{const n={...AD,...t},{icon:i,mask:o,symbol:l,title:c,titleId:d,maskId:f,transform:v}=n,p=nq(f,!!o),g=nq(d,!!c),h=iq(i);if(!h)return oq.error("Icon lookup is undefined",i),null;const y=Jce(n),b=typeof v=="string"?ED.transform(v):v,k=iq(o),w=Fce(h,{...y.length>0&&{classes:y},...b&&{transform:b},...k&&{mask:k},symbol:l,title:c,titleId:g,maskId:p});if(!w)return oq.error("Could not find icon",h),null;const{abstract:E}=w,S={ref:r};for(const T of tue(n))rue.has(T)||(S[T]=n[T]);return aue(E[0],S)});wr.displayName="FontAwesomeIcon";var aue=TD.bind(null,sr.createElement);function Li(t){const{children:r,item:n,onClick:i,title:o,className:l,...c}=t;return W.jsx("button",{type:"button",className:`${l} ${o?"tooltip":""}`,"data-tip":o,...c,onClick:async()=>await i?.(n),children:r})}const W2=K.memo(({buttonChildren:t,buttonStyle:r,buttonDisabled:n,children:i})=>{const[o,l]=K.useState(!1);return W.jsxs(W.Fragment,{children:[W.jsx(Li,{item:!o,onClick:l,className:`btn${r?` ${r}`:""}`,disabled:n,children:t}),o&&D2.createPortal(W.jsx("dialog",{className:"modal modal-bottom sm:modal-middle",open:!0,onClick:c=>{c.target.tagName!=="INPUT"&&l(!1)},children:W.jsx("ul",{className:"modal-box flex-nowrap p-1 w-auto! menu",style:{scrollbarWidth:"thin"},children:i})}),document.body)]})}),sq={bg:"Български",ca:"Català","zh-CN":"简体中文",cs:"Česky",da:"Dansk",de:"Deutsch",es:"Español",eu:"Euskera",fi:"Suomi",fr:"Français",hu:"Magyar",it:"Italiano",ja:"日本語",ko:"한국어",nl:"Nederlands",no:"Norsk",pl:"Polski",ptbr:"Brazilian Portuguese",ru:"Русский",sv:"Svenska",tr:"Türkçe",zh:"繁體中文",ua:"Українська",en:"English"},nue=K.memo(()=>{const{i18n:t}=Yi(),r=sq[t.language]?t.language:t.language.split("-")[0],n=K.useMemo(()=>{const i=[];for(const o in t.options.resources??[])i.push(W.jsx("li",{onClick:async()=>await t.changeLanguage(o),onKeyUp:async l=>{l.key==="enter"&&await t.changeLanguage(o)},children:W.jsxs("span",{className:`dropdown-item${o===r?" menu-active":""}`,children:[sq[o],o==="en"?null:W.jsx("span",{className:"text-xs text-warning",children:"AI"})]})},o));return i},[r,t.changeLanguage,t.options.resources]);return W.jsx(W2,{buttonChildren:r,buttonStyle:"btn-outline btn-primary",children:n})}),iue=/(yes|true|1)/.test(DP),oue=4401,sue=3e3,lue=10,lq=500,cue=2e4,xD="__WINDFRONT_WS_MANAGER__";class uue{#a=[];#r;#e=!1;#t=!1;constructor(){for(let r=0;r<pa.length;r++)this.#a.push({idx:r,socket:void 0,attempts:0,reconnectTimer:void 0,transactionPrefix:YK(5),transactionNumber:1,pending:new Map,deviceQueue:[],logQueue:[],metricsMessagesSent:0,metricsBytesSent:0,metricsMessagesReceived:0,metricsMessagesBridge:0,metricsMessagesDevice:0,metricsBytesReceived:0,metricsReconnects:0,metricsLastMessageTs:0,dirtyMetrics:!1});window.addEventListener("beforeunload",()=>{this.#s()}),window.addEventListener("pagehide",()=>{this.#s()})}start(){if(!this.#t)for(const r of this.#a)this.#l(r)}destroy(r){if(!this.#e){this.#e=!0,this.#t=!0,this.#r!==void 0&&(cancelAnimationFrame(this.#r),this.#r=void 0),this.#o(!0);for(const n of this.#a){if(n.reconnectTimer!==void 0&&(clearTimeout(n.reconnectTimer),n.reconnectTimer=void 0),n.socket){try{n.socket.close(4e3,r)}catch{}n.socket=void 0}for(const[,i]of n.pending)clearTimeout(i.timeoutId),i.reject(new Error("WebSocket manager destroyed"));n.pending.clear(),Ct.getState().setPendingRequestsCount(n.idx,0)}}}#s(){if(!(this.#e||this.#t)){this.#t=!0,this.#r!==void 0&&(cancelAnimationFrame(this.#r),this.#r=void 0),this.#o(!0);for(const r of this.#a)if(r.reconnectTimer!==void 0&&(clearTimeout(r.reconnectTimer),r.reconnectTimer=void 0),r.socket)try{r.socket.close(4001,"page-unload")}catch{}}}getTransactionPrefix(r){return this.#a[r].transactionPrefix}async sendMessage(r,n,i){if(this.#e)return;const o=this.#a[r];if(!o){console.error(`Unknown source index ${r}`);return}if(!o.socket||o.socket.readyState!==WebSocket.OPEN){Ct.getState().addToast({sourceIdx:r,topic:n,status:"error",error:"Cannot send, WebSocket not open"});return}if(n.startsWith("bridge/request/")){if(i!==""&&typeof i=="string"){console.error("Only `Record<string, unknown>` or empty string payloads allowed");return}const l=`${o.transactionPrefix}-${o.transactionNumber++}`,c=PM({topic:n,payload:i===""?{transaction:l}:{...i,transaction:l}});try{await this.#p(r,o,l,c)}catch(d){console.error(`Failed bridge API call (${Xa[r]} | ${r})`,d.message,d.cause)}return}try{const l=PM({topic:n,payload:i});console.log(`Calling API (${Xa[r]} | ${r}):`,l),this.#i(o,{level:"debug",message:`frontend:api: Sending ${l}`,namespace:"frontend:api"}),o.socket.send(l),o.metricsMessagesSent++,o.metricsBytesSent+=l.length,o.dirtyMetrics=!0,this.#n()}catch(l){console.error(`Failed API call (${Xa[r]} | ${r})`,l)}}#u(r){const n=pa[r],i=window.location.protocol==="https:"?"wss":"ws";let o=new URL(`${i}://${n}`);if(o.hostname!=="localhost"&&iue){const c=o.host+(o.pathname!=="/"?o.pathname:"");o=new URL(`${i}://${window.location.host}${window.location.pathname}${window.location.pathname.endsWith("/")?"":"/"}ws-proxy/${c}`)}if(!!ta.get(`${IM}_${r}`)){const c=new URLSearchParams(window.location.search).get("token")??ta.get(`${_l}_${r}`);if(!c){Ct.getState().setAuthRequired(r,!0);return}o.searchParams.append("token",c)}return o.toString()}#l(r){if(this.#e||this.#t||r.socket)return;const n=this.#u(r.idx);if(n)try{r.socket=new WebSocket(n),Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.CONNECTING),r.socket.addEventListener("open",()=>this.#d(r)),r.socket.addEventListener("message",i=>this.#_(r,i)),r.socket.addEventListener("close",i=>this.#f(r,i)),r.socket.addEventListener("error",()=>this.#v(r))}catch(i){console.error("Failed to create WebSocket",i),this.#c(r)}}#d(r){this.#e||this.#t||(r.attempts=0,Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.OPEN),console.log("WebSocket opened",r))}#f(r,n){if(this.#e)return;Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.CLOSED),console.log("WebSocket closed",r,n);const i=n.code===oue;i&&(ta.set(`${IM}_${r.idx}`,!0),ta.remove(`${_l}_${r.idx}`),Ct.getState().setAuthRequired(r.idx,!0));for(const[,o]of r.pending)clearTimeout(o.timeoutId),o.reject(new Error("WebSocket closed"));r.pending.clear(),Ct.getState().setPendingRequestsCount(r.idx,0),i?r.socket=void 0:this.#c(r)}#v(r){this.#e||this.#t||(console.log("WebSocket error",r),this.#i(r,{level:"debug",message:"frontend:ws: Failed to connect to WebSocket",namespace:"frontend:ws"}))}#c(r){if(!(this.#e||this.#t)){if(r.attempts>=lue){this.#i(r,{level:"error",message:`frontend:ws: Failed to connect to WebSocket after ${r.attempts} tries`,namespace:"frontend:ws"});return}r.reconnectTimer===void 0&&(this.#n(),r.reconnectTimer=window.setTimeout(()=>{if(r.reconnectTimer=void 0,!(this.#e||this.#t)){if(r.socket){try{r.socket.close()}catch{}r.socket=void 0}r.attempts++,r.metricsReconnects++,r.dirtyMetrics=!0,console.log("WebSocket reconnect",r),Ct.getState().addToast({sourceIdx:r.idx,topic:"WebSocket",status:"ok",error:"Reconnecting..."}),this.#l(r)}},sue))}}#p(r,n,i,o){return new Promise((l,c)=>{if(this.#e||this.#t)return c(new Error("WebSocket manager destroyed/shutting down"));if(!n.socket||n.socket.readyState!==WebSocket.OPEN)return c(new Error("WebSocket not open"));const d=window.setTimeout(()=>{const f=n.pending.get(i);f&&(n.pending.delete(i),Ct.getState().setPendingRequestsCount(r,n.pending.size),f.reject(new Error("Request timed out",{cause:i})))},cue);n.pending.set(i,{resolve:l,reject:c,timeoutId:d}),Ct.getState().setPendingRequestsCount(r,n.pending.size);try{console.log(`Calling bridge API (${Xa[r]} | ${r}):`,o),this.#i(n,{level:"debug",message:`frontend:api:bridge: Sending ${o}`,namespace:"frontend:api:bridge"}),n.socket.send(o),n.metricsMessagesSent++,n.metricsBytesSent+=o.length,n.dirtyMetrics=!0,this.#n()}catch(f){clearTimeout(d),n.pending.delete(i),Ct.getState().setPendingRequestsCount(r,n.pending.size),c(f)}})}#_(r,n){if(this.#e||this.#t||typeof n.data!="string")return;const i=n.data;let o;try{o=JSON.parse(i)}catch(l){this.#i(r,{level:"error",message:`frontend:ws: parse error ${l.message}`,namespace:"frontend:ws"});return}if(r.metricsMessagesReceived++,r.metricsBytesReceived+=i.length,r.metricsLastMessageTs=Date.now(),r.dirtyMetrics=!0,o.topic.endsWith(dN)){Ct.getState().updateAvailability(r.idx,o),this.#n();return}if(o.topic.startsWith("bridge/")){this.#g(r,o),r.metricsMessagesBridge++,this.#n();return}r.metricsMessagesDevice++,this.#h(r,o)}#g(r,n){const i=Ct.getState();switch(n.topic){case"bridge/info":{i.setBridgeInfo(r.idx,n.payload);break}case"bridge/state":{i.setBridgeState(r.idx,n.payload);break}case"bridge/health":{i.setBridgeHealth(r.idx,n.payload);break}case"bridge/definitions":{i.setBridgeDefinitions(r.idx,n.payload);break}case"bridge/devices":{i.setDevices(r.idx,n.payload);break}case"bridge/groups":{i.setGroups(r.idx,n.payload);break}case"bridge/converters":{i.setConverters(r.idx,n.payload);break}case"bridge/extensions":{i.setExtensions(r.idx,n.payload);break}case"bridge/logging":{const o=n.payload;this.#i(r,o);break}case"bridge/response/networkmap":{const o=n.payload;i.setNetworkMap(r.idx,o.status==="ok"?o.data:void 0);break}case"bridge/response/touchlink/scan":{const{status:o,data:l}=n.payload;i.setTouchlinkScan(r.idx,o==="ok"?{inProgress:!1,devices:l.found}:{inProgress:!1,devices:[]});break}case"bridge/response/touchlink/identify":{i.setTouchlinkIdentifyInProgress(r.idx,!1);break}case"bridge/response/touchlink/factory_reset":{i.setTouchlinkResetInProgress(r.idx,!1);break}case"bridge/response/backup":{const o=n.payload;i.setBackup(r.idx,o.data.zip);break}case"bridge/response/device/generate_external_definition":{const o=n.payload;o.status==="ok"&&i.addGeneratedExternalDefinition(r.idx,o.data);break}}n.topic.startsWith("bridge/response/")&&this.#m(r,n)}#m(r,n){const i=Ct.getState(),o=n.payload,l=o.transaction;if(l){const c=r.pending.get(l);c&&(clearTimeout(c.timeoutId),o.status==="ok"||o.status==null?c.resolve():c.reject(new Error(o.error??"Unknown error",{cause:l})),r.pending.delete(l),i.setPendingRequestsCount(r.idx,r.pending.size))}i.addToast({sourceIdx:r.idx,topic:n.topic.replace("bridge/response/",""),status:o.status,error:"error"in o?o.error:void 0,transaction:l})}#h(r,n){r.deviceQueue.push(n),r.deviceQueue.length>=lq?queueMicrotask(()=>this.#o()):this.#n()}#i(r,n){r.logQueue.push({...n,timestamp:new Date().toLocaleString()}),r.logQueue.length>=lq?queueMicrotask(()=>this.#o()):this.#n()}#n(){this.#r===void 0&&(this.#r=requestAnimationFrame(()=>{this.#r=void 0,this.#o()}))}#o(r=!1){if(this.#e&&!r)return;const n=Ct.getState();for(const i of this.#a){if(i.deviceQueue.length){const o=i.deviceQueue.splice(0);n.updateDeviceStates(i.idx,o)}if(i.logQueue.length){const o=i.logQueue.splice(0);n.addLogs(i.idx,o)}i.dirtyMetrics&&(n.updateWebSocketMetrics(i.idx,{messagesSent:i.metricsMessagesSent,bytesSent:i.metricsBytesSent,messagesReceived:i.metricsMessagesReceived,messagesBridge:i.metricsMessagesBridge,messagesDevice:i.metricsMessagesDevice,bytesReceived:i.metricsBytesReceived,reconnects:i.metricsReconnects,lastMessageTs:i.metricsLastMessageTs}),i.metricsMessagesSent=0,i.metricsBytesSent=0,i.metricsMessagesReceived=0,i.metricsMessagesBridge=0,i.metricsMessagesDevice=0,i.metricsBytesReceived=0,i.metricsReconnects=0,i.metricsLastMessageTs=0,i.dirtyMetrics=!1)}}}let Vo;const cq=globalThis[xD];cq?Vo=cq:(Vo=new uue,globalThis[xD]=Vo);function zD(){Vo.start()}async function RD(t,r,n){await Vo.sendMessage(t,r,n)}function due(t){return Vo.getTransactionPrefix(t)}function fue({isOpen:t,children:r,title:n,footer:i}){return t?D2.createPortal(W.jsx("dialog",{className:"modal modal-bottom sm:modal-middle",open:!0,children:W.jsxs("div",{className:"modal-box",children:[W.jsx("h3",{className:"font-bold text-lg mb-3",children:n}),r,W.jsx("div",{className:"modal-action mt-3",children:W.jsx("form",{method:"dialog",children:i})})]})}),document.body):null}const vue=O2.create(t=>{const{onConfirmHandler:r,modalTitle:n,modalDescription:i,modalCancelLabel:o,modalConfirmLabel:l}=t,c=R2(),d=K.useCallback(async()=>{c.remove(),await r()},[c,r]);return K.useEffect(()=>{const f=async v=>{v.key==="Escape"?(v.preventDefault(),c.remove()):v.key==="Enter"&&(v.preventDefault(),await d())};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[c,d]),W.jsx(fue,{isOpen:c.visible,title:n,footer:W.jsxs(W.Fragment,{children:[W.jsx(Li,{className:"btn btn-neutral",onClick:c.remove,children:o}),W.jsx(Li,{className:"btn btn-primary ms-1",onClick:d,children:l||n})]}),children:W.jsxs("div",{className:"flex flex-row justify-center items-center gap-2",children:[W.jsx(wr,{icon:Eoe,size:"3x",className:"text-error"}),i]})})});function OD(t){const{children:r,item:n,onClick:i,modalDescription:o,modalCancelLabel:l,title:c,className:d,...f}=t,v=K.useCallback(async()=>{await O2.show(vue,{onConfirmHandler:async()=>await i?.(n),modalTitle:c,modalDescription:o,modalCancelLabel:l,modalConfirmLabel:c})},[n,i,c,o,l]);return W.jsx("button",{type:"button",className:`${d} tooltip`,"data-tip":c,...f,onClick:v,children:r})}const pue={[WebSocket.CONNECTING]:loe,[WebSocket.OPEN]:Coe,[WebSocket.CLOSING]:ioe,[WebSocket.CLOSED]:Xie},_ue=["#F3C300","#875692","#0067A5","#008856","#E25822","#2B3D26","#8DB600","#B3446C","#A1CAF1","#654522","#E68FAC","#F38400","#604E97","#C2B280","#BE0032"],Uu=K.memo(({idx:t,autoHide:r,alwaysShowName:n,alwaysHideName:i,nameClassName:o,namePostfix:l,...c})=>{const d=Ct(Qo(v=>v.readyStates[t])),f=!i&&(n||ta.get($K,!0));return r&&!Ul?null:W.jsxs("span",{title:`${t} | ${Xa[t]}`,children:[W.jsx(wr,{icon:pue[d],style:{color:_ue[t]},...c}),f&&W.jsx("span",{className:`ms-1 ${o??""}`,children:Xa[t]}),f&&l]})}),gue=K.memo(({log:t,onClick:r})=>{const n=K.useRef(null);return W.jsxs("div",{ref:n,className:`alert ${qK[t.level]} break-all gap-1 p-2 pe-0.5 tooltip tooltip-left`,"data-tip":t.timestamp,children:[W.jsx("span",{children:t.message}),W.jsx("div",{className:"justify-self-end",children:W.jsx(Li,{item:n,onClick:r,className:"btn btn-xs btn-square",children:W.jsx(wr,{icon:_oe})})})]})}),mue=K.memo(({sourceIdx:t,readyState:r})=>{const n=jK[r],{t:i}=Yi(["navbar","common"]),o=Ct(Qo(p=>p.notifications[t])),l=Ct(Qo(p=>p.bridgeInfo[t].restart_required)),c=Ct(p=>p.clearNotifications),d=K.useCallback(async()=>await RD(t,"bridge/request/restart",""),[t]),f=K.useCallback(p=>{p?.current&&(p.current.className+=" hidden")},[]),v=K.useCallback(()=>c(t),[t,c]);return W.jsx("li",{children:W.jsxs("details",{open:t===0,children:[W.jsxs("summary",{children:[W.jsx("span",{title:`${t} | ${i(p=>p.transaction_prefix)}: ${due(t)}`,children:Ul?W.jsx(Uu,{idx:t,alwaysShowName:!0}):"Zigbee2MQTT"}),W.jsxs("span",{className:"ml-auto",children:[l&&W.jsx(OD,{className:"btn btn-xs btn-square btn-error animate-pulse",onClick:d,title:i(p=>p.restart),modalDescription:i(p=>p.dialog_confirmation_prompt,{ns:"common"}),modalCancelLabel:i(p=>p.cancel,{ns:"common"}),children:W.jsx(wr,{icon:Pie})}),W.jsx("span",{title:`${i(p=>p.websocket_status)}: ${n?.[0]}`,children:W.jsx(wr,{icon:foe,className:n?.[1]})})]})]}),o.map((p,g)=>W.jsx(gue,{log:p,onClick:f},`${g}-${p.timestamp}`)),o.length>0&&W.jsxs("div",{className:"flex flex-row justify-between mt-3 mb-1",children:[W.jsxs(N2,{to:`/logs/${t}`,className:"btn btn-sm btn-primary btn-outline",title:i(p=>p.more,{ns:"common"}),children:[W.jsx(wr,{icon:Uie}),i(p=>p.more,{ns:"common"})]}),W.jsxs(Li,{className:"btn btn-sm btn-warning btn-outline",onClick:v,title:i(p=>p.clear,{ns:"common"}),children:[W.jsx(wr,{icon:SN}),i(p=>p.clear,{ns:"common"})]})]})]})})}),hue=K.memo(()=>{const{t}=Yi("common"),r=Ct(i=>i.readyStates),n=Ct(i=>i.clearAllNotifications);return W.jsxs(W.Fragment,{children:[W.jsxs("div",{className:"flex items-center gap-2 p-2",children:[W.jsx(wr,{icon:EN}),W.jsx("span",{className:"font-semibold text-md",children:t(i=>i.notifications)})]}),W.jsxs("ul",{className:"menu w-full px-1 py-0",children:[pa.map((i,o)=>W.jsx(mue,{sourceIdx:o,readyState:r[o]},`${o}`)),Ul&&W.jsxs(OD,{className:"btn btn-sm btn-warning btn-outline mt-5",onClick:n,title:t(i=>i.clear_all),modalDescription:t(i=>i.dialog_confirmation_prompt),modalCancelLabel:t(i=>i.cancel),children:[W.jsx(wr,{icon:SN}),t(i=>i.clear_all)]})]})]})}),yue=K.memo(t=>{const[r,n]=K.useState(t.seconds);K.useEffect(()=>{const f=setTimeout(()=>{n(r-1)},1e3);return()=>clearTimeout(f)},[r]);const i=Math.floor(r/3600),o=Math.floor(r/60)%60,l=Math.floor(r%60),c=!t.hideZeroes||i>0,d=!t.hideZeroes||o>0;return W.jsxs("span",{className:"",children:[c?`${i}:`:"",d?`${o.toString().padStart(2,"0")}:`:"",l.toString().padStart(2,"0")]})}),bue=K.memo(({selectedRouter:t,setSelectedRouter:r})=>{const{t:n}=Yi("navbar"),i=Ct(l=>l.devices),o=K.useMemo(()=>{const l=[];for(let c=0;c<pa.length;c++)for(const d of i[c])(d.type==="Coordinator"||d.type==="Router")&&l.push(W.jsx("li",{className:"truncate",onClick:()=>r([c,d]),onKeyUp:f=>{f.key==="enter"&&r([c,d])},children:W.jsxs("span",{className:`dropdown-item${t[0]===c&&t[1]?.ieee_address===d.ieee_address?" menu-active":""}`,children:[W.jsx(Uu,{idx:c,autoHide:!0,namePostfix:" - "}),d.friendly_name]})},`${d.friendly_name}-${d.ieee_address}-${c}`));l.sort((c,d)=>c.key.localeCompare(d.key));for(let c=pa.length-1;c>=0;c--)l.unshift(W.jsx("li",{className:"truncate",onClick:()=>r([c,void 0]),onKeyUp:d=>{d.key==="enter"&&r([c,void 0])},children:W.jsxs("span",{className:`dropdown-item${t[0]===c&&t[1]===void 0?" menu-active":""}`,children:[W.jsx(Uu,{idx:c,autoHide:!0,namePostfix:" - "}),n(d=>d.all)]})},`${c}-all`));return l},[i,t,r,n]);return W.jsx(W2,{buttonChildren:W.jsx("span",{className:"tooltip tooltip-right","data-tip":n(l=>l.toggle_dropdown),children:W.jsx(wr,{icon:boe})}),buttonStyle:"btn-outline btn-primary btn-square join-item",children:o})}),kue=K.memo(()=>{const{t}=Yi("navbar"),[r,n]=K.useState([0,void 0]),[i,o]=K.useState(0),l=Ct(Qo(v=>v.bridgeInfo[i].permit_join)),c=Ct(Qo(v=>v.bridgeInfo[i].permit_join_end)),d=K.useCallback(async()=>{const[v,p]=r;o(v),await RD(v,"bridge/request/permit_join",{time:l?0:ta.get(UK,254),device:p?.ieee_address})},[r,l]),f=K.useMemo(()=>l?W.jsx(yue,{seconds:(c-Date.now())/1e3,hideZeroes:!0}):null,[l,c]);return W.jsxs("div",{className:"indicator w-full mb-4",children:[W.jsxs("div",{className:"join join-horizontal w-full",children:[W.jsxs(Li,{onClick:d,className:"btn btn-outline btn-primary join-item grow",children:[W.jsx(wr,{icon:Toe,className:l?"text-success":"text-error"}),t(l?v=>v.disable_join:v=>v.permit_join),l&&f]}),!l&&W.jsx(bue,{selectedRouter:r,setSelectedRouter:n})]}),W.jsxs("div",{className:"indicator-item indicator-bottom indicator-center badge badge-sm badge-primary opacity-95 min-w-0 pointer-events-none",style:{"--indicator-y":"65%"},children:[W.jsx(Uu,{idx:r[0],autoHide:!0,alwaysHideName:!0}),W.jsx("span",{className:"truncate",children:r[1]?.friendly_name??t(v=>v.all)})]})]})}),Sue=["","Light","Dark","Abyss","Acid","Aqua","Autumn","Black","Bumblebee","Business","Caramellatte","Cmyk","Coffee","Corporate","Cupcake","Cyberpunk","Dim","Dracula","Emerald","Fantasy","Forest","Garden","Halloween","Lemonade","Lofi","Luxury","Night","Nord","Pastel","Retro","Silk","Sunset","Synthwave","Valentine","Winter","Wireframe"],Eue=K.memo(()=>{const t=jn(),[r,n]=K.useState(ta.get(qM,""));return K.useEffect(()=>{ta.set(qM,r),r?document.documentElement.setAttribute("data-theme",r):document.documentElement.removeAttribute("data-theme")},[r]),W.jsx(W2,{buttonChildren:W.jsx(wr,{icon:Hie}),buttonStyle:"btn-outline btn-primary",buttonDisabled:t.pathname.startsWith("/network"),children:Sue.map(i=>W.jsx("li",{children:W.jsx("input",{type:"radio",name:"theme-dropdown",className:`theme-controller w-full font-normal btn btn-block ${r===i.toLowerCase()?"btn-primary":"btn-ghost"}`,"aria-label":i||"Default",value:i.toLowerCase(),onChange:()=>n(i.toLowerCase())})},i||"default"))})}),Y2=K.createContext(null),wue=K.memo(({children:t})=>{const[r,n]=K.useState(null),i=K.useMemo(()=>({content:r,setContent:n}),[r]);return W.jsx(Y2.Provider,{value:i,children:t})});function Tue(){return K.useContext(Y2)?.content??null}function Aue(){const t=K.useContext(Y2);if(!t)throw new Error("useSetNavBarContent must be used within NavBarProvider");return t.setContent}const Tpe=K.memo(({children:t})=>{const r=Aue();return K.useEffect(()=>(r(t),()=>{r(null)}),[t,r]),null}),xue=K.memo(({setSidebarCollapsed:t,showNotifications:r,setShowNotifications:n})=>{const i=Tue(),{t:o}=Yi("common"),l=Ct(c=>c.notificationsAlert);return W.jsxs("div",{className:"navbar bg-base-200 shadow w-full",children:[W.jsxs("div",{className:"flex flex-row items-center gap-1 w-full",children:[W.jsx("label",{htmlFor:"sidebar-drawer",className:"btn btn-ghost lg:hidden","aria-label":"show sidebar",onClick:()=>t(!1),children:W.jsx(wr,{icon:wN})}),i]}),W.jsx("div",{className:"flex flex-row flex-wrap gap-1 items-center ml-auto",children:W.jsxs("label",{htmlFor:"notifications-drawer",className:"drawer-button btn btn-sm btn-outline btn-primary tooltip tooltip-left","data-tip":o(c=>c.notifications),"aria-label":"toggle notifications",onClick:()=>n(!r),children:[W.jsx(wr,{icon:EN}),l[0]?W.jsx("span",{className:"status status-primary animate-bounce"}):l[1]?W.jsx("span",{className:"status status-error animate-bounce"}):null]})})]})}),zue=({isActive:t})=>`py-2.5 leading-none lg:grid lg:tooltip lg:tooltip-right ${t?"menu-active":""}`,Rue=K.memo(({children:t})=>{const{t:r}=Yi(["navbar","common"]),n=K.useRef(null),[i,o]=K.useState(ta.get(LM,!1)),[l,c]=K.useState(!1);K.useEffect(()=>{ta.set(LM,i)},[i]);const d=K.useMemo(()=>[{to:"/dashboard",icon:Vie,title:r(p=>p.dashboard)},{to:"/devices",icon:hoe,title:r(p=>p.devices)},{to:"/groups",icon:qoe,title:r(p=>p.groups)},{to:"/ota",icon:jie,title:r(p=>p.ota)},{to:"/touchlink",icon:aoe,title:r(p=>p.touchlink)},{to:"/network",icon:Wie,title:r(p=>p.network)},{to:"/logs",icon:moe,title:r(p=>p.logs)},{to:"/settings",icon:Die,title:r(p=>p.settings)},{to:"/frontend-settings",icon:Fie,title:r(p=>p.frontend_settings)}],[r]),f=()=>{window.matchMedia("(min-width: 1024px)").matches||n.current&&(n.current.checked=!1)},v=`hidden ${i?"lg:hidden":"lg:inline"}`;return W.jsx(wue,{children:W.jsxs("div",{className:"drawer lg:drawer-open",children:[W.jsx("input",{ref:n,id:"sidebar-drawer",type:"checkbox",className:"drawer-toggle"}),W.jsxs("div",{className:"drawer-content",children:[W.jsxs("div",{className:"drawer drawer-end w-auto",children:[W.jsx("input",{id:"notifications-drawer",type:"checkbox",className:"drawer-toggle"}),W.jsx("div",{className:"drawer-content",children:W.jsx(xue,{setSidebarCollapsed:o,showNotifications:l,setShowNotifications:c})}),W.jsxs("div",{className:"drawer-side",children:[W.jsx("label",{htmlFor:"notifications-drawer","aria-label":"close notifications",className:"drawer-overlay",onClick:()=>c(!1)}),W.jsx("aside",{className:"bg-base-100 min-h-screen w-80",children:l&&W.jsx(hue,{})})]})]}),W.jsx("main",{className:"pt-2 px-2 grow [scrollbar-gutter:stable]",children:t})]}),W.jsxs("div",{className:"drawer-side lg:overflow-visible!",children:[W.jsx("label",{htmlFor:"sidebar-drawer","aria-label":"close sidebar",className:"drawer-overlay lg:hidden",onClick:()=>o(!0)}),W.jsx("aside",{className:`bg-base-200 min-h-screen ${i?"lg:w-16":"w-64"}`,children:W.jsxs("nav",{className:"flex flex-col h-full w-full",children:[W.jsxs("ul",{className:"menu w-full p-2",children:[W.jsx("li",{children:W.jsxs("button",{type:"button",className:"py-2.5 leading-none hidden lg:grid lg:tooltip lg:tooltip-right","data-tip":window.location!==window.parent.location?`Zigbee2MQTT@${window.location.hostname}`:"",onClick:()=>o(!i),children:[W.jsx(wr,{icon:i?wN:Roe,size:"lg"}),W.jsx("span",{className:"inline lg:hidden",children:"Zigbee2MQTT"}),W.jsx("span",{className:v,children:"Zigbee2MQTT"})]})}),d.map(p=>W.jsx("li",{children:W.jsxs(k1,{to:p.to,className:zue,onClick:f,"data-tip":i?p.title:"",children:[W.jsx(wr,{icon:p.icon,size:"lg"}),W.jsx("span",{className:"inline lg:hidden",children:p.title}),W.jsx("span",{className:v,children:p.title})]})},p.to))]}),W.jsx("div",{className:`menu w-full p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:W.jsx(kue,{})}),W.jsxs("div",{className:`menu w-full p-2 gap-2 flex-row justify-center p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:[W.jsx(nue,{}),W.jsx(Eue,{})]}),W.jsx("ul",{className:`menu w-full p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:W.jsx("li",{className:"",children:W.jsxs(k1,{to:"/contribute",className:"btn btn-sm btn-outline btn-secondary",onClick:f,children:[W.jsx(wr,{icon:Kie}),r(p=>p.contribute)]})})})]})})]})]})})});function Oue(){const t=Ct(o=>o.authRequired),[r,n]=K.useState(()=>Xa.map((o,l)=>ta.get(`${_l}_${l}`,""))),i=()=>{const o=[];for(let l=0;l<Xa.length;l++){const c=r[l]??"";c?ta.set(`${_l}_${l}`,c):ta.remove(`${_l}_${l}`),o[l]=!1}Ct.setState({authRequired:o}),zD()};return t?W.jsx("main",{className:"min-h-screen flex items-center justify-center",children:W.jsx("div",{className:"card w-full max-w-md bg-base-100 shadow",children:W.jsxs("div",{className:"card-body",children:[W.jsx("h2",{className:"card-title",children:"Auth"}),Xa.map((o,l)=>t[l]?W.jsxs("label",{className:"input validator w-full",children:[Ul?`${o} token`:"Token",W.jsx("input",{type:"password",className:"grow",autoCapitalize:"none",value:r[l],onChange:c=>{const d=Array.from(r);d[l]=c.target.value,n(d)},required:!0})]},o):null),W.jsx("div",{className:"card-actions justify-end",children:W.jsx(Li,{className:"btn btn-square btn-primary",onClick:i,children:W.jsx(wr,{icon:Gie})})})]})})}):null}const uq=K.lazy(async()=>await na(()=>import("./HomePage-Cix1ynu7.js"),__vite__mapDeps([0,1]),import.meta.url)),Cue=K.lazy(async()=>await na(()=>import("./DevicesPage-CfdvYarn.js"),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1]),import.meta.url)),Mue=K.lazy(async()=>await na(()=>import("./DevicePage-DdZWtHIC.js"),__vite__mapDeps([18,19,11,1]),import.meta.url)),Iue=K.lazy(async()=>await na(()=>import("./Dashboard-D9cep-yd.js"),__vite__mapDeps([20,21,22,23,16,24,25,26,15,12,13,14,27,28,7,8,4,5,29,10,11,1]),import.meta.url)),que=K.lazy(async()=>await na(()=>import("./NetworkPage-CwIfurAG.js"),__vite__mapDeps([30,5,31,1]),import.meta.url)),Lue=K.lazy(async()=>await na(()=>import("./GroupsPage-eUfcf9-b.js"),__vite__mapDeps([32,6,31,9,10,11,1]),import.meta.url)),Nue=K.lazy(async()=>await na(()=>import("./GroupPage-D_vC8J62.js"),__vite__mapDeps([33,19,11,1]),import.meta.url)),Due=K.lazy(async()=>await na(()=>import("./OtaPage-BWLHx0N1.js"),__vite__mapDeps([34,7,8,9,10,11,17,27,28,25,26,1]),import.meta.url)),jue=K.lazy(async()=>await na(()=>import("./TouchlinkPage-CAp3tBCH.js"),__vite__mapDeps([35,31,9,10,11,1]),import.meta.url)),Pue=K.lazy(async()=>await na(()=>import("./LogsPage-aFp3H3ps.js"),__vite__mapDeps([36,5,11,31,19,1]),import.meta.url)),Bue=K.lazy(async()=>await na(()=>import("./SettingsPage-BwzbXtfF.js"),__vite__mapDeps([37,1]),import.meta.url)),Uue=K.lazy(async()=>await na(()=>import("./FrontendSettingsPage-D0cBhAU8.js"),__vite__mapDeps([38,5,39,31,1]),import.meta.url)),Fue=K.lazy(async()=>await na(()=>import("./ContributePage-C2_5zZPu.js"),__vite__mapDeps([40,1]),import.meta.url));function $ue(){const t=Ct(Qo(r=>r.authRequired.some(n=>n===!0)));return K.useEffect(()=>{zD()},[]),t?W.jsx(Oue,{}):W.jsxs(bK,{children:[W.jsx(CK,{}),W.jsx(Rue,{children:W.jsx(K.Suspense,{fallback:W.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:W.jsx("span",{className:"loading loading-infinity loading-xl"})}),children:W.jsxs(YQ,{children:[W.jsx(Kr,{path:"/dashboard",element:W.jsx(Iue,{})}),W.jsx(Kr,{path:"/devices",element:W.jsx(Cue,{})}),W.jsx(Kr,{path:"/device/:sourceIdx/:deviceId/:tab?",element:W.jsx(Mue,{})}),W.jsx(Kr,{path:"/groups",element:W.jsx(Lue,{})}),W.jsx(Kr,{path:"/group/:sourceIdx/:groupId/:tab?",element:W.jsx(Nue,{})}),W.jsx(Kr,{path:"/touchlink",element:W.jsx(jue,{})}),W.jsx(Kr,{path:"/ota",element:W.jsx(Due,{})}),W.jsx(Kr,{path:"/network/:sourceIdx?",element:W.jsx(que,{})}),W.jsx(Kr,{path:"/logs/:sourceIdx?",element:W.jsx(Pue,{})}),W.jsx(Kr,{path:"/settings/:sourceIdx?/:tab?/:subTab?",element:W.jsx(Bue,{})}),W.jsx(Kr,{path:"/frontend-settings",element:W.jsx(Uue,{})}),W.jsx(Kr,{path:"/contribute",element:W.jsx(Fue,{})}),W.jsx(Kr,{path:"/",element:W.jsx(uq,{})}),W.jsx(Kr,{path:"*",element:W.jsx(uq,{})})]})})}),W.jsx(oZ,{})]})}function Hue(){return W.jsx(sr.StrictMode,{children:W.jsx(lZ,{children:W.jsx(O2.Provider,{children:W.jsx(oQ,{i18n:mr,children:W.jsx($ue,{})})})})})}const dq=document.getElementById("root");dq&&TV.createRoot(dq).render(W.jsx(Hue,{}));window.addEventListener("vite:preloadError",()=>{window.location.reload()});export{Eoe as $,pa as A,Uve as B,Li as C,W2 as D,O2 as E,wr as F,ufe as G,kde as H,nfe as I,Ade as J,kpe as K,N2 as L,Ul as M,Tpe as N,mpe as O,R2 as P,fue as Q,hfe as R,Uu as S,OD as T,Wve as U,yoe as V,yfe as W,Zve as X,Mve as Y,vfe as Z,na as _,Ct as a,Jde as a$,Lfe as a0,Tfe as a1,SN as a2,qK as a3,Zue as a4,_oe as a5,Wue as a6,Mfe as a7,Zde as a8,$fe as a9,Cde as aA,Yue as aB,cde as aC,BK as aD,Ave as aE,sve as aF,ude as aG,dpe as aH,ide as aI,Xue as aJ,hpe as aK,Lve as aL,vpe as aM,Ife as aN,T2 as aO,HK as aP,sr as aQ,TV as aR,Rfe as aS,Qve as aT,Rde as aU,Bve as aV,Rve as aW,ffe as aX,Yve as aY,Ude as aZ,Gie as a_,UK as aa,FK as ab,Sde as ac,$K as ad,qM as ae,xde as af,zde as ag,wde as ah,Ede as ai,Tde as aj,_l as ak,IM as al,mde as am,spe as an,gde as ao,hde as ap,yde as aq,bde as ar,Kie as as,Fo as at,Vt as au,vN as av,Nde as aw,Jve as ax,Pfe as ay,Ufe as az,Yi as b,Vve as b$,tve as b0,cfe as b1,Wfe as b2,$de as b3,Vue as b4,Dde as b5,Ou as b6,Fde as b7,Ode as b8,zve as b9,Moe as bA,_fe as bB,upe as bC,rve as bD,Xde as bE,Eve as bF,hve as bG,Qde as bH,Spe as bI,ooe as bJ,bve as bK,pve as bL,uoe as bM,xfe as bN,Bde as bO,Ffe as bP,Toe as bQ,npe as bR,lve as bS,ive as bT,Sfe as bU,goe as bV,Epe as bW,Pie as bX,Soe as bY,ioe as bZ,Cve as b_,fpe as ba,hoe as bb,Hve as bc,qfe as bd,bfe as be,Kve as bf,ppe as bg,Wde as bh,ife as bi,tpe as bj,_ve as bk,Hde as bl,wfe as bm,kve as bn,Xve as bo,Nve as bp,Gve as bq,rfe as br,Qfe as bs,Kde as bt,ipe as bu,kfe as bv,cpe as bw,Gfe as bx,wpe as by,_pe as bz,RD as c,Kue as c$,noe as c0,jve as c1,Vde as c2,woe as c3,koe as c4,Tve as c5,Zfe as c6,ype as c7,yve as c8,ape as c9,nve as cA,Afe as cB,wve as cC,Ive as cD,gfe as cE,ofe as cF,gve as cG,mfe as cH,rpe as cI,Gde as cJ,Vfe as cK,Hfe as cL,Efe as cM,mve as cN,cve as cO,sfe as cP,Jue as cQ,dde as cR,vde as cS,pde as cT,_de as cU,sde as cV,lde as cW,fde as cX,ode as cY,Coe as cZ,jK as c_,Sve as ca,Xfe as cb,Ofe as cc,lpe as cd,lfe as ce,uve as cf,Bfe as cg,jfe as ch,Fve as ci,$ve as cj,qve as ck,epe as cl,Cfe as cm,ove as cn,Nfe as co,afe as cp,Dve as cq,Ove as cr,aoe as cs,fve as ct,xve as cu,bpe as cv,pfe as cw,zfe as cx,eve as cy,Kfe as cz,Xa as d,Pve as d0,jde as d1,Pde as d2,loe as d3,ave as d4,tfe as d5,Lde as d6,ede as d7,XK as d8,nde as d9,rde as da,ade as db,tde as dc,efe as e,foe as f,Ide as g,Que as h,Mde as i,W as j,Qo as k,k1 as l,dve as m,vve as n,Yfe as o,ope as p,Die as q,K as r,ta as s,qde as t,LQ as u,Jfe as v,Yde as w,dfe as x,gpe as y,Dfe as z};
|
|
634
|
+
If it declares any Font Awesome CSS pseudo-elements, they will not be rendered as SVG icons. Add crossorigin="anonymous" to the <link>, enable searchPseudoElementsFullScan for slower but more thorough DOM parsing, or suppress this warning by setting searchPseudoElementsWarnings to false.`))}}}catch(k){o.e(k)}finally{o.f()}if(!i.size)return;var b=Array.from(i).join(", ");try{n=t.querySelectorAll(b)}catch{}}return new Promise(function(k,w){var E=_s(n).filter(Oce).map(Rce),S=K2.begin("searchPseudoElements");bD(),Promise.all(E).then(function(){S(),B1(),k()}).catch(function(){S(),B1(),w()})})}}var Ice={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=eq,n}}},provides:function(r){r.pseudoElements2svg=function(n){var i=n.node,o=i===void 0?Kt:i;Xe.searchPseudoElements&&eq(o)}}},tq=!1,qce={mixout:function(){return{dom:{unwatch:function(){bD(),tq=!0}}}},hooks:function(){return{bootstrap:function(){KI(L1("mutationObserverCallbacks",{}))},noAuto:function(){dce()},watch:function(n){var i=n.observeMutationsRoot;tq?B1():KI(L1("mutationObserverCallbacks",{observeMutationsRoot:i}))}}}},rq=function(r){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return r.toLowerCase().split(" ").reduce(function(i,o){var l=o.toLowerCase().split("-"),c=l[0],d=l.slice(1).join("-");if(c&&d==="h")return i.flipX=!0,i;if(c&&d==="v")return i.flipY=!0,i;if(d=parseFloat(d),isNaN(d))return i;switch(c){case"grow":i.size=i.size+d;break;case"shrink":i.size=i.size-d;break;case"left":i.x=i.x-d;break;case"right":i.x=i.x+d;break;case"up":i.y=i.y-d;break;case"down":i.y=i.y+d;break;case"rotate":i.rotate=i.rotate+d;break}return i},n)},Lce={mixout:function(){return{parse:{transform:function(n){return rq(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-transform");return o&&(n.transform=rq(o)),n}}},provides:function(r){r.generateAbstractTransformGrouping=function(n){var i=n.main,o=n.transform,l=n.containerWidth,c=n.iconWidth,d={transform:"translate(".concat(l/2," 256)")},f="translate(".concat(o.x*32,", ").concat(o.y*32,") "),v="scale(".concat(o.size/16*(o.flipX?-1:1),", ").concat(o.size/16*(o.flipY?-1:1),") "),p="rotate(".concat(o.rotate," 0 0)"),g={transform:"".concat(f," ").concat(v," ").concat(p)},h={transform:"translate(".concat(c/2*-1," -256)")},y={outer:d,inner:g,path:h};return{tag:"g",attributes:Oe({},y.outer),children:[{tag:"g",attributes:Oe({},y.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:Oe(Oe({},i.icon.attributes),y.path)}]}]}}}},_1={x:0,y:0,width:"100%",height:"100%"};function aq(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||r)&&(t.attributes.fill="black"),t}function Nce(t){return t.tag==="g"?t.children:[t]}var Dce={hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-mask"),l=o?Md(o.split(" ").map(function(c){return c.trim()})):_D();return l.prefix||(l.prefix=ui()),n.mask=l,n.maskId=i.getAttribute("data-fa-mask-id"),n}}},provides:function(r){r.generateAbstractMask=function(n){var i=n.children,o=n.attributes,l=n.main,c=n.mask,d=n.maskId,f=n.transform,v=l.width,p=l.icon,g=c.width,h=c.icon,y=zle({transform:f,containerWidth:g,iconWidth:v}),b={tag:"rect",attributes:Oe(Oe({},_1),{},{fill:"white"})},k=p.children?{children:p.children.map(aq)}:{},w={tag:"g",attributes:Oe({},y.inner),children:[aq(Oe({tag:p.tag,attributes:Oe(Oe({},p.attributes),y.path)},k))]},E={tag:"g",attributes:Oe({},y.outer),children:[w]},S="mask-".concat(d||DI()),T="clip-".concat(d||DI()),x={tag:"mask",attributes:Oe(Oe({},_1),{},{id:S,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[b,E]},A={tag:"defs",children:[{tag:"clipPath",attributes:{id:T},children:Nce(h)},x]};return i.push(A,{tag:"rect",attributes:Oe({fill:"currentColor","clip-path":"url(#".concat(T,")"),mask:"url(#".concat(S,")")},_1)}),{children:i,attributes:o}}}},jce={provides:function(r){var n=!1;ci.matchMedia&&(n=ci.matchMedia("(prefers-reduced-motion: reduce)").matches),r.missingIconAbstract=function(){var i=[],o={fill:"currentColor"},l={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};i.push({tag:"path",attributes:Oe(Oe({},o),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var c=Oe(Oe({},l),{},{attributeName:"opacity"}),d={tag:"circle",attributes:Oe(Oe({},o),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||d.children.push({tag:"animate",attributes:Oe(Oe({},l),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:Oe(Oe({},c),{},{values:"1;0;1;1;0;1;"})}),i.push(d),i.push({tag:"path",attributes:Oe(Oe({},o),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:Oe(Oe({},c),{},{values:"1;0;0;0;0;1;"})}]}),n||i.push({tag:"path",attributes:Oe(Oe({},o),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:Oe(Oe({},c),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:i}}}},Pce={hooks:function(){return{parseNodeAttributes:function(n,i){var o=i.getAttribute("data-fa-symbol"),l=o===null?!1:o===""?!0:o;return n.symbol=l,n}}}},Bce=[Cle,kce,Sce,Ece,wce,Ice,qce,Lce,Dce,jce,Pce];Qle(Bce,{mixoutsTo:Ea});Ea.noAuto;var Uce=Ea.config;Ea.library;Ea.dom;var ED=Ea.parse;Ea.findIconDefinition;Ea.toHtml;var Fce=Ea.icon;Ea.layer;Ea.text;Ea.counter;function $ce(t){return t=t-0,t===t}function wD(t){return $ce(t)?t:(t=t.replaceAll(/[_-]+(.)?/g,(r,n)=>n?n.toUpperCase():""),t.charAt(0).toLowerCase()+t.slice(1))}function Hce(t){return t.charAt(0).toUpperCase()+t.slice(1)}var Uo=new Map,Gce=1e3;function Vce(t){if(Uo.has(t))return Uo.get(t);const r={};let n=0;const i=t.length;for(;n<i;){const o=t.indexOf(";",n),l=o===-1?i:o,c=t.slice(n,l).trim();if(c){const d=c.indexOf(":");if(d>0){const f=c.slice(0,d).trim(),v=c.slice(d+1).trim();if(f&&v){const p=wD(f);r[p.startsWith("webkit")?Hce(p):p]=v}}}n=l+1}if(Uo.size===Gce){const o=Uo.keys().next().value;o&&Uo.delete(o)}return Uo.set(t,r),r}function TD(t,r,n={}){if(typeof r=="string")return r;const i=(r.children||[]).map(v=>TD(t,v)),o=r.attributes||{},l={};for(const[v,p]of Object.entries(o))switch(!0){case v==="class":{l.className=p,delete o.class;break}case v==="style":{l.style=Vce(String(p));break}case v.startsWith("aria-"):case v.startsWith("data-"):{l[v.toLowerCase()]=p;break}default:l[wD(v)]=p}const{style:c,"aria-label":d,...f}=n;return c&&(l.style=l.style?{...l.style,...c}:c),d&&(l["aria-label"]=d,l["aria-hidden"]="false"),t(r.tag,{...f,...l},...i)}var nq=(t,r)=>{const n=K.useId();return t||(r?n:void 0)},Qce=class{constructor(t="react-fontawesome"){this.enabled=!1;let r=!1;try{r=typeof process<"u"&&!1}catch{}this.scope=t,this.enabled=r}log(...t){this.enabled&&console.log(`[${this.scope}]`,...t)}warn(...t){this.enabled&&console.warn(`[${this.scope}]`,...t)}error(...t){this.enabled&&console.error(`[${this.scope}]`,...t)}},Kce="searchPseudoElementsFullScan"in Uce?"7.0.0":"6.0.0",Zce=Number.parseInt(Kce)>=7,wn={beat:"fa-beat",fade:"fa-fade",beatFade:"fa-beat-fade",bounce:"fa-bounce",shake:"fa-shake",spin:"fa-spin",spinPulse:"fa-spin-pulse",spinReverse:"fa-spin-reverse",pulse:"fa-pulse"},Wce={left:"fa-pull-left",right:"fa-pull-right"},Yce={90:"fa-rotate-90",180:"fa-rotate-180",270:"fa-rotate-270"},Xce={"2xs":"fa-2xs",xs:"fa-xs",sm:"fa-sm",lg:"fa-lg",xl:"fa-xl","2xl":"fa-2xl","1x":"fa-1x","2x":"fa-2x","3x":"fa-3x","4x":"fa-4x","5x":"fa-5x","6x":"fa-6x","7x":"fa-7x","8x":"fa-8x","9x":"fa-9x","10x":"fa-10x"},Tn={border:"fa-border",fixedWidth:"fa-fw",flip:"fa-flip",flipHorizontal:"fa-flip-horizontal",flipVertical:"fa-flip-vertical",inverse:"fa-inverse",rotateBy:"fa-rotate-by",swapOpacity:"fa-swap-opacity",widthAuto:"fa-width-auto"};function Jce(t){const{beat:r,fade:n,beatFade:i,bounce:o,shake:l,spin:c,spinPulse:d,spinReverse:f,pulse:v,fixedWidth:p,inverse:g,border:h,flip:y,size:b,rotation:k,pull:w,swapOpacity:E,rotateBy:S,widthAuto:T,className:x}=t,A=[];return x&&A.push(...x.split(" ")),r&&A.push(wn.beat),n&&A.push(wn.fade),i&&A.push(wn.beatFade),o&&A.push(wn.bounce),l&&A.push(wn.shake),c&&A.push(wn.spin),f&&A.push(wn.spinReverse),d&&A.push(wn.spinPulse),v&&A.push(wn.pulse),p&&A.push(Tn.fixedWidth),g&&A.push(Tn.inverse),h&&A.push(Tn.border),y===!0&&A.push(Tn.flip),(y==="horizontal"||y==="both")&&A.push(Tn.flipHorizontal),(y==="vertical"||y==="both")&&A.push(Tn.flipVertical),b!=null&&A.push(Xce[b]),k!=null&&k!==0&&A.push(Yce[k]),w!=null&&A.push(Wce[w]),E&&A.push(Tn.swapOpacity),Zce&&(S&&A.push(Tn.rotateBy),T&&A.push(Tn.widthAuto)),A}var eue=t=>typeof t=="object"&&"icon"in t&&!!t.icon;function iq(t){if(t)return eue(t)?t:ED.icon(t)}function tue(t){return Object.keys(t)}var oq=new Qce("FontAwesomeIcon"),AD={border:!1,className:"",mask:void 0,maskId:void 0,fixedWidth:!1,inverse:!1,flip:!1,icon:void 0,listItem:!1,pull:void 0,pulse:!1,rotation:void 0,rotateBy:!1,size:void 0,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:void 0,transform:void 0,swapOpacity:!1,widthAuto:!1},rue=new Set(Object.keys(AD)),wr=sr.forwardRef((t,r)=>{const n={...AD,...t},{icon:i,mask:o,symbol:l,title:c,titleId:d,maskId:f,transform:v}=n,p=nq(f,!!o),g=nq(d,!!c),h=iq(i);if(!h)return oq.error("Icon lookup is undefined",i),null;const y=Jce(n),b=typeof v=="string"?ED.transform(v):v,k=iq(o),w=Fce(h,{...y.length>0&&{classes:y},...b&&{transform:b},...k&&{mask:k},symbol:l,title:c,titleId:g,maskId:p});if(!w)return oq.error("Could not find icon",h),null;const{abstract:E}=w,S={ref:r};for(const T of tue(n))rue.has(T)||(S[T]=n[T]);return aue(E[0],S)});wr.displayName="FontAwesomeIcon";var aue=TD.bind(null,sr.createElement);function Li(t){const{children:r,item:n,onClick:i,title:o,className:l,...c}=t;return W.jsx("button",{type:"button",className:`${l} ${o?"tooltip":""}`,"data-tip":o,...c,onClick:async()=>await i?.(n),children:r})}const W2=K.memo(({buttonChildren:t,buttonStyle:r,buttonDisabled:n,children:i})=>{const[o,l]=K.useState(!1);return W.jsxs(W.Fragment,{children:[W.jsx(Li,{item:!o,onClick:l,className:`btn${r?` ${r}`:""}`,disabled:n,children:t}),o&&D2.createPortal(W.jsx("dialog",{className:"modal modal-bottom sm:modal-middle",open:!0,onClick:c=>{c.target.tagName!=="INPUT"&&l(!1)},children:W.jsx("ul",{className:"modal-box flex-nowrap p-1 w-auto! menu",style:{scrollbarWidth:"thin"},children:i})}),document.body)]})}),sq={bg:"Български",ca:"Català","zh-CN":"简体中文",cs:"Česky",da:"Dansk",de:"Deutsch",es:"Español",eu:"Euskera",fi:"Suomi",fr:"Français",hu:"Magyar",it:"Italiano",ja:"日本語",ko:"한국어",nl:"Nederlands",no:"Norsk",pl:"Polski",ptbr:"Brazilian Portuguese",ru:"Русский",sv:"Svenska",tr:"Türkçe",zh:"繁體中文",ua:"Українська",en:"English"},nue=K.memo(()=>{const{i18n:t}=Yi(),r=sq[t.language]?t.language:t.language.split("-")[0],n=K.useMemo(()=>{const i=[];for(const o in t.options.resources??[])i.push(W.jsx("li",{onClick:async()=>await t.changeLanguage(o),onKeyUp:async l=>{l.key==="enter"&&await t.changeLanguage(o)},children:W.jsxs("span",{className:`dropdown-item${o===r?" menu-active":""}`,children:[sq[o],o==="en"?null:W.jsx("span",{className:"text-xs text-warning",children:"AI"})]})},o));return i},[r,t.changeLanguage,t.options.resources]);return W.jsx(W2,{buttonChildren:r,buttonStyle:"btn-outline btn-primary",children:n})}),iue=/(yes|true|1)/.test(DP),oue=4401,sue=3e3,lue=10,lq=500,cue=2e4,xD="__WINDFRONT_WS_MANAGER__";class uue{#a=[];#r;#e=!1;#t=!1;constructor(){for(let r=0;r<pa.length;r++)this.#a.push({idx:r,socket:void 0,attempts:0,reconnectTimer:void 0,transactionPrefix:YK(5),transactionNumber:1,pending:new Map,deviceQueue:[],logQueue:[],metricsMessagesSent:0,metricsBytesSent:0,metricsMessagesReceived:0,metricsMessagesBridge:0,metricsMessagesDevice:0,metricsBytesReceived:0,metricsReconnects:0,metricsLastMessageTs:0,dirtyMetrics:!1});window.addEventListener("beforeunload",()=>{this.#s()}),window.addEventListener("pagehide",()=>{this.#s()})}start(){if(!this.#t)for(const r of this.#a)this.#l(r)}destroy(r){if(!this.#e){this.#e=!0,this.#t=!0,this.#r!==void 0&&(cancelAnimationFrame(this.#r),this.#r=void 0),this.#o(!0);for(const n of this.#a){if(n.reconnectTimer!==void 0&&(clearTimeout(n.reconnectTimer),n.reconnectTimer=void 0),n.socket){try{n.socket.close(4e3,r)}catch{}n.socket=void 0}for(const[,i]of n.pending)clearTimeout(i.timeoutId),i.reject(new Error("WebSocket manager destroyed"));n.pending.clear(),Ct.getState().setPendingRequestsCount(n.idx,0)}}}#s(){if(!(this.#e||this.#t)){this.#t=!0,this.#r!==void 0&&(cancelAnimationFrame(this.#r),this.#r=void 0),this.#o(!0);for(const r of this.#a)if(r.reconnectTimer!==void 0&&(clearTimeout(r.reconnectTimer),r.reconnectTimer=void 0),r.socket)try{r.socket.close(4001,"page-unload")}catch{}}}getTransactionPrefix(r){return this.#a[r].transactionPrefix}async sendMessage(r,n,i){if(this.#e)return;const o=this.#a[r];if(!o){console.error(`Unknown source index ${r}`);return}if(!o.socket||o.socket.readyState!==WebSocket.OPEN){Ct.getState().addToast({sourceIdx:r,topic:n,status:"error",error:"Cannot send, WebSocket not open"});return}if(n.startsWith("bridge/request/")){if(i!==""&&typeof i=="string"){console.error("Only `Record<string, unknown>` or empty string payloads allowed");return}const l=`${o.transactionPrefix}-${o.transactionNumber++}`,c=PM({topic:n,payload:i===""?{transaction:l}:{...i,transaction:l}});try{await this.#p(r,o,l,c)}catch(d){console.error(`Failed bridge API call (${Xa[r]} | ${r})`,d.message,d.cause)}return}try{const l=PM({topic:n,payload:i});console.log(`Calling API (${Xa[r]} | ${r}):`,l),this.#i(o,{level:"debug",message:`frontend:api: Sending ${l}`,namespace:"frontend:api"}),o.socket.send(l),o.metricsMessagesSent++,o.metricsBytesSent+=l.length,o.dirtyMetrics=!0,this.#n()}catch(l){console.error(`Failed API call (${Xa[r]} | ${r})`,l)}}#u(r){const n=pa[r],i=window.location.protocol==="https:"?"wss":"ws";let o=new URL(`${i}://${n}`);if(o.hostname!=="localhost"&&iue){const c=o.host+(o.pathname!=="/"?o.pathname:"");o=new URL(`${i}://${window.location.host}${window.location.pathname}${window.location.pathname.endsWith("/")?"":"/"}ws-proxy/${c}`)}if(!!ta.get(`${IM}_${r}`)){const c=new URLSearchParams(window.location.search).get("token")??ta.get(`${_l}_${r}`);if(!c){Ct.getState().setAuthRequired(r,!0);return}o.searchParams.append("token",c)}return o.toString()}#l(r){if(this.#e||this.#t||r.socket)return;const n=this.#u(r.idx);if(n)try{r.socket=new WebSocket(n),Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.CONNECTING),r.socket.addEventListener("open",()=>this.#d(r)),r.socket.addEventListener("message",i=>this.#_(r,i)),r.socket.addEventListener("close",i=>this.#f(r,i)),r.socket.addEventListener("error",()=>this.#v(r))}catch(i){console.error("Failed to create WebSocket",i),this.#c(r)}}#d(r){this.#e||this.#t||(r.attempts=0,Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.OPEN),console.log("WebSocket opened",r))}#f(r,n){if(this.#e)return;Ct.getState().setReadyState(r.idx,r.socket?.readyState??WebSocket.CLOSED),console.log("WebSocket closed",r,n);const i=n.code===oue;i&&(ta.set(`${IM}_${r.idx}`,!0),ta.remove(`${_l}_${r.idx}`),Ct.getState().setAuthRequired(r.idx,!0));for(const[,o]of r.pending)clearTimeout(o.timeoutId),o.reject(new Error("WebSocket closed"));r.pending.clear(),Ct.getState().setPendingRequestsCount(r.idx,0),i?r.socket=void 0:this.#c(r)}#v(r){this.#e||this.#t||(console.log("WebSocket error",r),this.#i(r,{level:"debug",message:"frontend:ws: Failed to connect to WebSocket",namespace:"frontend:ws"}))}#c(r){if(!(this.#e||this.#t)){if(r.attempts>=lue){this.#i(r,{level:"error",message:`frontend:ws: Failed to connect to WebSocket after ${r.attempts} tries`,namespace:"frontend:ws"});return}r.reconnectTimer===void 0&&(this.#n(),r.reconnectTimer=window.setTimeout(()=>{if(r.reconnectTimer=void 0,!(this.#e||this.#t)){if(r.socket){try{r.socket.close()}catch{}r.socket=void 0}r.attempts++,r.metricsReconnects++,r.dirtyMetrics=!0,console.log("WebSocket reconnect",r),Ct.getState().addToast({sourceIdx:r.idx,topic:"WebSocket",status:"ok",error:"Reconnecting..."}),this.#l(r)}},sue))}}#p(r,n,i,o){return new Promise((l,c)=>{if(this.#e||this.#t)return c(new Error("WebSocket manager destroyed/shutting down"));if(!n.socket||n.socket.readyState!==WebSocket.OPEN)return c(new Error("WebSocket not open"));const d=window.setTimeout(()=>{const f=n.pending.get(i);f&&(n.pending.delete(i),Ct.getState().setPendingRequestsCount(r,n.pending.size),f.reject(new Error("Request timed out",{cause:i})))},cue);n.pending.set(i,{resolve:l,reject:c,timeoutId:d}),Ct.getState().setPendingRequestsCount(r,n.pending.size);try{console.log(`Calling bridge API (${Xa[r]} | ${r}):`,o),this.#i(n,{level:"debug",message:`frontend:api:bridge: Sending ${o}`,namespace:"frontend:api:bridge"}),n.socket.send(o),n.metricsMessagesSent++,n.metricsBytesSent+=o.length,n.dirtyMetrics=!0,this.#n()}catch(f){clearTimeout(d),n.pending.delete(i),Ct.getState().setPendingRequestsCount(r,n.pending.size),c(f)}})}#_(r,n){if(this.#e||this.#t||typeof n.data!="string")return;const i=n.data;let o;try{o=JSON.parse(i)}catch(l){this.#i(r,{level:"error",message:`frontend:ws: parse error ${l.message}`,namespace:"frontend:ws"});return}if(r.metricsMessagesReceived++,r.metricsBytesReceived+=i.length,r.metricsLastMessageTs=Date.now(),r.dirtyMetrics=!0,o.topic.endsWith(dN)){Ct.getState().updateAvailability(r.idx,o),this.#n();return}if(o.topic.startsWith("bridge/")){this.#g(r,o),r.metricsMessagesBridge++,this.#n();return}r.metricsMessagesDevice++,this.#h(r,o)}#g(r,n){const i=Ct.getState();switch(n.topic){case"bridge/info":{i.setBridgeInfo(r.idx,n.payload);break}case"bridge/state":{i.setBridgeState(r.idx,n.payload);break}case"bridge/health":{i.setBridgeHealth(r.idx,n.payload);break}case"bridge/definitions":{i.setBridgeDefinitions(r.idx,n.payload);break}case"bridge/devices":{i.setDevices(r.idx,n.payload);break}case"bridge/groups":{i.setGroups(r.idx,n.payload);break}case"bridge/converters":{i.setConverters(r.idx,n.payload);break}case"bridge/extensions":{i.setExtensions(r.idx,n.payload);break}case"bridge/logging":{const o=n.payload;this.#i(r,o);break}case"bridge/response/networkmap":{const o=n.payload;i.setNetworkMap(r.idx,o.status==="ok"?o.data:void 0);break}case"bridge/response/touchlink/scan":{const{status:o,data:l}=n.payload;i.setTouchlinkScan(r.idx,o==="ok"?{inProgress:!1,devices:l.found}:{inProgress:!1,devices:[]});break}case"bridge/response/touchlink/identify":{i.setTouchlinkIdentifyInProgress(r.idx,!1);break}case"bridge/response/touchlink/factory_reset":{i.setTouchlinkResetInProgress(r.idx,!1);break}case"bridge/response/backup":{const o=n.payload;i.setBackup(r.idx,o.data.zip);break}case"bridge/response/device/generate_external_definition":{const o=n.payload;o.status==="ok"&&i.addGeneratedExternalDefinition(r.idx,o.data);break}}n.topic.startsWith("bridge/response/")&&this.#m(r,n)}#m(r,n){const i=Ct.getState(),o=n.payload,l=o.transaction;if(l){const c=r.pending.get(l);c&&(clearTimeout(c.timeoutId),o.status==="ok"||o.status==null?c.resolve():c.reject(new Error(o.error??"Unknown error",{cause:l})),r.pending.delete(l),i.setPendingRequestsCount(r.idx,r.pending.size))}i.addToast({sourceIdx:r.idx,topic:n.topic.replace("bridge/response/",""),status:o.status,error:"error"in o?o.error:void 0,transaction:l})}#h(r,n){r.deviceQueue.push(n),r.deviceQueue.length>=lq?queueMicrotask(()=>this.#o()):this.#n()}#i(r,n){r.logQueue.push({...n,timestamp:new Date().toLocaleString()}),r.logQueue.length>=lq?queueMicrotask(()=>this.#o()):this.#n()}#n(){this.#r===void 0&&(this.#r=requestAnimationFrame(()=>{this.#r=void 0,this.#o()}))}#o(r=!1){if(this.#e&&!r)return;const n=Ct.getState();for(const i of this.#a){if(i.deviceQueue.length){const o=i.deviceQueue.splice(0);n.updateDeviceStates(i.idx,o)}if(i.logQueue.length){const o=i.logQueue.splice(0);n.addLogs(i.idx,o)}i.dirtyMetrics&&(n.updateWebSocketMetrics(i.idx,{messagesSent:i.metricsMessagesSent,bytesSent:i.metricsBytesSent,messagesReceived:i.metricsMessagesReceived,messagesBridge:i.metricsMessagesBridge,messagesDevice:i.metricsMessagesDevice,bytesReceived:i.metricsBytesReceived,reconnects:i.metricsReconnects,lastMessageTs:i.metricsLastMessageTs}),i.metricsMessagesSent=0,i.metricsBytesSent=0,i.metricsMessagesReceived=0,i.metricsMessagesBridge=0,i.metricsMessagesDevice=0,i.metricsBytesReceived=0,i.metricsReconnects=0,i.metricsLastMessageTs=0,i.dirtyMetrics=!1)}}}let Vo;const cq=globalThis[xD];cq?Vo=cq:(Vo=new uue,globalThis[xD]=Vo);function zD(){Vo.start()}async function RD(t,r,n){await Vo.sendMessage(t,r,n)}function due(t){return Vo.getTransactionPrefix(t)}function fue({isOpen:t,children:r,title:n,footer:i}){return t?D2.createPortal(W.jsx("dialog",{className:"modal modal-bottom sm:modal-middle",open:!0,children:W.jsxs("div",{className:"modal-box",children:[W.jsx("h3",{className:"font-bold text-lg mb-3",children:n}),r,W.jsx("div",{className:"modal-action mt-3",children:W.jsx("form",{method:"dialog",children:i})})]})}),document.body):null}const vue=O2.create(t=>{const{onConfirmHandler:r,modalTitle:n,modalDescription:i,modalCancelLabel:o,modalConfirmLabel:l}=t,c=R2(),d=K.useCallback(async()=>{c.remove(),await r()},[c,r]);return K.useEffect(()=>{const f=async v=>{v.key==="Escape"?(v.preventDefault(),c.remove()):v.key==="Enter"&&(v.preventDefault(),await d())};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[c,d]),W.jsx(fue,{isOpen:c.visible,title:n,footer:W.jsxs(W.Fragment,{children:[W.jsx(Li,{className:"btn btn-neutral",onClick:c.remove,children:o}),W.jsx(Li,{className:"btn btn-primary ms-1",onClick:d,children:l||n})]}),children:W.jsxs("div",{className:"flex flex-row justify-center items-center gap-2",children:[W.jsx(wr,{icon:Eoe,size:"3x",className:"text-error"}),i]})})});function OD(t){const{children:r,item:n,onClick:i,modalDescription:o,modalCancelLabel:l,title:c,className:d,...f}=t,v=K.useCallback(async()=>{await O2.show(vue,{onConfirmHandler:async()=>await i?.(n),modalTitle:c,modalDescription:o,modalCancelLabel:l,modalConfirmLabel:c})},[n,i,c,o,l]);return W.jsx("button",{type:"button",className:`${d} tooltip`,"data-tip":c,...f,onClick:v,children:r})}const pue={[WebSocket.CONNECTING]:loe,[WebSocket.OPEN]:Coe,[WebSocket.CLOSING]:ioe,[WebSocket.CLOSED]:Xie},_ue=["#F3C300","#875692","#0067A5","#008856","#E25822","#2B3D26","#8DB600","#B3446C","#A1CAF1","#654522","#E68FAC","#F38400","#604E97","#C2B280","#BE0032"],Uu=K.memo(({idx:t,autoHide:r,alwaysShowName:n,alwaysHideName:i,nameClassName:o,namePostfix:l,...c})=>{const d=Ct(Qo(v=>v.readyStates[t])),f=!i&&(n||ta.get($K,!0));return r&&!Ul?null:W.jsxs("span",{title:`${t} | ${Xa[t]}`,children:[W.jsx(wr,{icon:pue[d],style:{color:_ue[t]},...c}),f&&W.jsx("span",{className:`ms-1 ${o??""}`,children:Xa[t]}),f&&l]})}),gue=K.memo(({log:t,onClick:r})=>{const n=K.useRef(null);return W.jsxs("div",{ref:n,className:`alert ${qK[t.level]} break-all gap-1 p-2 pe-0.5 tooltip tooltip-bottom sm:tooltip-left`,"data-tip":t.timestamp,children:[W.jsx("span",{children:t.message}),W.jsx("div",{className:"justify-self-end",children:W.jsx(Li,{item:n,onClick:r,className:"btn btn-xs btn-square",children:W.jsx(wr,{icon:_oe})})})]})}),mue=K.memo(({sourceIdx:t,readyState:r})=>{const n=jK[r],{t:i}=Yi(["navbar","common"]),o=Ct(Qo(p=>p.notifications[t])),l=Ct(Qo(p=>p.bridgeInfo[t].restart_required)),c=Ct(p=>p.clearNotifications),d=K.useCallback(async()=>await RD(t,"bridge/request/restart",""),[t]),f=K.useCallback(p=>{p?.current&&(p.current.className+=" hidden")},[]),v=K.useCallback(()=>c(t),[t,c]);return W.jsx("li",{children:W.jsxs("details",{open:t===0,children:[W.jsxs("summary",{children:[W.jsx("span",{className:"tooltip tooltip-left","data-tip":`${i(p=>p.transaction_prefix)}: ${due(t)}`,children:Ul?W.jsx(Uu,{idx:t,alwaysShowName:!0}):"Zigbee2MQTT"}),W.jsxs("span",{className:"ml-auto",children:[l&&W.jsx(OD,{className:"btn btn-xs btn-square btn-error animate-pulse",onClick:d,title:i(p=>p.restart),modalDescription:i(p=>p.dialog_confirmation_prompt,{ns:"common"}),modalCancelLabel:i(p=>p.cancel,{ns:"common"}),children:W.jsx(wr,{icon:Pie})}),W.jsx("span",{className:"tooltip tooltip-left","data-tip":`${i(p=>p.websocket_status)}: ${n?.[0]}`,children:W.jsx(wr,{icon:foe,className:n?.[1]})})]})]}),o.map((p,g)=>W.jsx(gue,{log:p,onClick:f},`${g}-${p.timestamp}`)),o.length>0&&W.jsxs("div",{className:"flex flex-row justify-between mt-3 mb-1",children:[W.jsxs(N2,{to:`/logs/${t}`,className:"btn btn-sm btn-primary btn-outline",title:i(p=>p.more,{ns:"common"}),children:[W.jsx(wr,{icon:Uie}),i(p=>p.more,{ns:"common"})]}),W.jsxs(Li,{className:"btn btn-sm btn-warning btn-outline",onClick:v,title:i(p=>p.clear,{ns:"common"}),children:[W.jsx(wr,{icon:SN}),i(p=>p.clear,{ns:"common"})]})]})]})})}),hue=K.memo(()=>{const{t}=Yi("common"),r=Ct(i=>i.readyStates),n=Ct(i=>i.clearAllNotifications);return W.jsxs(W.Fragment,{children:[W.jsxs("div",{className:"flex items-center gap-2 p-2",children:[W.jsx(wr,{icon:EN}),W.jsx("span",{className:"font-semibold text-md",children:t(i=>i.notifications)})]}),W.jsxs("ul",{className:"menu w-full px-1 py-0",children:[pa.map((i,o)=>W.jsx(mue,{sourceIdx:o,readyState:r[o]},`${o}`)),Ul&&W.jsxs(OD,{className:"btn btn-sm btn-warning btn-outline mt-5",onClick:n,title:t(i=>i.clear_all),modalDescription:t(i=>i.dialog_confirmation_prompt),modalCancelLabel:t(i=>i.cancel),children:[W.jsx(wr,{icon:SN}),t(i=>i.clear_all)]})]})]})}),yue=K.memo(t=>{const[r,n]=K.useState(t.seconds);K.useEffect(()=>{const f=setTimeout(()=>{n(r-1)},1e3);return()=>clearTimeout(f)},[r]);const i=Math.floor(r/3600),o=Math.floor(r/60)%60,l=Math.floor(r%60),c=!t.hideZeroes||i>0,d=!t.hideZeroes||o>0;return W.jsxs("span",{className:"",children:[c?`${i}:`:"",d?`${o.toString().padStart(2,"0")}:`:"",l.toString().padStart(2,"0")]})}),bue=K.memo(({selectedRouter:t,setSelectedRouter:r})=>{const{t:n}=Yi("navbar"),i=Ct(l=>l.devices),o=K.useMemo(()=>{const l=[];for(let c=0;c<pa.length;c++)for(const d of i[c])(d.type==="Coordinator"||d.type==="Router")&&l.push(W.jsx("li",{className:"truncate",onClick:()=>r([c,d]),onKeyUp:f=>{f.key==="enter"&&r([c,d])},children:W.jsxs("span",{className:`dropdown-item${t[0]===c&&t[1]?.ieee_address===d.ieee_address?" menu-active":""}`,children:[W.jsx(Uu,{idx:c,autoHide:!0,namePostfix:" - "}),d.friendly_name]})},`${d.friendly_name}-${d.ieee_address}-${c}`));l.sort((c,d)=>c.key.localeCompare(d.key));for(let c=pa.length-1;c>=0;c--)l.unshift(W.jsx("li",{className:"truncate",onClick:()=>r([c,void 0]),onKeyUp:d=>{d.key==="enter"&&r([c,void 0])},children:W.jsxs("span",{className:`dropdown-item${t[0]===c&&t[1]===void 0?" menu-active":""}`,children:[W.jsx(Uu,{idx:c,autoHide:!0,namePostfix:" - "}),n(d=>d.all)]})},`${c}-all`));return l},[i,t,r,n]);return W.jsx(W2,{buttonChildren:W.jsx("span",{className:"tooltip tooltip-right","data-tip":n(l=>l.toggle_dropdown),children:W.jsx(wr,{icon:boe})}),buttonStyle:"btn-outline btn-primary btn-square join-item",children:o})}),kue=K.memo(()=>{const{t}=Yi("navbar"),[r,n]=K.useState([0,void 0]),[i,o]=K.useState(0),l=Ct(Qo(v=>v.bridgeInfo[i].permit_join)),c=Ct(Qo(v=>v.bridgeInfo[i].permit_join_end)),d=K.useCallback(async()=>{const[v,p]=r;o(v),await RD(v,"bridge/request/permit_join",{time:l?0:ta.get(UK,254),device:p?.ieee_address})},[r,l]),f=K.useMemo(()=>l?W.jsx(yue,{seconds:(c-Date.now())/1e3,hideZeroes:!0}):null,[l,c]);return W.jsxs("div",{className:"indicator w-full mb-4",children:[W.jsxs("div",{className:"join join-horizontal w-full",children:[W.jsxs(Li,{onClick:d,className:"btn btn-outline btn-primary join-item grow",children:[W.jsx(wr,{icon:Toe,className:l?"text-success":"text-error"}),t(l?v=>v.disable_join:v=>v.permit_join),l&&f]}),!l&&W.jsx(bue,{selectedRouter:r,setSelectedRouter:n})]}),W.jsxs("div",{className:"indicator-item indicator-bottom indicator-center badge badge-sm badge-primary opacity-95 min-w-0 pointer-events-none",style:{"--indicator-y":"65%"},children:[W.jsx(Uu,{idx:r[0],autoHide:!0,alwaysHideName:!0}),W.jsx("span",{className:"truncate",children:r[1]?.friendly_name??t(v=>v.all)})]})]})}),Sue=["","Light","Dark","Abyss","Acid","Aqua","Autumn","Black","Bumblebee","Business","Caramellatte","Cmyk","Coffee","Corporate","Cupcake","Cyberpunk","Dim","Dracula","Emerald","Fantasy","Forest","Garden","Halloween","Lemonade","Lofi","Luxury","Night","Nord","Pastel","Retro","Silk","Sunset","Synthwave","Valentine","Winter","Wireframe"],Eue=K.memo(()=>{const t=jn(),[r,n]=K.useState(ta.get(qM,""));return K.useEffect(()=>{ta.set(qM,r),r?document.documentElement.setAttribute("data-theme",r):document.documentElement.removeAttribute("data-theme")},[r]),W.jsx(W2,{buttonChildren:W.jsx(wr,{icon:Hie}),buttonStyle:"btn-outline btn-primary",buttonDisabled:t.pathname.startsWith("/network"),children:Sue.map(i=>W.jsx("li",{children:W.jsx("input",{type:"radio",name:"theme-dropdown",className:`theme-controller w-full font-normal btn btn-block ${r===i.toLowerCase()?"btn-primary":"btn-ghost"}`,"aria-label":i||"Default",value:i.toLowerCase(),onChange:()=>n(i.toLowerCase())})},i||"default"))})}),Y2=K.createContext(null),wue=K.memo(({children:t})=>{const[r,n]=K.useState(null),i=K.useMemo(()=>({content:r,setContent:n}),[r]);return W.jsx(Y2.Provider,{value:i,children:t})});function Tue(){return K.useContext(Y2)?.content??null}function Aue(){const t=K.useContext(Y2);if(!t)throw new Error("useSetNavBarContent must be used within NavBarProvider");return t.setContent}const Tpe=K.memo(({children:t})=>{const r=Aue();return K.useEffect(()=>(r(t),()=>{r(null)}),[t,r]),null}),xue=K.memo(({setSidebarCollapsed:t,showNotifications:r,setShowNotifications:n})=>{const i=Tue(),{t:o}=Yi("common"),l=Ct(c=>c.notificationsAlert);return W.jsxs("div",{className:"navbar bg-base-200 shadow w-full",children:[W.jsxs("div",{className:"flex flex-row items-center gap-1 w-full",children:[W.jsx("label",{htmlFor:"sidebar-drawer",className:"btn btn-ghost lg:hidden","aria-label":"show sidebar",onClick:()=>t(!1),children:W.jsx(wr,{icon:wN})}),i]}),W.jsx("div",{className:"flex flex-row flex-wrap gap-1 items-center ml-auto",children:W.jsxs("label",{htmlFor:"notifications-drawer",className:"drawer-button btn btn-sm btn-outline btn-primary tooltip tooltip-left","data-tip":o(c=>c.notifications),"aria-label":"toggle notifications",onClick:()=>n(!r),children:[W.jsx(wr,{icon:EN}),l[0]?W.jsx("span",{className:"status status-primary animate-bounce"}):l[1]?W.jsx("span",{className:"status status-error animate-bounce"}):null]})})]})}),zue=({isActive:t})=>`py-2.5 leading-none lg:grid lg:tooltip lg:tooltip-right ${t?"menu-active":""}`,Rue=K.memo(({children:t})=>{const{t:r}=Yi(["navbar","common"]),n=K.useRef(null),[i,o]=K.useState(ta.get(LM,!1)),[l,c]=K.useState(!1);K.useEffect(()=>{ta.set(LM,i)},[i]);const d=K.useMemo(()=>[{to:"/dashboard",icon:Vie,title:r(p=>p.dashboard)},{to:"/devices",icon:hoe,title:r(p=>p.devices)},{to:"/groups",icon:qoe,title:r(p=>p.groups)},{to:"/ota",icon:jie,title:r(p=>p.ota)},{to:"/touchlink",icon:aoe,title:r(p=>p.touchlink)},{to:"/network",icon:Wie,title:r(p=>p.network)},{to:"/logs",icon:moe,title:r(p=>p.logs)},{to:"/settings",icon:Die,title:r(p=>p.settings)},{to:"/frontend-settings",icon:Fie,title:r(p=>p.frontend_settings)}],[r]),f=()=>{window.matchMedia("(min-width: 1024px)").matches||n.current&&(n.current.checked=!1)},v=`hidden ${i?"lg:hidden":"lg:inline"}`;return W.jsx(wue,{children:W.jsxs("div",{className:"drawer lg:drawer-open",children:[W.jsx("input",{ref:n,id:"sidebar-drawer",type:"checkbox",className:"drawer-toggle"}),W.jsxs("div",{className:"drawer-content",children:[W.jsxs("div",{className:"drawer drawer-end w-auto",children:[W.jsx("input",{id:"notifications-drawer",type:"checkbox",className:"drawer-toggle"}),W.jsx("div",{className:"drawer-content",children:W.jsx(xue,{setSidebarCollapsed:o,showNotifications:l,setShowNotifications:c})}),W.jsxs("div",{className:"drawer-side",children:[W.jsx("label",{htmlFor:"notifications-drawer","aria-label":"close notifications",className:"drawer-overlay",onClick:()=>c(!1)}),W.jsx("aside",{className:"bg-base-100 min-h-screen w-80",children:l&&W.jsx(hue,{})})]})]}),W.jsx("main",{className:"pt-2 px-2 grow [scrollbar-gutter:stable]",children:t})]}),W.jsxs("div",{className:"drawer-side lg:overflow-visible!",children:[W.jsx("label",{htmlFor:"sidebar-drawer","aria-label":"close sidebar",className:"drawer-overlay lg:hidden",onClick:()=>o(!0)}),W.jsx("aside",{className:`bg-base-200 min-h-screen ${i?"lg:w-16":"w-64"}`,children:W.jsxs("nav",{className:"flex flex-col h-full w-full",children:[W.jsxs("ul",{className:"menu w-full p-2",children:[W.jsx("li",{children:W.jsxs("button",{type:"button",className:"py-2.5 leading-none hidden lg:grid lg:tooltip lg:tooltip-right","data-tip":window.location!==window.parent.location?`Zigbee2MQTT@${window.location.hostname}`:"",onClick:()=>o(!i),children:[W.jsx(wr,{icon:i?wN:Roe,size:"lg"}),W.jsx("span",{className:"inline lg:hidden",children:"Zigbee2MQTT"}),W.jsx("span",{className:v,children:"Zigbee2MQTT"})]})}),d.map(p=>W.jsx("li",{children:W.jsxs(k1,{to:p.to,className:zue,onClick:f,"data-tip":i?p.title:"",children:[W.jsx(wr,{icon:p.icon,size:"lg"}),W.jsx("span",{className:"inline lg:hidden",children:p.title}),W.jsx("span",{className:v,children:p.title})]})},p.to))]}),W.jsx("div",{className:`menu w-full p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:W.jsx(kue,{})}),W.jsxs("div",{className:`menu w-full p-2 gap-2 flex-row justify-center p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:[W.jsx(nue,{}),W.jsx(Eue,{})]}),W.jsx("ul",{className:`menu w-full p-2 gap-2 ${i?"hidden lg:hidden":""}`,children:W.jsx("li",{className:"",children:W.jsxs(k1,{to:"/contribute",className:"btn btn-sm btn-outline btn-secondary",onClick:f,children:[W.jsx(wr,{icon:Kie}),r(p=>p.contribute)]})})})]})})]})]})})});function Oue(){const t=Ct(o=>o.authRequired),[r,n]=K.useState(()=>Xa.map((o,l)=>ta.get(`${_l}_${l}`,""))),i=()=>{const o=[];for(let l=0;l<Xa.length;l++){const c=r[l]??"";c?ta.set(`${_l}_${l}`,c):ta.remove(`${_l}_${l}`),o[l]=!1}Ct.setState({authRequired:o}),zD()};return t?W.jsx("main",{className:"min-h-screen flex items-center justify-center",children:W.jsx("div",{className:"card w-full max-w-md bg-base-100 shadow",children:W.jsxs("div",{className:"card-body",children:[W.jsx("h2",{className:"card-title",children:"Auth"}),Xa.map((o,l)=>t[l]?W.jsxs("label",{className:"input validator w-full",children:[Ul?`${o} token`:"Token",W.jsx("input",{type:"password",className:"grow",autoCapitalize:"none",value:r[l],onChange:c=>{const d=Array.from(r);d[l]=c.target.value,n(d)},required:!0})]},o):null),W.jsx("div",{className:"card-actions justify-end",children:W.jsx(Li,{className:"btn btn-square btn-primary",onClick:i,children:W.jsx(wr,{icon:Gie})})})]})})}):null}const uq=K.lazy(async()=>await na(()=>import("./HomePage-vHwZidUF.js"),__vite__mapDeps([0,1]),import.meta.url)),Cue=K.lazy(async()=>await na(()=>import("./DevicesPage-x2h663Pn.js"),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1]),import.meta.url)),Mue=K.lazy(async()=>await na(()=>import("./DevicePage-X_J0uLvv.js"),__vite__mapDeps([18,19,11,1]),import.meta.url)),Iue=K.lazy(async()=>await na(()=>import("./Dashboard-NFKeHuZ2.js"),__vite__mapDeps([20,21,22,23,16,24,25,26,15,12,13,14,27,28,7,8,4,5,29,10,11,1]),import.meta.url)),que=K.lazy(async()=>await na(()=>import("./NetworkPage-B7Jry1o1.js"),__vite__mapDeps([30,5,31,1]),import.meta.url)),Lue=K.lazy(async()=>await na(()=>import("./GroupsPage-BU0zPu08.js"),__vite__mapDeps([32,6,31,9,10,11,1]),import.meta.url)),Nue=K.lazy(async()=>await na(()=>import("./GroupPage-2bYv8nal.js"),__vite__mapDeps([33,19,11,1]),import.meta.url)),Due=K.lazy(async()=>await na(()=>import("./OtaPage-DkIMQS5w.js"),__vite__mapDeps([34,7,8,9,10,11,17,27,28,25,26,1]),import.meta.url)),jue=K.lazy(async()=>await na(()=>import("./TouchlinkPage-CNaEzWU8.js"),__vite__mapDeps([35,31,9,10,11,1]),import.meta.url)),Pue=K.lazy(async()=>await na(()=>import("./LogsPage-CiCW-D3e.js"),__vite__mapDeps([36,5,11,31,19,1]),import.meta.url)),Bue=K.lazy(async()=>await na(()=>import("./SettingsPage-D4PEYHCe.js"),__vite__mapDeps([37,1]),import.meta.url)),Uue=K.lazy(async()=>await na(()=>import("./FrontendSettingsPage-Cug7TKW7.js"),__vite__mapDeps([38,5,39,31,1]),import.meta.url)),Fue=K.lazy(async()=>await na(()=>import("./ContributePage-I_45rELu.js"),__vite__mapDeps([40,1]),import.meta.url));function $ue(){const t=Ct(Qo(r=>r.authRequired.some(n=>n===!0)));return K.useEffect(()=>{zD()},[]),t?W.jsx(Oue,{}):W.jsxs(bK,{children:[W.jsx(CK,{}),W.jsx(Rue,{children:W.jsx(K.Suspense,{fallback:W.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:W.jsx("span",{className:"loading loading-infinity loading-xl"})}),children:W.jsxs(YQ,{children:[W.jsx(Kr,{path:"/dashboard",element:W.jsx(Iue,{})}),W.jsx(Kr,{path:"/devices",element:W.jsx(Cue,{})}),W.jsx(Kr,{path:"/device/:sourceIdx/:deviceId/:tab?",element:W.jsx(Mue,{})}),W.jsx(Kr,{path:"/groups",element:W.jsx(Lue,{})}),W.jsx(Kr,{path:"/group/:sourceIdx/:groupId/:tab?",element:W.jsx(Nue,{})}),W.jsx(Kr,{path:"/touchlink",element:W.jsx(jue,{})}),W.jsx(Kr,{path:"/ota",element:W.jsx(Due,{})}),W.jsx(Kr,{path:"/network/:sourceIdx?",element:W.jsx(que,{})}),W.jsx(Kr,{path:"/logs/:sourceIdx?",element:W.jsx(Pue,{})}),W.jsx(Kr,{path:"/settings/:sourceIdx?/:tab?/:subTab?",element:W.jsx(Bue,{})}),W.jsx(Kr,{path:"/frontend-settings",element:W.jsx(Uue,{})}),W.jsx(Kr,{path:"/contribute",element:W.jsx(Fue,{})}),W.jsx(Kr,{path:"/",element:W.jsx(uq,{})}),W.jsx(Kr,{path:"*",element:W.jsx(uq,{})})]})})}),W.jsx(oZ,{})]})}function Hue(){return W.jsx(sr.StrictMode,{children:W.jsx(lZ,{children:W.jsx(O2.Provider,{children:W.jsx(oQ,{i18n:mr,children:W.jsx($ue,{})})})})})}const dq=document.getElementById("root");dq&&TV.createRoot(dq).render(W.jsx(Hue,{}));window.addEventListener("vite:preloadError",()=>{window.location.reload()});export{Eoe as $,pa as A,Uve as B,Li as C,W2 as D,O2 as E,wr as F,ufe as G,kde as H,nfe as I,Ade as J,kpe as K,N2 as L,Ul as M,Tpe as N,mpe as O,R2 as P,fue as Q,hfe as R,Uu as S,OD as T,Wve as U,yoe as V,yfe as W,Zve as X,Mve as Y,vfe as Z,na as _,Ct as a,Jde as a$,Lfe as a0,Tfe as a1,SN as a2,qK as a3,Zue as a4,_oe as a5,Wue as a6,Mfe as a7,Zde as a8,$fe as a9,Cde as aA,Yue as aB,cde as aC,BK as aD,Ave as aE,sve as aF,ude as aG,dpe as aH,ide as aI,Xue as aJ,hpe as aK,Lve as aL,vpe as aM,Ife as aN,T2 as aO,HK as aP,sr as aQ,TV as aR,Rfe as aS,Qve as aT,Rde as aU,Bve as aV,Rve as aW,ffe as aX,Yve as aY,Ude as aZ,Gie as a_,UK as aa,FK as ab,Sde as ac,$K as ad,qM as ae,xde as af,zde as ag,wde as ah,Ede as ai,Tde as aj,_l as ak,IM as al,mde as am,spe as an,gde as ao,hde as ap,yde as aq,bde as ar,Kie as as,Fo as at,Vt as au,vN as av,Nde as aw,Jve as ax,Pfe as ay,Ufe as az,Yi as b,Vve as b$,tve as b0,cfe as b1,Wfe as b2,$de as b3,Vue as b4,Dde as b5,Ou as b6,Fde as b7,Ode as b8,zve as b9,Moe as bA,_fe as bB,upe as bC,rve as bD,Xde as bE,Eve as bF,hve as bG,Qde as bH,Spe as bI,ooe as bJ,bve as bK,pve as bL,uoe as bM,xfe as bN,Bde as bO,Ffe as bP,Toe as bQ,npe as bR,lve as bS,ive as bT,Sfe as bU,goe as bV,Epe as bW,Pie as bX,Soe as bY,ioe as bZ,Cve as b_,fpe as ba,hoe as bb,Hve as bc,qfe as bd,bfe as be,Kve as bf,ppe as bg,Wde as bh,ife as bi,tpe as bj,_ve as bk,Hde as bl,wfe as bm,kve as bn,Xve as bo,Nve as bp,Gve as bq,rfe as br,Qfe as bs,Kde as bt,ipe as bu,kfe as bv,cpe as bw,Gfe as bx,wpe as by,_pe as bz,RD as c,Kue as c$,noe as c0,jve as c1,Vde as c2,woe as c3,koe as c4,Tve as c5,Zfe as c6,ype as c7,yve as c8,ape as c9,nve as cA,Afe as cB,wve as cC,Ive as cD,gfe as cE,ofe as cF,gve as cG,mfe as cH,rpe as cI,Gde as cJ,Vfe as cK,Hfe as cL,Efe as cM,mve as cN,cve as cO,sfe as cP,Jue as cQ,dde as cR,vde as cS,pde as cT,_de as cU,sde as cV,lde as cW,fde as cX,ode as cY,Coe as cZ,jK as c_,Sve as ca,Xfe as cb,Ofe as cc,lpe as cd,lfe as ce,uve as cf,Bfe as cg,jfe as ch,Fve as ci,$ve as cj,qve as ck,epe as cl,Cfe as cm,ove as cn,Nfe as co,afe as cp,Dve as cq,Ove as cr,aoe as cs,fve as ct,xve as cu,bpe as cv,pfe as cw,zfe as cx,eve as cy,Kfe as cz,Xa as d,Pve as d0,jde as d1,Pde as d2,loe as d3,ave as d4,tfe as d5,Lde as d6,ede as d7,XK as d8,nde as d9,rde as da,ade as db,tde as dc,efe as e,foe as f,Ide as g,Que as h,Mde as i,W as j,Qo as k,k1 as l,dve as m,vve as n,Yfe as o,ope as p,Die as q,K as r,ta as s,qde as t,LQ as u,Jfe as v,Yde as w,dfe as x,gpe as y,Dfe as z};
|
|
Binary file
|