zigbee2mqtt-windfront 1.0.0 → 1.0.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/README.md +4 -0
- package/dist/assets/{About-CcMd3AH7.js → About-NjZYVGGK.js} +1 -1
- package/dist/assets/About-NjZYVGGK.js.br +0 -0
- package/dist/assets/{Availability-C9haSc65.js → Availability-CRIDrhlB.js} +1 -1
- package/dist/assets/Availability-CRIDrhlB.js.br +5 -0
- package/dist/assets/{Bind-QWht9PxX.js → Bind-2EyqGKNk.js} +1 -1
- package/dist/assets/Bind-2EyqGKNk.js.br +0 -0
- package/dist/assets/{Bridge-BaVOrgia.js → Bridge-BxUlX1vE.js} +1 -1
- package/dist/assets/Bridge-BxUlX1vE.js.br +1 -0
- package/dist/assets/{CheckboxField-DLaKVdsu.js → CheckboxField-CanRey3x.js} +1 -1
- package/dist/assets/CheckboxField-CanRey3x.js.br +0 -0
- package/dist/assets/{ClusterSinglePicker-1p4AJLVf.js → ClusterSinglePicker-CpOqo3Ro.js} +1 -1
- package/dist/assets/ClusterSinglePicker-CpOqo3Ro.js.br +0 -0
- package/dist/assets/{Clusters-DLf-orBd.js → Clusters-CWxqlz_3.js} +1 -1
- package/dist/assets/Clusters-CWxqlz_3.js.br +0 -0
- package/dist/assets/{Dashboard-Z5xr3mcm.js → Dashboard-CZJkSLjr.js} +1 -1
- package/dist/assets/Dashboard-CZJkSLjr.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-PnES88Uy.js → DashboardFeatureWrapper-BPi5Syin.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-BPi5Syin.js.br +4 -0
- package/dist/assets/{DebouncedInput-Bmii6Ayp.js → DebouncedInput-suZwHdPO.js} +1 -1
- package/dist/assets/DebouncedInput-suZwHdPO.js.br +0 -0
- package/dist/assets/{DevConsole-7cju1CjR.js → DevConsole-BpLyFXQ6.js} +1 -1
- package/dist/assets/DevConsole-BpLyFXQ6.js.br +0 -0
- package/dist/assets/{DevConsole-Et6-aog1.js → DevConsole-HKbEkq5G.js} +1 -1
- package/dist/assets/DevConsole-HKbEkq5G.js.br +0 -0
- package/dist/assets/{DeviceCard-BwUN52M9.js → DeviceCard-C1UuNxRA.js} +1 -1
- package/dist/assets/DeviceCard-C1UuNxRA.js.br +0 -0
- package/dist/assets/{DeviceControlEditName-BzsMO3W6.js → DeviceControlEditName-DJowO9Oo.js} +1 -1
- package/dist/assets/DeviceControlEditName-DJowO9Oo.js.br +0 -0
- package/dist/assets/{DeviceImage-Dg1Ihl-B.js → DeviceImage-B6F8WQJo.js} +1 -1
- package/dist/assets/DeviceImage-B6F8WQJo.js.br +0 -0
- package/dist/assets/{DeviceInfo-AEJMMaXQ.js → DeviceInfo-YHgZjzBI.js} +1 -1
- package/dist/assets/DeviceInfo-YHgZjzBI.js.br +0 -0
- package/dist/assets/{DevicePage-CWSeFraV.js → DevicePage-uH6dGCsg.js} +2 -2
- package/dist/assets/DevicePage-uH6dGCsg.js.br +0 -0
- package/dist/assets/{DevicePicker-f_R57kdd.js → DevicePicker-DxCWDQnp.js} +1 -1
- package/dist/assets/DevicePicker-DxCWDQnp.js.br +0 -0
- package/dist/assets/{DeviceSettings-BRONiaNg.js → DeviceSettings-L5BnZTC6.js} +1 -1
- package/dist/assets/DeviceSettings-L5BnZTC6.js.br +0 -0
- package/dist/assets/{DeviceSpecificSettings-x-J4ToEN.js → DeviceSpecificSettings-BqkOD4QF.js} +1 -1
- package/dist/assets/DeviceSpecificSettings-BqkOD4QF.js.br +0 -0
- package/dist/assets/{Devices-CfRY6Ewt.js → Devices-97iPX55p.js} +1 -1
- package/dist/assets/Devices-97iPX55p.js.br +0 -0
- package/dist/assets/{DevicesPage-CL0xUJMK.js → DevicesPage-zt3K4Z20.js} +1 -1
- package/dist/assets/DevicesPage-zt3K4Z20.js.br +0 -0
- package/dist/assets/{DisplayValue-CBeHL9Ll.js → DisplayValue-CZpYmpLD.js} +1 -1
- package/dist/assets/DisplayValue-CZpYmpLD.js.br +0 -0
- package/dist/assets/Donate-aQHexwC0.js +1 -0
- package/dist/assets/Donate-aQHexwC0.js.br +0 -0
- package/dist/assets/{EndpointPicker-LFKxrEh9.js → EndpointPicker-VM2TEDAs.js} +1 -1
- package/dist/assets/EndpointPicker-VM2TEDAs.js.br +0 -0
- package/dist/assets/{Exposes-7GlsLrJX.js → Exposes-DusK4Z7N.js} +1 -1
- package/dist/assets/Exposes-DusK4Z7N.js.br +0 -0
- package/dist/assets/{Feature-D2uPEkUX.js → Feature-b5LHKHrY.js} +1 -1
- package/dist/assets/Feature-b5LHKHrY.js.br +0 -0
- package/dist/assets/{Frontend-DCcab0zi.js → Frontend-BQRD1FRb.js} +1 -1
- package/dist/assets/Frontend-BQRD1FRb.js.br +0 -0
- package/dist/assets/{GroupPage-BAAKgEDB.js → GroupPage-NYbFvZk4.js} +2 -2
- package/dist/assets/GroupPage-NYbFvZk4.js.br +0 -0
- package/dist/assets/{GroupSettings-Bm6lZ--r.js → GroupSettings-lZ4wrUYC.js} +1 -1
- package/dist/assets/GroupSettings-lZ4wrUYC.js.br +0 -0
- package/dist/assets/{Groups-BcnfSKsF.js → Groups-C2IY6j-8.js} +1 -1
- package/dist/assets/Groups-C2IY6j-8.js.br +0 -0
- package/dist/assets/{GroupsPage-CEWJy_a-.js → GroupsPage-Cl3obGrH.js} +1 -1
- package/dist/assets/GroupsPage-Cl3obGrH.js.br +0 -0
- package/dist/assets/{HomePage-DI-dB684.js → HomePage-Dt0sVTff.js} +1 -1
- package/dist/assets/HomePage-Dt0sVTff.js.br +0 -0
- package/dist/assets/{InputField-CiDxftEt.js → InputField-C_t5k0Dv.js} +1 -1
- package/dist/assets/InputField-C_t5k0Dv.js.br +0 -0
- package/dist/assets/{LastSeen-DQP5qZTT.js → LastSeen-CeDLL1-q.js} +1 -1
- package/dist/assets/LastSeen-CeDLL1-q.js.br +0 -0
- package/dist/assets/{LogsPage-C9_WtqUF.js → LogsPage-DV6f_rSq.js} +1 -1
- package/dist/assets/LogsPage-DV6f_rSq.js.br +0 -0
- package/dist/assets/{Lqi-DcPc55r4.js → Lqi-DBfyroIH.js} +1 -1
- package/dist/assets/Lqi-DBfyroIH.js.br +0 -0
- package/dist/assets/{NetworkPage-CaPQkFGO.js → NetworkPage-BU4JgKZc.js} +2 -2
- package/dist/assets/NetworkPage-BU4JgKZc.js.br +0 -0
- package/dist/assets/{OtaPage-DLGAq1H9.js → OtaPage-BZgdsTpp.js} +1 -1
- package/dist/assets/OtaPage-BZgdsTpp.js.br +0 -0
- package/dist/assets/{PowerSource-Do_AMydO.js → PowerSource-BF7Gul0J.js} +1 -1
- package/dist/assets/PowerSource-BF7Gul0J.js.br +0 -0
- package/dist/assets/{RawNetworkData-Dod9XYkB.js → RawNetworkData-DWbMOxjo.js} +1 -1
- package/dist/assets/RawNetworkData-DWbMOxjo.js.br +0 -0
- package/dist/assets/{RawNetworkMap-DQYtASpr.js → RawNetworkMap-C7ipJu2k.js} +1 -1
- package/dist/assets/RawNetworkMap-C7ipJu2k.js.br +0 -0
- package/dist/assets/{RecallRemove-BpIiOBsV.js → RecallRemove-Bt_mgpm8.js} +1 -1
- package/dist/assets/RecallRemove-Bt_mgpm8.js.br +0 -0
- package/dist/assets/{Reporting-C7ICrJmW.js → Reporting-Bjl0j1aN.js} +1 -1
- package/dist/assets/Reporting-Bjl0j1aN.js.br +0 -0
- package/dist/assets/Scene-DEvlYeva.js +1 -0
- package/dist/assets/Scene-DEvlYeva.js.br +0 -0
- package/dist/assets/{SelectField-DsW6CGZB.js → SelectField-pi0T7PIM.js} +1 -1
- package/dist/assets/SelectField-pi0T7PIM.js.br +1 -0
- package/dist/assets/{Settings-j-Qu32ok.js → Settings-hpQnUDbw.js} +1 -1
- package/dist/assets/Settings-hpQnUDbw.js.br +0 -0
- package/dist/assets/{SettingsList-kg9AVkQO.js → SettingsList-CoMEU_Fj.js} +1 -1
- package/dist/assets/SettingsList-CoMEU_Fj.js.br +0 -0
- package/dist/assets/{SettingsPage-ClmgBRGO.js → SettingsPage-DlrIVuyx.js} +2 -2
- package/dist/assets/SettingsPage-DlrIVuyx.js.br +0 -0
- package/dist/assets/{State-DwO5NWpi.js → State-DTwjupCm.js} +1 -1
- package/dist/assets/State-DTwjupCm.js.br +0 -0
- package/dist/assets/{Table-BzzHPQHt.js → Table-CNH7RvaJ.js} +1 -1
- package/dist/assets/Table-CNH7RvaJ.js.br +0 -0
- package/dist/assets/{TextareaField-bR1CLeha.js → TextareaField-B18rY5b7.js} +1 -1
- package/dist/assets/TextareaField-B18rY5b7.js.br +0 -0
- package/dist/assets/{Tools-BavvKF4S.js → Tools-_0AcB_CD.js} +1 -1
- package/dist/assets/Tools-_0AcB_CD.js.br +0 -0
- package/dist/assets/{TouchlinkPage-B7tLnS3m.js → TouchlinkPage-BkkAokwt.js} +1 -1
- package/dist/assets/TouchlinkPage-BkkAokwt.js.br +0 -0
- package/dist/assets/{VendorLink-C4yRCmCp.js → VendorLink-Bn8AGeqD.js} +1 -1
- package/dist/assets/VendorLink-Bn8AGeqD.js.br +0 -0
- package/dist/assets/{_createCompounder-B35o_eDD.js → _createCompounder-CG6wppeM.js} +1 -1
- package/dist/assets/_createCompounder-CG6wppeM.js.br +0 -0
- package/dist/assets/{capitalize-25MKEfyu.js → capitalize-fmjr8MXW.js} +1 -1
- package/dist/assets/capitalize-fmjr8MXW.js.br +0 -0
- package/dist/assets/{index-CflX8yCT.js → index-B5pN5VmG.js} +1 -1
- package/dist/assets/index-B5pN5VmG.js.br +0 -0
- package/dist/assets/index-BB8zE-tT.css +1 -0
- package/dist/assets/index-BB8zE-tT.css.br +0 -0
- package/dist/assets/{index-BXfBkE5R.js → index-CwJt2ZPU.js} +22 -22
- package/dist/assets/index-CwJt2ZPU.js.br +0 -0
- package/dist/assets/{jszip.min-C-j6N8_H.js → jszip.min-WnSa1ljR.js} +1 -1
- package/dist/assets/jszip.min-WnSa1ljR.js.br +0 -0
- package/dist/assets/snakeCase-E1FSY3OI.js +1 -0
- package/dist/assets/snakeCase-E1FSY3OI.js.br +0 -0
- package/dist/index.html +2 -2
- package/dist/index.html.br +0 -0
- package/package.json +4 -4
- package/dist/assets/About-CcMd3AH7.js.br +0 -0
- package/dist/assets/Availability-C9haSc65.js.br +0 -0
- package/dist/assets/Bind-QWht9PxX.js.br +0 -0
- package/dist/assets/Bridge-BaVOrgia.js.br +0 -0
- package/dist/assets/CheckboxField-DLaKVdsu.js.br +0 -1
- package/dist/assets/ClusterSinglePicker-1p4AJLVf.js.br +0 -0
- package/dist/assets/Clusters-DLf-orBd.js.br +0 -0
- package/dist/assets/Dashboard-Z5xr3mcm.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-PnES88Uy.js.br +0 -0
- package/dist/assets/DebouncedInput-Bmii6Ayp.js.br +0 -0
- package/dist/assets/DevConsole-7cju1CjR.js.br +0 -0
- package/dist/assets/DevConsole-Et6-aog1.js.br +0 -0
- package/dist/assets/DeviceCard-BwUN52M9.js.br +0 -0
- package/dist/assets/DeviceControlEditName-BzsMO3W6.js.br +0 -0
- package/dist/assets/DeviceImage-Dg1Ihl-B.js.br +0 -0
- package/dist/assets/DeviceInfo-AEJMMaXQ.js.br +0 -0
- package/dist/assets/DevicePage-CWSeFraV.js.br +0 -0
- package/dist/assets/DevicePicker-f_R57kdd.js.br +0 -0
- package/dist/assets/DeviceSettings-BRONiaNg.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-x-J4ToEN.js.br +0 -0
- package/dist/assets/Devices-CfRY6Ewt.js.br +0 -0
- package/dist/assets/DevicesPage-CL0xUJMK.js.br +0 -0
- package/dist/assets/DisplayValue-CBeHL9Ll.js.br +0 -4
- package/dist/assets/Donate-DdYHmeAG.js +0 -1
- package/dist/assets/Donate-DdYHmeAG.js.br +0 -0
- package/dist/assets/EndpointPicker-LFKxrEh9.js.br +0 -0
- package/dist/assets/Exposes-7GlsLrJX.js.br +0 -0
- package/dist/assets/Feature-D2uPEkUX.js.br +0 -0
- package/dist/assets/Frontend-DCcab0zi.js.br +0 -0
- package/dist/assets/GroupPage-BAAKgEDB.js.br +0 -0
- package/dist/assets/GroupSettings-Bm6lZ--r.js.br +0 -0
- package/dist/assets/Groups-BcnfSKsF.js.br +0 -0
- package/dist/assets/GroupsPage-CEWJy_a-.js.br +0 -0
- package/dist/assets/HomePage-DI-dB684.js.br +0 -0
- package/dist/assets/InputField-CiDxftEt.js.br +0 -0
- package/dist/assets/LastSeen-DQP5qZTT.js.br +0 -0
- package/dist/assets/LogsPage-C9_WtqUF.js.br +0 -0
- package/dist/assets/Lqi-DcPc55r4.js.br +0 -0
- package/dist/assets/NetworkPage-CaPQkFGO.js.br +0 -0
- package/dist/assets/OtaPage-DLGAq1H9.js.br +0 -0
- package/dist/assets/PowerSource-Do_AMydO.js.br +0 -0
- package/dist/assets/RawNetworkData-Dod9XYkB.js.br +0 -0
- package/dist/assets/RawNetworkMap-DQYtASpr.js.br +0 -0
- package/dist/assets/RecallRemove-BpIiOBsV.js.br +0 -0
- package/dist/assets/Reporting-C7ICrJmW.js.br +0 -0
- package/dist/assets/Scene-ConFr5Sy.js +0 -1
- package/dist/assets/Scene-ConFr5Sy.js.br +0 -0
- package/dist/assets/SelectField-DsW6CGZB.js.br +0 -1
- package/dist/assets/Settings-j-Qu32ok.js.br +0 -0
- package/dist/assets/SettingsList-kg9AVkQO.js.br +0 -0
- package/dist/assets/SettingsPage-ClmgBRGO.js.br +0 -0
- package/dist/assets/State-DwO5NWpi.js.br +0 -0
- package/dist/assets/Table-BzzHPQHt.js.br +0 -0
- package/dist/assets/TextareaField-bR1CLeha.js.br +0 -0
- package/dist/assets/Tools-BavvKF4S.js.br +0 -0
- package/dist/assets/TouchlinkPage-B7tLnS3m.js.br +0 -0
- package/dist/assets/VendorLink-C4yRCmCp.js.br +0 -0
- package/dist/assets/_createCompounder-B35o_eDD.js.br +0 -0
- package/dist/assets/capitalize-25MKEfyu.js.br +0 -0
- package/dist/assets/index-BXfBkE5R.js.br +0 -0
- package/dist/assets/index-CflX8yCT.js.br +0 -0
- package/dist/assets/index-DzbKo1OE.css +0 -1
- package/dist/assets/index-DzbKo1OE.css.br +0 -0
- package/dist/assets/jszip.min-C-j6N8_H.js.br +0 -0
- package/dist/assets/snakeCase-CK3F3A-s.js +0 -1
- package/dist/assets/snakeCase-CK3F3A-s.js.br +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Zigbee2MQTT WindFront
|
|
2
2
|
|
|
3
|
+
[](https://npmjs.org/package/zigbee2mqtt-windfront)
|
|
4
|
+
[](https://github.com/Nerivec/zigbee2mqtt-windfront/actions/workflows/ci.yml)
|
|
5
|
+
[](https://github.com/Nerivec/zigbee2mqtt-windfront/actions/workflows/github-code-scanning/codeql)
|
|
6
|
+
|
|
3
7
|
A frontend UI for [Zigbee2MQTT](https://github.com/Koenkk/zigbee2mqtt) using [tailwindcss](https://tailwindcss.com/) & [daisyui](https://daisyui.com).
|
|
4
8
|
|
|
5
9
|
> Based on https://github.com/nurikk/zigbee2mqtt-frontend
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as g,b as h,j as e,L as u,a as b}from"./index-
|
|
1
|
+
import{r as g,b as h,j as e,L as u,a as b}from"./index-CwJt2ZPU.js";import{s as p}from"./snakeCase-E1FSY3OI.js";import"./_createCompounder-CG6wppeM.js";const k="1.0.1",j={version:k};function m({name:t,data:s}){const n=[],{t:d}=h("stats");for(const r in s){const i=s[r];n.push(e.jsx("li",{children:e.jsxs(u,{to:"#",children:[r,": ",i]})},r))}return e.jsx("li",{children:e.jsxs("details",{children:[e.jsx("summary",{children:d(t)}),e.jsx("ul",{children:n})]})})}const f=g.memo(t=>{const{devices:s}=t,{t:n}=h(["stats","zigbee"]),d=g.useMemo(()=>{const r={},i={},c={},l={};for(const a of s){if(a.type==="Coordinator")continue;const o=a.model_id||n("zigbee:unknown"),v=a.manufacturer||n("zigbee:unknown"),x=n(`zigbee:${p(a.power_source||"unknown")}`);r[n(a.type)]=(r[n(a.type)]||0)+1,i[x]=(i[x]||0)+1,c[o]=(c[o]||0)+1,l[v]=(l[v]||0)+1}return e.jsxs(e.Fragment,{children:[e.jsx(m,{name:"byType",data:r}),e.jsx(m,{name:"byPowerSource",data:i}),e.jsx(m,{name:"byModel",data:c}),e.jsx(m,{name:"byVendor",data:l})]})},[s,n]);return e.jsxs("ul",{children:[e.jsx("li",{children:e.jsxs(u,{to:"#",children:[n("total")," ",s.length-1]})}),d]})});function y(){const{t}=h("settings"),s=b(o=>o.bridgeInfo),n=b(o=>o.devices),r=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/${j.version}`,children:j.version}),l=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",children:r}),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",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",children:l})]}),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",children:a})]})]}),e.jsx("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("coordinator")}),e.jsx("div",{className:"stat-value",children:s.coordinator.type}),e.jsxs("div",{className:"stat-desc flex flex-col gap-2 items-center",children:[e.jsx("span",{className:"badge badge-primary",title:t("coordinator_ieee_address"),children:s.coordinator.ieee_address}),e.jsxs("span",{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(f,{devices:n})]})})})]})}export{y as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as v,al as d,j as e,I as b,F as l,am as j,g as f,B as p,w as x,x as g,r as h}from"./index-
|
|
1
|
+
import{b as v,al as d,j as e,I as b,F as l,am as j,g as f,B as p,w as x,x as g,r as h}from"./index-CwJt2ZPU.js";import{D as w,R as D}from"./DeviceControlEditName-DJowO9Oo.js";function C(t){var m;const{device:i,state:n,renameDevice:o,configureDevice:s,interviewDevice:r,removeDevice:u}=t,{t:a}=v(["zigbee","common"]),c=i.interview_state===d.InProgress||i.interview_state===d.Pending||n&&((m=n.update)==null?void 0:m.state)==="updating";return e.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[e.jsx(w,{name:i.friendly_name,renameDevice:o,homeassistantEnabled:t.homeassistantEnabled,style:"btn-primary join-item btn-square"}),e.jsx(b,{className:"btn 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:j})}),e.jsx(b,{className:"btn 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(p,{onClick:async()=>await x.show(D,{device:i,removeDevice:u}),className:"btn btn-error join-item btn-square",title:a("remove_device"),children:e.jsx(l,{icon:g})})]})}const N=h.memo(t=>{const{t:i}=v(["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-ping",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{N as A,C as D};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
5 ��ۥ�_ ��'���!�Ug�-S���م���V�9W�*��L7��=p�]l��2/6x�T՛�1UE!��D%K���Eč@�P�ӀB��Hכs��������_ֶ�G&�z��X�D��+qצb�X�0v�=�k���_�%�̾#ǻ��5�Jj'��dv��&!p(HDg��aZNf��Y��XϻD����D�,�6��1�M\�;����g��T+b(C�?o.T8U�_؊O:�8К@t[�oaרx��Iv��H-�%��gO�7��N���N��k[\��Ӈ��F���!ڥ�=X�������-�$&��πĖl�+"� �A�?#�N6��Q� r#)A��ZEC���+����1���Y �
|
|
2
|
+
y�.����@P��l��Y8�Q.�:�F���"x�C�*��HR��Ɓ'䭏͇�W��a��
|
|
3
|
+
�fU�oC�t���
|
|
4
|
+
�A��pHfܩ������R��ؕ;YQ8%��W��Qi�;�������~��� �y�F�f�J�]�Nr`\�߸�D^^����S�7j/�Ju�D���L�bc����klq���9ԅ;w�g�0MN�6���NJ��C�wG)
|
|
5
|
+
FP�y�g����w'�|֦��%C}B�Ą(�?DXBLj�,�a$J1�����C���������Lcc�$:a�nat&��aN�U��n�W�2�t��_�:s����wv�g@B%���B ���m�=bi_tC�+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,j as s,W as D,b as I,ad as A,ae as k,B as y,F as B,i as O,af as P,a as E}from"./index-
|
|
1
|
+
import{r as l,j as s,W as D,b as I,ad as A,ae as k,B as y,F as B,i as O,af as P,a as E}from"./index-CwJt2ZPU.js";import{D as T}from"./DevicePicker-DxCWDQnp.js";import{E as S}from"./EndpointPicker-VM2TEDAs.js";import"./SelectField-pi0T7PIM.js";const F=l.memo(o=>{const{clusters:n,onChange:a,label:d,value:t,disabled:e}=o,p=l.useCallback(r=>{const{checked:j,name:_}=r.target;let h=[...t];j?h.push(_):h=h.filter(v=>v!==_),a(h)},[a,t]),u=l.useMemo(()=>Array.from(n).sort((r,j)=>r.toString().localeCompare(j.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:[d&&s.jsx("legend",{className:"fieldset-legend",children:d}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:u})]})}),U=(o,n,a)=>{const{target:d}=o;return d.type==="group"?a.find(t=>t.id===d.id):n.find(t=>t.ieee_address===d.ieee_address)},V=l.memo(o=>{const{devices:n,groups:a,device:d,rule:t}=o,[e,p]=l.useState({rule:t}),{sendMessage:u}=l.useContext(D),{t:r}=I(["common","zigbee"]);l.useEffect(()=>{p({rule:t})},[t]);const j=l.useCallback(i=>{e.rule.source.endpoint=i,p({rule:e.rule})},[e.rule]),_=l.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]),h=l.useCallback(i=>{e.rule.target.type==="endpoint"&&(e.rule.target.endpoint=i,e.rule.clusters=[],p({rule:e.rule}))},[e.rule]),v=l.useCallback(i=>{e.rule.clusters=i,p({rule:e.rule})},[e.rule]),N=l.useCallback(async i=>{let m="",g;const{target:c}=e.rule;if(c.type==="group"){const x=a.find(C=>C.id===c.id);if(x)m=x.id;else{console.error("Target group does not exist:",c.id);return}}else if(c.type==="endpoint"){const x=n.find(C=>C.ieee_address===c.ieee_address);if(x)m=x.ieee_address,x.type!=="Coordinator"&&(g=c.endpoint);else{console.error("Target device does not exist:",c.ieee_address);return}}const b={from:d.ieee_address,from_endpoint:e.rule.source.endpoint,to:m,to_endpoint:g,clusters:e.rule.clusters};i==="Bind"?await u("bridge/request/device/bind",b):await u("bridge/request/device/unbind",b)},[d,e.rule,u,n,a]),$=l.useMemo(()=>k(d),[d]),f=U(e.rule,n,a),M=l.useMemo(()=>k(f),[f]),R=l.useMemo(()=>{const i=new Set(e.rule.clusters),m=d.endpoints[e.rule.source.endpoint],g=e.rule.target.type==="endpoint"&&e.rule.target.endpoint!=null?f==null?void 0:f.endpoints[e.rule.target.endpoint]:void 0,c=e.rule.target.type==="group"||(f==null?void 0:f.type)==="Coordinator";if(m&&(g||c))for(const b of[...m.clusters.input,...m.clusters.output])if(c)i.add(b);else{const x=m.clusters.input.includes(b)&&(g==null?void 0:g.clusters.output.includes(b)),C=m.clusters.output.includes(b)&&(g==null?void 0:g.clusters.input.includes(b));(x||C||c)&&i.add(b)}return i},[d.endpoints,e,f]),w=l.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:j}),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:h}):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-vertical lg:join-horizontal",children:[s.jsxs(y,{item:"Bind",disabled:!w,title:r("bind"),className:"btn btn-primary join-item",onClick:N,children:[s.jsx(B,{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(B,{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 d=o.endpoints[a];for(const t of d.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 L(o){const{device:n}=o,a=E(u=>u.devices),d=E(u=>u.groups),[t,e]=l.useState({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:n.ieee_address,endpoint:""},clusters:[]}),p=l.useMemo(()=>z(n),[n]);return l.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:d,device:n,devices:a},q(u)))})}export{L as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as r,j as s}from"./index-
|
|
1
|
+
import{a as r,j as s}from"./index-CwJt2ZPU.js";function l(){const e=r(n=>n.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{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,j as e}from"./index-
|
|
1
|
+
import{r,j as e}from"./index-CwJt2ZPU.js";const o=r.memo(s=>{const{type:i,label:a,detail:l,onChange:t,...c}=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:t,...c}),l]}):e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:t,...c})]})});export{o 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-CwJt2ZPU.js";import{S as g}from"./SelectField-pi0T7PIM.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,ag as d,ah as x}from"./index-
|
|
1
|
+
import{b as a,r as u,j as s,F as c,ag as d,ah as x}from"./index-CwJt2ZPU.js";function p({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{p as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as g,r as p,W as D,b as w,j as a,B as C,w as E,F as _,x as N,f as A}from"./index-
|
|
1
|
+
import{a as g,r as p,W as D,b as w,j as a,B as C,w as E,F as _,x as N,f as A}from"./index-CwJt2ZPU.js";import{D as F}from"./DashboardFeatureWrapper-BPi5Syin.js";import{D as S}from"./DeviceCard-C1UuNxRA.js";import{D as k,R as T}from"./DeviceControlEditName-DJowO9Oo.js";import{D as R}from"./DebouncedInput-suZwHdPO.js";import"./Feature-b5LHKHrY.js";import"./DisplayValue-CZpYmpLD.js";import"./_createCompounder-CG6wppeM.js";import"./capitalize-fmjr8MXW.js";import"./LastSeen-CeDLL1-q.js";import"./Lqi-DBfyroIH.js";import"./PowerSource-BF7Gul0J.js";import"./snakeCase-E1FSY3OI.js";import"./DeviceImage-B6F8WQJo.js";import"./index-B5pN5VmG.js";import"./CheckboxField-CanRey3x.js";import"./InputField-C_t5k0Dv.js";const I=["schedule_","_mode","_options","_startup"],L=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient"],M=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],j=(t,r)=>{if(t){if(M.includes(t))return!0;for(const i of I)if(t.includes(i))return!1;if(L.includes(t))return!1}return!0},y=(t,r={})=>{const{property:i,name:o,access:d}=t;if("features"in t&&t.features&&t.features.length>0){const n=[],m=i?r[i]:r;for(const f of t.features){const c=y(f,m);c&&!n.some(b=>b.property===c.property)&&n.push(c)}return n.length>0||j(o)?{...t,features:n}:void 0}return j(o)?{...t}:void 0};function ee(){const t=g(e=>e.deviceStates),r=g(e=>e.bridgeInfo.config),i=g(e=>e.devices),{sendMessage:o}=p.useContext(D),{t:d}=w("zigbee"),[n,m]=p.useState(""),f=p.useCallback(async(e,l,s)=>{await o("bridge/request/device/rename",{from:e,to:l,homeassistant_rename:s,last:!1})},[o]),c=p.useCallback(async(e,l,s)=>{await o("bridge/request/device/remove",{id:e,force:l,block:s})},[o]),b=p.useMemo(()=>{var l;const e=[];for(const s of i)if(!s.disabled&&s.supported&&(!n||s.friendly_name.toLowerCase().includes(n.toLowerCase()))){const v=t[s.friendly_name]??{},h=[];if((l=s.definition)!=null&&l.exposes)for(const u of s.definition.exposes){const x=y(u,v);if(x&&(h.push(x),h.length===10))break}h.length>0&&e.push(a.jsx("ul",{className:"flex-auto basis-sm list rounded-box shadow-md",children:a.jsx(S,{features:h,device:s,deviceState:v,onChange:async u=>await o(`${s.ieee_address}/set`,u),onRead:async u=>await o(`${s.ieee_address}/get`,u),featureWrapperClass:F,lastSeenConfig:r.advanced.last_seen,children:a.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[a.jsx(k,{name:s.friendly_name,renameDevice:f,homeassistantEnabled:r.homeassistant.enabled,style:"btn-primary btn-square btn-sm join-item"}),a.jsx(C,{onClick:async()=>await E.show(T,{device:s,removeDevice:c}),className:"btn btn-error btn-square btn-sm join-item",title:d("remove_device"),children:a.jsx(_,{icon:N})})]})})},s.ieee_address))}return e},[i,t,r.advanced.last_seen,r.homeassistant.enabled,o,c,f,d,n]);return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:a.jsxs("label",{className:"input w-64",children:[a.jsx(_,{icon:A}),a.jsx(R,{className:"",type:"search",onChange:e=>m(e.toString()),placeholder:d("common:search"),value:n,disabled:b.length===0}),a.jsx("kbd",{className:"kbd kbd-sm cursor-pointer",onClick:()=>m(""),onKeyUp:e=>{e.key==="enter"&&m("")},title:d("common:clear"),children:"x"})]})}),a.jsx("div",{className:"flex flex-row flex-wrap justify-between items-stretch gap-3",children:b})]})}export{ee as default};
|
|
Binary file
|
package/dist/assets/{DashboardFeatureWrapper-PnES88Uy.js → DashboardFeatureWrapper-BPi5Syin.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,b as u,j as a,F as d}from"./index-
|
|
1
|
+
import{r as i,b as u,j as a,F as d}from"./index-CwJt2ZPU.js";import{c as p,s as x,d as f}from"./Feature-b5LHKHrY.js";const N=i.memo(c=>{const{children:m,feature:e,deviceValue:t}=c,n=e.unit,s=i.useMemo(()=>p(e.name,t,n),[n,e.name,t]),{t:r}=u(["featureNames","zigbee"]),o=e.name==="state"?e.property:e.name,l=x(f(o));return a.jsxs("div",{className:"flex flex-row items-center gap-1 mb-2",children:[a.jsx(d,{icon:s[0],fixedWidth:!0,className:s[1],...s[2]}),a.jsxs("div",{className:"grow-1",children:[r(o,{defaultValue:l}),a.jsx("span",{title:r("zigbee:endpoint"),children:e.endpoint?` (${e.endpoint})`:null})]}),a.jsx("div",{className:"shrink-1",children:m})]})});export{N as D};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,j as c}from"./index-
|
|
1
|
+
import{r as t,j as c}from"./index-CwJt2ZPU.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 g,A as p,bW as T,I as q,bX as E,bY as O,bZ as R}from"./index-
|
|
1
|
+
import{r as o,b as x,j as e,B as v,W as f,a as y,F as g,A as p,bW as T,I as q,bX as E,bY as O,bZ as R}from"./index-CwJt2ZPU.js";import{I as N}from"./InputField-C_t5k0Dv.js";import{S as w}from"./SelectField-pi0T7PIM.js";import{T as S}from"./TextareaField-B18rY5b7.js";const k=["mqtt","external_converters","external_extensions"],A=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),[l,s]=o.useState(""),[r,a]=o.useState("{}"),i=o.useMemo(()=>{if(!l)return!1;if(r!=="")try{const m=JSON.parse(r);if(typeof m!="object"||Array.isArray(m))return!1}catch{return!1}return!0},[l,r]),u=o.useCallback(async()=>{await c(l,r===""?r:JSON.parse(r))},[l,r,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(g,{icon:p,size:"2xl"}),e.jsx("a",{href:R,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:l,onChange:m=>s(m.target.value),className:"input validator w-full",required:!0}),e.jsx(S,{name:"payload",label:n("common:payload"),rows:5,value:r,onChange:m=>a(m.target.value),className:"textarea validator w-full"}),e.jsx("div",{className:"join join-vertical lg:join-horizontal mt-2",children:e.jsx(v,{onClick:u,disabled:!i,className:"btn btn-success",children:n("common:send")})})]})},M=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),l=y(t=>t.converters),[s,r]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(s||!!a.name)&&!!a.code,[s,a]),m=o.useCallback(t=>{if(t.target.value){const d=l.find(C=>C.name===t.target.value);d&&(r(d),i(d))}else r(void 0),i({name:"",code:""})},[l]),b=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),h=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),j=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(g,{icon:p,size:"2xl"}),e.jsx("a",{href:E,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")}),e.jsx("a",{href:O,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("codespace_info")})]}),e.jsxs(w,{name:"converter_name_edit",label:n("select_converter_to_edit"),onChange:m,value:(s==null?void 0:s.name)??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_converter")]}),l.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:b,value:a.name,readOnly:s!==void 0,required:!0}),e.jsx(S,{name:"converter_code",label:n("code"),rows:5,value:a.code,onChange:h,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-vertical lg:join-horizontal mt-2",children:[e.jsx(v,{onClick:j,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!s,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),l=y(t=>t.extensions),[s,r]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(s||!!a.name)&&!!a.code,[s,a]),m=o.useCallback(t=>{if(t.target.value){const d=l.find(C=>C.name===t.target.value);d&&(r(d),i(d))}else r(void 0),i({name:"",code:""})},[l]),b=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),h=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),j=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(g,{icon:p,size:"2xl"}),e.jsx("a",{href:T,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsxs(w,{name:"extension_name_edit",label:n("select_extension_to_edit"),onChange:m,value:(s==null?void 0:s.name)??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_extension")]}),l.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:b,value:a.name,readOnly:s!==void 0,required:!0}),e.jsx(S,{name:"extension_code",label:n("code"),rows:5,value:a.code,onChange:h,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-vertical lg:join-horizontal mt-2",children:[e.jsx(v,{onClick:j,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!s,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 P(){const[n,c]=o.useState(k[0]),{t:l}=x("devConsole"),s=o.useMemo(()=>{switch(n){case"mqtt":return e.jsx(A,{});case"external_converters":return e.jsx(M,{});case"external_extensions":return e.jsx(F,{})}return e.jsx(e.Fragment,{})},[n]);return e.jsxs("div",{className:"tabs tabs-border",children:[k.map(r=>e.jsx(v,{className:`tab${n===r?" tab-active":""}`,"aria-current":"page",item:r,onClick:c,children:l(r)},r)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:s})]})}export{P as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as e,a1 as W,ai as B,b as L,B as w,F as G,x as U,ae as V,W as I,a as T,L as J,aj as K,y as X,ak as Y,I as Z}from"./index-
|
|
1
|
+
import{r as s,j as e,a1 as W,ai as B,b as L,B as w,F as G,x as U,ae as V,W as I,a as T,L as J,aj as K,y as X,ak as Y,I as Z}from"./index-CwJt2ZPU.js";import{I as P}from"./InputField-C_t5k0Dv.js";import{C as R,A as H}from"./ClusterSinglePicker-CpOqo3Ro.js";import{E as Q}from"./EndpointPicker-VM2TEDAs.js";import{T as q}from"./TextareaField-B18rY5b7.js";import"./SelectField-pi0T7PIM.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([]),[j,b]=s.useState(""),{t:c}=L(["common","zigbee"]),h=s.useCallback(t=>{i(""),x([]),f(t.toString())},[]),C=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),j)},[a.ieee_address,r,d,l,j,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-vertical lg:join-horizontal",children:[e.jsxs("label",{className:"input join-item",children:[t,e.jsx(te,{value:y,attribute:t,definition:_,onChange:(z,D)=>{const E=Array.from(l),O=E.find(F=>F.attribute===z);O&&(O.value=D),x(E)}})]}),e.jsx(w,{className:"btn btn-error btn-outline join-item",item:t,onClick:z=>{const D=l.filter(E=>E.attribute!==z);x(D)},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==="",M=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:M,value:r,onChange:h,required:!0}),e.jsx(R,{label:c("cluster"),clusters:A,value:d,onChange:C,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:j,detail:`${c("optional")}. ${c("devConsole:state_property_info")}`,onChange:n})]}),S,e.jsxs("div",{className:"join join-vertical lg: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(e.Fragment,{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,j]=s.useState("{}"),{sendMessage:b}=s.useContext(I),c=T(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]),C=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(R,{label:o("zigbee:cluster"),clusters:C,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=>j(n.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{className:"join join-vertical lg:join-horizontal",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(I),{t:r}=L(["devConsole","common"]),f=T(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 me({device:u}){const a=X(),{t:p}=L(["devConsole","common"]),o=T(b=>b.lastNonDebugLog),[m,r]=s.useState(),[f,d]=s.useState(),{sendMessage:i}=s.useContext(I);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,C,g)=>{const n={read:{cluster:h,attributes:C}};g&&(n.read.state_property=g),await i(`${b}/${c}/set`,n)},[i]),x=s.useCallback(async(b,c,h,C)=>{const g={write:{cluster:h,payload:{}}};for(const n of C)g.write.payload[n.attribute]=n.value;await i(`${b}/${c}/set`,g)},[i]),j=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:j,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{me as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as p,b as j,j as s,L as o,F as f,aE as b}from"./index-
|
|
1
|
+
import{r as p,b as j,j as s,L as o,F as f,aE as b}from"./index-CwJt2ZPU.js";import{F as h,g as u}from"./Feature-b5LHKHrY.js";import{L as w}from"./LastSeen-CeDLL1-q.js";import{L as y}from"./Lqi-DBfyroIH.js";import{P as N}from"./PowerSource-BF7Gul0J.js";import{D as F}from"./DeviceImage-B6F8WQJo.js";const $=p.memo(({onChange:n,onRead:m,device:e,endpoint:r,deviceState:a,lastSeenConfig:c,features:d,featureWrapperClass:x,children:g})=>{var i;const{t}=j(["zigbee","devicePage"]);return s.jsxs(s.Fragment,{children:[s.jsxs("li",{className:"list-row grow",children:[s.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:s.jsx(F,{disabled:!1,device:e,otaState:(i=a.update)==null?void 0:i.state})}),s.jsxs("div",{children:[s.jsxs(o,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,r?` (${t("endpoint")}: ${r})`:""]}),s.jsx("div",{className:"text-xs opacity-50",children:e.description||""})]}),s.jsxs("div",{className:"list-col-wrap text-sm w-full",children:[d.map(l=>(!r||!l.endpoint||l.endpoint===r)&&s.jsx(h,{feature:l,device:e,deviceState:a,onChange:n,onRead:m,featureWrapperClass:x,minimal:!0,parentFeatures:[]},u(l))),s.jsxs("div",{className:"flex flex-row items-center gap-1 mt-3",children:[s.jsx("div",{className:"grow-1"}),s.jsx(o,{to:`/device/${e.ieee_address}/exposes`,className:"link link-secondary",title:t("devicePage:exposes"),children:s.jsx(f,{icon:b,size:"xl"})})]})]})]}),s.jsxs("li",{className:"flex flex-row flex-wrap gap-1 m-4 justify-around items-center",children:[s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("last_seen"),children:s.jsx(w,{lastSeen:a.last_seen,config:c})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("lqi"),children:s.jsx(y,{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})}),g]})]})});export{$ as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{w as h,E as j,b as f,r as m,j as e,M as _,B as i,F as p,G as k}from"./index-
|
|
1
|
+
import{w as h,E as j,b as f,r as m,j as e,M as _,B as i,F as p,G as k}from"./index-CwJt2ZPU.js";import{C as b}from"./CheckboxField-CanRey3x.js";import{I as u}from"./InputField-C_t5k0Dv.js";const D=h.create(t=>{const{device:c,removeDevice:n}=t,o=j(),{t:s}=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:o.visible,title:`${s("remove_device")} ${c.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-secondary",onClick:o.remove,children:s("common:cancel")}),e.jsx(i,{className:"btn btn-error ms-1",onClick:async()=>{o.remove(),await n(c.ieee_address,a.force,a.block)},children:s("common:delete")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(b,{label:s("force_remove"),name:"force",onChange:d,checked:a.force}),e.jsx("span",{className:"text-xs opacity-50",children:s("force_remove_notice")}),e.jsx(b,{label:s("block_join"),name:"block",onChange:d,checked:a.block})]})})}),y=h.create(t=>{const{homeassistantEnabled:c,name:n,renameDevice:o}=t,s=j(),{t:a}=f(["zigbee","common"]),[r,d]=m.useState(!1),[v,x]=m.useState(n);return m.useEffect(()=>{x(n)},[n]),e.jsx(_,{isOpen:s.visible,title:`${a("rename_device")} ${n}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-secondary",onClick:s.remove,children:a("common:cancel")}),e.jsx(i,{className:"btn btn-primary ms-1",onClick:async()=>{s.remove(),await o(n,v,r)},children:a("rename_device")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(u,{name:"friendly_name",label:a("common:friendly_name"),onChange:l=>x(l.target.value),value:v,type:"text"}),c&&e.jsx(b,{label:a("update_Home_assistant_entity_id"),name:"update_Home_assistant_entity_id",onChange:l=>d(l.target.checked),checked:r})]})})}),E=m.memo(t=>{const{homeassistantEnabled:c,name:n,renameDevice:o,style:s}=t,{t:a}=f("zigbee");return e.jsx(i,{className:`btn ${s}`,onClick:async()=>await h.show(y,{name:n,renameDevice:o,homeassistantEnabled:c}),title:a("rename_device"),children:e.jsx(p,{icon:k})})});export{E as D,D as R};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as u,F as l,V as w,r as d,b as x,al as b,bC as O,bD as S,C as P,bE as N}from"./index-
|
|
1
|
+
import{j as u,F as l,V as w,r as d,b as x,al as b,bC as O,bD as S,C as P,bE as N}from"./index-CwJt2ZPU.js";import{g as _,a as y}from"./index-B5pN5VmG.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 E(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 I(r){var e=E(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=I(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 s=new Image;t&&(s.crossOrigin=t),s.onload=function(){s.decode?s.decode().then(n).catch(o):n()},s.onerror=o,s.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 s=function(m){return t(m).then(function(){i=!0,n(m)})};e.reduce(function(f,m){return f.catch(function(){if(!i)return s(m)})},s(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,s=d.useState(!1),f=s[1],m=$(F(e)),a=m.join("");if(c[a]||(c[a]={promise:T(m,i),cache:"pending",error:null}),c[a].cache==="resolved")return{src:c[a].src,isLoading:!1,error:null};if(c[a].cache==="rejected"){if(o)throw c[a].error;return{isLoading:!1,error:c[a].error,src:void 0}}if(c[a].promise.then(function(v){c[a]=g(g({},c[a]),{},{cache:"resolved",src:v}),o||f(a)}).catch(function(v){c[a]=g(g({},c[a]),{},{cache:"rejected",error:v}),o||f(a)}),o)throw c[a].promise;return{isLoading:!0,src:void 0,error:null}}const h=d.memo(({device:r,className:e})=>{var s;const t=(s=r.definition)==null?void 0:s.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})}),k=d.memo(r=>{const{t:e}=x("zigbee"),{device:t={},disabled:i,otaState:n,className:o,noIndicator:s}=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:s?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{k as D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ac as C,w as k,E as A,b as j,r as n,j as e,M as R,B as b,F as I,G as $,a as u,W as P,L as y,aj as O,t as T}from"./index-
|
|
1
|
+
import{ac as C,w as k,E as A,b as j,r as n,j as e,M as R,B as b,F as I,G as $,a as u,W as P,L as y,aj as O,t as T}from"./index-CwJt2ZPU.js";import{r as U}from"./capitalize-fmjr8MXW.js";import{r as V}from"./_createCompounder-CG6wppeM.js";import{s as W}from"./snakeCase-E1FSY3OI.js";import{D as G}from"./DeviceControlEditName-DJowO9Oo.js";import{A as B,D as K}from"./Availability-CRIDrhlB.js";import{T as H}from"./TextareaField-B18rY5b7.js";import{D as X}from"./DeviceImage-B6F8WQJo.js";import{D as g}from"./DisplayValue-CZpYmpLD.js";import{L as J}from"./LastSeen-CeDLL1-q.js";import{M as Q,V as Y}from"./VendorLink-Bn8AGeqD.js";import{P as Z}from"./PowerSource-BF7Gul0J.js";import"./CheckboxField-CanRey3x.js";import"./InputField-C_t5k0Dv.js";import"./index-B5pN5VmG.js";var ee=U();const se=C(ee);var x,D;function ae(){if(D)return x;D=1;var d=V(),s=d(function(a,i,r){return a+(r?" ":"")+i.toLowerCase()});return x=s,x}var te=ae();const ie=C(te),re=k.create(d=>{const{device:s,setDeviceDescription:a}=d,i=A(),{t:r}=j(["zigbee","common"]),[p,v]=n.useState(s.description||"");return n.useEffect(()=>{v(s.description||"")},[s.description]),e.jsx(R,{isOpen:i.visible,title:`${r("update_description")} ${s.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"btn btn-secondary",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,p)},children:r("zigbee:save_description")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(H,{label:r("description"),name:"update_description",onChange:l=>v(l.target.value),rows:3,value:p})})})}),ne=n.memo(d=>{const{device:s,setDeviceDescription:a}=d,{t:i}=j("zigbee");return e.jsx(b,{className:`btn btn-link btn-sm${s.description?" btn-square":""}`,onClick:async()=>await k.show(re,{device:s,setDeviceDescription:a}),title:i("edit_description"),children:s.description?e.jsx(I,{icon:$}):i("edit_description")})}),ce=/\[(.*?)]\((.*?)\)/;function ye(d){var N,_;const{device:s}=d,{t:a}=j(["zigbee","availability"]),i=u(t=>t.deviceStates),r=u(t=>t.bridgeInfo.config),p=u(t=>t.availability),v=r.homeassistant.enabled,l=n.useMemo(()=>i[s.friendly_name]??{},[s.friendly_name,i]),{sendMessage:c}=n.useContext(P),h=n.useCallback(async(t,o,m)=>{await c("bridge/request/device/rename",{from:t,to:o,homeassistant_rename:m,last:void 0})},[c]),E=n.useCallback(async(t,o)=>{await c("bridge/request/device/options",{id:t,options:{description:o}})},[c]),S=n.useCallback(async t=>{await c("bridge/request/device/configure",{id:t})},[c]),L=n.useCallback(async(t,o,m)=>{await c("bridge/request/device/remove",{id:t,force:o,block:m})},[c]),q=n.useCallback(async t=>{await c("bridge/request/device/interview",{id:t})},[c]),f=(N=r.devices[s.ieee_address])==null?void 0:N.availability,M=n.useMemo(()=>{var o,m,w;const t=(o=s.definition)!=null&&o.description?ce.exec((m=s.definition)==null?void 0:m.description):void 0;if(t){const[,z,F]=t;return e.jsx(y,{target:"_blank",rel:"noopener noreferrer",to:F,className:"link link-hover",children:z})}return e.jsx(e.Fragment,{children:(w=s.definition)==null?void 0:w.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(X,{device:s,otaState:(_=l.update)==null?void 0:_.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(G,{name:s.friendly_name,renameDevice:h,homeassistantEnabled:v,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(g,{name:"supported",value:s.supported})}),!s.supported&&e.jsx("span",{className:"badge animate-bounce",children:e.jsx(y,{target:"_blank",rel:"noopener noreferrer",to:O,className:"link link-hover",children:a("how_to_add_support")})}),e.jsx("span",{className:"badge opacity-70",children:e.jsx(g,{name:"interview_state",value:`${a("interview_state")}: ${se(ie(s.interview_state))}`})})]}),e.jsxs("div",{children:[e.jsx("pre",{className:"inline",children:s.description||""}),e.jsx(ne,{device:s,setDeviceDescription:E})]}),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",children:T(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",children:e.jsx(J,{config:r.advanced.last_seen,lastSeen:l.last_seen})}),e.jsxs("div",{className:"stat-desc",children:[a("availability:availability"),": ",e.jsx(B,{availability:p[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",children:e.jsx(Z,{showLevel:!0,device:s,batteryPercent:l.battery,batteryState:l.battery_state,batteryLow:l.battery_low})}),e.jsx("div",{className:"stat-desc",children:a(W(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",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",children:s.model_id}),e.jsxs("div",{className:"stat-desc",children:[s.manufacturer," (",M,")"]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("model")}),e.jsx("div",{className:"stat-value",children:e.jsx(Q,{device:s})}),e.jsx("div",{className:"stat-desc",children:e.jsx(Y,{device:s})})]})]}),e.jsx("div",{className:"card-actions justify-end mt-2",children:e.jsx(K,{device:s,state:l,homeassistantEnabled:v,configureDevice:S,renameDevice:h,removeDevice:L,interviewDevice:q})})]})]})}export{ye 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 x,P as v,F as n,f as j,a as f,e as b,u as g,N as r,g as y,h,i as N,k as E,l as T,m as w,n as D,o as L,p as P,q as $,v as A,_ as l}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-2EyqGKNk.js","./index-CwJt2ZPU.js","./index-BB8zE-tT.css","./DevicePicker-DxCWDQnp.js","./SelectField-pi0T7PIM.js","./EndpointPicker-VM2TEDAs.js","./Clusters-CWxqlz_3.js","./DevConsole-HKbEkq5G.js","./InputField-C_t5k0Dv.js","./ClusterSinglePicker-CpOqo3Ro.js","./TextareaField-B18rY5b7.js","./DeviceInfo-YHgZjzBI.js","./capitalize-fmjr8MXW.js","./_createCompounder-CG6wppeM.js","./snakeCase-E1FSY3OI.js","./DeviceControlEditName-DJowO9Oo.js","./CheckboxField-CanRey3x.js","./Availability-CRIDrhlB.js","./DeviceImage-B6F8WQJo.js","./index-B5pN5VmG.js","./DisplayValue-CZpYmpLD.js","./LastSeen-CeDLL1-q.js","./VendorLink-Bn8AGeqD.js","./PowerSource-BF7Gul0J.js","./DeviceSettings-L5BnZTC6.js","./SettingsList-CoMEU_Fj.js","./DeviceSpecificSettings-BqkOD4QF.js","./Feature-b5LHKHrY.js","./Exposes-DusK4Z7N.js","./Groups-C2IY6j-8.js","./Reporting-Bjl0j1aN.js","./Scene-DEvlYeva.js","./RecallRemove-Bt_mgpm8.js","./DashboardFeatureWrapper-BPi5Syin.js","./State-DTwjupCm.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as t,b as p,j as e,L as x,P as v,F as n,f as j,a as f,e as b,u as g,N as r,g as y,h,i as N,k as E,l as T,m as w,n as D,o as L,p as P,q as $,v as A,_ as l}from"./index-CwJt2ZPU.js";const I=t.memo(i=>{const{devices:u,currentDevice:a,tab:m="info"}=i,[d,s]=t.useState(""),{t:c}=p("common"),_=t.useMemo(()=>u.filter(o=>o.type!=="Coordinator"&&o.friendly_name.toLowerCase().includes(d.toLowerCase())&&o.ieee_address!==(a==null?void 0:a.ieee_address)).map(o=>e.jsx("li",{children:e.jsx(x,{to:`/device/${o.ieee_address}/${m}`,onClick:()=>s(""),className:"dropdown-item",children:o.friendly_name})},o.ieee_address)),[u,a,d,m]);return e.jsxs(v,{name:"header-device-selector",buttonChildren:`${a?`${a.friendly_name} (${a.ieee_address})`:c("unknown_device")}`,dropdownStyle:"dropdown-start",children:[e.jsxs("label",{className:"input",children:[e.jsx(n,{icon:j}),e.jsx("input",{type:"search",placeholder:c("type_to_filter"),onChange:o=>s(o.target.value),value:d})]},"search"),_]})}),R=t.lazy(async()=>await l(()=>import("./Bind-2EyqGKNk.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),C=t.lazy(async()=>await l(()=>import("./Clusters-CWxqlz_3.js"),__vite__mapDeps([6,1,2]),import.meta.url)),O=t.lazy(async()=>await l(()=>import("./DevConsole-HKbEkq5G.js"),__vite__mapDeps([7,1,2,8,9,4,5,10]),import.meta.url)),S=t.lazy(async()=>await l(()=>import("./DeviceInfo-YHgZjzBI.js"),__vite__mapDeps([11,1,2,12,13,14,15,16,8,17,10,18,19,20,21,22,23]),import.meta.url)),z=t.lazy(async()=>await l(()=>import("./DeviceSettings-L5BnZTC6.js"),__vite__mapDeps([24,1,2,25,16,8,4]),import.meta.url)),V=t.lazy(async()=>await l(()=>import("./DeviceSpecificSettings-BqkOD4QF.js"),__vite__mapDeps([26,1,2,27,20,13,12]),import.meta.url)),k=t.lazy(async()=>await l(()=>import("./Exposes-DusK4Z7N.js"),__vite__mapDeps([28,1,2,27,20,13,12]),import.meta.url)),M=t.lazy(async()=>await l(()=>import("./Groups-C2IY6j-8.js"),__vite__mapDeps([29,1,2,5,4]),import.meta.url)),F=t.lazy(async()=>await l(()=>import("./Reporting-Bjl0j1aN.js"),__vite__mapDeps([30,1,2,8,9,4,5]),import.meta.url)),G=t.lazy(async()=>await l(()=>import("./Scene-DEvlYeva.js"),__vite__mapDeps([31,1,2,32,33,27,20,13,12,8,4]),import.meta.url)),B=t.lazy(async()=>await l(()=>import("./State-DTwjupCm.js"),__vite__mapDeps([34,1,2]),import.meta.url));function q(){const{t:i}=p(["devicePage","common"]),u=f(o=>o.devices),{deviceId:a,tab:m}=b(),d=g(),s=a?u.find(o=>o.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 c=({isActive:o})=>o?"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(r,{to:`/device/${a}/info`,className:c,children:[e.jsx(n,{icon:y,className:"me-2"}),i("about")]}),e.jsxs(r,{to:`/device/${a}/exposes`,className:c,children:[e.jsx(n,{icon:h,className:"me-2"}),i("exposes")]}),e.jsxs(r,{to:`/device/${a}/bind`,className:c,children:[e.jsx(n,{icon:N,className:"me-2"}),i("bind")]}),e.jsxs(r,{to:`/device/${a}/reporting`,className:c,children:[e.jsx(n,{icon:E,className:"me-2"}),i("reporting")]}),e.jsxs(r,{to:`/device/${a}/settings`,className:c,children:[e.jsx(n,{icon:T,className:"me-2"}),i("settings")]}),e.jsxs(r,{to:`/device/${a}/settings-specific`,className:c,children:[e.jsx(n,{icon:w,className:"me-2"}),i("settings_specific")]}),e.jsxs(r,{to:`/device/${a}/state`,className:c,children:[e.jsx(n,{icon:D,className:"me-2"}),i("state")]}),e.jsxs(r,{to:`/device/${a}/clusters`,className:c,children:[e.jsx(n,{icon:L,className:"me-2"}),i("clusters")]}),e.jsxs(r,{to:`/device/${a}/groups`,className:c,children:[e.jsx(n,{icon:P,className:"me-2"}),i("groups")]}),e.jsxs(r,{to:`/device/${a}/scene`,className:c,children:[e.jsx(n,{icon:$,className:"me-2"}),i("scene")]}),e.jsxs(r,{to:`/device/${a}/dev-console`,className:c,children:[e.jsx(n,{icon:A,className:"me-2"}),i("dev_console")]}),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:_})]})]})}export{q as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as p,b as v,j as o}from"./index-
|
|
1
|
+
import{r as p,b as v,j as o}from"./index-CwJt2ZPU.js";import{S as _}from"./SelectField-pi0T7PIM.js";const D=p.memo(m=>{const{t:r}=v("common"),{devices:l,value:u,label:h,onChange:a,groups:n=[],...f}=m,x=t=>{const{value:i}=t.target;if(i.startsWith("0x"))a(l.find(e=>e.ieee_address===i));else{const e=Number.parseInt(i,10);a(n.find(s=>e===s.id))}},j=p.useMemo(()=>{const t=[],i=l.map(e=>{var s,d,c;return o.jsxs("option",{title:(s=e.definition)==null?void 0:s.description,value:e.ieee_address,children:[e.friendly_name," ",(d=e.definition)!=null&&d.model?`(${(c=e.definition)==null?void 0:c.model})`:""]},e.ieee_address)});if(n!=null&&n.length){const e=n.map(s=>o.jsx("option",{value:s.id,children:s.friendly_name},s.id));t.push(o.jsx("optgroup",{label:r("groups"),children:e},"Groups")),t.push(o.jsx("optgroup",{label:r("devices"),children:i},"Devices"))}else t.push(...i);return t},[l,n,r]);return o.jsxs(_,{name:"device_picker",label:h,value:u,onChange:x,...f,children:[o.jsx("option",{value:"",disabled:!0,children:r("select_device")}),j]})});export{D};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as c,a as d,r,W as l,j as e,F as m,A as f,an as p,ao as g}from"./index-
|
|
1
|
+
import{b as c,a as d,r,W as l,j as e,F as m,A as f,an as p,ao as g}from"./index-CwJt2ZPU.js";import{S as x}from"./SettingsList-CoMEU_Fj.js";import"./CheckboxField-CanRey3x.js";import"./InputField-C_t5k0Dv.js";import"./SelectField-pi0T7PIM.js";function S({device:s}){const{t:a}=c(["settings","common"]),t=d(o=>o.bridgeInfo),{sendMessage:i}=r.useContext(l),n=r.useCallback(async o=>{await i("bridge/request/device/options",{id:s.ieee_address,options:o})},[i,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(m,{icon:f,size:"2xl"}),e.jsx("a",{href:p,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{S as default};
|
|
Binary file
|
package/dist/assets/{DeviceSpecificSettings-x-J4ToEN.js → DeviceSpecificSettings-BqkOD4QF.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as c,a as d,r,W as f,j as o}from"./index-
|
|
1
|
+
import{b as c,a as d,r,W as f,j as o}from"./index-CwJt2ZPU.js";import{F as g,a as m,g as l}from"./Feature-b5LHKHrY.js";import"./DisplayValue-CZpYmpLD.js";import"./_createCompounder-CG6wppeM.js";import"./capitalize-fmjr8MXW.js";function _({device:e}){var a,i;const{t:n}=c(["exposes"]),p=d(s=>s.bridgeInfo),{sendMessage:t}=r.useContext(f),u=r.useCallback(async s=>{await t("bridge/request/device/options",{id:e.ieee_address,options:s})},[t,e.ieee_address]);return(i=(a=e.definition)==null?void 0:a.options)!=null&&i.length?o.jsx("div",{className:"list bg-base-100",children:e.definition.options.map(s=>o.jsx(g,{feature:s,device:e,deviceState:p.config.devices[e.ieee_address]??{},onChange:u,featureWrapperClass:m,parentFeatures:[]},l(s)))}):n("empty_exposes_definition")}export{_ as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,a as g,ae as C,b as j,W as _,j as e,B as D,I as w,F as k,x as y}from"./index-
|
|
1
|
+
import{r as o,a as g,ae as C,b as j,W as _,j as e,B as D,I as w,F as k,x as y}from"./index-CwJt2ZPU.js";import{g as M,R as F,A as N}from"./RecallRemove-Bt_mgpm8.js";import{D as R}from"./DevicePicker-DxCWDQnp.js";import{E}from"./EndpointPicker-VM2TEDAs.js";import{D as A}from"./DashboardFeatureWrapper-BPi5Syin.js";import{D as G}from"./DeviceCard-C1UuNxRA.js";import"./Feature-b5LHKHrY.js";import"./DisplayValue-CZpYmpLD.js";import"./_createCompounder-CG6wppeM.js";import"./capitalize-fmjr8MXW.js";import"./InputField-C_t5k0Dv.js";import"./SelectField-pi0T7PIM.js";import"./LastSeen-CeDLL1-q.js";import"./Lqi-DBfyroIH.js";import"./PowerSource-BF7Gul0J.js";import"./snakeCase-E1FSY3OI.js";import"./DeviceImage-B6F8WQJo.js";import"./index-B5pN5VmG.js";const I=o.memo(n=>{const[i,l]=o.useState(""),[a,m]=o.useState(""),{group:c}=n,d=g(s=>s.devices),u=o.useMemo(()=>C(d.find(s=>s.ieee_address===a)),[a,d]),{t:r}=j(["groups","zigbee"]),{sendMessage:p}=o.useContext(_),t=o.useCallback(s=>{m(s.ieee_address);const v=C(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(R,{label:r("zigbee:device"),value:a,devices:d,onChange:t}),e.jsx(E,{label:r("zigbee:endpoint"),values:u,value:i,onChange:s=>l(s)})]}),e.jsx(D,{onClick:async()=>await p("bridge/request/group/members/add",{group:c.id.toString(),endpoint:i,device:a}),className:"btn btn-primary",children:r("add_to_group")})]})}),W=o.memo(n=>{const{removeDeviceFromGroup:i,groupMember:l,device:a,deviceState:m,lastSeenConfig:c,setDeviceState:d,getDeviceState:u}=n,{endpoint:r}=l,{t:p}=j(["groups","common"]),t=o.useMemo(()=>{var x;const f=[];for(const S of((x=a.definition)==null?void 0:x.exposes)??[]){const h=M(S,m);if(h&&(f.push(h),f.length===10))break}return f},[a,m]),s=o.useCallback(async f=>await d(a.ieee_address,f),[a.ieee_address,d]),v=o.useCallback(async f=>await u(a.ieee_address,f),[a.ieee_address,u]),b=o.useCallback(async()=>await i(a.ieee_address,r),[a.ieee_address,r,i]);return e.jsx(G,{features:t,device:a,endpoint:r,deviceState:m,onChange:s,onRead:v,featureWrapperClass:A,lastSeenConfig:c,children:e.jsx(w,{onClick:b,className:"btn btn-square btn-error btn-sm",title:p("remove_from_group"),modalDescription:p("common:dialog_confirmation_prompt"),modalCancelLabel:p("common:cancel"),children:e.jsx(k,{icon:y})})})}),$=o.memo(n=>{const{group:i}=n,l=g(t=>t.devices),a=g(t=>t.deviceStates),m=g(t=>t.bridgeInfo.config.advanced.last_seen),{sendMessage:c}=o.useContext(_),d=o.useCallback(async(t,s)=>await c("bridge/request/group/members/remove",{device:t,endpoint:s,group:i.id.toString()}),[c,i.id]),u=o.useCallback(async(t,s)=>{await c(`${t}/set`,s)},[c]),r=o.useCallback(async(t,s)=>{await c(`${t}/get`,s)},[c]),p=o.useMemo(()=>{const t=[];for(const s of i.members){const v=l.find(b=>b.ieee_address===s.ieee_address);v&&t.push(e.jsx("ul",{className:"flex-auto basis-sm list rounded-box shadow-md",children:e.jsx(W,{removeDeviceFromGroup:d,device:v,groupMember:s,deviceState:a[v.friendly_name]??{},lastSeenConfig:m,setDeviceState:u,getDeviceState:r})},`${s.ieee_address}-${s.endpoint}`))}return t},[i,l,m,a,d,u,r]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-between items-stretch gap-3",children:p})});function te({group:n}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4 mb-3",children:[e.jsx("div",{className:"flex-1",children:e.jsx(I,{group:n})}),e.jsx("div",{className:"flex-1",children:e.jsx(F,{target:n,deviceState:{}})}),e.jsx("div",{className:"flex-1",children:e.jsx(N,{target:n,deviceState:{}})})]}),e.jsx($,{group:n})]})}export{te as default};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,W as E,a as d,s as N,D as p,b as F,j as a,t as y,c as L,L as j,d as A}from"./index-
|
|
1
|
+
import{r,W as E,a as d,s as N,D as p,b as F,j as a,t as y,c as L,L as j,d as A}from"./index-CwJt2ZPU.js";import{A as q,D as I}from"./Availability-CRIDrhlB.js";import{D as M}from"./DeviceImage-B6F8WQJo.js";import{C as T}from"./CheckboxField-CanRey3x.js";import{T as P}from"./Table-CNH7RvaJ.js";import{L as H}from"./LastSeen-CeDLL1-q.js";import{L as V}from"./Lqi-DBfyroIH.js";import{M as K,V as z}from"./VendorLink-Bn8AGeqD.js";import{P as B}from"./PowerSource-BF7Gul0J.js";import"./DeviceControlEditName-DJowO9Oo.js";import"./InputField-C_t5k0Dv.js";import"./index-B5pN5VmG.js";import"./DebouncedInput-suZwHdPO.js";import"./DisplayValue-CZpYmpLD.js";import"./snakeCase-E1FSY3OI.js";import"./_createCompounder-CG6wppeM.js";const w=N;function le(){const{sendMessage:n}=r.useContext(E),m=d(e=>e.devices),b=d(e=>e.deviceStates),t=d(e=>e.bridgeInfo.config),v=d(e=>e.availability),[o,k]=r.useState(w.get(p,!1)),{t:l}=F(["zigbee","common","availability"]),c=r.useMemo(()=>{var s;const e=[];for(const i of m)if(i.type!=="Coordinator"&&(!o||!i.disabled)){const S=b[i.friendly_name]??{},_=(s=t.devices[i.ieee_address])==null?void 0:s.availability;e.push({device:i,state:S,availabilityState:v[i.friendly_name]??{state:"offline"},availabilityEnabledForDevice:_!=null?!!_:void 0})}return e},[m,b,t.devices,v,o]),f=r.useCallback(e=>{w.set(p,e.target.checked),k(e.target.checked)},[]),u=r.useCallback(async(e,s,i)=>{await n("bridge/request/device/rename",{from:e,to:s,homeassistant_rename:i,last:void 0})},[n]),g=r.useCallback(async e=>{await n("bridge/request/device/configure",{id:e})},[n]),x=r.useCallback(async(e,s,i)=>{await n("bridge/request/device/remove",{id:e,force:s,block:i})},[n]),h=r.useCallback(async e=>{await n("bridge/request/device/interview",{id:e})},[n]),D=r.useMemo(()=>[{id:"friendly_name",header:l("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description].join(" "),cell:({row:{original:{device:e,state:s}}})=>{var i;return a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar",children:a.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:a.jsx(M,{device:e,otaState:(i=s.update)==null?void 0:i.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx(j,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.description&&a.jsx("div",{className:"text-xs opacity-50",children:e.description}),a.jsxs("div",{className:"flex flex-row gap-1 mt-2 items-center",children:[a.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:l("power"),children:a.jsx(B,{device:e,batteryPercent:s.battery,batteryState:s.battery_state,batteryLow:s.battery_low})}),a.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:l("lqi"),children:a.jsx(V,{value:s.linkquality})})]})]})]})}},{id:"ieee_address",header:l("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,y(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(j,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address})}),a.jsxs("div",{className:"flex flex-row gap-1 mt-2",children:[a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:l("network_address_hex"),children:y(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:l("network_address_dec"),children:e.network_address})]})]})},{id:"model",header:l("model"),accessorFn:({device:e})=>{var s,i;return[(s=e.definition)==null?void 0:s.model,e.model_id,(i=e.definition)==null?void 0:i.vendor,e.manufacturer].join(" ")},cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(K,{device:e}),a.jsx("div",{className:"flex flex-row gap-1 mt-2",children:a.jsx("span",{className:"badge badge-ghost",title:l("manufacturer"),children:a.jsx(z,{device:e})})})]})},{id:"last_seen",header:l("last_seen"),accessorFn:({state:e})=>{var s;return(s=L(e.last_seen,t.advanced.last_seen))==null?void 0:s.getTime()},cell:({row:{original:{state:e}}})=>a.jsx(H,{lastSeen:e.last_seen,config:t.advanced.last_seen}),enableColumnFilter:!1},{id:"availability",header:l("availability:availability"),accessorFn:({availabilityState:e})=>e.state,cell:({row:{original:{device:e,availabilityState:s,availabilityEnabledForDevice:i}}})=>a.jsx(q,{disabled:e.disabled,availability:s,availabilityEnabledForDevice:i,availabilityFeatureEnabled:t.availability.enabled}),enableColumnFilter:!1},{id:"controls",header:()=>a.jsx(T,{name:"hide_disabled",detail:l("common:hide_disabled"),onChange:f,checked:o}),cell:({row:{original:{device:e,state:s}}})=>a.jsx(I,{device:e,state:s,homeassistantEnabled:t.homeassistant.enabled,renameDevice:u,removeDevice:x,configureDevice:g,interviewDevice:h}),enableSorting:!1,enableColumnFilter:!1}],[o,t.advanced.last_seen,t.availability.enabled,t.homeassistant.enabled,f,u,x,g,h,l]),C=r.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,last_seen:t.advanced.last_seen!=="disable",availability:t.availability.enabled||c.some(e=>e.availabilityEnabledForDevice),controls:!0}),[t.advanced.last_seen,t.availability.enabled,c]);return a.jsx(P,{id:"all-devices",columns:D,data:c,pageSizeStoreKey:A,visibleColumns:C})}export{le 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-CwJt2ZPU.js";const l=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-ping",children:e("leaking")}):e("clear");case"tamper":return t?r.jsx("span",{className:"text-error animate-ping",children:e("tampered")}):e("clear");case"supported":return e(t?"supported":"not_supported");default:return e(t?"true":"false")}}),u=n.memo(s=>{const{t}=c("values"),{value:a}=s;switch(typeof a){case"boolean":return r.jsx(l,{...s});case"undefined":return r.jsx(r.Fragment,{children:"N/A"});case"object":return r.jsx(r.Fragment,{children:a===null?t("null"):JSON.stringify(a)});case"string":return r.jsx(r.Fragment,{children:a===""?r.jsx("span",{className:"text-xs opacity-50",children:t("empty_string")}):a});default:return r.jsx(r.Fragment,{children:JSON.stringify(a)})}});export{u as D};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as n,j as e,F as o,b_ as r}from"./index-CwJt2ZPU.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 c(){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{c 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-CwJt2ZPU.js";import{S as x}from"./SelectField-pi0T7PIM.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 l,r as a,W as m,a as x,j as i}from"./index-
|
|
1
|
+
import{b as l,r as a,W as m,a as x,j as i}from"./index-CwJt2ZPU.js";import{F as f,a as g,g as _}from"./Feature-b5LHKHrY.js";import"./DisplayValue-CZpYmpLD.js";import"./_createCompounder-CG6wppeM.js";import"./capitalize-fmjr8MXW.js";function v(n){var r,o;const{device:e}=n,{t:p}=l(["exposes"]),{sendMessage:t}=a.useContext(m),d=x(s=>s.deviceStates[e.friendly_name]??{}),c=a.useCallback(async s=>{await t(`${e.ieee_address}/set`,s)},[t,e.ieee_address]),u=a.useCallback(async s=>{await t(`${e.ieee_address}/get`,s)},[t,e.ieee_address]);return(o=(r=e.definition)==null?void 0:r.exposes)!=null&&o.length?i.jsx("div",{className:"list bg-base-100",children:e.definition.exposes.map(s=>i.jsx(f,{feature:s,device:e,deviceState:d,onChange:c,onRead:u,featureWrapperClass:g,parentFeatures:[]},_(s)))}):p("empty_exposes_definition")}export{v as default};
|
|
Binary file
|