zigbee2mqtt-windfront 1.7.0 → 1.8.0

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-DUcioXxf.js → About-CZjwfsW-.js} +2 -2
  2. package/dist/assets/About-CZjwfsW-.js.br +0 -0
  3. package/dist/assets/{Availability-Dv4Ph0Ye.js → Availability-PU0rLtaR.js} +1 -1
  4. package/dist/assets/Availability-PU0rLtaR.js.br +0 -0
  5. package/dist/assets/{Bind-CZsitKJf.js → Bind-ByraS7_e.js} +1 -1
  6. package/dist/assets/Bind-ByraS7_e.js.br +0 -0
  7. package/dist/assets/Bridge-DkgYFiG9.js +1 -0
  8. package/dist/assets/Bridge-DkgYFiG9.js.br +0 -0
  9. package/dist/assets/{CheckboxField-Dx2QxjzC.js → CheckboxField-DL452sgi.js} +1 -1
  10. package/dist/assets/CheckboxField-DL452sgi.js.br +0 -0
  11. package/dist/assets/{ClusterSinglePicker-DNRhvOBp.js → ClusterSinglePicker-CdWuBd2I.js} +1 -1
  12. package/dist/assets/ClusterSinglePicker-CdWuBd2I.js.br +0 -0
  13. package/dist/assets/{Clusters-BE_4RC5f.js → Clusters-Dqpd0Nay.js} +1 -1
  14. package/dist/assets/Clusters-Dqpd0Nay.js.br +0 -0
  15. package/dist/assets/{Dashboard-D7evBMoe.js → Dashboard-D72X1Jpp.js} +1 -1
  16. package/dist/assets/Dashboard-D72X1Jpp.js.br +0 -0
  17. package/dist/assets/{DashboardFeatureWrapper-BCosdUvy.js → DashboardFeatureWrapper-CijVXPwd.js} +1 -1
  18. package/dist/assets/DashboardFeatureWrapper-CijVXPwd.js.br +0 -0
  19. package/dist/assets/{DebouncedInput-Z7O3YrBh.js → DebouncedInput-Oo6AI4sw.js} +1 -1
  20. package/dist/assets/DebouncedInput-Oo6AI4sw.js.br +0 -0
  21. package/dist/assets/{DevConsole-CZhPDzNO.js → DevConsole-DidHFg9P.js} +1 -1
  22. package/dist/assets/DevConsole-DidHFg9P.js.br +0 -0
  23. package/dist/assets/DevConsole-Ou7nxVMB.js +20 -0
  24. package/dist/assets/DevConsole-Ou7nxVMB.js.br +0 -0
  25. package/dist/assets/{DeviceCard-DCId-Vs8.js → DeviceCard-BQ3AAT7N.js} +1 -1
  26. package/dist/assets/DeviceCard-BQ3AAT7N.js.br +0 -0
  27. package/dist/assets/{DeviceControlEditName-BxC1B1Qj.js → DeviceControlEditName-CdOvAC3i.js} +1 -1
  28. package/dist/assets/DeviceControlEditName-CdOvAC3i.js.br +0 -0
  29. package/dist/assets/DeviceImage-C9XLyJZx.js +1 -0
  30. package/dist/assets/DeviceImage-C9XLyJZx.js.br +0 -0
  31. package/dist/assets/{DeviceInfo-CZRw9zfL.js → DeviceInfo-ADguzSw7.js} +2 -2
  32. package/dist/assets/DeviceInfo-ADguzSw7.js.br +0 -0
  33. package/dist/assets/DevicePage-nrrWZFdG.js +2 -0
  34. package/dist/assets/DevicePage-nrrWZFdG.js.br +0 -0
  35. package/dist/assets/{DevicePicker-xS0T9qul.js → DevicePicker-toVVVDvU.js} +1 -1
  36. package/dist/assets/DevicePicker-toVVVDvU.js.br +0 -0
  37. package/dist/assets/{DeviceSettings-IoZbTphm.js → DeviceSettings-CTvrWIT_.js} +1 -1
  38. package/dist/assets/DeviceSettings-CTvrWIT_.js.br +0 -0
  39. package/dist/assets/DeviceSpecificSettings-C-JdxNN-.js +1 -0
  40. package/dist/assets/DeviceSpecificSettings-C-JdxNN-.js.br +0 -0
  41. package/dist/assets/Devices-CeivpLUl.js +1 -0
  42. package/dist/assets/Devices-CeivpLUl.js.br +0 -0
  43. package/dist/assets/{DevicesPage-CVqifZXT.js → DevicesPage-DlF_s1BX.js} +1 -1
  44. package/dist/assets/DevicesPage-DlF_s1BX.js.br +0 -0
  45. package/dist/assets/{DisplayValue-C55voi8G.js → DisplayValue-BOG1_pD9.js} +1 -1
  46. package/dist/assets/DisplayValue-BOG1_pD9.js.br +0 -0
  47. package/dist/assets/{Donate-9qZhLZau.js → Donate-DesLNYDr.js} +1 -1
  48. package/dist/assets/Donate-DesLNYDr.js.br +0 -0
  49. package/dist/assets/{EndpointPicker-DuGNCPo-.js → EndpointPicker-DeqXMnZV.js} +1 -1
  50. package/dist/assets/EndpointPicker-DeqXMnZV.js.br +3 -0
  51. package/dist/assets/{Exposes-Bbzl-29y.js → Exposes-C5U8q2yk.js} +1 -1
  52. package/dist/assets/Exposes-C5U8q2yk.js.br +0 -0
  53. package/dist/assets/Feature-Ciu4ZwFB.js +1 -0
  54. package/dist/assets/Feature-Ciu4ZwFB.js.br +0 -0
  55. package/dist/assets/{Frontend-BnyqZoL6.js → Frontend-DTfIT-Dy.js} +1 -1
  56. package/dist/assets/Frontend-DTfIT-Dy.js.br +0 -0
  57. package/dist/assets/{GroupPage-DA95yJf-.js → GroupPage-s_YhF_aM.js} +2 -2
  58. package/dist/assets/GroupPage-s_YhF_aM.js.br +0 -0
  59. package/dist/assets/GroupSettings-C1Mxz20w.js +1 -0
  60. package/dist/assets/GroupSettings-C1Mxz20w.js.br +0 -0
  61. package/dist/assets/{Groups-Dnuylsi8.js → Groups-DejN32tj.js} +1 -1
  62. package/dist/assets/Groups-DejN32tj.js.br +0 -0
  63. package/dist/assets/{GroupsPage-DphLoexz.js → GroupsPage-BghQyG2m.js} +1 -1
  64. package/dist/assets/GroupsPage-BghQyG2m.js.br +0 -0
  65. package/dist/assets/{Health-k9TFUygX.js → Health-Dky6SDKV.js} +1 -1
  66. package/dist/assets/Health-Dky6SDKV.js.br +0 -0
  67. package/dist/assets/{HomePage-CK6NM-T-.js → HomePage-DcqiUqjS.js} +1 -1
  68. package/dist/assets/HomePage-DcqiUqjS.js.br +0 -0
  69. package/dist/assets/{InputField-CUhAi55r.js → InputField-BHHQh6No.js} +1 -1
  70. package/dist/assets/InputField-BHHQh6No.js.br +0 -0
  71. package/dist/assets/{Json-CSdW868a.js → Json-4L3vY4kO.js} +1 -1
  72. package/dist/assets/Json-4L3vY4kO.js.br +0 -0
  73. package/dist/assets/{LastSeen-BWjXmUSJ.js → LastSeen-dsZqv4y_.js} +1 -1
  74. package/dist/assets/LastSeen-dsZqv4y_.js.br +0 -0
  75. package/dist/assets/LogsPage-Bm2mwOb6.js +1 -0
  76. package/dist/assets/LogsPage-Bm2mwOb6.js.br +0 -0
  77. package/dist/assets/Lqi-D-5JxyY1.js +1 -0
  78. package/dist/assets/Lqi-D-5JxyY1.js.br +0 -0
  79. package/dist/assets/NetworkPage-C6zhqoAF.js +2 -0
  80. package/dist/assets/NetworkPage-C6zhqoAF.js.br +0 -0
  81. package/dist/assets/{NumberField-Bu5IU0l2.js → NumberField-W0nLjOub.js} +1 -1
  82. package/dist/assets/NumberField-W0nLjOub.js.br +0 -0
  83. package/dist/assets/{OtaPage-r9Gto8-D.js → OtaPage-Dh-CKhjl.js} +1 -1
  84. package/dist/assets/OtaPage-Dh-CKhjl.js.br +0 -0
  85. package/dist/assets/{PowerSource-BV6oqaaB.js → PowerSource-zOxQYLf3.js} +1 -1
  86. package/dist/assets/PowerSource-zOxQYLf3.js.br +0 -0
  87. package/dist/assets/{RawNetworkData-DAbMk6t_.js → RawNetworkData-RqJboJd5.js} +1 -1
  88. package/dist/assets/RawNetworkData-RqJboJd5.js.br +0 -0
  89. package/dist/assets/{RawNetworkMap-DcUDlHgQ.js → RawNetworkMap-TRBX0zwa.js} +30 -30
  90. package/dist/assets/RawNetworkMap-TRBX0zwa.js.br +0 -0
  91. package/dist/assets/{RecallRemove-CrxvayYk.js → RecallRemove-cc5YDCh9.js} +1 -1
  92. package/dist/assets/RecallRemove-cc5YDCh9.js.br +0 -0
  93. package/dist/assets/{Reporting-VXUgdiP4.js → Reporting-DnG0I3Vc.js} +1 -1
  94. package/dist/assets/Reporting-DnG0I3Vc.js.br +0 -0
  95. package/dist/assets/Scene-BAtAVAEO.js +1 -0
  96. package/dist/assets/Scene-BAtAVAEO.js.br +0 -0
  97. package/dist/assets/{SelectField-Ca16rphE.js → SelectField-BMt7uZuS.js} +1 -1
  98. package/dist/assets/SelectField-BMt7uZuS.js.br +0 -0
  99. package/dist/assets/{Settings-VzG6rJhJ.js → Settings-gGZGfvuj.js} +1 -1
  100. package/dist/assets/Settings-gGZGfvuj.js.br +0 -0
  101. package/dist/assets/{SettingsList-FVZvadEn.js → SettingsList-D8N_9F77.js} +1 -1
  102. package/dist/assets/SettingsList-D8N_9F77.js.br +0 -0
  103. package/dist/assets/{SettingsPage-CyWJ3spU.js → SettingsPage-BvLt8GhQ.js} +2 -2
  104. package/dist/assets/SettingsPage-BvLt8GhQ.js.br +0 -0
  105. package/dist/assets/State-BNAmyC2W.js +1 -0
  106. package/dist/assets/State-BNAmyC2W.js.br +0 -0
  107. package/dist/assets/{Table-7bVWMaUR.js → Table-YMU-GTDx.js} +1 -1
  108. package/dist/assets/Table-YMU-GTDx.js.br +0 -0
  109. package/dist/assets/{TextareaField-DP_hdh3q.js → TextareaField-RnWDqrAI.js} +1 -1
  110. package/dist/assets/TextareaField-RnWDqrAI.js.br +0 -0
  111. package/dist/assets/Tools-pHwI6wAE.js +1 -0
  112. package/dist/assets/Tools-pHwI6wAE.js.br +0 -0
  113. package/dist/assets/TouchlinkPage-C5u7Nbx_.js +1 -0
  114. package/dist/assets/TouchlinkPage-C5u7Nbx_.js.br +0 -0
  115. package/dist/assets/{VendorLink-CH3XJ5NJ.js → VendorLink-DuKl6tZD.js} +1 -1
  116. package/dist/assets/VendorLink-DuKl6tZD.js.br +0 -0
  117. package/dist/assets/{_createCompounder-DOVBRgWx.js → _createCompounder-j5DHCRsI.js} +1 -1
  118. package/dist/assets/_createCompounder-j5DHCRsI.js.br +0 -0
  119. package/dist/assets/{format-B4QuVfKv.js → format-DWdgGQ5D.js} +1 -1
  120. package/dist/assets/format-DWdgGQ5D.js.br +3 -0
  121. package/dist/assets/index-BR27vzZL.js +637 -0
  122. package/dist/assets/index-BR27vzZL.js.br +0 -0
  123. package/dist/assets/{index-DTwwc0px.js → index-Dn4wgen8.js} +1 -1
  124. package/dist/assets/index-Dn4wgen8.js.br +0 -0
  125. package/dist/assets/{jszip.min-DLJrQ4fd.js → jszip.min-Dj0U1QNV.js} +1 -1
  126. package/dist/assets/jszip.min-Dj0U1QNV.js.br +0 -0
  127. package/dist/assets/snakeCase-Dntle38p.js +1 -0
  128. package/dist/assets/snakeCase-Dntle38p.js.br +0 -0
  129. package/dist/index.html +1 -1
  130. package/dist/index.html.br +0 -0
  131. package/package.json +4 -5
  132. package/dist/assets/About-DUcioXxf.js.br +0 -0
  133. package/dist/assets/Availability-Dv4Ph0Ye.js.br +0 -0
  134. package/dist/assets/Bind-CZsitKJf.js.br +0 -0
  135. package/dist/assets/Bridge-BBUz-kJW.js +0 -1
  136. package/dist/assets/Bridge-BBUz-kJW.js.br +0 -0
  137. package/dist/assets/CheckboxField-Dx2QxjzC.js.br +0 -0
  138. package/dist/assets/ClusterSinglePicker-DNRhvOBp.js.br +0 -0
  139. package/dist/assets/Clusters-BE_4RC5f.js.br +0 -0
  140. package/dist/assets/Dashboard-D7evBMoe.js.br +0 -0
  141. package/dist/assets/DashboardFeatureWrapper-BCosdUvy.js.br +0 -0
  142. package/dist/assets/DebouncedInput-Z7O3YrBh.js.br +0 -0
  143. package/dist/assets/DevConsole-C81rFSZS.js +0 -20
  144. package/dist/assets/DevConsole-C81rFSZS.js.br +0 -0
  145. package/dist/assets/DevConsole-CZhPDzNO.js.br +0 -0
  146. package/dist/assets/DeviceCard-DCId-Vs8.js.br +0 -5
  147. package/dist/assets/DeviceControlEditName-BxC1B1Qj.js.br +0 -0
  148. package/dist/assets/DeviceImage-BGLcF_MT.js +0 -1
  149. package/dist/assets/DeviceImage-BGLcF_MT.js.br +0 -0
  150. package/dist/assets/DeviceInfo-CZRw9zfL.js.br +0 -0
  151. package/dist/assets/DevicePage-Bm-xmwWe.js +0 -2
  152. package/dist/assets/DevicePage-Bm-xmwWe.js.br +0 -0
  153. package/dist/assets/DevicePicker-xS0T9qul.js.br +0 -0
  154. package/dist/assets/DeviceSettings-IoZbTphm.js.br +0 -0
  155. package/dist/assets/DeviceSpecificSettings-CHDH7O4h.js +0 -1
  156. package/dist/assets/DeviceSpecificSettings-CHDH7O4h.js.br +0 -0
  157. package/dist/assets/Devices-CG9ex5aM.js +0 -1
  158. package/dist/assets/Devices-CG9ex5aM.js.br +0 -0
  159. package/dist/assets/DevicesPage-CVqifZXT.js.br +0 -0
  160. package/dist/assets/DisplayValue-C55voi8G.js.br +0 -0
  161. package/dist/assets/Donate-9qZhLZau.js.br +0 -0
  162. package/dist/assets/EndpointPicker-DuGNCPo-.js.br +0 -1
  163. package/dist/assets/Exposes-Bbzl-29y.js.br +0 -2
  164. package/dist/assets/Feature-BZc2FS2v.js +0 -1
  165. package/dist/assets/Feature-BZc2FS2v.js.br +0 -0
  166. package/dist/assets/Frontend-BnyqZoL6.js.br +0 -0
  167. package/dist/assets/GroupPage-DA95yJf-.js.br +0 -0
  168. package/dist/assets/GroupSettings-Bmjsrlz9.js +0 -1
  169. package/dist/assets/GroupSettings-Bmjsrlz9.js.br +0 -0
  170. package/dist/assets/Groups-Dnuylsi8.js.br +0 -0
  171. package/dist/assets/GroupsPage-DphLoexz.js.br +0 -0
  172. package/dist/assets/Health-k9TFUygX.js.br +0 -0
  173. package/dist/assets/HomePage-CK6NM-T-.js.br +0 -0
  174. package/dist/assets/InputField-CUhAi55r.js.br +0 -3
  175. package/dist/assets/Json-CSdW868a.js.br +0 -0
  176. package/dist/assets/LastSeen-BWjXmUSJ.js.br +0 -0
  177. package/dist/assets/LogsPage-3OuRzpPD.js +0 -1
  178. package/dist/assets/LogsPage-3OuRzpPD.js.br +0 -0
  179. package/dist/assets/Lqi-CkhLMJ19.js +0 -1
  180. package/dist/assets/Lqi-CkhLMJ19.js.br +0 -0
  181. package/dist/assets/NetworkPage-D5gqpXsU.js +0 -2
  182. package/dist/assets/NetworkPage-D5gqpXsU.js.br +0 -0
  183. package/dist/assets/NumberField-Bu5IU0l2.js.br +0 -0
  184. package/dist/assets/OtaPage-r9Gto8-D.js.br +0 -0
  185. package/dist/assets/PowerSource-BV6oqaaB.js.br +0 -0
  186. package/dist/assets/RawNetworkData-DAbMk6t_.js.br +0 -0
  187. package/dist/assets/RawNetworkMap-DcUDlHgQ.js.br +0 -0
  188. package/dist/assets/RecallRemove-CrxvayYk.js.br +0 -0
  189. package/dist/assets/Reporting-VXUgdiP4.js.br +0 -0
  190. package/dist/assets/Scene-BwaNCcX2.js +0 -1
  191. package/dist/assets/Scene-BwaNCcX2.js.br +0 -0
  192. package/dist/assets/SelectField-Ca16rphE.js.br +0 -0
  193. package/dist/assets/Settings-VzG6rJhJ.js.br +0 -0
  194. package/dist/assets/SettingsList-FVZvadEn.js.br +0 -0
  195. package/dist/assets/SettingsPage-CyWJ3spU.js.br +0 -0
  196. package/dist/assets/State-khkziclY.js +0 -1
  197. package/dist/assets/State-khkziclY.js.br +0 -0
  198. package/dist/assets/Table-7bVWMaUR.js.br +0 -0
  199. package/dist/assets/TextareaField-DP_hdh3q.js.br +0 -0
  200. package/dist/assets/Tools-CvTVTFeR.js +0 -1
  201. package/dist/assets/Tools-CvTVTFeR.js.br +0 -0
  202. package/dist/assets/TouchlinkPage-CFVn2b5R.js +0 -1
  203. package/dist/assets/TouchlinkPage-CFVn2b5R.js.br +0 -0
  204. package/dist/assets/VendorLink-CH3XJ5NJ.js.br +0 -0
  205. package/dist/assets/_createCompounder-DOVBRgWx.js.br +0 -0
  206. package/dist/assets/format-B4QuVfKv.js.br +0 -1
  207. package/dist/assets/index-BccmZcnH.js +0 -645
  208. package/dist/assets/index-BccmZcnH.js.br +0 -0
  209. package/dist/assets/index-DTwwc0px.js.br +0 -0
  210. package/dist/assets/jszip.min-DLJrQ4fd.js.br +0 -0
  211. package/dist/assets/snakeCase-DyM1sm95.js +0 -1
  212. package/dist/assets/snakeCase-DyM1sm95.js.br +0 -0
