zigbee2mqtt-windfront 1.0.3 → 1.0.4

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.
Files changed (231) hide show
  1. package/dist/assets/{About-n6KSBHyq.js → About-CLsLFL3T.js} +1 -1
  2. package/dist/assets/About-CLsLFL3T.js.br +0 -0
  3. package/dist/assets/{Availability-CYKf5yfk.js → Availability-Lz4Com13.js} +1 -1
  4. package/dist/assets/Availability-Lz4Com13.js.br +0 -0
  5. package/dist/assets/{Bind-B1yilhD4.js → Bind-CZ1WLp2A.js} +1 -1
  6. package/dist/assets/Bind-CZ1WLp2A.js.br +0 -0
  7. package/dist/assets/{Bridge-6T0oqiPl.js → Bridge-K1QLb7zL.js} +1 -1
  8. package/dist/assets/Bridge-K1QLb7zL.js.br +0 -0
  9. package/dist/assets/{CheckboxField-EfpHUONn.js → CheckboxField-CTB2svCJ.js} +1 -1
  10. package/dist/assets/CheckboxField-CTB2svCJ.js.br +1 -0
  11. package/dist/assets/{ClusterSinglePicker-CRXvljg4.js → ClusterSinglePicker-hojoD83c.js} +1 -1
  12. package/dist/assets/ClusterSinglePicker-hojoD83c.js.br +0 -0
  13. package/dist/assets/{Clusters-C5RF_OCO.js → Clusters-C_rvuzWi.js} +1 -1
  14. package/dist/assets/Clusters-C_rvuzWi.js.br +0 -0
  15. package/dist/assets/Dashboard-D_ZnzhGn.js +1 -0
  16. package/dist/assets/Dashboard-D_ZnzhGn.js.br +0 -0
  17. package/dist/assets/{DashboardFeatureWrapper-CulyQEmi.js → DashboardFeatureWrapper-DyAAb85w.js} +1 -1
  18. package/dist/assets/DashboardFeatureWrapper-DyAAb85w.js.br +3 -0
  19. package/dist/assets/{DebouncedInput-CjlgBmTV.js → DebouncedInput-CBB2lTWU.js} +1 -1
  20. package/dist/assets/DebouncedInput-CBB2lTWU.js.br +0 -0
  21. package/dist/assets/DevConsole-CV22sos7.js +1 -0
  22. package/dist/assets/DevConsole-CV22sos7.js.br +0 -0
  23. package/dist/assets/{DevConsole-92-RlPl2.js → DevConsole-CtAF7h-Q.js} +1 -1
  24. package/dist/assets/DevConsole-CtAF7h-Q.js.br +0 -0
  25. package/dist/assets/DeviceCard-CnbDGTrJ.js +1 -0
  26. package/dist/assets/DeviceCard-CnbDGTrJ.js.br +0 -0
  27. package/dist/assets/{DeviceControlEditName-CsGmD81w.js → DeviceControlEditName-BCsg_DkH.js} +1 -1
  28. package/dist/assets/DeviceControlEditName-BCsg_DkH.js.br +0 -0
  29. package/dist/assets/DeviceInfo-CbtcWXuI.js +1 -0
  30. package/dist/assets/DeviceInfo-CbtcWXuI.js.br +0 -0
  31. package/dist/assets/{DevicePage-Dq12wK_a.js → DevicePage-DBSCBunk.js} +2 -2
  32. package/dist/assets/DevicePage-DBSCBunk.js.br +0 -0
  33. package/dist/assets/{DevicePicker-_eMijIEu.js → DevicePicker-CvcAHg8J.js} +1 -1
  34. package/dist/assets/DevicePicker-CvcAHg8J.js.br +0 -0
  35. package/dist/assets/DeviceSettings-BDVnR54i.js +1 -0
  36. package/dist/assets/DeviceSettings-BDVnR54i.js.br +0 -0
  37. package/dist/assets/{DeviceSpecificSettings-Bonf9ATL.js → DeviceSpecificSettings-DmZZAo9h.js} +1 -1
  38. package/dist/assets/DeviceSpecificSettings-DmZZAo9h.js.br +0 -0
  39. package/dist/assets/Devices-DaZ0Iq80.js +1 -0
  40. package/dist/assets/Devices-DaZ0Iq80.js.br +0 -0
  41. package/dist/assets/DevicesPage-BMe9I7Ih.js +1 -0
  42. package/dist/assets/DevicesPage-BMe9I7Ih.js.br +0 -0
  43. package/dist/assets/{DisplayValue-DesQy-9S.js → DisplayValue-BRvbaOY3.js} +1 -1
  44. package/dist/assets/DisplayValue-BRvbaOY3.js.br +0 -0
  45. package/dist/assets/{Donate-DDW1DF2S.js → Donate-DXg8VSiU.js} +1 -1
  46. package/dist/assets/Donate-DXg8VSiU.js.br +0 -0
  47. package/dist/assets/{EndpointPicker-CecBv6fj.js → EndpointPicker-DXxNp6I_.js} +1 -1
  48. package/dist/assets/EndpointPicker-DXxNp6I_.js.br +0 -0
  49. package/dist/assets/{Exposes-CEUrix9D.js → Exposes-CTV1Q_bO.js} +1 -1
  50. package/dist/assets/Exposes-CTV1Q_bO.js.br +0 -0
  51. package/dist/assets/Feature-BYaimoIP.js +1 -0
  52. package/dist/assets/Feature-BYaimoIP.js.br +0 -0
  53. package/dist/assets/Frontend-CBrpGju1.js +1 -0
  54. package/dist/assets/Frontend-CBrpGju1.js.br +0 -0
  55. package/dist/assets/{GroupPage-2w_BxFnU.js → GroupPage-_n96EBBd.js} +2 -2
  56. package/dist/assets/GroupPage-_n96EBBd.js.br +0 -0
  57. package/dist/assets/GroupSettings-Cy3exzPA.js +1 -0
  58. package/dist/assets/GroupSettings-Cy3exzPA.js.br +0 -0
  59. package/dist/assets/{Groups-DtUjGgPF.js → Groups-DRGPF1Hy.js} +1 -1
  60. package/dist/assets/Groups-DRGPF1Hy.js.br +0 -0
  61. package/dist/assets/{GroupsPage-CdboE4mo.js → GroupsPage-sWVQmask.js} +1 -1
  62. package/dist/assets/GroupsPage-sWVQmask.js.br +0 -0
  63. package/dist/assets/HomePage-BMrQ2Tkh.js +1 -0
  64. package/dist/assets/HomePage-BMrQ2Tkh.js.br +0 -0
  65. package/dist/assets/InputField-ywTsvyXp.js +1 -0
  66. package/dist/assets/InputField-ywTsvyXp.js.br +2 -0
  67. package/dist/assets/LastSeen-CNqb-eoa.js +1 -0
  68. package/dist/assets/LastSeen-CNqb-eoa.js.br +0 -0
  69. package/dist/assets/LogsPage-DbQuayvM.js +1 -0
  70. package/dist/assets/LogsPage-DbQuayvM.js.br +0 -0
  71. package/dist/assets/{Lqi-B8JfaMIy.js → Lqi-DaXrZL2F.js} +1 -1
  72. package/dist/assets/Lqi-DaXrZL2F.js.br +0 -0
  73. package/dist/assets/NetworkPage-DJdg--Uu.js +2 -0
  74. package/dist/assets/NetworkPage-DJdg--Uu.js.br +0 -0
  75. package/dist/assets/NotoSans-Regular-D96CXwz4.ttf +0 -0
  76. package/dist/assets/NumberField-DM8no8LD.js +1 -0
  77. package/dist/assets/NumberField-DM8no8LD.js.br +0 -0
  78. package/dist/assets/OtaPage-C6jRKx2c.js +1 -0
  79. package/dist/assets/OtaPage-C6jRKx2c.js.br +0 -0
  80. package/dist/assets/PowerSource-CYKTc3dJ.js +1 -0
  81. package/dist/assets/PowerSource-CYKTc3dJ.js.br +0 -0
  82. package/dist/assets/RawNetworkData-BCA0bmwX.js +27 -0
  83. package/dist/assets/RawNetworkData-BCA0bmwX.js.br +0 -0
  84. package/dist/assets/RawNetworkMap-C9o-OWbT.js +4233 -0
  85. package/dist/assets/RawNetworkMap-C9o-OWbT.js.br +0 -0
  86. package/dist/assets/RecallRemove-CBFynfHA.js +1 -0
  87. package/dist/assets/RecallRemove-CBFynfHA.js.br +0 -0
  88. package/dist/assets/{Reporting-CfjliW0t.js → Reporting-DzW3ODXL.js} +1 -1
  89. package/dist/assets/Reporting-DzW3ODXL.js.br +0 -0
  90. package/dist/assets/Scene-D2eGOgyK.js +1 -0
  91. package/dist/assets/Scene-D2eGOgyK.js.br +0 -0
  92. package/dist/assets/{SelectField-CQ3lu6a0.js → SelectField-CRKLuxXb.js} +1 -1
  93. package/dist/assets/SelectField-CRKLuxXb.js.br +1 -0
  94. package/dist/assets/Settings-B6lokg6Q.js +1 -0
  95. package/dist/assets/Settings-B6lokg6Q.js.br +0 -0
  96. package/dist/assets/SettingsList-DG1vIHZD.js +1 -0
  97. package/dist/assets/SettingsList-DG1vIHZD.js.br +0 -0
  98. package/dist/assets/SettingsPage-DRmUsKcF.js +2 -0
  99. package/dist/assets/SettingsPage-DRmUsKcF.js.br +0 -0
  100. package/dist/assets/{State-DVtxu7Rd.js → State-3CifFtE3.js} +1 -1
  101. package/dist/assets/State-3CifFtE3.js.br +0 -0
  102. package/dist/assets/{Table-CFkcNCwp.js → Table-CSTYjWMC.js} +2 -2
  103. package/dist/assets/Table-CSTYjWMC.js.br +0 -0
  104. package/dist/assets/{TextareaField-D2zWQY32.js → TextareaField-lt-zWiXi.js} +1 -1
  105. package/dist/assets/TextareaField-lt-zWiXi.js.br +0 -0
  106. package/dist/assets/Tools-B8svP-O8.js +1 -0
  107. package/dist/assets/Tools-B8svP-O8.js.br +0 -0
  108. package/dist/assets/TouchlinkPage-C5lEVFKL.js +1 -0
  109. package/dist/assets/TouchlinkPage-C5lEVFKL.js.br +0 -0
  110. package/dist/assets/{VendorLink-DQoSmGNy.js → VendorLink-DxyjV7EH.js} +1 -1
  111. package/dist/assets/VendorLink-DxyjV7EH.js.br +0 -0
  112. package/dist/assets/{_createCompounder-CoEvIprv.js → _createCompounder-0jJLm6ui.js} +1 -1
  113. package/dist/assets/_createCompounder-0jJLm6ui.js.br +0 -0
  114. package/dist/assets/{capitalize-Dl_OcOwT.js → capitalize-Bw26IpMp.js} +1 -1
  115. package/dist/assets/capitalize-Bw26IpMp.js.br +0 -0
  116. package/dist/assets/index-BN7eS8uY.js +1 -0
  117. package/dist/assets/index-BN7eS8uY.js.br +0 -0
  118. package/dist/assets/index-BlshbhbW.css +1 -0
  119. package/dist/assets/index-BlshbhbW.css.br +0 -0
  120. package/dist/assets/index-CjAIuMGC.js +635 -0
  121. package/dist/assets/index-CjAIuMGC.js.br +0 -0
  122. package/dist/assets/index-Dpr5JorG.js +1 -0
  123. package/dist/assets/index-Dpr5JorG.js.br +0 -0
  124. package/dist/assets/{jszip.min-D5-ddguw.js → jszip.min-CCrNpiZ9.js} +1 -1
  125. package/dist/assets/jszip.min-CCrNpiZ9.js.br +0 -0
  126. package/dist/assets/snakeCase-DiSj8W4z.js +1 -0
  127. package/dist/assets/snakeCase-DiSj8W4z.js.br +0 -0
  128. package/dist/index.html +2 -2
  129. package/dist/index.html.br +0 -0
  130. package/package.json +6 -8
  131. package/dist/assets/About-n6KSBHyq.js.br +0 -0
  132. package/dist/assets/Availability-CYKf5yfk.js.br +0 -0
  133. package/dist/assets/Bind-B1yilhD4.js.br +0 -0
  134. package/dist/assets/Bridge-6T0oqiPl.js.br +0 -1
  135. package/dist/assets/CheckboxField-EfpHUONn.js.br +0 -5
  136. package/dist/assets/ClusterSinglePicker-CRXvljg4.js.br +0 -0
  137. package/dist/assets/Clusters-C5RF_OCO.js.br +0 -0
  138. package/dist/assets/Dashboard-DRtnwl9V.js +0 -1
  139. package/dist/assets/Dashboard-DRtnwl9V.js.br +0 -0
  140. package/dist/assets/DashboardFeatureWrapper-CulyQEmi.js.br +0 -0
  141. package/dist/assets/DebouncedInput-CjlgBmTV.js.br +0 -0
  142. package/dist/assets/DevConsole-92-RlPl2.js.br +0 -0
  143. package/dist/assets/DevConsole-DzEKkqF8.js +0 -1
  144. package/dist/assets/DevConsole-DzEKkqF8.js.br +0 -0
  145. package/dist/assets/DeviceCard-DN-HINkT.js +0 -1
  146. package/dist/assets/DeviceCard-DN-HINkT.js.br +0 -0
  147. package/dist/assets/DeviceControlEditName-CsGmD81w.js.br +0 -0
  148. package/dist/assets/DeviceImage-CKYz5x1m.js +0 -1
  149. package/dist/assets/DeviceImage-CKYz5x1m.js.br +0 -0
  150. package/dist/assets/DeviceInfo-D_aYw1Yv.js +0 -1
  151. package/dist/assets/DeviceInfo-D_aYw1Yv.js.br +0 -0
  152. package/dist/assets/DevicePage-Dq12wK_a.js.br +0 -0
  153. package/dist/assets/DevicePicker-_eMijIEu.js.br +0 -0
  154. package/dist/assets/DeviceSettings-P1WTEA1U.js +0 -1
  155. package/dist/assets/DeviceSettings-P1WTEA1U.js.br +0 -0
  156. package/dist/assets/DeviceSpecificSettings-Bonf9ATL.js.br +0 -0
  157. package/dist/assets/Devices-CatX2DJ0.js +0 -1
  158. package/dist/assets/Devices-CatX2DJ0.js.br +0 -0
  159. package/dist/assets/DevicesPage-BEOjfMzB.js +0 -1
  160. package/dist/assets/DevicesPage-BEOjfMzB.js.br +0 -0
  161. package/dist/assets/DisplayValue-DesQy-9S.js.br +0 -3
  162. package/dist/assets/Donate-DDW1DF2S.js.br +0 -0
  163. package/dist/assets/EndpointPicker-CecBv6fj.js.br +0 -0
  164. package/dist/assets/Exposes-CEUrix9D.js.br +0 -0
  165. package/dist/assets/Feature-BAIiHKNG.js +0 -1
  166. package/dist/assets/Feature-BAIiHKNG.js.br +0 -0
  167. package/dist/assets/Frontend-KiinVF74.js +0 -1
  168. package/dist/assets/Frontend-KiinVF74.js.br +0 -0
  169. package/dist/assets/GroupPage-2w_BxFnU.js.br +0 -0
  170. package/dist/assets/GroupSettings-LTOemiBs.js +0 -1
  171. package/dist/assets/GroupSettings-LTOemiBs.js.br +0 -0
  172. package/dist/assets/Groups-DtUjGgPF.js.br +0 -0
  173. package/dist/assets/GroupsPage-CdboE4mo.js.br +0 -0
  174. package/dist/assets/HomePage-DAy43Wty.js +0 -1
  175. package/dist/assets/HomePage-DAy43Wty.js.br +0 -0
  176. package/dist/assets/InputField-iH5D3aK4.js +0 -1
  177. package/dist/assets/InputField-iH5D3aK4.js.br +0 -0
  178. package/dist/assets/LastSeen-DSAsbO4K.js +0 -1
  179. package/dist/assets/LastSeen-DSAsbO4K.js.br +0 -0
  180. package/dist/assets/LogsPage-PYJ8Kq7v.js +0 -1
  181. package/dist/assets/LogsPage-PYJ8Kq7v.js.br +0 -0
  182. package/dist/assets/Lqi-B8JfaMIy.js.br +0 -0
  183. package/dist/assets/NetworkPage-DIyZm6xb.js +0 -2
  184. package/dist/assets/NetworkPage-DIyZm6xb.js.br +0 -0
  185. package/dist/assets/OtaPage-CHSrKHT1.js +0 -1
  186. package/dist/assets/OtaPage-CHSrKHT1.js.br +0 -0
  187. package/dist/assets/PowerSource-DMT4xF1g.js +0 -1
  188. package/dist/assets/PowerSource-DMT4xF1g.js.br +0 -0
  189. package/dist/assets/RawNetworkData-ChueyPzM.js +0 -27
  190. package/dist/assets/RawNetworkData-ChueyPzM.js.br +0 -0
  191. package/dist/assets/RawNetworkMap-D37asuO1.js +0 -24
  192. package/dist/assets/RawNetworkMap-D37asuO1.js.br +0 -0
  193. package/dist/assets/RawNetworkMap-DkxkTem6.css +0 -1
  194. package/dist/assets/RawNetworkMap-DkxkTem6.css.br +0 -0
  195. package/dist/assets/RecallRemove-zG9m4Em1.js +0 -1
  196. package/dist/assets/RecallRemove-zG9m4Em1.js.br +0 -0
  197. package/dist/assets/Reporting-CfjliW0t.js.br +0 -0
  198. package/dist/assets/Scene-CAGLsioy.js +0 -1
  199. package/dist/assets/Scene-CAGLsioy.js.br +0 -0
  200. package/dist/assets/SelectField-CQ3lu6a0.js.br +0 -0
  201. package/dist/assets/Settings--4eajbgF.js +0 -1
  202. package/dist/assets/Settings--4eajbgF.js.br +0 -0
  203. package/dist/assets/SettingsList-BcuolEXG.js +0 -1
  204. package/dist/assets/SettingsList-BcuolEXG.js.br +0 -0
  205. package/dist/assets/SettingsPage-Dkmo19VP.js +0 -2
  206. package/dist/assets/SettingsPage-Dkmo19VP.js.br +0 -0
  207. package/dist/assets/State-DVtxu7Rd.js.br +0 -0
  208. package/dist/assets/Table-CFkcNCwp.js.br +0 -0
  209. package/dist/assets/TextareaField-D2zWQY32.js.br +0 -0
  210. package/dist/assets/Tools-BsscapK7.js +0 -1
  211. package/dist/assets/Tools-BsscapK7.js.br +0 -0
  212. package/dist/assets/TouchlinkPage-B3WnUXx6.js +0 -1
  213. package/dist/assets/TouchlinkPage-B3WnUXx6.js.br +0 -0
  214. package/dist/assets/VendorLink-DQoSmGNy.js.br +0 -0
  215. package/dist/assets/_createCompounder-CoEvIprv.js.br +0 -0
  216. package/dist/assets/capitalize-Dl_OcOwT.js.br +0 -0
  217. package/dist/assets/cz-BpH9S3r2.png +0 -0
  218. package/dist/assets/es-DcHkHXai.png +0 -0
  219. package/dist/assets/index-C2eewgcx.js +0 -1
  220. package/dist/assets/index-C2eewgcx.js.br +0 -0
  221. package/dist/assets/index-DkQr105Q.js +0 -1
  222. package/dist/assets/index-DkQr105Q.js.br +0 -0
  223. package/dist/assets/index-Dvk0LOWb.js +0 -635
  224. package/dist/assets/index-Dvk0LOWb.js.br +0 -0
  225. package/dist/assets/index-hZLgn11z.css +0 -1
  226. package/dist/assets/index-hZLgn11z.css.br +0 -0
  227. package/dist/assets/jszip.min-D5-ddguw.js.br +0 -0
  228. package/dist/assets/missing-locale-CYVnNaNb.png +0 -0
  229. package/dist/assets/snakeCase-D7NmHVW8.js +0 -1
  230. package/dist/assets/snakeCase-D7NmHVW8.js.br +0 -0
  231. package/dist/assets/uk-D1rUk7Sx.png +0 -0
