zigbee2mqtt-frontend 0.7.3 → 0.7.5

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -2
  3. package/dist/assets/{Availability-2b59557f.js → Availability-ea995265.js} +1 -1
  4. package/dist/assets/Availability-ea995265.js.br +0 -0
  5. package/dist/assets/CodeEditor-b2b42cbe.js +28 -0
  6. package/dist/assets/CodeEditor-b2b42cbe.js.br +0 -0
  7. package/dist/assets/ConnectedDevicePage-4eb4fbd7.js +1 -0
  8. package/dist/assets/ConnectedDevicePage-4eb4fbd7.js.br +0 -0
  9. package/dist/assets/ConnectedMap-8e9df41d.js +1 -0
  10. package/dist/assets/ConnectedMap-8e9df41d.js.br +0 -0
  11. package/dist/assets/Dashboard-da847986.js +1 -0
  12. package/dist/assets/Dashboard-da847986.js.br +0 -0
  13. package/dist/assets/{DashboardDevice-94602d40.js → DashboardDevice-729bd8ca.js} +1 -1
  14. package/dist/assets/DashboardDevice-729bd8ca.js.br +0 -0
  15. package/dist/assets/DashboardFeatureWrapper-9ec37019.js +1 -0
  16. package/dist/assets/DashboardFeatureWrapper-9ec37019.js.br +0 -0
  17. package/dist/assets/DeviceImage-66f70063.js +1 -0
  18. package/dist/assets/DeviceImage-66f70063.js.br +0 -0
  19. package/dist/assets/{GroupPage-2d666d39.js → GroupPage-c80cd21b.js} +1 -1
  20. package/dist/assets/GroupPage-c80cd21b.js.br +0 -0
  21. package/dist/assets/{ReactTableCom-d30dd392.js → ReactTableCom-1c36e1db.js} +1 -1
  22. package/dist/assets/ReactTableCom-1c36e1db.js.br +0 -0
  23. package/dist/assets/{RecallRemove-1836c5da.js → RecallRemove-ea02e389.js} +1 -1
  24. package/dist/assets/RecallRemove-ea02e389.js.br +0 -0
  25. package/dist/assets/_baseSet-f94f15e8.js +1 -0
  26. package/dist/assets/_getAllKeysIn-a7208d0f.js +1 -0
  27. package/dist/assets/{bootstrap-5.esm-02848c2e.js → bootstrap-5.esm-ff1b56af.js} +1 -1
  28. package/dist/assets/bootstrap-5.esm-ff1b56af.js.br +0 -0
  29. package/dist/assets/extends-98964cd2.js +1 -0
  30. package/dist/assets/{index-b99027cb.js → index-1b114912.js} +1 -1
  31. package/dist/assets/index-6f55efcd.js +222 -0
  32. package/dist/assets/index-6f55efcd.js.br +0 -0
  33. package/dist/assets/index-72a1e3cc.js +1 -0
  34. package/dist/assets/index-72a1e3cc.js.br +0 -0
  35. package/dist/assets/{index-de6de6d3.js → index-a73334eb.js} +1 -1
  36. package/dist/assets/index-a73334eb.js.br +0 -0
  37. package/dist/assets/{index-1e7dff67.js → index-afca9ace.js} +1 -1
  38. package/dist/assets/index-afca9ace.js.br +0 -0
  39. package/dist/assets/{index-bd8c0c65.js → index-b2de2657.js} +1 -1
  40. package/dist/assets/index-b2de2657.js.br +0 -0
  41. package/dist/assets/{index-11c35551.js → index-caf43355.js} +2 -2
  42. package/dist/assets/index-caf43355.js.br +0 -0
  43. package/dist/assets/{index-ec5c1b59.js → index-e9af120b.js} +1 -1
  44. package/dist/assets/index-e9af120b.js.br +0 -0
  45. package/dist/assets/{index-43601774.js → index-ed7c8a41.js} +1 -1
  46. package/dist/assets/index-ed7c8a41.js.br +0 -0
  47. package/dist/assets/{index-21be4340.js → index-f121818a.js} +1 -1
  48. package/dist/assets/index-f121818a.js.br +0 -0
  49. package/dist/assets/{intersection-9baddd7e.js → intersection-62601d15.js} +1 -1
  50. package/dist/assets/intersection-62601d15.js.br +0 -0
  51. package/dist/assets/{isEqual-20a5450b.js → isEqual-0689f192.js} +1 -1
  52. package/dist/assets/jszip.min-3e1aa67f.js +12 -0
  53. package/dist/assets/jszip.min-3e1aa67f.js.br +0 -0
  54. package/dist/assets/{persist-c36f67ac.js → persist-86b6ee4d.js} +1 -1
  55. package/dist/assets/persist-86b6ee4d.js.br +0 -0
  56. package/dist/assets/{rjsf-translation-fields-1613ad8f.js → rjsf-translation-fields-6c5e3fa7.js} +1 -1
  57. package/dist/assets/{spinner-49d98010.js → spinner-6dd6f61f.js} +1 -1
  58. package/dist/assets/{vendor-links-aa8ea999.js → vendor-links-5e39df0f.js} +1 -1
  59. package/dist/assets/vendor-links-5e39df0f.js.br +0 -0
  60. package/dist/index.html +1 -1
  61. package/dist/index.html.br +0 -0
  62. package/package.json +2 -2
  63. package/dist/assets/Availability-2b59557f.js.br +0 -0
  64. package/dist/assets/CodeEditor-772cf8ba.js +0 -25
  65. package/dist/assets/CodeEditor-772cf8ba.js.br +0 -0
  66. package/dist/assets/ConnectedDevicePage-59ec5cf5.js +0 -1
  67. package/dist/assets/ConnectedDevicePage-59ec5cf5.js.br +0 -0
  68. package/dist/assets/ConnectedMap-4de21919.js +0 -1
  69. package/dist/assets/ConnectedMap-4de21919.js.br +0 -0
  70. package/dist/assets/Dashboard-4d53b231.js +0 -1
  71. package/dist/assets/Dashboard-4d53b231.js.br +0 -0
  72. package/dist/assets/DashboardDevice-94602d40.js.br +0 -0
  73. package/dist/assets/DashboardFeatureWrapper-3ad13437.js +0 -1
  74. package/dist/assets/DashboardFeatureWrapper-3ad13437.js.br +0 -0
  75. package/dist/assets/DeviceImage-454b21dc.js +0 -1
  76. package/dist/assets/DeviceImage-454b21dc.js.br +0 -0
  77. package/dist/assets/GroupPage-2d666d39.js.br +0 -0
  78. package/dist/assets/ReactTableCom-d30dd392.js.br +0 -0
  79. package/dist/assets/RecallRemove-1836c5da.js.br +0 -0
  80. package/dist/assets/_baseSet-ce73c93f.js +0 -1
  81. package/dist/assets/_getAllKeysIn-15b2f78a.js +0 -1
  82. package/dist/assets/bootstrap-5.esm-02848c2e.js.br +0 -0
  83. package/dist/assets/index-11c35551.js.br +0 -0
  84. package/dist/assets/index-1e7dff67.js.br +0 -0
  85. package/dist/assets/index-21be4340.js.br +0 -0
  86. package/dist/assets/index-43601774.js.br +0 -0
  87. package/dist/assets/index-579b95d0.js +0 -1
  88. package/dist/assets/index-579b95d0.js.br +0 -0
  89. package/dist/assets/index-bd8c0c65.js.br +0 -0
  90. package/dist/assets/index-de6de6d3.js.br +0 -0
  91. package/dist/assets/index-e3646692.js +0 -225
  92. package/dist/assets/index-e3646692.js.br +0 -0
  93. package/dist/assets/index-ec5c1b59.js.br +0 -0
  94. package/dist/assets/intersection-9baddd7e.js.br +0 -0
  95. package/dist/assets/persist-c36f67ac.js.br +0 -0
  96. package/dist/assets/vendor-links-aa8ea999.js.br +0 -0
