platypush/platypush/backend/http/dist/static/js/chunk-0a24466a.ebe2c04f.js.map

1 line
31 KiB
Plaintext

{"version":3,"sources":["webpack:///./src/components/MenuPanel.vue?28db","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./src/components/panels/Light/Index.vue?72b0","webpack:///./src/components/elements/ToggleSwitch.vue?d860","webpack:///./src/components/panels/Light/Index.vue","webpack:///./src/components/panels/Panel.vue","webpack:///./src/components/panels/Panel.vue?ceb9","webpack:///./src/components/Light/Groups.vue","webpack:///./src/components/MenuPanel.vue","webpack:///./src/components/MenuPanel.vue?756e","webpack:///./src/components/elements/ToggleSwitch.vue","webpack:///./src/components/elements/ToggleSwitch.vue?7805","webpack:///./src/components/Light/Groups.vue?aa79","webpack:///./src/components/Light/Group.vue","webpack:///./src/components/Light/Light.vue","webpack:///./src/components/Light/Light.vue?94a9","webpack:///./src/components/Light/Group.vue?5271","webpack:///./src/components/panels/Light/Index.vue?5e61","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./src/components/Light/Groups.vue?0b77","webpack:///./src/components/panels/Light/Index.vue?a9c8","webpack:///./src/components/Light/Group.vue?7b21"],"names":["$","$filter","filter","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","target","proto","forced","callbackfn","this","arguments","length","undefined","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","i","source","forEach","getOwnPropertyDescriptors","defineProperties","class","selectedGroup","groups","loading-groups","loadingGroups","$event","toggleGroup","group","lights","displayedLights","closeGroup","name","emits","props","config","type","default","pluginName","String","required","data","loading","mounted","$emit","groupsSorted","id","state","any_on","disabled","style","Array","render","onInput","checked","Boolean","methods","event","stopPropagation","__scopeId","components","ToggleSwitch","MenuPanel","computed","entries","sort","a","b","localeCompare","map","title","close","lightsSorted","light","Light","Group","Groups","mixins","Utils","Panel","scenes","animations","loadingLights","initialGroup","Number","initialized","reduce","lightId","initSelectedGroup","self","unwatch","$watch","newVal","DESCRIPTORS","toIndexedObject","getOwnPropertyDescriptorModule","createProperty","stat","sham","descriptor","O","f","result","index","fails","nativeGetOwnPropertyDescriptor","FAILS_ON_PRIMITIVES","FORCED","it"],"mappings":"gHAAA,W,6DCCA,IAAIA,EAAI,EAAQ,QACZC,EAAU,EAAQ,QAAgCC,OAClDC,EAA+B,EAAQ,QACvCC,EAA0B,EAAQ,QAElCC,EAAsBF,EAA6B,UAEnDG,EAAiBF,EAAwB,UAK7CJ,EAAE,CAAEO,OAAQ,QAASC,OAAO,EAAMC,QAASJ,IAAwBC,GAAkB,CACnFJ,OAAQ,SAAgBQ,GACtB,OAAOT,EAAQU,KAAMD,EAAYE,UAAUC,OAAS,EAAID,UAAU,QAAKE,O,mKCf5D,SAASC,EAAgBC,EAAKC,EAAKC,GAYhD,OAXID,KAAOD,EACTG,OAAOC,eAAeJ,EAAKC,EAAK,CAC9BC,MAAOA,EACPG,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZP,EAAIC,GAAOC,EAGNF,ECVT,SAASQ,EAAQC,EAAQC,GACvB,IAAIC,EAAOR,OAAOQ,KAAKF,GAEvB,GAAIN,OAAOS,sBAAuB,CAChC,IAAIC,EAAUV,OAAOS,sBAAsBH,GACvCC,IAAgBG,EAAUA,EAAQ3B,QAAO,SAAU4B,GACrD,OAAOX,OAAOY,yBAAyBN,EAAQK,GAAKT,eAEtDM,EAAKK,KAAKC,MAAMN,EAAME,GAGxB,OAAOF,EAGM,SAASO,EAAe3B,GACrC,IAAK,IAAI4B,EAAI,EAAGA,EAAIvB,UAAUC,OAAQsB,IAAK,CACzC,IAAIC,EAAyB,MAAhBxB,UAAUuB,GAAavB,UAAUuB,GAAK,GAE/CA,EAAI,EACNX,EAAQL,OAAOiB,IAAS,GAAMC,SAAQ,SAAUpB,GAC9CG,EAAeb,EAAQU,EAAKmB,EAAOnB,OAE5BE,OAAOmB,0BAChBnB,OAAOoB,iBAAiBhC,EAAQY,OAAOmB,0BAA0BF,IAEjEZ,EAAQL,OAAOiB,IAASC,SAAQ,SAAUpB,GACxCE,OAAOC,eAAeb,EAAQU,EAAKE,OAAOY,yBAAyBK,EAAQnB,OAKjF,OAAOV,I,sICjCT,W,kCCAA,W,gJCCOiC,MAAM,wB,SACJA,MAAM,S,SAGNA,MAAM,S,iIAJb,eAOM,MAPN,EAOM,CANkC,MAAb,EAAAC,eAAyB,EAAAC,QAAUvB,OAAOQ,KAAK,EAAAe,QAAQ7B,Q,iBAAhF,eAEM,MAFN,EAEM,CADJ,eAAkH,GAAzG6B,OAAQ,EAAAA,OAASC,iBAAgB,EAAAC,cAAgB,SAAM,+BAAE,EAAAH,cAAgBI,IAAS,SAAQ,EAAAC,a,oEAErG,eAEM,MAFN,EAEM,CADJ,eAAsF,GAA9EC,MAAO,EAAAL,OAAO,EAAAD,eAAiBO,OAAQ,EAAAC,gBAAkB,QAAO,EAAAC,Y,+ECL/D,GACbC,KAAM,QACNC,MAAO,CAAC,WACRC,MAAO,CAELC,OAAQ,CACNC,KAAMpC,OACNqC,QAAS,cAIXC,WAAY,CACVF,KAAMG,OACNC,UAAU,IAIdC,KAjBa,WAkBX,MAAO,CACLC,SAAS,IAIbC,QAvBa,WAwBXnD,KAAKoD,MAAM,UAAWpD,QCtBX,I,wFCDX,eAGK,MAHD6B,MAAM,UAAQ,CAChB,eAA8B,KAA3BA,MAAM,qBACT,eAA+B,QAAzBA,MAAM,QAAO,W,MAGbA,MAAM,c,GAGNA,MAAM,6B,2IAThB,eAaY,Q,WAZV,iBAGK,CAHL,G,mBAIA,eAOK,2BAPiC,EAAAwB,cAAY,SAArBjB,G,wBAA7B,eAOK,MAPDP,MAAM,YAA2CvB,IAAK8B,EAAMkB,GAAK,QAAK,mBAAE,EAAAF,MAAK,SAAWhB,EAAMkB,M,CAChG,eAEO,OAFP,EAEO,eADFlB,EAAMI,MAAN,kBAAyBJ,EAAMkB,GAA/B,MAAiC,GAEtC,eAEO,OAFP,EAEO,CADL,eAAsH,GAAvG/C,MAAO6B,EAAMmB,MAAMC,OAASC,SAAUrB,EAAMkB,MAAO,EAAArB,eAAa,IAAU,QAAK,mBAAE,EAAAE,YAAYC,K,gICV7GP,MAAM,c,gDAAX,eAIM,MAJN,EAIM,CAHJ,eAEK,MAFA6B,MAAO,EAAAA,OAAK,CACf,eAAQ,qB,KAMC,OACblB,KAAM,YACNE,MAAO,CACLgB,MAAO,CACLd,KAAM,CAACG,OAAQvC,OAAQmD,U,UCR7B,EAAOC,OAAS,EAED,Q,4ECDT,eAEM,OAFD/B,MAAM,UAAQ,CACjB,eAAmB,OAAdA,MAAM,U,MAEPA,MAAM,S,wEARhB,eAYM,OAZDA,MAAK,CAAC,eAAc,UAAoB,EAAA4B,WAAY,QAAK,8BAAE,EAAAI,QAAA,sB,CAE9D,eAAwC,SAAjCjB,KAAK,WAAYkB,QAAS,EAAAvD,O,oBACjC,eAQQ,cANN,EAGA,eAEO,OAFP,EAEO,CADL,eAAQ,yB,MAOD,GACbiC,KAAM,eACNC,MAAO,CAAC,SACRC,MAAO,CACLnC,MAAO,CACLqC,KAAMmB,QACNlB,SAAS,GAGXY,SAAU,CACRb,KAAMmB,QACNlB,SAAS,IAIbmB,QAAS,CACPH,QADO,SACCI,GAEN,GADAA,EAAMC,kBACFlE,KAAKyD,SACP,OAAO,EAETzD,KAAKoD,MAAM,QAASa,M,UCjC1B,EAAOL,OAAS,EAChB,EAAOO,UAAY,kBAEJ,QJaA,GACb3B,KAAM,SACN4B,WAAY,CAACC,eAAcC,aAC3B7B,MAAO,CAAC,SAAU,UAClBC,MAAO,CACLX,OAAQ,CACNa,KAAMpC,OACNqC,QAAS,cAGXZ,cAAe,CACbW,KAAMpC,OACNqC,QAAS,eAIb0B,SAAU,CACRlB,aADQ,WAEN,OAAO7C,OAAOgE,QAAQxE,KAAK+B,QACtB0C,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAGlC,KAAKoC,cAAcD,EAAE,GAAGnC,SAC5CqC,KAAI,YAAiB,0BAAfvB,EAAe,KAAXlB,EAAW,KACpB,wCACKA,GADL,IAEEkB,GAAIA,SAMhBU,QAAS,CACP7B,YADO,SACKC,GACVpC,KAAKoD,MAAM,SAAUhB,M,UK/C3B,EAAOwB,OAAS,EAChB,EAAOO,UAAY,kBAEJ,Q,GCPRtC,MAAM,yB,GAEHA,MAAM,U,EAEN,eAAiC,KAA9BA,MAAM,uBAAqB,S,SAI7BA,MAAM,a,4GARf,eAgBM,MAhBN,EAgBM,CAfJ,eAcY,Q,wBAbV,iBAIK,CAJL,eAIK,KAJL,EAIK,CAHwD,EAAAO,O,iBAA3D,eAES,U,MAFDP,MAAM,WAAWiD,MAAM,OAAQ,QAAK,8BAAE,EAAAC,MAAA,sB,CAC5C,K,wBAI0B,EAAA1C,QAAW7B,OAAOQ,KAAK,EAAAqB,QAAQnC,Q,mBAI7D,eAEK,8BAFqB,EAAA8E,cAAY,SAA1BC,EAAO3B,G,wBAAnB,eAEK,MAFoChD,IAAKgD,GAAE,CAC9C,eAAwB,GAAhB2B,MAAOA,GAAK,uB,wBALtB,eAEM,MAFN,EAAqE,0B,yFCRpEpD,MAAM,S,wEAAX,eAEM,MAFN,EAEM,eADD,EAAAoD,MAAMzC,MAAQ,EAAAyC,MAAM3B,IAAE,MAKd,GACbd,KAAM,QACNE,MAAO,CACLuC,MAAO,CACLrC,KAAMpC,OACNqC,QAAS,gBCTf,EAAOe,OAAS,EAChB,EAAOO,UAAY,kBAEJ,QFkBA,GACb3B,KAAM,QACNC,MAAO,CAAC,SACR2B,WAAY,CAACE,YAAWY,SACxBxC,MAAO,CACLL,OAAQ,CACNO,KAAMpC,QAGR4B,MAAO,CACLQ,KAAMpC,SAIV+D,SAAU,CACRS,aADQ,WAEN,OAAKhF,KAAKqC,OAGH7B,OAAOgE,QAAQxE,KAAKqC,QACtBoC,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAGlC,KAAKoC,cAAcD,EAAE,GAAGnC,SAC5CqC,KAAI,YAAiB,0BAAfvB,EAAe,KAAX2B,EAAW,KACpB,wCACKA,GADL,IAEE3B,GAAIA,OAPH,KAabU,QAAS,CACPe,MADO,SACDd,GACJA,EAAMC,kBACNlE,KAAKoD,MAAM,Y,UGpDjB,EAAOQ,OAAS,EAED,QZaA,GACbpB,KAAM,QACN4B,WAAY,CAACe,QAAOC,UACpBC,OAAQ,CAACC,EAAA,KAAOC,GAChB9C,MAAO,CAAC,gBAERC,MAAO,CACLL,OAAQ,CACNO,KAAMpC,QAGRuB,OAAQ,CACNa,KAAMpC,QAGRgF,OAAQ,CACN5C,KAAMpC,QAGRiF,WAAY,CACV7C,KAAMpC,QAGRkF,cAAe,CACb9C,KAAMpC,OACNqC,QAAS,cAGXZ,cAAe,CACbW,KAAMpC,OACNqC,QAAS,cAGXC,WAAY,CACVF,KAAMG,QAGR4C,aAAc,CACZ/C,KAAM,CAACgD,OAAQ7C,UAInBE,KA1Ca,WA2CX,MAAO,CACLnB,cAAe,KACf+D,aAAa,IAIjBtB,SAAU,CACRjC,gBADQ,WACU,WACVR,EAAgB9B,KAAK8B,eAAiB9B,KAAK2F,aACjD,OAAqB,MAAjB7D,EACK9B,KAAKqC,OAEPrC,KAAK+B,OAAOD,GAAeO,OAAOyD,QAAO,SAACzD,EAAQ0D,GAEvD,OADA1D,EAAO0D,GAAW,EAAK1D,OAAO0D,GACvB1D,IACN,MAIP2B,QAAS,CACPgC,kBADO,WAEL,IAAMC,EAAOjG,KACPkG,EAAUlG,KAAKmG,QAAO,kBAAMF,EAAKN,gBAAc,SAACS,GAC/CH,EAAKJ,cACRI,EAAKJ,aAAc,EACnBK,IAC0B,MAAtBD,EAAKnE,eAAmC,MAAVsE,IAChCH,EAAKnE,cAAgBmE,EAAKN,mBAMlCpD,WAdO,WAeLvC,KAAK8B,cAAgB,MAGvBK,YAlBO,SAkBKC,GACVpC,KAAKoD,MAAM,eAAgBhB,KAI/Be,QArFa,WAsFXnD,KAAKgG,sB,oBapGT,EAAOpC,OAAS,EAChB,EAAOO,UAAY,kBAEJ,gB,qBCTf,IAAI9E,EAAI,EAAQ,QACZgH,EAAc,EAAQ,QACtBxF,EAAU,EAAQ,QAClByF,EAAkB,EAAQ,QAC1BC,EAAiC,EAAQ,QACzCC,EAAiB,EAAQ,QAI7BnH,EAAE,CAAEO,OAAQ,SAAU6G,MAAM,EAAMC,MAAOL,GAAe,CACtD1E,0BAA2B,SAAmCb,GAC5D,IAKIR,EAAKqG,EALLC,EAAIN,EAAgBxF,GACpBM,EAA2BmF,EAA+BM,EAC1D7F,EAAOH,EAAQ+F,GACfE,EAAS,GACTC,EAAQ,EAEZ,MAAO/F,EAAKd,OAAS6G,EACnBJ,EAAavF,EAAyBwF,EAAGtG,EAAMU,EAAK+F,WACjC5G,IAAfwG,GAA0BH,EAAeM,EAAQxG,EAAKqG,GAE5D,OAAOG,M,qBCrBX,IAAIzH,EAAI,EAAQ,QACZ2H,EAAQ,EAAQ,QAChBV,EAAkB,EAAQ,QAC1BW,EAAiC,EAAQ,QAAmDJ,EAC5FR,EAAc,EAAQ,QAEtBa,EAAsBF,GAAM,WAAcC,EAA+B,MACzEE,GAAUd,GAAea,EAI7B7H,EAAE,CAAEO,OAAQ,SAAU6G,MAAM,EAAM3G,OAAQqH,EAAQT,MAAOL,GAAe,CACtEjF,yBAA0B,SAAkCgG,EAAI9G,GAC9D,OAAO2G,EAA+BX,EAAgBc,GAAK9G,O,kCCb/D,W,kCCAA,W,kCCAA","file":"static/js/chunk-0a24466a.ebe2c04f.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MenuPanel.vue?vue&type=style&index=0&lang=scss\"","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Index.vue?vue&type=style&index=1&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ToggleSwitch.vue?vue&type=style&index=0&id=2ca997d7&lang=scss&scoped=true\"","<template>\n <div class=\"plugin lights-plugin\">\n <div class=\"panel\" v-if=\"selectedGroup == null && groups && Object.keys(groups).length\">\n <Groups :groups=\"groups\" :loading-groups=\"loadingGroups\" @select=\"selectedGroup = $event\" @toggle=\"toggleGroup\" />\n </div>\n <div class=\"panel\" v-else>\n <Group :group=\"groups[selectedGroup]\" :lights=\"displayedLights\" @close=\"closeGroup\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Utils from \"@/Utils\";\nimport Panel from \"@/components/panels/Panel\";\nimport Groups from \"@/components/Light/Groups\";\nimport Group from \"@/components/Light/Group\";\n\n/**\n * Generic component for light plugins panels.\n */\nexport default {\n name: \"Light\",\n components: {Group, Groups},\n mixins: [Utils, Panel],\n emits: ['group-toggle'],\n\n props: {\n lights: {\n type: Object,\n },\n\n groups: {\n type: Object,\n },\n\n scenes: {\n type: Object,\n },\n\n animations: {\n type: Object,\n },\n\n loadingLights: {\n type: Object,\n default: () => {},\n },\n\n loadingGroups: {\n type: Object,\n default: () => {},\n },\n\n pluginName: {\n type: String,\n },\n\n initialGroup: {\n type: [Number, String],\n },\n },\n\n data() {\n return {\n selectedGroup: null,\n initialized: false,\n }\n },\n\n computed: {\n displayedLights() {\n const selectedGroup = this.selectedGroup || this.initialGroup\n if (selectedGroup == null)\n return this.lights\n\n return this.groups[selectedGroup].lights.reduce((lights, lightId) => {\n lights[lightId] = this.lights[lightId]\n return lights\n }, {})\n },\n },\n\n methods: {\n initSelectedGroup() {\n const self = this\n const unwatch = this.$watch(() => self.initialGroup, (newVal) => {\n if (!self.initialized) {\n self.initialized = true\n unwatch()\n if (self.selectedGroup == null && newVal != null) {\n self.selectedGroup = self.initialGroup\n }\n }\n })\n },\n\n closeGroup() {\n this.selectedGroup = null\n },\n\n toggleGroup(group) {\n this.$emit('group-toggle', group)\n },\n },\n\n mounted() {\n this.initSelectedGroup()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.plugin {\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.panel {\n width: 100%;\n height: 100%;\n box-shadow: none;\n overflow: auto;\n}\n</style>\n\n<style lang=\"scss\">\n.lights-plugin {\n .menu-panel {\n ul {\n li:not(.header) {\n padding: 1.5em 1em;\n }\n }\n }\n}\n</style>","<script>\nexport default {\n name: \"Panel\",\n emits: ['mounted'],\n props: {\n // Plugin configuration.\n config: {\n type: Object,\n default: () => {},\n },\n\n // Plugin name.\n pluginName: {\n type: String,\n required: true,\n },\n },\n\n data() {\n return {\n loading: false,\n }\n },\n\n mounted() {\n this.$emit('mounted', this)\n }\n}\n</script>\n","import script from \"./Panel.vue?vue&type=script&lang=js\"\nexport * from \"./Panel.vue?vue&type=script&lang=js\"\n\nexport default script","<template>\n <MenuPanel>\n <li class=\"header\">\n <i class=\"icon fas fa-home\" />\n <span class=\"name\">Rooms</span>\n </li>\n <li class=\"row group\" v-for=\"group in groupsSorted\" :key=\"group.id\" @click=\"$emit('select', group.id)\">\n <span class=\"name col-9\">\n {{ group.name || `[Group #${group.id}]` }}\n </span>\n <span class=\"controls col-3 pull-right\">\n <ToggleSwitch :value=\"group.state.any_on\" :disabled=\"group.id in (loadingGroups || {})\" @input=\"toggleGroup(group)\" />\n </span>\n </li>\n </MenuPanel>\n</template>\n\n<script>\nimport MenuPanel from \"@/components/MenuPanel\";\nimport ToggleSwitch from \"@/components/elements/ToggleSwitch\";\n\nexport default {\n name: \"Groups\",\n components: {ToggleSwitch, MenuPanel},\n emits: ['select', 'toggle'],\n props: {\n groups: {\n type: Object,\n default: () => {},\n },\n\n loadingGroups: {\n type: Object,\n default: () => {},\n }\n },\n\n computed: {\n groupsSorted() {\n return Object.entries(this.groups)\n .sort((a, b) => a[1].name.localeCompare(b[1].name))\n .map(([id, group]) => {\n return {\n ...group,\n id: id,\n }\n })\n },\n },\n\n methods: {\n toggleGroup(group) {\n this.$emit('toggle', group)\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.header {\n display: flex;\n\n .icon {\n margin-right: 1em;\n }\n}\n\n.group {\n display: flex;\n align-items: center;\n}\n</style>\n","<template>\n <div class=\"menu-panel\">\n <ul :style=\"style\">\n <slot />\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"MenuPanel\",\n props: {\n style: {\n type: [String, Object, Array],\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.menu-panel {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: $menu-panel-bg;\n padding-top: 2em;\n\n ul {\n background: $menu-panel-content-bg;\n border-radius: 15px;\n box-shadow: $plugin-panel-shadow;\n border: 0;\n\n li {\n display: flex;\n padding: 0.5em;\n box-shadow: $plugin-panel-entry-shadow;\n cursor: pointer;\n border: 0;\n letter-spacing: 0.05em;\n\n &:hover {\n background: $hover-bg;\n }\n\n &:first-child {\n border-radius: 15px 15px 0 0;\n box-shadow: $plugin-panel-first-entry-shadow;\n }\n\n &:last-child {\n border-radius: 0 0 15px 15px;\n box-shadow: $plugin-panel-last-entry-shadow;\n }\n\n &.header {\n background: $menu-header-bg;\n font-weight: bold;\n box-shadow: $menu-header-shadow;\n\n &:hover {\n background: $menu-header-bg;\n }\n }\n }\n }\n}\n\n@media screen and (max-width: $tablet) {\n .menu-panel {\n padding-top: 0;\n ul {\n min-width: 100%;\n border-radius: 0;\n\n li {\n &:first-child {\n border-radius: 0;\n }\n\n &:last-child {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n@media screen and (min-width: $tablet) {\n .menu-panel {\n ul {\n min-width: 65%;\n }\n }\n}\n\n@media screen and (min-width: $desktop) {\n .menu-panel {\n ul {\n min-width: 40%;\n }\n }\n}\n\n@media screen and (min-width: $widescreen) {\n .menu-panel {\n ul {\n min-width: 30%;\n }\n }\n}\n\n@media screen and (min-width: $fullhd) {\n .menu-panel {\n ul {\n min-width: 25%;\n }\n }\n}\n</style>\n","import { render } from \"./MenuPanel.vue?vue&type=template&id=699122cd&bindings={\\\"style\\\":\\\"props\\\"}\"\nimport script from \"./MenuPanel.vue?vue&type=script&lang=js\"\nexport * from \"./MenuPanel.vue?vue&type=script&lang=js\"\n\nimport \"./MenuPanel.vue?vue&type=style&index=0&lang=scss\"\nscript.render = render\n\nexport default script","<template>\n <div class=\"power-switch\" :class=\"{disabled: disabled}\" @click=\"onInput\">\n <!--suppress HtmlFormInputWithoutLabel -->\n <input type=\"checkbox\" :checked=\"value\">\n <label>\n <!--suppress HtmlUnknownTag -->\n <div class=\"switch\">\n <div class=\"dot\" />\n </div>\n <span class=\"label\">\n <slot />\n </span>\n </label>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"ToggleSwitch\",\n emits: ['input'],\n props: {\n value: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n methods: {\n onInput(event) {\n event.stopPropagation()\n if (this.disabled)\n return false\n\n this.$emit('input', event)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.power-switch {\n position: relative;\n transition: transform .3s;\n transform: scale(var(--scale, 1)) translateZ(0);\n\n &:active {\n --scale: .96;\n }\n\n &.disabled {\n opacity: 0.6;\n }\n\n input {\n display: none;\n & + label {\n border-radius: 1em;\n display: block;\n cursor: pointer;\n position: relative;\n transition: box-shadow .4s;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: none;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n\n .switch {\n position: relative;\n display: inline-block;\n vertical-align: top;\n height: 1.4em;\n width: 2.5em;\n border-radius: 1em;\n background: $toggle-bg;\n box-shadow: $toggle-shadow;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: $toggle-selected-bg;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n\n .dot {\n background: $toggle-dot-bg;\n position: absolute;\n width: 1.5em;\n height: 1.5em;\n border-radius: 50%;\n box-shadow: $toggle-dot-shadow;\n left: -0.25em;\n top: -1px;\n transform: translateX(var(--offset, 0));\n transition: transform .4s, box-shadow .4s;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: $toggle-selected-dot-bg;\n box-shadow: $toggle-dot-shadow;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n }\n }\n\n span {\n line-height: 2em;\n font-size: 1.2em;\n color: var(--text, #646B8C);\n font-weight: 500;\n display: inline-block;\n vertical-align: top;\n position: relative;\n margin-left: 0.5em;\n transition: color .4s;\n }\n\n & + span {\n text-align: center;\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n opacity: 0;\n font-size: 1em;\n font-weight: 500;\n color: #A6ACCD;\n transform: translateY(4px);\n transition: opacity .4s, transform .4s;\n }\n }\n\n &:not(:checked) {\n & + label {\n pointer-events: none;\n & + span {\n opacity: 1;\n transform: translateY(12px);\n }\n }\n }\n\n &:checked {\n & + label {\n --offset: 1.5em;\n --text: #406046;\n --gradient: 1;\n --shadow: rgba(0, 39, 6, .1);\n }\n }\n }\n}\n</style>\n","import { render } from \"./ToggleSwitch.vue?vue&type=template&id=2ca997d7&scoped=true&bindings={\\\"value\\\":\\\"props\\\",\\\"disabled\\\":\\\"props\\\",\\\"onInput\\\":\\\"options\\\"}\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleSwitch.vue?vue&type=style&index=0&id=2ca997d7&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2ca997d7\"\n\nexport default script","import { render } from \"./Groups.vue?vue&type=template&id=30322a5e&scoped=true&bindings={\\\"groups\\\":\\\"props\\\",\\\"loadingGroups\\\":\\\"props\\\",\\\"groupsSorted\\\":\\\"options\\\",\\\"toggleGroup\\\":\\\"options\\\"}\"\nimport script from \"./Groups.vue?vue&type=script&lang=js\"\nexport * from \"./Groups.vue?vue&type=script&lang=js\"\n\nimport \"./Groups.vue?vue&type=style&index=0&id=30322a5e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-30322a5e\"\n\nexport default script","<template>\n <div class=\"light-group-container\">\n <MenuPanel>\n <li class=\"header\">\n <button class=\"back-btn\" title=\"Back\" @click=\"close\" v-if=\"group\">\n <i class=\"fas fa-chevron-left\" />\n </button>\n </li>\n\n <div class=\"no-lights\" v-if=\"!lights || !Object.keys(lights).length\">\n No lights found\n </div>\n\n <li v-for=\"(light, id) in lightsSorted\" :key=\"id\" v-else>\n <Light :light=\"light\" />\n </li>\n </MenuPanel>\n </div>\n</template>\n\n<script>\nimport Light from \"@/components/Light/Light\";\nimport MenuPanel from \"@/components/MenuPanel\";\n\nexport default {\n name: \"Group\",\n emits: ['close'],\n components: {MenuPanel, Light},\n props: {\n lights: {\n type: Object,\n },\n\n group: {\n type: Object,\n },\n },\n\n computed: {\n lightsSorted() {\n if (!this.lights)\n return []\n\n return Object.entries(this.lights)\n .sort((a, b) => a[1].name.localeCompare(b[1].name))\n .map(([id, light]) => {\n return {\n ...light,\n id: id,\n }\n })\n },\n },\n\n methods: {\n close(event) {\n event.stopPropagation()\n this.$emit('close')\n },\n },\n}\n</script>\n\n<style lang=\"scss\">\n.light-group-container {\n width: 100%;\n height: 100%;\n\n .header {\n .back-btn {\n border: 0;\n\n &:hover {\n border: 0;\n color: $default-hover-fg;\n }\n }\n }\n\n li.header {\n .back-btn {\n background: none;\n margin-left: -0.75em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"light\">\n {{ light.name || light.id }}\n </div>\n</template>\n\n<script>\nexport default {\n name: \"Light\",\n props: {\n light: {\n type: Object,\n default: () => {},\n },\n },\n}\n</script>\n\n<style scoped>\n\n</style>","import { render } from \"./Light.vue?vue&type=template&id=00b122fe&scoped=true&bindings={\\\"light\\\":\\\"props\\\"}\"\nimport script from \"./Light.vue?vue&type=script&lang=js\"\nexport * from \"./Light.vue?vue&type=script&lang=js\"\nscript.render = render\nscript.__scopeId = \"data-v-00b122fe\"\n\nexport default script","import { render } from \"./Group.vue?vue&type=template&id=2f85a20a&bindings={\\\"lights\\\":\\\"props\\\",\\\"group\\\":\\\"props\\\",\\\"lightsSorted\\\":\\\"options\\\",\\\"close\\\":\\\"options\\\"}\"\nimport script from \"./Group.vue?vue&type=script&lang=js\"\nexport * from \"./Group.vue?vue&type=script&lang=js\"\n\nimport \"./Group.vue?vue&type=style&index=0&lang=scss\"\nscript.render = render\n\nexport default script","import { render } from \"./Index.vue?vue&type=template&id=53b70a32&scoped=true&bindings={\\\"lights\\\":\\\"props\\\",\\\"groups\\\":\\\"props\\\",\\\"scenes\\\":\\\"props\\\",\\\"animations\\\":\\\"props\\\",\\\"loadingLights\\\":\\\"props\\\",\\\"loadingGroups\\\":\\\"props\\\",\\\"pluginName\\\":\\\"props\\\",\\\"initialGroup\\\":\\\"props\\\",\\\"selectedGroup\\\":\\\"data\\\",\\\"initialized\\\":\\\"data\\\",\\\"displayedLights\\\":\\\"options\\\",\\\"initSelectedGroup\\\":\\\"options\\\",\\\"closeGroup\\\":\\\"options\\\",\\\"toggleGroup\\\":\\\"options\\\"}\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport \"./Index.vue?vue&type=style&index=0&id=53b70a32&lang=scss&scoped=true\"\nimport \"./Index.vue?vue&type=style&index=1&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-53b70a32\"\n\nexport default script","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Groups.vue?vue&type=style&index=0&id=30322a5e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Index.vue?vue&type=style&index=0&id=53b70a32&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Group.vue?vue&type=style&index=0&lang=scss\""],"sourceRoot":""}