zigbee2mqtt-windfront 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/assets/{About-CZjwfsW-.js → About-BWrcA8qQ.js} +1 -1
  2. package/dist/assets/About-BWrcA8qQ.js.br +0 -0
  3. package/dist/assets/{Availability-PU0rLtaR.js → Availability-D1dLU87I.js} +1 -1
  4. package/dist/assets/Availability-D1dLU87I.js.br +0 -0
  5. package/dist/assets/Bind-D1v_YvyA.js +1 -0
  6. package/dist/assets/Bind-D1v_YvyA.js.br +0 -0
  7. package/dist/assets/Bridge-BrYjUYbo.js +1 -0
  8. package/dist/assets/Bridge-BrYjUYbo.js.br +0 -0
  9. package/dist/assets/{CheckboxField-DL452sgi.js → CheckboxField-DGeXHkdI.js} +1 -1
  10. package/dist/assets/CheckboxField-DGeXHkdI.js.br +0 -0
  11. package/dist/assets/{ClusterSinglePicker-CdWuBd2I.js → ClusterSinglePicker-XKCAlJUJ.js} +1 -1
  12. package/dist/assets/ClusterSinglePicker-XKCAlJUJ.js.br +0 -0
  13. package/dist/assets/{Clusters-Dqpd0Nay.js → Clusters-Bs7V9b_E.js} +1 -1
  14. package/dist/assets/Clusters-Bs7V9b_E.js.br +0 -0
  15. package/dist/assets/{Dashboard-D72X1Jpp.js → Dashboard-pa4xB_EA.js} +1 -1
  16. package/dist/assets/Dashboard-pa4xB_EA.js.br +0 -0
  17. package/dist/assets/{DashboardFeatureWrapper-CijVXPwd.js → DashboardFeatureWrapper-BYrtY7HX.js} +1 -1
  18. package/dist/assets/DashboardFeatureWrapper-BYrtY7HX.js.br +0 -0
  19. package/dist/assets/{DebouncedInput-Oo6AI4sw.js → DebouncedInput-BSs73uaO.js} +1 -1
  20. package/dist/assets/DebouncedInput-BSs73uaO.js.br +0 -0
  21. package/dist/assets/DevConsole-B1CEDFS6.js +1 -0
  22. package/dist/assets/DevConsole-B1CEDFS6.js.br +0 -0
  23. package/dist/assets/DevConsole-DzhRu7kl.js +20 -0
  24. package/dist/assets/DevConsole-DzhRu7kl.js.br +0 -0
  25. package/dist/assets/{DeviceCard-BQ3AAT7N.js → DeviceCard-B-MslgxW.js} +1 -1
  26. package/dist/assets/DeviceCard-B-MslgxW.js.br +0 -0
  27. package/dist/assets/DeviceControlEditName-m82lnyr9.js +1 -0
  28. package/dist/assets/DeviceControlEditName-m82lnyr9.js.br +0 -0
  29. package/dist/assets/{DeviceImage-C9XLyJZx.js → DeviceImage-DL3nWYo3.js} +1 -1
  30. package/dist/assets/DeviceImage-DL3nWYo3.js.br +0 -0
  31. package/dist/assets/{DeviceInfo-ADguzSw7.js → DeviceInfo-BBRyyGYy.js} +1 -1
  32. package/dist/assets/DeviceInfo-BBRyyGYy.js.br +0 -0
  33. package/dist/assets/DevicePage-jGsdfE2a.js +2 -0
  34. package/dist/assets/DevicePage-jGsdfE2a.js.br +0 -0
  35. package/dist/assets/{DevicePicker-toVVVDvU.js → DevicePicker-CxYjky2Z.js} +1 -1
  36. package/dist/assets/DevicePicker-CxYjky2Z.js.br +0 -0
  37. package/dist/assets/{DeviceSettings-CTvrWIT_.js → DeviceSettings-CxqEPckE.js} +1 -1
  38. package/dist/assets/DeviceSettings-CxqEPckE.js.br +0 -0
  39. package/dist/assets/{DeviceSpecificSettings-C-JdxNN-.js → DeviceSpecificSettings-yq2AvjNF.js} +1 -1
  40. package/dist/assets/DeviceSpecificSettings-yq2AvjNF.js.br +0 -0
  41. package/dist/assets/{Devices-CeivpLUl.js → Devices-8slkLcEd.js} +1 -1
  42. package/dist/assets/Devices-8slkLcEd.js.br +0 -0
  43. package/dist/assets/{DevicesPage-DlF_s1BX.js → DevicesPage-Dgj0SUNO.js} +1 -1
  44. package/dist/assets/DevicesPage-Dgj0SUNO.js.br +0 -0
  45. package/dist/assets/{DisplayValue-BOG1_pD9.js → DisplayValue-E8sajbsC.js} +1 -1
  46. package/dist/assets/DisplayValue-E8sajbsC.js.br +0 -0
  47. package/dist/assets/{Donate-DesLNYDr.js → Donate-BO7Z7hUr.js} +1 -1
  48. package/dist/assets/Donate-BO7Z7hUr.js.br +0 -0
  49. package/dist/assets/{EndpointPicker-DeqXMnZV.js → EndpointPicker-DaqpKjl3.js} +1 -1
  50. package/dist/assets/EndpointPicker-DaqpKjl3.js.br +0 -0
  51. package/dist/assets/Exposes-CKueBwT9.js +1 -0
  52. package/dist/assets/Exposes-CKueBwT9.js.br +0 -0
  53. package/dist/assets/Feature-BzaXaUES.js +1 -0
  54. package/dist/assets/Feature-BzaXaUES.js.br +0 -0
  55. package/dist/assets/{Frontend-DTfIT-Dy.js → Frontend-B2I3Z2yo.js} +1 -1
  56. package/dist/assets/Frontend-B2I3Z2yo.js.br +0 -0
  57. package/dist/assets/{GroupPage-s_YhF_aM.js → GroupPage-BywX_Lbd.js} +2 -2
  58. package/dist/assets/GroupPage-BywX_Lbd.js.br +0 -0
  59. package/dist/assets/{GroupSettings-C1Mxz20w.js → GroupSettings-DUPxP4Lf.js} +1 -1
  60. package/dist/assets/GroupSettings-DUPxP4Lf.js.br +0 -0
  61. package/dist/assets/{Groups-DejN32tj.js → Groups-C7jeWZeH.js} +1 -1
  62. package/dist/assets/Groups-C7jeWZeH.js.br +0 -0
  63. package/dist/assets/{GroupsPage-BghQyG2m.js → GroupsPage-Du8LTLJf.js} +1 -1
  64. package/dist/assets/GroupsPage-Du8LTLJf.js.br +0 -0
  65. package/dist/assets/{Health-Dky6SDKV.js → Health-BMcXjGsM.js} +1 -1
  66. package/dist/assets/Health-BMcXjGsM.js.br +0 -0
  67. package/dist/assets/{HomePage-DcqiUqjS.js → HomePage-Cm9MXKhj.js} +1 -1
  68. package/dist/assets/HomePage-Cm9MXKhj.js.br +0 -0
  69. package/dist/assets/{InputField-BHHQh6No.js → InputField-D7F4rh-6.js} +1 -1
  70. package/dist/assets/InputField-D7F4rh-6.js.br +0 -0
  71. package/dist/assets/{Json-4L3vY4kO.js → Json-CIlquCLk.js} +1 -1
  72. package/dist/assets/Json-CIlquCLk.js.br +0 -0
  73. package/dist/assets/{LastSeen-dsZqv4y_.js → LastSeen-hXPhBVem.js} +1 -1
  74. package/dist/assets/LastSeen-hXPhBVem.js.br +0 -0
  75. package/dist/assets/{LogsPage-Bm2mwOb6.js → LogsPage-BWPvuwAK.js} +1 -1
  76. package/dist/assets/LogsPage-BWPvuwAK.js.br +0 -0
  77. package/dist/assets/{Lqi-D-5JxyY1.js → Lqi-OIJirhdX.js} +1 -1
  78. package/dist/assets/Lqi-OIJirhdX.js.br +0 -0
  79. package/dist/assets/{NetworkPage-C6zhqoAF.js → NetworkPage-CeYM0kNC.js} +2 -2
  80. package/dist/assets/NetworkPage-CeYM0kNC.js.br +0 -0
  81. package/dist/assets/{NumberField-W0nLjOub.js → NumberField-DBq58GHS.js} +1 -1
  82. package/dist/assets/NumberField-DBq58GHS.js.br +0 -0
  83. package/dist/assets/OtaPage-2i6uXP6o.js +1 -0
  84. package/dist/assets/OtaPage-2i6uXP6o.js.br +0 -0
  85. package/dist/assets/{PowerSource-zOxQYLf3.js → PowerSource-pdM840jV.js} +1 -1
  86. package/dist/assets/PowerSource-pdM840jV.js.br +0 -0
  87. package/dist/assets/{RawNetworkData-RqJboJd5.js → RawNetworkData-DmEzjMKR.js} +1 -1
  88. package/dist/assets/RawNetworkData-DmEzjMKR.js.br +0 -0
  89. package/dist/assets/{RawNetworkMap-TRBX0zwa.js → RawNetworkMap-m-jI3ov-.js} +1 -1
  90. package/dist/assets/RawNetworkMap-m-jI3ov-.js.br +0 -0
  91. package/dist/assets/{RecallRemove-cc5YDCh9.js → RecallRemove-WoSCq7mT.js} +1 -1
  92. package/dist/assets/RecallRemove-WoSCq7mT.js.br +0 -0
  93. package/dist/assets/Reporting-DMIJKWCI.js +1 -0
  94. package/dist/assets/Reporting-DMIJKWCI.js.br +0 -0
  95. package/dist/assets/Scene-BZa630sw.js +1 -0
  96. package/dist/assets/Scene-BZa630sw.js.br +2 -0
  97. package/dist/assets/{SelectField-BMt7uZuS.js → SelectField-Do2InTFr.js} +1 -1
  98. package/dist/assets/SelectField-Do2InTFr.js.br +0 -0
  99. package/dist/assets/Settings-DPny-0Rt.js +1 -0
  100. package/dist/assets/Settings-DPny-0Rt.js.br +0 -0
  101. package/dist/assets/SettingsList-DsVgWKy3.js +1 -0
  102. package/dist/assets/SettingsList-DsVgWKy3.js.br +0 -0
  103. package/dist/assets/{SettingsPage-BvLt8GhQ.js → SettingsPage-Cx4nWHRr.js} +2 -2
  104. package/dist/assets/SettingsPage-Cx4nWHRr.js.br +0 -0
  105. package/dist/assets/State-De2K3QBu.js +1 -0
  106. package/dist/assets/State-De2K3QBu.js.br +2 -0
  107. package/dist/assets/{Table-YMU-GTDx.js → Table-BpnEzjLb.js} +1 -1
  108. package/dist/assets/Table-BpnEzjLb.js.br +0 -0
  109. package/dist/assets/{TextareaField-RnWDqrAI.js → TextareaField-xwbu8YKo.js} +1 -1
  110. package/dist/assets/TextareaField-xwbu8YKo.js.br +0 -0
  111. package/dist/assets/{Tools-pHwI6wAE.js → Tools-McB1jYZ-.js} +1 -1
  112. package/dist/assets/Tools-McB1jYZ-.js.br +0 -0
  113. package/dist/assets/{TouchlinkPage-C5u7Nbx_.js → TouchlinkPage-BKfeLLii.js} +1 -1
  114. package/dist/assets/TouchlinkPage-BKfeLLii.js.br +0 -0
  115. package/dist/assets/{VendorLink-DuKl6tZD.js → VendorLink-DE4QCH9H.js} +1 -1
  116. package/dist/assets/VendorLink-DE4QCH9H.js.br +0 -0
  117. package/dist/assets/{_createCompounder-j5DHCRsI.js → _createCompounder-CfkIxP4I.js} +1 -1
  118. package/dist/assets/_createCompounder-CfkIxP4I.js.br +0 -0
  119. package/dist/assets/{format-DWdgGQ5D.js → format-Bbg3coak.js} +1 -1
  120. package/dist/assets/format-Bbg3coak.js.br +0 -0
  121. package/dist/assets/{index-Dn4wgen8.js → index-DDBxKamc.js} +1 -1
  122. package/dist/assets/index-DDBxKamc.js.br +0 -0
  123. package/dist/assets/{index-BR27vzZL.js → index-pzWGL0cK.js} +9 -9
  124. package/dist/assets/index-pzWGL0cK.js.br +0 -0
  125. package/dist/assets/{jszip.min-Dj0U1QNV.js → jszip.min-CB2ooJ__.js} +1 -1
  126. package/dist/assets/jszip.min-CB2ooJ__.js.br +0 -0
  127. package/dist/assets/shallow-BvOtxUf5.js +1 -0
  128. package/dist/assets/shallow-BvOtxUf5.js.br +0 -0
  129. package/dist/assets/snakeCase-CUh04m27.js +1 -0
  130. package/dist/assets/snakeCase-CUh04m27.js.br +0 -0
  131. package/dist/index.html +1 -1
  132. package/dist/index.html.br +0 -0
  133. package/package.json +1 -1
  134. package/dist/assets/About-CZjwfsW-.js.br +0 -0
  135. package/dist/assets/Availability-PU0rLtaR.js.br +0 -0
  136. package/dist/assets/Bind-ByraS7_e.js +0 -1
  137. package/dist/assets/Bind-ByraS7_e.js.br +0 -0
  138. package/dist/assets/Bridge-DkgYFiG9.js +0 -1
  139. package/dist/assets/Bridge-DkgYFiG9.js.br +0 -0
  140. package/dist/assets/CheckboxField-DL452sgi.js.br +0 -0
  141. package/dist/assets/ClusterSinglePicker-CdWuBd2I.js.br +0 -0
  142. package/dist/assets/Clusters-Dqpd0Nay.js.br +0 -0
  143. package/dist/assets/Dashboard-D72X1Jpp.js.br +0 -0
  144. package/dist/assets/DashboardFeatureWrapper-CijVXPwd.js.br +0 -0
  145. package/dist/assets/DebouncedInput-Oo6AI4sw.js.br +0 -0
  146. package/dist/assets/DevConsole-DidHFg9P.js +0 -1
  147. package/dist/assets/DevConsole-DidHFg9P.js.br +0 -0
  148. package/dist/assets/DevConsole-Ou7nxVMB.js +0 -20
  149. package/dist/assets/DevConsole-Ou7nxVMB.js.br +0 -0
  150. package/dist/assets/DeviceCard-BQ3AAT7N.js.br +0 -0
  151. package/dist/assets/DeviceControlEditName-CdOvAC3i.js +0 -1
  152. package/dist/assets/DeviceControlEditName-CdOvAC3i.js.br +0 -0
  153. package/dist/assets/DeviceImage-C9XLyJZx.js.br +0 -0
  154. package/dist/assets/DeviceInfo-ADguzSw7.js.br +0 -0
  155. package/dist/assets/DevicePage-nrrWZFdG.js +0 -2
  156. package/dist/assets/DevicePage-nrrWZFdG.js.br +0 -0
  157. package/dist/assets/DevicePicker-toVVVDvU.js.br +0 -0
  158. package/dist/assets/DeviceSettings-CTvrWIT_.js.br +0 -0
  159. package/dist/assets/DeviceSpecificSettings-C-JdxNN-.js.br +0 -0
  160. package/dist/assets/Devices-CeivpLUl.js.br +0 -0
  161. package/dist/assets/DevicesPage-DlF_s1BX.js.br +0 -0
  162. package/dist/assets/DisplayValue-BOG1_pD9.js.br +0 -0
  163. package/dist/assets/Donate-DesLNYDr.js.br +0 -0
  164. package/dist/assets/EndpointPicker-DeqXMnZV.js.br +0 -3
  165. package/dist/assets/Exposes-C5U8q2yk.js +0 -1
  166. package/dist/assets/Exposes-C5U8q2yk.js.br +0 -0
  167. package/dist/assets/Feature-Ciu4ZwFB.js +0 -1
  168. package/dist/assets/Feature-Ciu4ZwFB.js.br +0 -0
  169. package/dist/assets/Frontend-DTfIT-Dy.js.br +0 -0
  170. package/dist/assets/GroupPage-s_YhF_aM.js.br +0 -0
  171. package/dist/assets/GroupSettings-C1Mxz20w.js.br +0 -0
  172. package/dist/assets/Groups-DejN32tj.js.br +0 -0
  173. package/dist/assets/GroupsPage-BghQyG2m.js.br +0 -0
  174. package/dist/assets/Health-Dky6SDKV.js.br +0 -0
  175. package/dist/assets/HomePage-DcqiUqjS.js.br +0 -0
  176. package/dist/assets/InputField-BHHQh6No.js.br +0 -0
  177. package/dist/assets/Json-4L3vY4kO.js.br +0 -0
  178. package/dist/assets/LastSeen-dsZqv4y_.js.br +0 -0
  179. package/dist/assets/LogsPage-Bm2mwOb6.js.br +0 -0
  180. package/dist/assets/Lqi-D-5JxyY1.js.br +0 -0
  181. package/dist/assets/NetworkPage-C6zhqoAF.js.br +0 -0
  182. package/dist/assets/NumberField-W0nLjOub.js.br +0 -0
  183. package/dist/assets/OtaPage-Dh-CKhjl.js +0 -1
  184. package/dist/assets/OtaPage-Dh-CKhjl.js.br +0 -0
  185. package/dist/assets/PowerSource-zOxQYLf3.js.br +0 -0
  186. package/dist/assets/RawNetworkData-RqJboJd5.js.br +0 -0
  187. package/dist/assets/RawNetworkMap-TRBX0zwa.js.br +0 -0
  188. package/dist/assets/RecallRemove-cc5YDCh9.js.br +0 -0
  189. package/dist/assets/Reporting-DnG0I3Vc.js +0 -1
  190. package/dist/assets/Reporting-DnG0I3Vc.js.br +0 -0
  191. package/dist/assets/Scene-BAtAVAEO.js +0 -1
  192. package/dist/assets/Scene-BAtAVAEO.js.br +0 -0
  193. package/dist/assets/SelectField-BMt7uZuS.js.br +0 -0
  194. package/dist/assets/Settings-gGZGfvuj.js +0 -1
  195. package/dist/assets/Settings-gGZGfvuj.js.br +0 -0
  196. package/dist/assets/SettingsList-D8N_9F77.js +0 -1
  197. package/dist/assets/SettingsList-D8N_9F77.js.br +0 -0
  198. package/dist/assets/SettingsPage-BvLt8GhQ.js.br +0 -0
  199. package/dist/assets/State-BNAmyC2W.js +0 -1
  200. package/dist/assets/State-BNAmyC2W.js.br +0 -0
  201. package/dist/assets/Table-YMU-GTDx.js.br +0 -0
  202. package/dist/assets/TextareaField-RnWDqrAI.js.br +0 -0
  203. package/dist/assets/Tools-pHwI6wAE.js.br +0 -0
  204. package/dist/assets/TouchlinkPage-C5u7Nbx_.js.br +0 -0
  205. package/dist/assets/VendorLink-DuKl6tZD.js.br +0 -0
  206. package/dist/assets/_createCompounder-j5DHCRsI.js.br +0 -0
  207. package/dist/assets/format-DWdgGQ5D.js.br +0 -3
  208. package/dist/assets/index-BR27vzZL.js.br +0 -0
  209. package/dist/assets/index-Dn4wgen8.js.br +0 -0
  210. package/dist/assets/jszip.min-Dj0U1QNV.js.br +0 -0
  211. package/dist/assets/snakeCase-Dntle38p.js +0 -1
  212. package/dist/assets/snakeCase-Dntle38p.js.br +0 -0