Binary file
@@ -0,0 +1 @@
1
+ import{bX as n}from"./index-CjAIuMGC.js";const s=""+new URL("generic-zigbee-device-Dj-9sUqG.png",import.meta.url).href,a="https://www.zigbee2mqtt.io/images/devices/",o=t=>{var i;const e=n((i=t.definition)==null?void 0:i.model);return e==="NA"?s:`${a}${e}.png`};export{s as a,o as g};
Binary file
@@ -1,4 +1,4 @@
1
- import{a4 as bt,a5 as It}from"./index-Dvk0LOWb.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:{}};/*!
1
+ import{a6 as bt,a7 as It}from"./index-CjAIuMGC.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>
@@ -0,0 +1 @@
1
+ import{a7 as u}from"./index-CjAIuMGC.js";import{r as C}from"./_createCompounder-0jJLm6ui.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};
package/dist/index.html CHANGED
@@ -12,8 +12,8 @@
12
12
  <link rel="apple-touch-icon" href="./assets/apple-touch-icon-DxTaGN3y.png" sizes="150x150">
13
13
 
14
14
 
15
- <script type="module" crossorigin src="./assets/index-Dvk0LOWb.js"></script>
16
- <link rel="stylesheet" crossorigin href="./assets/index-hZLgn11z.css">
15
+ <script type="module" crossorigin src="./assets/index-CjAIuMGC.js"></script>
16
+ <link rel="stylesheet" crossorigin href="./assets/index-BlshbhbW.css">
17
17
  </head>
18
18
 
19
19
  <body>
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee2mqtt-windfront",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "license": "GPL-3.0-or-later",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -31,7 +31,6 @@
31
31
  },
32
32
  "devDependencies": {
33
33
  "@biomejs/biome": "^1.9.4",
34
- "@dagrejs/dagre": "^1.1.4",
35
34
  "@ebay/nice-modal-react": "^1.2.13",
36
35
  "@fortawesome/fontawesome-svg-core": "^6.7.2",
37
36
  "@fortawesome/free-solid-svg-icons": "^6.7.2",
@@ -43,14 +42,12 @@
43
42
  "@types/json-schema": "^7.0.15",
44
43
  "@types/lodash": "^4.17.17",
45
44
  "@types/react": "^19.1.6",
46
- "@types/react-dom": "^19.1.5",
45
+ "@types/react-dom": "^19.1.6",
47
46
  "@types/ws": "^8.18.1",
48
47
  "@vitejs/plugin-react": "^4.5.1",
49
- "@vitest/coverage-v8": "^3.2.0",
50
- "@xyflow/react": "^12.6.4",
48
+ "@vitest/coverage-v8": "^3.2.2",
51
49
  "daisyui": "^5.0.43",
52
50
  "file-saver": "^2.0.5",
53
- "html-to-image": "1.11.11",
54
51
  "i18next": "^25.2.1",
55
52
  "i18next-browser-languagedetector": "^8.1.0",
56
53
  "jsdom": "^26.1.0",
@@ -62,8 +59,9 @@
62
59
  "react-i18next": "^15.5.2",
63
60
  "react-image": "^4.1.0",
64
61
  "react-redux": "^9.2.0",
65
- "react-router": "^7.6.1",
62
+ "react-router": "^7.6.2",
66
63
  "react-use-websocket": "^4.13.0",
64
+ "reagraph": "^4.24.1",
67
65
  "store2": "^2.14.4",
68
66
  "tailwindcss": "^4.1.4",
69
67
  "timeago.js": "^4.0.2",
@@ -82,4 +80,4 @@
82
80
  "./index.d.ts",
83
81
  "./dist"
84
82
  ]
