zigbee2mqtt-frontend 0.9.1 → 0.9.2
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 +10 -0
- package/dist/assets/{Availability-e3f34491.js → Availability-003eccb5.js} +1 -1
- package/dist/assets/Availability-003eccb5.js.br +0 -0
- package/dist/assets/{CodeEditor-8f838f2b.js → CodeEditor-29b4941d.js} +1 -1
- package/dist/assets/CodeEditor-29b4941d.js.br +0 -0
- package/dist/assets/{ConnectedDevicePage-23fbac1c.js → ConnectedDevicePage-f6229205.js} +1 -1
- package/dist/assets/ConnectedDevicePage-f6229205.js.br +0 -0
- package/dist/assets/{ConnectedMap-f2f16e4a.js → ConnectedMap-1872a278.js} +1 -1
- package/dist/assets/ConnectedMap-1872a278.js.br +0 -0
- package/dist/assets/{Dashboard-a31f63a3.js → Dashboard-9b4595d6.js} +1 -1
- package/dist/assets/Dashboard-9b4595d6.js.br +0 -0
- package/dist/assets/{DashboardDevice-ccfe7ecb.js → DashboardDevice-60195d81.js} +1 -1
- package/dist/assets/DashboardDevice-60195d81.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-a0202672.js → DashboardFeatureWrapper-1abc9897.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-1abc9897.js.br +0 -0
- package/dist/assets/{DeviceImage-b0ce2953.js → DeviceImage-3b4915d4.js} +1 -1
- package/dist/assets/DeviceImage-3b4915d4.js.br +0 -0
- package/dist/assets/{GroupPage-c55487be.js → GroupPage-8c956e8b.js} +1 -1
- package/dist/assets/GroupPage-8c956e8b.js.br +0 -0
- package/dist/assets/{ReactTableCom-c5fa0b55.js → ReactTableCom-d74e8983.js} +1 -1
- package/dist/assets/ReactTableCom-d74e8983.js.br +0 -0
- package/dist/assets/{RecallRemove-70fe8bb8.js → RecallRemove-c44ed294.js} +1 -1
- package/dist/assets/RecallRemove-c44ed294.js.br +0 -0
- package/dist/assets/{_baseSet-1ec3161b.js → _baseSet-9580cd14.js} +1 -1
- package/dist/assets/{_getAllKeysIn-d1e577d0.js → _getAllKeysIn-f8f9e6cb.js} +1 -1
- package/dist/assets/{bootstrap-5.esm-35e5e53c.js → bootstrap-5.esm-f71148c0.js} +1 -1
- package/dist/assets/bootstrap-5.esm-f71148c0.js.br +0 -0
- package/dist/assets/{index-cfdcdcf7.js → index-064644be.js} +1 -1
- package/dist/assets/index-064644be.js.br +0 -0
- package/dist/assets/index-1f7ed5b8.js +1 -0
- package/dist/assets/index-1f7ed5b8.js.br +0 -0
- package/dist/assets/{index-fa2b36de.js → index-1fd72663.js} +1 -1
- package/dist/assets/index-1fd72663.js.br +0 -0
- package/dist/assets/index-20d96d6d.js +66 -0
- package/dist/assets/index-20d96d6d.js.br +0 -0
- package/dist/assets/{index-58298b0b.js → index-4942892c.js} +1 -1
- package/dist/assets/index-4942892c.js.br +0 -0
- package/dist/assets/{index-facf920d.js → index-602313de.js} +1 -1
- package/dist/assets/index-602313de.js.br +0 -0
- package/dist/assets/index-80df36d1.js +1 -0
- package/dist/assets/{index-87401d53.js → index-b54cf175.js} +1 -1
- package/dist/assets/index-b54cf175.js.br +0 -0
- package/dist/assets/{index-fa2281ed.js → index-bf535e7e.js} +1 -1
- package/dist/assets/index-bf535e7e.js.br +0 -0
- package/dist/assets/{index-16e319d7.js → index-e12d529d.js} +46 -63
- package/dist/assets/index-e12d529d.js.br +0 -0
- package/dist/assets/{intersection-87b17905.js → intersection-00b5d8ed.js} +1 -1
- package/dist/assets/intersection-00b5d8ed.js.br +0 -0
- package/dist/assets/{isEqual-7fe66f96.js → isEqual-2bd1f3a6.js} +1 -1
- package/dist/assets/{jszip.min-db1a8563.js → jszip.min-f201b749.js} +1 -1
- package/dist/assets/jszip.min-f201b749.js.br +0 -0
- package/dist/assets/{persist-2803de70.js → persist-45b1730f.js} +1 -1
- package/dist/assets/persist-45b1730f.js.br +0 -0
- package/dist/assets/{rjsf-translation-fields-201a8d86.js → rjsf-translation-fields-3acfc8df.js} +1 -1
- package/dist/assets/{spinner-d5ff5058.js → spinner-c6b7d6b4.js} +1 -1
- package/dist/assets/{vendor-links-6df665d0.js → vendor-links-f7b4e675.js} +1 -1
- package/dist/assets/vendor-links-f7b4e675.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-e3f34491.js.br +0 -0
- package/dist/assets/CodeEditor-8f838f2b.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-23fbac1c.js.br +0 -0
- package/dist/assets/ConnectedMap-f2f16e4a.js.br +0 -0
- package/dist/assets/Dashboard-a31f63a3.js.br +0 -0
- package/dist/assets/DashboardDevice-ccfe7ecb.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-a0202672.js.br +0 -0
- package/dist/assets/DeviceImage-b0ce2953.js.br +0 -0
- package/dist/assets/GroupPage-c55487be.js.br +0 -0
- package/dist/assets/ReactTableCom-c5fa0b55.js.br +0 -0
- package/dist/assets/RecallRemove-70fe8bb8.js.br +0 -0
- package/dist/assets/bootstrap-5.esm-35e5e53c.js.br +0 -0
- package/dist/assets/index-16e319d7.js.br +0 -0
- package/dist/assets/index-58298b0b.js.br +0 -0
- package/dist/assets/index-6f4fc5d2.js +0 -1
- package/dist/assets/index-6f4fc5d2.js.br +0 -0
- package/dist/assets/index-87401d53.js.br +0 -0
- package/dist/assets/index-9d70ff17.js +0 -1
- package/dist/assets/index-cdcf121a.js +0 -36
- package/dist/assets/index-cdcf121a.js.br +0 -0
- package/dist/assets/index-cfdcdcf7.js.br +0 -0
- package/dist/assets/index-fa2281ed.js.br +0 -0
- package/dist/assets/index-fa2b36de.js.br +0 -0
- package/dist/assets/index-facf920d.js.br +0 -0
- package/dist/assets/intersection-87b17905.js.br +0 -0
- package/dist/assets/jszip.min-db1a8563.js.br +0 -0
- package/dist/assets/persist-2803de70.js.br +0 -0
- package/dist/assets/vendor-links-6df665d0.js.br +0 -0
@@ -1 +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-
|
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-e12d529d.js";import{T as x}from"./ReactTableCom-d74e8983.js";import"./persist-45b1730f.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,66 @@
|
|
1
|
+
import{j as e,B as l,N as h,u,e as b,r as c,M as g,f as E,h as C,k as v,_ as j,c as y,a as _,w as f}from"./index-e12d529d.js";const N=`class MyExampleExtension_TS_ {
|
2
|
+
constructor(
|
3
|
+
zigbee,
|
4
|
+
mqtt,
|
5
|
+
state,
|
6
|
+
publishEntityState,
|
7
|
+
eventBus,
|
8
|
+
enableDisableExtension,
|
9
|
+
restartCallback,
|
10
|
+
addExtension,
|
11
|
+
settings,
|
12
|
+
logger,
|
13
|
+
) {
|
14
|
+
this.zigbee = zigbee;
|
15
|
+
this.mqtt = mqtt;
|
16
|
+
this.state = state;
|
17
|
+
this.publishEntityState = publishEntityState;
|
18
|
+
this.eventBus = eventBus;
|
19
|
+
this.enableDisableExtension = enableDisableExtension;
|
20
|
+
this.restartCallback = restartCallback;
|
21
|
+
this.addExtension = addExtension;
|
22
|
+
this.settings = settings;
|
23
|
+
this.logger = logger;
|
24
|
+
|
25
|
+
this.logger.info('Loaded MyExampleExtension_TS_');
|
26
|
+
this.mqttBaseTopic = this.settings.get().mqtt.base_topic;
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Called when the extension starts (on Zigbee2MQTT startup, or when the extension is saved at runtime)
|
31
|
+
*/
|
32
|
+
start() {
|
33
|
+
this.mqtt.publish('example/extension', 'hello from MyExampleExtension_TS_');
|
34
|
+
|
35
|
+
// all possible events can be seen here: https://github.com/Koenkk/zigbee2mqtt/blob/master/lib/eventBus.ts
|
36
|
+
|
37
|
+
this.eventBus.onStateChange(this, this.onStateChange.bind(this));
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Called when the extension stops (on Zigbee2MQTT shutdown, or when the extension is saved/removed at runtime)
|
42
|
+
*/
|
43
|
+
stop() {
|
44
|
+
this.eventBus.removeListeners(this);
|
45
|
+
}
|
46
|
+
|
47
|
+
async onStateChange(data) {
|
48
|
+
// see typing (properties) here: https://github.com/Koenkk/zigbee2mqtt/blob/master/lib/types/types.d.ts => namespace eventdata
|
49
|
+
const { entity, update } = data;
|
50
|
+
|
51
|
+
// example how to toggle state
|
52
|
+
if (entity.ID === '0x00158d000224154d') {
|
53
|
+
this.logger.info(\`State changed for 0x00158d000224154d: \${JSON.stringify(data)}\`);
|
54
|
+
|
55
|
+
// state changed for some device (example: clicked a button)
|
56
|
+
if (update.action === 'single') {
|
57
|
+
const myLampIeeAddr = '0x00124b001e73227f'; // change this
|
58
|
+
|
59
|
+
this.mqtt.onMessage(\`\${this.mqttBaseTopic}/\${myLampIeeAddr}/set\`, JSON.stringify({ state: 'toggle' }));
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
module.exports = MyExampleExtension_TS_;
|
66
|
+
`,S=h.create(r=>{const{updateExtensionCode:t,onCreated:o,ts:n}=r,{t:i}=u(["extensions","common"]),s=b(),[a,m]=c.useState(`example-user-extension${n}.js`),d=N.replace(/_TS_/g,n.toString()),x=()=>{t({name:a,code:d}),o({name:a,code:d}),s.remove()};return e.jsxs(g,{isOpen:s.visible,children:[e.jsx(E,{children:i("create_new_extension")}),e.jsxs(C,{children:[e.jsx("label",{className:"form-label",children:i("extension_name_propmt")}),e.jsx("input",{type:"text",className:"form-control",value:a,onChange:p=>m(p.target.value)})]}),e.jsxs(v,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:s.remove,children:i("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:x,children:i("common:ok")})]})]})});function k(r){return e.jsx(l,{className:"btn btn-success me-2",onClick:()=>h.show(S,{ts:Date.now(),...r}),children:e.jsx("i",{className:"fa fa-plus"})})}const M=c.lazy(()=>j(()=>import("./CodeEditor-29b4941d.js"),["./CodeEditor-29b4941d.js","./index-e12d529d.js","./index-0f5e7faa.css","./extends-98964cd2.js"],import.meta.url));class w extends c.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:i}=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(k,{updateExtensionCode:i,onCreated:s=>this.setState({currentExtension:s.name})}),e.jsx(l,{prompt:!0,disabled:!t,onClick:this.removeExtension,className:"btn btn-danger me-2",children:e.jsx("i",{className:"fa fa-trash"})}),e.jsx(l,{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,i=((s=o.find(a=>a.name===t))==null?void 0:s.code)??"";return e.jsx(M,{value:i,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 T=["extensions","theme"],q=y(T,_)(f("extensions")(w));export{q as ConnectedExtensionsEditorPage};
|
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-e12d529d.js";import{D as x}from"./DeviceImage-3b4915d4.js";import{V as v,M as k,O}from"./vendor-links-f7b4e675.js";import{T as A}from"./ReactTableCom-d74e8983.js";import"./index-80df36d1.js";import"./persist-45b1730f.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{p as v,O as u,C as x,j as e,b,v as _,c as N,a as y,w as C,r as L,H as g}from"./index-
|
1
|
+
import{p as v,O as u,C as x,j as e,b,v as _,c as N,a as y,w as C,r as L,H as g}from"./index-e12d529d.js";import{w,T as S}from"./bootstrap-5.esm-f71148c0.js";import{_ as E}from"./_baseSet-9580cd14.js";var F=u,j=/[\\^$.*+?()[\]{}|]/g,R=RegExp(j.source);function T(s){return s=F(s),s&&R.test(s)?s.replace(j,"\\$&"):s}var $=T;const D=v($);var K=E;function P(s,o,a){return s==null?s:K(s,o,a)}var H=P;const I=v(H),O={"hide-description":"_hide-description_19xm6_1"},k=w(S);function z(s){const{schema:o={},schemaKey:a="",config:c={},configKey:t="",onChange:r}=s,n=x(c,t,{}),d=x(o,a,{}),l=i=>{const h={};I(h,t,i.formData),r(h)};return e.jsx(k,{schema:d,className:O["hide-description"],formData:n,onChange:l,children:e.jsx("div",{})})}const m="all",p=({text:s})=>e.jsx(e.Fragment,{children:s}),A=({text:s="",highlight:o=""})=>{if(!o.trim())return e.jsx(p,{text:s});const a=new RegExp(`(${D(o)})`,"gi"),c=s.split(a);return e.jsx(e.Fragment,{children:c.filter(t=>t).map((t,r)=>a.test(t)?e.jsx("mark",{children:t},r):e.jsx(p,{text:t},r))})};function f(s){const{logLevel:o,log:a,search:c}=s,t=o===m&&e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{width:"60px"},className:b("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:[t,e.jsx("small",{className:"pe-1",children:_(a.timestamp)}),e.jsx("code",{children:e.jsx(A,{text:a.message,highlight:c})})]})}const B=[m,"debug","info","warning","error"],M=[100,200,500,1e3];class W extends L.Component{constructor(){super(...arguments),this.state={search:"",logLevel:m}}renderSearch(){const{clearLogs:o,bridgeInfo:{config_schema:a,config:c},updateBridgeConfig:t,t:r}=this.props,{search:n}=this.state,{logsLimit:d}=g.getState();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:r("show_only")}),e.jsx("select",{id:"log-level",className:"form-select",onChange:l=>this.setState({logLevel:l.target.value}),children:B.map(l=>e.jsx("option",{value:l,children:l},l))})]}),e.jsxs("div",{className:"col-12 col-sm-4 col-xxl-4",children:[e.jsx("label",{htmlFor:"search-filter",className:"form-label",children:r("filter_by_text")}),e.jsx("input",{id:"search-filter",className:"form-control col-10",placeholder:r("common:enter_search_criteria"),value:n,onChange:l=>this.setState({search:l.target.value}),type:"text"})]}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4",children:e.jsx(z,{schema:a,schemaKey:"properties.advanced.properties.log_level",config:c,configKey:"advanced.log_level",onChange:t})}),e.jsxs("div",{className:"col-12 col-sm-4 col-xxl-4",children:[e.jsx("label",{htmlFor:"logs-limit",className:"form-label",children:r("logs_limit")}),e.jsx("select",{id:"logs-limit",className:"form-select",onChange:l=>{const i=parseInt(l.target.value);g.setState({logsLimit:i,logs:[...g.getState().logs.slice(-i)]})},children:M.map(l=>e.jsx("option",{value:l,selected:l==d,children:l},l))})]}),e.jsxs("div",{className:"col-12",children:[e.jsx("label",{htmlFor:"reset",children:" "}),e.jsx("input",{id:"reset",type:"button",onClick:o,className:"btn btn-primary form-control",value:r("common:clear")})]})]})})})}render(){let{logs:o}=this.props;const{t:a}=this.props,{search:c,logLevel:t}=this.state;return o=o.filter(r=>(t===m||r.level===t)&&(!c||r.message.toLowerCase().includes(c.toLowerCase()))).sort(),e.jsxs(e.Fragment,{children:[this.renderSearch(),e.jsx("div",{className:"card",children:e.jsxs("div",{className:"card-body",children:[o.length==0?e.jsx("h1",{children:a("empty_logs_message")}):null,e.jsx("div",{className:"overflow-auto",children:o.map((r,n)=>e.jsx(f,{log:r,search:c,logLevel:t},n))})]})})]})}}const q=["logs","bridgeInfo"],G=N(q,y)(C(["logs","common"])(W)),V=Object.freeze(Object.defineProperty({__proto__:null,ConnectedLogsPage:G,LogRow:f},Symbol.toStringTag,{value:"Module"}));export{m as A,f as L,V as i};
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
import{aP as i}from"./index-e12d529d.js";const n=""+new URL("generic-zigbee-device-c9aa86d9.png",import.meta.url).href,a="https://www.zigbee2mqtt.io/images/devices/",o=e=>{var t;return`${a}${i((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},m=[s,o,()=>n];export{m as A,n as a,o as g};
|
@@ -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-e12d529d.js";import{T as y}from"./ReactTableCom-d74e8983.js";import"./persist-45b1730f.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{u as g,l as D,j as i,r as j,L as x,g as w,d as f,c as C,a as h,w as k,R as S,i as H}from"./index-
|
1
|
+
import{u as g,l as D,j as i,r as j,L as x,g as w,d as f,c as C,a as h,w as k,R as S,i as H}from"./index-e12d529d.js";import{V as E,M as L}from"./vendor-links-f7b4e675.js";import{L as T,D as q,P as F}from"./index-064644be.js";import{i as M,A as N,D as P}from"./Availability-003eccb5.js";import{T as A}from"./ReactTableCom-d74e8983.js";import{D as I}from"./DeviceImage-3b4915d4.js";import{D as R}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-45b1730f.js";import"./index-80df36d1.js";const V={"action-column":"_action-column_1729o_1","device-pic":"_device-pic_1729o_8","device-image":"_device-image_1729o_14"};function B(t){const{data:l,lastSeenType:o,availabilityFeatureEnabled:r,homeassistantEnabled:d,setDeviceDescription:y}=t,{renameDevice:c,removeDevice:m,configureDevice:v,interviewDevice:u}=t,{t:s}=g(["zigbee","common","avaliability"]),b=o!=="disable"?[{id:"last_seen",Header:s("last_seen"),accessor:({state:e})=>{var a;return(a=D(e,o))==null?void 0:a.getTime()},Cell:({row:{original:{state:e}}})=>i.jsx(T,{state:e,lastSeenType:o})}]:[],_=r?[{id:"availability",Header:s("avaliability:avaliability"),accessor:({availabilityState:e})=>M(e)?e:e.state,Cell:({row:{original:{availabilityState:e,availabilityEnabledForDevice:a,disabled:n}}})=>i.jsx(N,{disabled:n,availability:e,availabilityEnabledForDevice:a})}]:[],p=j.useMemo(()=>[{id:"pic",Header:s("pic"),Cell:({row:{original:{device:e,state:a,disabled:n}}})=>i.jsx(I,{className:V["device-image"],device:e,deviceStatus:a,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}}})=>i.jsxs(i.Fragment,{children:[i.jsx(x,{to:w(e.ieee_address),children:e.friendly_name}),i.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}}})=>i.jsxs(i.Fragment,{children:[i.jsx("div",{children:e.ieee_address}),i.jsx("div",{children:i.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 a;return[(a=e.definition)==null?void 0:a.vendor,e.manufacturer].join(" ")},Cell:({row:{original:{device:e}}})=>i.jsx(E,{device:e})},{id:"model",Header:s("model"),accessor:({device:e})=>{var a;return[(a=e.definition)==null?void 0:a.model,e.model_id].join(" ")},Cell:({row:{original:{device:e}}})=>i.jsx(L,{device:e})},{id:"lqi",Header:s("lqi"),accessor:({state:e})=>e.linkquality,Cell:({row:{original:{state:e}}})=>i.jsx(q,{value:e.linkquality,name:"linkquality"})},...b,..._,{id:"power",Header:s("power"),accessor:({state:e,device:a})=>{var n;return[e.battery,(n=a.definition)==null?void 0:n.power].join(" ")},Cell:({row:{original:{state:e,device:a}}})=>i.jsx(F,{device:a,deviceState:e})},{id:"controls",Header:"",Cell:({row:{original:{device:e,state:a}}})=>i.jsx(P,{device:e,state:a,homeassistantEnabled:d,renameDevice:c,removeDevice:m,configureDevice:v,setDeviceDescription:y,interviewDevice:u}),disableSortBy:!0}],[b,_,s,d,c,m,v,u]);return i.jsx("div",{className:"card",children:i.jsx("div",{className:"table-responsive",children:i.jsx(A,{id:R,columns:p,data:l})})})}function $(t){const{devices:l,deviceStates:o,bridgeInfo:{config:r},availability:d}=t,{renameDevice:y,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:u}=t,s=!!r.availability,b=!!(r!=null&&r.homeassistant),_=()=>Object.values(l).filter(e=>e.type!=="Coordinator").map(e=>{var n;const a=o[e.friendly_name]??{};return{id:e.friendly_name,disabled:H(e,r),device:e,state:a,availabilityState:d[e.friendly_name]??"offline",availabilityEnabledForDevice:((n=r.devices[e.ieee_address])==null?void 0:n.availability)!==!1}}),p=S.useMemo(()=>_(),[l,o]);return i.jsx(B,{data:p,lastSeenType:r.advanced.last_seen,availabilityFeatureEnabled:s,homeassistantEnabled:b,renameDevice:y,removeDevice:c,configureDevice:m,setDeviceDescription:v,interviewDevice:u})}const z=["devices","deviceStates","bridgeInfo","availability"],ee=C(z,h)(k(["zigbee","common"])($));export{ee as ConnectedZigbeePage};
|
Binary file
|