zigbee2mqtt-windfront 1.7.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{About-DUcioXxf.js → About-BWrcA8qQ.js} +2 -2
- package/dist/assets/About-BWrcA8qQ.js.br +0 -0
- package/dist/assets/{Availability-Dv4Ph0Ye.js → Availability-D1dLU87I.js} +1 -1
- package/dist/assets/Availability-D1dLU87I.js.br +0 -0
- package/dist/assets/Bind-D1v_YvyA.js +1 -0
- package/dist/assets/Bind-D1v_YvyA.js.br +0 -0
- package/dist/assets/Bridge-BrYjUYbo.js +1 -0
- package/dist/assets/Bridge-BrYjUYbo.js.br +0 -0
- package/dist/assets/{CheckboxField-Dx2QxjzC.js → CheckboxField-DGeXHkdI.js} +1 -1
- package/dist/assets/CheckboxField-DGeXHkdI.js.br +0 -0
- package/dist/assets/{ClusterSinglePicker-DNRhvOBp.js → ClusterSinglePicker-XKCAlJUJ.js} +1 -1
- package/dist/assets/ClusterSinglePicker-XKCAlJUJ.js.br +0 -0
- package/dist/assets/{Clusters-BE_4RC5f.js → Clusters-Bs7V9b_E.js} +1 -1
- package/dist/assets/Clusters-Bs7V9b_E.js.br +0 -0
- package/dist/assets/{Dashboard-D7evBMoe.js → Dashboard-pa4xB_EA.js} +1 -1
- package/dist/assets/Dashboard-pa4xB_EA.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-BCosdUvy.js → DashboardFeatureWrapper-BYrtY7HX.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-BYrtY7HX.js.br +0 -0
- package/dist/assets/{DebouncedInput-Z7O3YrBh.js → DebouncedInput-BSs73uaO.js} +1 -1
- package/dist/assets/DebouncedInput-BSs73uaO.js.br +0 -0
- package/dist/assets/DevConsole-B1CEDFS6.js +1 -0
- package/dist/assets/DevConsole-B1CEDFS6.js.br +0 -0
- package/dist/assets/DevConsole-DzhRu7kl.js +20 -0
- package/dist/assets/DevConsole-DzhRu7kl.js.br +0 -0
- package/dist/assets/{DeviceCard-DCId-Vs8.js → DeviceCard-B-MslgxW.js} +1 -1
- package/dist/assets/DeviceCard-B-MslgxW.js.br +0 -0
- package/dist/assets/DeviceControlEditName-m82lnyr9.js +1 -0
- package/dist/assets/DeviceControlEditName-m82lnyr9.js.br +0 -0
- package/dist/assets/DeviceImage-DL3nWYo3.js +1 -0
- package/dist/assets/DeviceImage-DL3nWYo3.js.br +0 -0
- package/dist/assets/{DeviceInfo-CZRw9zfL.js → DeviceInfo-BBRyyGYy.js} +2 -2
- package/dist/assets/DeviceInfo-BBRyyGYy.js.br +0 -0
- package/dist/assets/DevicePage-jGsdfE2a.js +2 -0
- package/dist/assets/DevicePage-jGsdfE2a.js.br +0 -0
- package/dist/assets/{DevicePicker-xS0T9qul.js → DevicePicker-CxYjky2Z.js} +1 -1
- package/dist/assets/DevicePicker-CxYjky2Z.js.br +0 -0
- package/dist/assets/{DeviceSettings-IoZbTphm.js → DeviceSettings-CxqEPckE.js} +1 -1
- package/dist/assets/DeviceSettings-CxqEPckE.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-yq2AvjNF.js +1 -0
- package/dist/assets/DeviceSpecificSettings-yq2AvjNF.js.br +0 -0
- package/dist/assets/Devices-8slkLcEd.js +1 -0
- package/dist/assets/Devices-8slkLcEd.js.br +0 -0
- package/dist/assets/{DevicesPage-CVqifZXT.js → DevicesPage-Dgj0SUNO.js} +1 -1
- package/dist/assets/DevicesPage-Dgj0SUNO.js.br +0 -0
- package/dist/assets/{DisplayValue-C55voi8G.js → DisplayValue-E8sajbsC.js} +1 -1
- package/dist/assets/DisplayValue-E8sajbsC.js.br +0 -0
- package/dist/assets/{Donate-9qZhLZau.js → Donate-BO7Z7hUr.js} +1 -1
- package/dist/assets/Donate-BO7Z7hUr.js.br +0 -0
- package/dist/assets/{EndpointPicker-DuGNCPo-.js → EndpointPicker-DaqpKjl3.js} +1 -1
- package/dist/assets/EndpointPicker-DaqpKjl3.js.br +0 -0
- package/dist/assets/Exposes-CKueBwT9.js +1 -0
- package/dist/assets/Exposes-CKueBwT9.js.br +0 -0
- package/dist/assets/Feature-BzaXaUES.js +1 -0
- package/dist/assets/Feature-BzaXaUES.js.br +0 -0
- package/dist/assets/{Frontend-BnyqZoL6.js → Frontend-B2I3Z2yo.js} +1 -1
- package/dist/assets/Frontend-B2I3Z2yo.js.br +0 -0
- package/dist/assets/{GroupPage-DA95yJf-.js → GroupPage-BywX_Lbd.js} +2 -2
- package/dist/assets/GroupPage-BywX_Lbd.js.br +0 -0
- package/dist/assets/GroupSettings-DUPxP4Lf.js +1 -0
- package/dist/assets/GroupSettings-DUPxP4Lf.js.br +0 -0
- package/dist/assets/{Groups-Dnuylsi8.js → Groups-C7jeWZeH.js} +1 -1
- package/dist/assets/Groups-C7jeWZeH.js.br +0 -0
- package/dist/assets/{GroupsPage-DphLoexz.js → GroupsPage-Du8LTLJf.js} +1 -1
- package/dist/assets/GroupsPage-Du8LTLJf.js.br +0 -0
- package/dist/assets/{Health-k9TFUygX.js → Health-BMcXjGsM.js} +1 -1
- package/dist/assets/Health-BMcXjGsM.js.br +0 -0
- package/dist/assets/{HomePage-CK6NM-T-.js → HomePage-Cm9MXKhj.js} +1 -1
- package/dist/assets/HomePage-Cm9MXKhj.js.br +0 -0
- package/dist/assets/{InputField-CUhAi55r.js → InputField-D7F4rh-6.js} +1 -1
- package/dist/assets/InputField-D7F4rh-6.js.br +0 -0
- package/dist/assets/{Json-CSdW868a.js → Json-CIlquCLk.js} +1 -1
- package/dist/assets/Json-CIlquCLk.js.br +0 -0
- package/dist/assets/{LastSeen-BWjXmUSJ.js → LastSeen-hXPhBVem.js} +1 -1
- package/dist/assets/LastSeen-hXPhBVem.js.br +0 -0
- package/dist/assets/LogsPage-BWPvuwAK.js +1 -0
- package/dist/assets/LogsPage-BWPvuwAK.js.br +0 -0
- package/dist/assets/Lqi-OIJirhdX.js +1 -0
- package/dist/assets/Lqi-OIJirhdX.js.br +0 -0
- package/dist/assets/NetworkPage-CeYM0kNC.js +2 -0
- package/dist/assets/NetworkPage-CeYM0kNC.js.br +0 -0
- package/dist/assets/{NumberField-Bu5IU0l2.js → NumberField-DBq58GHS.js} +1 -1
- package/dist/assets/NumberField-DBq58GHS.js.br +0 -0
- package/dist/assets/OtaPage-2i6uXP6o.js +1 -0
- package/dist/assets/OtaPage-2i6uXP6o.js.br +0 -0
- package/dist/assets/{PowerSource-BV6oqaaB.js → PowerSource-pdM840jV.js} +1 -1
- package/dist/assets/PowerSource-pdM840jV.js.br +0 -0
- package/dist/assets/{RawNetworkData-DAbMk6t_.js → RawNetworkData-DmEzjMKR.js} +1 -1
- package/dist/assets/RawNetworkData-DmEzjMKR.js.br +0 -0
- package/dist/assets/{RawNetworkMap-DcUDlHgQ.js → RawNetworkMap-m-jI3ov-.js} +30 -30
- package/dist/assets/RawNetworkMap-m-jI3ov-.js.br +0 -0
- package/dist/assets/{RecallRemove-CrxvayYk.js → RecallRemove-WoSCq7mT.js} +1 -1
- package/dist/assets/RecallRemove-WoSCq7mT.js.br +0 -0
- package/dist/assets/Reporting-DMIJKWCI.js +1 -0
- package/dist/assets/Reporting-DMIJKWCI.js.br +0 -0
- package/dist/assets/Scene-BZa630sw.js +1 -0
- package/dist/assets/Scene-BZa630sw.js.br +2 -0
- package/dist/assets/{SelectField-Ca16rphE.js → SelectField-Do2InTFr.js} +1 -1
- package/dist/assets/SelectField-Do2InTFr.js.br +0 -0
- package/dist/assets/Settings-DPny-0Rt.js +1 -0
- package/dist/assets/Settings-DPny-0Rt.js.br +0 -0
- package/dist/assets/SettingsList-DsVgWKy3.js +1 -0
- package/dist/assets/SettingsList-DsVgWKy3.js.br +0 -0
- package/dist/assets/{SettingsPage-CyWJ3spU.js → SettingsPage-Cx4nWHRr.js} +2 -2
- package/dist/assets/SettingsPage-Cx4nWHRr.js.br +0 -0
- package/dist/assets/State-De2K3QBu.js +1 -0
- package/dist/assets/State-De2K3QBu.js.br +2 -0
- package/dist/assets/{Table-7bVWMaUR.js → Table-BpnEzjLb.js} +1 -1
- package/dist/assets/Table-BpnEzjLb.js.br +0 -0
- package/dist/assets/{TextareaField-DP_hdh3q.js → TextareaField-xwbu8YKo.js} +1 -1
- package/dist/assets/TextareaField-xwbu8YKo.js.br +0 -0
- package/dist/assets/Tools-McB1jYZ-.js +1 -0
- package/dist/assets/Tools-McB1jYZ-.js.br +0 -0
- package/dist/assets/TouchlinkPage-BKfeLLii.js +1 -0
- package/dist/assets/TouchlinkPage-BKfeLLii.js.br +0 -0
- package/dist/assets/{VendorLink-CH3XJ5NJ.js → VendorLink-DE4QCH9H.js} +1 -1
- package/dist/assets/VendorLink-DE4QCH9H.js.br +0 -0
- package/dist/assets/{_createCompounder-DOVBRgWx.js → _createCompounder-CfkIxP4I.js} +1 -1
- package/dist/assets/_createCompounder-CfkIxP4I.js.br +0 -0
- package/dist/assets/{format-B4QuVfKv.js → format-Bbg3coak.js} +1 -1
- package/dist/assets/format-Bbg3coak.js.br +0 -0
- package/dist/assets/{index-DTwwc0px.js → index-DDBxKamc.js} +1 -1
- package/dist/assets/index-DDBxKamc.js.br +0 -0
- package/dist/assets/index-pzWGL0cK.js +637 -0
- package/dist/assets/index-pzWGL0cK.js.br +0 -0
- package/dist/assets/{jszip.min-DLJrQ4fd.js → jszip.min-CB2ooJ__.js} +1 -1
- package/dist/assets/jszip.min-CB2ooJ__.js.br +0 -0
- package/dist/assets/shallow-BvOtxUf5.js +1 -0
- package/dist/assets/shallow-BvOtxUf5.js.br +0 -0
- package/dist/assets/snakeCase-CUh04m27.js +1 -0
- package/dist/assets/snakeCase-CUh04m27.js.br +0 -0
- package/dist/index.html +1 -1
- package/dist/index.html.br +0 -0
- package/package.json +4 -5
- package/dist/assets/About-DUcioXxf.js.br +0 -0
- package/dist/assets/Availability-Dv4Ph0Ye.js.br +0 -0
- package/dist/assets/Bind-CZsitKJf.js +0 -1
- package/dist/assets/Bind-CZsitKJf.js.br +0 -0
- package/dist/assets/Bridge-BBUz-kJW.js +0 -1
- package/dist/assets/Bridge-BBUz-kJW.js.br +0 -0
- package/dist/assets/CheckboxField-Dx2QxjzC.js.br +0 -0
- package/dist/assets/ClusterSinglePicker-DNRhvOBp.js.br +0 -0
- package/dist/assets/Clusters-BE_4RC5f.js.br +0 -0
- package/dist/assets/Dashboard-D7evBMoe.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-BCosdUvy.js.br +0 -0
- package/dist/assets/DebouncedInput-Z7O3YrBh.js.br +0 -0
- package/dist/assets/DevConsole-C81rFSZS.js +0 -20
- package/dist/assets/DevConsole-C81rFSZS.js.br +0 -0
- package/dist/assets/DevConsole-CZhPDzNO.js +0 -1
- package/dist/assets/DevConsole-CZhPDzNO.js.br +0 -0
- package/dist/assets/DeviceCard-DCId-Vs8.js.br +0 -5
- package/dist/assets/DeviceControlEditName-BxC1B1Qj.js +0 -1
- package/dist/assets/DeviceControlEditName-BxC1B1Qj.js.br +0 -0
- package/dist/assets/DeviceImage-BGLcF_MT.js +0 -1
- package/dist/assets/DeviceImage-BGLcF_MT.js.br +0 -0
- package/dist/assets/DeviceInfo-CZRw9zfL.js.br +0 -0
- package/dist/assets/DevicePage-Bm-xmwWe.js +0 -2
- package/dist/assets/DevicePage-Bm-xmwWe.js.br +0 -0
- package/dist/assets/DevicePicker-xS0T9qul.js.br +0 -0
- package/dist/assets/DeviceSettings-IoZbTphm.js.br +0 -0
- package/dist/assets/DeviceSpecificSettings-CHDH7O4h.js +0 -1
- package/dist/assets/DeviceSpecificSettings-CHDH7O4h.js.br +0 -0
- package/dist/assets/Devices-CG9ex5aM.js +0 -1
- package/dist/assets/Devices-CG9ex5aM.js.br +0 -0
- package/dist/assets/DevicesPage-CVqifZXT.js.br +0 -0
- package/dist/assets/DisplayValue-C55voi8G.js.br +0 -0
- package/dist/assets/Donate-9qZhLZau.js.br +0 -0
- package/dist/assets/EndpointPicker-DuGNCPo-.js.br +0 -1
- package/dist/assets/Exposes-Bbzl-29y.js +0 -1
- package/dist/assets/Exposes-Bbzl-29y.js.br +0 -2
- package/dist/assets/Feature-BZc2FS2v.js +0 -1
- package/dist/assets/Feature-BZc2FS2v.js.br +0 -0
- package/dist/assets/Frontend-BnyqZoL6.js.br +0 -0
- package/dist/assets/GroupPage-DA95yJf-.js.br +0 -0
- package/dist/assets/GroupSettings-Bmjsrlz9.js +0 -1
- package/dist/assets/GroupSettings-Bmjsrlz9.js.br +0 -0
- package/dist/assets/Groups-Dnuylsi8.js.br +0 -0
- package/dist/assets/GroupsPage-DphLoexz.js.br +0 -0
- package/dist/assets/Health-k9TFUygX.js.br +0 -0
- package/dist/assets/HomePage-CK6NM-T-.js.br +0 -0
- package/dist/assets/InputField-CUhAi55r.js.br +0 -3
- package/dist/assets/Json-CSdW868a.js.br +0 -0
- package/dist/assets/LastSeen-BWjXmUSJ.js.br +0 -0
- package/dist/assets/LogsPage-3OuRzpPD.js +0 -1
- package/dist/assets/LogsPage-3OuRzpPD.js.br +0 -0
- package/dist/assets/Lqi-CkhLMJ19.js +0 -1
- package/dist/assets/Lqi-CkhLMJ19.js.br +0 -0
- package/dist/assets/NetworkPage-D5gqpXsU.js +0 -2
- package/dist/assets/NetworkPage-D5gqpXsU.js.br +0 -0
- package/dist/assets/NumberField-Bu5IU0l2.js.br +0 -0
- package/dist/assets/OtaPage-r9Gto8-D.js +0 -1
- package/dist/assets/OtaPage-r9Gto8-D.js.br +0 -0
- package/dist/assets/PowerSource-BV6oqaaB.js.br +0 -0
- package/dist/assets/RawNetworkData-DAbMk6t_.js.br +0 -0
- package/dist/assets/RawNetworkMap-DcUDlHgQ.js.br +0 -0
- package/dist/assets/RecallRemove-CrxvayYk.js.br +0 -0
- package/dist/assets/Reporting-VXUgdiP4.js +0 -1
- package/dist/assets/Reporting-VXUgdiP4.js.br +0 -0
- package/dist/assets/Scene-BwaNCcX2.js +0 -1
- package/dist/assets/Scene-BwaNCcX2.js.br +0 -0
- package/dist/assets/SelectField-Ca16rphE.js.br +0 -0
- package/dist/assets/Settings-VzG6rJhJ.js +0 -1
- package/dist/assets/Settings-VzG6rJhJ.js.br +0 -0
- package/dist/assets/SettingsList-FVZvadEn.js +0 -1
- package/dist/assets/SettingsList-FVZvadEn.js.br +0 -0
- package/dist/assets/SettingsPage-CyWJ3spU.js.br +0 -0
- package/dist/assets/State-khkziclY.js +0 -1
- package/dist/assets/State-khkziclY.js.br +0 -0
- package/dist/assets/Table-7bVWMaUR.js.br +0 -0
- package/dist/assets/TextareaField-DP_hdh3q.js.br +0 -0
- package/dist/assets/Tools-CvTVTFeR.js +0 -1
- package/dist/assets/Tools-CvTVTFeR.js.br +0 -0
- package/dist/assets/TouchlinkPage-CFVn2b5R.js +0 -1
- package/dist/assets/TouchlinkPage-CFVn2b5R.js.br +0 -0
- package/dist/assets/VendorLink-CH3XJ5NJ.js.br +0 -0
- package/dist/assets/_createCompounder-DOVBRgWx.js.br +0 -0
- package/dist/assets/format-B4QuVfKv.js.br +0 -1
- package/dist/assets/index-BccmZcnH.js +0 -645
- package/dist/assets/index-BccmZcnH.js.br +0 -0
- package/dist/assets/index-DTwwc0px.js.br +0 -0
- package/dist/assets/jszip.min-DLJrQ4fd.js.br +0 -0
- package/dist/assets/snakeCase-DyM1sm95.js +0 -1
- package/dist/assets/snakeCase-DyM1sm95.js.br +0 -0
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a8 as bt,a9 as It}from"./index-pzWGL0cK.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{aq as b}from"./index-pzWGL0cK.js";const i=t=>Symbol.iterator in t,c=t=>"entries"in t,f=(t,e)=>{const n=t instanceof Map?t:new Map(t.entries()),r=e instanceof Map?e:new Map(e.entries());if(n.size!==r.size)return!1;for(const[o,s]of n)if(!Object.is(s,r.get(o)))return!1;return!0},p=(t,e)=>{const n=t[Symbol.iterator](),r=e[Symbol.iterator]();let o=n.next(),s=r.next();for(;!o.done&&!s.done;){if(!Object.is(o.value,s.value))return!1;o=n.next(),s=r.next()}return!!o.done&&!!s.done};function a(t,e){return Object.is(t,e)?!0:typeof t!="object"||t===null||typeof e!="object"||e===null||Object.getPrototypeOf(t)!==Object.getPrototypeOf(e)?!1:i(t)&&i(e)?c(t)&&c(e)?f(t,e):p(t,e):f({entries:()=>Object.entries(t)},{entries:()=>Object.entries(e)})}function m(t){const e=b.useRef(void 0);return n=>{const r=t(n);return a(e.current,r)?e.current:e.current=r}}export{m as u};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a9 as u}from"./index-pzWGL0cK.js";import{a as C}from"./_createCompounder-CfkIxP4I.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
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<meta name="apple-mobile-web-app-title" content="Zigbee2MQTT WindFront" />
|
|
16
16
|
<link rel="manifest" href="./assets/site-DTEhrq36.webmanifest" />
|
|
17
17
|
|
|
18
|
-
<script type="module" crossorigin src="./assets/index-
|
|
18
|
+
<script type="module" crossorigin src="./assets/index-pzWGL0cK.js"></script>
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/envs-CRUy-_iG.js">
|
|
20
20
|
<link rel="stylesheet" crossorigin href="./assets/index-LLsrh-Ne.css">
|
|
21
21
|
</head>
|
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.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build": "vite build",
|
|
23
23
|
"preview": "vite preview",
|
|
24
24
|
"start": "vite dev",
|
|
25
|
-
"start:envs": "VITE_Z2M_API_URLS=localhost:5173/api,bogus.local:8080/api VITE_Z2M_API_NAMES=
|
|
25
|
+
"start:envs": "VITE_Z2M_API_URLS=localhost:5173/api,localhost:8080/api,bogus.local:8080/api VITE_Z2M_API_NAMES=dev,main,bogus npm start",
|
|
26
26
|
"test": "vitest run",
|
|
27
27
|
"test:cov": "vitest run --coverage",
|
|
28
28
|
"typecheck": "tsc --noEmit",
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
"@fortawesome/fontawesome-svg-core": "^7.0.0",
|
|
39
39
|
"@fortawesome/free-solid-svg-icons": "^7.0.0",
|
|
40
40
|
"@fortawesome/react-fontawesome": "^0.2.3",
|
|
41
|
-
"@reduxjs/toolkit": "^2.8.2",
|
|
42
41
|
"@storybook/addon-a11y": "^9.1.2",
|
|
43
42
|
"@storybook/addon-docs": "^9.1.2",
|
|
44
43
|
"@storybook/react-vite": "^9.1.2",
|
|
@@ -64,7 +63,6 @@
|
|
|
64
63
|
"react-dom": "^19.1.1",
|
|
65
64
|
"react-i18next": "^15.6.1",
|
|
66
65
|
"react-image": "^4.1.0",
|
|
67
|
-
"react-redux": "^9.2.0",
|
|
68
66
|
"react-router": "^7.8.0",
|
|
69
67
|
"react-use-websocket": "^4.13.0",
|
|
70
68
|
"reagraph": "^4.29.0",
|
|
@@ -77,7 +75,8 @@
|
|
|
77
75
|
"vite-plugin-compression2": "^2.2.0",
|
|
78
76
|
"vitest": "^3.1.2",
|
|
79
77
|
"ws": "^8.18.3",
|
|
80
|
-
"zigbee2mqtt": "github:Koenkk/zigbee2mqtt#dev-types"
|
|
78
|
+
"zigbee2mqtt": "github:Koenkk/zigbee2mqtt#dev-types",
|
|
79
|
+
"zustand": "^5.0.7"
|
|
81
80
|
},
|
|
82
81
|
"sideEffects": [
|
|
83
82
|
"*.css"
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,j as t,W as R,b as D,ai as I,aj as w,B as y,F as v,h as A,ak as O,a as E}from"./index-BccmZcnH.js";import{D as P}from"./DevicePicker-xS0T9qul.js";import{E as B}from"./EndpointPicker-DuGNCPo-.js";import"./envs-CRUy-_iG.js";import"./SelectField-Ca16rphE.js";const T=i.memo(s=>{const{clusters:n,onChange:l,label:a,value:e,disabled:d}=s,f=i.useCallback(u=>{const{checked:h,name:_}=u.target;let b=[...e];h?b.push(_):b=b.filter(N=>N!==_),l(b)},[l,e]),o=i.useMemo(()=>Array.from(n).sort((u,h)=>u.toString().localeCompare(h.toString())).map(u=>t.jsxs("label",{className:"label",title:u,children:[t.jsx("input",{className:"checkbox",type:"checkbox",checked:e.includes(u),name:u,value:u,onChange:f,disabled:d}),u]},u)),[n,f,e,d]);return t.jsxs("fieldset",{className:"fieldset",children:[a&&t.jsx("legend",{className:"fieldset-legend",children:a}),t.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:o})]})}),F=(s,n,l)=>{const{target:a}=s;return a.type==="group"?l.find(e=>e.id===a.id):n.find(e=>e.ieee_address===a.ieee_address)},U=i.memo(({devices:s,groups:n,device:l,rule:a})=>{const[e,d]=i.useState({rule:a}),{sendMessage:f}=i.useContext(R),{t:o}=D(["common","zigbee"]);i.useEffect(()=>{d({rule:a})},[a]);const u=i.useCallback(r=>{e.rule.source.endpoint=r,d({rule:e.rule})},[e.rule]),h=i.useCallback(r=>{r&&(I(r)?e.rule.target={type:"endpoint",ieee_address:r.ieee_address,endpoint:""}:e.rule.target={type:"group",id:r.id},e.rule.clusters=[],d({rule:e.rule}))},[e.rule]),_=i.useCallback(r=>{e.rule.target.type==="endpoint"&&(e.rule.target.endpoint=r,e.rule.clusters=[],d({rule:e.rule}))},[e.rule]),b=i.useCallback(r=>{e.rule.clusters=r,d({rule:e.rule})},[e.rule]),N=i.useCallback(async r=>{let p="",x;const{target:c}=e.rule;if(c.type==="group"){const m=n.find(C=>C.id===c.id);if(m)p=m.id;else{console.error("Target group does not exist:",c.id);return}}else if(c.type==="endpoint"){const m=s.find(C=>C.ieee_address===c.ieee_address);if(m)p=m.ieee_address,m.type!=="Coordinator"&&(x=c.endpoint);else{console.error("Target device does not exist:",c.ieee_address);return}}const g={from:l.ieee_address,from_endpoint:e.rule.source.endpoint,to:p,to_endpoint:x,clusters:e.rule.clusters};r==="Bind"?await f("bridge/request/device/bind",g):await f("bridge/request/device/unbind",g)},[l,e.rule,f,s,n]),S=i.useMemo(()=>w(l),[l]),j=F(e.rule,s,n),$=i.useMemo(()=>w(j),[j]),M=i.useMemo(()=>{const r=new Set(e.rule.clusters),p=l.endpoints[e.rule.source.endpoint],x=e.rule.target.type==="endpoint"&&e.rule.target.endpoint!=null?j?.endpoints[e.rule.target.endpoint]:void 0,c=e.rule.target.type==="group"||j?.type==="Coordinator";if(p&&(x||c))for(const g of[...p.clusters.input,...p.clusters.output])if(c)r.add(g);else{const m=p.clusters.input.includes(g)&&x?.clusters.output.includes(g),C=p.clusters.output.includes(g)&&x?.clusters.input.includes(g);(m||C||c)&&r.add(g)}return r},[l.endpoints,e,j]),k=i.useMemo(()=>{let r=!1;return e.rule.target.type==="endpoint"?r=!!(e.rule.source.endpoint&&e.rule.target.ieee_address&&e.rule.target.endpoint&&e.rule.clusters.length>0):e.rule.target.type==="group"&&(r=!!(e.rule.source.endpoint&&e.rule.target.id&&e.rule.clusters.length>0)),r},[e]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[t.jsx(B,{label:o("source_endpoint"),disabled:!e.rule.isNew,values:S,value:e.rule.source.endpoint,onChange:u}),t.jsx(P,{label:o("destination"),disabled:!e.rule.isNew,value:"ieee_address"in e.rule.target?e.rule.target.ieee_address:e.rule.target.id,devices:s,groups:n,onChange:h}),e.rule.target.type==="endpoint"?t.jsx(B,{label:o("destination_endpoint"),disabled:!e.rule.isNew,values:$,value:e.rule.target.endpoint,onChange:_}):null,t.jsx("div",{className:"grow w-128",children:t.jsx(T,{label:o("clusters"),clusters:M,value:e.rule.clusters,onChange:b})}),t.jsxs("fieldset",{className:"fieldset",children:[t.jsx("legend",{className:"fieldset-legend",children:o("actions")}),t.jsxs("div",{className:"join join-horizontal",children:[t.jsxs(y,{item:"Bind",disabled:!k,title:o("bind"),className:"btn btn-primary join-item",onClick:N,children:[t.jsx(v,{icon:A}),o("bind")," "]}),t.jsxs(y,{item:"Unbind",disabled:e.rule.isNew||!k,title:o("unbind"),className:"btn btn-error join-item",onClick:N,children:[t.jsx(v,{icon:O})," ",o("unbind")]})]})]})]}),t.jsx("div",{className:"divider"})]})}),V=s=>`${s.isNew}-${s.source.endpoint}-${s.source.ieee_address}-${"ieee_address"in s.target?s.target.ieee_address:s.target.id}-${s.clusters.join("-")}`,q=s=>{const n={};for(const l in s.endpoints){const a=s.endpoints[l];for(const e of a.bindings){let d="ieee_address"in e.target?`${e.target.ieee_address}-${e.target.endpoint}`:e.target.id;d=`${d}-${l}`,n[d]?n[d].clusters.push(e.cluster):n[d]={source:{ieee_address:s.ieee_address,endpoint:l},target:e.target,clusters:[e.cluster]}}}return Object.values(n)};function L(s){const{device:n}=s,l=E(o=>o.devices),a=E(o=>o.groups),[e,d]=i.useState({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:n.ieee_address,endpoint:""},clusters:[]}),f=i.useMemo(()=>q(n),[n]);return i.useEffect(()=>{d({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:n.ieee_address,endpoint:""},clusters:[]})},[n.ieee_address]),t.jsx("div",{className:"flex flex-col",children:[...f,e].map(o=>t.jsx(U,{rule:o,groups:a,device:n,devices:l},V(o)))})}export{L as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as t,j as e}from"./index-BccmZcnH.js";import{J as s}from"./Json-CSdW868a.js";import"./envs-CRUy-_iG.js";function a(){const o=t(r=>r.bridgeInfo);return e.jsx(s,{obj:o})}export{a as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{r as n,j as e,a5 as F,an as B,b as z,B as k,F as G,z as J,aj as V,W as R,a as L,G as K,ao as H,T as X,L as O,ap as Y,aq as P}from"./index-BccmZcnH.js";import{T as q}from"./TextareaField-DP_hdh3q.js";import{J as Z}from"./Json-CSdW868a.js";import{I as T}from"./InputField-CUhAi55r.js";import{C as M,A as Q}from"./ClusterSinglePicker-DNRhvOBp.js";import{E as ee}from"./EndpointPicker-DuGNCPo-.js";import"./envs-CRUy-_iG.js";import"./SelectField-Ca16rphE.js";const U=n.memo(({message:t})=>e.jsx("div",{className:"mockup-code w-full",children:e.jsx("pre",{"data-prefix":"~",className:F[t.level],children:e.jsxs("code",{children:["[",t.timestamp,"] ",t.message]})})})),te=[65,66,67,68];function se({value:t,onChange:p,attribute:i,definition:r,...o}){const u=te.includes(r.type)?"text":"number";return e.jsx("input",{type:u,value:t,onChange:d=>{const m=u==="number"?d.target.valueAsNumber:d.target.value;p(i,Number.isNaN(m)?void 0:m)},...o})}function ne({device:t,readDeviceAttributes:p,writeDeviceAttributes:i,lastLog:r}){const[o,u]=n.useState(B(t.endpoints)??""),[d,m]=n.useState(""),[l,f]=n.useState([]),[h,_]=n.useState(""),{t:c}=z(["common","zigbee"]),j=n.useCallback(s=>{m(""),f([]),u(s.toString())},[]),E=n.useCallback(s=>{f([]),m(s)},[]),v=n.useCallback((s,S)=>{if(!l.find(w=>w.attribute===s)){const w=l.concat([{attribute:s,definition:S}]);f(w)}},[l]),a=n.useCallback(s=>{_(s.target.value)},[]),b=n.useCallback(async()=>{await p(t.ieee_address,o,d,l.map(s=>s.attribute),h)},[t.ieee_address,o,d,l,h,p]),x=n.useCallback(async()=>{await i(t.ieee_address,o,d,l)},[t.ieee_address,o,d,l,i]),C=n.useMemo(()=>l.length>0&&e.jsx("fieldset",{className:"fieldset gap-2 p-3 rounded-box shadow-md",children:l.map(({attribute:s,value:S="",definition:w})=>e.jsxs("div",{className:"join join-horizontal min-w-xs",children:[e.jsxs("label",{className:"input join-item",children:[s,e.jsx(se,{value:S,attribute:s,definition:w,onChange:(D,$)=>{const A=Array.from(l),I=A.find(W=>W.attribute===D);I&&(I.value=$),f(A)}})]}),e.jsx(k,{className:"btn btn-error btn-outline join-item",item:s,onClick:D=>{const $=l.filter(A=>A.attribute!==D);f($)},children:e.jsx(G,{icon:J})})]},s))}),[l]),y=n.useMemo(()=>{const s=new Set;if(o){const S=t.endpoints[Number.parseInt(o,10)];if(S)for(const w of S.clusters.input)s.add(w)}return s},[t,o]),g=l.length===0||d==="",N=n.useMemo(()=>V(t),[t]);return o?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(ee,{label:c("zigbee:endpoint"),values:N,value:o,onChange:j,required:!0}),e.jsx(M,{label:c("cluster"),clusters:y,value:d,onChange:E,required:!0}),e.jsx(Q,{label:c("attribute"),value:"",cluster:d,device:t,onChange:v}),e.jsx(T,{type:"text",name:"state_property",label:c("devConsole:state_property"),value:h,detail:`${c("optional")}. ${c("devConsole:state_property_info")}`,onChange:a})]}),C,e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(k,{disabled:g||l.some(s=>!!s.value),className:"btn btn-success join-item",onClick:b,children:c("read")}),e.jsx(k,{disabled:g,className:"btn btn-error join-item",onClick:x,children:c("write")})]}),r&&e.jsx(U,{message:r})]}):e.jsx("span",{children:"No endpoints"})}const ae=({device:t,lastLog:p})=>{const{t:i}=z(["common","zigbee"]),[r,o]=n.useState(1),[u,d]=n.useState(""),[m,l]=n.useState(""),[f,h]=n.useState("{}"),{sendMessage:_}=n.useContext(R),c=L(a=>a.bridgeDefinitions),j=n.useMemo(()=>{if(!u||!m)return!1;try{const a=JSON.parse(f);if(typeof a!="object"||Array.isArray(a)&&a.length>0&&typeof a[0]!="object")return!1}catch{return!1}return!0},[f,u,m]),E=n.useMemo(()=>{const a=t.endpoints[r],b=new Set,x=new Set,C=new Set,y=new Set,g=new Set;if(a){for(const s of a.clusters.input)b.add(s),x.add(s);for(const s of a.clusters.output)b.add(s),C.add(s)}if(c.custom_clusters[t.friendly_name])for(const s in c.custom_clusters[t.friendly_name])b.has(s)||(b.add(s),y.add(s));for(const s in c.clusters)b.has(s)||g.add(s);return[{name:"input_clusters",clusters:x},{name:"output_clusters",clusters:C},{name:"custom_clusters",clusters:y},{name:"other_zcl_clusters",clusters:g}]},[t.friendly_name,t.endpoints,r,c]),v=n.useCallback(async()=>{let a=Number.parseInt(m,10);Number.isNaN(a)&&(a=m),await _(`${t.ieee_address}/${r}/set`,{command:{cluster:u,command:a,payload:JSON.parse(f)}})},[u,t.ieee_address,m,f,r,_]);return e.jsxs("div",{className:"flex-1 flex flex-col gap-3",children:[e.jsx("h2",{className:"text-lg",children:i("execute_command")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(T,{type:"number",name:"endpoint",label:i("zigbee:endpoint"),min:1,max:255,value:r,onChange:a=>!!a.target.value&&o(a.target.valueAsNumber),required:!0}),e.jsx(M,{label:i("zigbee:cluster"),clusters:E,value:u,onChange:a=>{d(a)},required:!0}),e.jsx(T,{type:"text",name:"command",label:i("command"),value:m,placeholder:"state, color...",onChange:a=>l(a.target.value),pattern:"^\\d+|^\\w+",required:!0})]}),e.jsx(q,{name:"payload",label:i("payload"),rows:3,value:f,onChange:a=>h(a.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{children:e.jsx(k,{onClick:v,disabled:!j,className:"btn btn-success",children:i("execute")})}),p&&e.jsx(U,{message:p})]})},oe=/^(zhc:tz: Read result of |z2m: Publish 'set' 'read' to |z2m: Publish 'set' 'write' to |zhc:tz: Wrote )/,re=n.memo(({device:t,externalDefinition:p})=>{const{t:i}=z("zigbee"),r=L(u=>u.bridgeInfo.zigbee_herdsman_converters.version),o={labels:"new device support",title:`[New device support] ${t.model_id} from ${t.manufacturer}`,body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${P.slice(0,-4)} -->
|
|
2
|
-
|
|
3
|
-
### Link
|
|
4
|
-
|
|
5
|
-
### What does/doesn't work with the external definition?
|
|
6
|
-
|
|
7
|
-
### Details
|
|
8
|
-
zigbee-herdsman-converters: \`${r}\`
|
|
9
|
-
software_build_id: \`${t.software_build_id}\`
|
|
10
|
-
date_code: \`${t.date_code}\`
|
|
11
|
-
endpoints:
|
|
12
|
-
\`\`\`json
|
|
13
|
-
${JSON.stringify(t.endpoints)}
|
|
14
|
-
\`\`\`
|
|
15
|
-
|
|
16
|
-
### External definition:
|
|
17
|
-
\`\`\`ts
|
|
18
|
-
${p}
|
|
19
|
-
\`\`\`
|
|
20
|
-
`};return e.jsx(O,{target:"_blank",rel:"noopener noreferrer",to:`${P}?${new URLSearchParams(o).toString()}`,className:"btn",children:i("request_support")})});function xe({device:t}){const p=K(),{sendMessage:i}=n.useContext(R),{t:r}=z(["devConsole","common"]),o=L(x=>x.lastNonDebugLog),[u,d]=n.useState(),[m,l]=n.useState(),[f,h]=n.useState(!1),[_,c]=n.useState(!1),j=L(x=>x.generatedExternalDefinitions[t.ieee_address]);n.useEffect(()=>{h(!1)},[t]),n.useEffect(()=>{o&&(o.message.startsWith("zhc:tz: Invoked ")?l(o):oe.test(o.message)&&d(o))},[o]);const E=n.useCallback(async(x,C,y,g,N)=>{const s={read:{cluster:y,attributes:g}};N&&(s.read.state_property=N),await i(`${x}/${C}/set`,s)},[i]),v=n.useCallback(async(x,C,y,g)=>{const N={write:{cluster:y,payload:{}}};for(const s of g)N.write.payload[s.attribute]=s.value;await i(`${x}/${C}/set`,N)},[i]),a=n.useCallback(async()=>{h(!0),await i("bridge/request/device/generate_external_definition",{id:t.ieee_address})},[i,t.ieee_address]),b=n.useCallback(()=>{p(H(t.friendly_name))},[p,t.friendly_name]);return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex flex-row justify-center items-center gap-2",children:[j?t.supported?null:e.jsx(re,{device:t,externalDefinition:j}):f?e.jsx("span",{className:"loading loading-infinity loading-xl"}):e.jsx(k,{className:"btn btn-primary",onClick:a,children:r("generate_external_definition")}),e.jsx(k,{item:!_,onClick:c,className:"btn btn-primary",children:r(_?"hide_definition":"show_definition")}),e.jsx(X,{className:"btn btn-error",onClick:b,title:r("reset_frontend_state"),modalDescription:r("common:dialog_confirmation_prompt"),modalCancelLabel:r("common:cancel"),children:r("reset_frontend_state")})]}),j&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"divider"}),e.jsx(q,{name:"generated_external_definition",label:r("generated_external_definition"),value:j,className:"textarea w-full",rows:8,readOnly:!0}),e.jsx(O,{to:Y,target:"_blank",rel:"noreferrer",className:"link link-primary self-end",children:r("common:documentation")})]}),_&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"divider"}),e.jsx(Z,{obj:t.definition??{},lines:12})]}),e.jsx("div",{className:"divider"}),e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4",children:[e.jsx(ne,{device:t,lastLog:u,readDeviceAttributes:E,writeDeviceAttributes:v}),e.jsx(ae,{device:t,lastLog:m})]})]})}export{xe as default};
|
|
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 p,M as g,cq as T,T as q,cr as w,cs as O,ct as R}from"./index-BccmZcnH.js";import{I as N}from"./InputField-CUhAi55r.js";import{S as E}from"./SelectField-Ca16rphE.js";import{T as S}from"./TextareaField-DP_hdh3q.js";import"./envs-CRUy-_iG.js";const k=["mqtt","external_converters","external_extensions"],M=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),[r,l]=o.useState(""),[s,a]=o.useState("{}"),i=o.useMemo(()=>{if(!r)return!1;if(s!=="")try{const m=JSON.parse(s);if(typeof m!="object"||Array.isArray(m))return!1}catch{return!1}return!0},[r,s]),u=o.useCallback(async()=>{await c(r,s===""?s:JSON.parse(s))},[r,s,c]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("send_mqtt")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href: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:r,onChange:m=>l(m.target.value),className:"input validator w-full",required:!0}),e.jsx(S,{name:"payload",label:n("common:payload"),rows:5,value:s,onChange:m=>a(m.target.value),className:"textarea validator w-full"}),e.jsx("div",{className:"join join-horizontal mt-2",children:e.jsx(v,{onClick:u,disabled:!i,className:"btn btn-success",children:n("common:send")})})]})},A=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),r=y(t=>t.converters),[l,s]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(l||!!a.name)&&!!a.code,[l,a]),m=o.useCallback(t=>{if(t.target.value){const d=r.find(j=>j.name===t.target.value);d&&(s(d),i(d))}else s(void 0),i({name:"",code:""})},[r]),h=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),b=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),C=o.useCallback(async()=>{await c("bridge/request/converter/save",a)},[c,a]),_=o.useCallback(async()=>{await c("bridge/request/converter/remove",{name:a.name})},[c,a.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_converter")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href:w,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(E,{name:"converter_name_edit",label:n("select_converter_to_edit"),onChange:m,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_converter")]}),r.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(N,{name:"converter_name",label:n("common:name"),type:"text",onChange:h,value:a.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"converter_code",label:n("code"),rows:5,value:a.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})},F=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:c}=o.useContext(f),r=y(t=>t.extensions),[l,s]=o.useState(),[a,i]=o.useState({name:"",code:""}),u=o.useMemo(()=>(l||!!a.name)&&!!a.code,[l,a]),m=o.useCallback(t=>{if(t.target.value){const d=r.find(j=>j.name===t.target.value);d&&(s(d),i(d))}else s(void 0),i({name:"",code:""})},[r]),h=o.useCallback(t=>{i({name:t.target.value,code:a.code})},[a.code]),b=o.useCallback(t=>{i({name:a.name,code:t.target.value})},[a.name]),C=o.useCallback(async()=>{await c("bridge/request/extension/save",a)},[c,a]),_=o.useCallback(async()=>{await c("bridge/request/extension/remove",{name:a.name})},[c,a.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_extension")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(p,{icon:g,size:"2xl"}),e.jsx("a",{href:T,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsxs(E,{name:"extension_name_edit",label:n("select_extension_to_edit"),onChange:m,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_extension")]}),r.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name))]}),e.jsx(N,{name:"extension_name",label:n("common:name"),type:"text",onChange:h,value:a.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"extension_code",label:n("code"),rows:5,value:a.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})};function B(){const[n,c]=o.useState(k[0]),{t:r}=x("devConsole"),l=o.useMemo(()=>{switch(n){case"mqtt":return e.jsx(M,{});case"external_converters":return e.jsx(A,{});case"external_extensions":return e.jsx(F,{})}return""},[n]);return e.jsxs("div",{className:"tabs tabs-border",children:[k.map(s=>e.jsx(v,{className:`tab${n===s?" tab-active":""}`,"aria-current":"page",item:s,onClick:c,children:r(s)},s)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})}export{B as default};
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
% !��T���¤���z�T�MFN�HF��\ Wk��F����� �+��*KT�NW�������"�/7�!��N� aP��PpBn
|
|
2
|
-
A$��Z�|/nwy��q������aq;��~����~pӟ�뵄��)������2��W����2Gg����R�ZB�&vt�K qt�t�~
|
|
3
|
-
��'�/�����wb��E��I���&�i�N�@�Wd�x2���3�������8PQH?i*�' �O��D��x��橧�{��8��[����HJQ�N�FA��֮�e��y�o�?A�C�=]�v����M���h�
|
|
4
|
-
�����.�=SpV���G:N�s)������� őĊj��+� �D��'"�!X��`�9�pz�S�u�'��O��tP�e+�O���-�g�c�t|���"�LU,���~�yaJ|'\���mV&,��%?Q�%��{��lP�``=����/ Z7s8�
|
|
5
|
-
�1�0`�6�Mk1�0�����I�C��s\��o��&�q�!�l�Z�~"�u,��4��bB_�q*�
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{y as h,Q as j,b as f,r as m,j as e,R as _,B as i,F as u,S as p}from"./index-BccmZcnH.js";import{C as b}from"./CheckboxField-Dx2QxjzC.js";import{I as k}from"./InputField-CUhAi55r.js";const R=h.create(c=>{const{device:o,removeDevice:s}=c,t=j(),{t:n}=f(["zigbee","common"]),[a,r]=m.useState({block:!1,force:!1}),d=v=>{const{checked:x,name:l}=v.target;r({...a,[l]:x})};return e.jsx(_,{isOpen:t.visible,title:`${n("remove_device")} ${o.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:t.remove,children:n("common:cancel")}),e.jsx(i,{className:"btn btn-error ms-1",onClick:async()=>{t.remove(),await s(o.ieee_address,a.force,a.block)},children:n("common:delete")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(b,{label:n("force_remove"),name:"force",onChange:d,checked:a.force}),e.jsx("span",{className:"text-xs opacity-50",children:n("force_remove_notice")}),e.jsx(b,{label:n("block_join"),name:"block",onChange:d,checked:a.block})]})})}),g=h.create(c=>{const{homeassistantEnabled:o,name:s,renameDevice:t}=c,n=j(),{t:a}=f(["zigbee","common"]),[r,d]=m.useState(!1),[v,x]=m.useState(s);return m.useEffect(()=>{x(s)},[s]),e.jsx(_,{isOpen:n.visible,title:`${a("rename_device")} ${s}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:n.remove,children:a("common:cancel")}),e.jsx(i,{className:"btn btn-primary ms-1",onClick:async()=>{n.remove(),await t(s,v,r)},children:a("rename_device")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(k,{name:"friendly_name",label:a("common:friendly_name"),onChange:l=>x(l.target.value),value:v,type:"text"}),o&&e.jsx(b,{label:a("update_Home_assistant_entity_id"),name:"update_Home_assistant_entity_id",onChange:l=>d(l.target.checked),checked:r})]})})}),D=m.memo(c=>{const{homeassistantEnabled:o,name:s,renameDevice:t,style:n}=c,{t:a}=f("zigbee");return e.jsx(i,{className:`btn ${n}`,onClick:async()=>await h.show(g,{name:s,renameDevice:t,homeassistantEnabled:o}),title:a("rename_device"),children:e.jsx(u,{icon:p})})});export{D,R};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as i,F as l,a3 as x,r as m,b as w,ar as b,at as O,cb as S,cc as P,O as N,cd as _}from"./index-BccmZcnH.js";import{g as D,a as y}from"./index-DTwwc0px.js";function I({error:r,children:e}){return r?i.jsx(l,{icon:x,size:"3x",className:"text-error"}):e}function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function E(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e);if(p(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function A(r){var e=E(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=A(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var $=function(r){var e=r.crossOrigin,t=e===void 0?"":e;return function(n){return new Promise(function(o,s){var c=new Image;t&&(c.crossOrigin=t),c.onload=function(){c.decode?c.decode().then(o).catch(s):o()},c.onerror=s,c.src=n})}};function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),t.push.apply(t,n)}return t}function g(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?j(Object(t),!0).forEach(function(n){L(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var F=function(e){return e.filter(function(t){return t})},T=function(e){return Array.isArray(e)?e:[e]},u={},z=function(e,t){var n=!1;return new Promise(function(o,s){var c=function(d){return t(d).then(function(){n=!0,o(d)})};e.reduce(function(f,d){return f.catch(function(){if(!n)return c(d)})},c(e.shift())).catch(s)})};function B(r){var e=r.srcList,t=r.imgPromise,n=t===void 0?$({}):t,o=r.useSuspense,s=o===void 0?!0:o,c=m.useState(!1),f=c[1],d=F(T(e)),a=d.join("");if(u[a]||(u[a]={promise:z(d,n),cache:"pending",error:null}),u[a].cache==="resolved")return{src:u[a].src,isLoading:!1,error:null};if(u[a].cache==="rejected"){if(s)throw u[a].error;return{isLoading:!1,error:u[a].error,src:void 0}}if(u[a].promise.then(function(v){u[a]=g(g({},u[a]),{},{cache:"resolved",src:v}),s||f(a)}).catch(function(v){u[a]=g(g({},u[a]),{},{cache:"rejected",error:v}),s||f(a)}),s)throw u[a].promise;return{isLoading:!0,src:void 0,error:null}}const h=m.memo(({device:r={},className:e})=>{const t=r.definition?.icon,n=D(r),o=[];t&&o.push(t),n&&o.push(n),n!==y&&o.push(y);const{src:s}=B({srcList:o});return i.jsx("img",{alt:r.ieee_address,crossOrigin:"anonymous",src:s,className:e})}),K=m.memo(r=>{const{t:e}=w("zigbee"),{device:t={},disabled:n,otaState:o,className:s,noIndicator:c}=r,f=m.useMemo(()=>t.interview_state===b.InProgress?i.jsx("span",{title:e("interviewing"),children:i.jsx(l,{icon:O,spin:!0,className:"indicator-item indicator-bottom indicator-end text-info"})}):t.interview_state===b.Failed?i.jsx("span",{title:e("interview_failed"),children:i.jsx(l,{icon:x,beat:!0,className:"indicator-item indicator-bottom indicator-end text-error"})}):t.definition?.source==="generated"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:S,beat:!0,className:"indicator-item indicator-bottom indicator-end text-warning"})}):t.definition?.source==="external"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:P,className:"indicator-item indicator-bottom indicator-end text-info"})}):null,[t.interview_state,t.definition,e]);return i.jsx(m.Suspense,{fallback:i.jsx("img",{alt:t.ieee_address,src:y}),children:i.jsx(I,{children:c?i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`}):i.jsxs("div",{className:"indicator w-full",children:[o==="updating"&&i.jsx("span",{title:e("updating_firmware"),children:i.jsx(l,{icon:N,spin:!0,className:"indicator-item indicator-top indicator-end text-info"})}),f,n&&i.jsx("span",{title:e("common:disabled"),children:i.jsx(l,{icon:_,className:"indicator-item indicator-middle indicator-center text-error",size:"2xl"})}),i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`})]})})})});export{K as D};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-CZsitKJf.js","./index-BccmZcnH.js","./envs-CRUy-_iG.js","./index-LLsrh-Ne.css","./DevicePicker-xS0T9qul.js","./SelectField-Ca16rphE.js","./EndpointPicker-DuGNCPo-.js","./Clusters-BE_4RC5f.js","./DevConsole-C81rFSZS.js","./TextareaField-DP_hdh3q.js","./Json-CSdW868a.js","./InputField-CUhAi55r.js","./ClusterSinglePicker-DNRhvOBp.js","./DeviceInfo-CZRw9zfL.js","./snakeCase-DyM1sm95.js","./_createCompounder-DOVBRgWx.js","./DeviceControlEditName-BxC1B1Qj.js","./CheckboxField-Dx2QxjzC.js","./Availability-Dv4Ph0Ye.js","./DeviceImage-BGLcF_MT.js","./index-DTwwc0px.js","./DisplayValue-C55voi8G.js","./LastSeen-BWjXmUSJ.js","./format-B4QuVfKv.js","./VendorLink-CH3XJ5NJ.js","./PowerSource-BV6oqaaB.js","./DeviceSettings-IoZbTphm.js","./SettingsList-FVZvadEn.js","./NumberField-Bu5IU0l2.js","./DeviceSpecificSettings-CHDH7O4h.js","./Feature-BZc2FS2v.js","./Exposes-Bbzl-29y.js","./Groups-Dnuylsi8.js","./Reporting-VXUgdiP4.js","./Scene-BwaNCcX2.js","./RecallRemove-CrxvayYk.js","./DashboardFeatureWrapper-BCosdUvy.js","./State-khkziclY.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as i,b as p,j as e,L as x,P as j,F as c,f as v,a as f,d as g,u as y,N as r,e as b,g as h,h as N,i as E,k as T,l as w,m as L,n as P,o as $,p as D,q as A,_ as l}from"./index-BccmZcnH.js";import"./envs-CRUy-_iG.js";const I=i.memo(({devices:a,currentDevice:d,tab:t="info"})=>{const[m,_]=i.useState(""),{t:s}=p("common"),o=i.useMemo(()=>a.filter(n=>n.type!=="Coordinator"&&n.friendly_name.toLowerCase().includes(m.toLowerCase())&&n.ieee_address!==d?.ieee_address).map(n=>e.jsx("li",{children:e.jsx(x,{to:`/device/${n.ieee_address}/${t}`,onClick:()=>_(""),className:"dropdown-item",children:n.friendly_name})},n.ieee_address)),[a,d,m,t]);return e.jsxs(j,{name:"header-device-selector",buttonChildren:`${d?`${d.friendly_name} (${d.ieee_address})`:s("unknown_device")}`,dropdownStyle:"dropdown-start",children:[e.jsxs("label",{className:"input",children:[e.jsx(c,{icon:v}),e.jsx("input",{type:"search",placeholder:s("type_to_filter"),onChange:n=>_(n.target.value),value:m})]},"search"),o]})}),R=i.lazy(async()=>await l(()=>import("./Bind-CZsitKJf.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),C=i.lazy(async()=>await l(()=>import("./Clusters-BE_4RC5f.js"),__vite__mapDeps([7,1,2,3]),import.meta.url)),O=i.lazy(async()=>await l(()=>import("./DevConsole-C81rFSZS.js"),__vite__mapDeps([8,1,2,3,9,10,11,12,5,6]),import.meta.url)),S=i.lazy(async()=>await l(()=>import("./DeviceInfo-CZRw9zfL.js"),__vite__mapDeps([13,1,2,3,14,15,16,17,11,18,9,19,20,21,22,23,24,25]),import.meta.url)),z=i.lazy(async()=>await l(()=>import("./DeviceSettings-IoZbTphm.js"),__vite__mapDeps([26,1,2,3,27,17,11,28,5]),import.meta.url)),V=i.lazy(async()=>await l(()=>import("./DeviceSpecificSettings-CHDH7O4h.js"),__vite__mapDeps([29,1,2,3,30,21,15]),import.meta.url)),k=i.lazy(async()=>await l(()=>import("./Exposes-Bbzl-29y.js"),__vite__mapDeps([31,1,2,3,30,21,15]),import.meta.url)),M=i.lazy(async()=>await l(()=>import("./Groups-Dnuylsi8.js"),__vite__mapDeps([32,1,2,3,6,5]),import.meta.url)),F=i.lazy(async()=>await l(()=>import("./Reporting-VXUgdiP4.js"),__vite__mapDeps([33,1,2,3,11,12,5,6]),import.meta.url)),G=i.lazy(async()=>await l(()=>import("./Scene-BwaNCcX2.js"),__vite__mapDeps([34,1,2,3,35,36,30,21,15,11,5]),import.meta.url)),B=i.lazy(async()=>await l(()=>import("./State-khkziclY.js"),__vite__mapDeps([37,1,2,3,10]),import.meta.url));function H(){const{t:a}=p(["devicePage","common"]),d=f(u=>u.devices),{deviceId:t,tab:m}=g(),_=y(),s=t?d.find(u=>u.ieee_address===t):void 0;i.useEffect(()=>{s&&(m?s.type==="Coordinator"&&_("/settings/about",{replace:!0}):_(s.type==="Coordinator"?"/settings/about":`/device/${s.ieee_address}/info`,{replace:!0}))},[m,s,_]);const o=({isActive:u})=>u?"tab tab-active":"tab",n=i.useMemo(()=>{if(!s)return e.jsx("div",{className:"flex-auto justify-center items-center",children:a("common:unknown_device")});switch(m){case"info":return e.jsx(S,{device:s});case"exposes":return e.jsx(k,{device:s});case"bind":return e.jsx(R,{device:s});case"reporting":return e.jsx(F,{device:s});case"settings":return e.jsx(z,{device:s});case"settings-specific":return e.jsx(V,{device:s});case"state":return e.jsx(B,{device:s});case"clusters":return e.jsx(C,{device:s});case"groups":return e.jsx(M,{device:s});case"scene":return e.jsx(G,{device:s});case"dev-console":return e.jsx(O,{device:s})}},[s,m,a]);return e.jsxs(e.Fragment,{children:[e.jsx(I,{devices:d,currentDevice:s,tab:m}),e.jsxs("div",{className:"tabs tabs-border mt-2",children:[e.jsxs(r,{to:`/device/${t}/info`,className:o,children:[e.jsx(c,{icon:b,className:"me-2"}),a("about")]}),e.jsxs(r,{to:`/device/${t}/exposes`,className:o,children:[e.jsx(c,{icon:h,className:"me-2"}),a("exposes")]}),e.jsxs(r,{to:`/device/${t}/bind`,className:o,children:[e.jsx(c,{icon:N,className:"me-2"}),a("bind")]}),e.jsxs(r,{to:`/device/${t}/reporting`,className:o,children:[e.jsx(c,{icon:E,className:"me-2"}),a("reporting")]}),e.jsxs(r,{to:`/device/${t}/settings`,className:o,children:[e.jsx(c,{icon:T,className:"me-2"}),a("settings")]}),e.jsxs(r,{to:`/device/${t}/settings-specific`,className:o,children:[e.jsx(c,{icon:w,className:"me-2"}),a("settings_specific")]}),e.jsxs(r,{to:`/device/${t}/state`,className:o,children:[e.jsx(c,{icon:L,className:"me-2"}),a("state")]}),e.jsxs(r,{to:`/device/${t}/clusters`,className:o,children:[e.jsx(c,{icon:P,className:"me-2"}),a("clusters")]}),e.jsxs(r,{to:`/device/${t}/groups`,className:o,children:[e.jsx(c,{icon:$,className:"me-2"}),a("groups")]}),e.jsxs(r,{to:`/device/${t}/scene`,className:o,children:[e.jsx(c,{icon:D,className:"me-2"}),a("scene")]}),e.jsxs(r,{to:`/device/${t}/dev-console`,className:o,children:[e.jsx(c,{icon:A,className:"me-2"}),a("dev_console")]}),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:n})]})]})}export{H as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as p,a as u,r as a,W as c,j as i}from"./index-BccmZcnH.js";import{F as d,a as f,g}from"./Feature-BZc2FS2v.js";import"./envs-CRUy-_iG.js";import"./DisplayValue-C55voi8G.js";import"./_createCompounder-DOVBRgWx.js";function F({device:e}){const{t:r}=p(["exposes"]),o=u(s=>s.bridgeInfo),{sendMessage:t}=a.useContext(c),n=a.useCallback(async s=>{await t("bridge/request/device/options",{id:e.ieee_address,options:s})},[t,e.ieee_address]);return e.definition?.options?.length?i.jsx("div",{className:"list bg-base-100",children:e.definition.options.map(s=>i.jsx(d,{feature:s,device:e,deviceState:o.config.devices[e.ieee_address]??{},onChange:n,featureWrapperClass:f,parentFeatures:[]},g(s)))}):r("empty_exposes_definition")}export{F as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,aj as v,b as f,W as g,j as e,B as j,x as C,T as h,F as _,z as S,a as x}from"./index-BccmZcnH.js";import{i as D,R as k,A as w}from"./RecallRemove-CrxvayYk.js";import{D as M}from"./DevicePicker-xS0T9qul.js";import{E as y}from"./EndpointPicker-DuGNCPo-.js";import{D as N}from"./DashboardFeatureWrapper-BCosdUvy.js";import{D as F}from"./DeviceCard-DCId-Vs8.js";import"./envs-CRUy-_iG.js";import"./Feature-BZc2FS2v.js";import"./DisplayValue-C55voi8G.js";import"./_createCompounder-DOVBRgWx.js";import"./InputField-CUhAi55r.js";import"./SelectField-Ca16rphE.js";import"./LastSeen-BWjXmUSJ.js";import"./format-B4QuVfKv.js";import"./Lqi-CkhLMJ19.js";import"./PowerSource-BV6oqaaB.js";import"./snakeCase-DyM1sm95.js";import"./DeviceImage-BGLcF_MT.js";import"./index-DTwwc0px.js";const E=t.memo(({devices:r,group:n})=>{const[i,o]=t.useState(""),[a,u]=t.useState(""),l=t.useMemo(()=>v(r.find(m=>m.ieee_address===a)),[a,r]),{t:d}=f(["groups","zigbee"]),{sendMessage:s}=t.useContext(g),c=t.useCallback(m=>{u(m.ieee_address);const b=v(m);o(b.values().next().value)},[]),p=t.useCallback(async()=>await s("bridge/request/group/members/add",{group:n.id.toString(),endpoint:i,device:a}),[s,n.id,i,a]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:d("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(M,{label:d("zigbee:device"),value:a,devices:r,onChange:c}),e.jsx(y,{label:d("zigbee:endpoint"),values:l,value:i,onChange:m=>o(m),disabled:!a})]}),e.jsx(j,{onClick:p,className:"btn btn-primary",disabled:i==null||i===""||!a,children:d("add_to_group")})]})}),A=t.memo(r=>{const{removeDeviceFromGroup:n,groupMember:i,device:o,deviceState:a,lastSeenConfig:u,setDeviceState:l}=r,{endpoint:d}=i,{t:s}=f(["groups","common"]),c=t.useMemo(()=>o.definition?C(o.definition.exposes,D):[],[o]),p=t.useCallback(async b=>await l(o.ieee_address,b),[o.ieee_address,l]),m=t.useCallback(async()=>await n(o.ieee_address,d),[o.ieee_address,d,n]);return e.jsx(F,{features:c,device:o,endpoint:d,deviceState:a,onChange:p,featureWrapperClass:N,lastSeenConfig:u,children:e.jsx(h,{onClick:m,className:"btn btn-square btn-outline btn-error btn-sm",title:s("remove_from_group"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:e.jsx(_,{icon:S})})})}),R=t.memo(({devices:r,group:n})=>{const i=x(s=>s.deviceStates),o=x(s=>s.bridgeInfo.config.advanced.last_seen),{sendMessage:a}=t.useContext(g),u=t.useCallback(async(s,c)=>await a("bridge/request/group/members/remove",{device:s,endpoint:c,group:n.id.toString()}),[a,n.id]),l=t.useCallback(async(s,c)=>{await a(`${s}/set`,c)},[a]),d=t.useMemo(()=>{const s=[];for(const c of n.members){const p=r.find(m=>m.ieee_address===c.ieee_address);p&&s.push(e.jsx("div",{className:"w-[23rem] card bg-base-200 rounded-box shadow-md",children:e.jsx(A,{removeDeviceFromGroup:u,device:p,groupMember:c,deviceState:i[p.friendly_name]??{},lastSeenConfig:o,setDeviceState:l})},`${c.ieee_address}-${c.endpoint}`))}return s},[n,r,o,i,u,l]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-center gap-3",children:d})});function Z({group:r}){const n=x(i=>i.devices);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(E,{devices:n,group:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(k,{target:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(w,{target:r,deviceState:{}})})]}),e.jsx(R,{devices:n,group:r})]})}export{Z as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
,@���~�6m�g�\��;E�"N��<�O6C���Ȧ�����GT[A!�!����/�����b��K*�9T�Q|�>��`>)�� ���<���-�N_v�,���/k�Bw�[����t/��9�Aɹ>�5�l�������"���< ⻠п3t.�ww3��2*s�[M�����: 9�L쬰'a����*�6�b�&ڎhi���0�ǧ�l�'�i`sL2���>g�������}"��0t�i����NB�������T7���ᐜ����C��n����{�NcT����6Do�3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as c,r as a,W as u,a as l,j as r}from"./index-BccmZcnH.js";import{F as m,a as x,g as f}from"./Feature-BZc2FS2v.js";import"./envs-CRUy-_iG.js";import"./DisplayValue-C55voi8G.js";import"./_createCompounder-DOVBRgWx.js";function F(o){const{device:e}=o,{t:i}=c(["exposes"]),{sendMessage:t}=a.useContext(u),n=l(s=>s.deviceStates[e.friendly_name]??{}),p=a.useCallback(async s=>{await t(`${e.ieee_address}/set`,s)},[t,e.ieee_address]),d=a.useCallback(async s=>{await t(`${e.ieee_address}/get`,s)},[t,e.ieee_address]);return e.definition?.exposes?.length?r.jsx("div",{className:"list bg-base-100",children:e.definition.exposes.map(s=>r.jsx(m,{feature:s,device:e,deviceState:n,onChange:p,onRead:d,featureWrapperClass:x,parentFeatures:[]},f(s)))}):i("empty_exposes_definition")}export{F as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ah as le,aZ as rr,a_ as tr,a$ as ar,b0 as nr,l as sr,b1 as or,b2 as cr,b3 as ir,b4 as lr,b5 as ur,aQ as ue,b6 as fe,b7 as fr,b8 as mr,b9 as hr,ba as pr,bb as dr,bc as xr,bd as me,be as br,bf as he,bg as gr,bh as yr,bi as z,bj as pe,bk as de,a3 as _r,bl as Cr,bm as vr,bn as jr,bo as Sr,bp as Tr,bq as kr,br as Er,bs as Nr,bt as Rr,bu as Ar,bv as wr,bw as Fr,bx as qr,by as $r,bz as Ir,bA as Br,bB as Mr,bC as Vr,bD as Or,bE as w,aS as Gr,bF as xe,bG as Ur,bH as Hr,bI as zr,bJ as Lr,bK as Be,bL as Pr,bM as Me,bN as Wr,bO as Dr,bP as Xr,bQ as Qr,r as l,j as o,b as A,B as j,F as ie,bR as Jr,ay as Yr,bS as Kr,bT as Zr,O as et}from"./index-BccmZcnH.js";import{D as U}from"./DisplayValue-C55voi8G.js";import{r as Ve,a as Oe,b as rt}from"./_createCompounder-DOVBRgWx.js";var L,be;function tt(){if(be)return L;be=1;function e(a,t,r){var s=-1,n=a.length;t<0&&(t=-t>n?0:n+t),r=r>n?n:r,r<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var u=Array(n);++s<n;)u[s]=a[s+t];return u}return L=e,L}var P,ge;function at(){if(ge)return P;ge=1;var e=tt();function a(t,r,s){var n=t.length;return s=s===void 0?n:s,!r&&s>=n?t:e(t,r,s)}return P=a,P}var W,ye;function Ge(){if(ye)return W;ye=1;var e="\\ud800-\\udfff",a="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",s=a+t+r,n="\\ufe0e\\ufe0f",u="\\u200d",f=RegExp("["+u+e+s+n+"]");function c(i){return f.test(i)}return W=c,W}var D,_e;function nt(){if(_e)return D;_e=1;function e(a){return a.split("")}return D=e,D}var X,Ce;function st(){if(Ce)return X;Ce=1;var e="\\ud800-\\udfff",a="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",s=a+t+r,n="\\ufe0e\\ufe0f",u="["+e+"]",f="["+s+"]",c="\\ud83c[\\udffb-\\udfff]",i="(?:"+f+"|"+c+")",p="[^"+e+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",d="\\u200d",x=i+"?",v="["+n+"]?",T="(?:"+d+"(?:"+[p,h,m].join("|")+")"+v+x+")*",E=v+x+T,b="(?:"+[p+f+"?",f,h,m,u].join("|")+")",g=RegExp(c+"(?="+c+")|"+b+E,"g");function _(k){return k.match(g)||[]}return X=_,X}var Q,ve;function ot(){if(ve)return Q;ve=1;var e=nt(),a=Ge(),t=st();function r(s){return a(s)?t(s):e(s)}return Q=r,Q}var J,je;function ct(){if(je)return J;je=1;var e=at(),a=Ge(),t=ot(),r=Ve();function s(n){return function(u){u=r(u);var f=a(u)?t(u):void 0,c=f?f[0]:u.charAt(0),i=f?e(f,1).join(""):u.slice(1);return c[n]()+i}}return J=s,J}var Y,Se;function Ue(){if(Se)return Y;Se=1;var e=ct(),a=e("toUpperCase");return Y=a,Y}var K,Te;function it(){if(Te)return K;Te=1;var e=Ve(),a=Ue();function t(r){return a(e(r).toLowerCase())}return K=t,K}var Z,ke;function lt(){if(ke)return Z;ke=1;var e=it(),a=Oe(),t=a(function(r,s,n){return s=s.toLowerCase(),r+(n?e(s):s)});return Z=t,Z}var ut=lt();const ft=le(ut);var ee,Ee;function mt(){if(Ee)return ee;Ee=1;var e=Oe(),a=Ue(),t=e(function(r,s,n){return r+(n?" ":"")+a(s)});return ee=t,ee}var ht=mt();const pt=le(ht),dt={battery_low:w,humidity:Or,illuminance:z,pressure:Vr,co2:Mr,voltage:Br,state:Ir,brightness:z,occupancy:$r,presence:qr,current:Fr,power:wr,energy:Ar,frequency:Rr,tamper:Nr,smoke:Er,radiation_dose_per_hour:kr,radioactive_events_per_minute:Tr,power_factor:Sr,mode:jr,sound:vr,position:Cr,alarm:_r,color_xy:de,color_hs:de,color_temp:pe,color_temp_startup:pe,illuminance_lux:z,soil_moisture:yr,water_leak:me,week:gr,workdays_schedule:he,holidays_schedule:he,away_mode:br,vibration:me,power_outage_count:xr,action:dr,angle_x:pr,angle_y:hr,angle_z:mr,side:fr,humidity_alarm:fe,temperature_alarm:fe,approach_distance:ue,distance:ue,trigger_count:ur,level_config:lr,station:ir,effect:cr,linkquality:or,system_mode:sr,gradient:nr,sensitivity:ar,test:tr,flow:rr},xt=(e,a)=>{let t=w;return e==null||(e>=85?(t=Be,a.push("text-success")):e>=65?t=Pr:e>=40?t=Me:e>=20?t=Wr:(t=w,a.push("text-error"))),t},bt=(e,a)=>{let t=w;switch(e){case"high":{t=Be,a.push("text-success");break}case"medium":{t=Me;break}case"low":{t=w,a.push("text-error");break}}return t},gt=(e,a,t)=>{let r=xe;return e==null||(a==="°F"&&(e=(e-32)/1.8),e>=30?(r=Ur,t.push("text-error")):e>=25?r=Hr:e>=20?r=zr:e>=15?r=Lr:e<5&&(r=xe,t.push("text-info"))),r},yt=(e,a,t)=>{let r;const s=[],n={};switch(e){case"battery":{r=xt(a,s);break}case"battery_state":{r=bt(a,s);break}case"battery_low":{a&&s.push("text-error");break}case"device_temperature":case"temperature":case"local_temperature":{r=gt(a,t,s);break}case"humidity":{a!=null&&a>60&&s.push("text-info");break}case"contact":{r=a?Xr:Qr,a||s.push("text-primary");break}case"occupancy":{a&&(s.push("text-warning"),n.beat=!0);break}case"presence":{a&&(s.push("text-warning"),n.beat=!0);break}case"tamper":{a&&(s.push("text-error"),n.beatFade=!0,n.shake=!0);break}case"water_leak":{a&&(s.push("text-primary"),n.beatFade=!0);break}case"vibration":{a&&(s.push("text-primary"),n.shake=!0);break}default:{e.includes("cyclic")&&(r=Dr);break}}return r?[r,s.join(" "),n]:(r=dt[e],r?[r,s.join(" "),n]:[Gr,"opacity-0",{}])},He=e=>`${e.type}-${e.name}-${e.label}-${e.property}-${e.access}-${e.category}-${e.endpoint}`;var C=(e=>(e[e.STATE=1]="STATE",e[e.SET=2]="SET",e[e.GET=4]="GET",e[e.STATE_SET=3]="STATE_SET",e[e.STATE_GET=5]="STATE_GET",e[e.ALL=7]="ALL",e))(C||{});const F=l.memo(({feature:e,deviceValue:a})=>o.jsxs("div",{children:[e.property&&o.jsx("span",{className:"font-bold",children:o.jsx(U,{value:a,name:e.name})}),"unit"in e&&o.jsx("span",{className:"text-xs ms-1",children:e.unit})]})),q=l.memo(e=>o.jsxs("div",{className:"alert alert-warning",role:"alert",children:["Unknown access ",o.jsx("pre",{children:e.feature.access})]})),_t=l.memo(e=>{const{feature:{access:a=C.SET,name:t,property:r,value_off:s,value_on:n},deviceValue:u,onChange:f,minimal:c}=e,{t:i}=A("zigbee"),p=l.useCallback(m=>f(r?{[r]:m}:m),[r,f]),h=l.useCallback(m=>{const d=m.target.checked?n:s;f(r?{[r]:d}:d)},[n,s,r,f]);if(a&C.SET){const m=u!=null,d=!c||c&&!m;return o.jsxs("div",{children:[d&&o.jsx(j,{className:"btn btn-link",item:s,onClick:p,children:o.jsx(U,{value:s,name:t})}),m?o.jsx("input",{className:"toggle",type:"checkbox",checked:u===n,onChange:h}):o.jsx("span",{title:i("unknown"),children:o.jsx(ie,{icon:Jr})}),d&&o.jsx(j,{className:"btn btn-link",item:n,onClick:p,children:o.jsx(U,{value:n,name:t})})]})}return a&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),N=l.memo(e=>{const{feature:a,onChange:t,parentFeatures:r,onRead:s,device:n,deviceState:u,featureWrapperClass:f,minimal:c,endpointSpecific:i,steps:p}=e,{type:h,property:m}=a,[d,x]=l.useState({}),{t:v}=A(["composite","common"]),T=l.useMemo(()=>Yr({},u,d),[u,d]),E="features"in a&&a.features||[],b=l.useMemo(()=>{if(h==="composite"&&r!==void 0){if(r.length===0)return!0;if(r.length===1){const y=r[0].type;return y!=null&&y!=="composite"&&y!=="list"}}return!1},[h,r]);l.useEffect(()=>{x({})},[n.ieee_address]);const g=l.useCallback(y=>{x({...d,...y}),b||t(h==="composite"&&m?{[m]:{...d,...y}}:y)},[d,h,m,b,t]),_=l.useCallback(()=>{const y={...u,...d};t(m?{[m]:y}:y)},[m,t,d,u]),k=l.useCallback(y=>{s?.(h==="composite"&&m?{[m]:y}:y)},[s,h,m]);return o.jsxs(o.Fragment,{children:[E.map(y=>o.jsx(er,{feature:y,parentFeatures:r??[],device:n,deviceState:T,onChange:g,onRead:k,featureWrapperClass:f,minimal:c,endpointSpecific:i,steps:p?.[y.name]},He(y))),b&&o.jsx("div",{className:"self-end float-right",children:o.jsx(j,{className:`btn btn-primary ${c?"btn-sm":""}`,onClick:_,children:v("common:apply")})})]})}),Ct=l.memo(e=>o.jsx(N,{...e}));var re,Ne;function vt(){if(Ne)return re;Ne=1;function e(a,t,r){return a===a&&(r!==void 0&&(a=a<=r?a:r),t!==void 0&&(a=a>=t?a:t)),a}return re=e,re}var te,Re;function jt(){if(Re)return te;Re=1;var e=/\s/;function a(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}return te=a,te}var ae,Ae;function St(){if(Ae)return ae;Ae=1;var e=jt(),a=/^\s+/;function t(r){return r&&r.slice(0,e(r)+1).replace(a,"")}return ae=t,ae}var ne,we;function Tt(){if(we)return ne;we=1;var e=St(),a=Kr(),t=rt(),r=NaN,s=/^[-+]0x[0-9a-f]+$/i,n=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt;function c(i){if(typeof i=="number")return i;if(t(i))return r;if(a(i)){var p=typeof i.valueOf=="function"?i.valueOf():i;i=a(p)?p+"":p}if(typeof i!="string")return i===0?i:+i;i=e(i);var h=n.test(i);return h||u.test(i)?f(i.slice(2),h?2:8):s.test(i)?r:+i}return ne=c,ne}var se,Fe;function kt(){if(Fe)return se;Fe=1;var e=vt(),a=Tt();function t(r,s,n){return n===void 0&&(n=s,s=void 0),n!==void 0&&(n=a(n),n=n===n?n:0),s!==void 0&&(s=a(s),s=s===s?s:0),e(a(r),s,n)}return se=t,se}var Et=kt();const S=le(Et),Nt=[.412453,.35758,.180423,.212671,.71516,.072169,.019334,.119193,.950227],Rt=[3.2404813432005266,-1.5371515162713183,-.49853632616888777,-.9692549499965684,1.8759900014898907,.041555926558292815,.05564663913517715,-.20404133836651123,1.0573110696453443],ze=.42,Le=.0031308,Pe=12.92,H=.055,O=e=>e<=Le?Pe*e:(1+H)*e**ze-H,At=1/ze,wt=O(Le),Ft=1/Pe,oe=e=>e<=wt?e*Ft:((e+H)/(1+H))**At,We=(e,a)=>{const t=[0,0,0];for(let r=0;r<3;r++){t[r]=0;for(let s=0;s<3;s++)t[r]+=a[r*3+s]*e[s]}return t},qe=(e,a,t)=>{const r=[oe(e),oe(a),oe(t)];return We(r,Nt)},qt=(e,a,t)=>{const r=We([e,a,t],Rt);return[O(r[0]),O(r[1]),O(r[2])]},De=(e,a,t)=>{const r=1-e-a;return qt(t/a*e,t,t/a*r)},Xe=(e,a,t=10)=>{let r=1;for(let s=0;s<t;s++){const n=Math.max(...De(e,a,r));r=r/n}return r},$=(e,a,t)=>{if(e/=255,a/=255,t/=255,e<1e-12&&a<1e-12&&t<1e-12){const[f,c,i]=qe(1,1,1),p=f+c+i;return[f/p,c/p,0]}const[r,s,n]=qe(e,a,t),u=r+s+n;return[r/u,s/u,s]},$t=(e,a,t)=>{t===void 0&&(t=Xe(e,a));const[r,s,n]=De(e,a,t);return[S(r*255,0,255),S(s*255,0,255),S(n*255,0,255)]},I=(e,a,t)=>{e/=255,a/=255,t/=255;const r=Math.max(e,a,t),s=r-Math.min(e,a,t),n=s?(r===e?(a-t)/s+(a<t?6:0):r===a?2+(t-e)/s:4+(e-a)/s)*60:0,u=r?s/r*100:0,f=r*100;return[S(n,0,360),S(u,0,100),S(f,0,100)]},It=(e,a,t)=>{a/=100,t/=100;const r=~~(e/60),s=e/60-r,n=t*(1-a),u=t*(1-a*s),f=t*(1-a*(1-s)),c=r%6,i=[t,u,n,n,f,t][c]*255,p=[f,t,t,u,n,n][c]*255,h=[n,n,f,t,t,u][c]*255;return[S(i,0,255),S(p,0,255),S(h,0,255)]},B=(e,a,t)=>{const[r,s,n]=[e,a,t].map(u=>Math.round(u).toString(16).padStart(2,"0"));return`#${r}${s}${n}`},Bt=e=>(e=e.slice(1),Array.from({length:3}).map((a,t)=>Number.parseInt(e.slice(t*2,t*2+2),16))),R=(e,a)=>{switch(a){case"color_xy":{const{x:t=.313,y:r=.329,Y:s=Xe(t,r===0?.329:r)}=e,n=r===0?[255,255,255]:$t(t,r,s);return{color_rgb:n,color_hs:I(...n),color_xy:[t,r,s],hex:B(...n)}}case"color_hs":{const{hue:t=0,saturation:r=0}=e,s=100,n=It(t,r,s);return{color_rgb:n,color_hs:[t,r,s],color_xy:$(...n),hex:B(...n)}}case"color_rgb":{const{r:t=255,g:r=255,b:s=255}=e;return{color_rgb:[t,r,s],color_hs:I(t,r,s),color_xy:$(t,r,s),hex:B(t,r,s)}}case"hex":{const t=e.hex,r=Bt(t);return{color_rgb:r,color_hs:I(...r),color_xy:$(...r),hex:t}}default:{const t=[255,255,255];return{color_rgb:t,color_hs:I(...t),color_xy:$(...t),hex:B(...t)}}}},$e=(e,a)=>{switch(a){case"color_xy":return{x:e.color_xy[0],y:e.color_xy[1]};case"color_hs":return{hue:e.color_hs[0],saturation:e.color_hs[1]};case"color_rgb":return{r:e.color_rgb[0],g:e.color_rgb[1],b:e.color_rgb[2]};case"hex":return{hex:e.hex}}},Qe=e=>`${e[0].toFixed(3)}, ${e[1].toFixed(3)}, ${e[2].toFixed(3)}`,G=e=>`${e[0].toFixed(2)}°, ${e[1].toFixed(2)}%, ${e[2].toFixed(2)}%`,Je=e=>`${e[0].toFixed(0)}, ${e[1].toFixed(0)}, ${e[2].toFixed(0)}`,Ye=e=>e,Ie=e=>({color_xy:Qe(e.color_xy),color_hs:G(e.color_hs),color_rgb:Je(e.color_rgb),hex:Ye(e.hex)}),Mt=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((t,r)=>+(a[r]??0))},Vt=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((t,r)=>S(+(a[r]??0),0,r?100:360))},Ot=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((t,r)=>S(+(a[r]??0),0,255))},ce=(e,a)=>{switch(a){case"color_xy":{const t=Mt(e);return R({x:t[0],y:t[1]},"color_xy")}case"color_hs":{const t=Vt(e);return R({hue:t[0],saturation:t[1]},"color_hs")}case"color_rgb":{const t=Ot(e);return R({r:t[0],g:t[1],b:t[2]},"color_rgb")}case"hex":return R({hex:e},"hex")}},Gt="linear-gradient(to right, white, transparent)",Ut="linear-gradient(to right, rgb(255, 0, 0), rgb(255, 255, 0), rgb(0, 255, 0), rgb(0, 255, 255), rgb(0, 0, 255), rgb(255, 0, 255), rgb(255, 0, 0))",M=l.memo(({label:e,...a})=>o.jsxs("label",{className:"input",children:[e,o.jsx("input",{type:"text",className:"grow",...a})]})),Ke=l.memo(e=>{const{onChange:a,value:t={},format:r,minimal:s}=e,[n,u]=l.useState(R(t,r)),[f,c]=l.useState(Ie(n)),[i,p]=l.useState({color_rgb:!1,color_hs:!1,color_xy:!1,hex:!1});l.useEffect(()=>{const b=R(t,r);u(b),c(Ie(b))},[t,r]),l.useEffect(()=>{if(!i.color_xy){const b=Qe(n.color_xy);c(g=>({...g,color_xy:b}))}},[i.color_xy,n.color_xy]),l.useEffect(()=>{if(!i.color_hs){const b=G(n.color_hs);c(g=>({...g,color_hs:b}))}},[i.color_hs,n.color_hs]),l.useEffect(()=>{if(!i.color_rgb){const b=Je(n.color_rgb);c(g=>({...g,color_rgb:b}))}},[i.color_rgb,n.color_rgb]),l.useEffect(()=>{if(!i.hex){const b=Ye(n.hex);c(g=>({...g,hex:b}))}},[i.hex,n.hex]);const h=l.useCallback(b=>{if(b.target.value){const g=Array.from(n.color_hs);g[1]=b.target.valueAsNumber;const _=G(g);c(k=>({...k,color_hs:_})),u(ce(_,"color_hs"))}},[n.color_hs]),m=l.useCallback(b=>{if(b.target.value){const g=Array.from(n.color_hs),_=g[1];g[1]=_===0?100:_,g[0]=b.target.valueAsNumber;const k=G(g);c(y=>({...y,color_hs:k})),u(ce(k,"color_hs"))}},[n.color_hs]),d=l.useCallback(b=>{const{value:g,name:_}=b.target;c(k=>({...k,[_]:g})),u(ce(g,_))},[]),x=l.useCallback(b=>{p(g=>({...g,[b.target.name]:!0}))},[]),v=l.useCallback(b=>{p(g=>({...g,[b.target.name]:!1})),a($e(n,r))},[n,r,a]),T=l.useCallback(()=>{a($e(n,r))},[n,r,a]),E=l.useMemo(()=>`hsl(${n.color_hs[0]}, 100%, 50%)`,[n.color_hs[0]]);return o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:o.jsx("div",{className:`w-full${s?" max-w-xs":""}`,children:o.jsx("input",{type:"range",min:0,max:100,value:n.color_hs[1],className:`range [--range-bg:transparent] [--range-fill:0] w-full${s?" range-xs ":""}`,style:{backgroundImage:Gt,backgroundColor:E},onChange:h,onTouchEnd:T,onMouseUp:T})})}),o.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:o.jsx("div",{className:`w-full${s?" max-w-xs":""}`,children:o.jsx("input",{type:"range",min:0,max:360,value:n.color_hs[0],className:`range [--range-bg:transparent] [--range-fill:0] w-full${s?" range-xs ":""}`,style:{backgroundImage:Ut},onChange:m,onTouchEnd:T,onMouseUp:T})})}),!s&&o.jsxs("div",{className:"flex flex-row flex-wrap gap-2 justify-around",children:[o.jsx(M,{label:"hex",name:"hex",value:f.hex,onChange:d,onFocus:x,onBlur:v}),o.jsx(M,{label:"rgb",name:"color_rgb",value:f.color_rgb,onChange:d,onFocus:x,onBlur:v}),o.jsx(M,{label:"hsv",name:"color_hs",value:f.color_hs,onChange:d,onFocus:x,onBlur:v}),o.jsx(M,{label:"xyY",name:"color_xy",value:f.color_xy,onChange:d,onFocus:x,onBlur:v})]})]})}),Ht=l.memo(e=>{const{deviceValue:a,feature:{name:t,features:r,property:s},onChange:n,minimal:u}=e,f=l.useMemo(()=>{const i={},p=a!=null&&typeof a=="object"?a:{};for(const h of r){const m=Number.parseFloat(p[h.name]);i[h.name]=Number.isNaN(m)?0:m}return i},[a,r]),c=l.useCallback(i=>n({[s??"color"]:i}),[s,n]);return o.jsx(Ke,{onChange:c,value:f,format:t,minimal:u})}),zt={position:[0,25,50,75,100].map(e=>({value:e,name:`${e}`})),tilt:[0,25,50,75,100].map(e=>({value:e,name:`${e}`}))},Lt=l.memo(e=>o.jsx(N,{...e,steps:zt}));function V(e){return typeof e!="object"}const Ze=l.memo(e=>{const{onChange:a,values:t,value:r,minimal:s}=e,{t:n}=A("common"),u=V(r),f=l.useCallback(c=>{const i=t.find(p=>V(p)?p===c.target.value:p.value===Number.parseInt(c.target.value,10));a(i)},[t,a]);return s?o.jsxs("select",{className:"select",onChange:f,value:u?r:r?.value,children:[o.jsx("option",{value:"",disabled:!0,children:n("select_value")}),t.map(c=>{const i=V(c);return o.jsx("option",{value:i?c:c.value,children:i?c:c.name},i?c:c.name)})]}):o.jsx("div",{className:"join join-vertical lg:join-horizontal",children:t.map(c=>{const i=V(c),p=i?c===r:c.value===(u?r:r?.value);return o.jsx(j,{className:`btn btn-soft btn-sm join-item${p?" btn-active":""}`,onClick:h=>a(h),item:i?c:c.value,title:i?`${c}`:c.description,children:i?o.jsx(U,{value:c,name:""}):c.name},i?c:c.name)})})}),Pt=6,Wt=l.memo(e=>{const{onChange:a,feature:{access:t=C.SET,values:r,property:s},deviceValue:n,minimal:u}=e;return t&C.SET?o.jsx(Ze,{onChange:f=>a(s?{[s]:f}:f),values:r,value:n!=null&&(typeof n=="string"||typeof n=="number"||typeof n=="object")?n:"",minimal:u||r.length>Pt}):t&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),Dt=l.memo(e=>o.jsx(N,{...e})),Xt=l.memo(e=>{const{minimal:a,onChange:t,feature:{length_min:r,length_max:s,property:n},deviceValue:u}=e,{t:f}=A(["gradient","common"]),[c,i]=l.useState(r>0?Array(r).fill("#ffffff"):[]);l.useEffect(()=>{u&&Array.isArray(u)&&u.length>0&&i(u)},[u]);const p=l.useCallback((b,g)=>{const _=Array.from(c);_[b]=g,i(_)},[c]),h=l.useCallback(()=>{const b=Array.from(c);b.push("#ffffff"),i(b)},[c]),m=l.useCallback(b=>{const g=Array.from(c);g.splice(b,1),i(g)},[c]),d=l.useCallback(()=>t({[n??"gradient"]:c}),[c,n,t]),[x,v]=l.useState(!1),[T,E]=l.useState(!1);return l.useEffect(()=>{v(c.length<s),E(c.length>r)},[c,r,s]),o.jsxs("div",{className:"flex flex-col gap-2",children:[c.map((b,g)=>o.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center",children:[o.jsx(Ke,{onChange:_=>{p(g,_.hex)},value:{hex:b},format:"hex",minimal:a}),T&&o.jsx(j,{className:"btn btn-sm btn-error",onClick:()=>m(g),children:"-"})]},`${b}-${g}`)),x&&o.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:o.jsx(j,{className:"btn btn-sm btn-success",onClick:h,children:"+"})}),o.jsx("div",{children:o.jsx(j,{className:`btn btn-primary ${a?"btn-sm":""}`,onClick:d,children:f("common:apply")})})]})}),Qt={brightness:[0,25,50,75,100].map(e=>({value:Zr(e,[0,100],[0,255]),name:`${e}%`})),color_temp:[1e3,2e3,3e3,4e3,5e3,6500].map(e=>({value:1e6/e,name:`${e}K`}))},Jt=l.memo(e=>o.jsx(N,{...e,steps:Qt}));function Yt(e){return e.type==="composite"&&(e.name==="color_xy"||e.name==="color_hs")}const Kt=l.memo(e=>{const{t:a}=A("zigbee"),{children:t,feature:r,deviceValue:s,onRead:n,endpointSpecific:u}=e,f=r.unit,c=l.useMemo(()=>yt(r.name,s,f),[f,r.name,s]),i=l.useMemo(()=>n!==void 0&&(!!(r.property&&r.access&C.GET)||Yt(r)),[r,n]),p=e.parentFeatures?.[e.parentFeatures.length-1],h=r.name==="state"?r.property:r.name;let m=r.label||pt(ft(h));p?.label&&r.name==="state"&&p.type!=="light"&&p.type!=="switch"&&(m=`${p.label} ${r.label.charAt(0).toLowerCase()}${r.label.slice(1)}`);const d=l.useCallback(x=>{x.property&&n?.({[x.property]:""})},[n]);return o.jsxs("div",{className:"list-row p-3",children:[o.jsx("div",{children:o.jsx(ie,{icon:c[0],fixedWidth:!0,className:c[1],...c[2],size:"2xl"})}),o.jsxs("div",{children:[o.jsxs("div",{title:h,children:[m,!u&&r.endpoint?` (${a("endpoint")}: ${r.endpoint})`:""]}),o.jsx("div",{className:"text-xs font-semibold opacity-60",children:r.description})]}),o.jsx("div",{className:"list-col-wrap flex flex-col gap-2",children:t}),i&&o.jsx(j,{item:r,onClick:d,className:"btn btn-xs btn-square btn-primary",children:o.jsx(ie,{icon:et})})]})}),Zt=l.memo(e=>{const{onChange:a,value:t,feature:r,parentFeatures:s}=e,[n,u]=l.useState(t);l.useEffect(()=>{u(t)},[t]);const f=l.useCallback(h=>{u(h),a(h)},[a]),c=l.useCallback((h,m)=>{const d=Array.from(n);typeof h=="object"&&h!=null&&(h={...n[m],...h}),d[m]=h??"",f(d)},[n,f]),i=l.useCallback(h=>{const m=Array.from(n);m.splice(h,1),f(m)},[n,f]),p=l.useCallback(()=>u([...n,r.type==="composite"?{}:""]),[n,r.type]);return n.length===0?o.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:o.jsx(j,{className:"btn btn-success col-1",onClick:p,children:"+"})}):n.map((h,m)=>o.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[o.jsx(er,{feature:r,device:{},deviceState:h,onChange:d=>c(d,m),featureWrapperClass:Kt,parentFeatures:s}),o.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[o.jsx(j,{item:m,className:"btn btn-sm btn-error btn-square join-item",onClick:i,children:"-"}),n.length-1===m&&o.jsx(j,{className:"btn btn-sm btn-success btn-square join-item",onClick:p,children:"+"})]})]},m))}),ea=l.memo(e=>{const{t:a}=A(["list","common"]),{feature:t,minimal:r,parentFeatures:s,onChange:n,deviceValue:u}=e,[f,c]=l.useState([]),i=l.useMemo(()=>{if(s!==void 0){if(s.length===0)return!0;if(s.length===1){const x=s[0].type;return x!=null&&x!=="composite"&&x!=="list"}}return!1},[s]);l.useEffect(()=>{u?Array.isArray(u)?c(u):t.property&&typeof u=="object"?c(u[t.property]??[]):c([]):c([])},[t.property,u]);const p=l.useCallback(x=>{c(x),i||n(t.property?{[t.property]:x}:x)},[t.property,n,i]),h=l.useCallback(()=>{n(t.property?{[t.property]:f}:f)},[t.property,n,f]),{access:m=C.SET,item_type:d}=t;return m&C.SET?o.jsxs(o.Fragment,{children:[o.jsx(Zt,{feature:d,parentFeatures:[...s,t],onChange:p,value:f}),i&&o.jsx("div",{children:o.jsx(j,{className:`btn btn-primary ${r?"btn-sm":""}`,onClick:h,disabled:f.length===0,children:a("common:apply")})})]}):m&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),ra=l.memo(e=>o.jsx(N,{...e})),ta=l.memo(e=>{const{onChange:a,value:t,min:r,max:s,unit:n,steps:u,minimal:f,...c}=e,[i,p]=l.useState(t),h=r!=null&&s!=null;l.useEffect(()=>{p(t)},[t]);const m=l.useCallback(x=>{p(x.target.value?x.target.valueAsNumber:"")},[]),d=l.useCallback(x=>!x.target.validationMessage&&a(i===""?null:i),[i,a]);return o.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:[!f&&u?o.jsx(Ze,{values:u,onChange:a,value:i}):null,h?o.jsxs("div",{className:"w-full max-w-xs",children:[o.jsx("input",{min:r,max:s,type:"range",className:"range range-xs range-primary validator",value:i,onChange:m,onTouchEnd:d,onMouseUp:d,...c}),o.jsxs("div",{className:"flex justify-between px-1 mt-1 text-xs",children:[o.jsx("span",{children:r}),f&&o.jsx("span",{children:i}),o.jsx("span",{children:s})]})]}):null,(!f||!h)&&o.jsxs("label",{className:"input",children:[o.jsx("input",{type:"number",className:"grow validator",value:i,onChange:m,onBlur:d,min:r,max:s,...c}),n]})]})}),aa=l.memo(e=>{const{feature:{presets:a,access:t=C.SET,property:r,unit:s,value_max:n,value_min:u,value_step:f},deviceValue:c,steps:i,onChange:p,minimal:h}=e;return t&C.SET?o.jsx(ta,{onChange:m=>p(r?{[r]:m}:m),value:typeof c=="number"?c:"",min:u,max:n,step:f,steps:a?.length?a:i,unit:s,minimal:h}):t&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),na=l.memo(e=>o.jsx(N,{...e})),sa=l.memo(e=>{const{onChange:a,value:t,...r}=e,[s,n]=l.useState(t);return l.useEffect(()=>{n(t)},[t]),o.jsx("input",{type:"text",className:"input validator",value:s,onChange:u=>n(u.target.value),onBlur:u=>!u.target.validationMessage&&a(s),...r})}),oa=l.memo(e=>{const{feature:{access:a=C.SET,property:t},deviceValue:r,onChange:s}=e;return a&C.SET?o.jsx(sa,{onChange:n=>s(t?{[t]:n}:n),value:r!=null?typeof r=="string"?r:JSON.stringify(r):""}):a&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),er=l.memo(e=>{const{feature:a,device:t,deviceState:r,steps:s,onRead:n,onChange:u,featureWrapperClass:f,minimal:c,endpointSpecific:i,parentFeatures:p}=e,h=l.useMemo(()=>a.property?r[a.property]:r,[a.property,r[a.property]]),m=l.useMemo(()=>He(a),[a]),d=l.useMemo(()=>({device:t,deviceValue:h,onChange:u,onRead:n,featureWrapperClass:f,minimal:c,endpointSpecific:i,parentFeatures:p}),[t,h,u,n,f,c,i,p]),x=l.useMemo(()=>({feature:a,onRead:n,deviceValue:h,parentFeatures:p,endpointSpecific:i}),[a,n,h,p,i]);switch(a.type){case"binary":return o.jsx(f,{...x,children:o.jsx(_t,{feature:a,...d},m)},m);case"numeric":return o.jsx(f,{...x,children:o.jsx(aa,{feature:a,...d,steps:s},m)},m);case"list":return a.name==="gradient"&&a.length_min!=null&&a.length_max!=null?o.jsx(f,{...x,children:o.jsx(Xt,{feature:a,...d},m)},m):o.jsx(f,{...x,children:o.jsx(ea,{feature:a,...d},m)},m);case"text":return o.jsx(f,{...x,children:o.jsx(oa,{feature:a,...d},m)},m);case"enum":return o.jsx(f,{...x,children:o.jsx(Wt,{feature:a,...d},m)},m);case"light":return o.jsx(Jt,{feature:a,...d,deviceState:r},m);case"switch":return o.jsx(na,{feature:a,...d,deviceState:r},m);case"cover":return o.jsx(Lt,{feature:a,...d,deviceState:r},m);case"lock":return o.jsx(ra,{feature:a,...d,deviceState:r},m);case"climate":return o.jsx(Ct,{feature:a,...d,deviceState:r},m);case"fan":return o.jsx(Dt,{feature:a,...d,deviceState:r},m);case"composite":{if(a.name==="color_xy"||a.name==="color_hs")return o.jsx(f,{...x,children:o.jsx(Ht,{feature:a,...d},m)},m);const v=p&&a.property?r[a.property]:r;return o.jsx(f,{...x,children:o.jsx(N,{feature:a,...d,deviceState:v},m)},m)}default:return console.error("Unsupported feature",a),o.jsx(f,{...x,children:o.jsx("pre",{children:JSON.stringify(a,null,4)})},m)}});export{er as F,Kt as a,C as b,yt as c,ft as d,He as g,pt as s};
|
|
Binary file
|
|
Binary file
|
|
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,M as d,bW as f}from"./index-BccmZcnH.js";import{S as g}from"./SettingsList-FVZvadEn.js";import"./envs-CRUy-_iG.js";import"./CheckboxField-Dx2QxjzC.js";import"./InputField-CUhAi55r.js";import"./NumberField-Bu5IU0l2.js";import"./SelectField-Ca16rphE.js";function k({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{k as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,W as w,G as y,a as r,b as N,a5 as S,j as s,a6 as x,F as u,f as k,B as f,A as E,a7 as I,a8 as A,a9 as G,aa as M}from"./index-BccmZcnH.js";import{C as F}from"./CheckboxField-Dx2QxjzC.js";import{D}from"./DebouncedInput-Z7O3YrBh.js";import{S as g}from"./SelectField-Ca16rphE.js";import"./envs-CRUy-_iG.js";const O={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 B(){const{sendMessage:m}=l.useContext(w),[t,d]=l.useState(""),[n,j]=l.useState("all"),[i,L]=l.useState(!1),h=y(),b=r(e=>e.logsLimit),v=r(e=>e.bridgeInfo.config.advanced.log_level),{t:a}=N("logs"),c=r(e=>e.logs),p=l.useMemo(()=>c.filter(e=>(n==="all"||e.level===n)&&(i||!t||e.message.toLowerCase().includes(t.toLowerCase()))),[t,i,n,c]),_=l.useCallback((e,o)=>t&&e.toLowerCase().includes(t.toLowerCase())?O[o]:S[o],[t]),C=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(g,{name:"log_level",label:a("show_only"),value:n,onChange:e=>j(e.target.value),children:[s.jsx("option",{value:"all",children:"all"},"all"),x.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("div",{className:"join",children:[s.jsxs("label",{className:"input w-64 join-item",children:[s.jsx(u,{icon:k}),s.jsx(D,{className:"",type:"search",onChange:e=>d(e.toString()),placeholder:a("common:search"),value:t})]}),s.jsx(f,{item:"",onClick:d,className:"btn btn-square join-item",title:a("common:clear"),children:s.jsx(u,{icon:E})})]})]}),s.jsx(F,{name:"highlight_only",label:a("highlight_only"),checked:i,onChange:e=>L(e.target.checked)}),s.jsx(g,{name:"log_limit",label:a("logs_limit"),onChange:e=>{h(A(Number.parseInt(e.target.value)))},value:b,children:I.map(e=>s.jsx("option",{value:e,children:e},e))}),s.jsx(f,{onClick:()=>{h(G())},className:"btn btn-primary self-center",disabled:c.length===0,children:a("common:clear")}),s.jsx("div",{className:"ml-auto",children:s.jsx(g,{name:"log_level_config",label:a("log_level_config"),value:v,onChange:e=>!e.target.validationMessage&&C(e.target.value),children:x.map(e=>s.jsx("option",{value:e,children:e},e))})})]}),s.jsx("div",{className:"mockup-code w-full mt-1 mb-3",children:p.length>0?p.map((e,o)=>s.jsx("pre",{"data-prefix":o,className:_(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{B as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,j as t,F as i,b1 as n}from"./index-BccmZcnH.js";import{D as a}from"./DisplayValue-C55voi8G.js";const x=r.memo(({value:s})=>{let e="";return s&&(s<75?e="text-error":s<125?e="text-warning":s>200&&(e="text-success")),t.jsxs(t.Fragment,{children:[t.jsx(i,{icon:n,className:e})," ",t.jsx("span",{className:e,children:t.jsx(a,{value:s,name:"linkquality"})})]})});export{x as L};
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./RawNetworkData-DAbMk6t_.js","./index-BccmZcnH.js","./envs-CRUy-_iG.js","./index-LLsrh-Ne.css","./DeviceImage-BGLcF_MT.js","./index-DTwwc0px.js","./DebouncedInput-Z7O3YrBh.js","./PowerSource-BV6oqaaB.js","./snakeCase-DyM1sm95.js","./_createCompounder-DOVBRgWx.js","./index-Bs7zcW7e.js","./Lqi-CkhLMJ19.js","./DisplayValue-C55voi8G.js","./RawNetworkMap-DcUDlHgQ.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{G as C,r as s,W as M,b as R,a as m,s as d,I as h,J as E,K as T,j as e,F as n,M as x,B as z,O as I,i as S,_ as g}from"./index-BccmZcnH.js";import{C as A}from"./CheckboxField-Dx2QxjzC.js";import{S as f}from"./SelectField-Ca16rphE.js";import"./envs-CRUy-_iG.js";const D=s.lazy(async()=>await g(()=>import("./RawNetworkData-DAbMk6t_.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url)),F=s.lazy(async()=>await g(()=>import("./RawNetworkMap-DcUDlHgQ.js"),__vite__mapDeps([13,1,2,3,5,10]),import.meta.url));function q(){const o=C(),{sendMessage:u}=s.useContext(M),{t:a}=R(["network","common"]),i=m(t=>t.networkMapIsLoading),r=m(t=>t.networkMap),[l,w]=s.useState("raw"),[c,j]=s.useState(!1),[p,k]=s.useState(d.get(h,"data")),v=s.useCallback(t=>{t.target.value&&w(t.target.value)},[]),y=s.useCallback(t=>{t.target.value&&(d.set(h,t.target.value),k(t.target.value))},[]),b=s.useCallback(t=>{j(t.target.checked)},[]),_=s.useCallback(async()=>{o(E(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(A,{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:I}):e.jsx(n,{icon:S})}),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{q as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,b as f,j as s,B as S,F as u,U as F,T as h,V as g,X as q,Y as M,a as L,W as z,L as A,Z as O}from"./index-BccmZcnH.js";import{D as U}from"./DeviceImage-BGLcF_MT.js";import{C as P}from"./CheckboxField-Dx2QxjzC.js";import{T as B}from"./Table-7bVWMaUR.js";import{M as R,V as T}from"./VendorLink-CH3XJ5NJ.js";import{P as E}from"./PowerSource-BV6oqaaB.js";import"./envs-CRUy-_iG.js";import"./index-DTwwc0px.js";import"./DebouncedInput-Z7O3YrBh.js";import"./snakeCase-DyM1sm95.js";import"./_createCompounder-DOVBRgWx.js";const I=o.memo(({label:l,remaining:n,progress:t})=>{if(n&&n>0){const a=Math.floor(n/3600),i=Math.floor(n/60)%60,m=Math.floor(n%60),r=a>0,b=i>0;return s.jsxs(s.Fragment,{children:[s.jsx("progress",{className:"progress w-48",value:t,max:"100"}),s.jsxs("div",{children:[l," ",r?`${a}:`:"",b?`${i.toString().padStart(2,"0")}:`:"",m.toString().padStart(2,"0")]})]})}return s.jsx("progress",{className:"progress w-48",value:t,max:"100"})}),V=o.memo(l=>{const{t:n}=f(["ota","common"]),{device:t,state:a,onCheckClick:i,onUpdateClick:m,onScheduleClick:r,onUnscheduleClick:b}=l;return a==null||a.state==="idle"?s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(S,{className:"btn btn-square btn-outline btn-primary join-item",onClick:i,item:t.ieee_address,title:n("check"),children:s.jsx(u,{icon:F})}),s.jsx(h,{className:"btn btn-square btn-outline btn-info join-item",onClick:r,item:t.ieee_address,title:n("schedule"),modalDescription:n("schedule_info"),modalCancelLabel:n("common:cancel"),children:s.jsx(u,{icon:g})})]}):a.state==="updating"?s.jsx(I,{label:n("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-square btn-outline btn-error join-item",onClick:m,item:t.ieee_address,title:n("update"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:s.jsx(u,{icon:q})}),s.jsx(h,{className:"btn btn-square btn-outline btn-info join-item",onClick:r,item:t.ieee_address,title:n("schedule"),modalDescription:n("schedule_info"),modalCancelLabel:n("common:cancel"),children:s.jsx(u,{icon:g})})]}):a.state==="scheduled"?s.jsx(h,{className:"btn btn-square btn-outline btn-error join-item",onClick:b,item:t.ieee_address,title:n("unschedule"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:s.jsx(u,{icon:M})}):s.jsxs(s.Fragment,{children:[s.jsx(S,{className:"btn btn-square btn-outline btn-primary join-item",onClick:i,item:t.ieee_address,title:n("check"),children:s.jsx(u,{icon:F})}),s.jsx(h,{className:"btn btn-square btn-outline btn-info join-item",onClick:r,item:t.ieee_address,title:n("schedule"),modalDescription:n("schedule_info"),modalCancelLabel:n("common:cancel"),children:s.jsx(u,{icon:g})})]})})}),D=o.memo(l=>{const{t:n}=f("ota"),t=o.useMemo(()=>{if(l.version==null||l.version<0)return;const a=l.version.toString(16).padStart(8,"0"),i=`${a[0]}.${a[1]}`,m=a.slice(2,4),r=`${a[4]}.${a[5]}`,b=a.slice(6);return[i,m,r,b]},[l.version]);return t===void 0?s.jsx("span",{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:[n("app"),": ",`${t[0]} build ${t[1]}`]}),s.jsxs("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default join-item w-full",children:[n("stack"),": ",`${t[2]} build ${t[3]}`]})]})}),K=o.memo(({device:l})=>{const{t:n}=f("zigbee");let t="https://github.com/Koenkk/zigbee-OTA/releases";const a=l.software_build_id||n("unknown");switch(l?.definition?.vendor){case"IKEA":t="https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html";break;case"Inovelli":t="https://help.inovelli.com/en/articles/8503774-what-is-the-latest-firmware-version-for-your-device#h_b74c1e7dc6";break;case"Philips":t=`https://www.philips-hue.com/en-us/support/release-notes/${l.definition?.exposes.find(i=>i.type==="light")?"lamps":"accessories"}`;break;case"Ubisys":t=`https://www.ubisys.de/en/support/firmware/change-logs-${l.definition?.model?.replace(/[-]/g,"").toLowerCase()}/`;break}return s.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:t,className:"link link-hover",children:a})});function te(){const l=L(e=>e.devices),n=L(e=>e.deviceStates),{sendMessage:t}=o.useContext(z),{t:a}=f(["ota","zigbee","common"]),[i,m]=o.useState([]),[r,b]=o.useState(!1);o.useEffect(()=>{m([])},[l]);const p=o.useMemo(()=>{const e=[];for(const c of l)if(c.definition?.supports_ota&&!c.disabled){const d=n[c.friendly_name]??{};(!r||d.update?.state==="available")&&e.push({device:c,state:d.update,batteryState:c.power_source==="Battery"?{batteryPercent:d.battery,batteryState:d.battery_state,batteryLow:d.battery_low}:void 0,selected:i.includes(c.ieee_address)})}return e},[n,l,i,r]),x=o.useCallback(e=>{e.target.checked?m(p.map(({device:c})=>c.ieee_address)):m([])},[p]),j=o.useCallback((e,c)=>{m(c?[...i,e.ieee_address]:i.filter(d=>d!==e.ieee_address))},[i]),k=o.useCallback(async()=>{await Promise.allSettled(i.map(e=>t("bridge/request/device/ota_update/check",{id:e})))},[t,i]),_=o.useCallback(async()=>{await Promise.allSettled(i.map(e=>t("bridge/request/device/ota_update/update",{id:e})))},[t,i]),C=o.useCallback(async e=>await t("bridge/request/device/ota_update/check",{id:e}),[t]),v=o.useCallback(async e=>await t("bridge/request/device/ota_update/update",{id:e}),[t]),w=o.useCallback(async e=>await t("bridge/request/device/ota_update/schedule",{id:e}),[t]),y=o.useCallback(async e=>await t("bridge/request/device/ota_update/unschedule",{id:e}),[t]),N=o.useCallback(e=>{b(e.target.checked)},[]),$=o.useMemo(()=>[{id:"select",header:()=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:x,defaultChecked:i.length===p.length})}),accessorFn:()=>"",cell:({row:{original:{device:e,selected:c}}})=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:d=>j(e,d.target.checked),defaultChecked:c})}),enableColumnFilter:!1,enableSorting:!1},{id:"friendly_name",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-11 w-11",style:{overflow:"visible"},children:s.jsx(U,{device:e,otaState:c?.state,disabled:!1})})}),s.jsxs("div",{className:"flex-grow flex flex-col",children:[s.jsxs(A,{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:"max-w-3xs text-xs opacity-50 truncate",title:e.description,children:e.description}),s.jsxs("div",{className:"flex flex-row gap-1 mt-0.5 items-center",children:[s.jsxs("span",{className:"badge badge-sm badge-soft badge-ghost cursor-default",title:a("zigbee:firmware_id"),children:[s.jsx(u,{icon:O}),s.jsx(K,{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(E,{device:e,...d})})]})]})]}),filterFn:"includesString"},{id:"model",header:a("zigbee:model"),accessorFn:({device:e})=>[e.definition?.model,e.model_id,e.definition?.vendor,e.manufacturer].join(" "),cell:({row:{original:{device:e}}})=>s.jsxs(s.Fragment,{children:[s.jsx(R,{device:e}),s.jsx("div",{children:s.jsx("span",{className:"badge badge-sm badge-ghost",title:a("zigbee:manufacturer"),children:s.jsx(T,{device:e})})})]}),filterFn:"includesString"},{id:"firmware_version",header:a("firmware_version"),accessorFn:({state:e})=>e?.installed_version,cell:({row:{original:{state:e}}})=>s.jsx(D,{version:e?.installed_version}),enableColumnFilter:!1},{id:"available_firmware_version",header:a("available_firmware_version"),accessorFn:({state:e})=>e?.latest_version,cell:({row:{original:{state:e}}})=>s.jsx(D,{version:e?.latest_version}),enableColumnFilter:!1},{id:"actions",header:()=>s.jsxs(s.Fragment,{children:[s.jsx(P,{name:"available_only",detail:a("common:available_only"),onChange:N,checked:r,className:"checkbox checkbox-sm"}),s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(h,{className:"btn btn-outline btn-error btn-xs join-item",onClick:k,title:a("check_selected"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),disabled:i.length===0,children:a("check_selected")}),s.jsx(h,{className:"btn btn-outline btn-error btn-xs join-item",onClick:_,title:a("update_selected"),modalDescription:a("update_selected_info"),modalCancelLabel:a("common:cancel"),disabled:i.length===0,children:a("update_selected")})]})]}),accessorFn:({state:e})=>e?.state,cell:({row:{original:{device:e,state:c}}})=>s.jsx(V,{device:e,state:c,onCheckClick:C,onUpdateClick:v,onScheduleClick:w,onUnscheduleClick:y}),enableSorting:!1,enableColumnFilter:!1}],[i.length,p.length,r,x,j,k,_,C,v,w,y,N,a]);return s.jsx(B,{id:"ota-devices",columns:$,data:p})}export{te as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,b as h,aj as j,j as r,B as R,T as N,W as k}from"./index-BccmZcnH.js";import{I as C}from"./InputField-CUhAi55r.js";import{C as w,A as E}from"./ClusterSinglePicker-DNRhvOBp.js";import{E as S}from"./EndpointPicker-DuGNCPo-.js";import"./envs-CRUy-_iG.js";import"./SelectField-Ca16rphE.js";const y=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],q=n.memo(({rule:s,device:t,onApply:a})=>{const[e,l]=n.useState({rule:s}),{t:i}=h(["zigbee","common"]);n.useEffect(()=>{l({rule:s})},[s]);const b=n.useCallback(o=>{e.rule.endpoint=o,l({rule:e.rule})},[e]),u=n.useCallback(o=>{e.rule.cluster=o,l({rule:e.rule})},[e]),_=n.useCallback(o=>{e.rule.attribute=o,l({rule:e.rule})},[e]),m=n.useCallback(o=>{const{name:c,valueAsNumber:p}=o.target;e.rule[c]=p,l({rule:e.rule})},[e]),g=n.useCallback(()=>{a({...e.rule,maximum_report_interval:65535})},[e,a]),x=n.useMemo(()=>j(t),[t]),f=n.useMemo(()=>{const o=new Set,c=new Set;e.rule.cluster&&c.add(e.rule.cluster);const p=t.endpoints[Number.parseInt(e.rule.endpoint,10)];if(p){for(const d of p.clusters.output)c.add(d);for(const d of p.clusters.input)c.has(d)||o.add(d)}return[{name:"available",clusters:c},{name:"possible",clusters:o}]},[t.endpoints,e.rule.endpoint,e.rule.cluster]),v=n.useMemo(()=>y.every(o=>e.rule[o]!==void 0&&e.rule[o]!==""),[e]);return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[r.jsx(S,{label:i("endpoint"),disabled:!s.isNew,values:x,value:e.rule.endpoint,onChange:b,required:!0}),r.jsx(w,{label:i("cluster"),disabled:!e.rule.endpoint,clusters:f,value:e.rule.cluster,onChange:u,required:!0}),r.jsx(E,{label:i("attribute"),disabled:!e.rule.cluster,value:e.rule.attribute,cluster:e.rule.cluster,device:t,onChange:_,required:!0}),r.jsx(C,{name:"minimum_report_interval",label:i("min_rep_interval"),type:"number",value:e.rule.minimum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"maximum_report_interval",label:i("max_rep_interval"),type:"number",value:e.rule.maximum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"reportable_change",label:i("min_rep_change"),type:"number",value:e.rule.reportable_change,onChange:m,required:!0}),r.jsxs("fieldset",{className:"fieldset",children:[r.jsx("legend",{className:"fieldset-legend",children:i("actions")}),r.jsxs("div",{className:"join join-horizontal",children:[r.jsx(R,{className:"btn btn-primary join-item",item:e.rule,onClick:a,disabled:!v,children:i("common:apply")}),e.rule.isNew?null:r.jsx(N,{title:i("common:disable"),className:"btn btn-error join-item",onClick:g,modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("common:disable")})]})]})]}),r.jsx("div",{className:"divider"})]})}),I=s=>{const t=[];for(const a in s.endpoints){const e=s.endpoints[a];for(const l of e.configured_reportings)t.push({...l,endpoint:a})}return t},M=s=>`${s.isNew}-${s.endpoint}-${s.cluster}-${s.attribute}`;function P(s){const{device:t}=s,{sendMessage:a}=n.useContext(k),[e,l]=n.useState({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),i=n.useMemo(()=>I(t),[t]);n.useEffect(()=>{l({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""})},[t.ieee_address]);const b=n.useCallback(async u=>{const{cluster:_,endpoint:m,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v}=u;await a("bridge/request/device/configure_reporting",{id:t.ieee_address,endpoint:m,cluster:_,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v,option:{}})},[a,t.ieee_address]);return r.jsx("div",{className:"flex flex-col",children:[...i,e].map(u=>r.jsx(q,{rule:u,device:t,onApply:b},M(u)))})}export{P as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,j as e}from"./index-BccmZcnH.js";import{A as s,R as m}from"./RecallRemove-CrxvayYk.js";import"./envs-CRUy-_iG.js";import"./DashboardFeatureWrapper-BCosdUvy.js";import"./Feature-BZc2FS2v.js";import"./DisplayValue-C55voi8G.js";import"./_createCompounder-DOVBRgWx.js";import"./InputField-CUhAi55r.js";import"./SelectField-Ca16rphE.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})})]})}export{j as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,W as d,a as f,b as p,j as e,F as b,M as u,ck as g,B as x}from"./index-BccmZcnH.js";import{S as l}from"./SettingsList-FVZvadEn.js";import"./envs-CRUy-_iG.js";import"./CheckboxField-Dx2QxjzC.js";import"./InputField-CUhAi55r.js";import"./NumberField-Bu5IU0l2.js";import"./SelectField-Ca16rphE.js";const r="main",h=[r,"frontend","mqtt","serial","availability","ota","advanced","homeassistant"];function T(){const{sendMessage:o}=n.useContext(d),a=f(t=>t.bridgeInfo),[s,m]=n.useState(r),{t:i}=p("settings"),c=n.useCallback(async t=>{s===r?await o("bridge/request/options",{options:t}):await o("bridge/request/options",{options:{[s]:t}})},[o,s]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(b,{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(t=>e.jsx(x,{className:`tab${s===t?" tab-active":""}`,"aria-current":"page",item:t,onClick:m,children:i(t)},t)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:s===r?e.jsx(l,{schema:a.config_schema,data:a.config,set:c,rootOnly:!0}):e.jsx(l,{schema:a.config_schema.properties[s],data:a.config[s],set:c})})]})]})}export{T as default};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as x,j as s,B as b,F as p,z as C,cl as w,a_ as N,b as v}from"./index-BccmZcnH.js";import{C as V}from"./CheckboxField-Dx2QxjzC.js";import{I as $}from"./InputField-CUhAi55r.js";import{N as S}from"./NumberField-Bu5IU0l2.js";import{S as h}from"./SelectField-Ca16rphE.js";const A=x.memo(a=>{const{defaultValues:n,label:r,detail:c,type:i,onSubmit:f}=a,[t,o]=x.useState(n||[]);x.useEffect(()=>{o(n||[])},[n]);const d=x.useCallback(()=>{t.length>0?o([...t,""]):o([""])},[t]),e=x.useCallback(()=>f(i==="number"?t.filter(l=>typeof l=="number"):t.filter(l=>!!l)),[i,t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:t.map((l,m)=>s.jsxs("div",{className:"join min-w-xs",children:[s.jsx("input",{className:"input join-item",onBlur:u=>{const j=Array.from(t);j[m]=i==="number"?u.target.value?u.target.valueAsNumber:"":u.target.value,o(j)},type:i,defaultValue:Number.isNaN(l)?"":l}),s.jsx(b,{className:"btn btn-error btn-outline join-item",onClick:()=>{const u=Array.from(t);u.splice(m,1),o(u)},children:s.jsx(p,{icon:C})})]},`${l}-${m}`))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:d,className:"btn btn-sm btn-square btn-success ms-2",children:s.jsx(p,{icon:w})}),s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),c&&s.jsx("p",{className:"label",children:c})]})]})}),F=x.memo(a=>{const{names:n,label:r,detail:c,defaultsChecked:i,onSubmit:f}=a,[t,o]=x.useState(i||[]);x.useEffect(()=>{o(i||[])},[i]);const d=x.useCallback(l=>{let m=Array.from(t);l.target.checked?m.push(l.target.name):m=m.filter(u=>u!==l.target.name),o(m)},[t]),e=x.useCallback(()=>f(t),[t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:n.map(l=>s.jsxs("label",{className:"label",children:[s.jsx("input",{name:l,className:"checkbox",type:"checkbox",onChange:d,checked:t.includes(l)}),l]},l))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),s.jsx("span",{className:"label",children:c})]})]})}),E=(a,n,r,c,i,f,t)=>{let o=n.type;if(Array.isArray(o))o=o.find(e=>e!=="null");else if(n.oneOf)return;const d=`${i}-${a}-${n.type}-${n.title}`;switch(o){case"boolean":return s.jsx(V,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.checked}),required:f,defaultChecked:r??!1},d);case"integer":case"number":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:Number.parseInt(e.target.value,10)}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx(S,{name:a,label:a,detail:t,onSubmit:(e,l)=>l&&c({[a]:e===""?null:e}),min:n.minimum,max:n.maximum,required:f,defaultValue:r??""},d);case"string":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx($,{name:a,label:a,detail:t,type:"text",onBlur:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??""},d);case"array":{const e=n.items;if(e&&typeof e=="object"&&"type"in e){if(e.enum)return s.jsx(F,{names:e.enum,label:a,detail:t,onSubmit:l=>c({[a]:l}),defaultsChecked:r??[]});if(e.type==="string"||e.type==="number")return s.jsx(A,{defaultValues:r??[],label:a,detail:t,onSubmit:l=>c({[a]:l}),type:e.type})}}}},g=(a,n,r,c,i,f=[],t=!1)=>{const o=[],d=[];for(const e in n){const l=n[e];if(!(typeof l=="boolean"||l.readOnly))if(l.properties)t||d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:l.title||e}),g(a,l.properties,r[e]||{},async m=>c({[e]:m}),i+1,l.required)]},`${i}-${e}`));else{const m=l.oneOf?.find(u=>typeof u=="object"&&u.properties);if(m)(e!=="log_syslog"||r.log_output.includes("syslog"))&&d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:m.title||l.title||e}),g(a,m.properties,r[e]||{},async u=>c({[e]:u}),i+1,m.required)]},`${i}-${e}`));else{const u=E(e,l,r[e],c,i,f.includes(e),l.description?a(l.description,{defaultValue:l.description}):void 0);u&&o.push(s.jsx("div",{className:`list-row p-3 ${i!==0?` ps-${4+i*4}`:""}`,children:u},`${i}-${e}`))}}}return d.length>0?o.concat(d):o};function y({schema:a,data:n,set:r,rootOnly:c}){const{t:i}=v("settingsSchemaDescriptions");return s.jsx("div",{className:"list bg-base-100",children:a.properties&&g(i,a.properties,n,r,0,a.required,c)})}export{y as S};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as r,j as a}from"./index-BccmZcnH.js";import{J as i}from"./Json-CSdW868a.js";import"./envs-CRUy-_iG.js";function p(e){const{device:t}=e,o=r(s=>s.deviceStates[t.friendly_name]??{});return a.jsx(i,{obj:o})}export{p as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{y as f,Q as _,b as j,r as l,j as e,R as h,B as d,W as w,G as k,a as p,aa as C,aH as y,T as N,cn as v,co as I,cp as S}from"./index-BccmZcnH.js";import{I as q}from"./InputField-CUhAi55r.js";import{g as z}from"./index-DTwwc0px.js";import"./envs-CRUy-_iG.js";const B=f.create(r=>{const{addInstallCode:s}=r,o=_(),{t:a}=j(["settings","common"]),[c,m]=l.useState("");return e.jsx(h,{isOpen:o.visible,title:a("add_install_code"),footer:e.jsxs(e.Fragment,{children:[e.jsx(d,{className:"btn btn-neutral",onClick:o.remove,children:a("common:cancel")}),e.jsx(d,{className:"btn btn-primary ms-1",onClick:async()=>{c&&(o.remove(),await s(c))},children:a("add_install_code")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(q,{name:"install_code",label:a("install_code"),onChange:i=>m(i.target.value),value:c,type:"text",required:!0})})})});async function A(r){return await new Promise((s,o)=>{const a=new FileReader;a.onloadend=()=>s(a.result),a.onerror=c=>o(c),a.readAsDataURL(r)})}async function M(r){const s=await fetch(r);if(s.ok){const o=await s.blob();return await A(o)}return Promise.reject(s.status)}function D(r){const[s,o]=l.useState("none"),{devices:a}=r,[c,m]=l.useState({}),{sendMessage:i}=l.useContext(w),{t:u}=j("settings"),t=l.useCallback(async n=>{m(x=>({...x,[n.ieee_address]:"init"}));const b=z(n),g=await M(b);return await i("bridge/request/device/options",{id:n.ieee_address,options:{icon:g}}),m(x=>({...x,[n.ieee_address]:"done"})),!0},[i]);switch(l.useEffect(()=>{if(s==="start"){for(const n of a)n.type!=="Coordinator"&&t(n).catch(b=>{console.error("Error localising image",b),m(g=>({...g,[n.ieee_address]:"error"}))}).then();o("inprogress")}},[s,a,t]),s){case"none":return e.jsx(d,{className:"btn btn-primary join-item",onClick:()=>o("start"),children:u("localise_images")});case"inprogress":return e.jsx("ul",{className:"menu menu-xs bg-base-200 max-w-xs w-full join-item",children:a.map(n=>e.jsxs("li",{className:"flex-row justify-between items-center border-b py-0.5",children:[n.friendly_name,e.jsx("span",{className:"badge badge-xs",children:u(`common:${c[n.ieee_address]}`)})]},n.ieee_address))});case"done":return e.jsx("div",{children:u("common:unknown")})}return e.jsx("div",{children:u("zigbee:unknown")})}function T(){const r=k(),{sendMessage:s}=l.useContext(w),o=p(t=>t.bridgeInfo),a=p(t=>t.backup),c=p(t=>t.preparingBackup),m=p(t=>t.devices),{t:i}=j(["settings","common"]),u=l.useCallback(()=>{const t=C(new Date).replace(/[\s_:]/g,"-"),n=`z2m-backup.${o.version}.${t}.zip`;y(`data:application/zip;base64,${a}`,n)},[a,o.version]);return e.jsxs("div",{className:"join join-vertical",children:[e.jsx(N,{className:"btn btn-error join-item mb-2",onClick:async()=>await s("bridge/request/restart",""),title:i("restart_zigbee2mqtt"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("restart_zigbee2mqtt")}),e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>await v(I.getState(),"state.json"),children:i("download_state")}),c?e.jsx(d,{className:"btn btn-primary join-item disabled",children:e.jsx("span",{className:"loading loading-dots loading-xl"})}):a?e.jsx(d,{className:"btn btn-primary join-item",onClick:u,children:i("download_z2m_backup")}):e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>{r(S()),await s("bridge/request/backup","")},children:i("request_z2m_backup")}),e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>await f.show(B,{addInstallCode:async t=>await s("bridge/request/install_code/add",{value:t})}),children:i("add_install_code")}),e.jsx(D,{devices:m})]})}export{T as default};
|
|
Binary file
|