platypush/platypush/backend/http/webapp/dist/static/js/980.ff050b72.js.map

1 line
38 KiB
Plaintext

{"version":3,"file":"static/js/980.ff050b72.js","mappings":"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","sources":["webpack://platypush/./src/components/panels/Light/color.js","webpack://platypush/./src/components/elements/Slider.vue","webpack://platypush/./src/components/elements/Slider.vue?787f","webpack://platypush/./src/components/elements/ToggleSwitch.vue","webpack://platypush/./src/components/elements/ToggleSwitch.vue?94aa","webpack://platypush/./src/components/panels/Entities/Light.vue","webpack://platypush/./src/components/panels/Entities/Light.vue?345c"],"sourcesContent":["export class ColorConverter {\n constructor(ranges) {\n this.ranges = {\n hue: [0, 360],\n sat: [0, 100],\n bri: [0, 100],\n ct: [154, 500],\n }\n\n if (ranges)\n for (const attr of Object.keys(this.ranges))\n if (ranges[attr])\n this.ranges[attr] = ranges[attr]\n }\n\n normalize(x, xRange, yRange) {\n return yRange[0] + (((x-xRange[0]) * (yRange[1]-yRange[0])) / (xRange[1]-xRange[0]))\n }\n\n hslToRgb(h, s, l) {\n [h, s, l] = [\n this.normalize(h, this.ranges.hue, [0, 360]),\n this.normalize(s, this.ranges.sat, [0, 100]),\n this.normalize(l, this.ranges.bri, [0, 100]),\n ]\n\n l /= 100\n const a = s * Math.min(l, 1 - l) / 100\n const f = n => {\n const k = (n + h / 30) % 12\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\n return Math.round(255 * color)\n }\n\n return [f(0), f(8), f(4)]\n }\n\n rgbToHsl(r, g, b){\n r /= 255\n g /= 255\n b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if(max === min){\n h = s = 0; // achromatic\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch(max){\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n\n return [\n parseInt(this.normalize(h, [0, 1], this.ranges.hue)),\n parseInt(this.normalize(s, [0, 1], this.ranges.sat)),\n parseInt(this.normalize(l, [0, 1], this.ranges.bri)),\n ]\n }\n\n xyToRgb(x, y, brightness) {\n // Set to maximum brightness if no custom value was given (Not the slick ECMAScript 6 way for compatibility reasons)\n if (brightness == null)\n brightness = this.ranges.bri[1];\n\n const z = 1.0 - x - y;\n const Y = (brightness / (this.ranges.bri[1]-1)).toFixed(2);\n const X = (Y / y) * x;\n const Z = (Y / y) * z;\n\n //Convert to RGB using Wide RGB D65 conversion\n let red \t= X * 1.656492 - Y * 0.354851 - Z * 0.255038;\n let green = -X * 0.707196 + Y * 1.655397 + Z * 0.036152;\n let blue \t= X * 0.051713 - Y * 0.121364 + Z * 1.011530;\n\n //If red, green or blue is larger than 1.0 set it back to the maximum of 1.0\n if (red > blue && red > green && red > 1.0) {\n green = green / red;\n blue = blue / red;\n red = 1.0;\n } else if (green > blue && green > red && green > 1.0) {\n red = red / green;\n blue = blue / green;\n green = 1.0;\n } else if (blue > red && blue > green && blue > 1.0) {\n red = red / blue;\n green = green / blue;\n blue = 1.0;\n }\n\n //Reverse gamma correction\n red \t= red <= 0.0031308 ? 12.92 * red : (1.0 + 0.055) * Math.pow(red, (1.0 / 2.4)) - 0.055;\n green \t= green <= 0.0031308 ? 12.92 * green : (1.0 + 0.055) * Math.pow(green, (1.0 / 2.4)) - 0.055;\n blue \t= blue <= 0.0031308 ? 12.92 * blue : (1.0 + 0.055) * Math.pow(blue, (1.0 / 2.4)) - 0.055;\n\n //Convert normalized decimal to decimal\n red \t= Math.round(red * 255);\n green \t= Math.round(green * 255);\n blue \t= Math.round(blue * 255);\n\n if (isNaN(red))\n red = 0;\n if (isNaN(green))\n green = 0;\n if (isNaN(blue))\n blue = 0;\n\n return [red, green, blue].map(\n (c) => Math.min(Math.max(0, c), 255)) // lgtm [js/automatic-semicolon-insertion]\n }\n\n rgbToXY(red, green, blue) {\n if (red > 1) { red /= 255; }\n if (green > 1) { green /= 255; }\n if (blue > 1) { blue /= 255; }\n\n //Apply a gamma correction to the RGB values, which makes the color more vivid and more the like the color displayed on the screen of your device\n red \t= (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);\n green \t= (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);\n blue \t= (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);\n\n //RGB values to XYZ using the Wide RGB D65 conversion formula\n const X \t\t= red * 0.664511 + green * 0.154324 + blue * 0.162028;\n const Y \t\t= red * 0.283881 + green * 0.668433 + blue * 0.047685;\n const Z \t\t= red * 0.000088 + green * 0.072310 + blue * 0.986039;\n\n //Calculate the xy values from the XYZ values\n let x \t\t= parseFloat((X / (X + Y + Z)).toFixed(4));\n let y \t\t= parseFloat((Y / (X + Y + Z)).toFixed(4));\n\n if (isNaN(x))\n x = 0;\n if (isNaN(y))\n y = 0;\n\n return [x, y];\n }\n\n rgbToBri(red, green, blue) {\n return Math.min(2 * this.rgbToHsl(red, green, blue)[2], this.ranges.bri[1])\n }\n\n getRGB(color) {\n if (color.red != null && color.green != null && color.blue != null)\n return [color.red, color.green, color.blue]\n if (color.r != null && color.g != null && color.b != null)\n return [color.r, color.g, color.b]\n if (color.rgb)\n return color.rgb\n }\n\n getXY(color) {\n if (color.x != null && color.y != null)\n return [color.x, color.y]\n if (color.xy)\n return color.xy\n }\n\n toRGB(color) {\n const rgb = this.getRGB(color)\n if (rgb)\n return rgb\n\n const xy = this.getXY(color)\n if (xy && color.bri)\n return this.xyToRgb(...xy, color.bri)\n if (color.hue && color.sat && color.bri)\n return this.hslToRgb(color.hue, color.sat, color.bri)\n\n console.debug('Could not determine color space')\n console.debug(color)\n }\n\n toXY(color) {\n const xy = this.getXY(color)\n if (xy && color.bri)\n return [xy[0], xy[1], color.bri]\n\n const rgb = this.getRGB(color)\n if (rgb)\n return this.rgbToXY(...rgb)\n\n if (color.hue && color.sat && color.bri) {\n const rgb = this.hslToRgb(color.hue, color.sat, color.bri)\n return this.rgbToXY(...rgb)\n }\n\n console.debug('Could not determine color space')\n console.debug(color)\n }\n\n toHSL(color) {\n if (color.hue && color.sat && color.bri)\n return [color.hue, color.sat, color.bri]\n\n const rgb = this.getRGB(color)\n if (rgb)\n return this.rgbToHsl(...rgb)\n\n const xy = this.getXY(color)\n if (xy && color.bri) {\n const rgb = this.xyToRgb(...xy, color.bri)\n return this.rgbToHsl(...rgb)\n }\n\n console.debug('Could not determine color space')\n console.debug(color)\n }\n\n hexToRgb(hex) {\n return [\n hex.slice(1, 3),\n hex.slice(3, 5),\n hex.slice(5, 7),\n ].map(_ => parseInt(_, 16))\n }\n\n rgbToHex(rgb) {\n return '#' + rgb.map((x) => {\n let hex = x.toString(16)\n if (hex.length < 2)\n hex = '0' + hex\n return hex\n }).join('')\n }\n}\n","<template>\n <label class=\"slider-wrapper\">\n <span class=\"range-labels\" :class=\"{'with-label': withLabel}\" v-if=\"withRange\">\n <span class=\"label left\" v-if=\"withRange\" v-text=\"range[0]\" />\n <span class=\"label right\" v-if=\"withRange\" v-text=\"range[1]\" />\n </span>\n\n <span class=\"slider-container\">\n <input class=\"slider\"\n type=\"range\"\n :class=\"{'with-label': withLabel}\"\n :min=\"range[0]\"\n :max=\"range[1]\"\n :step=\"step\"\n :disabled=\"disabled\"\n :value=\"value\"\n ref=\"range\"\n @input.stop=\"$emit('input', $event)\"\n @change.stop=\"$emit('change', $event)\">\n\n <span class=\"label\" v-if=\"withLabel\" v-text=\"value\" ref=\"label\"></span>\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n emits: ['input', 'change'],\n props: {\n value: {\n type: Number,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n range: {\n type: Array,\n default: () => [0, 100],\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n withLabel: {\n type: Boolean,\n default: false,\n },\n\n withRange: {\n type: Boolean,\n default: false,\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$label-width: 3em;\n$thumb-height: 1em;\n$slider-height: 0.5em;\n\n.slider-wrapper {\n width: 100%;\n display: flex;\n position: relative;\n flex-direction: column;\n\n .slider-container {\n width: 100%;\n display: flex;\n position: relative;\n }\n\n input.slider {\n width: 100%;\n background: none;\n height: 1.5em;\n position: relative;\n border-radius: 0.5em;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n transition: all ease 100ms;\n @include appearance(none);\n\n &:active {\n filter: brightness(80%);\n cursor: grabbing;\n }\n\n &:hover {\n filter: saturate(130%);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n filter: grayscale(1);\n }\n\n /* Chrome and friends */\n &::-webkit-slider-runnable-track {\n position: relative;\n border-radius: $slider-height;\n background: linear-gradient($slider-bg 0 0) scroll no-repeat center /\n 100% calc(#{$slider-height} + 1px);\n }\n\n &::-webkit-slider-runnable-track,\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n transition: all ease 100ms;\n height: $thumb-height;\n }\n\n &::-webkit-slider-thumb {\n --clip-top: calc((#{$thumb-height} - #{$slider-height}) * 0.5);\n --clip-bottom: calc(#{$thumb-height} - var(--clip-top));\n --clip-further: calc(100% + 1px);\n\n width: $thumb-height;\n background: $slider-progress-bg;\n box-shadow: calc(-100vmax - #{$thumb-height} + 2.5px) #{$slider-height} #{$slider-height} 100vmax #{$slider-progress-bg};\n border-radius: $thumb-height;\n cursor: grab;\n\n &:hover {\n filter: brightness(130%) blur(1px);\n cursor: grab;\n }\n\n clip-path: polygon(\n 100% -1px,\n #{$slider-height} -1px,\n 0 var(--clip-top),\n -100vmax var(--clip-top),\n -100vmax var(--clip-bottom),\n 0 var(--clip-bottom),\n #{$slider-height} 100%,\n var(--clip-further) var(--clip-further)\n );\n }\n\n /* Firefox */\n &::-moz-range-track {\n background: $slider-bg;\n position: relative;\n height: $slider-height;\n border-radius: 0.5em;\n box-shadow: inset 1px 0px 3px 0 $slider-track-shadow;\n }\n\n &::-moz-range-thumb {\n $thumb-height: 1.125em;\n width: $thumb-height;\n height: $thumb-height;\n position: relative;\n background: $slider-thumb-bg;\n border-radius: 50%;\n border: none;\n cursor: grabbing;\n transition: all ease 100ms;\n @include appearance(none);\n\n &:hover {\n filter: brightness(130%) blur(1px);\n cursor: grab;\n }\n\n &:disabled {\n background: $slider-thumb-disabled-bg;\n cursor: not-allowed;\n }\n }\n\n &::-moz-range-progress {\n width: 100%;\n height: $slider-height;\n cursor: pointer;\n background: $slider-progress-bg;\n border-radius: 0.5em 0 0 0.5em;\n }\n }\n\n .range-labels {\n width: 100%;\n display: flex;\n\n .left {\n text-align: left;\n }\n\n .right {\n @extend .pull-right;\n flex-grow: 1;\n }\n }\n\n .label {\n width: $label-width;\n position: relative;\n font-weight: normal;\n text-align: center;\n }\n\n .with-label {\n width: calc(100% - $label-width);\n }\n}\n</style>\n","import { render } from \"./Slider.vue?vue&type=template&id=d90e850c&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=d90e850c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d90e850c\"]])\n\nexport default __exports__","<template>\n <div class=\"power-switch\" :class=\"{disabled: disabled}\" @click.stop=\"onInput\">\n <!--suppress HtmlFormInputWithoutLabel -->\n <input type=\"checkbox\" :checked=\"value\" :id=\"id\">\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 id: {\n type: String,\n },\n\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 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: inline-flex;\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: $slider-bg;\n box-shadow: inset 1px 0px 3px 0 $slider-track-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: $slider-progress-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: 1px 0px 3.5px 0 $slider-thumb-shadow;\n left: -0.25em;\n top: -0.05em;\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 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: $slider-bg;\n transform: translateY(0.2em);\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(0.6em);\n }\n }\n }\n\n &:checked {\n & + label {\n --offset: 1.5em;\n --text: $slider-progress-bg;\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=eff375b6&scoped=true\"\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=eff375b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eff375b6\"]])\n\nexport default __exports__","<template>\n <div class=\"entity light-container\">\n <div class=\"head\" :class=\"{collapsed: collapsed}\">\n <div class=\"icon\">\n <EntityIcon\n :entity=\"value\"\n :icon=\"icon\"\n :hasColorFill=\"true\"\n :loading=\"loading\"\n :error=\"error\" />\n </div>\n\n <div class=\"label\">\n <div class=\"name\" v-text=\"value.name\" />\n </div>\n\n <div class=\"value-container\">\n <ToggleSwitch :value=\"value.on\" @input=\"toggle\"\n @click.stop :disabled=\"loading || value.is_read_only\" />\n\n <button @click.stop=\"collapsed = !collapsed\">\n <i class=\"fas\"\n :class=\"{'fa-angle-up': !collapsed, 'fa-angle-down': collapsed}\" />\n </button>\n </div>\n </div>\n\n <div class=\"body\" v-if=\"!collapsed\" @click.stop=\"prevent\">\n <div class=\"row\" v-if=\"cssColor\">\n <div class=\"icon\">\n <i class=\"fas fa-palette\" />\n </div>\n <div class=\"input\">\n <input type=\"color\" :value=\"cssColor\" @change=\"setLight({color: $event.target.value})\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"value.brightness\">\n <div class=\"icon\">\n <i class=\"fas fa-sun\" />\n </div>\n <div class=\"input\">\n <Slider :range=\"[value.brightness_min, value.brightness_max]\"\n :value=\"value.brightness\" @change=\"setLight({brightness: $event.target.value})\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"value.saturation\">\n <div class=\"icon\">\n <i class=\"fas fa-droplet\" />\n </div>\n <div class=\"input\">\n <Slider :range=\"[value.saturation_min, value.saturation_max]\"\n :value=\"value.saturation\" @change=\"setLight({saturation: $event.target.value})\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"value.temperature\">\n <div class=\"icon\">\n <i class=\"fas fa-temperature-half\" />\n </div>\n <div class=\"input\">\n <Slider :range=\"[value.temperature_min, value.temperature_max]\"\n :value=\"value.temperature\" @change=\"setLight({temperature: $event.target.value})\"/>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Slider from \"@/components/elements/Slider\"\nimport ToggleSwitch from \"@/components/elements/ToggleSwitch\"\nimport EntityMixin from \"./EntityMixin\"\nimport EntityIcon from \"./EntityIcon\"\nimport {ColorConverter} from \"@/components/panels/Light/color\";\n\nexport default {\n name: 'Light',\n components: {ToggleSwitch, Slider, EntityIcon},\n mixins: [EntityMixin],\n\n data() {\n return {\n colorConverter: null,\n }\n },\n\n computed: {\n rgbColor() {\n if (this.value.meta?.icon?.color)\n return this.value.meta.icon.color\n\n if (this.value.red && this.value.green && this.value.blue)\n return ['red', 'green', 'blue'].map((c) => this.value[c])\n\n if (!this.colorConverter)\n return\n\n if (\n this.value.hue == null &&\n (this.value.x == null || this.value.y == null)\n )\n return\n\n if (this.value.x && this.value.y)\n return this.colorConverter.xyToRgb(\n this.value.x,\n this.value.y,\n this.value.brightness\n )\n\n return this.colorConverter.hslToRgb(\n this.value.hue,\n this.value.saturation,\n this.value.brightness\n )\n },\n\n cssColor() {\n const rgb = this.rgbColor\n if (rgb)\n return this.colorConverter.rgbToHex(rgb)\n return null\n },\n\n icon() {\n const icon = {...(this.value.meta?.icon || {})}\n if (!icon.color && this.cssColor)\n icon.color = this.cssColor\n return icon\n },\n },\n\n methods: {\n prevent(event) {\n event.stopPropagation()\n return false\n },\n\n async toggle(event) {\n event.stopPropagation()\n this.$emit('loading', true)\n\n try {\n await this.request('entities.execute', {\n id: this.value.id,\n action: 'toggle',\n })\n } finally {\n this.$emit('loading', false)\n }\n },\n\n async setLight(attrs) {\n if (attrs.color) {\n const rgb = this.colorConverter.hexToRgb(attrs.color)\n if (this.value.x != null && this.value.y != null) {\n attrs.xy = this.colorConverter.rgbToXY(...rgb)\n } else if (this.value.hue != null) {\n [attrs.hue, attrs.saturation, attrs.brightness] = this.colorConverter.rgbToHsl(...rgb)\n } else if (\n this.value.red != null && this.value.green != null && this.value.blue != null\n ) {\n [attrs.red, attrs.green, attrs.blue] = [rgb.red, rgb.green, rgb.blue]\n } else {\n console.warn('Unrecognized color format')\n console.warn(attrs.color)\n }\n\n delete attrs.color\n }\n\n this.execute({\n type: 'request',\n action: this.value.plugin + '.set_lights',\n args: {\n lights: [this.value.external_id],\n ...attrs,\n }\n })\n },\n },\n\n mounted() {\n const ranges = {}\n if (this.value.hue)\n ranges.hue = [this.value.hue_min, this.value.hue_max]\n if (this.value.saturation)\n ranges.sat = [this.value.saturation_min, this.value.saturation_max]\n if (this.value.brightness)\n ranges.bri = [this.value.brightness_min, this.value.brightness_max]\n if (this.value.temperature)\n ranges.ct = [this.value.temperature_min, this.value.temperature_max]\n\n this.colorConverter = new ColorConverter(ranges)\n },\n\n unmounted() {\n if (this.colorConverter)\n delete this.colorConverter\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"common\";\n\n.light-container {\n .head {\n .value-container {\n button {\n margin-right: 0.5em;\n }\n }\n }\n\n .body {\n .row {\n display: flex;\n align-items: center;\n padding: 0.5em;\n\n .icon {\n width: 2em;\n margin-left: -0.5em;\n text-align: center;\n }\n\n .input {\n width: calc(100% - 2em);\n\n [type=color] {\n width: 100%;\n }\n\n :deep(.slider) {\n margin-top: 0.5em;\n }\n }\n }\n }\n}\n</style>\n","import { render } from \"./Light.vue?vue&type=template&id=6d7f09ba&scoped=true\"\nimport script from \"./Light.vue?vue&type=script&lang=js\"\nexport * from \"./Light.vue?vue&type=script&lang=js\"\n\nimport \"./Light.vue?vue&type=style&index=0&id=6d7f09ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d7f09ba\"]])\n\nexport default __exports__"],"names":["ColorConverter","constructor","ranges","this","hue","sat","bri","ct","attr","Object","keys","normalize","x","xRange","yRange","hslToRgb","h","s","l","a","Math","min","f","n","k","color","max","round","rgbToHsl","r","g","b","d","parseInt","xyToRgb","y","brightness","z","Y","toFixed","X","Z","red","green","blue","pow","isNaN","map","c","rgbToXY","parseFloat","rgbToBri","getRGB","rgb","getXY","xy","toRGB","console","debug","toXY","toHSL","hexToRgb","hex","slice","_","rgbToHex","toString","length","join","class","_createElementBlock","_hoisted_1","$props","withRange","_normalizeClass","withLabel","_toDisplayString","range","_createElementVNode","_hoisted_4","type","step","disabled","value","ref","onInput","_cache","_withModifiers","$event","_ctx","$emit","onChange","emits","props","Number","Boolean","default","Array","__exports__","render","onClick","args","$options","checked","id","_hoisted_2","_hoisted_3","_renderSlot","$slots","undefined","name","String","methods","event","collapsed","_createVNode","_component_EntityIcon","entity","icon","hasColorFill","loading","error","_hoisted_5","_component_ToggleSwitch","on","toggle","is_read_only","prevent","cssColor","_hoisted_6","_hoisted_7","_hoisted_8","setLight","target","_hoisted_10","_hoisted_11","_hoisted_12","_component_Slider","brightness_min","brightness_max","saturation","_hoisted_13","_hoisted_14","_hoisted_15","saturation_min","saturation_max","temperature","_hoisted_16","_hoisted_17","_hoisted_18","temperature_min","temperature_max","components","ToggleSwitch","Slider","EntityIcon","mixins","EntityMixin","data","colorConverter","computed","rgbColor","meta","stopPropagation","request","action","attrs","warn","execute","plugin","lights","external_id","mounted","hue_min","hue_max","unmounted"],"sourceRoot":""}