{"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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"}