@kurkle/color 0.3.4 → 0.5.0

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/byte.ts", "../src/hex.ts", "../src/hue.ts", "../src/packed.ts", "../src/names.ts", "../src/rgb.ts", "../src/srgb.ts", "../src/color.ts", "../src/index.esm.ts"],
4
+ "sourcesContent": ["/**\n * @packageDocumentation\n * @module utils\n */\n\n/**\n * Rounds decimal to nearest integer\n * @param v - the number to round\n */\nexport function round(v: number): number {\n return (v + 0.5) | 0\n}\n\nexport const lim = (v: number, l: number, h: number): number => Math.max(Math.min(v, h), l)\n\n/**\n * convert percent to byte 0..255\n * @param v - 0..100\n */\nexport function p2b(v: number): number {\n return lim(round(v * 2.55), 0, 255)\n}\n\n/**\n * convert byte to percet 0..100\n * @param v - 0..255\n */\nexport function b2p(v: number): number {\n return lim(round(v / 2.55), 0, 100)\n}\n\n/**\n * convert normalized to byte 0..255\n * @param v - 0..1\n */\nexport function n2b(v: number): number {\n return lim(round(v * 255), 0, 255)\n}\n\n/**\n * convert byte to normalized 0..1\n * @param v - 0..255\n */\nexport function b2n(v: number): number {\n return lim(round(v / 2.55) / 100, 0, 1)\n}\n\n/**\n * convert normalized to percent 0..100\n * @param v - 0..1\n */\nexport function n2p(v: number): number {\n return lim(round(v * 100), 0, 100)\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\n/**\n * @hidden\n */\nconst map: Record<string, number> = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15,\n}\n\n/**\n * @hidden\n */\nconst hex = [...'0123456789ABCDEF']\n\n/**\n * @param b - byte\n * @hidden\n */\nconst h1 = (b: number): string => hex[b & 0xf]\n\n/**\n * @param b - byte\n * @hidden\n */\nconst h2 = (b: number): string => hex[(b & 0xf0) >> 4] + hex[b & 0xf]\n\n/**\n * @param b - byte\n * @hidden\n */\nconst eq = (b: number): boolean => (b & 0xf0) >> 4 === (b & 0xf)\n\n/**\n * @param v - the color\n * @hidden\n */\nconst isShort = (v: RGBA): boolean => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a)\n\n/**\n * Parse HEX to color\n * @param str - the string\n */\nexport function hexParse(str: string): RGBA | undefined {\n if (str[0] !== '#') {\n return // undefined\n }\n const len = str.length\n\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? (map[str[4]] << 4) | map[str[4]] : 255,\n b: (map[str[3]] << 4) | map[str[3]],\n g: (map[str[2]] << 4) | map[str[2]],\n r: (map[str[1]] << 4) | map[str[1]],\n }\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? (map[str[7]] << 4) | map[str[8]] : 255,\n b: (map[str[5]] << 4) | map[str[6]],\n g: (map[str[3]] << 4) | map[str[4]],\n r: (map[str[1]] << 4) | map[str[2]],\n }\n }\n}\n\nconst alpha = (a: number, f: (b: number) => string): string => (a < 255 ? f(a) : '')\n\n/**\n * Return HEX string from color\n * @param v - the color\n * @return {string|undefined}\n */\nexport function hexString(v: RGBA | undefined): string | undefined {\n const f = v && isShort(v) ? h1 : h2\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : undefined\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, n2b, n2p, p2b } from './byte.js'\n\n/**\n * @hidden\n */\nconst HUE_RE =\n /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/\n\n/**\n * Converts hsl to rgb normalized\n * @url https://jsfiddle.net/Lamik/reuk63ay/91\n * @param h - hue [0..360]\n * @param s - saturation [0..1]\n * @param l - lightness [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsl2rgbn(h: number, s: number, l: number): number[] {\n const a = s * Math.min(l, 1 - l)\n /**\n * @param n\n */\n const f = (n: number, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\n return [f(0), f(8), f(4)]\n}\n\n/**\n * Convert hsv to rgb normalized\n * @url https://jsfiddle.net/Lamik/Lr61wqub/15/\n * @param h - hue [0..360]\n * @param s - saturation [0..1]\n * @param v - value [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsv2rgbn(h: number, s: number, v: number): number[] {\n /**\n * @param n\n */\n const f = (n: number, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n return [f(5), f(3), f(1)]\n}\n\n/**\n * Convert hwb to rgb normalized\n * @param h - hue [0..360]\n * @param w - whiteness [0..1]\n * @param b - blackness [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hwb2rgbn(h: number, w: number, b: number): number[] {\n const rgb = hsl2rgbn(h, 1, 0.5)\n let i: number\n if (w + b > 1) {\n i = 1 / (w + b)\n w *= i\n b *= i\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b\n rgb[i] += w\n }\n return rgb\n}\n\nfunction hueValue(r: number, g: number, b: number, d: number, max: number): number {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0)\n }\n if (g === max) {\n return (b - r) / d + 2\n }\n return (r - g) / d + 4\n}\n\n/**\n * Convert rgb to hsl\n * @param v - the color\n * @returns - [h, s, l]\n */\nexport function rgb2hsl(v: RGBA): number[] {\n const range = 255\n const r = v.r / range\n const g = v.g / range\n const b = v.b / range\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n const l = (max + min) / 2\n let h: number = 0\n let s: number = 0\n let d: number\n if (max !== min) {\n d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n h = hueValue(r, g, b, d, max)\n h = h * 60 + 0.5\n }\n return [h | 0, s || 0, l]\n}\n\n/**\n * @param f\n * @param a\n * @param b\n * @param c\n * @private\n * @hidden\n */\nfunction calln(\n f: (h: number, s: number, l: number) => number[],\n a: number | number[],\n b?: number,\n c?: number\n): number[] {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b!, c!)).map(n2b)\n}\n\n/**\n * Convert hsl to rgb\n * @param h - hue | [h, s, l]\n * @param s - saturation\n * @param l - lightness\n * @returns\n */\nexport function hsl2rgb(h: number | number[], s?: number, l?: number): number[] {\n return calln(hsl2rgbn, h, s, l)\n}\n\n/**\n * Convert hwb to rgb\n * @param h - hue | [h, s, l]\n * @param w - whiteness\n * @param b - blackness\n * @returns\n */\nexport function hwb2rgb(h: number | number[], w?: number, b?: number): number[] {\n return calln(hwb2rgbn, h, w, b)\n}\n\n/**\n * Convert hsv to rgb\n * @param h - hue | [h, s, l]\n * @param s - saturation\n * @param v - value\n * @returns\n */\nexport function hsv2rgb(h: number | number[], s?: number, v?: number): number[] {\n return calln(hsv2rgbn, h, s, v)\n}\n\n/**\n * @param h - the angle\n * @hidden\n */\nfunction hue(h: number): number {\n return ((h % 360) + 360) % 360\n}\n\n/**\n * Parse hsl/hsv/hwb color string\n * @param str - hsl/hsv/hwb color string\n * @returns - the parsed color components\n */\nexport function hueParse(str: string): RGBA | undefined {\n const m = HUE_RE.exec(str)\n let a = 255\n let v: number[]\n\n if (!m) {\n return undefined\n }\n\n // v is undefined\n if (m[5] !== undefined) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5])\n }\n\n const h = hue(+m[2])\n const p1 = +m[3] / 100\n const p2 = +m[4] / 100\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2)\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2)\n } else {\n v = hsl2rgb(h, p1, p2)\n }\n\n return {\n a: a,\n b: v[2],\n g: v[1],\n r: v[0],\n }\n}\n\n/**\n * Rotate the `v` color by `deg` degrees\n * @param v - the color\n * @param deg - degrees to rotate\n */\nexport function rotate(v: RGBA, deg: number): void {\n const h = rgb2hsl(v)\n h[0] = hue(h[0] + deg)\n const rgb = hsl2rgb(h)\n v.r = rgb[0]\n v.g = rgb[1]\n v.b = rgb[2]\n}\n\n/**\n * Return hsl(a) string from color components\n * @param v - the color\n * @return\n */\nexport function hslString(v: RGBA | undefined): string | undefined {\n if (!v) {\n return undefined\n }\n const a = rgb2hsl(v)\n const h = a[0]\n const s = n2p(a[1])\n const l = n2p(a[2])\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nconst map: Record<string, string> = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names: Record<string, string> = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\n/**\n * Unpack color names\n * @returns Record of color names to RGB arrays\n */\nexport default function unpack(): Record<string, number[]> {\n const unpacked: Record<string, number[]> = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map);\n let i: number, j: number, k: string | number, ok: string, nk: string;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport unpack from './packed.js'\n\nlet names: Record<string, number[]>\n\n/**\n * Parse color name\n * @param str - the color name\n * @return - the color\n */\nexport function nameParse(str: string): RGBA | undefined {\n if (!names) {\n names = unpack()\n names.transparent = [0, 0, 0, 0]\n }\n const a = names[str.toLowerCase()]\n return (\n a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0],\n }\n )\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, lim, p2b } from './byte.js'\n\n/**\n * @hidden\n */\nconst RGB_RE =\n /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/\n\n/**\n * Parse rgb(a) string to RGBA\n * @param str - the rgb string\n * @returns - the parsed color\n */\nexport function rgbParse(str: string): RGBA | undefined {\n const m = RGB_RE.exec(str)\n let a = 255\n let r: number, g: number, b: number\n\n if (!m) {\n return undefined\n }\n\n // r is undefined\n if (m[7] !== undefined) {\n const v = +m[7]\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255)\n }\n\n r = +m[1]\n g = +m[3]\n b = +m[5]\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255))\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255))\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255))\n\n return {\n a: a,\n b: b,\n g: g,\n r: r,\n }\n}\n\n/**\n * Return rgb(a) string from color\n * @param v - the color\n */\nexport function rgbString(v: RGBA | undefined): string | undefined {\n return (\n v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`)\n )\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, n2b } from './byte.js'\n\nconst to = (v: number): number => (v <= 0.0031308 ? v * 12.92 : v ** (1.0 / 2.4) * 1.055 - 0.055)\nconst from = (v: number): number => (v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4)\n\n/**\n * @param rgb1 from color\n * @param rgb2 to color\n * @param t 0..1\n * @returns interpolaced\n */\nexport function interpolate(rgb1: RGBA, rgb2: RGBA, t: number): RGBA {\n const r = from(b2n(rgb1.r))\n const g = from(b2n(rgb1.g))\n const b = from(b2n(rgb1.b))\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n }\n}\n", "/**\n * @packageDocumentation\n * @module index\n */\n\nimport { b2n, n2b, round } from './byte.js'\nimport { hexParse, hexString } from './hex.js'\nimport { hsl2rgb, hslString, hueParse, rgb2hsl, rotate } from './hue.js'\nimport { nameParse } from './names.js'\nimport { rgbParse, rgbString } from './rgb.js'\nimport { interpolate } from './srgb.js'\n\nconst COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g\n\n/**\n * RGBA color type\n */\nexport interface RGBA {\n r: number\n g: number\n b: number\n a: number\n}\n\n/**\n * Modify HSL properties\n * @param v - the color\n * @param i - index [0=h, 1=s, 2=l]\n * @param ratio - ratio [0..1]\n * @hidden\n */\nfunction modHSL(v: RGBA | undefined, i: number, ratio: number): void {\n if (v) {\n let tmp = rgb2hsl(v)\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1))\n tmp = hsl2rgb(tmp)\n v.r = tmp[0]\n v.g = tmp[1]\n v.b = tmp[2]\n }\n}\n\n/**\n * Clone color\n * @param v - the color\n * @param proto - prototype\n * @hidden\n */\nfunction clone(v: RGBA | undefined, proto?: object): RGBA | undefined {\n return v ? Object.assign(proto || {}, v) : v\n}\n\n/**\n * @param input\n * @hidden\n */\nfunction fromObject(input: RGBA | number[]): RGBA {\n let v: RGBA = { a: 255, b: 0, g: 0, r: 0 }\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] }\n if (input.length > 3) {\n v.a = n2b(input[3])\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 })!\n v.a = n2b(v.a)\n }\n return v\n}\n\n/**\n * @param str\n * @hidden\n */\nfunction functionParse(str: string): RGBA | undefined {\n const clean = str.replace(COMMENT_REGEXP, '').trim()\n if (clean.charAt(0) === 'r') {\n return rgbParse(clean)\n }\n return hueParse(clean)\n}\n\nexport default class Color {\n /**\n * @type {RGBA}\n * @hidden\n **/\n _rgb: RGBA\n\n /**\n * @type {boolean}\n * @hidden\n **/\n _valid: boolean\n\n /**\n * constructor\n * @param input\n */\n constructor(input: Color | RGBA | string | number[]) {\n if (input instanceof Color) {\n // biome-ignore lint/correctness/noConstructorReturn: returns the existing instance instead of double-wrapping it\n return input\n }\n const type = typeof input\n let v: RGBA | undefined\n if (type === 'object') {\n v = fromObject(input as RGBA | number[])\n } else if (type === 'string') {\n v = hexParse(input as string) || nameParse(input as string) || functionParse(input as string)\n }\n\n this._rgb = v\n this._valid = !!v\n }\n\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid(): boolean {\n return this._valid\n }\n\n /**\n * @returns {RGBA} - the color\n */\n get rgb(): RGBA {\n const v = clone(this._rgb)\n if (v) {\n v.a = b2n(v.a)\n }\n return v as RGBA\n }\n\n /**\n * @param obj - the color\n */\n set rgb(obj: RGBA) {\n this._rgb = fromObject(obj)\n }\n\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString(): string | undefined {\n return this._valid ? rgbString(this._rgb) : undefined\n }\n\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString(): string | undefined {\n return this._valid ? hexString(this._rgb) : undefined\n }\n\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString(): string | undefined {\n return this._valid ? hslString(this._rgb) : undefined\n }\n\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color: Color, weight: number = 0.5): Color {\n if (color) {\n const c1 = this.rgb\n const c2 = color.rgb\n\n const w = 2 * weight - 1\n const a = c1.a - c2.a\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0\n const w2 = 1 - w1\n c1.r = 0xff & (w1 * c1.r + w2 * c2.r + 0.5)\n c1.g = 0xff & (w1 * c1.g + w2 * c2.g + 0.5)\n c1.b = 0xff & (w1 * c1.b + w2 * c2.b + 0.5)\n c1.a = weight * c1.a + (1 - weight) * c2.a\n this.rgb = c1\n }\n return this\n }\n\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color: Color, t: number): Color {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t)\n }\n return this\n }\n\n /**\n * Clone\n * @returns {Color}\n */\n clone(): Color {\n return new Color(this.rgb)\n }\n\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a: number): Color {\n this._rgb.a = n2b(a)\n return this\n }\n\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio: number): Color {\n const rgb = this._rgb\n rgb.a *= 1 - ratio\n return this\n }\n\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale(): Color {\n const rgb = this._rgb\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11)\n rgb.r = rgb.g = rgb.b = val\n return this\n }\n\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio: number): Color {\n const rgb = this._rgb\n rgb.a *= 1 + ratio\n return this\n }\n\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate(): Color {\n const v = this._rgb\n v.r = 255 - v.r\n v.g = 255 - v.g\n v.b = 255 - v.b\n return this\n }\n\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio: number): Color {\n modHSL(this._rgb, 2, ratio)\n return this\n }\n\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio: number): Color {\n modHSL(this._rgb, 2, -ratio)\n return this\n }\n\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio: number): Color {\n modHSL(this._rgb, 1, ratio)\n return this\n }\n\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio: number): Color {\n modHSL(this._rgb, 1, -ratio)\n return this\n }\n\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg: number): Color {\n rotate(this._rgb, deg)\n return this\n }\n}\n", "/**\n * @packageDocumentation\n * @module index\n */\n\nimport Color, { RGBA } from './color.js'\n\nexport * from './byte.js'\nexport * from './hex.js'\nexport * from './hue.js'\nexport * from './names.js'\nexport * from './rgb.js'\nexport * from './srgb.js'\nexport { Color, RGBA }\n\n/**\n * Construct new Color instance\n * @param input\n * @internal\n */\nexport default function (input: Color | RGBA | string | number[]): Color {\n return new Color(input)\n}\n"],
5
+ "mappings": ";;;;;;;;AASO,SAAS,MAAM,GAAmB;AACvC,SAAQ,IAAI,MAAO;AACrB;AAEO,IAAM,MAAM,CAAC,GAAW,GAAW,MAAsB,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAMnF,SAAS,IAAI,GAAmB;AACrC,SAAO,IAAI,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG;AACpC;AAMO,SAAS,IAAI,GAAmB;AACrC,SAAO,IAAI,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG;AACpC;AAMO,SAAS,IAAI,GAAmB;AACrC,SAAO,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG;AACnC;AAMO,SAAS,IAAI,GAAmB;AACrC,SAAO,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC;AACxC;AAMO,SAAS,IAAI,GAAmB;AACrC,SAAO,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG;AACnC;;;AC3CA,IAAM,MAA8B;AAAA,EAClC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAKA,IAAM,MAAM,CAAC,GAAG,kBAAkB;AAMlC,IAAM,KAAK,CAAC,MAAsB,IAAI,IAAI,EAAG;AAM7C,IAAM,KAAK,CAAC,MAAsB,KAAK,IAAI,QAAS,CAAC,IAAI,IAAI,IAAI,EAAG;AAMpE,IAAM,KAAK,CAAC,OAAwB,IAAI,QAAS,OAAO,IAAI;AAM5D,IAAM,UAAU,CAAC,MAAqB,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AAMtE,SAAS,SAAS,KAA+B;AACtD,MAAI,IAAI,CAAC,MAAM,KAAK;AAClB;AAAA,EACF;AACA,QAAM,MAAM,IAAI;AAEhB,MAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,WAAO;AAAA,MACL,GAAG,QAAQ,IAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC,IAAI;AAAA,MAClD,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,MAClC,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,MAClC,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,IACpC;AAAA,EACF;AACA,MAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,WAAO;AAAA,MACL,GAAG,QAAQ,IAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC,IAAI;AAAA,MAClD,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,MAClC,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,MAClC,GAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC,CAAC;AAAA,IACpC;AAAA,EACF;AACF;AAEA,IAAM,QAAQ,CAAC,GAAW,MAAsC,IAAI,MAAM,EAAE,CAAC,IAAI;AAO1E,SAAS,UAAU,GAAyC;AACjE,QAAM,IAAI,KAAK,QAAQ,CAAC,IAAI,KAAK;AACjC,SAAO,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK;AAC9D;;;AC1FA,IAAM,SACJ;AAWF,SAAS,SAAS,GAAW,GAAW,GAAqB;AAC3D,QAAM,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;AAI/B,QAAM,IAAI,CAAC,GAAW,KAAK,IAAI,IAAI,MAAM,OAAO,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;AAC9F,SAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;AAWA,SAAS,SAAS,GAAW,GAAW,GAAqB;AAI3D,QAAM,IAAI,CAAC,GAAW,KAAK,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC5F,SAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;AAUA,SAAS,SAAS,GAAW,GAAW,GAAqB;AAC3D,QAAM,MAAM,SAAS,GAAG,GAAG,GAAG;AAC9B,MAAI;AACJ,MAAI,IAAI,IAAI,GAAG;AACb,QAAI,KAAK,IAAI;AACb,SAAK;AACL,SAAK;AAAA,EACP;AACA,OAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,QAAI,CAAC,KAAK,IAAI,IAAI;AAClB,QAAI,CAAC,KAAK;AAAA,EACZ;AACA,SAAO;AACT;AAEA,SAAS,SAAS,GAAW,GAAW,GAAW,GAAW,KAAqB;AACjF,MAAI,MAAM,KAAK;AACb,YAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI;AAAA,EACpC;AACA,MAAI,MAAM,KAAK;AACb,YAAQ,IAAI,KAAK,IAAI;AAAA,EACvB;AACA,UAAQ,IAAI,KAAK,IAAI;AACvB;AAOO,SAAS,QAAQ,GAAmB;AACzC,QAAM,QAAQ;AACd,QAAM,IAAI,EAAE,IAAI;AAChB,QAAM,IAAI,EAAE,IAAI;AAChB,QAAM,IAAI,EAAE,IAAI;AAChB,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,QAAM,KAAK,MAAM,OAAO;AACxB,MAAI,IAAY;AAChB,MAAI,IAAY;AAChB,MAAI;AACJ,MAAI,QAAQ,KAAK;AACf,QAAI,MAAM;AACV,QAAI,IAAI,MAAM,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM;AAC/C,QAAI,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG;AAC5B,QAAI,IAAI,KAAK;AAAA,EACf;AACA,SAAO,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;AAC1B;AAUA,SAAS,MACP,GACA,GACA,GACA,GACU;AACV,UAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAI,CAAE,GAAG,IAAI,GAAG;AACxE;AASO,SAAS,QAAQ,GAAsB,GAAY,GAAsB;AAC9E,SAAO,MAAM,UAAU,GAAG,GAAG,CAAC;AAChC;AASO,SAAS,QAAQ,GAAsB,GAAY,GAAsB;AAC9E,SAAO,MAAM,UAAU,GAAG,GAAG,CAAC;AAChC;AASO,SAAS,QAAQ,GAAsB,GAAY,GAAsB;AAC9E,SAAO,MAAM,UAAU,GAAG,GAAG,CAAC;AAChC;AAMA,SAAS,IAAI,GAAmB;AAC9B,UAAS,IAAI,MAAO,OAAO;AAC7B;AAOO,SAAS,SAAS,KAA+B;AACtD,QAAM,IAAI,OAAO,KAAK,GAAG;AACzB,MAAI,IAAI;AACR,MAAI;AAEJ,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT;AAGA,MAAI,EAAE,CAAC,MAAM,QAAW;AACtB,QAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,EACnC;AAEA,QAAM,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACnB,QAAM,KAAK,CAAC,EAAE,CAAC,IAAI;AACnB,QAAM,KAAK,CAAC,EAAE,CAAC,IAAI;AAEnB,MAAI,EAAE,CAAC,MAAM,OAAO;AAClB,QAAI,QAAQ,GAAG,IAAI,EAAE;AAAA,EACvB,WAAW,EAAE,CAAC,MAAM,OAAO;AACzB,QAAI,QAAQ,GAAG,IAAI,EAAE;AAAA,EACvB,OAAO;AACL,QAAI,QAAQ,GAAG,IAAI,EAAE;AAAA,EACvB;AAEA,SAAO;AAAA,IACL;AAAA,IACA,GAAG,EAAE,CAAC;AAAA,IACN,GAAG,EAAE,CAAC;AAAA,IACN,GAAG,EAAE,CAAC;AAAA,EACR;AACF;AAOO,SAAS,OAAO,GAAS,KAAmB;AACjD,QAAM,IAAI,QAAQ,CAAC;AACnB,IAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG;AACrB,QAAM,MAAM,QAAQ,CAAC;AACrB,IAAE,IAAI,IAAI,CAAC;AACX,IAAE,IAAI,IAAI,CAAC;AACX,IAAE,IAAI,IAAI,CAAC;AACb;AAOO,SAAS,UAAU,GAAyC;AACjE,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT;AACA,QAAM,IAAI,QAAQ,CAAC;AACnB,QAAM,IAAI,EAAE,CAAC;AACb,QAAM,IAAI,IAAI,EAAE,CAAC,CAAC;AAClB,QAAM,IAAI,IAAI,EAAE,CAAC,CAAC;AAClB,SAAO,EAAE,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;AACpF;;;ACpOA,IAAMA,OAA8B;AAAA,EAClC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AACA,IAAM,QAAgC;AAAA,EACpC,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAAA,EACd,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,KAAK;AAAA,EACL,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AAAA,EACL,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,OAAO;AAAA,EACP,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,OAAO;AACT;AAMe,SAAR,SAAoD;AACzD,QAAM,WAAqC,CAAC;AAC5C,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,QAAQ,OAAO,KAAKA,IAAG;AAC7B,MAAI,GAAW,GAAW,GAAoB,IAAY;AAE1D,OAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAChC,SAAK,KAAK,KAAK,CAAC;AAChB,SAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACjC,UAAI,MAAM,CAAC;AACX,WAAK,GAAG,QAAQ,GAAGA,KAAI,CAAC,CAAC;AAAA,IAC3B;AACA,QAAI,SAAS,MAAM,EAAE,GAAG,EAAE;AAC1B,aAAS,EAAE,IAAI,CAAC,KAAK,KAAK,KAAM,KAAK,IAAI,KAAM,IAAI,GAAI;AAAA,EACzD;AAEA,SAAO;AACT;;;ACrMA,IAAIC;AAOG,SAAS,UAAU,KAA+B;AACvD,MAAI,CAACA,QAAO;AACV,IAAAA,SAAQ,OAAO;AACf,IAAAA,OAAM,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,EACjC;AACA,QAAM,IAAIA,OAAM,IAAI,YAAY,CAAC;AACjC,SACE,KAAK;AAAA,IACH,GAAG,EAAE,WAAW,IAAI,EAAE,CAAC,IAAI;AAAA,IAC3B,GAAG,EAAE,CAAC;AAAA,IACN,GAAG,EAAE,CAAC;AAAA,IACN,GAAG,EAAE,CAAC;AAAA,EACR;AAEJ;;;AClBA,IAAM,SACJ;AAOK,SAAS,SAAS,KAA+B;AACtD,QAAM,IAAI,OAAO,KAAK,GAAG;AACzB,MAAI,IAAI;AACR,MAAI,GAAW,GAAW;AAE1B,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT;AAGA,MAAI,EAAE,CAAC,MAAM,QAAW;AACtB,UAAM,IAAI,CAAC,EAAE,CAAC;AACd,QAAI,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG;AAAA,EACzC;AAEA,MAAI,CAAC,EAAE,CAAC;AACR,MAAI,CAAC,EAAE,CAAC;AACR,MAAI,CAAC,EAAE,CAAC;AACR,MAAI,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG;AACxC,MAAI,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG;AACxC,MAAI,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG;AAExC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,UAAU,GAAyC;AACjE,SACE,MAAM,EAAE,IAAI,MAAM,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;AAE9F;;;ACjDA,IAAM,KAAK,CAAC,MAAuB,KAAK,WAAY,IAAI,QAAQ,MAAM,IAAM,OAAO,QAAQ;AAC3F,IAAM,OAAO,CAAC,MAAuB,KAAK,UAAU,IAAI,UAAU,IAAI,SAAS,UAAU;AAQlF,SAAS,YAAY,MAAY,MAAY,GAAiB;AACnE,QAAM,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,QAAM,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,QAAM,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,SAAO;AAAA,IACL,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK;AAAA,IAC/B,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,IAC1C,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,IAC1C,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,EAC5C;AACF;;;AChBA,IAAM,iBAAiB;AAmBvB,SAAS,OAAO,GAAqB,GAAW,OAAqB;AACnE,MAAI,GAAG;AACL,QAAI,MAAM,QAAQ,CAAC;AACnB,QAAI,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,OAAO,MAAM,IAAI,MAAM,CAAC,CAAC;AACzE,UAAM,QAAQ,GAAG;AACjB,MAAE,IAAI,IAAI,CAAC;AACX,MAAE,IAAI,IAAI,CAAC;AACX,MAAE,IAAI,IAAI,CAAC;AAAA,EACb;AACF;AAQA,SAAS,MAAM,GAAqB,OAAkC;AACpE,SAAO,IAAI,OAAO,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI;AAC7C;AAMA,SAAS,WAAW,OAA8B;AAChD,MAAI,IAAU,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AACzC,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,MAAM,UAAU,GAAG;AACrB,UAAI,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACpD,UAAI,MAAM,SAAS,GAAG;AACpB,UAAE,IAAI,IAAI,MAAM,CAAC,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,EACF,OAAO;AACL,QAAI,MAAM,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AAC3C,MAAE,IAAI,IAAI,EAAE,CAAC;AAAA,EACf;AACA,SAAO;AACT;AAMA,SAAS,cAAc,KAA+B;AACpD,QAAM,QAAQ,IAAI,QAAQ,gBAAgB,EAAE,EAAE,KAAK;AACnD,MAAI,MAAM,OAAO,CAAC,MAAM,KAAK;AAC3B,WAAO,SAAS,KAAK;AAAA,EACvB;AACA,SAAO,SAAS,KAAK;AACvB;AAEA,IAAqB,QAArB,MAAqB,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBzB,YAAY,OAAyC;AACnD,QAAI,iBAAiB,QAAO;AAE1B,aAAO;AAAA,IACT;AACA,UAAM,OAAO,OAAO;AACpB,QAAI;AACJ,QAAI,SAAS,UAAU;AACrB,UAAI,WAAW,KAAwB;AAAA,IACzC,WAAW,SAAS,UAAU;AAC5B,UAAI,SAAS,KAAe,KAAK,UAAU,KAAe,KAAK,cAAc,KAAe;AAAA,IAC9F;AAEA,SAAK,OAAO;AACZ,SAAK,SAAS,CAAC,CAAC;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,QAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAY;AACd,UAAM,IAAI,MAAM,KAAK,IAAI;AACzB,QAAI,GAAG;AACL,QAAE,IAAI,IAAI,EAAE,CAAC;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAI,KAAW;AACjB,SAAK,OAAO,WAAW,GAAG;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAgC;AAC9B,WAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAgC;AAC9B,WAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAgC;AAC9B,WAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,OAAc,SAAiB,KAAY;AAC7C,QAAI,OAAO;AACT,YAAM,KAAK,KAAK;AAChB,YAAM,KAAK,MAAM;AAEjB,YAAM,IAAI,IAAI,SAAS;AACvB,YAAM,IAAI,GAAG,IAAI,GAAG;AACpB,YAAM,OAAO,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,MAAM,KAAK;AAC9D,YAAM,KAAK,IAAI;AACf,SAAG,IAAI,MAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACvC,SAAG,IAAI,MAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACvC,SAAG,IAAI,MAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACvC,SAAG,IAAI,SAAS,GAAG,KAAK,IAAI,UAAU,GAAG;AACzC,WAAK,MAAM;AAAA,IACb;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,OAAc,GAAkB;AAC1C,QAAI,OAAO;AACT,WAAK,OAAO,YAAY,KAAK,MAAM,MAAM,MAAM,CAAC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAe;AACb,WAAO,IAAI,OAAM,KAAK,GAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,GAAkB;AACtB,SAAK,KAAK,IAAI,IAAI,CAAC;AACnB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,OAAsB;AAC5B,UAAM,MAAM,KAAK;AACjB,QAAI,KAAK,IAAI;AACb,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAmB;AACjB,UAAM,MAAM,KAAK;AAEjB,UAAM,MAAM,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI;AAC3D,QAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACxB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,OAAsB;AAC5B,UAAM,MAAM,KAAK;AACjB,QAAI,KAAK,IAAI;AACb,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAgB;AACd,UAAM,IAAI,KAAK;AACf,MAAE,IAAI,MAAM,EAAE;AACd,MAAE,IAAI,MAAM,EAAE;AACd,MAAE,IAAI,MAAM,EAAE;AACd,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,OAAsB;AAC5B,WAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,OAAsB;AAC3B,WAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAsB;AAC7B,WAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,OAAsB;AAC/B,WAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,KAAoB;AACzB,WAAO,KAAK,MAAM,GAAG;AACrB,WAAO;AAAA,EACT;AACF;;;AC1Se,SAAR,kBAAkB,OAAgD;AACvE,SAAO,IAAI,MAAM,KAAK;AACxB;",
6
+ "names": ["map", "names"]
7
+ }
package/dist/color.min.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * @kurkle/color v0.3.4
2
+ * @kurkle/color v0.0.0-development
3
3
  * https://github.com/kurkle/color#readme
