platypush/platypush/backend/http/webapp/dist/static/js/chunk-b8b1872e.33831618.js.map

1 line
34 KiB
Plaintext

{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./src/components/widgets/Component/Index.vue","webpack:///./src/components/widgets/Component/components/Switch.vue?2b1e","webpack:///./src/components/widgets/Component/components/Slider.vue?0129","webpack:///./src/components/widgets/Component/Index.vue?a557","webpack:///./src/components/widgets/Component/components/mixins.js","webpack:///./src/components/widgets/Component/components/Run.vue","webpack:///./src/components/widgets/Component/components/Run.vue?a6ed","webpack:///./src/components/widgets/Component/components/Switch.vue","webpack:///./src/components/widgets/Component/components/Switch.vue?07ce","webpack:///./src/components/widgets/Component/components/Slider.vue","webpack:///./src/components/widgets/Component/components/Slider.vue?02c1","webpack:///./src/components/widgets/Component/components/Sensor.vue","webpack:///./src/components/widgets/Component/components/Sensor.vue?7f29","webpack:///./src/components/widgets/Component/index.js","webpack:///./src/components/widgets/Component/components/Run.vue?ba64","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./src/components/widgets/Component/Index.vue?f85a","webpack:///./src/components/widgets/Component/components/Sensor.vue?7dd3"],"names":["$","$trim","trim","forcedStringTrimMethod","target","proto","forced","this","bus","name","components","Loading","mixins","props","content","type","String","data","loading","unwatch","methods","_parseActions","element","actionsTags","children","filter","node","tagName","toLowerCase","length","actionTags","map","actionTag","action","attributes","value","args","reduce","obj","arg","undefined","JSON","parse","innerText","e","_parseVars","varsTags","vars","varTag","_parseHandlers","handlers","parseHndlScript","hndlText","app","eval","parseEventHndl","event","hndlTags","mounted","refresh","handler","interval","events","hndlTag","beforeActionsTags","beforeActions","afterActionsTags","afterActions","_parseProps","attr","propagateEvent","emit","_addEventHandler","subscribe","_removeEventHandler","$refs","container","innerHTML","Object","entries","forEach","component","$options","getElementsByTagName","actions","_vars","render","mount","parentNode","removeChild","unmounted","class","ref","__scopeId","Utils","default","iconClass","iconUrl","iconColor","Array","_interval","refreshInterval","computed","iconStyle","hasIcon","run","input","request_","key","m","match","request","processEvent","hndl","$root","on","self","wrapper","setInterval","clearInterval","src","alt","style","ToggleSwitch","range","parseFloat","min","max","SliderElement","Slider","Number","required","unit","Run","Switch","Sensor","fails","whitespaces","non","module","exports","METHOD_NAME"],"mappings":"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","file":"static/js/chunk-b8b1872e.33831618.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","<template>\n <div class=\"component-widget\">\n <Loading v-if=\"loading\" />\n <div class=\"container\" ref=\"container\" />\n </div>\n</template>\n\n<script>\nimport Utils from \"@/Utils\";\nimport Loading from \"@/components/Loading\";\nimport components from './index'\nimport { createApp, h } from \"vue\";\nimport mitt from 'mitt';\n\nconst bus = mitt();\n\nexport default {\n name: \"Elements\",\n components: {Loading},\n mixins: [Utils],\n props: {\n content: {\n type: String,\n },\n },\n\n data() {\n return {\n loading: false,\n unwatch: null,\n }\n },\n\n methods: {\n _parseActions(element) {\n const actionsTags = [...element.children].filter((node) => node.tagName?.toLowerCase() === 'actions')\n const children = actionsTags?.length ? actionsTags[0].children : element.children\n const actionTags = [...children].filter((node) => node.tagName?.toLowerCase() === 'action')\n\n if (!actionTags?.length)\n return\n\n return [...actionTags]\n .map((actionTag) => {\n return {\n action: actionTag.attributes.name.value,\n args: [...actionTag.children].reduce((obj, arg) => {\n let value = undefined\n try {\n value = JSON.parse(arg.innerText)\n } catch (e) {\n if (arg.innerText?.length)\n value = arg.innerText\n }\n\n obj[arg.tagName.toLowerCase()] = value\n return obj\n }, {}),\n }\n })\n },\n\n _parseVars(element) {\n const varsTags = [...element.children].filter((node) => node.tagName?.toLowerCase() === 'vars')\n if (!varsTags?.length)\n return\n\n return [...varsTags[0].children].reduce((vars, varTag) => {\n let value = undefined\n try {\n value = JSON.parse(varTag.innerText)\n } catch (e) {\n if (varTag.innerText?.length)\n value = varTag.innerText\n }\n vars[varTag.tagName.toLowerCase()] = value\n return vars\n }, {})\n },\n\n _parseHandlers(element) {\n const handlers = {}\n const parseHndlScript = (hndlText) => {\n return (app) => {\n return eval(`// noinspection JSUnusedLocalSymbols\n (async function (self) {\n ${hndlText}\n })`)(app)\n }\n }\n\n const parseEventHndl = (hndlText) => {\n return (app) => {\n return (event) => {\n return eval(`// noinspection JSUnusedLocalSymbols\n (async function (self, event) {\n ${hndlText}\n })`)(app, event)\n }\n }\n }\n\n const hndlTags = [...element.children].filter((node) => node.tagName?.toLowerCase() === 'handlers')\n if (hndlTags?.length) {\n const mounted = [...hndlTags[0].children].filter((node) => node.tagName?.toLowerCase() === 'mounted')\n if (mounted?.length)\n handlers.mounted = parseHndlScript(mounted[0].innerText)\n\n const refresh = [...hndlTags[0].children].filter((node) => node.tagName?.toLowerCase() === 'refresh')\n if (refresh?.length) {\n handlers.refresh = {\n handler: parseHndlScript(refresh[0].innerText),\n interval: refresh[0].attributes.interval?.value || 10,\n }\n }\n\n const events = [...hndlTags[0].children].filter((node) => node.tagName?.toLowerCase() === 'event')\n if (events?.length)\n handlers.events = events.reduce((events, hndlTag) => {\n events[hndlTag.attributes.type.value] = parseEventHndl(hndlTag.innerText)\n return events\n }, {})\n }\n\n const actionsTags = [...element.children].filter((node) => node.tagName?.toLowerCase() === 'actions')\n if (actionsTags?.length) {\n const beforeActionsTags = [...actionsTags[0].children].filter((node) => node.tagName?.toLowerCase() === 'before')\n if (beforeActionsTags?.length)\n handlers.beforeActions = parseHndlScript(beforeActionsTags[0].innerText)\n\n const afterActionsTags = [...actionsTags[0].children].filter((node) => node.tagName?.toLowerCase() === 'after')\n if (afterActionsTags?.length)\n handlers.afterActions = parseHndlScript(afterActionsTags[0].innerText)\n }\n\n return handlers\n },\n\n _parseProps(element) {\n return [...element.attributes].reduce((obj, attr) => {\n obj[attr.name] = attr.value\n return obj\n }, {})\n },\n\n propagateEvent(event) {\n bus.emit('event', event)\n },\n\n _addEventHandler() {\n this.unwatch = this.subscribe((event) => {\n bus.emit('event', event)\n })\n },\n\n _removeEventHandler() {\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n },\n },\n\n mounted() {\n this.loading = true\n this._addEventHandler()\n\n try {\n this.$refs.container.innerHTML = this.content\n\n Object.entries(components).forEach(([name, component]) => {\n this.$options.components[name] = component;\n [...this.$refs.container.getElementsByTagName(name)].forEach((element) => {\n const props = this._parseProps(element)\n props.actions = this._parseActions(element)\n props.handlers = this._parseHandlers(element)\n props._vars = this._parseVars(element)\n\n createApp({\n render() { return h(component, props) },\n data() {\n return { bus: bus }\n },\n }).mount(element)\n })\n })\n\n for (const tagName of ['handlers', 'actions', 'vars'])\n this.$refs.container.getElementsByTagName(tagName).forEach((hndlTag) => {\n hndlTag.parentNode.removeChild(hndlTag)\n })\n } finally {\n this.loading = false\n }\n },\n\n unmounted() {\n this._removeEventHandler()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.component-widget {\n margin: -.75em 0 0 -.75em !important;\n padding: 0;\n width: calc(100% + 1.5em);\n height: calc(100% + 1.5em);\n}\n</style>\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!./Switch.vue?vue&type=style&index=0&id=97d3a936&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!./Slider.vue?vue&type=style&index=0&id=772cf288&lang=scss&scoped=true\"","import { render } from \"./Index.vue?vue&type=template&id=505e25e7&scoped=true\"\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=505e25e7&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-505e25e7\"\n\nexport default script","import Utils from \"@/Utils\";\n\nexport default {\n mixins: [Utils],\n props: {\n /**\n * Component name\n */\n name: {\n type: String,\n default: '[Unnamed sensor]',\n },\n\n /**\n * Action (FontAwesome) icon class (default: `fa fa-play`)\n */\n iconClass: {\n type: String,\n },\n\n /**\n * Action icon URL (default: `fa fa-play`)\n */\n iconUrl: {\n type: String,\n },\n\n /**\n * Action icon color override, for FontAwesome icons\n */\n iconColor: {\n type: String,\n },\n\n /**\n * Actions to run upon interaction with the widget. Format:\n *\n * [\n * {\n * \"action\": \"light.hue.toggle\",\n * \"args\": {\n * \"lights\": [\"Bulb 1\", \"Bulb 2\"]\n * }\n * },\n * {\n * \"action\": \"music.mpd.pause\"\n * }\n * ]\n */\n actions: {\n type: Array,\n default: () => { return [] },\n },\n\n /**\n * Map of variables used by this component, in the form\n * variable_name -> variable_value.\n */\n _vars: {\n type: Object,\n default: () => { return {} },\n },\n\n /**\n * Map of handlers, in the form of event_type -> functions.\n * Supported event handler types:\n *\n * - mounted: Function to execute when the component is mounted.\n * - beforeActions: Function to execute before the component action is run.\n * - afterActions: Function to execute after the component action is run.\n * - refresh: Function to be called at startup (if mounted is also specified\n * then refresh will be called after mounted when the component is\n * first mounted) and at regular intervals defined on the\n * interval property (default: 10 seconds).\n * - events: This is a mapping of functions that react to Platypush\n * platform events published on the websocket (e.g. lights or\n * switches toggles, media events etc.). The form is\n * platypush_event_type -> function.\n */\n handlers: {\n type: Object,\n default: () => { return {} },\n },\n\n /**\n * Event bus\n */\n bus: {\n type: Object,\n },\n },\n\n data() {\n return {\n vars: {...(this._vars || {})},\n _interval: undefined,\n refresh: null,\n refreshInterval: null,\n value: null,\n loading: false,\n }\n },\n\n computed: {\n iconStyle() {\n if (!this.iconClass?.length && this.iconColor?.length)\n return\n\n return {'color': this.iconColor}\n },\n\n hasIcon() {\n return this.iconUrl?.length || this.iconClass?.length\n },\n },\n\n methods: {\n async run() {\n if (this.handlers.input)\n return this.handlers.input(this)(this.value)\n\n if (this.handlers.beforeActions)\n await this.handlers.beforeActions(this)\n for (const action of this.actions)\n await this.request_(action)\n if (this.handlers.afterActions) {\n await this.handlers.afterActions(this)\n }\n },\n\n async request_(action) {\n const args = Object.entries(action.args).reduce((args, [key, value]) => {\n if (value.trim) {\n value = value.trim()\n const m = value.match(/^{{\\s*(.*)\\s*}}/)\n if (m) {\n value = eval(`// noinspection JSUnusedLocalSymbols\n (function (self) {\n return ${m[1]}\n })`)(this)\n }\n }\n\n args[key] = value\n return args\n }, {})\n\n await this.request(action.action, args)\n },\n\n async processEvent(event) {\n const hndl = (this.handlers.events || {})[event.type]\n if (hndl)\n await hndl(this)(event)\n },\n },\n\n async mounted() {\n this.$root.bus.on('event', this.processEvent)\n\n if (this.handlers.mounted)\n await this.handlers.mounted(this)\n\n if (this.handlers.refresh) {\n this.refreshInterval = (this.handlers.refresh?.interval || 0) * 1000\n this.refresh = () => {\n this.handlers.refresh.handler(this)\n }\n\n await this.refresh()\n if (this.refreshInterval) {\n const self = this\n const wrapper = () => { return self.refresh() }\n this._interval = setInterval(wrapper, this.refreshInterval)\n }\n }\n },\n\n unmounted() {\n if (this._interval)\n clearInterval(this._interval)\n }\n}\n","<template>\n <div class=\"run component-row\" @click=\"run\">\n <div class=\"col-1 icon-container\" v-if=\"hasIcon\">\n <img class=\"icon\" :src=\"iconUrl\" :alt=\"name\" v-if=\"iconUrl?.length\">\n <i class=\"icon\" :class=\"iconClass\" :style=\"iconStyle\" v-else />\n </div>\n <div :class=\"{'col-11': hasIcon, 'col-12': !hasIcon}\" v-text=\"name\" />\n </div>\n</template>\n\n<script>\nimport mixins from './mixins';\n\n/**\n * This component is used to run one or more actions.\n */\nexport default {\n name: \"Run\",\n mixins: [mixins],\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"mixins\";\n</style>\n","import { render } from \"./Run.vue?vue&type=template&id=7478b72d&scoped=true\"\nimport script from \"./Run.vue?vue&type=script&lang=js\"\nexport * from \"./Run.vue?vue&type=script&lang=js\"\n\nimport \"./Run.vue?vue&type=style&index=0&id=7478b72d&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7478b72d\"\n\nexport default script","<template>\n <div class=\"switch component-row\" @click=\"run\">\n <div class=\"col-1 icon-container\" v-if=\"hasIcon\">\n <img class=\"icon\" :src=\"iconUrl\" :alt=\"name\" v-if=\"iconUrl?.length\">\n <i class=\"icon\" :class=\"iconClass\" :style=\"iconStyle\" v-else />\n </div>\n <div :class=\"{'col-9': hasIcon, 'col-10': !hasIcon}\" v-text=\"name\" />\n <div class=\"col-2 toggle-container\">\n <div class=\"toggle\">\n <ToggleSwitch :value=\"value\" @input.stop=\"run\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport mixins from './mixins';\nimport ToggleSwitch from \"@/components/elements/ToggleSwitch\";\n\n/**\n * This component can be used to trigger toggle actions on\n * entities with a binary (ON/OFF) state.\n */\nexport default {\n name: \"Switch\",\n components: {ToggleSwitch},\n mixins: [mixins],\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"mixins\";\n\n.switch {\n .toggle-container {\n position: relative;\n\n .toggle {\n position: absolute;\n right: 0;\n }\n }\n}\n</style>\n","import { render } from \"./Switch.vue?vue&type=template&id=97d3a936&scoped=true\"\nimport script from \"./Switch.vue?vue&type=script&lang=js\"\nexport * from \"./Switch.vue?vue&type=script&lang=js\"\n\nimport \"./Switch.vue?vue&type=style&index=0&id=97d3a936&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-97d3a936\"\n\nexport default script","<template>\n <div class=\"slider-root component-row\">\n <div class=\"col-1 icon-container\" v-if=\"hasIcon\">\n <img class=\"icon\" :src=\"iconUrl\" :alt=\"name\" v-if=\"iconUrl?.length\">\n <i class=\"icon\" :class=\"iconClass\" :style=\"iconStyle\" v-else />\n </div>\n <div :class=\"{'col-6': hasIcon, 'col-7': !hasIcon}\" v-text=\"name\" />\n <div class=\"col-5 slider-container\">\n <div class=\"slider\">\n <SliderElement :value=\"value\" :range=\"[parseFloat(min), parseFloat(max)]\" @mouseup=\"run\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport mixins from './mixins';\nimport SliderElement from \"@/components/elements/Slider\";\n\n/**\n * This component can be used to run action on the basis of a\n * numeric value included in a specified interval (i.e. a slider).\n */\nexport default {\n name: \"Slider\",\n components: {SliderElement},\n mixins: [mixins],\n props: {\n /**\n * Minimum value for the slider (default: 0).\n */\n min: {\n type: [String, Number],\n default: 0,\n },\n\n /**\n * Maximum value for the slider.\n */\n max: {\n type: [String, Number],\n required: true,\n },\n },\n\n methods: {\n async run(event) {\n this.value = parseFloat(event.target.value)\n\n if (this.handlers.beforeActions)\n await this.handlers.beforeActions(this)\n for (const action of this.actions)\n await this.request_(action)\n if (this.handlers.afterActions) {\n await this.handlers.afterActions(this)\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"mixins\";\n\n.slider-root {\n .slider-container {\n position: relative;\n\n .slider {\n position: absolute;\n right: 0;\n }\n }\n}\n</style>\n","import { render } from \"./Slider.vue?vue&type=template&id=772cf288&scoped=true\"\nimport script from \"./Slider.vue?vue&type=script&lang=js\"\nexport * from \"./Slider.vue?vue&type=script&lang=js\"\n\nimport \"./Slider.vue?vue&type=style&index=0&id=772cf288&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-772cf288\"\n\nexport default script","<template>\n <div class=\"sensor component-row\" @click=\"run\">\n <div class=\"col-1 icon-container\" v-if=\"hasIcon\">\n <img class=\"icon\" :src=\"iconUrl\" :alt=\"name\" v-if=\"iconUrl?.length\">\n <i class=\"icon\" :class=\"iconClass\" :style=\"iconStyle\" v-else />\n </div>\n <div :class=\"{'col-8': hasIcon, 'col-9': !hasIcon}\" v-text=\"name\" />\n <div class=\"col-3 value-container\">\n <div class=\"value\">\n {{ value }}\n <span v-if=\"unit\" v-text=\"unit\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport mixins from './mixins';\n\n/**\n * This component is used to monitor values from sensors.\n */\nexport default {\n name: \"Sensor\",\n mixins: [mixins],\n props: {\n /**\n * Optional unit used for the sensor value\n */\n unit: {\n type: String,\n },\n },\n\n methods: {\n async run() {\n if (this.handlers.beforeActions)\n await this.handlers.beforeActions(this)\n\n if (this.actions?.length)\n for (const action of this.actions)\n await this.request_(action)\n else\n await this.refresh()\n\n if (this.handlers.afterActions) {\n await this.handlers.afterActions(this)\n }\n },\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"mixins\";\n\n.sensor {\n .value-container {\n position: relative;\n\n .value {\n position: absolute;\n right: 0;\n font-weight: bold;\n }\n }\n}\n</style>\n","import { render } from \"./Sensor.vue?vue&type=template&id=53594122&scoped=true\"\nimport script from \"./Sensor.vue?vue&type=script&lang=js\"\nexport * from \"./Sensor.vue?vue&type=script&lang=js\"\n\nimport \"./Sensor.vue?vue&type=style&index=0&id=53594122&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-53594122\"\n\nexport default script","import Run from './components/Run'\nimport Switch from './components/Switch'\nimport Slider from './components/Slider'\nimport Sensor from \"@/components/widgets/Component/components/Sensor\";\n\nexport default {\n Run,\n Switch,\n Slider,\n Sensor,\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!./Run.vue?vue&type=style&index=0&id=7478b72d&lang=scss&scoped=true\"","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\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!./Index.vue?vue&type=style&index=0&id=505e25e7&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!./Sensor.vue?vue&type=style&index=0&id=53594122&lang=scss&scoped=true\""],"sourceRoot":""}