zigbee2mqtt-frontend 0.9.10 → 0.9.12

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 (91) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/assets/{Availability-3af40fab.js → Availability-0b6a7470.js} +1 -1
  3. package/dist/assets/Availability-0b6a7470.js.br +0 -0
  4. package/dist/assets/{CodeEditor-7c720b92.js → CodeEditor-4d10e3fb.js} +1 -1
  5. package/dist/assets/CodeEditor-4d10e3fb.js.br +0 -0
  6. package/dist/assets/{ConnectedDevicePage-e65ab035.js → ConnectedDevicePage-2402e2c7.js} +1 -1
  7. package/dist/assets/ConnectedDevicePage-2402e2c7.js.br +0 -0
  8. package/dist/assets/{ConnectedMap-a96098c3.js → ConnectedMap-5eca6cd4.js} +1 -1
  9. package/dist/assets/ConnectedMap-5eca6cd4.js.br +0 -0
  10. package/dist/assets/Dashboard-1fdfcd09.js +1 -0
  11. package/dist/assets/Dashboard-1fdfcd09.js.br +0 -0
  12. package/dist/assets/{DashboardDevice-5ee69e85.js → DashboardDevice-b6b886f9.js} +1 -1
  13. package/dist/assets/DashboardDevice-b6b886f9.js.br +0 -0
  14. package/dist/assets/{DashboardFeatureWrapper-1872fc34.js → DashboardFeatureWrapper-78f262ab.js} +1 -1
  15. package/dist/assets/DashboardFeatureWrapper-78f262ab.js.br +0 -0
  16. package/dist/assets/{DeviceImage-a014c977.js → DeviceImage-3224ab45.js} +1 -1
  17. package/dist/assets/DeviceImage-3224ab45.js.br +0 -0
  18. package/dist/assets/{GroupPage-8dc2aca7.js → GroupPage-c29a511a.js} +1 -1
  19. package/dist/assets/GroupPage-c29a511a.js.br +0 -0
  20. package/dist/assets/{ReactTableCom-a75a090d.js → ReactTableCom-08d89c82.js} +1 -1
  21. package/dist/assets/ReactTableCom-08d89c82.js.br +0 -0
  22. package/dist/assets/{RecallRemove-be1c705a.js → RecallRemove-cd469d78.js} +1 -1
  23. package/dist/assets/RecallRemove-cd469d78.js.br +0 -0
  24. package/dist/assets/_baseSet-888e18a2.js +1 -0
  25. package/dist/assets/_getAllKeysIn-8686d686.js +1 -0
  26. package/dist/assets/{bootstrap-5.esm-52a977ef.js → bootstrap-5.esm-881034b3.js} +1 -1
  27. package/dist/assets/bootstrap-5.esm-881034b3.js.br +0 -0
  28. package/dist/assets/{index-323f362a.js → index-00b1aedb.js} +1 -1
  29. package/dist/assets/index-00b1aedb.js.br +0 -0
  30. package/dist/assets/index-028a8158.js +1 -0
  31. package/dist/assets/index-028a8158.js.br +0 -0
  32. package/dist/assets/index-4006ab47.js +1 -0
  33. package/dist/assets/index-4006ab47.js.br +0 -0
  34. package/dist/assets/{index-ae4b79d5.js → index-6cc670b0.js} +1 -1
  35. package/dist/assets/index-6cc670b0.js.br +0 -0
  36. package/dist/assets/{index-28ce4a18.js → index-72aba774.js} +1 -1
  37. package/dist/assets/{index-1f3e7dcc.js → index-834a87bc.js} +2 -2
  38. package/dist/assets/index-834a87bc.js.br +0 -0
  39. package/dist/assets/{index-31204834.js → index-95f33b43.js} +13 -13
  40. package/dist/assets/index-95f33b43.js.br +0 -0
  41. package/dist/assets/{index-82c1d7f0.js → index-a48539f3.js} +1 -1
  42. package/dist/assets/index-a48539f3.js.br +0 -0
  43. package/dist/assets/{index-2487f74c.js → index-acca6567.js} +1 -1
  44. package/dist/assets/index-acca6567.js.br +0 -0
  45. package/dist/assets/{index-38a40fdc.js → index-ded2114e.js} +1 -1
  46. package/dist/assets/index-ded2114e.js.br +0 -0
  47. package/dist/assets/{intersection-195a70b5.js → intersection-63690476.js} +1 -1
  48. package/dist/assets/intersection-63690476.js.br +0 -0
  49. package/dist/assets/{isEqual-d94cac69.js → isEqual-de503c30.js} +1 -1
  50. package/dist/assets/{jszip.min-54482ccd.js → jszip.min-ce8dff46.js} +3 -3
  51. package/dist/assets/jszip.min-ce8dff46.js.br +0 -0
  52. package/dist/assets/{persist-57fe68c1.js → persist-bbadcfc3.js} +1 -1
  53. package/dist/assets/persist-bbadcfc3.js.br +0 -0
  54. package/dist/assets/{rjsf-translation-fields-6be6779f.js → rjsf-translation-fields-c370230c.js} +1 -1
  55. package/dist/assets/{spinner-ebc58fff.js → spinner-043b8481.js} +1 -1
  56. package/dist/assets/vendor-links-080cff6a.js +1 -0
  57. package/dist/assets/vendor-links-080cff6a.js.br +0 -0
  58. package/dist/index.html +1 -1
  59. package/dist/index.html.br +0 -0
  60. package/package.json +1 -1
  61. package/dist/assets/Availability-3af40fab.js.br +0 -0
  62. package/dist/assets/CodeEditor-7c720b92.js.br +0 -0
  63. package/dist/assets/ConnectedDevicePage-e65ab035.js.br +0 -0
  64. package/dist/assets/ConnectedMap-a96098c3.js.br +0 -0
  65. package/dist/assets/Dashboard-d3da00e6.js +0 -1
  66. package/dist/assets/Dashboard-d3da00e6.js.br +0 -0
  67. package/dist/assets/DashboardDevice-5ee69e85.js.br +0 -0
  68. package/dist/assets/DashboardFeatureWrapper-1872fc34.js.br +0 -0
  69. package/dist/assets/DeviceImage-a014c977.js.br +0 -0
  70. package/dist/assets/GroupPage-8dc2aca7.js.br +0 -0
  71. package/dist/assets/ReactTableCom-a75a090d.js.br +0 -0
  72. package/dist/assets/RecallRemove-be1c705a.js.br +0 -0
  73. package/dist/assets/_baseSet-f833c1d5.js +0 -1
  74. package/dist/assets/_getAllKeysIn-6a01525f.js +0 -1
  75. package/dist/assets/bootstrap-5.esm-52a977ef.js.br +0 -0
  76. package/dist/assets/index-1f3e7dcc.js.br +0 -0
  77. package/dist/assets/index-2487f74c.js.br +0 -0
  78. package/dist/assets/index-31204834.js.br +0 -0
  79. package/dist/assets/index-323f362a.js.br +0 -0
  80. package/dist/assets/index-38a40fdc.js.br +0 -0
  81. package/dist/assets/index-5b25f68e.js +0 -1
  82. package/dist/assets/index-5b25f68e.js.br +0 -0
  83. package/dist/assets/index-82c1d7f0.js.br +0 -0
  84. package/dist/assets/index-ae4b79d5.js.br +0 -0
  85. package/dist/assets/index-c9a4a107.js +0 -1
  86. package/dist/assets/index-c9a4a107.js.br +0 -0
  87. package/dist/assets/intersection-195a70b5.js.br +0 -0
  88. package/dist/assets/jszip.min-54482ccd.js.br +0 -0
  89. package/dist/assets/persist-57fe68c1.js.br +0 -0
  90. package/dist/assets/vendor-links-74296de2.js +0 -1
  91. package/dist/assets/vendor-links-74296de2.js.br +0 -0
