{"version":3,"file":"colorUtils.mjs","names":["consoleWarn","chunk","has","padEnd","CIELAB","sRGB","isCssColor","color","test","cssColorRe","_wrapRegExp","fn","values","mappers","rgb","r","g","b","a","rgba","hsl","h","s","l","HSLtoRGB","hsla","hsv","v","HSVtoRGB","hsva","parseColor","isNaN","concat","_ref","match","groups","_ref2","realValues","split","map","endsWith","includes","parseFloat","apply","_toConsumableArray","hex","startsWith","slice","length","char","join","int","parseInt","HexToRGB","_typeof","HSLtoHSV","TypeError","String","constructor","name","RGBToInt","classToHex","colors","currentTheme","_ref3","toString","trim","replace","_ref4","_slicedToArray","colorName","colorModifier","hexColor","base","f","n","k","Math","max","min","round","RGBtoHSV","HSVtoHSL","sprime","RGBtoCSS","_ref5","undefined","HSVtoCSS","toHex","substr","toUpperCase","RGBtoHex","_ref6","parseHex","_chunk$map","c","_chunk$map2","HexToHSV","HSVtoHex","x","parseGradient","gradient","Object","lighten","value","amount","lab","fromXYZ","toXYZ","darken","getLuma","getContrast","first","second","l1","l2","light","dark"],"sources":["../../src/utils/colorUtils.ts"],"sourcesContent":["// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, has, padEnd } from './helpers'\nimport * as CIELAB from '@/utils/color/transformCIELAB'\nimport * as sRGB from '@/utils/color/transformSRGB'\n\n// Types\nimport type { Colors } from '@/composables/theme'\n\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number; s: number; v: number; a?: number }\nexport type RGB = { r: number; g: number; b: number; a?: number }\nexport type HSL = { h: number; s: number; l: number; a?: number }\nexport type Hex = string & { __hexBrand: never }\nexport type Color = string | number | HSV | RGB | HSL\n\nexport function isCssColor(color?: string | null | false): boolean {\n  return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color)\n}\n\nconst cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\\((?<values>.+)\\)/\nconst mappers = {\n  rgb: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n  rgba: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n  hsl: (h: number, s: number, l: number, a?: number) =>\n    HSLtoRGB({ h, s, l, a }),\n  hsla: (h: number, s: number, l: number, a?: number) =>\n    HSLtoRGB({ h, s, l, a }),\n  hsv: (h: number, s: number, v: number, a?: number) =>\n    HSVtoRGB({ h, s, v, a }),\n  hsva: (h: number, s: number, v: number, a?: number) =>\n    HSVtoRGB({ h, s, v, a }),\n}\n\nexport function parseColor(color: Color): RGB {\n  if (typeof color === 'number') {\n    if (isNaN(color) || color < 0 || color > 0xffffff) {\n      // int can't have opacity\n      consoleWarn(`'${color}' is not a valid hex color`)\n    }\n\n    return {\n      r: (color & 0xff0000) >> 16,\n      g: (color & 0xff00) >> 8,\n      b: color & 0xff,\n    }\n  } else if (typeof color === 'string' && cssColorRe.test(color)) {\n    const { groups } = color.match(cssColorRe)!\n    const { fn, values } = groups as {\n      fn: keyof typeof mappers\n      values: string\n    }\n    const realValues = values.split(/,\\s*/).map((v) => {\n      if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {\n        return parseFloat(v) / 100\n      } else {\n        return parseFloat(v)\n      }\n    }) as [number, number, number, number?]\n\n    return mappers[fn](...realValues)\n  } else if (typeof color === 'string') {\n    let hex = color.startsWith('#') ? color.slice(1) : color\n\n    if ([3, 4].includes(hex.length)) {\n      hex = hex\n        .split('')\n        .map((char) => char + char)\n        .join('')\n    } else if (![6, 8].includes(hex.length)) {\n      consoleWarn(`'${color}' is not a valid hex(a) color`)\n    }\n\n    const int = parseInt(hex, 16)\n    if (isNaN(int) || int < 0 || int > 0xffffffff) {\n      consoleWarn(`'${color}' is not a valid hex(a) color`)\n    }\n\n    return HexToRGB(hex as Hex)\n  } else if (typeof color === 'object') {\n    if (has(color, ['r', 'g', 'b'])) {\n      return color\n    } else if (has(color, ['h', 's', 'l'])) {\n      return HSVtoRGB(HSLtoHSV(color))\n    } else if (has(color, ['h', 's', 'v'])) {\n      return HSVtoRGB(color)\n    }\n  }\n\n  throw new TypeError(\n    `Invalid color: ${\n      color == null ? color : String(color) || (color as any).constructor.name\n    }\\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`\n  )\n}\n\nexport function RGBToInt(color: RGB) {\n  return (color.r << 16) + (color.g << 8) + color.b\n}\n\nexport function classToHex(\n  color: string,\n  colors: Record<string, Record<string, string>>,\n  currentTheme: Partial<Colors>\n): string {\n  const [colorName, colorModifier] = color\n    .toString()\n    .trim()\n    .replace('-', '')\n    .split(' ', 2) as (string | undefined)[]\n\n  let hexColor = ''\n  if (colorName && colorName in colors) {\n    if (colorModifier && colorModifier in colors[colorName]) {\n      hexColor = colors[colorName][colorModifier]\n    } else if ('base' in colors[colorName]) {\n      hexColor = colors[colorName].base\n    }\n  } else if (colorName && colorName in currentTheme) {\n    hexColor = currentTheme[colorName] as string\n  }\n\n  return hexColor\n}\n\n/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function HSVtoRGB(hsva: HSV): RGB {\n  const { h, s, v, a } = hsva\n  const f = (n: number) => {\n    const k = (n + h / 60) % 6\n    return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n  }\n\n  const rgb = [f(5), f(3), f(1)].map((v) => Math.round(v * 255))\n\n  return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\nexport function HSLtoRGB(hsla: HSL): RGB {\n  return HSVtoRGB(HSLtoHSV(hsla))\n}\n\n/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function RGBtoHSV(rgba: RGB): HSV {\n  if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n  const r = rgba.r / 255\n  const g = rgba.g / 255\n  const b = rgba.b / 255\n  const max = Math.max(r, g, b)\n  const min = Math.min(r, g, b)\n\n  let h = 0\n\n  if (max !== min) {\n    if (max === r) {\n      h = 60 * (0 + (g - b) / (max - min))\n    } else if (max === g) {\n      h = 60 * (2 + (b - r) / (max - min))\n    } else if (max === b) {\n      h = 60 * (4 + (r - g) / (max - min))\n    }\n  }\n\n  if (h < 0) h = h + 360\n\n  const s = max === 0 ? 0 : (max - min) / max\n  const hsv = [h, s, max]\n\n  return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVtoHSL(hsva: HSV): HSL {\n  const { h, s, v, a } = hsva\n\n  const l = v - (v * s) / 2\n\n  const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n  return { h, s: sprime, l, a }\n}\n\nexport function HSLtoHSV(hsl: HSL): HSV {\n  const { h, s, l, a } = hsl\n\n  const v = l + s * Math.min(l, 1 - l)\n\n  const sprime = v === 0 ? 0 : 2 - (2 * l) / v\n\n  return { h, s: sprime, v, a }\n}\n\nexport function RGBtoCSS({ r, g, b, a }: RGB): string {\n  return a === undefined\n    ? `rgb(${r}, ${g}, ${b})`\n    : `rgba(${r}, ${g}, ${b}, ${a})`\n}\n\nexport function HSVtoCSS(hsva: HSV): string {\n  return RGBtoCSS(HSVtoRGB(hsva))\n}\n\nfunction toHex(v: number) {\n  const h = Math.round(v).toString(16)\n  return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n}\n\nexport function RGBtoHex({ r, g, b, a }: RGB): Hex {\n  return `#${[\n    toHex(r),\n    toHex(g),\n    toHex(b),\n    a !== undefined ? toHex(Math.round(a * 255)) : '',\n  ].join('')}` as Hex\n}\n\nexport function HexToRGB(hex: Hex): RGB {\n  hex = parseHex(hex)\n  // eslint-disable-next-line prefer-const\n  let [r, g, b, a] = chunk(hex, 2).map((c: string) => parseInt(c, 16))\n  a = a === undefined ? a : a / 255\n\n  return { r, g, b, a }\n}\n\nexport function HexToHSV(hex: Hex): HSV {\n  const rgb = HexToRGB(hex)\n  return RGBtoHSV(rgb)\n}\n\nexport function HSVtoHex(hsva: HSV): Hex {\n  return RGBtoHex(HSVtoRGB(hsva))\n}\n\nexport function parseHex(hex: string): Hex {\n  if (hex.startsWith('#')) {\n    hex = hex.slice(1)\n  }\n\n  hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n  if (hex.length === 3 || hex.length === 4) {\n    hex = hex\n      .split('')\n      .map((x) => x + x)\n      .join('')\n  }\n\n  if (hex.length !== 6) {\n    hex = padEnd(padEnd(hex, 6), 8, 'F')\n  }\n\n  return hex as Hex\n}\n\nexport function parseGradient(\n  gradient: string,\n  colors: Record<string, Record<string, string>>,\n  currentTheme: Partial<Colors>\n) {\n  return gradient\n    .replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, (x) => {\n      return classToHex(x, colors, currentTheme) || x\n    })\n    .replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, (x) => {\n      return (\n        'rgba(' +\n        Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, ''))))\n          .slice(0, 3)\n          .join(',')\n      )\n    })\n}\n\nexport function lighten(value: RGB, amount: number): RGB {\n  const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n  lab[0] = lab[0] + amount * 10\n\n  return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\nexport function darken(value: RGB, amount: number): RGB {\n  const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n  lab[0] = lab[0] - amount * 10\n\n  return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\n/**\n * Calculate the relative luminance of a given color\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function getLuma(color: Color) {\n  const rgb = parseColor(color)\n\n  return sRGB.toXYZ(rgb)[1]\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function getContrast(first: Color, second: Color) {\n  const l1 = getLuma(first)\n  const l2 = getLuma(second)\n\n  const light = Math.max(l1, l2)\n  const dark = Math.min(l1, l2)\n\n  return (light + 0.05) / (dark + 0.05)\n}\n"],"mappings":"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"}