platypush/platypush/backend/http/webapp/dist/static/js/4604.ac359b97.js

2 lines
35 KiB
JavaScript

"use strict";(self["webpackChunkplatypush"]=self["webpackChunkplatypush"]||[]).push([[4604],{4212:function(e,t,s){s.d(t,{N:function(){return a}});class a{constructor(e){if(this.ranges={hue:[0,360],sat:[0,100],bri:[0,100],ct:[154,500]},e)for(const t of Object.keys(this.ranges))e[t]&&(this.ranges[t]=e[t])}normalize(e,t,s){return s[0]+(e-t[0])*(s[1]-s[0])/(t[1]-t[0])}hslToRgb(e,t,s){[e,t,s]=[this.normalize(e,this.ranges.hue,[0,360]),this.normalize(t,this.ranges.sat,[0,100]),this.normalize(s,this.ranges.bri,[0,100])],s/=100;const a=t*Math.min(s,1-s)/100,i=t=>{const i=(t+e/30)%12,n=s-a*Math.max(Math.min(i-3,9-i,1),-1);return Math.round(255*n)};return[i(0),i(8),i(4)]}rgbToHsl(e,t,s){e/=255,t/=255,s/=255;const a=Math.max(e,t,s),i=Math.min(e,t,s);let n,l,o=(a+i)/2;if(a===i)n=l=0;else{const r=a-i;switch(l=o>.5?r/(2-a-i):r/(a+i),a){case e:n=(t-s)/r+(t<s?6:0);break;case t:n=(s-e)/r+2;break;case s:n=(e-t)/r+4;break}n/=6}return[parseInt(this.normalize(n,[0,1],this.ranges.hue)),parseInt(this.normalize(l,[0,1],this.ranges.sat)),parseInt(this.normalize(o,[0,1],this.ranges.bri))]}xyToRgb(e,t,s){null==s&&(s=this.ranges.bri[1]);const a=1-e-t,i=(s/(this.ranges.bri[1]-1)).toFixed(2),n=i/t*e,l=i/t*a;let o=1.656492*n-.354851*i-.255038*l,r=.707196*-n+1.655397*i+.036152*l,d=.051713*n-.121364*i+1.01153*l;return o>d&&o>r&&o>1?(r/=o,d/=o,o=1):r>d&&r>o&&r>1?(o/=r,d/=r,r=1):d>o&&d>r&&d>1&&(o/=d,r/=d,d=1),o=o<=.0031308?12.92*o:1.055*Math.pow(o,1/2.4)-.055,r=r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055,d=d<=.0031308?12.92*d:1.055*Math.pow(d,1/2.4)-.055,o=Math.round(255*o),r=Math.round(255*r),d=Math.round(255*d),isNaN(o)&&(o=0),isNaN(r)&&(r=0),isNaN(d)&&(d=0),[o,r,d].map((e=>Math.min(Math.max(0,e),255)))}rgbToXY(e,t,s){e>1&&(e/=255),t>1&&(t/=255),s>1&&(s/=255),e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,s=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92;const a=.664511*e+.154324*t+.162028*s,i=.283881*e+.668433*t+.047685*s,n=88e-6*e+.07231*t+.986039*s;let l=parseFloat((a/(a+i+n)).toFixed(4)),o=parseFloat((i/(a+i+n)).toFixed(4));return isNaN(l)&&(l=0),isNaN(o)&&(o=0),[l,o]}rgbToBri(e,t,s){return Math.min(2*this.rgbToHsl(e,t,s)[2],this.ranges.bri[1])}getRGB(e){return null!=e.red&&null!=e.green&&null!=e.blue?[e.red,e.green,e.blue]:null!=e.r&&null!=e.g&&null!=e.b?[e.r,e.g,e.b]:e.rgb?e.rgb:void 0}getXY(e){return null!=e.x&&null!=e.y?[e.x,e.y]:e.xy?e.xy:void 0}toRGB(e){const t=this.getRGB(e);if(t)return t;const s=this.getXY(e);return s&&e.bri?this.xyToRgb(...s,e.bri):e.hue&&e.sat&&e.bri?this.hslToRgb(e.hue,e.sat,e.bri):(console.debug("Could not determine color space"),void console.debug(e))}toXY(e){const t=this.getXY(e);if(t&&e.bri)return[t[0],t[1],e.bri];const s=this.getRGB(e);if(s)return this.rgbToXY(...s);if(e.hue&&e.sat&&e.bri){const t=this.hslToRgb(e.hue,e.sat,e.bri);return this.rgbToXY(...t)}console.debug("Could not determine color space"),console.debug(e)}toHSL(e){if(e.hue&&e.sat&&e.bri)return[e.hue,e.sat,e.bri];const t=this.getRGB(e);if(t)return this.rgbToHsl(...t);const s=this.getXY(e);if(s&&e.bri){const t=this.xyToRgb(...s,e.bri);return this.rgbToHsl(...t)}console.debug("Could not determine color space"),console.debug(e)}}},1120:function(e,t,s){s.d(t,{Z:function(){return g}});var a=s(6252),i=s(9963),n=s(3577);const l={class:"slider-wrapper"},o=["min","max","step","disabled","value"],r={class:"track"},d={class:"track-inner",ref:"track"},u={class:"thumb",ref:"thumb"},c=["textContent"];function v(e,t,s,v,p,h){return(0,a.wg)(),(0,a.iD)("label",l,[(0,a._)("input",{class:"slider",type:"range",ref:"range",min:s.range[0],max:s.range[1],step:s.step,disabled:s.disabled,value:s.value,onInput:t[0]||(t[0]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onChange:t[1]||(t[1]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onMouseup:t[2]||(t[2]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onMousedown:t[3]||(t[3]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onTouchstart:t[4]||(t[4]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onTouchend:t[5]||(t[5]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onKeyup:t[6]||(t[6]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"])),onKeydown:t[7]||(t[7]=(0,i.iM)(((...e)=>h.onUpdate&&h.onUpdate(...e)),["stop"]))},null,40,o),(0,a._)("div",r,[(0,a._)("div",d,null,512)]),(0,a._)("div",u,null,512),s.withLabel?((0,a.wg)(),(0,a.iD)("span",{key:0,class:"label",textContent:(0,n.zw)(s.value)},null,8,c)):(0,a.kq)("",!0)])}var p={name:"Slider",emits:["input","change","mouseup","mousedown","touchstart","touchend","keyup","keydown"],props:{value:{type:Number},disabled:{type:Boolean,default:!1},range:{type:Array,default:()=>[0,100]},step:{type:Number,default:1},withLabel:{type:Boolean,default:!1}},methods:{onUpdate(e){this.update(e.target.value),this.$emit(e.type,{...e,target:{...e.target,value:this.$refs.range.value}})},update(e){const t=100*e/(this.range[1]-this.range[0]);this.$refs.thumb.style.left=`${t}%`,this.$refs.thumb.style.transform=`translate(-${t}%, -50%)`,this.$refs.track.style.width=`${t}%`}},mounted(){null!=this.value&&this.update(this.value)}},h=s(3744);const m=(0,h.Z)(p,[["render",v],["__scopeId","data-v-288acf82"]]);var g=m},6137:function(e,t,s){s.d(t,{Z:function(){return h}});var a=s(6252),i=s(3577),n=s(9963);const l=e=>((0,a.dD)("data-v-8e097228"),e=e(),(0,a.Cn)(),e),o=["checked"],r=l((()=>(0,a._)("div",{class:"switch"},[(0,a._)("div",{class:"dot"})],-1))),d={class:"label"};function u(e,t,s,l,u,c){return(0,a.wg)(),(0,a.iD)("div",{class:(0,i.C_)(["power-switch",{disabled:s.disabled}]),onClick:t[0]||(t[0]=(0,n.iM)(((...e)=>c.onInput&&c.onInput(...e)),["stop"]))},[(0,a._)("input",{type:"checkbox",checked:s.value},null,8,o),(0,a._)("label",null,[r,(0,a._)("span",d,[(0,a.WI)(e.$slots,"default",{},void 0,!0)])])],2)}var c={name:"ToggleSwitch",emits:["input"],props:{value:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},methods:{onInput(e){if(this.disabled)return!1;this.$emit("input",e)}}},v=s(3744);const p=(0,v.Z)(c,[["render",u],["__scopeId","data-v-8e097228"]]);var h=p},4604:function(e,t,s){s.r(t),s.d(t,{default:function(){return vs}});var a=s(6252),i=s(3577);const n={class:"zigbee-container"},l={key:0,class:"info-body"},o={class:"row"},r=(0,a._)("div",{class:"param-name"},"State",-1),d=["textContent"],u={class:"row"},c=(0,a._)("div",{class:"param-name"},"Permit Join",-1),v=["textContent"],p={key:0,class:"row"},h=(0,a._)("div",{class:"param-name"},"Network Channel",-1),m=["textContent"],g={class:"row"},b=(0,a._)("div",{class:"param-name"},"Zigbee2MQTT Version",-1),y=["textContent"],f={key:1,class:"row"},_=(0,a._)("div",{class:"param-name"},"MQTT Server",-1),w=["textContent"],k={key:2,class:"row"},q=(0,a._)("div",{class:"param-name"},"Serial Port",-1),C=["textContent"],x={key:3,class:"row"},z=(0,a._)("div",{class:"param-name"},"Firmware Type",-1),D=["textContent"],M={key:4,class:"row"},G=(0,a._)("div",{class:"param-name"},"Firmware Version",-1),Z={class:"param-value"},R={key:5,class:"row"},I=(0,a._)("div",{class:"param-name"},"Firmware Revision",-1),N=["textContent"],T={class:"view-options"},V={class:"view-selector col-s-8 col-m-9 col-l-10"},U=["value"],E=["textContent","selected","value"],j={class:"buttons"},A=["disabled"],S=(0,a._)("i",{class:"fa fa-plus"},null,-1),$=[S],O=["disabled"],F=(0,a._)("i",{class:"fa fa-sync-alt"},null,-1),B=[F],Y={class:"view-container"},L={key:0,class:"view devices"},H={key:0,class:"no-items"},K={key:0,class:"loading"},P={key:1,class:"empty"},X={key:1,class:"view groups"},W={key:0,class:"no-items"},J={key:0,class:"loading"},Q={key:1,class:"empty"};function ee(e,t,s,S,F,ee){const te=(0,a.up)("Loading"),se=(0,a.up)("Modal"),ae=(0,a.up)("DropdownItem"),ie=(0,a.up)("Dropdown"),ne=(0,a.up)("Device"),le=(0,a.up)("Group");return(0,a.wg)(),(0,a.iD)("div",n,[F.loading?((0,a.wg)(),(0,a.j4)(te,{key:0})):(0,a.kq)("",!0),(0,a.Wm)(se,{title:"Network Info",ref:"infoModal"},{default:(0,a.w5)((()=>[F.status.info?((0,a.wg)(),(0,a.iD)("div",l,[(0,a._)("div",o,[r,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.state)},null,8,d)]),(0,a._)("div",u,[c,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.permit_join)},null,8,v)]),F.status.info.network?((0,a.wg)(),(0,a.iD)("div",p,[h,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.network.channel)},null,8,m)])):(0,a.kq)("",!0),(0,a._)("div",g,[b,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.version)},null,8,y)]),F.status.info.config?.mqtt?((0,a.wg)(),(0,a.iD)("div",f,[_,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.config.mqtt.server)},null,8,w)])):(0,a.kq)("",!0),F.status.info.config?.serial?((0,a.wg)(),(0,a.iD)("div",k,[q,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.config.serial.port)},null,8,C)])):(0,a.kq)("",!0),F.status.info.coordinator?.type?((0,a.wg)(),(0,a.iD)("div",x,[z,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.coordinator.type)},null,8,D)])):(0,a.kq)("",!0),F.status.info.coordinator?.meta?((0,a.wg)(),(0,a.iD)("div",M,[G,(0,a._)("div",Z,(0,i.zw)(F.status.info.coordinator.meta.maintrel)+"."+(0,i.zw)(F.status.info.coordinator.meta.majorrel)+"."+(0,i.zw)(F.status.info.coordinator.meta.minorrel),1)])):(0,a.kq)("",!0),F.status.info.coordinator?.meta?((0,a.wg)(),(0,a.iD)("div",R,[I,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(F.status.info.coordinator.meta.revision)},null,8,N)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])),_:1},512),(0,a._)("div",T,[(0,a._)("div",V,[(0,a._)("label",null,[(0,a._)("select",{value:F.selected.view,onChange:t[0]||(t[0]=e=>this.selected.view=e.target.value)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(F.views,((e,t)=>((0,a.wg)(),(0,a.iD)("option",{textContent:(0,i.zw)((t[0].toUpperCase()+t.slice(1)).replace("_"," ")),key:t,selected:e,value:t},null,8,E)))),128))],40,U)])]),(0,a._)("div",j,["groups"===F.selected.view?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"btn btn-default",title:"Add Group",disabled:F.loading,onClick:t[1]||(t[1]=(...e)=>ee.addGroup&&ee.addGroup(...e))},$,8,A)):(0,a.kq)("",!0),(0,a.Wm)(ie,{ref:"networkCommandsDropdown","icon-class":"fa fa-cog",title:"Network commands"},{default:(0,a.w5)((()=>[(0,a.Wm)(ae,{text:"Network Info",disabled:F.loading,onClick:t[2]||(t[2]=t=>e.$refs.infoModal.show())},null,8,["disabled"]),F.status.info?.permit_join?((0,a.wg)(),(0,a.j4)(ae,{key:1,text:"Disable Join",disabled:F.loading,onClick:t[4]||(t[4]=e=>ee.permitJoin(!1))},null,8,["disabled"])):((0,a.wg)(),(0,a.j4)(ae,{key:0,text:"Permit Join",disabled:F.loading,onClick:t[3]||(t[3]=e=>ee.permitJoin(!0))},null,8,["disabled"])),(0,a.Wm)(ae,{text:"Factory Reset",disabled:F.loading,onClick:ee.factoryReset},null,8,["disabled","onClick"])])),_:1},512),(0,a._)("button",{class:"btn btn-default",title:"Refresh network",disabled:F.loading,onClick:t[5]||(t[5]=(...e)=>ee.refresh&&ee.refresh(...e))},B,8,O)])]),(0,a._)("div",Y,["devices"===F.selected.view?((0,a.wg)(),(0,a.iD)("div",L,[Object.keys(F.devices).length?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",H,[F.loading?((0,a.wg)(),(0,a.iD)("div",K,"Loading devices...")):((0,a.wg)(),(0,a.iD)("div",P,"No devices found on the network"))])),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(F.devices,((e,t)=>((0,a.wg)(),(0,a.j4)(ne,{key:t,device:e,groups:F.groups,selected:F.selected.deviceId===t,onSelect:e=>F.selected.deviceId=F.selected.deviceId===t?null:t,onRename:ee.refreshDevices,onRemove:ee.refreshDevices,onGroupsEdit:ee.refreshGroups},null,8,["device","groups","selected","onSelect","onRename","onRemove","onGroupsEdit"])))),128))])):"groups"===F.selected.view?((0,a.wg)(),(0,a.iD)("div",X,[Object.keys(F.groups).length?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",W,[F.loading?((0,a.wg)(),(0,a.iD)("div",J,"Loading groups...")):((0,a.wg)(),(0,a.iD)("div",Q,"No groups available on the network"))])),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(F.groups,((e,t)=>((0,a.wg)(),(0,a.j4)(le,{key:t,group:e,devices:F.devices,selected:F.selected.groupId===t,onSelect:e=>F.selected.groupId=F.selected.groupId===t?null:t,onRename:ee.refreshGroups,onRemove:ee.refreshGroups,onEdit:ee.refreshGroups},null,8,["group","devices","selected","onSelect","onRename","onRemove","onEdit"])))),128))])):(0,a.kq)("",!0)])])}var te=s(449),se=s(6728),ae=s(1232),ie=s(2628),ne=s(9963);const le=e=>((0,a.dD)("data-v-b05d09fc"),e=e(),(0,a.Cn)(),e),oe={class:"groups"},re=["value","checked"],de=["textContent"],ue=le((()=>(0,a._)("div",{class:"footer buttons"},[(0,a._)("button",{type:"submit"},"Save")],-1))),ce=["textContent"],ve={key:1,class:"params"},pe={class:"row"},he=le((()=>(0,a._)("div",{class:"param-name"},"Name",-1))),me={class:"param-value"},ge=["value"],be={class:"buttons"},ye=le((()=>(0,a._)("i",{class:"fas fa-times"},null,-1))),fe=[ye],_e=le((()=>(0,a._)("button",{type:"submit",class:"btn btn-default"},[(0,a._)("i",{class:"fa fa-check"})],-1))),we=["textContent"],ke={class:"buttons"},qe=le((()=>(0,a._)("i",{class:"fa fa-edit"},null,-1))),Ce=[qe],xe={class:"row"},ze=le((()=>(0,a._)("div",{class:"param-name"},"IEEE Address",-1))),De=["textContent"],Me={key:0,class:"row"},Ge=le((()=>(0,a._)("div",{class:"param-name"},"Network Address",-1))),Ze=["textContent"],Re={class:"row"},Ie=le((()=>(0,a._)("div",{class:"param-name"},"Type",-1))),Ne=["textContent"],Te={key:1,class:"row"},Ve=le((()=>(0,a._)("div",{class:"param-name"},"Vendor",-1))),Ue={class:"param-value"},Ee={key:2,class:"row"},je=le((()=>(0,a._)("div",{class:"param-name"},"Model",-1))),Ae={class:"param-value"},Se={key:3,class:"row"},$e=le((()=>(0,a._)("div",{class:"param-name"},"Model ID",-1))),Oe={class:"param-value"},Fe={key:4,class:"row"},Be=le((()=>(0,a._)("div",{class:"param-name"},"Description",-1))),Ye={class:"param-value"},Le={key:5,class:"row"},He=le((()=>(0,a._)("div",{class:"param-name"},"Software Build ID",-1))),Ke={class:"param-value"},Pe={key:6,class:"row"},Xe=le((()=>(0,a._)("div",{class:"param-name"},"Date Code",-1))),We={class:"param-value"},Je={key:7,class:"row"},Qe=le((()=>(0,a._)("div",{class:"param-name"},"Power Source",-1))),et={class:"param-value"},tt={key:8,class:"section values"},st=le((()=>(0,a._)("div",{class:"header"},[(0,a._)("div",{class:"title"},"Values")],-1))),at={class:"body"},it={class:"param-name"},nt={key:0,class:"text"},lt=["textContent"],ot=["textContent"],rt={class:"param-value"},dt={key:2},ut=["value","disabled","onChange"],ct={key:3},vt=["value","onChange"],pt={key:0},ht=["value","textContent","selected","disabled"],mt={key:4},gt=["onChange","value"],bt={key:5},yt=["disabled","value","onChange"],ft={class:"section actions"},_t=le((()=>(0,a._)("div",{class:"header"},[(0,a._)("div",{class:"title"},"Actions")],-1))),wt={class:"body"},kt=le((()=>(0,a._)("div",{class:"param-name"},"Manage groups",-1))),qt=le((()=>(0,a._)("div",{class:"param-value"},[(0,a._)("i",{class:"fa fa-network-wired"})],-1))),Ct=[kt,qt],xt={key:0,class:"param-name"},zt={key:1,class:"param-name"},Dt=le((()=>(0,a._)("div",{class:"param-value"},[(0,a._)("i",{class:"fa fa-sync-alt"})],-1))),Mt=le((()=>(0,a._)("div",{class:"param-name"},"Remove Device",-1))),Gt=le((()=>(0,a._)("div",{class:"param-value"},[(0,a._)("i",{class:"fa fa-trash"})],-1))),Zt=[Mt,Gt],Rt=le((()=>(0,a._)("div",{class:"param-name"},"Force Remove Device",-1))),It=le((()=>(0,a._)("div",{class:"param-value"},[(0,a._)("i",{class:"fa fa-trash"})],-1))),Nt=[Rt,It];function Tt(e,t,s,n,l,o){const r=(0,a.up)("Loading"),d=(0,a.up)("Modal"),u=(0,a.up)("ToggleSwitch"),c=(0,a.up)("Slider");return(0,a.wg)(),(0,a.iD)("div",{class:(0,i.C_)(["item device",{selected:s.selected}])},[l.loading?((0,a.wg)(),(0,a.j4)(r,{key:0})):(0,a.kq)("",!0),(0,a.Wm)(d,{class:"groups-modal",ref:"groupsModal",title:"Device groups"},{default:(0,a.w5)((()=>[l.loading?((0,a.wg)(),(0,a.j4)(r,{key:0})):(0,a.kq)("",!0),(0,a._)("form",{class:"content",onSubmit:t[0]||(t[0]=(0,ne.iM)(((...e)=>o.manageGroups&&o.manageGroups(...e)),["prevent"]))},[(0,a._)("div",oe,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(s.groups,((e,t)=>((0,a.wg)(),(0,a.iD)("label",{class:"row group",key:t},[(0,a._)("input",{type:"checkbox",value:t,checked:o.associatedGroups.has(parseInt(e.id))},null,8,re),(0,a._)("span",{class:"name",textContent:(0,i.zw)(e.friendly_name?.length?e.friendly_name:`[Group #${e.id}]`)},null,8,de)])))),128))]),ue],32)])),_:1},512),(0,a._)("div",{class:(0,i.C_)(["row name header vertical-center",{selected:s.selected}]),textContent:(0,i.zw)(s.device.friendly_name||s.device.ieee_address),onClick:t[1]||(t[1]=t=>e.$emit("select"))},null,10,ce),s.selected?((0,a.wg)(),(0,a.iD)("div",ve,[(0,a._)("div",pe,[he,(0,a._)("div",me,[(0,a._)("div",{class:(0,i.C_)(["name-edit",{hidden:!l.editName}])},[(0,a._)("form",{onSubmit:t[3]||(t[3]=(0,ne.iM)(((...e)=>o.rename&&o.rename(...e)),["prevent"]))},[(0,a._)("label",null,[(0,a._)("input",{type:"text",name:"name",ref:"name",value:s.device.friendly_name},null,8,ge)]),(0,a._)("span",be,[(0,a._)("button",{type:"button",class:"btn btn-default",onClick:t[2]||(t[2]=e=>l.editName=!1)},fe),_e])],32)],2),(0,a._)("div",{class:(0,i.C_)(["name-edit",{hidden:l.editName}])},[(0,a._)("span",{textContent:(0,i.zw)(s.device.friendly_name)},null,8,we),(0,a._)("span",ke,[(0,a._)("button",{type:"button",class:"btn btn-default",onClick:t[4]||(t[4]=e=>l.editName=!0)},Ce)])],2)])]),(0,a._)("div",xe,[ze,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(s.device.ieee_address)},null,8,De)]),s.device.network_address?((0,a.wg)(),(0,a.iD)("div",Me,[Ge,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(s.device.network_address)},null,8,Ze)])):(0,a.kq)("",!0),(0,a._)("div",Re,[Ie,(0,a._)("div",{class:"param-value",textContent:(0,i.zw)(s.device.type)},null,8,Ne)]),s.device.definition?.vendor?((0,a.wg)(),(0,a.iD)("div",Te,[Ve,(0,a._)("div",Ue,(0,i.zw)(s.device.definition.vendor),1)])):(0,a.kq)("",!0),s.device.definition?.model?((0,a.wg)(),(0,a.iD)("div",Ee,[je,(0,a._)("div",Ae,(0,i.zw)(s.device.definition.model),1)])):(0,a.kq)("",!0),s.device.model_id?((0,a.wg)(),(0,a.iD)("div",Se,[$e,(0,a._)("div",Oe,(0,i.zw)(s.device.model_id),1)])):(0,a.kq)("",!0),s.device.definition?.description?((0,a.wg)(),(0,a.iD)("div",Fe,[Be,(0,a._)("div",Ye,(0,i.zw)(s.device.definition.description),1)])):(0,a.kq)("",!0),s.device.software_build_id?((0,a.wg)(),(0,a.iD)("div",Le,[He,(0,a._)("div",Ke,(0,i.zw)(s.device.software_build_id),1)])):(0,a.kq)("",!0),s.device.definition?.date_code?((0,a.wg)(),(0,a.iD)("div",Pe,[Xe,(0,a._)("div",We,(0,i.zw)(s.device.definition.date_code),1)])):(0,a.kq)("",!0),s.device.power_source?((0,a.wg)(),(0,a.iD)("div",Je,[Qe,(0,a._)("div",et,(0,i.zw)(s.device.power_source),1)])):(0,a.kq)("",!0),Object.keys(o.displayedValues).length?((0,a.wg)(),(0,a.iD)("div",tt,[st,(0,a._)("div",at,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(o.displayedValues,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:"row value",key:t},[(0,a._)("div",it,[(0,a.Uk)((0,i.zw)(e.description)+" ",1),null!=o.rgbColor&&null!=e.value?.x&&null!=e.value?.y||null!=e.value?.hue&&null!=e.value?.saturation?((0,a.wg)(),(0,a.iD)("span",nt,"Color")):(0,a.kq)("",!0),e.property?((0,a.wg)(),(0,a.iD)("span",{key:1,class:"name",textContent:(0,i.zw)(e.property)},null,8,lt)):(0,a.kq)("",!0),e.unit?((0,a.wg)(),(0,a.iD)("span",{key:2,class:"unit",textContent:(0,i.zw)(e.unit)},null,8,ot)):(0,a.kq)("",!0)]),(0,a._)("div",rt,["binary"===e.type?((0,a.wg)(),(0,a.j4)(u,{key:0,value:null!=e.value_on?e.value===e.value_on:!!e.value,disabled:!e.writable,onInput:t=>o.setValue(e,t)},null,8,["value","disabled","onInput"])):"numeric"===e.type&&null!=e.value_min&&null!=e.value_max?((0,a.wg)(),(0,a.j4)(c,{key:1,"with-label":!0,range:[e.value_min,e.value_max],value:e.value,disabled:!e.writable,onChange:t=>o.setValue(e,t)},null,8,["range","value","disabled","onChange"])):"numeric"!==e.type||null!=e.value_min&&null!=e.value_max?"enum"===e.type?((0,a.wg)(),(0,a.iD)("label",ct,[(0,a._)("select",{value:e.readable&&null!=e.value?e.value:"",onChange:t=>o.setValue(e,t)},[e.readable?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("option",pt)),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e.values,(t=>((0,a.wg)(),(0,a.iD)("option",{key:t,value:t,textContent:(0,i.zw)(t),selected:e.readable&&e.value===t,disabled:!e.writable},null,8,ht)))),128))],40,vt)])):null!=o.rgbColor&&null!=e.value?.x&&null!=e.value?.y||null!=e.value?.hue&&null!=e.value?.saturation?((0,a.wg)(),(0,a.iD)("label",mt,[(0,a._)("input",{type:"color",onChange:(0,ne.iM)((t=>o.setValue(e,t)),["stop"]),value:"#"+o.rgbColor.map((e=>(e=Number(e).toString(16),1===e.length?"0"+e:e))).join("")},null,40,gt)])):((0,a.wg)(),(0,a.iD)("label",bt,[(0,a._)("input",{type:"text",disabled:!e.writable,value:e.value,onChange:t=>o.setValue(e,t)},null,40,yt)])):((0,a.wg)(),(0,a.iD)("label",dt,[(0,a._)("input",{type:"number","with-label":!0,value:e.value,disabled:!e.writable,onChange:t=>o.setValue(e,t)},null,40,ut)]))])])))),128))])])):(0,a.kq)("",!0),(0,a._)("div",ft,[_t,(0,a._)("div",wt,[(0,a._)("div",{class:"row",onClick:t[5]||(t[5]=t=>e.$refs.groupsModal.show())},Ct),(0,a._)("div",{class:"row",onClick:t[6]||(t[6]=e=>l.otaUpdatesAvailable?o.installOtaUpdates():o.checkOtaUpdates())},[l.otaUpdatesAvailable?((0,a.wg)(),(0,a.iD)("div",zt,"Install updates")):((0,a.wg)(),(0,a.iD)("div",xt,"Check for updates")),Dt]),(0,a._)("div",{class:"row",onClick:t[7]||(t[7]=e=>o.remove(!1))},Zt),(0,a._)("div",{class:"row error",onClick:t[8]||(t[8]=e=>o.remove(!0))},Nt)])])])):(0,a.kq)("",!0)],2)}var Vt=s(1120),Ut=s(6137),Et=s(4212),jt=s(9642),At={name:"Device",components:{Modal:jt.Z,ToggleSwitch:Ut.Z,Slider:Vt.Z,Loading:ae.Z},mixins:[ie.Z],emits:["select","rename","remove","groups-edit"],props:{device:{type:Object,required:!0},groups:{type:Object,default:()=>{}},selected:{type:Boolean,default:!1}},data(){return{editName:!1,loading:!1,status:{},otaUpdatesAvailable:!1}},computed:{values(){if(!this.device.definition?.exposes)return{};const e=e=>{const t=(e,s)=>{if(e.features){e.property&&(s[e.property]=s[e.property]||{},s=s[e.property]);for(const a of e.features)t(a,s)}else e.property&&(s[e.property]=e)},s={};for(const a of e)t(a,s);return s};return e(this.device.definition.exposes)},displayedValues(){const e={},t=(e,[s,a])=>(s in this.status&&(a={...a,value:this.status[s]}),null!=a.access&&(a.readable=!!(1&a.access),a.writable=!!(2&a.access),delete a.access),e[s]=a,Object.entries(a).filter((e=>e[1]instanceof Object)).reduce(t,e[s]),e);return Object.entries(this.values).reduce(t,e),e},rgbColor(){if(!this.displayedValues.color)return;const e=this.displayedValues.color?.value;if(e){if(null!=e.x&&null!=e.y){const t=new Et.N({bri:[this.displayedValues.brightness?.value_min||0,this.displayedValues.brightness?.value_max||255]});return t.xyToRgb(e.x,e.y,this.displayedValues.brightness.value)}if(null!=e.hue&&(null!=e.saturation||null!=e.sat)){const t=null!=e.saturation?"saturation":"sat",s=new Et.N({hue:[this.displayedValues.color.hue?.value_min||0,this.displayedValues.color.hue.value_max||65535],sat:[this.displayedValues.color[t]?.value_min||0,this.displayedValues.color[t].value_max||255],bri:[this.displayedValues.brightness?.value_min||0,this.displayedValues.brightness?.value_max||255]});return s.hslToRgb(e.hue,e[t],this.displayedValues.brightness.value)}return null}},associatedGroups(){return new Set(Object.values(this.groups).filter((e=>new Set((e.members||[]).map((e=>e.ieee_address))).has(this.device.ieee_address))).map((e=>parseInt(e.id))))}},methods:{async refresh(){this.loading=!0;try{this.status=await this.request("zigbee.mqtt.device_get",{device:this.device.friendly_name||this.device.ieee_address})}finally{this.loading=!1}},async rename(){const e=(this.$refs.name.value||"").trim();if(e.length&&e!==this.device.friendly_name){this.loading=!0;try{await this.request("zigbee.mqtt.device_rename",{device:this.device.friendly_name?.length?this.device.friendly_name:this.device.ieee_address,name:e}),this.$emit("rename",{name:this.device.friendly_name,newName:e})}finally{this.editName=!1,this.loading=!1}}},async remove(e){if(confirm("Are you really sure that you want to remove this device from the network?")){e=!!e,this.loading=!0;try{await this.request("zigbee.mqtt.device_remove",{device:this.device.friendly_name?.length?this.device.friendly_name:this.device.ieee_address,force:e}),this.$emit("remove",{device:this.device.friendly_name||this.device.ieee_address})}finally{this.loading=!1}}},async setValue(e,t){const s={device:this.device.friendly_name||this.device.ieee_address,property:e.property,value:null};switch(e.type){case"binary":e.value_toggle?s.value=e.value_toggle:e.value_on&&e.value_off?s.value=e.value===e.value_on?e.value_off:e.value_on:s.value=!e.value;break;case"numeric":s.value=parseFloat(t.target.value);break;case"enum":t.target.value?.length&&(s.value=t.target.value);break;default:if(null!=e.x&&null!=e.y||null!=e.hue&&(null!=e.saturation||null!=e.sat)){s.property="color";const a=t.target.value.slice(1).split(/([0-9a-fA-F]{2})/).filter(((e,t)=>t%2)).map((e=>parseInt(e,16)));if(null!=e.x&&null!=e.y){const e=new Et.N({bri:[this.displayedValues.brightness?.value_min||0,this.displayedValues.brightness?.value_max||255]}),t=e.rgbToXY(...a);s.value={color:{x:t[0],y:t[1]}}}else{const e=null!=this.displayedValues.color.saturation?"saturation":"sat",t=new Et.N({hue:[this.displayedValues.color.hue?.value_min||0,this.displayedValues.color.hue.value_max||65535],sat:[this.displayedValues.color[e]?.value_min||0,this.displayedValues.color[e].value_max||255],bri:[this.displayedValues.brightness?.value_min||0,this.displayedValues.brightness?.value_max||255]}),i=t.rgbToHsl(...a);s.value={brightness:i[2],color:{hue:i[0]}},s.value.color[e]=i[1]}}break}if(null!=s.value){this.loading=!0;try{await this.request("zigbee.mqtt.device_set",s),await this.refresh()}finally{this.loading=!1}}},async manageGroups(e){const t=[...e.target.querySelectorAll("input[type=checkbox]")].reduce(((e,t)=>{const s=parseInt(t.value);return t.checked&&!this.associatedGroups.has(s)?e.add.add(s):!t.checked&&this.associatedGroups.has(s)&&e.remove.add(s),e}),{add:new Set,remove:new Set}),s=async e=>{await Promise.all([...t[e]].map((async t=>{await this.request(`zigbee.mqtt.group_${e}_device`,{group:this.groups[t].friendly_name,device:this.device.friendly_name?.length?this.device.friendly_name:this.device.ieee_address})})))};this.loading=!0;try{await Promise.all(Object.keys(t).map(s)),this.$emit("groups-edit",t)}finally{this.loading=!1}},async checkOtaUpdates(){this.loading=!0;try{this.otaUpdatesAvailable=(await this.request("zigbee.mqtt.device_check_ota_updates",{device:this.device.friendly_name?.length?this.device.friendly_name:this.device.ieee_address})).update_available,this.otaUpdatesAvailable?this.notify({text:"A firmware update is available for the device",image:{iconClass:"fa fa-sync-alt"}}):this.notify({text:"The device is up to date",image:{iconClass:"fa fa-check"}})}finally{this.loading=!1}},async installOtaUpdates(){this.loading=!0;try{await this.request("zigbee.mqtt.device_install_ota_updates",{device:this.device.friendly_name?.length?this.device.friendly_name:this.device.ieee_address})}finally{this.loading=!1}}},mounted(){this.$watch((()=>this.selected),(e=>{e&&this.refresh()})),this.$watch((()=>this.status.update_available),(e=>{this.otaUpdatesAvailable=e})),this.subscribe((e=>{e.device!==this.device.friendly_name&&e.device!==this.device.ieee_address||(this.status={...this.status,...e.properties})}),`on-property-change-${this.device.ieee_address}`,"platypush.message.event.zigbee.mqtt.ZigbeeMqttDevicePropertySetEvent")},unmounted(){this.unsubscribe(`on-property-change-${this.device.ieee_address}`)}},St=s(3744);const $t=(0,St.Z)(At,[["render",Tt],["__scopeId","data-v-b05d09fc"]]);var Ot=$t;const Ft=e=>((0,a.dD)("data-v-7667f7ba"),e=e(),(0,a.Cn)(),e),Bt=["textContent"],Yt={key:1,class:"params"},Lt={class:"section devices"},Ht=Ft((()=>(0,a._)("div",{class:"header"},[(0,a._)("div",{class:"title"},"Devices")],-1))),Kt={class:"body"},Pt=["checked","value","onChange"],Xt=["textContent"],Wt={class:"section actions"},Jt=Ft((()=>(0,a._)("div",{class:"header"},[(0,a._)("div",{class:"title"},"Actions")],-1))),Qt={class:"body"},es=Ft((()=>(0,a._)("div",{class:"col-10"},"Rename Group",-1))),ts=Ft((()=>(0,a._)("div",{class:"buttons col-2 pull-right"},[(0,a._)("i",{class:"fa fa-edit"})],-1))),ss=[es,ts],as=Ft((()=>(0,a._)("div",{class:"col-10"},"Remove Group",-1))),is=Ft((()=>(0,a._)("div",{class:"buttons col-2 pull-right"},[(0,a._)("i",{class:"fa fa-trash"})],-1))),ns=[as,is];function ls(e,t,s,n,l,o){const r=(0,a.up)("Loading");return(0,a.wg)(),(0,a.iD)("div",{class:(0,i.C_)(["item group",{selected:s.selected}])},[l.loading?((0,a.wg)(),(0,a.j4)(r,{key:0})):(0,a.kq)("",!0),(0,a._)("div",{class:(0,i.C_)(["row name header vertical-center",{selected:s.selected}]),textContent:(0,i.zw)(s.group.friendly_name),onClick:t[0]||(t[0]=t=>e.$emit("select"))},null,10,Bt),s.selected?((0,a.wg)(),(0,a.iD)("div",Yt,[(0,a._)("div",Lt,[Ht,(0,a._)("div",Kt,[(0,a._)("form",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(s.devices,((e,t)=>((0,a.wg)(),(0,a.iD)("label",{class:"row",key:t},[(0,a._)("input",{type:"checkbox",checked:o.members.has(e.ieee_address),value:e.ieee_address,onChange:t=>o.toggleDevice(e.ieee_address)},null,40,Pt),(0,a._)("span",{class:"label",textContent:(0,i.zw)(e.friendly_name?.length?e.friendly_name:e.ieee_address)},null,8,Xt)])))),128))])])]),(0,a._)("div",Wt,[Jt,(0,a._)("div",Qt,[(0,a._)("div",{class:"row",onClick:t[1]||(t[1]=(...e)=>o.rename&&o.rename(...e))},ss),(0,a._)("div",{class:"row",onClick:t[2]||(t[2]=(...e)=>o.remove&&o.remove(...e))},ns)])])])):(0,a.kq)("",!0)],2)}var os={name:"Group",emits:["select","remove","edit"],mixins:[ie.Z],components:{Loading:ae.Z},props:{group:{type:Object,required:!0},devices:{type:Object,default:()=>({})},selected:{type:Boolean,default:!1}},data(){return{loading:!1,values:{}}},computed:{devicesByAddress(){return Object.entries(this.devices).reduce(((e,t)=>{const s=t[1];return e[s.ieee_address]=s,e}),{})},members(){return new Set((this.group.members||[]).map((e=>e.ieee_address)))}},methods:{async remove(){if(confirm("Are you sure that you want to remove this group?")){this.loading=!0;try{await this.request("zigbee.mqtt.group_remove",{name:this.group.friendly_name}),this.$emit("remove",{name:this.group.friendly_name})}finally{this.loading=!1}}},async rename(){let e=prompt("New group name",this.group.friendly_name);if(e?.length){e=e.trim(),this.loading=!0;try{await this.request("zigbee.mqtt.group_rename",{group:this.group.friendly_name||this.group.id,name:e}),this.$emit("rename",{name:this.group.friendly_name,newName:e})}finally{this.loading=!1}}},async toggleDevice(e){const t=this.devicesByAddress[e],s=t.friendly_name?.length?t.friendly_name:e,a=this.members.has(e)?"remove":"add";this.loading=!0;try{await this.request(`zigbee.mqtt.group_${a}_device`,{group:this.group.friendly_name,device:s}),this.$emit("edit",{device:s,method:a})}finally{this.loading=!1}}}};const rs=(0,St.Z)(os,[["render",ls],["__scopeId","data-v-7667f7ba"]]);var ds=rs,us={name:"ZigbeeMqtt",components:{Modal:jt.Z,Dropdown:te.Z,DropdownItem:se.Z,Loading:ae.Z,Device:Ot,Group:ds},mixins:[ie.Z],data(){return{devices:{},groups:{},status:{},loading:!1,selected:{view:"devices",deviceId:void 0,groupId:void 0},views:{devices:!0,groups:!0},modal:{group:{visible:!1}}}},methods:{async refreshDevices(){this.loading=!0;try{this.devices=(await this.request("zigbee.mqtt.devices")).reduce(((e,t)=>(t.friendly_name in this.devices&&(t={values:this.devices[t.friendly_name].values||{},...this.devices[t.friendly_name]}),e[t.friendly_name]=t,e)),{})}finally{this.loading=!1}},async refreshGroups(){this.loading=!0;try{this.groups=(await this.request("zigbee.mqtt.groups")).reduce(((e,t)=>(e[t.id]=t,e)),{})}finally{this.loading=!1}},async refreshInfo(){this.loading=!0;try{this.status=await this.request("zigbee.mqtt.info")}finally{this.loading=!1}},refresh(){this.refreshDevices(),this.refreshGroups(),this.refreshInfo()},updateProperties(e,t){this.devices[e].values=t},async addGroup(){const e=prompt("Group name");if(e&&e.length){this.loading=!0;try{await this.request("zigbee.mqtt.group_add",{name:e})}finally{this.loading=!1}await this.refreshGroups()}},async permitJoin(e){const t={permit:!!e};if(e){let e=prompt("Join allow period in seconds (0 or empty for no time limits)","60");t.seconds=e.length?parseInt(e):null}this.loading=!0;try{await this.request("zigbee.mqtt.permit_join",t),setTimeout(this.refreshInfo,1e3)}finally{this.loading=!1}},async factoryReset(){if(confirm("Are you SURE that you want to do a device factory reset?")||confirm("Are you REALLY sure? ALL network information and custom firmware will be lost!!")){this.loading=!0;try{await this.request("zigbee.mqtt.factory_reset")}finally{this.loading=!1}}},async addToGroup(e,t){this.loading=!0,await this.request("zigbee.mqtt.group_add_device",{device:e,group:t}),this.loading=!1;const s=this;setTimeout((()=>{s.refresh(),s.refreshGroups()}),100)}},created(){this.subscribe((()=>{this.notify({text:"WARNING: The controller is offline",error:!0})}),"on-zigbee-offline","platypush.message.event.zigbee.mqtt.ZigbeeMqttOfflineEvent"),this.subscribe((()=>{this.notify({text:"The controller is now online",iconClass:"fas fa-check"})}),"on-zigbee-online","platypush.message.event.zigbee.mqtt.ZigbeeMqttOnlineEvent"),this.subscribe((()=>{this.notify({text:"Failed to remove the device",error:!0})}),"on-zigbee-device-remove-failed","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceRemovedFailedEvent"),this.subscribe((()=>{this.notify({text:"Failed to add the group",error:!0})}),"on-zigbee-group-add-failed","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupAddedFailedEvent"),this.subscribe((()=>{this.notify({text:"Failed to remove group",error:!0})}),"on-zigbee-group-remove-failed","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupRemovedFailedEvent"),this.subscribe((()=>{this.notify({text:"Failed to remove the devices from group",error:!0})}),"on-zigbee-remove-all-failed","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupRemoveAllFailedEvent"),this.subscribe((e=>{this.notify({text:e.error||"[Unknown error]",error:!0})}),"on-zigbee-error","platypush.message.event.zigbee.mqtt.ZigbeeMqttErrorEvent"),this.subscribe(this.refresh,"on-zigbee-device-update","platypush.message.event.zigbee.mqtt.ZigbeeMqttOnlineEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDevicePairingEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceConnectedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceBannedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceRemovedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceWhitelistedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceRenamedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceBindEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttDeviceUnbindEvent"),this.subscribe(this.refreshGroups,"on-zigbee-group-update","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupAddedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupRemovedEvent","platypush.message.event.zigbee.mqtt.ZigbeeMqttGroupRemoveAllEvent")},mounted(){this.refresh()},unmounted(){this.unsubscribe("on-zigbee-error"),this.unsubscribe("on-zigbee-remove-all-failed"),this.unsubscribe("on-zigbee-group-remove-failed"),this.unsubscribe("on-zigbee-group-add-failed"),this.unsubscribe("on-zigbee-device-remove-failed"),this.unsubscribe("on-zigbee-online"),this.unsubscribe("on-zigbee-offline"),this.unsubscribe("on-zigbee-device-update"),this.unsubscribe("on-zigbee-group-update")}};const cs=(0,St.Z)(us,[["render",ee]]);var vs=cs}}]);
//# sourceMappingURL=4604.ac359b97.js.map