zigbee2mqtt-frontend 0.7.0 → 0.7.1
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-93ee70be.js +1 -0
- package/dist/assets/Availability-93ee70be.js.br +0 -0
- package/dist/assets/{CodeEditor-80e7fb14.js → CodeEditor-5fe67a8c.js} +1 -1
- package/dist/assets/CodeEditor-5fe67a8c.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-096eea88.js +1 -0
- package/dist/assets/ConnectedDevicePage-096eea88.js.br +0 -0
- package/dist/assets/{ConnectedMap-2730f83e.js → ConnectedMap-e8b5a587.js} +1 -1
- package/dist/assets/ConnectedMap-e8b5a587.js.br +0 -0
- package/dist/assets/{Dashboard-f60f3e6c.js → Dashboard-7d8f88d2.js} +1 -1
- package/dist/assets/Dashboard-7d8f88d2.js.br +0 -0
- package/dist/assets/{DashboardDevice-410b8aec.js → DashboardDevice-5be02f1f.js} +1 -1
- package/dist/assets/DashboardDevice-5be02f1f.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-fe51498b.js → DashboardFeatureWrapper-acfa9fe0.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-acfa9fe0.js.br +0 -0
- package/dist/assets/{DeviceImage-00f19990.js → DeviceImage-809eaa0f.js} +1 -1
- package/dist/assets/DeviceImage-809eaa0f.js.br +0 -0
- package/dist/assets/{GroupPage-8ed60330.js → GroupPage-a8c92d51.js} +1 -1
- package/dist/assets/GroupPage-a8c92d51.js.br +0 -0
- package/dist/assets/{ReactTableCom-7c295f75.js → ReactTableCom-12514b2c.js} +1 -1
- package/dist/assets/ReactTableCom-12514b2c.js.br +0 -0
- package/dist/assets/{RecallRemove-affb6a25.js → RecallRemove-b7d941d5.js} +1 -1
- package/dist/assets/RecallRemove-b7d941d5.js.br +0 -0
- package/dist/assets/{_baseSet-c9a81647.js → _baseSet-c50e5ad2.js} +1 -1
- package/dist/assets/{_getAllKeysIn-fd585314.js → _getAllKeysIn-89e94ca5.js} +1 -1
- package/dist/assets/{bootstrap-5.esm-cc5c7978.js → bootstrap-5.esm-18dec490.js} +1 -1
- package/dist/assets/bootstrap-5.esm-18dec490.js.br +0 -0
- package/dist/assets/{index-3eeda4f6.js → index-0a751ce3.js} +1 -1
- package/dist/assets/index-0fd17754.js +1 -0
- package/dist/assets/index-0fd17754.js.br +0 -0
- package/dist/assets/{index-0c4587d7.js → index-3cebf61c.js} +21 -21
- package/dist/assets/index-3cebf61c.js.br +0 -0
- package/dist/assets/{index-d6e3147a.js → index-5440f8d6.js} +2 -2
- package/dist/assets/index-5440f8d6.js.br +0 -0
- package/dist/assets/{index-2420b0c7.js → index-81bb02f4.js} +1 -1
- package/dist/assets/index-81bb02f4.js.br +0 -0
- package/dist/assets/{index-71fdd097.js → index-ba5a8831.js} +1 -1
- package/dist/assets/index-ba5a8831.js.br +0 -0
- package/dist/assets/{index-1e9f8304.js → index-bae7f1a5.js} +1 -1
- package/dist/assets/index-bae7f1a5.js.br +0 -0
- package/dist/assets/{index-299a1e09.js → index-cd7fc4ca.js} +1 -1
- package/dist/assets/index-cd7fc4ca.js.br +0 -0
- package/dist/assets/{index-b6316d18.js → index-d0572bd9.js} +1 -1
- package/dist/assets/index-d0572bd9.js.br +0 -0
- package/dist/assets/{index-425efb2b.js → index-f8f62295.js} +1 -1
- package/dist/assets/index-f8f62295.js.br +0 -0
- package/dist/assets/{intersection-5091bb53.js → intersection-54a44e92.js} +1 -1
- package/dist/assets/intersection-54a44e92.js.br +0 -0
- package/dist/assets/{isEqual-3b8ce05a.js → isEqual-f604cf0d.js} +1 -1
- package/dist/assets/{persist-b30dd4c7.js → persist-4ad01878.js} +1 -1
- package/dist/assets/persist-4ad01878.js.br +0 -0
- package/dist/assets/{rjsf-translation-fields-f468e7da.js → rjsf-translation-fields-d0808f88.js} +1 -1
- package/dist/assets/{spinner-f34aeca3.js → spinner-c2832892.js} +1 -1
- package/dist/assets/{vendor-links-1951dd65.js → vendor-links-0fae9a23.js} +1 -1
- package/dist/assets/vendor-links-0fae9a23.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-b917294b.js +0 -1
- package/dist/assets/Availability-b917294b.js.br +0 -0
- package/dist/assets/CodeEditor-80e7fb14.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-91f4dc46.js +0 -1
- package/dist/assets/ConnectedDevicePage-91f4dc46.js.br +0 -0
- package/dist/assets/ConnectedMap-2730f83e.js.br +0 -0
- package/dist/assets/Dashboard-f60f3e6c.js.br +0 -0
- package/dist/assets/DashboardDevice-410b8aec.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-fe51498b.js.br +0 -0
- package/dist/assets/DeviceImage-00f19990.js.br +0 -0
- package/dist/assets/GroupPage-8ed60330.js.br +0 -0
- package/dist/assets/ReactTableCom-7c295f75.js.br +0 -0
- package/dist/assets/RecallRemove-affb6a25.js.br +0 -0
- package/dist/assets/bootstrap-5.esm-cc5c7978.js.br +0 -0
- package/dist/assets/index-0c4587d7.js.br +0 -0
- package/dist/assets/index-1e9f8304.js.br +0 -0
- package/dist/assets/index-2420b0c7.js.br +0 -0
- package/dist/assets/index-299a1e09.js.br +0 -0
- package/dist/assets/index-425efb2b.js.br +0 -0
- package/dist/assets/index-71fdd097.js.br +0 -0
- package/dist/assets/index-a656f7da.js +0 -1
- package/dist/assets/index-a656f7da.js.br +0 -0
- package/dist/assets/index-b6316d18.js.br +0 -0
- package/dist/assets/index-d6e3147a.js.br +0 -0
- package/dist/assets/intersection-5091bb53.js.br +0 -0
- package/dist/assets/persist-b30dd4c7.js.br +0 -0
- package/dist/assets/vendor-links-1951dd65.js.br +0 -0
@@ -1 +1 @@
|
|
1
|
-
import{u as m,j as r,r as f,H as u}from"./index-
|
1
|
+
import{u as m,j as r,r as f,H as u}from"./index-3cebf61c.js";const p=o=>{const e="[/| |:]",n=new RegExp(e,"g");return o.replace(n,"_")},b=o=>{const{t:e}=m("zigbee"),{device:n}=o;if(n.supported&&n.definition){const t=`https://www.zigbee2mqtt.io/supported-devices/#v=${encodeURIComponent(n.definition.vendor)}`;return r.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:t,children:n.definition.vendor})}return r.jsx(f.Fragment,{children:e("unsupported")})},g=o=>{var s,a,l,d,c;const{device:e,anchor:n}=o;let t=e.model_id,i=u;if(e.supported&&e.definition){const h=[encodeURIComponent((a=(s=e.definition)==null?void 0:s.vendor)==null?void 0:a.toLowerCase()),encodeURIComponent((d=(l=e.definition)==null?void 0:l.model)==null?void 0:d.toLowerCase())].join("-");i=`https://www.zigbee2mqtt.io/devices/${encodeURIComponent(p((c=e.definition)==null?void 0:c.model))}.html#${encodeURIComponent(p(n||h))}`,t=e.definition.model}return r.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:i,children:t})},v=o=>{var i,s,a,l;const{device:e}=o;let n="";const t=e.software_build_id;switch((i=e==null?void 0:e.definition)==null?void 0:i.vendor){case"IKEA":n="https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html";break;case"Inovelli":n="https://help.inovelli.com/en/articles/8503774-what-is-the-latest-firmware-version-for-your-device#h_b74c1e7dc6";break;case"Philips":n=`https://www.philips-hue.com/en-us/support/release-notes/${(s=e.definition)!=null&&s.exposes.find(d=>d.type==="light")?"lamps":"accessories"}`;break;case"Ubisys":n=`https://www.ubisys.de/en/support/firmware/changelog-${(l=(a=e.definition)==null?void 0:a.model)==null?void 0:l.replace(/[-]/g,"").toLowerCase()}/`;break}return n!=""?r.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:n,children:t}):r.jsx(r.Fragment,{children:t})};export{g as M,v as O,b as V};
|
Binary file
|
package/dist/index.html
CHANGED
package/dist/index.html.br
CHANGED
Binary file
|
package/package.json
CHANGED
@@ -1 +0,0 @@
|
|
1
|
-
import{N as h,e as f,u as d,r as u,j as e,M as j,f as g,h as y,k as p,B as k,b as x,v as _,K as C,x as D,O as S}from"./index-0c4587d7.js";const w=h.create(s=>{const a=f(),{t:n}=d(["zigbee","common"]),{device:t,removeDevice:c}=s,[i,l]=u.useState({block:!1,force:!1}),b=[{label:n("force_remove"),name:"force",value:i.force},{label:n("block_join"),name:"block",value:i.block}],v=r=>{const{checked:o,name:N}=r.target;l({...i,[N]:o})},m=()=>{c(t.friendly_name,i.force,i.block),a.remove()};return e.jsxs(j,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:n("remove_device")}),e.jsx("small",{children:t.friendly_name})]}),e.jsx(y,{children:b.map(r=>{const o=`${r.name}${t.ieee_address}`;return e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",name:r.name,checked:r.value,type:"checkbox",id:o,onChange:v}),e.jsx("label",{className:"form-check-label",htmlFor:o,children:r.label})]},r.name)})}),e.jsxs(p,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:n("common:close")}),e.jsx("button",{type:"button",className:"btn btn-danger",onClick:m,children:n("common:delete")})]})]})}),E=h.create(s=>{const a=f(),{homeassistantEnabled:n,device:t,renameDevice:c}=s,[i,l]=u.useState(!1),[b,v]=u.useState(t.friendly_name),{t:m}=d(["zigbee","common"]),r=async()=>{await c(t.friendly_name,b,i),a.remove()};return e.jsxs(j,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:m("rename_device")}),e.jsx("small",{children:t.friendly_name})]}),e.jsx(y,{children:e.jsx("div",{className:"card",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:m("friendly_name")}),e.jsx("input",{onChange:o=>v(o.target.value),type:"text",className:"form-control",value:b})]}),n?e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",checked:i,type:"checkbox",id:`hass${t.ieee_address}`,onChange:o=>l(o.target.checked)}),e.jsx("label",{className:"form-check-label",htmlFor:`hass${t.ieee_address}`,children:m("update_Home_assistant_entity_id")})]}):null]})})}),e.jsxs(p,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:m("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:r,children:m("zigbee:rename_device")})]})]})}),M=s=>{const{homeassistantEnabled:a,device:n,renameDevice:t,style:c}=s,{t:i}=d(["zigbee","common"]);return e.jsx(k,{className:`btn btn-${c} btn-sm d-md-inline-block mx-1`,onClick:()=>h.show(E,{device:n,renameDevice:t,homeassistantEnabled:a}),title:i("rename_device"),children:e.jsx("i",{className:"fa fa-edit"})})};function B(s){const{device:a,configureDevice:n,removeDevice:t}=s,{t:c}=d(["zigbee","common"]);return e.jsxs("div",{className:"btn-group btn-group-sm",role:"group",children:[e.jsx(M,{device:a,renameDevice:s.renameDevice,homeassistantEnabled:s.homeassistantEnabled,style:"primary"}),e.jsx(k,{className:"btn btn-warning",onClick:n,item:a.friendly_name,title:c("reconfigure"),prompt:!0,children:e.jsx("i",{className:x("fa","fa-retweet")})}),e.jsx("button",{onClick:()=>h.show(w,{device:a,removeDevice:t}),className:"btn btn-danger",title:c("remove_device"),children:e.jsx("i",{className:x("fa","fa-trash")})})]})}var R=C,F=D,z=S,A="[object String]";function $(s){return typeof s=="string"||!F(s)&&z(s)&&R(s)==A}var O=$;const H=_(O);function G(s){const{t:a}=d(["avaliability"]),{availability:n,availabilityFeatureEnabled:t=!0,availabilityEnabledForDevice:c=!0,disabled:i}=s;let l;return H(n)?l=n:l=n.state,l=l.toLowerCase(),i?e.jsx("span",{children:a("disabled")}):t&&c?e.jsx("span",{className:x({"text-danger animation-blinking":l==="offline","text-success":n==="online"}),children:a(l)}):e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",children:a("disabled")})}export{G as A,B as D,M as a,H as i};
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
import{w as C,r as f,j as e,E,N as D,e as Q,u as N,M as X,f as Z,h as ee,k as se,B as j,c as S,a as A,i as M,G as L,b as te,H as G,d as ne,I as H,m as I,v as ie,J as re,z as oe,_ as ce,R as T,D as ae,C as le,n as de}from"./index-0c4587d7.js";import{F as ue,a as me,b as he,w as pe,T as ve}from"./bootstrap-5.esm-cc5c7978.js";import{D as ge,a as xe,A as fe}from"./Availability-b917294b.js";import{D as be}from"./DeviceImage-00f19990.js";import{V as je,M as Ne}from"./vendor-links-1951dd65.js";import{L as _e,D as U,P as Ce}from"./index-425efb2b.js";import{E as k,D as Se,A as Ae,R as Ie}from"./RecallRemove-affb6a25.js";import{F as Re,a as z,T as we}from"./DashboardFeatureWrapper-fe51498b.js";import{T as Ee,D as ke}from"./rjsf-translation-fields-f468e7da.js";import{L as Pe,A as ye}from"./index-b6316d18.js";import"./_getAllKeysIn-fd585314.js";import"./isEqual-3b8ce05a.js";import"./intersection-5091bb53.js";import"./index-3eeda4f6.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./_baseSet-c9a81647.js";const V={"device-pic":"_device-pic_iu1xf_1","small-nav":"_small-nav_iu1xf_5"};function Oe(s){const{allDevices:t,currentDevice:n,tab:r="info",t:i}=s,[o,c]=f.useState(""),a=Object.values(t).filter(l=>l.friendly_name.toLowerCase().includes(o.toLowerCase())&&l.ieee_address!==n.ieee_address);return e.jsx("h1",{className:"h3",children:e.jsxs(E,{children:[e.jsxs(E.Toggle,{"aria-label":i("select_a_device"),variant:"",size:"lg",children:[n.friendly_name," "]}),e.jsxs(E.Menu,{children:[e.jsx(ue.Control,{autoFocus:!0,className:"mx-3 my-2 w-auto",placeholder:i("type_to_filter"),onChange:l=>c(l.target.value),value:o}),e.jsx(Be,{devices:a,currentDevice:n,tab:r,setSearchTerm:c})]})]})})}const $e=C("devicePage")(Oe);function Be({devices:s,currentDevice:t,tab:n,setSearchTerm:r}){return e.jsx(e.Fragment,{children:Object.values(s).map(i=>e.jsx(E.Item,{active:t.ieee_address===i.ieee_address,href:`#/device/${i.ieee_address}/${n}`,onClick:()=>r(""),children:i.friendly_name},i.ieee_address))})}const Me=s=>[{translationKey:"about",url:`/device/${s}/info`},{translationKey:"exposes",url:`/device/${s}/exposes`},{translationKey:"bind",url:`/device/${s}/bind`},{translationKey:"reporting",url:`/device/${s}/reporting`},{translationKey:"settings",url:`/device/${s}/settings`},{translationKey:"settings_specific",url:`/device/${s}/settings-specific`},{translationKey:"state",url:`/device/${s}/state`},{translationKey:"clusters",url:`/device/${s}/clusters`},{translationKey:"scene",url:`/device/${s}/scene`},{translationKey:"dev_console",url:`/device/${s}/dev-console`}],Le=D.create(s=>{const t=Q(),{device:n,setDeviceDescription:r}=s,[i,o]=f.useState(n.description),{t:c}=N(["zigbee","common"]),a=async()=>{await r(n.friendly_name,i),t.remove()};return e.jsxs(X,{isOpen:t.visible,children:[e.jsxs(Z,{children:[e.jsx("h3",{children:c("update_description")}),e.jsx("small",{children:n.friendly_name})]}),e.jsx(ee,{children:e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:c("description")}),e.jsx("textarea",{rows:3,onChange:l=>o(l.target.value),className:"form-control",value:i})]})})})}),e.jsxs(se,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:t.remove,children:c("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:a,children:c("zigbee:save_description")})]})]})}),Ue=s=>{const{device:t,setDeviceDescription:n}=s,{t:r}=N(["zigbee","common"]);return e.jsx(j,{className:"btn btn-link btn-sm d-md-inline-block mx-1",onClick:()=>D.show(Le,{device:t,setDeviceDescription:n}),title:r("edit_description"),children:e.jsx("i",{className:"fa fa-edit"})})},Fe=/\[(.*?)]\((.*?)\)/;class Ke extends f.Component{render(){var x;const{device:t,deviceStates:n,bridgeInfo:r,availability:i,t:o}=this.props,{configureDevice:c,renameDevice:a,removeDevice:l,setDeviceDescription:d}=this.props,p=!!((x=r.config)!=null&&x.homeassistant),m=n[t.friendly_name]??{},g=[{translationKey:"friendly_name",render:u=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("strong",{children:u.friendly_name}),e.jsx(xe,{device:u,renameDevice:a,homeassistantEnabled:p,style:"link"})]})},{translationKey:"zigbee:description",render:u=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("pre",{style:{display:"inline"},children:u.description}),e.jsx(Ue,{device:u,setDeviceDescription:d,style:"link"})]})},{translationKey:"last_seen",render:(u,h,v)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(_e,{lastSeenType:v.config.advanced.last_seen,state:h})})},{translationKey:"avaliability:avaliability",render:(u,h,v,b)=>{var w;const{config:_}=v,B=!!_.availability,P=((w=_.devices[u.ieee_address])==null?void 0:w.availability)!==!1;return e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(fe,{availability:b,disabled:M(u,_),availabilityFeatureEnabled:B,availabilityEnabledForDevice:P})})}},{key:"type",translationKey:"device_type"},{key:"model_id",translationKey:"zigbee_model"},{key:"manufacturer",translationKey:"zigbee_manufacturer"},{key:"definition.description",translationKey:"description",if:"supported",render:u=>{var b,_;const h=Fe.exec((b=u.definition)==null?void 0:b.description);let v=e.jsx("span",{children:(_=u.definition)==null?void 0:_.description});if(h){const[B,P,w]=h;v=e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:w,children:P})}return e.jsx("dd",{className:"col-12 col-md-7",children:v})}},{render:(u,h,v,b,_)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsxs("p",{className:te("mb-0","font-weight-bold",{"text-danger":!u.supported,"text-success":u.supported}),children:[e.jsx(U,{name:"supported",value:u.supported}),!u.supported&&e.jsxs(e.Fragment,{children:[" ",e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",href:G,children:["(",_("how_to_add_support"),")"]})]})]})}),translationKey:"support_status"},{key:"ieee_address",translationKey:"ieee_address"},{key:"network_address",translationKey:"network_address",render:u=>e.jsx("dd",{className:"col-12 col-md-7",children:ne(u.network_address)})},{key:"date_code",translationKey:"firmware_build_date",if:"date_code"},{key:"software_build_id",translationKey:"firmware_version",if:"software_build_id"},{key:"definition.vendor",translationKey:"manufacturer",if:"supported",render:u=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(je,{device:u})})},{key:"definition.model",translationKey:"model",if:"supported",render:u=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ne,{device:u})})},{translationKey:"power",render:(u,h)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ce,{showLevel:!0,device:u,deviceState:h})})},{translationKey:"interview_completed",render:u=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(U,{name:"interview_completed",value:u.interview_completed})})}];return e.jsxs(f.Fragment,{children:[e.jsx("div",{className:"d-flex justify-content-center",children:e.jsx(be,{className:`card-img-top w-auto ${V["device-pic"]}`,device:t,deviceStatus:m,disabled:M(t,r.config)})}),e.jsx("dl",{className:"row",children:g.filter(u=>u.if===void 0||L(t,u.if,!1)).map(u=>e.jsxs(f.Fragment,{children:[e.jsx("dt",{className:"col-12 col-md-5",children:o(u.translationKey)}),u.render?u.render(t,m,r,i[t.friendly_name]??"offline",o):e.jsx("dd",{className:"col-12 col-md-7",children:L(t,u.key)})]},u.translationKey))}),e.jsx(ge,{device:t,state:m,homeassistantEnabled:p,configureDevice:c,renameDevice:a,removeDevice:l,setDeviceDescription:d})]})}}const De=["deviceStates","bridgeInfo","availability"],Ge=C("zigbee")(S(De,A)(Ke)),He=Ge,y={genPowerCfg:"PowerCfg",genScenes:"Scenes",genOnOff:"OnOff",genLevelCtrl:"LevelCtrl",lightingColorCtrl:"LColorCtrl",closuresWindowCovering:"Closures",genMultistateInput:"MultistateInput",genGroups:"Groups",genOta:"Ota",touchlink:"Touchlink",genIdentify:"Identify",msTemperatureMeasurement:"Temperature",msIlluminanceMeasurement:"Illuminance",msRelativeHumidity:"Humidity",msPressureMeasurement:"Pressure",msSoilMoisture:"Soil Moisture"};var R=(s=>(s[s.MULTIPLE=0]="MULTIPLE",s[s.SINGLE=1]="SINGLE",s))(R||{});function W(s){return s.length>0&&typeof s[0]!="string"}function Te(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,label:i,value:o,disabled:c}=s;let a=[];const l=d=>{const{checked:p,name:m}=d.target;let g=[...o];p?g.push(m):g=g.filter(x=>x!==m),r(g)};return W(n)?console.warn("Not implemented"):a=[...n].sort((d,p)=>d.toString().localeCompare(p.toString())).map(d=>e.jsxs("div",{className:"form-check form-check-inline",children:[e.jsx("input",{className:"form-check-input",type:"checkbox",checked:o.includes(d),name:d,id:`${t}_${d}`,value:d,onChange:l,disabled:c}),e.jsx("label",{className:"form-check-label",htmlFor:`${t}_${d}`,title:d,children:y[d]??d})]},d)),e.jsxs("div",{className:"form-group",children:[i&&e.jsx("label",{className:"form-label",children:i}),e.jsx("div",{className:"form-control border-0",children:a})]})}function ze(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,value:i,label:o,disabled:c,...a}=s,{t:l}=N(["zigbee","common"]),d=[e.jsx("option",{hidden:!0,children:l("select_cluster")},"hidden")],p=m=>{r(m.target.value)};return W(n)?n.forEach(m=>{const g=m.clusters.map(x=>e.jsx("option",{value:x,children:y[x]??x},x));g.length===0&&g.push(e.jsx("option",{disabled:!0,children:l("none")},"none")),d.push(e.jsx("optgroup",{label:l(m.name),children:g},m.name))}):n.forEach(m=>{d.push(e.jsx("option",{value:m,children:y[m]??m},m))}),e.jsxs("div",{className:"form-group",children:[o&&e.jsx("label",{htmlFor:t,className:"form-label",children:o}),e.jsx("select",{id:t,value:i,className:"form-select",onChange:p,disabled:c,...a,children:d})]})}function $(s){const{pickerType:t,onChange:n,clusters:r,value:i,label:o,disabled:c,...a}=s;return t===R.MULTIPLE?e.jsx(Te,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a}):e.jsx(ze,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a})}const Ve=(s,t,n)=>{var r;return s.target.type==="group"?n.find(i=>i.id===s.target.id):t[(r=s.target)==null?void 0:r.ieee_address]};class We extends f.Component{constructor(){super(...arguments),this.state={stateRule:{}},this.setSourceEp=t=>{const{stateRule:n}=this.state;n.source.endpoint=t,this.setState({stateRule:n})},this.setDestination=(t,n)=>{const{stateRule:r}=this.state;if(n==="device"){const i=I(t);r.target.ieee_address=t.ieee_address,r.target.type="endpoint",r.target.endpoint=i[0],delete r.target.id}else n==="group"&&(r.target.id=t.id,r.target.type="group",delete r.target.ieee_address);r.clusters=[],this.setState({stateRule:r})},this.setDestinationEp=t=>{const{stateRule:n}=this.state;n.target.endpoint=t,n.clusters=[],this.setState({stateRule:n})},this.setClusters=t=>{const{stateRule:n}=this.state;n.clusters=t,this.setState({stateRule:n})},this.onBindOrUnBindClick=t=>{const{onUnBind:n,onBind:r}=this.props,{from:i,to:o,clusters:c}=this.getBidingParams();t=="Bind"?r({from:i,to:o,clusters:c}):n({from:i,to:o,clusters:c})}}static getDerivedStateFromProps(t,n){const{rule:r}=t;return{stateRule:r}}getBidingParams(){var a;const{device:t,groups:n,devices:r}=this.props,{stateRule:i}=this.state,o=`${t.friendly_name}/${i.source.endpoint}`;let c="";if(i.target.type==="group")c=`${n.find(d=>d.id===i.target.id).friendly_name}`;else if(i.target.type==="endpoint"){const l=r[(a=i.target)==null?void 0:a.ieee_address];l.type==="Coordinator"?c=`${l.friendly_name}`:c=`${l.friendly_name}/${i.target.endpoint}`}return{from:o,to:c,clusters:i.clusters}}isValidRule(){const{stateRule:t}=this.state;let n;return t.target.type=="endpoint"?n=t.source.endpoint&&t.target.ieee_address&&t.target.endpoint&&t.clusters.length>0:t.target.type=="group"&&(n=t.source.endpoint&&t.target.id&&t.clusters.length>0),!!n}render(){const{devices:t,groups:n,device:r,t:i}=this.props,{stateRule:o}=this.state,c=I(r),a=Ve(o,t,n),l=I(a),d=new Set(o.clusters),p=r.endpoints[o.source.endpoint],m=o.target.type==="endpoint"&&o.target.endpoint?a==null?void 0:a.endpoints[o.target.endpoint]:void 0,g=o.target.type==="group"||(a==null?void 0:a.type)=="Coordinator";if(p&&(m||g))for(const x of[...p.clusters.input,...p.clusters.output]){const u=p.clusters.input.includes(x)&&(m==null?void 0:m.clusters.output.includes(x)),h=p.clusters.output.includes(x)&&(m==null?void 0:m.clusters.input.includes(x));(u||h||g)&&d.add(x)}return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(k,{label:i("source_endpoint"),disabled:!o.isNew,values:c,value:o.source.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx(Se,{label:i("destination"),disabled:!o.isNew,value:o.target.ieee_address||o.target.id,devices:t,groups:n,onChange:this.setDestination})}),e.jsx("div",{className:"col-md-2",children:o.target.type==="endpoint"?e.jsx(k,{label:i("destination_endpoint"),disabled:!o.isNew,values:l,value:o.target.endpoint,onChange:this.setDestinationEp}):null}),e.jsx("div",{className:"col-md-4",children:e.jsx($,{label:i("clusters"),pickerType:R.MULTIPLE,clusters:Array.from(d),value:o.clusters,onChange:this.setClusters})}),e.jsx("div",{className:"col-md-2",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:"Actions"}),e.jsx("div",{className:"form-control border-0",children:e.jsxs("div",{className:"btn-group btn-group-sm",children:[e.jsxs(j,{item:"Bind",disabled:!this.isValidRule(),title:i("bind"),className:"btn btn-primary",onClick:this.onBindOrUnBindClick,children:[i("bind")," ",e.jsx("i",{className:"fa fa-heart"})]}),e.jsxs(j,{item:"Unbind",disabled:!o.isNew&&!this.isValidRule(),title:i("unbind"),className:"btn btn-danger",onClick:this.onBindOrUnBindClick,children:[e.jsx("i",{className:"fa fa-heart-broken"})," ",i("unbind")]})]})})]})})]})}}const qe=C(["common","zigbee"])(We),Je=s=>`${s.source.endpoint}-${s.isNew}${s.source.ieee_address}-${s.target.id}-${s.target.ieee_address}-${s.clusters.join("-")}`,Ye=s=>{const t={};return Object.entries(s.endpoints).forEach(([n,r])=>{r.bindings.forEach(i=>{let o=i.target.id??`${i.target.ieee_address}-${i.target.endpoint}`;o=`${o}-${n}`,t[o]?t[o].clusters.push(i.cluster):t[o]={source:{ieee_address:s.ieee_address,endpoint:n},target:i.target,clusters:[i.cluster]}})}),Object.values(t)};function Qe(s){const{device:t,devices:n,groups:r,removeBind:i,addBind:o}=s,[c]=f.useState({isNew:Date.now(),target:{},source:{ieee_address:t.ieee_address,endpoint:""},clusters:[]}),a=f.useMemo(()=>Ye(t),[t]);return e.jsx("div",{className:"container-fluid",children:[...a,c].map((l,d)=>e.jsx(qe,{rule:l,groups:r,onUnBind:i,onBind:o,device:t,idx:d,devices:n},Je(l)))})}const Xe=["devices","groups"],Ze=S(Xe,A)(Qe),es=Ze;var ss=me,ts=he,ns=ts(function(s,t,n){ss(s,t,n)}),is=ns;const q=ie(is);function J(s){const{cluster:t,device:n,onChange:r,label:i,value:o,clusters:c,...a}=s,{bridgeDefinitions:l}=re.getState(),{t:d}=N("zigbee"),p=u=>{const{value:h}=u.target,b=m(t)[h];b&&r(h,b)},m=u=>{const h=c??l;if(h.hasOwnProperty("clusters")&&h.clusters.hasOwnProperty(u)){const v=h.clusters[u];if(v&&Object.keys(v).length!==0)return v.attributes}else if(h.hasOwnProperty("custom_clusters")&&h.custom_clusters.hasOwnProperty(n.ieee_address)&&h.custom_clusters[n.ieee_address].hasOwnProperty(u)){const v=h.custom_clusters[n.ieee_address][u];if(v&&Object.keys(v).length!==0)return v.attributes}return[]},g=Object.keys(m(t));o!==void 0&&!g.includes(o)&&g.push(o);const x=g.map(u=>e.jsx("option",{value:u,children:u},u));return x.unshift(e.jsx("option",{hidden:!0,children:d("select_attribute")},"none")),e.jsxs("div",{className:"form-group",children:[i&&e.jsx("label",{className:"form-label",children:i}),e.jsx("select",{disabled:g.length===0,className:"form-control",onChange:p,value:o,...a,children:x})]})}const rs=(s,t,n)=>{let r=[],i=[];n&&!i.includes(n)&&i.push(n);const o=s.endpoints[t];return o&&(i=i.concat(o.clusters.output),r=[...o.clusters.input],r=r.filter(c=>!i.includes(c))),[{name:"available",clusters:i},{name:"possible",clusters:r}]},os=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],cs=s=>os.every(t=>s[t]!==void 0&&s[t]!=="");function F(s){const{onChange:t,label:n,value:r,name:i}=s;return e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label text-nowrap",children:n}),e.jsx("input",{onChange:t,value:r,required:!0,type:"number",name:i,className:"form-control"})]})}class as extends f.Component{constructor(){super(...arguments),this.state={stateRule:{}},this.setSourceEp=t=>{const{stateRule:n}=this.state;n.endpoint=t,this.setState({stateRule:n})},this.setCluster=t=>{const{stateRule:n}=this.state;n.cluster=t,this.setState({stateRule:n})},this.setAttribute=t=>{const{stateRule:n}=this.state;n.attribute=t,this.setState({stateRule:n})},this.changeHandlerNumber=t=>{const{stateRule:n}=this.state,{name:r,valueAsNumber:i}=t.target;Number.isNaN(i)||(n[r]=i),this.setState({stateRule:n})},this.applyRule=()=>{const{onApply:t}=this.props,{stateRule:n}=this.state;t(n)},this.disableRule=()=>{const{onApply:t}=this.props,{stateRule:n}=this.state;t({...n,maximum_report_interval:65535})}}static getDerivedStateFromProps(t,n){const{rule:r}=t,{stateRule:i}=n;return{stateRule:q({},r,i)}}render(){const{rule:t,device:n,t:r}=this.props,{stateRule:i}=this.state,o=I(n);return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(k,{label:r("endpoint"),disabled:!t.isNew,values:o,value:i.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx($,{label:r("cluster"),disabled:!i.endpoint,pickerType:R.SINGLE,clusters:rs(n,i.endpoint,i.cluster),value:i.cluster,onChange:this.setCluster})}),e.jsx("div",{className:"col-md-2",children:e.jsx(J,{label:r("attribute"),disabled:!i.cluster,value:i.attribute,cluster:i.cluster,device:n,onChange:this.setAttribute})}),e.jsx("div",{className:"col-md-2",children:e.jsx(F,{onChange:this.changeHandlerNumber,value:i.minimum_report_interval,name:"minimum_report_interval",label:r("min_rep_interval")})}),e.jsx("div",{className:"col-md-1",children:e.jsx(F,{onChange:this.changeHandlerNumber,value:i.maximum_report_interval,name:"maximum_report_interval",label:r("max_rep_interval")})}),e.jsx("div",{className:"col-md-1",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label text-nowrap",children:r("min_rep_change")}),e.jsx("input",{onChange:this.changeHandlerNumber,value:i.reportable_change,required:!0,type:"number",name:"reportable_change",className:"form-control"})]})}),e.jsx("div",{className:"col-md-2",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:r("actions")}),e.jsx("div",{className:"form-group",children:e.jsxs("div",{className:"btn-group",role:"group","aria-label":"Basic example",children:[e.jsx(j,{disabled:!cs(i),className:"btn btn-primary",onClick:this.applyRule,children:r("common:apply")}),i.isNew?null:e.jsx(j,{prompt:!0,className:"btn btn-danger",onClick:this.disableRule,children:r("common:disable")})]})})]})})]})}}const ls=C(["zigbee","common"])(as),ds=s=>{const t=[];return Object.entries(s.endpoints).forEach(([n,r])=>{r.configured_reportings.forEach(i=>{t.push({...i,endpoint:n})})}),t},us=s=>`${s.isNew}${s.endpoint}${s.cluster}-${s.attribute}`;function ms(s){const{configureReport:t,device:n}=s,[r]=f.useState({isNew:Date.now(),reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),i=c=>{const{cluster:a,endpoint:l,attribute:d,minimum_report_interval:p,maximum_report_interval:m,reportable_change:g}=c;t(`${n.friendly_name}/${l}`,{cluster:a,attribute:d,minimum_report_interval:p,maximum_report_interval:m,reportable_change:g})},o=f.useMemo(()=>ds(n),[n]);return e.jsx("div",{className:"container-fluid",children:[...o,r].map(c=>e.jsx(ls,{rule:c,device:n,onApply:i},us(c)))})}const hs=["devices","groups"],ps=S(hs,A)(ms),vs=ps;function gs(s){const{device:t,deviceStates:n}=s,r=n[t.friendly_name]??{};return e.jsx("pre",{children:JSON.stringify(r,null,4)})}const xs=["deviceStates"],fs=S(xs,A)(gs),bs=fs;function js(s){var a,l;const{device:t,deviceStates:n,setDeviceState:r,getDeviceState:i}=s,{t:o}=N(["exposes"]),c=n[t.friendly_name]??{};return(l=(a=t.definition)==null?void 0:a.exposes)!=null&&l.length?e.jsx(Re,{feature:{features:t.definition.exposes,type:"composite"},device:t,deviceState:c,onChange:async(d,p)=>{await r(t.friendly_name,p)},onRead:async(d,p)=>{await i(t.friendly_name,p)},parentFeatures:[],featureWrapperClass:z}):o("empty_exposes_definition")}const Ns=["deviceStates"],_s=S(Ns,A)(js),Cs=_s,Ss="_tree_k0evw_1",As={tree:Ss},K=s=>{const{label:t,clusters:n}=s;return n.length?e.jsxs("li",{children:[e.jsx("span",{children:t}),e.jsx("ul",{children:n.map(r=>e.jsx("li",{children:e.jsx("span",{children:r})},r))})]}):null};function Is(s){const{t}=N("zigbee"),{device:n}=s;return e.jsx("dl",{className:`${As.tree} row`,children:e.jsx("ul",{children:e.jsxs("li",{children:[e.jsx("span",{children:n.ieee_address}),e.jsx("ul",{children:Object.entries(n.endpoints).map(([r,i])=>e.jsxs("li",{children:[e.jsxs("span",{children:[t("endpoint")," ",e.jsx("strong",{children:r})]}),e.jsxs("ul",{children:[e.jsx(K,{label:t("output_clusters"),clusters:i.clusters.output}),e.jsx(K,{label:t("input_clusters"),clusters:i.clusters.input})]})]},r))})]})})})}const Rs=pe(ve),ws=s=>{const{docsUrl:t}=s,{t:n}=N("common");return e.jsx("div",{className:"card alert alert-info",role:"alert",children:e.jsxs("div",{className:"card-body",children:[e.jsx("i",{className:"fa-solid fa-circle-info fa-2xl me-2"}),e.jsx("a",{href:t,target:"_blank",rel:"noreferrer",className:"alert-link align-middle",children:n("read_the_docs_info")})]})})},Es={"ui:order":["friendly_name","disabled","retain","retention","qos","filtered_attributes","*"]};class ks extends f.Component{constructor(){super(...arguments),this.state={newSetting:{key:"",value:"",type:""},updatedDeviceConfig:{}},this.updateConfig=async t=>{const{formData:n}=t,{data:r}=this.getSchemaAndConfig(),{setDeviceOptions:i,device:o}=this.props,c=oe(r,n);await i(o.ieee_address,c),this.setState({updatedDeviceConfig:{}})}}getGenericDeviceSettingsSchema(){var n;const{bridgeInfo:{config_schema:t={}}}=this.props;return((n=t.definitions)==null?void 0:n.device)??{properties:{}}}getDeviceConfig(){const{bridgeInfo:{config:t},device:n}=this.props,{updatedDeviceConfig:r}=this.state;return q({},t==null?void 0:t.device_options,t==null?void 0:t.devices[n.ieee_address],r)}getSchemaAndConfig(){const t=this.getGenericDeviceSettingsSchema(),n=this.getDeviceConfig();return{schema:t,data:n,uiSchema:Es}}render(){const{schema:t,data:n,uiSchema:r}=this.getSchemaAndConfig();return e.jsxs(e.Fragment,{children:[e.jsx(ws,{docsUrl:"https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#common-device-options"}),e.jsx(Rs,{schema:t,formData:n,onSubmit:this.updateConfig,uiSchema:r,fields:{TitleField:Ee,DescriptionField:ke}})]})}}function Ps(s){const{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,setDeviceState:o,device:c,deviceState:a}=s;return e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-12 col-sm-6 col-xxl-6 d-flex",children:e.jsx("div",{className:"card flex-fill",children:e.jsx("div",{className:"card-body py-4",children:e.jsx(Ae,{sceneStore:t,target:c,deviceState:a,setDeviceState:o})})})}),e.jsx("div",{className:"col-12 col-sm-6 col-xxl-6 d-flex",children:e.jsx("div",{className:"card flex-fill",children:e.jsx("div",{className:"card-body py-4",children:e.jsx(Ie,{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,target:c,deviceState:a})})})})]})}const ys=[],Os=S(ys,A)(Ps),$s=Os;function Bs(s){var c,a;const{device:t,bridgeInfo:{config:n},setDeviceOptions:r}=s,{t:i}=N(["exposes"]),o=n.devices[t.ieee_address]??{};return(a=(c=t.definition)==null?void 0:c.options)!=null&&a.length?e.jsx(we,{showEndpointLabels:!0,feature:{features:t.definition.options},type:"composite",device:t,deviceState:o,onChange:async(l,d)=>{await r(t.ieee_address,d)},featureWrapperClass:z}):i("empty_exposes_definition")}const Ms=["bridgeInfo"],Ls=S(Ms,A)(Bs),Us=Ls;function Y(s){const{logs:t,filterFn:n}=s,r=t.filter(n),i=r.length>0?r[r.length-1]:null,o=[];return i&&o.push(e.jsx(Pe,{log:i,search:"",logLevel:ye},"log")),e.jsx(e.Fragment,{children:o})}const Fs=s=>{const{executeCommand:t,device:n,logs:r}=s,{t:i}=N("zigbee"),[o,c]=f.useState(1),[a,l]=f.useState(""),[d,p]=f.useState(""),[m,g]=f.useState(JSON.stringify({},null,2)),x=()=>{let v=!0;try{JSON.parse(m)}catch{v=!1}return v&&!isNaN(parseInt(a))&&!isNaN(parseInt(d))},u=()=>{t(n.friendly_name,o,parseInt(a),parseInt(d),JSON.parse(m))},h=v=>v.message.startsWith("Invoked ");return e.jsxs("div",{children:[e.jsxs("div",{className:"row mb-3",children:[e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:i("endpoint")}),e.jsx("input",{type:"number",min:"1",max:"255",value:o,onChange:v=>c(v.target.valueAsNumber),className:"form-control"})]})}),e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("cluster")}),e.jsx("input",{type:"text",value:a,placeholder:"example: 0x0001, 1, 123",onChange:v=>l(v.target.value),className:"form-control"})]})}),e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("command")}),e.jsx("input",{type:"text",value:d,placeholder:"example: 0x0001, 1, 123",onChange:v=>p(v.target.value),className:"form-control"})]})})]}),e.jsx("div",{className:"row mb-3 ",children:e.jsx("div",{className:"col-9 col-sm-9",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("payload")}),e.jsx("textarea",{rows:3,value:m,onChange:v=>g(v.target.value),className:"form-control"})]})})}),e.jsx("div",{className:"row",children:e.jsx("div",{className:"btn-group col col-3",children:e.jsx("button",{onClick:u,disabled:!x(),type:"button",className:"btn btn-success",children:i("execute")})})}),e.jsx("div",{className:"row",children:e.jsx(Y,{logs:r,filterFn:h})})]})},Ks=f.lazy(()=>ce(()=>import("./CodeEditor-80e7fb14.js"),["./CodeEditor-80e7fb14.js","./index-0c4587d7.js","./index-654e4a69.css"],import.meta.url));class Ds extends T.Component{constructor(){super(...arguments),this.onGenerateExternalDefinitionClick=()=>{const{generateExternalDefinition:t,device:n}=this.props;t(n.ieee_address)}}render(){const{t,generatedExternalDefinitions:n,device:r,theme:i}=this.props,o=n[r.ieee_address];return o?e.jsxs(e.Fragment,{children:[t("generated_external_definition")," (",e.jsx("a",{href:G,target:"_blank",rel:"noreferrer",children:t("documentation")}),")",e.jsx(Ks,{value:o,theme:i})]}):e.jsx(j,{className:"btn btn-primary",onClick:this.onGenerateExternalDefinitionClick,children:t("generate_external_definition")})}}const Gs=C(["devConsole","common"])(Ds);var O=(s=>(s[s.NO_DATA=0]="NO_DATA",s[s.DATA8=8]="DATA8",s[s.DATA16=9]="DATA16",s[s.DATA24=10]="DATA24",s[s.DATA32=11]="DATA32",s[s.DATA40=12]="DATA40",s[s.DATA48=13]="DATA48",s[s.DATA56=14]="DATA56",s[s.DATA64=15]="DATA64",s[s.BOOLEAN=16]="BOOLEAN",s[s.BITMAP8=24]="BITMAP8",s[s.BITMAP16=25]="BITMAP16",s[s.BITMAP24=26]="BITMAP24",s[s.BITMAP32=27]="BITMAP32",s[s.BITMAP40=28]="BITMAP40",s[s.BITMAP48=29]="BITMAP48",s[s.BITMAP56=30]="BITMAP56",s[s.BITMAP64=31]="BITMAP64",s[s.UINT8=32]="UINT8",s[s.UINT16=33]="UINT16",s[s.UINT24=34]="UINT24",s[s.UINT32=35]="UINT32",s[s.UINT40=36]="UINT40",s[s.UINT48=37]="UINT48",s[s.UINT56=38]="UINT56",s[s.UINT64=39]="UINT64",s[s.INT8=40]="INT8",s[s.INT16=41]="INT16",s[s.INT24=42]="INT24",s[s.INT32=43]="INT32",s[s.INT40=44]="INT40",s[s.INT48=45]="INT48",s[s.INT56=46]="INT56",s[s.INT64=47]="INT64",s[s.ENUM8=48]="ENUM8",s[s.ENUM16=49]="ENUM16",s[s.SEMI_PREC=56]="SEMI_PREC",s[s.SINGLE_PREC=57]="SINGLE_PREC",s[s.DOUBLE_PREC=58]="DOUBLE_PREC",s[s.OCTET_STR=65]="OCTET_STR",s[s.CHAR_STR=66]="CHAR_STR",s[s.LONG_OCTET_STR=67]="LONG_OCTET_STR",s[s.LONG_CHAR_STR=68]="LONG_CHAR_STR",s[s.ARRAY=72]="ARRAY",s[s.STRUCT=76]="STRUCT",s[s.SET=80]="SET",s[s.BAG=81]="BAG",s[s.TOD=224]="TOD",s[s.DATE=225]="DATE",s[s.UTC=226]="UTC",s[s.CLUSTER_ID=232]="CLUSTER_ID",s[s.ATTR_ID=233]="ATTR_ID",s[s.BAC_OID=234]="BAC_OID",s[s.IEEE_ADDR=240]="IEEE_ADDR",s[s.SEC_KEY=241]="SEC_KEY",s[s.UNKNOWN=255]="UNKNOWN",s))(O||{});const Hs=["Read result of","Publish 'set' 'read' to","Publish 'set' 'write' to","Wrote "];class Ts extends T.Component{constructor(t){super(t),this.onEndpointChange=o=>{this.setState({attributes:[],cluster:"",endpoint:o})},this.onClusterChange=o=>{this.setState({attributes:[],cluster:o})},this.onAttributeSelect=(o,c)=>{const{attributes:a}=this.state;if(!a.find(l=>l.attribute===o)){const l=a.concat([{attribute:o,definition:c}]);this.setState({attributes:l})}},this.onAttributeDelete=o=>{const{attributes:c}=this.state,a=c.filter(l=>l.attribute!==o);this.setState({attributes:a})},this.onReadClick=()=>{const{readDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:l,endpoint:d}=this.state;o(c.friendly_name,d,a,l.map(p=>p.attribute),{})},this.onWriteClick=()=>{const{writeDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:l,endpoint:d}=this.state;o(c.friendly_name,d,a,l,{})},this.onAttributeValueChange=(o,c)=>{const{attributes:a}=this.state,l=[...a],d=l.find(p=>p.attribute===o);d&&(d.value=c),this.setState({attributes:l})};const{device:n,clusters:r}=t,i=Object.keys(n.endpoints)[0];this.state={endpoint:i,cluster:"",attributes:[]}}renderSelectedAttribute(){const{attributes:t}=this.state;return t.map(({attribute:n,value:r="",definition:i})=>e.jsx("div",{className:"row mb-1",children:e.jsx("div",{className:"col-3",children:e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-6",children:n}),e.jsx("div",{className:"col-3",children:e.jsx(zs,{value:r,attribute:n,definition:i,onChange:this.onAttributeValueChange,"data-testid":"attribute-value-input"})}),e.jsx("div",{className:"col-2",children:e.jsx(j,{className:"btn btn-danger btn-sm",item:n,"data-testid":"remove-attribute",onClick:this.onAttributeDelete,children:e.jsx("i",{className:"fas fa-trash"})})})]})})},n))}render(){const{cluster:t,attributes:n,endpoint:r}=this.state,i=n.length===0,o=t==="",{t:c,device:a,clusters:l}=this.props,d=I(a),p=m=>Hs.some(g=>m.message.startsWith(g));return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-3 row",children:[e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(k,{"data-testid":"endpoint-picker",label:c("zigbee:endpoint"),values:d,value:r,onChange:this.onEndpointChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx($,{"data-testid":"cluster-picker",label:c("cluster"),pickerType:R.SINGLE,clusters:a.endpoints[r].clusters.input,value:t,onChange:this.onClusterChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(J,{"data-testid":"attribute-picker",label:c("attribute"),value:"",cluster:t,device:a,clusters:l,onChange:this.onAttributeSelect})})]}),e.jsx("div",{className:"mb-3 row","data-testid":"selected-attribute",children:this.renderSelectedAttribute()}),e.jsx("div",{className:"mb-3 row",children:e.jsxs("div",{className:"btn-group col col-3",role:"group",children:[e.jsx(j,{disabled:i||o,className:"btn btn-success me-2","data-testid":"read-attribute",onClick:this.onReadClick,children:c("read")}),e.jsx(j,{disabled:i||o,className:"btn btn-danger","data-testid":"write-attribute",onClick:this.onWriteClick,children:c("write")})]})}),e.jsx(Y,{logs:this.props.logs,filterFn:p})]})}}function zs(s){const{value:t,onChange:n,attribute:r,definition:i,...o}=s,a={[O.CHAR_STR]:"string",[O.LONG_CHAR_STR]:"string"}[i.type]??"number",l=d=>{const p=a==="number"?d.target.valueAsNumber:d.target.value;n(r,p)};return e.jsx("input",{className:"form-control",type:a,value:t,onChange:l,...o})}const Vs=C(["devConsole","common"])(Ts);class Ws extends f.Component{render(){return e.jsxs("div",{children:[e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Gs,{theme:this.props.theme,device:this.props.device,generateExternalDefinition:this.props.generateExternalDefinition,generatedExternalDefinitions:this.props.generatedExternalDefinitions})})}),e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Vs,{theme:this.props.theme,device:this.props.device,logs:this.props.logs,i18n:this.props.i18n,readDeviceAttributes:this.props.readDeviceAttributes,writeDeviceAttributes:this.props.writeDeviceAttributes})})}),e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Fs,{device:this.props.device,logs:this.props.logs,executeCommand:this.props.executeCommand})})})]})}}const qs=C(["devConsole","common"])(Ws);function Js(s){const{match:t,devices:n,logs:r}=s,{readDeviceAttributes:i,writeDeviceAttributes:o,setDeviceOptions:c,executeCommand:a,generateExternalDefinition:l,bridgeInfo:d,deviceStates:p,generatedExternalDefinitions:m,theme:g}=s,{tab:x,dev:u}=t.params,h=n[u],v=p[h.friendly_name]??{};switch(x){case"info":return e.jsx(He,{device:h});case"bind":return e.jsx(es,{device:h});case"state":return e.jsx(bs,{device:h});case"exposes":return e.jsx(Cs,{device:h});case"clusters":return e.jsx(Is,{device:h});case"reporting":return e.jsx(vs,{device:h});case"settings":return e.jsx(ks,{device:h,setDeviceOptions:c,bridgeInfo:d});case"settings-specific":return e.jsx(Us,{device:h,setDeviceOptions:c,bridgeInfo:d});case"dev-console":return e.jsx(qs,{device:h,logs:r,readDeviceAttributes:i,writeDeviceAttributes:o,generateExternalDefinition:l,generatedExternalDefinitions:m,executeCommand:a,theme:g});case"scene":return e.jsx($s,{device:h,deviceState:v});default:return e.jsx(ae,{to:`/device/${u}/info`})}}function Ys(s){const{devices:t,match:n,t:r}=s,{dev:i,tab:o}=n.params,c=t[i];if(!c)return e.jsx("div",{className:"h-100 d-flex justify-content-center align-items-center",children:r("unknown_device")});const a=Me(i);return e.jsxs(e.Fragment,{children:[e.jsx($e,{allDevices:t,currentDevice:c,tab:o}),e.jsxs("div",{className:"tab",children:[e.jsx("ul",{className:"nav nav-tabs",children:a.map(l=>e.jsx("li",{className:"nav-item",children:e.jsx(le,{activeClassName:"active",className:`nav-link ${V["small-nav"]}`,to:l.url,children:r(l.translationKey)})},l.translationKey))}),e.jsx("div",{className:"tab-content",children:e.jsx("div",{className:"tab-pane fade show active",children:e.jsx(Js,{...s})})})]})]})}const ht=C("devicePage")(S(["devices","deviceStates","logs","bridgeInfo","generatedExternalDefinitions","theme"],A)(de(Ys)));export{ht as ConnectedDevicePage};
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
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-0c4587d7.js";import{V as k,M as E}from"./vendor-links-1951dd65.js";import{L,D as T,P as q}from"./index-425efb2b.js";import{i as F,A as M,D as N}from"./Availability-b917294b.js";import{T as P}from"./ReactTableCom-7c295f75.js";import{D as A}from"./DeviceImage-00f19990.js";import{D as I}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./persist-b30dd4c7.js";import"./index-3eeda4f6.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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|