{"version":3,"sources":["../src/modules/invariant.ts","../src/modules/constants.ts","../src/modules/css-colors.ts","../src/modules/validators.ts","../src/modules/utils.ts","../src/modules/hex-utils.ts","../src/converters/index.ts","../src/format-hex.ts","../src/converters/hex2rgb.ts","../src/converters/rgb2hsl.ts","../src/converters/hex2hsl.ts","../src/converters/rgb2oklab.ts","../src/converters/hex2oklab.ts","../src/converters/oklab2oklch.ts","../src/converters/rgb2oklch.ts","../src/converters/hex2oklch.ts","../src/modules/hue2rgb.ts","../src/converters/hsl2rgb.ts","../src/converters/rgb2hex.ts","../src/converters/hsl2hex.ts","../src/converters/hsl2oklab.ts","../src/converters/hsl2oklch.ts","../src/converters/oklab2rgb.ts","../src/converters/oklab2hex.ts","../src/converters/oklab2hsl.ts","../src/converters/oklch2oklab.ts","../src/converters/oklch2rgb.ts","../src/converters/oklch2hex.ts","../src/converters/oklch2hsl.ts","../src/extract-color-parts.ts","../src/parse-css.ts","../src/modules/parse-color.ts","../src/brightness-difference.ts","../src/chroma.ts","../src/color-difference.ts","../src/luminance.ts","../src/contrast.ts","../src/compare.ts","../src/format-css.ts","../src/modules/updater.ts","../src/darken.ts","../src/desaturate.ts","../src/rotate.ts","../src/invert.ts","../src/lighten.ts","../src/opacify.ts","../src/opacity.ts","../src/saturate.ts","../src/text-color.ts","../src/transparentize.ts","../src/colorizr.ts","../src/convert.ts","../src/is-valid-color.ts","../src/name.ts","../src/palette.ts","../src/p3.ts","../src/random.ts","../src/scheme.ts","../src/swatch.ts","../src/index.ts"],"sourcesContent":["export function invariant(condition: boolean, message: string): asserts condition {\n  if (condition) {\n    return;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (message === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  const error = !message\n    ? new Error(\n        'Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.',\n      )\n    : new Error(message);\n\n  error.name = 'colorizr';\n\n  throw error;\n}\n","import { ColorKeysTuple, ColorModelKey } from '~/types';\n\nexport const COLOR_KEYS: Record<ColorModelKey, ColorKeysTuple> = {\n  hsl: ['h', 's', 'l'],\n  oklab: ['l', 'a', 'b'],\n  oklch: ['l', 'c', 'h'],\n  rgb: ['r', 'g', 'b'],\n};\nexport const COLOR_MODELS: ColorModelKey[] = ['hsl', 'oklab', 'oklch', 'rgb'];\nexport const DEG2RAD = Math.PI / 180;\nexport const LAB_TO_LMS = {\n  l: [0.3963377773761749, 0.2158037573099136],\n  m: [-0.1055613458156586, -0.0638541728258133],\n  s: [-0.0894841775298119, -1.2914855480194092],\n};\nexport const LRGB_TO_LMS = {\n  l: [0.4122214708, 0.5363325363, 0.0514459929],\n  m: [0.2119034982, 0.6806995451, 0.1073969566],\n  s: [0.0883024619, 0.2817188376, 0.6299787005],\n};\nexport const LSM_TO_LAB = {\n  l: [0.2104542553, 0.793617785, 0.0040720468],\n  a: [1.9779984951, 2.428592205, 0.4505937099],\n  b: [0.0259040371, 0.7827717662, 0.808675766],\n};\nexport const LSM_TO_RGB = {\n  r: [4.0767416360759583, -3.3077115392580629, 0.2309699031821043],\n  g: [-1.2684379732850315, 2.6097573492876882, -0.341319376002657],\n  b: [-0.0041960761386756, -0.7034186179359362, 1.7076146940746117],\n};\nexport const SRGB_TO_P3 = [\n  [0.8224270476, 0.1775729524, 0],\n  [0.0331008087, 0.9668991913, 0],\n  [0.0170720188, 0.0723477973, 0.9105801839],\n];\nexport const PRECISION = 5;\nexport const RAD2DEG = 180 / Math.PI;\n\nexport const MESSAGES = {\n  alpha: 'amount must be a number between 0 and 1',\n  hueRange: 'hue must be a number between 0 and 360',\n  input: 'input is required',\n  inputHex: 'input is required and must be a hex',\n  inputNumber: 'input is required and must be a number',\n  inputString: 'input is required and must be a string',\n  invalid: 'invalid input',\n  invalidCSS: 'invalid CSS string',\n  left: 'left is required and must be a string',\n  lightnessRange: 'lightness must be a number between 0 and 1',\n  options: 'invalid options',\n  right: 'right is required and must be a string',\n  threshold: 'threshold must be a number between 0 and 255',\n} as const;\n","/**\n * CSS named colors\n */\n\nexport type CSSColor = keyof typeof cssColors;\n\nexport const cssColors = {\n  aliceblue: '#f0f8ff',\n  antiquewhite: '#faebd7',\n  aqua: '#00ffff',\n  aquamarine: '#7fffd4',\n  azure: '#f0ffff',\n  beige: '#f5f5dc',\n  bisque: '#ffe4c4',\n  black: '#000000',\n  blanchedalmond: '#ffebcd',\n  blue: '#0000ff',\n  blueviolet: '#8a2be2',\n  brown: '#a52a2a',\n  burlywood: '#deb887',\n  cadetblue: '#5f9ea0',\n  chartreuse: '#7fff00',\n  chocolate: '#d2691e',\n  coral: '#ff7f50',\n  cornflowerblue: '#6495ed',\n  cornsilk: '#fff8dc',\n  crimson: '#dc143c',\n  cyan: '#00ffff',\n  darkblue: '#00008b',\n  darkcyan: '#008b8b',\n  darkgoldenrod: '#b8860b',\n  darkgray: '#a9a9a9',\n  darkgreen: '#006400',\n  darkkhaki: '#bdb76b',\n  darkmagenta: '#8b008b',\n  darkolivegreen: '#556b2f',\n  darkorange: '#ff8c00',\n  darkorchid: '#9932cc',\n  darkred: '#8b0000',\n  darksalmon: '#e9967a',\n  darkseagreen: '#8fbc8f',\n  darkslateblue: '#483d8b',\n  darkslategray: '#2f4f4f',\n  darkslategrey: '#2f4f4f',\n  darkturquoise: '#00ced1',\n  darkviolet: '#9400d3',\n  deeppink: '#ff1493',\n  deepskyblue: '#00bfff',\n  dimgray: '#696969',\n  dimgrey: '#696969',\n  dodgerblue: '#1e90ff',\n  firebrick: '#b22222',\n  floralwhite: '#fffaf0',\n  forestgreen: '#228b22',\n  fuchsia: '#ff00ff',\n  gainsboro: '#dcdcdc',\n  ghostwhite: '#f8f8ff',\n  gold: '#ffd700',\n  goldenrod: '#daa520',\n  gray: '#808080',\n  grey: '#808080',\n  green: '#008000',\n  greenyellow: '#adff2f',\n  honeydew: '#f0fff0',\n  hotpink: '#ff69b4',\n  indianred: '#cd5c5c',\n  indigo: '#4b0082',\n  ivory: '#fffff0',\n  khaki: '#f0e68c',\n  lavender: '#e6e6fa',\n  lavenderblush: '#fff0f5',\n  lawngreen: '#7cfc00',\n  lemonchiffon: '#fffacd',\n  lightblue: '#add8e6',\n  lightcoral: '#f08080',\n  lightcyan: '#e0ffff',\n  lightgoldenrodyellow: '#fafad2',\n  lightgray: '#d3d3d3',\n  lightgreen: '#90ee90',\n  lightgrey: '#d3d3d3',\n  lightpink: '#ffb6c1',\n  lightsalmon: '#ffa07a',\n  lightseagreen: '#20b2aa',\n  lightskyblue: '#87cefa',\n  lightslategray: '#778899',\n  lightslategrey: '#778899',\n  lightsteelblue: '#b0c4de',\n  lightyellow: '#ffffe0',\n  lime: '#00ff00',\n  limegreen: '#32cd32',\n  linen: '#faf0e6',\n  magenta: '#ff00ff',\n  maroon: '#800000',\n  mediumaquamarine: '#66cdaa',\n  mediumblue: '#0000cd',\n  mediumorchid: '#ba55d3',\n  mediumpurple: '#9370db',\n  mediumseagreen: '#3cb371',\n  mediumslateblue: '#7b68ee',\n  mediumspringgreen: '#00fa9a',\n  mediumturquoise: '#48d1cc',\n  mediumvioletred: '#c71585',\n  midnightblue: '#191970',\n  mintcream: '#f5fffa',\n  mistyrose: '#ffe4e1',\n  moccasin: '#ffe4b5',\n  navajowhite: '#ffdead',\n  navy: '#000080',\n  oldlace: '#fdf5e6',\n  olive: '#808000',\n  olivedrab: '#6b8e23',\n  orange: '#ffa500',\n  orangered: '#ff4500',\n  orchid: '#da70d6',\n  palegoldenrod: '#eee8aa',\n  palegreen: '#98fb98',\n  paleturquoise: '#afeeee',\n  palevioletred: '#db7093',\n  papayawhip: '#ffefd5',\n  peachpuff: '#ffdab9',\n  peru: '#cd853f',\n  pink: '#ffc0cb',\n  plum: '#dda0dd',\n  powderblue: '#b0e0e6',\n  purple: '#800080',\n  rebeccapurple: '#663399',\n  red: '#ff0000',\n  rosybrown: '#bc8f8f',\n  royalblue: '#4169e1',\n  saddlebrown: '#8b4513',\n  salmon: '#fa8072',\n  sandybrown: '#f4a460',\n  seagreen: '#2e8b57',\n  seashell: '#fff5ee',\n  sienna: '#a0522d',\n  silver: '#c0c0c0',\n  skyblue: '#87ceeb',\n  slateblue: '#6a5acd',\n  slategray: '#708090',\n  slategrey: '#708090',\n  snow: '#fffafa',\n  springgreen: '#00ff7f',\n  steelblue: '#4682b4',\n  tan: '#d2b48c',\n  teal: '#008080',\n  thistle: '#d8bfd8',\n  tomato: '#ff6347',\n  turquoise: '#40e0d0',\n  violet: '#ee82ee',\n  wheat: '#f5deb3',\n  white: '#ffffff',\n  whitesmoke: '#f5f5f5',\n  yellow: '#ffff00',\n  yellowgreen: '#9acd32',\n};\n","import { COLOR_KEYS } from '~/modules/constants';\nimport { CSSColor, cssColors } from '~/modules/css-colors';\n\nimport { ColorModel, HEX, HSL, LAB, LCH, PlainObject, RGB } from '~/types';\n\nexport function hasValidMatches(input: unknown): input is string[] {\n  return Array.isArray(input) && input.length === 6;\n}\n\n/**\n * Check if the input is a CSS named color\n */\nexport function isNamedColor(input: unknown): input is CSSColor {\n  return isString(input) && Object.keys(cssColors).includes(input.toLowerCase());\n}\n\n/**\n * Check if the input is a number and not NaN\n */\nexport function isNumber(input: unknown): input is number {\n  return typeof input === 'number' && !Number.isNaN(input);\n}\n\n/**\n * Check if the input is an object\n */\nexport function isPlainObject(input: unknown): input is PlainObject {\n  if (!input) {\n    return false;\n  }\n\n  const { toString } = Object.prototype;\n  const prototype = Object.getPrototypeOf(input);\n\n  return (\n    toString.call(input) === '[object Object]' &&\n    (prototype === null || prototype === Object.getPrototypeOf({}))\n  );\n}\n\n/**\n * Check if the input is a string\n */\nexport function isString(input: unknown, validate = true): input is string {\n  const isValid = typeof input === 'string';\n\n  if (validate) {\n    return isValid && !!input.trim().length;\n  }\n\n  return isValid;\n}\n\nexport function isValidColorModel<T extends ColorModel>(input: T): input is T {\n  return isHSL(input) || isRGB(input) || isLAB(input) || isLCH(input);\n}\n\nexport function isHex(input: any): input is HEX {\n  if (!isString(input)) {\n    return false;\n  }\n\n  return /^#([\\da-f]{3,4}|[\\da-f]{6,8})$/i.test(input);\n}\n\n/**\n * Check if an object contains HSL values\n * The input must be an object with keys 'h', 's', and 'l'\n * with values between 0 and 360 for hue or 0 and 100 for the others.\n */\nexport function isHSL(input: unknown): input is HSL {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  const entries = Object.entries(input);\n\n  return (\n    !!entries.length &&\n    entries.every(([key, value]) => {\n      if (key === 'h') {\n        return value >= 0 && value <= 360;\n      }\n\n      if (key === 'alpha') {\n        return value >= 0 && value <= 1;\n      }\n\n      return COLOR_KEYS.hsl.includes(key) && value >= 0 && value <= 100;\n    })\n  );\n}\n\n/**\n * Check if an object contains LAB values\n * The input must be an object with keys 'l', 'a', and 'b' with values between -1 and 1.\n */\nexport function isLAB(input: unknown): input is LAB {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  const entries = Object.entries(input);\n\n  return (\n    !!entries.length &&\n    entries.every(([key, value]) => {\n      if (key === 'l') {\n        return value >= 0 && value <= 100;\n      }\n\n      if (key === 'alpha') {\n        return value >= 0 && value <= 1;\n      }\n\n      return COLOR_KEYS.oklab.includes(key) && value >= -1 && value <= 1;\n    })\n  );\n}\n\n/**\n * Check if an object contains LAB values\n * The input must be an object with keys 'l', 'c', and 'h' with values between 0 and 360.\n */\nexport function isLCH(input: unknown): input is LCH {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  const entries = Object.entries(input);\n\n  return (\n    !!entries.length &&\n    entries.every(([key, value]) => {\n      if (key === 'l') {\n        return value >= 0 && value <= 100;\n      }\n\n      if (key === 'alpha') {\n        return value >= 0 && value <= 1;\n      }\n\n      return COLOR_KEYS.oklch.includes(key) && value >= 0 && value <= (key === 'h' ? 360 : 1);\n    })\n  );\n}\n\n/**\n * Check if an object contains RGB values.\n * The input must be an object with keys 'r', 'g', and 'b' with values between 0 and 255.\n */\nexport function isRGB(input: unknown): input is RGB {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  const entries = Object.entries(input);\n\n  return (\n    !!entries.length &&\n    entries.every(([key, value]) => {\n      if (key === 'alpha') {\n        return value >= 0 && value <= 1;\n      }\n\n      return COLOR_KEYS.rgb.includes(key) && value >= 0 && value <= 255;\n    })\n  );\n}\n","import { COLOR_KEYS, COLOR_MODELS, MESSAGES, PRECISION } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport {\n  isHSL,\n  isLAB,\n  isLCH,\n  isNumber,\n  isPlainObject,\n  isRGB,\n  isValidColorModel,\n} from '~/modules/validators';\n\nimport {\n  Alpha,\n  ColorModel,\n  ColorModelKey,\n  ColorModelKeys,\n  ConverterParameters,\n  LAB,\n  LCH,\n  PlainObject,\n} from '~/types';\n\nexport function addAlpha<T extends ColorModel>(input: any, alpha?: Alpha): T {\n  invariant(isValidColorModel(input), MESSAGES.invalid);\n\n  let value = alpha;\n\n  if (!value) {\n    return input;\n  }\n\n  /* c8 ignore next 3 */\n  if (value > 1) {\n    value /= 100;\n  }\n\n  if (value === 1) {\n    return input;\n  }\n\n  return { ...input, alpha: value };\n}\n\n/**\n * Clamp a value between a min and max\n * @param value\n * @param [min=0] - The minimum value\n * @param [max=100] - The maximum value\n */\nexport function clamp(value: number, min = 0, max = 100) {\n  return Math.min(Math.max(value, min), max);\n}\n\n/**\n * Constrain the degrees between 0 and 360\n */\nexport function constrainDegrees(input: number, amount: number): number {\n  invariant(isNumber(input), MESSAGES.inputNumber);\n\n  let value = input + amount;\n\n  if (value > 360) {\n    value %= 360;\n  }\n\n  if (value < 0) {\n    value += 360;\n  }\n\n  return Math.abs(value);\n}\n\n/**\n * Limit values per type.\n */\nexport function limit<TModel extends Extract<ColorModelKey, 'hsl' | 'rgb'>>(\n  input: number,\n  model: TModel,\n  key: ColorModelKeys<TModel>,\n): number {\n  invariant(isNumber(input), 'Input is not a number');\n  invariant(COLOR_MODELS.includes(model), `Invalid model${model ? `: ${model}` : ''}`);\n  invariant(COLOR_KEYS[model].includes(key), `Invalid key${key ? `: ${key}` : ''}`);\n\n  switch (model) {\n    case 'hsl': {\n      invariant(COLOR_KEYS.hsl.includes(key), 'Invalid key');\n\n      if (['s', 'l'].includes(key)) {\n        return clamp(input);\n      }\n\n      return clamp(input, 0, 360);\n    }\n    case 'rgb': {\n      invariant(COLOR_KEYS.rgb.includes(key), 'Invalid key');\n\n      return clamp(input, 0, 255);\n    }\n    /* c8 ignore next 3 */\n    default: {\n      throw new Error('Invalid inputs');\n    }\n  }\n}\n\n/**\n * Parse the input parameters\n */\nexport function parseInput<T extends ColorModel>(\n  input: ConverterParameters<T>,\n  model: ColorModelKey,\n): T {\n  const keys = COLOR_KEYS[model];\n  const validator = {\n    hsl: isHSL,\n    oklab: isLAB,\n    oklch: isLCH,\n    rgb: isRGB,\n  };\n\n  invariant(isPlainObject(input) || Array.isArray(input), MESSAGES.invalid);\n\n  const value = Array.isArray(input)\n    ? ({ [keys[0]]: input[0], [keys[1]]: input[1], [keys[2]]: input[2] } as unknown as T)\n    : input;\n\n  invariant(validator[model](value), `invalid ${model} color`);\n\n  return value;\n}\n\n/**\n * Creates an object composed of the picked source properties.\n */\nexport function pick(input: PlainObject, options: string[]): PlainObject {\n  if (!Array.isArray(options)) {\n    throw new TypeError('options must be an array');\n  }\n\n  return options\n    .filter(d => typeof input[d] !== 'undefined')\n    .reduce((acc: PlainObject, d) => {\n      acc[d] = input[d];\n\n      return acc;\n    }, {});\n}\n\n/**\n * Restrict the values to a certain number of digits.\n */\nexport function restrictValues<T extends LAB | LCH>(\n  input: T,\n  precision: number = PRECISION,\n  forcePrecision = true,\n): T {\n  const output = new Map(Object.entries(input));\n\n  for (const [key, value] of output.entries()) {\n    output.set(key, round(value, precision, forcePrecision));\n  }\n\n  return Object.fromEntries(output) as T;\n}\n\n/**\n * Round decimal numbers.\n */\nexport function round(input: number, precision = 2, forcePrecision = true): number {\n  if (!isNumber(input) || input === 0) {\n    return 0;\n  }\n\n  if (forcePrecision) {\n    const factor = 10 ** precision;\n\n    return Math.round(input * factor) / factor;\n  }\n\n  const absInput = Math.abs(input);\n\n  let digits = Math.abs(Math.ceil(Math.log(absInput) / Math.LN10));\n\n  if (digits === 0) {\n    digits = 2;\n  } else if (digits > precision) {\n    digits = precision;\n  }\n\n  let exponent = precision - (digits < 0 ? 0 : digits);\n\n  if (exponent <= 1 && precision > 1) {\n    exponent = 2;\n  } else if (exponent > precision || exponent === 0) {\n    exponent = precision;\n  }\n\n  const factor = 10 ** exponent;\n\n  return Math.round(input * factor) / factor;\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isHex, isNumber } from '~/modules/validators';\n\nimport { Alpha } from '~/types';\n\n/**\n * Add an alpha value to a hex string\n */\nexport function addAlphaToHex(input: string, alpha: Alpha): string {\n  invariant(isHex(input), MESSAGES.inputHex);\n  invariant(isNumber(alpha), MESSAGES.inputNumber);\n\n  if (alpha >= 1) {\n    return removeAlphaFromHex(input);\n  }\n\n  return `${removeAlphaFromHex(input)}${convertAlphaToHex(alpha)}`;\n}\n\n/**\n * Convert an alpha value to a hex value.\n */\nexport function convertAlphaToHex(input: Alpha): string {\n  invariant(isNumber(input), MESSAGES.inputNumber);\n\n  let alpha = input;\n\n  if (input > 1) {\n    alpha /= 100;\n  }\n\n  return Math.round(alpha * 255)\n    .toString(16)\n    .padStart(2, '0');\n}\n\n/**\n * Extract the alpha value from a hex string\n */\nexport function extractAlphaFromHex(input: string): number {\n  invariant(isHex(input), MESSAGES.inputString);\n\n  const alpha = input.substring(7, 9);\n\n  if (!alpha) {\n    return 1;\n  }\n\n  return round(parseInt(alpha, 16) / 255);\n}\n\nexport function hexadecimalToNumber(input: string) {\n  return round(parseInt(input, 16));\n}\n\n/**\n * Remove the alpha value from a hex string\n */\nexport function removeAlphaFromHex(input: string) {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  if (input.length === 5) {\n    return input.substring(0, 4);\n  }\n\n  return input.substring(0, 7);\n}\n","export { default as hex2hsl } from '~/converters/hex2hsl';\nexport { default as hex2oklab } from '~/converters/hex2oklab';\nexport { default as hex2oklch } from '~/converters/hex2oklch';\nexport { default as hex2rgb } from '~/converters/hex2rgb';\n\nexport { default as hsl2hex } from '~/converters/hsl2hex';\nexport { default as hsl2oklab } from '~/converters/hsl2oklab';\nexport { default as hsl2oklch } from '~/converters/hsl2oklch';\nexport { default as hsl2rgb } from '~/converters/hsl2rgb';\n\nexport { default as oklab2hex } from '~/converters/oklab2hex';\nexport { default as oklab2hsl } from '~/converters/oklab2hsl';\nexport { default as oklab2oklch } from '~/converters/oklab2oklch';\nexport { default as oklab2rgb } from '~/converters/oklab2rgb';\n\nexport { default as oklch2hex } from '~/converters/oklch2hex';\nexport { default as oklch2hsl } from '~/converters/oklch2hsl';\nexport { default as oklch2oklab } from '~/converters/oklch2oklab';\nexport { default as oklch2rgb } from '~/converters/oklch2rgb';\n\nexport { default as rgb2hex } from '~/converters/rgb2hex';\nexport { default as rgb2hsl } from '~/converters/rgb2hsl';\nexport { default as rgb2oklab } from '~/converters/rgb2oklab';\nexport { default as rgb2oklch } from '~/converters/rgb2oklch';\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex } from '~/modules/validators';\n\nimport { HEX } from '~/types';\n\nexport default function formatHex(input: string): HEX {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  let color = input.replace('#', '');\n\n  if (color.length === 3 || color.length === 4) {\n    const values = [...color];\n\n    color = '';\n\n    values.forEach(d => {\n      color += `${d}${d}`;\n    });\n  }\n\n  const hex = `#${color}`;\n\n  invariant(isHex(hex), 'invalid hex');\n\n  return hex;\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex } from '~/modules/validators';\n\nimport formatHex from '~/format-hex';\nimport { RGB } from '~/types';\n\n/** Convert HEX to RGB */\nexport default function hex2rgb(input: string): RGB {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  const hex = formatHex(input).slice(1);\n\n  return {\n    r: parseInt(hex.charAt(0) + hex.charAt(1), 16),\n    g: parseInt(hex.charAt(2) + hex.charAt(3), 16),\n    b: parseInt(hex.charAt(4) + hex.charAt(5), 16),\n  };\n}\n","import { limit, parseInput } from '~/modules/utils';\n\nimport { ConverterParameters, HSL, RGB } from '~/types';\n\n/** Convert RGB to HSL */\nexport default function rgb2hsl(input: ConverterParameters<RGB>): HSL {\n  const value = parseInput(input, 'rgb');\n\n  const rLimit = limit(value.r, 'rgb', 'r') / 255;\n  const gLimit = limit(value.g, 'rgb', 'g') / 255;\n  const bLimit = limit(value.b, 'rgb', 'b') / 255;\n\n  const min = Math.min(rLimit, gLimit, bLimit);\n  const max = Math.max(rLimit, gLimit, bLimit);\n  const delta = max - min;\n\n  let h = 0;\n  let s;\n  const l = (max + min) / 2;\n  let rate;\n\n  switch (max) {\n    case rLimit:\n      rate = !delta ? 0 : (gLimit - bLimit) / delta;\n      h = 60 * rate;\n      break;\n    case gLimit:\n      rate = (bLimit - rLimit) / delta;\n      h = 60 * rate + 120;\n      break;\n    case bLimit:\n      rate = (rLimit - gLimit) / delta;\n      h = 60 * rate + 240;\n      break;\n    /* c8 ignore next 2 */\n    default:\n      break;\n  }\n\n  if (h < 0) {\n    h = 360 + h;\n  }\n\n  if (min === max) {\n    s = 0;\n  } else {\n    s = l < 0.5 ? delta / (2 * l) : delta / (2 - 2 * l);\n  }\n\n  return {\n    h: Math.abs(+(h % 360).toFixed(2)),\n    s: +(s * 100).toFixed(2),\n    l: +(l * 100).toFixed(2),\n  };\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex } from '~/modules/validators';\n\nimport hex2rgb from '~/converters/hex2rgb';\nimport rgb2hsl from '~/converters/rgb2hsl';\nimport { HSL } from '~/types';\n\n/** Convert HEX to HSL */\nexport default function hex2hsl(input: string): HSL {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  return rgb2hsl(hex2rgb(input));\n}\n","import { LRGB_TO_LMS, LSM_TO_LAB, PRECISION } from '~/modules/constants';\nimport { parseInput, restrictValues } from '~/modules/utils';\n\nimport { ConverterParameters, LAB, RGB } from '~/types';\n\nconst { cbrt, sign } = Math;\n\nfunction rgb2lrgb(input: number) {\n  const abs = Math.abs(input);\n\n  if (abs < 0.04045) {\n    return input / 12.92;\n  }\n\n  return (sign(input) || 1) * ((abs + 0.055) / 1.055) ** 2.4;\n}\n\n/** Convert RGB to oklab */\nexport default function rgb2oklab(input: ConverterParameters<RGB>, precision = PRECISION): LAB {\n  const value = parseInput(input, 'rgb');\n\n  const [lr, lg, lb] = [rgb2lrgb(value.r / 255), rgb2lrgb(value.g / 255), rgb2lrgb(value.b / 255)];\n  const l = cbrt(LRGB_TO_LMS.l[0] * lr + LRGB_TO_LMS.l[1] * lg + LRGB_TO_LMS.l[2] * lb);\n  const m = cbrt(LRGB_TO_LMS.m[0] * lr + LRGB_TO_LMS.m[1] * lg + LRGB_TO_LMS.m[2] * lb);\n  const s = cbrt(LRGB_TO_LMS.s[0] * lr + LRGB_TO_LMS.s[1] * lg + LRGB_TO_LMS.s[2] * lb);\n\n  const lab = {\n    l: LSM_TO_LAB.l[0] * l + LSM_TO_LAB.l[1] * m - LSM_TO_LAB.l[2] * s,\n    a: LSM_TO_LAB.a[0] * l - LSM_TO_LAB.a[1] * m + LSM_TO_LAB.a[2] * s,\n    b: LSM_TO_LAB.b[0] * l + LSM_TO_LAB.b[1] * m - LSM_TO_LAB.b[2] * s,\n  };\n\n  return restrictValues(lab, precision);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex } from '~/modules/validators';\n\nimport hex2rgb from '~/converters/hex2rgb';\nimport rgb2oklab from '~/converters/rgb2oklab';\nimport { LAB } from '~/types';\n\n/** Convert HEX to oklab */\nexport default function hex2oklab(input: string, precision?: number): LAB {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  return rgb2oklab(hex2rgb(input), precision);\n}\n","import { RAD2DEG } from '~/modules/constants';\nimport { parseInput, restrictValues, round } from '~/modules/utils';\n\nimport { ConverterParameters, LAB, LCH } from '~/types';\n\nconst { atan2, sqrt } = Math;\n\n/** Convert oklab to oklch */\nexport default function oklab2oklch(input: ConverterParameters<LAB>, precision?: number): LCH {\n  const { l, a, b } = restrictValues(parseInput(input, 'oklab'));\n\n  const c = sqrt(a ** 2 + b ** 2);\n  let h = (atan2(b, a) * RAD2DEG + 360) % 360;\n\n  if (round(c * 10000) === 0) {\n    h = 0;\n  }\n\n  return restrictValues({ l, c, h }, precision);\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklab2oklch from '~/converters/oklab2oklch';\nimport rgb2oklab from '~/converters/rgb2oklab';\nimport { ConverterParameters, LCH, RGB } from '~/types';\n\n/** Convert RGB to oklch */\nexport default function rgb2oklch(input: ConverterParameters<RGB>, precision?: number): LCH {\n  const value = parseInput(input, 'rgb');\n\n  return oklab2oklch(rgb2oklab(value, precision), precision);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex } from '~/modules/validators';\n\nimport hex2rgb from '~/converters/hex2rgb';\nimport rgb2oklch from '~/converters/rgb2oklch';\nimport { LCH } from '~/types';\n\n/** Convert HEX to oklch */\nexport default function hex2oklch(input: string, precision?: number): LCH {\n  invariant(isHex(input), MESSAGES.inputHex);\n\n  return rgb2oklch(hex2rgb(input), precision);\n}\n","import { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isNumber } from '~/modules/validators';\n\n/**\n * Convert hue to RGB using chroma and median point\n */\nexport default function hue2rgb(point: number, chroma: number, h: number): number {\n  invariant(isNumber(point) && isNumber(chroma) && isNumber(h), 'point, chroma and h are required');\n  let hue = h;\n\n  if (hue < 0) {\n    hue += 1;\n  }\n\n  if (hue > 1) {\n    hue -= 1;\n  }\n\n  if (hue < 1 / 6) {\n    return round(point + (chroma - point) * 6 * hue, 4);\n  }\n\n  if (hue < 1 / 2) {\n    return round(chroma, 4);\n  }\n\n  if (hue < 2 / 3) {\n    return round(point + (chroma - point) * (2 / 3 - hue) * 6, 4);\n  }\n\n  return round(point, 4);\n}\n","import hue2rgb from '~/modules/hue2rgb';\nimport { parseInput, round } from '~/modules/utils';\n\nimport { ConverterParameters, HSL, RGB } from '~/types';\n\n/** Convert HSL to RGB */\nexport default function hsl2rgb(input: ConverterParameters<HSL>): RGB {\n  const value = parseInput(input, 'hsl');\n\n  const h = round(value.h) / 360;\n  const s = round(value.s) / 100;\n  const l = round(value.l) / 100;\n\n  let r;\n  let g;\n  let b;\n\n  let point;\n  let chroma;\n\n  if (s === 0) {\n    r = l;\n    g = l;\n    b = l;\n  } else {\n    chroma = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    point = 2 * l - chroma;\n\n    r = hue2rgb(point, chroma, h + 1 / 3);\n    g = hue2rgb(point, chroma, h);\n    b = hue2rgb(point, chroma, h - 1 / 3);\n  }\n\n  return {\n    r: Math.round(r * 255),\n    g: Math.round(g * 255),\n    b: Math.round(b * 255),\n  };\n}\n","import { parseInput } from '~/modules/utils';\n\nimport { ConverterParameters, HEX, RGB } from '~/types';\n\n/** Convert RGB to HEX */\nexport default function rgb2hex(input: ConverterParameters<RGB>): HEX {\n  const rgb = parseInput(input, 'rgb');\n\n  return `#${Object.values(rgb)\n    .map(d => `0${Math.floor(d).toString(16)}`.slice(-2))\n    .join('')}`;\n}\n","import { parseInput } from '~/modules/utils';\n\nimport hsl2rgb from '~/converters/hsl2rgb';\nimport rgb2hex from '~/converters/rgb2hex';\nimport { ConverterParameters, HEX, HSL } from '~/types';\n\n/** Convert HSL to HEX */\nexport default function hsl2hex(input: ConverterParameters<HSL>): HEX {\n  const value = parseInput(input, 'hsl');\n\n  return rgb2hex(hsl2rgb(value));\n}\n","import { parseInput } from '~/modules/utils';\n\nimport hsl2rgb from '~/converters/hsl2rgb';\nimport rgb2oklab from '~/converters/rgb2oklab';\nimport { ConverterParameters, HSL, LAB } from '~/types';\n\n/** Convert HSL to oklab */\nexport default function hsl2oklab(input: ConverterParameters<HSL>, precision?: number): LAB {\n  const value = parseInput(input, 'hsl');\n\n  return rgb2oklab(hsl2rgb(value), precision);\n}\n","import { parseInput } from '~/modules/utils';\n\nimport hsl2rgb from '~/converters/hsl2rgb';\nimport rgb2oklch from '~/converters/rgb2oklch';\nimport { ConverterParameters, HSL, LCH } from '~/types';\n\n/** Convert HSL to oklch */\nexport default function hsl2oklch(input: ConverterParameters<HSL>, precision?: number): LCH {\n  const value = parseInput(input, 'hsl');\n\n  return rgb2oklch(hsl2rgb(value), precision);\n}\n","import { LAB_TO_LMS, LSM_TO_RGB } from '~/modules/constants';\nimport { clamp, parseInput, round } from '~/modules/utils';\n\nimport { ConverterParameters, LAB, RGB } from '~/types';\n\nconst { abs } = Math;\n\nfunction lrgb2rgb(input: number) {\n  const absoluteNumber = abs(input);\n  const sign = input < 0 ? -1 : 1;\n\n  if (absoluteNumber > 0.0031308) {\n    return sign * (absoluteNumber ** (1 / 2.4) * 1.055 - 0.055);\n  }\n\n  return input * 12.92;\n}\n\n/** Convert oklab to RGB */\nexport default function oklab2rgb(input: ConverterParameters<LAB>, precision = 0): RGB {\n  const { l: L, a: A, b: B } = parseInput(input, 'oklab');\n\n  const l = (L + LAB_TO_LMS.l[0] * A + LAB_TO_LMS.l[1] * B) ** 3;\n  const m = (L + LAB_TO_LMS.m[0] * A + LAB_TO_LMS.m[1] * B) ** 3;\n  const s = (L + LAB_TO_LMS.s[0] * A + LAB_TO_LMS.s[1] * B) ** 3;\n\n  const r = 255 * lrgb2rgb(LSM_TO_RGB.r[0] * l + LSM_TO_RGB.r[1] * m + LSM_TO_RGB.r[2] * s);\n  const g = 255 * lrgb2rgb(LSM_TO_RGB.g[0] * l + LSM_TO_RGB.g[1] * m + LSM_TO_RGB.g[2] * s);\n  const b = 255 * lrgb2rgb(LSM_TO_RGB.b[0] * l + LSM_TO_RGB.b[1] * m + LSM_TO_RGB.b[2] * s);\n\n  return {\n    r: clamp(round(r, precision), 0, 255),\n    g: clamp(round(g, precision), 0, 255),\n    b: clamp(round(b, precision), 0, 255),\n  };\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklab2rgb from '~/converters/oklab2rgb';\nimport rgb2hex from '~/converters/rgb2hex';\nimport { ConverterParameters, HEX, LAB } from '~/types';\n\n/** Convert oklab to HEX */\nexport default function oklab2hex(input: ConverterParameters<LAB>): HEX {\n  const value = parseInput(input, 'oklab');\n\n  return rgb2hex(oklab2rgb(value));\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklab2rgb from '~/converters/oklab2rgb';\nimport rgb2hsl from '~/converters/rgb2hsl';\nimport { ConverterParameters, HSL, LAB } from '~/types';\n\n/** Convert oklab to HSL */\nexport default function oklab2hsl(input: ConverterParameters<LAB>): HSL {\n  const value = parseInput(input, 'oklab');\n\n  return rgb2hsl(oklab2rgb(value));\n}\n","/* eslint-disable prefer-const */\nimport { DEG2RAD } from '~/modules/constants';\nimport { parseInput, restrictValues } from '~/modules/utils';\n\nimport { ConverterParameters, LAB, LCH } from '~/types';\n\nconst { sin, cos } = Math;\n\n/** Convert oklch to oklab */\nexport default function oklch2oklab(input: ConverterParameters<LCH>, precision?: number): LAB {\n  /*\n  Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n  These formulas were invented by David Dalrymple to obtain maximum contrast without going\n  out of gamut if the parameters are in the range 0-1.\n\n  A saturation multiplier was added by Gregor Aisch\n  */\n  let { l, c, h } = parseInput(input, 'oklch');\n\n  /* c8 ignore next 3 */\n  if (Number.isNaN(h) || h < 0) {\n    h = 0;\n  }\n\n  return restrictValues({ l, a: c * cos(h * DEG2RAD), b: c * sin(h * DEG2RAD) }, precision);\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklab2rgb from '~/converters/oklab2rgb';\nimport oklch2oklab from '~/converters/oklch2oklab';\nimport { ConverterParameters, LCH, RGB } from '~/types';\n\n/** Convert oklch to RGB */\nexport default function oklch2rgb(input: ConverterParameters<LCH>, precision = 0): RGB {\n  const value = parseInput(input, 'oklch');\n\n  return oklab2rgb(oklch2oklab(value), precision);\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklch2rgb from '~/converters/oklch2rgb';\nimport rgb2hex from '~/converters/rgb2hex';\nimport { ConverterParameters, HEX, LCH } from '~/types';\n\n/** Convert oklch to HEX */\nexport default function oklch2hex(input: ConverterParameters<LCH>): HEX {\n  const value = parseInput(input, 'oklch');\n\n  return rgb2hex(oklch2rgb(value));\n}\n","import { parseInput } from '~/modules/utils';\n\nimport oklch2rgb from '~/converters/oklch2rgb';\nimport rgb2hsl from '~/converters/rgb2hsl';\nimport { ConverterParameters, HSL, LCH } from '~/types';\n\n/** Convert oklch to HSL */\nexport default function oklch2hsl(input: ConverterParameters<LCH>): HSL {\n  const value = parseInput(input, 'oklch');\n\n  return rgb2hsl(oklch2rgb(value));\n}\n","import { COLOR_KEYS, MESSAGES } from '~/modules/constants';\nimport { extractAlphaFromHex } from '~/modules/hex-utils';\nimport { invariant } from '~/modules/invariant';\nimport { hasValidMatches, isHex, isString } from '~/modules/validators';\n\nimport hex2rgb from '~/converters/hex2rgb';\nimport { ColorModelKey, PlainObject } from '~/types';\n\nexport type ExtractColorPartsReturn = {\n  alpha?: number;\n  model: ColorModelKey;\n} & PlainObject<number>;\n\n/**\n * Extract the color parts from a CSS color string.\n * Hex colors are not supported.\n */\nexport default function extractColorParts(input: string) {\n  invariant(isString(input), MESSAGES.inputString);\n\n  if (isHex(input)) {\n    const keys = COLOR_KEYS.rgb;\n    const { r, g, b } = hex2rgb(input);\n    const alpha = extractAlphaFromHex(input);\n\n    return {\n      model: 'rgb' as ColorModelKey,\n      [keys[0]]: r,\n      [keys[1]]: g,\n      [keys[2]]: b,\n      alpha: alpha < 1 ? alpha : undefined,\n    } as ExtractColorPartsReturn;\n  }\n\n  const colorRegex =\n    /(?:(rgb|hsl|oklab|oklch)a?\\s*\\(\\s*([\\d%.-]+)\\s*[ ,/]\\s*([\\d%.-]+)\\s*[ ,/]\\s*([\\d%.-]+)(?:\\s*[ ,/]\\s*([\\d%.-]+))?\\s*\\))/i;\n\n  const matches = colorRegex.exec(input);\n\n  invariant(hasValidMatches(matches), MESSAGES.invalidCSS);\n\n  const model = matches[1] as ColorModelKey;\n  const keys = COLOR_KEYS[model];\n  let alpha = matches[5] ? parseFloat(matches[5]) : 1;\n\n  if (alpha > 1) {\n    alpha /= 100;\n  }\n\n  return {\n    model,\n    [keys[0]]: parseFloat(matches[2]),\n    [keys[1]]: parseFloat(matches[3]),\n    [keys[2]]: parseFloat(matches[4]),\n    alpha: alpha < 1 ? alpha : undefined,\n  } as ExtractColorPartsReturn;\n}\n","import { MESSAGES, PRECISION } from '~/modules/constants';\nimport { CSSColor, cssColors } from '~/modules/css-colors';\nimport { convertAlphaToHex, extractAlphaFromHex, removeAlphaFromHex } from '~/modules/hex-utils';\nimport { invariant } from '~/modules/invariant';\nimport { addAlpha, round } from '~/modules/utils';\nimport { isHex, isNamedColor, isString } from '~/modules/validators';\n\nimport * as converters from '~/converters';\nimport extractColorParts from '~/extract-color-parts';\nimport { ColorReturn, ColorTuple, ColorType } from '~/types';\n\n/**\n * Parse CSS color\n */\nexport default function parseCSS<T extends ColorType>(input: string, format?: T): ColorReturn<T> {\n  invariant(isString(input), MESSAGES.inputString);\n\n  let result: any;\n\n  const value = isNamedColor(input) ? cssColors[input.toLowerCase() as CSSColor] : input;\n\n  const output = format ?? (isHex(value) ? 'hex' : extractColorParts(value).model);\n\n  const colorParams = (params: Record<string, number>) => Object.values(params) as ColorTuple;\n\n  if (isHex(value)) {\n    const alpha = extractAlphaFromHex(value);\n\n    switch (output) {\n      case 'hsl': {\n        result = addAlpha(converters.hex2hsl(value), alpha);\n        break;\n      }\n      case 'oklab': {\n        result = addAlpha(converters.hex2oklab(value), alpha);\n        break;\n      }\n      case 'oklch': {\n        result = addAlpha(converters.hex2oklch(value), alpha);\n        break;\n      }\n      case 'rgb': {\n        result = addAlpha(converters.hex2rgb(value), alpha);\n        break;\n      }\n      default: {\n        result = `${removeAlphaFromHex(value)}${alpha !== 1 ? convertAlphaToHex(alpha) : ''}`;\n        break;\n      }\n    }\n\n    return result as ColorReturn<T>;\n  }\n\n  switch (output) {\n    case 'hsl': {\n      const { alpha, model, ...color } = extractColorParts(value);\n\n      if (['oklab', 'oklch'].includes(model) && color.l > 1) {\n        color.l = round(color.l / 100, PRECISION);\n      }\n\n      result = addAlpha(\n        model === 'hsl' ? color : converters[`${model}2hsl`](colorParams(color)),\n        alpha,\n      );\n\n      break;\n    }\n    case 'oklab': {\n      const { alpha, model, ...color } = extractColorParts(value);\n\n      if (['oklab', 'oklch'].includes(model) && color.l > 1) {\n        color.l = round(color.l / 100, PRECISION);\n      }\n\n      result = addAlpha(\n        model === 'oklab' ? color : converters[`${model}2oklab`](colorParams(color)),\n        alpha,\n      );\n\n      break;\n    }\n    case 'oklch': {\n      const { alpha, model, ...color } = extractColorParts(value);\n\n      if (['oklab', 'oklch'].includes(model) && color.l > 1) {\n        color.l = round(color.l / 100, PRECISION);\n      }\n\n      result = addAlpha(\n        model === 'oklch' ? color : converters[`${model}2oklch`](colorParams(color)),\n        alpha,\n      );\n      break;\n    }\n    case 'rgb': {\n      const { alpha, model, ...color } = extractColorParts(value);\n\n      if (['oklab', 'oklch'].includes(model) && color.l > 1) {\n        color.l /= 100;\n      }\n\n      result = addAlpha(\n        model === 'rgb' ? color : converters[`${model}2rgb`](colorParams(color)),\n        alpha,\n      );\n      break;\n    }\n\n    case 'hex':\n    default: {\n      const { alpha, model, ...color } = extractColorParts(value);\n      let alphaPrefix = '';\n\n      if (['oklab', 'oklch'].includes(model) && color.l > 1) {\n        color.l = round(color.l / 100, PRECISION);\n      }\n\n      if (alpha) {\n        alphaPrefix = convertAlphaToHex(alpha);\n      }\n\n      result = `${converters[`${model}2hex`](colorParams(color))}${alphaPrefix}`;\n\n      break;\n    }\n  }\n\n  return result as ColorReturn<T>;\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { addAlphaToHex } from '~/modules/hex-utils';\nimport { invariant } from '~/modules/invariant';\nimport { addAlpha, limit } from '~/modules/utils';\nimport { isHex, isHSL, isLAB, isLCH, isPlainObject, isRGB, isString } from '~/modules/validators';\n\nimport * as converters from '~/converters';\nimport extractColorParts from '~/extract-color-parts';\nimport parseCSS from '~/parse-css';\nimport { Colors, HSL, LAB, LCH, PlainObject, RGB } from '~/types';\n\nexport default function parseColor(color: string | HSL | LAB | LCH | RGB): Colors {\n  invariant(!!color, MESSAGES.input);\n\n  const output: PlainObject = {};\n\n  if (isString(color)) {\n    const { alpha = 1 } = extractColorParts(color);\n    const type = isHex(color) ? 'hex' : extractColorParts(color).model;\n\n    output.hex = addAlphaToHex(parseCSS(color, 'hex'), alpha);\n    output.hsl = addAlpha(parseCSS(color, 'hsl'), alpha);\n    output.oklab = addAlpha(parseCSS(color, 'oklab'), alpha);\n    output.oklch = addAlpha(parseCSS(color, 'oklch'), alpha);\n    output.rgb = addAlpha(parseCSS(color, 'rgb'), alpha);\n\n    output.alpha = alpha;\n    output.type = type;\n  } else if (isPlainObject(color)) {\n    const { alpha = 1 } = color;\n\n    if (isHSL(color)) {\n      output.hsl = {\n        h: limit(color.h, 'hsl', 'h'),\n        s: limit(color.s, 'hsl', 's'),\n        l: limit(color.l, 'hsl', 'l'),\n      };\n      output.rgb = converters.hsl2rgb(output.hsl);\n      output.oklab = converters.hsl2oklab(output.hsl);\n      output.oklch = converters.hsl2oklch(output.hsl);\n      output.type = 'hsl';\n    } else if (isLAB(color)) {\n      output.hsl = converters.oklab2hsl(color);\n      output.oklab = color;\n      output.oklch = converters.oklab2oklch(color);\n      output.rgb = converters.oklab2rgb(color);\n      output.type = 'oklab';\n    } else if (isLCH(color)) {\n      output.hsl = converters.oklch2hsl(color);\n      output.oklab = converters.oklch2oklab(color);\n      output.oklch = color;\n      output.rgb = converters.oklch2rgb(color);\n      output.type = 'oklch';\n    } else if (isRGB(color)) {\n      output.rgb = {\n        r: limit(color.r, 'rgb', 'r'),\n        g: limit(color.g, 'rgb', 'g'),\n        b: limit(color.b, 'rgb', 'b'),\n      };\n      output.hsl = converters.rgb2hsl(output.rgb);\n      output.oklab = converters.rgb2oklab(output.rgb);\n      output.oklch = converters.rgb2oklch(output.rgb);\n      output.type = 'rgb';\n    } else {\n      throw new Error('invalid color');\n    }\n\n    output.hex = addAlphaToHex(converters.hsl2hex(output.hsl), alpha);\n    output.hsl = addAlpha(output.hsl, alpha);\n    output.oklab = addAlpha(output.oklab, alpha);\n    output.oklch = addAlpha(output.oklch, alpha);\n    output.rgb = addAlpha(output.rgb, alpha);\n\n    output.alpha = alpha;\n  } else {\n    throw new Error(MESSAGES.input);\n  }\n\n  return output as Colors;\n}\n","import { MESSAGES, PRECISION } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isString } from '~/modules/validators';\n\nimport parseCSS from '~/parse-css';\n\n/**\n * Get the brightness difference between 2 colors.\n */\nexport default function brightnessDifference(\n  left: string,\n  right: string,\n  precision = PRECISION,\n): number {\n  invariant(isString(left), MESSAGES.left);\n  invariant(isString(right), MESSAGES.right);\n\n  const RGBLeft = parseCSS(left, 'rgb');\n  const RGBRight = parseCSS(right, 'rgb');\n\n  const brightnessLeft = (RGBLeft.r * 299 + RGBLeft.g * 587 + RGBLeft.b * 114) / 1000;\n  const brightnessRight = (RGBRight.r * 299 + RGBRight.g * 587 + RGBRight.b * 114) / 1000;\n\n  return round(Math.abs(brightnessRight - brightnessLeft), precision);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isString } from '~/modules/validators';\n\nimport parseCSS from '~/parse-css';\n\n/**\n * Get the chroma of a color.\n */\nexport default function chroma(input: string): number {\n  invariant(isString(input), MESSAGES.inputString);\n\n  const { r, g, b } = parseCSS(input, 'rgb');\n\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n\n  return round((max - min) / 255, 4);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isString } from '~/modules/validators';\n\nimport parseCSS from '~/parse-css';\n\n/**\n * Get the difference between 2 colors.\n */\nexport default function colorDifference(left: string, right: string): number {\n  invariant(isString(left), MESSAGES.left);\n  invariant(isString(right), MESSAGES.right);\n\n  const RGBLeft = parseCSS(left, 'rgb');\n  const RGBRight = parseCSS(right, 'rgb');\n\n  return (\n    Math.max(RGBLeft.r, RGBRight.r) -\n    Math.min(RGBLeft.r, RGBRight.r) +\n    (Math.max(RGBLeft.g, RGBRight.g) - Math.min(RGBLeft.g, RGBRight.g)) +\n    (Math.max(RGBLeft.b, RGBRight.b) - Math.min(RGBLeft.b, RGBRight.b))\n  );\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isString } from '~/modules/validators';\n\nimport parseCSS from '~/parse-css';\n\n/**\n * Get the luminance of a color.\n */\nexport default function luminance(input: string): number {\n  invariant(isString(input), MESSAGES.inputString);\n\n  const { r, g, b } = parseCSS(input, 'rgb');\n\n  const rgb = [r / 255, g / 255, b / 255];\n\n  for (let index = 0; index < rgb.length; index++) {\n    if (rgb[index] <= 0.03928) {\n      rgb[index] /= 12.92;\n    } else {\n      rgb[index] = ((rgb[index] + 0.055) / 1.055) ** 2.4;\n    }\n  }\n\n  return round(0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2], 4);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isString } from '~/modules/validators';\n\nimport getLuminance from '~/luminance';\n\n/**\n * Get the color contrast between 2 colors.\n */\nexport default function contrast(left: string, right: string): number {\n  invariant(isString(left), MESSAGES.left);\n  invariant(isString(right), MESSAGES.right);\n\n  const LuminanceLeft = getLuminance(left);\n  const LuminanceRight = getLuminance(right);\n\n  return round(\n    LuminanceLeft >= LuminanceRight\n      ? (LuminanceLeft + 0.05) / (LuminanceRight + 0.05)\n      : (LuminanceRight + 0.05) / (LuminanceLeft + 0.05),\n  );\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isString } from '~/modules/validators';\n\nimport getBrightnessDifference from '~/brightness-difference';\nimport getColorDifference from '~/color-difference';\nimport getContrast from '~/contrast';\nimport { Analysis } from '~/types';\n\n/**\n * Check 2 colors for WCAG compliance.\n */\nexport default function compare(left: string, right: string): Analysis {\n  invariant(isString(left), MESSAGES.left);\n  invariant(isString(right), MESSAGES.right);\n\n  const colorThreshold = 500;\n  const brightnessThreshold = 125;\n\n  const colorDifference = getColorDifference(left, right);\n  const contrast = getContrast(left, right);\n  const brightnessDifference = getBrightnessDifference(left, right);\n\n  const isBright = brightnessDifference >= brightnessThreshold;\n  const hasEnoughDifference = colorDifference >= colorThreshold;\n\n  let compliant = 0;\n\n  if (isBright && hasEnoughDifference) {\n    compliant = 2;\n  } else if (isBright || hasEnoughDifference) {\n    compliant = 1;\n  }\n\n  return {\n    brightnessDifference,\n    colorDifference,\n    compliant,\n    contrast,\n    largeAA: contrast >= 3,\n    largeAAA: contrast >= 4.5,\n    normalAA: contrast >= 4.5,\n    normalAAA: contrast >= 7,\n  };\n}\n","import { MESSAGES, PRECISION } from '~/modules/constants';\nimport { CSSColor, cssColors } from '~/modules/css-colors';\nimport { convertAlphaToHex, removeAlphaFromHex } from '~/modules/hex-utils';\nimport { invariant } from '~/modules/invariant';\nimport { restrictValues, round } from '~/modules/utils';\nimport {\n  isHex,\n  isHSL,\n  isLAB,\n  isLCH,\n  isNamedColor,\n  isRGB,\n  isString,\n  isValidColorModel,\n} from '~/modules/validators';\n\nimport * as converters from '~/converters';\nimport extractColorParts from '~/extract-color-parts';\nimport { Alpha, ColorModel, ColorReturn, ColorType, HEX } from '~/types';\n\nexport interface FormatCSSOptions {\n  /**\n   * The alpha value of the color.\n   */\n  alpha?: Alpha;\n  /**\n   * Output color format.\n   * @default 'hex'\n   */\n  format?: ColorType;\n  /**\n   * The number of digits of the output.\n   * @default 5\n   */\n  precision?: number;\n  /**\n   * The separator between the values.\n   *\n   * oklab and oklch always use space as a separator.\n   * @default ' '\n   */\n  separator?: string;\n}\n\nfunction getColorModel<T extends ColorModel | string>(input: T): ColorType {\n  if (isHex(input) || isNamedColor(input)) {\n    return 'hex';\n  }\n\n  if (isString(input)) {\n    return extractColorParts(input).model;\n  } else if (isHSL(input)) {\n    return 'hsl';\n  } else if (isLAB(input)) {\n    return 'oklab';\n  } else if (isLCH(input)) {\n    return 'oklch';\n  } else if (isRGB(input)) {\n    return 'rgb';\n  }\n\n  throw new Error(MESSAGES.invalid);\n}\n\nfunction getColorValue<TInput extends ColorModel | string, TOutput extends ColorType>(\n  input: TInput,\n  output: TOutput,\n): ColorReturn<TOutput> {\n  const value = isNamedColor(input) ? cssColors[input.toLowerCase() as CSSColor] : input;\n\n  const from = getColorModel(value);\n\n  if (from === output) {\n    return value as ColorReturn<TOutput>;\n  }\n\n  const converterKey = `${from}2${output}` as keyof typeof converters; // Retrieve the converter function dynamically\n  const converter = (converters as Record<string, (x: any) => any>)[converterKey];\n\n  if (!converter) {\n    throw new Error(`Converter not found for ${from} to ${output}`);\n  }\n\n  switch (from) {\n    case 'hex': {\n      if (output === 'hex') {\n        return value as ColorReturn<TOutput>;\n      }\n\n      return converter(value);\n    }\n    case 'hsl': {\n      if (output === 'hsl') {\n        return value as ColorReturn<TOutput>;\n      }\n\n      return converter(value);\n    }\n    case 'oklab': {\n      if (output === 'oklab') {\n        return value as ColorReturn<TOutput>;\n      }\n\n      return converter(value);\n    }\n    case 'oklch': {\n      if (output === 'oklch') {\n        return value as ColorReturn<TOutput>;\n      }\n\n      return converter(value);\n    }\n    default: {\n      if (output === 'rgb') {\n        return value as ColorReturn<TOutput>;\n      }\n\n      return converter(value);\n    }\n  }\n}\n\nexport default function formatCSS<T extends ColorModel | HEX>(\n  input: T,\n  options: FormatCSSOptions = {},\n): string {\n  invariant(isHex(input) || isValidColorModel(input), MESSAGES.invalid);\n\n  const { alpha, format = 'hex', precision = PRECISION, separator: baseSeparator = ' ' } = options;\n\n  const opacity = alpha && alpha !== 1 ? `${round(alpha * 100)}%` : null;\n  let params = [];\n  let separator = baseSeparator;\n\n  switch (format) {\n    case 'hsl': {\n      const { h, s, l } = getColorValue(input, 'hsl');\n\n      params = [h, `${s}%`, `${l}%`];\n      break;\n    }\n    case 'oklab': {\n      separator = ' ';\n      const { l, a, b } = restrictValues(getColorValue(input, 'oklab'), precision);\n\n      params = [`${round(l * 100, precision)}%`, a, b];\n      break;\n    }\n    case 'oklch': {\n      separator = ' ';\n      const { l, c, h } = restrictValues(getColorValue(input, 'oklch'), precision);\n\n      params = [`${round(l * 100, precision)}%`, c, h];\n      break;\n    }\n    case 'rgb': {\n      const { r, g, b } = getColorValue(input, 'rgb');\n\n      params = [r, g, b];\n      break;\n    }\n    default: {\n      const hex = removeAlphaFromHex(getColorValue(input, 'hex'));\n\n      if (alpha && alpha !== 1) {\n        return `${hex}${convertAlphaToHex(alpha)}`;\n      }\n\n      return hex;\n    }\n  }\n\n  return `${format}(${params.join(separator)}${opacity ? ` / ${opacity}` : ''})`;\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { clamp } from '~/modules/utils';\nimport { isHex, isNamedColor, isNumber, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\nimport formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport { ColorModelKeys, ColorType } from '~/types';\n\n/**\n * Update color properties\n */\nexport default function updater(\n  key: ColorModelKeys<'hsl'>,\n  operator: '+' | '-',\n  format?: ColorType,\n) {\n  return (input: string, amount: number) => {\n    invariant(isString(input), MESSAGES.inputString);\n    invariant(isNumber(amount), MESSAGES.alpha);\n\n    const color = parseCSS(input, 'hsl');\n    const output = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n    return formatCSS(\n      {\n        ...color,\n        [key]: clamp(color[key] + (operator === '+' ? amount : -amount), 0, 100),\n      },\n      { format: format ?? output },\n    );\n  };\n}\n","import updater from '~/modules/updater';\n\nimport { Amount, ColorType } from '~/types';\n\n/**\n * Decrease color lightness\n */\nexport default function darken(input: string, amount: Amount, format?: ColorType): string {\n  return updater('l', '-', format)(input, amount);\n}\n","import updater from '~/modules/updater';\n\nimport { Amount, ColorType } from '~/types';\n\n/**\n * Decrease color saturation\n */\nexport default function desaturate(input: string, amount: Amount, format?: ColorType) {\n  return updater('s', '-', format)(input, amount);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { constrainDegrees } from '~/modules/utils';\nimport { isHex, isNamedColor, isNumber, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\nimport formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport { ColorType, Degrees } from '~/types';\n\n/**\n * Change the color hue\n */\nexport default function rotate(input: string, degrees: Degrees, format?: ColorType) {\n  invariant(isString(input), MESSAGES.inputString);\n  invariant(isNumber(degrees), 'degrees must be a number');\n\n  const color = parseCSS(input, 'hsl');\n\n  const output = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n  return formatCSS(\n    {\n      ...color,\n      h: constrainDegrees(color.h, degrees),\n    },\n    { format: format ?? output },\n  );\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex, isNamedColor, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\nimport formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport rotate from '~/rotate';\nimport { HEX } from '~/types';\n\n/**\n * Invert the color\n */\nexport default function invert(input: string) {\n  invariant(isString(input), MESSAGES.inputString);\n  const format = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n  const hex = parseCSS(input, 'hex');\n\n  return formatCSS(rotate(hex, 180) as HEX, { format });\n}\n","import updater from '~/modules/updater';\n\nimport { Amount, ColorType } from '~/types';\n\n/**\n * Increase color lightness\n */\nexport default function lighten(input: string, amount: Amount, format?: ColorType) {\n  return updater('l', '+', format)(input, amount);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex, isNamedColor, isNumber, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\nimport formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport { Alpha, ColorType } from '~/types';\n\n/**\n * Make the color transparent\n */\nexport default function opacify(input: string, alpha: Alpha, format?: ColorType): string {\n  invariant(isString(input), MESSAGES.inputString);\n  invariant(isNumber(alpha), MESSAGES.alpha);\n  const type = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n  const rgb = parseCSS(input, 'rgb');\n\n  return formatCSS(rgb, { format: format ?? type, alpha });\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { cssColors } from '~/modules/css-colors';\nimport { extractAlphaFromHex } from '~/modules/hex-utils';\nimport { invariant } from '~/modules/invariant';\nimport { isHex, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\n\nexport default function opacity(input: string): number {\n  invariant(isString(input), MESSAGES.inputString);\n\n  if (isHex(input)) {\n    return extractAlphaFromHex(input);\n  } else if (Object.keys(cssColors).includes(input)) {\n    return 1;\n  }\n\n  const { alpha } = extractColorParts(input);\n\n  if (!alpha) {\n    return 1;\n  }\n\n  return alpha;\n}\n","import updater from '~/modules/updater';\n\nimport { ColorType } from '~/types';\n\n/**\n * Increase color saturation\n */\nexport default function saturate(input: string, amount: number, format?: ColorType) {\n  return updater('s', '+', format)(input, amount);\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isString } from '~/modules/validators';\n\nimport hex2rgb from '~/converters/hex2rgb';\nimport parseCSS from '~/parse-css';\n\nexport interface TextColorOptions {\n  /**\n   * The dark color to return if the input is light.\n   * @default '#000000'\n   */\n  darkColor?: string;\n  /**\n   * The light color to return if the input is dark.\n   * @default '#ffffff'\n   */\n  lightColor?: string;\n  /**\n   * The threshold to determine if the color is light or dark.\n   *\n   * A number between 0 and 255.\n   * @default 128\n   */\n  threshold?: number;\n}\n\n/**\n * Get the contrasted color for a given hex.\n */\nexport default function textColor(input: string, options: TextColorOptions = {}): string {\n  const { darkColor = '#000000', lightColor = '#ffffff', threshold = 128 } = options;\n\n  invariant(isString(input), MESSAGES.inputString);\n  invariant(threshold >= 0 && threshold <= 255, MESSAGES.threshold);\n\n  try {\n    const { r, g, b } = hex2rgb(parseCSS(input, 'hex'));\n    const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n    return yiq >= threshold ? darkColor : lightColor;\n  } catch (error) {\n    /* eslint-disable no-console */\n    console.warn(`Invalid color input: ${input}`);\n    console.warn(error);\n    /* eslint-enable no-console */\n\n    return darkColor; // Default to dark color in case of error\n  }\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { clamp, round } from '~/modules/utils';\nimport { isNumber, isString } from '~/modules/validators';\n\nimport formatCSS from '~/format-css';\nimport opacity from '~/opacity';\nimport parseCSS from '~/parse-css';\nimport { Alpha, ColorType } from '~/types';\n\n/**\n * Increase the color transparency.\n */\nexport default function transparentize(input: string, alpha: Alpha, format?: ColorType): string {\n  invariant(isString(input), MESSAGES.inputString);\n  invariant(isNumber(alpha), MESSAGES.alpha);\n\n  invariant(alpha >= -1 && alpha <= 1, MESSAGES.alpha);\n\n  const oklch = parseCSS(input, 'oklab');\n\n  const value = round(clamp(opacity(input) - alpha, 0, 1));\n\n  return formatCSS(oklch, { format, alpha: value });\n}\n","import { invariant } from '~/modules/invariant';\nimport parseColor from '~/modules/parse-color';\n\nimport brightnessDifference from '~/brightness-difference';\nimport chroma from '~/chroma';\nimport colorDifference from '~/color-difference';\nimport compare from '~/compare';\nimport contrast from '~/contrast';\nimport darken from '~/darken';\nimport desaturate from '~/desaturate';\nimport formatCSS from '~/format-css';\nimport invert from '~/invert';\nimport lighten from '~/lighten';\nimport luminance from '~/luminance';\nimport opacify from '~/opacify';\nimport opacity from '~/opacity';\nimport rotate from '~/rotate';\nimport saturate from '~/saturate';\nimport textColor from '~/text-color';\nimport transparentize from '~/transparentize';\nimport { Alpha, Amount, Analysis, ColorType, Degrees, HEX, HSL, LAB, LCH, RGB } from '~/types';\n\nexport interface ColorizrOptions {\n  /**\n   * Output color format.\n   *\n   * If not specified, the output will use the same format as the input color.\n   */\n  format?: ColorType;\n}\n\nexport default class Colorizr {\n  public alpha: Alpha;\n  public hex: HEX;\n  public hsl: HSL;\n  public oklab: LAB;\n  public oklch: LCH;\n  public rgb: RGB;\n  public type: ColorType;\n\n  constructor(color: string | HSL | LAB | LCH | RGB, options: ColorizrOptions = {}) {\n    invariant(!!color, 'color is required');\n\n    const { alpha, hex, hsl, oklab, oklch, rgb, type } = parseColor(color);\n\n    this.hex = hex;\n    this.hsl = hsl;\n    this.oklab = oklab;\n    this.oklch = oklch;\n    this.rgb = rgb;\n\n    this.alpha = alpha;\n    this.type = options.format ?? type;\n  }\n\n  /**\n   * Get css string\n   */\n  get css(): string {\n    return this.selectedColor;\n  }\n\n  /**\n   * Get the red value\n   */\n  get red(): number {\n    return Number(this.rgb.r);\n  }\n\n  /**\n   * Get the green value\n   */\n  get green(): number {\n    return Number(this.rgb.g);\n  }\n\n  /**\n   * Get the blue value\n   */\n  get blue(): number {\n    return Number(this.rgb.b);\n  }\n\n  /**\n   * Get the hue value\n   */\n  get hue(): number {\n    return Number(this.hsl.h);\n  }\n\n  /**\n   * Get the saturation value\n   */\n  get saturation(): number {\n    return Number(this.hsl.s);\n  }\n\n  /**\n   * Get the lightness value\n   */\n  get lightness(): number {\n    return Number(this.hsl.l);\n  }\n\n  /**\n   * Get the luminance value\n   */\n  get luminance(): number {\n    return luminance(this.selectedColor);\n  }\n\n  /**\n   * Get the chroma value\n   */\n  get chroma(): number {\n    return chroma(this.selectedColor);\n  }\n\n  get opacity(): number {\n    return opacity(this.selectedColor);\n  }\n\n  /**\n   * Get the contrasted color\n   */\n  get textColor(): string {\n    return textColor(this.selectedColor);\n  }\n\n  private get selectedColor(): string {\n    return formatCSS(this[this.type], { format: this.type, alpha: this.alpha });\n  }\n\n  public brightnessDifference(input: string): number {\n    return brightnessDifference(this.selectedColor, input);\n  }\n\n  public colorDifference(input: string): number {\n    return colorDifference(this.selectedColor, input);\n  }\n\n  /**\n   * Test 2 colors for compliance\n   */\n  public compare(input: string): Analysis {\n    return compare(this.selectedColor, input);\n  }\n\n  public contrast(input: string): number {\n    return contrast(this.selectedColor, input);\n  }\n\n  public format(type: ColorType, precision?: number): string {\n    return formatCSS(this.rgb, {\n      alpha: this.alpha,\n      format: type,\n      precision,\n    });\n  }\n\n  /**\n   * Increase lightness\n   */\n  public lighten(amount: Amount): string {\n    return lighten(this.selectedColor, amount);\n  }\n\n  /**\n   * Decrease lightness\n   */\n  public darken(amount: Amount): string {\n    return darken(this.selectedColor, amount);\n  }\n\n  /**\n   * Increase saturation\n   */\n  public saturate(amount: Amount): string {\n    return saturate(this.selectedColor, amount);\n  }\n\n  /**\n   * Decrease saturation\n   */\n  public desaturate(amount: Amount): string {\n    return desaturate(this.selectedColor, amount);\n  }\n\n  /**\n   * Invert color\n   */\n  public invert(): string {\n    return invert(this.selectedColor);\n  }\n\n  /**\n   * Add opacity to the color.\n   */\n  public opacify(alpha: Alpha = 0.9): string {\n    return opacify(this.selectedColor, alpha, this.type);\n  }\n\n  /**\n   * Rotate color\n   */\n  public rotate(degrees: Degrees): string {\n    return rotate(this.selectedColor, degrees);\n  }\n\n  /**\n   * Make the color more transparent\n   */\n  public transparentize(alpha: Alpha = 0.1): string {\n    return transparentize(this.selectedColor, alpha, this.type);\n  }\n}\n","import formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport { ColorType } from '~/types';\n\n/**\n * Convert a color string to another format.\n */\nexport default function convert(input: string, format: ColorType) {\n  const value = parseCSS(input, format);\n\n  return formatCSS(value, { format });\n}\n","import parseCSS from '~/parse-css';\n\nexport default function isValidColor(input: string): boolean {\n  try {\n    parseCSS(input);\n\n    return true;\n  } catch {\n    return false;\n  }\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { cssColors } from '~/modules/css-colors';\nimport { invariant } from '~/modules/invariant';\nimport { isString } from '~/modules/validators';\n\nimport parseCSS from '~/parse-css';\n\n/**\n * Get the name of a color.\n * Returns the hex value if the color is not found.\n */\nexport default function name(input: string): string {\n  invariant(isString(input), MESSAGES.inputString);\n\n  const hex = parseCSS(input, 'hex');\n\n  const [color] = Object.entries(cssColors).find(([, value]) => value === hex) || [];\n\n  return color ?? hex;\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex, isNamedColor, isPlainObject, isString } from '~/modules/validators';\n\nimport convert from '~/convert';\nimport hex2hsl from '~/converters/hex2hsl';\nimport hsl2hex from '~/converters/hsl2hex';\nimport extractColorParts from '~/extract-color-parts';\nimport parseCSS from '~/parse-css';\nimport rotate from '~/rotate';\nimport { ColorType, HEX } from '~/types';\n\nexport interface PaletteOptions {\n  /**\n   * Output color format.\n   *\n   * If not specified, the output will use the same format as the input color.\n   */\n  format?: ColorType;\n  /**\n   * Adjusts the lightness of the base color before generating the palette.\n   *\n   * Value should be between 0 and 100.\n   */\n  lightness?: number;\n  /**\n   * Adjusts the saturation of the base color before generating the palette.\n   *\n   * Value should be between 0 and 100.\n   */\n  saturation?: number;\n  /**\n   * The number of colors to generate in the palette.\n   *\n   * Minimum value is 2.\n   * @default 6\n   */\n  size?: number;\n  /**\n   * Generate a monochromatic palette.\n   *\n   * For more options, use the `swatch` function.\n   */\n  type?: 'monochromatic';\n}\n\nexport default function palette(input: string, options: PaletteOptions = {}): string[] {\n  invariant(isString(input), MESSAGES.inputString);\n  invariant(isPlainObject(options), MESSAGES.options);\n\n  const { format, lightness, saturation, size = 6, type } = options;\n  const hsl = parseCSS(input, 'hsl');\n  const colorFormat = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n  const output: string[] = [];\n\n  if (type === 'monochromatic') {\n    const step = 80 / size;\n\n    for (let index = size; index > 0; index--) {\n      output.push(hsl2hex({ ...hsl, l: step * index }));\n    }\n  } else {\n    const step = 360 / size;\n\n    output.push(hsl2hex({ ...hsl, l: lightness ?? hsl.l, s: saturation ?? hsl.s }));\n\n    for (let index = 1; index < size; index++) {\n      const color = rotate(input, hsl.h + step * index, 'hex') as HEX;\n\n      output.push(hsl2hex({ ...hex2hsl(color), l: lightness ?? hsl.l, s: saturation ?? hsl.s }));\n    }\n  }\n\n  return output.map(color => convert(color, format ?? colorFormat));\n}\n","import { LAB_TO_LMS, LSM_TO_RGB, MESSAGES, PRECISION, SRGB_TO_P3 } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { round } from '~/modules/utils';\nimport { isNumber, isString } from '~/modules/validators';\n\nimport { oklch2oklab } from '~/converters';\nimport parseCSS from '~/parse-css';\nimport { ColorTuple, LCH } from '~/types';\n\nfunction multiplyMatrix(matrix: number[][], vector: ColorTuple): ColorTuple {\n  return [\n    matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2],\n    matrix[1][0] * vector[0] + matrix[1][1] * vector[1] + matrix[1][2] * vector[2],\n    matrix[2][0] * vector[0] + matrix[2][1] * vector[1] + matrix[2][2] * vector[2],\n  ];\n}\n\nfunction isInP3Gamut(color: ColorTuple): boolean {\n  const epsilon = 0.000001;\n\n  return color.every(component => component >= 0 - epsilon && component <= 1 + epsilon);\n}\n\nfunction oklabToLinearSRGB(L: number, a: number, b: number): ColorTuple {\n  const l = (L + LAB_TO_LMS.l[0] * a + LAB_TO_LMS.l[1] * b) ** 3;\n  const m = (L + LAB_TO_LMS.m[0] * a + LAB_TO_LMS.m[1] * b) ** 3;\n  const s = (L + LAB_TO_LMS.s[0] * a + LAB_TO_LMS.s[1] * b) ** 3;\n\n  return [\n    LSM_TO_RGB.r[0] * l + LSM_TO_RGB.r[1] * m + LSM_TO_RGB.r[2] * s,\n    LSM_TO_RGB.g[0] * l + LSM_TO_RGB.g[1] * m + LSM_TO_RGB.g[2] * s,\n    LSM_TO_RGB.b[0] * l + LSM_TO_RGB.b[1] * m + LSM_TO_RGB.b[2] * s,\n  ];\n}\n\nfunction oklabToLinearP3(L: number, a: number, b: number): ColorTuple {\n  const srgb = oklabToLinearSRGB(L, a, b);\n\n  return multiplyMatrix(SRGB_TO_P3, srgb);\n}\n\n/**\n * Get the maximum chroma for a given lightness and hue in the OkLCH color space\n */\nexport function getOkLCHMaxChroma(input: string | LCH, precision = PRECISION): number {\n  const { l, h } = isString(input) ? parseCSS(input, 'oklch') : input;\n\n  invariant(isNumber(l) && l >= 0 && l <= 1, MESSAGES.lightnessRange);\n  invariant(isNumber(h) && h >= 0 && h <= 360, MESSAGES.hueRange);\n\n  // Binary search parameters\n  const epsilon = 0.000001;\n  let low = 0;\n  let high = 0.5; // Increased max theoretical chroma\n\n  while (high - low > epsilon) {\n    const mid = (low + high) / 2;\n    const { l: L, a, b } = oklch2oklab({ l, c: mid, h }, 16);\n\n    const p3Color = oklabToLinearP3(L, a, b);\n\n    if (isInP3Gamut(p3Color)) {\n      low = mid;\n    } else {\n      high = mid;\n    }\n  }\n\n  return round(low, precision);\n}\n\n/**\n * Get a OkLCH color in the P3 color space.\n */\nexport function getP3Color(input: string | LCH): string {\n  const lch = isString(input) ? parseCSS(input, 'oklch') : input;\n\n  return `oklch(${lch.l} ${getOkLCHMaxChroma(lch)} ${lch.h})`;\n}\n","import formatCSS from '~/format-css';\nimport { ColorType } from '~/types';\n\n/**\n * Generate a random color.\n */\nexport default function random(type: ColorType = 'hex'): string {\n  const hsl = {\n    h: Math.floor(Math.random() * 360) + 1,\n    s: Math.floor(Math.random() * 90) + 10,\n    l: Math.floor(Math.random() * 80) + 10,\n  };\n\n  return formatCSS(hsl, { format: type });\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { isHex, isNamedColor, isString } from '~/modules/validators';\n\nimport convert from '~/convert';\nimport extractColorParts from '~/extract-color-parts';\nimport rotate from '~/rotate';\nimport { ColorType } from '~/types';\n\nexport type Scheme =\n  | 'analogous'\n  | 'complementary'\n  | 'rectangle'\n  | 'split'\n  | 'split-complementary'\n  | 'square'\n  | 'tetradic'\n  | 'triadic';\n\nexport interface SchemeOptions {\n  /**\n   * Output color format.\n   *\n   * If not specified, the output will use the same format as the input color.\n   */\n  format?: ColorType;\n  /**\n   * The type of scheme to generate.\n   * @default 'complementary'\n   */\n  type?: Scheme;\n}\n\n/**\n * Get the scheme for a color.\n */\nexport default function scheme(input: string, typeOrOptions?: Scheme | SchemeOptions): string[] {\n  invariant(isString(input), MESSAGES.inputString);\n  const { format, type = 'complementary' } = isString(typeOrOptions)\n    ? { type: typeOrOptions }\n    : (typeOrOptions ?? {});\n\n  const output = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n  const colors: string[] = [];\n\n  switch (type) {\n    case 'analogous': {\n      colors.push(rotate(input, -30), input, rotate(input, 30));\n      break;\n    }\n    case 'complementary': {\n      colors.push(input, rotate(input, 180));\n      break;\n    }\n\n    case 'split':\n    case 'split-complementary': {\n      colors.push(input, rotate(input, 150), rotate(input, 210));\n      break;\n    }\n    case 'triadic': {\n      colors.push(input, rotate(input, 120), rotate(input, 240));\n      break;\n    }\n\n    case 'tetradic':\n    case 'rectangle': {\n      colors.push(input, rotate(input, 60), rotate(input, 180), rotate(input, 240));\n      break;\n    }\n    case 'square': {\n      colors.push(input, rotate(input, 90), rotate(input, 180), rotate(input, 270));\n      break;\n    }\n    default: {\n      throw new TypeError('invalid type');\n    }\n  }\n\n  return colors.map(color => convert(color, format ?? output));\n}\n","import { MESSAGES } from '~/modules/constants';\nimport { invariant } from '~/modules/invariant';\nimport { clamp } from '~/modules/utils';\nimport { isHex, isNamedColor, isString } from '~/modules/validators';\n\nimport extractColorParts from '~/extract-color-parts';\nimport formatCSS from '~/format-css';\nimport parseCSS from '~/parse-css';\nimport { ColorTokens, ColorType, LCH } from '~/types';\n\nexport type Swatch = {\n  [key in ColorTokens]: string;\n};\n\nexport type SwatchVariant = 'deep' | 'neutral' | 'pastel' | 'subtle' | 'vibrant';\n\nexport interface SwatchOptions {\n  /**\n   * Output color format.\n   *\n   * Determines the format of the generated colors (e.g., HEX, RGB, OKLCH, etc.).\n   *\n   * If not specified, the output will match the format of the input color.\n   */\n  format?: ColorType;\n  /**\n   * The lightness tuning factor for the swatch.\n   * - 1: Linear lightness distribution.\n   * - >1: Lighter tones are emphasized.\n   * - <1: Darker tones are emphasized.\n   * @default 1.5\n   */\n  lightnessFactor?: number;\n  /**\n   * The maximum lightness value for the swatch.\n   *\n   * Defines the upper bound for the lightest color in the palette.\n   *\n   * A number between 0 and 1.\n   * @default 0.97\n   */\n  maxLightness?: number;\n  /**\n   * The minimum lightness value for the swatch.\n   *\n   * Defines the lower bound for the darkest color in the palette.\n   *\n   * A number between 0 and 1.\n   *\n   * @default 0.2\n   */\n  minLightness?: number;\n  /**\n   * Determines the scale type for the swatch.\n   * - 'fixed': Shades are distributed with pre-defined lightness intervals.\n   * - 'dynamic': Shades are distributed adaptively based on the input color.\n   * @default 'dynamic'\n   */\n  scale?: 'dynamic' | 'fixed';\n  /**\n   * The variant of the swatch.\n   * - 'deep': Generates rich and bold tones with significantly reduced lightness.\n   * - 'neutral': Generates muted tones by reducing chroma.\n   * - 'pastel': Produces soft and airy tones with significant chroma reduction.\n   * - 'subtle': Creates extremely desaturated tones, close to grayscale.\n   * - 'vibrant': Enhances chroma for bold and striking tones.\n   */\n  variant?: SwatchVariant;\n}\n\n/**\n * Generate a shade of a color based its lightness tuning factor\n */\nfunction shadeColor(input: LCH, lightness: number): LCH {\n  const { c, h } = input;\n\n  // Adjust chroma based on lightness to maintain perceptual uniformity\n  // Reduce chroma for very light and very dark colors\n  const chromaScale = c === 0 ? 1 : 4 * lightness * (1 - lightness);\n\n  // Calculate final chroma\n  const chroma = c * chromaScale;\n  const adjustedChroma = clamp(chroma, 0, 0.4);\n\n  return { l: lightness, c: adjustedChroma, h };\n}\n\n/**\n * Generate a swatch of colors based on the input color\n *\n * This utility is ideal for designers and developers who need dynamic color\n * palettes for UI themes, design systems, or data visualization. Supports\n * multiple modes, scales, and variants for flexibility.\n */\nexport default function swatch(input: string, options: SwatchOptions = {}): Swatch {\n  invariant(isString(input), MESSAGES.inputString);\n  const {\n    format,\n    lightnessFactor = 1.5,\n    maxLightness = 0.97,\n    minLightness = 0.2,\n    scale = 'dynamic',\n    variant = 'base',\n  } = options;\n\n  invariant(\n    maxLightness > minLightness && maxLightness <= 1 && minLightness >= 0,\n    'maxLightness must be greater than minLightness and within the range [0, 1].',\n  );\n\n  const lch = parseCSS(input, 'oklch');\n  const chromaScale = {\n    base: 1,\n    deep: 0.8,\n    neutral: 0.5,\n    pastel: 0.3,\n    subtle: 0.2,\n    vibrant: 1.25,\n  }[variant];\n\n  lch.l = 0.7;\n  lch.c *= chromaScale;\n\n  if (variant === 'deep') {\n    lch.l *= 0.7;\n  }\n\n  const colorFormat = isHex(input) || isNamedColor(input) ? 'hex' : extractColorParts(input).model;\n\n  const steps = 11;\n  let palette: Record<number, number> = {};\n\n  if (scale === 'dynamic') {\n    for (let index = 0; index < steps; index++) {\n      // Calculate lightness for this step\n      const lightness =\n        maxLightness - (maxLightness - minLightness) * (index / (steps - 1)) ** lightnessFactor;\n      let tone = index * 100;\n\n      if (index === 0) {\n        tone = 50;\n      } else if (index === 10) {\n        tone = 950;\n      }\n\n      palette[tone] = lightness;\n    }\n  } else {\n    palette = {\n      50: 0.97,\n      100: 0.92,\n      200: 0.85,\n      300: 0.78,\n      400: 0.69,\n      500: 0.57,\n      600: 0.46,\n      700: 0.35,\n      800: 0.24,\n      900: 0.18,\n      950: 0.1,\n    };\n  }\n\n  const output = Object.entries(palette).reduce(\n    (acc, [key, value]) => {\n      acc[Number(key) as ColorTokens] = shadeColor(lch, value);\n\n      return acc;\n    },\n    {} as Record<ColorTokens, LCH>,\n  );\n\n  return Object.entries(output).reduce((acc, [key, value]) => {\n    return {\n      ...acc,\n      [key]: formatCSS(value, { format: format ?? colorFormat }),\n    };\n  }, {} as Swatch);\n}\n","import Colorizr from '~/colorizr';\n\nexport { default as brightnessDifference } from '~/brightness-difference';\nexport { default as chroma } from '~/chroma';\nexport { default as colorDifference } from '~/color-difference';\nexport { default as compare } from '~/compare';\nexport { default as contrast } from '~/contrast';\nexport { default as convert } from '~/convert';\nexport { default as darken } from '~/darken';\nexport { default as desaturate } from '~/desaturate';\nexport { default as extractColorParts } from '~/extract-color-parts';\nexport { default as formatCSS } from '~/format-css';\nexport { default as formatHex } from '~/format-hex';\nexport { default as isValidColor } from '~/is-valid-color';\nexport { default as lighten } from '~/lighten';\nexport { default as luminance } from '~/luminance';\nexport { default as name } from '~/name';\nexport { default as palette } from '~/palette';\nexport { default as opacify } from '~/opacify';\nexport { default as opacity } from '~/opacity';\nexport { getOkLCHMaxChroma, getP3Color } from '~/p3';\nexport { default as parseCSS } from '~/parse-css';\nexport { default as random } from '~/random';\nexport { default as rotate } from '~/rotate';\nexport { default as saturate } from '~/saturate';\nexport { default as scheme } from '~/scheme';\nexport { default as swatch } from '~/swatch';\nexport { default as textColor } from '~/text-color';\nexport { default as transparentize } from '~/transparentize';\n\nexport * from '~/converters';\nexport * from '~/types';\nexport * from '~/modules/hex-utils';\nexport { isHex, isHSL, isLAB, isLCH, isRGB } from '~/modules/validators';\n\nexport type { ColorizrOptions } from '~/colorizr';\nexport type { FormatCSSOptions } from '~/format-css';\nexport type { PaletteOptions } from '~/palette';\nexport type { Scheme, SchemeOptions } from '~/scheme';\nexport type { Swatch, SwatchOptions, SwatchVariant } from '~/swatch';\nexport type { TextColorOptions } from '~/text-color';\n\n// eslint-disable-next-line unicorn/prefer-export-from\nexport default Colorizr;\n"],"mappings":"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","names":["factor","abs","chroma","chroma","sign","keys","alpha","colorDifference","contrast","brightnessDifference","opacity","chroma","palette"]}