zigbee2mqtt-frontend 0.9.2 → 0.9.3
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-003eccb5.js → Availability-e21b5cd4.js} +1 -1
- package/dist/assets/Availability-e21b5cd4.js.br +0 -0
- package/dist/assets/{CodeEditor-29b4941d.js → CodeEditor-bcea557c.js} +1 -1
- package/dist/assets/CodeEditor-bcea557c.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-2bf88446.js +1 -0
- package/dist/assets/ConnectedDevicePage-2bf88446.js.br +0 -0
- package/dist/assets/{ConnectedMap-1872a278.js → ConnectedMap-e5a88662.js} +1 -1
- package/dist/assets/ConnectedMap-e5a88662.js.br +0 -0
- package/dist/assets/{Dashboard-9b4595d6.js → Dashboard-39a47135.js} +1 -1
- package/dist/assets/Dashboard-39a47135.js.br +0 -0
- package/dist/assets/{DashboardDevice-60195d81.js → DashboardDevice-53502186.js} +1 -1
- package/dist/assets/DashboardDevice-53502186.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-1abc9897.js → DashboardFeatureWrapper-4eb44544.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-4eb44544.js.br +0 -0
- package/dist/assets/{DeviceImage-3b4915d4.js → DeviceImage-7f9c1d0b.js} +1 -1
- package/dist/assets/DeviceImage-7f9c1d0b.js.br +0 -0
- package/dist/assets/{GroupPage-8c956e8b.js → GroupPage-d5b1f216.js} +1 -1
- package/dist/assets/GroupPage-d5b1f216.js.br +0 -0
- package/dist/assets/{ReactTableCom-d74e8983.js → ReactTableCom-94fac1ed.js} +1 -1
- package/dist/assets/ReactTableCom-94fac1ed.js.br +0 -0
- package/dist/assets/{RecallRemove-c44ed294.js → RecallRemove-eea6bd1b.js} +1 -1
- package/dist/assets/RecallRemove-eea6bd1b.js.br +0 -0
- package/dist/assets/{_baseSet-9580cd14.js → _baseSet-71bef10a.js} +1 -1
- package/dist/assets/{_getAllKeysIn-f8f9e6cb.js → _getAllKeysIn-0e9e88c6.js} +1 -1
- package/dist/assets/{bootstrap-5.esm-f71148c0.js → bootstrap-5.esm-03fbaf7a.js} +1 -1
- package/dist/assets/bootstrap-5.esm-03fbaf7a.js.br +0 -0
- package/dist/assets/{index-20d96d6d.js → index-1bf471bb.js} +2 -2
- package/dist/assets/index-1bf471bb.js.br +0 -0
- package/dist/assets/index-2a4cf226.js +1 -0
- package/dist/assets/index-2a4cf226.js.br +0 -0
- package/dist/assets/{index-1fd72663.js → index-3286b31b.js} +1 -1
- package/dist/assets/index-3286b31b.js.br +0 -0
- package/dist/assets/{index-064644be.js → index-377f0e4f.js} +1 -1
- package/dist/assets/index-377f0e4f.js.br +0 -0
- package/dist/assets/{index-b54cf175.js → index-58ee66c1.js} +1 -1
- package/dist/assets/index-58ee66c1.js.br +0 -0
- package/dist/assets/{index-e12d529d.js → index-67556f42.js} +3 -3
- package/dist/assets/index-67556f42.js.br +0 -0
- package/dist/assets/{index-80df36d1.js → index-789be13c.js} +1 -1
- package/dist/assets/{index-4942892c.js → index-8cef62f7.js} +1 -1
- package/dist/assets/index-8cef62f7.js.br +0 -0
- package/dist/assets/{index-1f7ed5b8.js → index-b656f632.js} +1 -1
- package/dist/assets/index-b656f632.js.br +0 -0
- package/dist/assets/{index-602313de.js → index-e58a3a96.js} +1 -1
- package/dist/assets/index-e58a3a96.js.br +0 -0
- package/dist/assets/{intersection-00b5d8ed.js → intersection-7e9d5857.js} +1 -1
- package/dist/assets/intersection-7e9d5857.js.br +0 -0
- package/dist/assets/{isEqual-2bd1f3a6.js → isEqual-7263d7f1.js} +1 -1
- package/dist/assets/{jszip.min-f201b749.js → jszip.min-4f8e7911.js} +1 -1
- package/dist/assets/jszip.min-4f8e7911.js.br +0 -0
- package/dist/assets/{persist-45b1730f.js → persist-2ee41679.js} +1 -1
- package/dist/assets/persist-2ee41679.js.br +0 -0
- package/dist/assets/{rjsf-translation-fields-3acfc8df.js → rjsf-translation-fields-bf894a57.js} +1 -1
- package/dist/assets/{spinner-c6b7d6b4.js → spinner-70f57ec1.js} +1 -1
- package/dist/assets/{vendor-links-f7b4e675.js → vendor-links-d1510746.js} +1 -1
- package/dist/assets/vendor-links-d1510746.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-003eccb5.js.br +0 -0
- package/dist/assets/CodeEditor-29b4941d.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-f6229205.js +0 -1
- package/dist/assets/ConnectedDevicePage-f6229205.js.br +0 -0
- package/dist/assets/ConnectedMap-1872a278.js.br +0 -0
- package/dist/assets/Dashboard-9b4595d6.js.br +0 -0
- package/dist/assets/DashboardDevice-60195d81.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-1abc9897.js.br +0 -0
- package/dist/assets/DeviceImage-3b4915d4.js.br +0 -0
- package/dist/assets/GroupPage-8c956e8b.js.br +0 -0
- package/dist/assets/ReactTableCom-d74e8983.js.br +0 -0
- package/dist/assets/RecallRemove-c44ed294.js.br +0 -0
- package/dist/assets/bootstrap-5.esm-f71148c0.js.br +0 -0
- package/dist/assets/index-064644be.js.br +0 -0
- package/dist/assets/index-1f7ed5b8.js.br +0 -0
- package/dist/assets/index-1fd72663.js.br +0 -0
- package/dist/assets/index-20d96d6d.js.br +0 -0
- package/dist/assets/index-4942892c.js.br +0 -0
- package/dist/assets/index-602313de.js.br +0 -0
- package/dist/assets/index-b54cf175.js.br +0 -0
- package/dist/assets/index-bf535e7e.js +0 -1
- package/dist/assets/index-bf535e7e.js.br +0 -0
- package/dist/assets/index-e12d529d.js.br +0 -0
- package/dist/assets/intersection-00b5d8ed.js.br +0 -0
- package/dist/assets/jszip.min-f201b749.js.br +0 -0
- package/dist/assets/persist-45b1730f.js.br +0 -0
- package/dist/assets/vendor-links-f7b4e675.js.br +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
import{w as C,r as f,j as e,D as P,N as G,e as X,u as N,M as Z,f as ee,h as se,k as te,B as j,c as S,a as A,i as L,C as U,b as ne,E as T,d as ie,G as H,m as R,p as re,H as oe,x as ae,_ as ce,R as z,A as le,z as de,n as ue}from"./index-e12d529d.js";import{F as me,a as he,b as pe,w as ge,T as ve}from"./bootstrap-5.esm-f71148c0.js";import{D as xe,a as fe,A as be}from"./Availability-003eccb5.js";import{D as je}from"./DeviceImage-3b4915d4.js";import{V as Ne,M as _e}from"./vendor-links-f7b4e675.js";import{L as Ce,D,P as Se}from"./index-064644be.js";import{E as y,D as Ae,A as Ie,R as we}from"./RecallRemove-c44ed294.js";import{F as Re,a as V,T as Ee}from"./DashboardFeatureWrapper-1abc9897.js";import{T as ke,D as Pe}from"./rjsf-translation-fields-3acfc8df.js";import{L as ye,A as Oe}from"./index-602313de.js";import"./_getAllKeysIn-f8f9e6cb.js";import"./isEqual-2bd1f3a6.js";import"./intersection-00b5d8ed.js";import"./index-80df36d1.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./_baseSet-9580cd14.js";const W={"device-pic":"_device-pic_iu1xf_1","small-nav":"_small-nav_iu1xf_5"};function Be(s){const{allDevices:t,currentDevice:n,tab:r="info",t:i}=s,[o,a]=f.useState(""),c=Object.values(t).filter(d=>d.friendly_name.toLowerCase().includes(o.toLowerCase())&&d.ieee_address!==n.ieee_address);return e.jsx("h1",{className:"h3",children:e.jsxs(P,{children:[e.jsxs(P.Toggle,{"aria-label":i("select_a_device"),variant:"",size:"lg",children:[n.friendly_name," "]}),e.jsxs(P.Menu,{children:[e.jsx(me.Control,{autoFocus:!0,className:"mx-3 my-2 w-auto",placeholder:i("type_to_filter"),onChange:d=>a(d.target.value),value:o}),e.jsx($e,{devices:c,currentDevice:n,tab:r,setSearchTerm:a})]})]})})}const Me=C("devicePage")(Be);function $e({devices:s,currentDevice:t,tab:n,setSearchTerm:r}){return e.jsx(e.Fragment,{children:Object.values(s).map(i=>e.jsx(P.Item,{active:t.ieee_address===i.ieee_address,href:`#/device/${i.ieee_address}/${n}`,onClick:()=>r(""),children:i.friendly_name},i.ieee_address))})}const Le=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`}],Ue=G.create(s=>{const t=X(),{device:n,setDeviceDescription:r}=s,[i,o]=f.useState(n.description),{t:a}=N(["zigbee","common"]),c=async()=>{await r(n.friendly_name,i),t.remove()};return e.jsxs(Z,{isOpen:t.visible,children:[e.jsxs(ee,{children:[e.jsx("h3",{children:a("update_description")}),e.jsx("small",{children:n.friendly_name})]}),e.jsx(se,{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:a("description")}),e.jsx("textarea",{rows:3,onChange:d=>o(d.target.value),className:"form-control",value:i})]})})})}),e.jsxs(te,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:t.remove,children:a("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:c,children:a("zigbee:save_description")})]})]})}),De=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:()=>G.show(Ue,{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:a,renameDevice:c,removeDevice:d,setDeviceDescription:u,interviewDevice:h}=this.props,m=!!((x=r.config)!=null&&x.homeassistant),g=n[t.friendly_name]??{},v=[{translationKey:"friendly_name",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("strong",{children:l.friendly_name}),e.jsx(fe,{device:l,renameDevice:c,homeassistantEnabled:m,style:"link"})]})},{translationKey:"zigbee:description",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("pre",{style:{display:"inline"},children:l.description}),e.jsx(De,{device:l,setDeviceDescription:u,style:"link"})]})},{translationKey:"last_seen",render:(l,p,b)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ce,{lastSeenType:b.config.advanced.last_seen,state:p})})},{translationKey:"avaliability:avaliability",render:(l,p,b,I)=>{var k;const{config:_}=b,$=!!_.availability,O=((k=_.devices[l.ieee_address])==null?void 0:k.availability)!==!1;return e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(be,{availability:I,disabled:L(l,_),availabilityFeatureEnabled:$,availabilityEnabledForDevice:O})})}},{key:"type",translationKey:"device_type"},{key:"model_id",translationKey:"zigbee_model"},{key:"manufacturer",translationKey:"zigbee_manufacturer"},{key:"definition.description",translationKey:"description",if:"supported",render:l=>{var I,_;const p=Fe.exec((I=l.definition)==null?void 0:I.description);let b=e.jsx("span",{children:(_=l.definition)==null?void 0:_.description});if(p){const[$,O,k]=p;b=e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:k,children:O})}return e.jsx("dd",{className:"col-12 col-md-7",children:b})}},{render:(l,p,b,I,_)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsxs("p",{className:ne("mb-0","font-weight-bold",{"text-danger":!l.supported,"text-success":l.supported}),children:[e.jsx(D,{name:"supported",value:l.supported}),!l.supported&&e.jsxs(e.Fragment,{children:[" ",e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",href:T,children:["(",_("how_to_add_support"),")"]})]})]})}),translationKey:"support_status"},{key:"ieee_address",translationKey:"ieee_address"},{key:"network_address",translationKey:"network_address",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("abbr",{title:o("network_address_hex"),children:ie(l.network_address)})," / ",e.jsx("abbr",{title:o("network_address_dec"),children:l.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:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ne,{device:l})})},{key:"definition.model",translationKey:"model",if:"supported",render:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(_e,{device:l})})},{translationKey:"power",render:(l,p)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Se,{showLevel:!0,device:l,deviceState:p})})},{translationKey:"interview_completed",render:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(D,{name:"interview_completed",value:l.interview_completed})})}];return e.jsxs(f.Fragment,{children:[e.jsx("div",{className:"d-flex justify-content-center",children:e.jsx(je,{className:`card-img-top w-auto ${W["device-pic"]}`,device:t,deviceStatus:g,disabled:L(t,r.config)})}),e.jsx("dl",{className:"row",children:v.filter(l=>l.if===void 0||U(t,l.if,!1)).map(l=>e.jsxs(f.Fragment,{children:[e.jsx("dt",{className:"col-12 col-md-5",children:o(l.translationKey)}),l.render?l.render(t,g,r,i[t.friendly_name]??"offline",o):e.jsx("dd",{className:"col-12 col-md-7",children:U(t,l.key)})]},l.translationKey))}),e.jsx(xe,{device:t,state:g,homeassistantEnabled:m,configureDevice:a,renameDevice:c,removeDevice:d,setDeviceDescription:u,interviewDevice:h})]})}}const Ge=["deviceStates","bridgeInfo","availability"],Te=C("zigbee")(S(Ge,A)(Ke)),He=Te,B={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 E=(s=>(s[s.MULTIPLE=0]="MULTIPLE",s[s.SINGLE=1]="SINGLE",s))(E||{});function q(s){return s.length>0&&typeof s[0]!="string"}function ze(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,label:i,value:o,disabled:a}=s;let c=[];const d=u=>{const{checked:h,name:m}=u.target;let g=[...o];h?g.push(m):g=g.filter(v=>v!==m),r(g)};return q(n)?console.warn("Not implemented"):c=[...n].sort((u,h)=>u.toString().localeCompare(h.toString())).map(u=>e.jsxs("div",{className:"form-check form-check-inline",children:[e.jsx("input",{className:"form-check-input",type:"checkbox",checked:o.includes(u),name:u,id:`${t}_${u}`,value:u,onChange:d,disabled:a}),e.jsx("label",{className:"form-check-label",htmlFor:`${t}_${u}`,title:u,children:B[u]??u})]},u)),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:c})]})}function Ve(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,value:i,label:o,disabled:a,...c}=s,{t:d}=N(["zigbee","common"]),u=[e.jsx("option",{hidden:!0,children:d("select_cluster")},"hidden")],h=m=>{r(m.target.value)};return q(n)?n.forEach(m=>{const g=m.clusters.map(v=>e.jsx("option",{value:v,children:B[v]??v},v));g.length===0&&g.push(e.jsx("option",{disabled:!0,children:d("none")},"none")),u.push(e.jsx("optgroup",{label:d(m.name),children:g},m.name))}):n.forEach(m=>{u.push(e.jsx("option",{value:m,children:B[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:h,disabled:a,...c,children:u})]})}function M(s){const{pickerType:t,onChange:n,clusters:r,value:i,label:o,disabled:a,...c}=s;return t===E.MULTIPLE?e.jsx(ze,{onChange:n,clusters:r,value:i,disabled:a,label:o,...c}):e.jsx(Ve,{onChange:n,clusters:r,value:i,disabled:a,label:o,...c})}const We=(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 qe 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=R(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,i=this.getBidingParams();t=="Bind"?r(i):n(i)}}static getDerivedStateFromProps(t,n){const{rule:r}=t;return{stateRule:r}}getBidingParams(){var c;const{device:t,groups:n,devices:r}=this.props,{stateRule:i}=this.state;let o="",a;if(i.target.type==="group")o=n.find(u=>u.id===i.target.id).friendly_name;else if(i.target.type==="endpoint"){const d=r[(c=i.target)==null?void 0:c.ieee_address];o=d.friendly_name,d.type!=="Coordinator"&&(a=i.target.endpoint)}return{from:t.friendly_name,from_endpoint:i.source.endpoint,to:o,to_endpoint:a,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,a=R(r),c=We(o,t,n),d=R(c),u=new Set(o.clusters),h=r.endpoints[o.source.endpoint],m=o.target.type==="endpoint"&&o.target.endpoint?c==null?void 0:c.endpoints[o.target.endpoint]:void 0,g=o.target.type==="group"||(c==null?void 0:c.type)=="Coordinator";if(h&&(m||g))for(const v of[...h.clusters.input,...h.clusters.output]){const x=h.clusters.input.includes(v)&&(m==null?void 0:m.clusters.output.includes(v)),l=h.clusters.output.includes(v)&&(m==null?void 0:m.clusters.input.includes(v));(x||l||g)&&u.add(v)}return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(y,{label:i("source_endpoint"),disabled:!o.isNew,values:a,value:o.source.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx(Ae,{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(y,{label:i("destination_endpoint"),disabled:!o.isNew,values:d,value:o.target.endpoint,onChange:this.setDestinationEp}):null}),e.jsx("div",{className:"col-md-4",children:e.jsx(M,{label:i("clusters"),pickerType:E.MULTIPLE,clusters:Array.from(u),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 Je=C(["common","zigbee"])(qe),Ye=s=>`${s.source.endpoint}-${s.isNew}${s.source.ieee_address}-${s.target.id}-${s.target.ieee_address}-${s.clusters.join("-")}`,Qe=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 Xe(s){const{device:t,devices:n,groups:r,removeBind:i,addBind:o}=s,[a]=f.useState({isNew:Date.now(),target:{},source:{ieee_address:t.ieee_address,endpoint:""},clusters:[]}),c=f.useMemo(()=>Qe(t),[t]);return e.jsx("div",{className:"container-fluid",children:[...c,a].map((d,u)=>e.jsx(Je,{rule:d,groups:r,onUnBind:i,onBind:o,device:t,idx:u,devices:n},Ye(d)))})}const Ze=["devices","groups"],es=S(Ze,A)(Xe),ss=es;var ts=he,ns=pe,is=ns(function(s,t,n){ts(s,t,n)}),rs=is;const J=re(rs);function Y(s){const{cluster:t,device:n,onChange:r,label:i,value:o,clusters:a,...c}=s,{bridgeDefinitions:d}=oe.getState(),{t:u}=N("zigbee"),h=x=>{const{value:l}=x.target,b=m(t)[l];b&&r(l,b)},m=x=>{const l=a??d;if(l.hasOwnProperty("clusters")&&l.clusters.hasOwnProperty(x)){const p=l.clusters[x];if(p&&Object.keys(p).length!==0)return p.attributes}else if(l.hasOwnProperty("custom_clusters")&&l.custom_clusters.hasOwnProperty(n.ieee_address)&&l.custom_clusters[n.ieee_address].hasOwnProperty(x)){const p=l.custom_clusters[n.ieee_address][x];if(p&&Object.keys(p).length!==0)return p.attributes}return[]},g=Object.keys(m(t));o!==void 0&&!g.includes(o)&&g.push(o);const v=g.map(x=>e.jsx("option",{value:x,children:x},x));return v.unshift(e.jsx("option",{hidden:!0,children:u("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:h,value:o,...c,children:v})]})}const os=(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(a=>!i.includes(a))),[{name:"available",clusters:i},{name:"possible",clusters:r}]},as=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],cs=s=>as.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 ls 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:J({},r,i)}}render(){const{rule:t,device:n,t:r}=this.props,{stateRule:i}=this.state,o=R(n);return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(y,{label:r("endpoint"),disabled:!t.isNew,values:o,value:i.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx(M,{label:r("cluster"),disabled:!i.endpoint,pickerType:E.SINGLE,clusters:os(n,i.endpoint,i.cluster),value:i.cluster,onChange:this.setCluster})}),e.jsx("div",{className:"col-md-2",children:e.jsx(Y,{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 ds=C(["zigbee","common"])(ls),us=s=>{const t=[];return Object.entries(s.endpoints).forEach(([n,r])=>{r.configured_reportings.forEach(i=>{t.push({...i,endpoint:n})})}),t},ms=s=>`${s.isNew}${s.endpoint}${s.cluster}-${s.attribute}`;function hs(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=a=>{const{cluster:c,endpoint:d,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:g}=a;t(n.friendly_name,d,{cluster:c,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:g})},o=f.useMemo(()=>us(n),[n]);return e.jsx("div",{className:"container-fluid",children:[...o,r].map(a=>e.jsx(ds,{rule:a,device:n,onApply:i},ms(a)))})}const ps=["devices","groups"],gs=S(ps,A)(hs),vs=gs;function xs(s){const{device:t,deviceStates:n}=s,r=n[t.friendly_name]??{};return e.jsx("pre",{children:JSON.stringify(r,null,4)})}const fs=["deviceStates"],bs=S(fs,A)(xs),js=bs;function Ns(s){var c,d;const{device:t,deviceStates:n,setDeviceState:r,getDeviceState:i}=s,{t:o}=N(["exposes"]),a=n[t.friendly_name]??{};return(d=(c=t.definition)==null?void 0:c.exposes)!=null&&d.length?e.jsx(Re,{feature:{features:t.definition.exposes,type:"composite"},device:t,deviceState:a,onChange:async(u,h)=>{await r(t.friendly_name,h)},onRead:async(u,h)=>{await i(t.friendly_name,h)},parentFeatures:[],featureWrapperClass:V}):o("empty_exposes_definition")}const _s=["deviceStates"],Cs=S(_s,A)(Ns),Ss=Cs,As="_tree_k0evw_1",Is={tree:As},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 ws(s){const{t}=N("zigbee"),{device:n}=s;return e.jsx("dl",{className:`${Is.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=ge(ve),Es=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")})]})})},ks={"ui:order":["friendly_name","disabled","retain","retention","qos","filtered_attributes","*"]};class Ps extends f.Component{constructor(){super(...arguments),this.state={newSetting:{key:"",value:"",type:""},updatedDeviceConfig:{}},this.formData=void 0,this.updateConfig=async t=>{const{formData:n}=t,{data:r}=this.getSchemaAndConfig(),{setDeviceOptions:i,device:o}=this.props,a=ae(r,n);await i(o.ieee_address,a),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 J({},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:ks}}render(){const{schema:t,data:n,uiSchema:r}=this.getSchemaAndConfig();return this.formData||(this.formData=n),e.jsxs(e.Fragment,{children:[e.jsx(Es,{docsUrl:"https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#common-device-options"}),e.jsx(Rs,{schema:t,formData:this.formData,onChange:i=>this.formData=i.formData,onSubmit:this.updateConfig,uiSchema:r,fields:{TitleField:ke,DescriptionField:Pe}})]})}}function ys(s){const{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,setDeviceState:o,device:a,deviceState:c}=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(Ie,{sceneStore:t,target:a,deviceState:c,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(we,{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,target:a,deviceState:c})})})})]})}const Os=[],Bs=S(Os,A)(ys),Ms=Bs;function $s(s){var a,c;const{device:t,bridgeInfo:{config:n},setDeviceOptions:r}=s,{t:i}=N(["exposes"]),o=n.devices[t.ieee_address]??{};return(c=(a=t.definition)==null?void 0:a.options)!=null&&c.length?e.jsx(Ee,{showEndpointLabels:!0,feature:{features:t.definition.options},type:"composite",device:t,deviceState:o,onChange:async(d,u)=>{await r(t.ieee_address,u)},featureWrapperClass:V}):i("empty_exposes_definition")}const Ls=["bridgeInfo"],Us=S(Ls,A)($s),Ds=Us;function Q(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(ye,{log:i,search:"",logLevel:Oe},"log")),e.jsx(e.Fragment,{children:o})}const Fs=s=>{const{executeCommand:t,device:n,logs:r}=s,{t:i}=N("zigbee"),[o,a]=f.useState(1),[c,d]=f.useState(""),[u,h]=f.useState(""),[m,g]=f.useState(JSON.stringify({},null,2)),v=()=>{let p=!0;try{JSON.parse(m)}catch{p=!1}return p&&!isNaN(parseInt(c))&&!isNaN(parseInt(u))},x=()=>{t(n.friendly_name,o,parseInt(c),parseInt(u),JSON.parse(m))},l=p=>p.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:p=>a(p.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:c,placeholder:"example: 0x0001, 1, 123",onChange:p=>d(p.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:u,placeholder:"example: 0x0001, 1, 123",onChange:p=>h(p.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:p=>g(p.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:x,disabled:!v(),type:"button",className:"btn btn-success",children:i("execute")})})}),e.jsx("div",{className:"row",children:e.jsx(Q,{logs:r,filterFn:l})})]})},Ks=f.lazy(()=>ce(()=>import("./CodeEditor-29b4941d.js"),["./CodeEditor-29b4941d.js","./index-e12d529d.js","./index-0f5e7faa.css","./extends-98964cd2.js"],import.meta.url));class Gs extends z.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:T,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 Ts=C(["devConsole","common"])(Gs);var w=(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))(w||{});const Hs=["Read result of","Publish 'set' 'read' to","Publish 'set' 'write' to","Wrote "];class zs extends z.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,a)=>{const{attributes:c}=this.state;if(!c.find(d=>d.attribute===o)){const d=c.concat([{attribute:o,definition:a}]);this.setState({attributes:d})}},this.onAttributeDelete=o=>{const{attributes:a}=this.state,c=a.filter(d=>d.attribute!==o);this.setState({attributes:c})},this.onReadClick=()=>{const{readDeviceAttributes:o,device:a}=this.props,{cluster:c,attributes:d,endpoint:u}=this.state;o(a.friendly_name,u,c,d.map(h=>h.attribute),{})},this.onWriteClick=()=>{const{writeDeviceAttributes:o,device:a}=this.props,{cluster:c,attributes:d,endpoint:u}=this.state;o(a.friendly_name,u,c,d,{})},this.onAttributeValueChange=(o,a)=>{const{attributes:c}=this.state,d=[...c],u=d.find(h=>h.attribute===o);u&&(u.value=a),this.setState({attributes:d})};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(Vs,{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:a,device:c,clusters:d}=this.props,u=R(c),h=m=>Hs.some(g=>m.message.startsWith(g));return r?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(y,{"data-testid":"endpoint-picker",label:a("zigbee:endpoint"),values:u,value:r,onChange:this.onEndpointChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(M,{"data-testid":"cluster-picker",label:a("cluster"),pickerType:E.SINGLE,clusters:c.endpoints[r].clusters.input,value:t,onChange:this.onClusterChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(Y,{"data-testid":"attribute-picker",label:a("attribute"),value:"",cluster:t,device:c,clusters:d,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:a("read")}),e.jsx(j,{disabled:i||o,className:"btn btn-danger","data-testid":"write-attribute",onClick:this.onWriteClick,children:a("write")})]})}),e.jsx(Q,{logs:this.props.logs,filterFn:h})]}):e.jsx(e.Fragment,{children:"No endpoints"})}}function Vs(s){const{value:t,onChange:n,attribute:r,definition:i,...o}=s,c={[w.CHAR_STR]:"string",[w.LONG_CHAR_STR]:"string",[w.OCTET_STR]:"string",[w.LONG_OCTET_STR]:"string"}[i.type]??"number",d=u=>{const h=c==="number"?u.target.valueAsNumber:u.target.value;n(r,h)};return e.jsx("input",{className:"form-control",type:c,value:t,onChange:d,...o})}const Ws=C(["devConsole","common"])(zs);class qs extends f.Component{render(){return e.jsxs("div",{children:[e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Ts,{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(Ws,{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 Js=C(["devConsole","common"])(qs);function Ys(s){const{match:t,devices:n,logs:r}=s,{readDeviceAttributes:i,writeDeviceAttributes:o,setDeviceOptions:a,executeCommand:c,generateExternalDefinition:d,bridgeInfo:u,deviceStates:h,generatedExternalDefinitions:m,theme:g}=s,{tab:v,dev:x}=t.params,l=n[x],p=h[l.friendly_name]??{};switch(v){case"info":return e.jsx(He,{device:l});case"bind":return e.jsx(ss,{device:l});case"state":return e.jsx(js,{device:l});case"exposes":return e.jsx(Ss,{device:l});case"clusters":return e.jsx(ws,{device:l});case"reporting":return e.jsx(vs,{device:l});case"settings":return e.jsx(Ps,{device:l,setDeviceOptions:a,bridgeInfo:u});case"settings-specific":return e.jsx(Ds,{device:l,setDeviceOptions:a,bridgeInfo:u});case"dev-console":return e.jsx(Js,{device:l,logs:r,readDeviceAttributes:i,writeDeviceAttributes:o,generateExternalDefinition:d,generatedExternalDefinitions:m,executeCommand:c,theme:g});case"scene":return e.jsx(Ms,{device:l,deviceState:p});default:return e.jsx(le,{to:`/device/${x}/info`})}}function Qs(s){const{devices:t,match:n,t:r}=s,{dev:i,tab:o}=n.params,a=t[i];if(!a)return e.jsx("div",{className:"h-100 d-flex justify-content-center align-items-center",children:r("unknown_device")});const c=Le(i);return e.jsxs(e.Fragment,{children:[e.jsx(Me,{allDevices:t,currentDevice:a,tab:o}),e.jsxs("div",{className:"tab",children:[e.jsx("ul",{className:"nav nav-tabs",children:c.map(d=>e.jsx("li",{className:"nav-item",children:e.jsx(de,{activeClassName:"active",className:`nav-link ${W["small-nav"]}`,to:d.url,children:r(d.translationKey)})},d.translationKey))}),e.jsx("div",{className:"tab-content",children:e.jsx("div",{className:"tab-pane fade show active",children:e.jsx(Ys,{...s})})})]})]})}const pt=C("devicePage")(S(["devices","deviceStates","logs","bridgeInfo","generatedExternalDefinitions","theme"],A)(ue(Qs)));export{pt 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
|
Binary file
|
@@ -1 +0,0 @@
|
|
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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|