@@ -0,0 +1 @@
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 ce,_ as ae,R as z,A as le,z as de,n as ue}from"./index-6f55efcd.js";import{F as me,a as he,b as pe,w as ve,T as ge}from"./bootstrap-5.esm-ff1b56af.js";import{D as xe,a as fe,A as be}from"./Availability-ea995265.js";import{D as je}from"./DeviceImage-66f70063.js";import{V as Ne,M as _e}from"./vendor-links-5e39df0f.js";import{L as Ce,D as F,P as Se}from"./index-72a1e3cc.js";import{E as y,D as Ae,A as Ie,R as we}from"./RecallRemove-ea02e389.js";import{F as Re,a as V,T as Ee}from"./DashboardFeatureWrapper-9ec37019.js";import{T as ke,D as Pe}from"./rjsf-translation-fields-6c5e3fa7.js";import{L as ye,A as Oe}from"./index-a73334eb.js";import"./_getAllKeysIn-a7208d0f.js";import"./isEqual-0689f192.js";import"./intersection-62601d15.js";import"./index-1b114912.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./_baseSet-f94f15e8.js";const W={"device-pic":"_device-pic_iu1xf_1","small-nav":"_small-nav_iu1xf_5"};function $e(s){const{allDevices:t,currentDevice:n,tab:r="info",t:i}=s,[o,c]=f.useState(""),a=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=>c(d.target.value),value:o}),e.jsx(Me,{devices:a,currentDevice:n,tab:r,setSearchTerm:c})]})]})})}const Be=C("devicePage")($e);function Me({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:c}=N(["zigbee","common"]),a=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:c("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:c("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:c("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:a,children:c("zigbee:save_description")})]})]})}),Fe=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"})})},Ke=/\[(.*?)]\((.*?)\)/;class De extends f.Component{render(){var x;const{device:t,deviceStates:n,bridgeInfo:r,availability:i,t:o}=this.props,{configureDevice:c,renameDevice:a,removeDevice:d,setDeviceDescription:u,interviewDevice:h}=this.props,m=!!((x=r.config)!=null&&x.homeassistant),v=n[t.friendly_name]??{},g=[{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:a,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(Fe,{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,M=!!_.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:M,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=Ke.exec((I=l.definition)==null?void 0:I.description);let b=e.jsx("span",{children:(_=l.definition)==null?void 0:_.description});if(p){const[M,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(F,{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(F,{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:v,disabled:L(t,r.config)})}),e.jsx("dl",{className:"row",children:g.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,v,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:v,homeassistantEnabled:m,configureDevice:c,renameDevice:a,removeDevice:d,setDeviceDescription:u,interviewDevice:h})]})}}const Ge=["deviceStates","bridgeInfo","availability"],Te=C("zigbee")(S(Ge,A)(De)),He=Te,$={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:c}=s;let a=[];const d=u=>{const{checked:h,name:m}=u.target;let v=[...o];h?v.push(m):v=v.filter(g=>g!==m),r(v)};return q(n)?console.warn("Not implemented"):a=[...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:c}),e.jsx("label",{className:"form-check-label",htmlFor:`${t}_${u}`,title:u,children:$[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:a})]})}function Ve(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,value:i,label:o,disabled:c,...a}=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 v=m.clusters.map(g=>e.jsx("option",{value:g,children:$[g]??g},g));v.length===0&&v.push(e.jsx("option",{disabled:!0,children:d("none")},"none")),u.push(e.jsx("optgroup",{label:d(m.name),children:v},m.name))}):n.forEach(m=>{u.push(e.jsx("option",{value:m,children:$[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:c,...a,children:u})]})}function B(s){const{pickerType:t,onChange:n,clusters:r,value:i,label:o,disabled:c,...a}=s;return t===E.MULTIPLE?e.jsx(ze,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a}):e.jsx(Ve,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a})}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,{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(u=>u.id===i.target.id).friendly_name}`;else if(i.target.type==="endpoint"){const d=r[(a=i.target)==null?void 0:a.ieee_address];d.type==="Coordinator"?c=`${d.friendly_name}`:c=`${d.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=R(r),a=We(o,t,n),d=R(a),u=new Set(o.clusters),h=r.endpoints[o.source.endpoint],m=o.target.type==="endpoint"&&o.target.endpoint?a==null?void 0:a.endpoints[o.target.endpoint]:void 0,v=o.target.type==="group"||(a==null?void 0:a.type)=="Coordinator";if(h&&(m||v))for(const g of[...h.clusters.input,...h.clusters.output]){const x=h.clusters.input.includes(g)&&(m==null?void 0:m.clusters.output.includes(g)),l=h.clusters.output.includes(g)&&(m==null?void 0:m.clusters.input.includes(g));(x||l||v)&&u.add(g)}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:c,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(B,{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,[c]=f.useState({isNew:Date.now(),target:{},source:{ieee_address:t.ieee_address,endpoint:""},clusters:[]}),a=f.useMemo(()=>Qe(t),[t]);return e.jsx("div",{className:"container-fluid",children:[...a,c].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:c,...a}=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=c??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[]},v=Object.keys(m(t));o!==void 0&&!v.includes(o)&&v.push(o);const g=v.map(x=>e.jsx("option",{value:x,children:x},x));return g.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:v.length===0,className:"form-control",onChange:h,value:o,...a,children:g})]})}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(c=>!i.includes(c))),[{name:"available",clusters:i},{name:"possible",clusters:r}]},cs=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],as=s=>cs.every(t=>s[t]!==void 0&&s[t]!=="");function K(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(B,{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(K,{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(K,{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:!as(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=c=>{const{cluster:a,endpoint:d,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:v}=c;t(`${n.friendly_name}/${d}`,{cluster:a,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:v})},o=f.useMemo(()=>us(n),[n]);return e.jsx("div",{className:"container-fluid",children:[...o,r].map(c=>e.jsx(ds,{rule:c,device:n,onApply:i},ms(c)))})}const ps=["devices","groups"],vs=S(ps,A)(hs),gs=vs;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 a,d;const{device:t,deviceStates:n,setDeviceState:r,getDeviceState:i}=s,{t:o}=N(["exposes"]),c=n[t.friendly_name]??{};return(d=(a=t.definition)==null?void 0:a.exposes)!=null&&d.length?e.jsx(Re,{feature:{features:t.definition.exposes,type:"composite"},device:t,deviceState:c,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},D=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(D,{label:t("output_clusters"),clusters:i.clusters.output}),e.jsx(D,{label:t("input_clusters"),clusters:i.clusters.input})]})]},r))})]})})})}const Rs=ve(ge),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.updateConfig=async t=>{const{formData:n}=t,{data:r}=this.getSchemaAndConfig(),{setDeviceOptions:i,device:o}=this.props,c=ce(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 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 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:n,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: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(Ie,{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(we,{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,target:c,deviceState:a})})})})]})}const Os=[],$s=S(Os,A)(ys),Bs=$s;function Ms(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(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)(Ms),Fs=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 Ks=s=>{const{executeCommand:t,device:n,logs:r}=s,{t:i}=N("zigbee"),[o,c]=f.useState(1),[a,d]=f.useState(""),[u,h]=f.useState(""),[m,v]=f.useState(JSON.stringify({},null,2)),g=()=>{let p=!0;try{JSON.parse(m)}catch{p=!1}return p&&!isNaN(parseInt(a))&&!isNaN(parseInt(u))},x=()=>{t(n.friendly_name,o,parseInt(a),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=>c(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:a,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=>v(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:!g(),type:"button",className:"btn btn-success",children:i("execute")})})}),e.jsx("div",{className:"row",children:e.jsx(Q,{logs:r,filterFn:l})})]})},Ds=f.lazy(()=>ae(()=>import("./CodeEditor-b2b42cbe.js"),["./CodeEditor-b2b42cbe.js","./index-6f55efcd.js","./index-654e4a69.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(Ds,{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,c)=>{const{attributes:a}=this.state;if(!a.find(d=>d.attribute===o)){const d=a.concat([{attribute:o,definition:c}]);this.setState({attributes:d})}},this.onAttributeDelete=o=>{const{attributes:c}=this.state,a=c.filter(d=>d.attribute!==o);this.setState({attributes:a})},this.onReadClick=()=>{const{readDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:d,endpoint:u}=this.state;o(c.friendly_name,u,a,d.map(h=>h.attribute),{})},this.onWriteClick=()=>{const{writeDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:d,endpoint:u}=this.state;o(c.friendly_name,u,a,d,{})},this.onAttributeValueChange=(o,c)=>{const{attributes:a}=this.state,d=[...a],u=d.find(h=>h.attribute===o);u&&(u.value=c),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:c,device:a,clusters:d}=this.props,u=R(a),h=m=>Hs.some(v=>m.message.startsWith(v));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(y,{"data-testid":"endpoint-picker",label:c("zigbee:endpoint"),values:u,value:r,onChange:this.onEndpointChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(B,{"data-testid":"cluster-picker",label:c("cluster"),pickerType:E.SINGLE,clusters:a.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:c("attribute"),value:"",cluster:t,device:a,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:c("read")}),e.jsx(j,{disabled:i||o,className:"btn btn-danger","data-testid":"write-attribute",onClick:this.onWriteClick,children:c("write")})]})}),e.jsx(Q,{logs:this.props.logs,filterFn:h})]})}}function Vs(s){const{value:t,onChange:n,attribute:r,definition:i,...o}=s,a={[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=a==="number"?u.target.valueAsNumber:u.target.value;n(r,h)};return e.jsx("input",{className:"form-control",type:a,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(Ks,{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:c,executeCommand:a,generateExternalDefinition:d,bridgeInfo:u,deviceStates:h,generatedExternalDefinitions:m,theme:v}=s,{tab:g,dev:x}=t.params,l=n[x],p=h[l.friendly_name]??{};switch(g){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(gs,{device:l});case"settings":return e.jsx(Ps,{device:l,setDeviceOptions:c,bridgeInfo:u});case"settings-specific":return e.jsx(Fs,{device:l,setDeviceOptions:c,bridgeInfo:u});case"dev-console":return e.jsx(Js,{device:l,logs:r,readDeviceAttributes:i,writeDeviceAttributes:o,generateExternalDefinition:d,generatedExternalDefinitions:m,executeCommand:a,theme:v});case"scene":return e.jsx(Bs,{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,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=Le(i);return e.jsxs(e.Fragment,{children:[e.jsx(Be,{allDevices:t,currentDevice:c,tab:o}),e.jsxs("div",{className:"tab",children:[e.jsx("ul",{className:"nav nav-tabs",children:a.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};
@@ -0,0 +1 @@
1
+ import{R as gt,o as Ft,r as et,j as S,b as wt,B as De,w as Hn,c as Yn,a as Vn}from"./index-6f55efcd.js";import{D as jn}from"./DeviceImage-66f70063.js";import{i as Un}from"./isEqual-0689f192.js";import{_ as Gn}from"./extends-98964cd2.js";import{S as Wn}from"./spinner-6dd6f61f.js";import{i as Ie}from"./intersection-62601d15.js";import"./index-1b114912.js";function an(t,e){if(t==null)return{};var n={},r=Object.keys(t),i,s;for(s=0;s<r.length;s++)i=r[s],!(e.indexOf(i)>=0)&&(n[i]=t[i]);return n}function he(t,e){return he=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},he(t,e)}function un(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,he(t,e)}const ze={disabled:!1},ln=gt.createContext(null);var cn=function(e){return e.scrollTop},Mt="unmounted",pt="exited",dt="entering",yt="entered",pe="exiting",ct=function(t){un(e,t);function e(r,i){var s;s=t.call(this,r,i)||this;var o=i,a=o&&!o.isMounting?r.enter:r.appear,l;return s.appearStatus=null,r.in?a?(l=pt,s.appearStatus=dt):l=yt:r.unmountOnExit||r.mountOnEnter?l=Mt:l=pt,s.state={status:l},s.nextCallback=null,s}e.getDerivedStateFromProps=function(i,s){var o=i.in;return o&&s.status===Mt?{status:pt}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var s=null;if(i!==this.props){var o=this.state.status;this.props.in?o!==dt&&o!==yt&&(s=dt):(o===dt||o===yt)&&(s=pe)}this.updateStatus(!1,s)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,s,o,a;return s=o=a=i,i!=null&&typeof i!="number"&&(s=i.exit,o=i.enter,a=i.appear!==void 0?i.appear:o),{exit:s,enter:o,appear:a}},n.updateStatus=function(i,s){if(i===void 0&&(i=!1),s!==null)if(this.cancelNextCallback(),s===dt){if(this.props.unmountOnExit||this.props.mountOnEnter){var o=this.props.nodeRef?this.props.nodeRef.current:Ft.findDOMNode(this);o&&cn(o)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===pt&&this.setState({status:Mt})},n.performEnter=function(i){var s=this,o=this.props.enter,a=this.context?this.context.isMounting:i,l=this.props.nodeRef?[a]:[Ft.findDOMNode(this),a],u=l[0],c=l[1],h=this.getTimeouts(),f=a?h.appear:h.enter;if(!i&&!o||ze.disabled){this.safeSetState({status:yt},function(){s.props.onEntered(u)});return}this.props.onEnter(u,c),this.safeSetState({status:dt},function(){s.props.onEntering(u,c),s.onTransitionEnd(f,function(){s.safeSetState({status:yt},function(){s.props.onEntered(u,c)})})})},n.performExit=function(){var i=this,s=this.props.exit,o=this.getTimeouts(),a=this.props.nodeRef?void 0:Ft.findDOMNode(this);if(!s||ze.disabled){this.safeSetState({status:pt},function(){i.props.onExited(a)});return}this.props.onExit(a),this.safeSetState({status:pe},function(){i.props.onExiting(a),i.onTransitionEnd(o.exit,function(){i.safeSetState({status:pt},function(){i.props.onExited(a)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,s){s=this.setNextCallback(s),this.setState(i,s)},n.setNextCallback=function(i){var s=this,o=!0;return this.nextCallback=function(a){o&&(o=!1,s.nextCallback=null,i(a))},this.nextCallback.cancel=function(){o=!1},this.nextCallback},n.onTransitionEnd=function(i,s){this.setNextCallback(s);var o=this.props.nodeRef?this.props.nodeRef.current:Ft.findDOMNode(this),a=i==null&&!this.props.addEndListener;if(!o||a){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[o,this.nextCallback],u=l[0],c=l[1];this.props.addEndListener(u,c)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===Mt)return null;var s=this.props,o=s.children;s.in,s.mountOnEnter,s.unmountOnExit,s.appear,s.enter,s.exit,s.timeout,s.addEndListener,s.onEnter,s.onEntering,s.onEntered,s.onExit,s.onExiting,s.onExited,s.nodeRef;var a=an(s,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return gt.createElement(ln.Provider,{value:null},typeof o=="function"?o(i,a):gt.cloneElement(gt.Children.only(o),a))},e}(gt.Component);ct.contextType=ln;ct.propTypes={};function mt(){}ct.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:mt,onEntering:mt,onEntered:mt,onExit:mt,onExiting:mt,onExited:mt};ct.UNMOUNTED=Mt;ct.EXITED=pt;ct.ENTERING=dt;ct.ENTERED=yt;ct.EXITING=pe;const Kn=ct;function Qn(t,e){return t.classList?!!e&&t.classList.contains(e):(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")!==-1}function Jn(t,e){t.classList?t.classList.add(e):Qn(t,e)||(typeof t.className=="string"?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))}function Oe(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function Zn(t,e){t.classList?t.classList.remove(e):typeof t.className=="string"?t.className=Oe(t.className,e):t.setAttribute("class",Oe(t.className&&t.className.baseVal||"",e))}const tr="_container_1a2bs_1",er="_img_1a2bs_7",nr="_node_1a2bs_12",rr="_link_1a2bs_17",ir="_linkLabel_1a2bs_22",sr="_links_1a2bs_34",or="_nodes_1a2bs_38",ar="_EndDevice_1a2bs_42",ur="_Coordinator_1a2bs_49",lr="_Router_1a2bs_57",cr="_BrokenLink_1a2bs_74",fr="_Coordinator2Router_1a2bs_78",hr="_Router2Coordinator_1a2bs_79",pr="_Router2Router_1a2bs_83",dr="_Coordinator2EndDevice_1a2bs_87",gr="_EndDevice2Coordinator_1a2bs_88",vr="_Router2EndDevice_1a2bs_92",xr="_EndDevice2Router_1a2bs_93",_r="_foreignObject_1a2bs_99",mr="_offline_1a2bs_105",yr="_controls_1a2bs_110",O={container:tr,img:er,node:nr,link:rr,linkLabel:ir,links:sr,nodes:or,EndDevice:ar,Coordinator:ur,Router:lr,BrokenLink:cr,Coordinator2Router:fr,Router2Coordinator:hr,Router2Router:pr,Coordinator2EndDevice:dr,EndDevice2Coordinator:gr,Router2EndDevice:vr,EndDevice2Router:xr,foreignObject:_r,offline:mr,controls:yr};var de="http://www.w3.org/1999/xhtml";const Le={svg:"http://www.w3.org/2000/svg",xhtml:de,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function re(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Le.hasOwnProperty(e)?{space:Le[e],local:t}:t}function wr(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===de&&e.documentElement.namespaceURI===de?e.createElement(t):e.createElementNS(n,t)}}function br(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function fn(t){var e=re(t);return(e.local?br:wr)(e)}function Nr(){}function be(t){return t==null?Nr:function(){return this.querySelector(t)}}function Er(t){typeof t!="function"&&(t=be(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var s=e[i],o=s.length,a=r[i]=new Array(o),l,u,c=0;c<o;++c)(l=s[c])&&(u=t.call(l,l.__data__,c,s))&&("__data__"in l&&(u.__data__=l.__data__),a[c]=u);return new W(r,this._parents)}function kr(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Cr(){return[]}function hn(t){return t==null?Cr:function(){return this.querySelectorAll(t)}}function Ar(t){return function(){return kr(t.apply(this,arguments))}}function $r(t){typeof t=="function"?t=Ar(t):t=hn(t);for(var e=this._groups,n=e.length,r=[],i=[],s=0;s<n;++s)for(var o=e[s],a=o.length,l,u=0;u<a;++u)(l=o[u])&&(r.push(t.call(l,l.__data__,u,o)),i.push(l));return new W(r,i)}function pn(t){return function(){return this.matches(t)}}function dn(t){return function(e){return e.matches(t)}}var Mr=Array.prototype.find;function Sr(t){return function(){return Mr.call(this.children,t)}}function Tr(){return this.firstElementChild}function Rr(t){return this.select(t==null?Tr:Sr(typeof t=="function"?t:dn(t)))}var Dr=Array.prototype.filter;function Ir(){return Array.from(this.children)}function zr(t){return function(){return Dr.call(this.children,t)}}function Or(t){return this.selectAll(t==null?Ir:zr(typeof t=="function"?t:dn(t)))}function Lr(t){typeof t!="function"&&(t=pn(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var s=e[i],o=s.length,a=r[i]=[],l,u=0;u<o;++u)(l=s[u])&&t.call(l,l.__data__,u,s)&&a.push(l);return new W(r,this._parents)}function gn(t){return new Array(t.length)}function Pr(){return new W(this._enter||this._groups.map(gn),this._parents)}function Kt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Kt.prototype={constructor:Kt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Xr(t){return function(){return t}}function Fr(t,e,n,r,i,s){for(var o=0,a,l=e.length,u=s.length;o<u;++o)(a=e[o])?(a.__data__=s[o],r[o]=a):n[o]=new Kt(t,s[o]);for(;o<l;++o)(a=e[o])&&(i[o]=a)}function qr(t,e,n,r,i,s,o){var a,l,u=new Map,c=e.length,h=s.length,f=new Array(c),x;for(a=0;a<c;++a)(l=e[a])&&(f[a]=x=o.call(l,l.__data__,a,e)+"",u.has(x)?i[a]=l:u.set(x,l));for(a=0;a<h;++a)x=o.call(t,s[a],a,s)+"",(l=u.get(x))?(r[a]=l,l.__data__=s[a],u.delete(x)):n[a]=new Kt(t,s[a]);for(a=0;a<c;++a)(l=e[a])&&u.get(f[a])===l&&(i[a]=l)}function Br(t){return t.__data__}function Hr(t,e){if(!arguments.length)return Array.from(this,Br);var n=e?qr:Fr,r=this._parents,i=this._groups;typeof t!="function"&&(t=Xr(t));for(var s=i.length,o=new Array(s),a=new Array(s),l=new Array(s),u=0;u<s;++u){var c=r[u],h=i[u],f=h.length,x=Yr(t.call(c,c&&c.__data__,u,r)),b=x.length,_=a[u]=new Array(b),g=o[u]=new Array(b),v=l[u]=new Array(f);n(c,h,_,g,v,x,e);for(var E=0,m=0,d,w;E<b;++E)if(d=_[E]){for(E>=m&&(m=E+1);!(w=g[m])&&++m<b;);d._next=w||null}}return o=new W(o,r),o._enter=a,o._exit=l,o}function Yr(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Vr(){return new W(this._exit||this._groups.map(gn),this._parents)}function jr(t,e,n){var r=this.enter(),i=this,s=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?s.remove():n(s),r&&i?r.merge(i).order():i}function Ur(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,s=r.length,o=Math.min(i,s),a=new Array(i),l=0;l<o;++l)for(var u=n[l],c=r[l],h=u.length,f=a[l]=new Array(h),x,b=0;b<h;++b)(x=u[b]||c[b])&&(f[b]=x);for(;l<i;++l)a[l]=n[l];return new W(a,this._parents)}function Gr(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,s=r[i],o;--i>=0;)(o=r[i])&&(s&&o.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(o,s),s=o);return this}function Wr(t){t||(t=Kr);function e(h,f){return h&&f?t(h.__data__,f.__data__):!h-!f}for(var n=this._groups,r=n.length,i=new Array(r),s=0;s<r;++s){for(var o=n[s],a=o.length,l=i[s]=new Array(a),u,c=0;c<a;++c)(u=o[c])&&(l[c]=u);l.sort(e)}return new W(i,this._parents).order()}function Kr(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Qr(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Jr(){return Array.from(this)}function Zr(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,s=r.length;i<s;++i){var o=r[i];if(o)return o}return null}function ti(){let t=0;for(const e of this)++t;return t}function ei(){return!this.node()}function ni(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],s=0,o=i.length,a;s<o;++s)(a=i[s])&&t.call(a,a.__data__,s,i);return this}function ri(t){return function(){this.removeAttribute(t)}}function ii(t){return function(){this.removeAttributeNS(t.space,t.local)}}function si(t,e){return function(){this.setAttribute(t,e)}}function oi(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function ai(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function ui(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function li(t,e){var n=re(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?ii:ri:typeof e=="function"?n.local?ui:ai:n.local?oi:si)(n,e))}function vn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ci(t){return function(){this.style.removeProperty(t)}}function fi(t,e,n){return function(){this.style.setProperty(t,e,n)}}function hi(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function pi(t,e,n){return arguments.length>1?this.each((e==null?ci:typeof e=="function"?hi:fi)(t,e,n??"")):Et(this.node(),t)}function Et(t,e){return t.style.getPropertyValue(e)||vn(t).getComputedStyle(t,null).getPropertyValue(e)}function di(t){return function(){delete this[t]}}function gi(t,e){return function(){this[t]=e}}function vi(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function xi(t,e){return arguments.length>1?this.each((e==null?di:typeof e=="function"?vi:gi)(t,e)):this.node()[t]}function xn(t){return t.trim().split(/^|\s+/)}function Ne(t){return t.classList||new _n(t)}function _n(t){this._node=t,this._names=xn(t.getAttribute("class")||"")}_n.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function mn(t,e){for(var n=Ne(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function yn(t,e){for(var n=Ne(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function _i(t){return function(){mn(this,t)}}function mi(t){return function(){yn(this,t)}}function yi(t,e){return function(){(e.apply(this,arguments)?mn:yn)(this,t)}}function wi(t,e){var n=xn(t+"");if(arguments.length<2){for(var r=Ne(this.node()),i=-1,s=n.length;++i<s;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?yi:e?_i:mi)(n,e))}function bi(){this.textContent=""}function Ni(t){return function(){this.textContent=t}}function Ei(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function ki(t){return arguments.length?this.each(t==null?bi:(typeof t=="function"?Ei:Ni)(t)):this.node().textContent}function Ci(){this.innerHTML=""}function Ai(t){return function(){this.innerHTML=t}}function $i(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function Mi(t){return arguments.length?this.each(t==null?Ci:(typeof t=="function"?$i:Ai)(t)):this.node().innerHTML}function Si(){this.nextSibling&&this.parentNode.appendChild(this)}function Ti(){return this.each(Si)}function Ri(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Di(){return this.each(Ri)}function Ii(t){var e=typeof t=="function"?t:fn(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function zi(){return null}function Oi(t,e){var n=typeof t=="function"?t:fn(t),r=e==null?zi:typeof e=="function"?e:be(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Li(){var t=this.parentNode;t&&t.removeChild(this)}function Pi(){return this.each(Li)}function Xi(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Fi(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function qi(t){return this.select(t?Fi:Xi)}function Bi(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Hi(t){return function(e){t.call(this,e,this.__data__)}}function Yi(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Vi(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,s;n<i;++n)s=e[n],(!t.type||s.type===t.type)&&s.name===t.name?this.removeEventListener(s.type,s.listener,s.options):e[++r]=s;++r?e.length=r:delete this.__on}}}function ji(t,e,n){return function(){var r=this.__on,i,s=Hi(e);if(r){for(var o=0,a=r.length;o<a;++o)if((i=r[o]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=s,i.options=n),i.value=e;return}}this.addEventListener(t.type,s,n),i={type:t.type,name:t.name,value:e,listener:s,options:n},r?r.push(i):this.__on=[i]}}function Ui(t,e,n){var r=Yi(t+""),i,s=r.length,o;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,u=a.length,c;l<u;++l)for(i=0,c=a[l];i<s;++i)if((o=r[i]).type===c.type&&o.name===c.name)return c.value}return}for(a=e?ji:Vi,i=0;i<s;++i)this.each(a(r[i],e,n));return this}function wn(t,e,n){var r=vn(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Gi(t,e){return function(){return wn(this,t,e)}}function Wi(t,e){return function(){return wn(this,t,e.apply(this,arguments))}}function Ki(t,e){return this.each((typeof e=="function"?Wi:Gi)(t,e))}function*Qi(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,s=r.length,o;i<s;++i)(o=r[i])&&(yield o)}var bn=[null];function W(t,e){this._groups=t,this._parents=e}function Lt(){return new W([[document.documentElement]],bn)}function Ji(){return this}W.prototype=Lt.prototype={constructor:W,select:Er,selectAll:$r,selectChild:Rr,selectChildren:Or,filter:Lr,data:Hr,enter:Pr,exit:Vr,join:jr,merge:Ur,selection:Ji,order:Gr,sort:Wr,call:Qr,nodes:Jr,node:Zr,size:ti,empty:ei,each:ni,attr:li,style:pi,property:xi,classed:wi,text:ki,html:Mi,raise:Ti,lower:Di,append:Ii,insert:Oi,remove:Pi,clone:qi,datum:Bi,on:Ui,dispatch:Ki,[Symbol.iterator]:Qi};function V(t){return typeof t=="string"?new W([[document.querySelector(t)]],[document.documentElement]):new W([[t]],bn)}function Zi(t){let e;for(;e=t.sourceEvent;)t=e;return t}function at(t,e){if(t=Zi(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}const ts=t=>{const{link:{linkType:e},id:n,...r}=t;return S.jsx("path",{id:n,className:wt(O.link,O[e]),strokeWidth:1,fill:"transparent",...r})},es=t=>{const{link:e}=t;return S.jsx("text",{className:O.linkLabel,children:e.linkqualities.join("/")})},ns=t=>{const{links:e}=t,n=et.useRef();return et.useLayoutEffect(()=>{V(n.current).selectAll(`.${O.link}`).data(e),V(n.current).selectAll(`.${O.linkLabel}`).data(e)},[e.length]),S.jsx("g",{ref:n,className:O.links,children:e.map(r=>{const i=`${r.source.ieeeAddr}-${r.target.ieeeAddr}-${r.linkType}`;return S.jsxs(et.Fragment,{children:[S.jsx(ts,{id:`edgepath${i}`,link:r}),S.jsx(es,{xlinkHref:`#edgepath${i}`,link:r})]},`fragment${i}`)})})},rs=ns;var is={value:()=>{}};function Pt(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new jt(n)}function jt(t){this._=t}function ss(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}jt.prototype=Pt.prototype={constructor:jt,on:function(t,e){var n=this._,r=ss(t+"",n),i,s=-1,o=r.length;if(arguments.length<2){for(;++s<o;)if((i=(t=r[s]).type)&&(i=os(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++s<o;)if(i=(t=r[s]).type)n[i]=Pe(n[i],t.name,e);else if(e==null)for(i in n)n[i]=Pe(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new jt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,s;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(s=this._[t],r=0,i=s.length;r<i;++r)s[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,s=r.length;i<s;++i)r[i].value.apply(e,n)}};function os(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function Pe(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=is,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}const as={passive:!1},Rt={capture:!0,passive:!1};function ae(t){t.stopImmediatePropagation()}function bt(t){t.preventDefault(),t.stopImmediatePropagation()}function Nn(t){var e=t.document.documentElement,n=V(t).on("dragstart.drag",bt,Rt);"onselectstart"in e?n.on("selectstart.drag",bt,Rt):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function En(t,e){var n=t.document.documentElement,r=V(t).on("dragstart.drag",null);e&&(r.on("click.drag",bt,Rt),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const qt=t=>()=>t;function ge(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:s,x:o,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}ge.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function us(t){return!t.ctrlKey&&!t.button}function ls(){return this.parentNode}function cs(t,e){return e??{x:t.x,y:t.y}}function fs(){return navigator.maxTouchPoints||"ontouchstart"in this}function hs(){var t=us,e=ls,n=cs,r=fs,i={},s=Pt("start","drag","end"),o=0,a,l,u,c,h=0;function f(d){d.on("mousedown.drag",x).filter(r).on("touchstart.drag",g).on("touchmove.drag",v,as).on("touchend.drag touchcancel.drag",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(d,w){if(!(c||!t.call(this,d,w))){var M=m(this,e.call(this,d,w),d,w,"mouse");M&&(V(d.view).on("mousemove.drag",b,Rt).on("mouseup.drag",_,Rt),Nn(d.view),ae(d),u=!1,a=d.clientX,l=d.clientY,M("start",d))}}function b(d){if(bt(d),!u){var w=d.clientX-a,M=d.clientY-l;u=w*w+M*M>h}i.mouse("drag",d)}function _(d){V(d.view).on("mousemove.drag mouseup.drag",null),En(d.view,u),bt(d),i.mouse("end",d)}function g(d,w){if(t.call(this,d,w)){var M=d.changedTouches,N=e.call(this,d,w),k=M.length,I,C;for(I=0;I<k;++I)(C=m(this,N,d,w,M[I].identifier,M[I]))&&(ae(d),C("start",d,M[I]))}}function v(d){var w=d.changedTouches,M=w.length,N,k;for(N=0;N<M;++N)(k=i[w[N].identifier])&&(bt(d),k("drag",d,w[N]))}function E(d){var w=d.changedTouches,M=w.length,N,k;for(c&&clearTimeout(c),c=setTimeout(function(){c=null},500),N=0;N<M;++N)(k=i[w[N].identifier])&&(ae(d),k("end",d,w[N]))}function m(d,w,M,N,k,I){var C=s.copy(),L=at(I||M,w),U,Y,p;if((p=n.call(d,new ge("beforestart",{sourceEvent:M,target:f,identifier:k,active:o,x:L[0],y:L[1],dx:0,dy:0,dispatch:C}),N))!=null)return U=p.x-L[0]||0,Y=p.y-L[1]||0,function A(y,$,T){var R=L,D;switch(y){case"start":i[k]=A,D=o++;break;case"end":delete i[k],--o;case"drag":L=at(T||$,w),D=o;break}C.call(y,d,new ge(y,{sourceEvent:$,subject:p,target:f,identifier:k,active:D,x:L[0]+U,y:L[1]+Y,dx:L[0]-R[0],dy:L[1]-R[1],dispatch:C}),N)}}return f.filter=function(d){return arguments.length?(t=typeof d=="function"?d:qt(!!d),f):t},f.container=function(d){return arguments.length?(e=typeof d=="function"?d:qt(d),f):e},f.subject=function(d){return arguments.length?(n=typeof d=="function"?d:qt(d),f):n},f.touchable=function(d){return arguments.length?(r=typeof d=="function"?d:qt(!!d),f):r},f.on=function(){var d=s.on.apply(s,arguments);return d===s?f:d},f.clickDistance=function(d){return arguments.length?(h=(d=+d)*d,f):Math.sqrt(h)},f}var ps=function(e,n){return e&&n&&n.split(" ").forEach(function(r){return Jn(e,r)})},ue=function(e,n){return e&&n&&n.split(" ").forEach(function(r){return Zn(e,r)})},Ee=function(t){un(e,t);function e(){for(var r,i=arguments.length,s=new Array(i),o=0;o<i;o++)s[o]=arguments[o];return r=t.call.apply(t,[this].concat(s))||this,r.appliedClasses={appear:{},enter:{},exit:{}},r.onEnter=function(a,l){var u=r.resolveArguments(a,l),c=u[0],h=u[1];r.removeClasses(c,"exit"),r.addClass(c,h?"appear":"enter","base"),r.props.onEnter&&r.props.onEnter(a,l)},r.onEntering=function(a,l){var u=r.resolveArguments(a,l),c=u[0],h=u[1],f=h?"appear":"enter";r.addClass(c,f,"active"),r.props.onEntering&&r.props.onEntering(a,l)},r.onEntered=function(a,l){var u=r.resolveArguments(a,l),c=u[0],h=u[1],f=h?"appear":"enter";r.removeClasses(c,f),r.addClass(c,f,"done"),r.props.onEntered&&r.props.onEntered(a,l)},r.onExit=function(a){var l=r.resolveArguments(a),u=l[0];r.removeClasses(u,"appear"),r.removeClasses(u,"enter"),r.addClass(u,"exit","base"),r.props.onExit&&r.props.onExit(a)},r.onExiting=function(a){var l=r.resolveArguments(a),u=l[0];r.addClass(u,"exit","active"),r.props.onExiting&&r.props.onExiting(a)},r.onExited=function(a){var l=r.resolveArguments(a),u=l[0];r.removeClasses(u,"exit"),r.addClass(u,"exit","done"),r.props.onExited&&r.props.onExited(a)},r.resolveArguments=function(a,l){return r.props.nodeRef?[r.props.nodeRef.current,a]:[a,l]},r.getClassNames=function(a){var l=r.props.classNames,u=typeof l=="string",c=u&&l?l+"-":"",h=u?""+c+a:l[a],f=u?h+"-active":l[a+"Active"],x=u?h+"-done":l[a+"Done"];return{baseClassName:h,activeClassName:f,doneClassName:x}},r}var n=e.prototype;return n.addClass=function(i,s,o){var a=this.getClassNames(s)[o+"ClassName"],l=this.getClassNames("enter"),u=l.doneClassName;s==="appear"&&o==="done"&&u&&(a+=" "+u),o==="active"&&i&&cn(i),a&&(this.appliedClasses[s][o]=a,ps(i,a))},n.removeClasses=function(i,s){var o=this.appliedClasses[s],a=o.base,l=o.active,u=o.done;this.appliedClasses[s]={},a&&ue(i,a),l&&ue(i,l),u&&ue(i,u)},n.render=function(){var i=this.props;i.classNames;var s=an(i,["classNames"]);return gt.createElement(Kn,Gn({},s,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},e}(gt.Component);Ee.defaultProps={classNames:""};Ee.propTypes={};const ds=Ee,kn=(t,e,n)=>{const s=Math.PI/t,o=60,a=t*2;let l="";for(let u=0;u<a;u++){const h=u%2==0?n:e,f=15+Math.cos(u*s+o)*h,x=15+Math.sin(u*s+o)*h;l+=`${f}, ${x} `}return l};class gs extends et.Component{constructor(){super(...arguments),this.state={hasBeenUpdated:!1},this.ref=et.createRef(),this.onMouseOut=()=>{const{node:e,onMouseOut:n}=this.props;this.ref&&this.ref.current&&n&&n(e,this.ref.current)},this.onMouseOver=()=>{const{node:e,onMouseOver:n}=this.props;this.ref&&this.ref.current&&n&&n(e,this.ref.current)},this.onDblClick=()=>{const{node:e,onDblClick:n}=this.props;this.ref&&this.ref.current&&n&&n(e,this.ref.current)}}componentDidUpdate(e){const{deviceState:n}=e,{deviceState:r}=this.props,i=Un(n,r),{hasBeenUpdated:s}=this.state;i?s&&this.setState({hasBeenUpdated:!1}):this.setState({hasBeenUpdated:!0})}componentDidMount(){const{current:e}=this.ref,{node:n}=this.props;V(e).data([n])}render(){const{hasBeenUpdated:e}=this.state,{node:n,deviceState:r,device:i,availability:s}=this.props,{onMouseOver:o,onMouseOut:a,onDblClick:l}=this,u=n.type,c=wt(O.node,O[u],{[O.offline]:s==="offline"});return S.jsxs("g",{className:c,ref:this.ref,onMouseOver:o,onMouseOut:a,onDoubleClick:l,children:[n.type==="Coordinator"?S.jsxs(S.Fragment,{children:[S.jsx("circle",{cx:15,cy:16,r:24,fill:"#fff",stroke:"blue",strokeWidth:1}),S.jsx("polygon",{stroke:"blue",strokeWidth:1,points:kn(5,5,14)})]}):S.jsxs(S.Fragment,{children:[S.jsx(ds,{in:e,timeout:200,classNames:"stroke-blink",children:S.jsx("circle",{"data-foo":r==null?void 0:r.last_seen,cx:16,cy:17,r:24,fill:"#fff",stroke:"blue",strokeWidth:1})}),S.jsx(jn,{type:"svg",width:32,disabled:!1,height:32,device:i,className:`${O.img}`})]}),S.jsx("text",{x:45,y:25,children:n.friendlyName})]})}}class vs extends et.Component{constructor(){super(...arguments),this.state={toggle:!1}}updateDrag(){const{simulation:e,root:n}=this.props,r=hs().on("start",(i,s)=>{i.active||e.alphaTarget(.3).restart(),s.fx=s.x,s.fy=s.y}).on("drag",({x:i,y:s},o)=>{o.fx=i,o.fy=s}).on("end",(i,s)=>{i.active||e.alphaTarget(0)});V(n).selectAll(`.${O.node}`).call(r)}componentDidMount(){this.updateDrag()}componentDidUpdate(){this.updateDrag()}render(){const{nodes:e,onMouseOut:n,onMouseOver:r,deviceStates:i,devices:s,availability:o}=this.props;return S.jsx("g",{className:O.nodes,children:e.map(a=>S.jsx(gs,{onMouseOut:n,onMouseOver:r,node:a,deviceState:i[a.friendlyName],device:s[a.ieeeAddr],availability:o[a.friendlyName]},a.ieeeAddr))})}}function xs(t,e){var n,r=1;t==null&&(t=0),e==null&&(e=0);function i(){var s,o=n.length,a,l=0,u=0;for(s=0;s<o;++s)a=n[s],l+=a.x,u+=a.y;for(l=(l/o-t)*r,u=(u/o-e)*r,s=0;s<o;++s)a=n[s],a.x-=l,a.y-=u}return i.initialize=function(s){n=s},i.x=function(s){return arguments.length?(t=+s,i):t},i.y=function(s){return arguments.length?(e=+s,i):e},i.strength=function(s){return arguments.length?(r=+s,i):r},i}function _s(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return Cn(this.cover(e,n),e,n,t)}function Cn(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,s=t._root,o={data:r},a=t._x0,l=t._y0,u=t._x1,c=t._y1,h,f,x,b,_,g,v,E;if(!s)return t._root=o,t;for(;s.length;)if((_=e>=(h=(a+u)/2))?a=h:u=h,(g=n>=(f=(l+c)/2))?l=f:c=f,i=s,!(s=s[v=g<<1|_]))return i[v]=o,t;if(x=+t._x.call(null,s.data),b=+t._y.call(null,s.data),e===x&&n===b)return o.next=s,i?i[v]=o:t._root=o,t;do i=i?i[v]=new Array(4):t._root=new Array(4),(_=e>=(h=(a+u)/2))?a=h:u=h,(g=n>=(f=(l+c)/2))?l=f:c=f;while((v=g<<1|_)===(E=(b>=f)<<1|x>=h));return i[E]=s,i[v]=o,t}function ms(t){var e,n,r=t.length,i,s,o=new Array(r),a=new Array(r),l=1/0,u=1/0,c=-1/0,h=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(s=+this._y.call(null,e))||(o[n]=i,a[n]=s,i<l&&(l=i),i>c&&(c=i),s<u&&(u=s),s>h&&(h=s));if(l>c||u>h)return this;for(this.cover(l,u).cover(c,h),n=0;n<r;++n)Cn(this,o[n],a[n],t[n]);return this}function ys(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,s=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,s=(r=Math.floor(e))+1;else{for(var o=i-n||1,a=this._root,l,u;n>t||t>=i||r>e||e>=s;)switch(u=(e<r)<<1|t<n,l=new Array(4),l[u]=a,a=l,o*=2,u){case 0:i=n+o,s=r+o;break;case 1:n=i-o,s=r+o;break;case 2:i=n+o,r=s-o;break;case 3:n=i-o,r=s-o;break}this._root&&this._root.length&&(this._root=a)}return this._x0=n,this._y0=r,this._x1=i,this._y1=s,this}function ws(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function bs(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function F(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function Ns(t,e,n){var r,i=this._x0,s=this._y0,o,a,l,u,c=this._x1,h=this._y1,f=[],x=this._root,b,_;for(x&&f.push(new F(x,i,s,c,h)),n==null?n=1/0:(i=t-n,s=e-n,c=t+n,h=e+n,n*=n);b=f.pop();)if(!(!(x=b.node)||(o=b.x0)>c||(a=b.y0)>h||(l=b.x1)<i||(u=b.y1)<s))if(x.length){var g=(o+l)/2,v=(a+u)/2;f.push(new F(x[3],g,v,l,u),new F(x[2],o,v,g,u),new F(x[1],g,a,l,v),new F(x[0],o,a,g,v)),(_=(e>=v)<<1|t>=g)&&(b=f[f.length-1],f[f.length-1]=f[f.length-1-_],f[f.length-1-_]=b)}else{var E=t-+this._x.call(null,x.data),m=e-+this._y.call(null,x.data),d=E*E+m*m;if(d<n){var w=Math.sqrt(n=d);i=t-w,s=e-w,c=t+w,h=e+w,r=x.data}}return r}function Es(t){if(isNaN(c=+this._x.call(null,t))||isNaN(h=+this._y.call(null,t)))return this;var e,n=this._root,r,i,s,o=this._x0,a=this._y0,l=this._x1,u=this._y1,c,h,f,x,b,_,g,v;if(!n)return this;if(n.length)for(;;){if((b=c>=(f=(o+l)/2))?o=f:l=f,(_=h>=(x=(a+u)/2))?a=x:u=x,e=n,!(n=n[g=_<<1|b]))return this;if(!n.length)break;(e[g+1&3]||e[g+2&3]||e[g+3&3])&&(r=e,v=g)}for(;n.data!==t;)if(i=n,!(n=n.next))return this;return(s=n.next)&&delete n.next,i?(s?i.next=s:delete i.next,this):e?(s?e[g]=s:delete e[g],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(r?r[v]=n:this._root=n),this):(this._root=s,this)}function ks(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function Cs(){return this._root}function As(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function $s(t){var e=[],n,r=this._root,i,s,o,a,l;for(r&&e.push(new F(r,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(r=n.node,s=n.x0,o=n.y0,a=n.x1,l=n.y1)&&r.length){var u=(s+a)/2,c=(o+l)/2;(i=r[3])&&e.push(new F(i,u,c,a,l)),(i=r[2])&&e.push(new F(i,s,c,u,l)),(i=r[1])&&e.push(new F(i,u,o,a,c)),(i=r[0])&&e.push(new F(i,s,o,u,c))}return this}function Ms(t){var e=[],n=[],r;for(this._root&&e.push(new F(this._root,this._x0,this._y0,this._x1,this._y1));r=e.pop();){var i=r.node;if(i.length){var s,o=r.x0,a=r.y0,l=r.x1,u=r.y1,c=(o+l)/2,h=(a+u)/2;(s=i[0])&&e.push(new F(s,o,a,c,h)),(s=i[1])&&e.push(new F(s,c,a,l,h)),(s=i[2])&&e.push(new F(s,o,h,c,u)),(s=i[3])&&e.push(new F(s,c,h,l,u))}n.push(r)}for(;r=n.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function Ss(t){return t[0]}function Ts(t){return arguments.length?(this._x=t,this):this._x}function Rs(t){return t[1]}function Ds(t){return arguments.length?(this._y=t,this):this._y}function An(t,e,n){var r=new ke(e??Ss,n??Rs,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function ke(t,e,n,r,i,s){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=s,this._root=void 0}function Xe(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var B=An.prototype=ke.prototype;B.copy=function(){var t=new ke(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,r;if(!e)return t;if(!e.length)return t._root=Xe(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var i=0;i<4;++i)(r=e.source[i])&&(r.length?n.push({source:r,target:e.target[i]=new Array(4)}):e.target[i]=Xe(r));return t};B.add=_s;B.addAll=ms;B.cover=ys;B.data=ws;B.extent=bs;B.find=Ns;B.remove=Es;B.removeAll=ks;B.root=Cs;B.size=As;B.visit=$s;B.visitAfter=Ms;B.x=Ts;B.y=Ds;function G(t){return function(){return t}}function Qt(t){return(t()-.5)*1e-6}function Is(t){return t.x+t.vx}function zs(t){return t.y+t.vy}function Os(t){var e,n,r,i=1,s=1;typeof t!="function"&&(t=G(t==null?1:+t));function o(){for(var u,c=e.length,h,f,x,b,_,g,v=0;v<s;++v)for(h=An(e,Is,zs).visitAfter(a),u=0;u<c;++u)f=e[u],_=n[f.index],g=_*_,x=f.x+f.vx,b=f.y+f.vy,h.visit(E);function E(m,d,w,M,N){var k=m.data,I=m.r,C=_+I;if(k){if(k.index>f.index){var L=x-k.x-k.vx,U=b-k.y-k.vy,Y=L*L+U*U;Y<C*C&&(L===0&&(L=Qt(r),Y+=L*L),U===0&&(U=Qt(r),Y+=U*U),Y=(C-(Y=Math.sqrt(Y)))/Y*i,f.vx+=(L*=Y)*(C=(I*=I)/(g+I)),f.vy+=(U*=Y)*C,k.vx-=L*(C=1-C),k.vy-=U*C)}return}return d>x+C||M<x-C||w>b+C||N<b-C}}function a(u){if(u.data)return u.r=n[u.data.index];for(var c=u.r=0;c<4;++c)u[c]&&u[c].r>u.r&&(u.r=u[c].r)}function l(){if(e){var u,c=e.length,h;for(n=new Array(c),u=0;u<c;++u)h=e[u],n[h.index]=+t(h,u,e)}}return o.initialize=function(u,c){e=u,r=c,l()},o.iterations=function(u){return arguments.length?(s=+u,o):s},o.strength=function(u){return arguments.length?(i=+u,o):i},o.radius=function(u){return arguments.length?(t=typeof u=="function"?u:G(+u),l(),o):t},o}function Ls(t){return t.index}function Fe(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function Ps(t){var e=Ls,n=h,r,i=G(30),s,o,a,l,u,c=1;t==null&&(t=[]);function h(g){return 1/Math.min(a[g.source.index],a[g.target.index])}function f(g){for(var v=0,E=t.length;v<c;++v)for(var m=0,d,w,M,N,k,I,C;m<E;++m)d=t[m],w=d.source,M=d.target,N=M.x+M.vx-w.x-w.vx||Qt(u),k=M.y+M.vy-w.y-w.vy||Qt(u),I=Math.sqrt(N*N+k*k),I=(I-s[m])/I*g*r[m],N*=I,k*=I,M.vx-=N*(C=l[m]),M.vy-=k*C,w.vx+=N*(C=1-C),w.vy+=k*C}function x(){if(o){var g,v=o.length,E=t.length,m=new Map(o.map((w,M)=>[e(w,M,o),w])),d;for(g=0,a=new Array(v);g<E;++g)d=t[g],d.index=g,typeof d.source!="object"&&(d.source=Fe(m,d.source)),typeof d.target!="object"&&(d.target=Fe(m,d.target)),a[d.source.index]=(a[d.source.index]||0)+1,a[d.target.index]=(a[d.target.index]||0)+1;for(g=0,l=new Array(E);g<E;++g)d=t[g],l[g]=a[d.source.index]/(a[d.source.index]+a[d.target.index]);r=new Array(E),b(),s=new Array(E),_()}}function b(){if(o)for(var g=0,v=t.length;g<v;++g)r[g]=+n(t[g],g,t)}function _(){if(o)for(var g=0,v=t.length;g<v;++g)s[g]=+i(t[g],g,t)}return f.initialize=function(g,v){o=g,u=v,x()},f.links=function(g){return arguments.length?(t=g,x(),f):t},f.id=function(g){return arguments.length?(e=g,f):e},f.iterations=function(g){return arguments.length?(c=+g,f):c},f.strength=function(g){return arguments.length?(n=typeof g=="function"?g:G(+g),b(),f):n},f.distance=function(g){return arguments.length?(i=typeof g=="function"?g:G(+g),_(),f):i},f}var kt=0,St=0,Ct=0,$n=1e3,Jt,Tt,Zt=0,_t=0,ie=0,Dt=typeof performance=="object"&&performance.now?performance:Date,Mn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ce(){return _t||(Mn(Xs),_t=Dt.now()+ie)}function Xs(){_t=0}function te(){this._call=this._time=this._next=null}te.prototype=Ae.prototype={constructor:te,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?Ce():+n)+(e==null?0:+e),!this._next&&Tt!==this&&(Tt?Tt._next=this:Jt=this,Tt=this),this._call=t,this._time=n,ve()},stop:function(){this._call&&(this._call=null,this._time=1/0,ve())}};function Ae(t,e,n){var r=new te;return r.restart(t,e,n),r}function Fs(){Ce(),++kt;for(var t=Jt,e;t;)(e=_t-t._time)>=0&&t._call.call(void 0,e),t=t._next;--kt}function qe(){_t=(Zt=Dt.now())+ie,kt=St=0;try{Fs()}finally{kt=0,Bs(),_t=0}}function qs(){var t=Dt.now(),e=t-Zt;e>$n&&(ie-=e,Zt=t)}function Bs(){for(var t,e=Jt,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Jt=n);Tt=t,ve(r)}function ve(t){if(!kt){St&&(St=clearTimeout(St));var e=t-_t;e>24?(t<1/0&&(St=setTimeout(qe,t-Dt.now()-ie)),Ct&&(Ct=clearInterval(Ct))):(Ct||(Zt=Dt.now(),Ct=setInterval(qs,$n)),kt=1,Mn(qe))}}function Be(t,e,n){var r=new te;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}const Hs=1664525,Ys=1013904223,He=4294967296;function Vs(){let t=1;return()=>(t=(Hs*t+Ys)%He)/He}var js=10,Us=Math.PI*(3-Math.sqrt(5));function Gs(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),s=0,o=.6,a=new Map,l=Ae(h),u=Pt("tick","end"),c=Vs();t==null&&(t=[]);function h(){f(),u.call("tick",e),n<r&&(l.stop(),u.call("end",e))}function f(_){var g,v=t.length,E;_===void 0&&(_=1);for(var m=0;m<_;++m)for(n+=(s-n)*i,a.forEach(function(d){d(n)}),g=0;g<v;++g)E=t[g],E.fx==null?E.x+=E.vx*=o:(E.x=E.fx,E.vx=0),E.fy==null?E.y+=E.vy*=o:(E.y=E.fy,E.vy=0);return e}function x(){for(var _=0,g=t.length,v;_<g;++_){if(v=t[_],v.index=_,v.fx!=null&&(v.x=v.fx),v.fy!=null&&(v.y=v.fy),isNaN(v.x)||isNaN(v.y)){var E=js*Math.sqrt(.5+_),m=_*Us;v.x=E*Math.cos(m),v.y=E*Math.sin(m)}(isNaN(v.vx)||isNaN(v.vy))&&(v.vx=v.vy=0)}}function b(_){return _.initialize&&_.initialize(t,c),_}return x(),e={tick:f,restart:function(){return l.restart(h),e},stop:function(){return l.stop(),e},nodes:function(_){return arguments.length?(t=_,x(),a.forEach(b),e):t},alpha:function(_){return arguments.length?(n=+_,e):n},alphaMin:function(_){return arguments.length?(r=+_,e):r},alphaDecay:function(_){return arguments.length?(i=+_,e):+i},alphaTarget:function(_){return arguments.length?(s=+_,e):s},velocityDecay:function(_){return arguments.length?(o=1-_,e):1-o},randomSource:function(_){return arguments.length?(c=_,a.forEach(b),e):c},force:function(_,g){return arguments.length>1?(g==null?a.delete(_):a.set(_,b(g)),e):a.get(_)},find:function(_,g,v){var E=0,m=t.length,d,w,M,N,k;for(v==null?v=1/0:v*=v,E=0;E<m;++E)N=t[E],d=_-N.x,w=g-N.y,M=d*d+w*w,M<v&&(k=N,v=M);return k},on:function(_,g){return arguments.length>1?(u.on(_,g),e):u.on(_)}}}function Ws(t){var e=G(.1),n,r,i;typeof t!="function"&&(t=G(t==null?0:+t));function s(a){for(var l=0,u=n.length,c;l<u;++l)c=n[l],c.vx+=(i[l]-c.x)*r[l]*a}function o(){if(n){var a,l=n.length;for(r=new Array(l),i=new Array(l),a=0;a<l;++a)r[a]=isNaN(i[a]=+t(n[a],a,n))?0:+e(n[a],a,n)}}return s.initialize=function(a){n=a,o()},s.strength=function(a){return arguments.length?(e=typeof a=="function"?a:G(+a),o(),s):e},s.x=function(a){return arguments.length?(t=typeof a=="function"?a:G(+a),o(),s):t},s}function Ks(t){var e=G(.1),n,r,i;typeof t!="function"&&(t=G(t==null?0:+t));function s(a){for(var l=0,u=n.length,c;l<u;++l)c=n[l],c.vy+=(i[l]-c.y)*r[l]*a}function o(){if(n){var a,l=n.length;for(r=new Array(l),i=new Array(l),a=0;a<l;++a)r[a]=isNaN(i[a]=+t(n[a],a,n))?0:+e(n[a],a,n)}}return s.initialize=function(a){n=a,o()},s.strength=function(a){return arguments.length?(e=typeof a=="function"?a:G(+a),o(),s):e},s.y=function(a){return arguments.length?(t=typeof a=="function"?a:G(+a),o(),s):t},s}function Ye(t){return function(){return t}}function Qs(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return Sn(this.cover(e,n),e,n,t)}function Sn(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,s=t._root,o={data:r},a=t._x0,l=t._y0,u=t._x1,c=t._y1,h,f,x,b,_,g,v,E;if(!s)return t._root=o,t;for(;s.length;)if((_=e>=(h=(a+u)/2))?a=h:u=h,(g=n>=(f=(l+c)/2))?l=f:c=f,i=s,!(s=s[v=g<<1|_]))return i[v]=o,t;if(x=+t._x.call(null,s.data),b=+t._y.call(null,s.data),e===x&&n===b)return o.next=s,i?i[v]=o:t._root=o,t;do i=i?i[v]=new Array(4):t._root=new Array(4),(_=e>=(h=(a+u)/2))?a=h:u=h,(g=n>=(f=(l+c)/2))?l=f:c=f;while((v=g<<1|_)===(E=(b>=f)<<1|x>=h));return i[E]=s,i[v]=o,t}function Js(t){var e,n,r=t.length,i,s,o=new Array(r),a=new Array(r),l=1/0,u=1/0,c=-1/0,h=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(s=+this._y.call(null,e))||(o[n]=i,a[n]=s,i<l&&(l=i),i>c&&(c=i),s<u&&(u=s),s>h&&(h=s));if(l>c||u>h)return this;for(this.cover(l,u).cover(c,h),n=0;n<r;++n)Sn(this,o[n],a[n],t[n]);return this}function Zs(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,s=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,s=(r=Math.floor(e))+1;else{for(var o=i-n,a=this._root,l,u;n>t||t>=i||r>e||e>=s;)switch(u=(e<r)<<1|t<n,l=new Array(4),l[u]=a,a=l,o*=2,u){case 0:i=n+o,s=r+o;break;case 1:n=i-o,s=r+o;break;case 2:i=n+o,r=s-o;break;case 3:n=i-o,r=s-o;break}this._root&&this._root.length&&(this._root=a)}return this._x0=n,this._y0=r,this._x1=i,this._y1=s,this}function to(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function eo(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function q(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function no(t,e,n){var r,i=this._x0,s=this._y0,o,a,l,u,c=this._x1,h=this._y1,f=[],x=this._root,b,_;for(x&&f.push(new q(x,i,s,c,h)),n==null?n=1/0:(i=t-n,s=e-n,c=t+n,h=e+n,n*=n);b=f.pop();)if(!(!(x=b.node)||(o=b.x0)>c||(a=b.y0)>h||(l=b.x1)<i||(u=b.y1)<s))if(x.length){var g=(o+l)/2,v=(a+u)/2;f.push(new q(x[3],g,v,l,u),new q(x[2],o,v,g,u),new q(x[1],g,a,l,v),new q(x[0],o,a,g,v)),(_=(e>=v)<<1|t>=g)&&(b=f[f.length-1],f[f.length-1]=f[f.length-1-_],f[f.length-1-_]=b)}else{var E=t-+this._x.call(null,x.data),m=e-+this._y.call(null,x.data),d=E*E+m*m;if(d<n){var w=Math.sqrt(n=d);i=t-w,s=e-w,c=t+w,h=e+w,r=x.data}}return r}function ro(t){if(isNaN(c=+this._x.call(null,t))||isNaN(h=+this._y.call(null,t)))return this;var e,n=this._root,r,i,s,o=this._x0,a=this._y0,l=this._x1,u=this._y1,c,h,f,x,b,_,g,v;if(!n)return this;if(n.length)for(;;){if((b=c>=(f=(o+l)/2))?o=f:l=f,(_=h>=(x=(a+u)/2))?a=x:u=x,e=n,!(n=n[g=_<<1|b]))return this;if(!n.length)break;(e[g+1&3]||e[g+2&3]||e[g+3&3])&&(r=e,v=g)}for(;n.data!==t;)if(i=n,!(n=n.next))return this;return(s=n.next)&&delete n.next,i?(s?i.next=s:delete i.next,this):e?(s?e[g]=s:delete e[g],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(r?r[v]=n:this._root=n),this):(this._root=s,this)}function io(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function so(){return this._root}function oo(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function ao(t){var e=[],n,r=this._root,i,s,o,a,l;for(r&&e.push(new q(r,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(r=n.node,s=n.x0,o=n.y0,a=n.x1,l=n.y1)&&r.length){var u=(s+a)/2,c=(o+l)/2;(i=r[3])&&e.push(new q(i,u,c,a,l)),(i=r[2])&&e.push(new q(i,s,c,u,l)),(i=r[1])&&e.push(new q(i,u,o,a,c)),(i=r[0])&&e.push(new q(i,s,o,u,c))}return this}function uo(t){var e=[],n=[],r;for(this._root&&e.push(new q(this._root,this._x0,this._y0,this._x1,this._y1));r=e.pop();){var i=r.node;if(i.length){var s,o=r.x0,a=r.y0,l=r.x1,u=r.y1,c=(o+l)/2,h=(a+u)/2;(s=i[0])&&e.push(new q(s,o,a,c,h)),(s=i[1])&&e.push(new q(s,c,a,l,h)),(s=i[2])&&e.push(new q(s,o,h,c,u)),(s=i[3])&&e.push(new q(s,c,h,l,u))}n.push(r)}for(;r=n.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function lo(t){return t[0]}function co(t){return arguments.length?(this._x=t,this):this._x}function fo(t){return t[1]}function ho(t){return arguments.length?(this._y=t,this):this._y}function Tn(t,e,n){var r=new $e(e??lo,n??fo,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function $e(t,e,n,r,i,s){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=s,this._root=void 0}function Ve(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var H=Tn.prototype=$e.prototype;H.copy=function(){var t=new $e(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,r;if(!e)return t;if(!e.length)return t._root=Ve(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var i=0;i<4;++i)(r=e.source[i])&&(r.length?n.push({source:r,target:e.target[i]=new Array(4)}):e.target[i]=Ve(r));return t};H.add=Qs;H.addAll=Js;H.cover=Zs;H.data=to;H.extent=eo;H.find=no;H.remove=ro;H.removeAll=io;H.root=so;H.size=oo;H.visit=ao;H.visitAfter=uo;H.x=co;H.y=ho;function po(){var t,e,n,r=0,i,s,o,a=Ye(-30),l,u=1,c=1/0,h=.81;function f(){return(Math.random()-.5)*1e-6}function x(m){return m.x}function b(m){return m.y}s=function(){return function(m){return m%13===0}};function _(m){var d,w=t.length;for((!i||o(r,t))&&(i=Tn(t,x,b).visitAfter(v),t.update.push(r)),n=m,d=0;d<w;++d)e=t[d],i.visit(E);++r}function g(){if(t){r=0,t.update=[],o=s(),i=null;var m,d=t.length,w;for(l=new Array(d),m=0;m<d;++m)w=t[m],l[w.index]=+a(w,m,t)}}function v(m){var d=0,w,M,N=0,k,I,C;if(m.length){for(k=I=C=0;C<4;++C)(w=m[C])&&(M=Math.abs(w.value))&&(d+=w.value,N+=M,k+=M*w.x,I+=M*w.y);m.x=k/N,m.y=I/N}else{w=m,w.x=w.data.x,w.y=w.data.y;do d+=l[w.data.index];while(w=w.next)}m.value=d}function E(m,d,w,M){if(!m.value)return!0;var N=m.x-e.x,k=m.y-e.y,I=M-d,C=N*N+k*k;if(I*I/h<C)return C<c&&(N===0&&(N=f(),C+=N*N),k===0&&(k=f(),C+=k*k),C<u&&(C=Math.sqrt(u*C)),e.vx+=N*m.value*n/C,e.vy+=k*m.value*n/C),!0;if(m.length||C>=c)return;(m.data!==e||m.next)&&(N===0&&(N=f(),C+=N*N),k===0&&(k=f(),C+=k*k),C<u&&(C=Math.sqrt(u*C)));do m.data!==e&&(N=m.data.x-e.x,k=m.data.y-e.y,C=N*N+k*k,N===0&&(N=f(),C+=N*N),k===0&&(k=f(),C+=k*k),C<u&&(C=Math.sqrt(u*C)),I=l[m.data.index]*n/C,e.vx+=N*I,e.vy+=k*I);while(m=m.next)}return _.initialize=function(m){t=m,g()},_.strength=function(m){return arguments.length?(a=typeof m=="function"?m:Ye(+m),g(),_):a},_.distanceMin=function(m){return arguments.length?(u=m*m,_):Math.sqrt(u)},_.distanceMax=function(m){return arguments.length?(c=m*m,_):Math.sqrt(c)},_.theta=function(m){return arguments.length?(h=m*m,_):Math.sqrt(h)},_.update=function(m){return arguments.length?(s=m,o=s(),_):s},_}function Me(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Rn(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Xt(){}var It=.7,ee=1/It,Nt="\\s*([+-]?\\d+)\\s*",zt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",nt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",go=/^#([0-9a-f]{3,8})$/,vo=new RegExp(`^rgb\\(${Nt},${Nt},${Nt}\\)$`),xo=new RegExp(`^rgb\\(${nt},${nt},${nt}\\)$`),_o=new RegExp(`^rgba\\(${Nt},${Nt},${Nt},${zt}\\)$`),mo=new RegExp(`^rgba\\(${nt},${nt},${nt},${zt}\\)$`),yo=new RegExp(`^hsl\\(${zt},${nt},${nt}\\)$`),wo=new RegExp(`^hsla\\(${zt},${nt},${nt},${zt}\\)$`),je={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Me(Xt,Ot,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ue,formatHex:Ue,formatHex8:bo,formatHsl:No,formatRgb:Ge,toString:Ge});function Ue(){return this.rgb().formatHex()}function bo(){return this.rgb().formatHex8()}function No(){return Dn(this).formatHsl()}function Ge(){return this.rgb().formatRgb()}function Ot(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=go.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?We(e):n===3?new j(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Bt(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Bt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=vo.exec(t))?new j(e[1],e[2],e[3],1):(e=xo.exec(t))?new j(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=_o.exec(t))?Bt(e[1],e[2],e[3],e[4]):(e=mo.exec(t))?Bt(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=yo.exec(t))?Je(e[1],e[2]/100,e[3]/100,1):(e=wo.exec(t))?Je(e[1],e[2]/100,e[3]/100,e[4]):je.hasOwnProperty(t)?We(je[t]):t==="transparent"?new j(NaN,NaN,NaN,0):null}function We(t){return new j(t>>16&255,t>>8&255,t&255,1)}function Bt(t,e,n,r){return r<=0&&(t=e=n=NaN),new j(t,e,n,r)}function Eo(t){return t instanceof Xt||(t=Ot(t)),t?(t=t.rgb(),new j(t.r,t.g,t.b,t.opacity)):new j}function xe(t,e,n,r){return arguments.length===1?Eo(t):new j(t,e,n,r??1)}function j(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Me(j,xe,Rn(Xt,{brighter(t){return t=t==null?ee:Math.pow(ee,t),new j(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?It:Math.pow(It,t),new j(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new j(xt(this.r),xt(this.g),xt(this.b),ne(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ke,formatHex:Ke,formatHex8:ko,formatRgb:Qe,toString:Qe}));function Ke(){return`#${vt(this.r)}${vt(this.g)}${vt(this.b)}`}function ko(){return`#${vt(this.r)}${vt(this.g)}${vt(this.b)}${vt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Qe(){const t=ne(this.opacity);return`${t===1?"rgb(":"rgba("}${xt(this.r)}, ${xt(this.g)}, ${xt(this.b)}${t===1?")":`, ${t})`}`}function ne(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function vt(t){return t=xt(t),(t<16?"0":"")+t.toString(16)}function Je(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new J(t,e,n,r)}function Dn(t){if(t instanceof J)return new J(t.h,t.s,t.l,t.opacity);if(t instanceof Xt||(t=Ot(t)),!t)return new J;if(t instanceof J)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,a=s-i,l=(s+i)/2;return a?(e===s?o=(n-r)/a+(n<r)*6:n===s?o=(r-e)/a+2:o=(e-n)/a+4,a/=l<.5?s+i:2-s-i,o*=60):a=l>0&&l<1?0:o,new J(o,a,l,t.opacity)}function Co(t,e,n,r){return arguments.length===1?Dn(t):new J(t,e,n,r??1)}function J(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Me(J,Co,Rn(Xt,{brighter(t){return t=t==null?ee:Math.pow(ee,t),new J(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?It:Math.pow(It,t),new J(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new j(le(t>=240?t-240:t+120,i,r),le(t,i,r),le(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new J(Ze(this.h),Ht(this.s),Ht(this.l),ne(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=ne(this.opacity);return`${t===1?"hsl(":"hsla("}${Ze(this.h)}, ${Ht(this.s)*100}%, ${Ht(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Ze(t){return t=(t||0)%360,t<0?t+360:t}function Ht(t){return Math.max(0,Math.min(1,t||0))}function le(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const In=t=>()=>t;function Ao(t,e){return function(n){return t+n*e}}function $o(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Mo(t){return(t=+t)==1?zn:function(e,n){return n-e?$o(e,n,t):In(isNaN(e)?n:e)}}function zn(t,e){var n=e-t;return n?Ao(t,n):In(isNaN(t)?e:t)}const tn=function t(e){var n=Mo(e);function r(i,s){var o=n((i=xe(i)).r,(s=xe(s)).r),a=n(i.g,s.g),l=n(i.b,s.b),u=zn(i.opacity,s.opacity);return function(c){return i.r=o(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=t,r}(1);function ft(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var _e=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ce=new RegExp(_e.source,"g");function So(t){return function(){return t}}function To(t){return function(e){return t(e)+""}}function Ro(t,e){var n=_e.lastIndex=ce.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(t=t+"",e=e+"";(r=_e.exec(t))&&(i=ce.exec(e));)(s=i.index)>n&&(s=e.slice(n,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:ft(r,i)})),n=ce.lastIndex;return n<e.length&&(s=e.slice(n),a[o]?a[o]+=s:a[++o]=s),a.length<2?l[0]?To(l[0].x):So(e):(e=l.length,function(u){for(var c=0,h;c<e;++c)a[(h=l[c]).i]=h.x(u);return a.join("")})}var en=180/Math.PI,me={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function On(t,e,n,r,i,s){var o,a,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*n+e*r)&&(n-=t*l,r-=e*l),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,l/=a),t*r<e*n&&(t=-t,e=-e,l=-l,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(e,t)*en,skewX:Math.atan(l)*en,scaleX:o,scaleY:a}}var Yt;function Do(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?me:On(e.a,e.b,e.c,e.d,e.e,e.f)}function Io(t){return t==null||(Yt||(Yt=document.createElementNS("http://www.w3.org/2000/svg","g")),Yt.setAttribute("transform",t),!(t=Yt.transform.baseVal.consolidate()))?me:(t=t.matrix,On(t.a,t.b,t.c,t.d,t.e,t.f))}function Ln(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function s(u,c,h,f,x,b){if(u!==h||c!==f){var _=x.push("translate(",null,e,null,n);b.push({i:_-4,x:ft(u,h)},{i:_-2,x:ft(c,f)})}else(h||f)&&x.push("translate("+h+e+f+n)}function o(u,c,h,f){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),f.push({i:h.push(i(h)+"rotate(",null,r)-2,x:ft(u,c)})):c&&h.push(i(h)+"rotate("+c+r)}function a(u,c,h,f){u!==c?f.push({i:h.push(i(h)+"skewX(",null,r)-2,x:ft(u,c)}):c&&h.push(i(h)+"skewX("+c+r)}function l(u,c,h,f,x,b){if(u!==h||c!==f){var _=x.push(i(x)+"scale(",null,",",null,")");b.push({i:_-4,x:ft(u,h)},{i:_-2,x:ft(c,f)})}else(h!==1||f!==1)&&x.push(i(x)+"scale("+h+","+f+")")}return function(u,c){var h=[],f=[];return u=t(u),c=t(c),s(u.translateX,u.translateY,c.translateX,c.translateY,h,f),o(u.rotate,c.rotate,h,f),a(u.skewX,c.skewX,h,f),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,h,f),u=c=null,function(x){for(var b=-1,_=f.length,g;++b<_;)h[(g=f[b]).i]=g.x(x);return h.join("")}}}var zo=Ln(Do,"px, ","px)","deg)"),Oo=Ln(Io,", ",")",")"),Lo=1e-12;function nn(t){return((t=Math.exp(t))+1/t)/2}function Po(t){return((t=Math.exp(t))-1/t)/2}function Xo(t){return((t=Math.exp(2*t))-1)/(t+1)}const Fo=function t(e,n,r){function i(s,o){var a=s[0],l=s[1],u=s[2],c=o[0],h=o[1],f=o[2],x=c-a,b=h-l,_=x*x+b*b,g,v;if(_<Lo)v=Math.log(f/u)/e,g=function(N){return[a+N*x,l+N*b,u*Math.exp(e*N*v)]};else{var E=Math.sqrt(_),m=(f*f-u*u+r*_)/(2*u*n*E),d=(f*f-u*u-r*_)/(2*f*n*E),w=Math.log(Math.sqrt(m*m+1)-m),M=Math.log(Math.sqrt(d*d+1)-d);v=(M-w)/e,g=function(N){var k=N*v,I=nn(w),C=u/(n*E)*(I*Xo(e*k+w)-Po(w));return[a+C*x,l+C*b,u*I/nn(e*k+w)]}}return g.duration=v*1e3*e/Math.SQRT2,g}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,l=a*a;return t(o,a,l)},i}(Math.SQRT2,2,4);var qo=Pt("start","end","cancel","interrupt"),Bo=[],Pn=0,rn=1,ye=2,Ut=3,sn=4,we=5,Gt=6;function se(t,e,n,r,i,s){var o=t.__transition;if(!o)t.__transition={};else if(n in o)return;Ho(t,n,{name:e,index:r,group:i,on:qo,tween:Bo,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Pn})}function Se(t,e){var n=Z(t,e);if(n.state>Pn)throw new Error("too late; already scheduled");return n}function rt(t,e){var n=Z(t,e);if(n.state>Ut)throw new Error("too late; already running");return n}function Z(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Ho(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=Ae(s,0,n.time);function s(u){n.state=rn,n.timer.restart(o,n.delay,n.time),n.delay<=u&&o(u-n.delay)}function o(u){var c,h,f,x;if(n.state!==rn)return l();for(c in r)if(x=r[c],x.name===n.name){if(x.state===Ut)return Be(o);x.state===sn?(x.state=Gt,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[c]):+c<e&&(x.state=Gt,x.timer.stop(),x.on.call("cancel",t,t.__data__,x.index,x.group),delete r[c])}if(Be(function(){n.state===Ut&&(n.state=sn,n.timer.restart(a,n.delay,n.time),a(u))}),n.state=ye,n.on.call("start",t,t.__data__,n.index,n.group),n.state===ye){for(n.state=Ut,i=new Array(f=n.tween.length),c=0,h=-1;c<f;++c)(x=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(i[++h]=x);i.length=h+1}}function a(u){for(var c=u<n.duration?n.ease.call(null,u/n.duration):(n.timer.restart(l),n.state=we,1),h=-1,f=i.length;++h<f;)i[h].call(t,c);n.state===we&&(n.on.call("end",t,t.__data__,n.index,n.group),l())}function l(){n.state=Gt,n.timer.stop(),delete r[e];for(var u in r)return;delete t.__transition}}function Wt(t,e){var n=t.__transition,r,i,s=!0,o;if(n){e=e==null?null:e+"";for(o in n){if((r=n[o]).name!==e){s=!1;continue}i=r.state>ye&&r.state<we,r.state=Gt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[o]}s&&delete t.__transition}}function Yo(t){return this.each(function(){Wt(this,t)})}function Vo(t,e){var n,r;return function(){var i=rt(this,t),s=i.tween;if(s!==n){r=n=s;for(var o=0,a=r.length;o<a;++o)if(r[o].name===e){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function jo(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var s=rt(this,t),o=s.tween;if(o!==r){i=(r=o).slice();for(var a={name:e,value:n},l=0,u=i.length;l<u;++l)if(i[l].name===e){i[l]=a;break}l===u&&i.push(a)}s.tween=i}}function Uo(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=Z(this.node(),n).tween,i=0,s=r.length,o;i<s;++i)if((o=r[i]).name===t)return o.value;return null}return this.each((e==null?Vo:jo)(n,t,e))}function Te(t,e,n){var r=t._id;return t.each(function(){var i=rt(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return Z(i,r).value[e]}}function Xn(t,e){var n;return(typeof e=="number"?ft:e instanceof Ot?tn:(n=Ot(e))?(e=n,tn):Ro)(t,e)}function Go(t){return function(){this.removeAttribute(t)}}function Wo(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ko(t,e,n){var r,i=n+"",s;return function(){var o=this.getAttribute(t);return o===i?null:o===r?s:s=e(r=o,n)}}function Qo(t,e,n){var r,i=n+"",s;return function(){var o=this.getAttributeNS(t.space,t.local);return o===i?null:o===r?s:s=e(r=o,n)}}function Jo(t,e,n){var r,i,s;return function(){var o,a=n(this),l;return a==null?void this.removeAttribute(t):(o=this.getAttribute(t),l=a+"",o===l?null:o===r&&l===i?s:(i=l,s=e(r=o,a)))}}function Zo(t,e,n){var r,i,s;return function(){var o,a=n(this),l;return a==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),l=a+"",o===l?null:o===r&&l===i?s:(i=l,s=e(r=o,a)))}}function ta(t,e){var n=re(t),r=n==="transform"?Oo:Xn;return this.attrTween(t,typeof e=="function"?(n.local?Zo:Jo)(n,r,Te(this,"attr."+t,e)):e==null?(n.local?Wo:Go)(n):(n.local?Qo:Ko)(n,r,e))}function ea(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function na(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function ra(t,e){var n,r;function i(){var s=e.apply(this,arguments);return s!==r&&(n=(r=s)&&na(t,s)),n}return i._value=e,i}function ia(t,e){var n,r;function i(){var s=e.apply(this,arguments);return s!==r&&(n=(r=s)&&ea(t,s)),n}return i._value=e,i}function sa(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=re(t);return this.tween(n,(r.local?ra:ia)(r,e))}function oa(t,e){return function(){Se(this,t).delay=+e.apply(this,arguments)}}function aa(t,e){return e=+e,function(){Se(this,t).delay=e}}function ua(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?oa:aa)(e,t)):Z(this.node(),e).delay}function la(t,e){return function(){rt(this,t).duration=+e.apply(this,arguments)}}function ca(t,e){return e=+e,function(){rt(this,t).duration=e}}function fa(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?la:ca)(e,t)):Z(this.node(),e).duration}function ha(t,e){if(typeof e!="function")throw new Error;return function(){rt(this,t).ease=e}}function pa(t){var e=this._id;return arguments.length?this.each(ha(e,t)):Z(this.node(),e).ease}function da(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;rt(this,t).ease=n}}function ga(t){if(typeof t!="function")throw new Error;return this.each(da(this._id,t))}function va(t){typeof t!="function"&&(t=pn(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var s=e[i],o=s.length,a=r[i]=[],l,u=0;u<o;++u)(l=s[u])&&t.call(l,l.__data__,u,s)&&a.push(l);return new lt(r,this._parents,this._name,this._id)}function xa(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,s=Math.min(r,i),o=new Array(r),a=0;a<s;++a)for(var l=e[a],u=n[a],c=l.length,h=o[a]=new Array(c),f,x=0;x<c;++x)(f=l[x]||u[x])&&(h[x]=f);for(;a<r;++a)o[a]=e[a];return new lt(o,this._parents,this._name,this._id)}function _a(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function ma(t,e,n){var r,i,s=_a(e)?Se:rt;return function(){var o=s(this,t),a=o.on;a!==r&&(i=(r=a).copy()).on(e,n),o.on=i}}function ya(t,e){var n=this._id;return arguments.length<2?Z(this.node(),n).on.on(t):this.each(ma(n,t,e))}function wa(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function ba(){return this.on("end.remove",wa(this._id))}function Na(t){var e=this._name,n=this._id;typeof t!="function"&&(t=be(t));for(var r=this._groups,i=r.length,s=new Array(i),o=0;o<i;++o)for(var a=r[o],l=a.length,u=s[o]=new Array(l),c,h,f=0;f<l;++f)(c=a[f])&&(h=t.call(c,c.__data__,f,a))&&("__data__"in c&&(h.__data__=c.__data__),u[f]=h,se(u[f],e,n,f,u,Z(c,n)));return new lt(s,this._parents,e,n)}function Ea(t){var e=this._name,n=this._id;typeof t!="function"&&(t=hn(t));for(var r=this._groups,i=r.length,s=[],o=[],a=0;a<i;++a)for(var l=r[a],u=l.length,c,h=0;h<u;++h)if(c=l[h]){for(var f=t.call(c,c.__data__,h,l),x,b=Z(c,n),_=0,g=f.length;_<g;++_)(x=f[_])&&se(x,e,n,_,f,b);s.push(f),o.push(c)}return new lt(s,o,e,n)}var ka=Lt.prototype.constructor;function Ca(){return new ka(this._groups,this._parents)}function Aa(t,e){var n,r,i;return function(){var s=Et(this,t),o=(this.style.removeProperty(t),Et(this,t));return s===o?null:s===n&&o===r?i:i=e(n=s,r=o)}}function Fn(t){return function(){this.style.removeProperty(t)}}function $a(t,e,n){var r,i=n+"",s;return function(){var o=Et(this,t);return o===i?null:o===r?s:s=e(r=o,n)}}function Ma(t,e,n){var r,i,s;return function(){var o=Et(this,t),a=n(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(t),Et(this,t))),o===l?null:o===r&&l===i?s:(i=l,s=e(r=o,a))}}function Sa(t,e){var n,r,i,s="style."+e,o="end."+s,a;return function(){var l=rt(this,t),u=l.on,c=l.value[s]==null?a||(a=Fn(e)):void 0;(u!==n||i!==c)&&(r=(n=u).copy()).on(o,i=c),l.on=r}}function Ta(t,e,n){var r=(t+="")=="transform"?zo:Xn;return e==null?this.styleTween(t,Aa(t,r)).on("end.style."+t,Fn(t)):typeof e=="function"?this.styleTween(t,Ma(t,r,Te(this,"style."+t,e))).each(Sa(this._id,t)):this.styleTween(t,$a(t,r,e),n).on("end.style."+t,null)}function Ra(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Da(t,e,n){var r,i;function s(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&Ra(t,o,n)),r}return s._value=e,s}function Ia(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,Da(t,e,n??""))}function za(t){return function(){this.textContent=t}}function Oa(t){return function(){var e=t(this);this.textContent=e??""}}function La(t){return this.tween("text",typeof t=="function"?Oa(Te(this,"text",t)):za(t==null?"":t+""))}function Pa(t){return function(e){this.textContent=t.call(this,e)}}function Xa(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Pa(i)),e}return r._value=t,r}function Fa(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,Xa(t))}function qa(){for(var t=this._name,e=this._id,n=qn(),r=this._groups,i=r.length,s=0;s<i;++s)for(var o=r[s],a=o.length,l,u=0;u<a;++u)if(l=o[u]){var c=Z(l,e);se(l,t,n,u,o,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new lt(r,this._parents,t,n)}function Ba(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(s,o){var a={value:o},l={value:function(){--i===0&&s()}};n.each(function(){var u=rt(this,r),c=u.on;c!==t&&(e=(t=c).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(l)),u.on=e}),i===0&&s()})}var Ha=0;function lt(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function qn(){return++Ha}var ot=Lt.prototype;lt.prototype={constructor:lt,select:Na,selectAll:Ea,selectChild:ot.selectChild,selectChildren:ot.selectChildren,filter:va,merge:xa,selection:Ca,transition:qa,call:ot.call,nodes:ot.nodes,node:ot.node,size:ot.size,empty:ot.empty,each:ot.each,on:ya,attr:ta,attrTween:sa,style:Ta,styleTween:Ia,text:La,textTween:Fa,remove:ba,tween:Uo,delay:ua,duration:fa,ease:pa,easeVarying:ga,end:Ba,[Symbol.iterator]:ot[Symbol.iterator]};function Ya(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Va={time:null,delay:0,duration:250,ease:Ya};function ja(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Ua(t){var e,n;t instanceof lt?(e=t._id,t=t._name):(e=qn(),(n=Va).time=Ce(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,s=0;s<i;++s)for(var o=r[s],a=o.length,l,u=0;u<a;++u)(l=o[u])&&se(l,t,e,u,o,n||ja(l,e));return new lt(r,this._parents,t,e)}Lt.prototype.interrupt=Yo;Lt.prototype.transition=Ua;const Vt=t=>()=>t;function Ga(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function ut(t,e,n){this.k=t,this.x=e,this.y=n}ut.prototype={constructor:ut,scale:function(t){return t===1?this:new ut(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new ut(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Re=new ut(1,0,0);ut.prototype;function fe(t){t.stopImmediatePropagation()}function At(t){t.preventDefault(),t.stopImmediatePropagation()}function Wa(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Ka(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function on(){return this.__zoom||Re}function Qa(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Ja(){return navigator.maxTouchPoints||"ontouchstart"in this}function Za(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],s=t.invertY(e[0][1])-n[0][1],o=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>s?(s+o)/2:Math.min(0,s)||Math.max(0,o))}function tu(){var t=Wa,e=Ka,n=Za,r=Qa,i=Ja,s=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Fo,u=Pt("start","zoom","end"),c,h,f,x=500,b=150,_=0,g=10;function v(p){p.property("__zoom",on).on("wheel.zoom",k,{passive:!1}).on("mousedown.zoom",I).on("dblclick.zoom",C).filter(i).on("touchstart.zoom",L).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",Y).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}v.transform=function(p,A,y,$){var T=p.selection?p.selection():p;T.property("__zoom",on),p!==T?w(p,A,y,$):T.interrupt().each(function(){M(this,arguments).event($).start().zoom(null,typeof A=="function"?A.apply(this,arguments):A).end()})},v.scaleBy=function(p,A,y,$){v.scaleTo(p,function(){var T=this.__zoom.k,R=typeof A=="function"?A.apply(this,arguments):A;return T*R},y,$)},v.scaleTo=function(p,A,y,$){v.transform(p,function(){var T=e.apply(this,arguments),R=this.__zoom,D=y==null?d(T):typeof y=="function"?y.apply(this,arguments):y,z=R.invert(D),P=typeof A=="function"?A.apply(this,arguments):A;return n(m(E(R,P),D,z),T,o)},y,$)},v.translateBy=function(p,A,y,$){v.transform(p,function(){return n(this.__zoom.translate(typeof A=="function"?A.apply(this,arguments):A,typeof y=="function"?y.apply(this,arguments):y),e.apply(this,arguments),o)},null,$)},v.translateTo=function(p,A,y,$,T){v.transform(p,function(){var R=e.apply(this,arguments),D=this.__zoom,z=$==null?d(R):typeof $=="function"?$.apply(this,arguments):$;return n(Re.translate(z[0],z[1]).scale(D.k).translate(typeof A=="function"?-A.apply(this,arguments):-A,typeof y=="function"?-y.apply(this,arguments):-y),R,o)},$,T)};function E(p,A){return A=Math.max(s[0],Math.min(s[1],A)),A===p.k?p:new ut(A,p.x,p.y)}function m(p,A,y){var $=A[0]-y[0]*p.k,T=A[1]-y[1]*p.k;return $===p.x&&T===p.y?p:new ut(p.k,$,T)}function d(p){return[(+p[0][0]+ +p[1][0])/2,(+p[0][1]+ +p[1][1])/2]}function w(p,A,y,$){p.on("start.zoom",function(){M(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event($).end()}).tween("zoom",function(){var T=this,R=arguments,D=M(T,R).event($),z=e.apply(T,R),P=y==null?d(z):typeof y=="function"?y.apply(T,R):y,tt=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),X=T.__zoom,K=typeof A=="function"?A.apply(T,R):A,it=l(X.invert(P).concat(tt/X.k),K.invert(P).concat(tt/K.k));return function(Q){if(Q===1)Q=K;else{var st=it(Q),oe=tt/st[2];Q=new ut(oe,P[0]-st[0]*oe,P[1]-st[1]*oe)}D.zoom(null,Q)}})}function M(p,A,y){return!y&&p.__zooming||new N(p,A)}function N(p,A){this.that=p,this.args=A,this.active=0,this.sourceEvent=null,this.extent=e.apply(p,A),this.taps=0}N.prototype={event:function(p){return p&&(this.sourceEvent=p),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(p,A){return this.mouse&&p!=="mouse"&&(this.mouse[1]=A.invert(this.mouse[0])),this.touch0&&p!=="touch"&&(this.touch0[1]=A.invert(this.touch0[0])),this.touch1&&p!=="touch"&&(this.touch1[1]=A.invert(this.touch1[0])),this.that.__zoom=A,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(p){var A=V(this.that).datum();u.call(p,this.that,new Ga(p,{sourceEvent:this.sourceEvent,target:v,type:p,transform:this.that.__zoom,dispatch:u}),A)}};function k(p,...A){if(!t.apply(this,arguments))return;var y=M(this,A).event(p),$=this.__zoom,T=Math.max(s[0],Math.min(s[1],$.k*Math.pow(2,r.apply(this,arguments)))),R=at(p);if(y.wheel)(y.mouse[0][0]!==R[0]||y.mouse[0][1]!==R[1])&&(y.mouse[1]=$.invert(y.mouse[0]=R)),clearTimeout(y.wheel);else{if($.k===T)return;y.mouse=[R,$.invert(R)],Wt(this),y.start()}At(p),y.wheel=setTimeout(D,b),y.zoom("mouse",n(m(E($,T),y.mouse[0],y.mouse[1]),y.extent,o));function D(){y.wheel=null,y.end()}}function I(p,...A){if(f||!t.apply(this,arguments))return;var y=p.currentTarget,$=M(this,A,!0).event(p),T=V(p.view).on("mousemove.zoom",P,!0).on("mouseup.zoom",tt,!0),R=at(p,y),D=p.clientX,z=p.clientY;Nn(p.view),fe(p),$.mouse=[R,this.__zoom.invert(R)],Wt(this),$.start();function P(X){if(At(X),!$.moved){var K=X.clientX-D,it=X.clientY-z;$.moved=K*K+it*it>_}$.event(X).zoom("mouse",n(m($.that.__zoom,$.mouse[0]=at(X,y),$.mouse[1]),$.extent,o))}function tt(X){T.on("mousemove.zoom mouseup.zoom",null),En(X.view,$.moved),At(X),$.event(X).end()}}function C(p,...A){if(t.apply(this,arguments)){var y=this.__zoom,$=at(p.changedTouches?p.changedTouches[0]:p,this),T=y.invert($),R=y.k*(p.shiftKey?.5:2),D=n(m(E(y,R),$,T),e.apply(this,A),o);At(p),a>0?V(this).transition().duration(a).call(w,D,$,p):V(this).call(v.transform,D,$,p)}}function L(p,...A){if(t.apply(this,arguments)){var y=p.touches,$=y.length,T=M(this,A,p.changedTouches.length===$).event(p),R,D,z,P;for(fe(p),D=0;D<$;++D)z=y[D],P=at(z,this),P=[P,this.__zoom.invert(P),z.identifier],T.touch0?!T.touch1&&T.touch0[2]!==P[2]&&(T.touch1=P,T.taps=0):(T.touch0=P,R=!0,T.taps=1+!!c);c&&(c=clearTimeout(c)),R&&(T.taps<2&&(h=P[0],c=setTimeout(function(){c=null},x)),Wt(this),T.start())}}function U(p,...A){if(this.__zooming){var y=M(this,A).event(p),$=p.changedTouches,T=$.length,R,D,z,P;for(At(p),R=0;R<T;++R)D=$[R],z=at(D,this),y.touch0&&y.touch0[2]===D.identifier?y.touch0[0]=z:y.touch1&&y.touch1[2]===D.identifier&&(y.touch1[0]=z);if(D=y.that.__zoom,y.touch1){var tt=y.touch0[0],X=y.touch0[1],K=y.touch1[0],it=y.touch1[1],Q=(Q=K[0]-tt[0])*Q+(Q=K[1]-tt[1])*Q,st=(st=it[0]-X[0])*st+(st=it[1]-X[1])*st;D=E(D,Math.sqrt(Q/st)),z=[(tt[0]+K[0])/2,(tt[1]+K[1])/2],P=[(X[0]+it[0])/2,(X[1]+it[1])/2]}else if(y.touch0)z=y.touch0[0],P=y.touch0[1];else return;y.zoom("touch",n(m(D,z,P),y.extent,o))}}function Y(p,...A){if(this.__zooming){var y=M(this,A).event(p),$=p.changedTouches,T=$.length,R,D;for(fe(p),f&&clearTimeout(f),f=setTimeout(function(){f=null},x),R=0;R<T;++R)D=$[R],y.touch0&&y.touch0[2]===D.identifier?delete y.touch0:y.touch1&&y.touch1[2]===D.identifier&&delete y.touch1;if(y.touch1&&!y.touch0&&(y.touch0=y.touch1,delete y.touch1),y.touch0)y.touch0[1]=this.__zoom.invert(y.touch0[0]);else if(y.end(),y.taps===2&&(D=at(D,this),Math.hypot(h[0]-D[0],h[1]-D[1])<g)){var z=V(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return v.wheelDelta=function(p){return arguments.length?(r=typeof p=="function"?p:Vt(+p),v):r},v.filter=function(p){return arguments.length?(t=typeof p=="function"?p:Vt(!!p),v):t},v.touchable=function(p){return arguments.length?(i=typeof p=="function"?p:Vt(!!p),v):i},v.extent=function(p){return arguments.length?(e=typeof p=="function"?p:Vt([[+p[0][0],+p[0][1]],[+p[1][0],+p[1][1]]]),v):e},v.scaleExtent=function(p){return arguments.length?(s[0]=+p[0],s[1]=+p[1],v):[s[0],s[1]]},v.translateExtent=function(p){return arguments.length?(o[0][0]=+p[0][0],o[1][0]=+p[1][0],o[0][1]=+p[0][1],o[1][1]=+p[1][1],v):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},v.constrain=function(p){return arguments.length?(n=p,v):n},v.duration=function(p){return arguments.length?(a=+p,v):a},v.interpolate=function(p){return arguments.length?(l=p,v):l},v.on=function(){var p=u.on.apply(u,arguments);return p===u?v:p},v.clickDistance=function(p){return arguments.length?(_=(p=+p)*p,v):Math.sqrt(_)},v.tapDistance=function(p){return arguments.length?(g=+p,v):g},v}var ht=(t=>(t[t.NeigbhorIsParent=0]="NeigbhorIsParent",t[t.NeigbhorIsAChild=1]="NeigbhorIsAChild",t[t.NeigbhorIsASibling=2]="NeigbhorIsASibling",t[t.NoneOfTheAbove=3]="NoneOfTheAbove",t[t.NeigbhorIsAFormerChild=4]="NeigbhorIsAFormerChild",t))(ht||{});const eu=[{title:"IsParent",relationship:ht.NeigbhorIsParent},{title:"IsAChild",relationship:ht.NeigbhorIsAChild},{title:"IsASibling",relationship:ht.NeigbhorIsASibling},{title:"NoneOfTheAbove",relationship:ht.NoneOfTheAbove}],Bn=[ht.NeigbhorIsAChild,ht.NeigbhorIsParent],nu=t=>t.linkType==="Router2Router"?1:Bn.includes(t.relationship)?.5:0,ru=[...Bn,ht.NeigbhorIsASibling],$t=100,iu={BrokenLink:5*$t,Router2Router:2.5*$t,Coordinator2Router:2.5*$t,Coordinator2EndDevice:$t,EndDevice2Router:$t},su=t=>iu[t.linkType]??250,ou=(t,e)=>{const n=t.source,r=t.target,[i,s]=e.apply([n.x,n.y]),[o,a]=e.apply([r.x,r.y]);return`M ${i} ${s} L ${o} ${a}`},au=({transform:t,node:e,link:n,linkLabel:r,links:i})=>{i.forEach(s=>{const[o,a]=t.apply([s.source.x,s.source.y]),[l,u]=t.apply([s.target.x,s.target.y]);s.x=(l+o)/2,s.y=(u+a)/2}),n.attr("d",s=>ou(s,t)),r.attr("x",({source:s,target:o})=>t.applyX((s.x+o.x)/2)).attr("y",({source:s,target:o})=>t.applyY((s.y+o.y)/2)),e.attr("transform",s=>{const[l,u]=t.apply([s.x,s.y]);return`translate(${l-16}, ${u-16})`})},uu=({networkGraph:t,links:e,selectedNode:n,node:r,link:i,linkLabel:s})=>{const o=new Set;t.nodes.forEach(u=>o.add(u.ieeeAddr+","+u.ieeeAddr)),e.forEach(u=>o.add(u.source.ieeeAddr+","+u.target.ieeeAddr));const a=(u,c)=>o.has(u.ieeeAddr+","+c.ieeeAddr),l=u=>(u==null?void 0:u.source)===n||(u==null?void 0:u.target)===n?1:.15;n?(r.style("opacity",u=>a(n,u)||a(u,n)?1:.15),i.style("stroke-opacity",l),s.style("opacity",l)):(r.style("opacity",1),i.style("stroke-opacity",1),s.style("opacity",1))};class lu extends et.Component{constructor(){super(...arguments),this.ref=et.createRef(),this.svgRef=et.createRef(),this.simulation=Gs(),this.state={width:0,height:0,visibleLinks:ru,legendIsVisible:!0},this.transform=Re,this.updateNodes=()=>{var x;const{networkGraph:e}=this.props,{visibleLinks:n,selectedNode:r,width:i,height:s}=this.state,o=V(this.svgRef.current),a=o.selectAll(`.${O.node}`),l=o.selectAll(`.${O.link}`),u=o.selectAll(`.${O.linkLabel}`),c=e.links.filter(b=>Ie(n,b.relationships).length);this.simulation.nodes(e.nodes.concat(c)),(x=this.simulation.force("link"))==null||x.links(c),this.simulation.on("tick",()=>au({transform:this.transform,node:a,link:l,linkLabel:u,links:c}));const h=o.selectAll(".everything");tu().extent([[0,0],[i,s]]).scaleExtent([1/10,8]).on("zoom",({transform:b})=>{h.attr("transform",b)})(o),uu({networkGraph:e,links:c,selectedNode:r,node:a,link:l,linkLabel:u}),a.on("click",(b,_)=>{this.setState({selectedNode:r?null:_})}),this.simulation.alphaTarget(.03).restart()},this.initPage=()=>{const{width:e,height:n}=this.ref.current.getBoundingClientRect();this.setState({width:e,height:n}),this.updateForces(e,n)},this.onRequestClick=()=>{const{networkMapRequest:e}=this.props;e()},this.onLinkTypeFilterChange=e=>{const{visibleLinks:n}=this.state,{checked:r,value:i}=e.target,s=parseInt(i,10);let o=[...n];r?o.push(s):o=o.filter(a=>a!==s),this.setState({visibleLinks:o})}}updateForces(e,n){this.simulation=this.simulation.force("link",Ps().id(r=>r.ieeeAddr).distance(su).strength(nu)).force("charge",po().strength(-700)).force("collisionForce",Os()).force("center",xs(e/2,n/2)).force("x",Ws().strength(.1)).force("y",Ks().strength(.2))}componentDidMount(){setTimeout(this.initPage,200)}componentDidUpdate(){this.updateNodes()}renderMap(){const{width:e,height:n,visibleLinks:r}=this.state,{networkGraph:i,deviceStates:s,devices:o,availability:a}=this.props,l=i.links.filter(u=>Ie(r,u.relationships).length>0);return S.jsx("svg",{ref:this.svgRef,viewBox:`0 0 ${e} ${n}`,children:S.jsxs("g",{className:"everything",children:[S.jsx(rs,{links:l}),S.jsx(vs,{root:this.svgRef.current,nodes:i.nodes,simulation:this.simulation,deviceStates:s,devices:o,availability:a})]})})}renderMessage(){const{networkGraphIsLoading:e,t:n}=this.props;return S.jsx("div",{className:"h-100 d-flex justify-content-center align-items-center",children:e?S.jsx("div",{className:"card",children:S.jsxs("div",{className:"card-body",children:[S.jsx("div",{className:"card-title",children:S.jsx(Wn,{})}),S.jsx("div",{children:n("loading")})]})}):S.jsx(De,{onClick:this.onRequestClick,className:"btn btn-primary d-block",children:n("load")})})}renderMapControls(){const{visibleLinks:e}=this.state;return S.jsxs("div",{className:O.controls,children:[eu.map(n=>S.jsxs("div",{className:"form-check form-check-inline",children:[S.jsx("input",{onChange:this.onLinkTypeFilterChange,className:"form-check-input",type:"checkbox",id:n.title,value:n.relationship,checked:e.includes(n.relationship)}),S.jsx("label",{className:"form-check-label",htmlFor:n.title,children:n.title})]},n.title)),S.jsx("div",{className:"btn-group btn-group-sm",role:"group",children:S.jsx(De,{title:"Refresh data",className:"btn btn-primary",onClick:this.onRequestClick,children:S.jsx("i",{className:"fa fa-sync"})})})]})}renderHelp(){const{t:e}=this.props,{legendIsVisible:n}=this.state;return S.jsxs("div",{className:wt("fixed-bottom",{"d-none":!n}),onClick:()=>this.setState({legendIsVisible:!1}),children:[S.jsxs("div",{className:wt(O.node,O.Coordinator),children:[S.jsx("svg",{width:"28",height:"28",viewBox:"0 0 28 28",children:S.jsx("polygon",{points:kn(5,5,14)})})," ",e("help_is_coordinator")]}),S.jsx("div",{className:wt(O.node,O.EndDevice),children:e("help_end_device_description")}),S.jsx("div",{className:wt(O.node,O.Router),children:e("help_router_description")}),S.jsx("div",{children:e("help_coordinator_link_description")}),S.jsx("div",{children:e("help_router_links_description")}),S.jsx("div",{children:e("help_lqi_description")}),S.jsx("div",{children:e("hide")})]})}render(){const{networkGraph:e}=this.props;return S.jsx("div",{className:O.container,ref:this.ref,children:e.nodes.length?S.jsxs(et.Fragment,{children:[this.renderMapControls()," ",this.renderMap(),this.renderHelp()]}):this.renderMessage()})}}const xu=Hn("map")(Yn(["networkGraph","networkGraphIsLoading","deviceStates","devices","availability"],Vn)(lu));export{xu as ConnectedMap};
@@ -0,0 +1 @@
1
+ import{as as b,aG as F,p as v,ar as C,au as S,c as D,a as A,r as x,i as E,C as w,j as p}from"./index-6f55efcd.js";import{D as B}from"./DashboardDevice-729bd8ca.js";import{i as j,b as k,g as I,c as f,D as T}from"./DashboardFeatureWrapper-9ec37019.js";import{_ as G}from"./_baseSet-f94f15e8.js";import{c as N}from"./_getAllKeysIn-a7208d0f.js";import{a as P,g as L,G as K,p as M}from"./persist-86b6ee4d.js";import{D as y}from"./DEVICES_GLOBAL_NAME-6620c611.js";import"./index-72a1e3cc.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./DeviceImage-66f70063.js";import"./index-1b114912.js";import"./isEqual-0689f192.js";var O=b,R=G,V=F;function W(t,a,n){for(var e=-1,s=a.length,l={};++e<s;){var r=a[e],i=O(t,r);n(i,r)&&R(l,V(r,t),i)}return l}var $=W,q=C,z=S,H=$,J=N;function Q(t,a){if(t==null)return{};var n=q(J(t),function(e){return[e]});return a=z(a),H(t,n,function(e,s){return a(e,s[0])})}var U=Q;const X=v(U),Y=["linkquality","battery","battery_low","battery_state","color_temp_startup","voltage","strength","color_options","warning","position","operation_mode","operation_mode2","programming_mode","options","programming","schedule_monday","schedule_tuesday","schedule_wednesday","schedule_thursday","schedule_friday","schedule_saturday","schedule_sunday","holiday_mode_date"],Z=["state","brightness","color_temp","mode","sound","occupancy","tamper","alarm"],ee=["light"],re=["",null,void 0],g=(t,a={})=>{const{access:n,property:e,name:s,type:l}=t;let{features:r}=t;if(j(t)||k(t)){r=r.map(d=>g(d,e?a[e]:a)).filter(d=>d);const c=I(r,"property");r=Object.values(c).map(d=>d[0])}const i={...t,features:r};return Z.includes(s)||ee.includes(l)?i:n&&!(n&f.ACCESS_STATE&&!re.includes(a[e]))?!1:s=="voltage"&&a.battery==null?i:Y.includes(s)?!1:n===f.ACCESS_STATE||n===f.ACCESS_STATE+f.ACCESS_READ||Array.isArray(r)&&r.length>0?i:!1},te=["friendly_name","description","ieee_address","manufacturer","type","power_source","model_id","definition.model","definition.vendor"];function ae(t,a,n){return Object.values(t).filter(e=>e.supported).map(e=>({device:e,deviceState:a[e.friendly_name]??{}})).map(({device:e,deviceState:s})=>{var i;const r=(((i=e.definition)==null?void 0:i.exposes)??[]).map(c=>n(c,s)).filter(c=>c);return{device:e,deviceState:s,filteredFeatures:r}}).filter(({filteredFeatures:e})=>e.length>0).sort((e,s)=>e.device.friendly_name.localeCompare(s.device.friendly_name))}function se(t){const{setDeviceState:a,getDeviceState:n,deviceStates:e,bridgeInfo:s,devices:l}=t,[r,i]=x.useState(()=>P(L(y))??{}),c=o=>{const m={...r,globalFilter:o};i(m),M(y,m)},d=X(l,(o,m)=>E(o,s.config)?!1:r.globalFilter?te.map(u=>w(o,u)).filter(Boolean).map(String).map(u=>u.toLowerCase()).some(u=>u.includes(r.globalFilter.toLowerCase())):!0);return p.jsxs("div",{className:"row",children:[p.jsx("div",{className:"col-12",children:p.jsx("div",{className:"flex-fill card flex-shrink-1",children:p.jsx("div",{className:"card-footer",children:p.jsx(K,{globalFilter:r.globalFilter,setGlobalFilter:c})})})}),ae(d,e,g).map(({device:o,deviceState:m,filteredFeatures:u})=>p.jsx(B,{feature:{features:u},device:o,deviceState:m,onChange:(h,_)=>a(o.friendly_name,_),onRead:(h,_)=>n(o.friendly_name,_),featureWrapperClass:T,lastSeenType:s.config.advanced.last_seen},o.ieee_address))]})}const ge=D(["devices","deviceStates","bridgeInfo"],A)(se);export{ge as ConnectedDashboardPage};
@@ -1 +1 @@
1
- import{j as e,u as x,L as f,g as j,b as c}from"./index-e3646692.js";import{L as u,P as p}from"./index-579b95d0.js";import{T as h}from"./DashboardFeatureWrapper-3ad13437.js";import{D as N}from"./DeviceImage-454b21dc.js";const g=({device:t,deviceState:a,lastSeenType:s})=>{const{linkquality:l}=a,{supported:r}=t;return e.jsx("footer",{className:"card-footer pt-0",children:e.jsxs("div",{className:"row justify-content-between flex-nowrap",children:[e.jsx("div",{title:"last update",className:"col text-truncate",children:e.jsx(u,{state:a,lastSeenType:s})}),e.jsxs("div",{className:"col col-auto text-truncate",children:[e.jsxs("span",{className:"me-1",children:[e.jsx("i",{className:"fa fa-signal fa-fw"})," ",l," LQI"]},"linkquality"),r&&e.jsx(p,{device:t,deviceState:a},"power")]})]})})},D=g,b="_deviceImage_10iuz_1",w={deviceImage:b},y=({onChange:t,onRead:a,device:s,endpoint:l,deviceState:r,lastSeenType:i,feature:{features:n},featureWrapperClass:o,controls:d})=>{const{t:m}=x("zigbee");return e.jsx("div",{className:"col-xl-3 col-lg-4 col-sm-6 col-12 d-flex",children:e.jsxs("div",{className:"flex-fill card flex-shrink-1",children:[e.jsxs("div",{className:"card-header pb-0 d-flex justify-content-between",children:[e.jsxs(f,{to:j(s.ieee_address),children:[e.jsx(N,{disabled:!1,device:s,className:c(w.deviceImage,"me-2 d-inline")}),s.friendly_name,l?` (${m("endpoint")}: ${l})`:""]}),d]}),e.jsx("div",{className:"card-header py-0 d-flex justify-content-between",children:e.jsx("small",{children:s.description})}),e.jsx("div",{className:c("card-body align-items-center row"),children:e.jsx(h,{feature:{features:n},className:"row",type:"composite",device:s,deviceState:r,onChange:t,onRead:a,featureWrapperClass:o,minimal:!0})}),e.jsx(D,{device:s,deviceState:r,lastSeenType:i})]})})},_=y;export{_ as D};
1
+ import{j as e,u as x,L as f,g as j,b as c}from"./index-6f55efcd.js";import{L as u,P as p}from"./index-72a1e3cc.js";import{T as h}from"./DashboardFeatureWrapper-9ec37019.js";import{D as N}from"./DeviceImage-66f70063.js";const g=({device:t,deviceState:a,lastSeenType:s})=>{const{linkquality:l}=a,{supported:r}=t;return e.jsx("footer",{className:"card-footer pt-0",children:e.jsxs("div",{className:"row justify-content-between flex-nowrap",children:[e.jsx("div",{title:"last update",className:"col text-truncate",children:e.jsx(u,{state:a,lastSeenType:s})}),e.jsxs("div",{className:"col col-auto text-truncate",children:[e.jsxs("span",{className:"me-1",children:[e.jsx("i",{className:"fa fa-signal fa-fw"})," ",l," LQI"]},"linkquality"),r&&e.jsx(p,{device:t,deviceState:a},"power")]})]})})},D=g,b="_deviceImage_10iuz_1",w={deviceImage:b},y=({onChange:t,onRead:a,device:s,endpoint:l,deviceState:r,lastSeenType:i,feature:{features:n},featureWrapperClass:o,controls:d})=>{const{t:m}=x("zigbee");return e.jsx("div",{className:"col-xl-3 col-lg-4 col-sm-6 col-12 d-flex",children:e.jsxs("div",{className:"flex-fill card flex-shrink-1",children:[e.jsxs("div",{className:"card-header pb-0 d-flex justify-content-between",children:[e.jsxs(f,{to:j(s.ieee_address),children:[e.jsx(N,{disabled:!1,device:s,className:c(w.deviceImage,"me-2 d-inline")}),s.friendly_name,l?` (${m("endpoint")}: ${l})`:""]}),d]}),e.jsx("div",{className:"card-header py-0 d-flex justify-content-between",children:e.jsx("small",{children:s.description})}),e.jsx("div",{className:c("card-body align-items-center row"),children:e.jsx(h,{feature:{features:n},className:"row",type:"composite",device:s,deviceState:r,onChange:t,onRead:a,featureWrapperClass:o,minimal:!0})}),e.jsx(D,{device:s,deviceState:r,lastSeenType:i})]})})},_=y;export{_ as D};
@@ -0,0 +1 @@
1
+ import{p as B,aH as $e,a8 as Fe,j as c,B as v,r as x,b as y,aI as Ae,u as ee,w as V,R as q,O as I}from"./index-6f55efcd.js";import{D as G}from"./index-72a1e3cc.js";import{i as Te}from"./isEqual-0689f192.js";function Oe(e){return e.type==="binary"}function te(e){return e.type==="list"}function Me(e){return e.type==="numeric"}function Le(e){return e.type==="text"}function We(e){return e.type==="enum"}function Ie(e){return e.type==="light"}function Ue(e){return e.type==="switch"}function ze(e){return e.type==="cover"}function De(e){return e.type==="lock"}function Pe(e){return e.type==="fan"}function O(e){return e.type==="composite"&&e.name!=="color_xy"&&e.name!=="color_hs"}function ne(e){return e.type==="composite"&&(e.name==="color_xy"||e.name==="color_hs")}function Be(e){return e.type==="climate"}function Ve(e){return te(e)&&e.name==="gradient"&&e.length_min!==void 0&&e.length_max!==void 0}var qe=Fe,Ge=$e,Je=Object.prototype,Ze=Je.hasOwnProperty,He=Ge(function(e,t,n){Ze.call(e,n)?e[n].push(t):qe(e,n,[t])}),Ke=He;const Ye=B(Ke);var b=(e=>(e[e.NONE=0]="NONE",e[e.ACCESS_STATE=1]="ACCESS_STATE",e[e.ACCESS_WRITE=2]="ACCESS_WRITE",e[e.ACCESS_READ=4]="ACCESS_READ",e))(b||{});const J=e=>{const{value:t,onClick:n,name:r}=e;return c.jsx(v,{className:"btn btn-link",item:t,onClick:n,children:c.jsx(G,{value:t,name:r})})},Xe=e=>{const{onChange:t,value:n,valueOn:r,valueOff:s,minimal:a,name:o}=e,i=f=>t(f.target.checked?r:s),l=n!=null,u=!a||a&&!l;return c.jsxs("div",{children:[u&&c.jsx(J,{value:s,name:o,onClick:t}),l?c.jsx("div",{className:"form-check form-switch form-check-inline align-middle me-0",children:c.jsx("input",{className:"form-check-input",type:"checkbox",checked:n===r,onChange:i})}):c.jsx("i",{className:"fa fa-question",title:"Current value unknown"}),u&&c.jsx(J,{value:r,name:o,onClick:t})]})},Qe=Xe,A=e=>{const{feature:{property:t,unit:n,name:r},deviceState:s}=e;return c.jsxs("div",{children:[t&&c.jsx("strong",{children:c.jsx(G,{value:s[t],name:r})}),n?c.jsx("small",{className:"text-muted ms-1",children:n}):null]})},T=({feature:{access:e}})=>c.jsxs("div",{className:"alert alert-warning p-0",role:"alert",children:["Unknown access ",JSON.stringify(e,null,4)]}),et=e=>{const{feature:{access:t=b.ACCESS_WRITE,endpoint:n,name:r,property:s,value_off:a,value_on:o},deviceState:i,onChange:l,minimal:u}=e;return t&b.ACCESS_WRITE?c.jsx(Qe,{onChange:f=>l(n,{[s]:f}),value:i[s],valueOn:o,valueOff:a,minimal:u,name:r}):t&b.ACCESS_STATE?c.jsx(A,{...e}):c.jsx(T,{...e})},tt=et,nt=e=>c.jsx(_,{type:"climate",...e}),rt=nt,st={position:[0,25,50,75,100].map(e=>({value:e,name:e+""})),tilt:[0,25,50,75,100].map(e=>({value:e,name:e+""}))},at=e=>c.jsx(_,{type:"cover",...e,stepsConfiguration:st}),ot=at;var ct={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};const F=ct,re={};for(const e of Object.keys(F))re[F[e]]=e;const d={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};var se=d;for(const e of Object.keys(d)){if(!("channels"in d[e]))throw new Error("missing channels property: "+e);if(!("labels"in d[e]))throw new Error("missing channel labels property: "+e);if(d[e].labels.length!==d[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=d[e];delete d[e].channels,delete d[e].labels,Object.defineProperty(d[e],"channels",{value:t}),Object.defineProperty(d[e],"labels",{value:n})}d.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(t,n,r),a=Math.max(t,n,r),o=a-s;let i,l;a===s?i=0:t===a?i=(n-r)/o:n===a?i=2+(r-t)/o:r===a&&(i=4+(t-n)/o),i=Math.min(i*60,360),i<0&&(i+=360);const u=(s+a)/2;return a===s?l=0:u<=.5?l=o/(a+s):l=o/(2-a-s),[i,l*100,u*100]};d.rgb.hsv=function(e){let t,n,r,s,a;const o=e[0]/255,i=e[1]/255,l=e[2]/255,u=Math.max(o,i,l),f=u-Math.min(o,i,l),h=function(m){return(u-m)/6/f+1/2};return f===0?(s=0,a=0):(a=f/u,t=h(o),n=h(i),r=h(l),o===u?s=r-n:i===u?s=1/3+t-r:l===u&&(s=2/3+n-t),s<0?s+=1:s>1&&(s-=1)),[s*360,a*100,u*100]};d.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const s=d.rgb.hsl(e)[0],a=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[s,a*100,r*100]};d.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(1-t,1-n,1-r),a=(1-t-s)/(1-s)||0,o=(1-n-s)/(1-s)||0,i=(1-r-s)/(1-s)||0;return[a*100,o*100,i*100,s*100]};function it(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}d.rgb.keyword=function(e){const t=re[e];if(t)return t;let n=1/0,r;for(const s of Object.keys(F)){const a=F[s],o=it(e,a);o<n&&(n=o,r=s)}return r};d.keyword.rgb=function(e){return F[e]};d.rgb.xyz=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;const s=t*.4124+n*.3576+r*.1805,a=t*.2126+n*.7152+r*.0722,o=t*.0193+n*.1192+r*.9505;return[s*100,a*100,o*100]};d.rgb.lab=function(e){const t=d.rgb.xyz(e);let n=t[0],r=t[1],s=t[2];n/=95.047,r/=100,s/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;const a=116*r-16,o=500*(n-r),i=200*(r-s);return[a,o,i]};d.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let s,a,o;if(n===0)return o=r*255,[o,o,o];r<.5?s=r*(1+n):s=r+n-r*n;const i=2*r-s,l=[0,0,0];for(let u=0;u<3;u++)a=t+1/3*-(u-1),a<0&&a++,a>1&&a--,6*a<1?o=i+(s-i)*6*a:2*a<1?o=s:3*a<2?o=i+(s-i)*(2/3-a)*6:o=i,l[u]=o*255;return l};d.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,s=n;const a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,s*=a<=1?a:2-a;const o=(r+n)/2,i=r===0?2*s/(a+s):2*n/(r+n);return[t,i*100,o*100]};d.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const s=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),i=255*r*(1-n*a),l=255*r*(1-n*(1-a));switch(r*=255,s){case 0:return[r,l,o];case 1:return[i,r,o];case 2:return[o,r,l];case 3:return[o,i,r];case 4:return[l,o,r];case 5:return[r,o,i]}};d.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,s=Math.max(r,.01);let a,o;o=(2-n)*r;const i=(2-n)*s;return a=n*s,a/=i<=1?i:2-i,a=a||0,o/=2,[t,a*100,o*100]};d.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const s=n+r;let a;s>1&&(n/=s,r/=s);const o=Math.floor(6*t),i=1-r;a=6*t-o,o&1&&(a=1-a);const l=n+a*(i-n);let u,f,h;switch(o){default:case 6:case 0:u=i,f=l,h=n;break;case 1:u=l,f=i,h=n;break;case 2:u=n,f=i,h=l;break;case 3:u=n,f=l,h=i;break;case 4:u=l,f=n,h=i;break;case 5:u=i,f=n,h=l;break}return[u*255,f*255,h*255]};d.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,s=e[3]/100,a=1-Math.min(1,t*(1-s)+s),o=1-Math.min(1,n*(1-s)+s),i=1-Math.min(1,r*(1-s)+s);return[a*255,o*255,i*255]};d.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let s,a,o;return s=t*3.2406+n*-1.5372+r*-.4986,a=t*-.9689+n*1.8758+r*.0415,o=t*.0557+n*-.204+r*1.057,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,s=Math.min(Math.max(0,s),1),a=Math.min(Math.max(0,a),1),o=Math.min(Math.max(0,o),1),[s*255,a*255,o*255]};d.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;const s=116*n-16,a=500*(t-n),o=200*(n-r);return[s,a,o]};d.lab.xyz=function(e){const t=e[0],n=e[1],r=e[2];let s,a,o;a=(t+16)/116,s=n/500+a,o=a-r/200;const i=a**3,l=s**3,u=o**3;return a=i>.008856?i:(a-16/116)/7.787,s=l>.008856?l:(s-16/116)/7.787,o=u>.008856?u:(o-16/116)/7.787,s*=95.047,a*=100,o*=108.883,[s,a,o]};d.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let s;s=Math.atan2(r,n)*360/2/Math.PI,s<0&&(s+=360);const o=Math.sqrt(n*n+r*r);return[t,o,s]};d.lch.lab=function(e){const t=e[0],n=e[1],s=e[2]/360*2*Math.PI,a=n*Math.cos(s),o=n*Math.sin(s);return[t,a,o]};d.rgb.ansi16=function(e,t=null){const[n,r,s]=e;let a=t===null?d.rgb.hsv(e)[2]:t;if(a=Math.round(a/50),a===0)return 30;let o=30+(Math.round(s/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return a===2&&(o+=60),o};d.hsv.ansi16=function(e){return d.rgb.ansi16(d.hsv.rgb(e),e[2])};d.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)};d.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=(~~(e>50)+1)*.5,r=(t&1)*n*255,s=(t>>1&1)*n*255,a=(t>>2&1)*n*255;return[r,s,a]};d.ansi256.rgb=function(e){if(e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let t;const n=Math.floor(e/36)/5*255,r=Math.floor((t=e%36)/6)/5*255,s=t%6/5*255;return[n,r,s]};d.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(n.length)+n};d.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=n.split("").map(i=>i+i).join(""));const r=parseInt(n,16),s=r>>16&255,a=r>>8&255,o=r&255;return[s,a,o]};d.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=s-a;let i,l;return o<1?i=a/(1-o):i=0,o<=0?l=0:s===t?l=(n-r)/o%6:s===n?l=2+(r-t)/o:l=4+(t-n)/o,l/=6,l%=1,[l*360,o*100,i*100]};d.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let s=0;return r<1&&(s=(n-.5*r)/(1-r)),[e[0],r*100,s*100]};d.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let s=0;return r<1&&(s=(n-r)/(1-r)),[e[0],r*100,s*100]};d.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];const s=[0,0,0],a=t%1*6,o=a%1,i=1-o;let l=0;switch(Math.floor(a)){case 0:s[0]=1,s[1]=o,s[2]=0;break;case 1:s[0]=i,s[1]=1,s[2]=0;break;case 2:s[0]=0,s[1]=1,s[2]=o;break;case 3:s[0]=0,s[1]=i,s[2]=1;break;case 4:s[0]=o,s[1]=0,s[2]=1;break;default:s[0]=1,s[1]=0,s[2]=i}return l=(1-n)*r,[(n*s[0]+l)*255,(n*s[1]+l)*255,(n*s[2]+l)*255]};d.hcg.hsv=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);let s=0;return r>0&&(s=t/r),[e[0],s*100,r*100]};d.hcg.hsl=function(e){const t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let s=0;return r>0&&r<.5?s=t/(2*r):r>=.5&&r<1&&(s=t/(2*(1-r))),[e[0],s*100,r*100]};d.hcg.hwb=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);return[e[0],(r-t)*100,(1-r)*100]};d.hwb.hcg=function(e){const t=e[1]/100,r=1-e[2]/100,s=r-t;let a=0;return s<1&&(a=(r-s)/(1-s)),[e[0],s*100,a*100]};d.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};d.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};d.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};d.gray.hsl=function(e){return[0,0,e[0]]};d.gray.hsv=d.gray.hsl;d.gray.hwb=function(e){return[0,100,e[0]]};d.gray.cmyk=function(e){return[0,0,0,e[0]]};d.gray.lab=function(e){return[e[0],0,0]};d.gray.hex=function(e){const t=Math.round(e[0]/100*255)&255,r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r};d.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};const W=se;function lt(){const e={},t=Object.keys(W);for(let n=t.length,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function ut(e){const t=lt(),n=[e];for(t[e].distance=0;n.length;){const r=n.pop(),s=Object.keys(W[r]);for(let a=s.length,o=0;o<a;o++){const i=s[o],l=t[i];l.distance===-1&&(l.distance=t[r].distance+1,l.parent=r,n.unshift(i))}}return t}function ft(e,t){return function(n){return t(e(n))}}function dt(e,t){const n=[t[e].parent,e];let r=W[t[e].parent][e],s=t[e].parent;for(;t[s].parent;)n.unshift(t[s].parent),r=ft(W[t[s].parent][s],r),s=t[s].parent;return r.conversion=n,r}var ht=function(e){const t=ut(e),n={},r=Object.keys(t);for(let s=r.length,a=0;a<s;a++){const o=r[a];t[o].parent!==null&&(n[o]=dt(o,t))}return n};const z=se,mt=ht,N={},pt=Object.keys(z);function gt(e){const t=function(...n){const r=n[0];return r==null?r:(r.length>1&&(n=r),e(n))};return"conversion"in e&&(t.conversion=e.conversion),t}function xt(e){const t=function(...n){const r=n[0];if(r==null)return r;r.length>1&&(n=r);const s=e(n);if(typeof s=="object")for(let a=s.length,o=0;o<a;o++)s[o]=Math.round(s[o]);return s};return"conversion"in e&&(t.conversion=e.conversion),t}pt.forEach(e=>{N[e]={},Object.defineProperty(N[e],"channels",{value:z[e].channels}),Object.defineProperty(N[e],"labels",{value:z[e].labels});const t=mt(e);Object.keys(t).forEach(r=>{const s=t[r];N[e][r]=xt(s),N[e][r].raw=gt(s)})});var M=N;const Z=(e,t)=>{switch(t){case"color_xy":{const{x:a=0,y:o=0}=e,i=1-a-o,l=1,u=l/o*a,f=l/o*i;return"#"+M.xyz.hex([u*100,l*100,f*100])}case"color_hs":{const{hue:a=0,saturation:o=0}=e;return"#"+M.hsv.hex([a,o,100])}case"color_rgb":const{r:n,g:r,b:s}=e;return"#"+M.rgb.hex([n,r,s]);default:return"#FFFFFF"}},bt=["#FFFFFF","#FDF4DC","#F4FDFF"],vt=["#FF0018","#FFA52C","#FFFF41","#008018","#0000F9","#86007D"];function ae(e){const{onChange:t,value:n={},format:r,steps:s=[vt,bt],minimal:a,...o}=e,[i,l]=x.useState(Z(n,r));return x.useEffect(()=>{l(Z(n,r))},[n,r]),c.jsxs(c.Fragment,{children:[!a&&s.map(u=>c.jsx("div",{className:"btn-group me-2 float-start border",children:u.map(f=>c.jsx(v,{className:"btn",style:{backgroundColor:f},item:f,title:f,onClick:h=>t({hex:h}),children:"   "},f))},JSON.stringify(u))),c.jsx("input",{type:"color",className:"form-control form-control-color",value:i,style:{minWidth:40},onChange:u=>{u.target.value.toLowerCase()!==i.toLowerCase()&&t({hex:u.target.value})},...o})]})}const yt=e=>{var o;const{deviceState:t,feature:n,onChange:r,minimal:s}=e,a={};for(const i of n.features)a[i.name]=((o=t[n.property])==null?void 0:o[i.property])??0;return c.jsx(ae,{onChange:i=>r(n.endpoint,{color:i}),value:a,format:n.name,minimal:s})},Ct=yt;function j(e){return e===null||["number","string","undefined"].includes(typeof e)}const jt=e=>{const{onChange:t,values:n,value:r,minimal:s}=e;if(s){const a=o=>{const i=n.find(l=>j(l)?l==o.target.value:l.value==o.target.value);t(i)};return c.jsxs("select",{className:"form-control",onChange:a,value:j(r)?r:r.value,children:[c.jsx("option",{hidden:!0,children:"----"},"hided"),n.map(o=>c.jsx("option",{value:j(o)?o:o.value,children:j(o)?o:o.name},j(o)?o:o.name))]})}return c.jsx("div",{className:"btn-group me-2",children:n.map(a=>c.jsx(v,{className:y("btn btn-outline-secondary",{active:j(a)?a===r:a.value===(j(r)?r:r.value)}),onClick:o=>t(o),item:j(a)?a:a.value,title:j(a)?a:a.description,children:j(a)?c.jsx(G,{value:a,name:""}):a.name},j(a)?a:a.name))})},oe=jt,kt=4,St=e=>{const{onChange:t,feature:{access:n=b.ACCESS_WRITE,values:r,endpoint:s,property:a},deviceState:o,minimal:i}=e,l=r.length>kt;return n&b.ACCESS_WRITE?c.jsx(oe,{onChange:u=>t(s,{[a]:u}),values:r,value:o[a],minimal:i||l}):n&b.ACCESS_STATE?c.jsx(A,{...e}):c.jsx(T,{...e})},wt=St,Et={brightness:[0,25,50,75,100].map(e=>({value:Ae(e,[0,100],[0,255]),name:e+"%"})),color_temp:[1e3,2e3,3e3,4e3,5e3,6500].map(e=>({value:1e6/e,name:e+"K"}))},_t=e=>c.jsx(_,{type:"light",...e,stepsConfiguration:Et}),Rt=_t,Nt=e=>c.jsx(_,{type:"lock",...e}),$t=Nt,Ft=e=>{const{onChange:t,value:n,valueStep:r,min:s,max:a,unit:o,steps:i,minimal:l,...u}=e,[f,h]=x.useState(n);x.useEffect(()=>{h(n)},[n]);const m=s!==void 0&&a!==void 0;return c.jsxs("div",{className:"input-group align-items-center",children:[!l&&i?c.jsx(oe,{values:i,onChange:t,value:f}):null,m?c.jsx("input",{min:s,max:a,step:r,type:"range",className:"form-range form-control border-0",value:f,onChange:p=>h(p.target.valueAsNumber),onTouchEnd:()=>t(f),onMouseUp:()=>t(f),...u}):null,(!l||!m)&&c.jsx("input",{type:"number",className:y("form-control",{"ms-1":m}),value:f,step:r,onChange:p=>h(p.target.valueAsNumber),onBlur:()=>t(f),onMouseUp:()=>t(f),min:s,max:a,...u,style:m?{maxWidth:"100px"}:{}}),!l&&o?c.jsx("span",{className:"input-group-text",style:{minWidth:"66px"},children:o}):null]})},ce=Ft,At=e=>{const{feature:{presets:t,access:n=b.ACCESS_WRITE,endpoint:r,property:s,unit:a,value_max:o,value_min:i,value_step:l},deviceState:u,steps:f,onChange:h,minimal:m}=e;return n&b.ACCESS_WRITE?c.jsx(ce,{onChange:p=>h(r,{[s]:p}),value:u[s]??"",min:i,max:o,step:l,steps:t&&t.length?t:f,unit:a,minimal:m}):n&b.ACCESS_STATE?c.jsx(A,{...e}):c.jsx(T,{...e})},Tt=At,Ot=e=>{const{onChange:t,value:n,unit:r,...s}=e,[a,o]=x.useState(n);return x.useEffect(()=>{o(n)},[n]),c.jsxs(x.Fragment,{children:[c.jsx("input",{type:"text",className:"form-control",value:a,onChange:i=>o(i.target.value),onBlur:()=>t(a),...s}),r?c.jsx("span",{className:"input-group-text",style:{minWidth:"66px"},children:r}):null]})},Mt=Ot,Lt=e=>{const{feature:{access:t=b.ACCESS_WRITE,endpoint:n,property:r},deviceState:s,onChange:a}=e;return t&b.ACCESS_WRITE?c.jsx(Mt,{onChange:o=>a(n,{[r]:o}),value:s[r]??""}):t&b.ACCESS_STATE?c.jsx(A,{...e}):c.jsx(T,{...e})},Wt=Lt,It=e=>c.jsx(_,{type:"switch",...e}),Ut=It,zt=e=>c.jsx(_,{type:"fan",...e}),Dt=zt,Pt=e=>{const{onChange:t,value:n,minimal:r,...s}=e,[a,o]=x.useState(n);x.useEffect(()=>{o(n)},[n]);const i=h=>{o(h),t(h)},l=(h,m)=>{const p=[...a];p[m]=h,i(p)},u=h=>()=>{const m=[...a];m.splice(h,1),i(m)},f=()=>i([...a,0]);return a.length===0?c.jsx("div",{className:"mt-3 mb-3 row",children:c.jsx(v,{className:"btn btn-success col-1 me-2",onClick:f,children:"+"})}):c.jsx("div",{children:a.map((h,m)=>{const p=a.length-1===m;return c.jsxs("div",{className:"mt-3 mb-3 row",children:[c.jsx("div",{className:"col-10",children:c.jsx(ce,{onChange:k=>l(k,m),value:h,minimal:r,...s})}),c.jsxs("div",{className:"btn-group col-2",role:"group",children:[c.jsx(v,{className:"btn btn-danger me-2",onClick:u(m),children:"-"}),c.jsx(v,{className:`btn btn-success ${p?"":"invisible"}`,onClick:f,children:"+"})]})]},m)})})},Bt=Pt,Vt=e=>{var f;const{t}=ee(["featureDescriptions"]),{children:n,feature:r,onRead:s}=e,a=ne(r),o=r.property&&r.access&b.ACCESS_READ||a,i=(f=e.parentFeatures)==null?void 0:f[e.parentFeatures.length-1];let l=r.label;i!=null&&i.label&&r.name==="state"&&!["light","switch"].includes(i.type)&&(l=`${i.label} ${r.label.charAt(0).toLowerCase()}${r.label.slice(1)}`);const u=c.jsx("div",{className:"col-12 col-md-3",children:c.jsxs("label",{className:"col-form-label w-100",children:[c.jsxs("div",{className:"d-flex justify-content-between",children:[c.jsx("strong",{title:JSON.stringify(r),children:l}),o?c.jsx(v,{item:r,onClick:h=>{s(r.endpoint,{[h.property]:""})},className:"btn btn-primary btn-sm",children:c.jsx("i",{className:"fa fa-sync"})}):null]}),r.description?c.jsx("small",{className:"d-block text-muted",children:t(r.description)}):null]})});return c.jsxs("div",{className:"row border-bottom py-1 w-100 align-items-center",children:[(o||r.label)&&u,c.jsx("div",{className:"col-12 col-md-9",children:n})]})},qt=e=>{const{onChange:t,value:n,feature:r,parentFeatures:s,...a}=e,[o,i]=x.useState(n);x.useEffect(()=>{i(n)},[n]);const l=m=>{i(m),t(m)},u=(m,p)=>{const k=[...o];typeof m=="object"&&(m={...o[p],...m}),k[p]=m,l(k)},f=m=>()=>{const p=[...o];p.splice(m,1),l(p)},h=()=>i([...o,{}]);return o.length===0?c.jsx("div",{className:"mt-3 mb-3 row",children:c.jsx(v,{className:"btn btn-success col-1 me-2",onClick:h,children:"+"})}):c.jsx("div",{children:o.map((m,p)=>{const k=o.length-1===p;return c.jsxs("div",{className:"mt-3 mb-3 row",children:[c.jsx("div",{className:"col-10",children:c.jsx(L,{feature:r,device:{},deviceState:m,onChange:(S,E)=>{u(E,p)},onRead:(S,E)=>{},featureWrapperClass:Vt,parentFeatures:s})}),c.jsx("div",{className:"col-2",children:c.jsxs("div",{className:"btn-group",role:"group",children:[c.jsx(v,{className:"btn btn-danger me-2",onClick:f(p),children:"-"}),c.jsx(v,{className:`btn btn-success ${k?"":"invisible"}`,onClick:h,children:"+"})]})})]},p)})})},Gt=qt;class Jt extends x.Component{constructor(t){super(t),this.onChange=o=>{const{endpoint:i,property:l}=this.props.feature;this.setState({value:o}),this.isListRoot()||this.props.onChange(i,l?{[l]:o}:o)},this.onApply=()=>{const{value:o}=this.state,{endpoint:i,property:l}=this.props.feature;this.props.onChange(i,l?{[l]:o}:o)},this.isListRoot=()=>{const{parentFeatures:o}=this.props;return o!==void 0&&(o.length===1||o.length===2&&![void 0,"composite","list"].includes(o[1].type))};const{deviceState:n,feature:r}=this.props,{property:s}=r,a=s?n[s]??[]:[];this.state={value:a}}render(){const{feature:t,minimal:n,parentFeatures:r,t:s}=this.props,{access:a=b.ACCESS_WRITE,item_type:o}=t;if(a&b.ACCESS_WRITE){if(o=="number")return c.jsx(Bt,{onChange:this.onChange,value:this.state.value,minimal:n});{const i=[c.jsx(Gt,{feature:o,parentFeatures:[...r,t],onChange:this.onChange,value:this.state.value},"1")];return this.isListRoot()&&i.push(c.jsx("div",{children:c.jsx(v,{className:y("btn btn-primary float-end",{"btn-sm":n}),onClick:this.onApply,children:s("common:apply")})},"2")),i}}else return a&b.ACCESS_STATE?c.jsx(A,{...this.props}):c.jsx(T,{...this.props})}}const Zt=V(["list","common"])(q.memo(Jt)),H=e=>{e=e.replace("#","");const t=parseInt(e,16),n=t>>16&255,r=t>>8&255,s=t&255;return{r:n,g:r,b:s}},Ht=e=>{const{r:t,g:n,b:r}=e;return"#"+M.rgb.hex([t,n,r])};function Kt(e){const{t:n,minimal:r,onChange:s,feature:{endpoint:a,length_min:o,length_max:i},deviceState:l}=e,[u,f]=x.useState(Array(5).fill({x:0,y:0})),h=(g,C)=>{const R=[...u];R[g]=H(C),f(R)},m=()=>{const g=[...u];g.push({r:255,g:255,b:255}),f(g)},p=g=>{const C=[...u];C.splice(g,1),f(C)};x.useEffect(()=>{const{gradient:g}=l;g&&g.length>0&&f(g.map(H))},[l]);const[k,S]=x.useState(!1),[E,w]=x.useState(!1);return x.useEffect(()=>{S(u.length<i),w(u.length>o)},[u,o,i]),c.jsxs("div",{className:"d-flex flex-column gap-1",children:[u.map((g,C)=>c.jsxs("div",{className:"d-flex gap-2",children:[c.jsx(ae,{onChange:R=>{h(C,R.hex)},value:g,format:"color_rgb"}),E&&c.jsx(v,{className:"btn btn-danger me-2",onClick:()=>p(C),children:"-"})]},C)),k&&c.jsx(v,{className:"btn btn-success me-2",onClick:m,children:"+"}),c.jsx("div",{children:c.jsx(v,{className:y("btn btn-primary float-end",{"btn-sm":r}),onClick:()=>s(a,{gradient:u.map(Ht)}),children:n("common:apply")})}),","]})}const Yt=V(["gradient","common"])(q.memo(Kt)),L=e=>{const{feature:t,device:n,deviceState:r,stepsConfiguration:s,onRead:a,onChange:o,featureWrapperClass:i,minimal:l,parentFeatures:u}=e,f={key:JSON.stringify(t),device:n,deviceState:r,onChange:o,onRead:a,featureWrapperClass:i,minimal:l,parentFeatures:u},h={key:JSON.stringify(t),feature:t,onRead:a,deviceState:r,parentFeatures:u};if(Oe(t))return c.jsx(i,{...h,children:c.jsx(tt,{feature:t,...f})});if(Me(t))return c.jsx(i,{...h,children:c.jsx(Tt,{feature:t,...f,steps:s==null?void 0:s[t.name]})});if(Ve(t))return c.jsx(i,{...h,children:c.jsx(Yt,{feature:t,...f})});if(te(t))return c.jsx(i,{...h,children:c.jsx(Zt,{feature:t,...f})});if(Le(t))return c.jsx(i,{...h,children:c.jsx(Wt,{feature:t,...f})});if(We(t))return c.jsx(i,{...h,children:c.jsx(wt,{feature:t,...f})});if(Ie(t))return c.jsx(Rt,{feature:t,...f});if(Ue(t))return c.jsx(Ut,{feature:t,...f});if(ze(t))return c.jsx(ot,{feature:t,...f});if(De(t))return c.jsx($t,{feature:t,...f});if(ne(t))return c.jsx(i,{...h,children:c.jsx(Ct,{feature:t,...f})});if(Be(t))return c.jsx(rt,{feature:t,...f});if(Pe(t))return c.jsx(Dt,{feature:t,...f});if(O(t)){const m=u&&t.property?r[t.property]:r;return c.jsx(i,{...h,children:c.jsx(_,{type:"composite",feature:t,...f,deviceState:m})})}return c.jsx(i,{...h,children:c.jsx("pre",{children:JSON.stringify(t,null,4)})})};class Xt extends x.Component{constructor(){super(...arguments),this.state={},this.onChange=(t,n)=>{const{onChange:r,feature:s}=this.props;this.setState({...this.state,...n}),this.isCompositeRoot()||(O(s)?r(t,s.property?{[s.property]:{...this.state,...n}}:n):r(t,n))},this.isCompositeRoot=()=>{const{parentFeatures:t}=this.props;return O(this.props.feature)&&t!==void 0&&(t.length===1||t.length===2&&![void 0,"composite","list"].includes(t[1].type))},this.onCompositeFeatureApply=()=>{const{deviceState:t,onChange:n,feature:{endpoint:r,property:s}}=this.props,{state:a}=this,o={...t,...a};n(r,s?{[s]:o}:o)},this.onRead=(t,n)=>{const{onRead:r,feature:s}=this.props;O(s)?r&&r(t,s.property?{[s.property]:n}:n):r&&r(t,n)}}render(){const t="MAGIC_NO_ENDPOINT",{t:n,showEndpointLabels:r=!1,feature:s,device:a,deviceState:o,onRead:i,onChange:l,featureWrapperClass:u,minimal:f}=this.props,{features:h=[]}=s,m=this.props.parentFeatures??[],{state:p}=this,k=!f;let S=[];const E={...o,...p};if(k){const w=Ye(h,g=>g.endpoint??t);w[t]&&(S.push(...w[t].map(g=>c.jsx(L,{feature:g,parentFeatures:[...m,s],device:a,deviceState:E,onChange:this.onChange,onRead:this.onRead,featureWrapperClass:u,minimal:f},JSON.stringify(g)))),delete w[t]);for(const g in w){const C=w[g],R=C.length==1;S.push(c.jsxs("div",{children:[r?`Endpoint: ${g}`:null,c.jsx("div",{className:R?"":"ps-4",children:C.map(U=>c.jsx(L,{feature:U,parentFeatures:m,device:a,deviceState:E,onChange:this.onChange,onRead:this.onRead,featureWrapperClass:u,minimal:f},U.name+U.endpoint))})]},g))}}else{const w=h.map(g=>c.jsx(L,{feature:g,parentFeatures:m,device:a,deviceState:E,onChange:this.onChange,onRead:this.onRead,featureWrapperClass:u,minimal:f},JSON.stringify(g)));S=S.concat(w)}return this.isCompositeRoot()&&S.push(c.jsx("div",{children:c.jsx(v,{className:y("btn btn-primary float-end",{"btn-sm":f}),onClick:this.onCompositeFeatureApply,children:n("common:apply")})},s.name+"apply")),S}}function Qt(e,t){return["deviceState","device","feature"].every(r=>Te(e[r],t[r]))}const _=V(["composite","common"])(q.memo(Xt,Qt));function en(e,t,n){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),n=n>s?s:n,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(s);++r<s;)a[r]=e[r+t];return a}var tn=en,nn=tn;function rn(e,t,n){var r=e.length;return n=n===void 0?r:n,!t&&n>=r?e:nn(e,t,n)}var sn=rn,an="\\ud800-\\udfff",on="\\u0300-\\u036f",cn="\\ufe20-\\ufe2f",ln="\\u20d0-\\u20ff",un=on+cn+ln,fn="\\ufe0e\\ufe0f",dn="\\u200d",hn=RegExp("["+dn+an+un+fn+"]");function mn(e){return hn.test(e)}var ie=mn;function pn(e){return e.split("")}var gn=pn,le="\\ud800-\\udfff",xn="\\u0300-\\u036f",bn="\\ufe20-\\ufe2f",vn="\\u20d0-\\u20ff",yn=xn+bn+vn,Cn="\\ufe0e\\ufe0f",jn="["+le+"]",D="["+yn+"]",P="\\ud83c[\\udffb-\\udfff]",kn="(?:"+D+"|"+P+")",ue="[^"+le+"]",fe="(?:\\ud83c[\\udde6-\\uddff]){2}",de="[\\ud800-\\udbff][\\udc00-\\udfff]",Sn="\\u200d",he=kn+"?",me="["+Cn+"]?",wn="(?:"+Sn+"(?:"+[ue,fe,de].join("|")+")"+me+he+")*",En=me+he+wn,_n="(?:"+[ue+D+"?",D,fe,de,jn].join("|")+")",Rn=RegExp(P+"(?="+P+")|"+_n+En,"g");function Nn(e){return e.match(Rn)||[]}var $n=Nn,Fn=gn,An=ie,Tn=$n;function On(e){return An(e)?Tn(e):Fn(e)}var Mn=On,Ln=sn,Wn=ie,In=Mn,Un=I;function zn(e){return function(t){t=Un(t);var n=Wn(t)?In(t):void 0,r=n?n[0]:t.charAt(0),s=n?Ln(n,1).join(""):t.slice(1);return r[e]()+s}}var Dn=zn,Pn=Dn,Bn=Pn("toUpperCase"),pe=Bn,Vn=I,qn=pe;function Gn(e){return qn(Vn(e).toLowerCase())}var Jn=Gn;function Zn(e,t,n,r){var s=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++s]);++s<a;)n=t(n,e[s],s,e);return n}var Hn=Zn;function Kn(e){return function(t){return e==null?void 0:e[t]}}var Yn=Kn,Xn=Yn,Qn={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},er=Xn(Qn),tr=er,nr=tr,rr=I,sr=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ar="\\u0300-\\u036f",or="\\ufe20-\\ufe2f",cr="\\u20d0-\\u20ff",ir=ar+or+cr,lr="["+ir+"]",ur=RegExp(lr,"g");function fr(e){return e=rr(e),e&&e.replace(sr,nr).replace(ur,"")}var dr=fr,hr=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function mr(e){return e.match(hr)||[]}var pr=mr,gr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function xr(e){return gr.test(e)}var br=xr,ge="\\ud800-\\udfff",vr="\\u0300-\\u036f",yr="\\ufe20-\\ufe2f",Cr="\\u20d0-\\u20ff",jr=vr+yr+Cr,xe="\\u2700-\\u27bf",be="a-z\\xdf-\\xf6\\xf8-\\xff",kr="\\xac\\xb1\\xd7\\xf7",Sr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",wr="\\u2000-\\u206f",Er=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ve="A-Z\\xc0-\\xd6\\xd8-\\xde",_r="\\ufe0e\\ufe0f",ye=kr+Sr+wr+Er,Ce="['’]",K="["+ye+"]",Rr="["+jr+"]",je="\\d+",Nr="["+xe+"]",ke="["+be+"]",Se="[^"+ge+ye+je+xe+be+ve+"]",$r="\\ud83c[\\udffb-\\udfff]",Fr="(?:"+Rr+"|"+$r+")",Ar="[^"+ge+"]",we="(?:\\ud83c[\\udde6-\\uddff]){2}",Ee="[\\ud800-\\udbff][\\udc00-\\udfff]",$="["+ve+"]",Tr="\\u200d",Y="(?:"+ke+"|"+Se+")",Or="(?:"+$+"|"+Se+")",X="(?:"+Ce+"(?:d|ll|m|re|s|t|ve))?",Q="(?:"+Ce+"(?:D|LL|M|RE|S|T|VE))?",_e=Fr+"?",Re="["+_r+"]?",Mr="(?:"+Tr+"(?:"+[Ar,we,Ee].join("|")+")"+Re+_e+")*",Lr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Wr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Ir=Re+_e+Mr,Ur="(?:"+[Nr,we,Ee].join("|")+")"+Ir,zr=RegExp([$+"?"+ke+"+"+X+"(?="+[K,$,"$"].join("|")+")",Or+"+"+Q+"(?="+[K,$+Y,"$"].join("|")+")",$+"?"+Y+"+"+X,$+"+"+Q,Wr,Lr,je,Ur].join("|"),"g");function Dr(e){return e.match(zr)||[]}var Pr=Dr,Br=pr,Vr=br,qr=I,Gr=Pr;function Jr(e,t,n){return e=qr(e),t=n?void 0:t,t===void 0?Vr(e)?Gr(e):Br(e):e.match(t)||[]}var Zr=Jr,Hr=Hn,Kr=dr,Yr=Zr,Xr="['’]",Qr=RegExp(Xr,"g");function es(e){return function(t){return Hr(Yr(Kr(t).replace(Qr,"")),e,"")}}var Ne=es,ts=Jn,ns=Ne,rs=ns(function(e,t,n){return t=t.toLowerCase(),e+(n?ts(t):t)}),ss=rs;const as=B(ss);var os=Ne,cs=pe,is=os(function(e,t,n){return e+(n?" ":"")+cs(t)}),ls=is;const us=B(ls),fs=e=>{let t="fa-thermometer-empty";return e>=30?t="fa-thermometer-full":e>=25?t="fa-thermometer-three-quarters":e>=20?t="fa-thermometer-half":e>=15&&(t="fa-thermometer-quarter"),t},ds={humidity:["text-info","fa-tint"],illuminance:["fa-sun"],pressure:["fa-cloud-download-alt"],co2:["fa-atom","text-warning"],voltage:["fa-bolt","text-success"],state:["fa-star-half-alt"],brightness:["fa-sun"],occupancy:["fa-walking"],presence:["fa-person-rays"],current:["fa-copyright","text-warning"],power:["fa-power-off","text-success"],energy:["fa-plug","text-info"],frequency:["fa-wave-square"],tamper:["fa-exclamation-circle","text-danger"],smoke:["fa-smoking","text-danger"],radiation_dose_per_hour:["fa-radiation","text-danger"],radioactive_events_per_minute:["fa-radiation-alt","text-warning"],power_factor:["fa-industry","text-danger"],mode:["fa-user-cog","text-warning"],sound:["fa-volume-up","text-info"],position:["fa-percent","text-info"],alarm:["fa-exclamation-triangle","text-danger"],color_xy:["fa-palette"],color_hs:["fa-palette"],color_temp:["fa-sliders-h"],illuminance_lux:["fa-sun"],soil_moisture:["fa-fill-drip"],water_leak:["fa-water"],week:["fa-calendar-week"],workdays_schedule:["fa-calendar-day","text-info"],holidays_schedule:["fa-calendar-day","text-danger"],away_mode:["fa-plane","text-info"],vibration:["fa-water fa-rotate-270"],power_outage_count:["fa-plug-circle-xmark"],action:["fa-a"],angle_x:["fa-x"],angle_y:["fa-y"],angle_z:["fa-z"],side:["fa-cube"],humidity_alarm:["fa-triangle-exclamation"],temperature_alarm:["fa-triangle-exclamation"]},hs=(e,t)=>{let n=[];switch(e){case"device_temperature":case"temperature":case"local_temperature":n.push(y("text-danger",fs(t)));break;case"contact":n.push(y({"fa-door-closed text-muted":t,"fa-door-open text-primary":!t}));break;case"occupancy":n.push(y({"text-warning":t}));break;case"presence":n.push(y({"text-warning":t}));break;case"tamper":n.push(y({"fa-beat-fade":t}));break;case"water_leak":n.push(y({"fa-beat-fade text-primary":t}));break;case"vibration":n.push(y({"fa-shake fa-rotate-270 text-primary":t}));break}return n=[...n,...ds[e]??[]],n.length||n.push("invisible"),y(n)},xs=e=>{const{children:t,feature:n,deviceState:r={}}=e,s=hs(n.name,r[n.property]),{t:a}=ee(["featureNames"]),o=n.name==="state"?n.property:n.name,i=us(as(o));return c.jsxs("div",{className:"d-flex align-items-center",children:[s&&c.jsx("div",{className:"me-1",children:c.jsx("i",{className:`fa fa-fw ${s}`})}),c.jsxs("div",{className:"flex-shrink-1 flex-grow-1",children:[a(o,{defaultValue:i}),n.endpoint?` (${n.endpoint})`:null]}),c.jsx("div",{className:"flex-shrink-1",children:t})]})};export{xs as D,L as F,_ as T,Vt as a,Be as b,b as c,Ye as g,Ie as i};
@@ -0,0 +1 @@
1
+ import{r as g,j as o,R as x,u as w,b as S}from"./index-6f55efcd.js";import{A as P,b as v}from"./index-1b114912.js";function p(r){"@babel/helpers - typeof";return p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(r)}function E(r,e){if(p(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(p(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function A(r){var e=E(r,"string");return p(e)=="symbol"?e:e+""}function L(r,e,t){return(e=A(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var N=function(r){var e=r.decode,t=e===void 0?!0:e,n=r.crossOrigin,s=n===void 0?"":n;return function(u){return new Promise(function(l,f){var a=new Image;s&&(a.crossOrigin=s),a.onload=function(){t&&a.decode?a.decode().then(l).catch(f):l()},a.onerror=f,a.src=u})}};function y(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(r,s).enumerable})),t.push.apply(t,n)}return t}function d(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?y(Object(t),!0).forEach(function(n){L(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):y(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var _=function(e){return e.filter(function(t){return t})},D=function(e){return Array.isArray(e)?e:[e]},c={},I=function(e,t){var n=!1;return new Promise(function(s,u){var l=function(a){return t(a).then(function(){n=!0,s(a)})};e.reduce(function(f,a){return f.catch(function(){if(!n)return l(a)})},l(e.shift())).catch(u)})};function R(r){var e=r.srcList,t=r.imgPromise,n=t===void 0?N({decode:!0}):t,s=r.useSuspense,u=s===void 0?!0:s,l=g.useState(!1),f=l[1],a=_(D(e)),i=a.join("");if(c[i]||(c[i]={promise:I(a,n),cache:"pending",error:null}),c[i].cache==="resolved")return{src:c[i].src,isLoading:!1,error:null};if(c[i].cache==="rejected"){if(u)throw c[i].error;return{isLoading:!1,error:c[i].error,src:void 0}}if(c[i].promise.then(function(m){c[i]=d(d({},c[i]),{},{cache:"resolved",src:m}),u||f(i)}).catch(function(m){c[i]=d(d({},c[i]),{},{cache:"rejected",error:m}),u||f(i)}),u)throw c[i].promise;return{isLoading:!0,src:void 0,error:null}}function b(r){const{device:e,type:t,...n}=r,{src:s}=R({srcList:P.map(u=>u(e)).filter(Boolean)});return t==="svg"?o.jsx("image",{crossOrigin:"anonymous",...n,href:s}):o.jsx("img",{alt:"",crossOrigin:"anonymous",src:s})}class h extends x.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?o.jsx(o.Fragment,{children:"ERROR"}):this.props.children}}function k(r){const{t:e}=w("zigbee"),{device:t={},disabled:n,deviceStatus:s,type:u="img",className:l,...f}=r;if(u==="svg")return o.jsx(g.Suspense,{fallback:o.jsx("image",{crossOrigin:"anonymous",...f,href:v}),children:o.jsx(h,{children:o.jsx(b,{type:"svg",device:t,...f})})});const i=((s==null?void 0:s.update)??{}).state==="updating"?o.jsx("i",{title:e("updating_firmware"),className:"fa fa-sync fa-spin position-absolute bottom-0 right-0"}):null,m=t.interviewing?o.jsx("i",{title:e("interviewing"),className:"fa fa-spinner fa-spin position-absolute bottom-0 right-0"}):null,j=!t.interviewing&&!t.interview_completed,O=n?o.jsx("i",{title:e("device_disabled"),className:"fa fa-ban position-absolute bottom-0 right-0"}):null;return o.jsxs("div",{className:S(l,"position-relative"),...f,children:[o.jsx(g.Suspense,{fallback:o.jsx("img",{alt:"",src:v}),children:o.jsx(h,{children:o.jsx(b,{device:t})})}),m,i,O,j&&o.jsx("i",{title:e("interview_failed"),className:"fa fa-exclamation-triangle position-absolute top-0 right-0 text-danger"})]})}export{k as D};
@@ -1 +1 @@
1
- import{r as D,m as S,u as h,j as e,B as b,n as y,c as G,a as R}from"./index-e3646692.js";import{D as E,E as F,o as w,R as C,A as P}from"./RecallRemove-1836c5da.js";import{D as A}from"./DashboardDevice-94602d40.js";import{D as k}from"./DashboardFeatureWrapper-3ad13437.js";import"./index-579b95d0.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./DeviceImage-454b21dc.js";import"./index-b99027cb.js";import"./isEqual-20a5450b.js";function I(t){const[c,i]=D.useState(""),[r,m]=D.useState(""),{addDeviceToGroup:v,group:d,devices:n}=t,l=n[r],o=S(l),{t:s}=h(["groups","zigbee"]),x=()=>{v(c?`${r}/${c}`:r,d.friendly_name)},g=a=>{const p=S(a);m(a.ieee_address),i(p[0])},u=a=>{i(a)};return e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:s("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(E,{label:s("zigbee:device"),value:r,devices:n,onChange:g}),e.jsx(F,{label:s("zigbee:endpoint"),values:o,value:c,onChange:u})]}),e.jsx("div",{className:"d-flex",children:e.jsx("div",{className:"ms-auto",children:e.jsx(b,{type:"button",onClick:x,className:"btn btn-primary",children:s("add_to_group")})})})]})}function T(t){const{t:c}=h("devicePage"),{removeDeviceFromGroup:i,groupAddress:r,devices:m,deviceStates:v,bridgeInfo:d}=t,{endpoint:n,ieee_address:l}=r,o=m[l]??{ieee_address:l,friendly_name:c("unknown_device")},s=v[o.friendly_name]??{},{setDeviceState:x,getDeviceState:g}=t;let u=[];return o.definition&&(u=(o.definition.exposes??[]).map(a=>w(a,s)).filter(a=>a)),e.jsx(A,{feature:{features:u},device:o,endpoint:n,deviceState:s,onChange:(a,p)=>x(o.friendly_name,p),onRead:(a,p)=>g(o.friendly_name,p),featureWrapperClass:k,lastSeenType:d.config.advanced.last_seen,controls:e.jsx(b,{prompt:!0,item:o.friendly_name,onClick:i,className:"btn btn-danger btn-sm float-right",children:e.jsx("i",{className:"fa fa-trash"})})})}function $(t){const{group:c,removeDeviceFromGroup:i,devices:r,deviceStates:m,bridgeInfo:v}=t,{setStateValue:d,setDeviceState:n,getDeviceState:l}=t,o=s=>{i(c.friendly_name,s)};return e.jsx("div",{className:"row",children:c.members.map(s=>e.jsx(T,{removeDeviceFromGroup:o,devices:r,groupAddress:s,deviceStates:m,bridgeInfo:v,setStateValue:d,setDeviceState:n,getDeviceState:l},`${s.ieee_address}-${s.endpoint}`))})}function z(t){const{devices:c,deviceStates:i,bridgeInfo:r,groups:m}=t,{match:v}=t,d=parseInt(v.params.groupId,10),n=m.find(f=>f.id===d)||{id:d,friendly_name:"Unknown group",members:[],scenes:[]},{setStateValue:l,setDeviceState:o,getDeviceState:s}=t,{addDeviceToGroup:x,removeDeviceFromGroup:g}=t,{sceneStore:u,sceneRemoveAll:a,sceneRecall:p,sceneRemove:_}=t,{t:N}=h(["groups"]);return e.jsxs("div",{children:[e.jsxs("h5",{children:[N("group_name"),": ",n.friendly_name," (#",n.id,")"]}),e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(I,{addDeviceToGroup:x,devices:c,group:n})})})})}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(C,{target:n,sceneStore:u,sceneRecall:p,sceneRemove:_,sceneRemoveAll:a,deviceState:{}})})})})}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(P,{sceneStore:u,target:n,deviceState:{},setDeviceState:(f,j)=>Promise.resolve()})})})})})]}),e.jsx($,{group:n,devices:c,deviceStates:i,bridgeInfo:r,removeDeviceFromGroup:(f,j)=>{g(j,f)},setStateValue:l,setDeviceState:o,getDeviceState:s})]})}const V=y(z),W=["groups","devices","deviceStates","bridgeInfo"],X=G(W,R)(V);export{X as ConnectedGroupPage};
1
+ import{r as D,m as S,u as h,j as e,B as b,n as y,c as G,a as R}from"./index-6f55efcd.js";import{D as E,E as F,o as w,R as C,A as P}from"./RecallRemove-ea02e389.js";import{D as A}from"./DashboardDevice-729bd8ca.js";import{D as k}from"./DashboardFeatureWrapper-9ec37019.js";import"./index-72a1e3cc.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./DeviceImage-66f70063.js";import"./index-1b114912.js";import"./isEqual-0689f192.js";function I(t){const[c,i]=D.useState(""),[r,m]=D.useState(""),{addDeviceToGroup:v,group:d,devices:n}=t,l=n[r],o=S(l),{t:s}=h(["groups","zigbee"]),x=()=>{v(c?`${r}/${c}`:r,d.friendly_name)},g=a=>{const p=S(a);m(a.ieee_address),i(p[0])},u=a=>{i(a)};return e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:s("add_to_group_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx(E,{label:s("zigbee:device"),value:r,devices:n,onChange:g}),e.jsx(F,{label:s("zigbee:endpoint"),values:o,value:c,onChange:u})]}),e.jsx("div",{className:"d-flex",children:e.jsx("div",{className:"ms-auto",children:e.jsx(b,{type:"button",onClick:x,className:"btn btn-primary",children:s("add_to_group")})})})]})}function T(t){const{t:c}=h("devicePage"),{removeDeviceFromGroup:i,groupAddress:r,devices:m,deviceStates:v,bridgeInfo:d}=t,{endpoint:n,ieee_address:l}=r,o=m[l]??{ieee_address:l,friendly_name:c("unknown_device")},s=v[o.friendly_name]??{},{setDeviceState:x,getDeviceState:g}=t;let u=[];return o.definition&&(u=(o.definition.exposes??[]).map(a=>w(a,s)).filter(a=>a)),e.jsx(A,{feature:{features:u},device:o,endpoint:n,deviceState:s,onChange:(a,p)=>x(o.friendly_name,p),onRead:(a,p)=>g(o.friendly_name,p),featureWrapperClass:k,lastSeenType:d.config.advanced.last_seen,controls:e.jsx(b,{prompt:!0,item:o.friendly_name,onClick:i,className:"btn btn-danger btn-sm float-right",children:e.jsx("i",{className:"fa fa-trash"})})})}function $(t){const{group:c,removeDeviceFromGroup:i,devices:r,deviceStates:m,bridgeInfo:v}=t,{setStateValue:d,setDeviceState:n,getDeviceState:l}=t,o=s=>{i(c.friendly_name,s)};return e.jsx("div",{className:"row",children:c.members.map(s=>e.jsx(T,{removeDeviceFromGroup:o,devices:r,groupAddress:s,deviceStates:m,bridgeInfo:v,setStateValue:d,setDeviceState:n,getDeviceState:l},`${s.ieee_address}-${s.endpoint}`))})}function z(t){const{devices:c,deviceStates:i,bridgeInfo:r,groups:m}=t,{match:v}=t,d=parseInt(v.params.groupId,10),n=m.find(f=>f.id===d)||{id:d,friendly_name:"Unknown group",members:[],scenes:[]},{setStateValue:l,setDeviceState:o,getDeviceState:s}=t,{addDeviceToGroup:x,removeDeviceFromGroup:g}=t,{sceneStore:u,sceneRemoveAll:a,sceneRecall:p,sceneRemove:_}=t,{t:N}=h(["groups"]);return e.jsxs("div",{children:[e.jsxs("h5",{children:[N("group_name"),": ",n.friendly_name," (#",n.id,")"]}),e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(I,{addDeviceToGroup:x,devices:c,group:n})})})})}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(C,{target:n,sceneStore:u,sceneRecall:p,sceneRemove:_,sceneRemoveAll:a,deviceState:{}})})})})}),e.jsx("div",{className:"col-12 col-sm-4 col-xxl-4 d-flex",children:e.jsx("div",{className:"card w-100",children:e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"form-group",children:e.jsx(P,{sceneStore:u,target:n,deviceState:{},setDeviceState:(f,j)=>Promise.resolve()})})})})})]}),e.jsx($,{group:n,devices:c,deviceStates:i,bridgeInfo:r,removeDeviceFromGroup:(f,j)=>{g(j,f)},setStateValue:l,setDeviceState:o,getDeviceState:s})]})}const V=y(z),W=["groups","devices","deviceStates","bridgeInfo"],X=G(W,R)(V);export{X as ConnectedGroupPage};
@@ -1 +1 @@
1
- import{s as y,j as t,r as o,b}from"./index-e3646692.js";import{g as u,r as c,G as E,p as F}from"./persist-c36f67ac.js";const P=(r,x,l,a)=>{if(a){const{instanceId:i}=a,{sortBy:n,globalFilter:d}=r;F(i,{sortBy:n,globalFilter:d})}return r},R=({columns:r,data:x,id:l,initialState:a={}})=>{const i=y.get(u(l))||a,{getTableProps:n,getTableBodyProps:d,headerGroups:g,rows:h,prepareRow:m,state:j,visibleColumns:S,setGlobalFilter:f}=c.useTable({instanceId:l,stateReducer:P,columns:r,data:x,autoResetSortBy:!1,autoResetFilters:!1,initialState:i},c.useGlobalFilter,c.useSortBy);return t.jsxs("table",{...n(),className:"table responsive",children:[t.jsxs("thead",{children:[t.jsx("tr",{children:t.jsx("th",{colSpan:S.length+1,children:t.jsx(E,{globalFilter:j.globalFilter,setGlobalFilter:f})})}),g.map((s,p)=>o.createElement("tr",{...s.getHeaderGroupProps(),key:p},t.jsx("th",{className:"text-nowrap",children:"#"}),s.headers.map(e=>o.createElement("th",{className:"text-nowrap",...e.getHeaderProps(e.getSortByToggleProps()),key:e.id},t.jsx("span",{className:b({"btn-link me-1":e.canSort}),children:e.render("Header")}),t.jsx("span",{children:t.jsx("i",{className:b("fa",{"fa-sort-amount-down invisible":!e.isSorted,"fa-sort-amount-down-alt":e.isSorted&&!e.isSortedDesc,"fa-sort-amount-down":e.isSorted&&e.isSortedDesc})})})))))]}),t.jsx("tbody",{...d(),children:h.map((s,p)=>(m(s),o.createElement("tr",{...s.getRowProps(),key:s.id},t.jsx("td",{children:t.jsx("div",{className:"font-weight-bold",children:p+1})}),s.cells.map(e=>o.createElement("td",{...e.getCellProps(),key:e.column.id},e.render("Cell"))))))})]})};export{R as T};
1
+ import{s as y,j as t,r as o,b}from"./index-6f55efcd.js";import{g as u,r as c,G as E,p as F}from"./persist-86b6ee4d.js";const P=(r,x,l,a)=>{if(a){const{instanceId:i}=a,{sortBy:n,globalFilter:d}=r;F(i,{sortBy:n,globalFilter:d})}return r},R=({columns:r,data:x,id:l,initialState:a={}})=>{const i=y.get(u(l))||a,{getTableProps:n,getTableBodyProps:d,headerGroups:g,rows:h,prepareRow:m,state:j,visibleColumns:S,setGlobalFilter:f}=c.useTable({instanceId:l,stateReducer:P,columns:r,data:x,autoResetSortBy:!1,autoResetFilters:!1,initialState:i},c.useGlobalFilter,c.useSortBy);return t.jsxs("table",{...n(),className:"table responsive",children:[t.jsxs("thead",{children:[t.jsx("tr",{children:t.jsx("th",{colSpan:S.length+1,children:t.jsx(E,{globalFilter:j.globalFilter,setGlobalFilter:f})})}),g.map((s,p)=>o.createElement("tr",{...s.getHeaderGroupProps(),key:p},t.jsx("th",{className:"text-nowrap",children:"#"}),s.headers.map(e=>o.createElement("th",{className:"text-nowrap",...e.getHeaderProps(e.getSortByToggleProps()),key:e.id},t.jsx("span",{className:b({"btn-link me-1":e.canSort}),children:e.render("Header")}),t.jsx("span",{children:t.jsx("i",{className:b("fa",{"fa-sort-amount-down invisible":!e.isSorted,"fa-sort-amount-down-alt":e.isSorted&&!e.isSortedDesc,"fa-sort-amount-down":e.isSorted&&e.isSortedDesc})})})))))]}),t.jsx("tbody",{...d(),children:h.map((s,p)=>(m(s),o.createElement("tr",{...s.getRowProps(),key:s.id},t.jsx("td",{children:t.jsx("div",{className:"font-weight-bold",children:p+1})}),s.cells.map(e=>o.createElement("td",{...e.getCellProps(),key:e.column.id},e.render("Cell"))))))})]})};export{R as T};
@@ -1 +1 @@
1
- import{u as f,j as e,P as y,r as b,B as j}from"./index-e3646692.js";import{i as _,g as S,T as C,D as F}from"./DashboardFeatureWrapper-3ad13437.js";function P(s){const{value:n,values:l,disabled:m,onChange:t,label:a,...r}=s,{t:p}=f("common"),c=i=>{t(i.target.value)},o=l.length==1,u=l.map(i=>e.jsx("option",{value:i,children:i},i));return u.unshift(e.jsx("option",{hidden:!0,children:p("select_endpoint")},"hided")),e.jsxs("div",{className:"form-group",children:[a&&e.jsx("label",{className:"form-label",children:a}),e.jsx("select",{disabled:n&&o||m,value:n,className:"form-control",title:o?p("the_only_endpoint"):"",onChange:c,...r,children:u})]})}function R(s){const{t:n}=f("common"),{devices:l,value:m,label:t,onChange:a,groups:r=[],...p}=s,c=i=>{const{value:d}=i.target;if(l[d])a(l[d],"device");else{const x=r.find(h=>parseInt(d,10)===h.id);a(x,"group")}};let o=[e.jsx("option",{hidden:!0,children:n("select_device")},"hidden")];const u=[];if(Object.values(l).sort((i,d)=>i.friendly_name.localeCompare(d.friendly_name)).forEach(i=>{var d;u.push(e.jsx("option",{title:(d=i.definition)==null?void 0:d.description,value:i.ieee_address,children:y(i)},i.ieee_address))}),r&&r.length){const i=r.map(d=>e.jsx("option",{value:d.id,children:d.friendly_name},d.friendly_name));o.push(e.jsx("optgroup",{label:n("groups"),children:i},"Groups")),o.push(e.jsx("optgroup",{label:n("devices"),children:u},"Devices"))}else o=o.concat(u);return e.jsxs("div",{className:"form-group",children:[t&&e.jsx("label",{className:"form-label",children:t}),e.jsx("select",{value:m,onChange:c,className:"form-control",...p,children:o})]})}const k=["state","color_temp","color","transition","brightness"];function v(s,n={}){let{property:l,name:m,features:t}=s;if(_(s)&&(t=t.map(a=>v(a,l?n[l]:n)).filter(a=>a),t=Object.values(S(t,"property")).map(a=>a[0])),k.includes(m)||Array.isArray(t)&&t.length>0)return{...s,features:t}}function g(s){if(s.endpoints){const n=[];return Object.entries(s.endpoints).forEach(([l,m])=>{var t;(t=m.scenes)==null||t.forEach(a=>n.push({...a,endpoint:l}))}),n}else if(s.scenes)return s.scenes;return[]}const D=(s,n=[])=>s>=0&&s<=255&&!n.find(l=>l.id==s);function I(s){var x;const{target:n,deviceState:l,sceneStore:m,setDeviceState:t}=s,a=g(n),{t:r}=f("scene"),[p,c]=b.useState(0),[o,u]=b.useState(""),i=`Scene ${p}`;let d=[];return n.definition&&(d=(((x=n.definition)==null?void 0:x.exposes)??[]).map(h=>v(h,l)).filter(h=>h)),e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:r("add_update_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{htmlFor:"add-scene",className:"form-label",children:r("scene_id")}),e.jsx("input",{id:"add-scene",className:"form-control",min:0,max:255,value:p,type:"number",onChange:h=>c(h.target.valueAsNumber)}),e.jsx("label",{htmlFor:"add-scene-name",className:"form-label",children:r("scene_name")}),e.jsx("input",{id:"add-scene-name",className:"form-control",value:o,type:"string",onChange:h=>u(h.target.value),placeholder:i}),e.jsx(C,{feature:{features:d},className:"row",type:"composite",device:n,deviceState:l,onChange:(h,N)=>{t(n.friendly_name,N)},featureWrapperClass:F,minimal:!0})]}),e.jsx("div",{className:"d-flex",children:e.jsx("button",{disabled:!D(p,a),type:"submit",onClick:()=>m(n.friendly_name,{id:p,name:o||i}),className:"btn btn-primary ms-auto",children:r("store")})})]})}function E(s){const{t:n}=f("scene"),{onSceneSelected:l,scenes:m=[],value:t}=s,a=c=>{const[o,u]=c.target.value.split("-");l({id:parseInt(o,10),endpoint:u})},r=e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"rr-scene",className:"form-label",children:n("scene_name")}),e.jsxs("select",{onChange:a,id:"rr-scene",className:"form-select",children:[e.jsx("option",{hidden:!0,children:n("select_scene")},"hidden"),m.map(c=>e.jsxs("option",{value:`${c.id}-${c.endpoint}`,children:[c.id,": ",c.name]},`${c.id}-${c.endpoint}`))]})]}),p=e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"rr-scene",className:"form-label",children:n("scene_id")}),e.jsx("input",{min:0,value:t.id,type:"number",className:"form-control",id:"rr-scene",onChange:c=>l({id:c.target.valueAsNumber,endpoint:void 0})})]});return e.jsx(e.Fragment,{children:m.length>0?r:p})}function $(s){const{sceneRecall:n,sceneRemove:l,sceneRemoveAll:m,target:t}=s,{t:a}=f("scene"),[r,p]=b.useState({id:0,endpoint:void 0}),c=r.id===void 0,o=g(t),{friendly_name:u}=t;return e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:a("manage_scenes_header")}),e.jsx("div",{className:"mb-3",children:e.jsx(E,{onSceneSelected:p,value:r,scenes:o})}),e.jsxs("div",{className:"d-flex",children:[e.jsxs("div",{className:"btn-group ms-auto pe-1",children:[e.jsx("button",{disabled:c,onClick:()=>n(u,r.id,r.endpoint),type:"submit",className:"btn btn-success",children:a("recall")}),e.jsx(j,{disabled:c,prompt:!0,onClick:()=>l(u,r.id,r.endpoint),type:"submit",className:"btn btn-danger",children:a("remove")})]}),e.jsx(j,{prompt:!0,onClick:()=>m(u,""),type:"submit",className:"btn btn-danger",children:a("remove_all")})]})]})}export{I as A,R as D,P as E,$ as R,v as o};
1
+ import{u as f,j as e,K as y,r as b,B as j}from"./index-6f55efcd.js";import{i as _,g as S,T as C,D as F}from"./DashboardFeatureWrapper-9ec37019.js";function R(s){const{value:n,values:l,disabled:m,onChange:t,label:a,...r}=s,{t:p}=f("common"),c=i=>{t(i.target.value)},o=l.length==1,u=l.map(i=>e.jsx("option",{value:i,children:i},i));return u.unshift(e.jsx("option",{hidden:!0,children:p("select_endpoint")},"hided")),e.jsxs("div",{className:"form-group",children:[a&&e.jsx("label",{className:"form-label",children:a}),e.jsx("select",{disabled:n&&o||m,value:n,className:"form-control",title:o?p("the_only_endpoint"):"",onChange:c,...r,children:u})]})}function I(s){const{t:n}=f("common"),{devices:l,value:m,label:t,onChange:a,groups:r=[],...p}=s,c=i=>{const{value:d}=i.target;if(l[d])a(l[d],"device");else{const x=r.find(h=>parseInt(d,10)===h.id);a(x,"group")}};let o=[e.jsx("option",{hidden:!0,children:n("select_device")},"hidden")];const u=[];if(Object.values(l).sort((i,d)=>i.friendly_name.localeCompare(d.friendly_name)).forEach(i=>{var d;u.push(e.jsx("option",{title:(d=i.definition)==null?void 0:d.description,value:i.ieee_address,children:y(i)},i.ieee_address))}),r&&r.length){const i=r.map(d=>e.jsx("option",{value:d.id,children:d.friendly_name},d.friendly_name));o.push(e.jsx("optgroup",{label:n("groups"),children:i},"Groups")),o.push(e.jsx("optgroup",{label:n("devices"),children:u},"Devices"))}else o=o.concat(u);return e.jsxs("div",{className:"form-group",children:[t&&e.jsx("label",{className:"form-label",children:t}),e.jsx("select",{value:m,onChange:c,className:"form-control",...p,children:o})]})}const k=["state","color_temp","color","transition","brightness"];function v(s,n={}){let{property:l,name:m,features:t}=s;if(_(s)&&(t=t.map(a=>v(a,l?n[l]:n)).filter(a=>a),t=Object.values(S(t,"property")).map(a=>a[0])),k.includes(m)||Array.isArray(t)&&t.length>0)return{...s,features:t}}function g(s){if(s.endpoints){const n=[];return Object.entries(s.endpoints).forEach(([l,m])=>{var t;(t=m.scenes)==null||t.forEach(a=>n.push({...a,endpoint:l}))}),n}else if(s.scenes)return s.scenes;return[]}const D=(s,n=[])=>s>=0&&s<=255&&!n.find(l=>l.id==s);function P(s){var x;const{target:n,deviceState:l,sceneStore:m,setDeviceState:t}=s,a=g(n),{t:r}=f("scene"),[p,c]=b.useState(0),[o,u]=b.useState(""),i=`Scene ${p}`;let d=[];return n.definition&&(d=(((x=n.definition)==null?void 0:x.exposes)??[]).map(h=>v(h,l)).filter(h=>h)),e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:r("add_update_header")}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{htmlFor:"add-scene",className:"form-label",children:r("scene_id")}),e.jsx("input",{id:"add-scene",className:"form-control",min:0,max:255,value:p,type:"number",onChange:h=>c(h.target.valueAsNumber)}),e.jsx("label",{htmlFor:"add-scene-name",className:"form-label",children:r("scene_name")}),e.jsx("input",{id:"add-scene-name",className:"form-control",value:o,type:"string",onChange:h=>u(h.target.value),placeholder:i}),e.jsx(C,{feature:{features:d},className:"row",type:"composite",device:n,deviceState:l,onChange:(h,N)=>{t(n.friendly_name,N)},featureWrapperClass:F,minimal:!0})]}),e.jsx("div",{className:"d-flex",children:e.jsx("button",{disabled:!D(p,a),type:"submit",onClick:()=>m(n.friendly_name,{id:p,name:o||i}),className:"btn btn-primary ms-auto",children:r("store")})})]})}function E(s){const{t:n}=f("scene"),{onSceneSelected:l,scenes:m=[],value:t}=s,a=c=>{const[o,u]=c.target.value.split("-");l({id:parseInt(o,10),endpoint:u})},r=e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"rr-scene",className:"form-label",children:n("scene_name")}),e.jsxs("select",{onChange:a,id:"rr-scene",className:"form-select",children:[e.jsx("option",{hidden:!0,children:n("select_scene")},"hidden"),m.map(c=>e.jsxs("option",{value:`${c.id}-${c.endpoint}`,children:[c.id,": ",c.name]},`${c.id}-${c.endpoint}`))]})]}),p=e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"rr-scene",className:"form-label",children:n("scene_id")}),e.jsx("input",{min:0,value:t.id,type:"number",className:"form-control",id:"rr-scene",onChange:c=>l({id:c.target.valueAsNumber,endpoint:void 0})})]});return e.jsx(e.Fragment,{children:m.length>0?r:p})}function $(s){const{sceneRecall:n,sceneRemove:l,sceneRemoveAll:m,target:t}=s,{t:a}=f("scene"),[r,p]=b.useState({id:0,endpoint:void 0}),c=r.id===void 0,o=g(t),{friendly_name:u}=t;return e.jsxs(e.Fragment,{children:[e.jsx("h3",{children:a("manage_scenes_header")}),e.jsx("div",{className:"mb-3",children:e.jsx(E,{onSceneSelected:p,value:r,scenes:o})}),e.jsxs("div",{className:"d-flex",children:[e.jsxs("div",{className:"btn-group ms-auto pe-1",children:[e.jsx("button",{disabled:c,onClick:()=>n(u,r.id,r.endpoint),type:"submit",className:"btn btn-success",children:a("recall")}),e.jsx(j,{disabled:c,prompt:!0,onClick:()=>l(u,r.id,r.endpoint),type:"submit",className:"btn btn-danger",children:a("remove")})]}),e.jsx(j,{prompt:!0,onClick:()=>m(u,""),type:"submit",className:"btn btn-danger",children:a("remove_all")})]})]})}export{P as A,I as D,R as E,$ as R,v as o};
@@ -0,0 +1 @@
1
+ import{_ as x}from"./_getAllKeysIn-a7208d0f.js";import{aG as g,aw as u,ae as l,aK as m}from"./index-6f55efcd.js";var I=x,K=g,p=u,f=l,O=m;function P(r,n,o,d){if(!f(r))return r;n=K(n,r);for(var i=-1,e=n.length,v=e-1,a=r;a!=null&&++i<e;){var s=O(n[i]),t=o;if(s==="__proto__"||s==="constructor"||s==="prototype")return r;if(i!=v){var _=a[s];t=d?d(_,s,a):void 0,t===void 0&&(t=f(_)?_:p(n[i+1])?[]:{})}I(a,s,t),a=a[s]}return r}var h=P;export{h as _};
@@ -0,0 +1 @@
1
+ import{a8 as t,av as n,ae as o,af as y,aL as i,ap as v,aM as l,an as u,ab as p,aN as _,aO as g}from"./index-6f55efcd.js";var b=t,f=n,P=Object.prototype,O=P.hasOwnProperty;function I(r,a,s){var e=r[a];(!(O.call(r,a)&&f(e,s))||s===void 0&&!(a in r))&&b(r,a,s)}var W=I;function A(r){var a=[];if(r!=null)for(var s in Object(r))a.push(s);return a}var K=A,h=o,m=y,c=K,S=Object.prototype,$=S.hasOwnProperty;function w(r){if(!h(r))return c(r);var a=m(r),s=[];for(var e in r)e=="constructor"&&(a||!$.call(r,e))||s.push(e);return s}var L=w,V=i,k=L,G=v;function d(r){return G(r)?V(r,!0):k(r)}var q=d,x=l,M=x(Object.getPrototypeOf,Object),N=M,z=u,B=N,C=p,D=_,E=Object.getOwnPropertySymbols,F=E?function(r){for(var a=[];r;)z(a,C(r)),r=B(r);return a}:D,H=F,J=g,Q=H,R=q;function T(r){return J(r,R,Q)}var X=T;export{W as _,H as a,N as b,X as c,q as k};