zigbee2mqtt-frontend 0.6.163 → 0.6.164
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/assets/{Availability-4c5e5432.js → Availability-1aeaa34f.js} +1 -1
- package/dist/assets/Availability-1aeaa34f.js.br +0 -0
- package/dist/assets/{CodeEditor-922a5ec4.js → CodeEditor-4184cd40.js} +1 -1
- package/dist/assets/CodeEditor-4184cd40.js.br +0 -0
- package/dist/assets/{ConnectedDevicePage-897536c8.js → ConnectedDevicePage-8bc93044.js} +1 -1
- package/dist/assets/ConnectedDevicePage-8bc93044.js.br +0 -0
- package/dist/assets/{ConnectedMap-2a46c40b.js → ConnectedMap-6f292f31.js} +1 -1
- package/dist/assets/ConnectedMap-6f292f31.js.br +0 -0
- package/dist/assets/Dashboard-9d731d34.js +1 -0
- package/dist/assets/Dashboard-9d731d34.js.br +0 -0
- package/dist/assets/{DashboardDevice-37c0f906.js → DashboardDevice-8ee75336.js} +1 -1
- package/dist/assets/DashboardDevice-8ee75336.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-47fcdb5f.js → DashboardFeatureWrapper-b202c060.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-b202c060.js.br +0 -0
- package/dist/assets/{DeviceImage-6e6d911a.js → DeviceImage-ad412df1.js} +1 -1
- package/dist/assets/DeviceImage-ad412df1.js.br +0 -0
- package/dist/assets/{GroupPage-f8da7ba2.js → GroupPage-55fb18dc.js} +1 -1
- package/dist/assets/GroupPage-55fb18dc.js.br +0 -0
- package/dist/assets/{ReactTableCom-bcf39d05.js → ReactTableCom-af69b2e7.js} +1 -1
- package/dist/assets/ReactTableCom-af69b2e7.js.br +0 -0
- package/dist/assets/{RecallRemove-e2144638.js → RecallRemove-af4fee45.js} +1 -1
- package/dist/assets/RecallRemove-af4fee45.js.br +0 -0
- package/dist/assets/{_baseSet-31cacf43.js → _baseSet-01264625.js} +1 -1
- package/dist/assets/{_getAllKeysIn-2d1d4901.js → _getAllKeysIn-3ff3f196.js} +1 -1
- package/dist/assets/{bootstrap-5.esm-c77eceb2.js → bootstrap-5.esm-1237c6f1.js} +1 -1
- package/dist/assets/bootstrap-5.esm-1237c6f1.js.br +0 -0
- package/dist/assets/{index-4a412413.js → index-07bde627.js} +1 -1
- package/dist/assets/index-07bde627.js.br +0 -0
- package/dist/assets/{index-c335efea.js → index-0d63f2e6.js} +1 -1
- package/dist/assets/index-0d63f2e6.js.br +0 -0
- package/dist/assets/{index-3ece1a04.js → index-0f400eb5.js} +2 -2
- package/dist/assets/index-0f400eb5.js.br +0 -0
- package/dist/assets/{index-12d6c71c.js → index-43415a70.js} +1 -1
- package/dist/assets/index-43415a70.js.br +0 -0
- package/dist/assets/{index-16a2345a.js → index-49344a96.js} +1 -1
- package/dist/assets/index-49344a96.js.br +0 -0
- package/dist/assets/{index-fd169243.js → index-8733b996.js} +1 -1
- package/dist/assets/{index-a8eb9e40.js → index-ccca7712.js} +1 -1
- package/dist/assets/index-ccca7712.js.br +0 -0
- package/dist/assets/{index-762f77d5.js → index-d214d715.js} +1 -1
- package/dist/assets/index-d214d715.js.br +0 -0
- package/dist/assets/{index-e58dafd9.js → index-da7880f1.js} +1 -1
- package/dist/assets/index-da7880f1.js.br +0 -0
- package/dist/assets/{index-25b6dbca.js → index-fd5b5d6f.js} +11 -11
- package/dist/assets/index-fd5b5d6f.js.br +0 -0
- package/dist/assets/{intersection-69fb9f9d.js → intersection-03c364a2.js} +1 -1
- package/dist/assets/intersection-03c364a2.js.br +0 -0
- package/dist/assets/{isEqual-a3afd42d.js → isEqual-704978e1.js} +1 -1
- package/dist/assets/{persist-890abb2e.js → persist-dd1cbccd.js} +1 -1
- package/dist/assets/persist-dd1cbccd.js.br +0 -0
- package/dist/assets/{rjsf-translation-fields-811af37d.js → rjsf-translation-fields-d486b8da.js} +1 -1
- package/dist/assets/{spinner-affc6db3.js → spinner-f4f8017d.js} +1 -1
- package/dist/assets/{vendor-links-66ce3b64.js → vendor-links-fe9aef81.js} +1 -1
- package/dist/assets/vendor-links-fe9aef81.js.br +0 -0
- package/dist/index.html +1 -1
- package/dist/index.html.br +0 -0
- package/package.json +1 -1
- package/dist/assets/Availability-4c5e5432.js.br +0 -0
- package/dist/assets/CodeEditor-922a5ec4.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-897536c8.js.br +0 -0
- package/dist/assets/ConnectedMap-2a46c40b.js.br +0 -0
- package/dist/assets/Dashboard-387863f5.js +0 -1
- package/dist/assets/Dashboard-387863f5.js.br +0 -0
- package/dist/assets/DashboardDevice-37c0f906.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-47fcdb5f.js.br +0 -0
- package/dist/assets/DeviceImage-6e6d911a.js.br +0 -0
- package/dist/assets/GroupPage-f8da7ba2.js.br +0 -0
- package/dist/assets/ReactTableCom-bcf39d05.js.br +0 -0
- package/dist/assets/RecallRemove-e2144638.js.br +0 -0
- package/dist/assets/bootstrap-5.esm-c77eceb2.js.br +0 -0
- package/dist/assets/index-12d6c71c.js.br +0 -0
- package/dist/assets/index-16a2345a.js.br +0 -0
- package/dist/assets/index-25b6dbca.js.br +0 -0
- package/dist/assets/index-3ece1a04.js.br +0 -0
- package/dist/assets/index-4a412413.js.br +0 -0
- package/dist/assets/index-762f77d5.js.br +0 -0
- package/dist/assets/index-a8eb9e40.js.br +0 -0
- package/dist/assets/index-c335efea.js.br +0 -0
- package/dist/assets/index-e58dafd9.js.br +0 -0
- package/dist/assets/intersection-69fb9f9d.js.br +0 -0
- package/dist/assets/persist-890abb2e.js.br +0 -0
- package/dist/assets/vendor-links-66ce3b64.js.br +0 -0
Binary file
|
@@ -1 +1 @@
|
|
1
|
-
import{c as m,a as p,w as g,r as u,i as b,j as s,L as h,g as f,B as l,u as _,t as j}from"./index-
|
1
|
+
import{c as m,a as p,w as g,r as u,i as b,j as s,L as h,g as f,B as l,u as _,t as j}from"./index-fd5b5d6f.js";import{D as x}from"./DeviceImage-ad412df1.js";import{V as v,M as k,O}from"./vendor-links-fe9aef81.js";import{T as A}from"./ReactTableCom-af69b2e7.js";import"./index-8733b996.js";import"./persist-dd1cbccd.js";const w={"device-image":"_device-image_29lej_1"},y=d=>{const{t:r}=_("ota"),{device:o,state:a,checkOTA:i,updateOTA:n}=d,c=(a==null?void 0:a.update)??{};switch(c.state){case"updating":return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"progress",children:s.jsxs("div",{className:"progress-bar progress-bar-striped progress-bar-animated",style:{width:`${c.progress}%`},children:[c.progress,"%"]})}),s.jsx("div",{children:r("remaining_time",{remaining:j(c.remaining)})})]});case"available":return s.jsx(l,{className:"btn btn-danger btn-sm",onClick:n,item:o.friendly_name,prompt:!0,children:r("update")});default:return s.jsx(l,{className:"btn btn-primary btn-sm",onClick:i,item:o.friendly_name,children:r("check")})}};class D extends u.Component{constructor(){super(...arguments),this.checkAllOTA=()=>{const{checkOTA:r}=this.props;this.getAllOtaDevices().forEach(({device:a})=>r(a.friendly_name))}}getAllOtaDevices(){const{devices:r,deviceStates:o,bridgeInfo:{config:a}}=this.props;return Object.values(r).filter(i=>{var n;return((n=i==null?void 0:i.definition)==null?void 0:n.supports_ota)&&!b(i,a)}).map(i=>{const n=o[i.friendly_name]??{};return{id:i.friendly_name,device:i,state:n}})}render(){const{checkOTA:r,updateOTA:o,t:a}=this.props,i={checkOTA:r,updateOTA:o},n=this.getAllOtaDevices(),c=[{Header:a("zigbee:pic"),Cell:({row:{original:{device:e,state:t}}})=>s.jsx(x,{className:w["device-image"],device:e,deviceStatus:t,disabled:!1}),disableSortBy:!0},{Header:a("zigbee:friendly_name"),accessor:({device:e})=>e.friendly_name,Cell:({row:{original:{device:e}}})=>s.jsx(h,{to:f(e.ieee_address),children:e.friendly_name})},{Header:a("zigbee:manufacturer"),accessor:({device:e})=>{var t;return[e.manufacturer,(t=e.definition)==null?void 0:t.vendor].join(" ")},Cell:({row:{original:{device:e}}})=>s.jsx(v,{device:e})},{Header:a("zigbee:model"),accessor:({device:e})=>{var t;return[e.model_id,(t=e.definition)==null?void 0:t.model].join(" ")},Cell:({row:{original:{device:e}}})=>s.jsx(k,{device:e})},{Header:a("zigbee:firmware_build_date"),accessor:({device:e})=>e.date_code},{Header:a("zigbee:firmware_version"),accessor:({device:e})=>e.software_build_id,Cell:({row:{original:{device:e}}})=>s.jsx(O,{device:e})},{Header:()=>s.jsx(l,{className:"btn btn-danger btn-sm",onClick:this.checkAllOTA,prompt:!0,children:a("check_all")}),accessor:({state:e})=>((e==null?void 0:e.update)??{}).state+"",id:"check_all",Cell:({row:{original:{device:e,state:t}}})=>s.jsx(y,{device:e,state:t,...i})}];return s.jsx("div",{className:"card",children:s.jsx("div",{className:"table-responsive",children:s.jsx(A,{id:"otaDevices",columns:c,data:n,initialState:{sortBy:[{id:"check_all",desc:!1}]}})})})}}const C=["devices","deviceStates","bridgeInfo"],B=m(C,p)(g(["ota","zigbee","common"])(D));export{B as ConnectedOtaPage};
|
Binary file
|
@@ -1 +1 @@
|
|
1
|
-
import{x as N,y as S,u as T,j as t,w as _,r as v,B as u,n as C,c as z,a as D,z as I,F as O,A as F,C as q,D as A,b as B}from"./index-25b6dbca.js";import{_ as K,w as P,T as E,c as j}from"./bootstrap-5.esm-c77eceb2.js";import{T as V,D as R}from"./rjsf-translation-fields-811af37d.js";import{p as L}from"./powerSourceTypeToTranslationKey-452dac81.js";import{S as M}from"./spinner-affc6db3.js";import{g as $,a as G}from"./index-fd169243.js";import"./_getAllKeysIn-2d1d4901.js";import"./isEqual-a3afd42d.js";import"./intersection-69fb9f9d.js";const U={"ui:order":["base_topic","server","user","password","client_id","version","ca","key","cert","reject_unauthorized","*"]},Z={"ui:order":["port","adapter","disable_led","*"]},H={"ui:order":["port","host","*"]},J={mqtt:U,serial:Z,frontend:H};var Y=K,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.6.163",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:">=18"},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","@fortawesome/fontawesome-free":"~6.4.2","@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.14.199","@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","@typescript-eslint/eslint-plugin":"~6.7.4","@typescript-eslint/parser":"~6.7.4","@uiw/codemirror-theme-github":"^4.21.24","@uiw/react-codemirror":"^4.21.24","@vitejs/plugin-react":"~4.1.0","@vitest/coverage-v8":"^1.2.2",bootstrap:"~5.3.2",classnames:"~2.3.2","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",eslint:"~8.57.0","eslint-config-prettier":"~9.0.0","eslint-config-react":"~1.1.7","eslint-plugin-prettier":"~5.0.0","eslint-plugin-react":"~7.33.2","eslint-plugin-react-refresh":"*",events:"~3.3.0","file-saver":"~2.0.5",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.0.3",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",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.14.2","zigbee-herdsman":"~0.35.3","zigbee-herdsman-converters":"~15.132.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={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};function he(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 fe(a){const e=await fetch(a);if(e.ok){const s=await e.blob();return he(s)}else return Promise.reject(e.status)}async function be(a,e){for(const s of a)try{if(await e(s))return!0}catch{}return!1}function ve(a){const[e,s]=v.useState("none"),{setDeviceOptions:n,t:r,devices:o}=a,[m,i]=v.useState({});async function l(c){if(i(p=>({...p,[c.ieee_address]:"init"})),!await be([$,G],async p=>{const g=p(c),h=await fe(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(v.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 ye=_(["settings"])(ve),je=P(E),b="main",w=["groups","devices","device_options","ban","whitelist","map_options"],xe=["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}},ke=[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),_e=(a,e)=>xe.includes(e.type)&&!w.includes(a)||(e&&e.oneOf?e.oneOf.length>0:!1);class we extends v.Component{constructor(){super(...arguments),this.state={keyName:b},this.downloadBackup=()=>{const{backup:e,bridgeInfo:s}=this.props,n=I(new Date).replace(/[\s_:]/g,"-"),r=`z2m-backup.${s.version}.${n}.zip`;O.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;n(r===b?s:{[r]:s})}}renderCategoriesTabs(){const{t:e}=this.props;return t.jsx("ul",{className:"nav nav-tabs",children:F.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:ge.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(y=>t.jsxs("dl",{className:"row",children:[t.jsx("dt",{className:"col-sm-3",children:n(y.translationKey)}),t.jsx("dd",{className:"col-sm-9",children:y.content})]},y.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(M,{})}):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(ye,{setDeviceOptions:n,devices:r})]})}getSettingsTabs(){const{bridgeInfo:{config_schema:e={properties:{}}},t:s}=this.props,n=Object.entries(e.properties).filter(([r,o])=>_e(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:B("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 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(je,{idPrefix:e,schema:s,formData:n,onSubmit:this.onSettingsSave,uiSchema:J[e],fields:{TitleField:V,DescriptionField:R}})})})]})}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)),ke]})}}const Ne=C(we),Se=["bridgeInfo","missingTranslations","devices","backup","preparingBackup"],Be=_(["settings","common"])(z(Se,D)(Ne));export{Be as ConnectedSettingsPage};
|
1
|
+
import{x as N,y as S,u as T,j as t,w as _,r as v,B as u,n as C,c as z,a as D,z as I,F as O,A as F,C as q,D as A,b as B}from"./index-fd5b5d6f.js";import{_ as K,w as P,T as E,c as j}from"./bootstrap-5.esm-1237c6f1.js";import{T as V,D as R}from"./rjsf-translation-fields-d486b8da.js";import{p as L}from"./powerSourceTypeToTranslationKey-452dac81.js";import{S as M}from"./spinner-f4f8017d.js";import{g as $,a as G}from"./index-8733b996.js";import"./_getAllKeysIn-3ff3f196.js";import"./isEqual-704978e1.js";import"./intersection-03c364a2.js";const U={"ui:order":["base_topic","server","user","password","client_id","version","ca","key","cert","reject_unauthorized","*"]},Z={"ui:order":["port","adapter","disable_led","*"]},H={"ui:order":["port","host","*"]},J={mqtt:U,serial:Z,frontend:H};var Y=K,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.6.164",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:">=18"},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","@fortawesome/fontawesome-free":"~6.4.2","@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.14.199","@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","@typescript-eslint/eslint-plugin":"~6.7.4","@typescript-eslint/parser":"~6.7.4","@uiw/codemirror-theme-github":"^4.21.24","@uiw/react-codemirror":"^4.21.24","@vitejs/plugin-react":"~4.1.0","@vitest/coverage-v8":"^1.2.2",bootstrap:"~5.3.2",classnames:"~2.3.2","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",eslint:"~8.57.0","eslint-config-prettier":"~9.0.0","eslint-config-react":"~1.1.7","eslint-plugin-prettier":"~5.0.0","eslint-plugin-react":"~7.33.2","eslint-plugin-react-refresh":"*",events:"~3.3.0","file-saver":"~2.0.5",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.0.3",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",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.14.2","zigbee-herdsman":"~0.35.3","zigbee-herdsman-converters":"~15.132.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={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};function he(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 fe(a){const e=await fetch(a);if(e.ok){const s=await e.blob();return he(s)}else return Promise.reject(e.status)}async function be(a,e){for(const s of a)try{if(await e(s))return!0}catch{}return!1}function ve(a){const[e,s]=v.useState("none"),{setDeviceOptions:n,t:r,devices:o}=a,[m,i]=v.useState({});async function l(c){if(i(p=>({...p,[c.ieee_address]:"init"})),!await be([$,G],async p=>{const g=p(c),h=await fe(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(v.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 ye=_(["settings"])(ve),je=P(E),b="main",w=["groups","devices","device_options","ban","whitelist","map_options"],xe=["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}},ke=[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),_e=(a,e)=>xe.includes(e.type)&&!w.includes(a)||(e&&e.oneOf?e.oneOf.length>0:!1);class we extends v.Component{constructor(){super(...arguments),this.state={keyName:b},this.downloadBackup=()=>{const{backup:e,bridgeInfo:s}=this.props,n=I(new Date).replace(/[\s_:]/g,"-"),r=`z2m-backup.${s.version}.${n}.zip`;O.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;n(r===b?s:{[r]:s})}}renderCategoriesTabs(){const{t:e}=this.props;return t.jsx("ul",{className:"nav nav-tabs",children:F.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:ge.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(y=>t.jsxs("dl",{className:"row",children:[t.jsx("dt",{className:"col-sm-3",children:n(y.translationKey)}),t.jsx("dd",{className:"col-sm-9",children:y.content})]},y.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(M,{})}):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(ye,{setDeviceOptions:n,devices:r})]})}getSettingsTabs(){const{bridgeInfo:{config_schema:e={properties:{}}},t:s}=this.props,n=Object.entries(e.properties).filter(([r,o])=>_e(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:B("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 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(je,{idPrefix:e,schema:s,formData:n,onSubmit:this.onSettingsSave,uiSchema:J[e],fields:{TitleField:V,DescriptionField:R}})})})]})}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)),ke]})}}const Ne=C(we),Se=["bridgeInfo","missingTranslations","devices","backup","preparingBackup"],Be=_(["settings","common"])(z(Se,D)(Ne));export{Be as ConnectedSettingsPage};
|
Binary file
|
@@ -1 +1 @@
|
|
1
|
-
import{
|
1
|
+
import{aQ as n}from"./index-fd5b5d6f.js";const a=""+new URL("generic-zigbee-device-c9aa86d9.png",import.meta.url).href,i="https://www.zigbee2mqtt.io/images/devices/",o=e=>{var t;return`${i}${n((t=e==null?void 0:e.definition)==null?void 0:t.model)}.jpg`},g=e=>{var t;return`${i}${n((t=e==null?void 0:e.definition)==null?void 0:t.model)}.png`},s=e=>{var t;return(t=e.definition)==null?void 0:t.icon},r=[s,g,o,()=>a];export{r as A,o as a,a as b,g};
|
@@ -1 +1 @@
|
|
1
|
-
import{u as f,l as g,j as a,r as j,L as D,g as x,d as _,c as w,a as C,w as S,R as h,i as H}from"./index-
|
1
|
+
import{u as f,l as g,j as a,r as j,L as D,g as x,d as _,c as w,a as C,w as S,R as h,i as H}from"./index-fd5b5d6f.js";import{V as k,M as E}from"./vendor-links-fe9aef81.js";import{L,D as T,P as q}from"./index-0d63f2e6.js";import{i as F,A as M,D as N}from"./Availability-1aeaa34f.js";import{T as P}from"./ReactTableCom-af69b2e7.js";import{D as A}from"./DeviceImage-ad412df1.js";import{D as I}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-dd1cbccd.js";import"./index-8733b996.js";const R={"action-column":"_action-column_1729o_1","device-pic":"_device-pic_1729o_8","device-image":"_device-image_1729o_14"};function V(l){const{data:t,lastSeenType:n,availabilityFeatureEnabled:r,homeassistantEnabled:c,setDeviceDescription:y}=l,{renameDevice:d,removeDevice:m,configureDevice:v}=l,{t:s}=f(["zigbee","common","avaliability"]),u=n!=="disable"?[{id:"last_seen",Header:s("last_seen"),accessor:({state:e})=>{var i;return(i=g(e,n))==null?void 0:i.getTime()},Cell:({row:{original:{state:e}}})=>a.jsx(L,{state:e,lastSeenType:n})}]:[],b=r?[{id:"availability",Header:s("avaliability:avaliability"),accessor:({availabilityState:e})=>F(e)?e:e.state,Cell:({row:{original:{availabilityState:e,availabilityEnabledForDevice:i,disabled:o}}})=>a.jsx(M,{disabled:o,availability:e,availabilityEnabledForDevice:i})}]:[],p=j.useMemo(()=>[{id:"pic",Header:s("pic"),Cell:({row:{original:{device:e,state:i,disabled:o}}})=>a.jsx(A,{className:R["device-image"],device:e,deviceStatus:i,disabled:o}),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(D,{to:x(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,_(e.network_address,4)].join(" "),Cell:({row:{original:{device:e}}})=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:e.ieee_address}),a.jsxs("div",{children:["(",_(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(k,{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(E,{device:e})},{id:"lqi",Header:s("lqi"),accessor:({state:e})=>e.linkquality,Cell:({row:{original:{state:e}}})=>a.jsx(T,{value:e.linkquality,name:"linkquality"})},...u,...b,{id:"power",Header:s("power"),accessor:({state:e,device:i})=>{var o;return[e.battery,(o=i.definition)==null?void 0:o.power].join(" ")},Cell:({row:{original:{state:e,device:i}}})=>a.jsx(q,{device:i,deviceState:e})},{id:"controls",Header:"",Cell:({row:{original:{device:e,state:i}}})=>a.jsx(N,{device:e,state:i,homeassistantEnabled:c,renameDevice:d,removeDevice:m,configureDevice:v,setDeviceDescription:y}),disableSortBy:!0}],[u,b,s,c,d,m,v]);return a.jsx("div",{className:"card",children:a.jsx("div",{className:"table-responsive",children:a.jsx(P,{id:I,columns:p,data:t})})})}function B(l){const{devices:t,deviceStates:n,bridgeInfo:{config:r},availability:c}=l,{renameDevice:y,removeDevice:d,configureDevice:m,setDeviceDescription:v}=l,s=!!r.availability,u=!!(r!=null&&r.homeassistant),b=()=>Object.values(t).filter(e=>e.type!=="Coordinator").map(e=>{var o;const i=n[e.friendly_name]??{};return{id:e.friendly_name,disabled:H(e,r),device:e,state:i,availabilityState:c[e.friendly_name]??"offline",availabilityEnabledForDevice:((o=r.devices[e.ieee_address])==null?void 0:o.availability)!==!1}}),p=h.useMemo(()=>b(),[t,n]);return a.jsx(V,{data:p,lastSeenType:r.advanced.last_seen,availabilityFeatureEnabled:s,homeassistantEnabled:u,renameDevice:y,removeDevice:d,configureDevice:m,setDeviceDescription:v})}const z=["devices","deviceStates","bridgeInfo","availability"],$=w(z,C)(S(["zigbee","common"])(B));export{$ as ConnectedZigbeePage};
|
Binary file
|
@@ -1 +1 @@
|
|
1
|
-
import{r as m,N as p,e as u,j as e,M as h,f as g,h as x,k as b,B as i,w as j,c as N,a as G,u as f,L as d}from"./index-
|
1
|
+
import{r as m,N as p,e as u,j as e,M as h,f as g,h as x,k as b,B as i,w as j,c as N,a as G,u as f,L as d}from"./index-fd5b5d6f.js";import{T as y}from"./ReactTableCom-af69b2e7.js";import"./persist-dd1cbccd.js";const v=t=>{const[r,s]=m.useState(t);return[r,o=>s({...r,[o.currentTarget.name]:o.currentTarget.value})]},w=p.create(t=>{const{name:r,onRename:s}=t,a=u(),[o,l]=v({friendlyName:r}),n=async()=>{await s(r,o.friendlyName),a.remove()};return e.jsxs(h,{isOpen:a.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:l,type:"text",className:"form-control",value:o.friendlyName})]})}),e.jsxs(b,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:"Close"}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:n,children:"Save changes"})]})]})});function C(t){const{t:r}=f(["groups"]),{groups:s,removeGroup:a,renameGroup:o}=t,l=[{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(i,{className:"btn btn-primary",onClick:()=>p.show(w,{name:n.friendly_name,onRename:o}),title:r("rename_group"),children:e.jsx("i",{className:"fa fa-edit"})}),e.jsx(i,{prompt:!0,title:r("remove_group"),item:n.friendly_name,onClick:a,className:"btn btn-danger",children:e.jsx("i",{className:"fa fa-trash"})})]})}];return e.jsx("div",{className:"card",children:e.jsx(y,{id:"groups",columns:l,data:s})})}class _ extends m.Component{constructor(){super(...arguments),this.state={newGroupName:"",newGroupId:void 0},this.changeHandler=r=>{const{name:s,value:a}=r.target;this.setState({[s]:a})},this.onGroupCreateSubmit=()=>{const{newGroupName:r,newGroupId:s}=this.state,{createGroup:a}=this.props;a(r,s)},this.renameGroup=(r,s)=>{const{renameGroup:a}=this.props;a(r,s)}}renderGroupCreationForm(){const{t:r}=this.props,{newGroupName:s,newGroupId:a}=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:s,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:a===void 0?"":a,type:"number",name:"newGroupId",className:"form-control",id:"newGroupId",placeholder:r("new_group_id_placeholder")}),e.jsx(i,{onClick:this.onGroupCreateSubmit,className:"btn btn-primary form-control",children:r("create_group")})]})})})}render(){const{groups:r,removeGroup:s,renameGroup:a}=this.props;return e.jsxs(e.Fragment,{children:[this.renderGroupCreationForm(),e.jsx(C,{groups:r,removeGroup:s,renameGroup:a})]})}}const I=["groups","devices","deviceStates","bridgeInfo"],M=j("groups")(N(I,G)(_));export{M as ConnectedGroupsPage,_ as GroupsPage};
|
Binary file
|
@@ -1 +1 @@
|
|
1
|
-
import{x as g,Q as u,G as m,j as e,b as j,z as b,c as _,a as y,w as N,r as w}from"./index-
|
1
|
+
import{x as g,Q as u,G as m,j as e,b as j,z as b,c as _,a as y,w as N,r as w}from"./index-fd5b5d6f.js";import{w as C,T as L}from"./bootstrap-5.esm-1237c6f1.js";import{_ as E}from"./_baseSet-01264625.js";var S=u,x=/[\\^$.*+?()[\]{}|]/g,F=RegExp(x.source);function R(s){return s=S(s),s&&F.test(s)?s.replace(x,"\\$&"):s}var T=R;const $=g(T);var D=E;function K(s,t,a){return s==null?s:D(s,t,a)}var P=K;const z=g(P),k={"hide-description":"_hide-description_19xm6_1"},A=C(L);function H(s){const{schema:t={},schemaKey:a="",config:l={},configKey:r="",onChange:o}=s,c=m(l,r,{}),n=m(t,a,{}),v=f=>{const d={};z(d,r,f.formData),o(d)};return e.jsx(A,{schema:n,className:k["hide-description"],formData:c,onChange:v,children:e.jsx("div",{})})}const i="all",h=({text:s})=>e.jsx(e.Fragment,{children:s}),I=({text:s="",highlight:t=""})=>{if(!t.trim())return e.jsx(h,{text:s});const a=new RegExp(`(${$(t)})`,"gi"),l=s.split(a);return e.jsx(e.Fragment,{children:l.filter(r=>r).map((r,o)=>a.test(r)?e.jsx("mark",{children:r},o):e.jsx(h,{text:r},o))})};function p(s){const{logLevel:t,log:a,search:l}=s,r=t===i&&e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{width:"60px"},className:j("badge",{"bg-danger":a.level==="error","bg-warning":a.level==="warning","bg-info":a.level==="info","bg-secondary":!["error","warning","info"].includes(a.level)},"text-capitalize"),children:a.level})," "]});return e.jsxs("div",{children:[r,e.jsx("small",{className:"pe-1",children:b(a.timestamp)}),e.jsx("code",{children:e.jsx(I,{text:a.message,highlight:l})})]})}const O=[i,"debug","info","warning","error"];class B extends w.Component{constructor(){super(...arguments),this.state={search:"",logLevel:i}}renderSearch(){const{clearLogs:t,bridgeInfo:{config_schema:a,config:l},updateBridgeConfig:r,t:o}=this.props,{search:c}=this.state;return e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"row row-cols-lg-auto g-3 align-items-center",children:[e.jsxs("div",{className:"col-12 col-sm-4 col-xxl-4",children:[e.jsx("label",{htmlFor:"log-level",className:"form-label",children:o("show_only")}),e.jsx("select",{id:"log-level",className:"form-select",onChange:n=>this.setState({logLevel:n.target.value}),children:O.map(n=>e.jsx("option",{value:n,children:n},n))})]}),e.jsxs("div",{className:"col-12 col-sm-4 col-xxl-4",children:[e.jsx("label",{htmlFor:"search-filter",className:"form-label",children:o("filter_by_text")}),e.jsx("input",{id:"search-filter",className:"form-control col-10",placeholder:o("common:enter_search_criteria"),value:c,onChange:n=>this.setState({search:n.target.value}),type:"text"})]}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4",children:e.jsx(H,{schema:a,schemaKey:"properties.advanced.properties.log_level",config:l,configKey:"advanced.log_level",onChange:r})}),e.jsxs("div",{className:"col-12",children:[e.jsx("label",{htmlFor:"reset",children:" "}),e.jsx("input",{id:"reset",type:"button",onClick:t,className:"btn btn-primary form-control",value:o("common:clear")})]})]})})})}render(){let{logs:t}=this.props;const{t:a}=this.props,{search:l,logLevel:r}=this.state;return t=t.filter(o=>(r===i||o.level===r)&&(!l||o.message.toLowerCase().includes(l.toLowerCase()))).sort(),e.jsxs(e.Fragment,{children:[this.renderSearch(),e.jsx("div",{className:"card",children:e.jsxs("div",{className:"card-body",children:[t.length==0?e.jsx("h1",{children:a("empty_logs_message")}):null,e.jsx("div",{className:"overflow-auto",children:t.map((o,c)=>e.jsx(p,{log:o,search:l,logLevel:r},c))})]})})]})}}const G=["logs","bridgeInfo"],M=_(G,y)(N(["logs","common"])(B)),J=Object.freeze(Object.defineProperty({__proto__:null,ConnectedLogsPage:M,LogRow:p},Symbol.toStringTag,{value:"Module"}));export{i as A,p as L,J as i};
|
Binary file
|