platypush/platypush/backend/http/webapp/dist/static/js/747.2d2a23ac.js

2 lines
30 KiB
JavaScript

"use strict";(self["webpackChunkplatypush"]=self["webpackChunkplatypush"]||[]).push([[747],{4212:function(e,t,n){n.d(t,{N:function(){return s}});class s{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,n){return n[0]+(e-t[0])*(n[1]-n[0])/(t[1]-t[0])}hslToRgb(e,t,n){[e,t,n]=[this.normalize(e,this.ranges.hue,[0,360]),this.normalize(t,this.ranges.sat,[0,100]),this.normalize(n,this.ranges.bri,[0,100])],n/=100;const s=t*Math.min(n,1-n)/100,o=t=>{const o=(t+e/30)%12,i=n-s*Math.max(Math.min(o-3,9-o,1),-1);return Math.round(255*i)};return[o(0),o(8),o(4)]}rgbToHsl(e,t,n){e/=255,t/=255,n/=255;const s=Math.max(e,t,n),o=Math.min(e,t,n);let i,l,a=(s+o)/2;if(s===o)i=l=0;else{const r=s-o;switch(l=a>.5?r/(2-s-o):r/(s+o),s){case e:i=(t-n)/r+(t<n?6:0);break;case t:i=(n-e)/r+2;break;case n:i=(e-t)/r+4;break}i/=6}return[parseInt(this.normalize(i,[0,1],this.ranges.hue)),parseInt(this.normalize(l,[0,1],this.ranges.sat)),parseInt(this.normalize(a,[0,1],this.ranges.bri))]}xyToRgb(e,t,n){null==n&&(n=this.ranges.bri[1]);const s=1-e-t,o=(n/(this.ranges.bri[1]-1)).toFixed(2),i=o/t*e,l=o/t*s;let a=1.656492*i-.354851*o-.255038*l,r=.707196*-i+1.655397*o+.036152*l,c=.051713*i-.121364*o+1.01153*l;return a>c&&a>r&&a>1?(r/=a,c/=a,a=1):r>c&&r>a&&r>1?(a/=r,c/=r,r=1):c>a&&c>r&&c>1&&(a/=c,r/=c,c=1),a=a<=.0031308?12.92*a:1.055*Math.pow(a,1/2.4)-.055,r=r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055,c=c<=.0031308?12.92*c:1.055*Math.pow(c,1/2.4)-.055,a=Math.round(255*a),r=Math.round(255*r),c=Math.round(255*c),isNaN(a)&&(a=0),isNaN(r)&&(r=0),isNaN(c)&&(c=0),[a,r,c].map((e=>Math.min(Math.max(0,e),255)))}rgbToXY(e,t,n){e>1&&(e/=255),t>1&&(t/=255),n>1&&(n/=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,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;const s=.664511*e+.154324*t+.162028*n,o=.283881*e+.668433*t+.047685*n,i=88e-6*e+.07231*t+.986039*n;let l=parseFloat((s/(s+o+i)).toFixed(4)),a=parseFloat((o/(s+o+i)).toFixed(4));return isNaN(l)&&(l=0),isNaN(a)&&(a=0),[l,a]}rgbToBri(e,t,n){return Math.min(2*this.rgbToHsl(e,t,n)[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 n=this.getXY(e);return n&&e.bri?this.xyToRgb(...n,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 n=this.getRGB(e);if(n)return this.rgbToXY(...n);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 n=this.getXY(e);if(n&&e.bri){const t=this.xyToRgb(...n,e.bri);return this.rgbToHsl(...t)}console.debug("Could not determine color space"),console.debug(e)}hexToRgb(e){return[e.slice(1,3),e.slice(3,5),e.slice(5,7)].map((e=>parseInt(e,16)))}rgbToHex(e){return"#"+e.map((e=>{let t=e.toString(16);return t.length<2&&(t="0"+t),t})).join("")}}},6237:function(e,t,n){n.d(t,{Z:function(){return m}});var s=n(6252),o=n(3577),i=n(9963);const l={class:"slider-wrapper"},a=["min","max","step","disabled","value"],r={class:"track-inner",ref:"track"},c={class:"thumb",ref:"thumb"},u=["textContent"];function g(e,t,n,g,d,p){return(0,s.wg)(),(0,s.iD)("label",l,[(0,s._)("input",{class:(0,o.C_)(["slider",{"with-label":n.withLabel}]),type:"range",min:n.range[0],max:n.range[1],step:n.step,disabled:n.disabled,value:n.value,ref:"range",onInput:t[0]||(t[0]=(0,i.iM)(((...e)=>p.onUpdate&&p.onUpdate(...e)),["stop"])),onChange:t[1]||(t[1]=(0,i.iM)(((...e)=>p.onUpdate&&p.onUpdate(...e)),["stop"]))},null,42,a),(0,s._)("div",{class:(0,o.C_)(["track",{"with-label":n.withLabel}])},[(0,s._)("div",r,null,512)],2),(0,s._)("div",c,null,512),n.withLabel?((0,s.wg)(),(0,s.iD)("span",{key:0,class:"label",textContent:(0,o.zw)(n.value),ref:"label"},null,8,u)):(0,s.kq)("",!0)])}var d={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=this.$refs.range.clientWidth,n=(e-this.range[0])/(this.range[1]-this.range[0]),s=n*t,o=this.$refs.thumb;o.style.left=s-o.clientWidth/2+"px",this.$refs.thumb.style.transform=`translate(-${n}%, -50%)`,this.$refs.track.style.width=`${s}px`}},mounted(){null!=this.value&&this.update(this.value)}},p=n(3744);const h=(0,p.Z)(d,[["render",g],["__scopeId","data-v-15d8c6c5"]]);var m=h},6:function(e,t,n){n.d(t,{Z:function(){return h}});var s=n(6252),o=n(3577),i=n(9963);const l=e=>((0,s.dD)("data-v-a6396ae8"),e=e(),(0,s.Cn)(),e),a=["checked"],r=l((()=>(0,s._)("div",{class:"switch"},[(0,s._)("div",{class:"dot"})],-1))),c={class:"label"};function u(e,t,n,l,u,g){return(0,s.wg)(),(0,s.iD)("div",{class:(0,o.C_)(["power-switch",{disabled:n.disabled}]),onClick:t[0]||(t[0]=(0,i.iM)(((...e)=>g.onInput&&g.onInput(...e)),["stop"]))},[(0,s._)("input",{type:"checkbox",checked:n.value},null,8,a),(0,s._)("label",null,[r,(0,s._)("span",c,[(0,s.WI)(e.$slots,"default",{},void 0,!0)])])],2)}var g={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)}}},d=n(3744);const p=(0,d.Z)(g,[["render",u],["__scopeId","data-v-a6396ae8"]]);var h=p},747:function(e,t,n){n.r(t),n.d(t,{default:function(){return Nt}});var s=n(6252);const o={class:"plugin lights-plugin"},i={key:0,class:"panel"},l={key:1,class:"panel"};function a(e,t,n,a,r,c){const u=(0,s.up)("Groups"),g=(0,s.up)("Group");return(0,s.wg)(),(0,s.iD)("div",o,[null==r.selectedGroup&&n.groups&&Object.keys(n.groups).length?((0,s.wg)(),(0,s.iD)("div",i,[(0,s.Wm)(u,{groups:n.groups,"loading-groups":n.loadingGroups,"color-converter":n.colorConverter,onSelect:t[0]||(t[0]=e=>r.selectedGroup=e),onToggle:t[1]||(t[1]=t=>e.$emit("group-toggle",t))},null,8,["groups","loading-groups","color-converter"])])):((0,s.wg)(),(0,s.iD)("div",l,[(0,s.Wm)(g,{group:n.groups[r.selectedGroup],lights:c.displayedLights,scenes:c.scenesByGroup[r.selectedGroup],"color-converter":n.colorConverter,animations:c.animationsByGroup[r.selectedGroup],onClose:t[2]||(t[2]=e=>r.selectedGroup=null),onLightToggle:t[3]||(t[3]=t=>e.$emit("light-toggle",t)),onGroupToggle:t[4]||(t[4]=t=>e.$emit("group-toggle",t)),onSetLight:t[5]||(t[5]=t=>e.$emit("set-light",t)),onSetGroup:t[6]||(t[6]=t=>e.$emit("set-group",{groupId:r.selectedGroup,value:t})),onSelectScene:t[7]||(t[7]=t=>e.$emit("select-scene",{groupId:r.selectedGroup,sceneId:t})),onStartAnimation:t[8]||(t[8]=t=>e.$emit("start-animation",t)),onStopAnimation:t[9]||(t[9]=t=>e.$emit("stop-animation",t))},null,8,["group","lights","scenes","color-converter","animations"])]))])}var r=n(6813),c={name:"Panel",emits:["mounted"],props:{config:{type:Object,default:()=>{}},pluginName:{type:String,required:!0}},data(){return{loading:!1}},mounted(){this.$emit("mounted",this)}};const u=c;var g=u,d=n(3577);const p=e=>((0,s.dD)("data-v-42318a2b"),e=e(),(0,s.Cn)(),e),h={class:"panel-row header"},m=p((()=>(0,s._)("div",{class:"col-3"},[(0,s._)("i",{class:"icon fas fa-home"})],-1))),v=p((()=>(0,s._)("div",{class:"col-6 name"}," Rooms ",-1))),b={class:"col-3 pull-right"},_=["onClick"],w={class:"name col-9"},y={class:"controls col-3 pull-right"};function f(e,t,n,o,i,l){const a=(0,s.up)("ToggleSwitch"),r=(0,s.up)("MenuPanel");return(0,s.wg)(),(0,s.j4)(r,null,{default:(0,s.w5)((()=>[(0,s._)("div",h,[m,v,(0,s._)("div",b,[(0,s.Wm)(a,{value:l.anyLightsOn,onInput:t[0]||(t[0]=t=>e.$emit("toggle"))},null,8,["value"])])]),((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(l.groupsSorted,(t=>((0,s.wg)(),(0,s.iD)("div",{class:"panel-row row group",key:t.id,onClick:n=>e.$emit("select",t.id)},[(0,s._)("span",w,(0,d.zw)(t.name||`[Group ${t.id}]`),1),(0,s._)("span",y,[(0,s.Wm)(a,{value:t.state.any_on,disabled:t.id in(n.loadingGroups||{}),onInput:n=>e.$emit("toggle",t)},null,8,["value","disabled","onInput"])])],8,_)))),128))])),_:1})}const C={class:"menu-panel"},k={class:"content"};function S(e,t,n,o,i,l){return(0,s.wg)(),(0,s.iD)("div",C,[(0,s._)("div",k,[(0,s.WI)(e.$slots,"default")])])}var j={name:"MenuPanel"},O=n(3744);const L=(0,O.Z)(j,[["render",S]]);var $=L,M=n(6),D=n(4212),G={name:"Groups",components:{ToggleSwitch:M.Z,MenuPanel:$},emits:["select","toggle"],props:{groups:{type:Object,default:()=>{}},loadingGroups:{type:Object,default:()=>{}},colorConverter:{type:Object,default:()=>new D.N}},computed:{groupsSorted(){return Object.entries(this.groups).sort(((e,t)=>e[1].name.localeCompare(t[1].name))).map((([e,t])=>({...t,id:e})))},anyLightsOn(){for(const e of Object.values(this.groups))if(e?.state?.any_on)return!0;return!1}}};const x=(0,O.Z)(G,[["render",f],["__scopeId","data-v-42318a2b"]]);var I=x;const T={class:"light-group-container"},A={class:"panel-row header"},B={key:0,class:"col-3"},N=(0,s._)("i",{class:"fas fa-chevron-left"},null,-1),U=[N],W=["textContent"],R={key:1,class:"col-3 pull-right"},Z={key:0,class:"no-lights"},q={key:1,class:"lights-view"},z={class:"row view-selector"},H=(0,s._)("i",{class:"icon fas fa-lightbulb"},null,-1),V=[H],Y=(0,s._)("i",{class:"icon far fa-image"},null,-1),F=[Y],X=(0,s._)("i",{class:"icon fas fa-video"},null,-1),P=[X],E={key:0,class:"view fade-in"},K=["onClick"],J={key:1,class:"view fade-in"},Q=["onClick"],ee={key:2,class:"view group-controls fade-in"},te={key:3,class:"view group-controls fade-in"};function ne(e,t,n,o,i,l){const a=(0,s.up)("ToggleSwitch"),r=(0,s.up)("Light"),c=(0,s.up)("Scene"),u=(0,s.up)("Controls"),g=(0,s.up)("Animate"),p=(0,s.up)("MenuPanel");return(0,s.wg)(),(0,s.iD)("div",T,[(0,s.Wm)(p,null,{default:(0,s.w5)((()=>[(0,s._)("div",A,[n.group?((0,s.wg)(),(0,s.iD)("div",B,[(0,s._)("button",{class:"back-btn",title:"Back",onClick:t[0]||(t[0]=(...e)=>l.close&&l.close(...e))},U)])):(0,s.kq)("",!0),(0,s._)("div",{class:(0,d.C_)(["col-6 name",{selected:"group"===i.selectedView}]),textContent:(0,d.zw)(l.groupName),onClick:t[1]||(t[1]=e=>i.selectedView="group"===i.selectedView?null:"group")},null,10,W),n.group?((0,s.wg)(),(0,s.iD)("div",R,[(0,s.Wm)(a,{value:n.group.state.any_on,onInput:t[2]||(t[2]=t=>e.$emit("group-toggle",n.group))},null,8,["value"])])):(0,s.kq)("",!0)]),n.lights&&Object.keys(n.lights).length?((0,s.wg)(),(0,s.iD)("div",q,[(0,s._)("div",z,[(0,s._)("button",{class:(0,d.C_)({selected:"lights"===i.selectedView}),title:"Lights",onClick:t[3]||(t[3]=e=>i.selectedView="lights")},V,2),(0,s._)("button",{class:(0,d.C_)({selected:"scenes"===i.selectedView}),title:"Scenes",onClick:t[4]||(t[4]=e=>i.selectedView="scenes")},F,2),(0,s._)("button",{class:(0,d.C_)({selected:"animate"===i.selectedView}),title:"Animate",onClick:t[5]||(t[5]=e=>i.selectedView="animate")},P,2)]),"lights"===i.selectedView?((0,s.wg)(),(0,s.iD)("div",E,[((0,s.wg)(),(0,s.j4)(s.Ob,null,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(l.lightsSorted,((t,o)=>((0,s.wg)(),(0,s.iD)("div",{class:(0,d.C_)(["panel-row row",{expanded:t.id===i.selectedLight}]),key:o,onClick:e=>i.selectedLight=i.selectedLight===t.id?null:t.id},[(0,s.Wm)(r,{light:t,group:n.group,collapsed:t.id!==i.selectedLight,"color-converter":n.colorConverter,onToggle:n=>e.$emit("light-toggle",t),onSetLight:n=>e.$emit("set-light",{light:t,value:n})},null,8,["light","group","collapsed","color-converter","onToggle","onSetLight"])],10,K)))),128))],1024))])):"scenes"===i.selectedView?((0,s.wg)(),(0,s.iD)("div",J,[((0,s.wg)(),(0,s.j4)(s.Ob,null,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(l.scenesSorted,((e,t)=>((0,s.wg)(),(0,s.iD)("div",{class:(0,d.C_)(["panel-row row",{selected:e.id===i.selectedScene}]),key:t,onClick:t=>l.onSceneSelected(e.id)},[(0,s.Wm)(c,{scene:e,group:n.group},null,8,["scene","group"])],10,Q)))),128))],1024))])):"group"===i.selectedView?((0,s.wg)(),(0,s.iD)("div",ee,[((0,s.wg)(),(0,s.j4)(s.Ob,null,[(0,s.Wm)(u,{group:n.group,lights:n.lights,"color-converter":n.colorConverter,onSetGroup:t[6]||(t[6]=t=>e.$emit("set-group",t))},null,8,["group","lights","color-converter"])],1024))])):"animate"===i.selectedView?((0,s.wg)(),(0,s.iD)("div",te,[((0,s.wg)(),(0,s.j4)(s.Ob,null,[(0,s.Wm)(g,{group:n.group,lights:n.lights,"color-converter":n.colorConverter,"running-animations":n.animations,onStart:t[7]||(t[7]=t=>e.$emit("start-animation",t)),onStop:t[8]||(t[8]=t=>e.$emit("stop-animation",t))},null,8,["group","lights","color-converter","running-animations"])],1024))])):(0,s.kq)("",!0)])):((0,s.wg)(),(0,s.iD)("div",Z," No lights found "))])),_:1})])}const se={class:"row"},oe={class:"toggle col-3 pull-right"},ie={key:0,class:"row fade-in"};function le(e,t,n,o,i,l){const a=(0,s.up)("ToggleSwitch"),r=(0,s.up)("Controls");return(0,s.wg)(),(0,s.iD)("div",{class:(0,d.C_)(["light",{expanded:!n.collapsed}]),ref:"element"},[(0,s._)("div",se,[(0,s._)("span",{class:"name col-9",onClick:t[0]||(t[0]=(...e)=>l.expandToggle&&l.expandToggle(...e))},(0,d.zw)(n.light.name||`[Light ${n.light.id}]`),1),(0,s._)("span",oe,[(0,s.Wm)(a,{value:n.light.state.on,disabled:n.loading,onInput:t[1]||(t[1]=t=>e.$emit("toggle",n.light))},null,8,["value","disabled"])])]),n.collapsed?(0,s.kq)("",!0):((0,s.wg)(),(0,s.iD)("div",ie,[(0,s.Wm)(r,{light:n.light,loading:n.loading,"color-converter":n.colorConverter,onSetLight:t[2]||(t[2]=t=>e.$emit("set-light",t))},null,8,["light","loading","color-converter"])]))],2)}var ae=n(9963);const re=e=>((0,s.dD)("data-v-e2726892"),e=e(),(0,s.Cn)(),e),ce={key:1,class:"row"},ue=re((()=>(0,s._)("div",{class:"col-1 icon"},[(0,s._)("i",{class:"fas fa-sun"})],-1))),ge={class:"col-11 control"},de={key:2,class:"row"},pe=re((()=>(0,s._)("div",{class:"col-1 icon"},[(0,s._)("i",{class:"fas fa-thermometer-half"})],-1))),he={class:"col-11 control"},me={key:3,class:"row"},ve=re((()=>(0,s._)("span",{class:"col-1 icon"},[(0,s._)("i",{class:"fas fa-palette"})],-1))),be={class:"col-11 control"},_e=["value"];function we(e,t,n,o,i,l){const a=(0,s.up)("Loading"),r=(0,s.up)("Slider");return(0,s.wg)(),(0,s.iD)("div",{class:"controls light-controls",onClick:t[3]||(t[3]=e=>e.stopPropagation())},[n.loading?((0,s.wg)(),(0,s.j4)(a,{key:0})):(0,s.kq)("",!0),null!=l.state.bri?((0,s.wg)(),(0,s.iD)("div",ce,[ue,(0,s._)("div",ge,[(0,s.Wm)(r,{range:n.colorConverter.ranges.bri,disabled:n.loading,value:l.state.bri,onMouseup:t[0]||(t[0]=(0,ae.iM)((t=>e.$emit(n.light?"set-light":"set-group",{brightness:parseInt(t.target.value)})),["stop"]))},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),null!=l.state.ct?((0,s.wg)(),(0,s.iD)("div",de,[pe,(0,s._)("div",he,[(0,s.Wm)(r,{range:n.colorConverter.ranges.ct,disabled:n.loading,value:l.state.ct,onMouseup:t[1]||(t[1]=(0,ae.iM)((t=>e.$emit(n.light?"set-light":"set-group",{temperature:parseInt(t.target.value)})),["stop"]))},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),l.rgbColor?((0,s.wg)(),(0,s.iD)("label",me,[ve,(0,s._)("span",be,[(0,s._)("input",{type:"color",value:l.rgbColor,onChange:t[2]||(t[2]=(0,ae.iM)(((...e)=>l.onColorSelect&&l.onColorSelect(...e)),["stop"]))},null,40,_e)])])):(0,s.kq)("",!0)])}var ye=n(6237),fe=n(1232),Ce={name:"Controls",components:{Loading:fe.Z,Slider:ye.Z},emits:["set-light","set-group"],props:{light:{type:Object},lights:{type:Object},group:{type:Object},loading:{type:Boolean,default:!1},colorConverter:{type:Object,default:()=>new D.N}},computed:{state(){if(this.light?.state)return this.light.state;const e=this.group?.state||{};if(!this.lights)return e;const t=e=>e&&e.length?e[0]instanceof Array?[...e[0].keys()].map((n=>t(e.map((e=>e[n]))))):e.reduce(((e,t)=>e+t),0)/e.length:0;return{...e,...Object.entries(Object.values(this.lights).reduce(((e,t)=>(["bri","hue","sat","rgb","xy","red","green","blue","ct"].forEach((n=>{null!=t.state?.[n]&&(e[n]=[...e[n]||[],t.state[n]])})),e)),{})).reduce(((e,[n,s])=>(e[n]=t(s),e)),{})}},color(){return this.getColor(this.state)},rgbColor(){const e=this.colorConverter.toRGB(this.state);return e?"#"+e.map((e=>{let t=e.toString(16);return t.length<2&&(t="0"+t),t})).join(""):null}},methods:{onColorSelect(e){const t=e.target.value.slice(1).split(/(?=(?:..)*$)/).map((e=>parseInt(`0x${e}`)));this.$emit(this.light?"set-light":"set-group",{rgb:t,xy:this.colorConverter.rgbToXY(...t),hsl:this.colorConverter.rgbToHsl(...t),brightness:this.colorConverter.rgbToBri(...t)})},getColor(e){return{rgb:this.colorConverter.toRGB(e),xy:this.colorConverter.toXY(e),hsl:this.colorConverter.toHSL(e)}}}};const ke=(0,O.Z)(Ce,[["render",we],["__scopeId","data-v-e2726892"]]);var Se=ke,je={name:"Light",components:{Controls:Se,ToggleSwitch:M.Z},emits:["toggle","set-light","collapsed","expanded"],props:{light:{type:Object,default:()=>{}},group:{type:Object,default:()=>{}},loading:{type:Boolean,default:!1},collapsed:{type:Boolean,default:!0},colorConverter:{type:Object,default:()=>new D.N}},methods:{expandToggle(){this.$emit(this.collapsed?"expanded":"collapsed")}}};const Oe=(0,O.Z)(je,[["render",le],["__scopeId","data-v-52168252"]]);var Le=Oe;function $e(e,t,n,o,i,l){const a=(0,s.up)("Loading");return(0,s.wg)(),(0,s.iD)(s.HY,null,[n.loading?((0,s.wg)(),(0,s.j4)(a,{key:0})):(0,s.kq)("",!0),(0,s._)("div",{class:"scene row name",onClick:t[0]||(t[0]=(...e)=>l.onSelect&&l.onSelect(...e))},(0,d.zw)(n.scene.name||`[Scene ${n.scene.id}]`),1)],64)}var Me={name:"Light",emits:["select"],props:{scene:{type:Object,default:()=>{}},group:{type:Object,default:()=>{}},loading:{type:Boolean,default:!1}},methods:{onSelect(){if(this.loading)return!1;this.$emit("select")}}};const De=(0,O.Z)(Me,[["render",$e]]);var Ge=De;const xe=e=>((0,s.dD)("data-v-1739aaba"),e=e(),(0,s.Cn)(),e),Ie={class:"animation-container"},Te={class:"animation-header"},Ae={class:"row"},Be=xe((()=>(0,s._)("div",{class:"col-3"}," Run Animation ",-1))),Ne={class:"col-9"},Ue={class:"row"},We=xe((()=>(0,s._)("div",{class:"col-3"},"Animation",-1))),Re={class:"col-9"},Ze=xe((()=>(0,s._)("option",{value:"color_transition"},"Color transition",-1))),qe=xe((()=>(0,s._)("option",{value:"blink"},"Blink",-1))),ze=[Ze,qe],He={class:"animation"},Ve={key:0,class:"row"},Ye=xe((()=>(0,s._)("div",{class:"col-3"}," Hue range ",-1))),Fe={class:"col-9"},Xe={key:1,class:"row"},Pe=xe((()=>(0,s._)("div",{class:"col-3"}," Sat range ",-1))),Ee={class:"col-9"},Ke={key:2,class:"row"},Je=xe((()=>(0,s._)("div",{class:"col-3"}," Bri range ",-1))),Qe={class:"col-9"},et={key:3,class:"row"},tt=xe((()=>(0,s._)("div",{class:"col-3"}," Hue step ",-1))),nt={class:"col-9"},st={key:4,class:"row"},ot=xe((()=>(0,s._)("div",{class:"col-3"}," Sat step ",-1))),it={class:"col-9"},lt={key:5,class:"row"},at=xe((()=>(0,s._)("div",{class:"col-3"}," Bri step ",-1))),rt={class:"col-9"},ct={class:"row"},ut=xe((()=>(0,s._)("div",{class:"col-3"}," Refresh seconds ",-1))),gt={class:"col-9"},dt=["value"],pt={class:"row"},ht=xe((()=>(0,s._)("div",{class:"col-3"}," Duration (seconds) ",-1))),mt={class:"col-9"},vt=["value"],bt={class:"lights"},_t={class:"row"},wt=["checked"],yt=(0,s.Uk)(" Select all lights "),ft=["onUpdate:modelValue","onInput"];function Ct(e,t,n,o,i,l){const a=(0,s.up)("Loading"),r=(0,s.up)("ToggleSwitch"),c=(0,s.up)("RangeSlider"),u=(0,s.up)("Slider");return(0,s.wg)(),(0,s.iD)("div",{class:"controls animation-controls",onClick:t[10]||(t[10]=e=>e.stopPropagation())},[n.loading?((0,s.wg)(),(0,s.j4)(a,{key:0})):(0,s.kq)("",!0),(0,s._)("div",Ie,[(0,s._)("div",Te,[(0,s._)("div",Ae,[Be,(0,s._)("div",Ne,[(0,s.Wm)(r,{value:l.animationRunning,onInput:l.toggleAnimation},null,8,["value","onInput"])])]),(0,s._)("div",Ue,[We,(0,s._)("div",Re,[(0,s._)("label",null,[(0,s._)("select",{class:"selector",onClick:t[0]||(t[0]=e=>i.selectedAnimation=e.target.value)},ze)])])])]),(0,s._)("div",He,["color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",Ve,[Ye,(0,s._)("div",Fe,[(0,s.Wm)(c,{range:n.colorConverter.ranges.hue,disabled:n.loading,value:i.animations.color_transition.hue_range,onMouseup:t[1]||(t[1]=e=>i.animations.color_transition.hue_range=e.target.value)},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),"color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",Xe,[Pe,(0,s._)("div",Ee,[(0,s.Wm)(c,{range:n.colorConverter.ranges.sat,disabled:n.loading,value:i.animations.color_transition.sat_range,onMouseup:t[2]||(t[2]=e=>i.animations.color_transition.sat_range=e.target.value)},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),"color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",Ke,[Je,(0,s._)("div",Qe,[(0,s.Wm)(c,{range:n.colorConverter.ranges.sat,disabled:n.loading,value:i.animations.color_transition.bri_range,onMouseup:t[3]||(t[3]=e=>i.animations.color_transition.bri_range=e.target.value)},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),"color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",et,[tt,(0,s._)("div",nt,[(0,s.Wm)(u,{range:n.colorConverter.ranges.hue,disabled:n.loading,value:i.animations.color_transition.hue_step,onMouseup:t[4]||(t[4]=e=>i.animations.color_transition.hue_step=parseFloat(e.target.value))},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),"color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",st,[ot,(0,s._)("div",it,[(0,s.Wm)(u,{range:n.colorConverter.ranges.sat,disabled:n.loading,value:i.animations.color_transition.sat_step,onMouseup:t[5]||(t[5]=e=>i.animations.color_transition.sat_step=parseFloat(e.target.value))},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),"color_transition"===i.selectedAnimation?((0,s.wg)(),(0,s.iD)("div",lt,[at,(0,s._)("div",rt,[(0,s.Wm)(u,{range:n.colorConverter.ranges.bri,disabled:n.loading,value:i.animations.color_transition.bri_step,onMouseup:t[6]||(t[6]=e=>i.animations.color_transition.bri_step=parseFloat(e.target.value))},null,8,["range","disabled","value"])])])):(0,s.kq)("",!0),(0,s._)("div",ct,[ut,(0,s._)("div",gt,[(0,s._)("label",null,[(0,s._)("input",{type:"number",value:i.animations[i.selectedAnimation].transition_seconds,step:"0.1",onInput:t[7]||(t[7]=e=>i.animations[i.selectedAnimation].transition_seconds=parseFloat(e.target.value))},null,40,dt)])])]),(0,s._)("div",pt,[ht,(0,s._)("div",mt,[(0,s._)("label",null,[(0,s._)("input",{type:"number",value:i.animations[i.selectedAnimation].duration,step:"5",onInput:t[8]||(t[8]=e=>i.animations[i.selectedAnimation].duration=e.target.value?.length?parseFloat(e.target.value):null)},null,40,vt)])])])])]),(0,s._)("div",bt,[(0,s._)("div",_t,[(0,s._)("label",null,[(0,s._)("input",{type:"checkbox",checked:Object.keys(n.lights).length===Object.values(i.selectedLights).filter((e=>e)).length,onClick:t[9]||(t[9]=(...e)=>l.toggleSelectAll&&l.toggleSelectAll(...e))},null,8,wt),yt])]),((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(n.lights,((e,t)=>((0,s.wg)(),(0,s.iD)("div",{class:"row",key:t},[(0,s._)("label",null,[(0,s.wy)((0,s._)("input",{type:"checkbox","onUpdate:modelValue":e=>i.selectedLights[t]=e,onInput:e=>i.selectedLights[t]=!i.selectedLights[t]},null,40,ft),[[ae.e8,i.selectedLights[t]]]),(0,s.Uk)(" "+(0,d.zw)(e.name),1)])])))),128))])])}const kt={class:"range-wrapper"},St=["value","min","max","step","disabled"];function jt(e,t,n,o,i,l){return(0,s.wg)(),(0,s.iD)("div",kt,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(n.value,((e,o)=>((0,s.wg)(),(0,s.iD)("input",{class:"slider",type:"range",value:e,min:n.range[0],max:n.range[1],step:n.step,disabled:n.disabled,ref_for:!0,ref:"ranges",onInput:t[0]||(t[0]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onChange:t[1]||(t[1]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onMouseup:t[2]||(t[2]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onMousedown:t[3]||(t[3]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onTouchstart:t[4]||(t[4]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onTouchend:t[5]||(t[5]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onKeyup:t[6]||(t[6]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),onKeydown:t[7]||(t[7]=(0,ae.iM)(((...e)=>l.onUpdate&&l.onUpdate(...e)),["stop"])),key:o},null,40,St)))),128))])}var Ot={name:"RangeSlider",emits:["input","change","mouseup","mousedown","touchstart","touchend","keyup","keydown"],props:{disabled:{type:Boolean,default:!1},range:{type:Array,default:()=>[0,100]},step:{type:Number,default:1},value:{type:Array,default:()=>[0,100]}},methods:{onUpdate(e){this.$emit(e.type,{...e,target:{...e.target,value:this.$refs.ranges.map((e=>parseFloat(e.value))).sort()}})}}};const Lt=(0,O.Z)(Ot,[["render",jt],["__scopeId","data-v-981c5de0"]]);var $t=Lt,Mt={name:"Animate",mixins:[r.Z],components:{ToggleSwitch:M.Z,Slider:ye.Z,RangeSlider:$t,Loading:fe.Z},emits:["start","stop"],props:{lights:{type:Object},group:{type:Object},loading:{type:Boolean,default:!1},colorConverter:{type:Object,default:()=>new D.N},runningAnimations:{type:Object,default:()=>{}}},data(){return{selectedAnimation:"color_transition",animation:{},selectedLights:Object.keys(this.lights).reduce(((e,t)=>(e[t]=!0,e)),{}),animations:{color_transition:{hue_range:this.colorConverter.ranges.hue,sat_range:[parseInt((this.colorConverter.ranges.sat[1]-this.colorConverter.ranges.sat[0])/2),this.colorConverter.ranges.sat[1]],bri_range:[parseInt(.75*(this.colorConverter.ranges.bri[1]-this.colorConverter.ranges.bri[0])),this.colorConverter.ranges.bri[1]],hue_step:parseInt((this.colorConverter.ranges.hue[1]-this.colorConverter.ranges.hue[0])/25),sat_step:parseInt((this.colorConverter.ranges.sat[1]-this.colorConverter.ranges.sat[0])/50),bri_step:parseInt((this.colorConverter.ranges.bri[1]-this.colorConverter.ranges.bri[0])/50),transition_seconds:1,duration:null},blink:{transition_seconds:1,duration:null}}}},computed:{animationRunning(){return Object.keys(this.runningAnimations).length>0}},methods:{toggleSelectAll(){const e=Object.values(this.selectedLights).filter((e=>e)).length<Object.keys(this.lights).length;Object.keys(this.lights).forEach((t=>{this.selectedLights[t]=e}))},toggleAnimation(){const e=this.animationRunning?"stop":"start",t=Object.entries(this.selectedLights).filter((e=>e[1])).map((e=>e[0]));t.length?this.$emit(e,{lights:t,animation:{...this.animations[this.selectedAnimation],animation:this.selectedAnimation}}):this.warn("No lights have been selected")}}};const Dt=(0,O.Z)(Mt,[["render",Ct],["__scopeId","data-v-1739aaba"]]);var Gt=Dt,xt={name:"Group",emits:["close","group-toggle","light-toggle","set-light","select-scene","start-animation","stop-animation"],components:{Animate:Gt,ToggleSwitch:M.Z,MenuPanel:$,Light:Le,Scene:Ge,Controls:Se},props:{lights:{type:Object},group:{type:Object},scenes:{type:Object},animations:{type:Object,default:()=>{}},colorConverter:{type:Object,default:()=>new D.N}},data(){return{selectedLight:null,selectedScene:null,selectedView:"lights"}},computed:{lightsSorted(){return this.lights?Object.entries(this.lights).sort(((e,t)=>e[1].name.localeCompare(t[1].name))).map((([e,t])=>({...t,id:e}))):[]},scenesSorted(){return this.scenes?Object.entries(this.scenes).sort(((e,t)=>e[1].name.localeCompare(t[1].name))).map((([e,t])=>({...t,id:e}))):[]},groupName(){return this.group?.name?this.group.name:null!=this.group?.id?`[Group ${this.group.id}]`:"Lights"}},methods:{close(e){e.stopPropagation(),this.$emit("close")},onSceneSelected(e){this.selectedScene=e,this.$emit("select-scene",e)}}};const It=(0,O.Z)(xt,[["render",ne]]);var Tt=It,At={name:"Light",components:{Group:Tt,Groups:I},mixins:[r.Z,g],emits:["group-toggle","light-toggle","set-light","set-group","select-scene","start-animation","stop-animation","refresh","light-changed"],props:{lights:{type:Object},groups:{type:Object},scenes:{type:Object},animations:{type:Object},colorConverter:{type:Object,default:()=>new D.N},loadingLights:{type:Object,default:()=>{}},loadingGroups:{type:Object,default:()=>{}},pluginName:{type:String},initialGroup:{type:[Number,String]}},data(){return{selectedGroup:null,initialized:!1}},computed:{displayedLights(){const e=this.selectedGroup||this.initialGroup;return null==e?this.lights:this.groups[e].lights.reduce(((e,t)=>(e[t]=this.lights[t],e)),{})},groupsByLight(){return this.groups?Object.entries(this.groups).reduce(((e,[t,n])=>(n.lights.forEach((s=>{e[s]||(e[s]={}),e[s][t]=n})),e)),{}):{}},scenesByGroup(){if(!this.scenes)return{};const e=this;return Object.entries(this.scenes).reduce(((t,[n,s])=>(s.lights.forEach((o=>{Object.keys(e.groupsByLight[o]).forEach((e=>{t[e]||(t[e]={}),t[e][n]=s}))})),t)),{})},animationsByGroup(){const e=this,t=Object.entries(this.animations?.groups||{}).reduce(((e,[t,n])=>(e[t]={},n&&(e[t][null]=n),e)),{});return{...t,...Object.entries(this.animations?.lights||{}).reduce(((t,[n,s])=>{const o=Object.values(e.groupsByLight[n])?.[0];return o&&s&&null!=o.id&&(t[o.id]||(t[o.id]={}),t[o.id][n]=s),t}),{})}}},methods:{initSelectedGroup(){const e=this,t=this.$watch((()=>e.initialGroup),(n=>{e.initialized||(e.initialized=!0,t(),null==e.selectedGroup&&null!=n&&(e.selectedGroup=e.initialGroup))}))},refresh(){this.$emit("refresh")},onLightChange(e){if(e.plugin_name!==this.pluginName)return;if(!this.lights[e.light_id])return void this.refresh();const t={...e},n=t.light_id;delete t.light_id,delete t.type,delete t.plugin_name,this.$emit("light-changed",{id:n,state:t})},onAnimationChange(e){e.plugin_name===this.pluginName&&this.refresh()}},mounted(){this.subscribe(this.onLightChange,"on-light-change","platypush.message.event.light.LightStatusChangeEvent"),this.subscribe(this.onAnimationChange,"on-animation-change","platypush.message.event.light.LightAnimationStartedEvent","platypush.message.event.light.LightAnimationStoppedEvent"),this.initSelectedGroup()},unmounted(){this.unsubscribe("on-light-change"),this.unsubscribe("on-animation-change")}};const Bt=(0,O.Z)(At,[["render",a],["__scopeId","data-v-781dd72c"]]);var Nt=Bt}}]);
//# sourceMappingURL=747.2d2a23ac.js.map