zigbee2mqtt-windfront 1.0.5 → 1.0.6
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 +2 -0
- package/dist/assets/About-CnEelo-p.js +1 -0
- package/dist/assets/About-CnEelo-p.js.br +0 -0
- package/dist/assets/{Availability-Jxv3jj-f.js → Availability-eX8lfQfx.js} +1 -1
- package/dist/assets/Availability-eX8lfQfx.js.br +0 -0
- package/dist/assets/Bind-o8FYzqyR.js +1 -0
- package/dist/assets/Bind-o8FYzqyR.js.br +0 -0
- package/dist/assets/Bridge-DtIUyQK3.js +1 -0
- package/dist/assets/Bridge-DtIUyQK3.js.br +0 -0
- package/dist/assets/{CheckboxField-aJECTtGJ.js → CheckboxField-_a_6gFF3.js} +1 -1
- package/dist/assets/CheckboxField-_a_6gFF3.js.br +0 -0
- package/dist/assets/{ClusterSinglePicker-Ckri6Ml1.js → ClusterSinglePicker-C0xsDw10.js} +1 -1
- package/dist/assets/ClusterSinglePicker-C0xsDw10.js.br +0 -0
- package/dist/assets/Clusters-BNTr3hkG.js +1 -0
- package/dist/assets/Clusters-BNTr3hkG.js.br +0 -0
- package/dist/assets/Dashboard-BS_vO7N3.js +1 -0
- package/dist/assets/Dashboard-BS_vO7N3.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-DZDafjVF.js → DashboardFeatureWrapper-Bncctj9I.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-Bncctj9I.js.br +3 -0
- package/dist/assets/{DebouncedInput-hrRL_knE.js → DebouncedInput-BLPot7Mg.js} +1 -1
- package/dist/assets/DebouncedInput-BLPot7Mg.js.br +0 -0
- package/dist/assets/DevConsole-DHHECfbv.js +1 -0
- package/dist/assets/DevConsole-DHHECfbv.js.br +0 -0
- package/dist/assets/DevConsole-ECDWDfHy.js +1 -0
- package/dist/assets/DevConsole-ECDWDfHy.js.br +0 -0
- package/dist/assets/{DeviceCard-C2NVxg8O.js → DeviceCard-CRb4NJAX.js} +1 -1
- package/dist/assets/DeviceCard-CRb4NJAX.js.br +0 -0
- package/dist/assets/{DeviceControlEditName-B_UgBTKk.js → DeviceControlEditName-B6YiCrFj.js} +1 -1
- package/dist/assets/DeviceControlEditName-B6YiCrFj.js.br +0 -0
- package/dist/assets/DeviceInfo-B6BBQZpy.js +1 -0
- package/dist/assets/DeviceInfo-B6BBQZpy.js.br +0 -0
- package/dist/assets/DevicePage-DIomA7F1.js +2 -0
- package/dist/assets/DevicePage-DIomA7F1.js.br +0 -0
- package/dist/assets/{DevicePicker-Dt0o_iaP.js → DevicePicker-D3HXeQ14.js} +1 -1
- package/dist/assets/DevicePicker-D3HXeQ14.js.br +0 -0
- package/dist/assets/DeviceSettings-Bpa_M6hS.js +1 -0
- package/dist/assets/DeviceSettings-Bpa_M6hS.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-OWRXYzH3.js +1 -0
- package/dist/assets/DeviceSpecificSettings-OWRXYzH3.js.br +0 -0
- package/dist/assets/Devices-DoUEGfhQ.js +1 -0
- package/dist/assets/Devices-DoUEGfhQ.js.br +0 -0
- package/dist/assets/DevicesPage-DO1z726A.js +1 -0
- package/dist/assets/DevicesPage-DO1z726A.js.br +0 -0
- package/dist/assets/{DisplayValue-CjZXHxIO.js → DisplayValue-VitUEjoj.js} +1 -1
- package/dist/assets/DisplayValue-VitUEjoj.js.br +0 -0
- package/dist/assets/Donate-BIW-l4zE.js +1 -0
- package/dist/assets/Donate-BIW-l4zE.js.br +0 -0
- package/dist/assets/{EndpointPicker-CX9S9S7k.js → EndpointPicker-DeJqJAPG.js} +1 -1
- package/dist/assets/EndpointPicker-DeJqJAPG.js.br +2 -0
- package/dist/assets/Exposes-DDw30MYN.js +1 -0
- package/dist/assets/Exposes-DDw30MYN.js.br +0 -0
- package/dist/assets/{Feature-DhPZqYWh.js → Feature-D7QUsVH9.js} +1 -1
- package/dist/assets/Feature-D7QUsVH9.js.br +0 -0
- package/dist/assets/Frontend-DS_kNSKc.js +1 -0
- package/dist/assets/Frontend-DS_kNSKc.js.br +0 -0
- package/dist/assets/GroupPage-BFPW652M.js +2 -0
- package/dist/assets/GroupPage-BFPW652M.js.br +0 -0
- package/dist/assets/GroupSettings-lq1P8lgr.js +1 -0
- package/dist/assets/GroupSettings-lq1P8lgr.js.br +0 -0
- package/dist/assets/Groups-csZPV_zo.js +1 -0
- package/dist/assets/Groups-csZPV_zo.js.br +0 -0
- package/dist/assets/GroupsPage-DljIMT_F.js +1 -0
- package/dist/assets/GroupsPage-DljIMT_F.js.br +0 -0
- package/dist/assets/HomePage-YI8-o4ql.js +1 -0
- package/dist/assets/HomePage-YI8-o4ql.js.br +0 -0
- package/dist/assets/{InputField-TubacR8F.js → InputField-BeSPAw7s.js} +1 -1
- package/dist/assets/InputField-BeSPAw7s.js.br +2 -0
- package/dist/assets/{LastSeen-DjUuaYXi.js → LastSeen-CKC6dVii.js} +1 -1
- package/dist/assets/LastSeen-CKC6dVii.js.br +0 -0
- package/dist/assets/LogsPage-CU53OVG0.js +1 -0
- package/dist/assets/LogsPage-CU53OVG0.js.br +0 -0
- package/dist/assets/{Lqi-BNx2QV2z.js → Lqi--o34CIaN.js} +1 -1
- package/dist/assets/Lqi--o34CIaN.js.br +0 -0
- package/dist/assets/NetworkPage-75e8wPsV.js +2 -0
- package/dist/assets/NetworkPage-75e8wPsV.js.br +0 -0
- package/dist/assets/{NumberField-B10BRlkz.js → NumberField-CenGWKiG.js} +1 -1
- package/dist/assets/NumberField-CenGWKiG.js.br +0 -0
- package/dist/assets/OtaPage-BIfDyCBa.js +1 -0
- package/dist/assets/OtaPage-BIfDyCBa.js.br +0 -0
- package/dist/assets/{PowerSource-CT5LulZX.js → PowerSource-DMP1v8Hj.js} +1 -1
- package/dist/assets/PowerSource-DMP1v8Hj.js.br +0 -0
- package/dist/assets/{RawNetworkData-uldf8APR.js → RawNetworkData-CsHA0EUW.js} +2 -2
- package/dist/assets/RawNetworkData-CsHA0EUW.js.br +0 -0
- package/dist/assets/{RawNetworkMap-CAdhahgm.js → RawNetworkMap-Dbu1KKlw.js} +2 -2
- package/dist/assets/RawNetworkMap-Dbu1KKlw.js.br +0 -0
- package/dist/assets/{RecallRemove-CLsmJI45.js → RecallRemove-C9FFSOpk.js} +1 -1
- package/dist/assets/RecallRemove-C9FFSOpk.js.br +0 -0
- package/dist/assets/Reporting-CycklZRx.js +1 -0
- package/dist/assets/Reporting-CycklZRx.js.br +0 -0
- package/dist/assets/Scene-BnOv_GcP.js +1 -0
- package/dist/assets/Scene-BnOv_GcP.js.br +0 -0
- package/dist/assets/{SelectField-CboFEeLv.js → SelectField-rhV0VUR9.js} +1 -1
- package/dist/assets/SelectField-rhV0VUR9.js.br +1 -0
- package/dist/assets/Settings-DJXqumih.js +1 -0
- package/dist/assets/Settings-DJXqumih.js.br +0 -0
- package/dist/assets/{SettingsList-BXXsCJCy.js → SettingsList-BRIQr68H.js} +1 -1
- package/dist/assets/SettingsList-BRIQr68H.js.br +0 -0
- package/dist/assets/SettingsPage-v5XX2Pgm.js +2 -0
- package/dist/assets/SettingsPage-v5XX2Pgm.js.br +0 -0
- package/dist/assets/State-BrMd6uzF.js +1 -0
- package/dist/assets/State-BrMd6uzF.js.br +0 -0
- package/dist/assets/{Table-CK8_rY6Z.js → Table-OEC1UqWW.js} +1 -1
- package/dist/assets/Table-OEC1UqWW.js.br +0 -0
- package/dist/assets/{TextareaField-Cb3faakR.js → TextareaField-DJXyoGrs.js} +1 -1
- package/dist/assets/TextareaField-DJXyoGrs.js.br +0 -0
- package/dist/assets/Tools-BSOzqbOg.js +1 -0
- package/dist/assets/Tools-BSOzqbOg.js.br +0 -0
- package/dist/assets/TouchlinkPage-ALSzb43I.js +1 -0
- package/dist/assets/TouchlinkPage-ALSzb43I.js.br +0 -0
- package/dist/assets/{VendorLink-CQWJDUO2.js → VendorLink-BCotC9rc.js} +1 -1
- package/dist/assets/VendorLink-BCotC9rc.js.br +0 -0
- package/dist/assets/{_createCompounder-COpq92ed.js → _createCompounder-BmfrG4o5.js} +1 -1
- package/dist/assets/_createCompounder-BmfrG4o5.js.br +0 -0
- package/dist/assets/{capitalize-JuEfl3u2.js → capitalize-BLdk1W85.js} +1 -1
- package/dist/assets/capitalize-BLdk1W85.js.br +0 -0
- package/dist/assets/envs-DXl2ikyY.js +1 -0
- package/dist/assets/index-BvTgMHtW.css +1 -0
- package/dist/assets/index-BvTgMHtW.css.br +0 -0
- package/dist/assets/index-DxU0bziW.js +635 -0
- package/dist/assets/index-DxU0bziW.js.br +0 -0
- package/dist/assets/{index-CUIfkU6p.js → index-i4IlTA7W.js} +1 -1
- package/dist/assets/index-i4IlTA7W.js.br +0 -0
- package/dist/assets/{jszip.min-1QgvwwzN.js → jszip.min-EyGmW6o1.js} +1 -1
- package/dist/assets/jszip.min-EyGmW6o1.js.br +0 -0
- package/dist/assets/snakeCase-CXwqbiGB.js +1 -0
- package/dist/assets/snakeCase-CXwqbiGB.js.br +0 -0
- package/dist/index.html +3 -2
- package/dist/index.html.br +0 -0
- package/package.json +6 -6
- package/dist/assets/About-Bwc-SnjR.js +0 -1
- package/dist/assets/About-Bwc-SnjR.js.br +0 -0
- package/dist/assets/Availability-Jxv3jj-f.js.br +0 -0
- package/dist/assets/Bind-CCmoXBga.js +0 -1
- package/dist/assets/Bind-CCmoXBga.js.br +0 -0
- package/dist/assets/Bridge-B00gjrw-.js +0 -1
- package/dist/assets/Bridge-B00gjrw-.js.br +0 -0
- package/dist/assets/CheckboxField-aJECTtGJ.js.br +0 -0
- package/dist/assets/ClusterSinglePicker-Ckri6Ml1.js.br +0 -0
- package/dist/assets/Clusters-C4Yp-rHe.js +0 -1
- package/dist/assets/Clusters-C4Yp-rHe.js.br +0 -0
- package/dist/assets/Dashboard-CjpyYRjt.js +0 -1
- package/dist/assets/Dashboard-CjpyYRjt.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-DZDafjVF.js.br +0 -0
- package/dist/assets/DebouncedInput-hrRL_knE.js.br +0 -0
- package/dist/assets/DevConsole-B4vldyLk.js +0 -1
- package/dist/assets/DevConsole-B4vldyLk.js.br +0 -0
- package/dist/assets/DevConsole-FoMbBemz.js +0 -1
- package/dist/assets/DevConsole-FoMbBemz.js.br +0 -0
- package/dist/assets/DeviceCard-C2NVxg8O.js.br +0 -0
- package/dist/assets/DeviceControlEditName-B_UgBTKk.js.br +0 -0
- package/dist/assets/DeviceInfo-D7K10Qfz.js +0 -1
- package/dist/assets/DeviceInfo-D7K10Qfz.js.br +0 -0
- package/dist/assets/DevicePage-BuRX-zbG.js +0 -2
- package/dist/assets/DevicePage-BuRX-zbG.js.br +0 -0
- package/dist/assets/DevicePicker-Dt0o_iaP.js.br +0 -0
- package/dist/assets/DeviceSettings-DPEQ0NWl.js +0 -1
- package/dist/assets/DeviceSettings-DPEQ0NWl.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-B5ywqTh7.js +0 -1
- package/dist/assets/DeviceSpecificSettings-B5ywqTh7.js.br +0 -0
- package/dist/assets/Devices-DAG6vs0G.js +0 -1
- package/dist/assets/Devices-DAG6vs0G.js.br +0 -0
- package/dist/assets/DevicesPage-BgcI1RZT.js +0 -1
- package/dist/assets/DevicesPage-BgcI1RZT.js.br +0 -0
- package/dist/assets/DisplayValue-CjZXHxIO.js.br +0 -0
- package/dist/assets/Donate-BI8FFOLc.js +0 -1
- package/dist/assets/Donate-BI8FFOLc.js.br +0 -0
- package/dist/assets/EndpointPicker-CX9S9S7k.js.br +0 -0
- package/dist/assets/Exposes-CZ40iv73.js +0 -1
- package/dist/assets/Exposes-CZ40iv73.js.br +0 -0
- package/dist/assets/Feature-DhPZqYWh.js.br +0 -0
- package/dist/assets/Frontend-D8k0f0AR.js +0 -1
- package/dist/assets/Frontend-D8k0f0AR.js.br +0 -0
- package/dist/assets/GroupPage-H559xYGM.js +0 -2
- package/dist/assets/GroupPage-H559xYGM.js.br +0 -0
- package/dist/assets/GroupSettings-CEzY10KG.js +0 -1
- package/dist/assets/GroupSettings-CEzY10KG.js.br +0 -0
- package/dist/assets/Groups-QvxyfbK9.js +0 -1
- package/dist/assets/Groups-QvxyfbK9.js.br +0 -0
- package/dist/assets/GroupsPage-DQRrJ45C.js +0 -1
- package/dist/assets/GroupsPage-DQRrJ45C.js.br +0 -0
- package/dist/assets/HomePage-Dqztw8Hc.js +0 -1
- package/dist/assets/HomePage-Dqztw8Hc.js.br +0 -0
- package/dist/assets/InputField-TubacR8F.js.br +0 -0
- package/dist/assets/LastSeen-DjUuaYXi.js.br +0 -0
- package/dist/assets/LogsPage-DrJ3t-Cv.js +0 -1
- package/dist/assets/LogsPage-DrJ3t-Cv.js.br +0 -0
- package/dist/assets/Lqi-BNx2QV2z.js.br +0 -0
- package/dist/assets/NetworkPage-C4sfYTKz.js +0 -2
- package/dist/assets/NetworkPage-C4sfYTKz.js.br +0 -0
- package/dist/assets/NumberField-B10BRlkz.js.br +0 -0
- package/dist/assets/OtaPage-M9j8HXqi.js +0 -1
- package/dist/assets/OtaPage-M9j8HXqi.js.br +0 -0
- package/dist/assets/PowerSource-CT5LulZX.js.br +0 -0
- package/dist/assets/RawNetworkData-uldf8APR.js.br +0 -0
- package/dist/assets/RawNetworkMap-CAdhahgm.js.br +0 -0
- package/dist/assets/RecallRemove-CLsmJI45.js.br +0 -0
- package/dist/assets/Reporting-Bo6_VF2b.js +0 -1
- package/dist/assets/Reporting-Bo6_VF2b.js.br +0 -0
- package/dist/assets/Scene-BXVtU8op.js +0 -1
- package/dist/assets/Scene-BXVtU8op.js.br +0 -0
- package/dist/assets/SelectField-CboFEeLv.js.br +0 -0
- package/dist/assets/Settings-B5wIMTA9.js +0 -1
- package/dist/assets/Settings-B5wIMTA9.js.br +0 -0
- package/dist/assets/SettingsList-BXXsCJCy.js.br +0 -0
- package/dist/assets/SettingsPage-DnvMw2Gc.js +0 -2
- package/dist/assets/SettingsPage-DnvMw2Gc.js.br +0 -0
- package/dist/assets/State--9WxnrT8.js +0 -1
- package/dist/assets/State--9WxnrT8.js.br +0 -0
- package/dist/assets/Table-CK8_rY6Z.js.br +0 -0
- package/dist/assets/TextareaField-Cb3faakR.js.br +0 -0
- package/dist/assets/Tools-DdvQNnDA.js +0 -1
- package/dist/assets/Tools-DdvQNnDA.js.br +0 -0
- package/dist/assets/TouchlinkPage-DGFmsjIH.js +0 -1
- package/dist/assets/TouchlinkPage-DGFmsjIH.js.br +0 -0
- package/dist/assets/VendorLink-CQWJDUO2.js.br +0 -0
- package/dist/assets/_createCompounder-COpq92ed.js.br +0 -0
- package/dist/assets/capitalize-JuEfl3u2.js.br +0 -0
- package/dist/assets/index-CUIfkU6p.js.br +0 -0
- package/dist/assets/index-Cs-KexR1.js +0 -635
- package/dist/assets/index-Cs-KexR1.js.br +0 -0
- package/dist/assets/index-vRya9HWu.css +0 -1
- package/dist/assets/index-vRya9HWu.css.br +0 -0
- package/dist/assets/jszip.min-1QgvwwzN.js.br +0 -0
- package/dist/assets/snakeCase-XNTmpa2i.js +0 -1
- package/dist/assets/snakeCase-XNTmpa2i.js.br +0 -0
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b_ as n}from"./index-
|
|
1
|
+
import{b_ as n}from"./index-DxU0bziW.js";const s=""+new URL("generic-zigbee-device-Dj-9sUqG.png",import.meta.url).href,a="https://www.zigbee2mqtt.io/images/devices/",o=t=>{var i;const e=n((i=t.definition)==null?void 0:i.model);return e==="NA"?s:`${a}${e}.png`};export{s as a,o as g};
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a9 as bt,aa as It}from"./index-
|
|
1
|
+
import{a9 as bt,aa as It}from"./index-DxU0bziW.js";function vt(yt){throw new Error('Could not dynamically require "'+yt+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var kt={exports:{}};/*!
|
|
2
2
|
|
|
3
3
|
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
|
|
4
4
|
<http://stuartk.com/jszip>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aa as u}from"./index-DxU0bziW.js";import{r as C}from"./_createCompounder-BmfrG4o5.js";var e,r;function i(){if(r)return e;r=1;var a=C(),s=a(function(o,n,t){return o+(t?"_":"")+n.toLowerCase()});return e=s,e}var m=i();const k=u(m);export{k as s};
|
|
Binary file
|
package/dist/index.html
CHANGED
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
<link rel="apple-touch-icon" href="./assets/apple-touch-icon-DxTaGN3y.png" sizes="150x150">
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
16
|
-
<link rel="
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-DxU0bziW.js"></script>
|
|
16
|
+
<link rel="modulepreload" crossorigin href="./assets/envs-DXl2ikyY.js">
|
|
17
|
+
<link rel="stylesheet" crossorigin href="./assets/index-BvTgMHtW.css">
|
|
17
18
|
</head>
|
|
18
19
|
|
|
19
20
|
<body>
|
package/dist/index.html.br
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee2mqtt-windfront",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"@types/file-saver": "^2.0.7",
|
|
42
42
|
"@types/json-schema": "^7.0.15",
|
|
43
43
|
"@types/lodash": "^4.17.17",
|
|
44
|
-
"@types/react": "^19.1.
|
|
44
|
+
"@types/react": "^19.1.7",
|
|
45
45
|
"@types/react-dom": "^19.1.6",
|
|
46
46
|
"@types/ws": "^8.18.1",
|
|
47
|
-
"@vitejs/plugin-react": "^4.5.
|
|
48
|
-
"@vitest/coverage-v8": "^3.2.
|
|
47
|
+
"@vitejs/plugin-react": "^4.5.2",
|
|
48
|
+
"@vitest/coverage-v8": "^3.2.3",
|
|
49
49
|
"daisyui": "^5.0.43",
|
|
50
50
|
"file-saver": "^2.0.5",
|
|
51
51
|
"i18next": "^25.2.1",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"timeago.js": "^4.0.2",
|
|
68
68
|
"typescript": "^5.8.3",
|
|
69
69
|
"vite": "^6.3.5",
|
|
70
|
-
"vite-plugin-compression2": "^
|
|
70
|
+
"vite-plugin-compression2": "^2.0.1",
|
|
71
71
|
"vitest": "^3.1.2",
|
|
72
72
|
"ws": "^8.18.2",
|
|
73
73
|
"zigbee2mqtt": "^2.4.0"
|
|
@@ -80,4 +80,4 @@
|
|
|
80
80
|
"./index.d.ts",
|
|
81
81
|
"./dist"
|
|
82
82
|
]
|
|
83
|
-
}
|
|
83
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as g,b as h,j as e,L as u,a as b}from"./index-Cs-KexR1.js";import{s as p}from"./snakeCase-XNTmpa2i.js";import"./_createCompounder-COpq92ed.js";const k="1.0.5",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"),x=a.manufacturer||n("zigbee:unknown"),v=n(`zigbee:${p(a.power_source||"unknown")}`);r[n(a.type)]=(r[n(a.type)]||0)+1,i[v]=(i[v]||0)+1,c[o]=(c[o]||0)+1,l[x]=(l[x]||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 text-xl",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 text-xl",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-xl",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 text-xl",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 text-xl",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
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as s,W as D,b as I,ab as A,ac as k,B as y,F as B,h as O,ad as P,a as E}from"./index-Cs-KexR1.js";import{D as T}from"./DevicePicker-Dt0o_iaP.js";import{E as S}from"./EndpointPicker-CX9S9S7k.js";import"./SelectField-CboFEeLv.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-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 +0,0 @@
|
|
|
1
|
-
import{a as r,j as s}from"./index-Cs-KexR1.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};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as a,r as u,j as s,F as c,ae as d,af as x}from"./index-Cs-KexR1.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 +0,0 @@
|
|
|
1
|
-
import{a as g,r as l,W as S,b as k,s as j,v as C,j as t,B as w,w as F,F as _,x as T,f as L,y as R,z as I}from"./index-Cs-KexR1.js";import{D as M}from"./DashboardFeatureWrapper-DZDafjVF.js";import{D as q}from"./DeviceCard-C2NVxg8O.js";import{D as $,R as B}from"./DeviceControlEditName-B_UgBTKk.js";import{D as U}from"./DebouncedInput-hrRL_knE.js";import"./Feature-DhPZqYWh.js";import"./DisplayValue-CjZXHxIO.js";import"./_createCompounder-COpq92ed.js";import"./capitalize-JuEfl3u2.js";import"./LastSeen-DjUuaYXi.js";import"./Lqi-BNx2QV2z.js";import"./PowerSource-CT5LulZX.js";import"./index-CUIfkU6p.js";import"./snakeCase-XNTmpa2i.js";import"./CheckboxField-aJECTtGJ.js";import"./InputField-TubacR8F.js";const W=["schedule_","_mode","_options","_startup","_type","inching_"],K=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient","power_outage_memory","power_on_behavior"],z=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],E=(a,i)=>{if(a){if(z.includes(a))return!0;for(const c of W)if(a.includes(c))return!1;if(K.includes(a))return!1}return!0},A=(a,i={})=>{const{property:c,name:o,access:d}=a;if("features"in a&&a.features&&a.features.length>0){const n=[],u=c?i[c]:i;for(const r of a.features){const p=A(r,u);p&&!n.some(b=>b.property===p.property)&&n.push(p)}return n.length>0||E(o)?{...a,features:n}:void 0}return E(o)?{...a}:void 0};function ie(){const a=g(e=>e.deviceStates),i=g(e=>e.bridgeInfo.config),c=g(e=>e.devices),{sendMessage:o}=l.useContext(S),{t:d}=k(["zigbee","settings"]),[n,u]=l.useState(""),[r,p]=l.useState(j.get(C,!1)),b=l.useCallback(async(e,m,s)=>{await o("bridge/request/device/rename",{from:e,to:m,homeassistant_rename:s,last:!1})},[o]),v=l.useCallback(async(e,m,s)=>{await o("bridge/request/device/remove",{id:e,force:m,block:s})},[o]),N=l.useCallback(e=>{j.set(C,e),p(e)},[]),x=l.useMemo(()=>{var m;const e=[];for(const s of c)if(!s.disabled&&s.supported&&(!n||s.friendly_name.toLowerCase().includes(n.toLowerCase()))){const y=a[s.friendly_name]??{},h=[];if((m=s.definition)!=null&&m.exposes)for(const f of s.definition.exposes){const D=A(f,y);if(D&&(h.push(D),h.length===10))break}h.length>0&&e.push(t.jsx("div",{className:`${r?"break-inside-avoid-column mb-3":"w-[23rem]"} card bg-base-200 rounded-box shadow-md`,children:t.jsx(q,{features:h,device:s,deviceState:y,onChange:async f=>await o(`${s.ieee_address}/set`,f),onRead:async f=>await o(`${s.ieee_address}/get`,f),featureWrapperClass:M,lastSeenConfig:i.advanced.last_seen,children:t.jsxs("div",{className:"join join-horizontal",children:[t.jsx($,{name:s.friendly_name,renameDevice:b,homeassistantEnabled:i.homeassistant.enabled,style:"btn-primary btn-square btn-sm join-item"}),t.jsx(w,{onClick:async()=>await F.show(B,{device:s,removeDevice:v}),className:"btn btn-error btn-square btn-sm join-item",title:d("remove_device"),children:t.jsx(_,{icon:T})})]})})},s.ieee_address))}return e},[c,a,i.advanced.last_seen,i.homeassistant.enabled,o,v,b,d,n,r]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:[t.jsxs("label",{className:"input w-64",children:[t.jsx(_,{icon:L}),t.jsx(U,{className:"",type:"search",onChange:e=>u(e.toString()),placeholder:d("common:search"),value:n,disabled:x.length===0}),t.jsx("kbd",{className:"kbd kbd-sm cursor-pointer",onClick:()=>u(""),onKeyUp:e=>{e.key==="enter"&&u("")},title:d("common:clear"),children:"x"})]}),t.jsx(w,{className:"btn btn-square",item:!r,onClick:N,title:`${d("settings:dashboard_column_display")}: ${r}`,children:t.jsx(_,{icon:r?R:I})})]}),t.jsx("div",{className:`${r?"columns-md":"flex flex-row flex-wrap justify-center"} gap-3 mb-3`,children:x})]})}export{ie as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,b as x,j as e,B as v,W as f,a as y,F as g,I as p,b$ as T,Q as q,c0 as E,c1 as O,c2 as R}from"./index-Cs-KexR1.js";import{I as N}from"./InputField-TubacR8F.js";import{S as w}from"./SelectField-CboFEeLv.js";import{T as S}from"./TextareaField-Cb3faakR.js";const k=["mqtt","external_converters","external_extensions"],M=()=>{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-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),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(j=>j.name===t.target.value);d&&(r(d),i(d))}else r(void 0),i({name:"",code:""})},[l]),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]),_=o.useCallback(async()=>{await c("bridge/request/converter/save",a)},[c,a]),C=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:h,value:a.name,readOnly:s!==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:_,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:C,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(j=>j.name===t.target.value);d&&(r(d),i(d))}else r(void 0),i({name:"",code:""})},[l]),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]),_=o.useCallback(async()=>{await c("bridge/request/extension/save",a)},[c,a]),C=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:h,value:a.name,readOnly:s!==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:_,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:C,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(M,{});case"external_converters":return e.jsx(A,{});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 +0,0 @@
|
|
|
1
|
-
import{r as s,j as e,$ as W,ag as B,b as L,B as w,F as G,x as U,ac as V,W as T,a as I,L as J,ah as K,A as X,ai as Q,Q as Y}from"./index-Cs-KexR1.js";import{I as P}from"./InputField-TubacR8F.js";import{C as R,A as Z}from"./ClusterSinglePicker-Ckri6Ml1.js";import{E as H}from"./EndpointPicker-CX9S9S7k.js";import{T as $}from"./TextareaField-Cb3faakR.js";import"./SelectField-CboFEeLv.js";const q=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([]),[h,b]=s.useState(""),{t:c}=L(["common","zigbee"]),C=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),h)},[a.ieee_address,r,d,l,h,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),O=E.find(F=>F.attribute===D);O&&(O.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==="",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(H,{label:c("zigbee:endpoint"),values:M,value:r,onChange:C,required:!0}),e.jsx(R,{label:c("cluster"),clusters:A,value:d,onChange:j,required:!0}),e.jsx(Z,{label:c("attribute"),value:"",cluster:d,device:a,onChange:g}),e.jsx(P,{type:"text",name:"state_property",label:c("devConsole:state_property"),value:h,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(q,{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,h]=s.useState("{}"),{sendMessage:b}=s.useContext(T),c=I(n=>n.bridgeDefinitions),C=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(R,{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($,{name:"payload",label:o("payload"),rows:3,value:x,onChange:n=>h(n.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{children:e.jsx(w,{onClick:g,disabled:!C,className:"btn btn-success",children:o("execute")})}),p&&e.jsx(q,{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($,{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=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,C,j,g)=>{const n={read:{cluster:C,attributes:j}};g&&(n.read.state_property=g),await i(`${b}/${c}/set`,n)},[i]),x=s.useCallback(async(b,c,C,j)=>{const g={write:{cluster:C,payload:{}}};for(const n of j)g.write.payload[n.attribute]=n.value;await i(`${b}/${c}/set`,g)},[i]),h=s.useCallback(()=>{a(Q(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(Y,{className:"btn btn-error",onClick:h,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
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aa as C,w as k,K as A,b as h,r as n,j as e,M as R,B as b,F as I,O as $,a as p,W as O,L as g,ah as P,t as T}from"./index-Cs-KexR1.js";import{r as U}from"./capitalize-JuEfl3u2.js";import{r as V}from"./_createCompounder-COpq92ed.js";import{s as W}from"./snakeCase-XNTmpa2i.js";import{D as K}from"./DeviceControlEditName-B_UgBTKk.js";import{A as B,D as G}from"./Availability-Jxv3jj-f.js";import{T as H}from"./TextareaField-Cb3faakR.js";import{D as X,P as J}from"./PowerSource-CT5LulZX.js";import{D as y}from"./DisplayValue-CjZXHxIO.js";import{L as Q}from"./LastSeen-DjUuaYXi.js";import{M as Y,V as Z}from"./VendorLink-CQWJDUO2.js";import"./CheckboxField-aJECTtGJ.js";import"./InputField-TubacR8F.js";import"./index-CUIfkU6p.js";var ee=U();const se=C(ee);var u,D;function ae(){if(D)return u;D=1;var d=V(),s=d(function(a,i,r){return a+(r?" ":"")+i.toLowerCase()});return u=s,u}var te=ae();const ie=C(te),re=k.create(d=>{const{device:s,setDeviceDescription:a}=d,i=A(),{t:r}=h(["zigbee","common"]),[x,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-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(H,{label:r("description"),name:"update_description",onChange:c=>v(c.target.value),rows:3,value:x})})})}),ne=n.memo(d=>{const{device:s,setDeviceDescription:a}=d,{t:i}=h("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")})}),le=/\[(.*?)]\((.*?)\)/;function we(d){var N,_;const{device:s}=d,{t:a}=h(["zigbee","availability"]),i=p(t=>t.deviceStates),r=p(t=>t.bridgeInfo.config),x=p(t=>t.availability),v=r.homeassistant.enabled,c=n.useMemo(()=>i[s.friendly_name]??{},[s.friendly_name,i]),{sendMessage:l}=n.useContext(O),j=n.useCallback(async(t,o,m)=>{await l("bridge/request/device/rename",{from:t,to:o,homeassistant_rename:m,last:void 0})},[l]),E=n.useCallback(async(t,o)=>{await l("bridge/request/device/options",{id:t,options:{description:o}})},[l]),S=n.useCallback(async t=>{await l("bridge/request/device/configure",{id:t})},[l]),L=n.useCallback(async(t,o,m)=>{await l("bridge/request/device/remove",{id:t,force:o,block:m})},[l]),q=n.useCallback(async t=>{await l("bridge/request/device/interview",{id:t})},[l]),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?le.exec((m=s.definition)==null?void 0:m.description):void 0;if(t){const[,z,F]=t;return e.jsx(g,{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:(_=c.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(K,{name:s.friendly_name,renameDevice:j,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(y,{name:"supported",value:s.supported})}),!s.supported&&e.jsx("span",{className:"badge animate-bounce",children:e.jsx(g,{target:"_blank",rel:"noopener noreferrer",to:P,className:"link link-hover",children:a("how_to_add_support")})}),e.jsx("span",{className:"badge opacity-70",children:e.jsx(y,{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 text-xl",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 text-xl",children:e.jsx(Q,{config:r.advanced.last_seen,lastSeen:c.last_seen})}),e.jsxs("div",{className:"stat-desc",children:[a("availability:availability"),": ",e.jsx(B,{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(J,{showLevel:!0,device:s,batteryPercent:c.battery,batteryState:c.battery_state,batteryLow:c.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 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," (",M,")"]})]}),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(Y,{device:s})}),e.jsx("div",{className:"stat-desc",children:e.jsx(Z,{device:s})})]})]}),e.jsx("div",{className:"card-actions justify-end mt-2",children:e.jsx(G,{device:s,state:c,homeassistantEnabled:v,configureDevice:S,renameDevice:j,removeDevice:L,interviewDevice:q})})]})]})}export{we as default};
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-CCmoXBga.js","./index-Cs-KexR1.js","./index-vRya9HWu.css","./DevicePicker-Dt0o_iaP.js","./SelectField-CboFEeLv.js","./EndpointPicker-CX9S9S7k.js","./Clusters-C4Yp-rHe.js","./DevConsole-FoMbBemz.js","./InputField-TubacR8F.js","./ClusterSinglePicker-Ckri6Ml1.js","./TextareaField-Cb3faakR.js","./DeviceInfo-D7K10Qfz.js","./capitalize-JuEfl3u2.js","./_createCompounder-COpq92ed.js","./snakeCase-XNTmpa2i.js","./DeviceControlEditName-B_UgBTKk.js","./CheckboxField-aJECTtGJ.js","./Availability-Jxv3jj-f.js","./PowerSource-CT5LulZX.js","./index-CUIfkU6p.js","./DisplayValue-CjZXHxIO.js","./LastSeen-DjUuaYXi.js","./VendorLink-CQWJDUO2.js","./DeviceSettings-DPEQ0NWl.js","./SettingsList-BXXsCJCy.js","./NumberField-B10BRlkz.js","./DeviceSpecificSettings-B5ywqTh7.js","./Feature-DhPZqYWh.js","./Exposes-CZ40iv73.js","./Groups-QvxyfbK9.js","./Reporting-Bo6_VF2b.js","./Scene-BXVtU8op.js","./RecallRemove-CLsmJI45.js","./DashboardFeatureWrapper-DZDafjVF.js","./State--9WxnrT8.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,d as b,u as g,N as r,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-Cs-KexR1.js";const I=t.memo(i=>{const{devices:u,currentDevice:a,tab:d="info"}=i,[m,s]=t.useState(""),{t:c}=p("common"),_=t.useMemo(()=>u.filter(o=>o.type!=="Coordinator"&&o.friendly_name.toLowerCase().includes(m.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}/${d}`,onClick:()=>s(""),className:"dropdown-item",children:o.friendly_name})},o.ieee_address)),[u,a,m,d]);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:m})]},"search"),_]})}),R=t.lazy(async()=>await l(()=>import("./Bind-CCmoXBga.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),C=t.lazy(async()=>await l(()=>import("./Clusters-C4Yp-rHe.js"),__vite__mapDeps([6,1,2]),import.meta.url)),O=t.lazy(async()=>await l(()=>import("./DevConsole-FoMbBemz.js"),__vite__mapDeps([7,1,2,8,9,4,5,10]),import.meta.url)),S=t.lazy(async()=>await l(()=>import("./DeviceInfo-D7K10Qfz.js"),__vite__mapDeps([11,1,2,12,13,14,15,16,8,17,10,18,19,20,21,22]),import.meta.url)),z=t.lazy(async()=>await l(()=>import("./DeviceSettings-DPEQ0NWl.js"),__vite__mapDeps([23,1,2,24,16,8,25,4]),import.meta.url)),V=t.lazy(async()=>await l(()=>import("./DeviceSpecificSettings-B5ywqTh7.js"),__vite__mapDeps([26,1,2,27,20,13,12]),import.meta.url)),k=t.lazy(async()=>await l(()=>import("./Exposes-CZ40iv73.js"),__vite__mapDeps([28,1,2,27,20,13,12]),import.meta.url)),M=t.lazy(async()=>await l(()=>import("./Groups-QvxyfbK9.js"),__vite__mapDeps([29,1,2,5,4]),import.meta.url)),F=t.lazy(async()=>await l(()=>import("./Reporting-Bo6_VF2b.js"),__vite__mapDeps([30,1,2,8,9,4,5]),import.meta.url)),G=t.lazy(async()=>await l(()=>import("./Scene-BXVtU8op.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--9WxnrT8.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:d}=b(),m=g(),s=a?u.find(o=>o.ieee_address===a):void 0;t.useEffect(()=>{s&&(d?s.type==="Coordinator"&&m("/settings/about",{replace:!0}):m(s.type==="Coordinator"?"/settings/about":`/device/${s.ieee_address}/info`,{replace:!0}))},[d,s,m]);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(d){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,d,i]);return e.jsxs(e.Fragment,{children:[e.jsx(I,{devices:u,currentDevice:s,tab:d}),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
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as c,a as d,r,W as l,j as e,F as m,I as f,al as p,am as g}from"./index-Cs-KexR1.js";import{S as x}from"./SettingsList-BXXsCJCy.js";import"./CheckboxField-aJECTtGJ.js";import"./InputField-TubacR8F.js";import"./NumberField-B10BRlkz.js";import"./SelectField-CboFEeLv.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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as c,a as d,r,W as f,j as o}from"./index-Cs-KexR1.js";import{F as g,a as m,g as l}from"./Feature-DhPZqYWh.js";import"./DisplayValue-CjZXHxIO.js";import"./_createCompounder-COpq92ed.js";import"./capitalize-JuEfl3u2.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 +0,0 @@
|
|
|
1
|
-
import{r as o,a as f,ac as C,b as j,W as _,j as e,B as D,Q as w,F as k,x as y}from"./index-Cs-KexR1.js";import{g as M,R as F,A as N}from"./RecallRemove-CLsmJI45.js";import{D as R}from"./DevicePicker-Dt0o_iaP.js";import{E}from"./EndpointPicker-CX9S9S7k.js";import{D as A}from"./DashboardFeatureWrapper-DZDafjVF.js";import{D as G}from"./DeviceCard-C2NVxg8O.js";import"./Feature-DhPZqYWh.js";import"./DisplayValue-CjZXHxIO.js";import"./_createCompounder-COpq92ed.js";import"./capitalize-JuEfl3u2.js";import"./InputField-TubacR8F.js";import"./SelectField-CboFEeLv.js";import"./LastSeen-DjUuaYXi.js";import"./Lqi-BNx2QV2z.js";import"./PowerSource-CT5LulZX.js";import"./index-CUIfkU6p.js";import"./snakeCase-XNTmpa2i.js";const I=o.memo(n=>{const[i,l]=o.useState(""),[a,m]=o.useState(""),{group:c}=n,d=f(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 g=[];for(const S of((x=a.definition)==null?void 0:x.exposes)??[]){const h=M(S,m);if(h&&(g.push(h),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 u(a.ieee_address,g),[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=f(t=>t.devices),a=f(t=>t.deviceStates),m=f(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("div",{className:"w-[23rem] card bg-base-200 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-center gap-3",children:p})});function se({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(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{se as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,W as q,a as m,s as j,D as k,b as A,j as a,t as C,c as M,L as D}from"./index-Cs-KexR1.js";import{A as I,D as T}from"./Availability-Jxv3jj-f.js";import{D as B,P as H}from"./PowerSource-CT5LulZX.js";import{C as F}from"./CheckboxField-aJECTtGJ.js";import{T as P}from"./Table-CK8_rY6Z.js";import{L as O}from"./LastSeen-DjUuaYXi.js";import{L as V}from"./Lqi-BNx2QV2z.js";import{M as R,V as W}from"./VendorLink-CQWJDUO2.js";import"./DeviceControlEditName-B_UgBTKk.js";import"./InputField-TubacR8F.js";import"./index-CUIfkU6p.js";import"./snakeCase-XNTmpa2i.js";import"./_createCompounder-COpq92ed.js";import"./DebouncedInput-hrRL_knE.js";import"./DisplayValue-CjZXHxIO.js";function le(){const{sendMessage:r}=n.useContext(q),u=m(e=>e.devices),f=m(e=>e.deviceStates),t=m(e=>e.bridgeInfo.config),v=m(e=>e.availability),[d,N]=n.useState(j.get(k,!1)),[c,S]=n.useState(!1),{t:l}=A(["zigbee","common","availability"]),b=n.useMemo(()=>{var s;const e=[];for(const i of u)if(i.type!=="Coordinator"&&(!d||!i.disabled)){const o=f[i.friendly_name]??{},w=(s=t.devices[i.ieee_address])==null?void 0:s.availability;if(c){if(i.power_source!=="Battery")continue;if("battery"in o){if(o.battery>=20)continue}else if("battery_state"in o){if(o.battery_state!=="low")continue}else if("battery_low"in o){if(!o.battery_low)continue}else continue}e.push({device:i,state:o,availabilityState:v[i.friendly_name]??{state:"offline"},availabilityEnabledForDevice:w!=null?!!w:void 0})}return e},[u,f,t.devices,v,d,c]),g=n.useCallback(e=>{j.set(k,e.target.checked),N(e.target.checked)},[]),y=n.useCallback(e=>{S(e.target.checked)},[]),h=n.useCallback(async(e,s,i)=>{await r("bridge/request/device/rename",{from:e,to:s,homeassistant_rename:i,last:void 0})},[r]),x=n.useCallback(async e=>{await r("bridge/request/device/configure",{id:e})},[r]),_=n.useCallback(async(e,s,i)=>{await r("bridge/request/device/remove",{id:e,force:s,block:i})},[r]),p=n.useCallback(async e=>{await r("bridge/request/device/interview",{id:e})},[r]),L=n.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(B,{device:e,otaState:(i=s.update)==null?void 0:i.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx(D,{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.jsx("div",{className:"flex flex-row gap-1 mt-2 items-center",children:a.jsx("span",{className:"badge badge-soft badge-sm badge-ghost cursor-default",title:l("power"),children:a.jsx(H,{device:e,batteryPercent:s.battery,batteryState:s.battery_state,batteryLow:s.battery_low,showLevel:!0})})})]})]})}},{id:"ieee_address",header:l("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,C(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(D,{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:l("network_address_hex"),children:C(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:l("network_address_dec"),children:e.network_address})]})]}),sortingFn:(e,s)=>e.original.device.ieee_address.localeCompare(s.original.device.ieee_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(R,{device:e}),a.jsx("div",{className:"flex flex-row gap-1",children:a.jsx("span",{className:"badge badge-ghost badge-sm",title:l("manufacturer"),children:a.jsx(W,{device:e})})})]})},{id:"lqi",header:l("lqi"),accessorFn:({state:e})=>e.linkquality,cell:({row:{original:{state:e}}})=>a.jsx(V,{value:e.linkquality}),enableColumnFilter:!1},{id:"last_seen",header:l("last_seen"),accessorFn:({state:e})=>{var s;return(s=M(e.last_seen,t.advanced.last_seen))==null?void 0:s.getTime()},cell:({row:{original:{state:e}}})=>a.jsx(O,{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(I,{disabled:e.disabled,availability:s,availabilityEnabledForDevice:i,availabilityFeatureEnabled:t.availability.enabled}),enableColumnFilter:!1},{id:"controls",header:()=>a.jsxs(a.Fragment,{children:[a.jsx(F,{name:"battery_low_only",detail:l("common:battery_low_only"),onChange:y,checked:c,className:"checkbox checkbox-sm"}),a.jsx(F,{name:"hide_disabled",detail:l("common:hide_disabled"),onChange:g,checked:d,className:"checkbox checkbox-sm"})]}),cell:({row:{original:{device:e,state:s}}})=>a.jsx(T,{device:e,state:s,homeassistantEnabled:t.homeassistant.enabled,renameDevice:h,removeDevice:_,configureDevice:x,interviewDevice:p}),enableSorting:!1,enableColumnFilter:!1}],[d,c,t.advanced.last_seen,t.availability.enabled,t.homeassistant.enabled,g,y,h,_,x,p,l]),E=n.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,last_seen:t.advanced.last_seen!=="disable",availability:t.availability.enabled||b.some(e=>e.availabilityEnabledForDevice),controls:!0}),[t.advanced.last_seen,t.availability.enabled,b]);return a.jsx(P,{id:"all-devices",columns:L,data:b,visibleColumns:E})}export{le as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as n,j as e,F as o,c3 as r}from"./index-Cs-KexR1.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
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as l,r as a,W as m,a as x,j as i}from"./index-Cs-KexR1.js";import{F as f,a as g,g as _}from"./Feature-DhPZqYWh.js";import"./DisplayValue-CjZXHxIO.js";import"./_createCompounder-COpq92ed.js";import"./capitalize-JuEfl3u2.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
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as P,r as n,s as t,H as g,v,bP as h,bQ as f,C as E,aG as b,aH as w,aI as N,aJ as j,bR as H,bS as F,D as q,bT as W,bU as G,j as e,Q as k}from"./index-Cs-KexR1.js";import{C as B}from"./CheckboxField-aJECTtGJ.js";import{I as T}from"./InputField-TubacR8F.js";import{N as y}from"./NumberField-B10BRlkz.js";import{S as o}from"./SelectField-CboFEeLv.js";function z(){const{t:s}=P(["settings","navbar","network","common"]),[r,S]=n.useState(t.get(g,"devices")),[l,D]=n.useState(t.get(v,!1)),[i,M]=n.useState(t.get(h,254)),[c,C]=n.useState(t.get(f,4)),[d,A]=n.useState(t.get(E,"data")),[m,K]=n.useState(t.get(b,"forceDirected2d")),[u,O]=n.useState(t.get(w,"all")),[p,Y]=n.useState(t.get(N,-750)),[_,L]=n.useState(t.get(j,50));n.useEffect(()=>{t.set(g,r)},[r]),n.useEffect(()=>{t.set(v,l)},[l]),n.useEffect(()=>{t.set(h,i)},[i]),n.useEffect(()=>{t.set(f,c)},[c]),n.useEffect(()=>{t.set(E,d)},[d]),n.useEffect(()=>{t.set(b,m)},[m]),n.useEffect(()=>{t.set(w,u)},[u]),n.useEffect(()=>{t.set(N,p)},[p]),n.useEffect(()=>{t.set(j,_)},[_]);const I=n.useCallback(()=>{t.remove(H),t.remove(g),t.remove(v),t.remove(h),t.remove(f),t.remove(E),t.remove(b),t.remove(w),t.remove(N),t.remove(j),t.remove(F),t.remove(q),window.location.reload()},[]),R=n.useCallback(()=>{t.remove(W),t.remove(G),window.location.reload()},[]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-vertical sm:alert-horizontal",children:[s("frontend_notice"),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(k,{className:"btn btn-sm btn-error",onClick:I,title:s("reset_settings"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_settings")}),e.jsx(k,{className:"btn btn-sm btn-error",onClick:R,title:s("reset_auth"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_auth")})]})]}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-4 mt-3",children:[e.jsxs(o,{name:"homepage",label:s("homepage"),onChange:a=>!a.target.validationMessage&&S(a.target.value),value:r,required:!0,children:[e.jsx("option",{value:"devices",children:s("navbar:devices")}),e.jsx("option",{value:"dashboard",children:s("navbar:dashboard")})]}),e.jsx(B,{name:"dashboard_column_display",label:s("dashboard_column_display"),checked:l,onChange:a=>D(a.target.checked)}),e.jsx(T,{type:"number",name:"permit_join_time",label:s("permit_join_time"),min:10,max:254,required:!0,value:i,onChange:a=>!a.target.validationMessage&&!!a.target.value&&M(a.target.valueAsNumber)}),e.jsx(T,{type:"number",name:"max_on_screen_notifications",label:s("max_on_screen_notifications"),min:1,max:5,required:!0,value:c,onChange:a=>!a.target.validationMessage&&!!a.target.value&&C(a.target.valueAsNumber)})]}),e.jsx("h2",{className:"text-lg mt-2",children:s("network_raw")}),e.jsx("div",{className:"flex flex-row flex-wrap gap-4",children:e.jsxs(o,{name:"network:display_type",label:s("network:display_type"),onChange:a=>!a.target.validationMessage&&A(a.target.value),value:d,required:!0,children:[e.jsx("option",{value:"data",children:s("network:data")}),e.jsx("option",{value:"map",children:s("network:map")})]})}),e.jsx("h2",{className:"text-lg mt-2",children:s("network_map")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-4",children:[e.jsxs(o,{name:"network:layout_type",label:s("network:layout_type"),onChange:a=>!a.target.validationMessage&&K(a.target.value),value:m,required:!0,children:[e.jsx("option",{value:"forceDirected2d",children:"forceDirected2d"}),e.jsx("option",{value:"forceDirected3d",children:"forceDirected3d"}),e.jsx("option",{value:"radialOut2d",children:"radialOut2d"}),e.jsx("option",{value:"radialOut3d",children:"radialOut3d"})]}),e.jsxs(o,{name:"network:label_type",label:s("network:label_type"),onChange:a=>!a.target.validationMessage&&O(a.target.value),value:u,required:!0,children:[e.jsx("option",{value:"all",children:"all"}),e.jsx("option",{value:"auto",children:"auto"}),e.jsx("option",{value:"none",children:"none"}),e.jsx("option",{value:"nodes",children:"nodes"}),e.jsx("option",{value:"edges",children:"edges"})]}),e.jsx("div",{className:"min-w-xs",children:e.jsx(y,{name:"network:node_strength",label:s("network:node_strength"),onSubmit:(a,x)=>x&&typeof a=="number"&&Y(a),min:-1e3,max:-100,step:10,defaultValue:p})}),e.jsx("div",{className:"min-w-xs",children:e.jsx(y,{name:"network:link_distance",label:s("network:link_distance"),onSubmit:(a,x)=>x&&typeof a=="number"&&L(a),min:10,max:200,step:5,defaultValue:_})})]})]})}export{z as default};
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Devices-DAG6vs0G.js","./index-Cs-KexR1.js","./index-vRya9HWu.css","./RecallRemove-CLsmJI45.js","./DashboardFeatureWrapper-DZDafjVF.js","./Feature-DhPZqYWh.js","./DisplayValue-CjZXHxIO.js","./_createCompounder-COpq92ed.js","./capitalize-JuEfl3u2.js","./InputField-TubacR8F.js","./SelectField-CboFEeLv.js","./DevicePicker-Dt0o_iaP.js","./EndpointPicker-CX9S9S7k.js","./DeviceCard-C2NVxg8O.js","./LastSeen-DjUuaYXi.js","./Lqi-BNx2QV2z.js","./PowerSource-CT5LulZX.js","./index-CUIfkU6p.js","./snakeCase-XNTmpa2i.js","./GroupSettings-CEzY10KG.js","./SettingsList-BXXsCJCy.js","./CheckboxField-aJECTtGJ.js","./NumberField-B10BRlkz.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r,b as g,j as e,L as f,P as j,F as m,f as v,u as b,d as h,a as _,N as p,o as N,k as w,_ as x}from"./index-Cs-KexR1.js";const y=r.memo(l=>{const{groups:n,currentGroup:s,tab:o="devices"}=l,[c,d]=r.useState(""),{t}=g("common"),u=r.useMemo(()=>n.filter(a=>a.friendly_name.toLowerCase().includes(c.toLowerCase())&&a.id!==(s==null?void 0:s.id)).map(a=>e.jsx("li",{children:e.jsx(f,{to:`/group/${a.id}/${o}`,onClick:()=>d(""),className:"dropdown-item",children:a.friendly_name})},a.id)),[n,c,s,o]);return e.jsxs(j,{name:"header-group-selector",buttonChildren:`${s?`#${s.id} - ${s.friendly_name}`:t("unknown_group")}`,dropdownStyle:"dropdown-start",children:[e.jsxs("label",{className:"input",children:[e.jsx(m,{icon:v}),e.jsx("input",{type:"search",placeholder:t("type_to_filter"),onChange:a=>d(a.target.value),value:c})]},"search"),u]})}),T=r.lazy(async()=>await x(()=>import("./Devices-DAG6vs0G.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]),import.meta.url)),$=r.lazy(async()=>await x(()=>import("./GroupSettings-CEzY10KG.js"),__vite__mapDeps([19,1,2,20,21,9,22,10]),import.meta.url));function E(){const l=b(),{t:n}=g(["groups","common"]),{groupId:s,tab:o}=h(),c=_(i=>i.groups),d=Number.parseInt(s,10),t=s?c.find(i=>i.id===d):void 0;r.useEffect(()=>{!o&&t&&l(`/group/${t.id}/devices`,{replace:!0})},[o,t,l]);const u=({isActive:i})=>i?"tab tab-active":"tab",a=r.useMemo(()=>{if(!t)return e.jsx("div",{className:"flex-auto justify-center items-center",children:n("common:unknown_group")});switch(o){case"devices":return e.jsx(T,{group:t});case"settings":return e.jsx($,{group:t})}},[o,t,n]);return e.jsxs(e.Fragment,{children:[e.jsx(y,{groups:c,currentGroup:t,tab:o}),e.jsxs("div",{className:"tabs tabs-border mt-2",children:[e.jsxs(p,{to:`/group/${s}/devices`,className:u,children:[e.jsx(m,{icon:N,className:"me-2"}),n("common:devices")]}),e.jsxs(p,{to:`/group/${s}/settings`,className:u,children:[e.jsx(m,{icon:w,className:"me-2"}),n("settings")]})]}),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:a})]})}export{E as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as c,a as l,r as i,W as m,j as e,F as p,I as d,bK as f}from"./index-Cs-KexR1.js";import{S as g}from"./SettingsList-BXXsCJCy.js";import"./CheckboxField-aJECTtGJ.js";import"./InputField-TubacR8F.js";import"./NumberField-B10BRlkz.js";import"./SelectField-CboFEeLv.js";function j({group:s}){const{t:n}=c(["settings","common"]),o=l(t=>t.bridgeInfo),{sendMessage:r}=i.useContext(m),a=i.useCallback(async t=>{await r("bridge/request/group/options",{id:s.id.toString(),options:t})},[r,s.id]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(p,{icon:d,size:"2xl"}),e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsx(g,{schema:o.config_schema.definitions.group??{properties:{}},data:o.config.groups[s.id]??{},set:a})]})}export{j as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,b as _,j as e,a as w,W as C,ac as N,B as k,L as y,Q as G,F as S,x as M}from"./index-Cs-KexR1.js";import{E}from"./EndpointPicker-CX9S9S7k.js";import{S as I}from"./SelectField-CboFEeLv.js";const q=r.memo(n=>{const{t:o}=_("common"),{groups:a,value:c,label:l,onChange:m,...i}=n,g=r.useCallback(u=>{const{value:d}=u.target,x=Number.parseInt(d,10);m(a.find(b=>x===b.id))},[a,m]),p=r.useMemo(()=>{const u=[];for(const d of a)u.push(e.jsx("option",{value:d.id,children:d.friendly_name},d.id));return u},[a]);return e.jsxs(I,{name:"group_picker",label:l,value:c,onChange:g,...i,children:[e.jsx("option",{value:"",disabled:!0,children:o("select_group")}),p]})});function A({device:n}){const{t:o}=_(["groups","zigbee","common"]),a=w(s=>s.groups),{sendMessage:c}=r.useContext(C),[l,m]=r.useState(""),[i,g]=r.useState(""),p=r.useMemo(()=>N(n),[n]),[u,d]=r.useMemo(()=>{const s=[],t=[];for(const f of a){const j=f.members.filter(h=>h.ieee_address===n.ieee_address);if(j.length>0)for(const h of j)s.push([f,h.endpoint]);else t.push(f)}return[s,t]},[a,n.ieee_address]),x=r.useCallback(s=>{g(s.id),m(p.values().next().value)},[p]),b=r.useCallback(async()=>await c("bridge/request/group/members/add",{group:i.toString(),endpoint:l,device:n.ieee_address}),[c,i,n.ieee_address,l]),v=r.useCallback(async([s,t])=>await c("bridge/request/group/members/remove",{device:n.ieee_address,endpoint:t,group:s.id.toString()}),[c,n.ieee_address]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-row flex-wrap justify-around items-start gap-3 my-2",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold",children:o("add_to_group")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(q,{label:o("zigbee:group"),value:i,groups:d,onChange:x,required:!0}),e.jsx(E,{label:o("zigbee:endpoint"),values:p,value:l,onChange:s=>m(s),required:!0})]}),e.jsx(k,{onClick:b,className:"btn btn-primary",disabled:l==null||i==null||l===""||i==="",children:o("add_to_group")})]})}),e.jsx("div",{className:"flex flex-row flex-wrap justify-center gap-3 mt-3",children:u.map(([s,t])=>e.jsxs("ul",{className:"w-[23rem] list bg-base-200 rounded-box shadow-md",children:[e.jsxs("li",{className:"list-row grow",children:[e.jsxs("div",{children:[e.jsxs(y,{to:`/group/${s.id}/devices`,className:"link link-hover",children:["#",s.id," - ",s.friendly_name,t?` (${o("endpoint")}: ${t})`:""]}),e.jsx("div",{className:"text-xs opacity-50",children:s.description||""})]}),e.jsxs("div",{className:"list-col-wrap text-sm w-full gap-2",children:[e.jsxs("div",{className:"badge badge-soft badge-ghost cursor-default me-2",children:[o("group_members"),": ",s.members.length]}),e.jsxs("div",{className:"badge badge-soft badge-ghost cursor-default me-2",children:[o("group_scenes"),": ",s.scenes.length]})]})]}),e.jsx("li",{className:"flex flex-row flex-wrap gap-1 m-4 justify-around items-center",children:e.jsx(G,{item:[s,t],onClick:v,className:"btn btn-square btn-error btn-sm",title:o("remove_from_group"),modalDescription:o("common:dialog_confirmation_prompt"),modalCancelLabel:o("common:cancel"),children:e.jsx(S,{icon:M})})})]},`${s.id}-${t}`))})]})}export{A as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{w as h,K as _,b as j,r as o,j as a,M as N,B as d,a as w,W as C,L as g,F as b,O as k,Q as F,x as S}from"./index-Cs-KexR1.js";import{I as p}from"./InputField-TubacR8F.js";import{T as G}from"./Table-CK8_rY6Z.js";import"./DebouncedInput-hrRL_knE.js";const M=h.create(i=>{const{name:t,onRename:r}=i,c=_(),{t:l}=j(["groups","common"]),[s,n]=o.useState(t);return o.useEffect(()=>{n(t)},[t]),a.jsx(N,{isOpen:c.visible,title:`${l("rename_group")} ${t}`,footer:a.jsxs(a.Fragment,{children:[a.jsx(d,{className:"btn btn-neutral",onClick:c.remove,children:l("common:cancel")}),a.jsx(d,{className:"btn btn-primary ms-1",onClick:async()=>{s&&(c.remove(),await r(t,s))},children:l("rename_group")})]}),children:a.jsx("div",{className:"flex flex-col gap-2",children:a.jsx(p,{name:"friendly_name",label:l("common:friendly_name"),onChange:u=>n(u.target.value),value:s,type:"text",required:!0})})})});function T(){const[i,t]=o.useState(""),[r,c]=o.useState(""),l=w(e=>e.groups),{sendMessage:s}=o.useContext(C),{t:n}=j(["groups","common"]),u=o.useCallback(async()=>{const e={friendly_name:i};r!==void 0&&(e.id=r),await s("bridge/request/group/add",e)},[i,r,s]),x=o.useCallback(async(e,m)=>await s("bridge/request/group/rename",{from:e,to:m}),[s]),f=o.useCallback(async e=>await s("bridge/request/group/remove",{id:e}),[s]),y=o.useMemo(()=>i?!r||!l.find(e=>e.id.toString()===r):!1,[i,r,l]),v=o.useMemo(()=>[{id:"group_id",header:n("group_id"),accessorFn:e=>e.id,cell:({row:{original:e}})=>{var m;return a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar"}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx(g,{to:`/group/${e.id}/devices`,className:"link link-hover",children:e.id}),e.description&&a.jsx("div",{className:"text-xs opacity-50",children:e.description}),a.jsx("div",{className:"flex flex-row gap-1 mt-2",children:a.jsxs("span",{className:"badge badge-soft badge-sm badge-ghost cursor-default",children:[n("scenes"),": ",((m=e.scenes)==null?void 0:m.length)??0]})})]})]})}},{id:"friendly_name",header:n("common:friendly_name"),accessorFn:e=>e.friendly_name,cell:({row:{original:e}})=>a.jsx(g,{to:`/group/${e.id}/devices`,className:"link link-hover",children:e.friendly_name})},{id:"members",header:n("group_members"),accessorFn:e=>e.members.length??0,enableColumnFilter:!1},{header:"",id:"actions",cell:({row:{original:e}})=>a.jsxs("div",{className:"join join-horizontal",children:[a.jsx(d,{className:"btn btn-primary btn-sm join-item",onClick:async()=>await h.show(M,{name:e.friendly_name,onRename:x}),title:n("rename_group"),disabled:e.friendly_name==="default_bind_group",children:a.jsx(b,{icon:k})}),a.jsx(F,{title:n("remove_group"),item:e.id.toString(),onClick:f,className:"btn btn-error btn-sm join-item",modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:a.jsx(b,{icon:S})})]}),enableSorting:!1,enableColumnFilter:!1}],[x,f,n]);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"collapse collapse-arrow bg-base-100 shadow mb-3",children:[a.jsx("input",{type:"checkbox"}),a.jsx("div",{className:"collapse-title text-lg font-semibold text-center",children:n("create_group")}),a.jsx("div",{className:"collapse-content",children:a.jsxs("div",{className:"flex flex-row flex-wrap justify-center gap-2",children:[a.jsx(p,{type:"text",name:"friendly_name",label:n("common:friendly_name"),value:i,placeholder:n("friendly_name_placeholder"),onChange:e=>t(e.target.value),required:!0}),a.jsx(p,{type:"number",name:"group_id",label:n("group_id"),value:r,detail:n("common:optional"),min:0,max:255,onChange:e=>c(e.target.value)}),a.jsx(d,{onClick:u,className:"btn btn-primary self-center",disabled:!y,children:n("create_group")})]})})]}),a.jsx(G,{id:"all-groups",columns:v,data:l})]})}export{T as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as s,r as t,s as r,H as o,j as a}from"./index-Cs-KexR1.js";function n(){const e=s();return t.useEffect(()=>{e(r.get(o)==="dashboard"?"/dashboard":"/devices",{replace:!0})},[e]),a.jsx(a.Fragment,{})}export{n as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,W as _,A as C,a as g,b as w,$ as y,j as s,a0 as u,F as k,f as N,a1 as S,a2 as E,B as I,a3 as A,a4 as M}from"./index-Cs-KexR1.js";import{C as F}from"./CheckboxField-aJECTtGJ.js";import{D as G}from"./DebouncedInput-hrRL_knE.js";import{S as d}from"./SelectField-CboFEeLv.js";const D={error:"bg-error text-error-content",warning:"bg-warning text-warning-content",info:"bg-info text-info-content",debug:"bg-accent text-accent-content opacity-50"};function T(){const{sendMessage:m}=l.useContext(_),[t,c]=l.useState(""),[n,x]=l.useState("all"),[r,f]=l.useState(!1),h=C(),L=g(e=>e.logsLimit),b=g(e=>e.bridgeInfo.config.advanced.log_level),{t:a}=w("logs"),p=g(e=>e.logs),o=l.useMemo(()=>p.filter(e=>(n==="all"||e.level===n)&&(r||!t||e.message.toLowerCase().includes(t.toLowerCase()))),[t,r,n,p]),j=l.useCallback((e,i)=>t&&e.toLowerCase().includes(t.toLowerCase())?D[i]:y[i],[t]),v=l.useCallback(async e=>{await m("bridge/request/options",{options:{advanced:{log_level:e}}})},[m]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-top",children:[s.jsxs(d,{name:"log_level",label:a("show_only"),value:n,onChange:e=>x(e.target.value),children:[s.jsx("option",{value:"all",children:"all"},"all"),u.map(e=>s.jsx("option",{value:e,children:e},e))]}),s.jsxs("fieldset",{className:"fieldset",children:[s.jsx("legend",{className:"fieldset-legend",children:a("filter_by_text")}),s.jsxs("label",{className:"input w-64",children:[s.jsx(k,{icon:N}),s.jsx(G,{className:"",type:"search",onChange:e=>c(e.toString()),placeholder:a("common:search"),value:t,disabled:o.length===0}),s.jsx("kbd",{className:"kbd kbd-sm cursor-pointer",onClick:()=>c(""),onKeyUp:e=>{e.key==="enter"&&c("")},title:a("common:clear"),children:"x"})]})]}),s.jsx(F,{name:"highlight_only",label:a("highlight_only"),checked:r,onChange:e=>f(e.target.checked)}),s.jsx(d,{name:"log_limit",label:a("logs_limit"),onChange:e=>{h(E(Number.parseInt(e.target.value)))},value:L,children:S.map(e=>s.jsx("option",{value:e,children:e},e))}),s.jsx(I,{onClick:()=>{h(A())},className:"btn btn-primary self-center",disabled:o.length===0,children:a("common:clear")}),s.jsx("div",{className:"ml-auto",children:s.jsx(d,{name:"log_level_config",label:a("log_level_config"),value:b,onChange:e=>!e.target.validationMessage&&v(e.target.value),children:u.map(e=>s.jsx("option",{value:e,children:e},e))})})]}),s.jsx("div",{className:"mockup-code w-full mt-1 mb-3",children:o.length>0?o.map((e,i)=>s.jsx("pre",{"data-prefix":i,className:j(e.message,e.level),children:s.jsxs("code",{children:["[",e.timestamp,"] ",e.message]})},`${e.timestamp}-${e.message}`)):s.jsx("pre",{"data-prefix":"~",children:s.jsxs("code",{children:["[",M(new Date),"] ",a("empty_logs_message")]})})})]})}export{T as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./RawNetworkData-uldf8APR.js","./index-Cs-KexR1.js","./index-vRya9HWu.css","./PowerSource-CT5LulZX.js","./index-CUIfkU6p.js","./snakeCase-XNTmpa2i.js","./_createCompounder-COpq92ed.js","./DebouncedInput-hrRL_knE.js","./index-BN7eS8uY.js","./Lqi-BNx2QV2z.js","./DisplayValue-CjZXHxIO.js","./RawNetworkMap-CAdhahgm.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{A as C,r as s,W as E,b as R,a as d,s as m,C as h,E as M,G as T,j as e,F as n,I as x,B as z,J as A,i as I,_ as g}from"./index-Cs-KexR1.js";import{C as S}from"./CheckboxField-aJECTtGJ.js";import{S as f}from"./SelectField-CboFEeLv.js";const D=s.lazy(async()=>await g(()=>import("./RawNetworkData-uldf8APR.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url)),F=s.lazy(async()=>await g(()=>import("./RawNetworkMap-CAdhahgm.js"),__vite__mapDeps([11,1,2,8]),import.meta.url));function W(){const o=C(),{sendMessage:u}=s.useContext(E),{t:a}=R(["network","common"]),i=d(t=>t.networkMapIsLoading),r=d(t=>t.networkMap),[l,w]=s.useState("raw"),[c,j]=s.useState(!1),[p,k]=s.useState(m.get(h,"data")),v=s.useCallback(t=>{t.target.value&&w(t.target.value)},[]),y=s.useCallback(t=>{t.target.value&&(m.set(h,t.target.value),k(t.target.value))},[]),b=s.useCallback(t=>{j(t.target.checked)},[]),_=s.useCallback(async()=>{o(M(void 0)),o(T()),await u("bridge/request/networkmap",{type:l,routes:c})},[l,c,o,u]),N=s.useMemo(()=>{if(i)return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:e.jsx("span",{className:"loading loading-infinity loading-xl"})}),e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:a("loading")})]});if(r)switch(r.type){case"raw":return p==="data"?e.jsx(D,{map:r.value}):e.jsx(F,{map:r.value});case"graphviz":return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(n,{icon:x,size:"2xl"}),a("copy_paste_on"),e.jsx("a",{href:"https://dreampuf.github.io/GraphvizOnline",target:"_blank",rel:"noreferrer",className:"link link-hover",children:"https://dreampuf.github.io/GraphvizOnline"}),e.jsx("a",{href:"https://edotor.net/",target:"_blank",rel:"noreferrer",className:"link link-hover",children:"https://edotor.net/"})]}),e.jsx("textarea",{className:"textarea w-full",rows:5,readOnly:!0,value:r.value})]});case"plantuml":return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(n,{icon:x,size:"2xl"}),a("copy_paste_on"),e.jsx("a",{href:"https://editor.plantuml.com/uml/",target:"_blank",rel:"noreferrer",className:"link link-hover",children:"https://editor.plantuml.com/uml/"}),e.jsx("a",{href:"https://www.planttext.com/",target:"_blank",rel:"noreferrer",className:"link link-hover",children:"https://www.planttext.com/"})]}),e.jsx("textarea",{className:"textarea w-full",rows:5,readOnly:!0,value:r.value})]})}return null},[r,i,p,a]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row justify-center gap-3 mb-2",children:[e.jsxs(f,{name:"type",label:a("type"),value:l,onChange:v,children:[e.jsx("option",{value:"raw",children:a("raw")}),e.jsx("option",{value:"graphviz",children:a("graphviz")}),e.jsx("option",{value:"plantuml",children:a("plantuml")})]}),e.jsx(S,{name:"enable_routes",label:a("enable_routes"),checked:c,onChange:b}),e.jsx(z,{className:"btn btn-primary btn-square self-center ms-3 me-6",onClick:_,title:a(r?"reload":"load"),disabled:i,children:r?e.jsx(n,{icon:A}):e.jsx(n,{icon:I})}),l==="raw"&&e.jsxs(f,{name:"display_type",label:a("display_type"),value:p,onChange:y,children:[e.jsx("option",{value:"data",children:a("data")}),e.jsx("option",{value:"map",children:a("map")})]})]}),N]})}export{W as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,b as g,j as s,B as N,Q as h,F as f,R as j,a as y,W as $,L,S as D}from"./index-Cs-KexR1.js";import{D as M,P as z}from"./PowerSource-CT5LulZX.js";import{T as A}from"./Table-CK8_rY6Z.js";import{M as P,V as q}from"./VendorLink-CQWJDUO2.js";import"./index-CUIfkU6p.js";import"./snakeCase-XNTmpa2i.js";import"./_createCompounder-COpq92ed.js";import"./DebouncedInput-hrRL_knE.js";const B=l.memo(({label:t,remaining:i,progress:n})=>{if(i&&i>0){const a=Math.floor(i/3600),o=Math.floor(i/60)%60,m=Math.floor(i%60),r=a>0,u=o>0;return s.jsxs(s.Fragment,{children:[s.jsx("progress",{className:"progress w-48",value:n,max:"100"}),s.jsxs("div",{children:[t," ",`${r?`${a}:`:""}${u?`${o}:`:""}${m}`]})]})}return s.jsx("progress",{className:"progress w-48",value:n,max:"100"})}),U=l.memo(t=>{const{t:i}=g(["ota","common"]),{device:n,state:a,onCheckClick:o,onUpdateClick:m,onScheduleClick:r,onUnscheduleClick:u}=t;return a==null||a.state==="idle"?s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(N,{className:"btn btn-primary btn-sm join-item",onClick:o,item:n.ieee_address,children:i("check")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:j})})]}):a.state==="updating"?s.jsx(B,{label:i("remaining_time"),remaining:a.remaining,progress:a.progress}):s.jsx("div",{className:"join join-horizontal",children:a.state==="available"?s.jsxs(s.Fragment,{children:[s.jsx(h,{className:"btn btn-error btn-sm join-item",onClick:m,item:n.ieee_address,title:i("update"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("update")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:j})})]}):a.state==="scheduled"?s.jsx(h,{className:"btn btn-sm btn-error join-item",onClick:u,item:n.ieee_address,title:i("unschedule"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("unschedule")}):s.jsxs(s.Fragment,{children:[s.jsx(N,{className:"btn btn-primary btn-sm join-item",onClick:o,item:n.ieee_address,children:i("check")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:j})})]})})}),S=l.memo(t=>{const{t:i}=g("ota"),n=l.useMemo(()=>{if(t.version==null||t.version<0)return;const a=t.version.toString(16).padStart(8,"0"),o=`${a[0]}.${a[1]}`,m=a.slice(2,4),r=`${a[4]}.${a[5]}`,u=a.slice(6);return[o,m,r,u]},[t.version]);return n===void 0?s.jsx(s.Fragment,{children:"N/A"}):s.jsxs("div",{className:"join join-vertical",children:[s.jsxs("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default join-item w-full",children:[i("app"),": ",`${n[0]} build ${n[1]}`]}),s.jsxs("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default join-item w-full",children:[i("stack"),": ",`${n[2]} build ${n[3]}`]})]})}),O=l.memo(({device:t})=>{var o,m,r,u;const{t:i}=g("zigbee");let n="https://github.com/Koenkk/zigbee-OTA/releases";const a=t.software_build_id||i("unknown");switch((o=t==null?void 0:t.definition)==null?void 0:o.vendor){case"IKEA":n="https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html";break;case"Inovelli":n="https://help.inovelli.com/en/articles/8503774-what-is-the-latest-firmware-version-for-your-device#h_b74c1e7dc6";break;case"Philips":n=`https://www.philips-hue.com/en-us/support/release-notes/${(m=t.definition)!=null&&m.exposes.find(b=>b.type==="light")?"lamps":"accessories"}`;break;case"Ubisys":n=`https://www.ubisys.de/en/support/firmware/change-logs-${(u=(r=t.definition)==null?void 0:r.model)==null?void 0:u.replace(/[-]/g,"").toLowerCase()}/`;break}return s.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:n,className:"link link-hover",children:a})});function H(){const t=y(e=>e.devices),i=y(e=>e.deviceStates),{sendMessage:n}=l.useContext($),{t:a}=g(["ota","zigbee","common"]),[o,m]=l.useState([]);l.useEffect(()=>{m([])},[t]);const r=l.useMemo(()=>{var c;const e=[];for(const d of t)if((c=d.definition)!=null&&c.supports_ota&&!d.disabled){const p=i[d.friendly_name]??{};e.push({device:d,state:p.update,batteryState:d.power_source==="Battery"?{batteryPercent:p.battery,batteryState:p.battery_state,batteryLow:p.battery_low}:void 0,selected:o.includes(d.ieee_address)})}return e},[i,t,o]),u=l.useCallback(e=>{e.target.checked?m(r.map(({device:c})=>c.ieee_address)):m([])},[r]),b=l.useCallback((e,c)=>{m(c?[...o,e.ieee_address]:o.filter(d=>d!==e.ieee_address))},[o]),x=l.useCallback(async()=>{await Promise.allSettled(o.map(e=>n("bridge/request/device/ota_update/check",{id:e})))},[n,o]),k=l.useCallback(async()=>{await Promise.allSettled(o.map(e=>n("bridge/request/device/ota_update/update",{id:e})))},[n,o]),_=l.useCallback(async e=>await n("bridge/request/device/ota_update/check",{id:e}),[n]),C=l.useCallback(async e=>await n("bridge/request/device/ota_update/update",{id:e}),[n]),w=l.useCallback(async e=>await n("bridge/request/device/ota_update/schedule",{id:e}),[n]),v=l.useCallback(async e=>await n("bridge/request/device/ota_update/unschedule",{id:e}),[n]),F=l.useMemo(()=>[{id:"select",header:()=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:u,defaultChecked:o.length===r.length})}),accessorFn:()=>"",cell:({row:{original:{device:e,selected:c}}})=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:d=>b(e,d.target.checked),defaultChecked:c})}),enableColumnFilter:!1,enableSorting:!1},{header:a("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description,e.ieee_address].join(" "),cell:({row:{original:{device:e,state:c,batteryState:d}}})=>s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"avatar",children:s.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:s.jsx(M,{device:e,otaState:c==null?void 0:c.state,disabled:!1})})}),s.jsxs("div",{className:"flex flex-col",children:[s.jsxs(L,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,e.friendly_name!==e.ieee_address?` (${e.ieee_address})`:""]}),e.description&&s.jsx("div",{className:"text-xs opacity-50",children:e.description}),s.jsxs("div",{className:"flex flex-row gap-1 my-1 items-center",children:[s.jsxs("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default",title:a("zigbee:firmware_id"),children:[s.jsx(f,{icon:D}),s.jsx(O,{device:e}),e.date_code?s.jsxs("span",{title:a("zigbee:firmware_build_date"),children:[" (",e.date_code,")"]}):void 0]}),d&&s.jsx("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default",children:s.jsx(z,{device:e,...d})})]})]})]})},{header:a("zigbee:model"),accessorFn:({device:e})=>{var c,d;return[(c=e.definition)==null?void 0:c.model,e.model_id,(d=e.definition)==null?void 0:d.vendor,e.manufacturer].join(" ")},cell:({row:{original:{device:e}}})=>s.jsxs(s.Fragment,{children:[s.jsx(P,{device:e}),s.jsx("div",{children:s.jsx("span",{className:"badge badge-sm badge-ghost",title:a("zigbee:manufacturer"),children:s.jsx(q,{device:e})})})]})},{header:a("firmware_version"),accessorFn:({state:e})=>e==null?void 0:e.installed_version,cell:({row:{original:{state:e}}})=>s.jsx(S,{version:e==null?void 0:e.installed_version}),enableColumnFilter:!1},{header:a("available_firmware_version"),accessorFn:({state:e})=>e==null?void 0:e.latest_version,cell:({row:{original:{state:e}}})=>s.jsx(S,{version:e==null?void 0:e.latest_version}),enableColumnFilter:!1},{header:()=>s.jsxs("div",{className:"join join-vertical",children:[s.jsx(h,{className:"btn btn-error btn-xs join-item",onClick:x,title:a("check_selected"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),disabled:o.length===0,children:a("check_selected")}),s.jsx(h,{className:"btn btn-error btn-xs join-item",onClick:k,title:a("update_selected"),modalDescription:a("update_selected_info"),modalCancelLabel:a("common:cancel"),disabled:o.length===0,children:a("update_selected")})]}),accessorFn:({state:e})=>e==null?void 0:e.state,id:"check_all",cell:({row:{original:{device:e,state:c}}})=>s.jsx(U,{device:e,state:c,onCheckClick:_,onUpdateClick:C,onScheduleClick:w,onUnscheduleClick:v}),enableSorting:!1,enableColumnFilter:!1}],[o.length,r.length,u,b,x,k,_,C,w,v,a]);return s.jsx(A,{id:"ota-devices",columns:F,data:r})}export{H as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,b as j,ac as R,j as t,B as N,Q as k,W as w}from"./index-Cs-KexR1.js";import{I as C}from"./InputField-TubacR8F.js";import{C as E,A as y}from"./ClusterSinglePicker-Ckri6Ml1.js";import{E as S}from"./EndpointPicker-CX9S9S7k.js";import"./SelectField-CboFEeLv.js";const q=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],A=n.memo(l=>{const{rule:r,device:o,onApply:a}=l,[e,u]=n.useState({rule:r}),{t:s}=j(["zigbee","common"]);n.useEffect(()=>{u({rule:r})},[r]);const c=n.useCallback(i=>{e.rule.endpoint=i,u({rule:e.rule})},[e]),_=n.useCallback(i=>{e.rule.cluster=i,u({rule:e.rule})},[e]),g=n.useCallback(i=>{e.rule.attribute=i,u({rule:e.rule})},[e]),p=n.useCallback(i=>{const{name:m,valueAsNumber:d}=i.target;e.rule[m]=d,u({rule:e.rule})},[e]),v=n.useCallback(()=>{a({...e.rule,maximum_report_interval:65535})},[e,a]),x=n.useMemo(()=>R(o),[o]),f=n.useMemo(()=>{const i=new Set,m=new Set;e.rule.cluster&&m.add(e.rule.cluster);const d=o.endpoints[Number.parseInt(e.rule.endpoint,10)];if(d){for(const b of d.clusters.output)m.add(b);for(const b of d.clusters.input)m.has(b)||i.add(b)}return[{name:"available",clusters:m},{name:"possible",clusters:i}]},[o.endpoints,e.rule.endpoint,e.rule.cluster]),h=n.useMemo(()=>q.every(i=>e.rule[i]!==void 0&&e.rule[i]!==""),[e]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[t.jsx(S,{label:s("endpoint"),disabled:!r.isNew,values:x,value:e.rule.endpoint,onChange:c,required:!0}),t.jsx(E,{label:s("cluster"),disabled:!e.rule.endpoint,clusters:f,value:e.rule.cluster,onChange:_,required:!0}),t.jsx(y,{label:s("attribute"),disabled:!e.rule.cluster,value:e.rule.attribute,cluster:e.rule.cluster,device:o,onChange:g,required:!0}),t.jsx(C,{name:"minimum_report_interval",label:s("min_rep_interval"),type:"number",value:e.rule.minimum_report_interval,onChange:p,required:!0}),t.jsx(C,{name:"maximum_report_interval",label:s("max_rep_interval"),type:"number",value:e.rule.maximum_report_interval,onChange:p,required:!0}),t.jsx(C,{name:"reportable_change",label:s("min_rep_change"),type:"number",value:e.rule.reportable_change,onChange:p,required:!0}),t.jsxs("fieldset",{className:"fieldset",children:[t.jsx("legend",{className:"fieldset-legend",children:s("actions")}),t.jsxs("div",{className:"join join-horizontal",children:[t.jsx(N,{className:"btn btn-primary join-item",item:e.rule,onClick:a,disabled:!h,children:s("common:apply")}),e.rule.isNew?null:t.jsx(k,{title:s("common:disable"),className:"btn btn-error join-item",onClick:v,modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("common:disable")})]})]})]}),t.jsx("div",{className:"divider"})]})}),I=l=>{const r=[];for(const o in l.endpoints){const a=l.endpoints[o];for(const e of a.configured_reportings)r.push({...e,endpoint:o})}return r},M=l=>`${l.isNew}-${l.endpoint}-${l.cluster}-${l.attribute}`;function P(l){const{device:r}=l,{sendMessage:o}=n.useContext(w),[a,e]=n.useState({isNew:r.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),u=n.useMemo(()=>I(r),[r]);n.useEffect(()=>{e({isNew:r.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""})},[r.ieee_address]);const s=n.useCallback(async c=>{const{cluster:_,endpoint:g,attribute:p,minimum_report_interval:v,maximum_report_interval:x,reportable_change:f}=c;await o("bridge/request/device/configure_reporting",{id:r.ieee_address,endpoint:g,cluster:_,attribute:p,minimum_report_interval:v,maximum_report_interval:x,reportable_change:f,option:{}})},[o,r.ieee_address]);return t.jsx("div",{className:"flex flex-col",children:[...u,a].map(c=>t.jsx(A,{rule:c,device:r,onApply:s},M(c)))})}export{P as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,j as e}from"./index-Cs-KexR1.js";import{A as s,R as m}from"./RecallRemove-CLsmJI45.js";import"./DashboardFeatureWrapper-DZDafjVF.js";import"./Feature-DhPZqYWh.js";import"./DisplayValue-CjZXHxIO.js";import"./_createCompounder-COpq92ed.js";import"./capitalize-JuEfl3u2.js";import"./InputField-TubacR8F.js";import"./SelectField-CboFEeLv.js";function j(t){const i=a(r=>r.deviceStates[t.device.friendly_name]??{});return e.jsxs("div",{className:"flex flex-row flex-wrap justify-around items-start gap-3 my-2",children:[e.jsx("div",{children:e.jsx(s,{target:t.device,deviceState:i})}),e.jsx("div",{children:e.jsx(m,{target:t.device,deviceState:i})})]})}export{j as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,W as d,a as f,b,j as e,F as p,I as u,bV as g,B as x}from"./index-Cs-KexR1.js";import{S as l}from"./SettingsList-BXXsCJCy.js";import"./CheckboxField-aJECTtGJ.js";import"./InputField-TubacR8F.js";import"./NumberField-B10BRlkz.js";import"./SelectField-CboFEeLv.js";const r="main",h=[r,"frontend","mqtt","serial","availability","ota","advanced","homeassistant"];function I(){const{sendMessage:n}=o.useContext(d),a=f(s=>s.bridgeInfo),[t,m]=o.useState(r),{t:i}=b("settings"),c=o.useCallback(async s=>{t===r?await n("bridge/request/options",{options:s}):await n("bridge/request/options",{options:{[t]:s}})},[n,t]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(p,{icon:u,size:"2xl"}),e.jsx("a",{href:g,target:"_blank",rel:"noreferrer",className:"link link-hover",children:i("common:read_the_docs_info")})]}),e.jsxs("div",{className:"tabs tabs-border",children:[h.map(s=>e.jsx(x,{className:`tab${t===s?" tab-active":""}`,"aria-current":"page",item:s,onClick:m,children:i(s)},s)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:t===r?e.jsx(l,{schema:a.config_schema,data:a.config,set:c,rootOnly:!0}):e.jsx(l,{schema:a.config_schema.properties[t],data:a.config[t],set:c})})]})]})}export{I as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./About-Bwc-SnjR.js","./index-Cs-KexR1.js","./index-vRya9HWu.css","./snakeCase-XNTmpa2i.js","./_createCompounder-COpq92ed.js","./Frontend-D8k0f0AR.js","./CheckboxField-aJECTtGJ.js","./InputField-TubacR8F.js","./NumberField-B10BRlkz.js","./SelectField-CboFEeLv.js","./Settings-B5wIMTA9.js","./SettingsList-BXXsCJCy.js","./Tools-DdvQNnDA.js","./index-CUIfkU6p.js","./Bridge-B00gjrw-.js","./DevConsole-B4vldyLk.js","./TextareaField-Cb3faakR.js","./Donate-BI8FFOLc.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{u,d as _,b as d,r as a,j as s,N as o,F as n,e as b,a5 as x,k as j,a6 as g,a7 as p,q as v,a8 as N,_ as r}from"./index-Cs-KexR1.js";const T=a.lazy(async()=>await r(()=>import("./About-Bwc-SnjR.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),f=a.lazy(async()=>await r(()=>import("./Frontend-D8k0f0AR.js"),__vite__mapDeps([5,1,2,6,7,8,9]),import.meta.url)),E=a.lazy(async()=>await r(()=>import("./Settings-B5wIMTA9.js"),__vite__mapDeps([10,1,2,11,6,7,8,9]),import.meta.url)),y=a.lazy(async()=>await r(()=>import("./Tools-DdvQNnDA.js"),__vite__mapDeps([12,1,2,13]),import.meta.url)),h=a.lazy(async()=>await r(()=>import("./Bridge-B00gjrw-.js"),__vite__mapDeps([14,1,2]),import.meta.url)),A=a.lazy(async()=>await r(()=>import("./DevConsole-B4vldyLk.js"),__vite__mapDeps([15,1,2,7,9,16]),import.meta.url)),D=a.lazy(async()=>await r(()=>import("./Donate-BI8FFOLc.js"),__vite__mapDeps([17,1,2]),import.meta.url));function w(){const c=u(),{tab:i}=_(),{t}=d(["settings","navbar"]);a.useEffect(()=>{i||c("/settings/about",{replace:!0})},[i,c]);const l=a.useMemo(()=>{switch(i){case"about":return s.jsx(T,{});case"frontend":return s.jsx(f,{});case"settings":return s.jsx(E,{});case"tools":return s.jsx(y,{});case"bridge":return s.jsx(h,{});case"dev-console":return s.jsx(A,{});case"donate":return s.jsx(D,{})}return s.jsx(s.Fragment,{})},[i]),e=({isActive:m})=>m?"tab tab-active":"tab";return s.jsx(s.Fragment,{children:s.jsxs("div",{className:"tabs tabs-border",children:[s.jsxs(o,{to:"/settings/about",className:e,children:[s.jsx(n,{icon:b,className:"me-2"}),t("about")]}),s.jsxs(o,{to:"/settings/frontend",className:e,children:[s.jsx(n,{icon:x,className:"me-2"}),t("frontend")]}),s.jsxs(o,{to:"/settings/settings",className:e,children:[s.jsx(n,{icon:j,className:"me-2"}),t("settings")]}),s.jsxs(o,{to:"/settings/tools",className:e,children:[s.jsx(n,{icon:g,className:"me-2"}),t("tools")]}),s.jsxs(o,{to:"/settings/bridge",className:e,children:[s.jsx(n,{icon:p,className:"me-2"}),t("bridge")]}),s.jsxs(o,{to:"/settings/dev-console",className:e,children:[s.jsx(n,{icon:v,className:"me-2"}),t("dev_console")]}),s.jsxs(o,{to:"/settings/donate",className:e,children:[s.jsx(n,{icon:N,className:"me-2"}),t("donate")]}),s.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})})}export{w as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as l,j as o}from"./index-Cs-KexR1.js";function i(t){const{device:a}=t,s=l(r=>r.deviceStates[a.friendly_name]??{}),e=JSON.stringify(s,null,4),n=Math.max(10,(e.match(/\n/g)||"").length+1);return o.jsx("textarea",{className:"textarea w-full",rows:n,readOnly:!0,value:e})}export{i as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|