reanimated-color-picker 5.1.0 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -619,7 +619,7 @@ const colorKitUI = () => {
|
|
|
619
619
|
b = Math.round(b);
|
|
620
620
|
a = +a.toFixed(2);
|
|
621
621
|
const hasAlpha = forceAlpha ?? a !== 1;
|
|
622
|
-
return hasAlpha ? `hwb(${h}
|
|
622
|
+
return hasAlpha ? `hwb(${h} ${w}% ${b}% / ${a ?? 1})` : `hwb(${h} ${w}% ${b}%)`;
|
|
623
623
|
},
|
|
624
624
|
array: (roundValues = true) => {
|
|
625
625
|
if (roundValues) {
|
|
@@ -384,8 +384,8 @@
|
|
|
384
384
|
"sourceRoot": "../../src/colorKit",
|
|
385
385
|
"sources": ["index.ts"],
|
|
386
386
|
"sourcesContent": [
|
|
387
|
-
"import type {\n ColorFormats,\n ColorObject,\n ColorParseResult,\n ColorTypes,\n ConversionMethods,\n HslaT,\n HslT,\n HsvaT,\n HsvT,\n HwbaT,\n HwbT,\n RgbaT,\n RgbT,\n SupportedColorFormats,\n} from './types';\n\n// If you find yourself wondering why all of this is within a single function,\n// the reason is that to execute each method on the UI thread, you must include the 'worklet' directive.\n// Functions marked with this directive are transformed by the Reanimated Babel plugin\n// into IIFE — IMMEDIATELY INVOKED FUNCTION EXPRESSION: `const fun = (function{})()`.\n// Due to the presence of numerous methods,\n// this transformation can lead to a slow initial execution.\n// To address this issue, I consolidated them into a single worklet function.\n\nexport const colorKitUI = () => {\n 'worklet';\n\n const NAMED_COLORS = {\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 darkgrey: '#a9a9a9',\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 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 green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\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 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 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\n const COLORS_REGEX = {\n // #rgb\n hex3: /^#([A-Fa-f0-9]{3})$/,\n // #rgba\n hex4: /^#([A-Fa-f0-9]{3}[A-Fa-f0-9]{1})$/,\n // #rrggbb\n hex6: /^#([A-Fa-f0-9]{6})$/,\n // #rrggbbaa\n hex8: /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\n\n hsl: [\n // hsl(360deg, 100%, 100%) hsl(360, 100%, 100%)\n /^hsl\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hsl(360deg 100% 100%) hsl(360 100% 100%)\n /^hsl\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hsla: [\n // hsla(360deg, 100%, 100%, 1.0) hsla(360, 100%, 100%, 1.0) hsl(360deg, 100%, 100%, 1.0) hsl(360, 100%, 100%, 1.0)\n /^hsla?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hsla(360deg 100% 100% / 1.0) hsla(360 100% 100% / 1.0) hsl(360deg 100% 100% / 1.0) hsl(360 100% 100% / 1.0)\n /^hsla?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n hsv: [\n // hsv(360deg, 000%, 000%) hsv(360, 100%, 100%)\n /^hsv\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hsv(360deg 000% 000%) hsv(360 100% 100%)\n /^hsv\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hsva: [\n // hsva(360deg, 100%, 100%, 1.0) hsva(360, 100%, 100%, 1.0) hsv(360deg, 100%, 100%, 1.0) hsv(360, 100%, 100%, 1.0)\n /^hsva?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hsva(360deg 100% 100% / 1.0) hsva(360 100% 100% / 1.0) hsv(360deg 100% 100% / 1.0) hsv(360 100% 100% / 1.0)\n /^hsva?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n hwb: [\n // hwb(360deg, 100%, 100%) hwb(360, 100%, 100%)\n /^hwb\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hwb(360deg 100% 100%) hwb(360 100% 100%)\n /^hwb\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hwba: [\n // hwba(360deg, 100%, 100%, 1.0) hwba(360, 100%, 100%, 1.0) hwb(360deg, 100%, 100%, 1.0) hwb(360, 100%, 100%, 1.0)\n /^hwba?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hwb(360deg 100% 100% 1.0) hwb(360 100% 100% / 1.0) hwba(360deg 100% 100% 1.0) hwba(360 100% 100% / 1.0)\n /^hwba?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n rgb: [\n // rgb(255, 255, 255)\n /^rgb\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i,\n // rgb(255 255 255)\n /^rgb\\s*\\(\\s*(\\d{1,3})\\s+(\\d{1,3})\\s+(\\d{1,3})\\s*\\)$/i,\n ],\n rgba: [\n // rgba(255, 255, 255, 1.0) rgb(255, 255, 255, 1.0)\n /^rgba?\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*([\\d.]+)\\s*\\)$/i,\n // rgba(255 255 255 / 1.0) rgb(255 255 255 / 1.0)\n /^rgba?\\s*\\(\\s*(\\d{1,3})\\s+(\\d{1,3})\\s+(\\d{1,3})\\s*\\/\\s*([\\d.]+)\\s*\\)$/i,\n ],\n } satisfies Record<ColorFormats, RegExp | RegExp[]>;\n\n // #region General utilities\n const clamp = (value: number, min: number, max: number) => {\n return Math.max(min, Math.min(value, max));\n };\n\n const clampRGB = (value: number) => {\n return clamp(value, 0, 255);\n };\n\n const clampHue = (value: number) => {\n return clamp(value, 0, 360);\n };\n\n const clamp100 = (value: number) => {\n return clamp(value, 0, 100);\n };\n\n const clampAlpha = (value: number) => {\n return clamp(+value.toFixed(2), 0, 1);\n };\n\n const randomNumber = (min: number, max: number) => {\n return Math.random() * (max - min) + min;\n };\n\n const numberToHexString = (c: number): string => {\n c = clampRGB(Math.round(c));\n return c.toString(16).padStart(2, '0');\n };\n\n const calculateHueValue = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n /** Convert any `HEX` color to 8-digit `HEX` color (#rrggbbaa) */\n const normalize_HEX = (color: string): string => {\n const parts = color.replace(/^#/, '').split('');\n\n if (parts.length === 3) {\n return `#${parts.map(x => x + x).join('')}ff`;\n }\n\n if (parts.length === 4) {\n return `#${parts.map(x => x + x).join('')}`;\n }\n\n if (parts.length === 6) {\n return `#${parts.join('')}ff`;\n }\n\n return color;\n };\n\n /** Does not work for hex (16 base) */\n const matchColorRegex = (color: string, regexArray: RegExp[]) => {\n for (const regex of regexArray) {\n const matches = color.match(regex);\n if (matches) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n parseFloat(matches[4] ?? '1'),\n ] as const;\n }\n }\n };\n\n /** Only for hex (16 base) */\n const matchHexRegex = (color: string, regex: RegExp) => {\n if (!regex.test(color)) return;\n\n const hex8 = normalize_HEX(color);\n\n const matches = hex8.match(COLORS_REGEX.hex8);\n if (!matches) return;\n\n return [\n parseInt(matches[1], 16),\n parseInt(matches[2], 16),\n parseInt(matches[3], 16),\n parseInt(matches[4], 16) / 255,\n ] as const;\n };\n\n /** Check if color object has all required keys */\n const isColorObject = <T extends ColorObject>(colorObject: ColorObject, keys: (keyof T)[]): colorObject is T => {\n return keys.every(k => colorObject.hasOwnProperty(k) && typeof colorObject[k as keyof ColorObject] === 'number');\n };\n\n const clampColorObject = <T extends ColorObject>(color: T): T => {\n const castColor = color as unknown as Record<string, number>;\n\n for (const [key, value] of Object.entries(castColor)) {\n // 'r' and 'g' are red and green (0-255) in RGB\n if (key === 'r' || key === 'g') {\n castColor[key] = clampRGB(value);\n continue;\n }\n\n // 'b' is blue (0-255) in RGB, blackness (0-100) in HWB\n if (key === 'b') {\n castColor[key] = 'w' in castColor ? clamp100(value) : clampRGB(value);\n continue;\n }\n\n // 'h' is hue (0-360) in HSL, HWB, and HSV\n if (key === 'h') {\n castColor[key] = clampHue(value);\n continue;\n }\n\n // a is alpha (0-1)\n if (key === 'a') {\n castColor[key] = clampAlpha(value);\n continue;\n }\n\n // 'v' is value/brightness (0-100) in HSV\n // 's' is saturation (0-100) in HSL and HSV\n // 'l' is lumenosity (0-100) in HSL\n // 'w' is whiteness (0-100) in HWB\n castColor[key] = clamp100(value);\n }\n\n return color;\n };\n\n /** Mutate color object to have an `a` property */\n const forceColorObjectAlpha = <T extends ColorObject>(color: T): T & { a: number } => {\n if (!color.hasOwnProperty('a')) {\n return Object.assign(color, { a: 1 }) as T & { a: number };\n }\n\n return color as T & { a: number };\n };\n // #endregion\n\n // #region RGB\n /** Convert an `RGB` or `RGBA` color to its corresponding `Hex` color */\n const RGB_to_HEX = ({ r, g, b, a }: RgbaT, forceAlpha?: boolean): string => {\n const red = numberToHexString(r);\n const green = numberToHexString(g);\n const blue = numberToHexString(b);\n const alpha = numberToHexString(a * 255);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return `#${red + green + blue + (hasAlpha ? alpha : '')}`;\n };\n\n /** Convert an `RGB` or `RGBA` color to an `HSLA` object representation */\n const RGB_to_HSLA = (color: RgbaT): HslaT => {\n const r = color.r / 255,\n g = color.g / 255,\n b = color.b / 255,\n a = color.a;\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n\n let h = 0,\n s,\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n if (max === r) {\n h = (g - b) / d + (g < b ? 6 : 0);\n } else if (max === g) {\n h = (b - r) / d + 2;\n } else if (max === b) {\n h = (r - g) / d + 4;\n }\n\n h /= 6;\n }\n\n h = clampHue(h * 360);\n s = clamp100(s * 100);\n l = clamp100(l * 100);\n\n return { h, s, l, a: clampAlpha(a) };\n };\n\n /** Convert `RGB` or `RGBA` color to an `HSVA` object representation */\n const RGB_to_HSVA = (color: RgbaT): HsvaT => {\n const r = color.r / 255,\n g = color.g / 255,\n b = color.b / 255,\n a = color.a;\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b),\n d = max - min,\n v = max,\n s = max === 0 ? 0 : d / max;\n\n let h = 0;\n\n if (max === min) {\n h = 0;\n } else {\n if (max === r) {\n h = (g - b) / d + (g < b ? 6 : 0);\n } else if (max === g) {\n h = (b - r) / d + 2;\n } else if (max === b) {\n h = (r - g) / d + 4;\n }\n\n h = h / 6;\n }\n\n return {\n h: clampHue(h * 360),\n s: clamp100(s * 100),\n v: clamp100(v * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `RGB` or `RGBA` color to an `HWBA` object representation */\n const RGB_to_HWBA = (color: RgbaT): HwbaT => {\n const red = color.r / 255,\n green = color.g / 255,\n blue = color.b / 255,\n a = color.a;\n\n const { h } = RGB_to_HSLA(color);\n\n const white = Math.min(red, green, blue) * 100;\n const black = (1 - Math.max(red, green, blue)) * 100;\n\n return {\n h: clampHue(h),\n w: clamp100(white),\n b: clamp100(black),\n a: clampAlpha(a),\n };\n };\n\n /** Return the `RGB` color as a string, an array, or an object */\n const RGB_types = ({ r, g, b, a }: RgbaT): ColorTypes<RgbaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `rgba(${r}, ${g}, ${b}, ${a ?? 1})` : `rgb(${r}, ${g}, ${b})`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n }\n return [r, g, b, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n }\n return { r, g, b, a };\n },\n };\n };\n // #endregion\n\n // #region HSL\n /** Convert `HSL` or `HSLA` color to an `RGBA` object representation */\n const HSL_to_RGBA = (color: HslaT): RgbaT => {\n const h = color.h / 360,\n s = color.s / 100,\n l = color.l / 100,\n a = color.a;\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s,\n p = 2 * l - q;\n\n const r = calculateHueValue(p, q, h + 1 / 3),\n g = calculateHueValue(p, q, h),\n b = calculateHueValue(p, q, h - 1 / 3);\n\n return {\n r: clampRGB(r * 255),\n g: clampRGB(g * 255),\n b: clampRGB(b * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSL` or `HSLA` color to `HEX` color */\n const HSL_to_HEX = (color: HslaT, forceAlpha?: boolean): string => {\n const rgb = HSL_to_RGBA(color);\n return RGB_to_HEX(rgb, forceAlpha);\n };\n\n /** Convert `HSL` or `HSLA` color to an `HSVA` object representation */\n const HSL_to_HSVA = (color: HslaT): HsvaT => {\n const h = color.h;\n\n const s = color.s / 100,\n l = color.l / 100,\n a = (color as HslaT).a ?? 1,\n v = l + s * Math.min(l, 1 - l),\n sNew = v === 0 ? 0 : 2 - (2 * l) / v;\n\n return {\n h: clampHue(h),\n s: clamp100(sNew * 100),\n v: clamp100(v * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSL` or `HSLA` color to an `HWBA` object representation */\n const HSL_to_HWBA = (color: HslaT): HwbaT => {\n const hsva = HSL_to_HSVA(color);\n return HSV_to_HWBA(hsva);\n };\n\n /** Return the `HSL` color as a string, an array, or an object */\n const HSL_types = ({ h, s, l, a }: HslaT): ColorTypes<HslaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hsla(${h}, ${s}%, ${l}%, ${a ?? 1})` : `hsl(${h}, ${s}%, ${l}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n }\n return [h, s, l, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n }\n return { h, s, l, a };\n },\n };\n };\n // #endregion\n\n // #region HWB\n /** Convert `HWB` or `HWBA` color to an `RGBA` object representation */\n const HWB_to_RGBA = (color: HwbaT): RgbaT => {\n const h = color.h / 360,\n w = color.w / 100,\n b = color.b / 100,\n a = color.a;\n\n if (w + b >= 1) {\n const gray = clampRGB((w * 255) / (w + b));\n return {\n r: gray,\n g: gray,\n b: gray,\n a,\n };\n }\n\n const red = calculateHueValue(0, 1, h + 1 / 3) * (1 - w - b) + w,\n green = calculateHueValue(0, 1, h) * (1 - w - b) + w,\n blue = calculateHueValue(0, 1, h - 1 / 3) * (1 - w - b) + w;\n\n return {\n r: clampRGB(red * 255),\n g: clampRGB(green * 255),\n b: clampRGB(blue * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HWB` or `HWBA` color to an `Hex` color */\n const HWB_to_HEX = (color: HwbaT, forceAlpha?: boolean): string => {\n const rgba = HWB_to_RGBA(color);\n return RGB_to_HEX(rgba, forceAlpha);\n };\n\n /** Convert `HWB` or `HWBA` color to an `HSVA` object representation */\n function HWB_to_HSVA(color: HwbaT): HsvaT {\n const h = color.h % 360,\n w = color.w / 100,\n b = color.b / 100,\n a = color.a;\n\n const v = (1 - b) * 100;\n let s = (1 - w / (v / 100)) * 100;\n s = isNaN(s) ? 0 : s;\n\n return {\n h: clampHue(h),\n s: clamp100(s),\n v: clamp100(v),\n a: clampAlpha(a),\n };\n }\n\n /** Convert `HWB` or `HWBA` color to an `HSLA` object representation */\n const HWB_to_HSLA = (color: HwbaT): HslaT => {\n const hsva = HWB_to_HSVA(color);\n return HSV_to_HSLA(hsva);\n };\n\n /** Return the `HWB` color as a string, an array, or an object */\n const HWB_types = ({ h, w, b, a }: HwbaT): ColorTypes<HwbaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hwb(${h}, ${w}%, ${b}% / ${a ?? 1})` : `hwb(${h}, ${w}%, ${b}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n }\n return [h, w, b, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n }\n return { h, w, b, a };\n },\n };\n };\n // #endregion\n\n // #region HSV\n /** Convert `HSV` color to an `RGBA` object representation */\n const HSV_to_RGBA = (color: HsvaT): RgbaT => {\n const h = color.h / 360,\n s = color.s / 100,\n v = color.v / 100,\n a = color.a;\n\n const i = Math.floor(h * 6),\n f = h * 6 - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s);\n\n let r = 0,\n g = 0,\n b = 0;\n\n if (i % 6 === 0) {\n r = v;\n g = t;\n b = p;\n } else if (i % 6 === 1) {\n r = q;\n g = v;\n b = p;\n } else if (i % 6 === 2) {\n r = p;\n g = v;\n b = t;\n } else if (i % 6 === 3) {\n r = p;\n g = q;\n b = v;\n } else if (i % 6 === 4) {\n r = t;\n g = p;\n b = v;\n } else if (i % 6 === 5) {\n r = v;\n g = p;\n b = q;\n }\n\n return {\n r: clampRGB(r * 255),\n g: clampRGB(g * 255),\n b: clampRGB(b * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSV` color to an `HSLA` object representation */\n const HSV_to_HSLA = (color: HsvaT): HslaT => {\n const h = color.h,\n s = color.s / 100,\n v = color.v / 100,\n a = color.a;\n\n const l = ((2 - s) * v) / 2,\n sl = s * v,\n sln = l !== 0 && l !== 1 ? sl / (l < 0.5 ? l * 2 : 2 - l * 2) : sl;\n\n return {\n h: clampHue(h),\n s: clamp100(sln * 100),\n l: clamp100(l * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSV` color to an `Hex` color */\n const HSV_to_HEX = (color: HsvaT, forceAlpha?: boolean): string => {\n const rgba = HSV_to_RGBA(color);\n return RGB_to_HEX(rgba, forceAlpha);\n };\n\n /** Convert `HSV` color to an `HWBA` object representation */\n const HSV_to_HWBA = ({ h, s, v, a }: HsvaT): HwbaT => {\n const w = (1 - s / 100) * v,\n b = (1 - v / 100) * 100;\n\n return {\n h: clampHue(h),\n w: clamp100(w),\n b: clamp100(b),\n a: clampAlpha(a),\n };\n };\n\n /** Return the `HSV` color as a string, an array, or an object */\n const HSV_types = ({ h, s, v, a }: HsvaT): ColorTypes<HsvaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hsva(${h}, ${s}%, ${v}%, ${a ?? 1})` : `hsv(${h}, ${s}%, ${v}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n }\n return [h, s, v, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n }\n return { h, s, v, a };\n },\n };\n };\n // #endregion\n\n // #region Color conversions\n /** Convert `HSL`, `HSV`, `HWB`, or `RGB` color to the `HEX` color format. */\n const HEX = (color: SupportedColorFormats, forceAlpha?: boolean): string => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HEX] An error occurred while attempting to convert the provided parameter into an `HEX` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return '#000000';\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // RGB to HEX\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_to_HEX(value, forceAlpha);\n }\n\n // HSL to HEX\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSL_to_HEX(value, forceAlpha);\n }\n\n // HSV to HEX\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSV_to_HEX(value, forceAlpha);\n }\n\n // HWB to HEX\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n return HWB_to_HEX(value, forceAlpha);\n }\n\n // HEX\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_to_HEX(value, forceAlpha);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HSV`, `HWB`, or `HEX` color to the `RGB` color format. */\n const RGB = (color: SupportedColorFormats): ColorTypes<RgbaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.RGB] An error occurred while attempting to convert the provided parameter into an `RGB` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return RGB_types({ r: 0, g: 0, b: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to RGB\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_types(value);\n }\n\n // HSL to RGB\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HSL_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // HSV to RGB\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HSV_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // HWB to RGB\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HWB_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // RGB to normalized RGB\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HEX`, `HSV`, `HWB`, or `RGB` color to the `HSL` color format. */\n const HSL = (color: SupportedColorFormats): ColorTypes<HslaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HSL] An error occurred while attempting to convert the provided parameter into an `HSL` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HSL_types({ h: 0, s: 0, l: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HSL\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = RGB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // RGB to HSL\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = RGB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HSV to HSL\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = HSV_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HWB to HSL\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = HWB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HSL to normalized HSL\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSL_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HEX`, `HSV`, or `RGB` color to the `HWB` color format. */\n const HWB = (color: SupportedColorFormats): ColorTypes<HwbaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HWB] An error occurred while attempting to convert the provided parameter into an `HWB` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HWB_types({ h: 0, w: 0, b: 100, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HWB\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = RGB_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // RGB to HWB\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = RGB_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HSL to HWB\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = HSL_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HSV to HWB\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = HSV_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HWB to normalized HWB\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n return HWB_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HEX`, `HWB`, or `RGB` color to the `HSV` color format. */\n const HSV = (color: SupportedColorFormats): ColorTypes<HsvaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HSV] An error occurred while attempting to convert the provided parameter into an `HSV` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HSV_types({ h: 0, s: 0, v: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HSV\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = RGB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // RGB to HSV\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = RGB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HSL to HSV\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = HSL_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HWB to HSV\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = HWB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HSV to normalized HSV\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSV_types(value);\n }\n\n const _: never = format;\n return _;\n };\n // #endregion\n\n // #region Color Information\n /** Identify the color format of a given `string` or `object`, and return `null` for invalid colors. */\n const getFormat = (color: SupportedColorFormats): ColorFormats | 'named' | null => {\n const parsed = parse(color);\n if (parsed) {\n return parsed.format;\n }\n\n return null;\n };\n\n /** Get the `red` channel value of a given color. */\n const getRed = (color: SupportedColorFormats): number => {\n const { r } = RGB(color).object();\n return r;\n };\n\n /** Get the `green` channel value of a given color. */\n const getGreen = (color: SupportedColorFormats): number => {\n const { g } = RGB(color).object();\n return g;\n };\n\n /** Get the `blue` channel value of a given color. */\n const getBlue = (color: SupportedColorFormats): number => {\n const { b } = RGB(color).object();\n return b;\n };\n\n /** Get the `hue` channel value of a given color. */\n const getHue = (color: SupportedColorFormats): number => {\n const { h } = HSL(color).object();\n return h;\n };\n\n /** Get the `saturation` value of a given color. */\n const getSaturation = (color: SupportedColorFormats): number => {\n const { s } = HSL(color).object();\n return s;\n };\n\n /**\n * Get color's HSL `luminosity` channel value.\\\n * If you want the overall `luminosity` of a color use `getLuminanceWCAG` method.\n */\n const getLuminance = (color: SupportedColorFormats): number => {\n const { l } = HSL(color).object();\n return l;\n };\n\n /** Get the HSV's `value` (brightness) channel value of a given color. */\n const getBrightness = (color: SupportedColorFormats): number => {\n const { v } = HSV(color).object();\n return v;\n };\n\n /** Returns the perceived `luminance` of a color, from `0-1` as defined by Web Content Accessibility Guidelines (Version 2.0). */\n const getLuminanceWCAG = (color: SupportedColorFormats): number => {\n const { r, g, b } = RGB(color).object(false);\n const a = [r, g, b].map(v => (v / 255 <= 0.03928 ? v / 255 / 12.92 : Math.pow((v / 255 + 0.055) / 1.055, 2.4)));\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n };\n\n /** Returns a boolean indicating whether the color is considered \"dark\" or not */\n const isDark = (color: SupportedColorFormats): boolean => {\n const luminance = getLuminanceWCAG(color);\n return luminance < 0.5;\n };\n\n /** Returns a boolean indicating whether the color is considered \"light\" or not */\n const isLight = (color: SupportedColorFormats): boolean => {\n const luminance = getLuminanceWCAG(color);\n return luminance >= 0.5;\n };\n\n /**\n * Check if two colors are similar within a specified tolerance.\n *\n * @example\n * const tolerance = 0;\n * const isEqual = colorKit.areColorsEqual('#f00', 'red', tolerance); // true\n */\n const areColorsEqual = (color1: SupportedColorFormats, color2: SupportedColorFormats, tolerance = 0): boolean => {\n const rgb1 = RGB(color1).object();\n const rgb2 = RGB(color2).object();\n\n const deltaR = rgb1.r - rgb2.r;\n const deltaG = rgb1.g - rgb2.g;\n const deltaB = rgb1.b - rgb2.b;\n const difference = Math.sqrt(deltaR * deltaR + deltaG * deltaG + deltaB * deltaB);\n\n return difference <= tolerance;\n };\n\n /** Calculates the contrast ratio between two colors, useful for ensuring accessibility and readability. */\n const contrastRatio = (color1: SupportedColorFormats, color2: SupportedColorFormats): number => {\n const luminance1 = getLuminanceWCAG(color1);\n const luminance2 = getLuminanceWCAG(color2);\n const contrast = (Math.max(luminance1, luminance2) + 0.05) / (Math.min(luminance1, luminance2) + 0.05);\n return Math.round(contrast * 100) / 100;\n };\n // #endregion\n\n // #region Color Manipulation\n const returnColorObject = (color: SupportedColorFormats) => {\n return {\n hex() {\n return HEX(color);\n },\n rgb() {\n return RGB(color);\n },\n hsl() {\n return HSL(color);\n },\n hsv() {\n return HSV(color);\n },\n hwb() {\n return HWB(color);\n },\n };\n };\n\n // #region Red Manuipulation\n /** Set the `red` value of a color to a specific amount. */\n const setRed = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { g, b, a } = RGB(color).object();\n const newR = clampRGB(amount);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `red` value of a color by the given percentage/amount.\n *\n * @example\n * increaseRed('rgb(100, 100, 100)', 20).hex();\n * increaseRed('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseRed = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const red = typeof amount === 'string' ? r + r * (parseFloat(amount) / 100) : r + amount;\n const newR = clampRGB(red);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `red` value of a color by the given percentage/amount\n *\n * @example\n * decreaseRed('rgb(100, 100, 100)', 20).hex();\n * decreaseRed('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseRed = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const red = typeof amount === 'string' ? r - r * (parseFloat(amount) / 100) : r - amount;\n const newR = clampRGB(red);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Green Manuipulation\n /** Set the `green` value of a color to a specific amount. */\n const setGreen = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, b, a } = RGB(color).object();\n const newG = clampRGB(amount);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `green` value of a color by the given percentage.\n *\n * @example\n * increaseGreen('rgb(100, 100, 100)', 20).hex();\n * increaseGreen('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseGreen = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const green = typeof amount === 'string' ? g + g * (parseFloat(amount) / 100) : g + amount;\n const newG = clampRGB(green);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `green` value of a color by the given percentage.\n *\n * @example\n * decreaseGreen('rgb(100, 100, 100)', 20).hex();\n * decreaseGreen('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseGreen = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const green = typeof amount === 'string' ? g - g * (parseFloat(amount) / 100) : g - amount;\n const newG = clampRGB(green);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Blue Manuipulation\n /** Set the `blue` value of a color to a specific amount. */\n const setBlue = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, g, a } = RGB(color).object();\n const newB = clampRGB(amount);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `blue` value of a color by the given percentage.\n *\n * @example\n * increaseBlue('rgb(100, 100, 100)', 20).hex();\n * increaseBlue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseBlue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const blue = typeof amount === 'string' ? b + b * (parseFloat(amount) / 100) : b + amount;\n const newB = clampRGB(blue);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `blue` value of a color by the given percentage.\n *\n * @example\n * decreaseBlue('rgb(100, 100, 100)', 20).hex();\n * decreaseBlue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseBlue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const blue = typeof amount === 'string' ? b - b * (parseFloat(amount) / 100) : b - amount;\n const newB = clampRGB(blue);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Alpha Manuipulation\n /** Get the `alpha` value of a given color. */\n const getAlpha = (color: SupportedColorFormats): number => {\n const { a } = RGB(color).object();\n return a;\n };\n\n /** Set the `alpha` value of a color to a specific amount. */\n const setAlpha = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, g, b } = RGB(color).object();\n const newA = clampAlpha(amount);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n\n /** Increase the `alpha` value of a color by the given percentage. */\n const increaseAlpha = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const alpha = typeof amount === 'string' ? a + a * (parseFloat(amount) / 100) : a + amount;\n const newA = clampAlpha(alpha);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n\n /** Decrease the `alpha` value of a color by the given percentage. */\n const decreaseAlpha = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const alpha = typeof amount === 'string' ? a - a * (parseFloat(amount) / 100) : a - amount;\n const newA = clampAlpha(alpha);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Hue Manuipulation\n /** Set the `hue` value of a color to a specific amount. */\n const setHue = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { s, l, a } = HSL(color).object();\n const newH = clampHue(amount);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `hue` value of a color by the given percentage/amount.\n *\n * @example\n * increaseHue('rgb(100, 100, 100)', 20).hex();\n * increaseHue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseHue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const hue = typeof amount === 'string' ? h + h * (parseFloat(amount) / 100) : h + amount;\n const newH = clampHue(hue);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `hue` value of a color by the given percentage/amount.\n *\n * @example\n * decreaseHue('rgb(100, 100, 100)', 20).hex();\n * decreaseHue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseHue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const hue = typeof amount === 'string' ? h - h * (parseFloat(amount) / 100) : h - amount;\n const newH = clampHue(hue);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Spin the `hue` channel by a certain percentage/amount.\n *\n * @example\n * spin('red', 20).hex();\n * spin('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const spin = (color: SupportedColorFormats, degree: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const spinDegree = typeof degree === 'string' ? s * (parseFloat(degree) / 100) : degree;\n const newColor = { h: Math.round((h + spinDegree) % 360), s, l, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Saturation Manuipulation\n /** Set the `saturation` value of a color to a specific amount. */\n const setSaturation = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, l, a } = HSL(color).object();\n const newS = clamp100(amount);\n const saturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(saturatedColor);\n };\n\n /**\n * Increase the saturation of the given color by a certain percentage/amount.\n *\n * @example\n * saturate('red', 20).hex();\n * saturate('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const saturate = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const saturation = typeof amount === 'string' ? s + s * (parseFloat(amount) / 100) : s + amount;\n const newS = clamp100(saturation);\n const saturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(saturatedColor);\n };\n\n /**\n * Decrease the saturation of the given color by a certain percentage/amount.\n *\n * @example\n * saturate('red', 20).hex();\n * saturate('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const desaturate = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const saturation = typeof amount === 'string' ? s - s * (parseFloat(amount) / 100) : s - amount;\n const newS = clamp100(saturation);\n const desaturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(desaturatedColor);\n };\n // #endregion\n\n // #region Brightness Manuipulation\n /** Set HSL's `luminosity` channel for a given color to a specific amount. */\n const setLuminance = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, s, a } = HSL(color).object();\n const newL = clamp100(amount);\n const newColor = { h, s, l: newL, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the brightness of the given color by a certain percentage/amount.\n *\n * @example\n * brighten('red', 20).hex();\n * brighten('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const brighten = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const lum = typeof amount === 'string' ? l + l * (parseFloat(amount) / 100) : l + amount;\n const newL = clamp100(lum);\n const brightenedColor = { h, s, l: newL, a };\n\n return returnColorObject(brightenedColor);\n };\n\n /**\n * Decrease the brightness of the given color by a certain percentage/amount.\n *\n * @example\n * darken('red', 20).hex();\n * darken('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const darken = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const lum = typeof amount === 'string' ? l - l * (parseFloat(amount) / 100) : l - amount;\n const newL = clamp100(lum);\n const darkenedColor = { h, s, l: newL, a };\n\n return returnColorObject(darkenedColor);\n };\n\n /** Set HSV's `value` (brightness) channel for a given color to a specific amount. */\n const setBrightness = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, s, a } = HSV(color).object();\n const newV = clamp100(amount);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n\n /** Increase HSV's `value` (brightness) channel value of a color by the given percentage/amount. */\n const increaseBrightness = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, v, a } = HSV(color).object();\n const value = typeof amount === 'string' ? v + v * (parseFloat(amount) / 100) : v + amount;\n const newV = clamp100(value);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n\n /** Decrease HSV's `value` (brightness) channel value of a color by the given percentage/amount. */\n const decreaseBrightness = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, v, a } = HSV(color).object();\n const value = typeof amount === 'string' ? v - v * (parseFloat(amount) / 100) : v - amount;\n const newV = clamp100(value);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n // #endregion\n\n // #region Color Utilities\n /**\n * Parses any supported color format into a typed `{ format, value }` result.\n *\n * Accepts color strings (`\"#fff\"`, `\"rgb(255,0,0)\"`), color objects (`{ r, g, b }`), named colors (`\"red\"`), and integer colors\n * (`0xff0000ff`).\n *\n * Returns `undefined` if the input cannot be recognized as a valid color.\n */\n const parse = (color: SupportedColorFormats): ColorParseResult | undefined => {\n // Color int\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n const hex = '#' + color.toString(16).padStart(8, '0');\n const matches = matchHexRegex(hex, COLORS_REGEX.hex8);\n if (matches) {\n return { format: 'hex8', value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n return;\n }\n\n if (typeof color === 'string') {\n color = color.trim().toLowerCase();\n\n // Named\n if (NAMED_COLORS.hasOwnProperty(color)) {\n const matches = matchHexRegex(NAMED_COLORS[color as keyof typeof NAMED_COLORS], COLORS_REGEX.hex6);\n if (matches) {\n return { format: 'named', value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n for (const key in COLORS_REGEX) {\n const format = key as keyof typeof COLORS_REGEX;\n\n if (format === 'hex3' || format === 'hex6') {\n const matches = matchHexRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'hex4' || format === 'hex8') {\n const matches = matchHexRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'rgb') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'rgba') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hsl') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], l: matches[2] } };\n }\n }\n\n if (format === 'hsla') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], l: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hsv') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], v: matches[2] } };\n }\n }\n\n if (format === 'hsva') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], v: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hwb') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], w: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'hwba') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], w: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n }\n\n return;\n }\n\n // Color object\n const rgbaKeys: (keyof RgbaT)[] = ['r', 'g', 'b', 'a'];\n if (isColorObject(color, rgbaKeys)) {\n return { format: 'rgba', value: color };\n }\n\n const rgbKeys: (keyof RgbT)[] = ['r', 'g', 'b'];\n if (isColorObject(color, rgbKeys)) {\n return { format: 'rgb', value: color };\n }\n\n const hslaKeys: (keyof HslaT)[] = ['h', 's', 'l', 'a'];\n if (isColorObject(color, hslaKeys)) {\n return { format: 'hsla', value: color };\n }\n\n const hslKeys: (keyof HslT)[] = ['h', 's', 'l'];\n if (isColorObject(color, hslKeys)) {\n return { format: 'hsl', value: color };\n }\n\n const hsvaKeys: (keyof HsvaT)[] = ['h', 's', 'v', 'a'];\n if (isColorObject(color, hsvaKeys)) {\n return { format: 'hsva', value: color };\n }\n\n const hsvKeys: (keyof HsvT)[] = ['h', 's', 'v'];\n if (isColorObject(color, hsvKeys)) {\n return { format: 'hsv', value: color };\n }\n\n const hwbaKeys: (keyof HwbaT)[] = ['h', 'w', 'b', 'a'];\n if (isColorObject(color, hwbaKeys)) {\n return { format: 'hwba', value: color };\n }\n\n const hwbKeys: (keyof HwbT)[] = ['h', 'w', 'b'];\n if (isColorObject(color, hwbKeys)) {\n return { format: 'hwb', value: color };\n }\n };\n\n /**\n * Blends two colors by a certain amount.\n *\n * @example\n * blend('yellow', 'red', 50).hex(); // #ff8000\n */\n const blend = (color1: SupportedColorFormats, color2: SupportedColorFormats, percentage: number): ConversionMethods => {\n percentage = percentage / 100;\n\n const rgba1 = RGB(color1).object();\n const rgba2 = RGB(color2).object();\n\n const r = clampRGB(rgba1.r * (1 - percentage) + rgba2.r * percentage),\n g = clampRGB(rgba1.g * (1 - percentage) + rgba2.g * percentage),\n b = clampRGB(rgba1.b * (1 - percentage) + rgba2.b * percentage),\n a = clampAlpha(rgba1.a * (1 - percentage) + rgba2.a * percentage);\n\n const blendedColor = { r, g, b, a };\n\n return returnColorObject(blendedColor);\n };\n\n /** Invert (negate) a color, black becomes white, white becomes black, blue becomes orange and so on. */\n const invert = (color: SupportedColorFormats): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const invertedColor = { r: 255 - r, g: 255 - g, b: 255 - b, a };\n return returnColorObject(invertedColor);\n };\n\n /** Completely desaturate a color into grayscale. */\n const grayscale = (color: SupportedColorFormats): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const gray = clampRGB(r * 0.3 + g * 0.59 + b * 0.11);\n const grayColor = { r: gray, g: gray, b: gray, a };\n\n return returnColorObject(grayColor);\n };\n\n /** Generate a random color from `HSL` values. */\n const randomHslColor = ({ h = [0, 360], s = [0, 100], l = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n s: clamp100(randomNumber(s[0], s[1])),\n l: clamp100(randomNumber(l[0], l[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `HSV` values. */\n const randomHsvColor = ({ h = [0, 360], s = [0, 100], v = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n s: clamp100(randomNumber(s[0], s[1])),\n v: clamp100(randomNumber(v[0], v[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `RGB` values. */\n const randomRgbColor = ({ r = [0, 255], g = [0, 255], b = [0, 255], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n r: clampRGB(randomNumber(r[0], r[1])),\n g: clampRGB(randomNumber(g[0], g[1])),\n b: clampRGB(randomNumber(b[0], b[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `HWB` values. */\n const randomHwbColor = ({ h = [0, 360], w = [0, 100], b = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n w: clamp100(randomNumber(w[0], w[1])),\n b: clamp100(randomNumber(b[0], b[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Returns the first color with the desired contrast ratio against the second color */\n const adjustContrast = (color1: SupportedColorFormats, color2: SupportedColorFormats, ratio = 4.5): ConversionMethods => {\n const contrast = contrastRatio(color1, color2);\n const color1RGB = RGB(color1).object();\n const channels = ['r', 'g', 'b'] as const;\n\n function adjustLuminance(colorRGB: RgbaT, by: number) {\n const r = clampRGB(colorRGB.r + by);\n const g = clampRGB(colorRGB.g + by);\n const b = clampRGB(colorRGB.b + by);\n return { r, g, b, a: colorRGB.a };\n }\n\n let newColor = color1RGB;\n\n //* increase contrast\n if (ratio && contrast < ratio) {\n while (contrastRatio(newColor, color2) < ratio) {\n const adjustBy = isDark(color2) ? 1 : -1; // increase or decrease relative to the background color\n newColor = adjustLuminance(newColor, adjustBy);\n\n // break if the color reached the limit\n if (channels.every(e => newColor[e] === 0)) break;\n if (channels.every(e => newColor[e] === 255)) break;\n }\n //* decrease contrast\n } else if (ratio && contrast > ratio) {\n while (contrastRatio(newColor, color2) > ratio) {\n const adjustBy = !isDark(color2) ? 1 : -1; // increase or decrease relative to the background color\n newColor = adjustLuminance(newColor, adjustBy);\n\n // break if the color reached the limit\n if (channels.every(e => newColor[e] === 0)) break;\n if (channels.every(e => newColor[e] === 255)) break;\n }\n }\n\n return returnColorObject(newColor);\n };\n //#endregion\n\n return {\n // color conversion\n HEX,\n RGB,\n HSL,\n HWB,\n HSV,\n\n // color information\n getFormat,\n getRed,\n getGreen,\n getBlue,\n getHue,\n getSaturation,\n getBrightness,\n getLuminance,\n getLuminanceWCAG,\n isDark,\n isLight,\n areColorsEqual,\n contrastRatio,\n\n // color manipulation\n setRed,\n increaseRed,\n decreaseRed,\n\n setGreen,\n increaseGreen,\n decreaseGreen,\n\n setBlue,\n increaseBlue,\n decreaseBlue,\n\n getAlpha,\n setAlpha,\n increaseAlpha,\n decreaseAlpha,\n\n setHue,\n increaseHue,\n decreaseHue,\n spin,\n\n setSaturation,\n saturate,\n desaturate,\n\n setLuminance,\n brighten,\n darken,\n setBrightness,\n increaseBrightness,\n decreaseBrightness,\n\n // color utilities\n parse,\n blend,\n invert,\n grayscale,\n randomHslColor,\n randomHsvColor,\n randomRgbColor,\n randomHwbColor,\n adjustContrast,\n };\n};\n\ntype ColorKit = ReturnType<typeof colorKitUI> & {\n /** Initiates the asynchronous execution of a workletized colorKit function on the UI thread. */\n runOnUI: typeof colorKitUI;\n};\n\n/** @see [colorKit](https://alabsi91.github.io/reanimated-color-picker/colorkit/) */\nconst colorKit = colorKitUI() as ColorKit;\ncolorKit.runOnUI = colorKitUI;\nexport default colorKit;\n"
|
|
387
|
+
"import type {\n ColorFormats,\n ColorObject,\n ColorParseResult,\n ColorTypes,\n ConversionMethods,\n HslaT,\n HslT,\n HsvaT,\n HsvT,\n HwbaT,\n HwbT,\n RgbaT,\n RgbT,\n SupportedColorFormats,\n} from './types';\n\n// If you find yourself wondering why all of this is within a single function,\n// the reason is that to execute each method on the UI thread, you must include the 'worklet' directive.\n// Functions marked with this directive are transformed by the Reanimated Babel plugin\n// into IIFE — IMMEDIATELY INVOKED FUNCTION EXPRESSION: `const fun = (function{})()`.\n// Due to the presence of numerous methods,\n// this transformation can lead to a slow initial execution.\n// To address this issue, I consolidated them into a single worklet function.\n\nexport const colorKitUI = () => {\n 'worklet';\n\n const NAMED_COLORS = {\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 darkgrey: '#a9a9a9',\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 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 green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\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 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 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\n const COLORS_REGEX = {\n // #rgb\n hex3: /^#([A-Fa-f0-9]{3})$/,\n // #rgba\n hex4: /^#([A-Fa-f0-9]{3}[A-Fa-f0-9]{1})$/,\n // #rrggbb\n hex6: /^#([A-Fa-f0-9]{6})$/,\n // #rrggbbaa\n hex8: /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\n\n hsl: [\n // hsl(360deg, 100%, 100%) hsl(360, 100%, 100%)\n /^hsl\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hsl(360deg 100% 100%) hsl(360 100% 100%)\n /^hsl\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hsla: [\n // hsla(360deg, 100%, 100%, 1.0) hsla(360, 100%, 100%, 1.0) hsl(360deg, 100%, 100%, 1.0) hsl(360, 100%, 100%, 1.0)\n /^hsla?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hsla(360deg 100% 100% / 1.0) hsla(360 100% 100% / 1.0) hsl(360deg 100% 100% / 1.0) hsl(360 100% 100% / 1.0)\n /^hsla?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n hsv: [\n // hsv(360deg, 000%, 000%) hsv(360, 100%, 100%)\n /^hsv\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hsv(360deg 000% 000%) hsv(360 100% 100%)\n /^hsv\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hsva: [\n // hsva(360deg, 100%, 100%, 1.0) hsva(360, 100%, 100%, 1.0) hsv(360deg, 100%, 100%, 1.0) hsv(360, 100%, 100%, 1.0)\n /^hsva?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hsva(360deg 100% 100% / 1.0) hsva(360 100% 100% / 1.0) hsv(360deg 100% 100% / 1.0) hsv(360 100% 100% / 1.0)\n /^hsva?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n hwb: [\n // hwb(360deg, 100%, 100%) hwb(360, 100%, 100%)\n /^hwb\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)$/i,\n // hwb(360deg 100% 100%) hwb(360 100% 100%)\n /^hwb\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\)$/i,\n ],\n hwba: [\n // hwba(360deg, 100%, 100%, 1.0) hwba(360, 100%, 100%, 1.0) hwb(360deg, 100%, 100%, 1.0) hwb(360, 100%, 100%, 1.0)\n /^hwba?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n // hwb(360deg 100% 100% 1.0) hwb(360 100% 100% / 1.0) hwba(360deg 100% 100% 1.0) hwba(360 100% 100% / 1.0)\n /^hwba?\\s*\\(\\s*(\\d{1,3})(?:deg)?\\s+([\\d.]+)%\\s+([\\d.]+)%\\s*\\/\\s*(\\d|\\d\\.\\d+)\\s*\\)$/i,\n ],\n\n rgb: [\n // rgb(255, 255, 255)\n /^rgb\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i,\n // rgb(255 255 255)\n /^rgb\\s*\\(\\s*(\\d{1,3})\\s+(\\d{1,3})\\s+(\\d{1,3})\\s*\\)$/i,\n ],\n rgba: [\n // rgba(255, 255, 255, 1.0) rgb(255, 255, 255, 1.0)\n /^rgba?\\s*\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*([\\d.]+)\\s*\\)$/i,\n // rgba(255 255 255 / 1.0) rgb(255 255 255 / 1.0)\n /^rgba?\\s*\\(\\s*(\\d{1,3})\\s+(\\d{1,3})\\s+(\\d{1,3})\\s*\\/\\s*([\\d.]+)\\s*\\)$/i,\n ],\n } satisfies Record<ColorFormats, RegExp | RegExp[]>;\n\n // #region General utilities\n const clamp = (value: number, min: number, max: number) => {\n return Math.max(min, Math.min(value, max));\n };\n\n const clampRGB = (value: number) => {\n return clamp(value, 0, 255);\n };\n\n const clampHue = (value: number) => {\n return clamp(value, 0, 360);\n };\n\n const clamp100 = (value: number) => {\n return clamp(value, 0, 100);\n };\n\n const clampAlpha = (value: number) => {\n return clamp(+value.toFixed(2), 0, 1);\n };\n\n const randomNumber = (min: number, max: number) => {\n return Math.random() * (max - min) + min;\n };\n\n const numberToHexString = (c: number): string => {\n c = clampRGB(Math.round(c));\n return c.toString(16).padStart(2, '0');\n };\n\n const calculateHueValue = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n /** Convert any `HEX` color to 8-digit `HEX` color (#rrggbbaa) */\n const normalize_HEX = (color: string): string => {\n const parts = color.replace(/^#/, '').split('');\n\n if (parts.length === 3) {\n return `#${parts.map(x => x + x).join('')}ff`;\n }\n\n if (parts.length === 4) {\n return `#${parts.map(x => x + x).join('')}`;\n }\n\n if (parts.length === 6) {\n return `#${parts.join('')}ff`;\n }\n\n return color;\n };\n\n /** Does not work for hex (16 base) */\n const matchColorRegex = (color: string, regexArray: RegExp[]) => {\n for (const regex of regexArray) {\n const matches = color.match(regex);\n if (matches) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n parseFloat(matches[4] ?? '1'),\n ] as const;\n }\n }\n };\n\n /** Only for hex (16 base) */\n const matchHexRegex = (color: string, regex: RegExp) => {\n if (!regex.test(color)) return;\n\n const hex8 = normalize_HEX(color);\n\n const matches = hex8.match(COLORS_REGEX.hex8);\n if (!matches) return;\n\n return [\n parseInt(matches[1], 16),\n parseInt(matches[2], 16),\n parseInt(matches[3], 16),\n parseInt(matches[4], 16) / 255,\n ] as const;\n };\n\n /** Check if color object has all required keys */\n const isColorObject = <T extends ColorObject>(colorObject: ColorObject, keys: (keyof T)[]): colorObject is T => {\n return keys.every(k => colorObject.hasOwnProperty(k) && typeof colorObject[k as keyof ColorObject] === 'number');\n };\n\n const clampColorObject = <T extends ColorObject>(color: T): T => {\n const castColor = color as unknown as Record<string, number>;\n\n for (const [key, value] of Object.entries(castColor)) {\n // 'r' and 'g' are red and green (0-255) in RGB\n if (key === 'r' || key === 'g') {\n castColor[key] = clampRGB(value);\n continue;\n }\n\n // 'b' is blue (0-255) in RGB, blackness (0-100) in HWB\n if (key === 'b') {\n castColor[key] = 'w' in castColor ? clamp100(value) : clampRGB(value);\n continue;\n }\n\n // 'h' is hue (0-360) in HSL, HWB, and HSV\n if (key === 'h') {\n castColor[key] = clampHue(value);\n continue;\n }\n\n // a is alpha (0-1)\n if (key === 'a') {\n castColor[key] = clampAlpha(value);\n continue;\n }\n\n // 'v' is value/brightness (0-100) in HSV\n // 's' is saturation (0-100) in HSL and HSV\n // 'l' is lumenosity (0-100) in HSL\n // 'w' is whiteness (0-100) in HWB\n castColor[key] = clamp100(value);\n }\n\n return color;\n };\n\n /** Mutate color object to have an `a` property */\n const forceColorObjectAlpha = <T extends ColorObject>(color: T): T & { a: number } => {\n if (!color.hasOwnProperty('a')) {\n return Object.assign(color, { a: 1 }) as T & { a: number };\n }\n\n return color as T & { a: number };\n };\n // #endregion\n\n // #region RGB\n /** Convert an `RGB` or `RGBA` color to its corresponding `Hex` color */\n const RGB_to_HEX = ({ r, g, b, a }: RgbaT, forceAlpha?: boolean): string => {\n const red = numberToHexString(r);\n const green = numberToHexString(g);\n const blue = numberToHexString(b);\n const alpha = numberToHexString(a * 255);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return `#${red + green + blue + (hasAlpha ? alpha : '')}`;\n };\n\n /** Convert an `RGB` or `RGBA` color to an `HSLA` object representation */\n const RGB_to_HSLA = (color: RgbaT): HslaT => {\n const r = color.r / 255,\n g = color.g / 255,\n b = color.b / 255,\n a = color.a;\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n\n let h = 0,\n s,\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n if (max === r) {\n h = (g - b) / d + (g < b ? 6 : 0);\n } else if (max === g) {\n h = (b - r) / d + 2;\n } else if (max === b) {\n h = (r - g) / d + 4;\n }\n\n h /= 6;\n }\n\n h = clampHue(h * 360);\n s = clamp100(s * 100);\n l = clamp100(l * 100);\n\n return { h, s, l, a: clampAlpha(a) };\n };\n\n /** Convert `RGB` or `RGBA` color to an `HSVA` object representation */\n const RGB_to_HSVA = (color: RgbaT): HsvaT => {\n const r = color.r / 255,\n g = color.g / 255,\n b = color.b / 255,\n a = color.a;\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b),\n d = max - min,\n v = max,\n s = max === 0 ? 0 : d / max;\n\n let h = 0;\n\n if (max === min) {\n h = 0;\n } else {\n if (max === r) {\n h = (g - b) / d + (g < b ? 6 : 0);\n } else if (max === g) {\n h = (b - r) / d + 2;\n } else if (max === b) {\n h = (r - g) / d + 4;\n }\n\n h = h / 6;\n }\n\n return {\n h: clampHue(h * 360),\n s: clamp100(s * 100),\n v: clamp100(v * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `RGB` or `RGBA` color to an `HWBA` object representation */\n const RGB_to_HWBA = (color: RgbaT): HwbaT => {\n const red = color.r / 255,\n green = color.g / 255,\n blue = color.b / 255,\n a = color.a;\n\n const { h } = RGB_to_HSLA(color);\n\n const white = Math.min(red, green, blue) * 100;\n const black = (1 - Math.max(red, green, blue)) * 100;\n\n return {\n h: clampHue(h),\n w: clamp100(white),\n b: clamp100(black),\n a: clampAlpha(a),\n };\n };\n\n /** Return the `RGB` color as a string, an array, or an object */\n const RGB_types = ({ r, g, b, a }: RgbaT): ColorTypes<RgbaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `rgba(${r}, ${g}, ${b}, ${a ?? 1})` : `rgb(${r}, ${g}, ${b})`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n }\n return [r, g, b, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n }\n return { r, g, b, a };\n },\n };\n };\n // #endregion\n\n // #region HSL\n /** Convert `HSL` or `HSLA` color to an `RGBA` object representation */\n const HSL_to_RGBA = (color: HslaT): RgbaT => {\n const h = color.h / 360,\n s = color.s / 100,\n l = color.l / 100,\n a = color.a;\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s,\n p = 2 * l - q;\n\n const r = calculateHueValue(p, q, h + 1 / 3),\n g = calculateHueValue(p, q, h),\n b = calculateHueValue(p, q, h - 1 / 3);\n\n return {\n r: clampRGB(r * 255),\n g: clampRGB(g * 255),\n b: clampRGB(b * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSL` or `HSLA` color to `HEX` color */\n const HSL_to_HEX = (color: HslaT, forceAlpha?: boolean): string => {\n const rgb = HSL_to_RGBA(color);\n return RGB_to_HEX(rgb, forceAlpha);\n };\n\n /** Convert `HSL` or `HSLA` color to an `HSVA` object representation */\n const HSL_to_HSVA = (color: HslaT): HsvaT => {\n const h = color.h;\n\n const s = color.s / 100,\n l = color.l / 100,\n a = (color as HslaT).a ?? 1,\n v = l + s * Math.min(l, 1 - l),\n sNew = v === 0 ? 0 : 2 - (2 * l) / v;\n\n return {\n h: clampHue(h),\n s: clamp100(sNew * 100),\n v: clamp100(v * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSL` or `HSLA` color to an `HWBA` object representation */\n const HSL_to_HWBA = (color: HslaT): HwbaT => {\n const hsva = HSL_to_HSVA(color);\n return HSV_to_HWBA(hsva);\n };\n\n /** Return the `HSL` color as a string, an array, or an object */\n const HSL_types = ({ h, s, l, a }: HslaT): ColorTypes<HslaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hsla(${h}, ${s}%, ${l}%, ${a ?? 1})` : `hsl(${h}, ${s}%, ${l}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n }\n return [h, s, l, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n l = Math.round(l);\n }\n return { h, s, l, a };\n },\n };\n };\n // #endregion\n\n // #region HWB\n /** Convert `HWB` or `HWBA` color to an `RGBA` object representation */\n const HWB_to_RGBA = (color: HwbaT): RgbaT => {\n const h = color.h / 360,\n w = color.w / 100,\n b = color.b / 100,\n a = color.a;\n\n if (w + b >= 1) {\n const gray = clampRGB((w * 255) / (w + b));\n return {\n r: gray,\n g: gray,\n b: gray,\n a,\n };\n }\n\n const red = calculateHueValue(0, 1, h + 1 / 3) * (1 - w - b) + w,\n green = calculateHueValue(0, 1, h) * (1 - w - b) + w,\n blue = calculateHueValue(0, 1, h - 1 / 3) * (1 - w - b) + w;\n\n return {\n r: clampRGB(red * 255),\n g: clampRGB(green * 255),\n b: clampRGB(blue * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HWB` or `HWBA` color to an `Hex` color */\n const HWB_to_HEX = (color: HwbaT, forceAlpha?: boolean): string => {\n const rgba = HWB_to_RGBA(color);\n return RGB_to_HEX(rgba, forceAlpha);\n };\n\n /** Convert `HWB` or `HWBA` color to an `HSVA` object representation */\n function HWB_to_HSVA(color: HwbaT): HsvaT {\n const h = color.h % 360,\n w = color.w / 100,\n b = color.b / 100,\n a = color.a;\n\n const v = (1 - b) * 100;\n let s = (1 - w / (v / 100)) * 100;\n s = isNaN(s) ? 0 : s;\n\n return {\n h: clampHue(h),\n s: clamp100(s),\n v: clamp100(v),\n a: clampAlpha(a),\n };\n }\n\n /** Convert `HWB` or `HWBA` color to an `HSLA` object representation */\n const HWB_to_HSLA = (color: HwbaT): HslaT => {\n const hsva = HWB_to_HSVA(color);\n return HSV_to_HSLA(hsva);\n };\n\n /** Return the `HWB` color as a string, an array, or an object */\n const HWB_types = ({ h, w, b, a }: HwbaT): ColorTypes<HwbaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hwb(${h} ${w}% ${b}% / ${a ?? 1})` : `hwb(${h} ${w}% ${b}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n }\n return [h, w, b, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n w = Math.round(w);\n b = Math.round(b);\n }\n return { h, w, b, a };\n },\n };\n };\n // #endregion\n\n // #region HSV\n /** Convert `HSV` color to an `RGBA` object representation */\n const HSV_to_RGBA = (color: HsvaT): RgbaT => {\n const h = color.h / 360,\n s = color.s / 100,\n v = color.v / 100,\n a = color.a;\n\n const i = Math.floor(h * 6),\n f = h * 6 - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s);\n\n let r = 0,\n g = 0,\n b = 0;\n\n if (i % 6 === 0) {\n r = v;\n g = t;\n b = p;\n } else if (i % 6 === 1) {\n r = q;\n g = v;\n b = p;\n } else if (i % 6 === 2) {\n r = p;\n g = v;\n b = t;\n } else if (i % 6 === 3) {\n r = p;\n g = q;\n b = v;\n } else if (i % 6 === 4) {\n r = t;\n g = p;\n b = v;\n } else if (i % 6 === 5) {\n r = v;\n g = p;\n b = q;\n }\n\n return {\n r: clampRGB(r * 255),\n g: clampRGB(g * 255),\n b: clampRGB(b * 255),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSV` color to an `HSLA` object representation */\n const HSV_to_HSLA = (color: HsvaT): HslaT => {\n const h = color.h,\n s = color.s / 100,\n v = color.v / 100,\n a = color.a;\n\n const l = ((2 - s) * v) / 2,\n sl = s * v,\n sln = l !== 0 && l !== 1 ? sl / (l < 0.5 ? l * 2 : 2 - l * 2) : sl;\n\n return {\n h: clampHue(h),\n s: clamp100(sln * 100),\n l: clamp100(l * 100),\n a: clampAlpha(a),\n };\n };\n\n /** Convert `HSV` color to an `Hex` color */\n const HSV_to_HEX = (color: HsvaT, forceAlpha?: boolean): string => {\n const rgba = HSV_to_RGBA(color);\n return RGB_to_HEX(rgba, forceAlpha);\n };\n\n /** Convert `HSV` color to an `HWBA` object representation */\n const HSV_to_HWBA = ({ h, s, v, a }: HsvaT): HwbaT => {\n const w = (1 - s / 100) * v,\n b = (1 - v / 100) * 100;\n\n return {\n h: clampHue(h),\n w: clamp100(w),\n b: clamp100(b),\n a: clampAlpha(a),\n };\n };\n\n /** Return the `HSV` color as a string, an array, or an object */\n const HSV_types = ({ h, s, v, a }: HsvaT): ColorTypes<HsvaT> => {\n return {\n string: (forceAlpha?: boolean) => {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n a = +a.toFixed(2);\n\n const hasAlpha = forceAlpha ?? a !== 1;\n return hasAlpha ? `hsva(${h}, ${s}%, ${v}%, ${a ?? 1})` : `hsv(${h}, ${s}%, ${v}%)`;\n },\n array: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n }\n return [h, s, v, a];\n },\n object: (roundValues = true) => {\n if (roundValues) {\n h = Math.round(h);\n s = Math.round(s);\n v = Math.round(v);\n }\n return { h, s, v, a };\n },\n };\n };\n // #endregion\n\n // #region Color conversions\n /** Convert `HSL`, `HSV`, `HWB`, or `RGB` color to the `HEX` color format. */\n const HEX = (color: SupportedColorFormats, forceAlpha?: boolean): string => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HEX] An error occurred while attempting to convert the provided parameter into an `HEX` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return '#000000';\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // RGB to HEX\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_to_HEX(value, forceAlpha);\n }\n\n // HSL to HEX\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSL_to_HEX(value, forceAlpha);\n }\n\n // HSV to HEX\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSV_to_HEX(value, forceAlpha);\n }\n\n // HWB to HEX\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n return HWB_to_HEX(value, forceAlpha);\n }\n\n // HEX\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_to_HEX(value, forceAlpha);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HSV`, `HWB`, or `HEX` color to the `RGB` color format. */\n const RGB = (color: SupportedColorFormats): ColorTypes<RgbaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.RGB] An error occurred while attempting to convert the provided parameter into an `RGB` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return RGB_types({ r: 0, g: 0, b: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to RGB\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_types(value);\n }\n\n // HSL to RGB\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HSL_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // HSV to RGB\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HSV_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // HWB to RGB\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const rgb = HWB_to_RGBA(value);\n return RGB_types(rgb);\n }\n\n // RGB to normalized RGB\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n return RGB_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HEX`, `HSV`, `HWB`, or `RGB` color to the `HSL` color format. */\n const HSL = (color: SupportedColorFormats): ColorTypes<HslaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HSL] An error occurred while attempting to convert the provided parameter into an `HSL` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HSL_types({ h: 0, s: 0, l: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HSL\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = RGB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // RGB to HSL\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = RGB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HSV to HSL\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = HSV_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HWB to HSL\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsla = HWB_to_HSLA(value);\n return HSL_types(hsla);\n }\n\n // HSL to normalized HSL\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSL_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HEX`, `HSV`, or `RGB` color to the `HWB` color format. */\n const HWB = (color: SupportedColorFormats): ColorTypes<HwbaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HWB] An error occurred while attempting to convert the provided parameter into an `HWB` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HWB_types({ h: 0, w: 0, b: 100, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HWB\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = RGB_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // RGB to HWB\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = RGB_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HSL to HWB\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = HSL_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HSV to HWB\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n const hwba = HSV_to_HWBA(value);\n return HWB_types(hwba);\n }\n\n // HWB to normalized HWB\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n return HWB_types(value);\n }\n\n const _: never = format;\n return _;\n };\n\n /** Convert `HSL`, `HEX`, `HWB`, or `RGB` color to the `HSV` color format. */\n const HSV = (color: SupportedColorFormats): ColorTypes<HsvaT> => {\n const parsed = parse(color);\n if (!parsed) {\n console.error(\n '[colorKit.HSV] An error occurred while attempting to convert the provided parameter into an `HSV` color. As a result, the default color \"black\" will be used instead.',\n );\n\n return HSV_types({ h: 0, s: 0, v: 0, a: 1 });\n }\n\n const format = parsed.format;\n parsed.value = clampColorObject(parsed.value);\n\n // HEX to HSV\n if (format === 'hex3' || format === 'hex4' || format === 'hex6' || format === 'hex8' || format === 'named') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = RGB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // RGB to HSV\n if (format === 'rgb' || format === 'rgba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = RGB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HSL to HSV\n if (format === 'hsl' || format === 'hsla') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = HSL_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HWB to HSV\n if (format === 'hwb' || format === 'hwba') {\n const value = forceColorObjectAlpha(parsed.value);\n const hsva = HWB_to_HSVA(value);\n return HSV_types(hsva);\n }\n\n // HSV to normalized HSV\n if (format === 'hsv' || format === 'hsva') {\n const value = forceColorObjectAlpha(parsed.value);\n return HSV_types(value);\n }\n\n const _: never = format;\n return _;\n };\n // #endregion\n\n // #region Color Information\n /** Identify the color format of a given `string` or `object`, and return `null` for invalid colors. */\n const getFormat = (color: SupportedColorFormats): ColorFormats | 'named' | null => {\n const parsed = parse(color);\n if (parsed) {\n return parsed.format;\n }\n\n return null;\n };\n\n /** Get the `red` channel value of a given color. */\n const getRed = (color: SupportedColorFormats): number => {\n const { r } = RGB(color).object();\n return r;\n };\n\n /** Get the `green` channel value of a given color. */\n const getGreen = (color: SupportedColorFormats): number => {\n const { g } = RGB(color).object();\n return g;\n };\n\n /** Get the `blue` channel value of a given color. */\n const getBlue = (color: SupportedColorFormats): number => {\n const { b } = RGB(color).object();\n return b;\n };\n\n /** Get the `hue` channel value of a given color. */\n const getHue = (color: SupportedColorFormats): number => {\n const { h } = HSL(color).object();\n return h;\n };\n\n /** Get the `saturation` value of a given color. */\n const getSaturation = (color: SupportedColorFormats): number => {\n const { s } = HSL(color).object();\n return s;\n };\n\n /**\n * Get color's HSL `luminosity` channel value.\\\n * If you want the overall `luminosity` of a color use `getLuminanceWCAG` method.\n */\n const getLuminance = (color: SupportedColorFormats): number => {\n const { l } = HSL(color).object();\n return l;\n };\n\n /** Get the HSV's `value` (brightness) channel value of a given color. */\n const getBrightness = (color: SupportedColorFormats): number => {\n const { v } = HSV(color).object();\n return v;\n };\n\n /** Returns the perceived `luminance` of a color, from `0-1` as defined by Web Content Accessibility Guidelines (Version 2.0). */\n const getLuminanceWCAG = (color: SupportedColorFormats): number => {\n const { r, g, b } = RGB(color).object(false);\n const a = [r, g, b].map(v => (v / 255 <= 0.03928 ? v / 255 / 12.92 : Math.pow((v / 255 + 0.055) / 1.055, 2.4)));\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n };\n\n /** Returns a boolean indicating whether the color is considered \"dark\" or not */\n const isDark = (color: SupportedColorFormats): boolean => {\n const luminance = getLuminanceWCAG(color);\n return luminance < 0.5;\n };\n\n /** Returns a boolean indicating whether the color is considered \"light\" or not */\n const isLight = (color: SupportedColorFormats): boolean => {\n const luminance = getLuminanceWCAG(color);\n return luminance >= 0.5;\n };\n\n /**\n * Check if two colors are similar within a specified tolerance.\n *\n * @example\n * const tolerance = 0;\n * const isEqual = colorKit.areColorsEqual('#f00', 'red', tolerance); // true\n */\n const areColorsEqual = (color1: SupportedColorFormats, color2: SupportedColorFormats, tolerance = 0): boolean => {\n const rgb1 = RGB(color1).object();\n const rgb2 = RGB(color2).object();\n\n const deltaR = rgb1.r - rgb2.r;\n const deltaG = rgb1.g - rgb2.g;\n const deltaB = rgb1.b - rgb2.b;\n const difference = Math.sqrt(deltaR * deltaR + deltaG * deltaG + deltaB * deltaB);\n\n return difference <= tolerance;\n };\n\n /** Calculates the contrast ratio between two colors, useful for ensuring accessibility and readability. */\n const contrastRatio = (color1: SupportedColorFormats, color2: SupportedColorFormats): number => {\n const luminance1 = getLuminanceWCAG(color1);\n const luminance2 = getLuminanceWCAG(color2);\n const contrast = (Math.max(luminance1, luminance2) + 0.05) / (Math.min(luminance1, luminance2) + 0.05);\n return Math.round(contrast * 100) / 100;\n };\n // #endregion\n\n // #region Color Manipulation\n const returnColorObject = (color: SupportedColorFormats) => {\n return {\n hex() {\n return HEX(color);\n },\n rgb() {\n return RGB(color);\n },\n hsl() {\n return HSL(color);\n },\n hsv() {\n return HSV(color);\n },\n hwb() {\n return HWB(color);\n },\n };\n };\n\n // #region Red Manuipulation\n /** Set the `red` value of a color to a specific amount. */\n const setRed = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { g, b, a } = RGB(color).object();\n const newR = clampRGB(amount);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `red` value of a color by the given percentage/amount.\n *\n * @example\n * increaseRed('rgb(100, 100, 100)', 20).hex();\n * increaseRed('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseRed = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const red = typeof amount === 'string' ? r + r * (parseFloat(amount) / 100) : r + amount;\n const newR = clampRGB(red);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `red` value of a color by the given percentage/amount\n *\n * @example\n * decreaseRed('rgb(100, 100, 100)', 20).hex();\n * decreaseRed('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseRed = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const red = typeof amount === 'string' ? r - r * (parseFloat(amount) / 100) : r - amount;\n const newR = clampRGB(red);\n const newColor = { r: newR, g, b, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Green Manuipulation\n /** Set the `green` value of a color to a specific amount. */\n const setGreen = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, b, a } = RGB(color).object();\n const newG = clampRGB(amount);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `green` value of a color by the given percentage.\n *\n * @example\n * increaseGreen('rgb(100, 100, 100)', 20).hex();\n * increaseGreen('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseGreen = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const green = typeof amount === 'string' ? g + g * (parseFloat(amount) / 100) : g + amount;\n const newG = clampRGB(green);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `green` value of a color by the given percentage.\n *\n * @example\n * decreaseGreen('rgb(100, 100, 100)', 20).hex();\n * decreaseGreen('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseGreen = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const green = typeof amount === 'string' ? g - g * (parseFloat(amount) / 100) : g - amount;\n const newG = clampRGB(green);\n const newColor = { r, g: newG, b, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Blue Manuipulation\n /** Set the `blue` value of a color to a specific amount. */\n const setBlue = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, g, a } = RGB(color).object();\n const newB = clampRGB(amount);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `blue` value of a color by the given percentage.\n *\n * @example\n * increaseBlue('rgb(100, 100, 100)', 20).hex();\n * increaseBlue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseBlue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const blue = typeof amount === 'string' ? b + b * (parseFloat(amount) / 100) : b + amount;\n const newB = clampRGB(blue);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `blue` value of a color by the given percentage.\n *\n * @example\n * decreaseBlue('rgb(100, 100, 100)', 20).hex();\n * decreaseBlue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseBlue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const blue = typeof amount === 'string' ? b - b * (parseFloat(amount) / 100) : b - amount;\n const newB = clampRGB(blue);\n const newColor = { r, g, b: newB, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Alpha Manuipulation\n /** Get the `alpha` value of a given color. */\n const getAlpha = (color: SupportedColorFormats): number => {\n const { a } = RGB(color).object();\n return a;\n };\n\n /** Set the `alpha` value of a color to a specific amount. */\n const setAlpha = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { r, g, b } = RGB(color).object();\n const newA = clampAlpha(amount);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n\n /** Increase the `alpha` value of a color by the given percentage. */\n const increaseAlpha = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const alpha = typeof amount === 'string' ? a + a * (parseFloat(amount) / 100) : a + amount;\n const newA = clampAlpha(alpha);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n\n /** Decrease the `alpha` value of a color by the given percentage. */\n const decreaseAlpha = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const alpha = typeof amount === 'string' ? a - a * (parseFloat(amount) / 100) : a - amount;\n const newA = clampAlpha(alpha);\n const newColor = { r, g, b, a: newA };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Hue Manuipulation\n /** Set the `hue` value of a color to a specific amount. */\n const setHue = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { s, l, a } = HSL(color).object();\n const newH = clampHue(amount);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the `hue` value of a color by the given percentage/amount.\n *\n * @example\n * increaseHue('rgb(100, 100, 100)', 20).hex();\n * increaseHue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const increaseHue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const hue = typeof amount === 'string' ? h + h * (parseFloat(amount) / 100) : h + amount;\n const newH = clampHue(hue);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Decrease the `hue` value of a color by the given percentage/amount.\n *\n * @example\n * decreaseHue('rgb(100, 100, 100)', 20).hex();\n * decreaseHue('rgb(100, 100, 100)', '20%').rgb().string();\n */\n const decreaseHue = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const hue = typeof amount === 'string' ? h - h * (parseFloat(amount) / 100) : h - amount;\n const newH = clampHue(hue);\n const newColor = { h: newH, s, l, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Spin the `hue` channel by a certain percentage/amount.\n *\n * @example\n * spin('red', 20).hex();\n * spin('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const spin = (color: SupportedColorFormats, degree: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const spinDegree = typeof degree === 'string' ? s * (parseFloat(degree) / 100) : degree;\n const newColor = { h: Math.round((h + spinDegree) % 360), s, l, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n\n // #region Saturation Manuipulation\n /** Set the `saturation` value of a color to a specific amount. */\n const setSaturation = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, l, a } = HSL(color).object();\n const newS = clamp100(amount);\n const saturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(saturatedColor);\n };\n\n /**\n * Increase the saturation of the given color by a certain percentage/amount.\n *\n * @example\n * saturate('red', 20).hex();\n * saturate('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const saturate = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const saturation = typeof amount === 'string' ? s + s * (parseFloat(amount) / 100) : s + amount;\n const newS = clamp100(saturation);\n const saturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(saturatedColor);\n };\n\n /**\n * Decrease the saturation of the given color by a certain percentage/amount.\n *\n * @example\n * saturate('red', 20).hex();\n * saturate('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const desaturate = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const saturation = typeof amount === 'string' ? s - s * (parseFloat(amount) / 100) : s - amount;\n const newS = clamp100(saturation);\n const desaturatedColor = { h, s: newS, l, a };\n\n return returnColorObject(desaturatedColor);\n };\n // #endregion\n\n // #region Brightness Manuipulation\n /** Set HSL's `luminosity` channel for a given color to a specific amount. */\n const setLuminance = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, s, a } = HSL(color).object();\n const newL = clamp100(amount);\n const newColor = { h, s, l: newL, a };\n\n return returnColorObject(newColor);\n };\n\n /**\n * Increase the brightness of the given color by a certain percentage/amount.\n *\n * @example\n * brighten('red', 20).hex();\n * brighten('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const brighten = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const lum = typeof amount === 'string' ? l + l * (parseFloat(amount) / 100) : l + amount;\n const newL = clamp100(lum);\n const brightenedColor = { h, s, l: newL, a };\n\n return returnColorObject(brightenedColor);\n };\n\n /**\n * Decrease the brightness of the given color by a certain percentage/amount.\n *\n * @example\n * darken('red', 20).hex();\n * darken('rgb(255, 0, 0)', '20%').rgb().string();\n */\n const darken = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, l, a } = HSL(color).object();\n const lum = typeof amount === 'string' ? l - l * (parseFloat(amount) / 100) : l - amount;\n const newL = clamp100(lum);\n const darkenedColor = { h, s, l: newL, a };\n\n return returnColorObject(darkenedColor);\n };\n\n /** Set HSV's `value` (brightness) channel for a given color to a specific amount. */\n const setBrightness = (color: SupportedColorFormats, amount: number): ConversionMethods => {\n const { h, s, a } = HSV(color).object();\n const newV = clamp100(amount);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n\n /** Increase HSV's `value` (brightness) channel value of a color by the given percentage/amount. */\n const increaseBrightness = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, v, a } = HSV(color).object();\n const value = typeof amount === 'string' ? v + v * (parseFloat(amount) / 100) : v + amount;\n const newV = clamp100(value);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n\n /** Decrease HSV's `value` (brightness) channel value of a color by the given percentage/amount. */\n const decreaseBrightness = (color: SupportedColorFormats, amount: number | string): ConversionMethods => {\n const { h, s, v, a } = HSV(color).object();\n const value = typeof amount === 'string' ? v - v * (parseFloat(amount) / 100) : v - amount;\n const newV = clamp100(value);\n const newColor = { h, s, v: newV, a };\n\n return returnColorObject(newColor);\n };\n // #endregion\n // #endregion\n\n // #region Color Utilities\n /**\n * Parses any supported color format into a typed `{ format, value }` result.\n *\n * Accepts color strings (`\"#fff\"`, `\"rgb(255,0,0)\"`), color objects (`{ r, g, b }`), named colors (`\"red\"`), and integer colors\n * (`0xff0000ff`).\n *\n * Returns `undefined` if the input cannot be recognized as a valid color.\n */\n const parse = (color: SupportedColorFormats): ColorParseResult | undefined => {\n // Color int\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n const hex = '#' + color.toString(16).padStart(8, '0');\n const matches = matchHexRegex(hex, COLORS_REGEX.hex8);\n if (matches) {\n return { format: 'hex8', value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n return;\n }\n\n if (typeof color === 'string') {\n color = color.trim().toLowerCase();\n\n // Named\n if (NAMED_COLORS.hasOwnProperty(color)) {\n const matches = matchHexRegex(NAMED_COLORS[color as keyof typeof NAMED_COLORS], COLORS_REGEX.hex6);\n if (matches) {\n return { format: 'named', value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n for (const key in COLORS_REGEX) {\n const format = key as keyof typeof COLORS_REGEX;\n\n if (format === 'hex3' || format === 'hex6') {\n const matches = matchHexRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'hex4' || format === 'hex8') {\n const matches = matchHexRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'rgb') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'rgba') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { r: matches[0], g: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hsl') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], l: matches[2] } };\n }\n }\n\n if (format === 'hsla') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], l: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hsv') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], v: matches[2] } };\n }\n }\n\n if (format === 'hsva') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], s: matches[1], v: matches[2], a: matches[3] } };\n }\n }\n\n if (format === 'hwb') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], w: matches[1], b: matches[2] } };\n }\n }\n\n if (format === 'hwba') {\n const matches = matchColorRegex(color, COLORS_REGEX[format]);\n if (matches) {\n return { format, value: { h: matches[0], w: matches[1], b: matches[2], a: matches[3] } };\n }\n }\n }\n\n return;\n }\n\n // Color object\n const rgbaKeys: (keyof RgbaT)[] = ['r', 'g', 'b', 'a'];\n if (isColorObject(color, rgbaKeys)) {\n return { format: 'rgba', value: color };\n }\n\n const rgbKeys: (keyof RgbT)[] = ['r', 'g', 'b'];\n if (isColorObject(color, rgbKeys)) {\n return { format: 'rgb', value: color };\n }\n\n const hslaKeys: (keyof HslaT)[] = ['h', 's', 'l', 'a'];\n if (isColorObject(color, hslaKeys)) {\n return { format: 'hsla', value: color };\n }\n\n const hslKeys: (keyof HslT)[] = ['h', 's', 'l'];\n if (isColorObject(color, hslKeys)) {\n return { format: 'hsl', value: color };\n }\n\n const hsvaKeys: (keyof HsvaT)[] = ['h', 's', 'v', 'a'];\n if (isColorObject(color, hsvaKeys)) {\n return { format: 'hsva', value: color };\n }\n\n const hsvKeys: (keyof HsvT)[] = ['h', 's', 'v'];\n if (isColorObject(color, hsvKeys)) {\n return { format: 'hsv', value: color };\n }\n\n const hwbaKeys: (keyof HwbaT)[] = ['h', 'w', 'b', 'a'];\n if (isColorObject(color, hwbaKeys)) {\n return { format: 'hwba', value: color };\n }\n\n const hwbKeys: (keyof HwbT)[] = ['h', 'w', 'b'];\n if (isColorObject(color, hwbKeys)) {\n return { format: 'hwb', value: color };\n }\n };\n\n /**\n * Blends two colors by a certain amount.\n *\n * @example\n * blend('yellow', 'red', 50).hex(); // #ff8000\n */\n const blend = (color1: SupportedColorFormats, color2: SupportedColorFormats, percentage: number): ConversionMethods => {\n percentage = percentage / 100;\n\n const rgba1 = RGB(color1).object();\n const rgba2 = RGB(color2).object();\n\n const r = clampRGB(rgba1.r * (1 - percentage) + rgba2.r * percentage),\n g = clampRGB(rgba1.g * (1 - percentage) + rgba2.g * percentage),\n b = clampRGB(rgba1.b * (1 - percentage) + rgba2.b * percentage),\n a = clampAlpha(rgba1.a * (1 - percentage) + rgba2.a * percentage);\n\n const blendedColor = { r, g, b, a };\n\n return returnColorObject(blendedColor);\n };\n\n /** Invert (negate) a color, black becomes white, white becomes black, blue becomes orange and so on. */\n const invert = (color: SupportedColorFormats): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const invertedColor = { r: 255 - r, g: 255 - g, b: 255 - b, a };\n return returnColorObject(invertedColor);\n };\n\n /** Completely desaturate a color into grayscale. */\n const grayscale = (color: SupportedColorFormats): ConversionMethods => {\n const { r, g, b, a } = RGB(color).object();\n const gray = clampRGB(r * 0.3 + g * 0.59 + b * 0.11);\n const grayColor = { r: gray, g: gray, b: gray, a };\n\n return returnColorObject(grayColor);\n };\n\n /** Generate a random color from `HSL` values. */\n const randomHslColor = ({ h = [0, 360], s = [0, 100], l = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n s: clamp100(randomNumber(s[0], s[1])),\n l: clamp100(randomNumber(l[0], l[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `HSV` values. */\n const randomHsvColor = ({ h = [0, 360], s = [0, 100], v = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n s: clamp100(randomNumber(s[0], s[1])),\n v: clamp100(randomNumber(v[0], v[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `RGB` values. */\n const randomRgbColor = ({ r = [0, 255], g = [0, 255], b = [0, 255], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n r: clampRGB(randomNumber(r[0], r[1])),\n g: clampRGB(randomNumber(g[0], g[1])),\n b: clampRGB(randomNumber(b[0], b[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Generate a random color from `HWB` values. */\n const randomHwbColor = ({ h = [0, 360], w = [0, 100], b = [0, 100], a = [1, 1] } = {}): ConversionMethods => {\n const random = {\n h: clampHue(randomNumber(h[0], h[1])),\n w: clamp100(randomNumber(w[0], w[1])),\n b: clamp100(randomNumber(b[0], b[1])),\n a: clampAlpha(randomNumber(a[0], a[1])),\n };\n\n return returnColorObject(random);\n };\n\n /** Returns the first color with the desired contrast ratio against the second color */\n const adjustContrast = (color1: SupportedColorFormats, color2: SupportedColorFormats, ratio = 4.5): ConversionMethods => {\n const contrast = contrastRatio(color1, color2);\n const color1RGB = RGB(color1).object();\n const channels = ['r', 'g', 'b'] as const;\n\n function adjustLuminance(colorRGB: RgbaT, by: number) {\n const r = clampRGB(colorRGB.r + by);\n const g = clampRGB(colorRGB.g + by);\n const b = clampRGB(colorRGB.b + by);\n return { r, g, b, a: colorRGB.a };\n }\n\n let newColor = color1RGB;\n\n //* increase contrast\n if (ratio && contrast < ratio) {\n while (contrastRatio(newColor, color2) < ratio) {\n const adjustBy = isDark(color2) ? 1 : -1; // increase or decrease relative to the background color\n newColor = adjustLuminance(newColor, adjustBy);\n\n // break if the color reached the limit\n if (channels.every(e => newColor[e] === 0)) break;\n if (channels.every(e => newColor[e] === 255)) break;\n }\n //* decrease contrast\n } else if (ratio && contrast > ratio) {\n while (contrastRatio(newColor, color2) > ratio) {\n const adjustBy = !isDark(color2) ? 1 : -1; // increase or decrease relative to the background color\n newColor = adjustLuminance(newColor, adjustBy);\n\n // break if the color reached the limit\n if (channels.every(e => newColor[e] === 0)) break;\n if (channels.every(e => newColor[e] === 255)) break;\n }\n }\n\n return returnColorObject(newColor);\n };\n //#endregion\n\n return {\n // color conversion\n HEX,\n RGB,\n HSL,\n HWB,\n HSV,\n\n // color information\n getFormat,\n getRed,\n getGreen,\n getBlue,\n getHue,\n getSaturation,\n getBrightness,\n getLuminance,\n getLuminanceWCAG,\n isDark,\n isLight,\n areColorsEqual,\n contrastRatio,\n\n // color manipulation\n setRed,\n increaseRed,\n decreaseRed,\n\n setGreen,\n increaseGreen,\n decreaseGreen,\n\n setBlue,\n increaseBlue,\n decreaseBlue,\n\n getAlpha,\n setAlpha,\n increaseAlpha,\n decreaseAlpha,\n\n setHue,\n increaseHue,\n decreaseHue,\n spin,\n\n setSaturation,\n saturate,\n desaturate,\n\n setLuminance,\n brighten,\n darken,\n setBrightness,\n increaseBrightness,\n decreaseBrightness,\n\n // color utilities\n parse,\n blend,\n invert,\n grayscale,\n randomHslColor,\n randomHsvColor,\n randomRgbColor,\n randomHwbColor,\n adjustContrast,\n };\n};\n\ntype ColorKit = ReturnType<typeof colorKitUI> & {\n /** Initiates the asynchronous execution of a workletized colorKit function on the UI thread. */\n runOnUI: typeof colorKitUI;\n};\n\n/** @see [colorKit](https://alabsi91.github.io/reanimated-color-picker/colorkit/) */\nconst colorKit = colorKitUI() as ColorKit;\ncolorKit.runOnUI = colorKitUI;\nexport default colorKit;\n"
|
|
388
388
|
],
|
|
389
|
-
"mappings": "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",
|
|
389
|
+
"mappings": "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",
|
|
390
390
|
"ignoreList": []
|
|
391
391
|
}
|