@@ -1 +1 @@
1
- import{ai as S,r as c,b as x,W as C,x as k,j as s,B as j,T as v}from"./index-BccmZcnH.js";import{D as A}from"./DashboardFeatureWrapper-BCosdUvy.js";import{b as f,F as E,g}from"./Feature-BZc2FS2v.js";import{I as h}from"./InputField-CUhAi55r.js";import{S as F}from"./SelectField-Ca16rphE.js";function y(e){if(S(e)){const o=[];for(const a in e.endpoints){const t=e.endpoints[a];for(const n of t.scenes)o.push({...n})}return o}return e.scenes}const T=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_","_scene"],I=["effect","power_on_behavior","gradient"],M=["state","color_temp","color","transition","brightness"],R=(e,o)=>{if(e){if(M.includes(e))return!0;for(const a of T)if(e.includes(a))return!1;if(I.includes(e))return!1}return!o||o===f.ALL||o===f.SET||o===f.STATE_SET},K=c.memo(({target:e,deviceState:o})=>{const{t:a}=x("scene"),{sendMessage:t}=c.useContext(C),[n,l]=c.useState(0),[r,m]=c.useState(""),u=c.useMemo(()=>y(e),[e]),_=c.useMemo(()=>S(e)&&e.definition?k(e.definition.exposes,R):[],[e]),p=c.useCallback(async i=>{await t(`${e.friendly_name}/set`,i)},[t,e]),b=c.useCallback(async()=>{const i={ID:n,name:r||`Scene ${n}`};await t(`${e.friendly_name}/set`,{scene_store:i})},[t,e,n,r]),d=c.useMemo(()=>n>=0&&n<=255&&!u.find(i=>i.id===n),[n,u]);return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-lg font-semibold",children:a("add_update_header")}),s.jsxs("div",{className:"mb-3",children:[s.jsx(h,{name:"scene_id",label:a("scene_id"),type:"number",value:n,onChange:i=>!!i.target.value&&l(i.target.valueAsNumber),min:0,max:255}),s.jsx(h,{name:"scene_name",label:a("scene_name"),type:"text",value:r,placeholder:`Scene ${n}`,onChange:i=>m(i.target.value)}),_.length>0&&s.jsx("div",{className:"card card-border bg-base-200 shadow my-2",children:s.jsx("div",{className:"card-body",children:_.map(i=>s.jsx(E,{feature:i,device:e,deviceState:o,onChange:p,featureWrapperClass:A,minimal:!0,parentFeatures:[]},g(i)))})})]}),s.jsx(j,{disabled:!d,onClick:b,className:"btn btn-primary",children:a("store")})]})}),L=c.memo(({onSceneSelected:e,scenes:o=[],value:a})=>{const{t}=x("scene");return o.length>0?s.jsxs(F,{name:"scene_picker",label:t("scene_name"),value:a?.id??"",onChange:n=>!n.target.validationMessage&&!!n.target.value&&e(Number.parseInt(n.target.value,10)),children:[s.jsx("option",{value:"",disabled:!0,children:t("select_scene")}),o.map(n=>s.jsxs("option",{value:n.id,children:[n.id,": ",n.name]},n.id))]}):s.jsx(h,{name:"scene_picker",label:t("scene_id"),type:"number",value:a?.id??"",onChange:n=>!n.target.validationMessage&&!!n.target.value&&e(n.target.valueAsNumber),min:0,max:255})}),U=c.memo(({target:e})=>{const{sendMessage:o}=c.useContext(C),{t:a}=x(["scene","common"]),[t,n]=c.useState({id:0,name:"Scene 0"}),[l,r]=c.useState(!0),m=c.useMemo(()=>y(e),[e]),u=c.useCallback(d=>{r(!1);const i=m.find(N=>N.id===d);n(i!==void 0?i:{id:d,name:`Scene ${d}`})},[m]),_=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_recall:t.id}),[o,e.friendly_name,t.id]),p=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_remove:t.id}),[o,e.friendly_name,t.id]),b=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_remove_all:""}),[o,e.friendly_name]);return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-lg font-semibold",children:a("manage_scenes_header")}),s.jsx("div",{className:"mb-3",children:s.jsx(L,{onSceneSelected:u,value:l?void 0:t,scenes:m})}),s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(j,{disabled:l,onClick:_,className:"btn btn-success join-item",children:a("recall")}),s.jsx(v,{disabled:l,onClick:p,className:"btn btn-error join-item",title:a("remove"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),children:a("remove")}),s.jsx(v,{onClick:b,className:"btn btn-error btn-outline join-item",title:a("remove_all"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),children:a("remove_all")})]})]})});export{K as A,U as R,R as i};
1
+ import{aa as S,r as c,b as x,W as C,x as k,j as s,B as j,Q as v}from"./index-BR27vzZL.js";import{D as A}from"./DashboardFeatureWrapper-CijVXPwd.js";import{b as f,F as E,g}from"./Feature-Ciu4ZwFB.js";import{I as h}from"./InputField-BHHQh6No.js";import{S as F}from"./SelectField-BMt7uZuS.js";function y(e){if(S(e)){const o=[];for(const a in e.endpoints){const t=e.endpoints[a];for(const n of t.scenes)o.push({...n})}return o}return e.scenes}const T=["schedule_","_mode","_options","_startup","_type","inching_","cyclic_","_scene"],I=["effect","power_on_behavior","gradient"],M=["state","color_temp","color","transition","brightness"],R=(e,o)=>{if(e){if(M.includes(e))return!0;for(const a of T)if(e.includes(a))return!1;if(I.includes(e))return!1}return!o||o===f.ALL||o===f.SET||o===f.STATE_SET},K=c.memo(({target:e,deviceState:o})=>{const{t:a}=x("scene"),{sendMessage:t}=c.useContext(C),[n,l]=c.useState(0),[r,m]=c.useState(""),u=c.useMemo(()=>y(e),[e]),_=c.useMemo(()=>S(e)&&e.definition?k(e.definition.exposes,R):[],[e]),p=c.useCallback(async i=>{await t(`${e.friendly_name}/set`,i)},[t,e]),b=c.useCallback(async()=>{const i={ID:n,name:r||`Scene ${n}`};await t(`${e.friendly_name}/set`,{scene_store:i})},[t,e,n,r]),d=c.useMemo(()=>n>=0&&n<=255&&!u.find(i=>i.id===n),[n,u]);return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-lg font-semibold",children:a("add_update_header")}),s.jsxs("div",{className:"mb-3",children:[s.jsx(h,{name:"scene_id",label:a("scene_id"),type:"number",value:n,onChange:i=>!!i.target.value&&l(i.target.valueAsNumber),min:0,max:255}),s.jsx(h,{name:"scene_name",label:a("scene_name"),type:"text",value:r,placeholder:`Scene ${n}`,onChange:i=>m(i.target.value)}),_.length>0&&s.jsx("div",{className:"card card-border bg-base-200 shadow my-2",children:s.jsx("div",{className:"card-body",children:_.map(i=>s.jsx(E,{feature:i,device:e,deviceState:o,onChange:p,featureWrapperClass:A,minimal:!0,parentFeatures:[]},g(i)))})})]}),s.jsx(j,{disabled:!d,onClick:b,className:"btn btn-primary",children:a("store")})]})}),L=c.memo(({onSceneSelected:e,scenes:o=[],value:a})=>{const{t}=x("scene");return o.length>0?s.jsxs(F,{name:"scene_picker",label:t("scene_name"),value:a?.id??"",onChange:n=>!n.target.validationMessage&&!!n.target.value&&e(Number.parseInt(n.target.value,10)),children:[s.jsx("option",{value:"",disabled:!0,children:t("select_scene")}),o.map(n=>s.jsxs("option",{value:n.id,children:[n.id,": ",n.name]},n.id))]}):s.jsx(h,{name:"scene_picker",label:t("scene_id"),type:"number",value:a?.id??"",onChange:n=>!n.target.validationMessage&&!!n.target.value&&e(n.target.valueAsNumber),min:0,max:255})}),U=c.memo(({target:e})=>{const{sendMessage:o}=c.useContext(C),{t:a}=x(["scene","common"]),[t,n]=c.useState({id:0,name:"Scene 0"}),[l,r]=c.useState(!0),m=c.useMemo(()=>y(e),[e]),u=c.useCallback(d=>{r(!1);const i=m.find(N=>N.id===d);n(i!==void 0?i:{id:d,name:`Scene ${d}`})},[m]),_=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_recall:t.id}),[o,e.friendly_name,t.id]),p=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_remove:t.id}),[o,e.friendly_name,t.id]),b=c.useCallback(async()=>await o(`${e.friendly_name}/set`,{scene_remove_all:""}),[o,e.friendly_name]);return s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-lg font-semibold",children:a("manage_scenes_header")}),s.jsx("div",{className:"mb-3",children:s.jsx(L,{onSceneSelected:u,value:l?void 0:t,scenes:m})}),s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(j,{disabled:l,onClick:_,className:"btn btn-success join-item",children:a("recall")}),s.jsx(v,{disabled:l,onClick:p,className:"btn btn-error join-item",title:a("remove"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),children:a("remove")}),s.jsx(v,{onClick:b,className:"btn btn-error btn-outline join-item",title:a("remove_all"),modalDescription:a("common:dialog_confirmation_prompt"),modalCancelLabel:a("common:cancel"),children:a("remove_all")})]})]})});export{K as A,U as R,R as i};
@@ -1 +1 @@
1
- import{r as n,b as h,aj as j,j as r,B as R,T as N,W as k}from"./index-BccmZcnH.js";import{I as C}from"./InputField-CUhAi55r.js";import{C as w,A as E}from"./ClusterSinglePicker-DNRhvOBp.js";import{E as S}from"./EndpointPicker-DuGNCPo-.js";import"./envs-CRUy-_iG.js";import"./SelectField-Ca16rphE.js";const y=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],q=n.memo(({rule:s,device:t,onApply:a})=>{const[e,l]=n.useState({rule:s}),{t:i}=h(["zigbee","common"]);n.useEffect(()=>{l({rule:s})},[s]);const b=n.useCallback(o=>{e.rule.endpoint=o,l({rule:e.rule})},[e]),u=n.useCallback(o=>{e.rule.cluster=o,l({rule:e.rule})},[e]),_=n.useCallback(o=>{e.rule.attribute=o,l({rule:e.rule})},[e]),m=n.useCallback(o=>{const{name:c,valueAsNumber:p}=o.target;e.rule[c]=p,l({rule:e.rule})},[e]),g=n.useCallback(()=>{a({...e.rule,maximum_report_interval:65535})},[e,a]),x=n.useMemo(()=>j(t),[t]),f=n.useMemo(()=>{const o=new Set,c=new Set;e.rule.cluster&&c.add(e.rule.cluster);const p=t.endpoints[Number.parseInt(e.rule.endpoint,10)];if(p){for(const d of p.clusters.output)c.add(d);for(const d of p.clusters.input)c.has(d)||o.add(d)}return[{name:"available",clusters:c},{name:"possible",clusters:o}]},[t.endpoints,e.rule.endpoint,e.rule.cluster]),v=n.useMemo(()=>y.every(o=>e.rule[o]!==void 0&&e.rule[o]!==""),[e]);return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[r.jsx(S,{label:i("endpoint"),disabled:!s.isNew,values:x,value:e.rule.endpoint,onChange:b,required:!0}),r.jsx(w,{label:i("cluster"),disabled:!e.rule.endpoint,clusters:f,value:e.rule.cluster,onChange:u,required:!0}),r.jsx(E,{label:i("attribute"),disabled:!e.rule.cluster,value:e.rule.attribute,cluster:e.rule.cluster,device:t,onChange:_,required:!0}),r.jsx(C,{name:"minimum_report_interval",label:i("min_rep_interval"),type:"number",value:e.rule.minimum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"maximum_report_interval",label:i("max_rep_interval"),type:"number",value:e.rule.maximum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"reportable_change",label:i("min_rep_change"),type:"number",value:e.rule.reportable_change,onChange:m,required:!0}),r.jsxs("fieldset",{className:"fieldset",children:[r.jsx("legend",{className:"fieldset-legend",children:i("actions")}),r.jsxs("div",{className:"join join-horizontal",children:[r.jsx(R,{className:"btn btn-primary join-item",item:e.rule,onClick:a,disabled:!v,children:i("common:apply")}),e.rule.isNew?null:r.jsx(N,{title:i("common:disable"),className:"btn btn-error join-item",onClick:g,modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("common:disable")})]})]})]}),r.jsx("div",{className:"divider"})]})}),I=s=>{const t=[];for(const a in s.endpoints){const e=s.endpoints[a];for(const l of e.configured_reportings)t.push({...l,endpoint:a})}return t},M=s=>`${s.isNew}-${s.endpoint}-${s.cluster}-${s.attribute}`;function P(s){const{device:t}=s,{sendMessage:a}=n.useContext(k),[e,l]=n.useState({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),i=n.useMemo(()=>I(t),[t]);n.useEffect(()=>{l({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""})},[t.ieee_address]);const b=n.useCallback(async u=>{const{cluster:_,endpoint:m,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v}=u;await a("bridge/request/device/configure_reporting",{id:t.ieee_address,endpoint:m,cluster:_,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v,option:{}})},[a,t.ieee_address]);return r.jsx("div",{className:"flex flex-col",children:[...i,e].map(u=>r.jsx(q,{rule:u,device:t,onApply:b},M(u)))})}export{P as default};
1
+ import{r as n,b as h,ab as j,j as r,B as R,Q as N,W as k}from"./index-BR27vzZL.js";import{I as C}from"./InputField-BHHQh6No.js";import{C as w,A as E}from"./ClusterSinglePicker-CdWuBd2I.js";import{E as S}from"./EndpointPicker-DeqXMnZV.js";import"./envs-CRUy-_iG.js";import"./SelectField-BMt7uZuS.js";const y=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],q=n.memo(({rule:s,device:t,onApply:a})=>{const[e,l]=n.useState({rule:s}),{t:i}=h(["zigbee","common"]);n.useEffect(()=>{l({rule:s})},[s]);const b=n.useCallback(o=>{e.rule.endpoint=o,l({rule:e.rule})},[e]),u=n.useCallback(o=>{e.rule.cluster=o,l({rule:e.rule})},[e]),_=n.useCallback(o=>{e.rule.attribute=o,l({rule:e.rule})},[e]),m=n.useCallback(o=>{const{name:c,valueAsNumber:p}=o.target;e.rule[c]=p,l({rule:e.rule})},[e]),g=n.useCallback(()=>{a({...e.rule,maximum_report_interval:65535})},[e,a]),x=n.useMemo(()=>j(t),[t]),f=n.useMemo(()=>{const o=new Set,c=new Set;e.rule.cluster&&c.add(e.rule.cluster);const p=t.endpoints[Number.parseInt(e.rule.endpoint,10)];if(p){for(const d of p.clusters.output)c.add(d);for(const d of p.clusters.input)c.has(d)||o.add(d)}return[{name:"available",clusters:c},{name:"possible",clusters:o}]},[t.endpoints,e.rule.endpoint,e.rule.cluster]),v=n.useMemo(()=>y.every(o=>e.rule[o]!==void 0&&e.rule[o]!==""),[e]);return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"flex flex-row flex-wrap gap-2",children:[r.jsx(S,{label:i("endpoint"),disabled:!s.isNew,values:x,value:e.rule.endpoint,onChange:b,required:!0}),r.jsx(w,{label:i("cluster"),disabled:!e.rule.endpoint,clusters:f,value:e.rule.cluster,onChange:u,required:!0}),r.jsx(E,{label:i("attribute"),disabled:!e.rule.cluster,value:e.rule.attribute,cluster:e.rule.cluster,device:t,onChange:_,required:!0}),r.jsx(C,{name:"minimum_report_interval",label:i("min_rep_interval"),type:"number",value:e.rule.minimum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"maximum_report_interval",label:i("max_rep_interval"),type:"number",value:e.rule.maximum_report_interval,onChange:m,required:!0}),r.jsx(C,{name:"reportable_change",label:i("min_rep_change"),type:"number",value:e.rule.reportable_change,onChange:m,required:!0}),r.jsxs("fieldset",{className:"fieldset",children:[r.jsx("legend",{className:"fieldset-legend",children:i("actions")}),r.jsxs("div",{className:"join join-horizontal",children:[r.jsx(R,{className:"btn btn-primary join-item",item:e.rule,onClick:a,disabled:!v,children:i("common:apply")}),e.rule.isNew?null:r.jsx(N,{title:i("common:disable"),className:"btn btn-error join-item",onClick:g,modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("common:disable")})]})]})]}),r.jsx("div",{className:"divider"})]})}),I=s=>{const t=[];for(const a in s.endpoints){const e=s.endpoints[a];for(const l of e.configured_reportings)t.push({...l,endpoint:a})}return t},M=s=>`${s.isNew}-${s.endpoint}-${s.cluster}-${s.attribute}`;function P(s){const{device:t}=s,{sendMessage:a}=n.useContext(k),[e,l]=n.useState({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),i=n.useMemo(()=>I(t),[t]);n.useEffect(()=>{l({isNew:t.ieee_address,reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""})},[t.ieee_address]);const b=n.useCallback(async u=>{const{cluster:_,endpoint:m,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v}=u;await a("bridge/request/device/configure_reporting",{id:t.ieee_address,endpoint:m,cluster:_,attribute:g,minimum_report_interval:x,maximum_report_interval:f,reportable_change:v,option:{}})},[a,t.ieee_address]);return r.jsx("div",{className:"flex flex-col",children:[...i,e].map(u=>r.jsx(q,{rule:u,device:t,onApply:b},M(u)))})}export{P as default};
@@ -0,0 +1 @@
1
+ import{a,j as e}from"./index-BR27vzZL.js";import{A as s,R as m}from"./RecallRemove-cc5YDCh9.js";import"./envs-CRUy-_iG.js";import"./DashboardFeatureWrapper-CijVXPwd.js";import"./Feature-Ciu4ZwFB.js";import"./DisplayValue-BOG1_pD9.js";import"./_createCompounder-j5DHCRsI.js";import"./InputField-BHHQh6No.js";import"./SelectField-BMt7uZuS.js";function j(t){const i=a(r=>r.deviceStates[t.device.friendly_name]??{});return e.jsxs("div",{className:"flex flex-row flex-wrap justify-around items-start gap-3 my-2",children:[e.jsx("div",{children:e.jsx(s,{target:t.device,deviceState:i})}),e.jsx("div",{children:e.jsx(m,{target:t.device})})]})}export{j as default};
Binary file
@@ -1 +1 @@
1
- import{r as d,j as e}from"./index-BccmZcnH.js";const n=d.memo(s=>{const{label:l,detail:a,onChange:t,children:r,...c}=s;return e.jsxs("fieldset",{className:"fieldset",children:[l&&e.jsx("legend",{className:"fieldset-legend",children:l}),e.jsx("select",{className:`select${s.required?" validator":""}`,onChange:t,...c,children:r}),a&&e.jsx("span",{className:"label",children:a})]})});export{n as S};
1
+ import{r as d,j as e}from"./index-BR27vzZL.js";const n=d.memo(s=>{const{label:l,detail:a,onChange:t,children:r,...c}=s;return e.jsxs("fieldset",{className:"fieldset",children:[l&&e.jsx("legend",{className:"fieldset-legend",children:l}),e.jsx("select",{className:`select${s.required?" validator":""}`,onChange:t,...c,children:r}),a&&e.jsx("span",{className:"label",children:a})]})});export{n as S};
@@ -1 +1 @@
1
- import{r as n,W as d,a as f,b as p,j as e,F as b,M as u,ck as g,B as x}from"./index-BccmZcnH.js";import{S as l}from"./SettingsList-FVZvadEn.js";import"./envs-CRUy-_iG.js";import"./CheckboxField-Dx2QxjzC.js";import"./InputField-CUhAi55r.js";import"./NumberField-Bu5IU0l2.js";import"./SelectField-Ca16rphE.js";const r="main",h=[r,"frontend","mqtt","serial","availability","ota","advanced","homeassistant"];function T(){const{sendMessage:o}=n.useContext(d),a=f(t=>t.bridgeInfo),[s,m]=n.useState(r),{t:i}=p("settings"),c=n.useCallback(async t=>{s===r?await o("bridge/request/options",{options:t}):await o("bridge/request/options",{options:{[s]:t}})},[o,s]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(b,{icon:u,size:"2xl"}),e.jsx("a",{href:g,target:"_blank",rel:"noreferrer",className:"link link-hover",children:i("common:read_the_docs_info")})]}),e.jsxs("div",{className:"tabs tabs-border",children:[h.map(t=>e.jsx(x,{className:`tab${s===t?" tab-active":""}`,"aria-current":"page",item:t,onClick:m,children:i(t)},t)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:s===r?e.jsx(l,{schema:a.config_schema,data:a.config,set:c,rootOnly:!0}):e.jsx(l,{schema:a.config_schema.properties[s],data:a.config[s],set:c})})]})]})}export{T as default};
1
+ import{r as n,W as d,a as f,b as p,j as e,F as b,I as u,cc as g,B as x}from"./index-BR27vzZL.js";import{S as l}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";const r="main",h=[r,"frontend","mqtt","serial","availability","ota","advanced","homeassistant"];function N(){const{sendMessage:o}=n.useContext(d),a=f(t=>t.bridgeInfo),[s,m]=n.useState(r),{t:i}=p("settings"),c=n.useCallback(async t=>{s===r?await o("bridge/request/options",{options:t}):await o("bridge/request/options",{options:{[s]:t}})},[o,s]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"alert alert-info alert-soft mb-3",role:"alert",children:[e.jsx(b,{icon:u,size:"2xl"}),e.jsx("a",{href:g,target:"_blank",rel:"noreferrer",className:"link link-hover",children:i("common:read_the_docs_info")})]}),e.jsxs("div",{className:"tabs tabs-border",children:[h.map(t=>e.jsx(x,{className:`tab${s===t?" tab-active":""}`,"aria-current":"page",item:t,onClick:m,children:i(t)},t)),e.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:s===r?e.jsx(l,{schema:a.config_schema,data:a.config,set:c,rootOnly:!0}):e.jsx(l,{schema:a.config_schema.properties[s],data:a.config[s],set:c})})]})]})}export{N as default};
@@ -1 +1 @@
1
- import{r as x,j as s,B as b,F as p,z as C,cl as w,a_ as N,b as v}from"./index-BccmZcnH.js";import{C as V}from"./CheckboxField-Dx2QxjzC.js";import{I as $}from"./InputField-CUhAi55r.js";import{N as S}from"./NumberField-Bu5IU0l2.js";import{S as h}from"./SelectField-Ca16rphE.js";const A=x.memo(a=>{const{defaultValues:n,label:r,detail:c,type:i,onSubmit:f}=a,[t,o]=x.useState(n||[]);x.useEffect(()=>{o(n||[])},[n]);const d=x.useCallback(()=>{t.length>0?o([...t,""]):o([""])},[t]),e=x.useCallback(()=>f(i==="number"?t.filter(l=>typeof l=="number"):t.filter(l=>!!l)),[i,t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:t.map((l,m)=>s.jsxs("div",{className:"join min-w-xs",children:[s.jsx("input",{className:"input join-item",onBlur:u=>{const j=Array.from(t);j[m]=i==="number"?u.target.value?u.target.valueAsNumber:"":u.target.value,o(j)},type:i,defaultValue:Number.isNaN(l)?"":l}),s.jsx(b,{className:"btn btn-error btn-outline join-item",onClick:()=>{const u=Array.from(t);u.splice(m,1),o(u)},children:s.jsx(p,{icon:C})})]},`${l}-${m}`))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:d,className:"btn btn-sm btn-square btn-success ms-2",children:s.jsx(p,{icon:w})}),s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),c&&s.jsx("p",{className:"label",children:c})]})]})}),F=x.memo(a=>{const{names:n,label:r,detail:c,defaultsChecked:i,onSubmit:f}=a,[t,o]=x.useState(i||[]);x.useEffect(()=>{o(i||[])},[i]);const d=x.useCallback(l=>{let m=Array.from(t);l.target.checked?m.push(l.target.name):m=m.filter(u=>u!==l.target.name),o(m)},[t]),e=x.useCallback(()=>f(t),[t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:n.map(l=>s.jsxs("label",{className:"label",children:[s.jsx("input",{name:l,className:"checkbox",type:"checkbox",onChange:d,checked:t.includes(l)}),l]},l))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),s.jsx("span",{className:"label",children:c})]})]})}),E=(a,n,r,c,i,f,t)=>{let o=n.type;if(Array.isArray(o))o=o.find(e=>e!=="null");else if(n.oneOf)return;const d=`${i}-${a}-${n.type}-${n.title}`;switch(o){case"boolean":return s.jsx(V,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.checked}),required:f,defaultChecked:r??!1},d);case"integer":case"number":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:Number.parseInt(e.target.value,10)}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx(S,{name:a,label:a,detail:t,onSubmit:(e,l)=>l&&c({[a]:e===""?null:e}),min:n.minimum,max:n.maximum,required:f,defaultValue:r??""},d);case"string":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx($,{name:a,label:a,detail:t,type:"text",onBlur:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??""},d);case"array":{const e=n.items;if(e&&typeof e=="object"&&"type"in e){if(e.enum)return s.jsx(F,{names:e.enum,label:a,detail:t,onSubmit:l=>c({[a]:l}),defaultsChecked:r??[]});if(e.type==="string"||e.type==="number")return s.jsx(A,{defaultValues:r??[],label:a,detail:t,onSubmit:l=>c({[a]:l}),type:e.type})}}}},g=(a,n,r,c,i,f=[],t=!1)=>{const o=[],d=[];for(const e in n){const l=n[e];if(!(typeof l=="boolean"||l.readOnly))if(l.properties)t||d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:l.title||e}),g(a,l.properties,r[e]||{},async m=>c({[e]:m}),i+1,l.required)]},`${i}-${e}`));else{const m=l.oneOf?.find(u=>typeof u=="object"&&u.properties);if(m)(e!=="log_syslog"||r.log_output.includes("syslog"))&&d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:m.title||l.title||e}),g(a,m.properties,r[e]||{},async u=>c({[e]:u}),i+1,m.required)]},`${i}-${e}`));else{const u=E(e,l,r[e],c,i,f.includes(e),l.description?a(l.description,{defaultValue:l.description}):void 0);u&&o.push(s.jsx("div",{className:`list-row p-3 ${i!==0?` ps-${4+i*4}`:""}`,children:u},`${i}-${e}`))}}}return d.length>0?o.concat(d):o};function y({schema:a,data:n,set:r,rootOnly:c}){const{t:i}=v("settingsSchemaDescriptions");return s.jsx("div",{className:"list bg-base-100",children:a.properties&&g(i,a.properties,n,r,0,a.required,c)})}export{y as S};
1
+ import{r as x,j as s,B as b,F as p,z as C,cd as w,aS as N,b as v}from"./index-BR27vzZL.js";import{C as V}from"./CheckboxField-DL452sgi.js";import{I as $}from"./InputField-BHHQh6No.js";import{N as S}from"./NumberField-W0nLjOub.js";import{S as h}from"./SelectField-BMt7uZuS.js";const A=x.memo(a=>{const{defaultValues:n,label:r,detail:c,type:i,onSubmit:f}=a,[t,o]=x.useState(n||[]);x.useEffect(()=>{o(n||[])},[n]);const d=x.useCallback(()=>{t.length>0?o([...t,""]):o([""])},[t]),e=x.useCallback(()=>f(i==="number"?t.filter(l=>typeof l=="number"):t.filter(l=>!!l)),[i,t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:t.map((l,m)=>s.jsxs("div",{className:"join min-w-xs",children:[s.jsx("input",{className:"input join-item",onBlur:u=>{const j=Array.from(t);j[m]=i==="number"?u.target.value?u.target.valueAsNumber:"":u.target.value,o(j)},type:i,defaultValue:Number.isNaN(l)?"":l}),s.jsx(b,{className:"btn btn-error btn-outline join-item",onClick:()=>{const u=Array.from(t);u.splice(m,1),o(u)},children:s.jsx(p,{icon:C})})]},`${l}-${m}`))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:d,className:"btn btn-sm btn-square btn-success ms-2",children:s.jsx(p,{icon:w})}),s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),c&&s.jsx("p",{className:"label",children:c})]})]})}),F=x.memo(a=>{const{names:n,label:r,detail:c,defaultsChecked:i,onSubmit:f}=a,[t,o]=x.useState(i||[]);x.useEffect(()=>{o(i||[])},[i]);const d=x.useCallback(l=>{let m=Array.from(t);l.target.checked?m.push(l.target.name):m=m.filter(u=>u!==l.target.name),o(m)},[t]),e=x.useCallback(()=>f(t),[t,f]);return s.jsxs("fieldset",{className:"fieldset gap-2",children:[r&&s.jsx("legend",{className:"fieldset-legend",children:r}),s.jsx("div",{className:"flex flex-row flex-wrap gap-2",children:n.map(l=>s.jsxs("label",{className:"label",children:[s.jsx("input",{name:l,className:"checkbox",type:"checkbox",onChange:d,checked:t.includes(l)}),l]},l))}),s.jsxs("div",{className:"flex flex-row flex-wrap gap-2 items-center mt-1",children:[s.jsx(b,{onClick:e,className:"btn btn-sm btn-square btn-primary",children:s.jsx(p,{icon:N})}),s.jsx("span",{className:"label",children:c})]})]})}),E=(a,n,r,c,i,f,t)=>{let o=n.type;if(Array.isArray(o))o=o.find(e=>e!=="null");else if(n.oneOf)return;const d=`${i}-${a}-${n.type}-${n.title}`;switch(o){case"boolean":return s.jsx(V,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.checked}),required:f,defaultChecked:r??!1},d);case"integer":case"number":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:Number.parseInt(e.target.value,10)}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx(S,{name:a,label:a,detail:t,onSubmit:(e,l)=>l&&c({[a]:e===""?null:e}),min:n.minimum,max:n.maximum,required:f,defaultValue:r??""},d);case"string":return n.enum?s.jsxs(h,{name:a,label:a,detail:t,onChange:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??"",children:[s.jsx("option",{value:"",disabled:!0,children:"-"}),n.enum.map(e=>s.jsx("option",{value:e,children:e},e))]},d):s.jsx($,{name:a,label:a,detail:t,type:"text",onBlur:e=>!e.target.validationMessage&&c({[a]:e.target.value}),required:f,defaultValue:r??""},d);case"array":{const e=n.items;if(e&&typeof e=="object"&&"type"in e){if(e.enum)return s.jsx(F,{names:e.enum,label:a,detail:t,onSubmit:l=>c({[a]:l}),defaultsChecked:r??[]});if(e.type==="string"||e.type==="number")return s.jsx(A,{defaultValues:r??[],label:a,detail:t,onSubmit:l=>c({[a]:l}),type:e.type})}}}},g=(a,n,r,c,i,f=[],t=!1)=>{const o=[],d=[];for(const e in n){const l=n[e];if(!(typeof l=="boolean"||l.readOnly))if(l.properties)t||d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:l.title||e}),g(a,l.properties,r[e]||{},async m=>c({[e]:m}),i+1,l.required)]},`${i}-${e}`));else{const m=l.oneOf?.find(u=>typeof u=="object"&&u.properties);if(m)(e!=="log_syslog"||r.log_output.includes("syslog"))&&d.push(s.jsxs("div",{className:"list",children:[s.jsx("h3",{className:"list-row p-3 text-lg",children:m.title||l.title||e}),g(a,m.properties,r[e]||{},async u=>c({[e]:u}),i+1,m.required)]},`${i}-${e}`));else{const u=E(e,l,r[e],c,i,f.includes(e),l.description?a(l.description,{defaultValue:l.description}):void 0);u&&o.push(s.jsx("div",{className:`list-row p-3 ${i!==0?` ps-${4+i*4}`:""}`,children:u},`${i}-${e}`))}}}return d.length>0?o.concat(d):o};function y({schema:a,data:n,set:r,rootOnly:c}){const{t:i}=v("settingsSchemaDescriptions");return s.jsx("div",{className:"list bg-base-100",children:a.properties&&g(i,a.properties,n,r,0,a.required,c)})}export{y as S};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./About-DUcioXxf.js","./index-BccmZcnH.js","./envs-CRUy-_iG.js","./index-LLsrh-Ne.css","./snakeCase-DyM1sm95.js","./_createCompounder-DOVBRgWx.js","./Health-k9TFUygX.js","./DeviceImage-BGLcF_MT.js","./index-DTwwc0px.js","./Table-7bVWMaUR.js","./DebouncedInput-Z7O3YrBh.js","./format-B4QuVfKv.js","./Frontend-BnyqZoL6.js","./CheckboxField-Dx2QxjzC.js","./InputField-CUhAi55r.js","./NumberField-Bu5IU0l2.js","./SelectField-Ca16rphE.js","./Settings-VzG6rJhJ.js","./SettingsList-FVZvadEn.js","./Tools-CvTVTFeR.js","./Bridge-BBUz-kJW.js","./Json-CSdW868a.js","./DevConsole-CZhPDzNO.js","./TextareaField-DP_hdh3q.js","./Donate-9qZhLZau.js"])))=>i.map(i=>d[i]);
2
- import{u,d as _,b as d,r as a,j as s,N as o,F as n,e as b,ab as x,ac as j,k as g,ad as p,ae as v,q as N,af as T,_ as r}from"./index-BccmZcnH.js";import"./envs-CRUy-_iG.js";const f=a.lazy(async()=>await r(()=>import("./About-DUcioXxf.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),h=a.lazy(async()=>await r(()=>import("./Health-k9TFUygX.js"),__vite__mapDeps([6,1,2,3,7,8,9,10,11]),import.meta.url)),E=a.lazy(async()=>await r(()=>import("./Frontend-BnyqZoL6.js"),__vite__mapDeps([12,1,2,3,13,14,15,16]),import.meta.url)),y=a.lazy(async()=>await r(()=>import("./Settings-VzG6rJhJ.js"),__vite__mapDeps([17,1,2,3,18,13,14,15,16]),import.meta.url)),P=a.lazy(async()=>await r(()=>import("./Tools-CvTVTFeR.js"),__vite__mapDeps([19,1,2,3,14,8]),import.meta.url)),A=a.lazy(async()=>await r(()=>import("./Bridge-BBUz-kJW.js"),__vite__mapDeps([20,1,2,3,21]),import.meta.url)),D=a.lazy(async()=>await r(()=>import("./DevConsole-CZhPDzNO.js"),__vite__mapDeps([22,1,2,3,14,16,23]),import.meta.url)),w=a.lazy(async()=>await r(()=>import("./Donate-9qZhLZau.js"),__vite__mapDeps([24,1,2,3]),import.meta.url));function R(){const c=u(),{tab:i}=_(),{t}=d(["settings","navbar"]);a.useEffect(()=>{i||c("/settings/about",{replace:!0})},[i,c]);const l=a.useMemo(()=>{switch(i){case"about":return s.jsx(f,{});case"health":return s.jsx(h,{});case"frontend":return s.jsx(E,{});case"settings":return s.jsx(y,{});case"tools":return s.jsx(P,{});case"bridge":return s.jsx(A,{});case"dev-console":return s.jsx(D,{});case"donate":return s.jsx(w,{})}return""},[i]),e=({isActive:m})=>m?"tab tab-active":"tab";return s.jsxs("div",{className:"tabs tabs-border",children:[s.jsxs(o,{to:"/settings/about",className:e,children:[s.jsx(n,{icon:b,className:"me-2"}),t("about")]}),s.jsxs(o,{to:"/settings/health",className:e,children:[s.jsx(n,{icon:x,className:"me-2"}),t("health")]}),s.jsxs(o,{to:"/settings/frontend",className:e,children:[s.jsx(n,{icon:j,className:"me-2"}),t("frontend")]}),s.jsxs(o,{to:"/settings/settings",className:e,children:[s.jsx(n,{icon:g,className:"me-2"}),t("settings")]}),s.jsxs(o,{to:"/settings/tools",className:e,children:[s.jsx(n,{icon:p,className:"me-2"}),t("tools")]}),s.jsxs(o,{to:"/settings/bridge",className:e,children:[s.jsx(n,{icon:v,className:"me-2"}),t("bridge")]}),s.jsxs(o,{to:"/settings/dev-console",className:e,children:[s.jsx(n,{icon:N,className:"me-2"}),t("dev_console")]}),s.jsxs(o,{to:"/settings/donate",className:e,children:[s.jsx(n,{icon:T,className:"me-2"}),t("donate")]}),s.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})}export{R as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./About-CZjwfsW-.js","./index-BR27vzZL.js","./envs-CRUy-_iG.js","./index-LLsrh-Ne.css","./snakeCase-Dntle38p.js","./_createCompounder-j5DHCRsI.js","./Health-Dky6SDKV.js","./DeviceImage-C9XLyJZx.js","./index-Dn4wgen8.js","./Table-YMU-GTDx.js","./DebouncedInput-Oo6AI4sw.js","./format-DWdgGQ5D.js","./Frontend-DTfIT-Dy.js","./CheckboxField-DL452sgi.js","./InputField-BHHQh6No.js","./NumberField-W0nLjOub.js","./SelectField-BMt7uZuS.js","./Settings-gGZGfvuj.js","./SettingsList-D8N_9F77.js","./Tools-pHwI6wAE.js","./Bridge-DkgYFiG9.js","./Json-4L3vY4kO.js","./DevConsole-DidHFg9P.js","./TextareaField-RnWDqrAI.js","./Donate-DesLNYDr.js"])))=>i.map(i=>d[i]);
2
+ import{u,d as _,b as d,r as a,j as s,N as o,F as n,e as b,a3 as x,a4 as j,k as g,a5 as p,a6 as v,q as N,a7 as T,_ as r}from"./index-BR27vzZL.js";import"./envs-CRUy-_iG.js";const h=a.lazy(async()=>await r(()=>import("./About-CZjwfsW-.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),f=a.lazy(async()=>await r(()=>import("./Health-Dky6SDKV.js"),__vite__mapDeps([6,1,2,3,7,8,9,10,11]),import.meta.url)),E=a.lazy(async()=>await r(()=>import("./Frontend-DTfIT-Dy.js"),__vite__mapDeps([12,1,2,3,13,14,15,16]),import.meta.url)),y=a.lazy(async()=>await r(()=>import("./Settings-gGZGfvuj.js"),__vite__mapDeps([17,1,2,3,18,13,14,15,16]),import.meta.url)),P=a.lazy(async()=>await r(()=>import("./Tools-pHwI6wAE.js"),__vite__mapDeps([19,1,2,3,14,8]),import.meta.url)),A=a.lazy(async()=>await r(()=>import("./Bridge-DkgYFiG9.js"),__vite__mapDeps([20,1,2,3,21]),import.meta.url)),D=a.lazy(async()=>await r(()=>import("./DevConsole-DidHFg9P.js"),__vite__mapDeps([22,1,2,3,14,16,23]),import.meta.url)),w=a.lazy(async()=>await r(()=>import("./Donate-DesLNYDr.js"),__vite__mapDeps([24,1,2,3]),import.meta.url));function R(){const c=u(),{tab:i}=_(),{t}=d(["settings","navbar"]);a.useEffect(()=>{i||c("/settings/about",{replace:!0})},[i,c]);const l=a.useMemo(()=>{switch(i){case"about":return s.jsx(h,{});case"health":return s.jsx(f,{});case"frontend":return s.jsx(E,{});case"settings":return s.jsx(y,{});case"tools":return s.jsx(P,{});case"bridge":return s.jsx(A,{});case"dev-console":return s.jsx(D,{});case"donate":return s.jsx(w,{})}return""},[i]),e=({isActive:m})=>m?"tab tab-active":"tab";return s.jsxs("div",{className:"tabs tabs-border",children:[s.jsxs(o,{to:"/settings/about",className:e,children:[s.jsx(n,{icon:b,className:"me-2"}),t("about")]}),s.jsxs(o,{to:"/settings/health",className:e,children:[s.jsx(n,{icon:x,className:"me-2"}),t("health")]}),s.jsxs(o,{to:"/settings/frontend",className:e,children:[s.jsx(n,{icon:j,className:"me-2"}),t("frontend")]}),s.jsxs(o,{to:"/settings/settings",className:e,children:[s.jsx(n,{icon:g,className:"me-2"}),t("settings")]}),s.jsxs(o,{to:"/settings/tools",className:e,children:[s.jsx(n,{icon:p,className:"me-2"}),t("tools")]}),s.jsxs(o,{to:"/settings/bridge",className:e,children:[s.jsx(n,{icon:v,className:"me-2"}),t("bridge")]}),s.jsxs(o,{to:"/settings/dev-console",className:e,children:[s.jsx(n,{icon:N,className:"me-2"}),t("dev_console")]}),s.jsxs(o,{to:"/settings/donate",className:e,children:[s.jsx(n,{icon:T,className:"me-2"}),t("donate")]}),s.jsx("div",{className:"tab-content block h-full bg-base-100 p-3",children:l})]})}export{R as default};
@@ -0,0 +1 @@
1
+ import{a as r,j as a}from"./index-BR27vzZL.js";import{J as i}from"./Json-4L3vY4kO.js";import"./envs-CRUy-_iG.js";function c(t){const{device:e}=t,o=r(s=>s.deviceStates[e.friendly_name]??{});return a.jsx(i,{obj:o})}export{c as default};
Binary file
@@ -1,4 +1,4 @@
1
- import{r as y,b as ae,s as O,j as v,F as re,f as he,B as _e,A as Fe,c8 as $e,c9 as xe}from"./index-BccmZcnH.js";import{D as Ve}from"./DebouncedInput-Z7O3YrBh.js";/**
1
+ import{r as y,b as ae,s as O,j as v,F as re,f as he,B as _e,A as Fe,c0 as $e,c1 as xe}from"./index-BR27vzZL.js";import{D as Ve}from"./DebouncedInput-Oo6AI4sw.js";/**
2
2
  * table-core
3
3
  *
4
4
  * Copyright (c) TanStack
Binary file
@@ -1 +1 @@
1
- import{r as i,j as e}from"./index-BccmZcnH.js";const x=i.memo(a=>{const{label:s,detail:l,onChange:t,onBlur:r,...d}=a;return e.jsxs("fieldset",{className:"fieldset",children:[s&&e.jsx("legend",{className:"fieldset-legend",children:s}),e.jsx("textarea",{className:`textarea${a.required?" validator":""}`,onChange:t,onBlur:r,...d}),l&&e.jsx("div",{className:"label",children:l})]})});export{x as T};
1
+ import{r as i,j as e}from"./index-BR27vzZL.js";const x=i.memo(a=>{const{label:s,detail:l,onChange:t,onBlur:r,...d}=a;return e.jsxs("fieldset",{className:"fieldset",children:[s&&e.jsx("legend",{className:"fieldset-legend",children:s}),e.jsx("textarea",{className:`textarea${a.required?" validator":""}`,onChange:t,onBlur:r,...d}),l&&e.jsx("div",{className:"label",children:l})]})});export{x as T};
@@ -0,0 +1 @@
1
+ import{y as f,K as _,b as j,r as l,j as e,M as k,B as d,W as w,a as b,a2 as h,az as C,Q as y,cf as N}from"./index-BR27vzZL.js";import{I as v}from"./InputField-BHHQh6No.js";import{g as I}from"./index-Dn4wgen8.js";import"./envs-CRUy-_iG.js";const S=f.create(r=>{const{addInstallCode:n}=r,o=_(),{t:a}=j(["settings","common"]),[c,m]=l.useState("");return e.jsx(k,{isOpen:o.visible,title:a("add_install_code"),footer:e.jsxs(e.Fragment,{children:[e.jsx(d,{className:"btn btn-neutral",onClick:o.remove,children:a("common:cancel")}),e.jsx(d,{className:"btn btn-primary ms-1",onClick:async()=>{c&&(o.remove(),await n(c))},children:a("add_install_code")})]}),children:e.jsx("div",{className:"flex flex-col gap-2",children:e.jsx(v,{name:"install_code",label:a("install_code"),onChange:i=>m(i.target.value),value:c,type:"text",required:!0})})})});async function z(r){return await new Promise((n,o)=>{const a=new FileReader;a.onloadend=()=>n(a.result),a.onerror=c=>o(c),a.readAsDataURL(r)})}async function B(r){const n=await fetch(r);if(n.ok){const o=await n.blob();return await z(o)}return Promise.reject(n.status)}function q(r){const[n,o]=l.useState("none"),{devices:a}=r,[c,m]=l.useState({}),{sendMessage:i}=l.useContext(w),{t:u}=j("settings"),s=l.useCallback(async t=>{m(x=>({...x,[t.ieee_address]:"init"}));const p=I(t),g=await B(p);return await i("bridge/request/device/options",{id:t.ieee_address,options:{icon:g}}),m(x=>({...x,[t.ieee_address]:"done"})),!0},[i]);switch(l.useEffect(()=>{if(n==="start"){for(const t of a)t.type!=="Coordinator"&&s(t).catch(p=>{console.error("Error localising image",p),m(g=>({...g,[t.ieee_address]:"error"}))}).then();o("inprogress")}},[n,a,s]),n){case"none":return e.jsx(d,{className:"btn btn-primary join-item",onClick:()=>o("start"),children:u("localise_images")});case"inprogress":return e.jsx("ul",{className:"menu menu-xs bg-base-200 max-w-xs w-full join-item",children:a.map(t=>e.jsxs("li",{className:"flex-row justify-between items-center border-b py-0.5",children:[t.friendly_name,e.jsx("span",{className:"badge badge-xs",children:u(`common:${c[t.ieee_address]}`)})]},t.ieee_address))});case"done":return e.jsx("div",{children:u("common:unknown")})}return e.jsx("div",{children:u("zigbee:unknown")})}function F(){const{sendMessage:r}=l.useContext(w),n=b(s=>s.setBackupPreparing),o=b(s=>s.bridgeInfo),a=b(s=>s.backup),c=b(s=>s.preparingBackup),m=b(s=>s.devices),{t:i}=j(["settings","common"]),u=l.useCallback(()=>{const s=h(new Date).replace(/[\s_:]/g,"-"),t=`z2m-backup.${o.version}.${s}.zip`;C(`data:application/zip;base64,${a}`,t)},[a,o.version]);return e.jsxs("div",{className:"join join-vertical",children:[e.jsx(y,{className:"btn btn-error join-item mb-2",onClick:async()=>await r("bridge/request/restart",""),title:i("restart_zigbee2mqtt"),modalDescription:i("common:dialog_confirmation_prompt"),modalCancelLabel:i("common:cancel"),children:i("restart_zigbee2mqtt")}),e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>await N(b.getState(),"state.json"),children:i("download_state")}),c?e.jsx(d,{className:"btn btn-primary join-item disabled",children:e.jsx("span",{className:"loading loading-dots loading-xl"})}):a?e.jsx(d,{className:"btn btn-primary join-item",onClick:u,children:i("download_z2m_backup")}):e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>{n(),await r("bridge/request/backup","")},children:i("request_z2m_backup")}),e.jsx(d,{className:"btn btn-primary join-item",onClick:async()=>await f.show(S,{addInstallCode:async s=>await r("bridge/request/install_code/add",{value:s})}),children:i("add_install_code")}),e.jsx(q,{devices:m})]})}export{F as default};
Binary file
@@ -0,0 +1 @@
1
+ import{r as a,W as _,a as n,b as C,j as s,L as P,B as u,F as x,X as j,Y as F,Z as S}from"./index-BR27vzZL.js";import{T}from"./Table-YMU-GTDx.js";import"./envs-CRUy-_iG.js";import"./DebouncedInput-Oo6AI4sw.js";function q(){const{sendMessage:t}=a.useContext(_),m=n(e=>e.setTouchlinkIdentifyInProgress),g=n(e=>e.setTouchlinkResetInProgress),f=n(e=>e.setTouchlinkScan),y=n(e=>e.touchlinkDevices),l=n(e=>e.devices),o=n(e=>e.touchlinkIdentifyInProgress),c=n(e=>e.touchlinkResetInProgress),h=n(e=>e.touchlinkScanInProgress),d=o||c,{t:i}=C(["touchlink","common","zigbee"]),p=a.useCallback(async()=>{f({inProgress:!0,devices:[]}),await t("bridge/request/touchlink/scan","")},[t,f]),k=a.useCallback(async e=>{m(!0),await t("bridge/request/touchlink/identify",e)},[t,m]),b=a.useCallback(async e=>{g(!0),await t("bridge/request/touchlink/factory_reset",e)},[t,g]),I=a.useMemo(()=>[{id:"ieee_address",header:i("zigbee:ieee_address"),accessorFn:e=>e.ieee_address,cell:({row:{original:e}})=>l.find(r=>r.ieee_address===e.ieee_address)?s.jsx(P,{to:`/device/${e.ieee_address}/info`,className:"link link-hover",children:e.ieee_address}):e.ieee_address,filterFn:"includesString",sortingFn:(e,r)=>e.original.ieee_address.localeCompare(r.original.ieee_address)},{id:"friendly_name",header:i("common:friendly_name"),accessorFn:e=>l.find(r=>r.ieee_address===e.ieee_address)?.friendly_name,filterFn:"includesString"},{id:"channel",header:i("zigbee:channel"),accessorFn:e=>e.channel,filterFn:"includesString"},{id:"actions",header:"",cell:({row:{original:e}})=>s.jsxs("div",{className:"join join-horizontal",children:[s.jsx(u,{disabled:d,item:e,title:i("identify"),className:"btn btn-square btn-outline btn-primary join-item",onClick:k,children:s.jsx(x,{icon:o?j:F,spin:o})}),s.jsx(u,{disabled:d,item:e,title:i("factory_reset"),className:"btn btn-square btn-outline btn-error join-item",onClick:b,children:s.jsx(x,{icon:c?j:S,spin:c})})]}),enableSorting:!1,enableColumnFilter:!1}],[o,c,d,l,i,k,b]);return h?s.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:s.jsx("span",{className:"loading loading-infinity loading-xl"})}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex flex-row flex-wrap justify-center items-center gap-2 mb-3",children:s.jsx(u,{className:"btn btn-primary",onClick:p,disabled:h,children:i("scan")})}),s.jsx(T,{id:"touchlink-devices",columns:I,data:y})]})}export{q as default};
@@ -1 +1 @@
1
- import{r as i,b as s,j as l,L as a,ap as d}from"./index-BccmZcnH.js";const r=e=>{const o="[/| |:]",n=new RegExp(o,"g");return e.replace(n,"_")},f=i.memo(({device:e})=>{const{t:o}=s("zigbee");let n=e.model_id||o("unknown"),t=d;if(e.supported&&e.definition){const p=[encodeURIComponent(e.definition.vendor.toLowerCase()),encodeURIComponent(e.definition.model.toLowerCase())].join("-");t=`https://www.zigbee2mqtt.io/devices/${encodeURIComponent(r(e.definition.model))}.html#${encodeURIComponent(r(p))}`,n=e.definition.model}return l.jsx(a,{target:"_blank",rel:"noopener noreferrer",to:t,className:"link link-hover",children:n})}),c=i.memo(({device:e})=>{const{t:o}=s("zigbee");let n=o("unsupported"),t=d;return e.supported&&e.definition&&(t=`https://www.zigbee2mqtt.io/supported-devices/#v=${encodeURIComponent(e.definition.vendor)}`,n=e.definition.vendor),l.jsx(a,{target:"_blank",rel:"noopener noreferrer",to:t,className:"link link-hover",children:n})});export{f as M,c as V};
1
+ import{r as i,b as s,j as l,L as a,ag as d}from"./index-BR27vzZL.js";const r=e=>{const o="[/| |:]",n=new RegExp(o,"g");return e.replace(n,"_")},f=i.memo(({device:e})=>{const{t:o}=s("zigbee");let n=e.model_id||o("unknown"),t=d;if(e.supported&&e.definition){const p=[encodeURIComponent(e.definition.vendor.toLowerCase()),encodeURIComponent(e.definition.model.toLowerCase())].join("-");t=`https://www.zigbee2mqtt.io/devices/${encodeURIComponent(r(e.definition.model))}.html#${encodeURIComponent(r(p))}`,n=e.definition.model}return l.jsx(a,{target:"_blank",rel:"noopener noreferrer",to:t,className:"link link-hover",children:n})}),c=i.memo(({device:e})=>{const{t:o}=s("zigbee");let n=o("unsupported"),t=d;return e.supported&&e.definition&&(t=`https://www.zigbee2mqtt.io/supported-devices/#v=${encodeURIComponent(e.definition.vendor)}`,n=e.definition.vendor),l.jsx(a,{target:"_blank",rel:"noopener noreferrer",to:t,className:"link link-hover",children:n})});export{f as M,c as V};
@@ -1 +1 @@
1
- import{c2 as Rr,c3 as pr,c4 as vr,c5 as _r}from"./index-BccmZcnH.js";var x,Z;function hr(){if(Z)return x;Z=1;function u(r,e,a,o){var n=-1,i=r==null?0:r.length;for(o&&i&&(a=r[++n]);++n<i;)a=e(a,r[n],n,r);return a}return x=u,x}var b,j;function lr(){if(j)return b;j=1;function u(r){return function(e){return r?.[e]}}return b=u,b}var g,N;function mr(){if(N)return g;N=1;var u=lr(),r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},e=u(r);return g=e,g}var R,P;function yr(){if(P)return R;P=1;function u(r,e){for(var a=-1,o=r==null?0:r.length,n=Array(o);++a<o;)n[a]=e(r[a],a,r);return n}return R=u,R}var p,G;function Sr(){if(G)return p;G=1;var u=Rr(),r=pr(),e="[object Symbol]";function a(o){return typeof o=="symbol"||r(o)&&u(o)==e}return p=a,p}var v,H;function qr(){if(H)return v;H=1;var u=vr(),r=yr(),e=_r(),a=Sr(),o=u?u.prototype:void 0,n=o?o.toString:void 0;function i(d){if(typeof d=="string")return d;if(e(d))return r(d,i)+"";if(a(d))return n?n.call(d):"";var f=d+"";return f=="0"&&1/d==-1/0?"-0":f}return v=i,v}var _,J;function Q(){if(J)return _;J=1;var u=qr();function r(e){return e==null?"":u(e)}return _=r,_}var h,V;function Ar(){if(V)return h;V=1;var u=mr(),r=Q(),e=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a="\\u0300-\\u036f",o="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=a+o+n,d="["+i+"]",f=RegExp(d,"g");function c(t){return t=r(t),t&&t.replace(e,u).replace(f,"")}return h=c,h}var l,Y;function Or(){if(Y)return l;Y=1;var u=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function r(e){return e.match(u)||[]}return l=r,l}var m,B;function Cr(){if(B)return m;B=1;var u=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function r(e){return u.test(e)}return m=r,m}var y,$;function Ur(){if($)return y;$=1;var u="\\ud800-\\udfff",r="\\u0300-\\u036f",e="\\ufe20-\\ufe2f",a="\\u20d0-\\u20ff",o=r+e+a,n="\\u2700-\\u27bf",i="a-z\\xdf-\\xf6\\xf8-\\xff",d="\\xac\\xb1\\xd7\\xf7",f="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",c="\\u2000-\\u206f",t=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",A="A-Z\\xc0-\\xd6\\xd8-\\xde",X="\\ufe0e\\ufe0f",O=d+f+c+t,C="['’]",U="["+O+"]",rr="["+o+"]",W="\\d+",ur="["+n+"]",L="["+i+"]",T="[^"+u+O+W+n+i+A+"]",er="\\ud83c[\\udffb-\\udfff]",nr="(?:"+rr+"|"+er+")",ar="[^"+u+"]",M="(?:\\ud83c[\\udde6-\\uddff]){2}",E="[\\ud800-\\udbff][\\udc00-\\udfff]",s="["+A+"]",or="\\u200d",I="(?:"+L+"|"+T+")",ir="(?:"+s+"|"+T+")",k="(?:"+C+"(?:d|ll|m|re|s|t|ve))?",w="(?:"+C+"(?:D|LL|M|RE|S|T|VE))?",z=nr+"?",D="["+X+"]?",dr="(?:"+or+"(?:"+[ar,M,E].join("|")+")"+D+z+")*",fr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",tr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",sr=D+z+dr,cr="(?:"+[ur,M,E].join("|")+")"+sr,xr=RegExp([s+"?"+L+"+"+k+"(?="+[U,s,"$"].join("|")+")",ir+"+"+w+"(?="+[U,s+I,"$"].join("|")+")",s+"?"+I+"+"+k,s+"+"+w,tr,fr,W,cr].join("|"),"g");function br(gr){return gr.match(xr)||[]}return y=br,y}var S,F;function Wr(){if(F)return S;F=1;var u=Or(),r=Cr(),e=Q(),a=Ur();function o(n,i,d){return n=e(n),i=d?void 0:i,i===void 0?r(n)?a(n):u(n):n.match(i)||[]}return S=o,S}var q,K;function Tr(){if(K)return q;K=1;var u=hr(),r=Ar(),e=Wr(),a="['’]",o=RegExp(a,"g");function n(i){return function(d){return u(e(r(d).replace(o,"")),i,"")}}return q=n,q}export{Tr as a,Sr as b,Q as r};
1
+ import{bW as Rr,bX as pr,bY as vr,bZ as _r}from"./index-BR27vzZL.js";var c,D;function hr(){if(D)return c;D=1;function u(r,e,a,o){var n=-1,i=r==null?0:r.length;for(o&&i&&(a=r[++n]);++n<i;)a=e(a,r[n],n,r);return a}return c=u,c}var b,j;function lr(){if(j)return b;j=1;function u(r){return function(e){return r?.[e]}}return b=u,b}var g,N;function mr(){if(N)return g;N=1;var u=lr(),r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},e=u(r);return g=e,g}var R,P;function yr(){if(P)return R;P=1;function u(r,e){for(var a=-1,o=r==null?0:r.length,n=Array(o);++a<o;)n[a]=e(r[a],a,r);return n}return R=u,R}var p,G;function Sr(){if(G)return p;G=1;var u=Rr(),r=pr(),e="[object Symbol]";function a(o){return typeof o=="symbol"||r(o)&&u(o)==e}return p=a,p}var v,H;function qr(){if(H)return v;H=1;var u=vr(),r=yr(),e=_r(),a=Sr(),o=u?u.prototype:void 0,n=o?o.toString:void 0;function i(d){if(typeof d=="string")return d;if(e(d))return r(d,i)+"";if(a(d))return n?n.call(d):"";var f=d+"";return f=="0"&&1/d==-1/0?"-0":f}return v=i,v}var _,J;function X(){if(J)return _;J=1;var u=qr();function r(e){return e==null?"":u(e)}return _=r,_}var h,Y;function Ar(){if(Y)return h;Y=1;var u=mr(),r=X(),e=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a="\\u0300-\\u036f",o="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=a+o+n,d="["+i+"]",f=RegExp(d,"g");function x(t){return t=r(t),t&&t.replace(e,u).replace(f,"")}return h=x,h}var l,V;function Or(){if(V)return l;V=1;var u=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function r(e){return e.match(u)||[]}return l=r,l}var m,B;function Cr(){if(B)return m;B=1;var u=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function r(e){return u.test(e)}return m=r,m}var y,$;function Wr(){if($)return y;$=1;var u="\\ud800-\\udfff",r="\\u0300-\\u036f",e="\\ufe20-\\ufe2f",a="\\u20d0-\\u20ff",o=r+e+a,n="\\u2700-\\u27bf",i="a-z\\xdf-\\xf6\\xf8-\\xff",d="\\xac\\xb1\\xd7\\xf7",f="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",x="\\u2000-\\u206f",t=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",A="A-Z\\xc0-\\xd6\\xd8-\\xde",Q="\\ufe0e\\ufe0f",O=d+f+x+t,C="['’]",W="["+O+"]",rr="["+o+"]",U="\\d+",ur="["+n+"]",L="["+i+"]",T="[^"+u+O+U+n+i+A+"]",er="\\ud83c[\\udffb-\\udfff]",nr="(?:"+rr+"|"+er+")",ar="[^"+u+"]",M="(?:\\ud83c[\\udde6-\\uddff]){2}",E="[\\ud800-\\udbff][\\udc00-\\udfff]",s="["+A+"]",or="\\u200d",I="(?:"+L+"|"+T+")",ir="(?:"+s+"|"+T+")",Z="(?:"+C+"(?:d|ll|m|re|s|t|ve))?",k="(?:"+C+"(?:D|LL|M|RE|S|T|VE))?",w=nr+"?",z="["+Q+"]?",dr="(?:"+or+"(?:"+[ar,M,E].join("|")+")"+z+w+")*",fr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",tr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",sr=z+w+dr,xr="(?:"+[ur,M,E].join("|")+")"+sr,cr=RegExp([s+"?"+L+"+"+Z+"(?="+[W,s,"$"].join("|")+")",ir+"+"+k+"(?="+[W,s+I,"$"].join("|")+")",s+"?"+I+"+"+Z,s+"+"+k,tr,fr,U,xr].join("|"),"g");function br(gr){return gr.match(cr)||[]}return y=br,y}var S,F;function Ur(){if(F)return S;F=1;var u=Or(),r=Cr(),e=X(),a=Wr();function o(n,i,d){return n=e(n),i=d?void 0:i,i===void 0?r(n)?a(n):u(n):n.match(i)||[]}return S=o,S}var q,K;function Tr(){if(K)return q;K=1;var u=hr(),r=Ar(),e=Ur(),a="['’]",o=RegExp(a,"g");function n(i){return function(d){return u(e(r(d).replace(o,"")),i,"")}}return q=n,q}export{Tr as a,Sr as b,X as r};
@@ -1 +1 @@
1
- import{ca as n}from"./index-BccmZcnH.js";var c=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function s(e,a){var t=e<0?1:0;e=Math.abs(e);for(var o=e,r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return e=Math.floor(e),r*=2,e>(r===0?9:1)&&(r+=1),a(e,r,o)[t].replace("%s",e.toString())}function v(e,a){var t=new Date;return(+t-+l(e))/1e3}var m=function(e,a,t){var o=v(e);return s(o,n(a))};export{m as f};
1
+ import{c2 as n}from"./index-BR27vzZL.js";var c=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function s(e,a){var t=e<0?1:0;e=Math.abs(e);for(var o=e,r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return e=Math.floor(e),r*=2,e>(r===0?9:1)&&(r+=1),a(e,r,o)[t].replace("%s",e.toString())}function v(e,a){var t=new Date;return(+t-+l(e))/1e3}var m=function(e,a,t){var o=v(e);return s(o,n(a))};export{m as f};
@@ -0,0 +1,3 @@
1
+ y@dQ���+ekVT|���m�fpBa�)��l�ؖ��4 ��?� �ﮧ��Mm��,��G@8ݔ��������4L%����7{�{�LQ)�tX�^8��������O�D��b��j��g���
2
+ jm[�i� ��P����S��؉�2����E-ҽ.��"��>����UY��PMI lr��%���P풃����A����
3
+ %�������/����M����M1�VFj�$�T���L���f}�,V ����C�i���o���� ���K�y�?