zigbee2mqtt-windfront 1.2.0 → 1.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-DgyWDvfB.js → About-Bzn4phMf.js} +1 -1
- package/dist/assets/About-Bzn4phMf.js.br +0 -0
- package/dist/assets/Availability-t6lZj-iw.js +1 -0
- package/dist/assets/Availability-t6lZj-iw.js.br +0 -0
- package/dist/assets/{Bind-CtiVyvbM.js → Bind-Dc9kHm7v.js} +1 -1
- package/dist/assets/Bind-Dc9kHm7v.js.br +0 -0
- package/dist/assets/{Bridge-BI9I1zH0.js → Bridge-CxXyKguB.js} +1 -1
- package/dist/assets/Bridge-CxXyKguB.js.br +0 -0
- package/dist/assets/{CheckboxField-BE2uJYM6.js → CheckboxField-DKhAwA85.js} +1 -1
- package/dist/assets/CheckboxField-DKhAwA85.js.br +0 -0
- package/dist/assets/{ClusterSinglePicker-DPQKAzs_.js → ClusterSinglePicker-Ca3Cu42z.js} +1 -1
- package/dist/assets/ClusterSinglePicker-Ca3Cu42z.js.br +0 -0
- package/dist/assets/{Clusters-DoweqlQ-.js → Clusters-D9hrSHnT.js} +1 -1
- package/dist/assets/Clusters-D9hrSHnT.js.br +0 -0
- package/dist/assets/Dashboard-D6AjCbfe.js +1 -0
- package/dist/assets/Dashboard-D6AjCbfe.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-CWbT-TyR.js +1 -0
- package/dist/assets/DashboardFeatureWrapper-CWbT-TyR.js.br +0 -0
- package/dist/assets/{DebouncedInput-C7mHBKJ8.js → DebouncedInput-DnWGzIEH.js} +1 -1
- package/dist/assets/DebouncedInput-DnWGzIEH.js.br +0 -0
- package/dist/assets/{DevConsole-BUJlOeJk.js → DevConsole-Bodnafv_.js} +1 -1
- package/dist/assets/DevConsole-Bodnafv_.js.br +0 -0
- package/dist/assets/{DevConsole-CCuEOD5s.js → DevConsole-DVk6LYDZ.js} +1 -1
- package/dist/assets/DevConsole-DVk6LYDZ.js.br +0 -0
- package/dist/assets/DeviceCard-Bz1iBm0H.js +1 -0
- package/dist/assets/DeviceCard-Bz1iBm0H.js.br +0 -0
- package/dist/assets/{DeviceControlEditName-iOMTHG5Y.js → DeviceControlEditName-CIF4s9nK.js} +1 -1
- package/dist/assets/DeviceControlEditName-CIF4s9nK.js.br +0 -0
- package/dist/assets/DeviceImage-D-FjKeE6.js +1 -0
- package/dist/assets/DeviceImage-D-FjKeE6.js.br +0 -0
- package/dist/assets/{DeviceInfo-BdupmLjM.js → DeviceInfo-736faFET.js} +1 -1
- package/dist/assets/DeviceInfo-736faFET.js.br +0 -0
- package/dist/assets/{DevicePage-Vwrptzvx.js → DevicePage-ByjIn2KO.js} +2 -2
- package/dist/assets/DevicePage-ByjIn2KO.js.br +0 -0
- package/dist/assets/{DevicePicker-ov0gnVoi.js → DevicePicker-_CY2TskL.js} +1 -1
- package/dist/assets/DevicePicker-_CY2TskL.js.br +0 -0
- package/dist/assets/DeviceSettings-CZqhT3Vo.js +1 -0
- package/dist/assets/DeviceSettings-CZqhT3Vo.js.br +0 -0
- package/dist/assets/{DeviceSpecificSettings-uh-HwgqP.js → DeviceSpecificSettings-DIaLmFsZ.js} +1 -1
- package/dist/assets/DeviceSpecificSettings-DIaLmFsZ.js.br +0 -0
- package/dist/assets/Devices-DUPFbo5z.js +1 -0
- package/dist/assets/Devices-DUPFbo5z.js.br +0 -0
- package/dist/assets/DevicesPage-ujDxwM3e.js +1 -0
- package/dist/assets/DevicesPage-ujDxwM3e.js.br +0 -0
- package/dist/assets/{DisplayValue-Beucehnn.js → DisplayValue-B5Rw3jLu.js} +1 -1
- package/dist/assets/DisplayValue-B5Rw3jLu.js.br +0 -0
- package/dist/assets/{Donate-COo6hmUa.js → Donate-Dj2gLttt.js} +1 -1
- package/dist/assets/Donate-Dj2gLttt.js.br +0 -0
- package/dist/assets/{EndpointPicker-CXLotsVN.js → EndpointPicker-Bik90BnT.js} +1 -1
- package/dist/assets/EndpointPicker-Bik90BnT.js.br +0 -0
- package/dist/assets/{Exposes-Cr1tyQmV.js → Exposes-OHqD_-Hv.js} +1 -1
- package/dist/assets/Exposes-OHqD_-Hv.js.br +2 -0
- package/dist/assets/Feature-VsMzzVJz.js +1 -0
- package/dist/assets/Feature-VsMzzVJz.js.br +0 -0
- package/dist/assets/{Frontend-CikxfpKV.js → Frontend-BjIugJEJ.js} +1 -1
- package/dist/assets/Frontend-BjIugJEJ.js.br +0 -0
- package/dist/assets/{GroupPage-00A4xdiI.js → GroupPage-BsnK7oWM.js} +2 -2
- package/dist/assets/GroupPage-BsnK7oWM.js.br +0 -0
- package/dist/assets/{GroupSettings-1CJfLaCH.js → GroupSettings-8js0C39v.js} +1 -1
- package/dist/assets/GroupSettings-8js0C39v.js.br +0 -0
- package/dist/assets/Groups-CCx1QUBg.js +1 -0
- package/dist/assets/Groups-CCx1QUBg.js.br +0 -0
- package/dist/assets/GroupsPage-BhVRtjWf.js +1 -0
- package/dist/assets/GroupsPage-BhVRtjWf.js.br +0 -0
- package/dist/assets/{Health-LUtfSTPl.js → Health-CKhCvWTS.js} +1 -1
- package/dist/assets/Health-CKhCvWTS.js.br +0 -0
- package/dist/assets/{HomePage-Btp2tHF6.js → HomePage-wRiJ3XSz.js} +1 -1
- package/dist/assets/HomePage-wRiJ3XSz.js.br +0 -0
- package/dist/assets/{InputField-DCkeC8F5.js → InputField-CYbmpJqW.js} +1 -1
- package/dist/assets/InputField-CYbmpJqW.js.br +0 -0
- package/dist/assets/{LastSeen-BCk3tP-Y.js → LastSeen-CvhRQlEh.js} +1 -1
- package/dist/assets/LastSeen-CvhRQlEh.js.br +1 -0
- package/dist/assets/{LogsPage-BOpboBjY.js → LogsPage-SpfGhzXx.js} +1 -1
- package/dist/assets/LogsPage-SpfGhzXx.js.br +0 -0
- package/dist/assets/{Lqi-B5_BH_e-.js → Lqi-CoNVuBvb.js} +1 -1
- package/dist/assets/Lqi-CoNVuBvb.js.br +0 -0
- package/dist/assets/{NetworkPage-BcHYfNai.js → NetworkPage-pOMHA_Ra.js} +2 -2
- package/dist/assets/NetworkPage-pOMHA_Ra.js.br +0 -0
- package/dist/assets/{NumberField-lvLxfvCU.js → NumberField-DVRroIAm.js} +1 -1
- package/dist/assets/NumberField-DVRroIAm.js.br +0 -0
- package/dist/assets/OtaPage-9fPGNESZ.js +1 -0
- package/dist/assets/OtaPage-9fPGNESZ.js.br +0 -0
- package/dist/assets/{PowerSource-DqdctI_P.js → PowerSource-DgFKG_xU.js} +1 -1
- package/dist/assets/PowerSource-DgFKG_xU.js.br +0 -0
- package/dist/assets/{RawNetworkData-MNv4MZ4s.js → RawNetworkData-B1pJ3MXI.js} +1 -1
- package/dist/assets/RawNetworkData-B1pJ3MXI.js.br +0 -0
- package/dist/assets/{RawNetworkMap-ys7aaXo1.js → RawNetworkMap-Cvt65_FK.js} +1 -1
- package/dist/assets/RawNetworkMap-Cvt65_FK.js.br +0 -0
- package/dist/assets/{RecallRemove-B8jWvJxI.js → RecallRemove-C7or_UUw.js} +1 -1
- package/dist/assets/RecallRemove-C7or_UUw.js.br +0 -0
- package/dist/assets/{Reporting-D7xIqQEI.js → Reporting-JJt-aW2u.js} +1 -1
- package/dist/assets/Reporting-JJt-aW2u.js.br +0 -0
- package/dist/assets/Scene-CvuDpnvP.js +1 -0
- package/dist/assets/Scene-CvuDpnvP.js.br +0 -0
- package/dist/assets/{SelectField-1O9grfYD.js → SelectField-DfdnxD7O.js} +1 -1
- package/dist/assets/SelectField-DfdnxD7O.js.br +0 -0
- package/dist/assets/{Settings-DD7_dD9z.js → Settings-BjCQ4C8J.js} +1 -1
- package/dist/assets/Settings-BjCQ4C8J.js.br +0 -0
- package/dist/assets/{SettingsList-DMDmHfS-.js → SettingsList-m7AYDAw4.js} +1 -1
- package/dist/assets/SettingsList-m7AYDAw4.js.br +0 -0
- package/dist/assets/{SettingsPage-CpmLVhDq.js → SettingsPage-9ceAvJ2A.js} +2 -2
- package/dist/assets/SettingsPage-9ceAvJ2A.js.br +0 -0
- package/dist/assets/{State-DnmWu73w.js → State-DwJDwttn.js} +1 -1
- package/dist/assets/State-DwJDwttn.js.br +0 -0
- package/dist/assets/{Table-CHaSwsCb.js → Table-BQc_g_eJ.js} +2 -2
- package/dist/assets/Table-BQc_g_eJ.js.br +0 -0
- package/dist/assets/{TextareaField-BbOsusbU.js → TextareaField-Xo9B_w91.js} +1 -1
- package/dist/assets/TextareaField-Xo9B_w91.js.br +0 -0
- package/dist/assets/{Tools-BBioT6my.js → Tools-Cjm0CrsG.js} +1 -1
- package/dist/assets/Tools-Cjm0CrsG.js.br +0 -0
- package/dist/assets/TouchlinkPage-Be0g7f2j.js +1 -0
- package/dist/assets/TouchlinkPage-Be0g7f2j.js.br +0 -0
- package/dist/assets/{VendorLink-tKv1Ms14.js → VendorLink-D24n6LN-.js} +1 -1
- package/dist/assets/VendorLink-D24n6LN-.js.br +0 -0
- package/dist/assets/{_createCompounder-DqDEDMcN.js → _createCompounder-CbLsIfEE.js} +1 -1
- package/dist/assets/_createCompounder-CbLsIfEE.js.br +0 -0
- package/dist/assets/{capitalize-Cq5sVmfS.js → capitalize-C89IAw35.js} +1 -1
- package/dist/assets/capitalize-C89IAw35.js.br +0 -0
- package/dist/assets/{format-eWM0FM-u.js → format-6Yb6jWnA.js} +1 -1
- package/dist/assets/format-6Yb6jWnA.js.br +0 -0
- package/dist/assets/index-DtyjNqrf.js +635 -0
- package/dist/assets/index-DtyjNqrf.js.br +0 -0
- package/dist/assets/index-EwioJBcA.css +1 -0
- package/dist/assets/index-EwioJBcA.css.br +0 -0
- package/dist/assets/index-Q3KOJDn9.js +1 -0
- package/dist/assets/index-Q3KOJDn9.js.br +2 -0
- package/dist/assets/{jszip.min-5BMZ56Hu.js → jszip.min-DEwtIh7I.js} +1 -1
- package/dist/assets/jszip.min-DEwtIh7I.js.br +0 -0
- package/dist/assets/snakeCase-DmoQhYQA.js +1 -0
- package/dist/assets/snakeCase-DmoQhYQA.js.br +0 -0
- package/dist/index.html +2 -2
- package/dist/index.html.br +0 -0
- package/package.json +3 -3
- package/dist/assets/About-DgyWDvfB.js.br +0 -0
- package/dist/assets/Availability-Bd4eFrIW.js +0 -1
- package/dist/assets/Availability-Bd4eFrIW.js.br +0 -0
- package/dist/assets/Bind-CtiVyvbM.js.br +0 -0
- package/dist/assets/Bridge-BI9I1zH0.js.br +0 -2
- package/dist/assets/CheckboxField-BE2uJYM6.js.br +0 -1
- package/dist/assets/ClusterSinglePicker-DPQKAzs_.js.br +0 -0
- package/dist/assets/Clusters-DoweqlQ-.js.br +0 -0
- package/dist/assets/Dashboard-BBV5Of7y.js +0 -1
- package/dist/assets/Dashboard-BBV5Of7y.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-DyHMfT1k.js +0 -1
- package/dist/assets/DashboardFeatureWrapper-DyHMfT1k.js.br +0 -3
- package/dist/assets/DebouncedInput-C7mHBKJ8.js.br +0 -0
- package/dist/assets/DevConsole-BUJlOeJk.js.br +0 -0
- package/dist/assets/DevConsole-CCuEOD5s.js.br +0 -0
- package/dist/assets/DeviceCard-Dwynhf4j.js +0 -1
- package/dist/assets/DeviceCard-Dwynhf4j.js.br +0 -0
- package/dist/assets/DeviceControlEditName-iOMTHG5Y.js.br +0 -0
- package/dist/assets/DeviceImage-DnR6dgTB.js +0 -1
- package/dist/assets/DeviceImage-DnR6dgTB.js.br +0 -0
- package/dist/assets/DeviceInfo-BdupmLjM.js.br +0 -0
- package/dist/assets/DevicePage-Vwrptzvx.js.br +0 -0
- package/dist/assets/DevicePicker-ov0gnVoi.js.br +0 -0
- package/dist/assets/DeviceSettings-BpVsyHbe.js +0 -1
- package/dist/assets/DeviceSettings-BpVsyHbe.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-uh-HwgqP.js.br +0 -0
- package/dist/assets/Devices-0UzhbChe.js +0 -1
- package/dist/assets/Devices-0UzhbChe.js.br +0 -0
- package/dist/assets/DevicesPage-Ce8JwJ4B.js +0 -1
- package/dist/assets/DevicesPage-Ce8JwJ4B.js.br +0 -0
- package/dist/assets/DisplayValue-Beucehnn.js.br +0 -0
- package/dist/assets/Donate-COo6hmUa.js.br +0 -0
- package/dist/assets/EndpointPicker-CXLotsVN.js.br +0 -4
- package/dist/assets/Exposes-Cr1tyQmV.js.br +0 -0
- package/dist/assets/Feature-BbFY4SLv.js +0 -1
- package/dist/assets/Feature-BbFY4SLv.js.br +0 -0
- package/dist/assets/Frontend-CikxfpKV.js.br +0 -0
- package/dist/assets/GroupPage-00A4xdiI.js.br +0 -0
- package/dist/assets/GroupSettings-1CJfLaCH.js.br +0 -0
- package/dist/assets/Groups-B9Q-E7KA.js +0 -1
- package/dist/assets/Groups-B9Q-E7KA.js.br +0 -0
- package/dist/assets/GroupsPage-BBIQGoG2.js +0 -1
- package/dist/assets/GroupsPage-BBIQGoG2.js.br +0 -0
- package/dist/assets/Health-LUtfSTPl.js.br +0 -0
- package/dist/assets/HomePage-Btp2tHF6.js.br +0 -0
- package/dist/assets/InputField-DCkeC8F5.js.br +0 -0
- package/dist/assets/LastSeen-BCk3tP-Y.js.br +0 -0
- package/dist/assets/LogsPage-BOpboBjY.js.br +0 -0
- package/dist/assets/Lqi-B5_BH_e-.js.br +0 -0
- package/dist/assets/NetworkPage-BcHYfNai.js.br +0 -0
- package/dist/assets/NumberField-lvLxfvCU.js.br +0 -0
- package/dist/assets/OtaPage-BI7zaM5x.js +0 -1
- package/dist/assets/OtaPage-BI7zaM5x.js.br +0 -0
- package/dist/assets/PowerSource-DqdctI_P.js.br +0 -0
- package/dist/assets/RawNetworkData-MNv4MZ4s.js.br +0 -0
- package/dist/assets/RawNetworkMap-ys7aaXo1.js.br +0 -0
- package/dist/assets/RecallRemove-B8jWvJxI.js.br +0 -0
- package/dist/assets/Reporting-D7xIqQEI.js.br +0 -0
- package/dist/assets/Scene-KZ_53D9d.js +0 -1
- package/dist/assets/Scene-KZ_53D9d.js.br +0 -0
- package/dist/assets/SelectField-1O9grfYD.js.br +0 -1
- package/dist/assets/Settings-DD7_dD9z.js.br +0 -0
- package/dist/assets/SettingsList-DMDmHfS-.js.br +0 -0
- package/dist/assets/SettingsPage-CpmLVhDq.js.br +0 -0
- package/dist/assets/State-DnmWu73w.js.br +0 -0
- package/dist/assets/Table-CHaSwsCb.js.br +0 -0
- package/dist/assets/TextareaField-BbOsusbU.js.br +0 -0
- package/dist/assets/Tools-BBioT6my.js.br +0 -0
- package/dist/assets/TouchlinkPage-ETKr5Ewc.js +0 -1
- package/dist/assets/TouchlinkPage-ETKr5Ewc.js.br +0 -3
- package/dist/assets/VendorLink-tKv1Ms14.js.br +0 -0
- package/dist/assets/_createCompounder-DqDEDMcN.js.br +0 -0
- package/dist/assets/capitalize-Cq5sVmfS.js.br +0 -0
- package/dist/assets/format-eWM0FM-u.js.br +0 -1
- package/dist/assets/index-B4xkyr03.js +0 -635
- package/dist/assets/index-B4xkyr03.js.br +0 -0
- package/dist/assets/index-M1ypebku.js +0 -1
- package/dist/assets/index-M1ypebku.js.br +0 -1
- package/dist/assets/index-Ptfb36CP.css +0 -1
- package/dist/assets/index-Ptfb36CP.css.br +0 -0
- package/dist/assets/jszip.min-5BMZ56Hu.js.br +0 -0
- package/dist/assets/snakeCase-BeE7k_0H.js +0 -1
- package/dist/assets/snakeCase-BeE7k_0H.js.br +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as j,b as h,j as e,L as u,a as g}from"./index-
|
|
1
|
+
import{r as j,b as h,j as e,L as u,a as g}from"./index-DtyjNqrf.js";import{s as p}from"./snakeCase-DmoQhYQA.js";import"./envs-DFlyG_dH.js";import"./_createCompounder-CbLsIfEE.js";const N="1.2.1",b={version:N};function m({name:t,data:s}){const r=[],{t:d}=h("stats");for(const n in s){const i=s[n];r.push(e.jsx("li",{children:e.jsxs(u,{to:"#",children:[n,": ",i]})},n))}return e.jsx("li",{children:e.jsxs("details",{children:[e.jsx("summary",{children:d(t)}),e.jsx("ul",{children:r})]})})}const k=j.memo(t=>{const{devices:s}=t,{t:r}=h(["stats","zigbee"]),d=j.useMemo(()=>{const n={},i={},c={},o={};for(const a of s){if(a.type==="Coordinator")continue;const l=a.model_id||r("zigbee:unknown"),v=a.manufacturer||r("zigbee:unknown"),x=r(`zigbee:${p(a.power_source||"unknown")}`);n[r(a.type)]=(n[r(a.type)]||0)+1,i[x]=(i[x]||0)+1,c[l]=(c[l]||0)+1,o[v]=(o[v]||0)+1}return e.jsxs(e.Fragment,{children:[e.jsx(m,{name:"byType",data:n}),e.jsx(m,{name:"byPowerSource",data:i}),e.jsx(m,{name:"byModel",data:c}),e.jsx(m,{name:"byVendor",data:o})]})},[s,r]);return e.jsxs("ul",{children:[e.jsx("li",{children:e.jsxs(u,{to:"#",children:[r("total")," ",s.length-1]})}),d]})});function w(){const{t}=h("settings"),s=g(l=>l.bridgeInfo),r=g(l=>l.devices),n=s.version.match(/^\d+\.\d+\.\d+$/)===null?e.jsx("a",{className:"link link-hover text-secondary",target:"_blank",rel:"noopener noreferrer",href:"https://github.com/Koenkk/zigbee2mqtt/commits/dev/",children:s.version}):e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/releases/tag/${s.version}`,children:s.version}),i=s.commit?e.jsxs(e.Fragment,{children:["commit:"," ",e.jsx("a",{className:"link",target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/commit/${s.commit}`,children:s.commit})]}):null,c=e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Nerivec/zigbee2mqtt-windfront/releases/tag/${b.version}`,children:b.version}),o=e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee-herdsman-converters/releases/tag/v${s.zigbee_herdsman_converters.version}`,children:s.zigbee_herdsman_converters.version}),a=e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee-herdsman/releases/tag/v${s.zigbee_herdsman.version}`,children:s.zigbee_herdsman.version});return e.jsxs("div",{className:"flex flex-col gap-3 items-center",children:[e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("zigbee2mqtt_version")}),e.jsx("div",{className:"stat-value text-lg",children:n}),e.jsx("div",{className:"stat-desc",children:i})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("frontend_version")}),e.jsx("div",{className:"stat-value text-lg",children:c})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("zigbee_herdsman_converters_version")}),e.jsx("div",{className:"stat-value text-lg",children:o})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("zigbee_herdsman_version")}),e.jsx("div",{className:"stat-value text-lg",children:a})]})]}),e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("machine")}),e.jsx("div",{className:"stat-value text-lg",children:s.os.version}),e.jsxs("div",{className:"stat-desc",children:["CPU: ",s.os.cpus]}),e.jsxs("div",{className:"stat-desc",children:["RAM: ",s.os.memory_mb," MB"]})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("mqtt")}),e.jsx("div",{className:"stat-value text-lg",children:s.mqtt.server}),e.jsx("div",{className:"stat-desc",children:e.jsxs("a",{href:"https://mqtt.org/mqtt-specification/",target:"_blank",rel:"noreferrer",className:"link link-hover",children:[t("version"),": ",s.mqtt.version]})})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("node_version")}),e.jsx("div",{className:"stat-value text-lg",children:e.jsx("a",{href:"https://nodejs.org/en/about/previous-releases",target:"_blank",rel:"noreferrer",className:"link link-hover",children:s.os.node_version})})]}),e.jsxs("div",{className:"stat place-items-center",children:[e.jsx("div",{className:"stat-title",children:t("coordinator")}),e.jsx("div",{className:"stat-value text-lg",children:s.coordinator.type}),e.jsx("div",{className:"stat-desc",children:e.jsx("span",{className:"badge badge-sm badge-primary",title:t("coordinator_ieee_address"),children:s.coordinator.ieee_address})}),e.jsxs("div",{className:"stat-desc",children:[t("revision"),": ",s.coordinator.meta.revision||t("zigbee:unknown")]})]})]}),e.jsx("ul",{className:"menu bg-base-100 rounded-box shadow min-w-sm",children:e.jsx("li",{children:e.jsxs("details",{open:!0,children:[e.jsx("summary",{children:t("stats")}),e.jsx(k,{devices:r})]})})})]})}export{w as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b,ao as m,j as e,R as d,F as l,ap as u,e as f,B as j,w as p,x,r as h}from"./index-DtyjNqrf.js";import{D as w,R as g}from"./DeviceControlEditName-CIF4s9nK.js";function _(t){const{device:i,state:n,renameDevice:o,configureDevice:s,interviewDevice:r,removeDevice:v}=t,{t:a}=b(["zigbee","common"]),c=i.interview_state===m.InProgress||i.interview_state===m.Pending||n&&n.update?.state==="updating";return e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(w,{name:i.friendly_name,renameDevice:o,homeassistantEnabled:t.homeassistantEnabled,style:"btn-outline btn-primary join-item btn-square"}),e.jsx(d,{className:"btn btn-outline btn-warning join-item btn-square",onClick:s,item:i.ieee_address,title:a("reconfigure"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),disabled:c,children:e.jsx(l,{icon:u})}),e.jsx(d,{className:"btn btn-outline btn-info join-item btn-square",onClick:r,item:i.ieee_address,title:a("interview"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),disabled:c,children:e.jsx(l,{icon:f})}),e.jsx(j,{onClick:async()=>await p.show(g,{device:i,removeDevice:v}),className:"btn btn-outline btn-error join-item btn-square",title:a("remove_device"),children:e.jsx(l,{icon:x})})]})}const C=h.memo(t=>{const{t:i}=b(["availability"]),{availability:n,availabilityFeatureEnabled:o,availabilityEnabledForDevice:s,disabled:r}=t;return r?e.jsx("span",{children:i("disabled")}):s??o?e.jsx("span",{className:n.state==="online"?"text-success":"text-error animate-pulse",children:i(n.state)}):e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:"https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",children:i("disabled")})});export{C as A,_ as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d,j as s,W as D,b as I,
|
|
1
|
+
import{r as d,j as s,W as D,b as I,ag as A,ah as k,B as y,F as E,h as O,ai as P,a as B}from"./index-DtyjNqrf.js";import{D as T}from"./DevicePicker-_CY2TskL.js";import{E as S}from"./EndpointPicker-Bik90BnT.js";import"./envs-DFlyG_dH.js";import"./SelectField-DfdnxD7O.js";const F=d.memo(o=>{const{clusters:n,onChange:a,label:l,value:t,disabled:e}=o,p=d.useCallback(r=>{const{checked:h,name:_}=r.target;let b=[...t];h?b.push(_):b=b.filter(v=>v!==_),a(b)},[a,t]),u=d.useMemo(()=>Array.from(n).sort((r,h)=>r.toString().localeCompare(h.toString())).map(r=>s.jsxs("label",{className:"label",title:r,children:[s.jsx("input",{className:"checkbox",type:"checkbox",checked:t.includes(r),name:r,value:r,onChange:p,disabled:e}),r]},r)),[n,p,t,e]);return s.jsxs("fieldset",{className:"fieldset",children:[l&&s.jsx("legend",{className:"fieldset-legend",children:l}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:u})]})}),U=(o,n,a)=>{const{target:l}=o;return l.type==="group"?a.find(t=>t.id===l.id):n.find(t=>t.ieee_address===l.ieee_address)},V=d.memo(o=>{const{devices:n,groups:a,device:l,rule:t}=o,[e,p]=d.useState({rule:t}),{sendMessage:u}=d.useContext(D),{t:r}=I(["common","zigbee"]);d.useEffect(()=>{p({rule:t})},[t]);const h=d.useCallback(i=>{e.rule.source.endpoint=i,p({rule:e.rule})},[e.rule]),_=d.useCallback(i=>{i&&(A(i)?e.rule.target={type:"endpoint",ieee_address:i.ieee_address,endpoint:""}:e.rule.target={type:"group",id:i.id},e.rule.clusters=[],p({rule:e.rule}))},[e.rule]),b=d.useCallback(i=>{e.rule.target.type==="endpoint"&&(e.rule.target.endpoint=i,e.rule.clusters=[],p({rule:e.rule}))},[e.rule]),v=d.useCallback(i=>{e.rule.clusters=i,p({rule:e.rule})},[e.rule]),N=d.useCallback(async i=>{let g="",x;const{target:c}=e.rule;if(c.type==="group"){const m=a.find(C=>C.id===c.id);if(m)g=m.id;else{console.error("Target group does not exist:",c.id);return}}else if(c.type==="endpoint"){const m=n.find(C=>C.ieee_address===c.ieee_address);if(m)g=m.ieee_address,m.type!=="Coordinator"&&(x=c.endpoint);else{console.error("Target device does not exist:",c.ieee_address);return}}const f={from:l.ieee_address,from_endpoint:e.rule.source.endpoint,to:g,to_endpoint:x,clusters:e.rule.clusters};i==="Bind"?await u("bridge/request/device/bind",f):await u("bridge/request/device/unbind",f)},[l,e.rule,u,n,a]),$=d.useMemo(()=>k(l),[l]),j=U(e.rule,n,a),M=d.useMemo(()=>k(j),[j]),R=d.useMemo(()=>{const i=new Set(e.rule.clusters),g=l.endpoints[e.rule.source.endpoint],x=e.rule.target.type==="endpoint"&&e.rule.target.endpoint!=null?j?.endpoints[e.rule.target.endpoint]:void 0,c=e.rule.target.type==="group"||j?.type==="Coordinator";if(g&&(x||c))for(const f of[...g.clusters.input,...g.clusters.output])if(c)i.add(f);else{const m=g.clusters.input.includes(f)&&x?.clusters.output.includes(f),C=g.clusters.output.includes(f)&&x?.clusters.input.includes(f);(m||C||c)&&i.add(f)}return i},[l.endpoints,e,j]),w=d.useMemo(()=>{let i=!1;return e.rule.target.type==="endpoint"?i=!!(e.rule.source.endpoint&&e.rule.target.ieee_address&&e.rule.target.endpoint&&e.rule.clusters.length>0):e.rule.target.type==="group"&&(i=!!(e.rule.source.endpoint&&e.rule.target.id&&e.rule.clusters.length>0)),i},[e]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[s.jsx(S,{label:r("source_endpoint"),disabled:!e.rule.isNew,values:$,value:e.rule.source.endpoint,onChange:h}),s.jsx(T,{label:r("destination"),disabled:!e.rule.isNew,value:"ieee_address"in e.rule.target?e.rule.target.ieee_address:e.rule.target.id,devices:n,groups:a,onChange:_}),e.rule.target.type==="endpoint"?s.jsx(S,{label:r("destination_endpoint"),disabled:!e.rule.isNew,values:M,value:e.rule.target.endpoint,onChange:b}):null,s.jsx("div",{className:"grow w-128",children:s.jsx(F,{label:r("clusters"),clusters:R,value:e.rule.clusters,onChange:v})}),s.jsxs("fieldset",{className:"fieldset",children:[s.jsx("legend",{className:"fieldset-legend",children:r("actions")}),s.jsxs("div",{className:"join join-horizontal",children:[s.jsxs(y,{item:"Bind",disabled:!w,title:r("bind"),className:"btn btn-primary join-item",onClick:N,children:[s.jsx(E,{icon:O}),r("bind")," "]}),s.jsxs(y,{item:"Unbind",disabled:e.rule.isNew||!w,title:r("unbind"),className:"btn btn-error join-item",onClick:N,children:[s.jsx(E,{icon:P})," ",r("unbind")]})]})]})]}),s.jsx("div",{className:"divider"})]})}),q=o=>`${o.isNew}-${o.source.endpoint}-${o.source.ieee_address}-${"ieee_address"in o.target?o.target.ieee_address:o.target.id}-${o.clusters.join("-")}`,z=o=>{const n={};for(const a in o.endpoints){const l=o.endpoints[a];for(const t of l.bindings){let e="ieee_address"in t.target?`${t.target.ieee_address}-${t.target.endpoint}`:t.target.id;e=`${e}-${a}`,n[e]?n[e].clusters.push(t.cluster):n[e]={source:{ieee_address:o.ieee_address,endpoint:a},target:t.target,clusters:[t.cluster]}}}return Object.values(n)};function J(o){const{device:n}=o,a=B(u=>u.devices),l=B(u=>u.groups),[t,e]=d.useState({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:n.ieee_address,endpoint:""},clusters:[]}),p=d.useMemo(()=>z(n),[n]);return d.useEffect(()=>{e({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:n.ieee_address,endpoint:""},clusters:[]})},[n.ieee_address]),s.jsx("div",{className:"flex flex-col",children:[...p,t].map(u=>s.jsx(V,{rule:u,groups:l,device:n,devices:a},q(u)))})}export{J as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as n,j as s}from"./index-
|
|
1
|
+
import{a as n,j as s}from"./index-DtyjNqrf.js";import"./envs-DFlyG_dH.js";function i(){const e=n(r=>r.bridgeInfo),t=JSON.stringify(e,null,4),a=Math.max(10,(t.match(/\n/g)||"").length+1);return s.jsx("textarea",{className:"textarea w-full",readOnly:!0,rows:a,defaultValue:t})}export{i as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,j as e}from"./index-
|
|
1
|
+
import{r,j as e}from"./index-DtyjNqrf.js";const d=r.memo(s=>{const{label:a,detail:l,onChange:c,...t}=s;return e.jsxs("fieldset",{className:"fieldset",children:[a&&e.jsx("legend",{className:"fieldset-legend",children:a}),l?e.jsxs("label",{className:"label",children:[e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t}),l]}):e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t})]})});export{d as C};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,a as f,b as h,j as o}from"./index-
|
|
1
|
+
import{r as l,a as f,b as h,j as o}from"./index-DtyjNqrf.js";import{S as g}from"./SelectField-DfdnxD7O.js";const j=l.memo(d=>{const{cluster:s,device:a,onChange:p,label:m,...b}=d,i=f(e=>e.bridgeDefinitions),{t:u}=h("zigbee"),c=l.useMemo(()=>{const e=i.clusters[s];if(e)return e.attributes;const t=i.custom_clusters[a.ieee_address];if(t){const n=t[s];if(n)return n.attributes}return[]},[i,a.ieee_address,s]),r=l.useMemo(()=>{const e=[];for(const t in c)e.push(o.jsx("option",{value:t,children:t},t));return e},[c]);return o.jsxs(g,{name:"attribute_picker",label:m,onChange:e=>p(e.target.value,c[e.target.value]),disabled:r.length===0,...b,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_attribute")}),r]})}),C=l.memo(d=>{const{clusters:s,onChange:a,value:p,label:m,disabled:b,...i}=d,{t:u}=h(["zigbee","common"]),c=l.useMemo(()=>{const r=[];if(Array.isArray(s))for(const e of s){const t=[];for(const n of e.clusters)t.push(o.jsx("option",{value:n,children:n},n));r.push(o.jsx("optgroup",{label:u(e.name),children:t},e.name))}else for(const e of s)r.push(o.jsx("option",{value:e,children:e},e));return r},[s,u]);return o.jsxs(g,{name:"attribute_picker",label:m,value:p,onChange:r=>a(r.target.value),disabled:b,...i,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_cluster")}),c]})});export{j as A,C};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as a,r as u,j as s,F as c,
|
|
1
|
+
import{b as a,r as u,j as s,F as c,aj as d,ak as x}from"./index-DtyjNqrf.js";import"./envs-DFlyG_dH.js";function h({device:t}){const{t:n}=a("zigbee"),o=u.useMemo(()=>{const l=[];for(const r in t.endpoints){const i=t.endpoints[r];l.push(s.jsx("li",{children:s.jsxs("details",{open:!0,children:[s.jsxs("summary",{children:[n("endpoint")," ",r]}),s.jsxs("ul",{children:[s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:d})," ",n("output_clusters")]}),s.jsx("ul",{children:i.clusters.output.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})}),s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:x})," ",n("input_clusters")]}),s.jsx("ul",{children:i.clusters.input.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})})]})]})},r))}return l},[t.endpoints,n]);return s.jsx("ul",{className:"menu bg-base-100 w-full",children:o})}export{h as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as v,r as l,W as N,b as S,s as y,v as D,j as e,B as _,w as F,F as g,x as T,f as k,y as L,z as R,A as I}from"./index-DtyjNqrf.js";import{D as M}from"./DashboardFeatureWrapper-CWbT-TyR.js";import{D as q}from"./DeviceCard-Bz1iBm0H.js";import{D as $,R as B}from"./DeviceControlEditName-CIF4s9nK.js";import{D as W}from"./DebouncedInput-DnWGzIEH.js";import"./envs-DFlyG_dH.js";import"./Feature-VsMzzVJz.js";import"./DisplayValue-B5Rw3jLu.js";import"./_createCompounder-CbLsIfEE.js";import"./capitalize-C89IAw35.js";import"./LastSeen-CvhRQlEh.js";import"./format-6Yb6jWnA.js";import"./Lqi-CoNVuBvb.js";import"./PowerSource-DgFKG_xU.js";import"./snakeCase-DmoQhYQA.js";import"./DeviceImage-D-FjKeE6.js";import"./index-Q3KOJDn9.js";import"./CheckboxField-DKhAwA85.js";import"./InputField-CYbmpJqW.js";const U=["schedule_","_mode","_options","_startup","_type","inching_"],z=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient","power_outage_memory","power_on_behavior"],K=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],C=(a,i)=>{if(a){if(K.includes(a))return!0;for(const c of U)if(a.includes(c))return!1;if(z.includes(a))return!1}return!0},w=(a,i={})=>{const{property:c,name:n,access:d}=a;if("features"in a&&a.features&&a.features.length>0){const o=[],f=c?i[c]:i;for(const r of a.features){const u=w(r,f);u&&!o.some(b=>b.property===u.property)&&o.push(u)}return o.length>0||C(n)?{...a,features:o}:void 0}return C(n)?{...a}:void 0};function le(){const a=v(s=>s.deviceStates),i=v(s=>s.bridgeInfo.config),c=v(s=>s.devices),{sendMessage:n}=l.useContext(N),{t:d}=S(["zigbee","settings"]),[o,f]=l.useState(""),[r,u]=l.useState(y.get(D,!1)),b=l.useCallback(async(s,t,m)=>{await n("bridge/request/device/rename",{from:s,to:t,homeassistant_rename:m,last:!1})},[n]),x=l.useCallback(async(s,t,m)=>{await n("bridge/request/device/remove",{id:s,force:t,block:m})},[n]),E=l.useCallback(s=>{y.set(D,s),u(s)},[]),A=l.useMemo(()=>{const s=[];for(const t of c)if(!t.disabled&&t.supported&&(!o||t.friendly_name.toLowerCase().includes(o.toLowerCase()))){const m=a[t.friendly_name]??{},h=[];if(t.definition?.exposes)for(const p of t.definition.exposes){const j=w(p,m);if(j&&(h.push(j),h.length===10))break}h.length>0&&s.push(e.jsx("div",{className:`${r?"break-inside-avoid-column mb-3":"w-[23rem]"} card bg-base-200 rounded-box shadow-md`,children:e.jsx(q,{features:h,device:t,deviceState:m,onChange:async p=>await n(`${t.ieee_address}/set`,p),onRead:async p=>await n(`${t.ieee_address}/get`,p),featureWrapperClass:M,lastSeenConfig:i.advanced.last_seen,children:e.jsxs("div",{className:"join join-horizontal",children:[e.jsx($,{name:t.friendly_name,renameDevice:b,homeassistantEnabled:i.homeassistant.enabled,style:"btn-outline btn-primary btn-square btn-sm join-item"}),e.jsx(_,{onClick:async()=>await F.show(B,{device:t,removeDevice:x}),className:"btn btn-outline btn-error btn-square btn-sm join-item",title:d("remove_device"),children:e.jsx(g,{icon:T})})]})})},t.ieee_address))}return s},[c,a,i.advanced.last_seen,i.homeassistant.enabled,n,x,b,d,o,r]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:[e.jsxs("div",{className:"join",children:[e.jsxs("label",{className:"input w-64 join-item",children:[e.jsx(g,{icon:k}),e.jsx(W,{className:"",type:"search",onChange:s=>f(s.toString()),placeholder:d("common:search"),value:o})]}),e.jsx(_,{item:"",onClick:f,className:"btn btn-square join-item",title:d("common:clear"),children:e.jsx(g,{icon:L})})]}),e.jsx(_,{className:"btn btn-square",item:!r,onClick:E,title:`${d("settings:dashboard_column_display")}: ${r}`,children:e.jsx(g,{icon:r?R:I})})]}),e.jsx("div",{className:`${r?"columns-md":"flex flex-row flex-wrap justify-center"} gap-3 mb-3`,children:A})]})}export{le as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,b as l,j as s,F as d}from"./index-DtyjNqrf.js";import{c as p,s as u,d as x}from"./Feature-VsMzzVJz.js";const j=o.memo(i=>{const{children:c,feature:e,deviceValue:a}=i,n=e.unit,t=o.useMemo(()=>p(e.name,a,n),[n,e.name,a]),{t:m}=l("zigbee"),r=e.name==="state"?e.property:e.name;return s.jsxs("div",{className:"flex flex-row items-center gap-1 mb-2",children:[s.jsx(d,{icon:t[0],fixedWidth:!0,className:t[1],...t[2]}),s.jsxs("div",{className:"grow-1",title:r,children:[u(x(r)),s.jsx("span",{title:m("endpoint"),children:e.endpoint?` (${e.endpoint})`:null})]}),s.jsx("div",{className:"shrink-1",children:c})]})});export{j as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,j as c}from"./index-
|
|
1
|
+
import{r as t,j as c}from"./index-DtyjNqrf.js";const p=t.memo(({value:e,onChange:u,debounce:o=500,...a})=>{const[s,m]=t.useState(e);return t.useEffect(()=>{m(e)},[e]),t.useEffect(()=>{const r=setTimeout(()=>{u(s)},o);return()=>clearTimeout(r)},[s,o,u]),c.jsx("input",{...a,value:s,onChange:r=>m(r.target.value)})});export{p as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,b as x,j as e,B as v,W as f,a as y,F as p,J as g,
|
|
1
|
+
import{r as o,b as x,j as e,B as v,W as f,a as y,F as p,J as g,c5 as w,R as q,c6 as T,c7 as R,c8 as O}from"./index-DtyjNqrf.js";import{I as N}from"./InputField-CYbmpJqW.js";import{S as E}from"./SelectField-DfdnxD7O.js";import{T as S}from"./TextareaField-Xo9B_w91.js";import"./envs-DFlyG_dH.js";const k=["mqtt","external_converters","external_extensions"],M=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),[r,l]=o.useState(""),[s,a]=o.useState("{}"),i=o.useMemo(()=>{if(!r)return!1;if(s!=="")try{const m=JSON.parse(s);if(typeof m!="object"||Array.isArray(m))return!1}catch{return!1}return!0},[r,s]),u=o.useCallback(async()=>{await c(r,s===""?s:JSON.parse(s))},[r,s,c]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("send_mqtt")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href:O,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsx(N,{type:"text",name:"topic",label:n("topic"),detail:n("mqtt_topic_info"),placeholder:"bridge/request/permit_join",value:r,onChange:m=>l(m.target.value),className:"input validator w-full",required:!0}),e.jsx(S,{name:"payload",label:n("common:payload"),rows:5,value:s,onChange:m=>a(m.target.value),className:"textarea validator w-full"}),e.jsx("div",{className:"join join-horizontal mt-2",children:e.jsx(v,{onClick:u,disabled:!i,className:"btn btn-success",children:n("common:send")})})]})},A=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),r=y(t=>t.converters),[l,s]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(l||!!a.name)&&!!a.code,[l,a]),m=o.useCallback(t=>{if(t.target.value){const d=r.find(j=>j.name===t.target.value);d&&(s(d),i(d))}else s(void 0),i({name:"",code:""})},[r]),h=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),b=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),C=o.useCallback(async()=>{await c("bridge/request/converter/save",a)},[c,a]),_=o.useCallback(async()=>{await c("bridge/request/converter/remove",{name:a.name})},[c,a.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_converter")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href:T,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")}),e.jsx("a",{href:R,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("codespace_info")})]}),e.jsxs(E,{name:"converter_name_edit",label:n("select_converter_to_edit"),onChange:m,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_converter")]}),r.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(N,{name:"converter_name",label:n("common:name"),type:"text",onChange:h,value:a.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"converter_code",label:n("code"),rows:5,value:a.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})},F=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),r=y(t=>t.extensions),[l,s]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(l||!!a.name)&&!!a.code,[l,a]),m=o.useCallback(t=>{if(t.target.value){const d=r.find(j=>j.name===t.target.value);d&&(s(d),i(d))}else s(void 0),i({name:"",code:""})},[r]),h=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),b=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),C=o.useCallback(async()=>{await c("bridge/request/extension/save",a)},[c,a]),_=o.useCallback(async()=>{await c("bridge/request/extension/remove",{name:a.name})},[c,a.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_extension")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href:w,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsxs(E,{name:"extension_name_edit",label:n("select_extension_to_edit"),onChange:m,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_extension")]}),r.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(N,{name:"extension_name",label:n("common:name"),type:"text",onChange:h,value:a.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"extension_code",label:n("code"),rows:5,value:a.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})};function B(){const[n,c]=o.useState(k[0]),{t:r}=x("devConsole"),l=o.useMemo(()=>{switch(n){case"mqtt":return e.jsx(M,{});case"external_converters":return e.jsx(A,{});case"external_extensions":return e.jsx(F,{})}return""},[n]);return e.jsxs("div",{className:"tabs tabs-border",children:[k.map(s=>e.jsx(v,{className:`tab${n===s?" tab-active":""}`,"aria-current":"page",item:s,onClick:c,children:r(s)},s)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})}export{B as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as e,
|
|
1
|
+
import{r as s,j as e,a3 as W,al as B,b as L,B as w,F as G,x as U,ah as V,W as T,a as I,L as J,am as K,C as X,an as Y,R as Z}from"./index-DtyjNqrf.js";import{I as P}from"./InputField-CYbmpJqW.js";import{C as O,A as H}from"./ClusterSinglePicker-Ca3Cu42z.js";import{E as Q}from"./EndpointPicker-Bik90BnT.js";import{T as q}from"./TextareaField-Xo9B_w91.js";import"./envs-DFlyG_dH.js";import"./SelectField-DfdnxD7O.js";const $=s.memo(u=>{const{message:a}=u;return e.jsx("div",{className:"mockup-code w-full",children:e.jsx("pre",{"data-prefix":"~",className:W[a.level],children:e.jsxs("code",{children:["[",a.timestamp,"] ",a.message]})})})}),ee=[65,66,67,68];function te(u){const{value:a,onChange:p,attribute:o,definition:m,...r}=u,f=ee.includes(m.type)?"text":"number";return e.jsx("input",{type:f,value:a,onChange:d=>{const i=f==="number"?d.target.valueAsNumber:d.target.value;p(o,Number.isNaN(i)?void 0:i)},...r})}function se(u){const{device:a,readDeviceAttributes:p,writeDeviceAttributes:o,lastLog:m}=u,[r,f]=s.useState(B(a.endpoints)??""),[d,i]=s.useState(""),[l,x]=s.useState([]),[C,b]=s.useState(""),{t:c}=L(["common","zigbee"]),h=s.useCallback(t=>{i(""),x([]),f(t.toString())},[]),j=s.useCallback(t=>{x([]),i(t)},[]),g=s.useCallback((t,y)=>{if(!l.find(_=>_.attribute===t)){const _=l.concat([{attribute:t,definition:y}]);x(_)}},[l]),n=s.useCallback(t=>{b(t.target.value)},[]),v=s.useCallback(async()=>{await p(a.ieee_address,r,d,l.map(t=>t.attribute),C)},[a.ieee_address,r,d,l,C,p]),k=s.useCallback(async()=>{await o(a.ieee_address,r,d,l)},[a.ieee_address,r,d,l,o]),S=s.useMemo(()=>l.length>0&&e.jsx("fieldset",{className:"fieldset gap-2 p-3 rounded-box shadow-md",children:l.map(({attribute:t,value:y="",definition:_})=>e.jsxs("div",{className:"join join-horizontal min-w-xs",children:[e.jsxs("label",{className:"input join-item",children:[t,e.jsx(te,{value:y,attribute:t,definition:_,onChange:(D,z)=>{const E=Array.from(l),M=E.find(F=>F.attribute===D);M&&(M.value=z),x(E)}})]}),e.jsx(w,{className:"btn btn-error btn-outline join-item",item:t,onClick:D=>{const z=l.filter(E=>E.attribute!==D);x(z)},children:e.jsx(G,{icon:U})})]},t))}),[l]),A=s.useMemo(()=>{const t=new Set;if(r){const y=a.endpoints[Number.parseInt(r,10)];if(y)for(const _ of y.clusters.input)t.add(_)}return t},[a,r]),N=l.length===0||d==="",R=s.useMemo(()=>V(a),[a]);return r?e.jsxs("div",{className:"flex-1 flex flex-col gap-3",children:[e.jsx("h2",{className:"text-lg",children:c("zigbee:read_write_attributes")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(Q,{label:c("zigbee:endpoint"),values:R,value:r,onChange:h,required:!0}),e.jsx(O,{label:c("cluster"),clusters:A,value:d,onChange:j,required:!0}),e.jsx(H,{label:c("attribute"),value:"",cluster:d,device:a,onChange:g}),e.jsx(P,{type:"text",name:"state_property",label:c("devConsole:state_property"),value:C,detail:`${c("optional")}. ${c("devConsole:state_property_info")}`,onChange:n})]}),S,e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(w,{disabled:N||l.some(t=>!!t.value),className:"btn btn-success join-item",onClick:v,children:c("read")}),e.jsx(w,{disabled:N,className:"btn btn-error join-item",onClick:k,children:c("write")})]}),m&&e.jsx($,{message:m})]}):e.jsx("span",{children:"No endpoints"})}const ae=u=>{const{device:a,lastLog:p}=u,{t:o}=L(["common","zigbee"]),[m,r]=s.useState(1),[f,d]=s.useState(""),[i,l]=s.useState(""),[x,C]=s.useState("{}"),{sendMessage:b}=s.useContext(T),c=I(n=>n.bridgeDefinitions),h=s.useMemo(()=>{if(!f||!i)return!1;try{const n=JSON.parse(x);if(typeof n!="object"||Array.isArray(n)&&n.length>0&&typeof n[0]!="object")return!1}catch{return!1}return!0},[x,f,i]),j=s.useMemo(()=>{const n=a.endpoints[m],v=new Set,k=new Set,S=new Set,A=new Set,N=new Set;if(n){for(const t of n.clusters.input)v.add(t),k.add(t);for(const t of n.clusters.output)v.add(t),S.add(t)}if(c.custom_clusters[a.friendly_name])for(const t in c.custom_clusters[a.friendly_name])v.has(t)||(v.add(t),A.add(t));for(const t in c.clusters)v.has(t)||N.add(t);return[{name:"input_clusters",clusters:k},{name:"output_clusters",clusters:S},{name:"custom_clusters",clusters:A},{name:"other_zcl_clusters",clusters:N}]},[a.friendly_name,a.endpoints,m,c]),g=s.useCallback(async()=>{let n=Number.parseInt(i,10);Number.isNaN(n)&&(n=i),await b(`${a.ieee_address}/${m}/set`,{command:{cluster:f,command:n,payload:JSON.parse(x)}})},[f,a.ieee_address,i,x,m,b]);return e.jsxs("div",{className:"flex-1 flex flex-col gap-3",children:[e.jsx("h2",{className:"text-lg",children:o("execute_command")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(P,{type:"number",name:"endpoint",label:o("zigbee:endpoint"),min:1,max:255,value:m,onChange:n=>!!n.target.value&&r(n.target.valueAsNumber),required:!0}),e.jsx(O,{label:o("zigbee:cluster"),clusters:j,value:f,onChange:n=>{d(n)},required:!0}),e.jsx(P,{type:"text",name:"command",label:o("command"),value:i,placeholder:"state, color...",onChange:n=>l(n.target.value),pattern:"^\\d+|^\\w+",required:!0})]}),e.jsx(q,{name:"payload",label:o("payload"),rows:3,value:x,onChange:n=>C(n.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{children:e.jsx(w,{onClick:g,disabled:!h,className:"btn btn-success",children:o("execute")})}),p&&e.jsx($,{message:p})]})},ne=s.memo(u=>{const{device:a}=u,[p,o]=s.useState(!1),{sendMessage:m}=s.useContext(T),{t:r}=L(["devConsole","common"]),f=I(i=>i.generatedExternalDefinitions[a.ieee_address]),d=s.useCallback(async()=>{o(!0),await m("bridge/request/device/generate_external_definition",{id:a.ieee_address})},[m,a.ieee_address]);return f?e.jsxs(e.Fragment,{children:[e.jsx(q,{name:"generated_external_definition",label:r("generated_external_definition"),value:f,className:"textarea w-full",rows:8,readOnly:!0}),e.jsx(J,{to:K,target:"_blank",rel:"noreferrer",className:"link link-primary self-end",children:r("common:documentation")})]}):e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:p?e.jsx("span",{className:"loading loading-infinity loading-xl"}):e.jsx(w,{className:"btn btn-primary",onClick:d,children:r("generate_external_definition")})})}),oe=/^(zhc:tz: Read result of |z2m: Publish 'set' 'read' to |z2m: Publish 'set' 'write' to |zhc:tz: Wrote )/;function fe({device:u}){const a=X(),{t:p}=L(["devConsole","common"]),o=I(b=>b.lastNonDebugLog),[m,r]=s.useState(),[f,d]=s.useState(),{sendMessage:i}=s.useContext(T);s.useEffect(()=>{o&&(o.message.startsWith("zhc:tz: Invoked ")?d(o):oe.test(o.message)&&r(o))},[o]);const l=s.useCallback(async(b,c,h,j,g)=>{const n={read:{cluster:h,attributes:j}};g&&(n.read.state_property=g),await i(`${b}/${c}/set`,n)},[i]),x=s.useCallback(async(b,c,h,j)=>{const g={write:{cluster:h,payload:{}}};for(const n of j)g.write.payload[n.attribute]=n.value;await i(`${b}/${c}/set`,g)},[i]),C=s.useCallback(()=>{a(Y(u.friendly_name))},[a,u.friendly_name]);return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:e.jsx(Z,{className:"btn btn-error",onClick:C,title:p("reset_frontend_state"),modalDescription:p("common:dialog_confirmation_prompt"),modalCancelLabel:p("common:cancel"),children:p("reset_frontend_state")})}),e.jsx("div",{className:"divider"}),e.jsx(ne,{device:u}),e.jsx("div",{className:"divider"}),e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4",children:[e.jsx(se,{device:u,lastLog:m,readDeviceAttributes:l,writeDeviceAttributes:x}),e.jsx(ae,{device:u,lastLog:f})]})]})}export{fe as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as p,b as g,j as s,L as i,F as f,aP as j}from"./index-DtyjNqrf.js";import{F as b,g as h}from"./Feature-VsMzzVJz.js";import{L as u}from"./LastSeen-CvhRQlEh.js";import{L as w}from"./Lqi-CoNVuBvb.js";import{P as N}from"./PowerSource-DgFKG_xU.js";import{D as y}from"./DeviceImage-D-FjKeE6.js";const D=p.memo(({onChange:o,onRead:n,device:e,endpoint:r,deviceState:a,lastSeenConfig:m,features:c,featureWrapperClass:d,children:x})=>{const{t}=g(["zigbee","devicePage"]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"card-body p-2",children:[s.jsxs("div",{className:"flex flex-row items-center gap-3 w-full",children:[s.jsx("div",{className:"flex-none h-11 w-11 overflow-visible",children:s.jsx(y,{disabled:!1,device:e,otaState:a.update?.state})}),s.jsxs("div",{className:"min-w-0",children:[s.jsxs(i,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,r?` (${t("endpoint")}: ${r})`:""]}),e.description&&s.jsx("div",{className:"text-xs opacity-50 truncate",title:e.description,children:e.description})]})]}),s.jsxs("div",{className:"text-sm w-full p-2",children:[c.map(l=>(!r||!l.endpoint||l.endpoint===r)&&s.jsx(b,{feature:l,device:e,deviceState:a,onChange:o,onRead:n,featureWrapperClass:d,minimal:!0,parentFeatures:[]},h(l))),s.jsxs("div",{className:"flex flex-row items-center gap-1 mt-3",children:[s.jsx("div",{className:"grow-1"}),s.jsxs(i,{to:`/device/${e.ieee_address}/exposes`,className:"btn btn-xs",children:[t("devicePage:exposes")," ",s.jsx(f,{icon:j,size:"lg"})]})]})]})]}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-1 mx-2 mb-2 justify-around items-center",children:[s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("last_seen"),children:s.jsx(u,{lastSeen:a.last_seen,config:m})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("lqi"),children:s.jsx(w,{value:a.linkquality})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("power"),children:s.jsx(N,{device:e,batteryPercent:a.battery,batteryState:a.battery_state,batteryLow:a.battery_low,showLevel:!0})}),x]})]})});export{D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{w as h,M as j,b as f,r as m,j as e,O as _,B as i,F as u,Q as p}from"./index-
|
|
1
|
+
import{w as h,M as j,b as f,r as m,j as e,O as _,B as i,F as u,Q as p}from"./index-DtyjNqrf.js";import{C as b}from"./CheckboxField-DKhAwA85.js";import{I as k}from"./InputField-CYbmpJqW.js";const D=h.create(c=>{const{device:o,removeDevice:s}=c,t=j(),{t:n}=f(["zigbee","common"]),[a,r]=m.useState({block:!1,force:!1}),d=v=>{const{checked:x,name:l}=v.target;r({...a,[l]:x})};return e.jsx(_,{isOpen:t.visible,title:`${n("remove_device")} ${o.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:t.remove,children:n("common:cancel")}),e.jsx(i,{className:"btn btn-error ms-1",onClick:async()=>{t.remove(),await s(o.ieee_address,a.force,a.block)},children:n("common:delete")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(b,{label:n("force_remove"),name:"force",onChange:d,checked:a.force}),e.jsx("span",{className:"text-xs opacity-50",children:n("force_remove_notice")}),e.jsx(b,{label:n("block_join"),name:"block",onChange:d,checked:a.block})]})})}),g=h.create(c=>{const{homeassistantEnabled:o,name:s,renameDevice:t}=c,n=j(),{t:a}=f(["zigbee","common"]),[r,d]=m.useState(!1),[v,x]=m.useState(s);return m.useEffect(()=>{x(s)},[s]),e.jsx(_,{isOpen:n.visible,title:`${a("rename_device")} ${s}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:n.remove,children:a("common:cancel")}),e.jsx(i,{className:"btn btn-primary ms-1",onClick:async()=>{n.remove(),await t(s,v,r)},children:a("rename_device")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(k,{name:"friendly_name",label:a("common:friendly_name"),onChange:l=>x(l.target.value),value:v,type:"text"}),o&&e.jsx(b,{label:a("update_Home_assistant_entity_id"),name:"update_Home_assistant_entity_id",onChange:l=>d(l.target.checked),checked:r})]})})}),R=m.memo(c=>{const{homeassistantEnabled:o,name:s,renameDevice:t,style:n}=c,{t:a}=f("zigbee");return e.jsx(i,{className:`btn ${n}`,onClick:async()=>await h.show(g,{name:s,renameDevice:t,homeassistantEnabled:o}),title:a("rename_device"),children:e.jsx(u,{icon:p})})});export{R as D,D as R};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as u,F as l,a1 as w,r as d,b as x,ao as b,bS as O,bT as S,K as P,bU as N}from"./index-DtyjNqrf.js";import{g as _,a as y}from"./index-Q3KOJDn9.js";function D({error:r,children:e}){return r?u.jsx(l,{icon:w,size:"3x",className:"text-error",title:"Missing image"}):e}function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function I(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var i=t.call(r,e);if(p(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function E(r){var e=I(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=E(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var A=function(r){var e=r.crossOrigin,t=e===void 0?"":e;return function(i){return new Promise(function(n,o){var a=new Image;t&&(a.crossOrigin=t),a.onload=function(){a.decode?a.decode().then(n).catch(o):n()},a.onerror=o,a.src=i})}};function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function g(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?j(Object(t),!0).forEach(function(i){L(r,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(i){Object.defineProperty(r,i,Object.getOwnPropertyDescriptor(t,i))})}return r}var $=function(e){return e.filter(function(t){return t})},F=function(e){return Array.isArray(e)?e:[e]},c={},T=function(e,t){var i=!1;return new Promise(function(n,o){var a=function(m){return t(m).then(function(){i=!0,n(m)})};e.reduce(function(f,m){return f.catch(function(){if(!i)return a(m)})},a(e.shift())).catch(o)})};function z(r){var e=r.srcList,t=r.imgPromise,i=t===void 0?A({}):t,n=r.useSuspense,o=n===void 0?!0:n,a=d.useState(!1),f=a[1],m=$(F(e)),s=m.join("");if(c[s]||(c[s]={promise:T(m,i),cache:"pending",error:null}),c[s].cache==="resolved")return{src:c[s].src,isLoading:!1,error:null};if(c[s].cache==="rejected"){if(o)throw c[s].error;return{isLoading:!1,error:c[s].error,src:void 0}}if(c[s].promise.then(function(v){c[s]=g(g({},c[s]),{},{cache:"resolved",src:v}),o||f(s)}).catch(function(v){c[s]=g(g({},c[s]),{},{cache:"rejected",error:v}),o||f(s)}),o)throw c[s].promise;return{isLoading:!0,src:void 0,error:null}}const h=d.memo(({device:r={},className:e})=>{const t=r.definition?.icon,i=_(r),n=[];t&&n.push(t),i&&n.push(i),i!==y&&n.push(y);const{src:o}=z({srcList:n});return u.jsx("img",{alt:r.ieee_address,crossOrigin:"anonymous",src:o,className:e})}),M=d.memo(r=>{const{t:e}=x("zigbee"),{device:t={},disabled:i,otaState:n,className:o,noIndicator:a}=r,f=d.useMemo(()=>t.interview_state===b.InProgress?u.jsx(l,{icon:O,spin:!0,title:e("interviewing"),className:"indicator-item indicator-bottom indicator-end text-info"}):t.interview_state===b.Failed?u.jsx(l,{icon:w,beat:!0,title:e("interview_failed"),className:"indicator-item indicator-bottom indicator-end text-error"}):t.supported?null:u.jsx(l,{icon:S,beat:!0,title:e("unsupported"),className:"indicator-item indicator-bottom indicator-end text-warning"}),[t.interview_state,t.supported,e]);return u.jsx(d.Suspense,{fallback:u.jsx("img",{alt:t.ieee_address,src:y}),children:u.jsx(D,{children:a?u.jsx(h,{device:t,className:`grid place-items-center${o?` ${o}`:""}`}):u.jsxs("div",{className:"indicator w-full",children:[n==="updating"&&u.jsx(l,{icon:P,spin:!0,title:e("updating_firmware"),className:"indicator-item indicator-top indicator-end text-info"}),f,i&&u.jsx(l,{icon:N,title:e("common:disabled"),className:"indicator-item indicator-middle indicator-center text-error",size:"2xl"}),u.jsx(h,{device:t,className:`grid place-items-center${o?` ${o}`:""}`})]})})})});export{M as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{af as g,w as y,M as L,b as j,r as n,j as e,O as q,B as b,F as M,Q as z,a as p,W as F,L as N,am as A,t as R}from"./index-DtyjNqrf.js";import{r as I}from"./capitalize-C89IAw35.js";import{r as $}from"./_createCompounder-CbLsIfEE.js";import{s as O}from"./snakeCase-DmoQhYQA.js";import{D as P}from"./DeviceControlEditName-CIF4s9nK.js";import{A as T,D as U}from"./Availability-t6lZj-iw.js";import{T as V}from"./TextareaField-Xo9B_w91.js";import{D as W}from"./DeviceImage-D-FjKeE6.js";import{D as _}from"./DisplayValue-B5Rw3jLu.js";import{L as B}from"./LastSeen-CvhRQlEh.js";import{M as G,V as K}from"./VendorLink-D24n6LN-.js";import{P as H}from"./PowerSource-DgFKG_xU.js";import"./envs-DFlyG_dH.js";import"./CheckboxField-DKhAwA85.js";import"./InputField-CYbmpJqW.js";import"./index-Q3KOJDn9.js";import"./format-6Yb6jWnA.js";var Q=I();const X=g(Q);var u,w;function J(){if(w)return u;w=1;var o=$(),s=o(function(a,i,r){return a+(r?" ":"")+i.toLowerCase()});return u=s,u}var Y=J();const Z=g(Y),ee=y.create(o=>{const{device:s,setDeviceDescription:a}=o,i=L(),{t:r}=j(["zigbee","common"]),[x,m]=n.useState(s.description||"");return n.useEffect(()=>{m(s.description||"")},[s.description]),e.jsx(q,{isOpen:i.visible,title:`${r("update_description")} ${s.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"btn btn-neutral",onClick:i.remove,children:r("common:cancel")}),e.jsx(b,{className:"btn btn-primary ms-1",onClick:async()=>{i.remove(),await a(s.ieee_address,x)},children:r("zigbee:save_description")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(V,{label:r("description"),name:"update_description",onChange:c=>m(c.target.value),rows:3,value:x})})})}),se=n.memo(o=>{const{device:s,setDeviceDescription:a}=o,{t:i}=j("zigbee");return e.jsx(b,{className:`btn btn-link btn-sm${s.description?" btn-square":""}`,onClick:async()=>await y.show(ee,{device:s,setDeviceDescription:a}),title:i("edit_description"),children:s.description?e.jsx(M,{icon:z}):i("edit_description")})}),ae=/\[(.*?)]\((.*?)\)/;function Ne(o){const{device:s}=o,{t:a}=j(["zigbee","availability"]),i=p(t=>t.deviceStates),r=p(t=>t.bridgeInfo.config),x=p(t=>t.availability),m=r.homeassistant.enabled,c=n.useMemo(()=>i[s.friendly_name]??{},[s.friendly_name,i]),{sendMessage:l}=n.useContext(F),h=n.useCallback(async(t,d,v)=>{await l("bridge/request/device/rename",{from:t,to:d,homeassistant_rename:v,last:void 0})},[l]),D=n.useCallback(async(t,d)=>{await l("bridge/request/device/options",{id:t,options:{description:d}})},[l]),C=n.useCallback(async t=>{await l("bridge/request/device/configure",{id:t})},[l]),k=n.useCallback(async(t,d,v)=>{await l("bridge/request/device/remove",{id:t,force:d,block:v})},[l]),E=n.useCallback(async t=>{await l("bridge/request/device/interview",{id:t})},[l]),f=r.devices[s.ieee_address]?.availability,S=n.useMemo(()=>{const t=s.definition?.description?ae.exec(s.definition?.description):void 0;if(t){const[,d,v]=t;return e.jsx(N,{target:"_blank",rel:"noopener noreferrer",to:v,className:"link link-hover",children:d})}return e.jsx(e.Fragment,{children:s.definition?.description})},[s.definition]);return e.jsxs("div",{className:"card lg:card-side bg-base-100",children:[e.jsx("figure",{className:"w-64 h-64",style:{overflow:"visible"},children:e.jsx(W,{device:s,otaState:c.update?.state,disabled:s.disabled,className:""})}),e.jsxs("div",{className:"card-body",children:[e.jsxs("h2",{className:"card-title",children:[s.friendly_name," (",s.ieee_address,")",e.jsx(P,{name:s.friendly_name,renameDevice:h,homeassistantEnabled:m,style:"btn-link btn-sm btn-square"})]}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx("span",{className:`badge ${s.supported?" badge-success":" badge-warning"}`,children:e.jsx(_,{name:"supported",value:s.supported})}),!s.supported&&e.jsx("span",{className:"badge animate-bounce",children:e.jsx(N,{target:"_blank",rel:"noopener noreferrer",to:A,className:"link link-hover",children:a("how_to_add_support")})}),e.jsx("span",{className:"badge opacity-70",children:e.jsx(_,{name:"interview_state",value:`${a("interview_state")}: ${X(Z(s.interview_state))}`})})]}),e.jsxs("div",{children:[e.jsx("pre",{className:"inline",children:s.description||""}),e.jsx(se,{device:s,setDeviceDescription:D})]}),e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:s.type}),e.jsx("div",{className:"stat-value text-xl",children:R(s.network_address)}),e.jsxs("div",{className:"stat-desc",children:[a("network_address_dec"),": ",s.network_address]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("last_seen")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(B,{config:r.advanced.last_seen,lastSeen:c.last_seen})}),e.jsxs("div",{className:"stat-desc",children:[a("availability:availability"),": ",e.jsx(T,{availability:x[s.friendly_name]??{state:"offline"},disabled:s.disabled,availabilityFeatureEnabled:r.availability.enabled,availabilityEnabledForDevice:f!=null?!!f:void 0})]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("power")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(H,{showLevel:!0,device:s,batteryPercent:c.battery,batteryState:c.battery_state,batteryLow:c.battery_low})}),e.jsx("div",{className:"stat-desc",children:a(O(s.power_source)||"unknown")})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("firmware_id")}),e.jsx("div",{className:"stat-value text-xl",children:s.software_build_id||a("unknown")}),e.jsx("div",{className:"stat-desc",children:s.date_code||a("unknown")})]})]}),e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("zigbee_model")}),e.jsx("div",{className:"stat-value text-xl",children:s.model_id}),e.jsxs("div",{className:"stat-desc",children:[s.manufacturer," (",S,")"]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("model")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(G,{device:s})}),e.jsx("div",{className:"stat-desc",children:e.jsx(K,{device:s})})]})]}),e.jsx("div",{className:"card-actions justify-end mt-2",children:e.jsx(U,{device:s,state:c,homeassistantEnabled:m,configureDevice:C,renameDevice:h,removeDevice:k,interviewDevice:E})})]})]})}export{Ne as default};
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-
|
|
2
|
-
import{r as t,b as p,j as e,L as v,P as x,F as r,f as j,a as f,d as b,u as g,N as n,e as y,g as h,h as N,i as E,k as T,l as w,m as D,n as L,o as P,p as $,q as A,_ as l}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-Dc9kHm7v.js","./index-DtyjNqrf.js","./envs-DFlyG_dH.js","./index-EwioJBcA.css","./DevicePicker-_CY2TskL.js","./SelectField-DfdnxD7O.js","./EndpointPicker-Bik90BnT.js","./Clusters-D9hrSHnT.js","./DevConsole-DVk6LYDZ.js","./InputField-CYbmpJqW.js","./ClusterSinglePicker-Ca3Cu42z.js","./TextareaField-Xo9B_w91.js","./DeviceInfo-736faFET.js","./capitalize-C89IAw35.js","./_createCompounder-CbLsIfEE.js","./snakeCase-DmoQhYQA.js","./DeviceControlEditName-CIF4s9nK.js","./CheckboxField-DKhAwA85.js","./Availability-t6lZj-iw.js","./DeviceImage-D-FjKeE6.js","./index-Q3KOJDn9.js","./DisplayValue-B5Rw3jLu.js","./LastSeen-CvhRQlEh.js","./format-6Yb6jWnA.js","./VendorLink-D24n6LN-.js","./PowerSource-DgFKG_xU.js","./DeviceSettings-CZqhT3Vo.js","./SettingsList-m7AYDAw4.js","./NumberField-DVRroIAm.js","./DeviceSpecificSettings-DIaLmFsZ.js","./Feature-VsMzzVJz.js","./Exposes-OHqD_-Hv.js","./Groups-CCx1QUBg.js","./Reporting-JJt-aW2u.js","./Scene-CvuDpnvP.js","./RecallRemove-C7or_UUw.js","./DashboardFeatureWrapper-CWbT-TyR.js","./State-DwJDwttn.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as t,b as p,j as e,L as v,P as x,F as r,f as j,a as f,d as b,u as g,N as n,e as y,g as h,h as N,i as E,k as T,l as w,m as D,n as L,o as P,p as $,q as A,_ as l}from"./index-DtyjNqrf.js";import"./envs-DFlyG_dH.js";const I=t.memo(i=>{const{devices:u,currentDevice:a,tab:m="info"}=i,[d,s]=t.useState(""),{t:o}=p("common"),_=t.useMemo(()=>u.filter(c=>c.type!=="Coordinator"&&c.friendly_name.toLowerCase().includes(d.toLowerCase())&&c.ieee_address!==a?.ieee_address).map(c=>e.jsx("li",{children:e.jsx(v,{to:`/device/${c.ieee_address}/${m}`,onClick:()=>s(""),className:"dropdown-item",children:c.friendly_name})},c.ieee_address)),[u,a,d,m]);return e.jsxs(x,{name:"header-device-selector",buttonChildren:`${a?`${a.friendly_name} (${a.ieee_address})`:o("unknown_device")}`,dropdownStyle:"dropdown-start",children:[e.jsxs("label",{className:"input",children:[e.jsx(r,{icon:j}),e.jsx("input",{type:"search",placeholder:o("type_to_filter"),onChange:c=>s(c.target.value),value:d})]},"search"),_]})}),R=t.lazy(async()=>await l(()=>import("./Bind-Dc9kHm7v.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),C=t.lazy(async()=>await l(()=>import("./Clusters-D9hrSHnT.js"),__vite__mapDeps([7,1,2,3]),import.meta.url)),O=t.lazy(async()=>await l(()=>import("./DevConsole-DVk6LYDZ.js"),__vite__mapDeps([8,1,2,3,9,10,5,6,11]),import.meta.url)),S=t.lazy(async()=>await l(()=>import("./DeviceInfo-736faFET.js"),__vite__mapDeps([12,1,2,3,13,14,15,16,17,9,18,11,19,20,21,22,23,24,25]),import.meta.url)),z=t.lazy(async()=>await l(()=>import("./DeviceSettings-CZqhT3Vo.js"),__vite__mapDeps([26,1,2,3,27,17,9,28,5]),import.meta.url)),V=t.lazy(async()=>await l(()=>import("./DeviceSpecificSettings-DIaLmFsZ.js"),__vite__mapDeps([29,1,2,3,30,21,14,13]),import.meta.url)),k=t.lazy(async()=>await l(()=>import("./Exposes-OHqD_-Hv.js"),__vite__mapDeps([31,1,2,3,30,21,14,13]),import.meta.url)),M=t.lazy(async()=>await l(()=>import("./Groups-CCx1QUBg.js"),__vite__mapDeps([32,1,2,3,6,5]),import.meta.url)),F=t.lazy(async()=>await l(()=>import("./Reporting-JJt-aW2u.js"),__vite__mapDeps([33,1,2,3,9,10,5,6]),import.meta.url)),G=t.lazy(async()=>await l(()=>import("./Scene-CvuDpnvP.js"),__vite__mapDeps([34,1,2,3,35,36,30,21,14,13,9,5]),import.meta.url)),B=t.lazy(async()=>await l(()=>import("./State-DwJDwttn.js"),__vite__mapDeps([37,1,2,3]),import.meta.url));function H(){const{t:i}=p(["devicePage","common"]),u=f(c=>c.devices),{deviceId:a,tab:m}=b(),d=g(),s=a?u.find(c=>c.ieee_address===a):void 0;t.useEffect(()=>{s&&(m?s.type==="Coordinator"&&d("/settings/about",{replace:!0}):d(s.type==="Coordinator"?"/settings/about":`/device/${s.ieee_address}/info`,{replace:!0}))},[m,s,d]);const o=({isActive:c})=>c?"tab tab-active":"tab",_=t.useMemo(()=>{if(!s)return e.jsx("div",{className:"flex-auto justify-center items-center",children:i("common:unknown_device")});switch(m){case"info":return e.jsx(S,{device:s});case"exposes":return e.jsx(k,{device:s});case"bind":return e.jsx(R,{device:s});case"reporting":return e.jsx(F,{device:s});case"settings":return e.jsx(z,{device:s});case"settings-specific":return e.jsx(V,{device:s});case"state":return e.jsx(B,{device:s});case"clusters":return e.jsx(C,{device:s});case"groups":return e.jsx(M,{device:s});case"scene":return e.jsx(G,{device:s});case"dev-console":return e.jsx(O,{device:s})}},[s,m,i]);return e.jsxs(e.Fragment,{children:[e.jsx(I,{devices:u,currentDevice:s,tab:m}),e.jsxs("div",{className:"tabs tabs-border mt-2",children:[e.jsxs(n,{to:`/device/${a}/info`,className:o,children:[e.jsx(r,{icon:y,className:"me-2"}),i("about")]}),e.jsxs(n,{to:`/device/${a}/exposes`,className:o,children:[e.jsx(r,{icon:h,className:"me-2"}),i("exposes")]}),e.jsxs(n,{to:`/device/${a}/bind`,className:o,children:[e.jsx(r,{icon:N,className:"me-2"}),i("bind")]}),e.jsxs(n,{to:`/device/${a}/reporting`,className:o,children:[e.jsx(r,{icon:E,className:"me-2"}),i("reporting")]}),e.jsxs(n,{to:`/device/${a}/settings`,className:o,children:[e.jsx(r,{icon:T,className:"me-2"}),i("settings")]}),e.jsxs(n,{to:`/device/${a}/settings-specific`,className:o,children:[e.jsx(r,{icon:w,className:"me-2"}),i("settings_specific")]}),e.jsxs(n,{to:`/device/${a}/state`,className:o,children:[e.jsx(r,{icon:D,className:"me-2"}),i("state")]}),e.jsxs(n,{to:`/device/${a}/clusters`,className:o,children:[e.jsx(r,{icon:L,className:"me-2"}),i("clusters")]}),e.jsxs(n,{to:`/device/${a}/groups`,className:o,children:[e.jsx(r,{icon:P,className:"me-2"}),i("groups")]}),e.jsxs(n,{to:`/device/${a}/scene`,className:o,children:[e.jsx(r,{icon:$,className:"me-2"}),i("scene")]}),e.jsxs(n,{to:`/device/${a}/dev-console`,className:o,children:[e.jsx(r,{icon:A,className:"me-2"}),i("dev_console")]}),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:_})]})]})}export{H as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d,b as x,j as t}from"./index-
|
|
1
|
+
import{r as d,b as x,j as t}from"./index-DtyjNqrf.js";import{S as j}from"./SelectField-DfdnxD7O.js";const _=d.memo(c=>{const{t:i}=x("common"),{devices:l,value:p,label:u,onChange:a,groups:r=[],...m}=c,h=s=>{const{value:n}=s.target;if(n.startsWith("0x"))a(l.find(e=>e.ieee_address===n));else{const e=Number.parseInt(n,10);a(r.find(o=>e===o.id))}},f=d.useMemo(()=>{const s=[],n=l.map(e=>t.jsxs("option",{title:e.definition?.description,value:e.ieee_address,children:[e.friendly_name," ",e.definition?.model?`(${e.definition?.model})`:""]},e.ieee_address));if(r?.length){const e=r.map(o=>t.jsx("option",{value:o.id,children:o.friendly_name},o.id));s.push(t.jsx("optgroup",{label:i("groups"),children:e},"Groups")),s.push(t.jsx("optgroup",{label:i("devices"),children:n},"Devices"))}else s.push(...n);return s},[l,r,i]);return t.jsxs(j,{name:"device_picker",label:u,value:p,onChange:h,...m,children:[t.jsx("option",{value:"",disabled:!0,children:i("select_device")}),f]})});export{_ as D};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as c,a as d,r as i,W as m,j as e,F as l,J as p,aq as f,ar as g}from"./index-DtyjNqrf.js";import{S as x}from"./SettingsList-m7AYDAw4.js";import"./envs-DFlyG_dH.js";import"./CheckboxField-DKhAwA85.js";import"./InputField-CYbmpJqW.js";import"./NumberField-DVRroIAm.js";import"./SelectField-DfdnxD7O.js";function C({device:s}){const{t:a}=c(["settings","common"]),t=d(o=>o.bridgeInfo),{sendMessage:r}=i.useContext(m),n=i.useCallback(async o=>{await r("bridge/request/device/options",{id:s.ieee_address,options:o})},[r,s.ieee_address]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(l,{icon:p,size:"2xl"}),e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",className:"link link-hover",children:a("common:read_the_docs_info")})]}),e.jsx(x,{schema:t.config_schema.definitions.device??{properties:{}},data:g({},t.config.device_options,t.config.devices[s.ieee_address]),set:n})]})}export{C as default};
|
|
Binary file
|
package/dist/assets/{DeviceSpecificSettings-uh-HwgqP.js → DeviceSpecificSettings-DIaLmFsZ.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as p,a as u,r as a,W as c,j as i}from"./index-
|
|
1
|
+
import{b as p,a as u,r as a,W as c,j as i}from"./index-DtyjNqrf.js";import{F as d,a as f,g as m}from"./Feature-VsMzzVJz.js";import"./envs-DFlyG_dH.js";import"./DisplayValue-B5Rw3jLu.js";import"./_createCompounder-CbLsIfEE.js";import"./capitalize-C89IAw35.js";function S({device:e}){const{t:r}=p(["exposes"]),o=u(s=>s.bridgeInfo),{sendMessage:t}=a.useContext(c),n=a.useCallback(async s=>{await t("bridge/request/device/options",{id:e.ieee_address,options:s})},[t,e.ieee_address]);return e.definition?.options?.length?i.jsx("div",{className:"list bg-base-100",children:e.definition.options.map(s=>i.jsx(d,{feature:s,device:e,deviceState:o.config.devices[e.ieee_address]??{},onChange:n,featureWrapperClass:f,parentFeatures:[]},m(s)))}):r("empty_exposes_definition")}export{S as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,a as b,ah as h,b as C,W as j,j as e,B as S,R as D,F as w,x as k}from"./index-DtyjNqrf.js";import{g as y,R as M,A as F}from"./RecallRemove-C7or_UUw.js";import{D as N}from"./DevicePicker-_CY2TskL.js";import{E as R}from"./EndpointPicker-Bik90BnT.js";import{D as E}from"./DashboardFeatureWrapper-CWbT-TyR.js";import{D as A}from"./DeviceCard-Bz1iBm0H.js";import"./envs-DFlyG_dH.js";import"./Feature-VsMzzVJz.js";import"./DisplayValue-B5Rw3jLu.js";import"./_createCompounder-CbLsIfEE.js";import"./capitalize-C89IAw35.js";import"./InputField-CYbmpJqW.js";import"./SelectField-DfdnxD7O.js";import"./LastSeen-CvhRQlEh.js";import"./format-6Yb6jWnA.js";import"./Lqi-CoNVuBvb.js";import"./PowerSource-DgFKG_xU.js";import"./snakeCase-DmoQhYQA.js";import"./DeviceImage-D-FjKeE6.js";import"./index-Q3KOJDn9.js";const G=o.memo(n=>{const[i,l]=o.useState(""),[a,m]=o.useState(""),{group:c}=n,d=b(s=>s.devices),p=o.useMemo(()=>h(d.find(s=>s.ieee_address===a)),[a,d]),{t:r}=C(["groups","zigbee"]),{sendMessage:u}=o.useContext(j),t=o.useCallback(s=>{m(s.ieee_address);const v=h(s);l(v.values().next().value)},[]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:r("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(N,{label:r("zigbee:device"),value:a,devices:d,onChange:t}),e.jsx(R,{label:r("zigbee:endpoint"),values:p,value:i,onChange:s=>l(s)})]}),e.jsx(S,{onClick:async()=>await u("bridge/request/group/members/add",{group:c.id.toString(),endpoint:i,device:a}),className:"btn btn-primary",children:r("add_to_group")})]})}),I=o.memo(n=>{const{removeDeviceFromGroup:i,groupMember:l,device:a,deviceState:m,lastSeenConfig:c,setDeviceState:d,getDeviceState:p}=n,{endpoint:r}=l,{t:u}=C(["groups","common"]),t=o.useMemo(()=>{const g=[];for(const _ of a.definition?.exposes??[]){const x=y(_,m);if(x&&(g.push(x),g.length===10))break}return g},[a,m]),s=o.useCallback(async g=>await d(a.ieee_address,g),[a.ieee_address,d]),v=o.useCallback(async g=>await p(a.ieee_address,g),[a.ieee_address,p]),f=o.useCallback(async()=>await i(a.ieee_address,r),[a.ieee_address,r,i]);return e.jsx(A,{features:t,device:a,endpoint:r,deviceState:m,onChange:s,onRead:v,featureWrapperClass:E,lastSeenConfig:c,children:e.jsx(D,{onClick:f,className:"btn btn-square btn-outline btn-error btn-sm",title:u("remove_from_group"),modalDescription:u("common:dialog_confirmation_prompt"),modalCancelLabel:u("common:cancel"),children:e.jsx(w,{icon:k})})})}),W=o.memo(n=>{const{group:i}=n,l=b(t=>t.devices),a=b(t=>t.deviceStates),m=b(t=>t.bridgeInfo.config.advanced.last_seen),{sendMessage:c}=o.useContext(j),d=o.useCallback(async(t,s)=>await c("bridge/request/group/members/remove",{device:t,endpoint:s,group:i.id.toString()}),[c,i.id]),p=o.useCallback(async(t,s)=>{await c(`${t}/set`,s)},[c]),r=o.useCallback(async(t,s)=>{await c(`${t}/get`,s)},[c]),u=o.useMemo(()=>{const t=[];for(const s of i.members){const v=l.find(f=>f.ieee_address===s.ieee_address);v&&t.push(e.jsx("div",{className:"w-[23rem] card bg-base-200 rounded-box shadow-md",children:e.jsx(I,{removeDeviceFromGroup:d,device:v,groupMember:s,deviceState:a[v.friendly_name]??{},lastSeenConfig:m,setDeviceState:p,getDeviceState:r})},`${s.ieee_address}-${s.endpoint}`))}return t},[i,l,m,a,d,p,r]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-center gap-3",children:u})});function ae({group:n}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4 mb-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(G,{group:n})}),e.jsx("div",{className:"flex-1",children:e.jsx(M,{target:n,deviceState:{}})}),e.jsx("div",{className:"flex-1",children:e.jsx(F,{target:n,deviceState:{}})})]}),e.jsx(W,{group:n})]})}export{ae as default};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,W as E,a as c,s as w,D as j,b as q,j as a,t as k,c as A,L as C}from"./index-DtyjNqrf.js";import{A as M,D as I}from"./Availability-t6lZj-iw.js";import{D as T}from"./DeviceImage-D-FjKeE6.js";import{C as D}from"./CheckboxField-DKhAwA85.js";import{T as B}from"./Table-BQc_g_eJ.js";import{L as H}from"./LastSeen-CvhRQlEh.js";import{L as P}from"./Lqi-CoNVuBvb.js";import{M as O,V}from"./VendorLink-D24n6LN-.js";import{P as R}from"./PowerSource-DgFKG_xU.js";import"./envs-DFlyG_dH.js";import"./DeviceControlEditName-CIF4s9nK.js";import"./InputField-CYbmpJqW.js";import"./index-Q3KOJDn9.js";import"./DebouncedInput-DnWGzIEH.js";import"./format-6Yb6jWnA.js";import"./DisplayValue-B5Rw3jLu.js";import"./snakeCase-DmoQhYQA.js";import"./_createCompounder-CbLsIfEE.js";function re(){const{sendMessage:r}=n.useContext(E),b=c(e=>e.devices),f=c(e=>e.deviceStates),i=c(e=>e.bridgeInfo.config),u=c(e=>e.availability),[o,F]=n.useState(w.get(j,!1)),[d,N]=n.useState(!1),{t}=q(["zigbee","common","availability"]),m=n.useMemo(()=>{const e=[];for(const s of b)if(s.type!=="Coordinator"&&(!o||!s.disabled)){const l=f[s.friendly_name]??{},p=i.devices[s.ieee_address]?.availability;if(d){if(s.power_source!=="Battery")continue;if("battery"in l){if(l.battery>=20)continue}else if("battery_state"in l){if(l.battery_state!=="low")continue}else if("battery_low"in l){if(!l.battery_low)continue}else continue}e.push({device:s,state:l,availabilityState:u[s.friendly_name]??{state:"offline"},availabilityEnabledForDevice:p!=null?!!p:void 0})}return e},[b,f,i.devices,u,o,d]),g=n.useCallback(e=>{w.set(j,e.target.checked),F(e.target.checked)},[]),v=n.useCallback(e=>{N(e.target.checked)},[]),y=n.useCallback(async(e,s,l)=>{await r("bridge/request/device/rename",{from:e,to:s,homeassistant_rename:l,last:void 0})},[r]),h=n.useCallback(async e=>{await r("bridge/request/device/configure",{id:e})},[r]),x=n.useCallback(async(e,s,l)=>{await r("bridge/request/device/remove",{id:e,force:s,block:l})},[r]),_=n.useCallback(async e=>{await r("bridge/request/device/interview",{id:e})},[r]),S=n.useMemo(()=>[{id:"friendly_name",header:t("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description].join(" "),cell:({row:{original:{device:e,state:s}}})=>a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar",children:a.jsx("div",{className:"h-11 w-11",style:{overflow:"visible"},children:a.jsx(T,{device:e,otaState:s.update?.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex-grow flex flex-col",children:[a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.description&&a.jsx("div",{className:"max-w-3xs text-xs opacity-50 truncate",title:e.description,children:e.description}),a.jsx("div",{className:"flex flex-row gap-1 mt-0.5 items-center",children:a.jsx("span",{className:"badge badge-soft badge-sm badge-ghost cursor-default",title:t("power"),children:a.jsx(R,{device:e,batteryPercent:s.battery,batteryState:s.battery_state,batteryLow:s.battery_low,showLevel:!0})})})]})]})},{id:"ieee_address",header:t("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,k(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address})}),a.jsxs("div",{className:"flex flex-row gap-1",children:[a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:t("network_address_hex"),children:k(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:t("network_address_dec"),children:e.network_address})]})]}),sortingFn:(e,s)=>e.original.device.ieee_address.localeCompare(s.original.device.ieee_address)},{id:"model",header:t("model"),accessorFn:({device:e})=>[e.definition?.model,e.model_id,e.definition?.vendor,e.manufacturer].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(O,{device:e}),a.jsx("div",{className:"flex flex-row gap-1",children:a.jsx("span",{className:"badge badge-ghost badge-sm",title:t("manufacturer"),children:a.jsx(V,{device:e})})})]})},{id:"lqi",header:t("lqi"),accessorFn:({state:e})=>e.linkquality,cell:({row:{original:{state:e}}})=>a.jsx(P,{value:e.linkquality}),enableColumnFilter:!1},{id:"last_seen",header:t("last_seen"),accessorFn:({state:e})=>A(e.last_seen,i.advanced.last_seen)?.getTime(),cell:({row:{original:{state:e}}})=>a.jsx(H,{lastSeen:e.last_seen,config:i.advanced.last_seen}),enableColumnFilter:!1},{id:"availability",header:t("availability:availability"),accessorFn:({availabilityState:e})=>e.state,cell:({row:{original:{device:e,availabilityState:s,availabilityEnabledForDevice:l}}})=>a.jsx(M,{disabled:e.disabled,availability:s,availabilityEnabledForDevice:l,availabilityFeatureEnabled:i.availability.enabled}),enableColumnFilter:!1},{id:"actions",header:()=>a.jsxs(a.Fragment,{children:[a.jsx(D,{name:"battery_low_only",detail:t("common:battery_low_only"),onChange:v,checked:d,className:"checkbox checkbox-sm"}),a.jsx(D,{name:"hide_disabled",detail:t("common:hide_disabled"),onChange:g,checked:o,className:"checkbox checkbox-sm"})]}),cell:({row:{original:{device:e,state:s}}})=>a.jsx(I,{device:e,state:s,homeassistantEnabled:i.homeassistant.enabled,renameDevice:y,removeDevice:x,configureDevice:h,interviewDevice:_}),enableSorting:!1,enableColumnFilter:!1}],[o,d,i.advanced.last_seen,i.availability.enabled,i.homeassistant.enabled,g,v,y,x,h,_,t]),L=n.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,last_seen:i.advanced.last_seen!=="disable",availability:i.availability.enabled||m.some(e=>e.availabilityEnabledForDevice),controls:!0}),[i.advanced.last_seen,i.availability.enabled,m]);return a.jsx(B,{id:"all-devices",columns:S,data:m,visibleColumns:L})}export{re as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,b as c,j as r}from"./index-
|
|
1
|
+
import{r as n,b as c,j as r}from"./index-DtyjNqrf.js";const u=n.memo(s=>{const{value:t,name:a}=s,{t:e}=c("values");switch(a){case"contact":return e(t?"closed":"open");case"occupancy":return e(t?"occupied":"clear");case"water_leak":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("leaking")}):e("clear");case"tamper":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("tampered")}):e("clear");case"supported":return e(t?"supported":"not_supported");default:return e(t?"true":"false")}}),o=n.memo(s=>{const{t}=c("values"),{value:a}=s;switch(typeof a){case"boolean":return r.jsx(u,{...s});case"undefined":return"N/A";case"object":return a===null?t("null"):JSON.stringify(a);case"string":return a===""?r.jsx("span",{className:"text-xs opacity-50",children:t("empty_string")}):a;default:return JSON.stringify(a)}});export{o as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as n,j as e,F as o,
|
|
1
|
+
import{b as n,j as e,F as o,c9 as r}from"./index-DtyjNqrf.js";import"./envs-DFlyG_dH.js";const t=[e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/Nerivec",className:"h-10",children:e.jsx("img",{alt:"Nerivec",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Nerivec&emoji=☕&slug=Nerivec&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Nerivec",children:[e.jsx(o,{icon:r}),"Sponsor Nerivec on Github"]})]},"Nerivec"),e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",className:"h-10",children:e.jsx("img",{alt:"koenkk",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Koenkk&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Koenkk",children:[e.jsx(o,{icon:r}),"Sponsor Koenkk on Github"]})]},"koenkk")];function i(){const{t:s}=n("settings");return e.jsxs("div",{className:"flex flex-col gap-3 items-center",children:[s("donation_text"),t.sort(()=>Math.random()-.5)]})}export{i as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,b as h,j as t}from"./index-
|
|
1
|
+
import{r,b as h,j as t}from"./index-DtyjNqrf.js";import{S as x}from"./SelectField-DfdnxD7O.js";const j=r.memo(l=>{const{value:s,values:n,disabled:c,onChange:p,label:d,...u}=l,{t:a}=h("common"),i=n.size===1,m=r.useMemo(()=>{const e=[];for(const o of n)e.push(t.jsx("option",{value:o,children:o},o));return e},[n]);return t.jsxs(x,{name:"endpoint_picker",label:d,value:s,onChange:e=>p(e.target.value),title:i?a("the_only_endpoint"):"",disabled:s&&i||c,...u,children:[t.jsx("option",{value:"",disabled:!0,children:a("select_endpoint")}),m]})});export{j as E};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as c,r as a,W as u,a as l,j as r}from"./index-
|
|
1
|
+
import{b as c,r as a,W as u,a as l,j as r}from"./index-DtyjNqrf.js";import{F as m,a as x,g as f}from"./Feature-VsMzzVJz.js";import"./envs-DFlyG_dH.js";import"./DisplayValue-B5Rw3jLu.js";import"./_createCompounder-CbLsIfEE.js";import"./capitalize-C89IAw35.js";function j(o){const{device:e}=o,{t:i}=c(["exposes"]),{sendMessage:t}=a.useContext(u),n=l(s=>s.deviceStates[e.friendly_name]??{}),p=a.useCallback(async s=>{await t(`${e.ieee_address}/set`,s)},[t,e.ieee_address]),d=a.useCallback(async s=>{await t(`${e.ieee_address}/get`,s)},[t,e.ieee_address]);return e.definition?.exposes?.length?r.jsx("div",{className:"list bg-base-100",children:e.definition.exposes.map(s=>r.jsx(m,{feature:s,device:e,deviceState:n,onChange:p,onRead:d,featureWrapperClass:x,parentFeatures:[]},f(s)))}):i("empty_exposes_definition")}export{j as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{af as J,aQ as Fe,aR as Ie,aS as Be,l as qe,aT as Ge,aU as Ve,aV as Me,aW as Oe,aX as He,aI as ee,aY as te,aZ as Le,a_ as Pe,a$ as Ue,b0 as We,b1 as ze,b2 as De,b3 as ae,b4 as Xe,b5 as re,b6 as Ke,b7 as Ye,b8 as L,b9 as ne,ba as se,a1 as Qe,bb as Ze,bc as Je,bd as et,be as tt,bf as at,bg as rt,bh as nt,bi as st,bj as ot,bk as ct,bl as lt,bm as it,bn as ut,bo as mt,bp as ft,bq as xt,br as ht,bs as pt,bt as dt,bu as A,aK as bt,bv as oe,bw as gt,bx as _t,by as yt,bz as Ct,bA as be,bB as jt,bC as ge,bD as vt,bE as St,bF as Tt,r as l,j as s,b as R,B as v,F as Z,bG as kt,ar as Et,bH as Nt,bI as wt,K as Rt}from"./index-DtyjNqrf.js";import{D as O}from"./DisplayValue-B5Rw3jLu.js";import{r as _e,a as At}from"./_createCompounder-CbLsIfEE.js";import{r as $t,a as Ft}from"./capitalize-C89IAw35.js";var P,ce;function It(){if(ce)return P;ce=1;var e=$t(),a=_e(),r=a(function(t,o,n){return o=o.toLowerCase(),t+(n?e(o):o)});return P=r,P}var Bt=It();const qt=J(Bt);var U,le;function Gt(){if(le)return U;le=1;var e=_e(),a=Ft(),r=e(function(t,o,n){return t+(n?" ":"")+a(o)});return U=r,U}var Vt=Gt();const Mt=J(Vt),Ot={battery_low:A,humidity:dt,illuminance:L,pressure:pt,co2:ht,voltage:xt,state:ft,brightness:L,occupancy:mt,presence:ut,current:it,power:lt,energy:ct,frequency:ot,tamper:st,smoke:nt,radiation_dose_per_hour:rt,radioactive_events_per_minute:at,power_factor:tt,mode:et,sound:Je,position:Ze,alarm:Qe,color_xy:se,color_hs:se,color_temp:ne,color_temp_startup:ne,illuminance_lux:L,soil_moisture:Ye,water_leak:ae,week:Ke,workdays_schedule:re,holidays_schedule:re,away_mode:Xe,vibration:ae,power_outage_count:De,action:ze,angle_x:We,angle_y:Ue,angle_z:Pe,side:Le,humidity_alarm:te,temperature_alarm:te,approach_distance:ee,distance:ee,trigger_count:He,level_config:Oe,station:Me,effect:Ve,linkquality:Ge,system_mode:qe,gradient:Be,sensitivity:Ie,test:Fe},Ht=(e,a)=>{let r=A;return e==null||(e>=85?(r=be,a.push("text-success")):e>=65?r=jt:e>=40?r=ge:e>=20?r=vt:(r=A,a.push("text-error"))),r},Lt=(e,a)=>{let r=A;switch(e){case"high":{r=be,a.push("text-success");break}case"medium":{r=ge;break}case"low":{r=A,a.push("text-error");break}}return r},Pt=(e,a,r)=>{let t=oe;return e==null||(a==="°F"&&(e=(e-32)/1.8),e>=30?(t=gt,r.push("text-error")):e>=25?t=_t:e>=20?t=yt:e>=15?t=Ct:e<5&&(t=oe,r.push("text-info"))),t},Ut=(e,a,r)=>{let t;const o=[],n={};switch(e){case"battery":{t=Ht(a,o);break}case"battery_state":{t=Lt(a,o);break}case"battery_low":{a&&o.push("text-error");break}case"device_temperature":case"temperature":case"local_temperature":{t=Pt(a,r,o);break}case"humidity":{a!=null&&a>60&&o.push("text-info");break}case"contact":{t=a?St:Tt,a||o.push("text-primary");break}case"occupancy":{a&&(o.push("text-warning"),n.beat=!0);break}case"presence":{a&&(o.push("text-warning"),n.beat=!0);break}case"tamper":{a&&(o.push("text-error"),n.beatFade=!0,n.shake=!0);break}case"water_leak":{a&&(o.push("text-primary"),n.beatFade=!0);break}case"vibration":{a&&(o.push("text-primary"),n.shake=!0);break}}return t?[t,o.join(" "),n]:(t=Ot[e],t?[t,o.join(" "),n]:[bt,"opacity-0",{}])},Wt=e=>`${e.type}-${e.name}-${e.label}-${e.property}-${e.access}-${e.category}-${e.endpoint}`;var y=(e=>(e[e.STATE=1]="STATE",e[e.SET=2]="SET",e[e.GET=4]="GET",e[e.STATE_SET=3]="STATE_SET",e[e.STATE_GET=5]="STATE_GET",e[e.ALL=7]="ALL",e))(y||{});const $=l.memo(({feature:e,deviceValue:a})=>s.jsxs("div",{children:[e.property&&s.jsx("span",{className:"font-bold",children:s.jsx(O,{value:a,name:e.name})}),"unit"in e&&s.jsx("span",{className:"text-xs ms-1",children:e.unit})]})),F=l.memo(e=>s.jsxs("div",{className:"alert alert-warning",role:"alert",children:["Unknown access ",s.jsx("pre",{children:e.feature.access})]})),zt=l.memo(e=>{const{feature:{access:a=y.SET,name:r,property:t,value_off:o,value_on:n},deviceValue:m,onChange:c,minimal:f}=e,{t:i}=R("zigbee"),h=l.useCallback(x=>c({[t]:x}),[t,c]),u=l.useCallback(x=>c({[t]:x.target.checked?n:o}),[n,o,t,c]);if(a&y.SET){const x=m!=null,p=!f||f&&!x;return s.jsxs("div",{children:[p&&s.jsx(v,{className:"btn btn-link",item:o,onClick:h,children:s.jsx(O,{value:o,name:r})}),x?s.jsx("input",{className:"toggle",type:"checkbox",checked:m===n,onChange:u}):s.jsx(Z,{icon:kt,title:i("unknown")}),p&&s.jsx(v,{className:"btn btn-link",item:n,onClick:h,children:s.jsx(O,{value:n,name:r})})]})}return a&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),N=l.memo(e=>{const{feature:a,onChange:r,parentFeatures:t,onRead:o,device:n,deviceState:m,featureWrapperClass:c,minimal:f,steps:i}=e,{type:h,property:u}=a,[x,p]=l.useState({}),{t:_}=R(["composite","common"]),j=l.useMemo(()=>Et({},m,x),[m,x]),k="features"in a&&a.features||[],E=l.useMemo(()=>{if(h==="composite"&&t!==void 0){if(t.length===1)return!0;if(t.length===2){const g=t[1].type;return g!=null&&g!=="composite"&&g!=="list"}}return!1},[h,t]);l.useEffect(()=>{p({})},[n.ieee_address]);const d=l.useCallback(g=>{p({...x,...g}),E||r(h==="composite"&&u?{[u]:{...x,...g}}:g)},[x,h,u,E,r]),b=l.useCallback(()=>{const g={...m,...x};r(u?{[u]:g}:g)},[u,r,x,m]),C=l.useCallback(g=>{o?.(h==="composite"&&u?{[u]:g}:g)},[o,h,u]);return s.jsxs(s.Fragment,{children:[k.map(g=>s.jsx(Ae,{feature:g,parentFeatures:t??[],device:n,deviceState:j,onChange:d,onRead:C,featureWrapperClass:c,minimal:f,steps:i?.[g.name]},Wt(g))),E&&s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${f?"btn-sm":""}`,onClick:b,children:_("common:apply")})})]})}),Dt=l.memo(e=>s.jsx(N,{...e}));var W,ie;function Xt(){if(ie)return W;ie=1;function e(a,r,t){return a===a&&(t!==void 0&&(a=a<=t?a:t),r!==void 0&&(a=a>=r?a:r)),a}return W=e,W}var z,ue;function Kt(){if(ue)return z;ue=1;var e=/\s/;function a(r){for(var t=r.length;t--&&e.test(r.charAt(t)););return t}return z=a,z}var D,me;function Yt(){if(me)return D;me=1;var e=Kt(),a=/^\s+/;function r(t){return t&&t.slice(0,e(t)+1).replace(a,"")}return D=r,D}var X,fe;function Qt(){if(fe)return X;fe=1;var e=Yt(),a=Nt(),r=At(),t=NaN,o=/^[-+]0x[0-9a-f]+$/i,n=/^0b[01]+$/i,m=/^0o[0-7]+$/i,c=parseInt;function f(i){if(typeof i=="number")return i;if(r(i))return t;if(a(i)){var h=typeof i.valueOf=="function"?i.valueOf():i;i=a(h)?h+"":h}if(typeof i!="string")return i===0?i:+i;i=e(i);var u=n.test(i);return u||m.test(i)?c(i.slice(2),u?2:8):o.test(i)?t:+i}return X=f,X}var K,xe;function Zt(){if(xe)return K;xe=1;var e=Xt(),a=Qt();function r(t,o,n){return n===void 0&&(n=o,o=void 0),n!==void 0&&(n=a(n),n=n===n?n:0),o!==void 0&&(o=a(o),o=o===o?o:0),e(a(t),o,n)}return K=r,K}var Jt=Zt();const T=J(Jt),ea=[.412453,.35758,.180423,.212671,.71516,.072169,.019334,.119193,.950227],ta=[3.2404813432005266,-1.5371515162713183,-.49853632616888777,-.9692549499965684,1.8759900014898907,.041555926558292815,.05564663913517715,-.20404133836651123,1.0573110696453443],ye=.42,Ce=.0031308,je=12.92,H=.055,V=e=>e<=Ce?je*e:(1+H)*e**ye-H,aa=1/ye,ra=V(Ce),na=1/je,Y=e=>e<=ra?e*na:((e+H)/(1+H))**aa,ve=(e,a)=>{const r=[0,0,0];for(let t=0;t<3;t++){r[t]=0;for(let o=0;o<3;o++)r[t]+=a[t*3+o]*e[o]}return r},he=(e,a,r)=>{const t=[Y(e),Y(a),Y(r)];return ve(t,ea)},sa=(e,a,r)=>{const t=ve([e,a,r],ta);return[V(t[0]),V(t[1]),V(t[2])]},Se=(e,a,r)=>{const t=1-e-a;return sa(r/a*e,r,r/a*t)},Te=(e,a,r=10)=>{let t=1;for(let o=0;o<r;o++){const n=Math.max(...Se(e,a,t));t=t/n}return t},I=(e,a,r)=>{if(e/=255,a/=255,r/=255,e<1e-12&&a<1e-12&&r<1e-12){const[c,f,i]=he(1,1,1),h=c+f+i;return[c/h,f/h,0]}const[t,o,n]=he(e,a,r),m=t+o+n;return[t/m,o/m,o]},oa=(e,a,r)=>{r===void 0&&(r=Te(e,a));const[t,o,n]=Se(e,a,r);return[T(t*255,0,255),T(o*255,0,255),T(n*255,0,255)]},B=(e,a,r)=>{e/=255,a/=255,r/=255;const t=Math.max(e,a,r),o=t-Math.min(e,a,r),n=o?(t===e?(a-r)/o+(a<r?6:0):t===a?2+(r-e)/o:4+(e-a)/o)*60:0,m=t?o/t*100:0,c=t*100;return[T(n,0,360),T(m,0,100),T(c,0,100)]},ca=(e,a,r)=>{a/=100,r/=100;const t=~~(e/60),o=e/60-t,n=r*(1-a),m=r*(1-a*o),c=r*(1-a*(1-o)),f=t%6,i=[r,m,n,n,c,r][f]*255,h=[c,r,r,m,n,n][f]*255,u=[n,n,c,r,r,m][f]*255;return[T(i,0,255),T(h,0,255),T(u,0,255)]},q=(e,a,r)=>{const[t,o,n]=[e,a,r].map(m=>Math.round(m).toString(16).padStart(2,"0"));return`#${t}${o}${n}`},la=e=>(e=e.slice(1),Array.from({length:3}).map((a,r)=>Number.parseInt(e.slice(r*2,r*2+2),16))),w=(e,a)=>{switch(a){case"color_xy":{const{x:r=.313,y:t=.329,Y:o=Te(r,t===0?.329:t)}=e,n=t===0?[255,255,255]:oa(r,t,o);return{color_rgb:n,color_hs:B(...n),color_xy:[r,t,o],hex:q(...n)}}case"color_hs":{const{hue:r=0,saturation:t=0}=e,o=100,n=ca(r,t,o);return{color_rgb:n,color_hs:[r,t,o],color_xy:I(...n),hex:q(...n)}}case"color_rgb":{const{r=255,g:t=255,b:o=255}=e;return{color_rgb:[r,t,o],color_hs:B(r,t,o),color_xy:I(r,t,o),hex:q(r,t,o)}}case"hex":{const r=e.hex,t=la(r);return{color_rgb:t,color_hs:B(...t),color_xy:I(...t),hex:r}}default:{const r=[255,255,255];return{color_rgb:r,color_hs:B(...r),color_xy:I(...r),hex:q(...r)}}}},pe=(e,a)=>{switch(a){case"color_xy":return{x:e.color_xy[0],y:e.color_xy[1]};case"color_hs":return{hue:e.color_hs[0],saturation:e.color_hs[1]};case"color_rgb":return{r:e.color_rgb[0],g:e.color_rgb[1],b:e.color_rgb[2]};case"hex":return{hex:e.hex}}},ke=e=>`${e[0].toFixed(3)}, ${e[1].toFixed(3)}, ${e[2].toFixed(3)}`,M=e=>`${e[0].toFixed(2)}°, ${e[1].toFixed(2)}%, ${e[2].toFixed(2)}%`,Ee=e=>`${e[0].toFixed(0)}, ${e[1].toFixed(0)}, ${e[2].toFixed(0)}`,Ne=e=>e,de=e=>({color_xy:ke(e.color_xy),color_hs:M(e.color_hs),color_rgb:Ee(e.color_rgb),hex:Ne(e.hex)}),ia=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>+(a[t]??0))},ua=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>T(+(a[t]??0),0,t?100:360))},ma=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>T(+(a[t]??0),0,255))},Q=(e,a)=>{switch(a){case"color_xy":{const r=ia(e);return w({x:r[0],y:r[1]},"color_xy")}case"color_hs":{const r=ua(e);return w({hue:r[0],saturation:r[1]},"color_hs")}case"color_rgb":{const r=ma(e);return w({r:r[0],g:r[1],b:r[2]},"color_rgb")}case"hex":return w({hex:e},"hex")}},fa="linear-gradient(to right, white, transparent)",xa="linear-gradient(to right, rgb(255, 0, 0), rgb(255, 255, 0), rgb(0, 255, 0), rgb(0, 255, 255), rgb(0, 0, 255), rgb(255, 0, 255), rgb(255, 0, 0))",G=l.memo(({label:e,...a})=>s.jsxs("label",{className:"input",children:[e,s.jsx("input",{type:"text",className:"grow",...a})]})),we=l.memo(e=>{const{onChange:a,value:r={},format:t,minimal:o}=e,[n,m]=l.useState(w(r,t)),[c,f]=l.useState(de(n)),[i,h]=l.useState({color_rgb:!1,color_hs:!1,color_xy:!1,hex:!1});l.useEffect(()=>{const d=w(r,t);m(d),f(de(d))},[r,t]),l.useEffect(()=>{if(!i.color_xy){const d=ke(n.color_xy);f(b=>({...b,color_xy:d}))}},[i.color_xy,n.color_xy]),l.useEffect(()=>{if(!i.color_hs){const d=M(n.color_hs);f(b=>({...b,color_hs:d}))}},[i.color_hs,n.color_hs]),l.useEffect(()=>{if(!i.color_rgb){const d=Ee(n.color_rgb);f(b=>({...b,color_rgb:d}))}},[i.color_rgb,n.color_rgb]),l.useEffect(()=>{if(!i.hex){const d=Ne(n.hex);f(b=>({...b,hex:d}))}},[i.hex,n.hex]);const u=l.useCallback(d=>{if(d.target.value){const b=Array.from(n.color_hs);b[1]=d.target.valueAsNumber;const C=M(b);f(g=>({...g,color_hs:C})),m(Q(C,"color_hs"))}},[n.color_hs]),x=l.useCallback(d=>{if(d.target.value){const b=Array.from(n.color_hs),C=b[1];b[1]=C===0?100:C,b[0]=d.target.valueAsNumber;const g=M(b);f($e=>({...$e,color_hs:g})),m(Q(g,"color_hs"))}},[n.color_hs]),p=l.useCallback(d=>{const{value:b,name:C}=d.target;f(g=>({...g,[C]:b})),m(Q(b,C))},[]),_=l.useCallback(d=>{h(b=>({...b,[d.target.name]:!0}))},[]),j=l.useCallback(d=>{h(b=>({...b,[d.target.name]:!1})),a(pe(n,t))},[n,t,a]),k=l.useCallback(()=>{a(pe(n,t))},[n,t,a]),E=l.useMemo(()=>`hsl(${n.color_hs[0]}, 100%, 50%)`,[n.color_hs[0]]);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:s.jsx("div",{className:`w-full${o?" max-w-xs":""}`,children:s.jsx("input",{type:"range",min:0,max:100,value:n.color_hs[1],className:`range [--range-bg:transparent] [--range-fill:0] w-full${o?" range-xs ":""}`,style:{backgroundImage:fa,backgroundColor:E},onChange:u,onTouchEnd:k,onMouseUp:k})})}),s.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:s.jsx("div",{className:`w-full${o?" max-w-xs":""}`,children:s.jsx("input",{type:"range",min:0,max:360,value:n.color_hs[0],className:`range [--range-bg:transparent] [--range-fill:0] w-full${o?" range-xs ":""}`,style:{backgroundImage:xa},onChange:x,onTouchEnd:k,onMouseUp:k})})}),!o&&s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 justify-around",children:[s.jsx(G,{label:"hex",name:"hex",value:c.hex,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"rgb",name:"color_rgb",value:c.color_rgb,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"hsv",name:"color_hs",value:c.color_hs,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"xyY",name:"color_xy",value:c.color_xy,onChange:p,onFocus:_,onBlur:j})]})]})}),ha=l.memo(e=>{const{deviceValue:a,feature:{name:r,features:t,property:o},onChange:n,minimal:m}=e,c=l.useMemo(()=>{const i={};for(const h of t){const u=Number.parseFloat(a?.[h.name]);i[h.name]=Number.isNaN(u)?0:u}return i},[a,t]),f=l.useCallback(i=>n({[o??"color"]:i}),[o,n]);return s.jsx(we,{onChange:f,value:c,format:r,minimal:m})}),pa={position:[0,25,50,75,100].map(e=>({value:e,name:`${e}`})),tilt:[0,25,50,75,100].map(e=>({value:e,name:`${e}`}))},da=l.memo(e=>s.jsx(N,{...e,steps:pa}));function S(e){return typeof e!="object"}const Re=l.memo(e=>{const{onChange:a,values:r,value:t,minimal:o}=e,{t:n}=R("common"),m=l.useCallback(c=>{const f=r.find(i=>S(i)?i===c.target.value:i.value===Number.parseInt(c.target.value,10));a(f)},[r,a]);return o?s.jsxs("select",{className:"select",onChange:m,value:S(t)?t:t?.value,children:[s.jsx("option",{value:"",disabled:!0,children:n("select_value")}),r.map(c=>s.jsx("option",{value:S(c)?c:c.value,children:S(c)?c:c.name},S(c)?c:c.name))]}):s.jsx("div",{className:"join join-vertical lg:join-horizontal",children:r.map(c=>s.jsx(v,{className:`btn btn-soft btn-sm join-item${(S(c)?c===t:c.value===(S(t)?t:t?.value))?" btn-active":""}`,onClick:f=>a(f),item:S(c)?c:c.value,title:S(c)?`${c}`:c.description,children:S(c)?s.jsx(O,{value:c,name:""}):c.name},S(c)?c:c.name))})}),ba=6,ga=l.memo(e=>{const{onChange:a,feature:{access:r=y.SET,values:t,property:o},deviceValue:n,minimal:m}=e;return r&y.SET?s.jsx(Re,{onChange:c=>a({[o]:c}),values:t,value:n||"",minimal:m||t.length>ba}):r&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),_a=l.memo(e=>s.jsx(N,{...e})),ya=l.memo(e=>{const{minimal:a,onChange:r,feature:{length_min:t,length_max:o,property:n},deviceValue:m}=e,{t:c}=R(["gradient","common"]),[f,i]=l.useState(t>0?Array(t).fill("#ffffff"):[]);l.useEffect(()=>{m&&Array.isArray(m)&&m.length>0&&i(m)},[m]);const h=l.useCallback((d,b)=>{const C=Array.from(f);C[d]=b,i(C)},[f]),u=l.useCallback(()=>{const d=Array.from(f);d.push("#ffffff"),i(d)},[f]),x=l.useCallback(d=>{const b=Array.from(f);b.splice(d,1),i(b)},[f]),p=l.useCallback(()=>r({[n??"gradient"]:f}),[f,n,r]),[_,j]=l.useState(!1),[k,E]=l.useState(!1);return l.useEffect(()=>{j(f.length<o),E(f.length>t)},[f,t,o]),s.jsxs("div",{className:"flex flex-col gap-2",children:[f.map((d,b)=>s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center",children:[s.jsx(we,{onChange:C=>{h(b,C.hex)},value:{hex:d},format:"hex",minimal:a}),k&&s.jsx(v,{className:"btn btn-sm btn-error",onClick:()=>x(b),children:"-"})]},`${d}-${b}`)),_&&s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:s.jsx(v,{className:"btn btn-sm btn-success",onClick:u,children:"+"})}),s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${a?"btn-sm":""}`,onClick:p,children:c("common:apply")})})]})}),Ca={brightness:[0,25,50,75,100].map(e=>({value:wt(e,[0,100],[0,255]),name:`${e}%`})),color_temp:[1e3,2e3,3e3,4e3,5e3,6500].map(e=>({value:1e6/e,name:`${e}K`}))},ja=l.memo(e=>s.jsx(N,{...e,steps:Ca}));function va(e){return e.type==="composite"&&(e.name==="color_xy"||e.name==="color_hs")}const Sa=l.memo(e=>{const{t:a}=R("zigbee"),{children:r,feature:t,deviceValue:o,onRead:n}=e,m=t.unit,c=l.useMemo(()=>Ut(t.name,o,m),[m,t.name,o]),f=l.useMemo(()=>t.property&&t.access&y.GET||va(t),[t]),i=e.parentFeatures?.[e.parentFeatures.length-1],h=t.name==="state"?t.property:t.name;let u=t.label||Mt(qt(h));i?.label&&t.name==="state"&&i.type!=="light"&&i.type!=="switch"&&(u=`${i.label} ${t.label.charAt(0).toLowerCase()}${t.label.slice(1)}`);const x=l.useCallback(p=>{p.property&&n?.({[p.property]:""})},[n]);return s.jsxs("div",{className:"list-row p-3",children:[s.jsx("div",{children:s.jsx(Z,{icon:c[0],fixedWidth:!0,className:c[1],...c[2],size:"2xl"})}),s.jsxs("div",{children:[s.jsxs("div",{title:h,children:[u,t.endpoint?` (${a("endpoint")}: ${t.endpoint})`:""]}),s.jsx("div",{className:"text-xs font-semibold opacity-60",children:t.description})]}),s.jsx("div",{className:"list-col-wrap flex flex-col gap-2",children:r}),f&&s.jsx(v,{item:t,onClick:x,className:"btn btn-xs btn-square btn-primary",children:s.jsx(Z,{icon:Rt})})]})}),Ta=l.memo(e=>{const{onChange:a,value:r,feature:t,parentFeatures:o}=e,[n,m]=l.useState(r);l.useEffect(()=>{m(r)},[r]);const c=l.useCallback(u=>{m(u),a(u)},[a]),f=l.useCallback((u,x)=>{const p=Array.from(n);typeof u=="object"&&(u={...n[x],...u}),p[x]=u,c(p)},[n,c]),i=l.useCallback(u=>{const x=Array.from(n);x.splice(u,1),c(x)},[n,c]),h=l.useCallback(()=>m([...n,{}]),[n]);return n.length===0?s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:s.jsx(v,{className:"btn btn-success col-1",onClick:h,children:"+"})}):n.map((u,x)=>s.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[s.jsx(Ae,{feature:t,device:{},deviceState:u,onChange:p=>f(p,x),onRead:p=>{},featureWrapperClass:Sa,parentFeatures:o}),s.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[s.jsx(v,{item:x,className:"btn btn-sm btn-error btn-square join-item",onClick:i,children:"-"}),n.length-1===x&&s.jsx(v,{className:"btn btn-sm btn-success btn-square join-item",onClick:h,children:"+"})]})]},x))}),ka=l.memo(e=>{const{feature:a,minimal:r,parentFeatures:t,onChange:o,deviceValue:n}=e,[m,c]=l.useState({value:a.property?n?.[a.property]??[]:[]}),{t:f}=R(["list","common"]),i=l.useMemo(()=>{if(t!==void 0){if(t.length===1)return!0;if(t.length===2){const _=t[1].type;return _!=null&&_!=="composite"&&_!=="list"}}return!1},[t]),h=l.useCallback(_=>{c({value:_}),i||o(a.property?{[a.property]:_}:_)},[a.property,o,i]),u=l.useCallback(()=>{o(a.property?{[a.property]:m.value}:m.value)},[a.property,o,m.value]),{access:x=y.SET,item_type:p}=a;return x&y.SET?s.jsxs(s.Fragment,{children:[s.jsx(Ta,{feature:p,parentFeatures:[...t,a],onChange:h,value:m.value}),i&&s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${r?"btn-sm":""}`,onClick:u,disabled:m.value.length===0,children:f("common:apply")})})]}):x&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Ea=l.memo(e=>s.jsx(N,{...e})),Na=l.memo(e=>{const{onChange:a,value:r,valueStep:t,min:o,max:n,unit:m,steps:c,minimal:f,...i}=e,[h,u]=l.useState(r),x=o!=null&&n!=null;l.useEffect(()=>{u(r)},[r]);const p=l.useCallback(j=>!!j.target.value&&u(j.target.valueAsNumber),[]),_=l.useCallback(j=>!j.target.validationMessage&&a(h),[h,a]);return s.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:[!f&&c?s.jsx(Re,{values:c,onChange:a,value:h}):null,x?s.jsxs("div",{className:"w-full max-w-xs",children:[s.jsx("input",{min:o,max:n,step:t,type:"range",className:"range range-xs range-primary validator",value:h,onChange:p,onTouchEnd:_,onMouseUp:_,...i}),s.jsxs("div",{className:"flex justify-between px-1 mt-1 text-xs",children:[s.jsx("span",{children:o}),f&&s.jsx("span",{children:h}),s.jsx("span",{children:n})]})]}):null,(!f||!x)&&s.jsxs("label",{className:"input",children:[s.jsx("input",{type:"number",className:"grow validator",value:h,step:t,onChange:p,onBlur:_,min:o,max:n,...i}),m]})]})}),wa=l.memo(e=>{const{feature:{presets:a,access:r=y.SET,property:t,unit:o,value_max:n,value_min:m,value_step:c},deviceValue:f,steps:i,onChange:h,minimal:u}=e;return r&y.SET?s.jsx(Na,{onChange:x=>h({[t]:x}),value:f??"",min:m,max:n,step:c,steps:a?.length?a:i,unit:o,minimal:u}):r&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Ra=l.memo(e=>s.jsx(N,{...e})),Aa=l.memo(e=>{const{onChange:a,value:r,...t}=e,[o,n]=l.useState(r);return l.useEffect(()=>{n(r)},[r]),s.jsx("input",{type:"text",className:"input validator",value:o,onChange:m=>n(m.target.value),onBlur:m=>!m.target.validationMessage&&a(o),...t})}),$a=l.memo(e=>{const{feature:{access:a=y.SET,property:r},deviceValue:t,onChange:o}=e;return a&y.SET?s.jsx(Aa,{onChange:n=>o({[r]:n}),value:t??""}):a&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Fa=e=>`${e.type}-${e.name}-${e.label}-${e.access}-${e.category}-${e.property}-${e.endpoint}`,Ae=l.memo(e=>{const{feature:a,device:r,deviceState:t,steps:o,onRead:n,onChange:m,featureWrapperClass:c,minimal:f,parentFeatures:i}=e,h=l.useMemo(()=>a.property?t[a.property]:void 0,[a.property,t[a.property]]),u=l.useMemo(()=>Fa(a),[a]),x=l.useMemo(()=>({device:r,deviceValue:h,onChange:m,onRead:n,featureWrapperClass:c,minimal:f,parentFeatures:i}),[r,h,m,n,c,f,i]),p=l.useMemo(()=>({feature:a,onRead:n,deviceValue:h,parentFeatures:i}),[a,n,h,i]);switch(a.type){case"binary":return s.jsx(c,{...p,children:s.jsx(zt,{feature:a,...x},u)},u);case"numeric":return s.jsx(c,{...p,children:s.jsx(wa,{feature:a,...x,steps:o},u)},u);case"list":return a.name==="gradient"&&a.length_min!=null&&a.length_max!=null?s.jsx(c,{...p,children:s.jsx(ya,{feature:a,...x},u)},u):s.jsx(c,{...p,children:s.jsx(ka,{feature:a,...x},u)},u);case"text":return s.jsx(c,{...p,children:s.jsx($a,{feature:a,...x},u)},u);case"enum":return s.jsx(c,{...p,children:s.jsx(ga,{feature:a,...x},u)},u);case"light":return s.jsx(ja,{feature:a,...x,deviceState:t},u);case"switch":return s.jsx(Ra,{feature:a,...x,deviceState:t},u);case"cover":return s.jsx(da,{feature:a,...x,deviceState:t},u);case"lock":return s.jsx(Ea,{feature:a,...x,deviceState:t},u);case"climate":return s.jsx(Dt,{feature:a,...x,deviceState:t},u);case"fan":return s.jsx(_a,{feature:a,...x,deviceState:t},u);case"composite":{if(a.name==="color_xy"||a.name==="color_hs")return s.jsx(c,{...p,children:s.jsx(ha,{feature:a,...x},u)},u);const _=i&&a.property?t[a.property]:t;return s.jsx(N,{feature:a,...x,deviceState:_},u)}default:return console.error("Unsupported feature",a),s.jsx(c,{...p,children:s.jsx("pre",{children:JSON.stringify(a,null,4)})},u)}});export{Ae as F,Sa as a,y as b,Ut as c,qt as d,Wt as g,Mt as s};
|
|
Binary file
|