platypush/platypush/backend/http/webapp/dist/static/js/9892.137ee64b.js

2 lines
22 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(self["webpackChunkplatypush"]=self["webpackChunkplatypush"]||[]).push([[9892],{9892:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return c}});var n=i(6252);const s={class:"row item entity-container"};function l(t,e,i,l,o,a){return(0,n.wg)(),(0,n.iD)("div",s,[((0,n.wg)(),(0,n.j4)((0,n.LL)(o.component),{value:t.value,loading:t.loading,error:t.error||0==t.value?.reachable,onInput:e[0]||(e[0]=e=>t.$emit("input",e)),onLoading:e[1]||(e[1]=e=>t.$emit("loading",e))},null,8,["value","loading","error"]))])}var o=i(7909),a={name:"Entity",mixins:[o["default"]],emits:["input","loading"],data(){return{component:null}},mounted(){"Entity"!==this.type&&(this.component=(0,n.RC)((()=>i(7243)(`./${this.type}`))))}},r=i(3744);const u=(0,r.Z)(a,[["render",l],["__scopeId","data-v-3c242632"]]);var c=u},7909:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return o}});var n=i(6813),s={name:"EntityMixin",mixins:[n.Z],emits:["input"],props:{loading:{type:Boolean,default:!1},error:{type:Boolean,default:!1},value:{type:Object,required:!0}},data(){return{modalVisible:!1}},computed:{type(){let t=this.value.type||"";return t.charAt(0).toUpperCase()+t.slice(1)}}};const l=s;var o=l},914:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return V}});var n=i(6252),s=i(3577);const l=t=>((0,n.dD)("data-v-fef021ee"),t=t(),(0,n.Cn)(),t),o={class:"row plugin entities-container"},a={class:"col-11 left"},r={class:"col-1 right"},u=l((()=>(0,n._)("i",{class:"fa fa-sync-alt"},null,-1))),c=[u],d={class:"groups-canvas"},p=(0,n.Uk)("No entities found"),h={key:2,class:"groups-container"},m={class:"frame"},y={class:"header"},g={class:"section left"},v={class:"section center"},f=["textContent"],_=["textContent"],w={class:"section right"},b=["onClick"],k=l((()=>(0,n._)("i",{class:"fa fa-sync-alt"},null,-1))),E=[k],C={class:"body"},I=["onClick"];function x(t,e,i,l,u,k){const x=(0,n.up)("Loading"),D=(0,n.up)("Selector"),G=(0,n.up)("EntityModal"),T=(0,n.up)("NoItems"),j=(0,n.up)("Icon"),O=(0,n.up)("Entity");return(0,n.wg)(),(0,n.iD)("div",o,[u.loading?((0,n.wg)(),(0,n.j4)(x,{key:0})):(0,n.kq)("",!0),(0,n._)("header",null,[(0,n._)("div",a,[(0,n.Wm)(D,{"entity-groups":k.entityGroups,value:u.selector,onInput:e[0]||(e[0]=t=>u.selector=t)},null,8,["entity-groups","value"])]),(0,n._)("div",r,[(0,n._)("button",{title:"Refresh",onClick:e[1]||(e[1]=t=>k.refresh(null))},c)])]),(0,n._)("div",d,[u.modalEntityId?((0,n.wg)(),(0,n.j4)(G,{key:0,entity:u.entities[u.modalEntityId],visible:u.modalVisible,onClose:e[2]||(e[2]=t=>k.onEntityModal(null))},null,8,["entity","visible"])):(0,n.kq)("",!0),Object.keys(k.displayGroups||{})?.length?((0,n.wg)(),(0,n.iD)("div",h,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(k.displayGroups,(t=>((0,n.wg)(),(0,n.iD)("div",{class:"group fade-in",key:t.name},[(0,n._)("div",m,[(0,n._)("div",y,[(0,n._)("span",g,["type"===u.selector.grouping&&k.entitiesMeta[t.name]?((0,n.wg)(),(0,n.j4)(j,(0,s.vs)((0,n.dG)({key:0},k.entitiesMeta[t.name].icon||{})),null,16)):"plugin"===u.selector.grouping&&k.pluginIcons[t.name]?((0,n.wg)(),(0,n.j4)(j,{key:1,class:(0,s.C_)(k.pluginIcons[t.name]?.class),url:k.pluginIcons[t.name]?.imgUrl},null,8,["class","url"])):(0,n.kq)("",!0)]),(0,n._)("span",v,["type"===u.selector.grouping&&k.entitiesMeta[t.name]?((0,n.wg)(),(0,n.iD)("div",{key:0,class:"title",textContent:(0,s.zw)(k.entitiesMeta[t.name].name_plural)},null,8,f)):"plugin"===u.selector.grouping?((0,n.wg)(),(0,n.iD)("div",{key:1,class:"title",textContent:(0,s.zw)(t.name)},null,8,_)):(0,n.kq)("",!0)]),(0,n._)("span",w,[(0,n._)("button",{title:"Refresh",onClick:e=>k.refresh(t)},E,8,b)])]),(0,n._)("div",C,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.entities,(t=>((0,n.wg)(),(0,n.iD)("div",{class:"entity-frame",onClick:e=>k.onEntityModal(t.id),key:t.id},[(0,n.Wm)(O,{value:t,onInput:k.onEntityInput,error:!!u.errorEntities[t.id],loading:!!u.loadingEntities[t.id],onLoading:e=>u.loadingEntities[t.id]=e},null,8,["value","onInput","error","loading","onLoading"])],8,I)))),128))])])])))),128))])):((0,n.wg)(),(0,n.j4)(T,{key:1},{default:(0,n.w5)((()=>[p])),_:1}))])])}var D=i(6813),G=i(1232),T=i(1478);const j={class:"no-items-container"},O={class:"no-items fade-in"};function S(t,e,i,s,l,o){return(0,n.wg)(),(0,n.iD)("div",j,[(0,n._)("div",O,[(0,n.WI)(t.$slots,"default",{},void 0,!0)])])}var q={name:"NoItems"},M=i(3744);const U=(0,M.Z)(q,[["render",S],["__scopeId","data-v-6fec32b5"]]);var $=U,N=i(9892),Z=i(6647),L=i(4117),z=i(1359),F=i(7369),W={name:"Entities",components:{Loading:G.Z,Icon:T.Z,Entity:N["default"],Selector:Z["default"],NoItems:$,EntityModal:L["default"]},mixins:[D.Z],props:{entityScanTimeout:{type:Number,default:30}},data(){return{loading:!1,loadingEntities:{},errorEntities:{},entityTimeouts:{},entities:{},modalEntityId:null,modalVisible:!1,selector:{grouping:"type",selectedEntities:{}}}},computed:{entitiesMeta(){return F},pluginIcons(){return z},entityGroups(){return{id:Object.entries(this.groupEntities("id")).reduce(((t,[e,i])=>(t[e]=i[0],t)),{}),type:this.groupEntities("type"),plugin:this.groupEntities("plugin")}},displayGroups(){return Object.entries(this.entityGroups[this.selector.grouping]).filter((t=>t[1].filter((t=>!!this.selector.selectedEntities[t.id])).length>0)).sort(((t,e)=>t[0].localeCompare(e[0]))).map((([t,e])=>({name:t,entities:e.filter((t=>t.id in this.selector.selectedEntities))})))}},methods:{groupEntities(t){return Object.values(this.entities).reduce(((e,i)=>{const n=e[i[t]]||{};return n[i.id]=i,e[i[t]]=Object.values(n).sort(((t,e)=>t.name.localeCompare(e.name))),e}),{})},async refresh(t){const e=(t?t.entities:this.entities)||{},i={};t&&(i.plugins=Object.keys(e.reduce(((t,e)=>(t[e.plugin]=!0,t)),{}))),this.loadingEntities=Object.values(e).reduce(((t,e)=>{const i=this,n=e.id;return this.entityTimeouts[n]&&clearTimeout(this.entityTimeouts[n]),this.entityTimeouts[n]=setTimeout((()=>{i.loadingEntities[n]&&delete i.loadingEntities[n],i.entityTimeouts[n]&&delete i.entityTimeouts[n],i.errorEntities[n]=e,i.notify({error:!0,title:e.plugin,text:`Scan timeout for ${e.name}`})}),1e3*this.entityScanTimeout),t[n]=!0,t}),{}),await this.request("entities.scan",i)},async sync(){this.loading=!0;try{this.entities=(await this.request("entities.get")).reduce(((t,e)=>(e.name=e?.meta?.name_override||e.name,e.meta={...F[e.type]||{},...e.meta||{}},t[e.id]=e,t)),{}),this.selector.selectedEntities=this.entityGroups.id}finally{this.loading=!1}},clearEntityTimeouts(t){this.errorEntities[t]&&delete this.errorEntities[t],this.loadingEntities[t]&&delete this.loadingEntities[t],this.entityTimeouts[t]&&(clearTimeout(this.entityTimeouts[t]),delete this.entityTimeouts[t])},onEntityInput(t){this.entities[t.id]=t,this.clearEntityTimeouts(t.id),this.loadingEntities[t.id]&&delete this.loadingEntities[t.id]},onEntityUpdate(t){const e=t.entity.id;if(null==e)return;this.clearEntityTimeouts(e);const i={...t.entity};null==t.entity?.state&&(i.state=this.entities[e]?.state),i.meta?.name_override?.length?i.name=i.meta.name_override:this.entities[e]?.meta?.name_override?.length?i.name=this.entities[e].meta.name_override:i.name=t.entity?.name||this.entities[e]?.name,i.meta={...F[t.entity.type]||{},...this.entities[e]?.meta||{},...t.entity?.meta||{}},this.entities[e]=i},onEntityDelete(t){const e=t.entity?.id;null!=e&&(e===this.modalEntityId&&(this.modalEntityId=null),this.entities[e]&&delete this.entities[e])},onEntityModal(t){t?(this.modalEntityId=t,this.modalVisible=!0):(this.modalEntityId=null,this.modalVisible=!1)}},async mounted(){this.subscribe(this.onEntityUpdate,"on-entity-update","platypush.message.event.entities.EntityUpdateEvent"),this.subscribe(this.onEntityDelete,"on-entity-delete","platypush.message.event.entities.EntityDeleteEvent"),await this.sync(),await this.refresh()}};const R=(0,M.Z)(W,[["render",x],["__scopeId","data-v-fef021ee"]]);var V=R},4117:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return Lt}});var n=i(6252),s=i(3577);const l=t=>((0,n.dD)("data-v-ada8d74e"),t=t(),(0,n.Cn)(),t),o=(0,n.Uk)(" Are you "),a=l((()=>(0,n._)("b",null,"sure",-1))),r=(0,n.Uk)(" that you want to delete this entity? "),u=l((()=>(0,n._)("br",null,null,-1))),c=l((()=>(0,n._)("br",null,null,-1))),d=(0,n.Uk)(" Note: you should only delete an entity if its plugin has been disabled or the entity is no longer reachable."),p=l((()=>(0,n._)("br",null,null,-1))),h=l((()=>(0,n._)("br",null,null,-1))),m=(0,n.Uk)(" Otherwise, the entity will simply be created again upon the next scan. "),y={class:"table-row"},g={class:"title"},v=(0,n.Uk)(" Name "),f={class:"value"},_=["textContent"],w={class:"table-row"},b={class:"title"},k=(0,n.Uk)(" Icon "),E={class:"value icon-canvas"},C={key:0,class:"icon-editor"},I=l((()=>(0,n._)("i",{class:"fas fa-rotate-left"},null,-1))),x=[I],D=l((()=>(0,n._)("span",{class:"help"},[(0,n.Uk)(" Supported: image URLs or "),(0,n._)("a",{href:"https://fontawesome.com/icons",target:"_blank"},"FontAwesome icon classes"),(0,n.Uk)(". ")],-1))),G={class:"table-row"},T=l((()=>(0,n._)("div",{class:"title"}," Icon color ",-1))),j={class:"value icon-color-picker"},O=["value"],S=l((()=>(0,n._)("i",{class:"fas fa-rotate-left"},null,-1))),q=[S],M={class:"table-row"},U=l((()=>(0,n._)("div",{class:"title"},"Plugin",-1))),$=["textContent"],N={class:"table-row"},Z=l((()=>(0,n._)("div",{class:"title"},"Internal ID",-1))),L=["textContent"],z={key:0,class:"table-row"},F=l((()=>(0,n._)("div",{class:"title"},"External ID",-1))),W=["textContent"],R={key:1,class:"table-row"},V=l((()=>(0,n._)("div",{class:"title"},"Description",-1))),B=["textContent"],K={key:0,class:"table-row"},A=["textContent"],H=["textContent"],Y={key:2,class:"table-row"},P=l((()=>(0,n._)("div",{class:"title"},"Created at",-1))),J=["textContent"],Q={key:3,class:"table-row"},X=l((()=>(0,n._)("div",{class:"title"},"Updated at",-1))),tt=["textContent"],et={class:"table-row delete-entity-container"},it=l((()=>(0,n._)("div",{class:"title"},"Delete Entity",-1))),nt={class:"value"},st=l((()=>(0,n._)("i",{class:"fas fa-trash"},null,-1))),lt=[st];function ot(t,e,i,l,I,S){const st=(0,n.up)("ConfirmDialog"),ot=(0,n.up)("EditButton"),at=(0,n.up)("NameEditor"),rt=(0,n.up)("Icon"),ut=(0,n.up)("Modal",!0);return(0,n.wg)(),(0,n.j4)(ut,{visible:i.visible,title:i.entity.name||i.entity.external_id},{default:(0,n.w5)((()=>[(0,n.Wm)(st,{ref:"deleteConfirmDiag",title:"Confirm entity deletion",onInput:S.onDelete},{default:(0,n.w5)((()=>[o,a,r,u,c,d,p,h,m])),_:1},8,["onInput"]),(0,n._)("div",y,[(0,n._)("div",g,[v,I.editName?(0,n.kq)("",!0):((0,n.wg)(),(0,n.j4)(ot,{key:0,onClick:e[0]||(e[0]=t=>I.editName=!0)}))]),(0,n._)("div",f,[I.editName?((0,n.wg)(),(0,n.j4)(at,{key:0,value:i.entity.name,onInput:S.onRename,onCancel:e[1]||(e[1]=t=>I.editName=!1),disabled:I.loading},null,8,["value","onInput","disabled"])):((0,n.wg)(),(0,n.iD)("span",{key:1,textContent:(0,s.zw)(i.entity.name)},null,8,_))])]),(0,n._)("div",w,[(0,n._)("div",b,[k,I.editIcon?(0,n.kq)("",!0):((0,n.wg)(),(0,n.j4)(ot,{key:0,onClick:e[2]||(e[2]=t=>I.editIcon=!0)}))]),(0,n._)("div",E,[I.editIcon?((0,n.wg)(),(0,n.iD)("span",C,[(0,n.Wm)(at,{value:i.entity.meta?.icon?.class||i.entity.meta?.icon?.url,onInput:S.onIconEdit,onCancel:e[5]||(e[5]=t=>I.editIcon=!1),disabled:I.loading},{default:(0,n.w5)((()=>[(0,n._)("button",{type:"button",title:"Reset",onClick:e[3]||(e[3]=t=>S.onIconEdit(null)),onTouch:e[4]||(e[4]=t=>S.onIconEdit(null))},x,32)])),_:1},8,["value","onInput","disabled"]),D])):((0,n.wg)(),(0,n.j4)(rt,(0,s.vs)((0,n.dG)({key:1},i.entity?.meta?.icon||{})),null,16))])]),(0,n._)("div",G,[T,(0,n._)("div",j,[(0,n._)("input",{type:"color",value:i.entity.meta?.icon?.color,onChange:e[6]||(e[6]=(...t)=>S.onIconColorEdit&&S.onIconColorEdit(...t))},null,40,O),(0,n._)("button",{type:"button",title:"Reset",onClick:e[7]||(e[7]=t=>S.onIconColorEdit(null)),onTouch:e[8]||(e[8]=t=>S.onIconColorEdit(null))},q,32)])]),(0,n._)("div",M,[U,(0,n._)("div",{class:"value",textContent:(0,s.zw)(i.entity.plugin)},null,8,$)]),(0,n._)("div",N,[Z,(0,n._)("div",{class:"value",textContent:(0,s.zw)(i.entity.id)},null,8,L)]),i.entity.external_id?((0,n.wg)(),(0,n.iD)("div",z,[F,(0,n._)("div",{class:"value",textContent:(0,s.zw)(i.entity.external_id)},null,8,W)])):(0,n.kq)("",!0),i.entity.description?((0,n.wg)(),(0,n.iD)("div",R,[V,(0,n._)("div",{class:"value",textContent:(0,s.zw)(i.entity.description)},null,8,B)])):(0,n.kq)("",!0),((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(i.entity.data||{},((e,i)=>((0,n.wg)(),(0,n.iD)("div",{key:i},[null!=e?((0,n.wg)(),(0,n.iD)("div",K,[(0,n._)("div",{class:"title",textContent:(0,s.zw)(t.prettify(i))},null,8,A),(0,n._)("div",{class:"value",textContent:(0,s.zw)(""+e)},null,8,H)])):(0,n.kq)("",!0)])))),128)),i.entity.created_at?((0,n.wg)(),(0,n.iD)("div",Y,[P,(0,n._)("div",{class:"value",textContent:(0,s.zw)(t.formatDateTime(i.entity.created_at))},null,8,J)])):(0,n.kq)("",!0),i.entity.updated_at?((0,n.wg)(),(0,n.iD)("div",Q,[X,(0,n._)("div",{class:"value",textContent:(0,s.zw)(t.formatDateTime(i.entity.updated_at))},null,8,tt)])):(0,n.kq)("",!0),(0,n._)("div",et,[it,(0,n._)("div",nt,[(0,n._)("button",{onClick:e[9]||(e[9]=e=>t.$refs.deleteConfirmDiag.show())},lt)])])])),_:1},8,["visible","title"])}var at=i(9642),rt=i(1478),ut=i(9963);const ct=t=>((0,n.dD)("data-v-d543b3e4"),t=t(),(0,n.Cn)(),t),dt={class:"dialog-content"},pt=ct((()=>(0,n._)("i",{class:"fas fa-check"},null,-1))),ht=ct((()=>(0,n._)("i",{class:"fas fa-xmark"},null,-1)));function mt(t,e,i,l,o,a){const r=(0,n.up)("Modal");return(0,n.wg)(),(0,n.j4)(r,{ref:"modal",title:i.title},{default:(0,n.w5)((()=>[(0,n._)("div",dt,[(0,n.WI)(t.$slots,"default",{},void 0,!0)]),(0,n._)("form",{class:"buttons",onSubmit:e[4]||(e[4]=(0,ut.iM)(((...t)=>a.onConfirm&&a.onConfirm(...t)),["prevent"]))},[(0,n._)("button",{type:"submit",class:"ok-btn",onClick:e[0]||(e[0]=(...t)=>a.onConfirm&&a.onConfirm(...t)),onTouch:e[1]||(e[1]=(...t)=>a.onConfirm&&a.onConfirm(...t))},[pt,(0,n.Uk)("   "+(0,s.zw)(i.confirmText),1)],32),(0,n._)("button",{type:"button",class:"cancel-btn",onClick:e[2]||(e[2]=(...t)=>a.close&&a.close(...t)),onTouch:e[3]||(e[3]=(...t)=>a.close&&a.close(...t))},[ht,(0,n.Uk)("   "+(0,s.zw)(i.cancelText),1)],32)],32)])),_:3},8,["title"])}var yt={emits:["input","click","touch"],components:{Modal:at.Z},props:{title:{type:String},confirmText:{type:String,default:"OK"},cancelText:{type:String,default:"Cancel"}},methods:{onConfirm(){this.$emit("input"),this.close()},show(){this.$refs.modal.show()},close(){this.$refs.modal.hide()}}},gt=i(3744);const vt=(0,gt.Z)(yt,[["render",mt],["__scopeId","data-v-d543b3e4"]]);var ft=vt;const _t=t=>((0,n.dD)("data-v-3344f2bf"),t=t(),(0,n.Cn)(),t),wt=_t((()=>(0,n._)("i",{class:"fas fa-pen-to-square"},null,-1))),bt=[wt];function kt(t,e,i,s,l,o){return(0,n.wg)(),(0,n.iD)("button",{class:"edit-btn",onClick:e[0]||(e[0]=t=>o.proxy(t)),onTouch:e[1]||(e[1]=t=>o.proxy(t)),onInput:e[2]||(e[2]=t=>o.proxy(t))},bt,32)}var Et={emits:["input","click","touch"],methods:{proxy(t){this.$emit(t.type,t)}}};const Ct=(0,gt.Z)(Et,[["render",kt],["__scopeId","data-v-3344f2bf"]]);var It=Ct;const xt=t=>((0,n.dD)("data-v-1405d90f"),t=t(),(0,n.Cn)(),t),Dt=["disabled"],Gt=xt((()=>(0,n._)("button",{type:"submit"},[(0,n._)("i",{class:"fas fa-circle-check"})],-1))),Tt=xt((()=>(0,n._)("i",{class:"fas fa-ban"},null,-1))),jt=[Tt];function Ot(t,e,i,s,l,o){return(0,n.wg)(),(0,n.iD)("form",{onSubmit:e[3]||(e[3]=(0,ut.iM)(((...t)=>o.submit&&o.submit(...t)),["prevent"])),class:"name-editor"},[(0,n.wy)((0,n._)("input",{type:"text","onUpdate:modelValue":e[0]||(e[0]=t=>l.text=t),disabled:i.disabled},null,8,Dt),[[ut.nr,l.text]]),Gt,(0,n._)("button",{class:"cancel",onClick:e[1]||(e[1]=e=>t.$emit("cancel")),onTouch:e[2]||(e[2]=e=>t.$emit("cancel"))},jt,32),(0,n.WI)(t.$slots,"default",{},void 0,!0)],32)}var St={emits:["input","cancel"],props:{value:{type:String},disabled:{type:Boolean,deafult:!1}},data(){return{text:null}},methods:{proxy(t){this.$emit(t.type,t)},submit(){return this.$emit("input",this.text),!1}},mounted(){this.text=this.value}};const qt=(0,gt.Z)(St,[["render",Ot],["__scopeId","data-v-1405d90f"]]);var Mt=qt,Ut=i(6813),$t=i(7369),Nt={name:"Entity",components:{Modal:at.Z,EditButton:It,NameEditor:Mt,Icon:rt.Z,ConfirmDialog:ft},mixins:[Ut.Z],emits:["input","loading"],props:{entity:{type:Object,required:!0},visible:{type:Boolean,default:!1}},data(){return{loading:!1,editName:!1,editIcon:!1}},methods:{async onRename(t){this.loading=!0;try{const e={};e[this.entity.id]=t,await this.request("entities.rename",e)}finally{this.loading=!1,this.editName=!1}},async onDelete(){this.loading=!0;try{await this.request("entities.delete",[this.entity.id])}finally{this.loading=!1}},async onIconEdit(t){this.loading=!0;try{const e={url:null,class:null};t?.length?t.startsWith("http")?e.url=t:e.class=t:(e.url=($t[this.entity.type]||{})?.icon?.url,e.class=($t[this.entity.type]||{})?.icon?.["class"]);const i={};i[this.entity.id]={icon:e},await this.request("entities.set_meta",i)}finally{this.loading=!1,this.editIcon=!1}},async onIconColorEdit(t){this.loading=!0;try{const e=this.entity.meta?.icon||{};e.color=t?t.target.value:null;const i={};i[this.entity.id]={icon:e},await this.request("entities.set_meta",i)}finally{this.loading=!1,this.editIcon=!1}}}};const Zt=(0,gt.Z)(Nt,[["render",ot],["__scopeId","data-v-ada8d74e"]]);var Lt=Zt},6647:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return f}});var n=i(6252),s=i(3577),l=i(9963);const o={class:"entities-selectors-container"},a={class:"selector"},r={key:1,class:"selector"};function u(t,e,i,u,c,d){const p=(0,n.up)("DropdownItem"),h=(0,n.up)("Dropdown");return(0,n.wg)(),(0,n.iD)("div",o,[(0,n._)("div",a,[(0,n.Wm)(h,{title:"Group by","icon-class":"fas fa-eye",ref:"groupingSelector"},{default:(0,n.w5)((()=>[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(d.visibleGroupings,(t=>((0,n.wg)(),(0,n.j4)(p,{key:t,text:d.prettifyGroupingName(t),"item-class":{selected:i.value?.grouping===t},onClick:e=>d.onGroupingChanged(t)},null,8,["text","item-class","onClick"])))),128))])),_:1},512)]),i.value?.grouping?((0,n.wg)(),(0,n.iD)("div",{key:0,class:(0,s.C_)(["selector",{active:d.isGroupFilterActive}])},[(0,n.Wm)(h,{title:"Filter by","icon-class":"fas fa-filter",ref:"groupSelector","keep-open-on-item-click":""},{default:(0,n.w5)((()=>[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(d.sortedGroups,(t=>((0,n.wg)(),(0,n.j4)(p,(0,n.dG)({key:t,text:t},d.iconForGroup(t),{"item-class":{selected:!!c.selectedGroups[t]},onClick:(0,l.iM)((e=>d.toggleGroup(t)),["stop"])}),null,16,["text","item-class","onClick"])))),128))])),_:1},512)],2)):(0,n.kq)("",!0),Object.keys(i.entityGroups.id||{}).length?((0,n.wg)(),(0,n.iD)("div",r,[(0,n.wy)((0,n._)("input",{ref:"search",type:"text",class:"search-bar",placeholder:"🔎","onUpdate:modelValue":e[0]||(e[0]=t=>c.searchTerm=t)},null,512),[[l.nr,c.searchTerm]])])):(0,n.kq)("",!0)])}var c=i(6813),d=i(5771),p=i(9015),h=i(7369),m=i(1359),y={name:"Selector",emits:["input"],mixins:[c.Z],components:{Dropdown:d.Z,DropdownItem:p.Z},props:{entityGroups:{type:Object,required:!0},value:{type:Object,required:!0}},data(){return{selectedGroups:{},searchTerm:""}},computed:{visibleGroupings(){return Object.keys(this.entityGroups).filter((t=>"id"!==t))},sortedGroups(){return Object.keys(this.entityGroups[this.value?.grouping]||{}).sort()},typesMeta(){return h},isGroupFilterActive(){return Object.keys(this.selectedGroups).length!==this.sortedGroups.length},selectedEntities(){return Object.values(this.entityGroups.id).filter((t=>{if(!this.selectedGroups[t[this.value?.grouping]])return!1;if(this.searchTerm?.length){const e=this.searchTerm.toLowerCase();return(t.name||"").toLowerCase().indexOf(e)>=0||(t.plugin||"").toLowerCase().indexOf(e)>=0||(t.external_id||"").toLowerCase().indexOf(e)>=0||(t.id||0).toString()==e}return!0})).reduce(((t,e)=>(t[e.id]=e,t)),{})}},methods:{prettifyGroupingName(t){return t?this.prettify(t)+"s":""},iconForGroup(t){if("plugin"===this.value.grouping&&m[t]){const e=m[t];return{"icon-class":e["class"]?.length||!e.imgUrl?.length?e["class"]:"fas fa-gears","icon-url":e.imgUrl}}return{}},synchronizeSelectedEntities(){const t={...this.value};t.selectedEntities=this.selectedEntities,this.$emit("input",t)},updateSearchTerm(){const t={...this.value};t.searchTerm=this.searchTerm,t.selectedEntities=this.selectedEntities,this.$emit("input",t)},refreshGroupFilter(t){if(t)this.selectedGroups=Object.keys(this.entityGroups[this.value?.grouping]||{}).reduce(((t,e)=>(t[e]=!0,t)),{});else for(const e of Object.keys(this.entityGroups[this.value?.grouping]))null==this.selectedGroups[e]&&(this.selectedGroups[e]=!0);this.synchronizeSelectedEntities()},toggleGroup(t){this.selectedGroups[t]=!this.selectedGroups[t],this.synchronizeSelectedEntities()},onGroupingChanged(t){if(!this.entityGroups[t]||t===this.value?.grouping)return!1;const e={...this.value};e.grouping=t,this.$emit("input",e)}},mounted(){this.refreshGroupFilter(!0),this.$watch((()=>this.value?.grouping),(()=>{this.refreshGroupFilter(!0)})),this.$watch((()=>this.searchTerm),this.updateSearchTerm),this.$watch((()=>this.entityGroups),(()=>{this.refreshGroupFilter(!1)}))}},g=i(3744);const v=(0,g.Z)(y,[["render",u],["__scopeId","data-v-63b80935"]]);var f=v},7243:function(t,e,i){var n={"./Entity":[9892,9],"./Entity.vue":[9892,9],"./EntityIcon":[3499,9,8729,3499],"./EntityIcon.vue":[3499,9,8729,3499],"./EntityMixin":[7909,9],"./EntityMixin.vue":[7909,9],"./Index":[914,9],"./Index.vue":[914,9],"./Light":[1155,9,3490,3803,8729,1155],"./Light.vue":[1155,9,3490,3803,8729,1155],"./Modal":[4117,9],"./Modal.vue":[4117,9],"./Selector":[6647,9],"./Selector.vue":[6647,9],"./Switch":[518,9,3490,8729,518],"./Switch.vue":[518,9,3490,8729,518],"./common.scss":[65,9,4981,65],"./meta":[7369,3],"./meta.json":[7369,3],"./vars.scss":[5207,9,4981,5207]};function s(t){if(!i.o(n,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=n[t],s=e[0];return Promise.all(e.slice(2).map(i.e)).then((function(){return i.t(s,16|e[1])}))}s.keys=function(){return Object.keys(n)},s.id=7243,t.exports=s},7369:function(t){"use strict";t.exports=JSON.parse('{"entity":{"name":"Entity","name_plural":"Entities","icon":{"class":"fas fa-circle-question"}},"device":{"name":"Device","name_plural":"Devices","icon":{"class":"fas fa-gear"}},"switch":{"name":"Switch","name_plural":"Switches","icon":{"class":"fas fa-toggle-on"}},"light":{"name":"Light","name_plural":"Lights","icon":{"class":"fas fa-lightbulb"}}}')}}]);
//# sourceMappingURL=9892.137ee64b.js.map