Binary file
@@ -1 +1 @@
1
- import{N as m,e as p,f as u,j as e,M as h,h as g,k as x,m as b,r as j,B as l,w as N,c as G,a as f,u as y,L as d}from"./index-31204834.js";import{T as w}from"./ReactTableCom-a75a090d.js";import"./persist-57fe68c1.js";const _=m.create(o=>{const{name:r,onRename:a}=o,s=p(),[t,i]=u({friendlyName:r}),n=async()=>{await a(r,t.friendlyName),s.remove()};return e.jsxs(h,{isOpen:s.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:"Rename group"}),e.jsx("small",{children:r})]}),e.jsx(x,{children:e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Friendly name"}),e.jsx("input",{name:"friendlyName",onChange:i,type:"text",className:"form-control",value:t.friendlyName})]})}),e.jsxs(b,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:s.remove,children:"Close"}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:n,children:"Save changes"})]})]})});function v(o){const{t:r}=y(["groups"]),{groups:a,removeGroup:s,renameGroup:t}=o,i=[{id:"group_id",Header:r("group_id"),accessor:n=>n.id,Cell:({row:{original:n}})=>e.jsx(d,{to:`/group/${n.id}`,children:n.id})},{id:"friendly_name",Header:r("group_name"),accessor:n=>n.friendly_name,Cell:({row:{original:n}})=>e.jsx(d,{to:`/group/${n.id}`,children:n.friendly_name})},{id:"members",Header:r("group_members"),accessor:n=>n.members.length??0},{id:"scenes",Header:r("group_scenes"),accessor:n=>{var c;return((c=n.scenes)==null?void 0:c.length)??0}},{Header:"",id:"actions",Cell:({row:{original:n}})=>e.jsxs("div",{className:"btn-group float-right btn-group-sm",role:"group",children:[e.jsx(l,{className:"btn btn-primary",onClick:()=>m.show(_,{name:n.friendly_name,onRename:t}),title:r("rename_group"),children:e.jsx("i",{className:"fa fa-edit"})}),e.jsx(l,{prompt:!0,title:r("remove_group"),item:n.friendly_name,onClick:s,className:"btn btn-danger",children:e.jsx("i",{className:"fa fa-trash"})})]})}];return e.jsx("div",{className:"card",children:e.jsx(w,{id:"groups",columns:i,data:a})})}class C extends j.Component{constructor(){super(...arguments),this.state={newGroupName:"",newGroupId:void 0},this.changeHandler=r=>{const{name:a,value:s}=r.target;this.setState({[a]:s})},this.onGroupCreateSubmit=()=>{const{newGroupName:r,newGroupId:a}=this.state,{createGroup:s}=this.props;s(r,a)},this.renameGroup=(r,a)=>{const{renameGroup:s}=this.props;s(r,a)}}renderGroupCreationForm(){const{t:r}=this.props,{newGroupName:a,newGroupId:s}=this.state;return e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"input-group",children:[e.jsx("label",{htmlFor:"newGroupName",className:"sr-only",children:r("new_group_name")}),e.jsx("input",{onChange:this.changeHandler,value:a,required:!0,type:"text",name:"newGroupName",className:"form-control",id:"newGroupName",placeholder:r("new_group_name_placeholder")}),e.jsx("label",{htmlFor:"newGroupName",className:"sr-only",children:r("new_group_id")}),e.jsx("input",{onChange:this.changeHandler,value:s===void 0?"":s,type:"number",name:"newGroupId",className:"form-control",id:"newGroupId",placeholder:r("new_group_id_placeholder")}),e.jsx(l,{onClick:this.onGroupCreateSubmit,className:"btn btn-primary form-control",children:r("create_group")})]})})})}render(){const{groups:r,removeGroup:a,renameGroup:s}=this.props;return e.jsxs(e.Fragment,{children:[this.renderGroupCreationForm(),e.jsx(v,{groups:r,removeGroup:a,renameGroup:s})]})}}const F=["groups","devices","deviceStates","bridgeInfo"],M=N("groups")(G(F,f)(C));export{M as ConnectedGroupsPage,C as GroupsPage};
1
+ import{N as m,e as p,h as u,j as e,M as h,k as g,m as x,n as b,r as j,B as l,w as N,c as G,a as y,u as f,L as d}from"./index-95f33b43.js";import{T as w}from"./ReactTableCom-08d89c82.js";import"./persist-bbadcfc3.js";const _=m.create(o=>{const{name:r,onRename:a}=o,s=p(),[t,i]=u({friendlyName:r}),n=async()=>{await a(r,t.friendlyName),s.remove()};return e.jsxs(h,{isOpen:s.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:"Rename group"}),e.jsx("small",{children:r})]}),e.jsx(x,{children:e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Friendly name"}),e.jsx("input",{name:"friendlyName",onChange:i,type:"text",className:"form-control",value:t.friendlyName})]})}),e.jsxs(b,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:s.remove,children:"Close"}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:n,children:"Save changes"})]})]})});function v(o){const{t:r}=f(["groups"]),{groups:a,removeGroup:s,renameGroup:t}=o,i=[{id:"group_id",Header:r("group_id"),accessor:n=>n.id,Cell:({row:{original:n}})=>e.jsx(d,{to:`/group/${n.id}`,children:n.id})},{id:"friendly_name",Header:r("group_name"),accessor:n=>n.friendly_name,Cell:({row:{original:n}})=>e.jsx(d,{to:`/group/${n.id}`,children:n.friendly_name})},{id:"members",Header:r("group_members"),accessor:n=>n.members.length??0},{id:"scenes",Header:r("group_scenes"),accessor:n=>{var c;return((c=n.scenes)==null?void 0:c.length)??0}},{Header:"",id:"actions",Cell:({row:{original:n}})=>e.jsxs("div",{className:"btn-group float-right btn-group-sm",role:"group",children:[e.jsx(l,{className:"btn btn-primary",onClick:()=>m.show(_,{name:n.friendly_name,onRename:t}),title:r("rename_group"),children:e.jsx("i",{className:"fa fa-edit"})}),e.jsx(l,{prompt:!0,title:r("remove_group"),item:n.friendly_name,onClick:s,className:"btn btn-danger",children:e.jsx("i",{className:"fa fa-trash"})})]})}];return e.jsx("div",{className:"card",children:e.jsx(w,{id:"groups",columns:i,data:a})})}class C extends j.Component{constructor(){super(...arguments),this.state={newGroupName:"",newGroupId:void 0},this.changeHandler=r=>{const{name:a,value:s}=r.target;this.setState({[a]:s})},this.onGroupCreateSubmit=()=>{const{newGroupName:r,newGroupId:a}=this.state,{createGroup:s}=this.props;s(r,a)},this.renameGroup=(r,a)=>{const{renameGroup:s}=this.props;s(r,a)}}renderGroupCreationForm(){const{t:r}=this.props,{newGroupName:a,newGroupId:s}=this.state;return e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"input-group",children:[e.jsx("label",{htmlFor:"newGroupName",className:"sr-only",children:r("new_group_name")}),e.jsx("input",{onChange:this.changeHandler,value:a,required:!0,type:"text",name:"newGroupName",className:"form-control",id:"newGroupName",placeholder:r("new_group_name_placeholder")}),e.jsx("label",{htmlFor:"newGroupName",className:"sr-only",children:r("new_group_id")}),e.jsx("input",{onChange:this.changeHandler,value:s===void 0?"":s,type:"number",name:"newGroupId",className:"form-control",id:"newGroupId",placeholder:r("new_group_id_placeholder")}),e.jsx(l,{onClick:this.onGroupCreateSubmit,className:"btn btn-primary form-control",children:r("create_group")})]})})})}render(){const{groups:r,removeGroup:a,renameGroup:s}=this.props;return e.jsxs(e.Fragment,{children:[this.renderGroupCreationForm(),e.jsx(v,{groups:r,removeGroup:a,renameGroup:s})]})}}const F=["groups","devices","deviceStates","bridgeInfo"],M=N("groups")(G(F,y)(C));export{M as ConnectedGroupsPage,C as GroupsPage};
Binary file
@@ -1 +1 @@
1
- import{q as N,v as S,u as T,j as t,w as _,r as y,B as u,o as C,c as D,a as z,x as F,F as I,y as O,z as q,A as B,C as A,b as K}from"./index-31204834.js";import{_ as E,w as P,T as V,c as j}from"./bootstrap-5.esm-52a977ef.js";import{T as R,D as M}from"./rjsf-translation-fields-6be6779f.js";import{p as L}from"./powerSourceTypeToTranslationKey-452dac81.js";import{S as $}from"./spinner-ebc58fff.js";import{g as G}from"./index-28ce4a18.js";import"./_getAllKeysIn-6a01525f.js";import"./isEqual-d94cac69.js";import"./intersection-195a70b5.js";const U={"ui:order":["base_topic","server","user","password","client_id","version","ca","key","cert","reject_unauthorized","*"]},H={"ui:order":["port","adapter","disable_led","*"]},J={"ui:order":["port","host","*"]},Z={mqtt:U,serial:H,frontend:J};var Y=E,x=S;function W(a,e,s,n){return a==null?[]:(x(e)||(e=e==null?[]:[e]),s=n?void 0:s,x(s)||(s=s==null?[]:[s]),Y(a,e,s))}var Q=W;const X=N(Q);function ee(a){const{devices:e}=a,{t:s}=T(["stats","zigbee"]),n=Object.values(e).filter(i=>i.type!=="Coordinator"),r=n.length,o={byType:{},byPowerSource:{},byVendor:{},byModel:{}};n.forEach(i=>{o.byModel[i.model_id]=(o.byModel[i.model_id]||0)+1,o.byVendor[i.manufacturer]=(o.byVendor[i.manufacturer]||0)+1,o.byType[s(i.type)]=(o.byType[s(i.type)]||0)+1;const l=s("zigbee:"+L(i.power_source));o.byPowerSource[l]=(o.byPowerSource[l]||0)+1});const m=Object.entries(o).map(([i,l])=>t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsxs("div",{className:"ms-2 me-auto",children:[t.jsx("div",{className:"fw-bold",children:s(i)}),X(Object.entries(l),[([c,d])=>d],["desc"]).map(([c,d])=>t.jsxs("div",{children:[c,": ",d]},c))]})},i));return t.jsxs("ol",{className:"list-group list-group-numbered",children:[t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsx("div",{className:"ms-2 me-auto",children:t.jsxs("div",{className:"fw-bold",children:[s("total")," ",r]})})}),m]})}const te={access:"public",cache:""},se=["*.css"],ne="zigbee2mqtt-frontend",re="0.9.10",oe="GPL-3.0",ie={build:"vite build",preview:"vite preview",start:"vite dev",postversion:"git push && git push --tags",version:"conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",pretty:'prettier --write "./**/*.{js,jsx,tsx}"',postinstall:"husky install",prepublishOnly:"pinst --disable",postpublish:"pinst --enable","test:unit":"vitest","test:coverage":"vitest run --coverage","test:eslint":'eslint "./src/**/*.{js,jsx,tsx}"',"test:pretty":'prettier --check "./**/*.{js,jsx,tsx}"',"i18n:download":"node download_translations.js","i18n:trim":"node trim-locales.js"},ae=["dist/*"],ce={node:">=20.11"},le={"@codemirror/lang-javascript":"^6.2.2","@commitlint/cli":"~17.8.0","@commitlint/config-conventional":"~17.8.0","@ebay/nice-modal-react":"~1.2.13","@eslint/js":"^9.18.0","@fortawesome/fontawesome-free":"~6.6.0","@rjsf/bootstrap-5":"https://github.com/nurikk/fileshare/blob/main/rjsf-bootstrap-5-4.2.0.tgz?raw=true","@rjsf/core":"~4.2.3","@testing-library/jest-dom":"^6.3.0","@testing-library/react":"^14.1.2","@testing-library/user-event":"^14.5.2","@types/color-convert":"~2.0.1","@types/d3-drag":"~3.0.4","@types/d3-force":"~3.0.6","@types/d3-selection":"~3.0.7","@types/d3-zoom":"~3.0.5","@types/events":"~3.0.1","@types/file-saver":"~2.0.5","@types/json-schema":"~7.0.13","@types/lodash":"~4.17.0","@types/react":"~18.2.24","@types/react-dom":"~18.2.8","@types/react-router-dom":"~5.3.3","@types/react-table":"~7.7.16","@types/react-transition-group":"~4.4.7","@types/reconnectingwebsocket":"~1.0.8","@types/ws":"~8.5.6","@uiw/codemirror-theme-github":"^4.21.24","@uiw/react-codemirror":"^4.21.24","@vitejs/plugin-react":"~4.3.0","@vitest/coverage-v8":"^1.2.2",bootstrap:"~5.3.2",classnames:"~2.5.0","color-convert":"~2.0.1","conventional-changelog-cli":"~4.1.0","d3-drag":"~3.0.0","d3-force":"~3.0.0","d3-force-reuse":"~1.0.1","d3-selection":"~3.0.0","d3-zoom":"~3.0.0","deep-diff":"~1.0.2","deep-object-diff":"~1.1.9",eslint:"~9.18.0","eslint-config-prettier":"~10.0.1","eslint-plugin-react":"~7.37.4","eslint-plugin-react-refresh":"~0.4.18",events:"~3.3.0","file-saver":"~2.0.5",globals:"~15.14.0",husky:"~8.0.3",i18next:"~23.5.1","i18next-browser-languagedetector":"~7.1.0",jsdom:"^24.0.0",jszip:"~3.10.1",lodash:"~4.17.21",notyf:"~3.10.0",pinst:"~3.0.0",prettier:"~3.4.2",react:"~18.2.0","react-app-polyfill":"~3.0.0","react-bootstrap":"~2.10.0","react-css-theme-switcher":"~0.3.0","react-dom":"~18.2.0","react-i18next":"~13.5.0","react-image":"~4.1.0","react-notifications-component":"^4.0.1","react-router-dom":"~5.3.4","react-table":"~7.8.0","react-transition-group":"~4.4.5","reconnecting-websocket":"~4.4.0",sass:"~1.71.0",store2:"^2.14.2","timeago.js":"~4.0.2",typescript:"~5.2.2","typescript-eslint":"^8.21.0",unistore:"~3.5.2",vite:"~4.5.0","vite-plugin-compression":"~0.5.1","vite-plugin-html":"~3.2.0","vite-plugin-sass-dts":"~1.3.11",vitest:"^1.3.1",ws:"~8.17.0"},de="index.js",me={hooks:{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},pe={type:"git",url:"git+https://github.com/nurikk/zigbee2mqtt-frontend.git"},ue={url:"https://github.com/nurikk/zigbee2mqtt-frontend/issues"},ge="pnpm@10.5.2",he={onlyBuiltDependencies:["core-js","core-js-pure","esbuild"]},fe={private:!1,publishConfig:te,sideEffects:se,name:ne,version:re,license:oe,scripts:ie,eslintIgnore:ae,engines:ce,devDependencies:le,main:de,husky:me,repository:pe,bugs:ue,packageManager:ge,pnpm:he};function be(a){return new Promise((e,s)=>{const n=new FileReader;n.onloadend=()=>e(n.result),n.onerror=r=>s(r),n.readAsDataURL(a)})}async function ye(a){const e=await fetch(a);if(e.ok){const s=await e.blob();return be(s)}else return Promise.reject(e.status)}async function ve(a,e){for(const s of a)try{if(await e(s))return!0}catch{}return!1}function je(a){const[e,s]=y.useState("none"),{setDeviceOptions:n,t:r,devices:o}=a,[m,i]=y.useState({});async function l(c){if(i(p=>({...p,[c.ieee_address]:"init"})),!await ve([G],async p=>{const g=p(c),h=await ye(g);return await n(c.ieee_address,{icon:h}),i(f=>({...f,[c.ieee_address]:"done"})),!0}))throw new Error("Failed to localise image")}switch(y.useEffect(()=>{if(e=="start"){for(const c of Object.values(o).filter(d=>d.type!=="Coordinator"))l(c).catch(d=>{console.log("Error localising image",d),i(p=>({...p,[c.ieee_address]:"error"}))}).then();s("inprogress")}},[e]),e){case"none":return t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:()=>s("start"),children:r("localise_images")});case"inprogress":return t.jsx("div",{children:Object.values(o).map(c=>t.jsxs("div",{children:[c.friendly_name," ",m[c.ieee_address]]},c.ieee_address))});case"done":return t.jsx("div",{children:"done"})}return t.jsx("div",{children:"Unknown"})}const xe=_(["settings"])(je),ke=P(V),b="main",w=["groups","devices","device_options","ban","whitelist","map_options"],_e=["object","array"],k=(a,e={},s={})=>{e.required&&(e.required=e.required.filter(n=>a.includes(n)));for(const n of a)e.properties&&delete e.properties[n],delete s[n];return{schema:e,config:s}},we=[t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/nurikk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for frontend&emoji=🍺&slug=nurikk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"nurikk"),t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for zigbee2mqtt&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"koenkk")].sort(()=>Math.random()-.5),Ne=(a,e)=>_e.includes(e.type)&&!w.includes(a)||(e&&e.oneOf?e.oneOf.length>0:!1);class Se extends y.Component{constructor(){super(...arguments),this.state={keyName:b},this.settingsFormData={},this.downloadBackup=()=>{const{backup:e,bridgeInfo:s}=this.props,n=F(new Date).replace(/[\s_:]/g,"-"),r=`z2m-backup.${s.version}.${n}.zip`;I.saveAs(`data:application/zip;base64,${e}`,r)},this.addInstallCode=()=>{const{t:e,addInstallCode:s}=this.props,n=prompt(e("enter_install_code"));n&&s(n)},this.onSettingsSave=e=>{const{formData:s}=e,{updateBridgeConfig:n}=this.props,{keyName:r}=this.state,o=O(this.getSettingsInfo().currentConfig,s);n(r===b?o:{[r]:o})}}renderCategoriesTabs(){const{t:e}=this.props;return t.jsx("ul",{className:"nav nav-tabs",children:q.map(s=>t.jsx("li",{className:"nav-item",children:t.jsx(B,{className:"nav-link",activeClassName:"active",to:s.url,children:e(s.translationKey)})},s.url))})}render(){return t.jsxs("div",{className:"tab",children:[this.renderCategoriesTabs(),t.jsx("div",{className:"tab-content h-100 p-0 p-sm-3",children:t.jsx("div",{className:"tab-pane fade show active",children:this.renderSwitcher()})})]})}renderSwitcher(){const{match:e}=this.props,{tab:s}=e.params;switch(s){case"tools":return this.renderTools();case"bridge":return this.renderBridgeInfo();case"about":return this.renderAbout();case"settings":return this.renderSettings();case"donate":return this.renderDonate();case"translate":return this.renderTranslate();default:return t.jsx(A,{to:"/settings/settings"})}}renderTranslate(){const{t:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsxs("p",{children:[e("settings:translation_prompt")," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://poeditor.com/join/project?hash=Az88waAhPd",children:"POEditor"})]})})}renderAbout(){var l,c,d,p,g,h,f;const{bridgeInfo:e,devices:s,t:n}=this.props,o=((l=e.version)==null?void 0:l.match(/^\d+\.\d+\.\d+$/))===null?e.version:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/releases/tag/${e.version}`,children:e.version}),m=e.commit?t.jsxs(t.Fragment,{children:["commit:"," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/commit/${e.commit}`,children:e.commit})]}):null,i=[{translationKey:"zigbee2mqtt_version",content:t.jsxs(t.Fragment,{children:[o," ",m]})},{translationKey:"coordinator_type",content:t.jsx(t.Fragment,{children:((c=e.coordinator)==null?void 0:c.type)??n("common:unknown")})},{translationKey:"coordinator_revision",content:t.jsx(t.Fragment,{children:((p=(d=e.coordinator)==null?void 0:d.meta)==null?void 0:p.revision)??n("common:unknown")})},{translationKey:"coordinator_ieee_address",content:t.jsx(t.Fragment,{children:((g=e.coordinator)==null?void 0:g.ieee_address)??n("common:unknown")})},{translationKey:"frontend_version",content:fe.version},{translationKey:"zigbee_herdsman_converters_version",content:((h=e.zigbee_herdsman_converters)==null?void 0:h.version)??n("common:unknown")},{translationKey:"zigbee_herdsman_version",content:((f=e.zigbee_herdsman)==null?void 0:f.version)??n("common:unknown")},{translationKey:"stats",content:t.jsx(ee,{devices:s})}];return t.jsx("div",{className:"p-3",children:i.map(v=>t.jsxs("dl",{className:"row",children:[t.jsx("dt",{className:"col-sm-3",children:n(v.translationKey)}),t.jsx("dd",{className:"col-sm-9",children:v.content})]},v.translationKey))})}renderBridgeInfo(){const{bridgeInfo:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsx("pre",{children:JSON.stringify(e,null,4)})})}renderBackupControls(){const{backup:e,preparingBackup:s,requestBackup:n,t:r}=this.props;return s?t.jsx(u,{className:"btn btn-primary d-block mt-2 disabled",children:t.jsx($,{})}):e?t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.downloadBackup,children:r("download_z2m_backup")}):t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:n,children:r("request_z2m_backup")})}renderTools(){const{exportState:e,restartBridge:s,setDeviceOptions:n,devices:r,t:o}=this.props;return t.jsxs("div",{className:"p-3",children:[t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:e,children:o("download_state")}),t.jsx(u,{className:"btn btn-danger d-block mt-2",onClick:s,prompt:!0,children:o("restart_zigbee2mqtt")}),this.renderBackupControls(),t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.addInstallCode,children:o("add_install_code")}),t.jsx(xe,{setDeviceOptions:n,devices:r})]})}getSettingsTabs(){const{bridgeInfo:{config_schema:e={properties:{}}},t:s}=this.props,n=Object.entries(e.properties).filter(([r,o])=>Ne(r,o)).map(([r,o])=>({name:r,title:s(r,{defaultValue:o.title})}));return n.unshift({name:b,title:s("main",{defaultValue:"Main"})}),n}getSettingsInfo(){const{keyName:e}=this.state,{bridgeInfo:{config_schema:s,config:n}}=this.props;let r=k(w,j(s),j(n)),o=r.schema,m;if(e===b){const i=this.getSettingsTabs().map(l=>l.name);r=k(i,r.schema,r.config),o=r.schema,m=r.config}else m=r.config[e],r.schema.properties&&(o=r.schema.properties[e]);return{currentSchema:o,currentConfig:m}}renderSettingsTabs(){const{t:e}=this.props,s=this.getSettingsTabs(),{keyName:n}=this.state;return t.jsx("div",{className:"nav nav-pills",children:s.map(r=>t.jsx("li",{className:"nav-item",children:t.jsx("a",{className:K("nav-link",{"bg-primary active":n===r.name}),"aria-current":"page",href:"#",onClick:o=>{this.setState({keyName:r.name}),o.preventDefault()},children:e(r.name,{defaultValue:r.title})})},r.name))})}renderSettings(){const{keyName:e}=this.state,{currentSchema:s,currentConfig:n}=this.getSettingsInfo();return e in this.settingsFormData||(this.settingsFormData[e]=n),t.jsxs("div",{className:"tab",children:[this.renderSettingsTabs(),t.jsx("div",{className:"tab-content",children:t.jsx("div",{className:"tab-pane active",children:t.jsx(ke,{idPrefix:e,schema:s,formData:this.settingsFormData[e],onChange:r=>this.settingsFormData[e]=r.formData,onSubmit:this.onSettingsSave,uiSchema:Z[e],fields:{TitleField:R,DescriptionField:M}})})})]})}renderDonate(){const{t:e}=this.props,s=e("donation_text",{returnObjects:!0,defaultValue:[]});return t.jsxs("div",{className:"container-fluid",children:[s.map(n=>t.jsx("p",{children:n},n)),we]})}}const Te=C(Se),Ce=["bridgeInfo","missingTranslations","devices","backup","preparingBackup"],Ee=_(["settings","common"])(D(Ce,z)(Te));export{Ee as ConnectedSettingsPage};
1
+ import{v as N,x as S,u as T,j as t,w as _,r as y,B as u,p as C,c as D,a as z,y as F,F as I,z as O,A as B,C as q,D as A,b as K}from"./index-95f33b43.js";import{_ as E,w as P,T as V,c as j}from"./bootstrap-5.esm-881034b3.js";import{T as R,D as M}from"./rjsf-translation-fields-c370230c.js";import{p as L}from"./powerSourceTypeToTranslationKey-452dac81.js";import{S as $}from"./spinner-043b8481.js";import{g as G}from"./index-72aba774.js";import"./_getAllKeysIn-8686d686.js";import"./isEqual-de503c30.js";import"./intersection-63690476.js";const U={"ui:order":["base_topic","server","user","password","client_id","version","ca","key","cert","reject_unauthorized","*"]},H={"ui:order":["port","adapter","disable_led","*"]},J={"ui:order":["port","host","*"]},Z={mqtt:U,serial:H,frontend:J};var Y=E,x=S;function W(a,e,s,n){return a==null?[]:(x(e)||(e=e==null?[]:[e]),s=n?void 0:s,x(s)||(s=s==null?[]:[s]),Y(a,e,s))}var Q=W;const X=N(Q);function ee(a){const{devices:e}=a,{t:s}=T(["stats","zigbee"]),n=Object.values(e).filter(i=>i.type!=="Coordinator"),r=n.length,o={byType:{},byPowerSource:{},byVendor:{},byModel:{}};n.forEach(i=>{o.byModel[i.model_id]=(o.byModel[i.model_id]||0)+1,o.byVendor[i.manufacturer]=(o.byVendor[i.manufacturer]||0)+1,o.byType[s(i.type)]=(o.byType[s(i.type)]||0)+1;const l=s("zigbee:"+L(i.power_source));o.byPowerSource[l]=(o.byPowerSource[l]||0)+1});const m=Object.entries(o).map(([i,l])=>t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsxs("div",{className:"ms-2 me-auto",children:[t.jsx("div",{className:"fw-bold",children:s(i)}),X(Object.entries(l),[([c,d])=>d],["desc"]).map(([c,d])=>t.jsxs("div",{children:[c,": ",d]},c))]})},i));return t.jsxs("ol",{className:"list-group list-group-numbered",children:[t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsx("div",{className:"ms-2 me-auto",children:t.jsxs("div",{className:"fw-bold",children:[s("total")," ",r]})})}),m]})}const te={access:"public",cache:""},se=["*.css"],ne="zigbee2mqtt-frontend",re="0.9.12",oe="GPL-3.0",ie={build:"vite build",preview:"vite preview",start:"vite dev",postversion:"git push && git push --tags",version:"conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",pretty:'prettier --write "./**/*.{js,jsx,tsx}"',postinstall:"husky install",prepublishOnly:"pinst --disable",postpublish:"pinst --enable","test:unit":"vitest","test:coverage":"vitest run --coverage","test:eslint":'eslint "./src/**/*.{js,jsx,tsx}"',"test:pretty":'prettier --check "./**/*.{js,jsx,tsx}"',"i18n:download":"node download_translations.js","i18n:trim":"node trim-locales.js"},ae=["dist/*"],ce={node:">=20.11"},le={"@codemirror/lang-javascript":"^6.2.2","@commitlint/cli":"~17.8.0","@commitlint/config-conventional":"~17.8.0","@ebay/nice-modal-react":"~1.2.13","@eslint/js":"^9.18.0","@fortawesome/fontawesome-free":"~6.6.0","@rjsf/bootstrap-5":"https://github.com/nurikk/fileshare/blob/main/rjsf-bootstrap-5-4.2.0.tgz?raw=true","@rjsf/core":"~4.2.3","@testing-library/jest-dom":"^6.3.0","@testing-library/react":"^14.1.2","@testing-library/user-event":"^14.5.2","@types/color-convert":"~2.0.1","@types/d3-drag":"~3.0.4","@types/d3-force":"~3.0.6","@types/d3-selection":"~3.0.7","@types/d3-zoom":"~3.0.5","@types/events":"~3.0.1","@types/file-saver":"~2.0.5","@types/json-schema":"~7.0.13","@types/lodash":"~4.17.0","@types/react":"~18.2.24","@types/react-dom":"~18.2.8","@types/react-router-dom":"~5.3.3","@types/react-table":"~7.7.16","@types/react-transition-group":"~4.4.7","@types/reconnectingwebsocket":"~1.0.8","@types/ws":"~8.5.6","@uiw/codemirror-theme-github":"^4.21.24","@uiw/react-codemirror":"^4.21.24","@vitejs/plugin-react":"~4.3.0","@vitest/coverage-v8":"^1.2.2",bootstrap:"~5.3.2",classnames:"~2.5.0","color-convert":"~2.0.1","conventional-changelog-cli":"~4.1.0","d3-drag":"~3.0.0","d3-force":"~3.0.0","d3-force-reuse":"~1.0.1","d3-selection":"~3.0.0","d3-zoom":"~3.0.0","deep-diff":"~1.0.2","deep-object-diff":"~1.1.9",eslint:"~9.18.0","eslint-config-prettier":"~10.0.1","eslint-plugin-react":"~7.37.4","eslint-plugin-react-refresh":"~0.4.18",events:"~3.3.0","file-saver":"~2.0.5",globals:"~15.14.0",husky:"~8.0.3",i18next:"~23.5.1","i18next-browser-languagedetector":"~7.1.0",jsdom:"^24.0.0",jszip:"~3.10.1",lodash:"~4.17.21",notyf:"~3.10.0",pinst:"~3.0.0",prettier:"~3.4.2",react:"~18.2.0","react-app-polyfill":"~3.0.0","react-bootstrap":"~2.10.0","react-css-theme-switcher":"~0.3.0","react-dom":"~18.2.0","react-i18next":"~13.5.0","react-image":"~4.1.0","react-notifications-component":"^4.0.1","react-router-dom":"~5.3.4","react-table":"~7.8.0","react-transition-group":"~4.4.5","reconnecting-websocket":"~4.4.0",sass:"~1.71.0",store2:"^2.14.2","timeago.js":"~4.0.2",typescript:"~5.2.2","typescript-eslint":"^8.21.0",unistore:"~3.5.2",vite:"~4.5.0","vite-plugin-compression":"~0.5.1","vite-plugin-html":"~3.2.0","vite-plugin-sass-dts":"~1.3.11",vitest:"^1.3.1",ws:"~8.17.0"},de="index.js",me={hooks:{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},pe={type:"git",url:"git+https://github.com/nurikk/zigbee2mqtt-frontend.git"},ue={url:"https://github.com/nurikk/zigbee2mqtt-frontend/issues"},ge="pnpm@10.5.2",he={onlyBuiltDependencies:["core-js","core-js-pure","esbuild"]},fe={private:!1,publishConfig:te,sideEffects:se,name:ne,version:re,license:oe,scripts:ie,eslintIgnore:ae,engines:ce,devDependencies:le,main:de,husky:me,repository:pe,bugs:ue,packageManager:ge,pnpm:he};function be(a){return new Promise((e,s)=>{const n=new FileReader;n.onloadend=()=>e(n.result),n.onerror=r=>s(r),n.readAsDataURL(a)})}async function ye(a){const e=await fetch(a);if(e.ok){const s=await e.blob();return be(s)}else return Promise.reject(e.status)}async function ve(a,e){for(const s of a)try{if(await e(s))return!0}catch{}return!1}function je(a){const[e,s]=y.useState("none"),{setDeviceOptions:n,t:r,devices:o}=a,[m,i]=y.useState({});async function l(c){if(i(p=>({...p,[c.ieee_address]:"init"})),!await ve([G],async p=>{const g=p(c),h=await ye(g);return await n(c.ieee_address,{icon:h}),i(f=>({...f,[c.ieee_address]:"done"})),!0}))throw new Error("Failed to localise image")}switch(y.useEffect(()=>{if(e=="start"){for(const c of Object.values(o).filter(d=>d.type!=="Coordinator"))l(c).catch(d=>{console.log("Error localising image",d),i(p=>({...p,[c.ieee_address]:"error"}))}).then();s("inprogress")}},[e]),e){case"none":return t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:()=>s("start"),children:r("localise_images")});case"inprogress":return t.jsx("div",{children:Object.values(o).map(c=>t.jsxs("div",{children:[c.friendly_name," ",m[c.ieee_address]]},c.ieee_address))});case"done":return t.jsx("div",{children:"done"})}return t.jsx("div",{children:"Unknown"})}const xe=_(["settings"])(je),ke=P(V),b="main",w=["groups","devices","device_options","ban","whitelist","map_options"],_e=["object","array"],k=(a,e={},s={})=>{e.required&&(e.required=e.required.filter(n=>a.includes(n)));for(const n of a)e.properties&&delete e.properties[n],delete s[n];return{schema:e,config:s}},we=[t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/nurikk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for frontend&emoji=🍺&slug=nurikk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"nurikk"),t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for zigbee2mqtt&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"koenkk")].sort(()=>Math.random()-.5),Ne=(a,e)=>_e.includes(e.type)&&!w.includes(a)||(e&&e.oneOf?e.oneOf.length>0:!1);class Se extends y.Component{constructor(){super(...arguments),this.state={keyName:b},this.settingsFormData={},this.downloadBackup=()=>{const{backup:e,bridgeInfo:s}=this.props,n=F(new Date).replace(/[\s_:]/g,"-"),r=`z2m-backup.${s.version}.${n}.zip`;I.saveAs(`data:application/zip;base64,${e}`,r)},this.addInstallCode=()=>{const{t:e,addInstallCode:s}=this.props,n=prompt(e("enter_install_code"));n&&s(n)},this.onSettingsSave=e=>{const{formData:s}=e,{updateBridgeConfig:n}=this.props,{keyName:r}=this.state,o=O(this.getSettingsInfo().currentConfig,s);n(r===b?o:{[r]:o})}}renderCategoriesTabs(){const{t:e}=this.props;return t.jsx("ul",{className:"nav nav-tabs",children:B.map(s=>t.jsx("li",{className:"nav-item",children:t.jsx(q,{className:"nav-link",activeClassName:"active",to:s.url,children:e(s.translationKey)})},s.url))})}render(){return t.jsxs("div",{className:"tab",children:[this.renderCategoriesTabs(),t.jsx("div",{className:"tab-content h-100 p-0 p-sm-3",children:t.jsx("div",{className:"tab-pane fade show active",children:this.renderSwitcher()})})]})}renderSwitcher(){const{match:e}=this.props,{tab:s}=e.params;switch(s){case"tools":return this.renderTools();case"bridge":return this.renderBridgeInfo();case"about":return this.renderAbout();case"settings":return this.renderSettings();case"donate":return this.renderDonate();case"translate":return this.renderTranslate();default:return t.jsx(A,{to:"/settings/settings"})}}renderTranslate(){const{t:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsxs("p",{children:[e("settings:translation_prompt")," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://poeditor.com/join/project?hash=Az88waAhPd",children:"POEditor"})]})})}renderAbout(){var l,c,d,p,g,h,f;const{bridgeInfo:e,devices:s,t:n}=this.props,o=((l=e.version)==null?void 0:l.match(/^\d+\.\d+\.\d+$/))===null?e.version:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/releases/tag/${e.version}`,children:e.version}),m=e.commit?t.jsxs(t.Fragment,{children:["commit:"," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/commit/${e.commit}`,children:e.commit})]}):null,i=[{translationKey:"zigbee2mqtt_version",content:t.jsxs(t.Fragment,{children:[o," ",m]})},{translationKey:"coordinator_type",content:t.jsx(t.Fragment,{children:((c=e.coordinator)==null?void 0:c.type)??n("common:unknown")})},{translationKey:"coordinator_revision",content:t.jsx(t.Fragment,{children:((p=(d=e.coordinator)==null?void 0:d.meta)==null?void 0:p.revision)??n("common:unknown")})},{translationKey:"coordinator_ieee_address",content:t.jsx(t.Fragment,{children:((g=e.coordinator)==null?void 0:g.ieee_address)??n("common:unknown")})},{translationKey:"frontend_version",content:fe.version},{translationKey:"zigbee_herdsman_converters_version",content:((h=e.zigbee_herdsman_converters)==null?void 0:h.version)??n("common:unknown")},{translationKey:"zigbee_herdsman_version",content:((f=e.zigbee_herdsman)==null?void 0:f.version)??n("common:unknown")},{translationKey:"stats",content:t.jsx(ee,{devices:s})}];return t.jsx("div",{className:"p-3",children:i.map(v=>t.jsxs("dl",{className:"row",children:[t.jsx("dt",{className:"col-sm-3",children:n(v.translationKey)}),t.jsx("dd",{className:"col-sm-9",children:v.content})]},v.translationKey))})}renderBridgeInfo(){const{bridgeInfo:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsx("pre",{children:JSON.stringify(e,null,4)})})}renderBackupControls(){const{backup:e,preparingBackup:s,requestBackup:n,t:r}=this.props;return s?t.jsx(u,{className:"btn btn-primary d-block mt-2 disabled",children:t.jsx($,{})}):e?t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.downloadBackup,children:r("download_z2m_backup")}):t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:n,children:r("request_z2m_backup")})}renderTools(){const{exportState:e,restartBridge:s,setDeviceOptions:n,devices:r,t:o}=this.props;return t.jsxs("div",{className:"p-3",children:[t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:e,children:o("download_state")}),t.jsx(u,{className:"btn btn-danger d-block mt-2",onClick:s,prompt:!0,children:o("restart_zigbee2mqtt")}),this.renderBackupControls(),t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.addInstallCode,children:o("add_install_code")}),t.jsx(xe,{setDeviceOptions:n,devices:r})]})}getSettingsTabs(){const{bridgeInfo:{config_schema:e={properties:{}}},t:s}=this.props,n=Object.entries(e.properties).filter(([r,o])=>Ne(r,o)).map(([r,o])=>({name:r,title:s(r,{defaultValue:o.title})}));return n.unshift({name:b,title:s("main",{defaultValue:"Main"})}),n}getSettingsInfo(){const{keyName:e}=this.state,{bridgeInfo:{config_schema:s,config:n}}=this.props;let r=k(w,j(s),j(n)),o=r.schema,m;if(e===b){const i=this.getSettingsTabs().map(l=>l.name);r=k(i,r.schema,r.config),o=r.schema,m=r.config}else m=r.config[e],r.schema.properties&&(o=r.schema.properties[e]);return{currentSchema:o,currentConfig:m}}renderSettingsTabs(){const{t:e}=this.props,s=this.getSettingsTabs(),{keyName:n}=this.state;return t.jsx("div",{className:"nav nav-pills",children:s.map(r=>t.jsx("li",{className:"nav-item",children:t.jsx("a",{className:K("nav-link",{"bg-primary active":n===r.name}),"aria-current":"page",href:"#",onClick:o=>{this.setState({keyName:r.name}),o.preventDefault()},children:e(r.name,{defaultValue:r.title})})},r.name))})}renderSettings(){const{keyName:e}=this.state,{currentSchema:s,currentConfig:n}=this.getSettingsInfo();return e in this.settingsFormData||(this.settingsFormData[e]=n),t.jsxs("div",{className:"tab",children:[this.renderSettingsTabs(),t.jsx("div",{className:"tab-content",children:t.jsx("div",{className:"tab-pane active",children:t.jsx(ke,{idPrefix:e,schema:s,formData:this.settingsFormData[e],onChange:r=>this.settingsFormData[e]=r.formData,onSubmit:this.onSettingsSave,uiSchema:Z[e],fields:{TitleField:R,DescriptionField:M}})})})]})}renderDonate(){const{t:e}=this.props,s=e("donation_text",{returnObjects:!0,defaultValue:[]});return t.jsxs("div",{className:"container-fluid",children:[s.map(n=>t.jsx("p",{children:n},n)),we]})}}const Te=C(Se),Ce=["bridgeInfo","missingTranslations","devices","backup","preparingBackup"],Ee=_(["settings","common"])(D(Ce,z)(Te));export{Ee as ConnectedSettingsPage};
Binary file
@@ -1 +1 @@
1
- import{u as j,l as w,j as a,r as x,L as C,g as h,d as f,c as k,a as S,w as E,R as H,i as L}from"./index-31204834.js";import{V as T,M as A}from"./vendor-links-74296de2.js";import{L as F,D as q,P as M}from"./index-323f362a.js";import{i as N,A as P,D as I}from"./Availability-3af40fab.js";import{T as R}from"./ReactTableCom-a75a090d.js";import{D as V}from"./DeviceImage-a014c977.js";import{D as B}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-57fe68c1.js";import"./index-28ce4a18.js";const $={"action-column":"_action-column_1729o_1","device-pic":"_device-pic_1729o_8","device-image":"_device-image_1729o_14"};function z(l){const{data:t,lastSeenType:o,availabilityFeatureEnabled:r,homeassistantEnabled:d,setDeviceDescription:p}=l,{renameDevice:c,removeDevice:m,configureDevice:v,interviewDevice:b}=l,{t:s}=j(["zigbee","common","avaliability"]),u=o!=="disable"?[{id:"last_seen",Header:s("last_seen"),accessor:({state:e})=>{var i;return(i=w(e,o))==null?void 0:i.getTime()},Cell:({row:{original:{state:e}}})=>a.jsx(F,{state:e,lastSeenType:o})}]:[],_=t.some(e=>e.availabilityEnabledForDevice??r)?[{id:"availability",Header:s("avaliability:avaliability"),accessor:({availabilityState:e})=>N(e)?e:e.state,Cell:({row:{original:{availabilityState:e,availabilityEnabledForDevice:i,disabled:n}}})=>a.jsx(P,{disabled:n,availability:e,availabilityEnabledForDevice:i,availabilityFeatureEnabled:r})}]:[],y=x.useMemo(()=>[{id:"pic",Header:s("pic"),Cell:({row:{original:{device:e,state:i,disabled:n}}})=>a.jsx(V,{className:$["device-image"],device:e,deviceStatus:i,disabled:n}),accessor:e=>e,disableSortBy:!0},{id:"friendly_name",Header:s("friendly_name"),accessor:({device:e})=>[e.friendly_name,e.description].join(" "),Cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(C,{to:h(e.ieee_address),children:e.friendly_name}),a.jsx("small",{className:"d-block",children:e.description})]})},{id:"ieee_address",Header:s("ieee_address"),accessor:({device:e})=>[e.ieee_address,f(e.network_address,4)].join(" "),Cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:e.ieee_address}),a.jsx("div",{children:a.jsxs("abbr",{title:`${s("network_address_hex")} (${s("network_address_dec")}: ${e.network_address})`,children:["(",f(e.network_address,4),")"]})})]})},{id:"manufacturer",Header:s("manufacturer"),accessor:({device:e})=>{var i;return[(i=e.definition)==null?void 0:i.vendor,e.manufacturer].join(" ")},Cell:({row:{original:{device:e}}})=>a.jsx(T,{device:e})},{id:"model",Header:s("model"),accessor:({device:e})=>{var i;return[(i=e.definition)==null?void 0:i.model,e.model_id].join(" ")},Cell:({row:{original:{device:e}}})=>a.jsx(A,{device:e})},{id:"lqi",Header:s("lqi"),accessor:({state:e})=>e.linkquality,Cell:({row:{original:{state:e}}})=>a.jsx(q,{value:e.linkquality,name:"linkquality"})},...u,..._,{id:"power",Header:s("power"),accessor:({state:e,device:i})=>{var n;return[e.battery,(n=i.definition)==null?void 0:n.power].join(" ")},Cell:({row:{original:{state:e,device:i}}})=>a.jsx(M,{device:i,deviceState:e})},{id:"controls",Header:"",Cell:({row:{original:{device:e,state:i}}})=>a.jsx(I,{device:e,state:i,homeassistantEnabled:d,renameDevice:c,removeDevice:m,configureDevice:v,setDeviceDescription:p,interviewDevice:b}),disableSortBy:!0}],[u,_,s,d,c,m,v,b]);return a.jsx("div",{className:"card",children:a.jsx("div",{className:"table-responsive",children:a.jsx(R,{id:B,columns:y,data:t})})})}function G(l){var y,e;const{devices:t,deviceStates:o,bridgeInfo:{config:r},availability:d}=l,{renameDevice:p,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:b}=l,s=!!((y=r.availability)!=null&&y.enabled),u=!!((e=r==null?void 0:r.homeassistant)!=null&&e.enabled),g=()=>Object.values(t).filter(i=>i.type!=="Coordinator").map(i=>{var D;const n=o[i.friendly_name]??{};return{id:i.friendly_name,disabled:L(i,r),device:i,state:n,availabilityState:d[i.friendly_name]??"offline",availabilityEnabledForDevice:(D=r.devices[i.ieee_address])==null?void 0:D.availability}}),_=H.useMemo(()=>g(),[t,o]);return a.jsx(z,{data:_,lastSeenType:r.advanced.last_seen,availabilityFeatureEnabled:s,homeassistantEnabled:u,renameDevice:p,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:b})}const O=["devices","deviceStates","bridgeInfo","availability"],ae=k(O,S)(E(["zigbee","common"])(G));export{ae as ConnectedZigbeePage};
1
+ import{u as j,l as w,j as a,r as x,L as C,g as h,d as f,c as k,a as S,w as E,R as H,i as L}from"./index-95f33b43.js";import{V as T,M as A}from"./vendor-links-080cff6a.js";import{L as F,D as q,P as M}from"./index-00b1aedb.js";import{i as N,A as P,D as I}from"./Availability-0b6a7470.js";import{T as R}from"./ReactTableCom-08d89c82.js";import{D as V}from"./DeviceImage-3224ab45.js";import{D as B}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-bbadcfc3.js";import"./index-72aba774.js";const $={"action-column":"_action-column_1729o_1","device-pic":"_device-pic_1729o_8","device-image":"_device-image_1729o_14"};function z(l){const{data:t,lastSeenType:o,availabilityFeatureEnabled:r,homeassistantEnabled:d,setDeviceDescription:p}=l,{renameDevice:c,removeDevice:m,configureDevice:v,interviewDevice:b}=l,{t:s}=j(["zigbee","common","avaliability"]),u=o!=="disable"?[{id:"last_seen",Header:s("last_seen"),accessor:({state:e})=>{var i;return(i=w(e,o))==null?void 0:i.getTime()},Cell:({row:{original:{state:e}}})=>a.jsx(F,{state:e,lastSeenType:o})}]:[],_=t.some(e=>e.availabilityEnabledForDevice??r)?[{id:"availability",Header:s("avaliability:avaliability"),accessor:({availabilityState:e})=>N(e)?e:e.state,Cell:({row:{original:{availabilityState:e,availabilityEnabledForDevice:i,disabled:n}}})=>a.jsx(P,{disabled:n,availability:e,availabilityEnabledForDevice:i,availabilityFeatureEnabled:r})}]:[],y=x.useMemo(()=>[{id:"pic",Header:s("pic"),Cell:({row:{original:{device:e,state:i,disabled:n}}})=>a.jsx(V,{className:$["device-image"],device:e,deviceStatus:i,disabled:n}),accessor:e=>e,disableSortBy:!0},{id:"friendly_name",Header:s("friendly_name"),accessor:({device:e})=>[e.friendly_name,e.description].join(" "),Cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx(C,{to:h(e.ieee_address),children:e.friendly_name}),a.jsx("small",{className:"d-block",children:e.description})]})},{id:"ieee_address",Header:s("ieee_address"),accessor:({device:e})=>[e.ieee_address,f(e.network_address,4)].join(" "),Cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:e.ieee_address}),a.jsx("div",{children:a.jsxs("abbr",{title:`${s("network_address_hex")} (${s("network_address_dec")}: ${e.network_address})`,children:["(",f(e.network_address,4),")"]})})]})},{id:"manufacturer",Header:s("manufacturer"),accessor:({device:e})=>{var i;return[(i=e.definition)==null?void 0:i.vendor,e.manufacturer].join(" ")},Cell:({row:{original:{device:e}}})=>a.jsx(T,{device:e})},{id:"model",Header:s("model"),accessor:({device:e})=>{var i;return[(i=e.definition)==null?void 0:i.model,e.model_id].join(" ")},Cell:({row:{original:{device:e}}})=>a.jsx(A,{device:e})},{id:"lqi",Header:s("lqi"),accessor:({state:e})=>e.linkquality,Cell:({row:{original:{state:e}}})=>a.jsx(q,{value:e.linkquality,name:"linkquality"})},...u,..._,{id:"power",Header:s("power"),accessor:({state:e,device:i})=>{var n;return[e.battery,(n=i.definition)==null?void 0:n.power].join(" ")},Cell:({row:{original:{state:e,device:i}}})=>a.jsx(M,{device:i,deviceState:e})},{id:"controls",Header:"",Cell:({row:{original:{device:e,state:i}}})=>a.jsx(I,{device:e,state:i,homeassistantEnabled:d,renameDevice:c,removeDevice:m,configureDevice:v,setDeviceDescription:p,interviewDevice:b}),disableSortBy:!0}],[u,_,s,d,c,m,v,b]);return a.jsx("div",{className:"card",children:a.jsx("div",{className:"table-responsive",children:a.jsx(R,{id:B,columns:y,data:t})})})}function G(l){var y,e;const{devices:t,deviceStates:o,bridgeInfo:{config:r},availability:d}=l,{renameDevice:p,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:b}=l,s=!!((y=r.availability)!=null&&y.enabled),u=!!((e=r==null?void 0:r.homeassistant)!=null&&e.enabled),g=()=>Object.values(t).filter(i=>i.type!=="Coordinator").map(i=>{var D;const n=o[i.friendly_name]??{};return{id:i.friendly_name,disabled:L(i,r),device:i,state:n,availabilityState:d[i.friendly_name]??"offline",availabilityEnabledForDevice:(D=r.devices[i.ieee_address])==null?void 0:D.availability}}),_=H.useMemo(()=>g(),[t,o]);return a.jsx(z,{data:_,lastSeenType:r.advanced.last_seen,availabilityFeatureEnabled:s,homeassistantEnabled:u,renameDevice:p,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:b})}const O=["devices","deviceStates","bridgeInfo","availability"],ae=k(O,S)(E(["zigbee","common"])(G));export{ae as ConnectedZigbeePage};
Binary file
@@ -1 +1 @@
1
- import{aG as $,au as O,aA as p,as as x,aj as y,aB as w,aq as S,K as L,q as j}from"./index-31204834.js";function k(e,n,t){switch(t.length){case 0:return e.call(n);case 1:return e.call(n,t[0]);case 2:return e.call(n,t[0],t[1]);case 3:return e.call(n,t[0],t[1],t[2])}return e.apply(n,t)}var A=k,N=A,_=Math.max;function T(e,n,t){return n=_(n===void 0?e.length-1:n,0),function(){for(var r=arguments,a=-1,i=_(r.length-n,0),s=Array(i);++a<i;)s[a]=r[n+a];a=-1;for(var u=Array(n+1);++a<n;)u[a]=r[a];return u[n]=t(s),N(e,this,u)}}var M=T;function C(e){return function(){return e}}var R=C,F=R,g=$,H=O,m=g?function(e,n){return g(e,"toString",{configurable:!0,enumerable:!1,value:F(n),writable:!0})}:H,P=m,U=800,W=16,q=Date.now;function D(e){var n=0,t=0;return function(){var r=q(),a=W-(r-t);if(t=r,a>0){if(++n>=U)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}var B=D,E=P,G=B,K=G(E),z=K,J=O,Q=M,V=z;function X(e,n){return V(Q(e,n,J),e+"")}var Y=X;function Z(e,n,t,r){for(var a=e.length,i=t+(r?1:-1);r?i--:++i<a;)if(n(e[i],i,e))return i;return-1}var ee=Z;function ne(e){return e!==e}var te=ne;function re(e,n,t){for(var r=t-1,a=e.length;++r<a;)if(e[r]===n)return r;return-1}var ae=re,ie=ee,se=te,ue=ae;function ce(e,n,t){return n===n?ue(e,n,t):ie(e,se,t)}var le=ce,ve=le;function he(e,n){var t=e==null?0:e.length;return!!t&&ve(e,n,0)>-1}var oe=he;function fe(e,n,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(n,e[r]))return!0;return!1}var de=fe,be=p,_e=oe,ge=de,Ie=x,Oe=y,I=w,xe=Math.min;function $e(e,n,t){for(var r=t?ge:_e,a=e[0].length,i=e.length,s=i,u=Array(i),f=1/0,h=[];s--;){var c=e[s];s&&n&&(c=Ie(c,Oe(n))),f=xe(c.length,f),u[s]=!t&&(n||a>=120&&c.length>=120)?new be(s&&c):void 0}c=e[0];var d=-1,o=u[0];e:for(;++d<a&&h.length<f;){var l=c[d],v=n?n(l):l;if(l=t||l!==0?l:0,!(o?I(o,v):r(h,v,t))){for(s=i;--s;){var b=u[s];if(!(b?I(b,v):r(e[s],v,t)))continue e}o&&o.push(v),h.push(l)}}return h}var pe=$e,ye=S,we=L;function Se(e){return we(e)&&ye(e)}var Le=Se,je=Le;function ke(e){return je(e)?e:[]}var Ae=ke,Ne=x,Te=pe,Me=Y,Ce=Ae,Re=Me(function(e){var n=Ne(e,Ce);return n.length&&n[0]===e[0]?Te(n):[]}),Fe=Re;const me=j(Fe);export{Y as _,oe as a,de as b,pe as c,Ae as d,Le as e,A as f,le as g,Fe as h,me as i};
1
+ import{aH as $,av as O,aB as p,at as x,ak as y,aC as w,ar as S,O as L,v as k}from"./index-95f33b43.js";function j(e,n,t){switch(t.length){case 0:return e.call(n);case 1:return e.call(n,t[0]);case 2:return e.call(n,t[0],t[1]);case 3:return e.call(n,t[0],t[1],t[2])}return e.apply(n,t)}var A=j,N=A,_=Math.max;function T(e,n,t){return n=_(n===void 0?e.length-1:n,0),function(){for(var r=arguments,a=-1,i=_(r.length-n,0),s=Array(i);++a<i;)s[a]=r[n+a];a=-1;for(var u=Array(n+1);++a<n;)u[a]=r[a];return u[n]=t(s),N(e,this,u)}}var M=T;function C(e){return function(){return e}}var H=C,R=H,g=$,F=O,m=g?function(e,n){return g(e,"toString",{configurable:!0,enumerable:!1,value:R(n),writable:!0})}:F,P=m,U=800,W=16,D=Date.now;function B(e){var n=0,t=0;return function(){var r=D(),a=W-(r-t);if(t=r,a>0){if(++n>=U)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}var E=B,q=P,z=E,G=z(q),J=G,K=O,Q=M,V=J;function X(e,n){return V(Q(e,n,K),e+"")}var Y=X;function Z(e,n,t,r){for(var a=e.length,i=t+(r?1:-1);r?i--:++i<a;)if(n(e[i],i,e))return i;return-1}var ee=Z;function ne(e){return e!==e}var te=ne;function re(e,n,t){for(var r=t-1,a=e.length;++r<a;)if(e[r]===n)return r;return-1}var ae=re,ie=ee,se=te,ue=ae;function ce(e,n,t){return n===n?ue(e,n,t):ie(e,se,t)}var le=ce,ve=le;function he(e,n){var t=e==null?0:e.length;return!!t&&ve(e,n,0)>-1}var oe=he;function fe(e,n,t){for(var r=-1,a=e==null?0:e.length;++r<a;)if(t(n,e[r]))return!0;return!1}var de=fe,be=p,_e=oe,ge=de,Ie=x,Oe=y,I=w,xe=Math.min;function $e(e,n,t){for(var r=t?ge:_e,a=e[0].length,i=e.length,s=i,u=Array(i),f=1/0,h=[];s--;){var c=e[s];s&&n&&(c=Ie(c,Oe(n))),f=xe(c.length,f),u[s]=!t&&(n||a>=120&&c.length>=120)?new be(s&&c):void 0}c=e[0];var d=-1,o=u[0];e:for(;++d<a&&h.length<f;){var l=c[d],v=n?n(l):l;if(l=t||l!==0?l:0,!(o?I(o,v):r(h,v,t))){for(s=i;--s;){var b=u[s];if(!(b?I(b,v):r(e[s],v,t)))continue e}o&&o.push(v),h.push(l)}}return h}var pe=$e,ye=S,we=L;function Se(e){return we(e)&&ye(e)}var Le=Se,ke=Le;function je(e){return ke(e)?e:[]}var Ae=je,Ne=x,Te=pe,Me=Y,Ce=Ae,He=Me(function(e){var n=Ne(e,Ce);return n.length&&n[0]===e[0]?Te(n):[]}),Re=He;const me=k(Re);export{Y as _,oe as a,de as b,pe as c,Ae as d,Le as e,A as f,le as g,Re as h,me as i};
@@ -1 +1 @@
1
- import{q as r,aR as t}from"./index-31204834.js";var u=t;function o(a,s){return u(a,s)}var e=o;const l=r(e);export{e as a,l as i};
1
+ import{v as r,aS as t}from"./index-95f33b43.js";var u=t;function o(a,s){return u(a,s)}var e=o;const l=r(e);export{e as a,l as i};