@@ -1,4 +1,4 @@
1
- import{r as x,b as v,j as e,L as b,a as h,bP as p,bQ as f,bR as k,bS as $,bT as y,bU as z,bV as E,ah as u}from"./index-BR27vzZL.js";import{s as S}from"./snakeCase-Dntle38p.js";import"./envs-CRUy-_iG.js";import"./_createCompounder-j5DHCRsI.js";const R="1.8.0",N={version:R};function m({name:t,data:s}){const r=[],{t:a}=v("stats");for(const n in s){const i=s[n];r.push(e.jsx("li",{children:e.jsxs(b,{to:"#",children:[n,": ",i]})},n))}return e.jsx("li",{children:e.jsxs("details",{children:[e.jsx("summary",{children:a(t)}),e.jsx("ul",{children:r})]})})}const L=x.memo(t=>{const{devices:s}=t,{t:r}=v(["stats","zigbee"]),a=x.useMemo(()=>{const n={},i={},l={},d={};for(const o of s){if(o.type==="Coordinator")continue;const c=r(`zigbee:${o.type}`),g=o.model_id||r("zigbee:unknown"),j=o.manufacturer||r("zigbee:unknown"),_=r(`zigbee:${S(o.power_source||"unknown")}`);n[c]=(n[c]||0)+1,i[_]=(i[_]||0)+1,l[g]=(l[g]||0)+1,d[j]=(d[j]||0)+1}return e.jsxs(e.Fragment,{children:[e.jsx(m,{name:"byType",data:n}),e.jsx(m,{name:"byPowerSource",data:i}),e.jsx(m,{name:"byModel",data:l}),e.jsx(m,{name:"byVendor",data:d})]})},[s,r]);return e.jsxs("ul",{children:[e.jsx("li",{children:e.jsxs(b,{to:"#",children:[r("total")," ",s.length-1]})}),a]})}),w=x.memo(()=>{const{t}=v("zigbee"),s=h(n=>n.bridgeInfo),r=h(n=>n.bridgeHealth),a={labels:"problem",title:"???",body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${u.slice(0,-4)} -->
1
+ import{r as x,b as v,j as e,L as b,a as h,bP as p,bQ as f,bR as k,bS as $,bT as y,bU as z,bV as E,ah as u}from"./index-pzWGL0cK.js";import{s as S}from"./snakeCase-CUh04m27.js";import"./envs-CRUy-_iG.js";import"./_createCompounder-CfkIxP4I.js";const R="1.8.1",N={version:R};function m({name:t,data:s}){const r=[],{t:a}=v("stats");for(const n in s){const i=s[n];r.push(e.jsx("li",{children:e.jsxs(b,{to:"#",children:[n,": ",i]})},n))}return e.jsx("li",{children:e.jsxs("details",{children:[e.jsx("summary",{children:a(t)}),e.jsx("ul",{children:r})]})})}const L=x.memo(t=>{const{devices:s}=t,{t:r}=v(["stats","zigbee"]),a=x.useMemo(()=>{const n={},i={},l={},d={};for(const o of s){if(o.type==="Coordinator")continue;const c=r(`zigbee:${o.type}`),g=o.model_id||r("zigbee:unknown"),j=o.manufacturer||r("zigbee:unknown"),_=r(`zigbee:${S(o.power_source||"unknown")}`);n[c]=(n[c]||0)+1,i[_]=(i[_]||0)+1,l[g]=(l[g]||0)+1,d[j]=(d[j]||0)+1}return e.jsxs(e.Fragment,{children:[e.jsx(m,{name:"byType",data:n}),e.jsx(m,{name:"byPowerSource",data:i}),e.jsx(m,{name:"byModel",data:l}),e.jsx(m,{name:"byVendor",data:d})]})},[s,r]);return e.jsxs("ul",{children:[e.jsx("li",{children:e.jsxs(b,{to:"#",children:[r("total")," ",s.length-1]})}),a]})}),w=x.memo(()=>{const{t}=v("zigbee"),s=h(n=>n.bridgeInfo),r=h(n=>n.bridgeHealth),a={labels:"problem",title:"???",body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${u.slice(0,-4)} -->
2
2
 
3
3
  ### What happened?
4
4
 
Binary file
@@ -1 +1 @@
1
- import{b,ai as m,j as e,Q as d,F as l,am as u,e as j,B as f,y as x,z as p,r as h,an as D}from"./index-BR27vzZL.js";import{D as _,R as w}from"./DeviceControlEditName-CdOvAC3i.js";function C(i){const{device:a,otaState:t,renameDevice:o,configureDevice:s,interviewDevice:r,removeDevice:v}=i,{t:n}=b(["zigbee","common"]),c=a.interview_state===m.InProgress||a.interview_state===m.Pending||t==="updating";return e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(_,{name:a.friendly_name,renameDevice:o,homeassistantEnabled:i.homeassistantEnabled,style:"btn-outline btn-primary join-item btn-square"}),e.jsx(d,{className:"btn btn-outline btn-warning join-item btn-square",onClick:s,item:a.ieee_address,title:n("reconfigure"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),disabled:c,children:e.jsx(l,{icon:u})}),e.jsx(d,{className:"btn btn-outline btn-info join-item btn-square",onClick:r,item:a.ieee_address,title:n("interview"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),disabled:c,children:e.jsx(l,{icon:j})}),e.jsx(f,{onClick:async()=>await x.show(w,{device:a,removeDevice:v}),className:"btn btn-outline btn-error join-item btn-square",title:n("remove_device"),children:e.jsx(l,{icon:p})})]})}const E=h.memo(i=>{const{t:a}=b("availability"),{availability:t,availabilityFeatureEnabled:o,availabilityEnabledForDevice:s,disabled:r}=i;return r?e.jsx("span",{children:a("disabled")}):s??o?e.jsx("span",{className:t.state==="online"?"text-success":"text-error animate-pulse",children:a(t.state)}):e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:D,children:a("disabled")})});export{E as A,C as D};
1
+ import{b,ai as m,j as e,Q as d,F as l,am as u,e as j,B as f,y as x,z as p,r as h,an as D}from"./index-pzWGL0cK.js";import{D as _,R as w}from"./DeviceControlEditName-m82lnyr9.js";function C(i){const{device:a,otaState:t,renameDevice:o,configureDevice:s,interviewDevice:r,removeDevice:v}=i,{t:n}=b(["zigbee","common"]),c=a.interview_state===m.InProgress||a.interview_state===m.Pending||t==="updating";return e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(_,{name:a.friendly_name,renameDevice:o,homeassistantEnabled:i.homeassistantEnabled,style:"btn-outline btn-primary join-item btn-square"}),e.jsx(d,{className:"btn btn-outline btn-warning join-item btn-square",onClick:s,item:a.ieee_address,title:n("reconfigure"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),disabled:c,children:e.jsx(l,{icon:u})}),e.jsx(d,{className:"btn btn-outline btn-info join-item btn-square",onClick:r,item:a.ieee_address,title:n("interview"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),disabled:c,children:e.jsx(l,{icon:j})}),e.jsx(f,{onClick:async()=>await x.show(w,{device:a,removeDevice:v}),className:"btn btn-outline btn-error join-item btn-square",title:n("remove_device"),children:e.jsx(l,{icon:p})})]})}const E=h.memo(i=>{const{t:a}=b("availability"),{availability:t,availabilityFeatureEnabled:o,availabilityEnabledForDevice:s,disabled:r}=i;return r?e.jsx("span",{children:a("disabled")}):s??o?e.jsx("span",{className:t.state==="online"?"text-success":"text-error animate-pulse",children:a(t.state)}):e.jsx("a",{className:"link link-hover",target:"_blank",rel:"noopener noreferrer",href:D,children:a("disabled")})});export{E as A,C as D};
@@ -0,0 +1 @@
1
+ import{r as a,j as s,W as M,b as I,aa as A,ab as w,B as y,F as v,h as O,ac as P,a as E}from"./index-pzWGL0cK.js";import{D as T}from"./DevicePicker-CxYjky2Z.js";import{E as B}from"./EndpointPicker-DaqpKjl3.js";import"./envs-CRUy-_iG.js";import"./SelectField-Do2InTFr.js";const F=a.memo(t=>{const{clusters:n,onChange:d,label:c,value:e,disabled:l}=t,f=a.useCallback(u=>{const{checked:h,name:_}=u.target;let x=[...e];h?x.push(_):x=x.filter(N=>N!==_),d(x)},[d,e]),r=a.useMemo(()=>Array.from(n).sort((u,h)=>u.toString().localeCompare(h.toString())).map(u=>s.jsxs("label",{className:"label",title:u,children:[s.jsx("input",{className:"checkbox",type:"checkbox",checked:e.includes(u),name:u,value:u,onChange:f,disabled:l}),u]},u)),[n,f,e,l]);return s.jsxs("fieldset",{className:"fieldset",children:[c&&s.jsx("legend",{className:"fieldset-legend",children:c}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:r})]})}),U=(t,n,d)=>{const{target:c}=t;return c.type==="group"?d.find(e=>e.id===c.id):n.find(e=>e.ieee_address===c.ieee_address)},V=a.memo(({devices:t,groups:n,device:d,rule:c})=>{const[e,l]=a.useState(c),{sendMessage:f}=a.useContext(M),{t:r}=I(["common","zigbee"]);a.useEffect(()=>{l(c)},[c]);const u=a.useCallback(i=>{l(o=>({...o,source:{...o.source,endpoint:i}}))},[]),h=a.useCallback(i=>{if(!i)return;const o=A(i)?{type:"endpoint",ieee_address:i.ieee_address,endpoint:""}:{type:"group",id:i.id};l(m=>({...m,target:o,clusters:[]}))},[]),_=a.useCallback(i=>{e.target.type==="endpoint"&&l(o=>({...o,target:{...o.target,endpoint:i},clusters:[]}))},[e.target.type]),x=a.useCallback(i=>{l(o=>({...o,clusters:i}))},[]),N=a.useCallback(async i=>{let o="",m;const{target:p}=e;if(p.type==="group"){const b=n.find(C=>C.id===p.id);if(b)o=b.id;else{console.error("Target group does not exist:",p.id);return}}else if(p.type==="endpoint"){const b=t.find(C=>C.ieee_address===p.ieee_address);if(b)o=b.ieee_address,b.type!=="Coordinator"&&(m=p.endpoint);else{console.error("Target device does not exist:",p.ieee_address);return}}const g={from:d.ieee_address,from_endpoint:e.source.endpoint,to:o,to_endpoint:m,clusters:e.clusters};i==="Bind"?await f("bridge/request/device/bind",g):await f("bridge/request/device/unbind",g)},[d,e,f,t,n]),S=a.useMemo(()=>w(d),[d]),j=U(e,t,n),$=a.useMemo(()=>w(j),[j]),D=a.useMemo(()=>{const i=new Set(e.clusters),o=d.endpoints[e.source.endpoint],m=e.target.type==="endpoint"&&e.target.endpoint!=null?j?.endpoints[e.target.endpoint]:void 0,p=e.target.type==="group"||j?.type==="Coordinator";if(o&&(m||p))for(const g of[...o.clusters.input,...o.clusters.output])if(p)i.add(g);else{const b=o.clusters.input.includes(g)&&m?.clusters.output.includes(g),C=o.clusters.output.includes(g)&&m?.clusters.input.includes(g);(b||C||p)&&i.add(g)}return i},[d.endpoints,e,j]),k=a.useMemo(()=>{let i=!1;return e.target.type==="endpoint"?i=!!(e.source.endpoint&&e.target.ieee_address&&e.target.endpoint&&e.clusters.length>0):e.target.type==="group"&&(i=!!(e.source.endpoint&&e.target.id&&e.clusters.length>0)),i},[e]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[s.jsx(B,{label:r("source_endpoint"),disabled:!e.isNew,values:S,value:e.source.endpoint,onChange:u}),s.jsx(T,{label:r("destination"),disabled:!e.isNew,value:"ieee_address"in e.target?e.target.ieee_address:e.target.id,devices:t,groups:n,onChange:h}),e.target.type==="endpoint"?s.jsx(B,{label:r("destination_endpoint"),disabled:!e.isNew,values:$,value:e.target.endpoint,onChange:_}):null,s.jsx("div",{className:"grow w-128",children:s.jsx(F,{label:r("clusters"),clusters:D,value:e.clusters,onChange:x})}),s.jsxs("fieldset",{className:"fieldset",children:[s.jsx("legend",{className:"fieldset-legend",children:r("actions")}),s.jsxs("div",{className:"join join-horizontal",children:[s.jsxs(y,{item:"Bind",disabled:!k,title:r("bind"),className:"btn btn-primary join-item",onClick:N,children:[s.jsx(v,{icon:O}),r("bind")," "]}),s.jsxs(y,{item:"Unbind",disabled:e.isNew||!k,title:r("unbind"),className:"btn btn-error join-item",onClick:N,children:[s.jsx(v,{icon:P})," ",r("unbind")]})]})]})]}),s.jsx("div",{className:"divider"})]})}),R=t=>({isNew:!0,target:{type:"endpoint",ieee_address:"",endpoint:""},source:{ieee_address:t,endpoint:""},clusters:[]}),q=t=>{const n={};for(const d in t.endpoints){const c=t.endpoints[d];for(const e of c.bindings){let l="ieee_address"in e.target?`${e.target.ieee_address}-${e.target.endpoint}`:e.target.id;l=`${l}-${d}`,n[l]?n[l].clusters.push(e.cluster):n[l]={source:{ieee_address:t.ieee_address,endpoint:d},target:{...e.target},clusters:[e.cluster]}}}return Object.values(n)},z=t=>`${t.isNew}-${t.source.endpoint}-${t.source.ieee_address}-${"ieee_address"in t.target?t.target.ieee_address:t.target.id}-${t.clusters.join("-")}`;function J(t){const{device:n}=t,d=E(r=>r.devices),c=E(r=>r.groups),[e,l]=a.useState(R(n.ieee_address)),f=a.useMemo(()=>q(n),[n]);return a.useEffect(()=>{l(R(n.ieee_address))},[n.ieee_address]),s.jsx("div",{className:"flex flex-col",children:[...f,e].map(r=>s.jsx(V,{rule:r,groups:c,device:n,devices:d},z(r)))})}export{J as default};
Binary file
@@ -0,0 +1 @@
1
+ import{a as t,j as s}from"./index-pzWGL0cK.js";import{J as e}from"./Json-CIlquCLk.js";import"./envs-CRUy-_iG.js";function a(){const o=t(r=>r.bridgeInfo);return s.jsx(e,{obj:o})}export{a as default};
@@ -1 +1 @@
1
- import{r,j as e}from"./index-BR27vzZL.js";const d=r.memo(s=>{const{label:a,detail:l,onChange:c,...t}=s;return e.jsxs("fieldset",{className:"fieldset",children:[a&&e.jsx("legend",{className:"fieldset-legend",children:a}),l?e.jsxs("label",{className:"label",children:[e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t}),l]}):e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t})]})});export{d as C};
1
+ import{r,j as e}from"./index-pzWGL0cK.js";const d=r.memo(s=>{const{label:a,detail:l,onChange:c,...t}=s;return e.jsxs("fieldset",{className:"fieldset",children:[a&&e.jsx("legend",{className:"fieldset-legend",children:a}),l?e.jsxs("label",{className:"label",children:[e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t}),l]}):e.jsx("input",{className:`checkbox${s.required?" validator":""}`,type:"checkbox",onChange:c,...t})]})});export{d as C};
@@ -1 +1 @@
1
- import{r as a,a as f,b as h,j as o}from"./index-BR27vzZL.js";import{S as g}from"./SelectField-BMt7uZuS.js";const j=a.memo(d=>{const{cluster:s,device:l,onChange:p,label:m,...b}=d,i=f(e=>e.bridgeDefinitions),{t:u}=h("zigbee"),c=a.useMemo(()=>{const e=i.clusters[s];if(e)return e.attributes;const t=i.custom_clusters[l.ieee_address];if(t){const n=t[s];if(n)return n.attributes}return[]},[i,l.ieee_address,s]),r=a.useMemo(()=>{const e=[];for(const t in c)e.push(o.jsx("option",{value:t,children:t},t));return e},[c]);return o.jsxs(g,{name:"attribute_picker",label:m,onChange:e=>p(e.target.value,c[e.target.value]),disabled:r.length===0,...b,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_attribute")}),r]})}),C=a.memo(d=>{const{clusters:s,onChange:l,value:p,label:m,disabled:b,...i}=d,{t:u}=h(["zigbee","common"]),c=a.useMemo(()=>{const r=[];if(Array.isArray(s))for(const e of s){const t=[];for(const n of e.clusters)t.push(o.jsx("option",{value:n,children:n},n));r.push(o.jsx("optgroup",{label:u(e.name),children:t},e.name))}else for(const e of s)r.push(o.jsx("option",{value:e,children:e},e));return r},[s,u]);return o.jsxs(g,{name:"attribute_picker",label:m,value:p,onChange:r=>l(r.target.value),disabled:b,...i,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_cluster")}),c]})});export{j as A,C};
1
+ import{r as a,a as f,b as h,j as o}from"./index-pzWGL0cK.js";import{S as g}from"./SelectField-Do2InTFr.js";const j=a.memo(d=>{const{cluster:s,device:l,onChange:p,label:m,...b}=d,i=f(e=>e.bridgeDefinitions),{t:u}=h("zigbee"),c=a.useMemo(()=>{const e=i.clusters[s];if(e)return e.attributes;const t=i.custom_clusters[l.ieee_address];if(t){const n=t[s];if(n)return n.attributes}return[]},[i,l.ieee_address,s]),r=a.useMemo(()=>{const e=[];for(const t in c)e.push(o.jsx("option",{value:t,children:t},t));return e},[c]);return o.jsxs(g,{name:"attribute_picker",label:m,onChange:e=>p(e.target.value,c[e.target.value]),disabled:r.length===0,...b,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_attribute")}),r]})}),C=a.memo(d=>{const{clusters:s,onChange:l,value:p,label:m,disabled:b,...i}=d,{t:u}=h(["zigbee","common"]),c=a.useMemo(()=>{const r=[];if(Array.isArray(s))for(const e of s){const t=[];for(const n of e.clusters)t.push(o.jsx("option",{value:n,children:n},n));r.push(o.jsx("optgroup",{label:u(e.name),children:t},e.name))}else for(const e of s)r.push(o.jsx("option",{value:e,children:e},e));return r},[s,u]);return o.jsxs(g,{name:"attribute_picker",label:m,value:p,onChange:r=>l(r.target.value),disabled:b,...i,children:[o.jsx("option",{value:"",disabled:!0,children:u("select_cluster")}),c]})});export{j as A,C};
@@ -1 +1 @@
1
- import{b as a,r as u,j as s,F as c,ad as d,ae as x}from"./index-BR27vzZL.js";import"./envs-CRUy-_iG.js";function h({device:t}){const{t:n}=a("zigbee"),o=u.useMemo(()=>{const l=[];for(const r in t.endpoints){const i=t.endpoints[r];l.push(s.jsx("li",{children:s.jsxs("details",{open:!0,children:[s.jsxs("summary",{children:[n("endpoint")," ",r]}),s.jsxs("ul",{children:[s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:d})," ",n("output_clusters")]}),s.jsx("ul",{children:i.clusters.output.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})}),s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:x})," ",n("input_clusters")]}),s.jsx("ul",{children:i.clusters.input.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})})]})]})},r))}return l},[t.endpoints,n]);return s.jsx("ul",{className:"menu bg-base-100 w-full",children:o})}export{h as default};
1
+ import{b as a,r as u,j as s,F as c,ad as d,ae as x}from"./index-pzWGL0cK.js";import"./envs-CRUy-_iG.js";function h({device:t}){const{t:n}=a("zigbee"),o=u.useMemo(()=>{const l=[];for(const r in t.endpoints){const i=t.endpoints[r];l.push(s.jsx("li",{children:s.jsxs("details",{open:!0,children:[s.jsxs("summary",{children:[n("endpoint")," ",r]}),s.jsxs("ul",{children:[s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:d})," ",n("output_clusters")]}),s.jsx("ul",{children:i.clusters.output.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})}),s.jsx("li",{children:s.jsxs("details",{children:[s.jsxs("summary",{children:[s.jsx(c,{icon:x})," ",n("input_clusters")]}),s.jsx("ul",{children:i.clusters.input.map(e=>s.jsx("li",{children:s.jsx("span",{className:"cursor-text select-text",children:e})},e))})]})})]})]})},r))}return l},[t.endpoints,n]);return s.jsx("ul",{className:"menu bg-base-100 w-full",children:o})}export{h as default};
@@ -1 +1 @@
1
- import{a as f,r as a,W as A,b as w,s as u,v,w as j,x as S,j as e,B as b,y as N,F as p,z as T,f as F,A as L,C as R,E as k}from"./index-BR27vzZL.js";import{D as I}from"./DashboardFeatureWrapper-CijVXPwd.js";import{D as M}from"./DeviceCard-BQ3AAT7N.js";import{D as q,R as B}from"./DeviceControlEditName-CdOvAC3i.js";import{D as W}from"./DebouncedInput-Oo6AI4sw.js";import"./envs-CRUy-_iG.js";import"./Feature-Ciu4ZwFB.js";import"./DisplayValue-BOG1_pD9.js";import"./_createCompounder-j5DHCRsI.js";import"./LastSeen-dsZqv4y_.js";import"./format-DWdgGQ5D.js";import"./Lqi-D-5JxyY1.js";import"./PowerSource-zOxQYLf3.js";import"./snakeCase-Dntle38p.js";import"./DeviceImage-C9XLyJZx.js";import"./index-Dn4wgen8.js";import"./CheckboxField-DL452sgi.js";import"./InputField-BHHQh6No.js";const $=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_"],K=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient","power_outage_memory","power_on_behavior"],U=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],z=(i,c)=>{if(i){if(U.includes(i))return!0;for(const d of $)if(i.includes(d))return!1;if(K.includes(i))return!1}return!0};function ce(){const i=f(s=>s.deviceStates),c=f(s=>s.bridgeInfo.config),d=f(s=>s.devices),{sendMessage:n}=a.useContext(A),{t:l}=w(["zigbee","settings"]),[o,_]=a.useState(u.get(v,"")),[r,D]=a.useState(u.get(j,!1));a.useEffect(()=>{u.set(v,o)},[o]);const h=a.useCallback(async(s,t,m)=>{await n("bridge/request/device/rename",{from:s,to:t,homeassistant_rename:m,last:!1})},[n]),g=a.useCallback(async(s,t,m)=>{await n("bridge/request/device/remove",{id:s,force:t,block:m})},[n]),y=a.useCallback(s=>{u.set(j,s),D(s)},[]),C=a.useMemo(()=>{const s=[];for(const t of d)if(!t.disabled&&t.supported&&(!o||t.friendly_name.toLowerCase().includes(o.toLowerCase()))){const m=i[t.friendly_name]??{},x=t.definition?S(t.definition.exposes,z):[];x.length>0&&s.push(e.jsx("div",{className:`${r?"break-inside-avoid-column mb-3":"w-[23rem]"} card bg-base-200 rounded-box shadow-md`,children:e.jsx(M,{features:x,device:t,deviceState:m,onChange:async E=>await n(`${t.ieee_address}/set`,E),featureWrapperClass:I,lastSeenConfig:c.advanced.last_seen,children:e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(q,{name:t.friendly_name,renameDevice:h,homeassistantEnabled:c.homeassistant.enabled,style:"btn-outline btn-primary btn-square btn-sm join-item"}),e.jsx(b,{onClick:async()=>await N.show(B,{device:t,removeDevice:g}),className:"btn btn-outline btn-error btn-square btn-sm join-item",title:l("remove_device"),children:e.jsx(p,{icon:T})})]})})},t.ieee_address))}return s},[d,i,c.advanced.last_seen,c.homeassistant.enabled,n,g,h,l,o,r]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:[e.jsxs("div",{className:"join",children:[e.jsxs("label",{className:"input w-64 join-item",children:[e.jsx(p,{icon:F}),e.jsx(W,{className:"",type:"search",onChange:s=>_(s.toString()),placeholder:l("common:search"),value:o})]}),e.jsx(b,{item:"",onClick:_,className:"btn btn-square join-item",title:l("common:clear"),children:e.jsx(p,{icon:L})})]}),e.jsx(b,{className:"btn btn-square",item:!r,onClick:y,title:`${l("settings:dashboard_column_display")}: ${r}`,children:e.jsx(p,{icon:r?R:k})})]}),e.jsx("div",{className:`${r?"columns-md":"flex flex-row flex-wrap justify-center"} gap-3 mb-3`,children:C})]})}export{ce as default};
1
+ import{a as f,r as a,W as A,b as w,s as u,v,w as j,x as S,j as e,B as b,y as N,F as p,z as T,f as F,A as L,C as R,E as k}from"./index-pzWGL0cK.js";import{D as I}from"./DashboardFeatureWrapper-BYrtY7HX.js";import{D as M}from"./DeviceCard-B-MslgxW.js";import{D as q,R as B}from"./DeviceControlEditName-m82lnyr9.js";import{D as W}from"./DebouncedInput-BSs73uaO.js";import"./envs-CRUy-_iG.js";import"./Feature-BzaXaUES.js";import"./DisplayValue-E8sajbsC.js";import"./_createCompounder-CfkIxP4I.js";import"./LastSeen-hXPhBVem.js";import"./format-Bbg3coak.js";import"./Lqi-OIJirhdX.js";import"./PowerSource-pdM840jV.js";import"./snakeCase-CUh04m27.js";import"./DeviceImage-DL3nWYo3.js";import"./index-DDBxKamc.js";import"./CheckboxField-DGeXHkdI.js";import"./InputField-D7F4rh-6.js";const $=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_"],K=["battery","linkquality","options","position","programming","strength","voltage","warning","gradient","power_outage_memory","power_on_behavior"],U=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm","action","contact"],z=(i,c)=>{if(i){if(U.includes(i))return!0;for(const d of $)if(i.includes(d))return!1;if(K.includes(i))return!1}return!0};function ce(){const i=f(s=>s.deviceStates),c=f(s=>s.bridgeInfo.config),d=f(s=>s.devices),{sendMessage:n}=a.useContext(A),{t:l}=w(["zigbee","settings"]),[o,_]=a.useState(u.get(v,"")),[r,D]=a.useState(u.get(j,!1));a.useEffect(()=>{u.set(v,o)},[o]);const h=a.useCallback(async(s,t,m)=>{await n("bridge/request/device/rename",{from:s,to:t,homeassistant_rename:m,last:!1})},[n]),g=a.useCallback(async(s,t,m)=>{await n("bridge/request/device/remove",{id:s,force:t,block:m})},[n]),y=a.useCallback(s=>{u.set(j,s),D(s)},[]),C=a.useMemo(()=>{const s=[];for(const t of d)if(!t.disabled&&t.supported&&(!o||t.friendly_name.toLowerCase().includes(o.toLowerCase()))){const m=i[t.friendly_name]??{},x=t.definition?S(t.definition.exposes,z):[];x.length>0&&s.push(e.jsx("div",{className:`${r?"break-inside-avoid-column mb-3":"w-[23rem]"} card bg-base-200 rounded-box shadow-md`,children:e.jsx(M,{features:x,device:t,deviceState:m,onChange:async E=>await n(`${t.ieee_address}/set`,E),featureWrapperClass:I,lastSeenConfig:c.advanced.last_seen,children:e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(q,{name:t.friendly_name,renameDevice:h,homeassistantEnabled:c.homeassistant.enabled,style:"btn-outline btn-primary btn-square btn-sm join-item"}),e.jsx(b,{onClick:async()=>await N.show(B,{device:t,removeDevice:g}),className:"btn btn-outline btn-error btn-square btn-sm join-item",title:l("remove_device"),children:e.jsx(p,{icon:T})})]})})},t.ieee_address))}return s},[d,i,c.advanced.last_seen,c.homeassistant.enabled,n,g,h,l,o,r]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row justify-center items-center gap-3 mb-3",children:[e.jsxs("div",{className:"join",children:[e.jsxs("label",{className:"input w-64 join-item",children:[e.jsx(p,{icon:F}),e.jsx(W,{className:"",type:"search",onChange:s=>_(s.toString()),placeholder:l("common:search"),value:o})]}),e.jsx(b,{item:"",onClick:_,className:"btn btn-square join-item",title:l("common:clear"),children:e.jsx(p,{icon:L})})]}),e.jsx(b,{className:"btn btn-square",item:!r,onClick:y,title:`${l("settings:dashboard_column_display")}: ${r}`,children:e.jsx(p,{icon:r?R:k})})]}),e.jsx("div",{className:`${r?"columns-md":"flex flex-row flex-wrap justify-center"} gap-3 mb-3`,children:C})]})}export{ce as default};
@@ -1 +1 @@
1
- import{r as i,b as d,j as s,F as p}from"./index-BR27vzZL.js";import{c as u,s as x,d as f}from"./Feature-Ciu4ZwFB.js";const N=i.memo(o=>{const{children:c,feature:e,deviceValue:a,endpointSpecific:m}=o,n=e.unit,t=i.useMemo(()=>u(e.name,a,n),[n,e.name,a]),{t:l}=d("zigbee"),r=e.name==="state"?e.property:e.name;return s.jsxs("div",{className:"flex flex-row items-center gap-1 mb-2",children:[s.jsx(p,{icon:t[0],fixedWidth:!0,className:t[1],...t[2]}),s.jsxs("div",{className:"grow-1",title:r,children:[x(f(r)),!m&&s.jsx("span",{title:l("endpoint"),children:e.endpoint?` (${e.endpoint})`:null})]}),s.jsx("div",{className:"shrink-1",children:c})]})});export{N as D};
1
+ import{r as i,b as d,j as s,F as p}from"./index-pzWGL0cK.js";import{c as u,s as x,d as f}from"./Feature-BzaXaUES.js";const N=i.memo(o=>{const{children:c,feature:e,deviceValue:a,endpointSpecific:m}=o,n=e.unit,t=i.useMemo(()=>u(e.name,a,n),[n,e.name,a]),{t:l}=d("zigbee"),r=e.name==="state"?e.property:e.name;return s.jsxs("div",{className:"flex flex-row items-center gap-1 mb-2",children:[s.jsx(p,{icon:t[0],fixedWidth:!0,className:t[1],...t[2]}),s.jsxs("div",{className:"grow-1",title:r,children:[x(f(r)),!m&&s.jsx("span",{title:l("endpoint"),children:e.endpoint?` (${e.endpoint})`:null})]}),s.jsx("div",{className:"shrink-1",children:c})]})});export{N as D};
@@ -1 +1 @@
1
- import{r as t,j as c}from"./index-BR27vzZL.js";const p=t.memo(({value:e,onChange:u,debounce:o=500,...a})=>{const[s,m]=t.useState(e);return t.useEffect(()=>{m(e)},[e]),t.useEffect(()=>{const r=setTimeout(()=>{u(s)},o);return()=>clearTimeout(r)},[s,o,u]),c.jsx("input",{...a,value:s,onChange:r=>m(r.target.value)})});export{p as D};
1
+ import{r as t,j as c}from"./index-pzWGL0cK.js";const p=t.memo(({value:e,onChange:u,debounce:o=500,...a})=>{const[s,m]=t.useState(e);return t.useEffect(()=>{m(e)},[e]),t.useEffect(()=>{const r=setTimeout(()=>{u(s)},o);return()=>clearTimeout(r)},[s,o,u]),c.jsx("input",{...a,value:s,onChange:r=>m(r.target.value)})});export{p as D};
@@ -0,0 +1 @@
1
+ import{r as t,b as x,j as e,B as v,W as f,a as y,F as g,I as p,cg as w,Q as q,ch as T,ci as O,cj as R}from"./index-pzWGL0cK.js";import{I as N}from"./InputField-D7F4rh-6.js";import{S as E}from"./SelectField-Do2InTFr.js";import{T as S}from"./TextareaField-xwbu8YKo.js";import"./envs-CRUy-_iG.js";const k=["mqtt","external_converters","external_extensions"],M=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:i}=t.useContext(f),[r,l]=t.useState(""),[s,o]=t.useState("{}"),m=t.useMemo(()=>{if(!r)return!1;if(s!=="")try{const d=JSON.parse(s);if(typeof d!="object"||Array.isArray(d))return!1}catch{return!1}return!0},[r,s]),u=t.useCallback(async()=>{await i(r,s===""?s:JSON.parse(s))},[r,s,i]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("send_mqtt")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(g,{icon:p,size:"2xl"}),e.jsx("a",{href:R,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsx(N,{type:"text",name:"topic",label:n("topic"),detail:n("mqtt_topic_info"),placeholder:"bridge/request/permit_join",value:r,onChange:d=>l(d.target.value),className:"input validator w-full",required:!0}),e.jsx(S,{name:"payload",label:n("common:payload"),rows:5,value:s,onChange:d=>o(d.target.value),className:"textarea validator w-full"}),e.jsx("div",{className:"join join-horizontal mt-2",children:e.jsx(v,{onClick:u,disabled:!m,className:"btn btn-success",children:n("common:send")})})]})},A=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:i}=t.useContext(f),r=y(a=>a.converters),[l,s]=t.useState(),[o,m]=t.useState({name:"",code:""}),u=t.useMemo(()=>(l||!!o.name)&&!!o.code,[l,o]),d=t.useCallback(a=>{if(a.target.value){const c=r.find(j=>j.name===a.target.value);c&&(s(c),m(c))}else s(void 0),m({name:"",code:""})},[r]),h=t.useCallback(a=>{m(c=>({name:a.target.value,code:c.code}))},[]),b=t.useCallback(a=>{m(c=>({name:c.name,code:a.target.value}))},[]),C=t.useCallback(async()=>{await i("bridge/request/converter/save",o)},[i,o]),_=t.useCallback(async()=>{await i("bridge/request/converter/remove",{name:o.name})},[i,o.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_converter")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(g,{icon:p,size:"2xl"}),e.jsx("a",{href:T,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")}),e.jsx("a",{href:O,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("codespace_info")})]}),e.jsxs(E,{name:"converter_name_edit",label:n("select_converter_to_edit"),onChange:d,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_converter")]}),r.map(a=>e.jsx("option",{value:a.name,children:a.name},a.name))]}),e.jsx(N,{name:"converter_name",label:n("common:name"),type:"text",onChange:h,value:o.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"converter_code",label:n("code"),rows:5,value:o.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})},F=()=>{const{t:n}=x(["devConsole","common"]),{sendMessage:i}=t.useContext(f),r=y(a=>a.extensions),[l,s]=t.useState(),[o,m]=t.useState({name:"",code:""}),u=t.useMemo(()=>(l||!!o.name)&&!!o.code,[l,o]),d=t.useCallback(a=>{if(a.target.value){const c=r.find(j=>j.name===a.target.value);c&&(s(c),m(c))}else s(void 0),m({name:"",code:""})},[r]),h=t.useCallback(a=>{m(c=>({name:a.target.value,code:c.code}))},[]),b=t.useCallback(a=>{m(c=>({name:c.name,code:a.target.value}))},[]),C=t.useCallback(async()=>{await i("bridge/request/extension/save",o)},[i,o]),_=t.useCallback(async()=>{await i("bridge/request/extension/remove",{name:o.name})},[i,o.name]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg mb-2",children:n("add_update_external_extension")}),e.jsxs("div",{className:"alert alert-info alert-soft",role:"alert",children:[e.jsx(g,{icon:p,size:"2xl"}),e.jsx("a",{href:w,target:"_blank",rel:"noreferrer",className:"link link-hover",children:n("common:read_the_docs_info")})]}),e.jsxs(E,{name:"extension_name_edit",label:n("select_extension_to_edit"),onChange:d,value:l?.name??"",children:[e.jsxs("option",{value:"",children:["N/A - ",n("create_new_extension")]}),r.map(a=>e.jsx("option",{value:a.name,children:a.name},a.name))]}),e.jsx(N,{name:"extension_name",label:n("common:name"),type:"text",onChange:h,value:o.name,readOnly:l!==void 0,required:!0}),e.jsx(S,{name:"extension_code",label:n("code"),rows:5,value:o.code,onChange:b,className:"textarea validator w-full",required:!0}),e.jsxs("div",{className:"join join-horizontal mt-2",children:[e.jsx(v,{onClick:C,disabled:!u,className:"btn btn-success join-item",children:n("common:save")}),e.jsx(q,{onClick:_,disabled:!l,className:"btn btn-error join-item",title:n("common:delete"),modalDescription:n("common:dialog_confirmation_prompt"),modalCancelLabel:n("common:cancel"),children:n("common:delete")})]})]})};function B(){const[n,i]=t.useState(k[0]),{t:r}=x("devConsole"),l=t.useMemo(()=>{switch(n){case"mqtt":return e.jsx(M,{});case"external_converters":return e.jsx(A,{});case"external_extensions":return e.jsx(F,{})}return""},[n]);return e.jsxs("div",{className:"tabs tabs-border",children:[k.map(s=>e.jsx(v,{className:`tab${n===s?" tab-active":""}`,"aria-current":"page",item:s,onClick:i,children:r(s)},s)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})}export{B as default};
@@ -0,0 +1,20 @@
1
+ import{r as n,j as e,$ as F,af as B,b as z,B as k,F as G,z as J,ab as V,W as R,a as A,Q as K,L as O,ag as H,ah as T}from"./index-pzWGL0cK.js";import{u as X}from"./shallow-BvOtxUf5.js";import{T as q}from"./TextareaField-xwbu8YKo.js";import{J as Y}from"./Json-CIlquCLk.js";import{I}from"./InputField-D7F4rh-6.js";import{C as M,A as Z}from"./ClusterSinglePicker-XKCAlJUJ.js";import{E as Q}from"./EndpointPicker-DaqpKjl3.js";import"./envs-CRUy-_iG.js";import"./SelectField-Do2InTFr.js";const U=n.memo(({message:t})=>e.jsx("div",{className:"mockup-code w-full",children:e.jsx("pre",{"data-prefix":"~",className:F[t.level],children:e.jsxs("code",{children:["[",t.timestamp,"] ",t.message]})})})),ee=[65,66,67,68];function te({value:t,onChange:l,attribute:o,definition:u,...r}){const d=ee.includes(u.type)?"text":"number";return e.jsx("input",{type:d,value:t,onChange:m=>{const f=d==="number"?m.target.valueAsNumber:m.target.value;l(o,Number.isNaN(f)?void 0:f)},...r})}function se({device:t,readDeviceAttributes:l,writeDeviceAttributes:o,lastLog:u}){const[r,d]=n.useState(B(t.endpoints)??""),[m,f]=n.useState(""),[i,x]=n.useState([]),[h,_]=n.useState(""),{t:c}=z(["common","zigbee"]),j=n.useCallback(s=>{f(""),x([]),d(s.toString())},[]),E=n.useCallback(s=>{x([]),f(s)},[]),v=n.useCallback((s,S)=>{if(!i.find(w=>w.attribute===s)){const w=i.concat([{attribute:s,definition:S}]);x(w)}},[i]),a=n.useCallback(s=>{_(s.target.value)},[]),b=n.useCallback(async()=>{await l(t.ieee_address,r,m,i.map(s=>s.attribute),h)},[t.ieee_address,r,m,i,h,l]),p=n.useCallback(async()=>{await o(t.ieee_address,r,m,i)},[t.ieee_address,r,m,i,o]),C=n.useMemo(()=>i.length>0&&e.jsx("fieldset",{className:"fieldset gap-2 p-3 rounded-box shadow-md",children:i.map(({attribute:s,value:S="",definition:w})=>e.jsxs("div",{className:"join join-horizontal min-w-xs",children:[e.jsxs("label",{className:"input join-item",children:[s,e.jsx(te,{value:S,attribute:s,definition:w,onChange:(D,$)=>{const L=Array.from(i),P=L.find(W=>W.attribute===D);P&&(P.value=$),x(L)}})]}),e.jsx(k,{className:"btn btn-error btn-outline join-item",item:s,onClick:D=>{const $=i.filter(L=>L.attribute!==D);x($)},children:e.jsx(G,{icon:J})})]},s))}),[i]),y=n.useMemo(()=>{const s=new Set;if(r){const S=t.endpoints[Number.parseInt(r,10)];if(S)for(const w of S.clusters.input)s.add(w)}return s},[t,r]),g=i.length===0||m==="",N=n.useMemo(()=>V(t),[t]);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:N,value:r,onChange:j,required:!0}),e.jsx(M,{label:c("cluster"),clusters:y,value:m,onChange:E,required:!0}),e.jsx(Z,{label:c("attribute"),value:"",cluster:m,device:t,onChange:v}),e.jsx(I,{type:"text",name:"state_property",label:c("devConsole:state_property"),value:h,detail:`${c("optional")}. ${c("devConsole:state_property_info")}`,onChange:a})]}),C,e.jsxs("div",{className:"join join-horizontal",children:[e.jsx(k,{disabled:g||i.some(s=>!!s.value),className:"btn btn-success join-item",onClick:b,children:c("read")}),e.jsx(k,{disabled:g,className:"btn btn-error join-item",onClick:p,children:c("write")})]}),u&&e.jsx(U,{message:u})]}):e.jsx("span",{children:"No endpoints"})}const ne=({device:t,lastLog:l})=>{const{t:o}=z(["common","zigbee"]),[u,r]=n.useState(1),[d,m]=n.useState(""),[f,i]=n.useState(""),[x,h]=n.useState("{}"),{sendMessage:_}=n.useContext(R),c=A(a=>a.bridgeDefinitions),j=n.useMemo(()=>{if(!d||!f)return!1;try{const a=JSON.parse(x);if(typeof a!="object"||Array.isArray(a)&&a.length>0&&typeof a[0]!="object")return!1}catch{return!1}return!0},[x,d,f]),E=n.useMemo(()=>{const a=t.endpoints[u],b=new Set,p=new Set,C=new Set,y=new Set,g=new Set;if(a){for(const s of a.clusters.input)b.add(s),p.add(s);for(const s of a.clusters.output)b.add(s),C.add(s)}if(c.custom_clusters[t.friendly_name])for(const s in c.custom_clusters[t.friendly_name])b.has(s)||(b.add(s),y.add(s));for(const s in c.clusters)b.has(s)||g.add(s);return[{name:"input_clusters",clusters:p},{name:"output_clusters",clusters:C},{name:"custom_clusters",clusters:y},{name:"other_zcl_clusters",clusters:g}]},[t.friendly_name,t.endpoints,u,c]),v=n.useCallback(async()=>{let a=Number.parseInt(f,10);Number.isNaN(a)&&(a=f),await _(`${t.ieee_address}/${u}/set`,{command:{cluster:d,command:a,payload:JSON.parse(x)}})},[d,t.ieee_address,f,x,u,_]);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(I,{type:"number",name:"endpoint",label:o("zigbee:endpoint"),min:1,max:255,value:u,onChange:a=>!!a.target.value&&r(a.target.valueAsNumber),required:!0}),e.jsx(M,{label:o("zigbee:cluster"),clusters:E,value:d,onChange:a=>{m(a)},required:!0}),e.jsx(I,{type:"text",name:"command",label:o("command"),value:f,placeholder:"state, color...",onChange:a=>i(a.target.value),pattern:"^\\d+|^\\w+",required:!0})]}),e.jsx(q,{name:"payload",label:o("payload"),rows:3,value:x,onChange:a=>h(a.target.value),className:"textarea validator w-full",required:!0}),e.jsx("div",{children:e.jsx(k,{onClick:v,disabled:!j,className:"btn btn-success",children:o("execute")})}),l&&e.jsx(U,{message:l})]})},ae=/^(zhc:tz: Read result of |z2m: Publish 'set' 'read' to |z2m: Publish 'set' 'write' to |zhc:tz: Wrote )/,oe=n.memo(({device:t,externalDefinition:l})=>{const{t:o}=z("zigbee"),u=A(d=>d.bridgeInfo.zigbee_herdsman_converters.version),r={labels:"new device support",title:`[New device support] ${t.model_id} from ${t.manufacturer}`,body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${T.slice(0,-4)} -->
2
+
3
+ ### Link
4
+
5
+ ### What does/doesn't work with the external definition?
6
+
7
+ ### Details
8
+ zigbee-herdsman-converters: \`${u}\`
9
+ software_build_id: \`${t.software_build_id}\`
10
+ date_code: \`${t.date_code}\`
11
+ endpoints:
12
+ \`\`\`json
13
+ ${JSON.stringify(t.endpoints)}
14
+ \`\`\`
15
+
16
+ ### External definition:
17
+ \`\`\`ts
18
+ ${l}
19
+ \`\`\`
20
+ `};return e.jsx(O,{target:"_blank",rel:"noopener noreferrer",to:`${T}?${new URLSearchParams(r).toString()}`,className:"btn",children:o("request_support")})});function xe({device:t}){const{sendMessage:l}=n.useContext(R),{t:o}=z(["devConsole","common"]),u=A(p=>p.resetDeviceState),r=A(p=>p.lastNonDebugLog),[d,m]=n.useState(),[f,i]=n.useState(),[x,h]=n.useState(!1),[_,c]=n.useState(!1),j=A(X(p=>p.generatedExternalDefinitions[t.ieee_address]));n.useEffect(()=>{h(!1)},[t]),n.useEffect(()=>{r&&(r.message.startsWith("zhc:tz: Invoked ")?i(r):ae.test(r.message)&&m(r))},[r]);const E=n.useCallback(async(p,C,y,g,N)=>{const s={read:{cluster:y,attributes:g}};N&&(s.read.state_property=N),await l(`${p}/${C}/set`,s)},[l]),v=n.useCallback(async(p,C,y,g)=>{const N={write:{cluster:y,payload:{}}};for(const s of g)N.write.payload[s.attribute]=s.value;await l(`${p}/${C}/set`,N)},[l]),a=n.useCallback(async()=>{h(!0),await l("bridge/request/device/generate_external_definition",{id:t.ieee_address})},[l,t.ieee_address]),b=n.useCallback(()=>{u(t.friendly_name)},[u,t.friendly_name]);return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex flex-row justify-center items-center gap-2",children:[j?t.supported?null:e.jsx(oe,{device:t,externalDefinition:j}):x?e.jsx("span",{className:"loading loading-infinity loading-xl"}):e.jsx(k,{className:"btn btn-primary",onClick:a,children:o("generate_external_definition")}),e.jsx(k,{item:!_,onClick:c,className:"btn btn-primary",children:o(_?"hide_definition":"show_definition")}),e.jsx(K,{className:"btn btn-error",onClick:b,title:o("reset_frontend_state"),modalDescription:o("common:dialog_confirmation_prompt"),modalCancelLabel:o("common:cancel"),children:o("reset_frontend_state")})]}),j&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"divider"}),e.jsx(q,{name:"generated_external_definition",label:o("generated_external_definition"),value:j,className:"textarea w-full",rows:8,readOnly:!0}),e.jsx(O,{to:H,target:"_blank",rel:"noreferrer",className:"link link-primary self-end",children:o("common:documentation")})]}),_&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"divider"}),e.jsx(Y,{obj:t.definition??{},lines:12})]}),e.jsx("div",{className:"divider"}),e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4",children:[e.jsx(se,{device:t,lastLog:d,readDeviceAttributes:E,writeDeviceAttributes:v}),e.jsx(ne,{device:t,lastLog:f})]})]})}export{xe as default};
@@ -1 +1 @@
1
- import{r as f,b as j,j as s,L as u,F as h,aQ as w}from"./index-BR27vzZL.js";import{F as N,g as y}from"./Feature-Ciu4ZwFB.js";import{L}from"./LastSeen-dsZqv4y_.js";import{L as F}from"./Lqi-D-5JxyY1.js";import{P as _}from"./PowerSource-zOxQYLf3.js";import{D as $}from"./DeviceImage-C9XLyJZx.js";const E=f.memo(({onChange:n,onRead:i,device:e,endpoint:t,deviceState:a,lastSeenConfig:p,features:m,featureWrapperClass:c,children:g})=>{const{t:r}=j(["zigbee","devicePage"]),o=t!=null?e.endpoints[t]?.name:void 0,b=f.useMemo(()=>{const d=[];for(const l of m){const x=t!=null&&!!l.endpoint;(!x||Number(l.endpoint)===t||l.endpoint===o)&&d.push(s.jsx(N,{feature:l,device:e,deviceState:a,onChange:n,onRead:i,featureWrapperClass:c,minimal:!0,parentFeatures:[],endpointSpecific:x},y(l)))}return d},[o,e,t,a,m,c,n,i]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"card-body p-2",children:[s.jsxs("div",{className:"flex flex-row items-center gap-3 w-full",children:[s.jsx("div",{className:"flex-none h-11 w-11 overflow-visible",children:s.jsx($,{disabled:!1,device:e,otaState:a.update?.state})}),s.jsxs("div",{className:"min-w-0",children:[s.jsxs(u,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,t!=null?` (${r("endpoint")}: ${o?`${o} / `:""}${t})`:""]}),e.description&&s.jsx("div",{className:"text-xs opacity-50 truncate",title:e.description,children:e.description})]})]}),s.jsxs("div",{className:"text-sm w-full p-2",children:[b,s.jsxs("div",{className:"flex flex-row items-center gap-1 mt-3",children:[s.jsx("div",{className:"grow-1"}),s.jsxs(u,{to:`/device/${e.ieee_address}/exposes`,className:"btn btn-xs",children:[r("devicePage:exposes")," ",s.jsx(h,{icon:w,size:"lg"})]})]})]})]}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-1 mx-2 mb-2 justify-around items-center",children:[s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("last_seen"),children:s.jsx(L,{lastSeen:a.last_seen,config:p})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("lqi"),children:s.jsx(F,{value:a.linkquality})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("power"),children:s.jsx(_,{device:e,batteryPercent:a.battery,batteryState:a.battery_state,batteryLow:a.battery_low,showLevel:!0})}),g]})]})});export{E as D};
1
+ import{r as f,b as j,j as s,L as u,F as h,aQ as w}from"./index-pzWGL0cK.js";import{F as N,g as y}from"./Feature-BzaXaUES.js";import{L}from"./LastSeen-hXPhBVem.js";import{L as F}from"./Lqi-OIJirhdX.js";import{P as _}from"./PowerSource-pdM840jV.js";import{D as $}from"./DeviceImage-DL3nWYo3.js";const E=f.memo(({onChange:n,onRead:i,device:e,endpoint:t,deviceState:a,lastSeenConfig:p,features:m,featureWrapperClass:c,children:g})=>{const{t:r}=j(["zigbee","devicePage"]),o=t!=null?e.endpoints[t]?.name:void 0,b=f.useMemo(()=>{const d=[];for(const l of m){const x=t!=null&&!!l.endpoint;(!x||Number(l.endpoint)===t||l.endpoint===o)&&d.push(s.jsx(N,{feature:l,device:e,deviceState:a,onChange:n,onRead:i,featureWrapperClass:c,minimal:!0,parentFeatures:[],endpointSpecific:x},y(l)))}return d},[o,e,t,a,m,c,n,i]);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"card-body p-2",children:[s.jsxs("div",{className:"flex flex-row items-center gap-3 w-full",children:[s.jsx("div",{className:"flex-none h-11 w-11 overflow-visible",children:s.jsx($,{disabled:!1,device:e,otaState:a.update?.state})}),s.jsxs("div",{className:"min-w-0",children:[s.jsxs(u,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:[e.friendly_name,t!=null?` (${r("endpoint")}: ${o?`${o} / `:""}${t})`:""]}),e.description&&s.jsx("div",{className:"text-xs opacity-50 truncate",title:e.description,children:e.description})]})]}),s.jsxs("div",{className:"text-sm w-full p-2",children:[b,s.jsxs("div",{className:"flex flex-row items-center gap-1 mt-3",children:[s.jsx("div",{className:"grow-1"}),s.jsxs(u,{to:`/device/${e.ieee_address}/exposes`,className:"btn btn-xs",children:[r("devicePage:exposes")," ",s.jsx(h,{icon:w,size:"lg"})]})]})]})]}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-1 mx-2 mb-2 justify-around items-center",children:[s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("last_seen"),children:s.jsx(L,{lastSeen:a.last_seen,config:p})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("lqi"),children:s.jsx(F,{value:a.linkquality})}),s.jsx("span",{className:"badge badge-soft badge-ghost cursor-default",title:r("power"),children:s.jsx(_,{device:e,batteryPercent:a.battery,batteryState:a.battery_state,batteryLow:a.battery_low,showLevel:!0})}),g]})]})});export{E as D};
@@ -0,0 +1 @@
1
+ import{y as h,K as _,b as f,r as c,j as e,M as j,B as i,F as p,O as C}from"./index-pzWGL0cK.js";import{C as x}from"./CheckboxField-DGeXHkdI.js";import{I as g}from"./InputField-D7F4rh-6.js";const E=h.create(l=>{const{device:t,removeDevice:n}=l,o=_(),{t:s}=f(["zigbee","common"]),[a,r]=c.useState({block:!1,force:!1}),d=c.useCallback(b=>{const{checked:m,name:u}=b.target;r(k=>({...k,[u]:m}))},[]),v=c.useCallback(async()=>{o.remove(),await n(t.ieee_address,a.force,a.block)},[o.remove,n,t.ieee_address,a]);return e.jsx(j,{isOpen:o.visible,title:`${s("remove_device")} ${t.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:o.remove,children:s("common:cancel")}),e.jsx(i,{className:"btn btn-error ms-1",onClick:v,children:s("common:delete")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(x,{label:s("force_remove"),name:"force",onChange:d,checked:a.force}),e.jsx("span",{className:"text-xs opacity-50",children:s("force_remove_notice")}),e.jsx(x,{label:s("block_join"),name:"block",onChange:d,checked:a.block})]})})}),y=h.create(l=>{const{homeassistantEnabled:t,name:n,renameDevice:o}=l,s=_(),{t:a}=f(["zigbee","common"]),[r,d]=c.useState(!1),[v,b]=c.useState(n);return c.useEffect(()=>{b(n)},[n]),e.jsx(j,{isOpen:s.visible,title:`${a("rename_device")} ${n}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(i,{className:"btn btn-neutral",onClick:s.remove,children:a("common:cancel")}),e.jsx(i,{className:"btn btn-primary ms-1",onClick:async()=>{s.remove(),await o(n,v,r)},children:a("rename_device")})]}),children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(g,{name:"friendly_name",label:a("common:friendly_name"),onChange:m=>b(m.target.value),value:v,type:"text"}),t&&e.jsx(x,{label:a("update_Home_assistant_entity_id"),name:"update_Home_assistant_entity_id",onChange:m=>d(m.target.checked),checked:r})]})})}),F=c.memo(l=>{const{homeassistantEnabled:t,name:n,renameDevice:o,style:s}=l,{t:a}=f("zigbee");return e.jsx(i,{className:`btn ${s}`,onClick:async()=>await h.show(y,{name:n,renameDevice:o,homeassistantEnabled:t}),title:a("rename_device"),children:e.jsx(p,{icon:C})})});export{F as D,E as R};
@@ -1 +1 @@
1
- import{j as i,F as l,Y as x,r as m,b as w,ai as b,ak as O,c3 as S,c4 as P,J as N,c5 as _}from"./index-BR27vzZL.js";import{g as D,a as y}from"./index-Dn4wgen8.js";function I({error:r,children:e}){return r?i.jsx(l,{icon:x,size:"3x",className:"text-error"}):e}function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function E(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e);if(p(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function A(r){var e=E(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=A(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var $=function(r){var e=r.crossOrigin,t=e===void 0?"":e;return function(n){return new Promise(function(o,s){var c=new Image;t&&(c.crossOrigin=t),c.onload=function(){c.decode?c.decode().then(o).catch(s):o()},c.onerror=s,c.src=n})}};function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),t.push.apply(t,n)}return t}function g(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?j(Object(t),!0).forEach(function(n){L(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var F=function(e){return e.filter(function(t){return t})},T=function(e){return Array.isArray(e)?e:[e]},u={},k=function(e,t){var n=!1;return new Promise(function(o,s){var c=function(d){return t(d).then(function(){n=!0,o(d)})};e.reduce(function(f,d){return f.catch(function(){if(!n)return c(d)})},c(e.shift())).catch(s)})};function z(r){var e=r.srcList,t=r.imgPromise,n=t===void 0?$({}):t,o=r.useSuspense,s=o===void 0?!0:o,c=m.useState(!1),f=c[1],d=F(T(e)),a=d.join("");if(u[a]||(u[a]={promise:k(d,n),cache:"pending",error:null}),u[a].cache==="resolved")return{src:u[a].src,isLoading:!1,error:null};if(u[a].cache==="rejected"){if(s)throw u[a].error;return{isLoading:!1,error:u[a].error,src:void 0}}if(u[a].promise.then(function(v){u[a]=g(g({},u[a]),{},{cache:"resolved",src:v}),s||f(a)}).catch(function(v){u[a]=g(g({},u[a]),{},{cache:"rejected",error:v}),s||f(a)}),s)throw u[a].promise;return{isLoading:!0,src:void 0,error:null}}const h=m.memo(({device:r={},className:e})=>{const t=r.definition?.icon,n=D(r),o=[];t&&o.push(t),n&&o.push(n),n!==y&&o.push(y);const{src:s}=z({srcList:o});return i.jsx("img",{alt:r.ieee_address,crossOrigin:"anonymous",src:s,className:e})}),K=m.memo(r=>{const{t:e}=w("zigbee"),{device:t={},disabled:n,otaState:o,className:s,noIndicator:c}=r,f=m.useMemo(()=>t.interview_state===b.InProgress?i.jsx("span",{title:e("interviewing"),children:i.jsx(l,{icon:O,spin:!0,className:"indicator-item indicator-bottom indicator-end text-info"})}):t.interview_state===b.Failed?i.jsx("span",{title:e("interview_failed"),children:i.jsx(l,{icon:x,beat:!0,className:"indicator-item indicator-bottom indicator-end text-error"})}):t.definition?.source==="generated"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:S,beat:!0,className:"indicator-item indicator-bottom indicator-end text-warning"})}):t.definition?.source==="external"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:P,className:"indicator-item indicator-bottom indicator-end text-info"})}):null,[t.interview_state,t.definition,e]);return i.jsx(m.Suspense,{fallback:i.jsx("img",{alt:t.ieee_address,src:y}),children:i.jsx(I,{children:c?i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`}):i.jsxs("div",{className:"indicator w-full",children:[o==="updating"&&i.jsx("span",{title:e("updating_firmware"),children:i.jsx(l,{icon:N,spin:!0,className:"indicator-item indicator-top indicator-end text-info"})}),f,n&&i.jsx("span",{title:e("common:disabled"),children:i.jsx(l,{icon:_,className:"indicator-item indicator-middle indicator-center text-error",size:"2xl"})}),i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`})]})})})});export{K as D};
1
+ import{j as i,F as l,Y as x,r as m,b as w,ai as b,ak as O,c3 as S,c4 as P,J as N,c5 as _}from"./index-pzWGL0cK.js";import{g as D,a as y}from"./index-DDBxKamc.js";function I({error:r,children:e}){return r?i.jsx(l,{icon:x,size:"3x",className:"text-error"}):e}function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function E(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e);if(p(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function A(r){var e=E(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=A(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var $=function(r){var e=r.crossOrigin,t=e===void 0?"":e;return function(n){return new Promise(function(o,s){var c=new Image;t&&(c.crossOrigin=t),c.onload=function(){c.decode?c.decode().then(o).catch(s):o()},c.onerror=s,c.src=n})}};function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),t.push.apply(t,n)}return t}function g(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?j(Object(t),!0).forEach(function(n){L(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var F=function(e){return e.filter(function(t){return t})},T=function(e){return Array.isArray(e)?e:[e]},u={},k=function(e,t){var n=!1;return new Promise(function(o,s){var c=function(d){return t(d).then(function(){n=!0,o(d)})};e.reduce(function(f,d){return f.catch(function(){if(!n)return c(d)})},c(e.shift())).catch(s)})};function z(r){var e=r.srcList,t=r.imgPromise,n=t===void 0?$({}):t,o=r.useSuspense,s=o===void 0?!0:o,c=m.useState(!1),f=c[1],d=F(T(e)),a=d.join("");if(u[a]||(u[a]={promise:k(d,n),cache:"pending",error:null}),u[a].cache==="resolved")return{src:u[a].src,isLoading:!1,error:null};if(u[a].cache==="rejected"){if(s)throw u[a].error;return{isLoading:!1,error:u[a].error,src:void 0}}if(u[a].promise.then(function(v){u[a]=g(g({},u[a]),{},{cache:"resolved",src:v}),s||f(a)}).catch(function(v){u[a]=g(g({},u[a]),{},{cache:"rejected",error:v}),s||f(a)}),s)throw u[a].promise;return{isLoading:!0,src:void 0,error:null}}const h=m.memo(({device:r={},className:e})=>{const t=r.definition?.icon,n=D(r),o=[];t&&o.push(t),n&&o.push(n),n!==y&&o.push(y);const{src:s}=z({srcList:o});return i.jsx("img",{alt:r.ieee_address,crossOrigin:"anonymous",src:s,className:e})}),K=m.memo(r=>{const{t:e}=w("zigbee"),{device:t={},disabled:n,otaState:o,className:s,noIndicator:c}=r,f=m.useMemo(()=>t.interview_state===b.InProgress?i.jsx("span",{title:e("interviewing"),children:i.jsx(l,{icon:O,spin:!0,className:"indicator-item indicator-bottom indicator-end text-info"})}):t.interview_state===b.Failed?i.jsx("span",{title:e("interview_failed"),children:i.jsx(l,{icon:x,beat:!0,className:"indicator-item indicator-bottom indicator-end text-error"})}):t.definition?.source==="generated"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:S,beat:!0,className:"indicator-item indicator-bottom indicator-end text-warning"})}):t.definition?.source==="external"?i.jsx("span",{title:e("unsupported"),children:i.jsx(l,{icon:P,className:"indicator-item indicator-bottom indicator-end text-info"})}):null,[t.interview_state,t.definition,e]);return i.jsx(m.Suspense,{fallback:i.jsx("img",{alt:t.ieee_address,src:y}),children:i.jsx(I,{children:c?i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`}):i.jsxs("div",{className:"indicator w-full",children:[o==="updating"&&i.jsx("span",{title:e("updating_firmware"),children:i.jsx(l,{icon:N,spin:!0,className:"indicator-item indicator-top indicator-end text-info"})}),f,n&&i.jsx("span",{title:e("common:disabled"),children:i.jsx(l,{icon:_,className:"indicator-item indicator-middle indicator-center text-error",size:"2xl"})}),i.jsx(h,{device:t,className:`grid place-items-center${s?` ${s}`:""}`})]})})})});export{K as D};
@@ -1,4 +1,4 @@
1
- import{y as S,K as I,b as x,r,j as e,M as L,B as f,F as p,O,a as u,W as T,L as h,Y as U,ai as _,aj as P,ak as N,ag as A,t as M,al as w,ah as y}from"./index-BR27vzZL.js";import{s as z}from"./snakeCase-Dntle38p.js";import{D as H}from"./DeviceControlEditName-CdOvAC3i.js";import{A as W,D as q}from"./Availability-PU0rLtaR.js";import{T as F}from"./TextareaField-RnWDqrAI.js";import{D as G}from"./DeviceImage-C9XLyJZx.js";import{D as B}from"./DisplayValue-BOG1_pD9.js";import{L as K}from"./LastSeen-dsZqv4y_.js";import{M as V,V as J}from"./VendorLink-DuKl6tZD.js";import{P as Y}from"./PowerSource-zOxQYLf3.js";import"./envs-CRUy-_iG.js";import"./_createCompounder-j5DHCRsI.js";import"./CheckboxField-DL452sgi.js";import"./InputField-BHHQh6No.js";import"./index-Dn4wgen8.js";import"./format-DWdgGQ5D.js";const X=S.create(a=>{const{device:s,setDeviceDescription:t}=a,n=I(),{t:o}=x(["zigbee","common"]),[l,v]=r.useState(s.description||"");return r.useEffect(()=>{v(s.description||"")},[s.description]),e.jsx(L,{isOpen:n.visible,title:`${o("update_description")} ${s.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(f,{className:"btn btn-neutral",onClick:n.remove,children:o("common:cancel")}),e.jsx(f,{className:"btn btn-primary ms-1",onClick:async()=>{n.remove(),await t(s.ieee_address,l)},children:o("zigbee:save_description")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(F,{label:o("description"),name:"update_description",onChange:d=>v(d.target.value),rows:3,value:l})})})}),Z=r.memo(a=>{const{device:s,setDeviceDescription:t}=a,{t:n}=x("zigbee");return e.jsx(f,{className:`btn btn-link btn-sm${s.description?" btn-square":""}`,onClick:async()=>await S.show(X,{device:s,setDeviceDescription:t}),title:n("edit_description"),children:s.description?e.jsx(p,{icon:O}):n("edit_description")})}),Q=/\[(.*?)]\((.*?)\)/,ee={native:"badge-success",external:"badge-info",generated:"badge-warning"},se=(a,s)=>{if(!(a==="bindings"||a==="configured_reportings"||a==="scenes"))return s},te=r.memo(({device:a})=>{const{t:s}=x("zigbee"),t={labels:"enhancement",title:`[External Converter] ${a.model_id} from ${a.manufacturer}`,body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${w.slice(0,-4)} -->
1
+ import{y as S,K as I,b as x,r,j as e,M as L,B as f,F as p,O,a as u,W as T,L as h,Y as U,ai as _,aj as P,ak as N,ag as A,t as M,al as w,ah as y}from"./index-pzWGL0cK.js";import{s as z}from"./snakeCase-CUh04m27.js";import{D as H}from"./DeviceControlEditName-m82lnyr9.js";import{A as W,D as q}from"./Availability-D1dLU87I.js";import{T as F}from"./TextareaField-xwbu8YKo.js";import{D as G}from"./DeviceImage-DL3nWYo3.js";import{D as B}from"./DisplayValue-E8sajbsC.js";import{L as K}from"./LastSeen-hXPhBVem.js";import{M as V,V as J}from"./VendorLink-DE4QCH9H.js";import{P as Y}from"./PowerSource-pdM840jV.js";import"./envs-CRUy-_iG.js";import"./_createCompounder-CfkIxP4I.js";import"./CheckboxField-DGeXHkdI.js";import"./InputField-D7F4rh-6.js";import"./index-DDBxKamc.js";import"./format-Bbg3coak.js";const X=S.create(a=>{const{device:s,setDeviceDescription:t}=a,n=I(),{t:o}=x(["zigbee","common"]),[l,v]=r.useState(s.description||"");return r.useEffect(()=>{v(s.description||"")},[s.description]),e.jsx(L,{isOpen:n.visible,title:`${o("update_description")} ${s.friendly_name}`,footer:e.jsxs(e.Fragment,{children:[e.jsx(f,{className:"btn btn-neutral",onClick:n.remove,children:o("common:cancel")}),e.jsx(f,{className:"btn btn-primary ms-1",onClick:async()=>{n.remove(),await t(s.ieee_address,l)},children:o("zigbee:save_description")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(F,{label:o("description"),name:"update_description",onChange:d=>v(d.target.value),rows:3,value:l})})})}),Z=r.memo(a=>{const{device:s,setDeviceDescription:t}=a,{t:n}=x("zigbee");return e.jsx(f,{className:`btn btn-link btn-sm${s.description?" btn-square":""}`,onClick:async()=>await S.show(X,{device:s,setDeviceDescription:t}),title:n("edit_description"),children:s.description?e.jsx(p,{icon:O}):n("edit_description")})}),Q=/\[(.*?)]\((.*?)\)/,ee={native:"badge-success",external:"badge-info",generated:"badge-warning"},se=(a,s)=>{if(!(a==="bindings"||a==="configured_reportings"||a==="scenes"))return s},te=r.memo(({device:a})=>{const{t:s}=x("zigbee"),t={labels:"enhancement",title:`[External Converter] ${a.model_id} from ${a.manufacturer}`,body:`<!-- MAKE SURE THIS IS NOT ALREADY POSTED ${w.slice(0,-4)} -->
2
2
 
3
3
  This is my external converter for \`${a.model_id}\` from \`${a.manufacturer}\`
4
4
  software_build_id: \`${a.software_build_id}\`
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bind-D1v_YvyA.js","./index-pzWGL0cK.js","./envs-CRUy-_iG.js","./index-LLsrh-Ne.css","./DevicePicker-CxYjky2Z.js","./SelectField-Do2InTFr.js","./EndpointPicker-DaqpKjl3.js","./Clusters-Bs7V9b_E.js","./DevConsole-DzhRu7kl.js","./shallow-BvOtxUf5.js","./TextareaField-xwbu8YKo.js","./Json-CIlquCLk.js","./InputField-D7F4rh-6.js","./ClusterSinglePicker-XKCAlJUJ.js","./DeviceInfo-BBRyyGYy.js","./snakeCase-CUh04m27.js","./_createCompounder-CfkIxP4I.js","./DeviceControlEditName-m82lnyr9.js","./CheckboxField-DGeXHkdI.js","./Availability-D1dLU87I.js","./DeviceImage-DL3nWYo3.js","./index-DDBxKamc.js","./DisplayValue-E8sajbsC.js","./LastSeen-hXPhBVem.js","./format-Bbg3coak.js","./VendorLink-DE4QCH9H.js","./PowerSource-pdM840jV.js","./DeviceSettings-CxqEPckE.js","./SettingsList-DsVgWKy3.js","./NumberField-DBq58GHS.js","./DeviceSpecificSettings-yq2AvjNF.js","./Feature-BzaXaUES.js","./Exposes-CKueBwT9.js","./Groups-C7jeWZeH.js","./Reporting-DMIJKWCI.js","./Scene-BZa630sw.js","./RecallRemove-WoSCq7mT.js","./DashboardFeatureWrapper-BYrtY7HX.js","./State-De2K3QBu.js"])))=>i.map(i=>d[i]);
2
+ import{r as i,b as p,j as e,L as x,P as j,F as n,f as v,a as f,d as g,u as y,N as r,e as b,g as h,h as N,i as E,k as T,l as w,m as L,n as P,o as $,p as D,q as A,_ as l}from"./index-pzWGL0cK.js";import"./envs-CRUy-_iG.js";const I=i.memo(({devices:a,currentDevice:d,tab:t="info"})=>{const[m,_]=i.useState(""),{t:s}=p("common"),o=i.useMemo(()=>a.filter(c=>c.type!=="Coordinator"&&c.friendly_name.toLowerCase().includes(m.toLowerCase())&&c.ieee_address!==d?.ieee_address).map(c=>e.jsx("li",{children:e.jsx(x,{to:`/device/${c.ieee_address}/${t}`,onClick:()=>_(""),className:"dropdown-item",children:c.friendly_name})},c.ieee_address)),[a,d,m,t]);return e.jsxs(j,{name:"header-device-selector",buttonChildren:`${d?`${d.friendly_name} (${d.ieee_address})`:s("unknown_device")}`,dropdownStyle:"dropdown-start",children:[e.jsxs("label",{className:"input",children:[e.jsx(n,{icon:v}),e.jsx("input",{type:"search",placeholder:s("type_to_filter"),onChange:c=>_(c.target.value),value:m})]},"search"),o]})}),R=i.lazy(async()=>await l(()=>import("./Bind-D1v_YvyA.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),C=i.lazy(async()=>await l(()=>import("./Clusters-Bs7V9b_E.js"),__vite__mapDeps([7,1,2,3]),import.meta.url)),O=i.lazy(async()=>await l(()=>import("./DevConsole-DzhRu7kl.js"),__vite__mapDeps([8,1,2,3,9,10,11,12,13,5,6]),import.meta.url)),S=i.lazy(async()=>await l(()=>import("./DeviceInfo-BBRyyGYy.js"),__vite__mapDeps([14,1,2,3,15,16,17,18,12,19,10,20,21,22,23,24,25,26]),import.meta.url)),z=i.lazy(async()=>await l(()=>import("./DeviceSettings-CxqEPckE.js"),__vite__mapDeps([27,1,2,3,28,18,12,29,5]),import.meta.url)),V=i.lazy(async()=>await l(()=>import("./DeviceSpecificSettings-yq2AvjNF.js"),__vite__mapDeps([30,1,2,3,31,22,16]),import.meta.url)),k=i.lazy(async()=>await l(()=>import("./Exposes-CKueBwT9.js"),__vite__mapDeps([32,1,2,3,9,31,22,16]),import.meta.url)),M=i.lazy(async()=>await l(()=>import("./Groups-C7jeWZeH.js"),__vite__mapDeps([33,1,2,3,6,5]),import.meta.url)),F=i.lazy(async()=>await l(()=>import("./Reporting-DMIJKWCI.js"),__vite__mapDeps([34,1,2,3,12,13,5,6]),import.meta.url)),G=i.lazy(async()=>await l(()=>import("./Scene-BZa630sw.js"),__vite__mapDeps([35,1,2,3,9,36,37,31,22,16,12,5]),import.meta.url)),B=i.lazy(async()=>await l(()=>import("./State-De2K3QBu.js"),__vite__mapDeps([38,1,2,3,9,11]),import.meta.url));function H(){const{t:a}=p(["devicePage","common"]),d=f(u=>u.devices),{deviceId:t,tab:m}=g(),_=y(),s=t?d.find(u=>u.ieee_address===t):void 0;i.useEffect(()=>{s&&(m?s.type==="Coordinator"&&_("/settings/about",{replace:!0}):_(s.type==="Coordinator"?"/settings/about":`/device/${s.ieee_address}/info`,{replace:!0}))},[m,s,_]);const o=({isActive:u})=>u?"tab tab-active":"tab",c=i.useMemo(()=>{if(!s)return e.jsx("div",{className:"flex-auto justify-center items-center",children:a("common:unknown_device")});switch(m){case"info":return e.jsx(S,{device:s});case"exposes":return e.jsx(k,{device:s});case"bind":return e.jsx(R,{device:s});case"reporting":return e.jsx(F,{device:s});case"settings":return e.jsx(z,{device:s});case"settings-specific":return e.jsx(V,{device:s});case"state":return e.jsx(B,{device:s});case"clusters":return e.jsx(C,{device:s});case"groups":return e.jsx(M,{device:s});case"scene":return e.jsx(G,{device:s});case"dev-console":return e.jsx(O,{device:s})}},[s,m,a]);return e.jsxs(e.Fragment,{children:[e.jsx(I,{devices:d,currentDevice:s,tab:m}),e.jsxs("div",{className:"tabs tabs-border mt-2",children:[e.jsxs(r,{to:`/device/${t}/info`,className:o,children:[e.jsx(n,{icon:b,className:"me-2"}),a("about")]}),e.jsxs(r,{to:`/device/${t}/exposes`,className:o,children:[e.jsx(n,{icon:h,className:"me-2"}),a("exposes")]}),e.jsxs(r,{to:`/device/${t}/bind`,className:o,children:[e.jsx(n,{icon:N,className:"me-2"}),a("bind")]}),e.jsxs(r,{to:`/device/${t}/reporting`,className:o,children:[e.jsx(n,{icon:E,className:"me-2"}),a("reporting")]}),e.jsxs(r,{to:`/device/${t}/settings`,className:o,children:[e.jsx(n,{icon:T,className:"me-2"}),a("settings")]}),e.jsxs(r,{to:`/device/${t}/settings-specific`,className:o,children:[e.jsx(n,{icon:w,className:"me-2"}),a("settings_specific")]}),e.jsxs(r,{to:`/device/${t}/state`,className:o,children:[e.jsx(n,{icon:L,className:"me-2"}),a("state")]}),e.jsxs(r,{to:`/device/${t}/clusters`,className:o,children:[e.jsx(n,{icon:P,className:"me-2"}),a("clusters")]}),e.jsxs(r,{to:`/device/${t}/groups`,className:o,children:[e.jsx(n,{icon:$,className:"me-2"}),a("groups")]}),e.jsxs(r,{to:`/device/${t}/scene`,className:o,children:[e.jsx(n,{icon:D,className:"me-2"}),a("scene")]}),e.jsxs(r,{to:`/device/${t}/dev-console`,className:o,children:[e.jsx(n,{icon:A,className:"me-2"}),a("dev_console")]}),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:c})]})]})}export{H as default};
@@ -1 +1 @@
1
- import{r as d,b as x,j as t}from"./index-BR27vzZL.js";import{S as j}from"./SelectField-BMt7uZuS.js";const _=d.memo(c=>{const{t:i}=x("common"),{devices:l,value:p,label:u,onChange:a,groups:r=[],...m}=c,h=s=>{const{value:n}=s.target;if(n.startsWith("0x"))a(l.find(e=>e.ieee_address===n));else{const e=Number.parseInt(n,10);a(r.find(o=>e===o.id))}},f=d.useMemo(()=>{const s=[],n=l.map(e=>t.jsxs("option",{title:e.definition?.description,value:e.ieee_address,children:[e.friendly_name," ",e.definition?.model?`(${e.definition?.model})`:""]},e.ieee_address));if(r?.length){const e=r.map(o=>t.jsx("option",{value:o.id,children:o.friendly_name},o.id));s.push(t.jsx("optgroup",{label:i("groups"),children:e},"Groups")),s.push(t.jsx("optgroup",{label:i("devices"),children:n},"Devices"))}else s.push(...n);return s},[l,r,i]);return t.jsxs(j,{name:"device_picker",label:u,value:p,onChange:h,...m,children:[t.jsx("option",{value:"",disabled:!0,children:i("select_device")}),f]})});export{_ as D};
1
+ import{r as d,b as x,j as t}from"./index-pzWGL0cK.js";import{S as j}from"./SelectField-Do2InTFr.js";const _=d.memo(c=>{const{t:i}=x("common"),{devices:l,value:p,label:u,onChange:a,groups:r=[],...m}=c,h=s=>{const{value:n}=s.target;if(n.startsWith("0x"))a(l.find(e=>e.ieee_address===n));else{const e=Number.parseInt(n,10);a(r.find(o=>e===o.id))}},f=d.useMemo(()=>{const s=[],n=l.map(e=>t.jsxs("option",{title:e.definition?.description,value:e.ieee_address,children:[e.friendly_name," ",e.definition?.model?`(${e.definition?.model})`:""]},e.ieee_address));if(r?.length){const e=r.map(o=>t.jsx("option",{value:o.id,children:o.friendly_name},o.id));s.push(t.jsx("optgroup",{label:i("groups"),children:e},"Groups")),s.push(t.jsx("optgroup",{label:i("devices"),children:n},"Devices"))}else s.push(...n);return s},[l,r,i]);return t.jsxs(j,{name:"device_picker",label:u,value:p,onChange:h,...m,children:[t.jsx("option",{value:"",disabled:!0,children:i("select_device")}),f]})});export{_ as D};
@@ -1 +1 @@
1
- import{b as c,a as d,r,W as m,j as e,F as l,I as p,ao as f,ap as g}from"./index-BR27vzZL.js";import{S as x}from"./SettingsList-D8N_9F77.js";import"./envs-CRUy-_iG.js";import"./CheckboxField-DL452sgi.js";import"./InputField-BHHQh6No.js";import"./NumberField-W0nLjOub.js";import"./SelectField-BMt7uZuS.js";function v({device:s}){const{t:a}=c(["settings","common"]),t=d(o=>o.bridgeInfo),{sendMessage:i}=r.useContext(m),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(l,{icon:p,size:"2xl"}),e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",className:"link link-hover",children:a("common:read_the_docs_info")})]}),e.jsx(x,{schema:t.config_schema.definitions.device??{properties:{}},data:g({},t.config.device_options,t.config.devices[s.ieee_address]),set:n})]})}export{v as default};
1
+ import{b as c,a as d,r,W as m,j as e,F as l,I as p,ao as f,ap as g}from"./index-pzWGL0cK.js";import{S as x}from"./SettingsList-DsVgWKy3.js";import"./envs-CRUy-_iG.js";import"./CheckboxField-DGeXHkdI.js";import"./InputField-D7F4rh-6.js";import"./NumberField-DBq58GHS.js";import"./SelectField-Do2InTFr.js";function v({device:s}){const{t:a}=c(["settings","common"]),t=d(o=>o.bridgeInfo),{sendMessage:i}=r.useContext(m),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(l,{icon:p,size:"2xl"}),e.jsx("a",{href:f,target:"_blank",rel:"noreferrer",className:"link link-hover",children:a("common:read_the_docs_info")})]}),e.jsx(x,{schema:t.config_schema.definitions.device??{properties:{}},data:g({},t.config.device_options,t.config.devices[s.ieee_address]),set:n})]})}export{v as default};
@@ -1 +1 @@
1
- import{b as p,a as u,r as a,W as d,j as i}from"./index-BR27vzZL.js";import{F as c,a as f,g}from"./Feature-Ciu4ZwFB.js";import"./envs-CRUy-_iG.js";import"./DisplayValue-BOG1_pD9.js";import"./_createCompounder-j5DHCRsI.js";function F({device:e}){const{t:r}=p(["exposes"]),o=u(s=>s.bridgeInfo),{sendMessage:t}=a.useContext(d),n=a.useCallback(async s=>{await t("bridge/request/device/options",{id:e.ieee_address,options:s})},[t,e.ieee_address]);return e.definition?.options?.length?i.jsx("div",{className:"list bg-base-100",children:e.definition.options.map(s=>i.jsx(c,{feature:s,device:e,deviceState:o.config.devices[e.ieee_address]??{},onChange:n,featureWrapperClass:f,parentFeatures:[]},g(s)))}):r("empty_exposes_definition")}export{F as default};
1
+ import{b as p,a as u,r as a,W as d,j as i}from"./index-pzWGL0cK.js";import{F as c,a as f,g}from"./Feature-BzaXaUES.js";import"./envs-CRUy-_iG.js";import"./DisplayValue-E8sajbsC.js";import"./_createCompounder-CfkIxP4I.js";function F({device:e}){const{t:r}=p(["exposes"]),o=u(s=>s.bridgeInfo),{sendMessage:t}=a.useContext(d),n=a.useCallback(async s=>{await t("bridge/request/device/options",{id:e.ieee_address,options:s})},[t,e.ieee_address]);return e.definition?.options?.length?i.jsx("div",{className:"list bg-base-100",children:e.definition.options.map(s=>i.jsx(c,{feature:s,device:e,deviceState:o.config.devices[e.ieee_address]??{},onChange:n,featureWrapperClass:f,parentFeatures:[]},g(s)))}):r("empty_exposes_definition")}export{F as default};
@@ -1 +1 @@
1
- import{r as t,ab as v,b as f,W as g,j as e,B as j,x as C,Q as h,F as _,z as S,a as x}from"./index-BR27vzZL.js";import{i as D,R as k,A as w}from"./RecallRemove-cc5YDCh9.js";import{D as M}from"./DevicePicker-toVVVDvU.js";import{E as y}from"./EndpointPicker-DeqXMnZV.js";import{D as N}from"./DashboardFeatureWrapper-CijVXPwd.js";import{D as F}from"./DeviceCard-BQ3AAT7N.js";import"./envs-CRUy-_iG.js";import"./Feature-Ciu4ZwFB.js";import"./DisplayValue-BOG1_pD9.js";import"./_createCompounder-j5DHCRsI.js";import"./InputField-BHHQh6No.js";import"./SelectField-BMt7uZuS.js";import"./LastSeen-dsZqv4y_.js";import"./format-DWdgGQ5D.js";import"./Lqi-D-5JxyY1.js";import"./PowerSource-zOxQYLf3.js";import"./snakeCase-Dntle38p.js";import"./DeviceImage-C9XLyJZx.js";import"./index-Dn4wgen8.js";const E=t.memo(({devices:r,group:n})=>{const[i,o]=t.useState(""),[a,u]=t.useState(""),l=t.useMemo(()=>v(r.find(m=>m.ieee_address===a)),[a,r]),{t:c}=f(["groups","zigbee"]),{sendMessage:s}=t.useContext(g),d=t.useCallback(m=>{u(m.ieee_address);const b=v(m);o(b.values().next().value)},[]),p=t.useCallback(async()=>await s("bridge/request/group/members/add",{group:n.id.toString(),endpoint:i,device:a}),[s,n.id,i,a]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:c("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(M,{label:c("zigbee:device"),value:a,devices:r,onChange:d}),e.jsx(y,{label:c("zigbee:endpoint"),values:l,value:i,onChange:m=>o(m),disabled:!a})]}),e.jsx(j,{onClick:p,className:"btn btn-primary",disabled:i==null||i===""||!a,children:c("add_to_group")})]})}),A=t.memo(r=>{const{removeDeviceFromGroup:n,groupMember:i,device:o,deviceState:a,lastSeenConfig:u,setDeviceState:l}=r,{endpoint:c}=i,{t:s}=f(["groups","common"]),d=t.useMemo(()=>o.definition?C(o.definition.exposes,D):[],[o]),p=t.useCallback(async b=>await l(o.ieee_address,b),[o.ieee_address,l]),m=t.useCallback(async()=>await n(o.ieee_address,c),[o.ieee_address,c,n]);return e.jsx(F,{features:d,device:o,endpoint:c,deviceState:a,onChange:p,featureWrapperClass:N,lastSeenConfig:u,children:e.jsx(h,{onClick:m,className:"btn btn-square btn-outline btn-error btn-sm",title:s("remove_from_group"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:e.jsx(_,{icon:S})})})}),R=t.memo(({devices:r,group:n})=>{const i=x(s=>s.deviceStates),o=x(s=>s.bridgeInfo.config.advanced.last_seen),{sendMessage:a}=t.useContext(g),u=t.useCallback(async(s,d)=>await a("bridge/request/group/members/remove",{device:s,endpoint:d,group:n.id.toString()}),[a,n.id]),l=t.useCallback(async(s,d)=>{await a(`${s}/set`,d)},[a]),c=t.useMemo(()=>{const s=[];for(const d of n.members){const p=r.find(m=>m.ieee_address===d.ieee_address);p&&s.push(e.jsx("div",{className:"w-[23rem] card bg-base-200 rounded-box shadow-md",children:e.jsx(A,{removeDeviceFromGroup:u,device:p,groupMember:d,deviceState:i[p.friendly_name]??{},lastSeenConfig:o,setDeviceState:l})},`${d.ieee_address}-${d.endpoint}`))}return s},[n,r,o,i,u,l]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-center gap-3",children:c})});function Z({group:r}){const n=x(i=>i.devices);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4 mb-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(E,{devices:n,group:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(k,{target:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(w,{target:r,deviceState:{}})})]}),e.jsx(R,{devices:n,group:r})]})}export{Z as default};
1
+ import{r as t,ab as v,b as f,W as g,j as e,B as j,x as C,Q as h,F as _,z as S,a as x}from"./index-pzWGL0cK.js";import{i as D,R as k,A as w}from"./RecallRemove-WoSCq7mT.js";import{D as M}from"./DevicePicker-CxYjky2Z.js";import{E as y}from"./EndpointPicker-DaqpKjl3.js";import{D as N}from"./DashboardFeatureWrapper-BYrtY7HX.js";import{D as F}from"./DeviceCard-B-MslgxW.js";import"./envs-CRUy-_iG.js";import"./Feature-BzaXaUES.js";import"./DisplayValue-E8sajbsC.js";import"./_createCompounder-CfkIxP4I.js";import"./InputField-D7F4rh-6.js";import"./SelectField-Do2InTFr.js";import"./LastSeen-hXPhBVem.js";import"./format-Bbg3coak.js";import"./Lqi-OIJirhdX.js";import"./PowerSource-pdM840jV.js";import"./snakeCase-CUh04m27.js";import"./DeviceImage-DL3nWYo3.js";import"./index-DDBxKamc.js";const E=t.memo(({devices:r,group:n})=>{const[i,o]=t.useState(""),[a,u]=t.useState(""),l=t.useMemo(()=>v(r.find(m=>m.ieee_address===a)),[a,r]),{t:c}=f(["groups","zigbee"]),{sendMessage:s}=t.useContext(g),d=t.useCallback(m=>{u(m.ieee_address);const b=v(m);o(b.values().next().value)},[]),p=t.useCallback(async()=>await s("bridge/request/group/members/add",{group:n.id.toString(),endpoint:i,device:a}),[s,n.id,i,a]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:c("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(M,{label:c("zigbee:device"),value:a,devices:r,onChange:d}),e.jsx(y,{label:c("zigbee:endpoint"),values:l,value:i,onChange:m=>o(m),disabled:!a})]}),e.jsx(j,{onClick:p,className:"btn btn-primary",disabled:i==null||i===""||!a,children:c("add_to_group")})]})}),A=t.memo(r=>{const{removeDeviceFromGroup:n,groupMember:i,device:o,deviceState:a,lastSeenConfig:u,setDeviceState:l}=r,{endpoint:c}=i,{t:s}=f(["groups","common"]),d=t.useMemo(()=>o.definition?C(o.definition.exposes,D):[],[o]),p=t.useCallback(async b=>await l(o.ieee_address,b),[o.ieee_address,l]),m=t.useCallback(async()=>await n(o.ieee_address,c),[o.ieee_address,c,n]);return e.jsx(F,{features:d,device:o,endpoint:c,deviceState:a,onChange:p,featureWrapperClass:N,lastSeenConfig:u,children:e.jsx(h,{onClick:m,className:"btn btn-square btn-outline btn-error btn-sm",title:s("remove_from_group"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:e.jsx(_,{icon:S})})})}),R=t.memo(({devices:r,group:n})=>{const i=x(s=>s.deviceStates),o=x(s=>s.bridgeInfo.config.advanced.last_seen),{sendMessage:a}=t.useContext(g),u=t.useCallback(async(s,d)=>await a("bridge/request/group/members/remove",{device:s,endpoint:d,group:n.id.toString()}),[a,n.id]),l=t.useCallback(async(s,d)=>{await a(`${s}/set`,d)},[a]),c=t.useMemo(()=>{const s=[];for(const d of n.members){const p=r.find(m=>m.ieee_address===d.ieee_address);p&&s.push(e.jsx("div",{className:"w-[23rem] card bg-base-200 rounded-box shadow-md",children:e.jsx(A,{removeDeviceFromGroup:u,device:p,groupMember:d,deviceState:i[p.friendly_name]??{},lastSeenConfig:o,setDeviceState:l})},`${d.ieee_address}-${d.endpoint}`))}return s},[n,r,o,i,u,l]);return e.jsx("div",{className:"flex flex-row flex-wrap justify-center gap-3",children:c})});function Z({group:r}){const n=x(i=>i.devices);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-row flex-wrap justify-evenly gap-4 mb-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx(E,{devices:n,group:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(k,{target:r})}),e.jsx("div",{className:"flex-1",children:e.jsx(w,{target:r,deviceState:{}})})]}),e.jsx(R,{devices:n,group:r})]})}export{Z as default};
@@ -1 +1 @@
1
- import{r as n,W as E,a as c,s as w,D as j,b as q,j as a,t as k,c as M,L as C}from"./index-BR27vzZL.js";import{A as I,D as T}from"./Availability-PU0rLtaR.js";import{D as A}from"./DeviceImage-C9XLyJZx.js";import{C as F}from"./CheckboxField-DL452sgi.js";import{T as H}from"./Table-YMU-GTDx.js";import{L as P}from"./LastSeen-dsZqv4y_.js";import{L as O}from"./Lqi-D-5JxyY1.js";import{M as V,V as B}from"./VendorLink-DuKl6tZD.js";import{P as R}from"./PowerSource-zOxQYLf3.js";import"./envs-CRUy-_iG.js";import"./DeviceControlEditName-CdOvAC3i.js";import"./InputField-BHHQh6No.js";import"./index-Dn4wgen8.js";import"./DebouncedInput-Oo6AI4sw.js";import"./format-DWdgGQ5D.js";import"./DisplayValue-BOG1_pD9.js";import"./snakeCase-Dntle38p.js";import"./_createCompounder-j5DHCRsI.js";function re(){const{sendMessage:r}=n.useContext(E),m=c(e=>e.devices),f=c(e=>e.deviceStates),t=c(e=>e.bridgeInfo.config),g=c(e=>e.availability),[o,D]=n.useState(w.get(j,!1)),[d,S]=n.useState(!1),{t:s}=q(["zigbee","common","availability"]),b=n.useMemo(()=>{const e=[];for(const i of m)if(i.type!=="Coordinator"&&(!o||!i.disabled)){const l=f[i.friendly_name]??{},p=t.devices[i.ieee_address]?.availability;if(d){if(i.power_source!=="Battery")continue;if("battery"in l){if(l.battery>=20)continue}else if("battery_state"in l){if(l.battery_state!=="low")continue}else if("battery_low"in l){if(!l.battery_low)continue}else continue}e.push({device:i,state:l,availabilityState:g[i.friendly_name]??{state:"offline"},availabilityEnabledForDevice:p!=null?!!p:void 0})}return e},[m,f,t.devices,g,o,d]),u=n.useCallback(e=>{w.set(j,e.target.checked),D(e.target.checked)},[]),v=n.useCallback(e=>{S(e.target.checked)},[]),y=n.useCallback(async(e,i,l)=>{await r("bridge/request/device/rename",{from:e,to:i,homeassistant_rename:l,last:void 0})},[r]),h=n.useCallback(async e=>{await r("bridge/request/device/configure",{id:e})},[r]),x=n.useCallback(async(e,i,l)=>{await r("bridge/request/device/remove",{id:e,force:i,block:l})},[r]),_=n.useCallback(async e=>{await r("bridge/request/device/interview",{id:e})},[r]),N=n.useMemo(()=>[{id:"friendly_name",header:s("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description].join(" "),cell:({row:{original:{device:e,state:i}}})=>a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar",children:a.jsx("div",{className:"h-11 w-11",style:{overflow:"visible"},children:a.jsx(A,{device:e,otaState:i.update?.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex-grow flex flex-col",children:[a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.description&&a.jsx("div",{className:"max-w-3xs text-xs opacity-50 truncate",title:e.description,children:e.description}),a.jsx("div",{className:"flex flex-row gap-1 mt-0.5 items-center",children:a.jsx("span",{className:"badge badge-soft badge-sm badge-ghost cursor-default",title:s("power"),children:a.jsx(R,{device:e,batteryPercent:i.battery,batteryState:i.battery_state,batteryLow:i.battery_low,showLevel:!0})})})]})]}),filterFn:"includesString"},{id:"ieee_address",header:s("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,k(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address})}),a.jsxs("div",{className:"flex flex-row gap-1",children:[a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:s("network_address_hex"),children:k(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:s("network_address_dec"),children:e.network_address})]})]}),filterFn:"includesString",sortingFn:(e,i)=>e.original.device.ieee_address.localeCompare(i.original.device.ieee_address)},{id:"model",header:s("model"),accessorFn:({device:e})=>[e.definition?.model,e.model_id,e.definition?.vendor,e.manufacturer].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(V,{device:e}),a.jsx("div",{className:"flex flex-row gap-1",children:a.jsx("span",{className:"badge badge-ghost badge-sm",title:s("manufacturer"),children:a.jsx(B,{device:e})})})]}),filterFn:"includesString"},{id:"type",header:s("type"),accessorFn:({device:e})=>s(e.type),cell:({row:{original:{device:e}}})=>s(e.type),enableColumnFilter:!1},{id:"lqi",header:s("lqi"),accessorFn:({state:e})=>e.linkquality,cell:({row:{original:{state:e}}})=>a.jsx(O,{value:e.linkquality}),enableColumnFilter:!1},{id:"last_seen",header:s("last_seen"),accessorFn:({state:e})=>M(e.last_seen,t.advanced.last_seen)?.getTime(),cell:({row:{original:{state:e}}})=>a.jsx(P,{lastSeen:e.last_seen,config:t.advanced.last_seen}),enableColumnFilter:!1},{id:"availability",header:s("availability:availability"),accessorFn:({availabilityState:e})=>e.state,cell:({row:{original:{device:e,availabilityState:i,availabilityEnabledForDevice:l}}})=>a.jsx(I,{disabled:e.disabled,availability:i,availabilityEnabledForDevice:l,availabilityFeatureEnabled:t.availability.enabled}),enableColumnFilter:!1,sortingFn:(e,i)=>e.original.device.disabled||e.original.availabilityEnabledForDevice===!1?1:i.original.device.disabled||i.original.availabilityEnabledForDevice===!1?-1:e.original.availabilityState.state.localeCompare(i.original.availabilityState.state)},{id:"actions",header:()=>a.jsxs(a.Fragment,{children:[a.jsx(F,{name:"battery_low_only",detail:s("common:battery_low_only"),onChange:v,checked:d,className:"checkbox checkbox-sm"}),a.jsx(F,{name:"hide_disabled",detail:s("common:hide_disabled"),onChange:u,checked:o,className:"checkbox checkbox-sm"})]}),cell:({row:{original:{device:e,state:i}}})=>a.jsx(T,{device:e,otaState:i.update?.state,homeassistantEnabled:t.homeassistant.enabled,renameDevice:y,removeDevice:x,configureDevice:h,interviewDevice:_}),enableSorting:!1,enableColumnFilter:!1}],[o,d,t.advanced.last_seen,t.availability.enabled,t.homeassistant.enabled,u,v,y,x,h,_,s]),L=n.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,type:!1,lqi:!0,last_seen:t.advanced.last_seen!=="disable",availability:t.availability.enabled||b.some(e=>e.availabilityEnabledForDevice),actions:!0}),[t.advanced.last_seen,t.availability.enabled,b]);return a.jsx(H,{id:"all-devices",columns:N,data:b,visibleColumns:L})}export{re as default};
1
+ import{r as n,W as E,a as c,s as w,D as j,b as q,j as a,t as k,c as M,L as C}from"./index-pzWGL0cK.js";import{A as I,D as T}from"./Availability-D1dLU87I.js";import{D as A}from"./DeviceImage-DL3nWYo3.js";import{C as F}from"./CheckboxField-DGeXHkdI.js";import{T as H}from"./Table-BpnEzjLb.js";import{L as P}from"./LastSeen-hXPhBVem.js";import{L as O}from"./Lqi-OIJirhdX.js";import{M as V,V as B}from"./VendorLink-DE4QCH9H.js";import{P as R}from"./PowerSource-pdM840jV.js";import"./envs-CRUy-_iG.js";import"./DeviceControlEditName-m82lnyr9.js";import"./InputField-D7F4rh-6.js";import"./index-DDBxKamc.js";import"./DebouncedInput-BSs73uaO.js";import"./format-Bbg3coak.js";import"./DisplayValue-E8sajbsC.js";import"./snakeCase-CUh04m27.js";import"./_createCompounder-CfkIxP4I.js";function re(){const{sendMessage:r}=n.useContext(E),m=c(e=>e.devices),f=c(e=>e.deviceStates),t=c(e=>e.bridgeInfo.config),g=c(e=>e.availability),[o,D]=n.useState(w.get(j,!1)),[d,S]=n.useState(!1),{t:s}=q(["zigbee","common","availability"]),b=n.useMemo(()=>{const e=[];for(const i of m)if(i.type!=="Coordinator"&&(!o||!i.disabled)){const l=f[i.friendly_name]??{},p=t.devices[i.ieee_address]?.availability;if(d){if(i.power_source!=="Battery")continue;if("battery"in l){if(l.battery>=20)continue}else if("battery_state"in l){if(l.battery_state!=="low")continue}else if("battery_low"in l){if(!l.battery_low)continue}else continue}e.push({device:i,state:l,availabilityState:g[i.friendly_name]??{state:"offline"},availabilityEnabledForDevice:p!=null?!!p:void 0})}return e},[m,f,t.devices,g,o,d]),u=n.useCallback(e=>{w.set(j,e.target.checked),D(e.target.checked)},[]),v=n.useCallback(e=>{S(e.target.checked)},[]),y=n.useCallback(async(e,i,l)=>{await r("bridge/request/device/rename",{from:e,to:i,homeassistant_rename:l,last:void 0})},[r]),h=n.useCallback(async e=>{await r("bridge/request/device/configure",{id:e})},[r]),x=n.useCallback(async(e,i,l)=>{await r("bridge/request/device/remove",{id:e,force:i,block:l})},[r]),_=n.useCallback(async e=>{await r("bridge/request/device/interview",{id:e})},[r]),N=n.useMemo(()=>[{id:"friendly_name",header:s("common:friendly_name"),accessorFn:({device:e})=>[e.friendly_name,e.description].join(" "),cell:({row:{original:{device:e,state:i}}})=>a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"avatar",children:a.jsx("div",{className:"h-11 w-11",style:{overflow:"visible"},children:a.jsx(A,{device:e,otaState:i.update?.state,disabled:e.disabled})})}),a.jsxs("div",{className:"flex-grow flex flex-col",children:[a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.friendly_name}),e.description&&a.jsx("div",{className:"max-w-3xs text-xs opacity-50 truncate",title:e.description,children:e.description}),a.jsx("div",{className:"flex flex-row gap-1 mt-0.5 items-center",children:a.jsx("span",{className:"badge badge-soft badge-sm badge-ghost cursor-default",title:s("power"),children:a.jsx(R,{device:e,batteryPercent:i.battery,batteryState:i.battery_state,batteryLow:i.battery_low,showLevel:!0})})})]})]}),filterFn:"includesString"},{id:"ieee_address",header:s("ieee_address"),accessorFn:({device:e})=>[e.ieee_address,k(e.network_address,4),e.network_address].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsx(C,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address})}),a.jsxs("div",{className:"flex flex-row gap-1",children:[a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:s("network_address_hex"),children:k(e.network_address,4)}),a.jsx("span",{className:"badge badge-ghost badge-sm cursor-default",title:s("network_address_dec"),children:e.network_address})]})]}),filterFn:"includesString",sortingFn:(e,i)=>e.original.device.ieee_address.localeCompare(i.original.device.ieee_address)},{id:"model",header:s("model"),accessorFn:({device:e})=>[e.definition?.model,e.model_id,e.definition?.vendor,e.manufacturer].join(" "),cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(V,{device:e}),a.jsx("div",{className:"flex flex-row gap-1",children:a.jsx("span",{className:"badge badge-ghost badge-sm",title:s("manufacturer"),children:a.jsx(B,{device:e})})})]}),filterFn:"includesString"},{id:"type",header:s("type"),accessorFn:({device:e})=>s(e.type),cell:({row:{original:{device:e}}})=>s(e.type),enableColumnFilter:!1},{id:"lqi",header:s("lqi"),accessorFn:({state:e})=>e.linkquality,cell:({row:{original:{state:e}}})=>a.jsx(O,{value:e.linkquality}),enableColumnFilter:!1},{id:"last_seen",header:s("last_seen"),accessorFn:({state:e})=>M(e.last_seen,t.advanced.last_seen)?.getTime(),cell:({row:{original:{state:e}}})=>a.jsx(P,{lastSeen:e.last_seen,config:t.advanced.last_seen}),enableColumnFilter:!1},{id:"availability",header:s("availability:availability"),accessorFn:({availabilityState:e})=>e.state,cell:({row:{original:{device:e,availabilityState:i,availabilityEnabledForDevice:l}}})=>a.jsx(I,{disabled:e.disabled,availability:i,availabilityEnabledForDevice:l,availabilityFeatureEnabled:t.availability.enabled}),enableColumnFilter:!1,sortingFn:(e,i)=>e.original.device.disabled||e.original.availabilityEnabledForDevice===!1?1:i.original.device.disabled||i.original.availabilityEnabledForDevice===!1?-1:e.original.availabilityState.state.localeCompare(i.original.availabilityState.state)},{id:"actions",header:()=>a.jsxs(a.Fragment,{children:[a.jsx(F,{name:"battery_low_only",detail:s("common:battery_low_only"),onChange:v,checked:d,className:"checkbox checkbox-sm"}),a.jsx(F,{name:"hide_disabled",detail:s("common:hide_disabled"),onChange:u,checked:o,className:"checkbox checkbox-sm"})]}),cell:({row:{original:{device:e,state:i}}})=>a.jsx(T,{device:e,otaState:i.update?.state,homeassistantEnabled:t.homeassistant.enabled,renameDevice:y,removeDevice:x,configureDevice:h,interviewDevice:_}),enableSorting:!1,enableColumnFilter:!1}],[o,d,t.advanced.last_seen,t.availability.enabled,t.homeassistant.enabled,u,v,y,x,h,_,s]),L=n.useMemo(()=>({friendly_name:!0,ieee_address:!0,model:!0,type:!1,lqi:!0,last_seen:t.advanced.last_seen!=="disable",availability:t.availability.enabled||b.some(e=>e.availabilityEnabledForDevice),actions:!0}),[t.advanced.last_seen,t.availability.enabled,b]);return a.jsx(H,{id:"all-devices",columns:N,data:b,visibleColumns:L})}export{re as default};
@@ -1 +1 @@
1
- import{r as n,b as c,j as r}from"./index-BR27vzZL.js";const u=n.memo(s=>{const{value:t,name:a}=s,{t:e}=c("values");switch(a){case"contact":return e(t?"closed":"open");case"occupancy":return e(t?"occupied":"clear");case"water_leak":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("leaking")}):e("clear");case"tamper":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("tampered")}):e("clear");case"supported":return e(t?"supported":"not_supported");default:return e(t?"true":"false")}}),o=n.memo(s=>{const{t}=c("values"),{value:a}=s;switch(typeof a){case"boolean":return r.jsx(u,{...s});case"undefined":return"N/A";case"object":return a===null?t("null"):JSON.stringify(a);case"string":return a===""?r.jsx("span",{className:"text-xs opacity-50",children:t("empty_string")}):a;default:return JSON.stringify(a)}});export{o as D};
1
+ import{r as n,b as c,j as r}from"./index-pzWGL0cK.js";const u=n.memo(s=>{const{value:t,name:a}=s,{t:e}=c("values");switch(a){case"contact":return e(t?"closed":"open");case"occupancy":return e(t?"occupied":"clear");case"water_leak":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("leaking")}):e("clear");case"tamper":return t?r.jsx("span",{className:"text-error animate-pulse",children:e("tampered")}):e("clear");case"supported":return e(t?"supported":"not_supported");default:return e(t?"true":"false")}}),o=n.memo(s=>{const{t}=c("values"),{value:a}=s;switch(typeof a){case"boolean":return r.jsx(u,{...s});case"undefined":return"N/A";case"object":return a===null?t("null"):JSON.stringify(a);case"string":return a===""?r.jsx("span",{className:"text-xs opacity-50",children:t("empty_string")}):a;default:return JSON.stringify(a)}});export{o as D};
@@ -1 +1 @@
1
- import{b as n,j as e,F as o,ck as r}from"./index-BR27vzZL.js";import"./envs-CRUy-_iG.js";const t=[e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/Nerivec",className:"h-10",children:e.jsx("img",{alt:"Nerivec",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Nerivec&emoji=☕&slug=Nerivec&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Nerivec",children:[e.jsx(o,{icon:r}),"Sponsor Nerivec on Github"]})]},"Nerivec"),e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",className:"h-10",children:e.jsx("img",{alt:"koenkk",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Koenkk&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Koenkk",children:[e.jsx(o,{icon:r}),"Sponsor Koenkk on Github"]})]},"koenkk")];function i(){const{t:s}=n("settings");return e.jsxs("div",{className:"flex flex-col gap-3 items-center",children:[s("donation_text"),t.sort(()=>Math.random()-.5)]})}export{i as default};
1
+ import{b as n,j as e,F as o,ck as r}from"./index-pzWGL0cK.js";import"./envs-CRUy-_iG.js";const t=[e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/Nerivec",className:"h-10",children:e.jsx("img",{alt:"Nerivec",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Nerivec&emoji=☕&slug=Nerivec&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Nerivec",children:[e.jsx(o,{icon:r}),"Sponsor Nerivec on Github"]})]},"Nerivec"),e.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center justify-items-center",children:[e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",className:"h-10",children:e.jsx("img",{alt:"koenkk",crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks Koenkk&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff",className:"h-10"})}),e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",href:"https://github.com/sponsors/Koenkk",children:[e.jsx(o,{icon:r}),"Sponsor Koenkk on Github"]})]},"koenkk")];function i(){const{t:s}=n("settings");return e.jsxs("div",{className:"flex flex-col gap-3 items-center",children:[s("donation_text"),t.sort(()=>Math.random()-.5)]})}export{i as default};
@@ -1 +1 @@
1
- import{r,b as h,j as t}from"./index-BR27vzZL.js";import{S as x}from"./SelectField-BMt7uZuS.js";const j=r.memo(l=>{const{value:s,values:n,disabled:c,onChange:p,label:d,...u}=l,{t:a}=h("common"),i=n.size===1,m=r.useMemo(()=>{const e=[];for(const o of n)e.push(t.jsx("option",{value:o,children:o},o));return e},[n]);return t.jsxs(x,{name:"endpoint_picker",label:d,value:s,onChange:e=>p(e.target.value),title:i?a("the_only_endpoint"):"",disabled:s&&i||c,...u,children:[t.jsx("option",{value:"",disabled:!0,children:a("select_endpoint")}),m]})});export{j as E};
1
+ import{r,b as h,j as t}from"./index-pzWGL0cK.js";import{S as x}from"./SelectField-Do2InTFr.js";const j=r.memo(l=>{const{value:s,values:n,disabled:c,onChange:p,label:d,...u}=l,{t:a}=h("common"),i=n.size===1,m=r.useMemo(()=>{const e=[];for(const o of n)e.push(t.jsx("option",{value:o,children:o},o));return e},[n]);return t.jsxs(x,{name:"endpoint_picker",label:d,value:s,onChange:e=>p(e.target.value),title:i?a("the_only_endpoint"):"",disabled:s&&i||c,...u,children:[t.jsx("option",{value:"",disabled:!0,children:a("select_endpoint")}),m]})});export{j as E};
@@ -0,0 +1 @@
1
+ import{b as c,r as t,W as u,a as l,j as r}from"./index-pzWGL0cK.js";import{u as m}from"./shallow-BvOtxUf5.js";import{F as x,a as f,g}from"./Feature-BzaXaUES.js";import"./envs-CRUy-_iG.js";import"./DisplayValue-E8sajbsC.js";import"./_createCompounder-CfkIxP4I.js";function h(o){const{device:e}=o,{t:i}=c(["exposes"]),{sendMessage:a}=t.useContext(u),n=l(m(s=>s.deviceStates[e.friendly_name]??{})),p=t.useCallback(async s=>{await a(`${e.ieee_address}/set`,s)},[a,e.ieee_address]),d=t.useCallback(async s=>{await a(`${e.ieee_address}/get`,s)},[a,e.ieee_address]);return e.definition?.exposes?.length?r.jsx("div",{className:"list bg-base-100",children:e.definition.exposes.map(s=>r.jsx(x,{feature:s,device:e,deviceState:n,onChange:p,onRead:d,featureWrapperClass:f,parentFeatures:[]},g(s)))}):i("empty_exposes_definition")}export{h as default};
@@ -0,0 +1 @@
1
+ import{a9 as le,aR as rr,aS as tr,aT as ar,aU as nr,l as sr,aV as or,aW as cr,aX as ir,aY as lr,aZ as ur,aI as ue,a_ as fe,a$ as fr,b0 as mr,b1 as hr,b2 as dr,b3 as pr,b4 as xr,b5 as me,b6 as br,b7 as he,b8 as gr,b9 as yr,ba as z,bb as de,bc as pe,Y as _r,bd as Cr,be as vr,bf as jr,bg as Sr,bh as Tr,bi as kr,bj as Er,bk as Rr,bl as Nr,bm as Ar,bn as wr,bo as Fr,bp as qr,bq as Ir,br as $r,bs as Br,bt as Vr,bu as Mr,bv as Gr,bw as w,aK as Or,bx as xe,by as Ur,bz as Hr,bA as zr,bB as Lr,bC as Be,bD as Pr,bE as Ve,bF as Wr,bG as Dr,bH as Xr,bI as Yr,r as l,j as o,b as A,B as S,F as ie,bJ as Jr,ap as Kr,bK as Qr,bL as Zr,J as et}from"./index-pzWGL0cK.js";import{D as U}from"./DisplayValue-E8sajbsC.js";import{r as Me,a as Ge,b as rt}from"./_createCompounder-CfkIxP4I.js";var L,be;function tt(){if(be)return L;be=1;function e(t,a,r){var s=-1,n=t.length;a<0&&(a=-a>n?0:n+a),r=r>n?n:r,r<0&&(r+=n),n=a>r?0:r-a>>>0,a>>>=0;for(var u=Array(n);++s<n;)u[s]=t[s+a];return u}return L=e,L}var P,ge;function at(){if(ge)return P;ge=1;var e=tt();function t(a,r,s){var n=a.length;return s=s===void 0?n:s,!r&&s>=n?a:e(a,r,s)}return P=t,P}var W,ye;function Oe(){if(ye)return W;ye=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",a="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",s=t+a+r,n="\\ufe0e\\ufe0f",u="\\u200d",f=RegExp("["+u+e+s+n+"]");function i(c){return f.test(c)}return W=i,W}var D,_e;function nt(){if(_e)return D;_e=1;function e(t){return t.split("")}return D=e,D}var X,Ce;function st(){if(Ce)return X;Ce=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",a="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",s=t+a+r,n="\\ufe0e\\ufe0f",u="["+e+"]",f="["+s+"]",i="\\ud83c[\\udffb-\\udfff]",c="(?:"+f+"|"+i+")",h="[^"+e+"]",d="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",p="\\u200d",x=c+"?",v="["+n+"]?",k="(?:"+p+"(?:"+[h,d,m].join("|")+")"+v+x+")*",E=v+x+k,b="(?:"+[h+f+"?",f,d,m,u].join("|")+")",g=RegExp(i+"(?="+i+")|"+b+E,"g");function _(j){return j.match(g)||[]}return X=_,X}var Y,ve;function ot(){if(ve)return Y;ve=1;var e=nt(),t=Oe(),a=st();function r(s){return t(s)?a(s):e(s)}return Y=r,Y}var J,je;function ct(){if(je)return J;je=1;var e=at(),t=Oe(),a=ot(),r=Me();function s(n){return function(u){u=r(u);var f=t(u)?a(u):void 0,i=f?f[0]:u.charAt(0),c=f?e(f,1).join(""):u.slice(1);return i[n]()+c}}return J=s,J}var K,Se;function Ue(){if(Se)return K;Se=1;var e=ct(),t=e("toUpperCase");return K=t,K}var Q,Te;function it(){if(Te)return Q;Te=1;var e=Me(),t=Ue();function a(r){return t(e(r).toLowerCase())}return Q=a,Q}var Z,ke;function lt(){if(ke)return Z;ke=1;var e=it(),t=Ge(),a=t(function(r,s,n){return s=s.toLowerCase(),r+(n?e(s):s)});return Z=a,Z}var ut=lt();const ft=le(ut);var ee,Ee;function mt(){if(Ee)return ee;Ee=1;var e=Ge(),t=Ue(),a=e(function(r,s,n){return r+(n?" ":"")+t(s)});return ee=a,ee}var ht=mt();const dt=le(ht),pt={battery_low:w,humidity:Gr,illuminance:z,pressure:Mr,co2:Vr,voltage:Br,state:$r,brightness:z,occupancy:Ir,presence:qr,current:Fr,power:wr,energy:Ar,frequency:Nr,tamper:Rr,smoke:Er,radiation_dose_per_hour:kr,radioactive_events_per_minute:Tr,power_factor:Sr,mode:jr,sound:vr,position:Cr,alarm:_r,color_xy:pe,color_hs:pe,color_temp:de,color_temp_startup:de,illuminance_lux:z,soil_moisture:yr,water_leak:me,week:gr,workdays_schedule:he,holidays_schedule:he,away_mode:br,vibration:me,power_outage_count:xr,action:pr,angle_x:dr,angle_y:hr,angle_z:mr,side:fr,humidity_alarm:fe,temperature_alarm:fe,approach_distance:ue,distance:ue,trigger_count:ur,level_config:lr,station:ir,effect:cr,linkquality:or,system_mode:sr,gradient:nr,sensitivity:ar,test:tr,flow:rr},xt=(e,t)=>{let a=w;return e==null||(e>=85?(a=Be,t.push("text-success")):e>=65?a=Pr:e>=40?a=Ve:e>=20?a=Wr:(a=w,t.push("text-error"))),a},bt=(e,t)=>{let a=w;switch(e){case"high":{a=Be,t.push("text-success");break}case"medium":{a=Ve;break}case"low":{a=w,t.push("text-error");break}}return a},gt=(e,t,a)=>{let r=xe;return e==null||(t==="°F"&&(e=(e-32)/1.8),e>=30?(r=Ur,a.push("text-error")):e>=25?r=Hr:e>=20?r=zr:e>=15?r=Lr:e<5&&(r=xe,a.push("text-info"))),r},yt=(e,t,a)=>{let r;const s=[],n={};switch(e){case"battery":{r=xt(t,s);break}case"battery_state":{r=bt(t,s);break}case"battery_low":{t&&s.push("text-error");break}case"device_temperature":case"temperature":case"local_temperature":{r=gt(t,a,s);break}case"humidity":{t!=null&&t>60&&s.push("text-info");break}case"contact":{r=t?Xr:Yr,t||s.push("text-primary");break}case"occupancy":{t&&(s.push("text-warning"),n.beat=!0);break}case"presence":{t&&(s.push("text-warning"),n.beat=!0);break}case"tamper":{t&&(s.push("text-error"),n.beatFade=!0,n.shake=!0);break}case"water_leak":{t&&(s.push("text-primary"),n.beatFade=!0);break}case"vibration":{t&&(s.push("text-primary"),n.shake=!0);break}default:{e.includes("cyclic")&&(r=Dr);break}}return r?[r,s.join(" "),n]:(r=pt[e],r?[r,s.join(" "),n]:[Or,"opacity-0",{}])},He=e=>`${e.type}-${e.name}-${e.label}-${e.property}-${e.access}-${e.category}-${e.endpoint}`;var C=(e=>(e[e.STATE=1]="STATE",e[e.SET=2]="SET",e[e.GET=4]="GET",e[e.STATE_SET=3]="STATE_SET",e[e.STATE_GET=5]="STATE_GET",e[e.ALL=7]="ALL",e))(C||{});const F=l.memo(({feature:e,deviceValue:t})=>o.jsxs("div",{children:[e.property&&o.jsx("span",{className:"font-bold",children:o.jsx(U,{value:t,name:e.name})}),"unit"in e&&o.jsx("span",{className:"text-xs ms-1",children:e.unit})]})),q=l.memo(e=>o.jsxs("div",{className:"alert alert-warning",role:"alert",children:["Unknown access ",o.jsx("pre",{children:e.feature.access})]})),_t=l.memo(e=>{const{feature:{access:t=C.SET,name:a,property:r,value_off:s,value_on:n},deviceValue:u,onChange:f,minimal:i}=e,{t:c}=A("zigbee"),h=l.useCallback(m=>f(r?{[r]:m}:m),[r,f]),d=l.useCallback(m=>{const p=m.target.checked?n:s;f(r?{[r]:p}:p)},[n,s,r,f]);if(t&C.SET){const m=u!=null,p=!i||i&&!m;return o.jsxs("div",{children:[p&&o.jsx(S,{className:"btn btn-link",item:s,onClick:h,children:o.jsx(U,{value:s,name:a})}),m?o.jsx("input",{className:"toggle",type:"checkbox",checked:u===n,onChange:d}):o.jsx("span",{title:c("unknown"),children:o.jsx(ie,{icon:Jr})}),p&&o.jsx(S,{className:"btn btn-link",item:n,onClick:h,children:o.jsx(U,{value:n,name:a})})]})}return t&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),R=l.memo(e=>{const{feature:t,onChange:a,parentFeatures:r,onRead:s,device:n,deviceState:u,featureWrapperClass:f,minimal:i,endpointSpecific:c,steps:h}=e,{type:d,property:m}=t,[p,x]=l.useState({}),{t:v}=A(["composite","common"]),k=l.useMemo(()=>Kr({},u,p),[u,p]),E="features"in t&&t.features||[],b=l.useMemo(()=>{if(d==="composite"&&r!==void 0){if(r.length===0)return!0;if(r.length===1){const y=r[0].type;return y!=null&&y!=="composite"&&y!=="list"}}return!1},[d,r]);l.useEffect(()=>{x({})},[n.ieee_address]);const g=l.useCallback(y=>{x({...p,...y}),b||a(d==="composite"&&m?{[m]:{...p,...y}}:y)},[p,d,m,b,a]),_=l.useCallback(()=>{const y={...u,...p};a(m?{[m]:y}:y)},[m,a,p,u]),j=l.useCallback(y=>{s?.(d==="composite"&&m?{[m]:y}:y)},[s,d,m]);return o.jsxs(o.Fragment,{children:[E.map(y=>o.jsx(er,{feature:y,parentFeatures:r??[],device:n,deviceState:k,onChange:g,onRead:j,featureWrapperClass:f,minimal:i,endpointSpecific:c,steps:h?.[y.name]},He(y))),b&&o.jsx("div",{className:"self-end float-right",children:o.jsx(S,{className:`btn btn-primary ${i?"btn-sm":""}`,onClick:_,children:v("common:apply")})})]})}),Ct=l.memo(e=>o.jsx(R,{...e}));var re,Re;function vt(){if(Re)return re;Re=1;function e(t,a,r){return t===t&&(r!==void 0&&(t=t<=r?t:r),a!==void 0&&(t=t>=a?t:a)),t}return re=e,re}var te,Ne;function jt(){if(Ne)return te;Ne=1;var e=/\s/;function t(a){for(var r=a.length;r--&&e.test(a.charAt(r)););return r}return te=t,te}var ae,Ae;function St(){if(Ae)return ae;Ae=1;var e=jt(),t=/^\s+/;function a(r){return r&&r.slice(0,e(r)+1).replace(t,"")}return ae=a,ae}var ne,we;function Tt(){if(we)return ne;we=1;var e=St(),t=Qr(),a=rt(),r=NaN,s=/^[-+]0x[0-9a-f]+$/i,n=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt;function i(c){if(typeof c=="number")return c;if(a(c))return r;if(t(c)){var h=typeof c.valueOf=="function"?c.valueOf():c;c=t(h)?h+"":h}if(typeof c!="string")return c===0?c:+c;c=e(c);var d=n.test(c);return d||u.test(c)?f(c.slice(2),d?2:8):s.test(c)?r:+c}return ne=i,ne}var se,Fe;function kt(){if(Fe)return se;Fe=1;var e=vt(),t=Tt();function a(r,s,n){return n===void 0&&(n=s,s=void 0),n!==void 0&&(n=t(n),n=n===n?n:0),s!==void 0&&(s=t(s),s=s===s?s:0),e(t(r),s,n)}return se=a,se}var Et=kt();const T=le(Et),Rt=[.412453,.35758,.180423,.212671,.71516,.072169,.019334,.119193,.950227],Nt=[3.2404813432005266,-1.5371515162713183,-.49853632616888777,-.9692549499965684,1.8759900014898907,.041555926558292815,.05564663913517715,-.20404133836651123,1.0573110696453443],ze=.42,Le=.0031308,Pe=12.92,H=.055,G=e=>e<=Le?Pe*e:(1+H)*e**ze-H,At=1/ze,wt=G(Le),Ft=1/Pe,oe=e=>e<=wt?e*Ft:((e+H)/(1+H))**At,We=(e,t)=>{const a=[0,0,0];for(let r=0;r<3;r++){a[r]=0;for(let s=0;s<3;s++)a[r]+=t[r*3+s]*e[s]}return a},qe=(e,t,a)=>{const r=[oe(e),oe(t),oe(a)];return We(r,Rt)},qt=(e,t,a)=>{const r=We([e,t,a],Nt);return[G(r[0]),G(r[1]),G(r[2])]},De=(e,t,a)=>{const r=1-e-t;return qt(a/t*e,a,a/t*r)},Xe=(e,t,a=10)=>{let r=1;for(let s=0;s<a;s++){const n=Math.max(...De(e,t,r));r=r/n}return r},I=(e,t,a)=>{if(e/=255,t/=255,a/=255,e<1e-12&&t<1e-12&&a<1e-12){const[f,i,c]=qe(1,1,1),h=f+i+c;return[f/h,i/h,0]}const[r,s,n]=qe(e,t,a),u=r+s+n;return[r/u,s/u,s]},It=(e,t,a)=>{a===void 0&&(a=Xe(e,t));const[r,s,n]=De(e,t,a);return[T(r*255,0,255),T(s*255,0,255),T(n*255,0,255)]},$=(e,t,a)=>{e/=255,t/=255,a/=255;const r=Math.max(e,t,a),s=r-Math.min(e,t,a),n=s?(r===e?(t-a)/s+(t<a?6:0):r===t?2+(a-e)/s:4+(e-t)/s)*60:0,u=r?s/r*100:0,f=r*100;return[T(n,0,360),T(u,0,100),T(f,0,100)]},$t=(e,t,a)=>{t/=100,a/=100;const r=~~(e/60),s=e/60-r,n=a*(1-t),u=a*(1-t*s),f=a*(1-t*(1-s)),i=r%6,c=[a,u,n,n,f,a][i]*255,h=[f,a,a,u,n,n][i]*255,d=[n,n,f,a,a,u][i]*255;return[T(c,0,255),T(h,0,255),T(d,0,255)]},B=(e,t,a)=>{const[r,s,n]=[e,t,a].map(u=>Math.round(u).toString(16).padStart(2,"0"));return`#${r}${s}${n}`},Bt=e=>(e=e.slice(1),Array.from({length:3}).map((t,a)=>Number.parseInt(e.slice(a*2,a*2+2),16))),N=(e,t)=>{switch(t){case"color_xy":{const{x:a=.313,y:r=.329,Y:s=Xe(a,r===0?.329:r)}=e,n=r===0?[255,255,255]:It(a,r,s);return{color_rgb:n,color_hs:$(...n),color_xy:[a,r,s],hex:B(...n)}}case"color_hs":{const{hue:a=0,saturation:r=0}=e,s=100,n=$t(a,r,s);return{color_rgb:n,color_hs:[a,r,s],color_xy:I(...n),hex:B(...n)}}case"color_rgb":{const{r:a=255,g:r=255,b:s=255}=e;return{color_rgb:[a,r,s],color_hs:$(a,r,s),color_xy:I(a,r,s),hex:B(a,r,s)}}case"hex":{const a=e.hex,r=Bt(a);return{color_rgb:r,color_hs:$(...r),color_xy:I(...r),hex:a}}default:{const a=[255,255,255];return{color_rgb:a,color_hs:$(...a),color_xy:I(...a),hex:B(...a)}}}},Ie=(e,t)=>{switch(t){case"color_xy":return{x:e.color_xy[0],y:e.color_xy[1]};case"color_hs":return{hue:e.color_hs[0],saturation:e.color_hs[1]};case"color_rgb":return{r:e.color_rgb[0],g:e.color_rgb[1],b:e.color_rgb[2]};case"hex":return{hex:e.hex}}},Ye=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)}%`,Je=e=>`${e[0].toFixed(0)}, ${e[1].toFixed(0)}, ${e[2].toFixed(0)}`,Ke=e=>e,$e=e=>({color_xy:Ye(e.color_xy),color_hs:O(e.color_hs),color_rgb:Je(e.color_rgb),hex:Ke(e.hex)}),Vt=e=>{const t=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((a,r)=>+(t[r]??0))},Mt=e=>{const t=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((a,r)=>T(+(t[r]??0),0,r?100:360))},Gt=e=>{const t=e.match(/\d+(\.\d+)?/gu)??[];return Array.from({length:3}).map((a,r)=>T(+(t[r]??0),0,255))},ce=(e,t)=>{switch(t){case"color_xy":{const a=Vt(e);return N({x:a[0],y:a[1]},"color_xy")}case"color_hs":{const a=Mt(e);return N({hue:a[0],saturation:a[1]},"color_hs")}case"color_rgb":{const a=Gt(e);return N({r:a[0],g:a[1],b:a[2]},"color_rgb")}case"hex":return N({hex:e},"hex")}},Ot="linear-gradient(to right, white, transparent)",Ut="linear-gradient(to right, rgb(255, 0, 0), rgb(255, 255, 0), rgb(0, 255, 0), rgb(0, 255, 255), rgb(0, 0, 255), rgb(255, 0, 255), rgb(255, 0, 0))",V=l.memo(({label:e,...t})=>o.jsxs("label",{className:"input",children:[e,o.jsx("input",{type:"text",className:"grow",...t})]})),Qe=l.memo(e=>{const{onChange:t,value:a={},format:r,minimal:s}=e,[n,u]=l.useState(N(a,r)),[f,i]=l.useState($e(n)),[c,h]=l.useState({color_rgb:!1,color_hs:!1,color_xy:!1,hex:!1});l.useEffect(()=>{const b=N(a,r);u(b),i($e(b))},[a,r]),l.useEffect(()=>{if(!c.color_xy){const b=Ye(n.color_xy);i(g=>({...g,color_xy:b}))}},[c.color_xy,n.color_xy]),l.useEffect(()=>{if(!c.color_hs){const b=O(n.color_hs);i(g=>({...g,color_hs:b}))}},[c.color_hs,n.color_hs]),l.useEffect(()=>{if(!c.color_rgb){const b=Je(n.color_rgb);i(g=>({...g,color_rgb:b}))}},[c.color_rgb,n.color_rgb]),l.useEffect(()=>{if(!c.hex){const b=Ke(n.hex);i(g=>({...g,hex:b}))}},[c.hex,n.hex]);const d=l.useCallback(b=>{if(b.target.value){const g=Array.from(n.color_hs);g[1]=b.target.valueAsNumber;const _=O(g);i(j=>({...j,color_hs:_})),u(ce(_,"color_hs"))}},[n.color_hs]),m=l.useCallback(b=>{if(b.target.value){const g=Array.from(n.color_hs),_=g[1];g[1]=_===0?100:_,g[0]=b.target.valueAsNumber;const j=O(g);i(y=>({...y,color_hs:j})),u(ce(j,"color_hs"))}},[n.color_hs]),p=l.useCallback(b=>{const{value:g,name:_}=b.target;i(j=>({...j,[_]:g})),u(ce(g,_))},[]),x=l.useCallback(b=>{h(g=>({...g,[b.target.name]:!0}))},[]),v=l.useCallback(b=>{h(g=>({...g,[b.target.name]:!1})),t(Ie(n,r))},[n,r,t]),k=l.useCallback(()=>{t(Ie(n,r))},[n,r,t]),E=l.useMemo(()=>`hsl(${n.color_hs[0]}, 100%, 50%)`,[n.color_hs[0]]);return o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:o.jsx("div",{className:`w-full${s?" max-w-xs":""}`,children:o.jsx("input",{type:"range",min:0,max:100,value:n.color_hs[1],className:`range [--range-bg:transparent] [--range-fill:0] w-full${s?" range-xs ":""}`,style:{backgroundImage:Ot,backgroundColor:E},onChange:d,onTouchEnd:k,onMouseUp:k})})}),o.jsx("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:o.jsx("div",{className:`w-full${s?" max-w-xs":""}`,children:o.jsx("input",{type:"range",min:0,max:360,value:n.color_hs[0],className:`range [--range-bg:transparent] [--range-fill:0] w-full${s?" range-xs ":""}`,style:{backgroundImage:Ut},onChange:m,onTouchEnd:k,onMouseUp:k})})}),!s&&o.jsxs("div",{className:"flex flex-row flex-wrap gap-2 justify-around",children:[o.jsx(V,{label:"hex",name:"hex",value:f.hex,onChange:p,onFocus:x,onBlur:v}),o.jsx(V,{label:"rgb",name:"color_rgb",value:f.color_rgb,onChange:p,onFocus:x,onBlur:v}),o.jsx(V,{label:"hsv",name:"color_hs",value:f.color_hs,onChange:p,onFocus:x,onBlur:v}),o.jsx(V,{label:"xyY",name:"color_xy",value:f.color_xy,onChange:p,onFocus:x,onBlur:v})]})]})}),Ht=l.memo(e=>{const{deviceValue:t,feature:{name:a,features:r,property:s},onChange:n,minimal:u}=e,f=l.useMemo(()=>{const c={},h=t!=null&&typeof t=="object"?t:{};for(const d of r){const m=Number.parseFloat(h[d.name]);c[d.name]=Number.isNaN(m)?0:m}return c},[t,r]),i=l.useCallback(c=>n({[s??"color"]:c}),[s,n]);return o.jsx(Qe,{onChange:i,value:f,format:a,minimal:u})}),zt={position:[0,25,50,75,100].map(e=>({value:e,name:`${e}`})),tilt:[0,25,50,75,100].map(e=>({value:e,name:`${e}`}))},Lt=l.memo(e=>o.jsx(R,{...e,steps:zt}));function M(e){return typeof e!="object"}const Ze=l.memo(e=>{const{onChange:t,values:a,value:r,minimal:s}=e,{t:n}=A("common"),u=M(r),f=l.useCallback(i=>{const c=a.find(h=>M(h)?h===i.target.value:h.value===Number.parseInt(i.target.value,10));t(c)},[a,t]);return s?o.jsxs("select",{className:"select",onChange:f,value:u?r:r?.value,children:[o.jsx("option",{value:"",disabled:!0,children:n("select_value")}),a.map(i=>{const c=M(i);return o.jsx("option",{value:c?i:i.value,children:c?i:i.name},c?i:i.name)})]}):o.jsx("div",{className:"join join-vertical lg:join-horizontal",children:a.map(i=>{const c=M(i),h=c?i===r:i.value===(u?r:r?.value);return o.jsx(S,{className:`btn btn-soft btn-sm join-item${h?" btn-active":""}`,onClick:d=>t(d),item:c?i:i.value,title:c?`${i}`:i.description,children:c?o.jsx(U,{value:i,name:""}):i.name},c?i:i.name)})})}),Pt=6,Wt=l.memo(e=>{const{onChange:t,feature:{access:a=C.SET,values:r,property:s},deviceValue:n,minimal:u}=e;return a&C.SET?o.jsx(Ze,{onChange:f=>t(s?{[s]:f}:f),values:r,value:n!=null&&(typeof n=="string"||typeof n=="number"||typeof n=="object")?n:"",minimal:u||r.length>Pt}):a&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),Dt=l.memo(e=>o.jsx(R,{...e})),Xt=l.memo(e=>{const{minimal:t,onChange:a,feature:{length_min:r,length_max:s,property:n},deviceValue:u}=e,{t:f}=A(["gradient","common"]),[i,c]=l.useState(r>0?Array(r).fill("#ffffff"):[]),[h,d]=l.useState(!1),[m,p]=l.useState(!1);l.useEffect(()=>{u&&Array.isArray(u)&&u.length>0&&c(u)},[u]),l.useEffect(()=>{d(i.length<s),p(i.length>r)},[i,r,s]);const x=l.useCallback((b,g)=>{c(_=>{const j=Array.from(_);return j[b]=g,j})},[]),v=l.useCallback(()=>{c(b=>[...b,"#ffffff"])},[]),k=l.useCallback(b=>{c(g=>{const _=Array.from(g);return _.splice(b,1),_})},[]),E=l.useCallback(()=>a({[n??"gradient"]:i}),[i,n,a]);return o.jsxs("div",{className:"flex flex-col gap-2",children:[i.map((b,g)=>o.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center",children:[o.jsx(Qe,{onChange:_=>{x(g,_.hex)},value:{hex:b},format:"hex",minimal:t}),m&&o.jsx(S,{className:"btn btn-sm btn-error",onClick:()=>k(g),children:"-"})]},`${b}-${g}`)),h&&o.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:o.jsx(S,{className:"btn btn-sm btn-success",onClick:v,children:"+"})}),o.jsx("div",{children:o.jsx(S,{className:`btn btn-primary ${t?"btn-sm":""}`,onClick:E,children:f("common:apply")})})]})}),Yt={brightness:[0,25,50,75,100].map(e=>({value:Zr(e,[0,100],[0,255]),name:`${e}%`})),color_temp:[1e3,2e3,3e3,4e3,5e3,6500].map(e=>({value:1e6/e,name:`${e}K`}))},Jt=l.memo(e=>o.jsx(R,{...e,steps:Yt}));function Kt(e){return e.type==="composite"&&(e.name==="color_xy"||e.name==="color_hs")}const Qt=l.memo(e=>{const{t}=A("zigbee"),{children:a,feature:r,deviceValue:s,onRead:n,endpointSpecific:u}=e,f=r.unit,i=l.useMemo(()=>yt(r.name,s,f),[f,r.name,s]),c=l.useMemo(()=>n!==void 0&&(!!(r.property&&r.access&C.GET)||Kt(r)),[r,n]),h=e.parentFeatures?.[e.parentFeatures.length-1],d=r.name==="state"?r.property:r.name;let m=r.label||dt(ft(d));h?.label&&r.name==="state"&&h.type!=="light"&&h.type!=="switch"&&(m=`${h.label} ${r.label.charAt(0).toLowerCase()}${r.label.slice(1)}`);const p=l.useCallback(x=>{x.property&&n?.({[x.property]:""})},[n]);return o.jsxs("div",{className:"list-row p-3",children:[o.jsx("div",{children:o.jsx(ie,{icon:i[0],fixedWidth:!0,className:i[1],...i[2],size:"2xl"})}),o.jsxs("div",{children:[o.jsxs("div",{title:d,children:[m,!u&&r.endpoint?` (${t("endpoint")}: ${r.endpoint})`:""]}),o.jsx("div",{className:"text-xs font-semibold opacity-60",children:r.description})]}),o.jsx("div",{className:"list-col-wrap flex flex-col gap-2",children:a}),c&&o.jsx(S,{item:r,onClick:p,className:"btn btn-xs btn-square btn-primary",children:o.jsx(ie,{icon:et})})]})}),Zt=l.memo(e=>{const{onChange:t,value:a,feature:r,parentFeatures:s}=e,[n,u]=l.useState(a);l.useEffect(()=>{u(a)},[a]);const f=l.useCallback((h,d)=>{const m=Array.from(n);typeof h=="object"&&h!=null&&(h={...n[d],...h}),m[d]=h??"",u(m),t(m)},[n,t]),i=l.useCallback(h=>{const d=Array.from(n);d.splice(h,1),u(d),t(d)},[n,t]),c=l.useCallback(()=>u(h=>[...h,r.type==="composite"?{}:""]),[r.type]);return n.length===0?o.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:o.jsx(S,{className:"btn btn-success col-1",onClick:c,children:"+"})}):n.map((h,d)=>o.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[o.jsx(er,{feature:r,device:{},deviceState:h,onChange:m=>f(m,d),featureWrapperClass:Qt,parentFeatures:s}),o.jsxs("div",{className:"join join-vertical lg:join-horizontal",children:[o.jsx(S,{item:d,className:"btn btn-sm btn-error btn-square join-item",onClick:i,children:"-"}),n.length-1===d&&o.jsx(S,{className:"btn btn-sm btn-success btn-square join-item",onClick:c,children:"+"})]})]},d))}),ea=l.memo(e=>{const{t}=A(["list","common"]),{feature:a,minimal:r,parentFeatures:s,onChange:n,deviceValue:u}=e,[f,i]=l.useState([]),c=l.useMemo(()=>{if(s!==void 0){if(s.length===0)return!0;if(s.length===1){const x=s[0].type;return x!=null&&x!=="composite"&&x!=="list"}}return!1},[s]);l.useEffect(()=>{u?Array.isArray(u)?i(u):a.property&&typeof u=="object"?i(u[a.property]??[]):i([]):i([])},[a.property,u]);const h=l.useCallback(x=>{i(x),c||n(a.property?{[a.property]:x}:x)},[a.property,n,c]),d=l.useCallback(()=>{n(a.property?{[a.property]:f}:f)},[a.property,n,f]),{access:m=C.SET,item_type:p}=a;return m&C.SET?o.jsxs(o.Fragment,{children:[o.jsx(Zt,{feature:p,parentFeatures:[...s,a],onChange:h,value:f}),c&&o.jsx("div",{children:o.jsx(S,{className:`btn btn-primary ${r?"btn-sm":""}`,onClick:d,disabled:f.length===0,children:t("common:apply")})})]}):m&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),ra=l.memo(e=>o.jsx(R,{...e})),ta=l.memo(e=>{const{onChange:t,value:a,min:r,max:s,unit:n,steps:u,minimal:f,...i}=e,[c,h]=l.useState(a),d=r!=null&&s!=null;l.useEffect(()=>{h(a)},[a]);const m=l.useCallback(x=>{h(x.target.value?x.target.valueAsNumber:"")},[]),p=l.useCallback(x=>!x.target.validationMessage&&t(c===""?null:c),[c,t]);return o.jsxs("div",{className:"flex flex-row flex-wrap gap-3 items-center",children:[!f&&u?o.jsx(Ze,{values:u,onChange:t,value:c}):null,d?o.jsxs("div",{className:"w-full max-w-xs",children:[o.jsx("input",{min:r,max:s,type:"range",className:"range range-xs range-primary validator",value:c,onChange:m,onTouchEnd:p,onMouseUp:p,...i}),o.jsxs("div",{className:"flex justify-between px-1 mt-1 text-xs",children:[o.jsx("span",{children:r}),f&&o.jsx("span",{children:c}),o.jsx("span",{children:s})]})]}):null,(!f||!d)&&o.jsxs("label",{className:"input",children:[o.jsx("input",{type:"number",className:"grow validator",value:c,onChange:m,onBlur:p,min:r,max:s,...i}),n]})]})}),aa=l.memo(e=>{const{feature:{presets:t,access:a=C.SET,property:r,unit:s,value_max:n,value_min:u,value_step:f},deviceValue:i,steps:c,onChange:h,minimal:d}=e;return a&C.SET?o.jsx(ta,{onChange:m=>h(r?{[r]:m}:m),value:typeof i=="number"?i:"",min:u,max:n,step:f,steps:t?.length?t:c,unit:s,minimal:d}):a&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),na=l.memo(e=>o.jsx(R,{...e})),sa=l.memo(e=>{const{onChange:t,value:a,...r}=e,[s,n]=l.useState(a);return l.useEffect(()=>{n(a)},[a]),o.jsx("input",{type:"text",className:"input validator",value:s,onChange:u=>n(u.target.value),onBlur:u=>!u.target.validationMessage&&t(s),...r})}),oa=l.memo(e=>{const{feature:{access:t=C.SET,property:a},deviceValue:r,onChange:s}=e;return t&C.SET?o.jsx(sa,{onChange:n=>s(a?{[a]:n}:n),value:r!=null?typeof r=="string"?r:JSON.stringify(r):""}):t&C.STATE?o.jsx(F,{...e}):o.jsx(q,{...e})}),er=l.memo(e=>{const{feature:t,device:a,deviceState:r,steps:s,onRead:n,onChange:u,featureWrapperClass:f,minimal:i,endpointSpecific:c,parentFeatures:h}=e,d=l.useMemo(()=>t.property?r[t.property]:r,[t.property,r[t.property]]),m=l.useMemo(()=>He(t),[t]),p=l.useMemo(()=>({device:a,deviceValue:d,onChange:u,onRead:n,featureWrapperClass:f,minimal:i,endpointSpecific:c,parentFeatures:h}),[a,d,u,n,f,i,c,h]),x=l.useMemo(()=>({feature:t,onRead:n,deviceValue:d,parentFeatures:h,endpointSpecific:c}),[t,n,d,h,c]);switch(t.type){case"binary":return o.jsx(f,{...x,children:o.jsx(_t,{feature:t,...p},m)},m);case"numeric":return o.jsx(f,{...x,children:o.jsx(aa,{feature:t,...p,steps:s},m)},m);case"list":return t.name==="gradient"&&t.length_min!=null&&t.length_max!=null?o.jsx(f,{...x,children:o.jsx(Xt,{feature:t,...p},m)},m):o.jsx(f,{...x,children:o.jsx(ea,{feature:t,...p},m)},m);case"text":return o.jsx(f,{...x,children:o.jsx(oa,{feature:t,...p},m)},m);case"enum":return o.jsx(f,{...x,children:o.jsx(Wt,{feature:t,...p},m)},m);case"light":return o.jsx(Jt,{feature:t,...p,deviceState:r},m);case"switch":return o.jsx(na,{feature:t,...p,deviceState:r},m);case"cover":return o.jsx(Lt,{feature:t,...p,deviceState:r},m);case"lock":return o.jsx(ra,{feature:t,...p,deviceState:r},m);case"climate":return o.jsx(Ct,{feature:t,...p,deviceState:r},m);case"fan":return o.jsx(Dt,{feature:t,...p,deviceState:r},m);case"composite":{if(t.name==="color_xy"||t.name==="color_hs")return o.jsx(f,{...x,children:o.jsx(Ht,{feature:t,...p},m)},m);const v=h&&t.property?r[t.property]:r;return o.jsx(f,{...x,children:o.jsx(R,{feature:t,...p,deviceState:v},m)},m)}default:return console.error("Unsupported feature",t),o.jsx(f,{...x,children:o.jsx("pre",{children:JSON.stringify(t,null,4)})},m)}});export{er as F,Qt as a,C as b,yt as c,ft as d,He as g,dt as s};
@@ -1 +1 @@
1
- import{b as q,r as o,s as e,H as g,w as v,c6 as f,c7 as E,G as w,aL as N,aM as b,aN as k,aO as j,aP as T,c8 as G,c9 as U,D as V,v as J,c0 as X,c1 as z,ca as Q,cb as Z,j as t,Q as S}from"./index-BR27vzZL.js";import{C}from"./CheckboxField-DL452sgi.js";import{I as M}from"./InputField-BHHQh6No.js";import{N as y}from"./NumberField-W0nLjOub.js";import{S as r}from"./SelectField-BMt7uZuS.js";import"./envs-CRUy-_iG.js";function ne(){const{t:s}=q(["settings","navbar","network","common"]),[l,A]=o.useState(e.get(g,"devices")),[i,D]=o.useState(e.get(v,!1)),[c,O]=o.useState(e.get(f,254)),[d,L]=o.useState(e.get(E,4)),[m,K]=o.useState(e.get(w,"data")),[u,I]=o.useState(e.get(N,"forceDirected2d")),[_,Y]=o.useState(e.get(b,"all")),[p,R]=o.useState(e.get(k,-750)),[h,P]=o.useState(e.get(j,50)),[x,F]=o.useState(e.get(T,!1));o.useEffect(()=>{e.set(g,l)},[l]),o.useEffect(()=>{e.set(v,i)},[i]),o.useEffect(()=>{e.set(f,c)},[c]),o.useEffect(()=>{e.set(E,d)},[d]),o.useEffect(()=>{e.set(w,m)},[m]),o.useEffect(()=>{e.set(N,u)},[u]),o.useEffect(()=>{e.set(b,_)},[_]),o.useEffect(()=>{e.set(k,p)},[p]),o.useEffect(()=>{e.set(j,h)},[h]),o.useEffect(()=>{e.set(T,x)},[x]);const H=o.useCallback(()=>{const a=e.keys();e.remove(G),e.remove(g),e.remove(v),e.remove(f),e.remove(E),e.remove(w),e.remove(N),e.remove(b),e.remove(k),e.remove(j),e.remove(T),e.remove(U),e.remove(V),e.remove(J);for(const n of a)(n.startsWith(X)||n.startsWith(z))&&e.remove(n);window.location.reload()},[]),W=o.useCallback(()=>{e.remove(Q),e.remove(Z),window.location.reload()},[]),B=o.useCallback(()=>{e.clearAll(),window.location.reload()},[]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"alert alert-info alert-vertical sm:alert-horizontal",children:[s("frontend_notice"),t.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[t.jsx(S,{className:"btn btn-sm btn-error",onClick:H,title:s("reset_settings"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_settings")}),t.jsx(S,{className:"btn btn-sm btn-error",onClick:W,title:s("reset_auth"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_auth")}),t.jsx(S,{className:"btn btn-sm btn-error",onClick:B,title:s("reset_all"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_all")})]})]}),t.jsxs("div",{className:"flex flex-row flex-wrap gap-4 mt-3",children:[t.jsxs(r,{name:"homepage",label:s("homepage"),onChange:a=>!a.target.validationMessage&&A(a.target.value),value:l,required:!0,children:[t.jsx("option",{value:"devices",children:s("navbar:devices")}),t.jsx("option",{value:"dashboard",children:s("navbar:dashboard")})]}),t.jsx(C,{name:"dashboard_column_display",label:s("dashboard_column_display"),checked:i,onChange:a=>D(a.target.checked)}),t.jsx(M,{type:"number",name:"permit_join_time",label:s("permit_join_time"),min:10,max:254,required:!0,value:c,onChange:a=>!a.target.validationMessage&&!!a.target.value&&O(a.target.valueAsNumber)}),t.jsx(M,{type:"number",name:"max_on_screen_notifications",label:s("max_on_screen_notifications"),min:1,max:5,required:!0,value:d,onChange:a=>!a.target.validationMessage&&!!a.target.value&&L(a.target.valueAsNumber)})]}),t.jsx("h2",{className:"text-lg mt-2",children:s("network_raw")}),t.jsx("div",{className:"flex flex-row flex-wrap gap-4",children:t.jsxs(r,{name:"network:display_type",label:s("network:display_type"),onChange:a=>!a.target.validationMessage&&K(a.target.value),value:m,required:!0,children:[t.jsx("option",{value:"data",children:s("network:data")}),t.jsx("option",{value:"map",children:s("network:map")})]})}),t.jsx("h2",{className:"text-lg mt-2",children:s("network_map")}),t.jsxs("div",{className:"flex flex-row flex-wrap gap-4",children:[t.jsxs(r,{name:"network:layout_type",label:s("network:layout_type"),onChange:a=>!a.target.validationMessage&&I(a.target.value),value:u,required:!0,children:[t.jsx("option",{value:"forceDirected2d",children:"forceDirected2d"}),t.jsx("option",{value:"forceDirected3d",children:"forceDirected3d"}),t.jsx("option",{value:"radialOut2d",children:"radialOut2d"}),t.jsx("option",{value:"radialOut3d",children:"radialOut3d"}),t.jsx("option",{value:"concentric2d",children:"concentric2d"})]}),t.jsxs(r,{name:"network:label_type",label:s("network:label_type"),onChange:a=>!a.target.validationMessage&&Y(a.target.value),value:_,required:!0,children:[t.jsx("option",{value:"all",children:"all"}),t.jsx("option",{value:"auto",children:"auto"}),t.jsx("option",{value:"none",children:"none"}),t.jsx("option",{value:"nodes",children:"nodes"}),t.jsx("option",{value:"edges",children:"edges"})]}),t.jsx("div",{className:"min-w-xs",children:t.jsx(y,{name:"network:node_strength",label:s("network:node_strength"),onSubmit:(a,n)=>n&&a!==""&&R(a),min:-1e3,max:-100,step:10,defaultValue:p})}),t.jsx("div",{className:"min-w-xs",children:t.jsx(y,{name:"network:link_distance",label:s("network:link_distance"),onSubmit:(a,n)=>n&&a!==""&&P(a),min:10,max:200,step:5,defaultValue:h})}),t.jsx(C,{name:"network:show_icons",label:s("network:show_icons"),onChange:a=>F(a.target.checked),defaultChecked:x})]})]})}export{ne as default};
1
+ import{b as q,r as o,s as e,H as g,w as v,c6 as f,c7 as E,G as w,aL as N,aM as b,aN as k,aO as j,aP as T,c8 as G,c9 as U,D as V,v as J,c0 as X,c1 as z,ca as Q,cb as Z,j as t,Q as S}from"./index-pzWGL0cK.js";import{C}from"./CheckboxField-DGeXHkdI.js";import{I as M}from"./InputField-D7F4rh-6.js";import{N as y}from"./NumberField-DBq58GHS.js";import{S as r}from"./SelectField-Do2InTFr.js";import"./envs-CRUy-_iG.js";function ne(){const{t:s}=q(["settings","navbar","network","common"]),[l,A]=o.useState(e.get(g,"devices")),[i,D]=o.useState(e.get(v,!1)),[c,O]=o.useState(e.get(f,254)),[d,L]=o.useState(e.get(E,4)),[m,K]=o.useState(e.get(w,"data")),[u,I]=o.useState(e.get(N,"forceDirected2d")),[_,Y]=o.useState(e.get(b,"all")),[p,R]=o.useState(e.get(k,-750)),[h,P]=o.useState(e.get(j,50)),[x,F]=o.useState(e.get(T,!1));o.useEffect(()=>{e.set(g,l)},[l]),o.useEffect(()=>{e.set(v,i)},[i]),o.useEffect(()=>{e.set(f,c)},[c]),o.useEffect(()=>{e.set(E,d)},[d]),o.useEffect(()=>{e.set(w,m)},[m]),o.useEffect(()=>{e.set(N,u)},[u]),o.useEffect(()=>{e.set(b,_)},[_]),o.useEffect(()=>{e.set(k,p)},[p]),o.useEffect(()=>{e.set(j,h)},[h]),o.useEffect(()=>{e.set(T,x)},[x]);const H=o.useCallback(()=>{const a=e.keys();e.remove(G),e.remove(g),e.remove(v),e.remove(f),e.remove(E),e.remove(w),e.remove(N),e.remove(b),e.remove(k),e.remove(j),e.remove(T),e.remove(U),e.remove(V),e.remove(J);for(const n of a)(n.startsWith(X)||n.startsWith(z))&&e.remove(n);window.location.reload()},[]),W=o.useCallback(()=>{e.remove(Q),e.remove(Z),window.location.reload()},[]),B=o.useCallback(()=>{e.clearAll(),window.location.reload()},[]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"alert alert-info alert-vertical sm:alert-horizontal",children:[s("frontend_notice"),t.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[t.jsx(S,{className:"btn btn-sm btn-error",onClick:H,title:s("reset_settings"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_settings")}),t.jsx(S,{className:"btn btn-sm btn-error",onClick:W,title:s("reset_auth"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_auth")}),t.jsx(S,{className:"btn btn-sm btn-error",onClick:B,title:s("reset_all"),modalDescription:s("common:dialog_confirmation_prompt"),modalCancelLabel:s("common:cancel"),children:s("reset_all")})]})]}),t.jsxs("div",{className:"flex flex-row flex-wrap gap-4 mt-3",children:[t.jsxs(r,{name:"homepage",label:s("homepage"),onChange:a=>!a.target.validationMessage&&A(a.target.value),value:l,required:!0,children:[t.jsx("option",{value:"devices",children:s("navbar:devices")}),t.jsx("option",{value:"dashboard",children:s("navbar:dashboard")})]}),t.jsx(C,{name:"dashboard_column_display",label:s("dashboard_column_display"),checked:i,onChange:a=>D(a.target.checked)}),t.jsx(M,{type:"number",name:"permit_join_time",label:s("permit_join_time"),min:10,max:254,required:!0,value:c,onChange:a=>!a.target.validationMessage&&!!a.target.value&&O(a.target.valueAsNumber)}),t.jsx(M,{type:"number",name:"max_on_screen_notifications",label:s("max_on_screen_notifications"),min:1,max:5,required:!0,value:d,onChange:a=>!a.target.validationMessage&&!!a.target.value&&L(a.target.valueAsNumber)})]}),t.jsx("h2",{className:"text-lg mt-2",children:s("network_raw")}),t.jsx("div",{className:"flex flex-row flex-wrap gap-4",children:t.jsxs(r,{name:"network:display_type",label:s("network:display_type"),onChange:a=>!a.target.validationMessage&&K(a.target.value),value:m,required:!0,children:[t.jsx("option",{value:"data",children:s("network:data")}),t.jsx("option",{value:"map",children:s("network:map")})]})}),t.jsx("h2",{className:"text-lg mt-2",children:s("network_map")}),t.jsxs("div",{className:"flex flex-row flex-wrap gap-4",children:[t.jsxs(r,{name:"network:layout_type",label:s("network:layout_type"),onChange:a=>!a.target.validationMessage&&I(a.target.value),value:u,required:!0,children:[t.jsx("option",{value:"forceDirected2d",children:"forceDirected2d"}),t.jsx("option",{value:"forceDirected3d",children:"forceDirected3d"}),t.jsx("option",{value:"radialOut2d",children:"radialOut2d"}),t.jsx("option",{value:"radialOut3d",children:"radialOut3d"}),t.jsx("option",{value:"concentric2d",children:"concentric2d"})]}),t.jsxs(r,{name:"network:label_type",label:s("network:label_type"),onChange:a=>!a.target.validationMessage&&Y(a.target.value),value:_,required:!0,children:[t.jsx("option",{value:"all",children:"all"}),t.jsx("option",{value:"auto",children:"auto"}),t.jsx("option",{value:"none",children:"none"}),t.jsx("option",{value:"nodes",children:"nodes"}),t.jsx("option",{value:"edges",children:"edges"})]}),t.jsx("div",{className:"min-w-xs",children:t.jsx(y,{name:"network:node_strength",label:s("network:node_strength"),onSubmit:(a,n)=>n&&a!==""&&R(a),min:-1e3,max:-100,step:10,defaultValue:p})}),t.jsx("div",{className:"min-w-xs",children:t.jsx(y,{name:"network:link_distance",label:s("network:link_distance"),onSubmit:(a,n)=>n&&a!==""&&P(a),min:10,max:200,step:5,defaultValue:h})}),t.jsx(C,{name:"network:show_icons",label:s("network:show_icons"),onChange:a=>F(a.target.checked),defaultChecked:x})]})]})}export{ne as default};