4
- * (c) 2024 Jukka Kurkela
4
+ * (c) 2026 Jukka Kurkela
5
5
  * Released under the MIT License
6
6
  */
7
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["@kurkle/color"]=t()}(this,(function(){"use strict";function e(e){return e+.5|0}const t=(e,t,f)=>Math.max(Math.min(e,f),t);function f(f){return t(e(2.55*f),0,255)}function r(f){return t(e(255*f),0,255)}function n(f){return t(e(f/2.55)/100,0,1)}function a(f){return t(e(100*f),0,100)}const i={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},s=[..."0123456789ABCDEF"],c=e=>s[15&e],b=e=>s[(240&e)>>4]+s[15&e],g=e=>(240&e)>>4==(15&e);function o(e){var t,f=e.length;return"#"===e[0]&&(4===f||5===f?t={r:255&17*i[e[1]],g:255&17*i[e[2]],b:255&17*i[e[3]],a:5===f?17*i[e[4]]:255}:7!==f&&9!==f||(t={r:i[e[1]]<<4|i[e[2]],g:i[e[3]]<<4|i[e[4]],b:i[e[5]]<<4|i[e[6]],a:9===f?i[e[7]]<<4|i[e[8]]:255})),t}function d(e){var t=(e=>g(e.r)&&g(e.g)&&g(e.b)&&g(e.a))(e)?c:b;return e?"#"+t(e.r)+t(e.g)+t(e.b)+((e,t)=>e<255?t(e):"")(e.a,t):void 0}const u=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function h(e,t,f){const r=t*Math.min(f,1-f),n=(t,n=(t+e/30)%12)=>f-r*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function l(e,t,f){const r=(r,n=(r+e/60)%6)=>f-f*t*Math.max(Math.min(n,4-n,1),0);return[r(5),r(3),r(1)]}function p(e,t,f){const r=h(e,1,.5);let n;for(t+f>1&&(n=1/(t+f),t*=n,f*=n),n=0;n<3;n++)r[n]*=1-t-f,r[n]+=t;return r}function m(e){const t=e.r/255,f=e.g/255,r=e.b/255,n=Math.max(t,f,r),a=Math.min(t,f,r),i=(n+a)/2;let s,c,b;return n!==a&&(b=n-a,c=i>.5?b/(2-n-a):b/(n+a),s=function(e,t,f,r,n){return e===n?(t-f)/r+(t<f?6:0):t===n?(f-e)/r+2:(e-t)/r+4}(t,f,r,b,n),s=60*s+.5),[0|s,c||0,i]}function y(e,t,f,n){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,f,n)).map(r)}function Y(e,t,f){return y(h,e,t,f)}function v(e,t,f){return y(p,e,t,f)}function x(e,t,f){return y(l,e,t,f)}function w(e){return(e%360+360)%360}function _(e){const t=u.exec(e);let n,a=255;if(!t)return;t[5]!==n&&(a=t[6]?f(+t[5]):r(+t[5]));const i=w(+t[2]),s=+t[3]/100,c=+t[4]/100;return n="hwb"===t[1]?v(i,s,c):"hsv"===t[1]?x(i,s,c):Y(i,s,c),{r:n[0],g:n[1],b:n[2],a:a}}function F(e,t){var f=m(e);f[0]=w(f[0]+t),f=Y(f),e.r=f[0],e.g=f[1],e.b=f[2]}function M(e){if(!e)return;const t=m(e),f=t[0],r=a(t[1]),i=a(t[2]);return e.a<255?`hsla(${f}, ${r}%, ${i}%, ${n(e.a)})`:`hsl(${f}, ${r}%, ${i}%)`}const k={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},X={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let O;function S(e){O||(O=function(){const e={},t=Object.keys(X),f=Object.keys(k);let r,n,a,i,s;for(r=0;r<t.length;r++){for(i=s=t[r],n=0;n<f.length;n++)a=f[n],s=s.replace(a,k[a]);a=parseInt(X[i],16),e[s]=[a>>16&255,a>>8&255,255&a]}return e}(),O.transparent=[0,0,0,0]);const t=O[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:4===t.length?t[3]:255}}const T=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function P(e){const r=T.exec(e);let n,a,i,s=255;if(r){if(r[7]!==n){const e=+r[7];s=r[8]?f(e):t(255*e,0,255)}return n=+r[1],a=+r[3],i=+r[5],n=255&(r[2]?f(n):t(n,0,255)),a=255&(r[4]?f(a):t(a,0,255)),i=255&(r[6]?f(i):t(i,0,255)),{r:n,g:a,b:i,a:s}}}function Z(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${n(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const $=e=>e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055,E=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function R(e,t,f){if(e){let r=m(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*f,0===t?360:1)),r=Y(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function A(e,t){return e?Object.assign(t||{},e):e}function U(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=r(e[3]))):(t=A(e,{r:0,g:0,b:0,a:1})).a=r(t.a),t}class V{constructor(e){if(e instanceof V)return e;const t=typeof e;let f;var r;"object"===t?f=U(e):"string"===t&&(f=o(e)||S(e)||("r"===(r=e).charAt(0)?P(r):_(r))),this._rgb=f,this._valid=!!f}get valid(){return this._valid}get rgb(){var e=A(this._rgb);return e&&(e.a=n(e.a)),e}set rgb(e){this._rgb=U(e)}rgbString(){return this._valid?Z(this._rgb):void 0}hexString(){return this._valid?d(this._rgb):void 0}hslString(){return this._valid?M(this._rgb):void 0}mix(e,t){if(e){const f=this.rgb,r=e.rgb;let n;const a=t===n?.5:t,i=2*a-1,s=f.a-r.a,c=((i*s==-1?i:(i+s)/(1+i*s))+1)/2;n=1-c,f.r=255&c*f.r+n*r.r+.5,f.g=255&c*f.g+n*r.g+.5,f.b=255&c*f.b+n*r.b+.5,f.a=a*f.a+(1-a)*r.a,this.rgb=f}return this}interpolate(e,t){return e&&(this._rgb=function(e,t,f){const a=E(n(e.r)),i=E(n(e.g)),s=E(n(e.b));return{r:r($(a+f*(E(n(t.r))-a))),g:r($(i+f*(E(n(t.g))-i))),b:r($(s+f*(E(n(t.b))-s))),a:e.a+f*(t.a-e.a)}}(this._rgb,e._rgb,t)),this}clone(){return new V(this.rgb)}alpha(e){return this._rgb.a=r(e),this}clearer(e){return this._rgb.a*=1-e,this}greyscale(){const t=this._rgb,f=e(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=f,this}opaquer(e){return this._rgb.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return R(this._rgb,2,e),this}darken(e){return R(this._rgb,2,-e),this}saturate(e){return R(this._rgb,1,e),this}desaturate(e){return R(this._rgb,1,-e),this}rotate(e){return F(this._rgb,e),this}}function W(e){return new V(e)}var j=Object.freeze({__proto__:null,Color:V,b2n:n,b2p:function(f){return t(e(f/2.55),0,100)},default:W,hexParse:o,hexString:d,hsl2rgb:Y,hslString:M,hsv2rgb:x,hueParse:_,hwb2rgb:v,lim:t,n2b:r,n2p:a,nameParse:S,p2b:f,rgb2hsl:m,rgbParse:P,rgbString:Z,rotate:F,round:e});return Object.assign(W,j)}));
7
+ "use strict";var kurkleColor=(()=>{var Y=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var V=(r,e)=>{for(var t in e)Y(r,t,{get:e[t],enumerable:!0})},v=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of J(e))!z.call(r,f)&&f!==t&&Y(r,f,{get:()=>e[f],enumerable:!(n=I(e,f))||n.enumerable});return r};var ee=r=>v(Y({},"__esModule",{value:!0}),r);var ge={};V(ge,{default:()=>de});var j={};V(j,{Color:()=>h,b2n:()=>u,b2p:()=>re,default:()=>Z,hexParse:()=>w,hexString:()=>_,hsl2rgb:()=>x,hslString:()=>M,hsv2rgb:()=>q,hueParse:()=>S,hwb2rgb:()=>W,interpolate:()=>T,lim:()=>m,n2b:()=>s,n2p:()=>A,nameParse:()=>P,p2b:()=>g,rgb2hsl:()=>p,rgbParse:()=>E,rgbString:()=>O,rotate:()=>C,round:()=>d});function d(r){return r+.5|0}var m=(r,e,t)=>Math.max(Math.min(r,t),e);function g(r){return m(d(r*2.55),0,255)}function re(r){return m(d(r/2.55),0,100)}function s(r){return m(d(r*255),0,255)}function u(r){return m(d(r/2.55)/100,0,1)}function A(r){return m(d(r*100),0,100)}var a={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,a:10,B:11,b:11,C:12,c:12,D:13,d:13,E:14,e:14,F:15,f:15},F=[..."0123456789ABCDEF"],ne=r=>F[r&15],te=r=>F[(r&240)>>4]+F[r&15],y=r=>(r&240)>>4===(r&15),fe=r=>y(r.r)&&y(r.g)&&y(r.b)&&y(r.a);function w(r){if(r[0]!=="#")return;let e=r.length;if(e===4||e===5)return{a:e===5?a[r[4]]<<4|a[r[4]]:255,b:a[r[3]]<<4|a[r[3]],g:a[r[2]]<<4|a[r[2]],r:a[r[1]]<<4|a[r[1]]};if(e===7||e===9)return{a:e===9?a[r[7]]<<4|a[r[8]]:255,b:a[r[5]]<<4|a[r[6]],g:a[r[3]]<<4|a[r[4]],r:a[r[1]]<<4|a[r[2]]}}var oe=(r,e)=>r<255?e(r):"";function _(r){let e=r&&fe(r)?ne:te;return r?`#${e(r.r)}${e(r.g)}${e(r.b)}${oe(r.a,e)}`:void 0}var be=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function H(r,e,t){let n=e*Math.min(t,1-t),f=(o,b=(o+r/30)%12)=>t-n*Math.max(Math.min(b-3,9-b,1),-1);return[f(0),f(8),f(4)]}function ae(r,e,t){let n=(f,o=(f+r/60)%6)=>t-t*e*Math.max(Math.min(o,4-o,1),0);return[n(5),n(3),n(1)]}function ue(r,e,t){let n=H(r,1,.5),f;for(e+t>1&&(f=1/(e+t),e*=f,t*=f),f=0;f<3;f++)n[f]*=1-e-t,n[f]+=e;return n}function ie(r,e,t,n,f){return r===f?(e-t)/n+(e<t?6:0):e===f?(t-r)/n+2:(r-e)/n+4}function p(r){let t=r.r/255,n=r.g/255,f=r.b/255,o=Math.max(t,n,f),b=Math.min(t,n,f),i=(o+b)/2,c=0,U=0,R;return o!==b&&(R=o-b,U=i>.5?R/(2-o-b):R/(o+b),c=ie(t,n,f,R,o),c=c*60+.5),[c|0,U||0,i]}function k(r,e,t,n){return(Array.isArray(e)?r(e[0],e[1],e[2]):r(e,t,n)).map(s)}function x(r,e,t){return k(H,r,e,t)}function W(r,e,t){return k(ue,r,e,t)}function q(r,e,t){return k(ae,r,e,t)}function L(r){return(r%360+360)%360}function S(r){let e=be.exec(r),t=255,n;if(!e)return;e[5]!==void 0&&(t=e[6]?g(+e[5]):s(+e[5]));let f=L(+e[2]),o=+e[3]/100,b=+e[4]/100;return e[1]==="hwb"?n=W(f,o,b):e[1]==="hsv"?n=q(f,o,b):n=x(f,o,b),{a:t,b:n[2],g:n[1],r:n[0]}}function C(r,e){let t=p(r);t[0]=L(t[0]+e);let n=x(t);r.r=n[0],r.g=n[1],r.b=n[2]}function M(r){if(!r)return;let e=p(r),t=e[0],n=A(e[1]),f=A(e[2]);return r.a<255?`hsla(${t}, ${n}%, ${f}%, ${u(r.a)})`:`hsl(${t}, ${n}%, ${f}%)`}var N={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},K={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function X(){let r={},e=Object.keys(K),t=Object.keys(N),n,f,o,b,i;for(n=0;n<e.length;n++){for(b=i=e[n],f=0;f<t.length;f++)o=t[f],i=i.replace(o,N[o]);o=parseInt(K[b],16),r[i]=[o>>16&255,o>>8&255,o&255]}return r}var B;function P(r){B||(B=X(),B.transparent=[0,0,0,0]);let e=B[r.toLowerCase()];return e&&{a:e.length===4?e[3]:255,b:e[2],g:e[1],r:e[0]}}var se=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function E(r){let e=se.exec(r),t=255,n,f,o;if(e){if(e[7]!==void 0){let b=+e[7];t=e[8]?g(b):m(b*255,0,255)}return n=+e[1],f=+e[3],o=+e[5],n=255&(e[2]?g(n):m(n,0,255)),f=255&(e[4]?g(f):m(f,0,255)),o=255&(e[6]?g(o):m(o,0,255)),{a:t,b:o,g:f,r:n}}}function O(r){return r&&(r.a<255?`rgba(${r.r}, ${r.g}, ${r.b}, ${u(r.a)})`:`rgb(${r.r}, ${r.g}, ${r.b})`)}var $=r=>r<=.0031308?r*12.92:r**(1/2.4)*1.055-.055,l=r=>r<=.04045?r/12.92:((r+.055)/1.055)**2.4;function T(r,e,t){let n=l(u(r.r)),f=l(u(r.g)),o=l(u(r.b));return{a:r.a+t*(e.a-r.a),b:s($(o+t*(l(u(e.b))-o))),g:s($(f+t*(l(u(e.g))-f))),r:s($(n+t*(l(u(e.r))-n)))}}var me=/\/\*[\s\S]*?\*\//g;function G(r,e,t){if(r){let n=p(r);n[e]=Math.max(0,Math.min(n[e]+n[e]*t,e===0?360:1)),n=x(n),r.r=n[0],r.g=n[1],r.b=n[2]}}function D(r,e){return r&&Object.assign(e||{},r)}function Q(r){let e={a:255,b:0,g:0,r:0};return Array.isArray(r)?r.length>=3&&(e={a:255,b:r[2],g:r[1],r:r[0]},r.length>3&&(e.a=s(r[3]))):(e=D(r,{a:1,b:0,g:0,r:0}),e.a=s(e.a)),e}function ce(r){let e=r.replace(me,"").trim();return e.charAt(0)==="r"?E(e):S(e)}var h=class r{constructor(e){if(e instanceof r)return e;let t=typeof e,n;t==="object"?n=Q(e):t==="string"&&(n=w(e)||P(e)||ce(e)),this._rgb=n,this._valid=!!n}get valid(){return this._valid}get rgb(){let e=D(this._rgb);return e&&(e.a=u(e.a)),e}set rgb(e){this._rgb=Q(e)}rgbString(){return this._valid?O(this._rgb):void 0}hexString(){return this._valid?_(this._rgb):void 0}hslString(){return this._valid?M(this._rgb):void 0}mix(e,t=.5){if(e){let n=this.rgb,f=e.rgb,o=2*t-1,b=n.a-f.a,i=((o*b===-1?o:(o+b)/(1+o*b))+1)/2,c=1-i;n.r=255&i*n.r+c*f.r+.5,n.g=255&i*n.g+c*f.g+.5,n.b=255&i*n.b+c*f.b+.5,n.a=t*n.a+(1-t)*f.a,this.rgb=n}return this}interpolate(e,t){return e&&(this._rgb=T(this._rgb,e._rgb,t)),this}clone(){return new r(this.rgb)}alpha(e){return this._rgb.a=s(e),this}clearer(e){let t=this._rgb;return t.a*=1-e,this}greyscale(){let e=this._rgb,t=d(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=t,this}opaquer(e){let t=this._rgb;return t.a*=1+e,this}negate(){let e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return G(this._rgb,2,e),this}darken(e){return G(this._rgb,2,-e),this}saturate(e){return G(this._rgb,1,e),this}desaturate(e){return G(this._rgb,1,-e),this}rotate(e){return C(this._rgb,e),this}};function Z(r){return new h(r)}var de=Object.assign(Z,j);return ee(ge);})();
8
8
  //# sourceMappingURL=color.min.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"color.min.js","sources":["../src/byte.js","../src/hex.js","../src/hue.js","../packed.js","../src/names.js","../src/rgb.js","../src/srgb.js","../src/color.js","../src/index.esm.js","../src/index.js"],"sourcesContent":["/**\n * @packageDocumentation\n * @module utils\n */\n\n/**\n * Rounds decimal to nearest integer\n * @param {number} v - the number to round\n */\nexport function round(v) {\n return v + 0.5 | 0;\n}\n\nexport const lim = (v, l, h) => Math.max(Math.min(v, h), l);\n\n/**\n * convert percent to byte 0..255\n * @param {number} v - 0..100\n */\nexport function p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\n\n/**\n * convert byte to percet 0..100\n * @param {number} v - 0..255\n */\nexport function b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\n\n/**\n * convert normalized to byte 0..255\n * @param {number} v - 0..1\n */\nexport function n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\n\n/**\n * convert byte to normalized 0..1\n * @param {number} v - 0..255\n */\nexport function b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\n\n/**\n * convert normalized to percent 0..100\n * @param {number} v - 0..1\n */\nexport function n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\n/**\n * @hidden\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\n\n/**\n * @hidden\n */\nconst hex = [...'0123456789ABCDEF'];\n\n/**\n * @param {number} b - byte\n * @hidden\n */\nconst h1 = b => hex[b & 0xF];\n\n/**\n * @param {number} b - byte\n * @hidden\n */\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n\n/**\n * @param {number} b - byte\n * @hidden\n */\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\n\n/**\n * @param {RGBA} v - the color\n * @hidden\n */\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n\n/**\n * Parse HEX to color\n * @param {string} str - the string\n */\nexport function hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map[str[1]] * 17,\n g: 255 & map[str[2]] * 17,\n b: 255 & map[str[3]] * 17,\n a: len === 5 ? map[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map[str[1]] << 4 | map[str[2]],\n g: map[str[3]] << 4 | map[str[4]],\n b: map[str[5]] << 4 | map[str[6]],\n a: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n };\n }\n }\n return ret;\n}\n\nconst alpha = (a, f) => a < 255 ? f(a) : '';\n\n/**\n * Return HEX string from color\n * @param {RGBA} v - the color\n * @return {string|undefined}\n */\nexport function hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport {b2n, n2p, n2b, p2b} from './byte.js';\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\n/**\n * @hidden\n */\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\n/**\n * Converts hsl to rgb normalized\n * @url https://jsfiddle.net/Lamik/reuk63ay/91\n * @param {number} h - hue [0..360]\n * @param {number} s - saturation [0..1]\n * @param {number} l - lightness [0..1]\n * @returns {number[]} - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n /**\n * @param {number} n\n */\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\n\n/**\n * Convert hsv to rgb normalized\n * @url https://jsfiddle.net/Lamik/Lr61wqub/15/\n * @param {number} h - hue [0..360]\n * @param {number} s - saturation [0..1]\n * @param {number} v - value [0..1]\n * @returns {number[]} - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsv2rgbn(h, s, v) {\n /**\n * @param {number} n\n */\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\n\n/**\n * Convert hwb to rgb normalized\n * @param {number} h - hue [0..360]\n * @param {number} w - whiteness [0..1]\n * @param {number} b - blackness [0..1]\n * @returns {number[]} - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\n\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\n\n/**\n * Convert rgb to hsl\n * @param {RGBA} v - the color\n * @returns {number[]} - [h, s, l]\n */\nexport function rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\n\n/**\n * @param {function} f\n * @param {number|number[]} a\n * @param {number} b\n * @param {number} c\n * @private\n * @hidden\n */\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\n\n/**\n * Convert hsl to rgb\n * @param {number|number[]} h - hue | [h, s, l]\n * @param {number} [s] - saturation\n * @param {number} [l] - lightness\n * @returns {number[]}\n */\nexport function hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\n\n/**\n * Convert hwb to rgb\n * @param {number|number[]} h - hue | [h, s, l]\n * @param {number} [w] - whiteness\n * @param {number} [b] - blackness\n * @returns {number[]}\n */\nexport function hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\n\n/**\n * Convert hsv to rgb\n * @param {number|number[]} h - hue | [h, s, l]\n * @param {number} [s] - saturation\n * @param {number} [v] - value\n * @returns {number[]}\n */\nexport function hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\n\n/**\n * @param {number} h - the angle\n * @hidden\n */\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\n\n/**\n * Parse hsl/hsv/hwb color string\n * @param {string} str - hsl/hsv/hwb color string\n * @returns {RGBA} - the parsed color components\n */\nexport function hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n // v is undefined\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\n\n/**\n * Rotate the `v` color by `deg` degrees\n * @param {RGBA} v - the color\n * @param {number} deg - degrees to rotate\n */\nexport function rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\n\n/**\n * Return hsl(a) string from color components\n * @param {RGBA} v - the color\n * @return {string|undefined}\n */\nexport function hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n","\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nexport default function unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport unpack from '../packed.js';\nlet names;\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\n/**\n * Parse color name\n * @param {string} str - the color name\n * @return {RGBA} - the color\n */\nexport function nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport {b2n, lim, p2b} from './byte.js';\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\n/**\n * @hidden\n */\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\n/**\n * Parse rgb(a) string to RGBA\n * @param {string} str - the rgb string\n * @returns {RGBA} - the parsed color\n */\nexport function rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n\n if (!m) {\n return;\n }\n\n // r is undefined\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\n\n/**\n * Return rgb(a) string from color\n * @param {RGBA} v - the color\n */\nexport function rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n","import {b2n, n2b} from './byte.js';\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n\n/**\n * @param {RGBA} rgb1 from color\n * @param {RGBA} rgb2 to color\n * @param {number} t 0..1\n * @returns {RGBA} interpolaced\n */\nexport function interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n","/**\n * @packageDocumentation\n * @module index\n */\n\nimport {b2n, n2b, round} from './byte.js';\nimport {hexParse, hexString} from './hex.js';\nimport {hsl2rgb, hslString, hueParse, rgb2hsl, rotate} from './hue.js';\nimport {nameParse} from './names.js';\nimport {rgbParse, rgbString} from './rgb.js';\nimport {interpolate} from './srgb.js';\n\n/**\n * @typedef {import('./index.js').RGBA} RGBA\n */\n\n/**\n * Modify HSL properties\n * @param {RGBA} v - the color\n * @param {number} i - index [0=h, 1=s, 2=l]\n * @param {number} ratio - ratio [0..1]\n * @hidden\n */\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\n\n/**\n * Clone color\n * @param {RGBA} v - the color\n * @param {object} [proto] - prototype\n * @hidden\n */\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\n\n/**\n * @param {RGBA|number[]} input\n * @hidden\n */\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\n\n/**\n * @param {string} str\n * @hidden\n */\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\n\nexport default class Color {\n /**\n * constructor\n * @param {Color|RGBA|string|number[]} input\n */\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n // @ts-ignore\n v = fromObject(input);\n } else if (type === 'string') {\n // @ts-ignore\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n\n /** @type {RGBA} */\n this._rgb = v;\n /** @type {boolean} */\n this._valid = !!v;\n }\n\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n\n /**\n * @param {RGBA} obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n\n /**\n * Mix another color to this color.\n * @param {Color} color - Color to mix in\n * @param {number} weight - 0..1\n * @returns {Color}\n */\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2; // using instead of undefined in the next line\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n\n /**\n * Interpolate a color value between this and `color`\n * @param {Color} color\n * @param {number} t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new Color(this.rgb);\n }\n\n /**\n * Set aplha\n * @param {number} a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n\n /**\n * Make clearer\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n\n /**\n * Opaquer\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n\n /**\n * Lighten\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n\n /**\n * Darken\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n\n /**\n * Saturate\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n\n /**\n * Desaturate\n * @param {number} ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n\n /**\n * Rotate\n * @param {number} deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n","/**\n * @packageDocumentation\n * @module index\n */\n\nimport Color from './color.js';\n\nexport {Color};\nexport * from './byte.js';\nexport * from './hex.js';\nexport * from './hue.js';\nexport * from './names.js';\nexport * from './rgb.js';\n\n/**\n * @typedef {Object} RGBA\n * @property {number} r - red [0..255]\n * @property {number} g - green [0..255]\n * @property {number} b - blue [0..255]\n * @property {number} a - alpha [0..1]\n * @internal\n */\n\n/**\n * Construct new Color instance\n * @param {Color|RGBA|string|number[]} input\n * @internal\n */\nexport default function(input) {\n return new Color(input);\n}\n","/**\n * @packageDocumentation\n * @module index\n */\n\nimport * as color from './index.esm.js';\n\nexport default Object.assign(color.default, color);\n"],"names":["round","v","lim","l","h","Math","max","min","p2b","n2b","b2n","n2p","map","A","B","C","D","E","F","a","b","c","d","e","f","hex","h1","h2","eq","hexParse","str","ret","len","length","r","g","hexString","isShort","alpha","undefined","HUE_RE","hsl2rgbn","s","n","k","hsv2rgbn","hwb2rgbn","w","rgb","i","rgb2hsl","hueValue","calln","Array","isArray","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","m","exec","p1","p2","rotate","deg","hslString","x","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","keys","Object","tkeys","j","ok","nk","replace","parseInt","unpack","transparent","toLowerCase","RGB_RE","rgbParse","rgbString","to","pow","from","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","Color","constructor","type","charAt","this","_rgb","_valid","valid","obj","mix","color","weight","c1","c2","w2","p","w1","interpolate","t","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","index_esm","color.default"],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/index.esm.ts", "../src/byte.ts", "../src/hex.ts", "../src/hue.ts", "../src/packed.ts", "../src/names.ts", "../src/rgb.ts", "../src/srgb.ts", "../src/color.ts"],
4
+ "sourcesContent": ["/**\n * @packageDocumentation\n * @module index\n */\n\nimport * as color from './index.esm.js'\n\nexport default Object.assign(color.default, color)\n", "/**\n * @packageDocumentation\n * @module index\n */\n\nimport Color, { RGBA } from './color.js'\n\nexport * from './byte.js'\nexport * from './hex.js'\nexport * from './hue.js'\nexport * from './names.js'\nexport * from './rgb.js'\nexport * from './srgb.js'\nexport { Color, RGBA }\n\n/**\n * Construct new Color instance\n * @param input\n * @internal\n */\nexport default function (input: Color | RGBA | string | number[]): Color {\n return new Color(input)\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\n/**\n * Rounds decimal to nearest integer\n * @param v - the number to round\n */\nexport function round(v: number): number {\n return (v + 0.5) | 0\n}\n\nexport const lim = (v: number, l: number, h: number): number => Math.max(Math.min(v, h), l)\n\n/**\n * convert percent to byte 0..255\n * @param v - 0..100\n */\nexport function p2b(v: number): number {\n return lim(round(v * 2.55), 0, 255)\n}\n\n/**\n * convert byte to percet 0..100\n * @param v - 0..255\n */\nexport function b2p(v: number): number {\n return lim(round(v / 2.55), 0, 100)\n}\n\n/**\n * convert normalized to byte 0..255\n * @param v - 0..1\n */\nexport function n2b(v: number): number {\n return lim(round(v * 255), 0, 255)\n}\n\n/**\n * convert byte to normalized 0..1\n * @param v - 0..255\n */\nexport function b2n(v: number): number {\n return lim(round(v / 2.55) / 100, 0, 1)\n}\n\n/**\n * convert normalized to percent 0..100\n * @param v - 0..1\n */\nexport function n2p(v: number): number {\n return lim(round(v * 100), 0, 100)\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\n/**\n * @hidden\n */\nconst map: Record<string, number> = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15,\n}\n\n/**\n * @hidden\n */\nconst hex = [...'0123456789ABCDEF']\n\n/**\n * @param b - byte\n * @hidden\n */\nconst h1 = (b: number): string => hex[b & 0xf]\n\n/**\n * @param b - byte\n * @hidden\n */\nconst h2 = (b: number): string => hex[(b & 0xf0) >> 4] + hex[b & 0xf]\n\n/**\n * @param b - byte\n * @hidden\n */\nconst eq = (b: number): boolean => (b & 0xf0) >> 4 === (b & 0xf)\n\n/**\n * @param v - the color\n * @hidden\n */\nconst isShort = (v: RGBA): boolean => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a)\n\n/**\n * Parse HEX to color\n * @param str - the string\n */\nexport function hexParse(str: string): RGBA | undefined {\n if (str[0] !== '#') {\n return // undefined\n }\n const len = str.length\n\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? (map[str[4]] << 4) | map[str[4]] : 255,\n b: (map[str[3]] << 4) | map[str[3]],\n g: (map[str[2]] << 4) | map[str[2]],\n r: (map[str[1]] << 4) | map[str[1]],\n }\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? (map[str[7]] << 4) | map[str[8]] : 255,\n b: (map[str[5]] << 4) | map[str[6]],\n g: (map[str[3]] << 4) | map[str[4]],\n r: (map[str[1]] << 4) | map[str[2]],\n }\n }\n}\n\nconst alpha = (a: number, f: (b: number) => string): string => (a < 255 ? f(a) : '')\n\n/**\n * Return HEX string from color\n * @param v - the color\n * @return {string|undefined}\n */\nexport function hexString(v: RGBA | undefined): string | undefined {\n const f = v && isShort(v) ? h1 : h2\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : undefined\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, n2b, n2p, p2b } from './byte.js'\n\n/**\n * @hidden\n */\nconst HUE_RE =\n /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/\n\n/**\n * Converts hsl to rgb normalized\n * @url https://jsfiddle.net/Lamik/reuk63ay/91\n * @param h - hue [0..360]\n * @param s - saturation [0..1]\n * @param l - lightness [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsl2rgbn(h: number, s: number, l: number): number[] {\n const a = s * Math.min(l, 1 - l)\n /**\n * @param n\n */\n const f = (n: number, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\n return [f(0), f(8), f(4)]\n}\n\n/**\n * Convert hsv to rgb normalized\n * @url https://jsfiddle.net/Lamik/Lr61wqub/15/\n * @param h - hue [0..360]\n * @param s - saturation [0..1]\n * @param v - value [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hsv2rgbn(h: number, s: number, v: number): number[] {\n /**\n * @param n\n */\n const f = (n: number, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n return [f(5), f(3), f(1)]\n}\n\n/**\n * Convert hwb to rgb normalized\n * @param h - hue [0..360]\n * @param w - whiteness [0..1]\n * @param b - blackness [0..1]\n * @returns - [r, g, b] each normalized to [0..1]\n * @hidden\n */\nfunction hwb2rgbn(h: number, w: number, b: number): number[] {\n const rgb = hsl2rgbn(h, 1, 0.5)\n let i: number\n if (w + b > 1) {\n i = 1 / (w + b)\n w *= i\n b *= i\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b\n rgb[i] += w\n }\n return rgb\n}\n\nfunction hueValue(r: number, g: number, b: number, d: number, max: number): number {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0)\n }\n if (g === max) {\n return (b - r) / d + 2\n }\n return (r - g) / d + 4\n}\n\n/**\n * Convert rgb to hsl\n * @param v - the color\n * @returns - [h, s, l]\n */\nexport function rgb2hsl(v: RGBA): number[] {\n const range = 255\n const r = v.r / range\n const g = v.g / range\n const b = v.b / range\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n const l = (max + min) / 2\n let h: number = 0\n let s: number = 0\n let d: number\n if (max !== min) {\n d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n h = hueValue(r, g, b, d, max)\n h = h * 60 + 0.5\n }\n return [h | 0, s || 0, l]\n}\n\n/**\n * @param f\n * @param a\n * @param b\n * @param c\n * @private\n * @hidden\n */\nfunction calln(\n f: (h: number, s: number, l: number) => number[],\n a: number | number[],\n b?: number,\n c?: number\n): number[] {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b!, c!)).map(n2b)\n}\n\n/**\n * Convert hsl to rgb\n * @param h - hue | [h, s, l]\n * @param s - saturation\n * @param l - lightness\n * @returns\n */\nexport function hsl2rgb(h: number | number[], s?: number, l?: number): number[] {\n return calln(hsl2rgbn, h, s, l)\n}\n\n/**\n * Convert hwb to rgb\n * @param h - hue | [h, s, l]\n * @param w - whiteness\n * @param b - blackness\n * @returns\n */\nexport function hwb2rgb(h: number | number[], w?: number, b?: number): number[] {\n return calln(hwb2rgbn, h, w, b)\n}\n\n/**\n * Convert hsv to rgb\n * @param h - hue | [h, s, l]\n * @param s - saturation\n * @param v - value\n * @returns\n */\nexport function hsv2rgb(h: number | number[], s?: number, v?: number): number[] {\n return calln(hsv2rgbn, h, s, v)\n}\n\n/**\n * @param h - the angle\n * @hidden\n */\nfunction hue(h: number): number {\n return ((h % 360) + 360) % 360\n}\n\n/**\n * Parse hsl/hsv/hwb color string\n * @param str - hsl/hsv/hwb color string\n * @returns - the parsed color components\n */\nexport function hueParse(str: string): RGBA | undefined {\n const m = HUE_RE.exec(str)\n let a = 255\n let v: number[]\n\n if (!m) {\n return undefined\n }\n\n // v is undefined\n if (m[5] !== undefined) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5])\n }\n\n const h = hue(+m[2])\n const p1 = +m[3] / 100\n const p2 = +m[4] / 100\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2)\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2)\n } else {\n v = hsl2rgb(h, p1, p2)\n }\n\n return {\n a: a,\n b: v[2],\n g: v[1],\n r: v[0],\n }\n}\n\n/**\n * Rotate the `v` color by `deg` degrees\n * @param v - the color\n * @param deg - degrees to rotate\n */\nexport function rotate(v: RGBA, deg: number): void {\n const h = rgb2hsl(v)\n h[0] = hue(h[0] + deg)\n const rgb = hsl2rgb(h)\n v.r = rgb[0]\n v.g = rgb[1]\n v.b = rgb[2]\n}\n\n/**\n * Return hsl(a) string from color components\n * @param v - the color\n * @return\n */\nexport function hslString(v: RGBA | undefined): string | undefined {\n if (!v) {\n return undefined\n }\n const a = rgb2hsl(v)\n const h = a[0]\n const s = n2p(a[1])\n const l = n2p(a[2])\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nconst map: Record<string, string> = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names: Record<string, string> = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\n/**\n * Unpack color names\n * @returns Record of color names to RGB arrays\n */\nexport default function unpack(): Record<string, number[]> {\n const unpacked: Record<string, number[]> = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map);\n let i: number, j: number, k: string | number, ok: string, nk: string;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport unpack from './packed.js'\n\nlet names: Record<string, number[]>\n\n/**\n * Parse color name\n * @param str - the color name\n * @return - the color\n */\nexport function nameParse(str: string): RGBA | undefined {\n if (!names) {\n names = unpack()\n names.transparent = [0, 0, 0, 0]\n }\n const a = names[str.toLowerCase()]\n return (\n a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0],\n }\n )\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, lim, p2b } from './byte.js'\n\n/**\n * @hidden\n */\nconst RGB_RE =\n /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/\n\n/**\n * Parse rgb(a) string to RGBA\n * @param str - the rgb string\n * @returns - the parsed color\n */\nexport function rgbParse(str: string): RGBA | undefined {\n const m = RGB_RE.exec(str)\n let a = 255\n let r: number, g: number, b: number\n\n if (!m) {\n return undefined\n }\n\n // r is undefined\n if (m[7] !== undefined) {\n const v = +m[7]\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255)\n }\n\n r = +m[1]\n g = +m[3]\n b = +m[5]\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255))\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255))\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255))\n\n return {\n a: a,\n b: b,\n g: g,\n r: r,\n }\n}\n\n/**\n * Return rgb(a) string from color\n * @param v - the color\n */\nexport function rgbString(v: RGBA | undefined): string | undefined {\n return (\n v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`)\n )\n}\n", "/**\n * @packageDocumentation\n * @module utils\n */\n\nimport type { RGBA } from './color.js'\n\nimport { b2n, n2b } from './byte.js'\n\nconst to = (v: number): number => (v <= 0.0031308 ? v * 12.92 : v ** (1.0 / 2.4) * 1.055 - 0.055)\nconst from = (v: number): number => (v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4)\n\n/**\n * @param rgb1 from color\n * @param rgb2 to color\n * @param t 0..1\n * @returns interpolaced\n */\nexport function interpolate(rgb1: RGBA, rgb2: RGBA, t: number): RGBA {\n const r = from(b2n(rgb1.r))\n const g = from(b2n(rgb1.g))\n const b = from(b2n(rgb1.b))\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n }\n}\n", "/**\n * @packageDocumentation\n * @module index\n */\n\nimport { b2n, n2b, round } from './byte.js'\nimport { hexParse, hexString } from './hex.js'\nimport { hsl2rgb, hslString, hueParse, rgb2hsl, rotate } from './hue.js'\nimport { nameParse } from './names.js'\nimport { rgbParse, rgbString } from './rgb.js'\nimport { interpolate } from './srgb.js'\n\nconst COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g\n\n/**\n * RGBA color type\n */\nexport interface RGBA {\n r: number\n g: number\n b: number\n a: number\n}\n\n/**\n * Modify HSL properties\n * @param v - the color\n * @param i - index [0=h, 1=s, 2=l]\n * @param ratio - ratio [0..1]\n * @hidden\n */\nfunction modHSL(v: RGBA | undefined, i: number, ratio: number): void {\n if (v) {\n let tmp = rgb2hsl(v)\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1))\n tmp = hsl2rgb(tmp)\n v.r = tmp[0]\n v.g = tmp[1]\n v.b = tmp[2]\n }\n}\n\n/**\n * Clone color\n * @param v - the color\n * @param proto - prototype\n * @hidden\n */\nfunction clone(v: RGBA | undefined, proto?: object): RGBA | undefined {\n return v ? Object.assign(proto || {}, v) : v\n}\n\n/**\n * @param input\n * @hidden\n */\nfunction fromObject(input: RGBA | number[]): RGBA {\n let v: RGBA = { a: 255, b: 0, g: 0, r: 0 }\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] }\n if (input.length > 3) {\n v.a = n2b(input[3])\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 })!\n v.a = n2b(v.a)\n }\n return v\n}\n\n/**\n * @param str\n * @hidden\n */\nfunction functionParse(str: string): RGBA | undefined {\n const clean = str.replace(COMMENT_REGEXP, '').trim()\n if (clean.charAt(0) === 'r') {\n return rgbParse(clean)\n }\n return hueParse(clean)\n}\n\nexport default class Color {\n /**\n * @type {RGBA}\n * @hidden\n **/\n _rgb: RGBA\n\n /**\n * @type {boolean}\n * @hidden\n **/\n _valid: boolean\n\n /**\n * constructor\n * @param input\n */\n constructor(input: Color | RGBA | string | number[]) {\n if (input instanceof Color) {\n // biome-ignore lint/correctness/noConstructorReturn: returns the existing instance instead of double-wrapping it\n return input\n }\n const type = typeof input\n let v: RGBA | undefined\n if (type === 'object') {\n v = fromObject(input as RGBA | number[])\n } else if (type === 'string') {\n v = hexParse(input as string) || nameParse(input as string) || functionParse(input as string)\n }\n\n this._rgb = v\n this._valid = !!v\n }\n\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid(): boolean {\n return this._valid\n }\n\n /**\n * @returns {RGBA} - the color\n */\n get rgb(): RGBA {\n const v = clone(this._rgb)\n if (v) {\n v.a = b2n(v.a)\n }\n return v as RGBA\n }\n\n /**\n * @param obj - the color\n */\n set rgb(obj: RGBA) {\n this._rgb = fromObject(obj)\n }\n\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString(): string | undefined {\n return this._valid ? rgbString(this._rgb) : undefined\n }\n\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString(): string | undefined {\n return this._valid ? hexString(this._rgb) : undefined\n }\n\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString(): string | undefined {\n return this._valid ? hslString(this._rgb) : undefined\n }\n\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color: Color, weight: number = 0.5): Color {\n if (color) {\n const c1 = this.rgb\n const c2 = color.rgb\n\n const w = 2 * weight - 1\n const a = c1.a - c2.a\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0\n const w2 = 1 - w1\n c1.r = 0xff & (w1 * c1.r + w2 * c2.r + 0.5)\n c1.g = 0xff & (w1 * c1.g + w2 * c2.g + 0.5)\n c1.b = 0xff & (w1 * c1.b + w2 * c2.b + 0.5)\n c1.a = weight * c1.a + (1 - weight) * c2.a\n this.rgb = c1\n }\n return this\n }\n\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color: Color, t: number): Color {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t)\n }\n return this\n }\n\n /**\n * Clone\n * @returns {Color}\n */\n clone(): Color {\n return new Color(this.rgb)\n }\n\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a: number): Color {\n this._rgb.a = n2b(a)\n return this\n }\n\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio: number): Color {\n const rgb = this._rgb\n rgb.a *= 1 - ratio\n return this\n }\n\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale(): Color {\n const rgb = this._rgb\n // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11)\n rgb.r = rgb.g = rgb.b = val\n return this\n }\n\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio: number): Color {\n const rgb = this._rgb\n rgb.a *= 1 + ratio\n return this\n }\n\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate(): Color {\n const v = this._rgb\n v.r = 255 - v.r\n v.g = 255 - v.g\n v.b = 255 - v.b\n return this\n }\n\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio: number): Color {\n modHSL(this._rgb, 2, ratio)\n return this\n }\n\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio: number): Color {\n modHSL(this._rgb, 2, -ratio)\n return this\n }\n\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio: number): Color {\n modHSL(this._rgb, 1, ratio)\n return this\n }\n\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio: number): Color {\n modHSL(this._rgb, 1, -ratio)\n return this\n }\n\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg: number): Color {\n rotate(this._rgb, deg)\n return this\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["index_exports", "__export", "index_default", "index_esm_exports", "__export", "Color", "b2n", "b2p", "index_esm_default", "hexParse", "hexString", "hsl2rgb", "hslString", "hsv2rgb", "hueParse", "hwb2rgb", "interpolate", "lim", "n2b", "n2p", "nameParse", "p2b", "rgb2hsl", "rgbParse", "rgbString", "rotate", "round", "round", "v", "lim", "l", "h", "p2b", "b2p", "n2b", "b2n", "n2p", "map", "hex", "h1", "b", "h2", "eq", "isShort", "v", "hexParse", "str", "len", "alpha", "a", "f", "hexString", "HUE_RE", "hsl2rgbn", "h", "s", "l", "a", "n", "k", "hsv2rgbn", "v", "f", "hwb2rgbn", "w", "b", "rgb", "i", "hueValue", "g", "d", "max", "rgb2hsl", "r", "min", "calln", "c", "n2b", "hsl2rgb", "hwb2rgb", "hsv2rgb", "hue", "hueParse", "str", "m", "p2b", "p1", "p2", "rotate", "deg", "hslString", "n2p", "b2n", "map", "names", "unpack", "unpacked", "keys", "tkeys", "i", "j", "k", "ok", "nk", "names", "nameParse", "str", "unpack", "a", "RGB_RE", "rgbParse", "str", "m", "a", "r", "g", "b", "v", "p2b", "lim", "rgbString", "b2n", "to", "v", "from", "interpolate", "rgb1", "rgb2", "r", "b2n", "g", "b", "n2b", "COMMENT_REGEXP", "modHSL", "v", "i", "ratio", "tmp", "rgb2hsl", "hsl2rgb", "clone", "proto", "fromObject", "input", "n2b", "functionParse", "str", "clean", "rgbParse", "hueParse", "Color", "_Color", "type", "hexParse", "nameParse", "b2n", "obj", "rgbString", "hexString", "hslString", "color", "weight", "c1", "c2", "w", "a", "w1", "w2", "interpolate", "rgb", "val", "round", "deg", "rotate", "index_esm_default", "input", "Color", "index_default", "index_esm_default", "index_esm_exports"]
7
+ }
package/dist/hex.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import type { RGBA } from './color.js';
6
+ /**
7
+ * Parse HEX to color
8
+ * @param str - the string
9
+ */
10
+ export declare function hexParse(str: string): RGBA | undefined;
11
+ /**
12
+ * Return HEX string from color
13
+ * @param v - the color
14
+ * @return {string|undefined}
15
+ */
16
+ export declare function hexString(v: RGBA | undefined): string | undefined;
package/dist/hue.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import type { RGBA } from './color.js';
6
+ /**
7
+ * Convert rgb to hsl
8
+ * @param v - the color
9
+ * @returns - [h, s, l]
10
+ */
11
+ export declare function rgb2hsl(v: RGBA): number[];
12
+ /**
13
+ * Convert hsl to rgb
14
+ * @param h - hue | [h, s, l]
15
+ * @param s - saturation
16
+ * @param l - lightness
17
+ * @returns
18
+ */
19
+ export declare function hsl2rgb(h: number | number[], s?: number, l?: number): number[];
20
+ /**
21
+ * Convert hwb to rgb
22
+ * @param h - hue | [h, s, l]
23
+ * @param w - whiteness
24
+ * @param b - blackness
25
+ * @returns
26
+ */
27
+ export declare function hwb2rgb(h: number | number[], w?: number, b?: number): number[];
28
+ /**
29
+ * Convert hsv to rgb
30
+ * @param h - hue | [h, s, l]
31
+ * @param s - saturation
32
+ * @param v - value
33
+ * @returns
34
+ */
35
+ export declare function hsv2rgb(h: number | number[], s?: number, v?: number): number[];
36
+ /**
37
+ * Parse hsl/hsv/hwb color string
38
+ * @param str - hsl/hsv/hwb color string
39
+ * @returns - the parsed color components
40
+ */
41
+ export declare function hueParse(str: string): RGBA | undefined;
42
+ /**
43
+ * Rotate the `v` color by `deg` degrees
44
+ * @param v - the color
45
+ * @param deg - degrees to rotate
46
+ */
47
+ export declare function rotate(v: RGBA, deg: number): void;
48
+ /**
49
+ * Return hsl(a) string from color components
50
+ * @param v - the color
51
+ * @return
52
+ */
53
+ export declare function hslString(v: RGBA | undefined): string | undefined;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module index
4
+ */
5
+ import * as color from './index.esm.js';
6
+ declare const _default: typeof color.default & typeof color;
7
+ export default _default;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module index
4
+ */
5
+ import Color, { RGBA } from './color.js';
6
+ export * from './byte.js';
7
+ export * from './hex.js';
8
+ export * from './hue.js';
9
+ export * from './names.js';
10
+ export * from './rgb.js';
11
+ export * from './srgb.js';
12
+ export { Color, RGBA };
13
+ /**
14
+ * Construct new Color instance
15
+ * @param input
16
+ * @internal
17
+ */
18
+ export default function (input: Color | RGBA | string | number[]): Color;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import type { RGBA } from './color.js';
6
+ /**
7
+ * Parse color name
8
+ * @param str - the color name
9
+ * @return - the color
10
+ */
11
+ export declare function nameParse(str: string): RGBA | undefined;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ /**
6
+ * Unpack color names
7
+ * @returns Record of color names to RGB arrays
8
+ */
9
+ export default function unpack(): Record<string, number[]>;
package/dist/rgb.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import type { RGBA } from './color.js';
6
+ /**
7
+ * Parse rgb(a) string to RGBA
8
+ * @param str - the rgb string
9
+ * @returns - the parsed color
10
+ */
11
+ export declare function rgbParse(str: string): RGBA | undefined;
12
+ /**
13
+ * Return rgb(a) string from color
14
+ * @param v - the color
15
+ */
16
+ export declare function rgbString(v: RGBA | undefined): string | undefined;
package/dist/srgb.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import type { RGBA } from './color.js';
6
+ /**
7
+ * @param rgb1 from color
8
+ * @param rgb2 to color
9
+ * @param t 0..1
10
+ * @returns interpolaced
11
+ */
12
+ export declare function interpolate(rgb1: RGBA, rgb2: RGBA, t: number): RGBA;