UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.42 kB
{"version":3,"file":"color.mjs","sources":["../../../../../../../packages/components/color-picker-panel/src/utils/color.ts"],"sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport { hasOwn } from '@element-plus/utils'\n\nimport type { ColorFormats } from '@ctrl/tinycolor'\n\ninterface ColorOptions {\n enableAlpha: boolean\n format: string\n value?: string | null\n}\n\nexport default class Color {\n private _hue = 0\n private _saturation = 100\n private _value = 100\n private _alpha = 100\n private _tiny = new TinyColor()\n private _isValid = false\n public enableAlpha = false\n public format = ''\n public value = ''\n public selected?: boolean\n\n constructor(options: Partial<ColorOptions> = {}) {\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option]\n }\n }\n if (options.value) {\n this.fromString(options.value)\n } else {\n this.doOnChange()\n }\n }\n\n set(prop: { [key: string]: any } | any, value?: number) {\n if (arguments.length === 1 && typeof prop === 'object') {\n for (const p in prop) {\n if (hasOwn(prop, p)) {\n this.set(p, prop[p])\n }\n }\n\n return\n }\n ;(this as any)[`_${prop}`] = value\n this._isValid = true\n this.doOnChange()\n }\n\n get(prop: string) {\n if (['hue', 'saturation', 'value', 'alpha'].includes(prop)) {\n return Math.round((this as any)[`_${prop}`])\n }\n return (this as any)[`_${prop}`]\n }\n\n toRgb() {\n return this._isValid ? this._tiny.toRgb() : { r: 255, g: 255, b: 255, a: 0 }\n }\n\n fromString(value: string) {\n const color = new TinyColor(value)\n this._isValid = color.isValid\n if (color.isValid) {\n const { h, s, v, a } = color.toHsv()\n this._hue = h\n this._saturation = s * 100\n this._value = v * 100\n this._alpha = a * 100\n } else {\n this._hue = 0\n this._saturation = 100\n this._value = 100\n this._alpha = 100\n }\n this.doOnChange()\n }\n\n clear() {\n this._isValid = false\n this.value = ''\n this._hue = 0\n this._saturation = 100\n this._value = 100\n this._alpha = 100\n }\n\n compare(color: this) {\n const compareColor = new TinyColor({\n h: color._hue,\n s: color._saturation / 100,\n v: color._value / 100,\n a: color._alpha / 100,\n })\n return this._tiny.equals(compareColor)\n }\n\n doOnChange() {\n const { _hue, _saturation, _value, _alpha, format, enableAlpha } = this\n let _format = format || (enableAlpha ? 'rgb' : 'hex')\n if (format === 'hex' && enableAlpha) {\n _format = 'hex8'\n }\n this._tiny = new TinyColor({\n h: _hue,\n s: _saturation / 100,\n v: _value / 100,\n a: _alpha / 100,\n })\n this.value = this._isValid\n ? this._tiny.toString(_format as ColorFormats)\n : ''\n }\n}\n"],"names":[],"mappings":"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"}