85
- }
83
+ }
Binary file
Binary file
@@ -1 +0,0 @@
1
- 
@@ -1,5 +0,0 @@
1
- ��dsM�F�2�t: I�ҍ3p�v�3k���&"A�+��׼�6�'����j�j%�2⻮?����͞�/.g�R����tIs���~�d�ab
2
- �p �r�mP@c�B
3
- |�:+��7�E�
4
- ���]�ai�4�%�>|>Sߠ���
5
- 3���pnH��P���+7��^���V�f�}��ip0�(�y�#�PP�"��{��X5�
Binary file
@@ -1 +0,0 @@
1
- import{a as g,r as p,W as D,b as w,j as a,B as C,v as E,F as _,w as N,f as A}from"./index-Dvk0LOWb.js";import{D as F}from"./DashboardFeatureWrapper-CulyQEmi.js";import{D as S}from"./DeviceCard-DN-HINkT.js";import{D as k,R as T}from"./DeviceControlEditName-CsGmD81w.js";import{D as R}from"./DebouncedInput-CjlgBmTV.js";import"./Feature-BAIiHKNG.js";import"./DisplayValue-DesQy-9S.js";import"./_createCompounder-CoEvIprv.js";import"./capitalize-Dl_OcOwT.js";import"./LastSeen-DSAsbO4K.js";import"./Lqi-B8JfaMIy.js";import"./PowerSource-DMT4xF1g.js";import"./snakeCase-D7NmHVW8.js";import"./DeviceImage-CKYz5x1m.js";import"./index-DkQr105Q.js";import"./CheckboxField-EfpHUONn.js";import"./InputField-iH5D3aK4.js";const I=["schedule_","_mode","_options","_startup"],L=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient"],M=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],y=(t,r)=>{if(t){if(M.includes(t))return!0;for(const i of I)if(t.includes(i))return!1;if(L.includes(t))return!1}return!0},j=(t,r={})=>{const{property:i,name:o,access:d}=t;if("features"in t&&t.features&&t.features.length>0){const n=[],m=i?r[i]:r;for(const f of t.features){const c=j(f,m);c&&!n.some(b=>b.property===c.property)&&n.push(c)}return n.length>0||y(o)?{...t,features:n}:void 0}return y(o)?{...t}:void 0};function ee(){const t=g(e=>e.deviceStates),r=g(e=>e.bridgeInfo.config),i=g(e=>e.devices),{sendMessage:o}=p.useContext(D),{t:d}=w("zigbee"),[n,m]=p.useState(""),f=p.useCallback(async(e,l,s)=>{await o("bridge/request/device/rename",{from:e,to:l,homeassistant_rename:s,last:!1})},[o]),c=p.useCallback(async(e,l,s)=>{await o("bridge/request/device/remove",{id:e,force:l,block:s})},[o]),b=p.useMemo(()=>{var l;const e=[];for(const s of i)if(!s.disabled&&s.supported&&(!n||s.friendly_name.toLowerCase().includes(n.toLowerCase()))){const v=t[s.friendly_name]??{},h=[];if((l=s.definition)!=null&&l.exposes)for(const u of s.definition.exposes){const x=j(u,v);if(x&&(h.push(x),h.length===10))break}h.length>0&&e.push(a.jsx("ul",{className:"flex-auto basis-sm list bg-base-200 rounded-box shadow-md",children:a.jsx(S,{features:h,device:s,deviceState:v,onChange:async u=>await o(`${s.ieee_address}/set`,u),onRead:async u=>await o(`${s.ieee_address}/get`,u),featureWrapperClass:F,lastSeenConfig:r.advanced.last_seen,children:a.jsxs("div",{className:"join join-horizontal",children:[a.jsx(k,{name:s.friendly_name,renameDevice:f,homeassistantEnabled:r.homeassistant.enabled,style:"btn-primary btn-square btn-sm join-item"}),a.jsx(C,{onClick:async()=>await E.show(T,{device:s,removeDevice:c}),className:"btn btn-error btn-square btn-sm join-item",title:d("remove_device"),children:a.jsx(_,{icon:N})})]})})},s.ieee_address))}return e},[i,t,r.advanced.last_seen,r.homeassistant.enabled,o,c,f,d,n]);return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:a.jsxs("label",{className:"input w-64",children:[a.jsx(_,{icon:A}),a.jsx(R,{className:"",type:"search",onChange:e=>m(e.toString()),placeholder:d("common:search"),value:n,disabled:b.length===0}),a.jsx("kbd",{className:"kbd kbd-sm cursor-pointer",onClick:()=>m(""),onKeyUp:e=>{e.key==="enter"&&m("")},title:d("common:clear"),children:"x"})]})}),a.jsx("div",{className:"flex flex-row flex-wrap justify-between items-stretch gap-3",children:b})]})}export{ee as default};
@@ -1 +0,0 @@
1
- import{r as s,j as e,U as W,ab as B,b as L,B as w,F as G,w as U,a7 as V,W as T,a as I,L as J,ac as K,x as X,ad as Y,G as Z}from"./index-Dvk0LOWb.js";import{I as P}from"./InputField-iH5D3aK4.js";import{C as R,A as H}from"./ClusterSinglePicker-CRXvljg4.js";import{E as Q}from"./EndpointPicker-CecBv6fj.js";import{T as q}from"./TextareaField-D2zWQY32.js";import"./SelectField-CQ3lu6a0.js";const $=s.memo(u=>{const{message:a}=u;return e.jsx("div",{className:"mockup-code w-full",children:e.jsx("pre",{"data-prefix":"~",className:W[a.level],children:e.jsxs("code",{children:["[",a.timestamp,"] ",a.message]})})})}),ee=[65,66,67,68];function te(u){const{value:a,onChange:p,attribute:o,definition:m,...r}=u,f=ee.includes(m.type)?"text":"number";return e.jsx("input",{type:f,value:a,onChange:d=>{const i=f==="number"?d.target.valueAsNumber:d.target.value;p(o,Number.isNaN(i)?void 0:i)},...r})}function se(u){const{device:a,readDeviceAttributes:p,writeDeviceAttributes:o,lastLog:m}=u,[r,f]=s.useState(B(a.endpoints)??""),[d,i]=s.useState(""),[l,x]=s.useState([]),[h,b]=s.useState(""),{t:c}=L(["common","zigbee"]),C=s.useCallback(t=>{i(""),x([]),f(t.toString())},[]),j=s.useCallback(t=>{x([]),i(t)},[]),g=s.useCallback((t,y)=>{if(!l.find(_=>_.attribute===t)){const _=l.concat([{attribute:t,definition:y}]);x(_)}},[l]),n=s.useCallback(t=>{b(t.target.value)},[]),v=s.useCallback(async()=>{await p(a.ieee_address,r,d,l.map(t=>t.attribute),h)},[a.ieee_address,r,d,l,h,p]),k=s.useCallback(async()=>{await o(a.ieee_address,r,d,l)},[a.ieee_address,r,d,l,o]),S=s.useMemo(()=>l.length>0&&e.jsx("fieldset",{className:"fieldset gap-2 p-3 rounded-box shadow-md",children:l.map(({attribute:t,value:y="",definition:_})=>e.jsxs("div",{className:"join join-horizontal",children:[e.jsxs("label",{className:"input join-item",children:[t,e.jsx(te,{value:y,attribute:t,definition:_,onChange:(z,D)=>{const E=Array.from(l),O=E.find(F=>F.attribute===z);O&&(O.value=D),x(E)}})]}),e.jsx(w,{className:"btn btn-error btn-outline join-item",item:t,onClick:z=>{const D=l.filter(E=>E.attribute!==z);x(D)},children:e.jsx(G,{icon:U})})]},t))}),[l]),A=s.useMemo(()=>{const t=new Set;if(r){const y=a.endpoints[Number.parseInt(r,10)];if(y)for(const _ of y.clusters.input)t.add(_)}return t},[a,r]),N=l.length===0||d==="",M=s.useMemo(()=>V(a),[a]);return r?e.jsxs("div",{className:"flex-1 flex flex-col gap-3",children:[e.jsx("h2",{className:"text-lg",children:c("zigbee:read_write_attributes")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(Q,{label:c("zigbee:endpoint"),values:M,value:r,onChange:C,required:!0}),e.jsx(R,{label:c("cluster"),clusters:A,value:d,onChange:j,required:!0}),e.jsx(H,{label:c("attribute"),value:"",cluster:d,device:a,onChange:g}),e.jsx(P,{type:"text",name:"state_property",label:c("devConsole:state_property"),value:h,detail:`${c("optional")}. ${c("devConsole:state_property_info")}`,onChange:n})]}),S,e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(w,{disabled:N||l.some(t=>!!t.value),className:"btn btn-success join-item",onClick:v,children:c("read")}),e.jsx(w,{disabled:N,className:"btn btn-error join-item",onClick:k,children:c("write")})]}),m&&e.jsx($,{message:m})]}):e.jsx(e.Fragment,{children:"No endpoints"})}const ae=u=>{const{device:a,lastLog:p}=u,{t:o}=L(["common","zigbee"]),[m,r]=s.useState(1),[f,d]=s.useState(""),[i,l]=s.useState(""),[x,h]=s.useState("{}"),{sendMessage:b}=s.useContext(T),c=I(n=>n.bridgeDefinitions),C=s.useMemo(()=>{if(!f||!i)return!1;try{const n=JSON.parse(x);if(typeof n!="object"||Array.isArray(n)&&n.length>0&&typeof n[0]!="object")return!1}catch{return!1}return!0},[x,f,i]),j=s.useMemo(()=>{const n=a.endpoints[m],v=new Set,k=new Set,S=new Set,A=new Set,N=new Set;if(n){for(const t of n.clusters.input)v.add(t),k.add(t);for(const t of n.clusters.output)v.add(t),S.add(t)}if(c.custom_clusters[a.friendly_name])for(const t in c.custom_clusters[a.friendly_name])v.has(t)||(v.add(t),A.add(t));for(const t in c.clusters)v.has(t)||N.add(t);return[{name:"input_clusters",clusters:k},{name:"output_clusters",clusters:S},{name:"custom_clusters",clusters:A},{name:"other_zcl_clusters",clusters:N}]},[a.friendly_name,a.endpoints,m,c]),g=s.useCallback(async()=>{let n=Number.parseInt(i,10);Number.isNaN(n)&&(n=i),await b(`${a.ieee_address}/${m}/set`,{command:{cluster:f,command:n,payload:JSON.parse(x)}})},[f,a.ieee_address,i,x,m,b]);return e.jsxs("div",{className:"flex-1 flex flex-col gap-3",children:[e.jsx("h2",{className:"text-lg",children:o("execute_command")}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx(P,{type:"number",name:"endpoint",label:o("zigbee:endpoint"),min:1,max:255,value:m,onChange:n=>!!n.target.value&&r(n.target.valueAsNumber),required:!0}),e.jsx(R,{label:o("zigbee:cluster"),clusters:j,value:f,onChange:n=>{d(n)},required:!0}),e.jsx(P,{type:"text",name:"command",label:o("command"),value:i,placeholder:"state, color...",onChange:n=>l(n.target.value),pattern:"^\\d+|^\\w+",required:!0})]}),e.jsx(q,{name:"payload",label:o("payload"),rows:3,value:x,onChange:n=>h(n.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{className:"join join-horizontal",children:e.jsx(w,{onClick:g,disabled:!C,className:"btn btn-success",children:o("execute")})}),p&&e.jsx($,{message:p})]})},ne=s.memo(u=>{const{device:a}=u,[p,o]=s.useState(!1),{sendMessage:m}=s.useContext(T),{t:r}=L(["devConsole","common"]),f=I(i=>i.generatedExternalDefinitions[a.ieee_address]),d=s.useCallback(async()=>{o(!0),await m("bridge/request/device/generate_external_definition",{id:a.ieee_address})},[m,a.ieee_address]);return f?e.jsxs(e.Fragment,{children:[e.jsx(q,{name:"generated_external_definition",label:r("generated_external_definition"),value:f,className:"textarea w-full",rows:8,readOnly:!0}),e.jsx(J,{to:K,target:"_blank",rel:"noreferrer",className:"link link-primary self-end",children:r("common:documentation")})]}):e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:p?e.jsx("span",{className:"loading loading-infinity loading-xl"}):e.jsx(w,{className:"btn btn-primary",onClick:d,children:r("generate_external_definition")})})}),oe=/^(zhc:tz: Read result of |z2m: Publish 'set' 'read' to |z2m: Publish 'set' 'write' to |zhc:tz: Wrote )/;function me({device:u}){const a=X(),{t:p}=L(["devConsole","common"]),o=I(b=>b.lastNonDebugLog),[m,r]=s.useState(),[f,d]=s.useState(),{sendMessage:i}=s.useContext(T);s.useEffect(()=>{o&&(o.message.startsWith("zhc:tz: Invoked ")?d(o):oe.test(o.message)&&r(o))},[o]);const l=s.useCallback(async(b,c,C,j,g)=>{const n={read:{cluster:C,attributes:j}};g&&(n.read.state_property=g),await i(`${b}/${c}/set`,n)},[i]),x=s.useCallback(async(b,c,C,j)=>{const g={write:{cluster:C,payload:{}}};for(const n of j)g.write.payload[n.attribute]=n.value;await i(`${b}/${c}/set`,g)},[i]),h=s.useCallback(()=>{a(Y(u.friendly_name))},[a,u.friendly_name]);return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:e.jsx(Z,{className:"btn btn-error",onClick:h,title:p("reset_frontend_state"),modalDescription:p("common:dialog_confirmation_prompt"),modalCancelLabel:p("common:cancel"),children:p("reset_frontend_state")})}),e.jsx("div",{className:"divider"}),e.jsx(ne,{device:u}),e.jsx("div",{className:"divider"}),e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4",children:[e.jsx(se,{device:u,lastLog:m,readDeviceAttributes:l,writeDeviceAttributes:x}),e.jsx(ae,{device:u,lastLog:f})]})]})}export{me as default};
@@ -1 +0,0 @@
1
- import{r as p,b as j,j as s,L as o,F as f,ax as h}from"./index-Dvk0LOWb.js";import{F as b,g as u}from"./Feature-BAIiHKNG.js";import{L as w}from"./LastSeen-DSAsbO4K.js";import{L as y}from"./Lqi-B8JfaMIy.js";import{P as N}from"./PowerSource-DMT4xF1g.js";import{D as L}from"./DeviceImage-CKYz5x1m.js";const $=p.memo(({onChange:n,onRead:m,device:e,endpoint:r,deviceState:a,lastSeenConfig:c,features:x,featureWrapperClass:d,children:g})=>{var i;const{t}=j(["zigbee","devicePage"]);return s.jsxs(s.Fragment,{children:[s.jsxs("li",{className:"list-row grow p-3",children:[s.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:s.jsx(L,{disabled:!1,device:e,otaState:(i=a.update)==null?void 0:i.state})}),s.jsxs("div",{children:[s.jsxs(o,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,r?` (${t("endpoint")}: ${r})`:""]}),s.jsx("div",{className:"text-xs opacity-50",children:e.description||""})]}),s.jsxs("div",{className:"list-col-wrap text-sm w-full",children:[x.map(l=>(!r||!l.endpoint||l.endpoint===r)&&s.jsx(b,{feature:l,device:e,deviceState:a,onChange:n,onRead:m,featureWrapperClass:d,minimal:!0,parentFeatures:[]},u(l))),s.jsxs("div",{className:"flex flex-row items-center gap-1 mt-3",children:[s.jsx("div",{className:"grow-1"}),s.jsx(o,{to:`/device/${e.ieee_address}/exposes`,className:"link link-secondary",title:t("devicePage:exposes"),children:s.jsx(f,{icon:h,size:"xl"})})]})]})]}),s.jsxs("li",{className:"flex flex-row flex-wrap gap-1 m-2 justify-around items-center",children:[s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("last_seen"),children:s.jsx(w,{lastSeen:a.last_seen,config:c})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("lqi"),children:s.jsx(y,{value:a.linkquality})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("power"),children:s.jsx(N,{device:e,batteryPercent:a.battery,batteryState:a.battery_state,batteryLow:a.battery_low,showLevel:!0})}),g]})]})});export{$ as D};
@@ -1 +0,0 @@
1
- import{j as u,F as l,S as w,r as d,b as x,ae as b,bv as O,bw as S,A as P,bx as N}from"./index-Dvk0LOWb.js";import{g as _,a as y}from"./index-DkQr105Q.js";function D({error:r,children:e}){return r?u.jsx(l,{icon:w,size:"3x",className:"text-error",title:"Missing image"}):e}function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function I(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var i=t.call(r,e);if(p(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function E(r){var e=I(r,"string");return p(e)=="symbol"?e:e+""}function A(r,e,t){return(e=E(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var L=function(r){var e=r.crossOrigin,t=e===void 0?"":e;return function(i){return new Promise(function(n,o){var s=new Image;t&&(s.crossOrigin=t),s.onload=function(){s.decode?s.decode().then(n).catch(o):n()},s.onerror=o,s.src=i})}};function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function g(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?j(Object(t),!0).forEach(function(i){A(r,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(i){Object.defineProperty(r,i,Object.getOwnPropertyDescriptor(t,i))})}return r}var $=function(e){return e.filter(function(t){return t})},F=function(e){return Array.isArray(e)?e:[e]},c={},T=function(e,t){var i=!1;return new Promise(function(n,o){var s=function(m){return t(m).then(function(){i=!0,n(m)})};e.reduce(function(f,m){return f.catch(function(){if(!i)return s(m)})},s(e.shift())).catch(o)})};function z(r){var e=r.srcList,t=r.imgPromise,i=t===void 0?L({}):t,n=r.useSuspense,o=n===void 0?!0:n,s=d.useState(!1),f=s[1],m=$(F(e)),a=m.join("");if(c[a]||(c[a]={promise:T(m,i),cache:"pending",error:null}),c[a].cache==="resolved")return{src:c[a].src,isLoading:!1,error:null};if(c[a].cache==="rejected"){if(o)throw c[a].error;return{isLoading:!1,error:c[a].error,src:void 0}}if(c[a].promise.then(function(v){c[a]=g(g({},c[a]),{},{cache:"resolved",src:v}),o||f(a)}).catch(function(v){c[a]=g(g({},c[a]),{},{cache:"rejected",error:v}),o||f(a)}),o)throw c[a].promise;return{isLoading:!0,src:void 0,error:null}}const h=d.memo(({device:r,className:e})=>{var s;const t=(s=r.definition)==null?void 0:s.icon,i=_(r),n=[];t&&n.push(t),i&&n.push(i),i!==y&&n.push(y);const{src:o}=z({srcList:n});return u.jsx("img",{alt:r.ieee_address,crossOrigin:"anonymous",src:o,className:e})}),k=d.memo(r=>{const{t:e}=x("zigbee"),{device:t={},disabled:i,otaState:n,className:o,noIndicator:s}=r,f=d.useMemo(()=>t.interview_state===b.InProgress?u.jsx(l,{icon:O,spin:!0,title:e("interviewing"),className:"indicator-item indicator-bottom indicator-end text-info"}):t.interview_state===b.Failed?u.jsx(l,{icon:w,beat:!0,title:e("interview_failed"),className:"indicator-item indicator-bottom indicator-end text-error"}):t.supported?null:u.jsx(l,{icon:S,beat:!0,title:e("unsupported"),className:"indicator-item indicator-bottom indicator-end text-warning"}),[t.interview_state,t.supported,e]);return u.jsx(d.Suspense,{fallback:u.jsx("img",{alt:t.ieee_address,src:y}),children:u.jsx(D,{children:s?u.jsx(h,{device:t,className:`grid place-items-center${o?` ${o}`:""}`}):u.jsxs("div",{className:"indicator w-full",children:[n==="updating"&&u.jsx(l,{icon:P,spin:!0,title:e("updating_firmware"),className:"indicator-item indicator-top indicator-end text-info"}),f,i&&u.jsx(l,{icon:N,title:e("common:disabled"),className:"indicator-item indicator-middle indicator-center text-error",size:"2xl"}),u.jsx(h,{device:t,className:`grid place-items-center${o?` ${o}`:""}`})]})})})});export{k as D};
@@ -1 +0,0 @@
1
- import{a5 as D,v as k,C as A,b as j,r as n,j as e,M as R,B as b,F as I,E as $,a as p,W as P,L as g,ac as O,t as T}from"./index-Dvk0LOWb.js";import{r as U}from"./capitalize-Dl_OcOwT.js";import{r as V}from"./_createCompounder-CoEvIprv.js";import{s as W}from"./snakeCase-D7NmHVW8.js";import{D as B}from"./DeviceControlEditName-CsGmD81w.js";import{A as G,D as K}from"./Availability-CYKf5yfk.js";import{T as H}from"./TextareaField-D2zWQY32.js";import{D as X}from"./DeviceImage-CKYz5x1m.js";import{D as y}from"./DisplayValue-DesQy-9S.js";import{L as J}from"./LastSeen-DSAsbO4K.js";import{M as Q,V as Y}from"./VendorLink-DQoSmGNy.js";import{P as Z}from"./PowerSource-DMT4xF1g.js";import"./CheckboxField-EfpHUONn.js";import"./InputField-iH5D3aK4.js";import"./index-DkQr105Q.js";var ee=U();const se=D(ee);var u,C;function ae(){if(C)return u;C=1;var d=V(),s=d(function(a,i,r){return a+(r?" ":"")+i.toLowerCase()});return u=s,u}var te=ae();const ie=D(te),re=k.create(d=>{const{device:s,setDeviceDescription:a}=d,i=A(),{t:r}=j(["zigbee","common"]),[x,v]=n.useState(s.description||"");return n.useEffect(()=>{v(s.description||"")},[s.description]),e.jsx(R,{isOpen:i.visible,title:`${r("update_description")} ${s.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"btn btn-neutral",onClick:i.remove,children:r("common:cancel")}),e.jsx(b,{className:"btn btn-primary ms-1",onClick:async()=>{i.remove(),await a(s.ieee_address,x)},children:r("zigbee:save_description")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(H,{label:r("description"),name:"update_description",onChange:c=>v(c.target.value),rows:3,value:x})})})}),ne=n.memo(d=>{const{device:s,setDeviceDescription:a}=d,{t:i}=j("zigbee");return e.jsx(b,{className:`btn btn-link btn-sm${s.description?" btn-square":""}`,onClick:async()=>await k.show(re,{device:s,setDeviceDescription:a}),title:i("edit_description"),children:s.description?e.jsx(I,{icon:$}):i("edit_description")})}),le=/\[(.*?)]\((.*?)\)/;function ge(d){var N,_;const{device:s}=d,{t:a}=j(["zigbee","availability"]),i=p(t=>t.deviceStates),r=p(t=>t.bridgeInfo.config),x=p(t=>t.availability),v=r.homeassistant.enabled,c=n.useMemo(()=>i[s.friendly_name]??{},[s.friendly_name,i]),{sendMessage:l}=n.useContext(P),h=n.useCallback(async(t,o,m)=>{await l("bridge/request/device/rename",{from:t,to:o,homeassistant_rename:m,last:void 0})},[l]),E=n.useCallback(async(t,o)=>{await l("bridge/request/device/options",{id:t,options:{description:o}})},[l]),S=n.useCallback(async t=>{await l("bridge/request/device/configure",{id:t})},[l]),L=n.useCallback(async(t,o,m)=>{await l("bridge/request/device/remove",{id:t,force:o,block:m})},[l]),q=n.useCallback(async t=>{await l("bridge/request/device/interview",{id:t})},[l]),f=(N=r.devices[s.ieee_address])==null?void 0:N.availability,M=n.useMemo(()=>{var o,m,w;const t=(o=s.definition)!=null&&o.description?le.exec((m=s.definition)==null?void 0:m.description):void 0;if(t){const[,z,F]=t;return e.jsx(g,{target:"_blank",rel:"noopener noreferrer",to:F,className:"link link-hover",children:z})}return e.jsx(e.Fragment,{children:(w=s.definition)==null?void 0:w.description})},[s.definition]);return e.jsxs("div",{className:"card lg:card-side bg-base-100",children:[e.jsx("figure",{className:"w-64 h-64",style:{overflow:"visible"},children:e.jsx(X,{device:s,otaState:(_=c.update)==null?void 0:_.state,disabled:s.disabled,className:""})}),e.jsxs("div",{className:"card-body",children:[e.jsxs("h2",{className:"card-title",children:[s.friendly_name," (",s.ieee_address,")",e.jsx(B,{name:s.friendly_name,renameDevice:h,homeassistantEnabled:v,style:"btn-link btn-sm btn-square"})]}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[e.jsx("span",{className:`badge ${s.supported?" badge-success":" badge-warning"}`,children:e.jsx(y,{name:"supported",value:s.supported})}),!s.supported&&e.jsx("span",{className:"badge animate-bounce",children:e.jsx(g,{target:"_blank",rel:"noopener noreferrer",to:O,className:"link link-hover",children:a("how_to_add_support")})}),e.jsx("span",{className:"badge opacity-70",children:e.jsx(y,{name:"interview_state",value:`${a("interview_state")}: ${se(ie(s.interview_state))}`})})]}),e.jsxs("div",{children:[e.jsx("pre",{className:"inline",children:s.description||""}),e.jsx(ne,{device:s,setDeviceDescription:E})]}),e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:s.type}),e.jsx("div",{className:"stat-value text-xl",children:T(s.network_address)}),e.jsxs("div",{className:"stat-desc",children:[a("network_address_dec"),": ",s.network_address]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("last_seen")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(J,{config:r.advanced.last_seen,lastSeen:c.last_seen})}),e.jsxs("div",{className:"stat-desc",children:[a("availability:availability"),": ",e.jsx(G,{availability:x[s.friendly_name]??{state:"offline"},disabled:s.disabled,availabilityFeatureEnabled:r.availability.enabled,availabilityEnabledForDevice:f!=null?!!f:void 0})]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("power")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(Z,{showLevel:!0,device:s,batteryPercent:c.battery,batteryState:c.battery_state,batteryLow:c.battery_low})}),e.jsx("div",{className:"stat-desc",children:a(W(s.power_source)||"unknown")})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("firmware_id")}),e.jsx("div",{className:"stat-value text-xl",children:s.software_build_id||a("unknown")}),e.jsx("div",{className:"stat-desc",children:s.date_code||a("unknown")})]})]}),e.jsxs("div",{className:"stats stats-vertical lg:stats-horizontal shadow",children:[e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("zigbee_model")}),e.jsx("div",{className:"stat-value text-xl",children:s.model_id}),e.jsxs("div",{className:"stat-desc",children:[s.manufacturer," (",M,")"]})]}),e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-title",children:a("model")}),e.jsx("div",{className:"stat-value text-xl",children:e.jsx(Q,{device:s})}),e.jsx("div",{className:"stat-desc",children:e.jsx(Y,{device:s})})]})]}),e.jsx("div",{className:"card-actions justify-end mt-2",children:e.jsx(K,{device:s,state:c,homeassistantEnabled:v,configureDevice:S,renameDevice:h,removeDevice:L,interviewDevice:q})})]})]})}export{ge as default};
@@ -1 +0,0 @@
1
- import{b as c,a as d,r,W as l,j as e,F as m,z as f,ag as p,ah as g}from"./index-Dvk0LOWb.js";import{S as x}from"./SettingsList-BcuolEXG.js";import"./CheckboxField-EfpHUONn.js";import"./InputField-iH5D3aK4.js";import"./SelectField-CQ3lu6a0.js";function S({device:s}){const{t:a}=c(["settings","common"]),t=d(o=>o.bridgeInfo),{sendMessage:i}=r.useContext(l),n=r.useCallback(async o=>{await i("bridge/request/device/options",{id:s.ieee_address,options:o})},[i,s.ieee_address]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(m,{icon:f,size:"2xl"}),e.jsx("a",{href:p,target:"_blank",rel:"noreferrer",className:"link link-hover",children:a("common:read_the_docs_info")})]}),e.jsx(x,{schema:t.config_schema.definitions.device??{properties:{}},data:g({},t.config.device_options,t.config.devices[s.ieee_address]),set:n})]})}export{S as default};
@@ -1 +0,0 @@
1
- import{r as o,a as f,a7 as C,b as j,W as _,j as e,B as D,G as w,F as k,w as y}from"./index-Dvk0LOWb.js";import{g as M,R as F,A as N}from"./RecallRemove-zG9m4Em1.js";import{D as R}from"./DevicePicker-_eMijIEu.js";import{E}from"./EndpointPicker-CecBv6fj.js";import{D as A}from"./DashboardFeatureWrapper-CulyQEmi.js";import{D as G}from"./DeviceCard-DN-HINkT.js";import"./Feature-BAIiHKNG.js";import"./DisplayValue-DesQy-9S.js";import"./_createCompounder-CoEvIprv.js";import"./capitalize-Dl_OcOwT.js";import"./InputField-iH5D3aK4.js";import"./SelectField-CQ3lu6a0.js";import"./LastSeen-DSAsbO4K.js";import"./Lqi-B8JfaMIy.js";import"./PowerSource-DMT4xF1g.js";import"./snakeCase-D7NmHVW8.js";import"./DeviceImage-CKYz5x1m.js";import"./index-DkQr105Q.js";const I=o.memo(n=>{const[i,l]=o.useState(""),[a,m]=o.useState(""),{group:c}=n,d=f(s=>s.devices),u=o.useMemo(()=>C(d.find(s=>s.ieee_address===a)),[a,d]),{t:r}=j(["groups","zigbee"]),{sendMessage:p}=o.useContext(_),t=o.useCallback(s=>{m(s.ieee_address);const v=C(s);l(v.values().next().value)},[]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:r("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(R,{label:r("zigbee:device"),value:a,devices:d,onChange:t}),e.jsx(E,{label:r("zigbee:endpoint"),values:u,value:i,onChange:s=>l(s)})]}),e.jsx(D,{onClick:async()=>await p("bridge/request/group/members/add",{group:c.id.toString(),endpoint:i,device:a}),className:"btn btn-primary",children:r("add_to_group")})]})}),W=o.memo(n=>{const{removeDeviceFromGroup:i,groupMember:l,device:a,deviceState:m,lastSeenConfig:c,setDeviceState:d,getDeviceState:u}=n,{endpoint:r}=l,{t:p}=j(["groups","common"]),t=o.useMemo(()=>{var x;const b=[];for(const S of((x=a.definition)==null?void 0:x.exposes)??[]){const h=M(S,m);if(h&&(b.push(h),b.length===10))break}return b},[a,m]),s=o.useCallback(async b=>await d(a.ieee_address,b),[a.ieee_address,d]),v=o.useCallback(async b=>await u(a.ieee_address,b),[a.ieee_address,u]),g=o.useCallback(async()=>await i(a.ieee_address,r),[a.ieee_address,r,i]);return e.jsx(G,{features:t,device:a,endpoint:r,deviceState:m,onChange:s,onRead:v,featureWrapperClass:A,lastSeenConfig:c,children:e.jsx(w,{onClick:g,className:"btn btn-square btn-error btn-sm",title:p("remove_from_group"),modalDescription:p("common:dialog_confirmation_prompt"),modalCancelLabel:p("common:cancel"),children:e.jsx(k,{icon:y})})})}),$=o.memo(n=>{const{group:i}=n,l=f(t=>t.devices),a=f(t=>t.deviceStates),m=f(t=>t.bridgeInfo.config.advanced.last_seen),{sendMessage:c}=o.useContext(_),d=o.useCallback(async(t,s)=>await c("bridge/request/group/members/remove",{device:t,endpoint:s,group:i.id.toString()}),[c,i.id]),u=o.useCallback(async(t,s)=>{await c(`${t}/set`,s)},[c]),r=o.useCallback(async(t,s)=>{await c(`${t}/get`,s)},[c]),p=o.useMemo(()=>{const t=[];for(const s of i.members){const v=l.find(g=>g.ieee_address===s.ieee_address);v&&t.push(e.jsx("ul",{className:"flex-auto basis-sm list bg-base-200 rounded-box shadow-md",children:e.jsx(W,{removeDeviceFromGroup:d,device:v,groupMember:s,deviceState:a[v.friendly_name]??{},lastSeenConfig:m,setDeviceState:u,getDeviceState:r})},`${s.ieee_address}-${s.endpoint}`))}return t},[i,l,m,a,d,u,r]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-between items-stretch gap-3",children:p})});function te({group:n}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4 mb-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(I,{group:n})}),e.jsx("div",{className:"flex-1",children:e.jsx(F,{target:n,deviceState:{}})}),e.jsx("div",{className:"flex-1",children:e.jsx(N,{target:n,deviceState:{}})})]}),e.jsx($,{group:n})]})}export{te as default};
Binary file
@@ -1 +0,0 @@
1
- import{r,W as S,a as d,s as N,D as y,b as L,j as a,t as p,c as E,L as j}from"./index-Dvk0LOWb.js";import{A as q,D as A}from"./Availability-CYKf5yfk.js";import{D as M}from"./DeviceImage-CKYz5x1m.js";import{C as I}from"./CheckboxField-EfpHUONn.js";import{T}from"./Table-CFkcNCwp.js";import{L as H}from"./LastSeen-DSAsbO4K.js";import{L as P}from"./Lqi-B8JfaMIy.js";import{M as V,V as R}from"./VendorLink-DQoSmGNy.js";import{P as W}from"./PowerSource-DMT4xF1g.js";import"./DeviceControlEditName-CsGmD81w.js";import"./InputField-iH5D3aK4.js";import"./index-DkQr105Q.js";import"./DebouncedInput-CjlgBmTV.js";import"./DisplayValue-DesQy-9S.js";import"./snakeCase-D7NmHVW8.js";import"./_createCompounder-CoEvIprv.js";const w=N;function le(){const{sendMessage:n}=r.useContext(S),m=d(e=>e.devices),b=d(e=>e.deviceStates),l=d(e=>e.bridgeInfo.config),v=d(e=>e.availability),[o,k]=r.useState(w.get(y,!1)),{t}=L(["zigbee","common","availability"]),c=r.useMemo(()=>{var s;const e=[];for(const i of m)if(i.type!=="Coordinator"&&(!o||!i.disabled)){const F=b[i.friendly_name]??{},_=(s=l.devices[i.ieee_address])==null?void 0:s.availability;e.push({device:i,state:F,availabilityState:v[i.friendly_name]??{state:"offline"},availabilityEnabledForDevice:_!=null?!!_:void 0})}return e},[m,b,l.devices,v,o]),u=r.useCallback(e=>{w.set(y,e.target.checked),k(e.target.checked)},[]),f=r.useCallback(async(e,s,i)=>{await n("bridge/request/device/rename",{from:e,to:s,homeassistant_rename:i,last:void 0})},[n]),g=r.useCallback(async e=>{await n("bridge/request/device/configure",{id:e})},[n]),h=r.useCallback(async(e,s,i)=>{await n("bridge/request/device/remove",{id:e,force:s,block:i})},[n]),x=r.useCallback(async e=>{await n("bridge/request/device/interview",{id:e})},[n]),D=r.useMemo(()=>[{id:"friendly_name",header:t("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description].join(" "),cell:({row:{original:{device:e,state:s}}})=>{var i;return a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar",children:a.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:a.jsx(M,{device:e,otaState:(i=s.update)==null?void 0:i.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx(j,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.description&&a.jsx("div",{className:"text-xs opacity-50",children:e.description}),a.jsx("div",{className:"flex flex-row gap-1 mt-2 items-center",children:a.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:t("power"),children:a.jsx(W,{device:e,batteryPercent:s.battery,batteryState:s.battery_state,batteryLow:s.battery_low,showLevel:!0})})})]})]})}},{id:"ieee_address",header:t("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,p(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(j,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address})}),a.jsxs("div",{className:"flex flex-row gap-1",children:[a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:t("network_address_hex"),children:p(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:t("network_address_dec"),children:e.network_address})]})]})},{id:"model",header:t("model"),accessorFn:({device:e})=>{var s,i;return[(s=e.definition)==null?void 0:s.model,e.model_id,(i=e.definition)==null?void 0:i.vendor,e.manufacturer].join(" ")},cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(V,{device:e}),a.jsx("div",{className:"flex flex-row gap-1",children:a.jsx("span",{className:"badge badge-ghost",title:t("manufacturer"),children:a.jsx(R,{device:e})})})]})},{id:"lqi",header:t("lqi"),accessorFn:({state:e})=>e.linkquality,cell:({row:{original:{state:e}}})=>a.jsx(P,{value:e.linkquality}),enableColumnFilter:!1},{id:"last_seen",header:t("last_seen"),accessorFn:({state:e})=>{var s;return(s=E(e.last_seen,l.advanced.last_seen))==null?void 0:s.getTime()},cell:({row:{original:{state:e}}})=>a.jsx(H,{lastSeen:e.last_seen,config:l.advanced.last_seen}),enableColumnFilter:!1},{id:"availability",header:t("availability:availability"),accessorFn:({availabilityState:e})=>e.state,cell:({row:{original:{device:e,availabilityState:s,availabilityEnabledForDevice:i}}})=>a.jsx(q,{disabled:e.disabled,availability:s,availabilityEnabledForDevice:i,availabilityFeatureEnabled:l.availability.enabled}),enableColumnFilter:!1},{id:"controls",header:()=>a.jsx(I,{name:"hide_disabled",detail:t("common:hide_disabled"),onChange:u,checked:o}),cell:({row:{original:{device:e,state:s}}})=>a.jsx(A,{device:e,state:s,homeassistantEnabled:l.homeassistant.enabled,renameDevice:f,removeDevice:h,configureDevice:g,interviewDevice:x}),enableSorting:!1,enableColumnFilter:!1}],[o,l.advanced.last_seen,l.availability.enabled,l.homeassistant.enabled,u,f,h,g,x,t]),C=r.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,last_seen:l.advanced.last_seen!=="disable",availability:l.availability.enabled||c.some(e=>e.availabilityEnabledForDevice),controls:!0}),[l.advanced.last_seen,l.availability.enabled,c]);return a.jsx(T,{id:"all-devices",columns:D,data:c,visibleColumns:C})}export{le as default};
@@ -1,3 +0,0 @@
1
- �`�ϩ����z��t�ҧ6f������2���8Us I�s�1�;��n�z�<���6=F��Y�M�S�U,��ej(7����ڞ�:��(~w�ߛ����ޯ3�!�,��*���W�E�qkի@�*�"��ՠ�A
2
- �Z��t�Y��M9Vr<c�L��㿀8����ʕ���
3
- �7Ƙ� 1I'�tK��H,' t/��U����X�Yzy2�� �Sz�Җ)�H�mm���ꂐf��]���D�G�����0�ͮ�����z�7�pC���Ša5�S��e� �v��~s�j�;�g�(,J��
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{a5 as J,az as Fe,aA as Ie,aB as Be,l as qe,aC as Ge,aD as Me,aE as Oe,aF as Ve,aG as He,aH as ee,aI as te,aJ as Le,aK as Pe,aL as ze,aM as Ue,aN as We,aO as De,aP as ae,aQ as Xe,aR as re,aS as Ye,aT as Ke,aU as L,aV as ne,aW as se,S as Qe,aX as Ze,aY as Je,aZ as et,a_ as tt,a$ as at,b0 as rt,b1 as nt,b2 as st,b3 as ot,b4 as ct,b5 as lt,b6 as it,b7 as ut,b8 as mt,b9 as ft,ba as xt,bb as ht,bc as pt,bd as dt,be as R,bf as gt,bg as oe,bh as bt,bi as _t,bj as yt,bk as Ct,bl as ge,bm as jt,bn as be,bo as vt,bp as St,bq as Tt,r as l,j as s,b as A,B as v,F as Z,av as kt,ah as Et,br as Nt,bs as wt,A as At}from"./index-Dvk0LOWb.js";import{D as V}from"./DisplayValue-DesQy-9S.js";import{r as _e,a as Rt}from"./_createCompounder-CoEvIprv.js";import{r as $t,a as Ft}from"./capitalize-Dl_OcOwT.js";var P,ce;function It(){if(ce)return P;ce=1;var e=$t(),a=_e(),r=a(function(t,o,n){return o=o.toLowerCase(),t+(n?e(o):o)});return P=r,P}var Bt=It();const qt=J(Bt);var z,le;function Gt(){if(le)return z;le=1;var e=_e(),a=Ft(),r=e(function(t,o,n){return t+(n?" ":"")+a(o)});return z=r,z}var Mt=Gt();const Ot=J(Mt),Vt={battery_low:R,humidity:dt,illuminance:L,pressure:pt,co2:ht,voltage:xt,state:ft,brightness:L,occupancy:mt,presence:ut,current:it,power:lt,energy:ct,frequency:ot,tamper:st,smoke:nt,radiation_dose_per_hour:rt,radioactive_events_per_minute:at,power_factor:tt,mode:et,sound:Je,position:Ze,alarm:Qe,color_xy:se,color_hs:se,color_temp:ne,color_temp_startup:ne,illuminance_lux:L,soil_moisture:Ke,water_leak:ae,week:Ye,workdays_schedule:re,holidays_schedule:re,away_mode:Xe,vibration:ae,power_outage_count:De,action:We,angle_x:Ue,angle_y:ze,angle_z:Pe,side:Le,humidity_alarm:te,temperature_alarm:te,approach_distance:ee,distance:ee,trigger_count:He,level_config:Ve,station:Oe,effect:Me,linkquality:Ge,system_mode:qe,gradient:Be,sensitivity:Ie,test:Fe},Ht=(e,a)=>{let r=R;return e==null||(e>=85?(r=ge,a.push("text-success")):e>=65?r=jt:e>=40?r=be:e>=20?r=vt:(r=R,a.push("text-error"))),r},Lt=(e,a)=>{let r=R;switch(e){case"high":{r=ge,a.push("text-success");break}case"medium":{r=be;break}case"low":{r=R,a.push("text-error");break}}return r},Pt=(e,a,r)=>{let t=oe;return e==null||(a==="°F"&&(e=(e-32)/1.8),e>=30?(t=bt,r.push("text-error")):e>=25?t=_t:e>=20?t=yt:e>=15?t=Ct:e<5&&(t=oe,r.push("text-info"))),t},zt=(e,a,r)=>{let t;const o=[],n={};switch(e){case"battery":{t=Ht(a,o);break}case"battery_state":{t=Lt(a,o);break}case"battery_low":{a&&o.push("text-error");break}case"device_temperature":case"temperature":case"local_temperature":{t=Pt(a,r,o);break}case"humidity":{a!=null&&a>60&&o.push("text-info");break}case"contact":{t=a?St:Tt,a||o.push("text-primary");break}case"occupancy":{a&&(o.push("text-warning"),n.beat=!0);break}case"presence":{a&&(o.push("text-warning"),n.beat=!0);break}case"tamper":{a&&(o.push("text-error"),n.beatFade=!0,n.shake=!0);break}case"water_leak":{a&&(o.push("text-primary"),n.beatFade=!0);break}case"vibration":{a&&(o.push("text-primary"),n.shake=!0);break}}return t?[t,o.join(" "),n]:(t=Vt[e],t?[t,o.join(" "),n]:[gt,"opacity-0",{}])},Ut=e=>`${e.type}-${e.name}-${e.label}-${e.property}-${e.access}-${e.category}-${e.endpoint}`;var y=(e=>(e[e.STATE=1]="STATE",e[e.SET=2]="SET",e[e.GET=4]="GET",e[e.STATE_SET=3]="STATE_SET",e[e.STATE_GET=5]="STATE_GET",e[e.ALL=7]="ALL",e))(y||{});const $=l.memo(({feature:e,deviceValue:a})=>s.jsxs("div",{children:[e.property&&s.jsx("span",{className:"font-bold",children:s.jsx(V,{value:a,name:e.name})}),"unit"in e&&s.jsx("span",{className:"text-xs ms-1",children:e.unit})]})),F=l.memo(e=>s.jsxs("div",{className:"alert alert-warning",role:"alert",children:["Unknown access ",s.jsx("pre",{children:e.feature.access})]})),Wt=l.memo(e=>{const{feature:{access:a=y.SET,name:r,property:t,value_off:o,value_on:n},deviceValue:m,onChange:c,minimal:f}=e,{t:i}=A("zigbee"),h=l.useCallback(x=>c({[t]:x}),[t,c]),u=l.useCallback(x=>c({[t]:x.target.checked?n:o}),[n,o,t,c]);if(a&y.SET){const x=m!=null,p=!f||f&&!x;return s.jsxs("div",{children:[p&&s.jsx(v,{className:"btn btn-link",item:o,onClick:h,children:s.jsx(V,{value:o,name:r})}),x?s.jsx("input",{className:"toggle",type:"checkbox",checked:m===n,onChange:u}):s.jsx(Z,{icon:kt,title:i("unknown")}),p&&s.jsx(v,{className:"btn btn-link",item:n,onClick:h,children:s.jsx(V,{value:n,name:r})})]})}return a&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),N=l.memo(e=>{const{feature:a,onChange:r,parentFeatures:t,onRead:o,device:n,deviceState:m,featureWrapperClass:c,minimal:f,steps:i}=e,{type:h,property:u}=a,[x,p]=l.useState({}),{t:_}=A(["composite","common"]),j=l.useMemo(()=>Et({},m,x),[m,x]),k="features"in a&&a.features||[],E=l.useMemo(()=>{if(h==="composite"&&t!==void 0){if(t.length===1)return!0;if(t.length===2){const b=t[1].type;return b!=null&&b!=="composite"&&b!=="list"}}return!1},[h,t]);l.useEffect(()=>{p({})},[n.ieee_address]);const d=l.useCallback(b=>{p({...x,...b}),E||r(h==="composite"&&u?{[u]:{...x,...b}}:b)},[x,h,u,E,r]),g=l.useCallback(()=>{const b={...m,...x};r(u?{[u]:b}:b)},[u,r,x,m]),C=l.useCallback(b=>{h==="composite"?o==null||o(u?{[u]:b}:b):o==null||o(b)},[o,h,u]);return s.jsxs(s.Fragment,{children:[k.map(b=>s.jsx(Re,{feature:b,parentFeatures:t??[],device:n,deviceState:j,onChange:d,onRead:C,featureWrapperClass:c,minimal:f,steps:i==null?void 0:i[b.name]},Ut(b))),E&&s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${f?" btn-sm":""}`,onClick:g,children:_("common:apply")})})]})}),Dt=l.memo(e=>s.jsx(N,{...e}));var U,ie;function Xt(){if(ie)return U;ie=1;function e(a,r,t){return a===a&&(t!==void 0&&(a=a<=t?a:t),r!==void 0&&(a=a>=r?a:r)),a}return U=e,U}var W,ue;function Yt(){if(ue)return W;ue=1;var e=/\s/;function a(r){for(var t=r.length;t--&&e.test(r.charAt(t)););return t}return W=a,W}var D,me;function Kt(){if(me)return D;me=1;var e=Yt(),a=/^\s+/;function r(t){return t&&t.slice(0,e(t)+1).replace(a,"")}return D=r,D}var X,fe;function Qt(){if(fe)return X;fe=1;var e=Kt(),a=Nt(),r=Rt(),t=NaN,o=/^[-+]0x[0-9a-f]+$/i,n=/^0b[01]+$/i,m=/^0o[0-7]+$/i,c=parseInt;function f(i){if(typeof i=="number")return i;if(r(i))return t;if(a(i)){var h=typeof i.valueOf=="function"?i.valueOf():i;i=a(h)?h+"":h}if(typeof i!="string")return i===0?i:+i;i=e(i);var u=n.test(i);return u||m.test(i)?c(i.slice(2),u?2:8):o.test(i)?t:+i}return X=f,X}var Y,xe;function Zt(){if(xe)return Y;xe=1;var e=Xt(),a=Qt();function r(t,o,n){return n===void 0&&(n=o,o=void 0),n!==void 0&&(n=a(n),n=n===n?n:0),o!==void 0&&(o=a(o),o=o===o?o:0),e(a(t),o,n)}return Y=r,Y}var Jt=Zt();const T=J(Jt),ea=[.412453,.35758,.180423,.212671,.71516,.072169,.019334,.119193,.950227],ta=[3.2404813432005266,-1.5371515162713183,-.49853632616888777,-.9692549499965684,1.8759900014898907,.041555926558292815,.05564663913517715,-.20404133836651123,1.0573110696453443],ye=.42,Ce=.0031308,je=12.92,H=.055,M=e=>e<=Ce?je*e:(1+H)*e**ye-H,aa=1/ye,ra=M(Ce),na=1/je,K=e=>e<=ra?e*na:((e+H)/(1+H))**aa,ve=(e,a)=>{const r=[0,0,0];for(let t=0;t<3;t++){r[t]=0;for(let o=0;o<3;o++)r[t]+=a[t*3+o]*e[o]}return r},he=(e,a,r)=>{const t=[K(e),K(a),K(r)];return ve(t,ea)},sa=(e,a,r)=>{const t=ve([e,a,r],ta);return[M(t[0]),M(t[1]),M(t[2])]},Se=(e,a,r)=>{const t=1-e-a;return sa(r/a*e,r,r/a*t)},Te=(e,a,r=10)=>{let t=1;for(let o=0;o<r;o++){const n=Math.max(...Se(e,a,t));t=t/n}return t},I=(e,a,r)=>{if(e/=255,a/=255,r/=255,e<1e-12&&a<1e-12&&r<1e-12){const[c,f,i]=he(1,1,1),h=c+f+i;return[c/h,f/h,0]}const[t,o,n]=he(e,a,r),m=t+o+n;return[t/m,o/m,o]},oa=(e,a,r)=>{r===void 0&&(r=Te(e,a));const[t,o,n]=Se(e,a,r);return[T(t*255,0,255),T(o*255,0,255),T(n*255,0,255)]},B=(e,a,r)=>{e/=255,a/=255,r/=255;const t=Math.max(e,a,r),o=t-Math.min(e,a,r),n=o?(t===e?(a-r)/o+(a<r?6:0):t===a?2+(r-e)/o:4+(e-a)/o)*60:0,m=t?o/t*100:0,c=t*100;return[T(n,0,360),T(m,0,100),T(c,0,100)]},ca=(e,a,r)=>{a/=100,r/=100;const t=~~(e/60),o=e/60-t,n=r*(1-a),m=r*(1-a*o),c=r*(1-a*(1-o)),f=t%6,i=[r,m,n,n,c,r][f]*255,h=[c,r,r,m,n,n][f]*255,u=[n,n,c,r,r,m][f]*255;return[T(i,0,255),T(h,0,255),T(u,0,255)]},q=(e,a,r)=>{const[t,o,n]=[e,a,r].map(m=>Math.round(m).toString(16).padStart(2,"0"));return`#${t}${o}${n}`},la=e=>(e=e.slice(1),Array.from({length:3}).map((a,r)=>Number.parseInt(e.slice(r*2,r*2+2),16))),w=(e,a)=>{switch(a){case"color_xy":{const{x:r=.313,y:t=.329,Y:o=Te(r,t===0?.329:t)}=e,n=t===0?[255,255,255]:oa(r,t,o);return{color_rgb:n,color_hs:B(...n),color_xy:[r,t,o],hex:q(...n)}}case"color_hs":{const{hue:r=0,saturation:t=0}=e,o=100,n=ca(r,t,o);return{color_rgb:n,color_hs:[r,t,o],color_xy:I(...n),hex:q(...n)}}case"color_rgb":{const{r=255,g:t=255,b:o=255}=e;return{color_rgb:[r,t,o],color_hs:B(r,t,o),color_xy:I(r,t,o),hex:q(r,t,o)}}case"hex":{const r=e,t=la(r);return{color_rgb:t,color_hs:B(...t),color_xy:I(...t),hex:r}}default:{const r=[255,255,255];return{color_rgb:r,color_hs:B(...r),color_xy:I(...r),hex:q(...r)}}}},pe=(e,a)=>{switch(a){case"color_xy":return{x:e.color_xy[0],y:e.color_xy[1]};case"color_hs":return{hue:e.color_hs[0],saturation:e.color_hs[1]};case"color_rgb":return{r:e.color_rgb[0],g:e.color_rgb[1],b:e.color_rgb[2]};case"hex":return e.hex}},ke=e=>`${e[0].toFixed(3)}, ${e[1].toFixed(3)}, ${e[2].toFixed(3)}`,O=e=>`${e[0].toFixed(2)}°, ${e[1].toFixed(2)}%, ${e[2].toFixed(2)}%`,Ee=e=>`${e[0].toFixed(0)}, ${e[1].toFixed(0)}, ${e[2].toFixed(0)}`,Ne=e=>e,de=e=>({color_xy:ke(e.color_xy),color_hs:O(e.color_hs),color_rgb:Ee(e.color_rgb),hex:Ne(e.hex)}),ia=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>+(a[t]??0))},ua=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>T(+(a[t]??0),0,t?100:360))},ma=e=>{const a=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((r,t)=>T(+(a[t]??0),0,255))},Q=(e,a)=>{switch(a){case"color_xy":{const r=ia(e);return w({x:r[0],y:r[1]},"color_xy")}case"color_hs":{const r=ua(e);return w({hue:r[0],saturation:r[1]},"color_hs")}case"color_rgb":{const r=ma(e);return w({r:r[0],g:r[1],b:r[2]},"color_rgb")}case"hex":return w(e,"hex")}},fa="linear-gradient(to right, white, transparent)",xa="linear-gradient(to right, rgb(255, 0, 0), rgb(255, 255, 0), rgb(0, 255, 0), rgb(0, 255, 255), rgb(0, 0, 255), rgb(255, 0, 255), rgb(255, 0, 0))",G=l.memo(({label:e,...a})=>s.jsxs("label",{className:"input",children:[e,s.jsx("input",{type:"text",className:"grow",...a})]})),we=l.memo(e=>{const{onChange:a,value:r={},format:t,minimal:o}=e,[n,m]=l.useState(w(r,t)),[c,f]=l.useState(de(n)),[i,h]=l.useState({color_rgb:!1,color_hs:!1,color_xy:!1,hex:!1});l.useEffect(()=>{const d=w(r,t);m(d),f(de(d))},[r,t]),l.useEffect(()=>{if(!i.color_xy){const d=ke(n.color_xy);f(g=>({...g,color_xy:d}))}},[i.color_xy,n.color_xy]),l.useEffect(()=>{if(!i.color_hs){const d=O(n.color_hs);f(g=>({...g,color_hs:d}))}},[i.color_hs,n.color_hs]),l.useEffect(()=>{if(!i.color_rgb){const d=Ee(n.color_rgb);f(g=>({...g,color_rgb:d}))}},[i.color_rgb,n.color_rgb]),l.useEffect(()=>{if(!i.hex){const d=Ne(n.hex);f(g=>({...g,hex:d}))}},[i.hex,n.hex]);const u=l.useCallback(d=>{if(d.target.value){const g=Array.from(n.color_hs);g[1]=d.target.valueAsNumber;const C=O(g);f(b=>({...b,color_hs:C})),m(Q(C,"color_hs"))}},[n.color_hs]),x=l.useCallback(d=>{if(d.target.value){const g=Array.from(n.color_hs),C=g[1];g[1]=C===0?100:C,g[0]=d.target.valueAsNumber;const b=O(g);f($e=>({...$e,color_hs:b})),m(Q(b,"color_hs"))}},[n.color_hs]),p=l.useCallback(d=>{const{value:g,name:C}=d.target;f(b=>({...b,[C]:g})),m(Q(g,C))},[]),_=l.useCallback(d=>{h(g=>({...g,[d.target.name]:!0}))},[]),j=l.useCallback(d=>{h(g=>({...g,[d.target.name]:!1})),a(t==="hex"?{hex:n.hex}:pe(n,t))},[n,t,a]),k=l.useCallback(()=>{a(t==="hex"?{hex:n.hex}:pe(n,t))},[n,t,a]),E=l.useMemo(()=>`hsl(${n.color_hs[0]}, 100%, 50%)`,[n.color_hs[0]]);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:s.jsx("div",{className:`w-full${o?" max-w-xs":""}`,children:s.jsx("input",{type:"range",min:0,max:100,value:n.color_hs[1],className:`range [--range-bg:transparent] [--range-fill:0] w-full${o?" range-xs ":""}`,style:{backgroundImage:fa,backgroundColor:E},onChange:u,onTouchEnd:k,onMouseUp:k})})}),s.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:s.jsx("div",{className:`w-full${o?" max-w-xs":""}`,children:s.jsx("input",{type:"range",min:0,max:360,value:n.color_hs[0],className:`range [--range-bg:transparent] [--range-fill:0] w-full${o?" range-xs ":""}`,style:{backgroundImage:xa},onChange:x,onTouchEnd:k,onMouseUp:k})})}),!o&&s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 justify-around",children:[s.jsx(G,{label:"hex",name:"hex",value:c.hex,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"rgb",name:"color_rgb",value:c.color_rgb,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"hsv",name:"color_hs",value:c.color_hs,onChange:p,onFocus:_,onBlur:j}),s.jsx(G,{label:"xyY",name:"color_xy",value:c.color_xy,onChange:p,onFocus:_,onBlur:j})]})]})}),ha=l.memo(e=>{const{deviceValue:a,feature:{name:r,features:t,property:o},onChange:n,minimal:m}=e,c=l.useMemo(()=>{const i={};for(const h of t)i[h.name]=(a==null?void 0:a[h.property])??0;return i},[a,t]),f=l.useCallback(i=>n({[o??"color"]:i}),[o,n]);return s.jsx(we,{onChange:f,value:c,format:r,minimal:m})}),pa={position:[0,25,50,75,100].map(e=>({value:e,name:`${e}`})),tilt:[0,25,50,75,100].map(e=>({value:e,name:`${e}`}))},da=l.memo(e=>s.jsx(N,{...e,steps:pa}));function S(e){return typeof e!="object"}const Ae=l.memo(e=>{const{onChange:a,values:r,value:t,minimal:o}=e,{t:n}=A("common"),m=l.useCallback(c=>{const f=r.find(i=>S(i)?i===c.target.value:i.value===Number.parseInt(c.target.value,10));a(f)},[r,a]);return o?s.jsxs("select",{className:"select",onChange:m,value:S(t)?t:t==null?void 0:t.value,children:[s.jsx("option",{value:"",disabled:!0,children:n("select_value")}),r.map(c=>s.jsx("option",{value:S(c)?c:c.value,children:S(c)?c:c.name},S(c)?c:c.name))]}):s.jsx("div",{className:"join join-vertical lg:join-horizontal",children:r.map(c=>s.jsx(v,{className:`btn btn-soft btn-sm join-item${(S(c)?c===t:c.value===(S(t)?t:t==null?void 0:t.value))?" btn-active":""}`,onClick:f=>a(f),item:S(c)?c:c.value,title:S(c)?`${c}`:c.description,children:S(c)?s.jsx(V,{value:c,name:""}):c.name},S(c)?c:c.name))})}),ga=6,ba=l.memo(e=>{const{onChange:a,feature:{access:r=y.SET,values:t,property:o},deviceValue:n,minimal:m}=e;return r&y.SET?s.jsx(Ae,{onChange:c=>a({[o]:c}),values:t,value:n||"",minimal:m||t.length>ga}):r&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),_a=l.memo(e=>s.jsx(N,{...e})),ya=l.memo(e=>{const{minimal:a,onChange:r,feature:{length_min:t,length_max:o,property:n},deviceValue:m}=e,{t:c}=A(["gradient","common"]),[f,i]=l.useState(t>0?Array(t).fill("#ffffff"):[]);l.useEffect(()=>{m&&Array.isArray(m)&&m.length>0&&i(m)},[m]);const h=l.useCallback((d,g)=>{const C=Array.from(f);C[d]=g,i(C)},[f]),u=l.useCallback(()=>{const d=Array.from(f);d.push("#ffffff"),i(d)},[f]),x=l.useCallback(d=>{const g=Array.from(f);g.splice(d,1),i(g)},[f]),p=l.useCallback(()=>r({[n??"gradient"]:f}),[f,n,r]),[_,j]=l.useState(!1),[k,E]=l.useState(!1);return l.useEffect(()=>{j(f.length<o),E(f.length>t)},[f,t,o]),s.jsxs("div",{className:"flex flex-col gap-2",children:[f.map((d,g)=>s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center",children:[s.jsx(we,{onChange:C=>{h(g,C.hex)},value:d,format:"hex"}),k&&s.jsx(v,{className:"btn btn-error",onClick:()=>x(g),children:"-"})]},`${d}-${g}`)),_&&s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:s.jsx(v,{className:"btn btn-success",onClick:u,children:"+"})}),s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${a?" btn-sm":""}`,onClick:p,children:c("common:apply")})})]})}),Ca={brightness:[0,25,50,75,100].map(e=>({value:wt(e,[0,100],[0,255]),name:`${e}%`})),color_temp:[1e3,2e3,3e3,4e3,5e3,6500].map(e=>({value:1e6/e,name:`${e}K`}))},ja=l.memo(e=>s.jsx(N,{...e,steps:Ca}));function va(e){return e.type==="composite"&&(e.name==="color_xy"||e.name==="color_hs")}const Sa=l.memo(e=>{var p;const{t:a}=A(["featureDescriptions","featureNames","zigbee"]),{children:r,feature:t,deviceValue:o,onRead:n}=e,m=t.unit,c=l.useMemo(()=>zt(t.name,o,m),[m,t.name,o]),f=l.useMemo(()=>t.property&&t.access&y.GET||va(t),[t]),i=(p=e.parentFeatures)==null?void 0:p[e.parentFeatures.length-1],h=t.name==="state"?t.property:t.name;let u=t.label||a(`featureNames:${h}`,{defaultValue:Ot(qt(h))});i!=null&&i.label&&t.name==="state"&&i.type!=="light"&&i.type!=="switch"&&(u=`${i.label} ${t.label.charAt(0).toLowerCase()}${t.label.slice(1)}`);const x=l.useCallback(_=>{_.property&&(n==null||n({[_.property]:""}))},[n]);return s.jsxs("div",{className:"list-row",children:[s.jsx("div",{children:s.jsx(Z,{icon:c[0],fixedWidth:!0,className:c[1],...c[2],size:"2xl"})}),s.jsxs("div",{children:[s.jsxs("div",{children:[u,t.endpoint?` (${a("zigbee:endpoint")}: ${t.endpoint})`:""]}),s.jsx("div",{className:"text-xs font-semibold opacity-60",children:t.description&&a(t.description)})]}),s.jsx("div",{className:"list-col-wrap flex flex-col gap-2",children:r}),f&&s.jsx(v,{item:t,onClick:x,className:"btn btn-xs btn-square btn-primary",children:s.jsx(Z,{icon:At})})]})}),Ta=l.memo(e=>{const{onChange:a,value:r,feature:t,parentFeatures:o}=e,[n,m]=l.useState(r);l.useEffect(()=>{m(r)},[r]);const c=l.useCallback(u=>{m(u),a(u)},[a]),f=l.useCallback((u,x)=>{const p=Array.from(n);typeof u=="object"&&(u={...n[x],...u}),p[x]=u,c(p)},[n,c]),i=l.useCallback(u=>{const x=Array.from(n);x.splice(u,1),c(x)},[n,c]),h=l.useCallback(()=>m([...n,{}]),[n]);return n.length===0?s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:s.jsx(v,{className:"btn btn-success col-1",onClick:h,children:"+"})}):s.jsx(s.Fragment,{children:n.map((u,x)=>s.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[s.jsx(Re,{feature:t,device:{},deviceState:u,onChange:p=>f(p,x),onRead:p=>{},featureWrapperClass:Sa,parentFeatures:o}),s.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[s.jsx(v,{item:x,className:"btn btn-error btn-square join-item",onClick:i,children:"-"}),n.length-1===x&&s.jsx(v,{className:"btn btn-success btn-square join-item",onClick:h,children:"+"})]})]},x))})}),ka=l.memo(e=>{const{feature:a,minimal:r,parentFeatures:t,onChange:o,deviceValue:n}=e,[m,c]=l.useState({value:a.property?(n==null?void 0:n[a.property])??[]:[]}),{t:f}=A(["list","common"]),i=l.useMemo(()=>{if(t!==void 0){if(t.length===1)return!0;if(t.length===2){const _=t[1].type;return _!=null&&_!=="composite"&&_!=="list"}}return!1},[t]),h=l.useCallback(_=>{c({value:_}),i||o(a.property?{[a.property]:_}:_)},[a.property,o,i]),u=l.useCallback(()=>{o(a.property?{[a.property]:m.value}:m.value)},[a.property,o,m.value]),{access:x=y.SET,item_type:p}=a;return x&y.SET?s.jsxs(s.Fragment,{children:[s.jsx(Ta,{feature:p,parentFeatures:[...t,a],onChange:h,value:m.value}),i&&s.jsx("div",{children:s.jsx(v,{className:`btn btn-primary ${r?" btn-sm":""}`,onClick:u,disabled:m.value.length===0,children:f("common:apply")})})]}):x&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Ea=l.memo(e=>s.jsx(N,{...e})),Na=l.memo(e=>{const{onChange:a,value:r,valueStep:t,min:o,max:n,unit:m,steps:c,minimal:f,...i}=e,[h,u]=l.useState(r),x=o!=null&&n!=null;l.useEffect(()=>{u(r)},[r]);const p=l.useCallback(j=>!!j.target.value&&u(j.target.valueAsNumber),[]),_=l.useCallback(j=>!j.target.validationMessage&&a(h),[h,a]);return s.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:[!f&&c?s.jsx(Ae,{values:c,onChange:a,value:h}):null,x?s.jsxs("div",{className:"w-full max-w-xs",children:[s.jsx("input",{min:o,max:n,step:t,type:"range",className:"range range-xs range-primary validator",value:h,onChange:p,onTouchEnd:_,onMouseUp:_,...i}),s.jsxs("div",{className:"flex justify-between px-1 mt-1 text-xs",children:[s.jsx("span",{children:"|"}),s.jsx("span",{children:"|"})]}),s.jsxs("div",{className:"flex justify-between px-1 mt-1 text-xs",children:[s.jsx("span",{children:o}),s.jsx("span",{children:n})]})]}):null,(!f||!x)&&s.jsxs("label",{className:"input",children:[m,s.jsx("input",{type:"number",className:"grow validator",value:h,step:t,onChange:p,onBlur:_,min:o,max:n,...i})]})]})}),wa=l.memo(e=>{const{feature:{presets:a,access:r=y.SET,property:t,unit:o,value_max:n,value_min:m,value_step:c},deviceValue:f,steps:i,onChange:h,minimal:u}=e;return r&y.SET?s.jsx(Na,{onChange:x=>h({[t]:x}),value:f??"",min:m,max:n,step:c,steps:a!=null&&a.length?a:i,unit:o,minimal:u}):r&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Aa=l.memo(e=>s.jsx(N,{...e})),Ra=l.memo(e=>{const{onChange:a,value:r,...t}=e,[o,n]=l.useState(r);return l.useEffect(()=>{n(r)},[r]),s.jsx("input",{type:"text",className:"input validator",value:o,onChange:m=>n(m.target.value),onBlur:m=>!m.target.validationMessage&&a(o),...t})}),$a=l.memo(e=>{const{feature:{access:a=y.SET,property:r},deviceValue:t,onChange:o}=e;return a&y.SET?s.jsx(Ra,{onChange:n=>o({[r]:n}),value:t??""}):a&y.STATE?s.jsx($,{...e}):s.jsx(F,{...e})}),Fa=e=>`${e.type}-${e.name}-${e.label}-${e.access}-${e.category}-${e.property}-${e.endpoint}`,Re=l.memo(e=>{const{feature:a,device:r,deviceState:t,steps:o,onRead:n,onChange:m,featureWrapperClass:c,minimal:f,parentFeatures:i}=e,h=l.useMemo(()=>a.property?t[a.property]:void 0,[a.property,t[a.property]]),u=l.useMemo(()=>Fa(a),[a]),x=l.useMemo(()=>({device:r,deviceValue:h,onChange:m,onRead:n,featureWrapperClass:c,minimal:f,parentFeatures:i}),[r,h,m,n,c,f,i]),p=l.useMemo(()=>({feature:a,onRead:n,deviceValue:h,parentFeatures:i}),[a,n,h,i]);switch(a.type){case"binary":return s.jsx(c,{...p,children:s.jsx(Wt,{feature:a,...x},u)},u);case"numeric":return s.jsx(c,{...p,children:s.jsx(wa,{feature:a,...x,steps:o},u)},u);case"list":return a.name==="gradient"&&a.length_min!=null&&a.length_max!=null?s.jsx(c,{...p,children:s.jsx(ya,{feature:a,...x},u)},u):s.jsx(c,{...p,children:s.jsx(ka,{feature:a,...x},u)},u);case"text":return s.jsx(c,{...p,children:s.jsx($a,{feature:a,...x},u)},u);case"enum":return s.jsx(c,{...p,children:s.jsx(ba,{feature:a,...x},u)},u);case"light":return s.jsx(ja,{feature:a,...x,deviceState:t},u);case"switch":return s.jsx(Aa,{feature:a,...x,deviceState:t},u);case"cover":return s.jsx(da,{feature:a,...x,deviceState:t},u);case"lock":return s.jsx(Ea,{feature:a,...x,deviceState:t},u);case"climate":return s.jsx(Dt,{feature:a,...x,deviceState:t},u);case"fan":return s.jsx(_a,{feature:a,...x,deviceState:t},u);case"composite":{if(a.name==="color_xy"||a.name==="color_hs")return s.jsx(c,{...p,children:s.jsx(ha,{feature:a,...x},u)},u);const _=i&&a.property?t[a.property]:t;return s.jsx(N,{feature:a,...x,deviceState:_},u)}default:return console.error("Unsupported feature",a),s.jsx(c,{...p,children:s.jsx("pre",{children:JSON.stringify(a,null,4)})},u)}});export{Re as F,Sa as a,y as b,zt as c,qt as d,Ut as g,Ot as s};
Binary file
@@ -1 +0,0 @@
1
- import{b as _,r,s as b,H as l,bD as m,bE as c,j as e,B as E,bF as f,bG as h}from"./index-Dvk0LOWb.js";import{I as d}from"./InputField-iH5D3aK4.js";import{S as p}from"./SelectField-CQ3lu6a0.js";const t=b;function M(){const{t:s}=_(["settings","navbar"]),[n,u]=r.useState(t.get(l,"devices")),[i,v]=r.useState(t.get(m,254)),[o,x]=r.useState(t.get(c,4));r.useEffect(()=>{t.set(l,n)},[n]),r.useEffect(()=>{t.set(m,i)},[i]),r.useEffect(()=>{t.set(c,o)},[o]);const g=()=>{t.remove(f),t.remove(l),t.remove(m),t.remove(c),t.remove(h),window.location.reload()};return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"alert alert-info alert-vertical sm:alert-horizontal mb-3",children:[s("frontend_notice"),e.jsx("div",{children:e.jsx(E,{className:"btn btn-sm btn-error",onClick:g,children:s("reset_all")})})]}),e.jsx("div",{children:e.jsxs(p,{name:"homepage",label:s("homepage"),onChange:a=>!a.target.validationMessage&&u(a.target.value),value:n,required:!0,children:[e.jsx("option",{value:"devices",children:s("navbar:devices")}),e.jsx("option",{value:"dashboard",children:s("navbar:dashboard")})]})}),e.jsx("div",{children:e.jsx(d,{type:"number",name:"permit_join_time",label:s("permit_join_time"),min:10,max:254,required:!0,value:i,onChange:a=>!a.target.validationMessage&&!!a.target.value&&v(a.target.valueAsNumber)})}),e.jsx("div",{children:e.jsx(d,{type:"number",name:"max_on_screen_notifications",label:s("max_on_screen_notifications"),min:1,max:5,required:!0,value:o,onChange:a=>!a.target.validationMessage&&!!a.target.value&&x(a.target.valueAsNumber)})})]})}export{M as default};
Binary file
@@ -1 +0,0 @@
1
- import{b as c,a as l,r as i,W as m,j as e,F as d,z as p,by as f}from"./index-Dvk0LOWb.js";import{S as g}from"./SettingsList-BcuolEXG.js";import"./CheckboxField-EfpHUONn.js";import"./InputField-iH5D3aK4.js";import"./SelectField-CQ3lu6a0.js";function _({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(d,{icon:p,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{_ as default};
Binary file
@@ -1 +0,0 @@
1
- import{u as s,r as t,s as r,H as o,j as e}from"./index-Dvk0LOWb.js";const c=r;function u(){const a=s();return t.useEffect(()=>{a(c.get(o)==="dashboard"?"/dashboard":"/devices",{replace:!0})},[a]),e.jsx(e.Fragment,{})}export{u as default};
Binary file
@@ -1 +0,0 @@
1
- import{r as i,j as e}from"./index-Dvk0LOWb.js";const c=i.memo(s=>{const{label:l,detail:t,onChange:a,onBlur:n,...r}=s;return e.jsxs("fieldset",{className:"fieldset",children:[l&&e.jsx("legend",{className:"fieldset-legend",children:l}),e.jsx("input",{className:`input${s.pattern||s.required?" validator":""}`,onChange:a,onBlur:n,...r}),t&&e.jsx("p",{className:"label",children:t})]})});export{c as I};
@@ -1 +0,0 @@
1
- import{ay as c,r as l,b as D,c as m,j as o,$ as v}from"./index-Dvk0LOWb.js";var s=[60,60,24,7,365/7/12,12];function g(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function p(e,t){var n=e<0?1:0;e=Math.abs(e);for(var r=e,a=0;e>=s[a]&&a<s.length;a++)e/=s[a];return e=Math.floor(e),a*=2,e>(a===0?9:1)&&(a+=1),t(e,a,r)[n].replace("%s",e.toString())}function u(e,t){var n=new Date;return(+n-+g(e))/1e3}var x=function(e,t,n){var r=u(e);return p(r,c(t))};const $=l.memo(({lastSeen:e,config:t})=>{const{i18n:n}=D(),r=m(e,t);return r?o.jsx("span",{title:v(r),children:x(r,n.language)}):o.jsx(o.Fragment,{children:"N/A"})});export{$ as L};
Binary file
@@ -1 +0,0 @@
1
- import{r as l,W as _,x as C,a as g,b as w,U as y,j as s,V as x,F as k,f as N,X as S,Y as E,B as I,Z as M,$ as A}from"./index-Dvk0LOWb.js";import{C as F}from"./CheckboxField-EfpHUONn.js";import{D as G}from"./DebouncedInput-CjlgBmTV.js";import{S as d}from"./SelectField-CQ3lu6a0.js";const V={error:"bg-error text-error-content",warning:"bg-warning text-warning-content",info:"bg-info text-info-content",debug:"bg-accent text-accent-content opacity-50"};function T(){const{sendMessage:m}=l.useContext(_),[t,c]=l.useState(""),[n,u]=l.useState("all"),[r,f]=l.useState(!1),h=C(),L=g(e=>e.logsLimit),b=g(e=>e.bridgeInfo.config.advanced.log_level),{t:a}=w("logs"),p=g(e=>e.logs),o=l.useMemo(()=>p.filter(e=>(n==="all"||e.level===n)&&(r||!t||e.message.toLowerCase().includes(t.toLowerCase()))),[t,r,n,p]),j=l.useCallback((e,i)=>t&&e.toLowerCase().includes(t.toLowerCase())?V[i]:y[i],[t]),v=l.useCallback(async e=>{await m("bridge/request/options",{options:{advanced:{log_level:e}}})},[m]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-top",children:[s.jsxs(d,{name:"log_level",label:a("show_only"),value:n,onChange:e=>u(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("label",{className:"input w-64",children:[s.jsx(k,{icon:N}),s.jsx(G,{className:"",type:"search",onChange:e=>c(e.toString()),placeholder:a("common:search"),value:t,disabled:o.length===0}),s.jsx("kbd",{className:"kbd kbd-sm cursor-pointer",onClick:()=>c(""),onKeyUp:e=>{e.key==="enter"&&c("")},title:a("common:clear"),children:"x"})]})]}),s.jsx(F,{name:"highlight_only",label:a("highlight_only"),checked:r,onChange:e=>f(e.target.checked)}),s.jsx(d,{name:"log_limit",label:a("logs_limit"),onChange:e=>{h(E(Number.parseInt(e.target.value)))},value:L,children:S.map(e=>s.jsx("option",{value:e,children:e},e))}),s.jsx(I,{onClick:()=>{h(M())},className:"btn btn-primary self-center",disabled:o.length===0,children:a("common:clear")}),s.jsx("div",{className:"ml-auto",children:s.jsx(d,{name:"log_level_config",label:a("log_level_config"),value:b,onChange:e=>!e.target.validationMessage&&v(e.target.value),children:x.map(e=>s.jsx("option",{value:e,children:e},e))})})]}),s.jsx("div",{className:"mockup-code w-full mt-1",children:o.length>0?o.map((e,i)=>s.jsx("pre",{"data-prefix":i,className:j(e.message,e.level),children:s.jsxs("code",{children:["[",e.timestamp,"] ",e.message]})},`${e.timestamp}-${e.message}`)):s.jsx("pre",{"data-prefix":"~",children:s.jsxs("code",{children:["[",A(new Date),"] ",a("empty_logs_message")]})})})]})}export{T as default};
Binary file
Binary file
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./RawNetworkData-ChueyPzM.js","./index-Dvk0LOWb.js","./index-hZLgn11z.css","./DeviceImage-CKYz5x1m.js","./index-DkQr105Q.js","./DebouncedInput-CjlgBmTV.js","./PowerSource-DMT4xF1g.js","./snakeCase-D7NmHVW8.js","./_createCompounder-CoEvIprv.js","./Lqi-B8JfaMIy.js","./DisplayValue-DesQy-9S.js","./index-C2eewgcx.js","./RawNetworkMap-D37asuO1.js","./RawNetworkMap-DkxkTem6.css"])))=>i.map(i=>d[i]);
2
- import{x as _,r as s,W as C,b as N,a as m,y as z,j as e,F as l,z as d,B as R,A as T,i as E,_ as x}from"./index-Dvk0LOWb.js";import{C as F}from"./CheckboxField-EfpHUONn.js";import{S as h}from"./SelectField-CQ3lu6a0.js";const M=s.lazy(async()=>await x(()=>import("./RawNetworkData-ChueyPzM.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]),import.meta.url)),S=s.lazy(async()=>await x(()=>import("./RawNetworkMap-D37asuO1.js"),__vite__mapDeps([12,1,2,11,3,4,13]),import.meta.url));function L(){const p=_(),{sendMessage:u}=s.useContext(C),{t:r}=N(["network","common"]),n=m(t=>t.networkMapIsLoading),a=m(t=>t.networkMap),[o,f]=s.useState("raw"),[i,g]=s.useState(!1),[c,j]=s.useState("data"),w=s.useCallback(t=>{t.target.value&&f(t.target.value)},[]),y=s.useCallback(t=>{t.target.value&&j(t.target.value)},[]),v=s.useCallback(t=>{g(t.target.checked)},[]),k=s.useCallback(async()=>{p(z()),await u("bridge/request/networkmap",{type:o,routes:i})},[o,i,p,u]),b=s.useMemo(()=>{if(n)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:r("loading")})]});if(a)switch(a.type){case"raw":return c==="data"?e.jsx(M,{map:a.value}):e.jsx(S,{map:a.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(l,{icon:d,size:"2xl"}),r("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:a.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(l,{icon:d,size:"2xl"}),r("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:a.value})]})}return null},[a,n,c,r]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row justify-center gap-3 mb-3",children:[e.jsxs(h,{name:"type",label:r("type"),value:o,onChange:w,children:[e.jsx("option",{value:"raw",children:"raw"}),e.jsx("option",{value:"graphviz",children:"graphviz"}),e.jsx("option",{value:"plantuml",children:"plantuml"})]}),e.jsx(F,{name:"enable_routes",label:r("enable_routes"),checked:i,onChange:v}),e.jsx(R,{className:"btn btn-primary btn-square self-center ms-3 me-6",onClick:k,title:r(a?"reload":"load"),disabled:n,children:a?e.jsx(l,{icon:T}):e.jsx(l,{icon:E})}),(a==null?void 0:a.type)==="raw"&&e.jsxs(h,{name:"display_type",label:r("display_type"),value:c,onChange:y,children:[e.jsx("option",{value:"data",children:"data"}),e.jsx("option",{value:"map",children:"map"})]})]}),b]})}export{L as default};
@@ -1 +0,0 @@
1
- import{r as l,b as g,j as s,B as N,G as h,F as f,I as x,a as y,W as $,L,J as D}from"./index-Dvk0LOWb.js";import{D as M}from"./DeviceImage-CKYz5x1m.js";import{T as z}from"./Table-CFkcNCwp.js";import{M as P,V as U}from"./VendorLink-DQoSmGNy.js";import{P as q}from"./PowerSource-DMT4xF1g.js";import"./index-DkQr105Q.js";import"./DebouncedInput-CjlgBmTV.js";import"./snakeCase-D7NmHVW8.js";import"./_createCompounder-CoEvIprv.js";const A=l.memo(({label:o,remaining:i,progress:n})=>{if(i&&i>0){const a=Math.floor(i/3600),t=Math.floor(i/60)%60,m=Math.floor(i%60),r=a>0,u=t>0;return s.jsxs(s.Fragment,{children:[s.jsx("progress",{className:"progress w-48",value:n,max:"100"}),s.jsxs("div",{children:[o," ",`${r?`${a}:`:""}${u?`${t}:`:""}${m}`]})]})}return s.jsx("progress",{className:"progress w-48",value:n,max:"100"})}),B=l.memo(o=>{const{t:i}=g(["ota","common"]),{device:n,state:a,onCheckClick:t,onUpdateClick:m,onScheduleClick:r,onUnscheduleClick:u}=o;return a==null||a.state==="idle"?s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(N,{className:"btn btn-primary btn-sm join-item",onClick:t,item:n.ieee_address,children:i("check")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:x})})]}):a.state==="updating"?s.jsx(A,{label:i("remaining_time"),remaining:a.remaining,progress:a.progress}):s.jsx("div",{className:"join join-horizontal",children:a.state==="available"?s.jsxs(s.Fragment,{children:[s.jsx(h,{className:"btn btn-error btn-sm join-item",onClick:m,item:n.ieee_address,title:i("update"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("update")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:x})})]}):a.state==="scheduled"?s.jsx(h,{className:"btn btn-sm btn-error join-item",onClick:u,item:n.ieee_address,title:i("unschedule"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("unschedule")}):s.jsxs(s.Fragment,{children:[s.jsx(N,{className:"btn btn-primary btn-sm join-item",onClick:t,item:n.ieee_address,children:i("check")}),s.jsx(h,{className:"btn btn-info btn-sm join-item",onClick:r,item:n.ieee_address,title:i("schedule"),modalDescription:i("schedule_info"),modalCancelLabel:i("common:cancel"),children:s.jsx(f,{icon:x})})]})})}),S=l.memo(o=>{const{t:i}=g("ota"),n=l.useMemo(()=>{if(o.version==null)return;const a=o.version.toString(16).padStart(8,"0"),t=`${a[0]}.${a[1]}`,m=a.slice(2,4),r=`${a[4]}.${a[5]}`,u=a.slice(6);return[t,m,r,u]},[o.version]);return n===void 0?s.jsx(s.Fragment,{children:"Unknown"}):s.jsxs("div",{className:"join join-vertical",children:[s.jsxs("span",{className:"badge badge-soft badge-ghost cursor-default join-item w-full",children:[i("app"),": ",`${n[0]} build ${n[1]}`]}),s.jsxs("span",{className:"badge badge-soft badge-ghost cursor-default join-item w-full",children:[i("stack"),": ",`${n[2]} build ${n[3]}`]})]})}),I=l.memo(({device:o})=>{var t,m,r,u;const{t:i}=g("zigbee");let n="https://github.com/Koenkk/zigbee-OTA/releases";const a=o.software_build_id||i("unknown");switch((t=o==null?void 0:o.definition)==null?void 0:t.vendor){case"IKEA":n="https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html";break;case"Inovelli":n="https://help.inovelli.com/en/articles/8503774-what-is-the-latest-firmware-version-for-your-device#h_b74c1e7dc6";break;case"Philips":n=`https://www.philips-hue.com/en-us/support/release-notes/${(m=o.definition)!=null&&m.exposes.find(b=>b.type==="light")?"lamps":"accessories"}`;break;case"Ubisys":n=`https://www.ubisys.de/en/support/firmware/change-logs-${(u=(r=o.definition)==null?void 0:r.model)==null?void 0:u.replace(/[-]/g,"").toLowerCase()}/`;break}return s.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:n,className:"link link-hover",children:a})});function J(){const o=y(e=>e.devices),i=y(e=>e.deviceStates),{sendMessage:n}=l.useContext($),{t:a}=g(["ota","zigbee","common"]),[t,m]=l.useState([]);l.useEffect(()=>{m([])},[o]);const r=l.useMemo(()=>{var c;const e=[];for(const d of o)if((c=d.definition)!=null&&c.supports_ota&&!d.disabled){const p=i[d.friendly_name]??{};e.push({device:d,state:p.update,batteryState:d.power_source==="Battery"?{batteryPercent:p.battery,batteryState:p.battery_state,batteryLow:p.battery_low}:void 0,selected:t.includes(d.ieee_address)})}return e},[i,o,t]),u=l.useCallback(e=>{e.target.checked?m(r.map(({device:c})=>c.ieee_address)):m([])},[r]),b=l.useCallback((e,c)=>{m(c?[...t,e.ieee_address]:t.filter(d=>d!==e.ieee_address))},[t]),j=l.useCallback(async()=>{await Promise.allSettled(t.map(e=>n("bridge/request/device/ota_update/check",{id:e})))},[n,t]),k=l.useCallback(async()=>{await Promise.allSettled(t.map(e=>n("bridge/request/device/ota_update/update",{id:e})))},[n,t]),_=l.useCallback(async e=>await n("bridge/request/device/ota_update/check",{id:e}),[n]),C=l.useCallback(async e=>await n("bridge/request/device/ota_update/update",{id:e}),[n]),w=l.useCallback(async e=>await n("bridge/request/device/ota_update/schedule",{id:e}),[n]),v=l.useCallback(async e=>await n("bridge/request/device/ota_update/unschedule",{id:e}),[n]),F=l.useMemo(()=>[{id:"select",header:()=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:u,defaultChecked:t.length===r.length})}),accessorFn:()=>"",cell:({row:{original:{device:e,selected:c}}})=>s.jsx("label",{children:s.jsx("input",{type:"checkbox",className:"checkbox",onChange:d=>b(e,d.target.checked),defaultChecked:c})}),enableColumnFilter:!1,enableSorting:!1},{header:a("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description,e.ieee_address].join(" "),cell:({row:{original:{device:e,state:c,batteryState:d}}})=>s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"avatar",children:s.jsx("div",{className:"h-12 w-12",style:{overflow:"visible"},children:s.jsx(M,{device:e,otaState:c==null?void 0:c.state,disabled:!1})})}),s.jsxs("div",{className:"flex flex-col",children:[s.jsx(L,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.friendly_name!==e.ieee_address&&s.jsx("div",{className:"text-xs opacity-80",title:a("zigbee:ieee_address"),children:e.ieee_address}),e.description&&s.jsx("div",{className:"text-xs opacity-50",children:e.description}),s.jsxs("div",{className:"flex flex-row gap-1 mt-2 my-1 items-center",children:[s.jsxs("span",{className:"badge badge-soft badge-ghost cursor-default",title:a("zigbee:firmware_id"),children:[s.jsx(f,{icon:D}),s.jsx(I,{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-soft badge-ghost cursor-default",children:s.jsx(q,{device:e,...d})})]})]})]})},{header:a("zigbee:model"),accessorFn:({device:e})=>{var c,d;return[(c=e.definition)==null?void 0:c.model,e.model_id,(d=e.definition)==null?void 0:d.vendor,e.manufacturer].join(" ")},cell:({row:{original:{device:e}}})=>s.jsxs(s.Fragment,{children:[s.jsx(P,{device:e}),s.jsxs("div",{children:[s.jsx("br",{}),s.jsx("span",{className:"badge badge-ghost",title:a("zigbee:manufacturer"),children:s.jsx(U,{device:e})})]})]})},{header:a("firmware_version"),accessorFn:({state:e})=>e==null?void 0:e.installed_version,cell:({row:{original:{state:e}}})=>s.jsx(S,{version:e==null?void 0:e.installed_version}),enableColumnFilter:!1},{header:a("available_firmware_version"),accessorFn:({state:e})=>e==null?void 0:e.latest_version,cell:({row:{original:{state:e}}})=>s.jsx(S,{version:e==null?void 0:e.latest_version}),enableColumnFilter:!1},{header:()=>s.jsxs("div",{className:"join join-vertical",children:[s.jsx(h,{className:"btn btn-error btn-xs join-item",onClick:j,title:a("check_selected"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),disabled:t.length===0,children:a("check_selected")}),s.jsx(h,{className:"btn btn-error btn-xs join-item",onClick:k,title:a("update_selected"),modalDescription:a("update_selected_info"),modalCancelLabel:a("common:cancel"),disabled:t.length===0,children:a("update_selected")})]}),accessorFn:({state:e})=>e==null?void 0:e.state,id:"check_all",cell:({row:{original:{device:e,state:c}}})=>s.jsx(B,{device:e,state:c,onCheckClick:_,onUpdateClick:C,onScheduleClick:w,onUnscheduleClick:v}),enableSorting:!1,enableColumnFilter:!1}],[t.length,r.length,u,b,j,k,_,C,w,v,a]);return s.jsx(z,{id:"ota-devices",columns:F,data:r})}export{J as default};
Binary file
@@ -1 +0,0 @@
1
- import{r as j,b as d,j as t,F as c,bt as g,av as B,bu as E,b4 as P,bl as f,bm as k,bn as x,bo as F,be as b}from"./index-Dvk0LOWb.js";import{s as p}from"./snakeCase-D7NmHVW8.js";const N=j.memo(w=>{const{device:s,batteryPercent:a,batteryState:m,batteryLow:u,showLevel:h,...n}=w,{t:o}=d("zigbee");let r;switch(s!=null&&s.power_source&&(r=s.power_source),r){case"Battery":{let y=o("battery"),l="",e=f,i=!1;if(a!=null)if(l=`${a}%`,a>=85)e=f;else if(a>=65)e=k;else if(a>=40)e=x;else if(a>=20)e=F;else if(a>=10)e=b,i=!0;else return t.jsxs("span",{className:"animate-pulse text-error",role:"alert",children:[a,"%"]});else if(m!=null)switch(l=m,m){case"high":e=f;break;case"medium":e=x;break;case"low":e=b,i=!0;break}else u!=null&&(l=u?"low":"ok",e=u?b:f);return u===!0&&(i=!0),l!==""&&(y+=`, ${o("power_level")}: ${l}`),t.jsxs(t.Fragment,{children:[t.jsx(c,{icon:e,fade:i,title:y,className:i?"text-error":"",...n}),h&&t.jsx("span",{className:"ps-2",children:l})]})}case"Mains (single phase)":case"Mains (3 phase)":case"DC Source":return t.jsx(c,{icon:P,title:o(p(r)),...n});case"Emergency mains and transfer switch":case"Emergency mains constantly powered":return t.jsx(c,{icon:E,title:o(p(r)),...n});default:return(s==null?void 0:s.type)==="GreenPower"?t.jsx(c,{icon:g,title:"Green",...n}):t.jsx(c,{icon:B,title:r?o(p(r)):void 0,...n})}});export{N as P};