{"version":3,"file":"color.mjs","sources":["../../../../../../packages/components/color-picker/src/color.ts"],"sourcesContent":["import { hasOwn } from '@vue/shared'\n\nconst hsv2hsl = function (hue: number, sat: number, val: number) {\n  return [\n    hue,\n    (sat * val) / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0,\n    hue / 2,\n  ]\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nconst isOnePointZero = function (n: unknown) {\n  return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1\n}\n\nconst isPercentage = function (n: unknown) {\n  return typeof n === 'string' && n.indexOf('%') !== -1\n}\n\n// Take input from [0, n] and return it as [0, 1]\nconst bound01 = function (value: number | string, max: number | string) {\n  if (isOnePointZero(value)) value = '100%'\n\n  const processPercent = isPercentage(value)\n  value = Math.min(max as number, Math.max(0, parseFloat(`${value}`)))\n\n  // Automatically convert percentage into number\n  if (processPercent) {\n    value = parseInt(`${value * (max as number)}`, 10) / 100\n  }\n\n  // Handle floating point rounding errors\n  if (Math.abs(value - (max as number)) < 0.000001) {\n    return 1\n  }\n\n  // Convert into [0, 1] range if it isn't already\n  return (value % (max as number)) / parseFloat(max as string)\n}\n\nconst INT_HEX_MAP = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' }\n\nconst hexOne = function (value: number) {\n  value = Math.min(Math.round(value), 255)\n  const high = Math.floor(value / 16)\n  const low = value % 16\n  return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`\n}\n\nconst toHex = function ({ r, g, b }) {\n  if (isNaN(r) || isNaN(g) || isNaN(b)) return ''\n\n  return `#${hexOne(r)}${hexOne(g)}${hexOne(b)}`\n}\n\nconst HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 }\n\nconst parseHexChannel = function (hex: string) {\n  if (hex.length === 2) {\n    return (\n      (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 +\n      (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1])\n    )\n  }\n\n  return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]\n}\n\nconst hsl2hsv = function (hue: number, sat: number, light: number) {\n  sat = sat / 100\n  light = light / 100\n  let smin = sat\n  const lmin = Math.max(light, 0.01)\n  // let sv\n  // let v\n\n  light *= 2\n  sat *= light <= 1 ? light : 2 - light\n  smin *= lmin <= 1 ? lmin : 2 - lmin\n  const v = (light + sat) / 2\n  const sv =\n    light === 0 ? (2 * smin) / (lmin + smin) : (2 * sat) / (light + sat)\n\n  return {\n    h: hue,\n    s: sv * 100,\n    v: v * 100,\n  }\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nconst rgb2hsv = function (r, g, b) {\n  r = bound01(r, 255)\n  g = bound01(g, 255)\n  b = bound01(b, 255)\n\n  const max = Math.max(r, g, b)\n  const min = Math.min(r, g, b)\n  let h\n  const v = max\n\n  const d = max - min\n  const s = max === 0 ? 0 : d / max\n\n  if (max === min) {\n    h = 0 // achromatic\n  } else {\n    switch (max) {\n      case r: {\n        h = (g - b) / d + (g < b ? 6 : 0)\n        break\n      }\n      case g: {\n        h = (b - r) / d + 2\n        break\n      }\n      case b: {\n        h = (r - g) / d + 4\n        break\n      }\n    }\n    h /= 6\n  }\n\n  return { h: h * 360, s: s * 100, v: v * 100 }\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nconst hsv2rgb = function (h, s, v) {\n  h = bound01(h, 360) * 6\n  s = bound01(s, 100)\n  v = bound01(v, 100)\n\n  const i = Math.floor(h)\n  const f = h - i\n  const p = v * (1 - s)\n  const q = v * (1 - f * s)\n  const t = v * (1 - (1 - f) * s)\n  const mod = i % 6\n  const r = [v, q, p, p, t, v][mod]\n  const g = [t, v, v, q, p, p][mod]\n  const b = [p, p, t, v, v, q][mod]\n\n  return {\n    r: Math.round(r * 255),\n    g: Math.round(g * 255),\n    b: Math.round(b * 255),\n  }\n}\n\nexport interface Options {\n  enableAlpha: boolean\n  format: string\n  value?: string\n}\n\nexport default class Color {\n  private _hue = 0\n  private _saturation = 100\n  private _value = 100\n  private _alpha = 100\n  public enableAlpha = false\n  public format = 'hex'\n  public value = ''\n  public selected?: boolean\n  constructor(options?: Options) {\n    options = options || ({} as Options)\n\n    for (const option in options) {\n      if (hasOwn(options, option)) {\n        this[option] = options[option]\n      }\n    }\n\n    this.doOnChange()\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\n    this[`_${prop}`] = value\n    this.doOnChange()\n  }\n\n  get(prop: string) {\n    if (prop === 'alpha') {\n      return Math.floor(this[`_${prop}`])\n    }\n    return this[`_${prop}`]\n  }\n\n  toRgb() {\n    return hsv2rgb(this._hue, this._saturation, this._value)\n  }\n\n  fromString(value) {\n    if (!value) {\n      this._hue = 0\n      this._saturation = 100\n      this._value = 100\n\n      this.doOnChange()\n      return\n    }\n\n    const fromHSV = (h, s, v) => {\n      this._hue = Math.max(0, Math.min(360, h))\n      this._saturation = Math.max(0, Math.min(100, s))\n      this._value = Math.max(0, Math.min(100, v))\n\n      this.doOnChange()\n    }\n\n    if (value.indexOf('hsl') !== -1) {\n      const parts = value\n        .replace(/hsla|hsl|\\(|\\)/gm, '')\n        .split(/\\s|,/g)\n        .filter((val) => val !== '')\n        .map((val, index) => (index > 2 ? parseFloat(val) : parseInt(val, 10)))\n\n      if (parts.length === 4) {\n        this._alpha = parseFloat(parts[3]) * 100\n      } else if (parts.length === 3) {\n        this._alpha = 100\n      }\n      if (parts.length >= 3) {\n        const { h, s, v } = hsl2hsv(parts[0], parts[1], parts[2])\n        fromHSV(h, s, v)\n      }\n    } else if (value.indexOf('hsv') !== -1) {\n      const parts = value\n        .replace(/hsva|hsv|\\(|\\)/gm, '')\n        .split(/\\s|,/g)\n        .filter((val) => val !== '')\n        .map((val, index) => (index > 2 ? parseFloat(val) : parseInt(val, 10)))\n\n      if (parts.length === 4) {\n        this._alpha = parseFloat(parts[3]) * 100\n      } else if (parts.length === 3) {\n        this._alpha = 100\n      }\n      if (parts.length >= 3) {\n        fromHSV(parts[0], parts[1], parts[2])\n      }\n    } else if (value.indexOf('rgb') !== -1) {\n      const parts = value\n        .replace(/rgba|rgb|\\(|\\)/gm, '')\n        .split(/\\s|,/g)\n        .filter((val) => val !== '')\n        .map((val, index) => (index > 2 ? parseFloat(val) : parseInt(val, 10)))\n\n      if (parts.length === 4) {\n        this._alpha = parseFloat(parts[3]) * 100\n      } else if (parts.length === 3) {\n        this._alpha = 100\n      }\n      if (parts.length >= 3) {\n        const { h, s, v } = rgb2hsv(parts[0], parts[1], parts[2])\n        fromHSV(h, s, v)\n      }\n    } else if (value.indexOf('#') !== -1) {\n      const hex = value.replace('#', '').trim()\n      if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex))\n        return\n      let r, g, b\n\n      if (hex.length === 3) {\n        r = parseHexChannel(hex[0] + hex[0])\n        g = parseHexChannel(hex[1] + hex[1])\n        b = parseHexChannel(hex[2] + hex[2])\n      } else if (hex.length === 6 || hex.length === 8) {\n        r = parseHexChannel(hex.substring(0, 2))\n        g = parseHexChannel(hex.substring(2, 4))\n        b = parseHexChannel(hex.substring(4, 6))\n      }\n\n      if (hex.length === 8) {\n        this._alpha = (parseHexChannel(hex.substring(6)) / 255) * 100\n      } else if (hex.length === 3 || hex.length === 6) {\n        this._alpha = 100\n      }\n\n      const { h, s, v } = rgb2hsv(r, g, b)\n      fromHSV(h, s, v)\n    }\n  }\n\n  compare(color) {\n    return (\n      Math.abs(color._hue - this._hue) < 2 &&\n      Math.abs(color._saturation - this._saturation) < 1 &&\n      Math.abs(color._value - this._value) < 1 &&\n      Math.abs(color._alpha - this._alpha) < 1\n    )\n  }\n\n  doOnChange() {\n    const { _hue, _saturation, _value, _alpha, format } = this\n\n    if (this.enableAlpha) {\n      switch (format) {\n        case 'hsl': {\n          const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100)\n          this.value = `hsla(${_hue}, ${Math.round(\n            hsl[1] * 100\n          )}%, ${Math.round(hsl[2] * 100)}%, ${this.get('alpha') / 100})`\n          break\n        }\n        case 'hsv': {\n          this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(\n            _value\n          )}%, ${this.get('alpha') / 100})`\n          break\n        }\n        case 'hex': {\n          this.value = `${toHex(hsv2rgb(_hue, _saturation, _value))}${hexOne(\n            (_alpha * 255) / 100\n          )}`\n          break\n        }\n        default: {\n          const { r, g, b } = hsv2rgb(_hue, _saturation, _value)\n          this.value = `rgba(${r}, ${g}, ${b}, ${this.get('alpha') / 100})`\n        }\n      }\n    } else {\n      switch (format) {\n        case 'hsl': {\n          const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100)\n          this.value = `hsl(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(\n            hsl[2] * 100\n          )}%)`\n          break\n        }\n        case 'hsv': {\n          this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(\n            _value\n          )}%)`\n          break\n        }\n        case 'rgb': {\n          const { r, g, b } = hsv2rgb(_hue, _saturation, _value)\n          this.value = `rgb(${r}, ${g}, ${b})`\n          break\n        }\n        default: {\n          this.value = toHex(hsv2rgb(_hue, _saturation, _value))\n        }\n      }\n    }\n  }\n}\n"],"names":[],"mappings":"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"}