{"version":3,"sources":["webpack:///../../../src/components/VSlider/VSlider.ts","webpack:///../../../../src/components/VColorPicker/util/index.ts","webpack:///../../../src/components/VColorPicker/VColorPickerPreview.ts","webpack:///../../../src/components/VColorPicker/VColorPickerCanvas.ts","webpack:///../../../src/components/VColorPicker/VColorPickerEdit.ts","webpack:///../../src/util/colors.ts","webpack:///../../../src/components/VColorPicker/VColorPickerSwatches.ts","webpack:///../../../src/components/VColorPicker/VColorPicker.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/mixins/selectable/index.ts"],"names":["mixins","VInput","Loadable","extend","name","directives","ClickOutside","props","disabled","Boolean","inverseLabel","max","type","Number","String","default","min","step","thumbColor","thumbLabel","undefined","validator","v","thumbSize","tickLabels","Array","ticks","tickSize","trackColor","trackFillColor","value","vertical","data","app","oldValue","thumbPressed","mouseTimeout","isFocused","isActive","noClick","startOffset","computed","classes","_objectSpread","options","call","this","internalValue","get","lazyValue","set","val","isNaN","minValue","roundValue","Math","maxValue","$emit","trackTransition","showTicks","stepNumeric","parseFloat","inputWidth","trackFillStyles","startDir","endDir","valueDir","start","$vuetify","rtl","end","isDisabled","concat","_defineProperty","transition","trackStyles","length","numTicks","ceil","showThumbLabel","$scopedSlots","computedTrackColor","isDark","validationState","computedTrackFillColor","computedColor","computedThumbColor","watch","parsed","handler","immediate","mounted","document","querySelector","consoleWarn","methods","genDefaultSlot","children","genLabel","slider","genSlider","unshift","push","genProgress","$createElement","class","isReadonly","themeClasses","onBlur","on","click","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","attrs","id","computedId","readonly","tabindex","$attrs","setBackgroundColor","staticClass","style","ref","_this","range","createRange","direction","offsetDirection","reverse","map","index","width","filled","key","height","valueWidth","arguments","genThumb","thumbLabelContent","genThumbLabelContent","genThumbLabel","setTextColor","getThumbContainerStyles","role","label","focus","blur","keydown","onKeyDown","content","size","convertToUnit","transform","VScaleTransition","origin","e","_this2","preventDefault","_a","target","matches","domRect","getBoundingClientRect","touch","touches","clientY","top","clientX","left","window","clearTimeout","setTimeout","mouseUpOptions","passiveSupported","passive","capture","mouseMoveOptions","isTouchEvent","onMouseMove","addEventListener","addOnceEventListener","onSliderMouseUp","stopPropagation","removeEventListener","deepEqual","parseMouseMove","isInteractive","parseKeyDown","thumb","$refs","_this$$refs$track$get","track","trackStart","trackLength","clickOffset","clickPos","pageup","keyCodes","pagedown","home","right","down","up","includes","keyCode","steps","increase","multiplier","shiftKey","ctrlKey","trimmedStep","toString","trim","decimals","indexOf","offset","newValue","round","toFixed","fromHSVA","hsva","hexa","HSVAtoHex","hsla","HSVAtoHSLA","rgba","HSVAtoRGBA","alpha","a","hex","substr","hue","h","fromHSLA","HSLAtoHSVA","fromRGBA","RGBAtoHSVA","RGBAtoHex","fromHexa","HexToHSVA","fromHex","parseHex","has","obj","every","k","hasOwnProperty","parseColor","color","oldColor","r","g","b","_typeof","stripAlpha","rest","_objectWithoutProperties","_excluded","extractColor","input","shouldStrip","hasAlpha","Vue","Object","hideAlpha","genAlpha","genTrack","hideDetails","backgroundImage","RGBtoCSS","genSliders","genHue","genDot","background","RGBAtoCSS","VSlider","render","dotSize","boundingRect","dot","x","s","parseInt","y","updateCanvas","emitColor","_this$boundingRect","clamp","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","handleClick","$el","handleMouseDown","handleMouseMove","handleMouseUp","genCanvas","radius","modes","inputs","from","hideModeSwitch","mode","keys","internalMode","currentMode","created","getValue","parseValue","changeMode","newMode","domProps","toUpperCase","genInputs","endsWith","maxlength","change","el","slice","_ref","_ref2","_slicedToArray","newVal","assign","genSwitch","VBtn","small","icon","VIcon","red","freeze","base","lighten5","lighten4","lighten3","lighten2","lighten1","darken1","darken2","darken3","darken4","accent1","accent2","accent3","accent4","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","grey","shades","black","white","transparent","parseDefaultColors","colors","Themeable","swatches","maxWidth","maxHeight","genColor","dark","contrastRatio","light","genSwatches","swatch","Elevatable","canvasHeight","flat","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","updateColor","VColorPickerCanvas","genControls","genPreview","genEdit","VColorPickerEdit","VColorPickerPreview","VColorPickerSwatches","VSheet","elevationClasses","Selectable","Touch","inset","loading","hasError","shouldValidate","hasSuccess","hasColor","switchData","_this$attrs$","attrs$","switchAttrs","title","genRipple","onSwipeLeft","onSwipeRight","VFabTransition","getSlot","VProgressCircular","indeterminate","onChange","onKeydown","ripple","center","prevent","Rippleable","Comparable","model","prop","event","inputValue","falseValue","trueValue","multiple","appIsDark","isMultiple","isArray","some","item","valueComparator","isDirty","rippleState","checked","onClick","filter","validate"],"mappings":"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","file":"js/chunk-77edd350.fea00d52.js","sourcesContent":["import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n immediate: true,\n },\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","// Utilities\nimport {\n HSVA,\n HSVAtoRGBA,\n HSVAtoHex,\n RGBA,\n Hex,\n RGBAtoHSVA,\n HexToHSVA,\n HSLA,\n HSVAtoHSLA,\n RGBAtoHex,\n HSLAtoHSVA,\n parseHex,\n Hexa,\n} from '../../../util/colorUtils'\n\nexport interface VColorPickerColor {\n alpha: number\n hex: Hex\n hexa: Hexa\n hsla: HSLA\n hsva: HSVA\n hue: number\n rgba: RGBA\n}\n\nexport function fromHSVA (hsva: HSVA): VColorPickerColor {\n hsva = { ...hsva }\n const hexa = HSVAtoHex(hsva)\n const hsla = HSVAtoHSLA(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHSLA (hsla: HSLA): VColorPickerColor {\n const hsva = HSLAtoHSVA(hsla)\n const hexa = HSVAtoHex(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromRGBA (rgba: RGBA): VColorPickerColor {\n const hsva = RGBAtoHSVA(rgba)\n const hexa = RGBAtoHex(rgba)\n const hsla = HSVAtoHSLA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHexa (hexa: Hexa): VColorPickerColor {\n const hsva = HexToHSVA(hexa)\n const hsla = HSVAtoHSLA(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHex (hex: Hex): VColorPickerColor {\n return fromHexa(parseHex(hex))\n}\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any, oldColor: VColorPickerColor | null) {\n if (!color) return fromRGBA({ r: 255, g: 0, b: 0, a: 1 })\n\n if (typeof color === 'string') {\n if (color === 'transparent') return fromHexa('#00000000')\n\n const hex = parseHex(color)\n\n if (oldColor && hex === oldColor.hexa) return oldColor\n else return fromHexa(hex)\n }\n\n if (typeof color === 'object') {\n if (color.hasOwnProperty('alpha')) return color\n\n const a = color.hasOwnProperty('a') ? parseFloat(color.a) : 1\n\n if (has(color, ['r', 'g', 'b'])) {\n if (oldColor && color === oldColor.rgba) return oldColor\n else return fromRGBA({ ...color, a })\n } else if (has(color, ['h', 's', 'l'])) {\n if (oldColor && color === oldColor.hsla) return oldColor\n else return fromHSLA({ ...color, a })\n } else if (has(color, ['h', 's', 'v'])) {\n if (oldColor && color === oldColor.hsva) return oldColor\n else return fromHSVA({ ...color, a })\n }\n }\n\n return fromRGBA({ r: 255, g: 0, b: 0, a: 1 })\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: VColorPickerColor, input: any) {\n if (input == null) return color\n\n if (typeof input === 'string') {\n return input.length === 7 ? color.hex : color.hexa\n }\n\n if (typeof input === 'object') {\n const shouldStrip = typeof input.a === 'number' && input.a === 0 ? !!input.a : !input.a\n if (has(input, ['r', 'g', 'b'])) return stripAlpha(color.rgba, shouldStrip)\n else if (has(input, ['h', 's', 'l'])) return stripAlpha(color.hsla, shouldStrip)\n else if (has(input, ['h', 's', 'v'])) return stripAlpha(color.hsva, shouldStrip)\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n","// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport VSlider from '../VSlider/VSlider'\n\n// Utilities\nimport { RGBtoCSS, RGBAtoCSS } from '../../util/colorUtils'\n\n// Types\nimport Vue, { VNode, VNodeData, PropType } from 'vue'\nimport { VColorPickerColor, fromHSVA } from './util'\n\nexport default Vue.extend({\n name: 'v-color-picker-preview',\n\n props: {\n color: Object as PropType,\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n methods: {\n genAlpha (): VNode {\n return this.genTrack({\n staticClass: 'v-color-picker__alpha',\n props: {\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n value: this.color.alpha,\n step: 0,\n min: 0,\n max: 1,\n },\n style: {\n backgroundImage: this.disabled\n ? undefined\n : `linear-gradient(to ${this.$vuetify.rtl ? 'left' : 'right'}, transparent, ${RGBtoCSS(this.color.rgba)})`,\n },\n on: {\n input: (val: number) => this.color.alpha !== val && this.$emit('update:color', fromHSVA({ ...this.color.hsva, a: val })),\n },\n })\n },\n genSliders (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__sliders',\n }, [\n this.genHue(),\n !this.hideAlpha && this.genAlpha(),\n ])\n },\n genDot (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__dot',\n }, [\n this.$createElement('div', {\n style: {\n background: RGBAtoCSS(this.color.rgba),\n },\n }),\n ])\n },\n genHue (): VNode {\n return this.genTrack({\n staticClass: 'v-color-picker__hue',\n props: {\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n value: this.color.hue,\n step: 0,\n min: 0,\n max: 360,\n },\n on: {\n input: (val: number) => this.color.hue !== val && this.$emit('update:color', fromHSVA({ ...this.color.hsva, h: val })),\n },\n })\n },\n genTrack (options: VNodeData): VNode {\n return this.$createElement(VSlider, {\n class: 'v-color-picker__track',\n ...options,\n props: {\n disabled: this.disabled,\n ...options.props,\n },\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__preview',\n class: {\n 'v-color-picker__preview--hide-alpha': this.hideAlpha,\n },\n }, [\n this.genDot(),\n this.genSliders(),\n ])\n },\n})\n","// Styles\nimport './VColorPickerCanvas.sass'\n\n// Helpers\nimport { clamp, convertToUnit } from '../../util/helpers'\nimport { fromHSVA, VColorPickerColor, fromRGBA } from './util'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\n\nexport default Vue.extend({\n name: 'v-color-picker-canvas',\n\n props: {\n color: {\n type: Object as PropType,\n default: () => fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data () {\n return {\n boundingRect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n } as ClientRect,\n }\n },\n\n computed: {\n dot (): { x: number, y: number} {\n if (!this.color) return { x: 0, y: 0 }\n\n return {\n x: this.color.hsva.s * parseInt(this.width, 10),\n y: (1 - this.color.hsva.v) * parseInt(this.height, 10),\n }\n },\n },\n\n watch: {\n 'color.hue': 'updateCanvas',\n },\n\n mounted () {\n this.updateCanvas()\n },\n\n methods: {\n emitColor (x: number, y: number) {\n const { left, top, width, height } = this.boundingRect\n\n this.$emit('update:color', fromHSVA({\n h: this.color.hue,\n s: clamp(x - left, 0, width) / width,\n v: 1 - clamp(y - top, 0, height) / height,\n a: this.color.alpha,\n }))\n },\n updateCanvas () {\n if (!this.color) return\n\n const canvas = this.$refs.canvas as HTMLCanvasElement\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${this.color.hue}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n },\n handleClick (e: MouseEvent) {\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseDown (e: MouseEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n\n window.addEventListener('mousemove', this.handleMouseMove)\n window.addEventListener('mouseup', this.handleMouseUp)\n },\n handleMouseMove (e: MouseEvent) {\n if (this.disabled) return\n\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseUp () {\n window.removeEventListener('mousemove', this.handleMouseMove)\n window.removeEventListener('mouseup', this.handleMouseUp)\n },\n genCanvas (): VNode {\n return this.$createElement('canvas', {\n ref: 'canvas',\n attrs: {\n width: this.width,\n height: this.height,\n },\n })\n },\n genDot (): VNode {\n const radius = parseInt(this.dotSize, 10) / 2\n const x = convertToUnit(this.dot.x - radius)\n const y = convertToUnit(this.dot.y - radius)\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__canvas-dot',\n class: {\n 'v-color-picker__canvas-dot--disabled': this.disabled,\n },\n style: {\n width: convertToUnit(this.dotSize),\n height: convertToUnit(this.dotSize),\n transform: `translate(${x}, ${y})`,\n },\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__canvas',\n style: {\n width: convertToUnit(this.width),\n height: convertToUnit(this.height),\n },\n on: {\n click: this.handleClick,\n mousedown: this.handleMouseDown,\n },\n }, [\n this.genCanvas(),\n this.genDot(),\n ])\n },\n})\n","// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Helpers\nimport { parseHex } from '../../util/colorUtils'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { VColorPickerColor, fromRGBA, fromHexa, fromHSLA } from './util'\n\ntype Input = [string, number, string]\n\nexport type Mode = {\n inputs?: Input[]\n from: Function\n}\n\nexport const modes = {\n rgba: {\n inputs: [\n ['r', 255, 'int'],\n ['g', 255, 'int'],\n ['b', 255, 'int'],\n ['a', 1, 'float'],\n ],\n from: fromRGBA,\n },\n hsla: {\n inputs: [\n ['h', 360, 'int'],\n ['s', 1, 'float'],\n ['l', 1, 'float'],\n ['a', 1, 'float'],\n ],\n from: fromHSLA,\n },\n hexa: {\n from: fromHexa,\n },\n} as { [key: string]: Mode }\n\nexport default Vue.extend({\n name: 'v-color-picker-edit',\n\n props: {\n color: Object as PropType,\n disabled: Boolean,\n hideAlpha: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n },\n\n data () {\n return {\n modes,\n internalMode: this.mode,\n }\n },\n\n computed: {\n currentMode (): Mode {\n return this.modes[this.internalMode]\n },\n },\n\n watch: {\n mode (mode) {\n this.internalMode = mode\n },\n },\n\n created () {\n this.internalMode = this.mode\n },\n\n methods: {\n getValue (v: any, type: string) {\n if (type === 'float') return Math.round(v * 100) / 100\n else if (type === 'int') return Math.round(v)\n else return 0\n },\n parseValue (v: string, type: string) {\n if (type === 'float') return parseFloat(v)\n else if (type === 'int') return parseInt(v, 10) || 0\n else return 0\n },\n changeMode () {\n const modes = Object.keys(this.modes)\n const index = modes.indexOf(this.internalMode)\n const newMode = modes[(index + 1) % modes.length]\n this.internalMode = newMode\n this.$emit('update:mode', newMode)\n },\n genInput (target: string, attrs: any, value: any, on: any): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__input',\n }, [\n this.$createElement('input', {\n key: target,\n attrs,\n domProps: {\n value,\n },\n on,\n }),\n this.$createElement('span', target.toUpperCase()),\n ])\n },\n genInputs (): VNode[] | VNode {\n if (this.internalMode === 'hexa') {\n const hex = this.color.hexa\n const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex\n return this.genInput(\n 'hex',\n {\n maxlength: this.hideAlpha ? 7 : 9,\n disabled: this.disabled,\n },\n value,\n {\n change: (e: Event) => {\n const el = e.target as HTMLInputElement\n this.$emit('update:color', this.currentMode.from(parseHex(el.value)))\n },\n }\n )\n } else {\n const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!\n return inputs.map(([target, max, type]) => {\n const value = this.color[this.internalMode as keyof VColorPickerColor] as any\n return this.genInput(\n target,\n {\n type: 'number',\n min: 0,\n max,\n step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n disabled: this.disabled,\n },\n this.getValue(value[target], type),\n {\n input: (e: Event) => {\n const el = e.target as HTMLInputElement\n const newVal = this.parseValue(el.value || '0', type)\n\n this.$emit('update:color', this.currentMode.from(\n Object.assign({}, value, { [target]: newVal }),\n this.color.alpha\n ))\n },\n }\n )\n })\n }\n },\n genSwitch (): VNode {\n return this.$createElement(VBtn, {\n props: {\n small: true,\n icon: true,\n disabled: this.disabled,\n },\n on: {\n click: this.changeMode,\n },\n }, [\n this.$createElement(VIcon, '$unfold'),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__edit',\n }, [\n this.genInputs(),\n !this.hideModeSwitch && this.genSwitch(),\n ])\n },\n})\n","const red = Object.freeze({\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000',\n})\n\nconst pink = Object.freeze({\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162',\n})\n\nconst purple = Object.freeze({\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff',\n})\n\nconst deepPurple = Object.freeze({\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea',\n})\n\nconst indigo = Object.freeze({\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe',\n})\n\nconst blue = Object.freeze({\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff',\n})\n\nconst lightBlue = Object.freeze({\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea',\n})\n\nconst cyan = Object.freeze({\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4',\n})\n\nconst teal = Object.freeze({\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5',\n})\n\nconst green = Object.freeze({\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853',\n})\n\nconst lightGreen = Object.freeze({\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17',\n})\n\nconst lime = Object.freeze({\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00',\n})\n\nconst yellow = Object.freeze({\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600',\n})\n\nconst amber = Object.freeze({\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00',\n})\n\nconst orange = Object.freeze({\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00',\n})\n\nconst deepOrange = Object.freeze({\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00',\n})\n\nconst brown = Object.freeze({\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723',\n})\n\nconst blueGrey = Object.freeze({\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238',\n})\n\nconst grey = Object.freeze({\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121',\n})\n\nconst shades = Object.freeze({\n black: '#000000',\n white: '#ffffff',\n transparent: 'transparent',\n})\n\nexport default Object.freeze({\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades,\n})\n","// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Helpers\nimport colors from '../../util/colors'\nimport { VColorPickerColor, fromHex, parseColor } from './util'\nimport { convertToUnit, deepEqual } from '../../util/helpers'\nimport mixins from '../../util/mixins'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { contrastRatio } from '../../util/colorUtils'\n\nfunction parseDefaultColors (colors: Record>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nconst white = fromHex('#FFFFFF').rgba\nconst black = fromHex('#000000').rgba\n\nexport default mixins(Themeable).extend({\n name: 'v-color-picker-swatches',\n\n props: {\n swatches: {\n type: Array as PropType,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType,\n maxWidth: [Number, String],\n maxHeight: [Number, String],\n },\n\n methods: {\n genColor (color: string) {\n const content = this.$createElement('div', {\n style: {\n background: color,\n },\n }, [\n deepEqual(this.color, parseColor(color, null)) && this.$createElement(VIcon, {\n props: {\n small: true,\n dark: contrastRatio(this.color.rgba, white) > 2 && this.color.alpha > 0.5,\n light: contrastRatio(this.color.rgba, black) > 2 && this.color.alpha > 0.5,\n },\n }, '$success'),\n ])\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__color',\n on: {\n // TODO: Less hacky way of catching transparent\n click: () => this.disabled || this.$emit('update:color', fromHex(color === 'transparent' ? '#00000000' : color)),\n },\n }, [content])\n },\n genSwatches () {\n return this.swatches.map(swatch => {\n const colors = swatch.map(this.genColor)\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__swatch',\n }, colors)\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__swatches',\n style: {\n maxWidth: convertToUnit(this.maxWidth),\n maxHeight: convertToUnit(this.maxHeight),\n },\n }, [\n this.$createElement('div', this.genSwatches()),\n ])\n },\n})\n","// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\nimport VColorPickerPreview from './VColorPickerPreview'\nimport VColorPickerCanvas from './VColorPickerCanvas'\nimport VColorPickerEdit, { Mode, modes } from './VColorPickerEdit'\nimport VColorPickerSwatches from './VColorPickerSwatches'\n\n// Helpers\nimport { VColorPickerColor, parseColor, fromRGBA, extractColor, hasAlpha } from './util'\nimport mixins from '../../util/mixins'\nimport { deepEqual } from '../../util/helpers'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\nexport default mixins(Elevatable, Themeable).extend({\n name: 'v-color-picker',\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n flat: Boolean,\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n showSwatches: Boolean,\n swatches: Array as PropType,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n value: {\n type: [Object, String],\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data: () => ({\n internalValue: fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n }),\n\n computed: {\n hideAlpha (): boolean {\n if (!this.value) return false\n\n return !hasAlpha(this.value)\n },\n },\n\n watch: {\n value: {\n handler (color: any) {\n this.updateColor(parseColor(color, this.internalValue))\n },\n immediate: true,\n },\n },\n\n methods: {\n updateColor (color: VColorPickerColor) {\n this.internalValue = color\n const value = extractColor(this.internalValue, this.value)\n\n if (!deepEqual(value, this.value)) {\n this.$emit('input', value)\n this.$emit('update:color', this.internalValue)\n }\n },\n genCanvas (): VNode {\n return this.$createElement(VColorPickerCanvas, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n dotSize: this.dotSize,\n width: this.width,\n height: this.canvasHeight,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n genControls (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__controls',\n }, [\n !this.hideSliders && this.genPreview(),\n !this.hideInputs && this.genEdit(),\n ])\n },\n genEdit (): VNode {\n return this.$createElement(VColorPickerEdit, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n hideModeSwitch: this.hideModeSwitch,\n mode: this.mode,\n },\n on: {\n 'update:color': this.updateColor,\n 'update:mode': (v: Mode) => this.$emit('update:mode', v),\n },\n })\n },\n genPreview (): VNode {\n return this.$createElement(VColorPickerPreview, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n genSwatches (): VNode {\n return this.$createElement(VColorPickerSwatches, {\n props: {\n dark: this.dark,\n light: this.light,\n disabled: this.disabled,\n swatches: this.swatches,\n color: this.internalValue,\n maxHeight: this.swatchesMaxHeight,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n },\n\n render (h): VNode {\n return h(VSheet, {\n staticClass: 'v-color-picker',\n class: {\n 'v-color-picker--flat': this.flat,\n ...this.themeClasses,\n ...this.elevationClasses,\n },\n props: {\n maxWidth: this.width,\n },\n }, [\n !this.hideCanvas && this.genCanvas(),\n (!this.hideSliders || !this.hideInputs) && this.genControls(),\n this.showSwatches && this.genSwatches(),\n ])\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { getSlot, keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : getSlot(this, 'progress') || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}