zigbee2mqtt-frontend 0.6.159 → 0.6.161
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 +13 -0
- package/dist/assets/Availability-e91d3536.js +1 -0
- package/dist/assets/Availability-e91d3536.js.br +0 -0
- package/dist/assets/CodeEditor-ee543824.js +23 -0
- package/dist/assets/CodeEditor-ee543824.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-59cf87e7.js +1 -0
- package/dist/assets/ConnectedDevicePage-59cf87e7.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-d0426b1a.css +1 -0
- package/dist/assets/ConnectedDevicePage-d0426b1a.css.br +2 -0
- package/dist/assets/ConnectedMap-09816cd6.css +1 -0
- package/dist/assets/ConnectedMap-09816cd6.css.br +3 -0
- package/dist/assets/ConnectedMap-761cfd93.js +1 -0
- package/dist/assets/ConnectedMap-761cfd93.js.br +0 -0
- package/dist/assets/DEVICES_GLOBAL_NAME-6620c611.js +1 -0
- package/dist/assets/Dashboard-cc086107.js +1 -0
- package/dist/assets/Dashboard-cc086107.js.br +0 -0
- package/dist/assets/DashboardDevice-c60201bb.js +1 -0
- package/dist/assets/DashboardDevice-c60201bb.js.br +0 -0
- package/dist/assets/DashboardDevice-c62bbf6a.css +1 -0
- package/dist/assets/DashboardFeatureWrapper-ef543cb2.js +1 -0
- package/dist/assets/DashboardFeatureWrapper-ef543cb2.js.br +0 -0
- package/dist/assets/DeviceImage-a3fb91b8.js +1 -0
- package/dist/assets/DeviceImage-a3fb91b8.js.br +0 -0
- package/dist/assets/DeviceImage-da893e86.css +1 -0
- package/dist/assets/GroupPage-c4462a0b.js +1 -0
- package/dist/assets/GroupPage-c4462a0b.js.br +0 -0
- package/dist/assets/ReactTableCom-5f5db069.js +1 -0
- package/dist/assets/ReactTableCom-5f5db069.js.br +0 -0
- package/dist/assets/RecallRemove-a3a43a56.js +1 -0
- package/dist/assets/RecallRemove-a3a43a56.js.br +0 -0
- package/dist/assets/_baseSet-411f0b9b.js +1 -0
- package/dist/assets/_getAllKeysIn-d7fdca48.js +1 -0
- package/dist/assets/bootstrap-5.esm-54b60f6b.js +11 -0
- package/dist/assets/bootstrap-5.esm-54b60f6b.js.br +0 -0
- package/dist/assets/dark-b30c62cc.css.br +0 -0
- package/dist/assets/index-317fed81.js +1 -0
- package/dist/assets/index-317fed81.js.br +0 -0
- package/dist/assets/index-361b7a42.js +1 -0
- package/dist/assets/index-48cdec75.css +1 -0
- package/dist/assets/{index-5c0a913d.css → index-654e4a69.css} +1 -1
- package/dist/assets/index-654e4a69.css.br +0 -0
- package/dist/assets/index-662e592d.js +1 -0
- package/dist/assets/index-662e592d.js.br +0 -0
- package/dist/assets/index-bbc0fbd3.js +1 -0
- package/dist/assets/index-bbc0fbd3.js.br +0 -0
- package/dist/assets/index-c733cdf7.css +1 -0
- package/dist/assets/index-d5165a07.css +1 -0
- package/dist/assets/index-d5688308.js +1 -0
- package/dist/assets/index-d5688308.js.br +0 -0
- package/dist/assets/index-dd5bd773.js +1 -0
- package/dist/assets/index-dd5bd773.js.br +0 -0
- package/dist/assets/index-e4174e1c.css +1 -0
- package/dist/assets/index-e886b299.js +1 -0
- package/dist/assets/index-e886b299.js.br +0 -0
- package/dist/assets/index-ef73b565.js +36 -0
- package/dist/assets/index-ef73b565.js.br +0 -0
- package/dist/assets/{index-4b582892.js → index-fb4a4614.js} +53 -1364
- package/dist/assets/index-fb4a4614.js.br +0 -0
- package/dist/assets/index-ff79f9f4.js +1 -0
- package/dist/assets/index-ff79f9f4.js.br +0 -0
- package/dist/assets/intersection-fb9aff53.js +1 -0
- package/dist/assets/intersection-fb9aff53.js.br +0 -0
- package/dist/assets/isEqual-ddfc316d.js +1 -0
- package/dist/assets/light-35b737cc.css.br +0 -0
- package/dist/assets/persist-47ba9205.js +1 -0
- package/dist/assets/persist-47ba9205.js.br +0 -0
- package/dist/assets/powerSourceTypeToTranslationKey-452dac81.js +1 -0
- package/dist/assets/rjsf-translation-fields-3aef875c.js +1 -0
- package/dist/assets/spinner-73379dc1.js +1 -0
- package/dist/assets/vendor-links-5c024fe8.js +1 -0
- package/dist/assets/vendor-links-5c024fe8.js.br +0 -0
- package/dist/index.html +2 -2
- package/dist/index.html.br +0 -0
- package/package.json +14 -12
- package/dist/assets/dark-b30c62cc.css.gz +0 -0
- package/dist/assets/index-4b582892.js.gz +0 -0
- package/dist/assets/index-5c0a913d.css.gz +0 -0
- package/dist/assets/light-35b737cc.css.gz +0 -0
- package/dist/index.html.gz +0 -0
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
import{ar as d,u as p,j as t,b,l as h,r as w}from"./index-fb4a4614.js";import{p as y}from"./powerSourceTypeToTranslationKey-452dac81.js";var m=[60,60,24,7,365/7/12,12];function x(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function j(e,a){var n=e<0?1:0;e=Math.abs(e);for(var r=e,s=0;e>=m[s]&&s<m.length;s++)e/=m[s];return e=Math.floor(e),s*=2,e>(s===0?9:1)&&(s+=1),a(e,s,r)[n].replace("%s",e.toString())}function _(e,a){var n=a?x(a):new Date;return(+n-+x(e))/1e3}var N=function(e,a,n){var r=_(e,n&&n.relativeDate);return j(r,d(a))};function k(e){const{value:a,name:n}=e,{t:r}=p("values"),s={contact:new Map([[!0,r("closed")],[!1,r("open")]]),occupancy:new Map([[!0,r("occupied")],[!1,r("clear")]]),water_leak:new Map([[!0,t.jsx("span",{className:b("text-danger","animation-blinking"),children:r("leaking")},"Leaking")],[!1,r("clear")]]),tamper:new Map([[!0,t.jsx("span",{className:b("text-danger","animation-blinking"),children:r("tampered")},"tampered")],[!1,r("clear")]]),supported:new Map([[!0,r("supported")],[!1,r("not_supported")]]),_default:new Map([[!0,r("true")],[!1,r("false")]])},i=s[n]||s._default;return t.jsx(t.Fragment,{children:i.get(a)})}function L(e){const{t:a}=p("values"),{value:n}=e;switch(typeof n){case"boolean":return t.jsx(k,{...e});case"undefined":return t.jsx(t.Fragment,{children:"N/A"});case"object":return t.jsx(t.Fragment,{children:n===null?a("null"):JSON.stringify(n)});case"string":return t.jsx(t.Fragment,{children:n===""?t.jsx("small",{className:"text-muted",children:a("empty_string")}):n});default:return t.jsx(t.Fragment,{children:JSON.stringify(n)})}}function v(e){const{i18n:a}=p(),{state:n,lastSeenType:r}=e,s=h(n,r);return s?t.jsx(t.Fragment,{children:N(s,a.language)}):t.jsx(t.Fragment,{children:"N/A"})}const D="_plug_1sba2_1",M={plug:D},F=({device:e,deviceState:a,showLevel:n,...r})=>{const{t:s}=p("zigbee");let i;switch(e!==void 0&&(i=e.power_source),i){case"Battery":let g=s(y(i)),u="",l="fa-question",o,f,c;if(a!==void 0&&((a==null?void 0:a.battery)!==void 0&&(o=a.battery),(a==null?void 0:a.battery_state)!==void 0&&(f=a.battery_state),(a==null?void 0:a.battery_low)!==void 0&&(c=a.battery_low)),o!==void 0)if(u=o+"%",o>=85)l="fa-battery-full";else if(o>=65)l="fa-battery-three-quarters";else if(o>=40)l="fa-battery-half";else if(o>=20)l="fa-battery-quarter";else if(o>=10)l="fa-battery-empty animation-blinking";else return t.jsxs("span",{className:"animation-blinking text-danger",role:"alert",children:[o,"%"]});else if(f!==void 0)switch(u=f,f){case"high":l="fa-battery-full";break;case"medium":l="fa-battery-half";break;case"low":l="fa-battery-empty animation-blinking";break}else c!==void 0&&(u=c?"LOW":"OK",l=c?"fa-battery-empty":"fa-battery-full");return c===!0&&(l+=" animation-blinking text-danger"),u!==""&&(g+=", "+s("power_level")+`: ${u}`),t.jsxs(w.Fragment,{children:[n?t.jsxs("span",{className:"pe-2",children:[s("battery")," ",u]}):null,t.jsx("i",{className:`fa ${l}`,title:g,...r})]});case"Mains (single phase)":case"DC Source":return t.jsx("i",{className:`fa fa-plug ${M.plug}`,title:s(y(i)),...r});default:return t.jsx("i",{className:"fa fa-question",title:i,...r})}},q=F;export{L as D,v as L,q as P};
|
Binary file
|
@@ -0,0 +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-fb4a4614.js";import{D as x}from"./DeviceImage-a3fb91b8.js";import{V as v,M as k,O}from"./vendor-links-5c024fe8.js";import{T as A}from"./ReactTableCom-5f5db069.js";import"./index-361b7a42.js";import"./persist-47ba9205.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
|
@@ -0,0 +1 @@
|
|
1
|
+
._action-column_1729o_1 span{padding:0}._action-column_1729o_1 i{margin-left:5px}._device-pic_1729o_8{padding-top:0!important;padding-bottom:0!important;min-height:56px}._device-image_1729o_14 img{max-height:2em}
|
@@ -0,0 +1 @@
|
|
1
|
+
._hide-description_19xm6_1 .field-description{display:none}
|
@@ -0,0 +1 @@
|
|
1
|
+
import{c as m,a as p,w as u,r as g,j as e,L as f,g as k,B as t,b as d}from"./index-fb4a4614.js";import{T as x}from"./ReactTableCom-5f5db069.js";import"./persist-47ba9205.js";class b extends g.Component{constructor(){super(...arguments),this.onIdentifyClick=n=>{const{touchlinkIdentify:i}=this.props;i(n)},this.onResetClick=n=>{const{touchlinkReset:i}=this.props;i(n)}}renderTouchlinkDevices(){const{touchlinkDevices:n,devices:i,touchlinkIdentifyInProgress:r,touchlinkResetInProgress:a,t:c}=this.props,o=r||a,h=[{Header:c("zigbee:ieee_address"),accessor:s=>s.ieee_address,Cell:({row:{original:s}})=>i[s.ieee_address]?e.jsx(f,{to:k(s.ieee_address),children:s.ieee_address}):s.ieee_address},{Header:c("zigbee:friendly_name"),accessor:s=>{var l;return(l=i[s.ieee_address])==null?void 0:l.friendly_name}},{id:"channel",Header:c("zigbee:channel"),accessor:"channel"},{id:"actions",Header:"",Cell:({row:{original:s}})=>e.jsxs("div",{className:"btn-group float-right",role:"group","aria-label":"Basic example",children:[e.jsx(t,{disabled:o,item:s,title:c("identify"),className:"btn btn-primary",onClick:this.onIdentifyClick,children:e.jsx("i",{className:d("fa",{"fa-exclamation-triangle":!r,"fas fa-circle-notch fa-spin":r})})}),e.jsx(t,{disabled:o,item:s,title:c("factory_reset"),className:"btn btn-danger",onClick:this.onResetClick,children:e.jsx("i",{className:d("fa",{"fa-broom":!a,"fas fa-circle-notch fa-spin":a})})})]})}];return e.jsx("div",{className:"table-responsive",children:e.jsx(x,{id:"touchlinkDevices",columns:h,data:n})})}renderNoDevices(){const{touchlinkScan:n,t:i}=this.props;return e.jsx(t,{className:"btn btn-primary mx-auto d-block",onClick:n,children:i("scan")})}render(){const{touchlinkDevices:n,touchlinkScanInProgress:i,touchlinkScan:r,t:a}=this.props;return e.jsxs("div",{className:"card",children:[e.jsxs("div",{className:"card-header allign-middle",children:[a("detected_devices_message",{count:n.length}),e.jsx(t,{title:a("rescan"),className:"btn btn-primary btn-sm float-right",onClick:r,children:e.jsx("i",{className:"fa fa-sync"})})]}),e.jsx("div",{className:"card-body",children:i?e.jsx("div",{className:"d-flex justify-content-center",children:e.jsx("div",{className:"spinner-border",role:"status",children:e.jsx("span",{className:"sr-only",children:a("common:loading")})})}):n.length===0?this.renderNoDevices():this.renderTouchlinkDevices()})]})}}const j=["touchlinkDevices","devices","touchlinkScanInProgress","touchlinkIdentifyInProgress","touchlinkResetInProgress"],I=m(j,p)(u(["touchlink","zigbee","common"])(b));export{I as ConnectedTouchlinkPage};
|
Binary file
|
@@ -0,0 +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-fb4a4614.js";import{V as k,M as E}from"./vendor-links-5c024fe8.js";import{L,D as T,P as q}from"./index-662e592d.js";import{i as F,A as M,D as N}from"./Availability-e91d3536.js";import{T as P}from"./ReactTableCom-5f5db069.js";import{D as A}from"./DeviceImage-a3fb91b8.js";import{D as I}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-47ba9205.js";import"./index-361b7a42.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
|
@@ -0,0 +1 @@
|
|
1
|
+
._plug_1sba2_1{margin-left:4px}
|
@@ -0,0 +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-fb4a4614.js";import{T as y}from"./ReactTableCom-5f5db069.js";import"./persist-47ba9205.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
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import{j as e,B as c,N as m,u,e as E,r as l,M as g,f as C,h as v,k as b,_ as j,c as _,a as y,w as N}from"./index-fb4a4614.js";const f=`class MyExampleExtension_TS_ {
|
2
|
+
constructor(zigbee, mqtt, state, publishEntityState, eventBus, settings, logger) {
|
3
|
+
logger.info('Loaded MyExampleExtension_TS_');
|
4
|
+
mqtt.publish('example/extension', 'hello from MyExampleExtension_TS_');
|
5
|
+
this.mqttBaseTopic = settings.get().mqtt.base_topic;
|
6
|
+
this.eventBus = eventBus;
|
7
|
+
this.mqtt = mqtt;
|
8
|
+
this.eventBus.on('stateChange', this.onStateChange.bind(this), this.constructor.name);
|
9
|
+
}
|
10
|
+
|
11
|
+
async onStateChange(data) {
|
12
|
+
console.log('State changed', data); // comment this out if clutters logs
|
13
|
+
|
14
|
+
const { entity, update } = data;
|
15
|
+
|
16
|
+
//example how to toggle state
|
17
|
+
if (entity.ID === '0x00158d000224154d') {
|
18
|
+
//state changed for some device (example: clicked a button)
|
19
|
+
if (update.action === 'single') {
|
20
|
+
const myLampIeeAddr = '0x00124b001e73227f'; // change this
|
21
|
+
this.mqtt.onMessage(\`\${this.mqttBaseTopic}/\${myLampIeeAddr}/set\`, JSON.stringify({ state: 'toggle' }));
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
async onMQTTMessage(topic, message) {
|
27
|
+
// console.log({topic, message});
|
28
|
+
}
|
29
|
+
|
30
|
+
async stop() {
|
31
|
+
this.eventBus.removeListeners(this.constructor.name);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
module.exports = MyExampleExtension_TS_;
|
36
|
+
`,S=m.create(r=>{const{updateExtensionCode:t,onCreated:o,ts:n}=r,{t:a}=u(["extensions","common"]),s=E(),[i,x]=l.useState(`example-user-extension${n}.js`),d=f.replace(/_TS_/g,n.toString()),h=()=>{t({name:i,code:d}),o({name:i,code:d}),s.remove()};return e.jsxs(g,{isOpen:s.visible,children:[e.jsx(C,{children:a("create_new_extension")}),e.jsxs(v,{children:[e.jsx("label",{className:"form-label",children:a("extension_name_propmt")}),e.jsx("input",{type:"text",className:"form-control",value:i,onChange:p=>x(p.target.value)})]}),e.jsxs(b,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:s.remove,children:a("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:h,children:a("common:ok")})]})]})});function M(r){return e.jsx(c,{className:"btn btn-success me-2",onClick:()=>m.show(S,{ts:Date.now(),...r}),children:e.jsx("i",{className:"fa fa-plus"})})}const T=l.lazy(()=>j(()=>import("./CodeEditor-ee543824.js"),["./CodeEditor-ee543824.js","./index-fb4a4614.js","./index-654e4a69.css"],import.meta.url));class k extends l.Component{constructor(){super(...arguments),this.state={},this.loadExtension=t=>{const{value:o}=t.target;this.setState({currentExtension:o})},this.onExtensionCodeChange=t=>{const{updateExtensionCode:o}=this.props,{currentExtension:n}=this.state;n&&o({name:n,code:t})},this.onSaveClick=()=>{const{saveExtensionCode:t}=this.props;t(this.getCurrentExtension())},this.removeExtension=()=>{const{removeExtension:t}=this.props;t(this.getCurrentExtension())}}getCurrentExtension(){const{currentExtension:t}=this.state,{extensions:o}=this.props;return o.find(n=>n.name===t)}renderControls(){const{currentExtension:t}=this.state,{extensions:o,t:n,updateExtensionCode:a}=this.props;return e.jsxs("div",{className:"row mb-2",children:[e.jsx("div",{className:"col-6",children:e.jsxs("select",{value:t,className:"form-control",onChange:this.loadExtension,children:[e.jsx("option",{hidden:!0,children:n("select_extension_to_edit")},"hidden"),o.map(({name:s})=>e.jsx("option",{value:s,children:s},s))]})}),e.jsxs("div",{className:"col-6",children:[e.jsx(M,{updateExtensionCode:a,onCreated:s=>this.setState({currentExtension:s.name})}),e.jsx(c,{prompt:!0,disabled:!t,onClick:this.removeExtension,className:"btn btn-danger me-2",children:e.jsx("i",{className:"fa fa-trash"})}),e.jsx(c,{disabled:!t,onClick:this.onSaveClick,className:"btn btn-primary",children:n("common:save")})]})]})}renderEditor(){var s;const{currentExtension:t}=this.state,{extensions:o,theme:n}=this.props,a=((s=o.find(i=>i.name===t))==null?void 0:s.code)??"";return e.jsx(T,{value:a,onChange:this.onExtensionCodeChange,theme:n})}render(){return e.jsx("div",{className:"card h-100",children:e.jsxs("div",{className:"card-body h-100",children:[this.renderControls(),this.renderEditor()]})})}}const B=["extensions","theme"],q=_(B,y)(N("extensions")(k));export{q as ConnectedExtensionsEditorPage};
|
Binary file
|