zigbee2mqtt-frontend 0.7.2 → 0.7.4

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 (85) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/assets/{Availability-8b662394.js → Availability-83a15f1c.js} +1 -1
  3. package/dist/assets/Availability-83a15f1c.js.br +0 -0
  4. package/dist/assets/{CodeEditor-bd2763d7.js → CodeEditor-b52a9395.js} +1 -1
  5. package/dist/assets/CodeEditor-b52a9395.js.br +0 -0
  6. package/dist/assets/ConnectedDevicePage-792280da.js +1 -0
  7. package/dist/assets/ConnectedDevicePage-792280da.js.br +0 -0
  8. package/dist/assets/{ConnectedMap-4975a455.js → ConnectedMap-fc5a7764.js} +1 -1
  9. package/dist/assets/ConnectedMap-fc5a7764.js.br +0 -0
  10. package/dist/assets/{Dashboard-b2c9d966.js → Dashboard-ba2b8e3b.js} +1 -1
  11. package/dist/assets/Dashboard-ba2b8e3b.js.br +0 -0
  12. package/dist/assets/{DashboardDevice-7f65141e.js → DashboardDevice-e545a4b6.js} +1 -1
  13. package/dist/assets/DashboardDevice-e545a4b6.js.br +0 -0
  14. package/dist/assets/{DashboardFeatureWrapper-af0527e6.js → DashboardFeatureWrapper-30f9acc7.js} +1 -1
  15. package/dist/assets/DashboardFeatureWrapper-30f9acc7.js.br +0 -0
  16. package/dist/assets/{DeviceImage-ab22578d.js → DeviceImage-3b9ace8e.js} +1 -1
  17. package/dist/assets/DeviceImage-3b9ace8e.js.br +0 -0
  18. package/dist/assets/{GroupPage-773c16de.js → GroupPage-188b4717.js} +1 -1
  19. package/dist/assets/GroupPage-188b4717.js.br +0 -0
  20. package/dist/assets/{ReactTableCom-07cb4d49.js → ReactTableCom-eddba77e.js} +1 -1
  21. package/dist/assets/ReactTableCom-eddba77e.js.br +0 -0
  22. package/dist/assets/{RecallRemove-633e0bfc.js → RecallRemove-720e6aa0.js} +1 -1
  23. package/dist/assets/RecallRemove-720e6aa0.js.br +0 -0
  24. package/dist/assets/{_baseSet-9a651963.js → _baseSet-09a572ba.js} +1 -1
  25. package/dist/assets/{_getAllKeysIn-34c94640.js → _getAllKeysIn-6dcbbf30.js} +1 -1
  26. package/dist/assets/{bootstrap-5.esm-4c94d970.js → bootstrap-5.esm-672cb437.js} +1 -1
  27. package/dist/assets/bootstrap-5.esm-672cb437.js.br +0 -0
  28. package/dist/assets/{index-c58e931e.js → index-10a7b6c0.js} +1 -1
  29. package/dist/assets/index-10a7b6c0.js.br +0 -0
  30. package/dist/assets/{index-d5262d08.js → index-3a8e477d.js} +1 -1
  31. package/dist/assets/index-3a8e477d.js.br +0 -0
  32. package/dist/assets/{index-d7fd317f.js → index-4b06423c.js} +1 -1
  33. package/dist/assets/index-4b06423c.js.br +0 -0
  34. package/dist/assets/{index-c1ba6118.js → index-50bf6a26.js} +1 -1
  35. package/dist/assets/index-538efde1.js +1 -0
  36. package/dist/assets/index-538efde1.js.br +0 -0
  37. package/dist/assets/{index-1060e52c.js → index-66c36aa3.js} +1 -1
  38. package/dist/assets/index-66c36aa3.js.br +0 -0
  39. package/dist/assets/index-74e84a13.js +226 -0
  40. package/dist/assets/index-74e84a13.js.br +0 -0
  41. package/dist/assets/{index-f17b1c44.js → index-92365285.js} +2 -2
  42. package/dist/assets/index-92365285.js.br +0 -0
  43. package/dist/assets/{index-32703e51.js → index-9b935b93.js} +1 -1
  44. package/dist/assets/index-9b935b93.js.br +0 -0
  45. package/dist/assets/{index-ff359535.js → index-a7d7205c.js} +1 -1
  46. package/dist/assets/index-a7d7205c.js.br +0 -0
  47. package/dist/assets/{intersection-eba4b4ae.js → intersection-d034f8dc.js} +1 -1
  48. package/dist/assets/intersection-d034f8dc.js.br +0 -0
  49. package/dist/assets/{isEqual-9b7ef21c.js → isEqual-0d569b85.js} +1 -1
  50. package/dist/assets/{persist-95f38394.js → persist-31c6944f.js} +1 -1
  51. package/dist/assets/persist-31c6944f.js.br +0 -0
  52. package/dist/assets/{rjsf-translation-fields-ad742261.js → rjsf-translation-fields-e31e8ac9.js} +1 -1
  53. package/dist/assets/{spinner-54612d6c.js → spinner-7012eee3.js} +1 -1
  54. package/dist/assets/{vendor-links-bb08ee75.js → vendor-links-98886cc7.js} +1 -1
  55. package/dist/assets/vendor-links-98886cc7.js.br +0 -0
  56. package/dist/index.html +1 -1
  57. package/dist/index.html.br +0 -0
  58. package/package.json +1 -1
  59. package/dist/assets/Availability-8b662394.js.br +0 -0
  60. package/dist/assets/CodeEditor-bd2763d7.js.br +0 -0
  61. package/dist/assets/ConnectedDevicePage-e3a64b21.js +0 -1
  62. package/dist/assets/ConnectedDevicePage-e3a64b21.js.br +0 -0
  63. package/dist/assets/ConnectedMap-4975a455.js.br +0 -0
  64. package/dist/assets/Dashboard-b2c9d966.js.br +0 -0
  65. package/dist/assets/DashboardDevice-7f65141e.js.br +0 -0
  66. package/dist/assets/DashboardFeatureWrapper-af0527e6.js.br +0 -0
  67. package/dist/assets/DeviceImage-ab22578d.js.br +0 -0
  68. package/dist/assets/GroupPage-773c16de.js.br +0 -0
  69. package/dist/assets/ReactTableCom-07cb4d49.js.br +0 -0
  70. package/dist/assets/RecallRemove-633e0bfc.js.br +0 -0
  71. package/dist/assets/bootstrap-5.esm-4c94d970.js.br +0 -0
  72. package/dist/assets/index-1060e52c.js.br +0 -0
  73. package/dist/assets/index-2a007219.js +0 -1
  74. package/dist/assets/index-2a007219.js.br +0 -0
  75. package/dist/assets/index-32703e51.js.br +0 -0
  76. package/dist/assets/index-c58e931e.js.br +0 -0
  77. package/dist/assets/index-d5262d08.js.br +0 -0
  78. package/dist/assets/index-d7fd317f.js.br +0 -0
  79. package/dist/assets/index-e24b99e4.js +0 -224
  80. package/dist/assets/index-e24b99e4.js.br +0 -0
  81. package/dist/assets/index-f17b1c44.js.br +0 -0
  82. package/dist/assets/index-ff359535.js.br +0 -0
  83. package/dist/assets/intersection-eba4b4ae.js.br +0 -0
  84. package/dist/assets/persist-95f38394.js.br +0 -0
  85. package/dist/assets/vendor-links-bb08ee75.js.br +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [0.7.4](https://github.com/nurikk/zigbee2mqtt-frontend/compare/0.7.3...0.7.4) (2024-07-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **translation:** ignore `en` translation from poeeditor ([#2085](https://github.com/nurikk/zigbee2mqtt-frontend/issues/2085)) ([ad2784f](https://github.com/nurikk/zigbee2mqtt-frontend/commit/ad2784f4e5022706813d477046548ab0ad19fbe8))
7
+
8
+
9
+
10
+ ## [0.7.3](https://github.com/nurikk/zigbee2mqtt-frontend/compare/0.7.2...0.7.3) (2024-07-22)
11
+
12
+
13
+ ### Features
14
+
15
+ * display hexadecimal and decimal values for network addresses ([#2078](https://github.com/nurikk/zigbee2mqtt-frontend/issues/2078)) ([48568dd](https://github.com/nurikk/zigbee2mqtt-frontend/commit/48568dd005acbd72087fb92e6a8f6f01df9500dd))
16
+
17
+
18
+
1
19
  ## [0.7.2](https://github.com/nurikk/zigbee2mqtt-frontend/compare/0.7.1...0.7.2) (2024-06-04)
2
20
 
3
21
 
@@ -1 +1 @@
1
- import{N as v,e as j,u as d,r as u,j as e,M as y,f as g,h as p,k,B as x,b as h,v as _,K as C,x as D,O as w}from"./index-e24b99e4.js";const S=v.create(s=>{const a=j(),{t:n}=d(["zigbee","common"]),{device:i,removeDevice:l}=s,[t,c]=u.useState({block:!1,force:!1}),b=[{label:n("force_remove"),name:"force",value:t.force},{label:n("block_join"),name:"block",value:t.block}],f=r=>{const{checked:o,name:N}=r.target;c({...t,[N]:o})},m=()=>{l(i.friendly_name,t.force,t.block),a.remove()};return e.jsxs(y,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:n("remove_device")}),e.jsx("small",{children:i.friendly_name})]}),e.jsx(p,{children:b.map(r=>{const o=`${r.name}${i.ieee_address}`;return e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",name:r.name,checked:r.value,type:"checkbox",id:o,onChange:f}),e.jsx("label",{className:"form-check-label",htmlFor:o,children:r.label})]},r.name)})}),e.jsxs(k,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:n("common:close")}),e.jsx("button",{type:"button",className:"btn btn-danger",onClick:m,children:n("common:delete")})]})]})}),E=v.create(s=>{const a=j(),{homeassistantEnabled:n,device:i,renameDevice:l}=s,[t,c]=u.useState(!1),[b,f]=u.useState(i.friendly_name),{t:m}=d(["zigbee","common"]),r=async()=>{await l(i.friendly_name,b,t),a.remove()};return e.jsxs(y,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:m("rename_device")}),e.jsx("small",{children:i.friendly_name})]}),e.jsx(p,{children:e.jsx("div",{className:"card",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:m("friendly_name")}),e.jsx("input",{onChange:o=>f(o.target.value),type:"text",className:"form-control",value:b})]}),n?e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",checked:t,type:"checkbox",id:`hass${i.ieee_address}`,onChange:o=>c(o.target.checked)}),e.jsx("label",{className:"form-check-label",htmlFor:`hass${i.ieee_address}`,children:m("update_Home_assistant_entity_id")})]}):null]})})}),e.jsxs(k,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:m("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:r,children:m("zigbee:rename_device")})]})]})}),M=s=>{const{homeassistantEnabled:a,device:n,renameDevice:i,style:l}=s,{t}=d(["zigbee","common"]);return e.jsx(x,{className:`btn btn-${l} btn-sm d-md-inline-block mx-1`,onClick:()=>v.show(E,{device:n,renameDevice:i,homeassistantEnabled:a}),title:t("rename_device"),children:e.jsx("i",{className:"fa fa-edit"})})};function B(s){const{device:a,configureDevice:n,removeDevice:i,interviewDevice:l}=s,{t}=d(["zigbee","common"]);return e.jsxs("div",{className:"btn-group btn-group-sm",role:"group",children:[e.jsx(M,{device:a,renameDevice:s.renameDevice,homeassistantEnabled:s.homeassistantEnabled,style:"primary"}),e.jsx(x,{className:"btn btn-warning",onClick:n,item:a.friendly_name,title:t("reconfigure"),prompt:!0,children:e.jsx("i",{className:h("fa","fa-retweet")})}),e.jsx(x,{className:"btn btn-info",onClick:l,item:a.friendly_name,title:t("interview"),prompt:!0,children:e.jsx("i",{className:h("fa","fa-info")})}),e.jsx("button",{onClick:()=>v.show(S,{device:a,removeDevice:i}),className:"btn btn-danger",title:t("remove_device"),children:e.jsx("i",{className:h("fa","fa-trash")})})]})}var R=C,F=D,z=w,A="[object String]";function $(s){return typeof s=="string"||!F(s)&&z(s)&&R(s)==A}var O=$;const H=_(O);function G(s){const{t:a}=d(["avaliability"]),{availability:n,availabilityFeatureEnabled:i=!0,availabilityEnabledForDevice:l=!0,disabled:t}=s;let c;return H(n)?c=n:c=n.state,c=c.toLowerCase(),t?e.jsx("span",{children:a("disabled")}):i&&l?e.jsx("span",{className:h({"text-danger animation-blinking":c==="offline","text-success":n==="online"}),children:a(c)}):e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",children:a("disabled")})}export{G as A,B as D,M as a,H as i};
1
+ import{N as v,e as j,u as d,r as u,j as e,M as y,f as g,h as p,k,B as x,b as h,v as _,K as C,x as D,O as w}from"./index-74e84a13.js";const S=v.create(s=>{const a=j(),{t:n}=d(["zigbee","common"]),{device:i,removeDevice:l}=s,[t,c]=u.useState({block:!1,force:!1}),b=[{label:n("force_remove"),name:"force",value:t.force},{label:n("block_join"),name:"block",value:t.block}],f=r=>{const{checked:o,name:N}=r.target;c({...t,[N]:o})},m=()=>{l(i.friendly_name,t.force,t.block),a.remove()};return e.jsxs(y,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:n("remove_device")}),e.jsx("small",{children:i.friendly_name})]}),e.jsx(p,{children:b.map(r=>{const o=`${r.name}${i.ieee_address}`;return e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",name:r.name,checked:r.value,type:"checkbox",id:o,onChange:f}),e.jsx("label",{className:"form-check-label",htmlFor:o,children:r.label})]},r.name)})}),e.jsxs(k,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:n("common:close")}),e.jsx("button",{type:"button",className:"btn btn-danger",onClick:m,children:n("common:delete")})]})]})}),E=v.create(s=>{const a=j(),{homeassistantEnabled:n,device:i,renameDevice:l}=s,[t,c]=u.useState(!1),[b,f]=u.useState(i.friendly_name),{t:m}=d(["zigbee","common"]),r=async()=>{await l(i.friendly_name,b,t),a.remove()};return e.jsxs(y,{isOpen:a.visible,children:[e.jsxs(g,{children:[e.jsx("h3",{children:m("rename_device")}),e.jsx("small",{children:i.friendly_name})]}),e.jsx(p,{children:e.jsx("div",{className:"card",children:e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:m("friendly_name")}),e.jsx("input",{onChange:o=>f(o.target.value),type:"text",className:"form-control",value:b})]}),n?e.jsxs("div",{className:"form-check form-switch",children:[e.jsx("input",{className:"form-check-input",checked:t,type:"checkbox",id:`hass${i.ieee_address}`,onChange:o=>c(o.target.checked)}),e.jsx("label",{className:"form-check-label",htmlFor:`hass${i.ieee_address}`,children:m("update_Home_assistant_entity_id")})]}):null]})})}),e.jsxs(k,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:a.remove,children:m("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:r,children:m("zigbee:rename_device")})]})]})}),M=s=>{const{homeassistantEnabled:a,device:n,renameDevice:i,style:l}=s,{t}=d(["zigbee","common"]);return e.jsx(x,{className:`btn btn-${l} btn-sm d-md-inline-block mx-1`,onClick:()=>v.show(E,{device:n,renameDevice:i,homeassistantEnabled:a}),title:t("rename_device"),children:e.jsx("i",{className:"fa fa-edit"})})};function B(s){const{device:a,configureDevice:n,removeDevice:i,interviewDevice:l}=s,{t}=d(["zigbee","common"]);return e.jsxs("div",{className:"btn-group btn-group-sm",role:"group",children:[e.jsx(M,{device:a,renameDevice:s.renameDevice,homeassistantEnabled:s.homeassistantEnabled,style:"primary"}),e.jsx(x,{className:"btn btn-warning",onClick:n,item:a.friendly_name,title:t("reconfigure"),prompt:!0,children:e.jsx("i",{className:h("fa","fa-retweet")})}),e.jsx(x,{className:"btn btn-info",onClick:l,item:a.friendly_name,title:t("interview"),prompt:!0,children:e.jsx("i",{className:h("fa","fa-info")})}),e.jsx("button",{onClick:()=>v.show(S,{device:a,removeDevice:i}),className:"btn btn-danger",title:t("remove_device"),children:e.jsx("i",{className:h("fa","fa-trash")})})]})}var R=C,F=D,z=w,A="[object String]";function $(s){return typeof s=="string"||!F(s)&&z(s)&&R(s)==A}var O=$;const H=_(O);function G(s){const{t:a}=d(["avaliability"]),{availability:n,availabilityFeatureEnabled:i=!0,availabilityEnabledForDevice:l=!0,disabled:t}=s;let c;return H(n)?c=n:c=n.state,c=c.toLowerCase(),t?e.jsx("span",{children:a("disabled")}):i&&l?e.jsx("span",{className:h({"text-danger animation-blinking":c==="offline","text-success":n==="online"}),children:a(c)}):e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.zigbee2mqtt.io/guide/configuration/device-availability.html#availability-advanced-configuration",children:a("disabled")})}export{G as A,B as D,M as a,H as i};
@@ -1,4 +1,4 @@
1
- import{r as Nt,p as Dg,j as Of,q as Bl}from"./index-e24b99e4.js";class L{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Zi(this,t,e);let n=[];return this.decompose(0,t,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(e,this.length,n,1),pe.from(n,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Zi(this,t,e);let i=[];return this.decompose(t,e,i,0),pe.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new fn(this),r=new fn(t);for(let o=e,l=e;;){if(n.next(o),r.next(o),o=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(l+=n.value.length,n.done||l>=i)return!0}}iter(t=1){return new fn(this,t)}iterRange(t,e=this.length){return new bf(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new yf(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?L.empty:t.length<=32?new ot(t):pe.from(ot.split(t,[]))}}class ot extends L{constructor(t,e=Wg(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let r=0;;r++){let o=this.text[r],l=n+o.length;if((e?i:l)>=t)return new Eg(n,l,i,o);n=l+1,i++}}decompose(t,e,i,n){let r=t<=0&&e>=this.length?this:new ot(Ta(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(n&1){let o=i.pop(),l=bs(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ot(l,o.length+r.length));else{let a=l.length>>1;i.push(new ot(l.slice(0,a)),new ot(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof ot))return super.replace(t,e,i);[t,e]=Zi(this,t,e);let n=bs(this.text,bs(i.text,Ta(this.text,0,t)),e),r=this.length+i.length-(e-t);return n.length<=32?new ot(n,r):pe.from(ot.split(n,[]),r)}sliceString(t,e=this.length,i=`
1
+ import{r as Nt,p as Dg,j as Of,q as Bl}from"./index-74e84a13.js";class L{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Zi(this,t,e);let n=[];return this.decompose(0,t,n,2),i.length&&i.decompose(0,i.length,n,3),this.decompose(e,this.length,n,1),pe.from(n,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Zi(this,t,e);let i=[];return this.decompose(t,e,i,0),pe.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new fn(this),r=new fn(t);for(let o=e,l=e;;){if(n.next(o),r.next(o),o=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(l+=n.value.length,n.done||l>=i)return!0}}iter(t=1){return new fn(this,t)}iterRange(t,e=this.length){return new bf(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new yf(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?L.empty:t.length<=32?new ot(t):pe.from(ot.split(t,[]))}}class ot extends L{constructor(t,e=Wg(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let r=0;;r++){let o=this.text[r],l=n+o.length;if((e?i:l)>=t)return new Eg(n,l,i,o);n=l+1,i++}}decompose(t,e,i,n){let r=t<=0&&e>=this.length?this:new ot(Ta(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(n&1){let o=i.pop(),l=bs(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ot(l,o.length+r.length));else{let a=l.length>>1;i.push(new ot(l.slice(0,a)),new ot(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof ot))return super.replace(t,e,i);[t,e]=Zi(this,t,e);let n=bs(this.text,bs(i.text,Ta(this.text,0,t)),e),r=this.length+i.length-(e-t);return n.length<=32?new ot(n,r):pe.from(ot.split(n,[]),r)}sliceString(t,e=this.length,i=`
2
2
  `){[t,e]=Zi(this,t,e);let n="";for(let r=0,o=0;r<=e&&o<this.text.length;o++){let l=this.text[o],a=r+l.length;r>t&&o&&(n+=i),t<a&&e>r&&(n+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],n=-1;for(let r of t)i.push(r),n+=r.length+1,i.length==32&&(e.push(new ot(i,n)),i=[],n=-1);return n>-1&&e.push(new ot(i,n)),e}}class pe extends L{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,n){for(let r=0;;r++){let o=this.children[r],l=n+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,n);n=l+1,i=a+1}}decompose(t,e,i,n){for(let r=0,o=0;o<=e&&r<this.children.length;r++){let l=this.children[r],a=o+l.length;if(t<=a&&e>=o){let h=n&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Zi(this,t,e),i.lines<this.lines)for(let n=0,r=0;n<this.children.length;n++){let o=this.children[n],l=r+o.length;if(t>=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>5-1&&a.lines>h>>5+1){let c=this.children.slice();return c[n]=a,new pe(c,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=`
3
3
  `){[t,e]=Zi(this,t,e);let n="";for(let r=0,o=0;r<this.children.length&&o<=e;r++){let l=this.children[r],a=o+l.length;o>t&&r&&(n+=i),t<a&&e>o&&(n+=l.sliceString(t-o,e-o,i)),o=a+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof pe))return 0;let i=0,[n,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;n+=e,r+=e){if(n==o||r==l)return i;let a=this.children[n],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,n)=>i+n.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ot(d,e)}let n=Math.max(32,i>>5),r=n<<1,o=n>>1,l=[],a=0,h=-1,c=[];function f(d){let p;if(d.lines>r&&d instanceof pe)for(let m of d.children)f(m);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ot&&a&&(p=c[c.length-1])instanceof ot&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new ot(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>n&&u(),a+=d.lines,h+=d.length+1,c.push(d))}function u(){a!=0&&(l.push(c.length==1?c[0]:pe.from(c,h)),h=-1,a=c.length=0)}for(let d of t)f(d);return u(),l.length==1?l[0]:new pe(l,e)}}L.empty=new ot([""],0);function Wg(s){let t=-1;for(let e of s)t+=e.length+1;return t}function bs(s,t,e=0,i=1e9){for(let n=0,r=0,o=!0;r<s.length&&n<=i;r++){let l=s[r],a=n+l.length;a>=e&&(a>i&&(l=l.slice(0,i-n)),n<e&&(l=l.slice(e-n)),o?(t[t.length-1]+=l,o=!1):t.push(l)),n=a+1}return t}function Ta(s,t,e){return bs(s,[""],t,e)}class fn{constructor(t,e=1){this.dir=e,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[t],this.offsets=[e>0?1:(t instanceof ot?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,n=this.nodes[i],r=this.offsets[i],o=r>>1,l=n instanceof ot?n.text.length:n.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=`
4
4
  `,this;t--}else if(n instanceof ot){let a=n.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=n.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ot?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class bf{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new fn(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class yf{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(L.prototype[Symbol.iterator]=function(){return this.iter()},fn.prototype[Symbol.iterator]=bf.prototype[Symbol.iterator]=yf.prototype[Symbol.iterator]=function(){return this});class Eg{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}function Zi(s,t,e){return t=Math.max(0,Math.min(s.length,t)),[t,Math.max(t,Math.min(s.length,e))]}let wi="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(s=>s?parseInt(s,36):1);for(let s=1;s<wi.length;s++)wi[s]+=wi[s-1];function Yg(s){for(let t=1;t<wi.length;t+=2)if(wi[t]>s)return wi[t-1]<=s;return!1}function Ma(s){return s>=127462&&s<=127487}const Ra=8205;function it(s,t,e=!0,i=!0){return(e?wf:Xg)(s,t,i)}function wf(s,t,e){if(t==s.length)return t;t&&Sf(s.charCodeAt(t))&&xf(s.charCodeAt(t-1))&&t--;let i=gt(s,t);for(t+=Bt(i);t<s.length;){let n=gt(s,t);if(i==Ra||n==Ra||e&&Yg(n))t+=Bt(n),i=n;else if(Ma(n)){let r=0,o=t-2;for(;o>=0&&Ma(gt(s,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function Xg(s,t,e){for(;t>0;){let i=wf(s,t-2,e);if(i<t)return i;t--}return 0}function Sf(s){return s>=56320&&s<57344}function xf(s){return s>=55296&&s<56320}function gt(s,t){let e=s.charCodeAt(t);if(!xf(e)||t+1==s.length)return e;let i=s.charCodeAt(t+1);return Sf(i)?(e-55296<<10)+(i-56320)+65536:e}function Ll(s){return s<=65535?String.fromCharCode(s):(s-=65536,String.fromCharCode((s>>10)+55296,(s&1023)+56320))}function Bt(s){return s<65536?1:2}const po=/\r\n?|\n/;var nt=function(s){return s[s.Simple=0]="Simple",s[s.TrackDel=1]="TrackDel",s[s.TrackBefore=2]="TrackBefore",s[s.TrackAfter=3]="TrackAfter",s}(nt||(nt={}));class ye{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;e<this.sections.length;e+=2)t+=this.sections[e];return t}get newLength(){let t=0;for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e+1];t+=i<0?this.sections[e]:i}return t}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(t){for(let e=0,i=0,n=0;e<this.sections.length;){let r=this.sections[e++],o=this.sections[e++];o<0?(t(i,n,r),n+=r):n+=o,i+=r}}iterChangedRanges(t,e=!1){go(this,t,e)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];n<0?t.push(i,n):t.push(n,i)}return new ye(t)}composeDesc(t){return this.empty?t:t.empty?this:kf(this,t)}mapDesc(t,e=!1){return t.empty?this:mo(this,t,e)}mapPos(t,e=-1,i=nt.Simple){let n=0,r=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=n+l;if(a<0){if(h>t)return r+(t-n);r+=l}else{if(i!=nt.Simple&&h>=t&&(i==nt.TrackDel&&n<t&&h>t||i==nt.TrackBefore&&n<t||i==nt.TrackAfter&&h>t))return null;if(h>t||h==t&&e<0&&!l)return t==n||e<0?r:r+a;r+=a}n=h}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return r}touchesRange(t,e=t){for(let i=0,n=0;i<this.sections.length&&n<=e;){let r=this.sections[i++],o=this.sections[i++],l=n+r;if(o>=0&&n<=e&&l>=t)return n<t&&l>e?"cover":!0;n=l}return!1}toString(){let t="";for(let e=0;e<this.sections.length;){let i=this.sections[e++],n=this.sections[e++];t+=(t?" ":"")+i+(n>=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ye(t)}static create(t){return new ye(t)}}class lt extends ye{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return go(this,(e,i,n,r,o)=>t=t.replace(n,n+(i-e),o),!1),t}mapDesc(t,e=!1){return mo(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let n=0,r=0;n<e.length;n+=2){let o=e[n],l=e[n+1];if(l>=0){e[n]=l,e[n+1]=o;let a=n>>1;for(;i.length<a;)i.push(L.empty);i.push(o?t.slice(r,r+o):L.empty)}r+=o}return new lt(e,i)}compose(t){return this.empty?t:t.empty?this:kf(this,t,!0)}map(t,e=!1){return t.empty?this:mo(this,t,e,!0)}iterChanges(t,e=!1){go(this,t,e)}get desc(){return ye.create(this.sections)}filter(t){let e=[],i=[],n=[],r=new On(this);t:for(let o=0,l=0;;){let a=o==t.length?1e9:t[o++];for(;l<a||l==a&&r.len==0;){if(r.done)break t;let c=Math.min(r.len,a-l);St(n,c,-1);let f=r.ins==-1?-1:r.off==0?r.ins:0;St(e,c,f),f>0&&Xe(i,e,r.text),r.forward(c),l+=c}let h=t[o++];for(;l<h;){if(r.done)break t;let c=Math.min(r.len,h-l);St(e,c,-1),St(n,c,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(c),l+=c}}return{changes:new lt(e,i),filtered:ye.create(n)}}toJSON(){let t=[];for(let e=0;e<this.sections.length;e+=2){let i=this.sections[e],n=this.sections[e+1];n<0?t.push(i):n==0?t.push([i]):t.push([i].concat(this.inserted[e>>1].toJSON()))}return t}static of(t,e,i){let n=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!n.length)return;o<e&&St(n,e-o,-1);let f=new lt(n,r);l=l?l.compose(f.map(l)):f,n=[],r=[],o=0}function h(c){if(Array.isArray(c))for(let f of c)h(f);else if(c instanceof lt){if(c.length!=e)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${e})`);a(),l=l?l.compose(c.map(l)):c}else{let{from:f,to:u=f,insert:d}=c;if(f>u||f<0||u>e)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?L.of(d.split(i||po)):d:L.empty,m=p.length;if(f==u&&m==0)return;f<o&&a(),f>o&&St(n,f-o,-1),St(n,u-f,m),Xe(r,n,p),o=u}}return h(t),a(!l),l}static empty(t){return new lt(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let n=0;n<t.length;n++){let r=t[n];if(typeof r=="number")e.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length<n;)i.push(L.empty);i[n]=L.of(r.slice(1)),e.push(r[0],i[n].length)}}}return new lt(e,i)}static createSet(t,e){return new lt(t,e)}}function St(s,t,e,i=!1){if(t==0&&e<=0)return;let n=s.length-2;n>=0&&e<=0&&e==s[n+1]?s[n]+=t:t==0&&s[n]==0?s[n+1]+=e:i?(s[n]+=t,s[n+1]+=e):s.push(t,e)}function Xe(s,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i<s.length)s[s.length-1]=s[s.length-1].append(e);else{for(;s.length<i;)s.push(L.empty);s.push(e)}}function go(s,t,e){let i=s.inserted;for(let n=0,r=0,o=0;o<s.sections.length;){let l=s.sections[o++],a=s.sections[o++];if(a<0)n+=l,r+=l;else{let h=n,c=r,f=L.empty;for(;h+=l,c+=a,a&&i&&(f=f.append(i[o-2>>1])),!(e||o==s.sections.length||s.sections[o+1]<0);)l=s.sections[o++],a=s.sections[o++];t(n,h,r,c,f),n=h,r=c}}}function mo(s,t,e,i=!1){let n=[],r=i?[]:null,o=new On(s),l=new On(t);for(let a=-1;;)if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);St(n,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len<o.len||l.len==o.len&&!e))){let h=l.len;for(St(n,l.ins,-1);h;){let c=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=c&&(St(n,0,o.ins),r&&Xe(r,n,o.text),a=o.i),o.forward(c),h-=c}l.next()}else if(o.ins>=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.len<c)c-=l.len,l.next();else break;St(n,h,a<o.i?o.ins:0),r&&a<o.i&&Xe(r,n,o.text),a=o.i,o.forward(o.len-c)}else{if(o.done&&l.done)return r?lt.createSet(n,r):ye.create(n);throw new Error("Mismatched change set lengths")}}function kf(s,t,e=!1){let i=[],n=e?[]:null,r=new On(s),o=new On(t);for(let l=!1;;){if(r.done&&o.done)return n?lt.createSet(i,n):ye.create(i);if(r.ins==0)St(i,r.len,0,l),r.next();else if(o.len==0&&!o.done)St(i,0,o.ins,l),n&&Xe(n,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let c=o.ins==-1?-1:o.off?0:o.ins;St(i,a,c,l),n&&c&&Xe(n,i,o.text)}else o.ins==-1?(St(i,r.off?0:r.len,a,l),n&&Xe(n,i,r.textBit(a))):(St(i,r.off?0:r.len,o.off?0:o.ins,l),n&&!o.off&&Xe(n,i,o.text));l=(r.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class On{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i<t.length?(this.len=t[this.i++],this.ins=t[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:t}=this.set,e=this.i-2>>1;return e>=t.length?L.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?L.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class ei{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new ei(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return y.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return y.range(this.anchor,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return y.range(t.anchor,t.head)}static create(t,e,i){return new ei(t,e,i)}}class y{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:y.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(t.ranges[i],e))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new y([this.main],0)}addRange(t,e=!0){return y.create([t].concat(this.ranges),e?0:this.mainIndex+1)}replaceRange(t,e=this.mainIndex){let i=this.ranges.slice();return i[e]=t,y.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(t=>t.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new y(t.ranges.map(e=>ei.fromJSON(e)),t.main)}static single(t,e=t){return new y([y.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;n<t.length;n++){let r=t[n];if(r.empty?r.from<=i:r.from<i)return y.normalized(t.slice(),e);i=r.to}return new y(t,e)}static cursor(t,e=0,i,n){return ei.create(t,t,(e==0?0:e<0?8:16)|(i==null?7:Math.min(6,i))|(n??16777215)<<6)}static range(t,e,i,n){let r=(i??16777215)<<6|(n==null?7:Math.min(6,n));return e<t?ei.create(e,t,48|r):ei.create(t,e,(e>t?8:0)|r)}static normalized(t,e=0){let i=t[e];t.sort((n,r)=>n.from-r.from),e=t.indexOf(i);for(let n=1;n<t.length;n++){let r=t[n],o=t[n-1];if(r.empty?r.from<=o.to:r.from<o.to){let l=o.from,a=Math.max(r.to,o.to);n<=e&&e--,t.splice(--n,2,r.anchor>r.head?y.range(a,l):y.range(l,a))}}return new y(t,e)}}function vf(s,t){for(let e of s.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}let Vl=0;class ${constructor(t,e,i,n,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=Vl++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new $(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:jl),!!t.static,t.enables)}of(t){return new ys([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new ys(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new ys(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}}function jl(s,t){return s==t||s.length==t.length&&s.every((e,i)=>e===t[i])}class ys{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=Vl++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:((e=t[f.id])!==null&&e!==void 0?e:1)&1||c.push(t[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Oo(f,c)){let d=i(f);if(l?!Da(d,f.values[o],n):!n(d,f.values[o]))return f.values[o]=d,1}return 0},reconfigure:(f,u)=>{let d,p=u.config.address[r];if(p!=null){let m=Xs(u,p);if(this.dependencies.every(g=>g instanceof $?u.facet(g)===f.facet(g):g instanceof mt?u.field(g,!1)==f.field(g,!1):!0)||(l?Da(d=i(f),m,n):n(d=i(f),m)))return f.values[o]=m,0}else d=i(f);return f.values[o]=d,1}}}}function Da(s,t,e){if(s.length!=t.length)return!1;for(let i=0;i<s.length;i++)if(!e(s[i],t[i]))return!1;return!0}function Oo(s,t){let e=!1;for(let i of t)un(s,i)&1&&(e=!0);return e}function Bg(s,t,e){let i=e.map(a=>s[a.id]),n=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=s[t.id]>>1;function l(a){let h=[];for(let c=0;c<i.length;c++){let f=Xs(a,i[c]);if(n[c]==2)for(let u of f)h.push(u);else h.push(f)}return t.combine(h)}return{create(a){for(let h of i)un(a,h);return a.values[o]=l(a),1},update(a,h){if(!Oo(a,r))return 0;let c=l(a);return t.compare(c,a.values[o])?0:(a.values[o]=c,1)},reconfigure(a,h){let c=Oo(a,i),f=h.config.facets[t.id],u=h.facet(t);if(f&&!c&&jl(e,f))return a.values[o]=u,0;let d=l(a);return t.compare(d,u)?(a.values[o]=u,0):(a.values[o]=d,1)}}}const Wa=$.define({static:!0});class mt{constructor(t,e,i,n,r){this.id=t,this.createF=e,this.updateF=i,this.compareF=n,this.spec=r,this.provides=void 0}static define(t){let e=new mt(Vl++,t.create,t.update,t.compare||((i,n)=>i===n),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Wa).find(i=>i.field==this);return((e==null?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,n)=>{let r=i.values[e],o=this.updateF(r,n);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,n)=>n.config.address[this.id]!=null?(i.values[e]=n.field(this),0):(i.values[e]=this.create(i),1)}}init(t){return[this,Wa.of({field:this,create:t})]}get extension(){return this}}const Je={lowest:4,low:3,default:2,high:1,highest:0};function zi(s){return t=>new $f(t,s)}const Se={highest:zi(Je.highest),high:zi(Je.high),default:zi(Je.default),low:zi(Je.low),lowest:zi(Je.lowest)};class $f{constructor(t,e){this.inner=t,this.prec=e}}class pr{of(t){return new bo(this,t)}reconfigure(t){return pr.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class bo{constructor(t,e){this.compartment=t,this.inner=e}}class Ys{constructor(t,e,i,n,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(t){let e=this.address[t.id];return e==null?t.default:this.staticValues[e>>1]}static resolve(t,e,i){let n=[],r=Object.create(null),o=new Map;for(let u of Lg(t,e,o))u instanceof mt?n.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of n)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let c=i==null?void 0:i.config.facets;for(let u in r){let d=r[u],p=d[0].facet,m=c&&c[u]||[];if(d.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,jl(m,d))a.push(i.facet(p));else{let g=p.combine(d.map(b=>b.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(b=>g.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(g=>Bg(g,p,d))}}let f=h.map(u=>u(l));return new Ys(t,o,f,l,a,r)}}function Lg(s,t,e){let i=[[],[],[],[],[]],n=new Map;function r(o,l){let a=n.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof bo&&e.delete(o.compartment)}if(n.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof bo){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof $f)r(o.inner,o.prec);else if(o instanceof mt)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof ys)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,Je.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(s,Je.default),i.reduce((o,l)=>o.concat(l))}function un(s,t){if(t&1)return 2;let e=t>>1,i=s.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;s.status[e]=4;let n=s.computeSlot(s,s.config.dynamicSlots[e]);return s.status[e]=2|n}function Xs(s,t){return t&1?s.config.staticValues[t>>1]:s.values[t>>1]}const Qf=$.define(),yo=$.define({combine:s=>s.some(t=>t),static:!0}),Pf=$.define({combine:s=>s.length?s[0]:void 0,static:!0}),Cf=$.define(),Zf=$.define(),Af=$.define(),Tf=$.define({combine:s=>s.length?s[0]:!1});class Ut{constructor(t,e){this.type=t,this.value=e}static define(){return new Vg}}class Vg{of(t){return new Ut(this,t)}}class jg{constructor(t){this.map=t}of(t){return new D(this,t)}}class D{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new D(this.type,e)}is(t){return this.type==t}static define(t={}){return new jg(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let r=n.map(e);r&&i.push(r)}return i}}D.reconfigure=D.define();D.appendConfig=D.define();class at{constructor(t,e,i,n,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&vf(i,e.newLength),r.some(l=>l.type==at.time)||(this.annotations=r.concat(at.time.of(Date.now())))}static create(t,e,i,n,r,o){return new at(t,e,i,n,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(at.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}}at.time=Ut.define();at.userEvent=Ut.define();at.addToHistory=Ut.define();at.remote=Ut.define();function qg(s,t){let e=[];for(let i=0,n=0;;){let r,o;if(i<s.length&&(n==t.length||t[n]>=s[i]))r=s[i++],o=s[i++];else if(n<t.length)r=t[n++],o=t[n++];else return e;!e.length||e[e.length-1]<r?e.push(r,o):e[e.length-1]<o&&(e[e.length-1]=o)}}function Mf(s,t,e){var i;let n,r,o;return e?(n=t.changes,r=lt.empty(t.changes.length),o=s.changes.compose(t.changes)):(n=t.changes.map(s.changes),r=s.changes.mapDesc(t.changes,!0),o=s.changes.compose(n)),{changes:o,selection:t.selection?t.selection.map(r):(i=s.selection)===null||i===void 0?void 0:i.map(n),effects:D.mapEffects(s.effects,n).concat(D.mapEffects(t.effects,r)),annotations:s.annotations.length?s.annotations.concat(t.annotations):t.annotations,scrollIntoView:s.scrollIntoView||t.scrollIntoView}}function wo(s,t,e){let i=t.selection,n=Si(t.annotations);return t.userEvent&&(n=n.concat(at.userEvent.of(t.userEvent))),{changes:t.changes instanceof lt?t.changes:lt.of(t.changes||[],e,s.facet(Pf)),selection:i&&(i instanceof y?i:y.single(i.anchor,i.head)),effects:Si(t.effects),annotations:n,scrollIntoView:!!t.scrollIntoView}}function Rf(s,t,e){let i=wo(s,t.length?t[0]:{},s.doc.length);t.length&&t[0].filter===!1&&(e=!1);for(let r=1;r<t.length;r++){t[r].filter===!1&&(e=!1);let o=!!t[r].sequential;i=Mf(i,wo(s,t[r],o?i.changes.newLength:s.doc.length),o)}let n=at.create(s,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return Ng(e?Ig(n):n)}function Ig(s){let t=s.startState,e=!0;for(let n of t.facet(Cf)){let r=n(s);if(r===!1){e=!1;break}Array.isArray(r)&&(e=e===!0?r:qg(e,r))}if(e!==!0){let n,r;if(e===!1)r=s.changes.invertedDesc,n=lt.empty(t.doc.length);else{let o=s.changes.filter(e);n=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}s=at.create(t,n,s.selection&&s.selection.map(r),D.mapEffects(s.effects,r),s.annotations,s.scrollIntoView)}let i=t.facet(Zf);for(let n=i.length-1;n>=0;n--){let r=i[n](s);r instanceof at?s=r:Array.isArray(r)&&r.length==1&&r[0]instanceof at?s=r[0]:s=Rf(t,Si(r),!1)}return s}function Ng(s){let t=s.startState,e=t.facet(Af),i=s;for(let n=e.length-1;n>=0;n--){let r=e[n](s);r&&Object.keys(r).length&&(i=Mf(i,wo(t,r,s.changes.newLength),!0))}return i==s?s:at.create(t,s.changes,s.selection,i.effects,i.annotations,i.scrollIntoView)}const zg=[];function Si(s){return s==null?zg:Array.isArray(s)?s:[s]}var J=function(s){return s[s.Word=0]="Word",s[s.Space=1]="Space",s[s.Other=2]="Other",s}(J||(J={}));const _g=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let So;try{So=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Gg(s){if(So)return So.test(s);for(let t=0;t<s.length;t++){let e=s[t];if(/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||_g.test(e)))return!0}return!1}function Hg(s){return t=>{if(!/\S/.test(t))return J.Space;if(Gg(t))return J.Word;for(let e=0;e<s.length;e++)if(t.indexOf(s[e])>-1)return J.Word;return J.Other}}class V{constructor(t,e,i,n,r,o){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)un(this,l<<1);this.computeSlot=null}field(t,e=!0){let i=this.config.address[t.id];if(i==null){if(e)throw new RangeError("Field is not present in this state");return}return un(this,i),Xs(this,i)}update(...t){return Rf(this,t,!0)}applyTransaction(t){let e=this.config,{base:i,compartments:n}=e;for(let l of t.effects)l.is(pr.reconfigure)?(e&&(n=new Map,e.compartments.forEach((a,h)=>n.set(h,a)),e=null),n.set(l.value.compartment,l.value.extension)):l.is(D.reconfigure)?(e=null,i=l.value):l.is(D.appendConfig)&&(e=null,i=Si(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ys.resolve(i,n,this),r=new V(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(yo)?t.newSelection:t.newSelection.asSingle();new V(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:y.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),r=[i.range],o=Si(i.effects);for(let l=1;l<e.ranges.length;l++){let a=t(e.ranges[l]),h=this.changes(a.changes),c=h.map(n);for(let u=0;u<l;u++)r[u]=r[u].map(c);let f=n.mapDesc(h,!0);r.push(a.range.map(f)),n=n.compose(c),o=D.mapEffects(o,c).concat(D.mapEffects(Si(a.effects),f))}return{changes:n,selection:y.create(r,e.mainIndex),effects:o}}changes(t=[]){return t instanceof lt?t:lt.of(t,this.doc.length,this.facet(V.lineSeparator))}toText(t){return L.of(t.split(this.facet(V.lineSeparator)||po))}sliceDoc(t=0,e=this.doc.length){return this.doc.sliceString(t,e,this.lineBreak)}facet(t){let e=this.config.address[t.id];return e==null?t.default:(un(this,e),Xs(this,e))}toJSON(t){let e={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(t)for(let i in t){let n=t[i];n instanceof mt&&this.config.address[n.id]!=null&&(e[i]=n.spec.toJSON(this.field(t[i]),this))}return e}static fromJSON(t,e={},i){if(!t||typeof t.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let n=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(t,r)){let o=i[r],l=t[r];n.push(o.init(a=>o.spec.fromJSON(l,a)))}}return V.create({doc:t.doc,selection:y.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(t={}){let e=Ys.resolve(t.extensions||[],new Map),i=t.doc instanceof L?t.doc:L.of((t.doc||"").split(e.staticFacet(V.lineSeparator)||po)),n=t.selection?t.selection instanceof y?t.selection:y.single(t.selection.anchor,t.selection.head):y.single(0);return vf(n,i.length),e.staticFacet(yo)||(n=n.asSingle()),new V(e,i,n,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(V.tabSize)}get lineBreak(){return this.facet(V.lineSeparator)||`
@@ -0,0 +1 @@
1
+ import{w as C,r as f,j as e,E as k,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,G as U,b as ne,H,d as ie,I as T,m as w,v as re,J as oe,z as ce,_ as ae,R as z,D as le,C as de,n as ue}from"./index-74e84a13.js";import{F as me,a as he,b as pe,w as ve,T as ge}from"./bootstrap-5.esm-672cb437.js";import{D as xe,a as fe,A as be}from"./Availability-83a15f1c.js";import{D as je}from"./DeviceImage-3b9ace8e.js";import{V as Ne,M as _e}from"./vendor-links-98886cc7.js";import{L as Ce,D as F,P as Se}from"./index-4b06423c.js";import{E as P,D as Ae,A as Ie,R as we}from"./RecallRemove-720e6aa0.js";import{F as Re,a as V,T as Ee}from"./DashboardFeatureWrapper-30f9acc7.js";import{T as ke,D as Pe}from"./rjsf-translation-fields-e31e8ac9.js";import{L as ye,A as Oe}from"./index-10a7b6c0.js";import"./_getAllKeysIn-6dcbbf30.js";import"./isEqual-0d569b85.js";import"./intersection-d034f8dc.js";import"./index-50bf6a26.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./_baseSet-09a572ba.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(k,{children:[e.jsxs(k.Toggle,{"aria-label":i("select_a_device"),variant:"",size:"lg",children:[n.friendly_name," "]}),e.jsxs(k.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(k.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 E;const{config:_}=b,M=!!_.availability,y=((E=_.devices[l.ieee_address])==null?void 0:E.availability)!==!1;return e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(be,{availability:I,disabled:L(l,_),availabilityFeatureEnabled:M,availabilityEnabledForDevice:y})})}},{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,y,E]=p;b=e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:E,children:y})}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:H,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"],He=C("zigbee")(S(Ge,A)(De)),Te=He,O={genPowerCfg:"PowerCfg",genScenes:"Scenes",genOnOff:"OnOff",genLevelCtrl:"LevelCtrl",lightingColorCtrl:"LColorCtrl",closuresWindowCovering:"Closures",genMultistateInput:"MultistateInput",genGroups:"Groups",genOta:"Ota",touchlink:"Touchlink",genIdentify:"Identify",msTemperatureMeasurement:"Temperature",msIlluminanceMeasurement:"Illuminance",msRelativeHumidity:"Humidity",msPressureMeasurement:"Pressure",msSoilMoisture:"Soil Moisture"};var R=(s=>(s[s.MULTIPLE=0]="MULTIPLE",s[s.SINGLE=1]="SINGLE",s))(R||{});function q(s){return s.length>0&&typeof s[0]!="string"}function ze(s){const[t]=f.useState(T(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:O[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(T(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:O[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:O[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===R.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=w(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=w(r),a=We(o,t,n),d=w(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(P,{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(P,{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:R.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=w(n);return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(P,{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:R.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-b52a9395.js"),["./CodeEditor-b52a9395.js","./index-74e84a13.js","./index-654e4a69.css"],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:H,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 Hs=C(["devConsole","common"])(Gs);var $=(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))($||{});const Ts=["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=w(a),h=m=>Ts.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(P,{"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:R.SINGLE,clusters:a.endpoints[r].clusters.input,value:t,onChange:this.onClusterChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(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={[$.CHAR_STR]:"string",[$.LONG_CHAR_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(Hs,{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(Te,{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};