vuetify
Version:
Vue Material Component Framework
1 lines • 16.5 kB
Source Map (JSON)
{"version":3,"file":"colorUtils.mjs","names":["consoleWarn","chunk","padEnd","sRGB","CIELAB","isCssColor","color","test","parseColor","isNaN","r","g","b","hex","startsWith","slice","includes","length","split","map","char","join","int","parseInt","HexToRGB","TypeError","constructor","name","RGBToInt","classToHex","colors","currentTheme","colorName","colorModifier","toString","trim","replace","hexColor","base","HSVtoRGB","hsva","h","s","v","a","f","n","k","Math","max","min","rgb","round","RGBtoHSV","rgba","hsv","HSVtoHSL","l","sprime","HSLtoHSV","hsl","RGBtoCSS","undefined","HSVtoCSS","toHex","substr","toUpperCase","RGBtoHex","parseHex","c","HexToHSV","HSVtoHex","x","parseGradient","gradient","Object","values","lighten","value","amount","lab","fromXYZ","toXYZ","darken","getLuma","getContrast","first","second","l1","l2","light","dark"],"sources":["../../src/util/colorUtils.ts"],"sourcesContent":["// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport * as sRGB from '@/util/color/transformSRGB'\nimport * as CIELAB from '@/util/color/transformCIELAB'\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 | {}\n\nexport function isCssColor (color?: string | null | false): boolean {\n return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color)\n}\n\nexport function parseColor (color: Color): RGB {\n if (typeof color === 'number') {\n if (isNaN(color) || color < 0 || color > 0xFFFFFF) { // 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') {\n let hex = color.startsWith('#') ? color.slice(1) : color\n\n if ([3, 4].includes(hex.length)) {\n hex = hex.split('').map(char => char + char).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 {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\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().trim().replace('-', '').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\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 ? `rgb(${r}, ${g}, ${b})` : `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 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.split('').map(x => x + x).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.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\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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"}