diff --git a/dist/cjs/index.js b/dist/cjs/index.js index 0d876ed..93a3ce1 100644 --- a/dist/cjs/index.js +++ b/dist/cjs/index.js @@ -1,7 +1,7 @@ -var h=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var p=(t,x)=>{for(var n in x)h(t,n,{get:x[n],enumerable:!0})},b=(t,x,n,y)=>{if(x&&typeof x=="object"||typeof x=="function")for(let l of T(x))!z.call(t,l)&&l!==n&&h(t,l,{get:()=>x[l],enumerable:!(y=N(x,l))||y.enumerable});return t};var g=t=>b(h({},"__esModule",{value:!0}),t);var u={};p(u,{convert:()=>X,parse:()=>m,resolve:()=>$});module.exports=g(u);var e=require("./js/color.js"),f=require("./js/common.js");/*! +var T=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var b=(t,x)=>{for(var n in x)T(t,n,{get:x[n],enumerable:!0})},p=(t,x,n,y)=>{if(x&&typeof x=="object"||typeof x=="function")for(let l of N(x))!z.call(t,l)&&l!==n&&T(t,l,{get:()=>x[l],enumerable:!(y=h(x,l))||y.enumerable});return t};var g=t=>p(T({},"__esModule",{value:!0}),t);var u={};b(u,{convert:()=>X,parse:()=>m,resolve:()=>$});module.exports=g(u);var e=require("./js/color.js"),f=require("./js/common.js");/*! * CSS color - Resolve, parse, convert CSS color. * @license MIT * @copyright asamuzaK (Kazz) * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE} - */const $=(t,x={})=>{if((0,f.isString)(t))t=t.trim();else throw new TypeError(`Expected String but got ${(0,f.getType)(t)}.`);const{currentColor:n,format:y,key:l}=x;let r,s,o,a;/^currentcolor$/i.test(t)?n?n.startsWith("color-mix")?[r,s,o,a]=(0,e.resolveColorMix)(n):n.startsWith("color(")?[r,s,o,a]=(0,e.resolveColorFunc)(n):[r,s,o,a]=(0,e.resolveColorValue)(n):(r=0,s=0,o=0,a=0):/^transparent$/i.test(t)?(r=0,s=0,o=0,a=0):t.startsWith("color-mix")?[r,s,o,a]=(0,e.resolveColorMix)(t):t.startsWith("color(")?[r,s,o,a]=(0,e.resolveColorFunc)(t):[r,s,o,a]=(0,e.resolveColorValue)(t);let c;switch(y){case"array":{l?c=[l,[r,s,o,a]]:c=[r,s,o,a];break}case"hex":{let i;/^transparent$/i.test(t)||isNaN(r)||isNaN(s)||isNaN(o)?i=null:i=(0,e.convertRgbToHex)([r,s,o]),l?c=[l,i]:c=i;break}case"hexAlpha":{let i;/^transparent$/i.test(t)?i="#00000000":isNaN(r)||isNaN(s)||isNaN(o)||isNaN(a)?i=null:i=(0,e.convertRgbToHex)([r,s,o,a]),l?c=[l,i]:c=i;break}default:{let i;isNaN(r)||isNaN(s)||isNaN(o)||isNaN(a)?i="":(r=Math.round(r),s=Math.round(s),o=Math.round(o),a===1?i=`rgb(${r}, ${s}, ${o})`:i=`rgba(${r}, ${s}, ${o}, ${a})`),l?c=[l,i]:c=i}}return c},m=(t,x={})=>{if((0,f.isString)(t)){if(t=t.trim(),t.startsWith("color-mix("))throw new Error("color-mix() is not supported.")}else throw new TypeError(`Expected String but got ${(0,f.getType)(t)}.`);const{d50:n}=x;let y;return t.startsWith("color(")?y=(0,e.parseColorFunc)(t,n):y=(0,e.parseColorValue)(t,n),y},X={xyzD50ToLab:e.convertXyzD50ToLab,xyzD50ToLch:e.convertXyzD50ToLch,xyzToHex:e.convertXyzToHex,xyzToHsl:e.convertXyzToHsl,xyzToHwb:e.convertXyzToHwb,xyzToOklab:e.convertXyzToOklab,xyzToOklch:e.convertXyzToOklch,xyzToRgb:e.convertXyzToRgb,xyzToXyzD50:e.convertXyzToXyzD50};0&&(module.exports={convert,parse,resolve}); + */const $=(t,x={})=>{if((0,f.isString)(t))t=t.trim();else throw new TypeError(`Expected String but got ${(0,f.getType)(t)}.`);const{currentColor:n,format:y,key:l}=x;let r,s,o,a;/^currentcolor$/i.test(t)?n?n.startsWith("color-mix")?[r,s,o,a]=(0,e.resolveColorMix)(n):n.startsWith("color(")?[r,s,o,a]=(0,e.resolveColorFunc)(n):[r,s,o,a]=(0,e.resolveColorValue)(n):(r=0,s=0,o=0,a=0):/^transparent$/i.test(t)?(r=0,s=0,o=0,a=0):t.startsWith("color-mix")?[r,s,o,a]=(0,e.resolveColorMix)(t):t.startsWith("color(")?[r,s,o,a]=(0,e.resolveColorFunc)(t):[r,s,o,a]=(0,e.resolveColorValue)(t);let c;switch(y){case"array":{l?c=[l,[r,s,o,a]]:c=[r,s,o,a];break}case"hex":{let i;/^transparent$/i.test(t)||isNaN(r)||isNaN(s)||isNaN(o)?i=null:i=(0,e.convertRgbToHex)([r,s,o]),l?c=[l,i]:c=i;break}case"hexAlpha":{let i;/^transparent$/i.test(t)?i="#00000000":isNaN(r)||isNaN(s)||isNaN(o)||isNaN(a)?i=null:i=(0,e.convertRgbToHex)([r,s,o,a]),l?c=[l,i]:c=i;break}default:{let i;isNaN(r)||isNaN(s)||isNaN(o)||isNaN(a)?i="":(r=Math.round(r),s=Math.round(s),o=Math.round(o),a===1?i=`rgb(${r}, ${s}, ${o})`:i=`rgba(${r}, ${s}, ${o}, ${a})`),l?c=[l,i]:c=i}}return c},m=(t,x={})=>{if((0,f.isString)(t)){if(t=t.trim(),t.startsWith("color-mix("))throw new Error("color-mix() is not supported.")}else throw new TypeError(`Expected String but got ${(0,f.getType)(t)}.`);const{d50:n}=x;let y;return t.startsWith("color(")?y=(0,e.parseColorFunc)(t,n):y=(0,e.parseColorValue)(t,n),y},X={rgbToHex:e.convertRgbToHex,xyzD50ToLab:e.convertXyzD50ToLab,xyzD50ToLch:e.convertXyzD50ToLch,xyzToHex:e.convertXyzToHex,xyzToHsl:e.convertXyzToHsl,xyzToHwb:e.convertXyzToHwb,xyzToOklab:e.convertXyzToOklab,xyzToOklch:e.convertXyzToOklch,xyzToRgb:e.convertXyzToRgb,xyzToXyzD50:e.convertXyzToXyzD50};0&&(module.exports={convert,parse,resolve}); //# sourceMappingURL=index.js.map diff --git a/dist/cjs/index.js.map b/dist/cjs/index.js.map index dc494be..faaa95d 100644 --- a/dist/cjs/index.js.map +++ b/dist/cjs/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../src/index.js"], - "sourcesContent": ["/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nimport {\n convertRgbToHex, convertXyzD50ToLab, convertXyzD50ToLch, convertXyzToHex,\n convertXyzToHsl, convertXyzToHwb, convertXyzToOklab, convertXyzToOklch,\n convertXyzToRgb, convertXyzToXyzD50, parseColorFunc, parseColorValue,\n resolveColorFunc, resolveColorMix, resolveColorValue\n} from './js/color.js';\nimport { getType, isString } from './js/common.js';\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - color to use for `currentcolor` keyword\n * @param {string} [opt.format] - `rgb`(default), `array`, `hex` or `hexAlpha`\n * - `hexAlpha` is a hex color notation with alpha channel, i.e. #rrggbbaa\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array} - rgba?(), [r, g, b, a], #rrggbb(aa)?, null\n * - if `key` is specified, [key, rgba?()|[r, g, b, a]|#rrggbb(aa)?|null]\n * - in `rgb`, `r`, `g`, `b` values are rounded,\n * resolves as empty string if any of `r`, `g`, `b`, `a` is not a number\n * - in `array`, values are floating point,\n * if any of `r`, `g`, `b`, `a` is not a number then they stay as is,\n * e.g. [undefined, undefined, undefined, undefined]\n * - in `hex`, `transparent` resolves as `null`,\n * also resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n * - in `hexAlpha`, resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(color)}.`);\n }\n const { currentColor, format, key } = opt;\n let r, g, b, a;\n if (/^currentcolor$/i.test(color)) {\n if (currentColor) {\n if (currentColor.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(currentColor);\n } else if (currentColor.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(currentColor);\n } else {\n [r, g, b, a] = resolveColorValue(currentColor);\n }\n } else {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n } else if (/^transparent$/i.test(color)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n } else if (color.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(color);\n } else if (color.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(color);\n } else {\n [r, g, b, a] = resolveColorValue(color);\n }\n let res;\n switch (format) {\n case 'array': {\n if (key) {\n res = [key, [r, g, b, a]];\n } else {\n res = [r, g, b, a];\n }\n break;\n }\n case 'hex': {\n let hex;\n if (/^transparent$/i.test(color) || isNaN(r) || isNaN(g) || isNaN(b)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (/^transparent$/i.test(color)) {\n hex = '#00000000';\n } else if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, a]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n default: {\n let rgb;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n rgb = '';\n } else {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n if (a === 1) {\n rgb = `rgb(${r}, ${g}, ${b})`;\n } else {\n rgb = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n }\n if (key) {\n res = [key, rgb];\n } else {\n res = rgb;\n }\n }\n }\n return res;\n};\n\n/**\n * parse CSS color\n * @param {string} value - color value\n * - color-mix() and system colors are not supported\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z: around 0..1 a: 0..1\n */\nexport const parse = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (value.startsWith('color-mix(')) {\n throw new Error('color-mix() is not supported.');\n }\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { d50 } = opt;\n let xyz;\n if (value.startsWith('color(')) {\n xyz = parseColorFunc(value, d50);\n } else {\n xyz = parseColorValue(value, d50);\n }\n return xyz;\n};\n\n/**\n * convert\n * @property {Function} xyzD50ToHex - convert xyz d50 to hex\n * @property {Function} xyzD50ToLab - convert xyz d50 to lab\n * @property {Function} xyzD50ToLch - convert xyz d50 to lch\n * @property {Function} xyzD50ToRgb - convert xyz d50 to rgb\n * @property {Function} xyzToHex - convert xyz to hex\n * @property {Function} xyzToHsl - convert xyz to hsl\n * @property {Function} xyzToHwb - convert xyz to hwb\n * @property {Function} xyzToOklab - convert xyz to oklab\n * @property {Function} xyzToOklch - convert xyz to oklch\n * @property {Function} xyzToRgb - convert xyz to rgb\n * @property {Function} xyzToXyzD50 - convert xyz to xyz d50\n */\nexport const convert = {\n xyzD50ToLab: convertXyzD50ToLab,\n xyzD50ToLch: convertXyzD50ToLch,\n xyzToHex: convertXyzToHex,\n xyzToHsl: convertXyzToHsl,\n xyzToHwb: convertXyzToHwb,\n xyzToOklab: convertXyzToOklab,\n xyzToOklch: convertXyzToOklch,\n xyzToRgb: convertXyzToRgb,\n xyzToXyzD50: convertXyzToXyzD50\n};\n"], - "mappings": "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", + "sourcesContent": ["/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nimport {\n convertRgbToHex, convertXyzD50ToLab, convertXyzD50ToLch, convertXyzToHex,\n convertXyzToHsl, convertXyzToHwb, convertXyzToOklab, convertXyzToOklch,\n convertXyzToRgb, convertXyzToXyzD50, parseColorFunc, parseColorValue,\n resolveColorFunc, resolveColorMix, resolveColorValue\n} from './js/color.js';\nimport { getType, isString } from './js/common.js';\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - color to use for `currentcolor` keyword\n * @param {string} [opt.format] - `rgb`(default), `array`, `hex` or `hexAlpha`\n * - `hexAlpha` is a hex color notation with alpha channel, i.e. #rrggbbaa\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array} - rgba?(), [r, g, b, a], #rrggbb(aa)?, null\n * - if `key` is specified, [key, rgba?()|[r, g, b, a]|#rrggbb(aa)?|null]\n * - in `rgb`, `r`, `g`, `b` values are rounded,\n * resolves as empty string if any of `r`, `g`, `b`, `a` is not a number\n * - in `array`, values are floating point,\n * if any of `r`, `g`, `b`, `a` is not a number then they stay as is,\n * e.g. [undefined, undefined, undefined, undefined]\n * - in `hex`, `transparent` resolves as `null`,\n * also resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n * - in `hexAlpha`, resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(color)}.`);\n }\n const { currentColor, format, key } = opt;\n let r, g, b, a;\n if (/^currentcolor$/i.test(color)) {\n if (currentColor) {\n if (currentColor.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(currentColor);\n } else if (currentColor.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(currentColor);\n } else {\n [r, g, b, a] = resolveColorValue(currentColor);\n }\n } else {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n } else if (/^transparent$/i.test(color)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n } else if (color.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(color);\n } else if (color.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(color);\n } else {\n [r, g, b, a] = resolveColorValue(color);\n }\n let res;\n switch (format) {\n case 'array': {\n if (key) {\n res = [key, [r, g, b, a]];\n } else {\n res = [r, g, b, a];\n }\n break;\n }\n case 'hex': {\n let hex;\n if (/^transparent$/i.test(color) || isNaN(r) || isNaN(g) || isNaN(b)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (/^transparent$/i.test(color)) {\n hex = '#00000000';\n } else if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, a]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n default: {\n let rgb;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n rgb = '';\n } else {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n if (a === 1) {\n rgb = `rgb(${r}, ${g}, ${b})`;\n } else {\n rgb = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n }\n if (key) {\n res = [key, rgb];\n } else {\n res = rgb;\n }\n }\n }\n return res;\n};\n\n/**\n * parse CSS color\n * @param {string} value - color value\n * - color-mix() and system colors are not supported\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z: around 0..1 a: 0..1\n */\nexport const parse = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (value.startsWith('color-mix(')) {\n throw new Error('color-mix() is not supported.');\n }\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { d50 } = opt;\n let xyz;\n if (value.startsWith('color(')) {\n xyz = parseColorFunc(value, d50);\n } else {\n xyz = parseColorValue(value, d50);\n }\n return xyz;\n};\n\n/**\n * convert\n * @property {Function} rgbToHex - convert rgb to hex\n * @property {Function} xyzD50ToHex - convert xyz d50 to hex\n * @property {Function} xyzD50ToLab - convert xyz d50 to lab\n * @property {Function} xyzD50ToLch - convert xyz d50 to lch\n * @property {Function} xyzD50ToRgb - convert xyz d50 to rgb\n * @property {Function} xyzToHex - convert xyz to hex\n * @property {Function} xyzToHsl - convert xyz to hsl\n * @property {Function} xyzToHwb - convert xyz to hwb\n * @property {Function} xyzToOklab - convert xyz to oklab\n * @property {Function} xyzToOklch - convert xyz to oklch\n * @property {Function} xyzToRgb - convert xyz to rgb\n * @property {Function} xyzToXyzD50 - convert xyz to xyz d50\n */\nexport const convert = {\n rgbToHex: convertRgbToHex,\n xyzD50ToLab: convertXyzD50ToLab,\n xyzD50ToLch: convertXyzD50ToLch,\n xyzToHex: convertXyzToHex,\n xyzToHsl: convertXyzToHsl,\n xyzToHwb: convertXyzToHwb,\n xyzToOklab: convertXyzToOklab,\n xyzToOklch: convertXyzToOklch,\n xyzToRgb: convertXyzToRgb,\n xyzToXyzD50: convertXyzToXyzD50\n};\n"], + "mappings": "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", "names": ["src_exports", "__export", "convert", "parse", "resolve", "__toCommonJS", "import_color", "import_common", "color", "opt", "currentColor", "format", "key", "g", "b", "res", "hex", "rgb", "value", "d50", "xyz"] } diff --git a/dist/esm/css-color.min.js b/dist/esm/css-color.min.js index 28ce840..7f9bcf2 100644 --- a/dist/esm/css-color.min.js +++ b/dist/esm/css-color.min.js @@ -1,4 +1,4 @@ -var L=t=>Object.prototype.toString.call(t).slice(8,-1),Y=t=>typeof t=="string"||t instanceof String;var et=.5,$t=2,ot=3,K=4,Yt=10,G=16,q=360,rt=60,R=100,M=255,Tt=2,yt=3,bt=2.4,Ft=12.92,v=.055,mt=116,Vt=500,Zt=200,_t=216/24389,Mt=24389/27,Ut=[.3457/.3585,1,(1-.3457-.3585)/.3585],wt=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],tt=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Wt=[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],Ot=[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],fe=[[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],jt=[[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],Kt=[[.9999999984505196,.39633779217376774,.2158037580607588],[1.0000000088817607,-.10556134232365633,-.0638541747717059],[1.0000000546724108,-.08948418209496574,-1.2914855378640917]],he=[[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],pe=[[608311/1250200,189793/714400,198249/1000160],[35783/156275,247089/357200,198249/2500400],[0,32229/714400,5220557/5000800]],ge=[[63426534/99577255,20160776/139408157,47086771/278816314],[26158966/99577255,472592308/697040785,8267143/139408157],[0,19567812/697040785,295819943/278816314]],$e=[[573536/994567,263643/1420810,187206/994567],[591459/1989134,6239551/9945670,374412/4972835],[53769/1989134,351524/4972835,4929758/4972835]],be=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],b="none",Bt="deg|g?rad|turn",Qt="srgb(?:-linear)?",Jt="xyz(?:-d(?:50|65))?",Fe=`(?:ok)?l(?:ab|ch)|h(?:sl|wb)|${Qt}|${Jt}`,ye=`(?:a98|prophoto)-rgb|display-p3|rec2020|${Qt}`,Z="[+-]?(?:(?:0|[1-9]\\d*)(?:\\.\\d*)?|\\.\\d+)(?:e-?(?:0|[1-9]\\d*))?",j=`${Z}%`,dt=`(?:${Z}(?:${Bt})?|${b})(?:\\s+(?:${j}|${b})){2}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,vt=`${Z}(?:${Bt})?(?:\\s*,\\s*${j}){2}(?:\\s*,\\s*(?:${Z}|${j}))?`,Nt=`(?:(?:${Z}|${b})(?:\\s+(?:${Z}|${b})){2}|(?:${j}|${b})(?:\\s+(?:${j}|${b})){2})(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,te=`(?:${Z}(?:\\s*,\\s*${Z}){2}|${j}(?:\\s*,\\s*${j}){2})(?:\\s*,\\s*(?:${Z}|${j}))?`,Et=`(?:${Z}|${j}|${b})(?:\\s+(?:${Z}|${j}|${b})){2}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,Lt=`(?:(?:${Z}|${j}|${b})\\s+){2}(?:${Z}(?:${Bt})?|${b})(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,zt=`(?:${ye}|${Jt})(?:\\s+(?:${Z}|${j}|${b})){3}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,ee=`[a-z]+|#(?:[\\da-f]{3}|[\\da-f]{4}|[\\da-f]{6}|[\\da-f]{8})|hsla?\\(\\s*(?:${dt}|${vt})\\s*\\)|hwb\\(\\s*${dt}\\s*\\)|rgba?\\(\\s*(?:${Nt}|${te})\\s*\\)|(?:ok)?lab\\(\\s*${Et}\\s*\\)|(?:ok)?lch\\(\\s*${Lt}\\s*\\)|color\\(\\s*${zt}\\s*\\)`,qt=`(?:${ee})(?:\\s+${j})?`,me=`color-mix\\(\\s*in\\s+(${Fe})\\s*,\\s*(${qt})\\s*,\\s*(${qt})\\s*\\)`,H=/^currentColor$/i,Rt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},J=(t,x={})=>{if(!Array.isArray(t))throw new TypeError(`Expected Array but got ${L(t)}.`);let{alpha:a=!1,minLength:o=ot,maxLength:e=K,minRange:s=0,maxRange:r=1,validateRange:n=!0}=x;if(typeof o!="number")throw new TypeError(`Expected Number but got ${L(o)}.`);if(Number.isNaN(o))throw new TypeError(`${o} is not a number.`);if(typeof e!="number")throw new TypeError(`Expected Number but got ${L(e)}.`);if(Number.isNaN(e))throw new TypeError(`${e} is not a number.`);if(typeof s!="number")throw new TypeError(`Expected Number but got ${L(s)}.`);if(Number.isNaN(s))throw new TypeError(`${s} is not a number.`);if(typeof r!="number")throw new TypeError(`Expected Number but got ${L(r)}.`);if(Number.isNaN(r))throw new TypeError(`${r} is not a number.`);let l=t.length;if(le){let i;throw o===e?i=`Expected array length of ${e} but got ${l}.`:i=`Expected array length of ${o} or ${e} but got ${l}.`,new Error(i)}let h=0;for(;hr))throw new RangeError(`${i} is not between ${s} and ${r}.`);if(h===ot&&(i<0||i>1))throw new RangeError(`${i} is not between 0 and 1.`);h++}return a&&l===ot&&t.push(1),t},O=(t,x)=>{if(Array.isArray(t)){if(t.length!==ot)throw new Error(`Expected array length of 3 but got ${t.length}.`);for(let X of t)X=J(X,{maxLength:ot,validateRange:!1})}else throw new TypeError(`Expected Array but got ${L(t)}.`);let[[a,o,e],[s,r,n],[l,h,i]]=t,[E,c,A]=J(x,{maxLength:ot,validateRange:!1}),p=a*E+o*c+e*A,$=s*E+r*c+n*A,W=l*E+h*c+i*A;return[p,$,W]},C=(t,x=[])=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let[a,o,e,s]=x,r,n,l,h;if(/none/.test(t)){let i=new RegExp(`^rgba?\\(\\s*(${Nt})\\s*\\)$`),E=new RegExp(`^color\\(\\s*(${zt})\\s*\\)$`),c=new RegExp(`^h(?:sla?|wb)\\(\\s*(${dt})\\s*\\)$`),A=new RegExp(`^(?:ok)?lab\\(\\s*(${Et})\\s*\\)$`),p=new RegExp(`^(?:ok)?lch\\(\\s*(${Lt})\\s*\\)$`);i.test(t)?[r,n,l,h]=t.match(i)[1].replace("/"," ").split(/\s+/):E.test(t)?[,r,n,l,h]=t.match(E)[1].replace("/"," ").split(/\s+/):t.startsWith("hsl")&&c.test(t)?[l,n,r,h]=t.match(c)[1].replace("/"," ").split(/\s+/):t.startsWith("hwb")&&c.test(t)?[l,,,h]=t.match(c)[1].replace("/"," ").split(/\s+/):A.test(t)?[r,,,h]=t.match(A)[1].replace("/"," ").split(/\s+/):p.test(t)&&([r,n,l,h]=t.match(p)[1].replace("/"," ").split(/\s+/))}return[r===b?r:a,n===b?n:o,l===b?l:e,h===b?h:s]},st=(t,x)=>{if(Array.isArray(t)){if(t.length!==K)throw new Error(`Expected array length of 4 but got ${t.length}.`)}else throw new TypeError(`Expected Array but got ${L(t)}.`);if(Array.isArray(x)){if(x.length!==K)throw new Error(`Expected array length of 4 but got ${x.length}.`)}else throw new TypeError(`Expected Array but got ${L(x)}.`);let a=0;for(;a{if(typeof t!="number")throw new TypeError(`Expected Number but got ${L(t)}.`);if(Number.isNaN(t))throw new TypeError(`${t} is not a number.`);if(t=Math.round(t),t<0||t>M)throw new RangeError(`${t} is not between 0 and ${M}.`);let x=t.toString(G);return x.length===1&&(x=`0${x}`),x},Ct=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=q/400,a=q/(Math.PI*$t),o=new RegExp(`^(${Z})(${Bt})?$`);if(!o.test(t))throw new Error(`Invalid property value: ${t}`);let[,e,s]=t.match(o),r=e.startsWith(".")?`0${e}`:e,n;switch(s){case"grad":n=parseFloat(r)*x;break;case"rad":n=parseFloat(r)*a;break;case"turn":n=parseFloat(r)*q;break;default:n=parseFloat(r)}return n%=q,n<0&&(n+=q),n},kt=t=>{let[x,a,o]=J(t,{maxLength:ot,maxRange:M}),e=x/M,s=a/M,r=o/M,n=.04045;return e>n?e=Math.pow((e+v)/(1+v),bt):e/=Ft,s>n?s=Math.pow((s+v)/(1+v),bt):s/=Ft,r>n?r=Math.pow((r+v)/(1+v),bt):r/=Ft,[e,s,r]},ut=t=>{let[x,a,o,e]=J(t,{alpha:!0,maxRange:M}),[s,r,n]=kt([x,a,o]),[l,h,i]=O(Wt,[s,r,n]);return[l,h,i,e]};var It=t=>{let[x,a,o,e]=J(t,{alpha:!0,maxRange:M}),s=nt(x),r=nt(a),n=nt(o),l=nt(e*M),h;return l==="ff"?h=`#${s}${r}${n}`:h=`#${s}${r}${n}${l}`,h},Xt=t=>{let[x,a,o]=J(t,{maxLength:ot}),e=809/258400;return x>e?x=Math.pow(x,1/bt)*(1+v)-v:x*=Ft,a>e?a=Math.pow(a,1/bt)*(1+v)-v:a*=Ft,o>e?o=Math.pow(o,1/bt)*(1+v)-v:o*=Ft,[Math.round(x*M),Math.round(a*M),Math.round(o*M)]},we=t=>{let[x,a,o,e]=J(t,{minLength:K});[x,a,o]=Xt([x,a,o]);let s=nt(x),r=nt(a),n=nt(o),l=nt(e*M),h;return l==="ff"?h=`#${s}${r}${n}`:h=`#${s}${r}${n}${l}`,h},se=t=>{let[x,a,o,e]=J(t,{minLength:K,validateRange:!1}),[s,r,n]=O(Ot,[x,a,o]);return we([Math.min(Math.max(s,0),1),Math.min(Math.max(r,0),1),Math.min(Math.max(n,0),1),e])};var at=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),[s,r,n]=O(Ot,[x,a,o]);return[s,r,n]=Xt([Math.min(Math.max(s,0),1),Math.min(Math.max(r,0),1),Math.min(Math.max(n,0),1)]),[s,r,n,e]},re=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),[s,r,n]=O(tt,[x,a,o]);return[s,r,n,e]},xt=t=>{let[x,a,o,e]=at(t),s=x/M,r=a/M,n=o/M,l=Math.max(s,r,n),h=Math.min(s,r,n),i=l-h,E=(l+h)*et*R,c,A;if(Math.round(E)===0||Math.round(E)===R)c=b,A=b;else if(A=i/(1-Math.abs(l+h-1))*R,A===0)c=b;else{switch(l){case s:c=(r-n)/i;break;case r:c=(n-s)/i+$t;break;case n:default:c=(s-r)/i+K;break}c=c*rt%q,c<0&&(c+=q)}return[c,A,E,e]},ht=t=>{let[x,a,o,e]=at(t),s=Math.min(x,a,o)/M,r=1-Math.max(x,a,o)/M,n;return s+r===1?n=b:[n]=xt(t),[n,s*R,r*R,e]},lt=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),r=O(fe,[x,a,o]).map(E=>Math.cbrt(E)),[n,l,h]=O(he,r);n=Math.min(Math.max(n,0),1);let i=Math.round(parseFloat(n.toFixed(K))*R);return(i===0||i===R)&&(l=b,h=b),[n,l,h,e]},pt=t=>{let[x,a,o,e]=lt(t),s,r,n=Math.round(parseFloat(x.toFixed(K))*R);return n===0||n===R?(s=b,r=b):(s=Math.max(Math.sqrt(Math.pow(a,Tt)+Math.pow(o,Tt)),0),parseFloat(s.toFixed(K))===0?r=b:(r=Math.atan2(o,a)*q*et/Math.PI,r<0&&(r+=q))),[x,s,r,e]},oe=t=>{let[x,a,o,e]=J(t,{minLength:K,validateRange:!1}),s=O(wt,[x,a,o]),[r,n,l]=at(s);return[r,n,l,e]},ct=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),s=[x,a,o].map((c,A)=>c/Ut[A]),[r,n,l]=s.map(c=>c>_t?Math.cbrt(c):(c*Mt+G)/mt),h=Math.min(Math.max(mt*n-G,0),R),i,E;return h===0||h===R?(i=b,E=b):(i=(r-n)*Vt,E=(n-l)*Zt),[h,i,E,e]},gt=t=>{let[x,a,o,e]=ct(t),s,r;return x===0||x===R?(s=b,r=b):(s=Math.max(Math.sqrt(Math.pow(a,Tt)+Math.pow(o,Tt)),0),parseFloat(s.toFixed(K))===0?r=b:(r=Math.atan2(o,a)*q*et/Math.PI,r<0&&(r+=q))),[x,s,r,e]},ne=t=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);if(!(/^#[\da-f]{6}$/.test(t)||/^#[\da-f]{3}$/.test(t)||/^#[\da-f]{8}$/.test(t)||/^#[\da-f]{4}$/.test(t)))throw new Error(`Invalid property value: ${t}`);let x=[];if(/^#[\da-f]{6}$/.test(t)){let[,a,o,e]=t.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})$/);x.push(parseInt(a,G),parseInt(o,G),parseInt(e,G),1)}else if(/^#[\da-f]{3}$/.test(t)){let[,a,o,e]=t.match(/^#([\da-f])([\da-f])([\da-f])$/);x.push(parseInt(`${a}${a}`,G),parseInt(`${o}${o}`,G),parseInt(`${e}${e}`,G),1)}else if(/^#[\da-f]{8}$/.test(t)){let[,a,o,e,s]=t.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})([\da-f]{2})$/);x.push(parseInt(a,G),parseInt(o,G),parseInt(e,G),parseInt(s,G)/M)}else if(/^#[\da-f]{4}$/.test(t)){let[,a,o,e,s]=t.match(/^#([\da-f])([\da-f])([\da-f])([\da-f])$/);x.push(parseInt(`${a}${a}`,G),parseInt(`${o}${o}`,G),parseInt(`${e}${e}`,G),parseInt(`${s}${s}`,G)/M)}return x},de=t=>{let[x,a,o,e]=ne(t),[s,r,n]=kt([x,a,o]);return[s,r,n,e]},Ee=t=>{let[x,a,o,e]=de(t),[s,r,n]=O(Wt,[x,a,o]);return[s,r,n,e]},it=t=>{if(Y(t))if(t=t.trim(),!t)t=1;else if(t===b)t=0;else{if(t.startsWith(".")&&(t=`0${t}`),t.endsWith("%")?t=parseFloat(t)/R:t=parseFloat(t),Number.isNaN(t))throw new TypeError(`${t} is not a number.`);(t<0||t>1)&&(t=Math.min(Math.max(t,0),1))}else t=1;return t},ae=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^rgba?\\(\\s*(${Nt}|${te})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace(/[,/]/g," ").split(/\s+/);return o===b?o=0:(o.startsWith(".")&&(o=`0${o}`),o.endsWith("%")?o=parseFloat(o)*M/R:o=parseFloat(o)),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)*M/R:e=parseFloat(e)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*M/R:s=parseFloat(s)),r=it(r),[Math.min(Math.max(o,0),M),Math.min(Math.max(e,0),M),Math.min(Math.max(s,0),M),r]},Pt=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^hsla?\\(\\s*(${dt}|${vt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace(/[,/]/g," ").split(/\s+/);o===b?o=0:o=Ct(o),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=Math.min(Math.max(parseFloat(e),0),R)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s=Math.min(Math.max(parseFloat(s),0),R)),r=it(r);let n,l;s=0&&o{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^hwb\\(\\s*(${dt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace("/"," ").split(/\s+/);o===b?o=0:o=Ct(o),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=Math.min(Math.max(parseFloat(e),0),R)/R),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s=Math.min(Math.max(parseFloat(s),0),R)/R),r=it(r);let n=[];if(e+s>=1){let l=e/(e+s)*M;n.push(l,l,l,r)}else{let[l,h,i]=Pt(`hsl(${o} 100% 50%)`),E=(1-e-s)/M;n.push((l*E+e)*M,(h*E+e)*M,(i*E+e)*M,r)}return n},St=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^lab\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=1.25,o=8,[,e]=t.match(x),[s,r,n,l]=e.replace("/"," ").split(/\s+/);s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?(s=parseFloat(s),s>R&&(s=R)):s=parseFloat(s),s<0&&(s=0)),r===b?r=0:(r.startsWith(".")&&(r=`0${r}`),r.endsWith("%")?r=parseFloat(r)*a:r=parseFloat(r)),n===b?n=0:n.endsWith("%")?n=parseFloat(n)*a:n=parseFloat(n),l=it(l);let h=(s+G)/mt,i=r/Vt+h,E=h-n/Zt,c=Math.pow(h,yt),A=Math.pow(i,yt),p=Math.pow(E,yt),$=[A>_t?A:(i*mt-G)/Mt,s>o?c:s/Mt,p>_t?p:(E*mt-G)/Mt],[W,X,I]=$.map((S,w)=>S*Ut[w]);return[W,X,I,l]},xe=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^lch\\(\\s*(${Lt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=1.5,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a:s=parseFloat(s)),r===b?r=0:r=Ct(r),n=it(n);let l=s*Math.cos(r*Math.PI/(q*et)),h=s*Math.sin(r*Math.PI/(q*et)),[i,E,c]=St(`lab(${e} ${l} ${h})`);return[i,E,c,n]},le=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^oklab\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=.4,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)/R:e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a/R:s=parseFloat(s)),r===b?r=0:r.endsWith("%")?r=parseFloat(r)*a/R:r=parseFloat(r),n=it(n);let h=O(Kt,[e,s,r]).map(A=>Math.pow(A,yt)),[i,E,c]=O(jt,h);return[i,E,c,n]},ce=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^oklch\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=.4,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)/R:e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a/R:s=parseFloat(s),s<0&&(s=0)),r===b?r=0:r=Ct(r),n=it(n);let l=s*Math.cos(r*Math.PI/(q*et)),h=s*Math.sin(r*Math.PI/(q*et)),E=O(Kt,[e,l,h]).map($=>Math.pow($,yt)),[c,A,p]=O(jt,E);return[c,A,p,n]},V=(t,x=!1)=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a=new RegExp(`^color\\(\\s*(${zt})\\s*\\)$`);if(!a.test(t))throw new Error(`Invalid property value: ${t}`);let[,o]=t.match(a),[e,s,r,n,l]=o.replace("/"," ").split(/\s+/),h,i,E;if(s===b)h=0;else{let W;s.startsWith(".")?W=`0${s}`:W=s,h=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}if(r===b)i=0;else{let W;r.startsWith(".")?W=`0${r}`:W=r,i=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}if(n===b)E=0;else{let W;n.startsWith(".")?W=`0${n}`:W=n,E=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}let c=it(l),A,p,$;if(e==="srgb")[A,p,$]=ut([h*M,i*M,E*M]),x&&([A,p,$]=O(tt,[A,p,$]));else if(e==="srgb-linear")[A,p,$]=O(Wt,[h,i,E]),x&&([A,p,$]=O(tt,[A,p,$]));else if(e==="display-p3"){let W=kt([h*M,i*M,E*M]);[A,p,$]=O(pe,W),x&&([A,p,$]=O(tt,[A,p,$]))}else if(e==="rec2020"){let W=1.09929682680944,X=.018053968510807,I=.45,S=[h,i,E].map(w=>{let f;return wMath.pow(I,W));[A,p,$]=O($e,X),x&&([A,p,$]=O(tt,[A,p,$]))}else if(e==="prophoto-rgb"){let X=[h,i,E].map(I=>{let S;return I>1/(G*$t)?S=Math.pow(I,1.8):S=I/G,S});[A,p,$]=O(be,X),x||([A,p,$]=O(wt,[A,p,$]))}else/^xyz(?:-d(?:50|65))?$/.test(e)&&([A,p,$]=[h,i,E],e==="xyz-d50"?x||([A,p,$]=O(wt,[A,p,$])):x&&([A,p,$]=O(tt,[A,p,$])));return[A,p,$,c]},U=(t,x=!1)=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a,o,e,s;if(H.test(t))a=0,o=0,e=0,s=0;else if(/^[a-z]+$/.test(t))if(Object.prototype.hasOwnProperty.call(Rt,t)){let[r,n,l]=Rt[t];s=1,[a,o,e]=ut([r,n,l]),x&&([a,o,e]=O(tt,[a,o,e]))}else if(t==="transparent")a=0,o=0,e=0,s=0;else throw new Error(`Invalid property value: ${t}`);else if(t.startsWith("#")){let r;if(/^#[\da-f]{6}$/.test(t))r=t;else if(/^#[\da-f]{3}$/.test(t)){let[,n,l,h]=t.match(/^#([\da-f])([\da-f])([\da-f])$/);r=`#${n}${n}${l}${l}${h}${h}`}else if(/^#[\da-f]{8}$/.test(t))r=t;else if(/^#[\da-f]{4}$/.test(t)){let[,n,l,h,i]=t.match(/^#([\da-f])([\da-f])([\da-f])([\da-f])$/);r=`#${n}${n}${l}${l}${h}${h}${i}${i}`}else throw new Error(`Invalid property value: ${t}`);[a,o,e,s]=Ee(r),x&&([a,o,e]=O(tt,[a,o,e]))}else if(t.startsWith("lab"))[a,o,e,s]=St(t),x||([a,o,e]=O(wt,[a,o,e]));else if(t.startsWith("lch"))[a,o,e,s]=xe(t),x||([a,o,e]=O(wt,[a,o,e]));else if(t.startsWith("oklab"))[a,o,e,s]=le(t),x&&([a,o,e]=O(tt,[a,o,e]));else if(t.startsWith("oklch"))[a,o,e,s]=ce(t),x&&([a,o,e]=O(tt,[a,o,e]));else{let r,n,l;if(t.startsWith("rgb"))[r,n,l,s]=ae(t);else if(t.startsWith("hsl"))[r,n,l,s]=Pt(t);else if(t.startsWith("hwb"))[r,n,l,s]=ie(t);else throw new Error(`Invalid property value: ${t}`);[a,o,e]=ut([r,n,l]),x&&([a,o,e]=O(tt,[a,o,e]))}return[a,o,e,s]},Dt=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let{alpha:a}=x,o,e,s,r;t.startsWith("color(")?[o,e,s,r]=V(t):[o,e,s,r]=U(t);let[n,l,h]=O(Ot,[o,e,s]);n=Math.min(Math.max(n,0),1),l=Math.min(Math.max(l,0),1),h=Math.min(Math.max(h,0),1);let i=[n,l,h];return a?i.push(r):i.push(1),i},At=t=>{let[x,a,o,e]=Dt(t,{alpha:!0});return[x,a,o]=Xt([x,a,o]),[x,a,o,e]},ft=t=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x,a,o,e;if(H.test(t))x=0,a=0,o=0,e=0;else if(/^[a-z]+$/i.test(t))Object.prototype.hasOwnProperty.call(Rt,t)?([x,a,o]=Rt[t],e=1):t==="transparent"&&(x=0,a=0,o=0,e=0);else if(t.startsWith("#"))[x,a,o,e]=ne(t);else if(/^l(?:ab|ch)/.test(t)){let r,n,l;t.startsWith("lab")?[r,n,l,e]=St(t):[r,n,l,e]=xe(t),[x,a,o,e]=oe([r,n,l,e])}else if(/^okl(?:ab|ch)/.test(t)){let r,n,l;t.startsWith("oklab")?[r,n,l,e]=le(t):[r,n,l,e]=ce(t),[x,a,o,e]=at([r,n,l,e])}else t.startsWith("rgb")?[x,a,o,e]=ae(t):t.startsWith("hsl")?[x,a,o,e]=Pt(t):t.startsWith("hwb")&&([x,a,o,e]=ie(t));let s;return isNaN(x)||isNaN(a)||isNaN(o)||isNaN(e)?s=[]:s=[Math.round(x),Math.round(a),Math.round(o),e],s},Ht=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);if(!new RegExp(`^color\\(\\s*${zt}\\s*\\)$`).test(t))throw new Error(`Invalid property value: ${t}`);let[a,o,e,s]=V(t),[r,n,l]=at([a,o,e]);return[r,n,l,s]},Gt=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a=new RegExp(`^${me}$`,"i");if(!a.test(t))throw new Error(`Invalid property value: ${t}`);let o="lch(none none none / none)",e="rgb(none none none / none)",s=new RegExp(`^(${ee})(?:\\s+(${j}))?$`,"i"),r=new RegExp(b),[,n,l,h]=t.match(a),[,i,E]=l.match(s),[,c,A]=h.match(s),p,$,W;if(E&&A){let f=parseFloat(E)/R,g=parseFloat(A)/R;if(f<0||f>1)throw new RangeError(`${E} is not between 0% and 100%.`);if(g<0||g>1)throw new RangeError(`${A} is not between 0% and 100%.`);let d=f+g;if(d===0)throw new Error(`Invalid property value: ${t}`);p=f/d,$=g/d,W=d<1?d:1}else{if(E){if(p=parseFloat(E)/R,p<0||p>1)throw new RangeError(`${E} is not between 0% and 100%.`);$=1-p}else if(A){if($=parseFloat(A)/R,$<0||$>1)throw new RangeError(`${A} is not between 0% and 100%.`);p=1-$}else p=et,$=et;W=1}let X,I,S,w;if(n==="srgb"){let f=At(i,{alpha:!0}),g=At(c,{alpha:!0});H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B,w===0?(X=d*p+T*$,I=y*p+m*$,S=F*p+D*$):(X=(d*_+T*B)/w,I=(y*_+m*B)/w,S=(F*_+D*B)/w)}else if(n==="srgb-linear"){let f=Dt(i,{alpha:!0}),g=Dt(c,{alpha:!0});H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B,w===0?(X=(d*p+T*$)*M,I=(y*p+m*$)*M,S=(F*p+D*$)*M):(X=(d*_+T*B)*w*M,I=(y*_+m*B)*w*M,S=(F*_+D*B)*w*M)}else if(/^xyz(?:-d65)?$/.test(n)){let f,g;i.startsWith("color(")?f=V(i):f=U(i),c.startsWith("color(")?g=V(c):g=U(c),H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=at([N,u,P])}else if(n==="xyz-d50"){let f,g;i.startsWith("color(")?f=V(i,!0):f=U(i,!0),c.startsWith("color(")?g=V(c,!0):g=U(c,!0),H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=oe([N,u,P,w])}else if(n==="hsl"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i);[f,g,d,y]=xt(u)}else{let u=U(i);[f,g,d,y]=xt(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c);[F,z,T,m]=xt(u)}else{let u=U(c);[F,z,T,m]=xt(u)}H.test(i)?[d,g,f,y]=C(o,[d,g,f,y]):r.test(i)&&([d,g,f,y]=C(i,[d,g,f,y])),H.test(c)?[T,z,F,m]=C(o,[T,z,F,m]):r.test(c)&&([T,z,F,m]=C(c,[T,z,F,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _=(f*p+F*$)%q,B,N;w===0?(B=g*p+z*$,N=d*p+T*$):(B=(g*D+z*k)/w,N=(d*D+T*k)/w),[X,I,S]=At(`hsl(${_} ${B}% ${N}%)`)}else if(n==="hwb"){let f,g,d,y;if(i.startsWith("color(")){let P=V(i);[f,g,d,y]=ht(P)}else{let P=U(i);[f,g,d,y]=ht(P)}let F,z,T,m;if(c.startsWith("color(")){let P=V(c);[F,z,T,m]=ht(P)}else{let P=U(c);[F,z,T,m]=ht(P)}H.test(i)?[,,f,y]=C(o,[null,null,f,y]):r.test(i)&&([,,f,y]=C(i,[null,null,f,y])),H.test(c)?[,,F,m]=C(o,[null,null,F,m]):r.test(c)&&([,,F,m]=C(c,[null,null,F,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _=(f*p+F*$)%q,B,N;w===0?(B=g*p+z*$,N=d*p+T*$):(B=(g*D+z*k)/w,N=(d*D+T*k)/w),[X,I,S]=At(`hwb(${_} ${B}% ${N}%)`)}else if(n==="lab"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i,!0);[f,g,d,y]=ct(u)}else{let u=U(i,!0);[f,g,d,y]=ct(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c,!0);[F,z,T,m]=ct(u)}else{let u=U(c,!0);[F,z,T,m]=ct(u)}H.test(i)?[f,,,y]=C(o,[f,null,null,y]):r.test(i)&&([f,,,y]=C(i,[f,null,null,y])),H.test(c)?[F,,,m]=C(o,[F,null,null,m]):r.test(c)&&([F,,,m]=C(c,[F,null,null,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _,B,N;w===0?(_=f*p+F*$,B=g*p+z*$,N=d*p+T*$):(_=(f*D+F*k)*w,B=(g*D+z*k)*w,N=(d*D+T*k)*w),[X,I,S]=ft(`lab(${_} ${B} ${N})`)}else if(n==="lch"){let f,g;if(i.startsWith("color(")){let Q=V(i,!0);f=gt(Q)}else{let Q=U(i,!0);f=gt(Q)}if(c.startsWith("color(")){let Q=V(c,!0);g=gt(Q)}else{let Q=U(c,!0);g=gt(Q)}H.test(i)?f=C(o,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(o,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=ft(`lch(${N} ${u} ${P})`)}else if(n==="oklab"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i);[f,g,d,y]=lt(u)}else{let u=U(i);[f,g,d,y]=lt(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c);[F,z,T,m]=lt(u)}else{let u=U(c);[F,z,T,m]=lt(u)}H.test(i)?[f,,,y]=C(o,[f,null,null,y]):r.test(i)&&([f,,,y]=C(i,[f,null,null,y])),H.test(c)?[f,,,m]=C(o,[F,null,null,m]):r.test(c)&&([F,,,m]=C(c,[F,null,null,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _,B,N;w===0?(_=f*p+F*$,B=g*p+z*$,N=d*p+T*$):(_=(f*D+F*k)*w,B=(g*D+z*k)*w,N=(d*D+T*k)*w),[X,I,S]=ft(`oklab(${_} ${B} ${N})`)}else if(n==="oklch"){let f,g;if(i.startsWith("color(")){let Q=V(i,!0);f=pt(Q)}else{let Q=U(i,!0);f=pt(Q)}if(c.startsWith("color(")){let Q=V(c,!0);g=pt(Q)}else{let Q=U(c,!0);g=pt(Q)}H.test(i)?f=C(o,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(o,g):r.test(c)&&(g=C(c,g)),r.test(i)&&(f=C(i,f)),r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=ft(`oklch(${N} ${u} ${P})`)}return[X,I,S,w*W]};var ze=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let{currentColor:a,format:o,key:e}=x,s,r,n,l;/^currentcolor$/i.test(t)?a?a.startsWith("color-mix")?[s,r,n,l]=Gt(a):a.startsWith("color(")?[s,r,n,l]=Ht(a):[s,r,n,l]=ft(a):(s=0,r=0,n=0,l=0):/^transparent$/i.test(t)?(s=0,r=0,n=0,l=0):t.startsWith("color-mix")?[s,r,n,l]=Gt(t):t.startsWith("color(")?[s,r,n,l]=Ht(t):[s,r,n,l]=ft(t);let h;switch(o){case"array":{e?h=[e,[s,r,n,l]]:h=[s,r,n,l];break}case"hex":{let i;/^transparent$/i.test(t)||isNaN(s)||isNaN(r)||isNaN(n)?i=null:i=It([s,r,n]),e?h=[e,i]:h=i;break}case"hexAlpha":{let i;/^transparent$/i.test(t)?i="#00000000":isNaN(s)||isNaN(r)||isNaN(n)||isNaN(l)?i=null:i=It([s,r,n,l]),e?h=[e,i]:h=i;break}default:{let i;isNaN(s)||isNaN(r)||isNaN(n)||isNaN(l)?i="":(s=Math.round(s),r=Math.round(r),n=Math.round(n),l===1?i=`rgb(${s}, ${r}, ${n})`:i=`rgba(${s}, ${r}, ${n}, ${l})`),e?h=[e,i]:h=i}}return h},Ce=(t,x={})=>{if(Y(t)){if(t=t.trim(),t.startsWith("color-mix("))throw new Error("color-mix() is not supported.")}else throw new TypeError(`Expected String but got ${L(t)}.`);let{d50:a}=x,o;return t.startsWith("color(")?o=V(t,a):o=U(t,a),o},_e={xyzD50ToLab:ct,xyzD50ToLch:gt,xyzToHex:se,xyzToHsl:xt,xyzToHwb:ht,xyzToOklab:lt,xyzToOklch:pt,xyzToRgb:at,xyzToXyzD50:re};export{_e as convert,Ce as parse,ze as resolve}; +var L=t=>Object.prototype.toString.call(t).slice(8,-1),Y=t=>typeof t=="string"||t instanceof String;var et=.5,$t=2,ot=3,K=4,Yt=10,G=16,q=360,rt=60,R=100,M=255,Tt=2,yt=3,bt=2.4,Ft=12.92,v=.055,mt=116,Vt=500,Zt=200,ut=216/24389,Mt=24389/27,Ut=[.3457/.3585,1,(1-.3457-.3585)/.3585],wt=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],tt=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Ot=[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],Nt=[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],fe=[[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],jt=[[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],Kt=[[.9999999984505196,.39633779217376774,.2158037580607588],[1.0000000088817607,-.10556134232365633,-.0638541747717059],[1.0000000546724108,-.08948418209496574,-1.2914855378640917]],he=[[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],pe=[[608311/1250200,189793/714400,198249/1000160],[35783/156275,247089/357200,198249/2500400],[0,32229/714400,5220557/5000800]],ge=[[63426534/99577255,20160776/139408157,47086771/278816314],[26158966/99577255,472592308/697040785,8267143/139408157],[0,19567812/697040785,295819943/278816314]],$e=[[573536/994567,263643/1420810,187206/994567],[591459/1989134,6239551/9945670,374412/4972835],[53769/1989134,351524/4972835,4929758/4972835]],be=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],b="none",Bt="deg|g?rad|turn",Qt="srgb(?:-linear)?",Jt="xyz(?:-d(?:50|65))?",Fe=`(?:ok)?l(?:ab|ch)|h(?:sl|wb)|${Qt}|${Jt}`,ye=`(?:a98|prophoto)-rgb|display-p3|rec2020|${Qt}`,Z="[+-]?(?:(?:0|[1-9]\\d*)(?:\\.\\d*)?|\\.\\d+)(?:e-?(?:0|[1-9]\\d*))?",j=`${Z}%`,dt=`(?:${Z}(?:${Bt})?|${b})(?:\\s+(?:${j}|${b})){2}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,vt=`${Z}(?:${Bt})?(?:\\s*,\\s*${j}){2}(?:\\s*,\\s*(?:${Z}|${j}))?`,Lt=`(?:(?:${Z}|${b})(?:\\s+(?:${Z}|${b})){2}|(?:${j}|${b})(?:\\s+(?:${j}|${b})){2})(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,te=`(?:${Z}(?:\\s*,\\s*${Z}){2}|${j}(?:\\s*,\\s*${j}){2})(?:\\s*,\\s*(?:${Z}|${j}))?`,Et=`(?:${Z}|${j}|${b})(?:\\s+(?:${Z}|${j}|${b})){2}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,kt=`(?:(?:${Z}|${j}|${b})\\s+){2}(?:${Z}(?:${Bt})?|${b})(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,zt=`(?:${ye}|${Jt})(?:\\s+(?:${Z}|${j}|${b})){3}(?:\\s*\\/\\s*(?:${Z}|${j}|${b}))?`,ee=`[a-z]+|#(?:[\\da-f]{3}|[\\da-f]{4}|[\\da-f]{6}|[\\da-f]{8})|hsla?\\(\\s*(?:${dt}|${vt})\\s*\\)|hwb\\(\\s*${dt}\\s*\\)|rgba?\\(\\s*(?:${Lt}|${te})\\s*\\)|(?:ok)?lab\\(\\s*${Et}\\s*\\)|(?:ok)?lch\\(\\s*${kt}\\s*\\)|color\\(\\s*${zt}\\s*\\)`,qt=`(?:${ee})(?:\\s+${j})?`,me=`color-mix\\(\\s*in\\s+(${Fe})\\s*,\\s*(${qt})\\s*,\\s*(${qt})\\s*\\)`,H=/^currentColor$/i,Rt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},J=(t,x={})=>{if(!Array.isArray(t))throw new TypeError(`Expected Array but got ${L(t)}.`);let{alpha:a=!1,minLength:o=ot,maxLength:e=K,minRange:s=0,maxRange:r=1,validateRange:n=!0}=x;if(typeof o!="number")throw new TypeError(`Expected Number but got ${L(o)}.`);if(Number.isNaN(o))throw new TypeError(`${o} is not a number.`);if(typeof e!="number")throw new TypeError(`Expected Number but got ${L(e)}.`);if(Number.isNaN(e))throw new TypeError(`${e} is not a number.`);if(typeof s!="number")throw new TypeError(`Expected Number but got ${L(s)}.`);if(Number.isNaN(s))throw new TypeError(`${s} is not a number.`);if(typeof r!="number")throw new TypeError(`Expected Number but got ${L(r)}.`);if(Number.isNaN(r))throw new TypeError(`${r} is not a number.`);let l=t.length;if(le){let i;throw o===e?i=`Expected array length of ${e} but got ${l}.`:i=`Expected array length of ${o} or ${e} but got ${l}.`,new Error(i)}let h=0;for(;hr))throw new RangeError(`${i} is not between ${s} and ${r}.`);if(h===ot&&(i<0||i>1))throw new RangeError(`${i} is not between 0 and 1.`);h++}return a&&l===ot&&t.push(1),t},O=(t,x)=>{if(Array.isArray(t)){if(t.length!==ot)throw new Error(`Expected array length of 3 but got ${t.length}.`);for(let X of t)X=J(X,{maxLength:ot,validateRange:!1})}else throw new TypeError(`Expected Array but got ${L(t)}.`);let[[a,o,e],[s,r,n],[l,h,i]]=t,[E,c,A]=J(x,{maxLength:ot,validateRange:!1}),p=a*E+o*c+e*A,$=s*E+r*c+n*A,W=l*E+h*c+i*A;return[p,$,W]},C=(t,x=[])=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let[a,o,e,s]=x,r,n,l,h;if(/none/.test(t)){let i=new RegExp(`^rgba?\\(\\s*(${Lt})\\s*\\)$`),E=new RegExp(`^color\\(\\s*(${zt})\\s*\\)$`),c=new RegExp(`^h(?:sla?|wb)\\(\\s*(${dt})\\s*\\)$`),A=new RegExp(`^(?:ok)?lab\\(\\s*(${Et})\\s*\\)$`),p=new RegExp(`^(?:ok)?lch\\(\\s*(${kt})\\s*\\)$`);i.test(t)?[r,n,l,h]=t.match(i)[1].replace("/"," ").split(/\s+/):E.test(t)?[,r,n,l,h]=t.match(E)[1].replace("/"," ").split(/\s+/):t.startsWith("hsl")&&c.test(t)?[l,n,r,h]=t.match(c)[1].replace("/"," ").split(/\s+/):t.startsWith("hwb")&&c.test(t)?[l,,,h]=t.match(c)[1].replace("/"," ").split(/\s+/):A.test(t)?[r,,,h]=t.match(A)[1].replace("/"," ").split(/\s+/):p.test(t)&&([r,n,l,h]=t.match(p)[1].replace("/"," ").split(/\s+/))}return[r===b?r:a,n===b?n:o,l===b?l:e,h===b?h:s]},st=(t,x)=>{if(Array.isArray(t)){if(t.length!==K)throw new Error(`Expected array length of 4 but got ${t.length}.`)}else throw new TypeError(`Expected Array but got ${L(t)}.`);if(Array.isArray(x)){if(x.length!==K)throw new Error(`Expected array length of 4 but got ${x.length}.`)}else throw new TypeError(`Expected Array but got ${L(x)}.`);let a=0;for(;a{if(typeof t!="number")throw new TypeError(`Expected Number but got ${L(t)}.`);if(Number.isNaN(t))throw new TypeError(`${t} is not a number.`);if(t=Math.round(t),t<0||t>M)throw new RangeError(`${t} is not between 0 and ${M}.`);let x=t.toString(G);return x.length===1&&(x=`0${x}`),x},Ct=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=q/400,a=q/(Math.PI*$t),o=new RegExp(`^(${Z})(${Bt})?$`);if(!o.test(t))throw new Error(`Invalid property value: ${t}`);let[,e,s]=t.match(o),r=e.startsWith(".")?`0${e}`:e,n;switch(s){case"grad":n=parseFloat(r)*x;break;case"rad":n=parseFloat(r)*a;break;case"turn":n=parseFloat(r)*q;break;default:n=parseFloat(r)}return n%=q,n<0&&(n+=q),n},It=t=>{let[x,a,o]=J(t,{maxLength:ot,maxRange:M}),e=x/M,s=a/M,r=o/M,n=.04045;return e>n?e=Math.pow((e+v)/(1+v),bt):e/=Ft,s>n?s=Math.pow((s+v)/(1+v),bt):s/=Ft,r>n?r=Math.pow((r+v)/(1+v),bt):r/=Ft,[e,s,r]},Dt=t=>{let[x,a,o,e]=J(t,{alpha:!0,maxRange:M}),[s,r,n]=It([x,a,o]),[l,h,i]=O(Ot,[s,r,n]);return[l,h,i,e]};var _t=t=>{let[x,a,o,e]=J(t,{alpha:!0,maxRange:M}),s=nt(x),r=nt(a),n=nt(o),l=nt(e*M),h;return l==="ff"?h=`#${s}${r}${n}`:h=`#${s}${r}${n}${l}`,h},Xt=t=>{let[x,a,o]=J(t,{maxLength:ot}),e=809/258400;return x>e?x=Math.pow(x,1/bt)*(1+v)-v:x*=Ft,a>e?a=Math.pow(a,1/bt)*(1+v)-v:a*=Ft,o>e?o=Math.pow(o,1/bt)*(1+v)-v:o*=Ft,[Math.round(x*M),Math.round(a*M),Math.round(o*M)]},we=t=>{let[x,a,o,e]=J(t,{minLength:K});[x,a,o]=Xt([x,a,o]);let s=nt(x),r=nt(a),n=nt(o),l=nt(e*M),h;return l==="ff"?h=`#${s}${r}${n}`:h=`#${s}${r}${n}${l}`,h},se=t=>{let[x,a,o,e]=J(t,{minLength:K,validateRange:!1}),[s,r,n]=O(Nt,[x,a,o]);return we([Math.min(Math.max(s,0),1),Math.min(Math.max(r,0),1),Math.min(Math.max(n,0),1),e])};var at=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),[s,r,n]=O(Nt,[x,a,o]);return[s,r,n]=Xt([Math.min(Math.max(s,0),1),Math.min(Math.max(r,0),1),Math.min(Math.max(n,0),1)]),[s,r,n,e]},re=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),[s,r,n]=O(tt,[x,a,o]);return[s,r,n,e]},xt=t=>{let[x,a,o,e]=at(t),s=x/M,r=a/M,n=o/M,l=Math.max(s,r,n),h=Math.min(s,r,n),i=l-h,E=(l+h)*et*R,c,A;if(Math.round(E)===0||Math.round(E)===R)c=b,A=b;else if(A=i/(1-Math.abs(l+h-1))*R,A===0)c=b;else{switch(l){case s:c=(r-n)/i;break;case r:c=(n-s)/i+$t;break;case n:default:c=(s-r)/i+K;break}c=c*rt%q,c<0&&(c+=q)}return[c,A,E,e]},ht=t=>{let[x,a,o,e]=at(t),s=Math.min(x,a,o)/M,r=1-Math.max(x,a,o)/M,n;return s+r===1?n=b:[n]=xt(t),[n,s*R,r*R,e]},lt=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),r=O(fe,[x,a,o]).map(E=>Math.cbrt(E)),[n,l,h]=O(he,r);n=Math.min(Math.max(n,0),1);let i=Math.round(parseFloat(n.toFixed(K))*R);return(i===0||i===R)&&(l=b,h=b),[n,l,h,e]},pt=t=>{let[x,a,o,e]=lt(t),s,r,n=Math.round(parseFloat(x.toFixed(K))*R);return n===0||n===R?(s=b,r=b):(s=Math.max(Math.sqrt(Math.pow(a,Tt)+Math.pow(o,Tt)),0),parseFloat(s.toFixed(K))===0?r=b:(r=Math.atan2(o,a)*q*et/Math.PI,r<0&&(r+=q))),[x,s,r,e]},oe=t=>{let[x,a,o,e]=J(t,{minLength:K,validateRange:!1}),s=O(wt,[x,a,o]),[r,n,l]=at(s);return[r,n,l,e]},ct=t=>{let[x,a,o,e]=J(t,{validateRange:!1}),s=[x,a,o].map((c,A)=>c/Ut[A]),[r,n,l]=s.map(c=>c>ut?Math.cbrt(c):(c*Mt+G)/mt),h=Math.min(Math.max(mt*n-G,0),R),i,E;return h===0||h===R?(i=b,E=b):(i=(r-n)*Vt,E=(n-l)*Zt),[h,i,E,e]},gt=t=>{let[x,a,o,e]=ct(t),s,r;return x===0||x===R?(s=b,r=b):(s=Math.max(Math.sqrt(Math.pow(a,Tt)+Math.pow(o,Tt)),0),parseFloat(s.toFixed(K))===0?r=b:(r=Math.atan2(o,a)*q*et/Math.PI,r<0&&(r+=q))),[x,s,r,e]},ne=t=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);if(!(/^#[\da-f]{6}$/.test(t)||/^#[\da-f]{3}$/.test(t)||/^#[\da-f]{8}$/.test(t)||/^#[\da-f]{4}$/.test(t)))throw new Error(`Invalid property value: ${t}`);let x=[];if(/^#[\da-f]{6}$/.test(t)){let[,a,o,e]=t.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})$/);x.push(parseInt(a,G),parseInt(o,G),parseInt(e,G),1)}else if(/^#[\da-f]{3}$/.test(t)){let[,a,o,e]=t.match(/^#([\da-f])([\da-f])([\da-f])$/);x.push(parseInt(`${a}${a}`,G),parseInt(`${o}${o}`,G),parseInt(`${e}${e}`,G),1)}else if(/^#[\da-f]{8}$/.test(t)){let[,a,o,e,s]=t.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})([\da-f]{2})$/);x.push(parseInt(a,G),parseInt(o,G),parseInt(e,G),parseInt(s,G)/M)}else if(/^#[\da-f]{4}$/.test(t)){let[,a,o,e,s]=t.match(/^#([\da-f])([\da-f])([\da-f])([\da-f])$/);x.push(parseInt(`${a}${a}`,G),parseInt(`${o}${o}`,G),parseInt(`${e}${e}`,G),parseInt(`${s}${s}`,G)/M)}return x},de=t=>{let[x,a,o,e]=ne(t),[s,r,n]=It([x,a,o]);return[s,r,n,e]},Ee=t=>{let[x,a,o,e]=de(t),[s,r,n]=O(Ot,[x,a,o]);return[s,r,n,e]},it=t=>{if(Y(t))if(t=t.trim(),!t)t=1;else if(t===b)t=0;else{if(t.startsWith(".")&&(t=`0${t}`),t.endsWith("%")?t=parseFloat(t)/R:t=parseFloat(t),Number.isNaN(t))throw new TypeError(`${t} is not a number.`);(t<0||t>1)&&(t=Math.min(Math.max(t,0),1))}else t=1;return t},ae=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^rgba?\\(\\s*(${Lt}|${te})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace(/[,/]/g," ").split(/\s+/);return o===b?o=0:(o.startsWith(".")&&(o=`0${o}`),o.endsWith("%")?o=parseFloat(o)*M/R:o=parseFloat(o)),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)*M/R:e=parseFloat(e)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*M/R:s=parseFloat(s)),r=it(r),[Math.min(Math.max(o,0),M),Math.min(Math.max(e,0),M),Math.min(Math.max(s,0),M),r]},Pt=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^hsla?\\(\\s*(${dt}|${vt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace(/[,/]/g," ").split(/\s+/);o===b?o=0:o=Ct(o),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=Math.min(Math.max(parseFloat(e),0),R)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s=Math.min(Math.max(parseFloat(s),0),R)),r=it(r);let n,l;s=0&&o{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^hwb\\(\\s*(${dt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let[,a]=t.match(x),[o,e,s,r]=a.replace("/"," ").split(/\s+/);o===b?o=0:o=Ct(o),e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=Math.min(Math.max(parseFloat(e),0),R)/R),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s=Math.min(Math.max(parseFloat(s),0),R)/R),r=it(r);let n=[];if(e+s>=1){let l=e/(e+s)*M;n.push(l,l,l,r)}else{let[l,h,i]=Pt(`hsl(${o} 100% 50%)`),E=(1-e-s)/M;n.push((l*E+e)*M,(h*E+e)*M,(i*E+e)*M,r)}return n},St=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^lab\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=1.25,o=8,[,e]=t.match(x),[s,r,n,l]=e.replace("/"," ").split(/\s+/);s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?(s=parseFloat(s),s>R&&(s=R)):s=parseFloat(s),s<0&&(s=0)),r===b?r=0:(r.startsWith(".")&&(r=`0${r}`),r.endsWith("%")?r=parseFloat(r)*a:r=parseFloat(r)),n===b?n=0:n.endsWith("%")?n=parseFloat(n)*a:n=parseFloat(n),l=it(l);let h=(s+G)/mt,i=r/Vt+h,E=h-n/Zt,c=Math.pow(h,yt),A=Math.pow(i,yt),p=Math.pow(E,yt),$=[A>ut?A:(i*mt-G)/Mt,s>o?c:s/Mt,p>ut?p:(E*mt-G)/Mt],[W,X,I]=$.map((S,w)=>S*Ut[w]);return[W,X,I,l]},xe=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^lch\\(\\s*(${kt})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=1.5,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a:s=parseFloat(s)),r===b?r=0:r=Ct(r),n=it(n);let l=s*Math.cos(r*Math.PI/(q*et)),h=s*Math.sin(r*Math.PI/(q*et)),[i,E,c]=St(`lab(${e} ${l} ${h})`);return[i,E,c,n]},le=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^oklab\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=.4,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)/R:e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a/R:s=parseFloat(s)),r===b?r=0:r.endsWith("%")?r=parseFloat(r)*a/R:r=parseFloat(r),n=it(n);let h=O(Kt,[e,s,r]).map(A=>Math.pow(A,yt)),[i,E,c]=O(jt,h);return[i,E,c,n]},ce=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x=new RegExp(`^oklch\\(\\s*(${Et})\\s*\\)$`);if(!x.test(t))throw new Error(`Invalid property value: ${t}`);let a=.4,[,o]=t.match(x),[e,s,r,n]=o.replace("/"," ").split(/\s+/);e===b?e=0:(e.startsWith(".")&&(e=`0${e}`),e.endsWith("%")?e=parseFloat(e)/R:e=parseFloat(e),e<0&&(e=0)),s===b?s=0:(s.startsWith(".")&&(s=`0${s}`),s.endsWith("%")?s=parseFloat(s)*a/R:s=parseFloat(s),s<0&&(s=0)),r===b?r=0:r=Ct(r),n=it(n);let l=s*Math.cos(r*Math.PI/(q*et)),h=s*Math.sin(r*Math.PI/(q*et)),E=O(Kt,[e,l,h]).map($=>Math.pow($,yt)),[c,A,p]=O(jt,E);return[c,A,p,n]},V=(t,x=!1)=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a=new RegExp(`^color\\(\\s*(${zt})\\s*\\)$`);if(!a.test(t))throw new Error(`Invalid property value: ${t}`);let[,o]=t.match(a),[e,s,r,n,l]=o.replace("/"," ").split(/\s+/),h,i,E;if(s===b)h=0;else{let W;s.startsWith(".")?W=`0${s}`:W=s,h=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}if(r===b)i=0;else{let W;r.startsWith(".")?W=`0${r}`:W=r,i=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}if(n===b)E=0;else{let W;n.startsWith(".")?W=`0${n}`:W=n,E=W.endsWith("%")?parseFloat(W)/R:parseFloat(W)}let c=it(l),A,p,$;if(e==="srgb")[A,p,$]=Dt([h*M,i*M,E*M]),x&&([A,p,$]=O(tt,[A,p,$]));else if(e==="srgb-linear")[A,p,$]=O(Ot,[h,i,E]),x&&([A,p,$]=O(tt,[A,p,$]));else if(e==="display-p3"){let W=It([h*M,i*M,E*M]);[A,p,$]=O(pe,W),x&&([A,p,$]=O(tt,[A,p,$]))}else if(e==="rec2020"){let W=1.09929682680944,X=.018053968510807,I=.45,S=[h,i,E].map(w=>{let f;return wMath.pow(I,W));[A,p,$]=O($e,X),x&&([A,p,$]=O(tt,[A,p,$]))}else if(e==="prophoto-rgb"){let X=[h,i,E].map(I=>{let S;return I>1/(G*$t)?S=Math.pow(I,1.8):S=I/G,S});[A,p,$]=O(be,X),x||([A,p,$]=O(wt,[A,p,$]))}else/^xyz(?:-d(?:50|65))?$/.test(e)&&([A,p,$]=[h,i,E],e==="xyz-d50"?x||([A,p,$]=O(wt,[A,p,$])):x&&([A,p,$]=O(tt,[A,p,$])));return[A,p,$,c]},U=(t,x=!1)=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a,o,e,s;if(H.test(t))a=0,o=0,e=0,s=0;else if(/^[a-z]+$/.test(t))if(Object.prototype.hasOwnProperty.call(Rt,t)){let[r,n,l]=Rt[t];s=1,[a,o,e]=Dt([r,n,l]),x&&([a,o,e]=O(tt,[a,o,e]))}else if(t==="transparent")a=0,o=0,e=0,s=0;else throw new Error(`Invalid property value: ${t}`);else if(t.startsWith("#")){let r;if(/^#[\da-f]{6}$/.test(t))r=t;else if(/^#[\da-f]{3}$/.test(t)){let[,n,l,h]=t.match(/^#([\da-f])([\da-f])([\da-f])$/);r=`#${n}${n}${l}${l}${h}${h}`}else if(/^#[\da-f]{8}$/.test(t))r=t;else if(/^#[\da-f]{4}$/.test(t)){let[,n,l,h,i]=t.match(/^#([\da-f])([\da-f])([\da-f])([\da-f])$/);r=`#${n}${n}${l}${l}${h}${h}${i}${i}`}else throw new Error(`Invalid property value: ${t}`);[a,o,e,s]=Ee(r),x&&([a,o,e]=O(tt,[a,o,e]))}else if(t.startsWith("lab"))[a,o,e,s]=St(t),x||([a,o,e]=O(wt,[a,o,e]));else if(t.startsWith("lch"))[a,o,e,s]=xe(t),x||([a,o,e]=O(wt,[a,o,e]));else if(t.startsWith("oklab"))[a,o,e,s]=le(t),x&&([a,o,e]=O(tt,[a,o,e]));else if(t.startsWith("oklch"))[a,o,e,s]=ce(t),x&&([a,o,e]=O(tt,[a,o,e]));else{let r,n,l;if(t.startsWith("rgb"))[r,n,l,s]=ae(t);else if(t.startsWith("hsl"))[r,n,l,s]=Pt(t);else if(t.startsWith("hwb"))[r,n,l,s]=ie(t);else throw new Error(`Invalid property value: ${t}`);[a,o,e]=Dt([r,n,l]),x&&([a,o,e]=O(tt,[a,o,e]))}return[a,o,e,s]},Wt=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let{alpha:a}=x,o,e,s,r;t.startsWith("color(")?[o,e,s,r]=V(t):[o,e,s,r]=U(t);let[n,l,h]=O(Nt,[o,e,s]);n=Math.min(Math.max(n,0),1),l=Math.min(Math.max(l,0),1),h=Math.min(Math.max(h,0),1);let i=[n,l,h];return a?i.push(r):i.push(1),i},At=t=>{let[x,a,o,e]=Wt(t,{alpha:!0});return[x,a,o]=Xt([x,a,o]),[x,a,o,e]},ft=t=>{if(Y(t))t=t.toLowerCase().trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let x,a,o,e;if(H.test(t))x=0,a=0,o=0,e=0;else if(/^[a-z]+$/i.test(t))Object.prototype.hasOwnProperty.call(Rt,t)?([x,a,o]=Rt[t],e=1):t==="transparent"&&(x=0,a=0,o=0,e=0);else if(t.startsWith("#"))[x,a,o,e]=ne(t);else if(/^l(?:ab|ch)/.test(t)){let r,n,l;t.startsWith("lab")?[r,n,l,e]=St(t):[r,n,l,e]=xe(t),[x,a,o,e]=oe([r,n,l,e])}else if(/^okl(?:ab|ch)/.test(t)){let r,n,l;t.startsWith("oklab")?[r,n,l,e]=le(t):[r,n,l,e]=ce(t),[x,a,o,e]=at([r,n,l,e])}else t.startsWith("rgb")?[x,a,o,e]=ae(t):t.startsWith("hsl")?[x,a,o,e]=Pt(t):t.startsWith("hwb")&&([x,a,o,e]=ie(t));let s;return isNaN(x)||isNaN(a)||isNaN(o)||isNaN(e)?s=[]:s=[Math.round(x),Math.round(a),Math.round(o),e],s},Ht=t=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);if(!new RegExp(`^color\\(\\s*${zt}\\s*\\)$`).test(t))throw new Error(`Invalid property value: ${t}`);let[a,o,e,s]=V(t),[r,n,l]=at([a,o,e]);return[r,n,l,s]},Gt=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let a=new RegExp(`^${me}$`,"i");if(!a.test(t))throw new Error(`Invalid property value: ${t}`);let o="lch(none none none / none)",e="rgb(none none none / none)",s=new RegExp(`^(${ee})(?:\\s+(${j}))?$`,"i"),r=new RegExp(b),[,n,l,h]=t.match(a),[,i,E]=l.match(s),[,c,A]=h.match(s),p,$,W;if(E&&A){let f=parseFloat(E)/R,g=parseFloat(A)/R;if(f<0||f>1)throw new RangeError(`${E} is not between 0% and 100%.`);if(g<0||g>1)throw new RangeError(`${A} is not between 0% and 100%.`);let d=f+g;if(d===0)throw new Error(`Invalid property value: ${t}`);p=f/d,$=g/d,W=d<1?d:1}else{if(E){if(p=parseFloat(E)/R,p<0||p>1)throw new RangeError(`${E} is not between 0% and 100%.`);$=1-p}else if(A){if($=parseFloat(A)/R,$<0||$>1)throw new RangeError(`${A} is not between 0% and 100%.`);p=1-$}else p=et,$=et;W=1}let X,I,S,w;if(n==="srgb"){let f=At(i,{alpha:!0}),g=At(c,{alpha:!0});H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B,w===0?(X=d*p+T*$,I=y*p+m*$,S=F*p+D*$):(X=(d*_+T*B)/w,I=(y*_+m*B)/w,S=(F*_+D*B)/w)}else if(n==="srgb-linear"){let f=Wt(i,{alpha:!0}),g=Wt(c,{alpha:!0});H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B,w===0?(X=(d*p+T*$)*M,I=(y*p+m*$)*M,S=(F*p+D*$)*M):(X=(d*_+T*B)*w*M,I=(y*_+m*B)*w*M,S=(F*_+D*B)*w*M)}else if(/^xyz(?:-d65)?$/.test(n)){let f,g;i.startsWith("color(")?f=V(i):f=U(i),c.startsWith("color(")?g=V(c):g=U(c),H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=at([N,u,P])}else if(n==="xyz-d50"){let f,g;i.startsWith("color(")?f=V(i,!0):f=U(i,!0),c.startsWith("color(")?g=V(c,!0):g=U(c,!0),H.test(i)?f=C(e,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(e,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=oe([N,u,P,w])}else if(n==="hsl"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i);[f,g,d,y]=xt(u)}else{let u=U(i);[f,g,d,y]=xt(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c);[F,z,T,m]=xt(u)}else{let u=U(c);[F,z,T,m]=xt(u)}H.test(i)?[d,g,f,y]=C(o,[d,g,f,y]):r.test(i)&&([d,g,f,y]=C(i,[d,g,f,y])),H.test(c)?[T,z,F,m]=C(o,[T,z,F,m]):r.test(c)&&([T,z,F,m]=C(c,[T,z,F,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _=(f*p+F*$)%q,B,N;w===0?(B=g*p+z*$,N=d*p+T*$):(B=(g*D+z*k)/w,N=(d*D+T*k)/w),[X,I,S]=At(`hsl(${_} ${B}% ${N}%)`)}else if(n==="hwb"){let f,g,d,y;if(i.startsWith("color(")){let P=V(i);[f,g,d,y]=ht(P)}else{let P=U(i);[f,g,d,y]=ht(P)}let F,z,T,m;if(c.startsWith("color(")){let P=V(c);[F,z,T,m]=ht(P)}else{let P=U(c);[F,z,T,m]=ht(P)}H.test(i)?[,,f,y]=C(o,[null,null,f,y]):r.test(i)&&([,,f,y]=C(i,[null,null,f,y])),H.test(c)?[,,F,m]=C(o,[null,null,F,m]):r.test(c)&&([,,F,m]=C(c,[null,null,F,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _=(f*p+F*$)%q,B,N;w===0?(B=g*p+z*$,N=d*p+T*$):(B=(g*D+z*k)/w,N=(d*D+T*k)/w),[X,I,S]=At(`hwb(${_} ${B}% ${N}%)`)}else if(n==="lab"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i,!0);[f,g,d,y]=ct(u)}else{let u=U(i,!0);[f,g,d,y]=ct(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c,!0);[F,z,T,m]=ct(u)}else{let u=U(c,!0);[F,z,T,m]=ct(u)}H.test(i)?[f,,,y]=C(o,[f,null,null,y]):r.test(i)&&([f,,,y]=C(i,[f,null,null,y])),H.test(c)?[F,,,m]=C(o,[F,null,null,m]):r.test(c)&&([F,,,m]=C(c,[F,null,null,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _,B,N;w===0?(_=f*p+F*$,B=g*p+z*$,N=d*p+T*$):(_=(f*D+F*k)*w,B=(g*D+z*k)*w,N=(d*D+T*k)*w),[X,I,S]=ft(`lab(${_} ${B} ${N})`)}else if(n==="lch"){let f,g;if(i.startsWith("color(")){let Q=V(i,!0);f=gt(Q)}else{let Q=U(i,!0);f=gt(Q)}if(c.startsWith("color(")){let Q=V(c,!0);g=gt(Q)}else{let Q=U(c,!0);g=gt(Q)}H.test(i)?f=C(o,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(o,g):r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=ft(`lch(${N} ${u} ${P})`)}else if(n==="oklab"){let f,g,d,y;if(i.startsWith("color(")){let u=V(i);[f,g,d,y]=lt(u)}else{let u=U(i);[f,g,d,y]=lt(u)}let F,z,T,m;if(c.startsWith("color(")){let u=V(c);[F,z,T,m]=lt(u)}else{let u=U(c);[F,z,T,m]=lt(u)}H.test(i)?[f,,,y]=C(o,[f,null,null,y]):r.test(i)&&([f,,,y]=C(i,[f,null,null,y])),H.test(c)?[f,,,m]=C(o,[F,null,null,m]):r.test(c)&&([F,,,m]=C(c,[F,null,null,m])),[[f,g,d,y],[F,z,T,m]]=st([f,g,d,y],[F,z,T,m]);let D=y*p,k=m*$;w=D+k;let _,B,N;w===0?(_=f*p+F*$,B=g*p+z*$,N=d*p+T*$):(_=(f*D+F*k)*w,B=(g*D+z*k)*w,N=(d*D+T*k)*w),[X,I,S]=ft(`oklab(${_} ${B} ${N})`)}else if(n==="oklch"){let f,g;if(i.startsWith("color(")){let Q=V(i,!0);f=pt(Q)}else{let Q=U(i,!0);f=pt(Q)}if(c.startsWith("color(")){let Q=V(c,!0);g=pt(Q)}else{let Q=U(c,!0);g=pt(Q)}H.test(i)?f=C(o,f):r.test(i)&&(f=C(i,f)),H.test(c)?g=C(o,g):r.test(c)&&(g=C(c,g)),r.test(i)&&(f=C(i,f)),r.test(c)&&(g=C(c,g));let[[d,y,F,z],[T,m,D,k]]=st(f,g),_=z*p,B=k*$;w=_+B;let N,u,P;w===0?(N=d*p+T*$,u=y*p+m*$,P=F*p+D*$):(N=(d*_+T*B)*w,u=(y*_+m*B)*w,P=(F*_+D*B)*w),[X,I,S]=ft(`oklch(${N} ${u} ${P})`)}return[X,I,S,w*W]};var ze=(t,x={})=>{if(Y(t))t=t.trim();else throw new TypeError(`Expected String but got ${L(t)}.`);let{currentColor:a,format:o,key:e}=x,s,r,n,l;/^currentcolor$/i.test(t)?a?a.startsWith("color-mix")?[s,r,n,l]=Gt(a):a.startsWith("color(")?[s,r,n,l]=Ht(a):[s,r,n,l]=ft(a):(s=0,r=0,n=0,l=0):/^transparent$/i.test(t)?(s=0,r=0,n=0,l=0):t.startsWith("color-mix")?[s,r,n,l]=Gt(t):t.startsWith("color(")?[s,r,n,l]=Ht(t):[s,r,n,l]=ft(t);let h;switch(o){case"array":{e?h=[e,[s,r,n,l]]:h=[s,r,n,l];break}case"hex":{let i;/^transparent$/i.test(t)||isNaN(s)||isNaN(r)||isNaN(n)?i=null:i=_t([s,r,n]),e?h=[e,i]:h=i;break}case"hexAlpha":{let i;/^transparent$/i.test(t)?i="#00000000":isNaN(s)||isNaN(r)||isNaN(n)||isNaN(l)?i=null:i=_t([s,r,n,l]),e?h=[e,i]:h=i;break}default:{let i;isNaN(s)||isNaN(r)||isNaN(n)||isNaN(l)?i="":(s=Math.round(s),r=Math.round(r),n=Math.round(n),l===1?i=`rgb(${s}, ${r}, ${n})`:i=`rgba(${s}, ${r}, ${n}, ${l})`),e?h=[e,i]:h=i}}return h},Ce=(t,x={})=>{if(Y(t)){if(t=t.trim(),t.startsWith("color-mix("))throw new Error("color-mix() is not supported.")}else throw new TypeError(`Expected String but got ${L(t)}.`);let{d50:a}=x,o;return t.startsWith("color(")?o=V(t,a):o=U(t,a),o},_e={rgbToHex:_t,xyzD50ToLab:ct,xyzD50ToLch:gt,xyzToHex:se,xyzToHsl:xt,xyzToHwb:ht,xyzToOklab:lt,xyzToOklch:pt,xyzToRgb:at,xyzToXyzD50:re};export{_e as convert,Ce as parse,ze as resolve}; /*! * CSS color - Resolve, parse, convert CSS color. * @license MIT diff --git a/dist/esm/css-color.min.js.map b/dist/esm/css-color.min.js.map index 60c8c4a..828653f 100644 --- a/dist/esm/css-color.min.js.map +++ b/dist/esm/css-color.min.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../src/js/common.js", "../../src/js/color.js", "../../src/index.js"], - "sourcesContent": ["/**\r\n * common.js\r\n */\r\n\r\n/* constants */\r\nconst TYPE_FROM = 8;\r\nconst TYPE_TO = -1;\r\n\r\n/**\r\n * get type\r\n * @param {*} o - object to check\r\n * @returns {string} - type of object\r\n */\r\nexport const getType = o =>\r\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\r\n\r\n/**\r\n * is string\r\n * @param {*} o - object to check\r\n * @returns {boolean} - result\r\n */\r\nexport const isString = o => typeof o === 'string' || o instanceof String;\r\n", "/**\n * color.js\n *\n * Ref: CSS Color Module Level 4\n * \u00A717. Sample code for Color Conversions\n * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code\n */\n\nimport { getType, isString } from './common.js';\n\n/* constants */\nconst HALF = 0.5;\nconst DUO = 2;\nconst TRIA = 3;\nconst QUAT = 4;\nconst DEC = 10;\nconst HEX = 16;\nconst DEG = 360;\nconst DEG_INTERVAL = 60;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\nconst POW_SQUARE = 2;\nconst POW_CUBE = 3;\nconst POW_LINEAR = 2.4;\nconst LINEAR_COEF = 12.92;\nconst LINEAR_OFFSET = 0.055;\nconst LAB_L = 116;\nconst LAB_A = 500;\nconst LAB_B = 200;\nconst LAB_EPSILON = 216 / 24389;\nconst LAB_KAPPA = 24389 / 27;\n\n/* white point */\nconst D50 = [0.3457 / 0.3585, 1, (1 - 0.3457 - 0.3585) / 0.3585];\nconst MATRIX_D50_TO_D65 = [\n [0.9554734527042182, -0.023098536874261423, 0.0632593086610217],\n [-0.028369706963208136, 1.0099954580058226, 0.021041398966943008],\n [0.012314001688319899, -0.020507696433477912, 1.3303659366080753]\n];\nconst MATRIX_D65_TO_D50 = [\n [1.0479298208405488, 0.022946793341019088, -0.05019222954313557],\n [0.029627815688159344, 0.990434484573249, -0.01707382502938514],\n [-0.009243058152591178, 0.015055144896577895, 0.7518742899580008]\n];\n\n/* color space */\nconst MATRIX_RGB_TO_XYZ = [\n [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n [87098 / 409605, 175762 / 245763, 12673 / 175545],\n [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nconst MATRIX_XYZ_TO_RGB = [\n [12831 / 3959, -329 / 214, -1974 / 3959],\n [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n [705 / 12673, -2585 / 12673, 705 / 667]\n];\nconst MATRIX_XYZ_TO_LMS = [\n [0.8190224432164319, 0.3619062562801221, -0.12887378261216414],\n [0.0329836671980271, 0.9292868468965546, 0.03614466816999844],\n [0.048177199566046255, 0.26423952494422764, 0.6335478258136937]\n];\nconst MATRIX_LMS_TO_XYZ = [\n [1.2268798733741557, -0.5578149965554813, 0.28139105017721583],\n [-0.04057576262431372, 1.1122868293970594, -0.07171106666151701],\n [-0.07637294974672142, -0.4214933239627914, 1.5869240244272418]\n];\nconst MATRIX_OKLAB_TO_LMS = [\n [0.9999999984505196, 0.39633779217376774, 0.2158037580607588],\n [1.0000000088817607, -0.10556134232365633, -0.0638541747717059],\n [1.0000000546724108, -0.08948418209496574, -1.2914855378640917]\n];\nconst MATRIX_LMS_TO_OKLAB = [\n [0.2104542553, 0.7936177850, -0.0040720468],\n [1.9779984951, -2.4285922050, 0.4505937099],\n [0.0259040371, 0.7827717662, -0.8086757660]\n];\nconst MATRIX_P3_TO_XYZ = [\n [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n [0, 32229 / 714400, 5220557 / 5000800]\n];\nconst MATRIX_REC2020_TO_XYZ = [\n [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n [0, 19567812 / 697040785, 295819943 / 278816314]\n];\nconst MATRIX_A98_TO_XYZ = [\n [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nconst MATRIX_PROPHOTO_TO_XYZ_D50 = [\n [0.7977604896723027, 0.13518583717574031, 0.0313493495815248],\n [0.2880711282292934, 0.7118432178101014, 0.00008565396060525902],\n [0, 0, 0.8251046025104601]\n];\n\n/* regexp */\nconst NONE = 'none';\nconst REG_ANGLE = 'deg|g?rad|turn';\nconst REG_SRGB = 'srgb(?:-linear)?';\nconst REG_COLOR_SPACE_XYZ = 'xyz(?:-d(?:50|65))?';\nconst REG_COLOR_SPACE_COLOR_MIX =\n `(?:ok)?l(?:ab|ch)|h(?:sl|wb)|${REG_SRGB}|${REG_COLOR_SPACE_XYZ}`;\nconst REG_COLOR_SPACE_RGB =\n `(?:a98|prophoto)-rgb|display-p3|rec2020|${REG_SRGB}`;\nconst REG_NUM =\n '[+-]?(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?(?:0|[1-9]\\\\d*))?';\nconst REG_PCT = `${REG_NUM}%`;\nconst REG_HSL_HWB = `(?:${REG_NUM}(?:${REG_ANGLE})?|${NONE})(?:\\\\s+(?:${REG_PCT}|${NONE})){2}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_HSL_LV3 = `${REG_NUM}(?:${REG_ANGLE})?(?:\\\\s*,\\\\s*${REG_PCT}){2}(?:\\\\s*,\\\\s*(?:${REG_NUM}|${REG_PCT}))?`;\nconst REG_RGB = `(?:(?:${REG_NUM}|${NONE})(?:\\\\s+(?:${REG_NUM}|${NONE})){2}|(?:${REG_PCT}|${NONE})(?:\\\\s+(?:${REG_PCT}|${NONE})){2})(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_RGB_LV3 = `(?:${REG_NUM}(?:\\\\s*,\\\\s*${REG_NUM}){2}|${REG_PCT}(?:\\\\s*,\\\\s*${REG_PCT}){2})(?:\\\\s*,\\\\s*(?:${REG_NUM}|${REG_PCT}))?`;\nconst REG_LAB = `(?:${REG_NUM}|${REG_PCT}|${NONE})(?:\\\\s+(?:${REG_NUM}|${REG_PCT}|${NONE})){2}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_LCH = `(?:(?:${REG_NUM}|${REG_PCT}|${NONE})\\\\s+){2}(?:${REG_NUM}(?:${REG_ANGLE})?|${NONE})(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_COLOR_FUNC = `(?:${REG_COLOR_SPACE_RGB}|${REG_COLOR_SPACE_XYZ})(?:\\\\s+(?:${REG_NUM}|${REG_PCT}|${NONE})){3}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_COLOR_TYPE = `[a-z]+|#(?:[\\\\da-f]{3}|[\\\\da-f]{4}|[\\\\da-f]{6}|[\\\\da-f]{8})|hsla?\\\\(\\\\s*(?:${REG_HSL_HWB}|${REG_HSL_LV3})\\\\s*\\\\)|hwb\\\\(\\\\s*${REG_HSL_HWB}\\\\s*\\\\)|rgba?\\\\(\\\\s*(?:${REG_RGB}|${REG_RGB_LV3})\\\\s*\\\\)|(?:ok)?lab\\\\(\\\\s*${REG_LAB}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${REG_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${REG_COLOR_FUNC}\\\\s*\\\\)`;\nconst REG_COLOR_MIX_PART = `(?:${REG_COLOR_TYPE})(?:\\\\s+${REG_PCT})?`;\nconst REG_COLOR_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${REG_COLOR_SPACE_COLOR_MIX})\\\\s*,\\\\s*(${REG_COLOR_MIX_PART})\\\\s*,\\\\s*(${REG_COLOR_MIX_PART})\\\\s*\\\\)`;\nconst REG_CURRENT_COLOR = /^currentColor$/i;\n\n/* named colors */\nconst NAMED_COLORS = {\n aliceblue: [0xF0, 0xF8, 0xFF],\n antiquewhite: [0xFA, 0xEB, 0xD7],\n aqua: [0x00, 0xFF, 0xFF],\n aquamarine: [0x7F, 0xFF, 0xD4],\n azure: [0xF0, 0xFF, 0xFF],\n beige: [0xF5, 0xF5, 0xDC],\n bisque: [0xFF, 0xE4, 0xC4],\n black: [0x00, 0x00, 0x00],\n blanchedalmond: [0xFF, 0xEB, 0xCD],\n blue: [0x00, 0x00, 0xFF],\n blueviolet: [0x8A, 0x2B, 0xE2],\n brown: [0xA5, 0x2A, 0x2A],\n burlywood: [0xDE, 0xB8, 0x87],\n cadetblue: [0x5F, 0x9E, 0xA0],\n chartreuse: [0x7F, 0xFF, 0x00],\n chocolate: [0xD2, 0x69, 0x1E],\n coral: [0xFF, 0x7F, 0x50],\n cornflowerblue: [0x64, 0x95, 0xED],\n cornsilk: [0xFF, 0xF8, 0xDC],\n crimson: [0xDC, 0x14, 0x3C],\n cyan: [0x00, 0xFF, 0xFF],\n darkblue: [0x00, 0x00, 0x8B],\n darkcyan: [0x00, 0x8B, 0x8B],\n darkgoldenrod: [0xB8, 0x86, 0x0B],\n darkgray: [0xA9, 0xA9, 0xA9],\n darkgreen: [0x00, 0x64, 0x00],\n darkgrey: [0xA9, 0xA9, 0xA9],\n darkkhaki: [0xBD, 0xB7, 0x6B],\n darkmagenta: [0x8B, 0x00, 0x8B],\n darkolivegreen: [0x55, 0x6B, 0x2F],\n darkorange: [0xFF, 0x8C, 0x00],\n darkorchid: [0x99, 0x32, 0xCC],\n darkred: [0x8B, 0x00, 0x00],\n darksalmon: [0xE9, 0x96, 0x7A],\n darkseagreen: [0x8F, 0xBC, 0x8F],\n darkslateblue: [0x48, 0x3D, 0x8B],\n darkslategray: [0x2F, 0x4F, 0x4F],\n darkslategrey: [0x2F, 0x4F, 0x4F],\n darkturquoise: [0x00, 0xCE, 0xD1],\n darkviolet: [0x94, 0x00, 0xD3],\n deeppink: [0xFF, 0x14, 0x93],\n deepskyblue: [0x00, 0xBF, 0xFF],\n dimgray: [0x69, 0x69, 0x69],\n dimgrey: [0x69, 0x69, 0x69],\n dodgerblue: [0x1E, 0x90, 0xFF],\n firebrick: [0xB2, 0x22, 0x22],\n floralwhite: [0xFF, 0xFA, 0xF0],\n forestgreen: [0x22, 0x8B, 0x22],\n fuchsia: [0xFF, 0x00, 0xFF],\n gainsboro: [0xDC, 0xDC, 0xDC],\n ghostwhite: [0xF8, 0xF8, 0xFF],\n gold: [0xFF, 0xD7, 0x00],\n goldenrod: [0xDA, 0xA5, 0x20],\n gray: [0x80, 0x80, 0x80],\n green: [0x00, 0x80, 0x00],\n greenyellow: [0xAD, 0xFF, 0x2F],\n grey: [0x80, 0x80, 0x80],\n honeydew: [0xF0, 0xFF, 0xF0],\n hotpink: [0xFF, 0x69, 0xB4],\n indianred: [0xCD, 0x5C, 0x5C],\n indigo: [0x4B, 0x00, 0x82],\n ivory: [0xFF, 0xFF, 0xF0],\n khaki: [0xF0, 0xE6, 0x8C],\n lavender: [0xE6, 0xE6, 0xFA],\n lavenderblush: [0xFF, 0xF0, 0xF5],\n lawngreen: [0x7C, 0xFC, 0x00],\n lemonchiffon: [0xFF, 0xFA, 0xCD],\n lightblue: [0xAD, 0xD8, 0xE6],\n lightcoral: [0xF0, 0x80, 0x80],\n lightcyan: [0xE0, 0xFF, 0xFF],\n lightgoldenrodyellow: [0xFA, 0xFA, 0xD2],\n lightgray: [0xD3, 0xD3, 0xD3],\n lightgreen: [0x90, 0xEE, 0x90],\n lightgrey: [0xD3, 0xD3, 0xD3],\n lightpink: [0xFF, 0xB6, 0xC1],\n lightsalmon: [0xFF, 0xA0, 0x7A],\n lightseagreen: [0x20, 0xB2, 0xAA],\n lightskyblue: [0x87, 0xCE, 0xFA],\n lightslategray: [0x77, 0x88, 0x99],\n lightslategrey: [0x77, 0x88, 0x99],\n lightsteelblue: [0xB0, 0xC4, 0xDE],\n lightyellow: [0xFF, 0xFF, 0xE0],\n lime: [0x00, 0xFF, 0x00],\n limegreen: [0x32, 0xCD, 0x32],\n linen: [0xFA, 0xF0, 0xE6],\n magenta: [0xFF, 0x00, 0xFF],\n maroon: [0x80, 0x00, 0x00],\n mediumaquamarine: [0x66, 0xCD, 0xAA],\n mediumblue: [0x00, 0x00, 0xCD],\n mediumorchid: [0xBA, 0x55, 0xD3],\n mediumpurple: [0x93, 0x70, 0xDB],\n mediumseagreen: [0x3C, 0xB3, 0x71],\n mediumslateblue: [0x7B, 0x68, 0xEE],\n mediumspringgreen: [0x00, 0xFA, 0x9A],\n mediumturquoise: [0x48, 0xD1, 0xCC],\n mediumvioletred: [0xC7, 0x15, 0x85],\n midnightblue: [0x19, 0x19, 0x70],\n mintcream: [0xF5, 0xFF, 0xFA],\n mistyrose: [0xFF, 0xE4, 0xE1],\n moccasin: [0xFF, 0xE4, 0xB5],\n navajowhite: [0xFF, 0xDE, 0xAD],\n navy: [0x00, 0x00, 0x80],\n oldlace: [0xFD, 0xF5, 0xE6],\n olive: [0x80, 0x80, 0x00],\n olivedrab: [0x6B, 0x8E, 0x23],\n orange: [0xFF, 0xA5, 0x00],\n orangered: [0xFF, 0x45, 0x00],\n orchid: [0xDA, 0x70, 0xD6],\n palegoldenrod: [0xEE, 0xE8, 0xAA],\n palegreen: [0x98, 0xFB, 0x98],\n paleturquoise: [0xAF, 0xEE, 0xEE],\n palevioletred: [0xDB, 0x70, 0x93],\n papayawhip: [0xFF, 0xEF, 0xD5],\n peachpuff: [0xFF, 0xDA, 0xB9],\n peru: [0xCD, 0x85, 0x3F],\n pink: [0xFF, 0xC0, 0xCB],\n plum: [0xDD, 0xA0, 0xDD],\n powderblue: [0xB0, 0xE0, 0xE6],\n purple: [0x80, 0x00, 0x80],\n rebeccapurple: [0x66, 0x33, 0x99],\n red: [0xFF, 0x00, 0x00],\n rosybrown: [0xBC, 0x8F, 0x8F],\n royalblue: [0x41, 0x69, 0xE1],\n saddlebrown: [0x8B, 0x45, 0x13],\n salmon: [0xFA, 0x80, 0x72],\n sandybrown: [0xF4, 0xA4, 0x60],\n seagreen: [0x2E, 0x8B, 0x57],\n seashell: [0xFF, 0xF5, 0xEE],\n sienna: [0xA0, 0x52, 0x2D],\n silver: [0xC0, 0xC0, 0xC0],\n skyblue: [0x87, 0xCE, 0xEB],\n slateblue: [0x6A, 0x5A, 0xCD],\n slategray: [0x70, 0x80, 0x90],\n slategrey: [0x70, 0x80, 0x90],\n snow: [0xFF, 0xFA, 0xFA],\n springgreen: [0x00, 0xFF, 0x7F],\n steelblue: [0x46, 0x82, 0xB4],\n tan: [0xD2, 0xB4, 0x8C],\n teal: [0x00, 0x80, 0x80],\n thistle: [0xD8, 0xBF, 0xD8],\n tomato: [0xFF, 0x63, 0x47],\n turquoise: [0x40, 0xE0, 0xD0],\n violet: [0xEE, 0x82, 0xEE],\n wheat: [0xF5, 0xDE, 0xB3],\n white: [0xFF, 0xFF, 0xFF],\n whitesmoke: [0xF5, 0xF5, 0xF5],\n yellow: [0xFF, 0xFF, 0x00],\n yellowgreen: [0x9A, 0xCD, 0x32]\n};\n\n/**\n * validate color components\n * @param {Array} arr - array of color components\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - alpha\n * @param {number} [opt.minLength] - min length\n * @param {number} [opt.maxLength] - max length\n * @param {number} [opt.minRange] - min range\n * @param {number} [opt.maxRange] - max range\n * @param {boolean} [opt.validateRange] - validate range\n * @returns {Array} - arr;\n */\nexport const validateColorComponents = (arr, opt = {}) => {\n if (!Array.isArray(arr)) {\n throw new TypeError(`Expected Array but got ${getType(arr)}.`);\n }\n const {\n alpha = false,\n minLength = TRIA,\n maxLength = QUAT,\n minRange = 0,\n maxRange = 1,\n validateRange = true\n } = opt;\n if (typeof minLength !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(minLength)}.`);\n } else if (Number.isNaN(minLength)) {\n throw new TypeError(`${minLength} is not a number.`);\n }\n if (typeof maxLength !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(maxLength)}.`);\n } else if (Number.isNaN(maxLength)) {\n throw new TypeError(`${maxLength} is not a number.`);\n }\n if (typeof minRange !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(minRange)}.`);\n } else if (Number.isNaN(minRange)) {\n throw new TypeError(`${minRange} is not a number.`);\n }\n if (typeof maxRange !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(maxRange)}.`);\n } else if (Number.isNaN(maxRange)) {\n throw new TypeError(`${maxRange} is not a number.`);\n }\n const l = arr.length;\n if (l < minLength || l > maxLength) {\n let msg;\n if (minLength === maxLength) {\n msg = `Expected array length of ${maxLength} but got ${l}.`;\n } else {\n msg =\n `Expected array length of ${minLength} or ${maxLength} but got ${l}.`;\n }\n throw new Error(msg);\n }\n let i = 0;\n while (i < l) {\n const v = arr[i];\n if (typeof v !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(v)}.`);\n } else if (Number.isNaN(v)) {\n throw new TypeError(`${v} is not a number.`);\n } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n } else if (i === TRIA && (v < 0 || v > 1)) {\n throw new RangeError(`${v} is not between 0 and 1.`);\n }\n i++;\n }\n if (alpha && l === TRIA) {\n arr.push(1);\n }\n return arr;\n};\n\n/**\n * transform matrix\n * @param {Array.>} mtx - 3 * 3 matrix\n * @param {Array.} vct - vector\n * @returns {Array.} - [p1, p2, p3]\n */\nexport const transformMatrix = (mtx, vct) => {\n if (!Array.isArray(mtx)) {\n throw new TypeError(`Expected Array but got ${getType(mtx)}.`);\n } else if (mtx.length !== TRIA) {\n throw new Error(`Expected array length of 3 but got ${mtx.length}.`);\n } else {\n for (let i of mtx) {\n i = validateColorComponents(i, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n }\n const [\n [r1c1, r1c2, r1c3],\n [r2c1, r2c2, r2c3],\n [r3c1, r3c2, r3c3]\n ] = mtx;\n const [v1, v2, v3] = validateColorComponents(vct, {\n maxLength: TRIA,\n validateRange: false\n });\n const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n return [p1, p2, p3];\n};\n\n/**\n * re-insert missing color components\n * @param {string} value - value\n * @param {Array} color - array of color components [r, g, b, a]|[l, c, h, a]\n * @returns {Array} - [v1, v2, v3, v4]\n */\nexport const reInsertMissingColorComponents = (value, color = []) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const [v1, v2, v3, v4] = color;\n let v1m, v2m, v3m, v4m;\n if (/none/.test(value)) {\n const regRgb = new RegExp(`^rgba?\\\\(\\\\s*(${REG_RGB})\\\\s*\\\\)$`);\n const regColor = new RegExp(`^color\\\\(\\\\s*(${REG_COLOR_FUNC})\\\\s*\\\\)$`);\n const regHsl = new RegExp(`^h(?:sla?|wb)\\\\(\\\\s*(${REG_HSL_HWB})\\\\s*\\\\)$`);\n const regLab = new RegExp(`^(?:ok)?lab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n const regLch = new RegExp(`^(?:ok)?lch\\\\(\\\\s*(${REG_LCH})\\\\s*\\\\)$`);\n // rgb()\n if (regRgb.test(value)) {\n [v1m, v2m, v3m, v4m] =\n value.match(regRgb)[1].replace('/', ' ').split(/\\s+/);\n // color()\n } else if (regColor.test(value)) {\n [, v1m, v2m, v3m, v4m] =\n value.match(regColor)[1].replace('/', ' ').split(/\\s+/);\n // hsl()\n } else if (value.startsWith('hsl') && regHsl.test(value)) {\n [v3m, v2m, v1m, v4m] =\n value.match(regHsl)[1].replace('/', ' ').split(/\\s+/);\n // hwb()\n } else if (value.startsWith('hwb') && regHsl.test(value)) {\n [v3m, , , v4m] = value.match(regHsl)[1].replace('/', ' ').split(/\\s+/);\n // lab(), oklab()\n } else if (regLab.test(value)) {\n [v1m, , , v4m] = value.match(regLab)[1].replace('/', ' ').split(/\\s+/);\n // lch(), oklch()\n } else if (regLch.test(value)) {\n [v1m, v2m, v3m, v4m] =\n value.match(regLch)[1].replace('/', ' ').split(/\\s+/);\n }\n }\n return [\n v1m === NONE ? v1m : v1,\n v2m === NONE ? v2m : v2,\n v3m === NONE ? v3m : v3,\n v4m === NONE ? v4m : v4\n ];\n};\n\n/**\n * normalize color components\n * @param {Array} colorA - array of color components [v1, v2, v3, v4]\n * @param {Array} colorB - array of color components [v1, v2, v3, v4]\n * @returns {Array.>} - [colorA, colorB]\n */\nexport const normalizeColorComponents = (colorA, colorB) => {\n if (!Array.isArray(colorA)) {\n throw new TypeError(`Expected Array but got ${getType(colorA)}.`);\n } else if (colorA.length !== QUAT) {\n throw new Error(`Expected array length of 4 but got ${colorA.length}.`);\n }\n if (!Array.isArray(colorB)) {\n throw new TypeError(`Expected Array but got ${getType(colorB)}.`);\n } else if (colorB.length !== QUAT) {\n throw new Error(`Expected array length of 4 but got ${colorB.length}.`);\n }\n let i = 0;\n while (i < QUAT) {\n if (colorA[i] === NONE && colorB[i] === NONE) {\n colorA[i] = 0;\n colorB[i] = 0;\n } else if (colorA[i] === NONE) {\n colorA[i] = colorB[i];\n } else if (colorB[i] === NONE) {\n colorB[i] = colorA[i];\n }\n i++;\n }\n colorA = validateColorComponents(colorA, {\n minLength: QUAT,\n validateRange: false\n });\n colorB = validateColorComponents(colorB, {\n minLength: QUAT,\n validateRange: false\n });\n return [colorA, colorB];\n};\n\n/**\n * number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string\n */\nexport const numberToHexString = value => {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(value)}.`);\n } else if (Number.isNaN(value)) {\n throw new TypeError(`${value} is not a number.`);\n } else {\n value = Math.round(value);\n if (value < 0 || value > MAX_RGB) {\n throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n }\n }\n let hex = value.toString(HEX);\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n return hex;\n};\n\n/**\n * angle to deg\n * @param {string} angle - angle\n * @returns {number} - deg 0..360\n */\nexport const angleToDeg = angle => {\n if (isString(angle)) {\n angle = angle.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(angle)}.`);\n }\n const GRAD = DEG / 400;\n const RAD = DEG / (Math.PI * DUO);\n const reg = new RegExp(`^(${REG_NUM})(${REG_ANGLE})?$`);\n if (!reg.test(angle)) {\n throw new Error(`Invalid property value: ${angle}`);\n }\n const [, val, unit] = angle.match(reg);\n const value = val.startsWith('.') ? `0${val}` : val;\n let deg;\n switch (unit) {\n case 'grad':\n deg = parseFloat(value) * GRAD;\n break;\n case 'rad':\n deg = parseFloat(value) * RAD;\n break;\n case 'turn':\n deg = parseFloat(value) * DEG;\n break;\n default:\n deg = parseFloat(value);\n }\n deg %= DEG;\n if (deg < 0) {\n deg += DEG;\n }\n return deg;\n};\n\n/**\n * convert rgb to linear rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..255\n * @returns {Array.} - [r, g, b] r|g|b: 0..1\n */\nexport const convertRgbToLinearRgb = rgb => {\n const [rr, gg, bb] = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n });\n let r = rr / MAX_RGB;\n let g = gg / MAX_RGB;\n let b = bb / MAX_RGB;\n const COND_POW = 0.04045;\n if (r > COND_POW) {\n r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n r /= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n g /= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n b /= LINEAR_COEF;\n }\n return [r, g, b];\n};\n\n/**\n * convert rgb to xyz\n * @param {Array.} rgb - [r, g, b, [a]] r|g|b: 0..255 a: 0..1\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertRgbToXyz = rgb => {\n const [r, g, b, a] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const [rr, gg, bb] = convertRgbToLinearRgb([r, g, b]);\n const [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [rr, gg, bb]);\n return [x, y, z, a];\n};\n\n/**\n * convert rgb to xyz-d50\n * @param {Array.} rgb - [r, g, b, [a]] r|g|b: 0..255 a: 0..1\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertRgbToXyzD50 = rgb => {\n const [xx, yy, zz, a] = convertRgbToXyz(rgb);\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz]);\n return [x, y, z, a];\n};\n\n/**\n * convert rgb to hex color\n * @param {Array.} rgb - [r, g, b, a] r|g|b: 0..255 a: 0..1\n * @returns {string} - hex color;\n */\nexport const convertRgbToHex = rgb => {\n const [r, g, b, a] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(a * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert linear rgb to rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..1\n * @returns {Array.} - [r, g, b] r|g|b: 0..255\n */\nexport const convertLinearRgbToRgb = rgb => {\n let [r, g, b] = validateColorComponents(rgb, {\n maxLength: TRIA\n });\n const COND_POW = 809 / 258400;\n if (r > COND_POW) {\n r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n r *= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n g *= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n b *= LINEAR_COEF;\n }\n return [\n Math.round(r * MAX_RGB),\n Math.round(g * MAX_RGB),\n Math.round(b * MAX_RGB)\n ];\n};\n\n/**\n * convert linear rgb to hex color\n * @param {Array.} rgb - [r, g, b, a] r|g|b|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertLinearRgbToHex = rgb => {\n let [r, g, b, a] = validateColorComponents(rgb, {\n minLength: QUAT\n });\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(a * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert xyz to hex color\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertXyzToHex = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n a\n ]);\n return hex;\n};\n\n/**\n * convert xyz D50 to hex color\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertXyzD50ToHex = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, xyzD65);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n a\n ]);\n return hex;\n};\n\n/**\n * convert xyz to rgb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertXyzToRgb = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n validateRange: false\n });\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n [r, g, b] = convertLinearRgbToRgb([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1)\n ]);\n return [r, g, b, a];\n};\n\n/**\n * convert xyz to xyz-d50\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertXyzToXyzD50 = xyz => {\n const [xx, yy, zz, a] = validateColorComponents(xyz, {\n validateRange: false\n });\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz]);\n return [x, y, z, a];\n};\n\n/**\n * convert xyz to hsl\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [h, s, l, a] h: 0..360 s|l: 0..100 a: 0..1\n */\nexport const convertXyzToHsl = xyz => {\n const [rr, gg, bb, a] = convertXyzToRgb(xyz);\n const r = rr / MAX_RGB;\n const g = gg / MAX_RGB;\n const b = bb / MAX_RGB;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const l = (max + min) * HALF * MAX_PCT;\n let h, s;\n if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n h = NONE;\n s = NONE;\n } else {\n s = d / (1 - Math.abs(max + min - 1)) * MAX_PCT;\n if (s === 0) {\n h = NONE;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d;\n break;\n case g:\n h = (b - r) / d + DUO;\n break;\n case b:\n default:\n h = (r - g) / d + QUAT;\n break;\n }\n h = h * DEG_INTERVAL % DEG;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [h, s, l, a];\n};\n\n/**\n * convert xyz to hwb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [h, w, b, a] h: 0..360 w|b: 0..100 a: 0..1\n */\nexport const convertXyzToHwb = xyz => {\n const [r, g, b, a] = convertXyzToRgb(xyz);\n const w = Math.min(r, g, b) / MAX_RGB;\n const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n let h;\n if (w + bk === 1) {\n h = NONE;\n } else {\n [h] = convertXyzToHsl(xyz);\n }\n return [\n h,\n w * MAX_PCT,\n bk * MAX_PCT,\n a\n ];\n};\n\n/**\n * convert xyz to oklab\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, a, b, aa] l|aa: 0..1 a|b: -0.4..0.4\n */\nexport const convertXyzToOklab = xyz => {\n const [x, y, z, aa] = validateColorComponents(xyz, {\n validateRange: false\n });\n const lms = transformMatrix(MATRIX_XYZ_TO_LMS, [x, y, z]);\n const xyzLms = lms.map(c => Math.cbrt(c));\n let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms);\n l = Math.min(Math.max(l, 0), 1);\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n a = NONE;\n b = NONE;\n }\n return [l, a, b, aa];\n};\n\n/**\n * convert xyz to oklch\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, c, h, aa] l|aa: 0..1 c: 0..0.4 h: 0..360\n */\nexport const convertXyzToOklch = xyz => {\n const [l, a, b, aa] = convertXyzToOklab(xyz);\n let c, h;\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQUARE) + Math.pow(b, POW_SQUARE)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert xyz D50 to rgb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertXyzD50ToRgb = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n const [r, g, b] = convertXyzToRgb(xyzD65);\n return [r, g, b, a];\n};\n\n/**\n * convert xyz-d50 to lab\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, a, b, aa] l: 0..100 a|b: -125..125 aa: 0..1\n */\nexport const convertXyzD50ToLab = xyz => {\n const [x, y, z, aa] = validateColorComponents(xyz, {\n validateRange: false\n });\n const xyzD50 = [x, y, z].map((val, i) => val / D50[i]);\n const [f0, f1, f2] = xyzD50.map(val => val > LAB_EPSILON\n ? Math.cbrt(val)\n : (val * LAB_KAPPA + HEX) / LAB_L\n );\n const l = Math.min(Math.max((LAB_L * f1) - HEX, 0), MAX_PCT);\n let a, b;\n if (l === 0 || l === MAX_PCT) {\n a = NONE;\n b = NONE;\n } else {\n a = (f0 - f1) * LAB_A;\n b = (f1 - f2) * LAB_B;\n }\n return [l, a, b, aa];\n};\n\n/**\n * convert xyz-d50 to lch\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, c, h, a] l: 0..100 c: 0..150 h: 0..360 a: 0..1\n */\nexport const convertXyzD50ToLch = xyz => {\n const [l, a, b, aa] = convertXyzD50ToLab(xyz);\n let c, h;\n if (l === 0 || l === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQUARE) + Math.pow(b, POW_SQUARE)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert hex color to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertHexToRgb = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n if (!(/^#[\\da-f]{6}$/.test(value) || /^#[\\da-f]{3}$/.test(value) ||\n /^#[\\da-f]{8}$/.test(value) || /^#[\\da-f]{4}$/.test(value))) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const arr = [];\n if (/^#[\\da-f]{6}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n 1\n );\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n 1\n );\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n const [, r, g, b, a] =\n value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n parseInt(a, HEX) / MAX_RGB\n );\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, a] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n parseInt(`${a}${a}`, HEX) / MAX_RGB\n );\n }\n return arr;\n};\n\n/**\n * convert hex color to linear rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b|a: 0..1\n */\nexport const convertHexToLinearRgb = value => {\n const [rr, gg, bb, a] = convertHexToRgb(value);\n const [r, g, b] = convertRgbToLinearRgb([rr, gg, bb]);\n return [r, g, b, a];\n};\n\n/**\n * convert hex color to xyz\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertHexToXyz = value => {\n const [r, g, b, a] = convertHexToLinearRgb(value);\n const [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [r, g, b]);\n return [x, y, z, a];\n};\n\n/**\n * parse alpha\n * @param {?string} [a] - alpha value\n * @returns {number} - a: 0..1\n */\nexport const parseAlpha = a => {\n if (isString(a)) {\n a = a.trim();\n if (!a) {\n a = 1;\n } else if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n if (Number.isNaN(a)) {\n throw new TypeError(`${a} is not a number.`);\n }\n if (a < 0 || a > 1) {\n a = Math.min(Math.max(a, 0), 1);\n }\n }\n } else {\n a = 1;\n }\n return a;\n};\n\n/**\n * parse rgb()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseRgb = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg =\n new RegExp(`^rgba?\\\\(\\\\s*(${REG_RGB}|${REG_RGB_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [r, g, b, a] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (r === NONE) {\n r = 0;\n } else {\n if (r.startsWith('.')) {\n r = `0${r}`;\n }\n if (r.endsWith('%')) {\n r = parseFloat(r) * MAX_RGB / MAX_PCT;\n } else {\n r = parseFloat(r);\n }\n }\n if (g === NONE) {\n g = 0;\n } else {\n if (g.startsWith('.')) {\n g = `0${g}`;\n }\n if (g.endsWith('%')) {\n g = parseFloat(g) * MAX_RGB / MAX_PCT;\n } else {\n g = parseFloat(g);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.startsWith('.')) {\n b = `0${b}`;\n }\n if (b.endsWith('%')) {\n b = parseFloat(b) * MAX_RGB / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n a = parseAlpha(a);\n return [\n Math.min(Math.max(r, 0), MAX_RGB),\n Math.min(Math.max(g, 0), MAX_RGB),\n Math.min(Math.max(b, 0), MAX_RGB),\n a\n ];\n};\n\n/**\n * parse hsl()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseHsl = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg =\n new RegExp(`^hsla?\\\\(\\\\s*(${REG_HSL_HWB}|${REG_HSL_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [h, s, l, a] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n if (s === NONE) {\n s = 0;\n } else {\n if (s.startsWith('.')) {\n s = `0${s}`;\n }\n s = Math.min(Math.max(parseFloat(s), 0), MAX_PCT);\n }\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n l = Math.min(Math.max(parseFloat(l), 0), MAX_PCT);\n }\n a = parseAlpha(a);\n let max, min;\n if (l < MAX_PCT * HALF) {\n max = (l + l * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n min = (l - l * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n } else {\n max = (l + (MAX_PCT - l) * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n min = (l - (MAX_PCT - l) * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n }\n const factor = (max - min) / DEG_INTERVAL;\n let r, g, b;\n // < 60\n if (h >= 0 && h < DEG_INTERVAL) {\n r = max;\n g = h * factor + min;\n b = min;\n // < 120\n } else if (h < DEG_INTERVAL * DUO) {\n r = (DEG_INTERVAL * DUO - h) * factor + min;\n g = max;\n b = min;\n // < 180\n } else if (h < DEG * HALF) {\n r = min;\n g = max;\n b = (h - DEG_INTERVAL * DUO) * factor + min;\n // < 240\n } else if (h < DEG_INTERVAL * QUAT) {\n r = min;\n g = (DEG_INTERVAL * QUAT - h) * factor + min;\n b = max;\n // < 300\n } else if (h < DEG - DEG_INTERVAL) {\n r = (h - (DEG_INTERVAL * QUAT)) * factor + min;\n g = min;\n b = max;\n // < 360\n } else if (h < DEG) {\n r = max;\n g = min;\n b = (DEG - h) * factor + min;\n }\n return [\n Math.min(Math.max(r, 0), MAX_RGB),\n Math.min(Math.max(g, 0), MAX_RGB),\n Math.min(Math.max(b, 0), MAX_RGB),\n a\n ];\n};\n\n/**\n * parse hwb()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseHwb = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^hwb\\\\(\\\\s*(${REG_HSL_HWB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [h, w, b, a] = val.replace('/', ' ').split(/\\s+/);\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n if (w === NONE) {\n w = 0;\n } else {\n if (w.startsWith('.')) {\n w = `0${w}`;\n }\n w = Math.min(Math.max(parseFloat(w), 0), MAX_PCT) / MAX_PCT;\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.startsWith('.')) {\n b = `0${b}`;\n }\n b = Math.min(Math.max(parseFloat(b), 0), MAX_PCT) / MAX_PCT;\n }\n a = parseAlpha(a);\n const arr = [];\n if (w + b >= 1) {\n const v = (w / (w + b)) * MAX_RGB;\n arr.push(v, v, v, a);\n } else {\n const [rr, gg, bb] = parseHsl(`hsl(${h} 100% 50%)`);\n const factor = (1 - w - b) / MAX_RGB;\n arr.push(\n (rr * factor + w) * MAX_RGB,\n (gg * factor + w) * MAX_RGB,\n (bb * factor + w) * MAX_RGB,\n a\n );\n }\n return arr;\n};\n\n/**\n + parse lab()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseLab = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^lab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 1.25;\n const COND_POW = 8;\n const [, val] = value.match(reg);\n let [l, a, b, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l);\n if (l > MAX_PCT) {\n l = MAX_PCT;\n }\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n aa = parseAlpha(aa);\n const fl = (l + HEX) / LAB_L;\n const fa = (a / LAB_A + fl);\n const fb = (fl - b / LAB_B);\n const powFl = Math.pow(fl, POW_CUBE);\n const powFa = Math.pow(fa, POW_CUBE);\n const powFb = Math.pow(fb, POW_CUBE);\n const xyz = [\n powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n l > COND_POW ? powFl : l / LAB_KAPPA,\n powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n ];\n const [x, y, z] = xyz.map((val, i) => val * D50[i]);\n return [x, y, z, aa];\n};\n\n/**\n + parse lch()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseLch = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^lch\\\\(\\\\s*(${REG_LCH})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 1.5;\n const [, val] = value.match(reg);\n let [l, c, h, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n l = parseFloat(l);\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n c = 0;\n } else {\n if (c.startsWith('.')) {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT;\n } else {\n c = parseFloat(c);\n }\n }\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n aa = parseAlpha(aa);\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const [x, y, z] = parseLab(`lab(${l} ${a} ${b})`);\n return [x, y, z, aa];\n};\n\n/**\n * parse oklab()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseOklab = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^oklab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(reg);\n let [l, a, b, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n aa = parseAlpha(aa);\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(c => Math.pow(c, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms);\n return [x, y, z, aa];\n};\n\n/**\n * parse oklch()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseOklch = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^oklch\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(reg);\n let [l, c, h, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n c = 0;\n } else {\n if (c.startsWith('.')) {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT / MAX_PCT;\n } else {\n c = parseFloat(c);\n }\n if (c < 0) {\n c = 0;\n }\n }\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n aa = parseAlpha(aa);\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(cl => Math.pow(cl, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms);\n return [x, y, z, aa];\n};\n\n/**\n * parse color()\n * @param {string} value - color value\n * @param {boolean} d50 - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseColorFunc = (value, d50 = false) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^color\\\\(\\\\s*(${REG_COLOR_FUNC})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n const [cs, v1, v2, v3, v4] = val.replace('/', ' ').split(/\\s+/);\n let r, g, b;\n if (v1 === NONE) {\n r = 0;\n } else {\n let rr;\n if (v1.startsWith('.')) {\n rr = `0${v1}`;\n } else {\n rr = v1;\n }\n r = rr.endsWith('%') ? parseFloat(rr) / MAX_PCT : parseFloat(rr);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n let gg;\n if (v2.startsWith('.')) {\n gg = `0${v2}`;\n } else {\n gg = v2;\n }\n g = gg.endsWith('%') ? parseFloat(gg) / MAX_PCT : parseFloat(gg);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n let bb;\n if (v3.startsWith('.')) {\n bb = `0${v3}`;\n } else {\n bb = v3;\n }\n b = bb.endsWith('%') ? parseFloat(bb) / MAX_PCT : parseFloat(bb);\n }\n const a = parseAlpha(v4);\n let x, y, z;\n // srgb\n if (cs === 'srgb') {\n [x, y, z] = convertRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // srgb-linear\n } else if (cs === 'srgb-linear') {\n [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // display-p3\n } else if (cs === 'display-p3') {\n const linearRgb = convertRgbToLinearRgb([\n r * MAX_RGB,\n g * MAX_RGB,\n b * MAX_RGB\n ]);\n [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // rec2020\n } else if (cs === 'rec2020') {\n const ALPHA = 1.09929682680944;\n const BETA = 0.018053968510807;\n const REC_COEF = 0.45;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c < BETA * REC_COEF * DEC) {\n cl = c / (REC_COEF * DEC);\n } else {\n cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // a98-rgb\n } else if (cs === 'a98-rgb') {\n const POW_A98 = 563 / 256;\n const rgb = [r, g, b].map(c => {\n const cl = Math.pow(c, POW_A98);\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // prophoto-rgb\n } else if (cs === 'prophoto-rgb') {\n const POW_PROPHOTO = 1.8;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c > 1 / (HEX * DUO)) {\n cl = Math.pow(c, POW_PROPHOTO);\n } else {\n cl = c / HEX;\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // xyz, xyz-d50, xyz-d65\n } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n [x, y, z] = [r, g, b];\n if (cs === 'xyz-d50') {\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n } else if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n }\n return [x, y, z, a];\n};\n\n/**\n * parse color value\n * @param {string} value - color value\n * @param {boolean} [d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseColorValue = (value, d50 = false) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n let x, y, z, a;\n // complement currentcolor as a missing color\n if (REG_CURRENT_COLOR.test(value)) {\n x = 0;\n y = 0;\n z = 0;\n a = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n const [r, g, b] = NAMED_COLORS[value];\n a = 1;\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n } else if (value === 'transparent') {\n x = 0;\n y = 0;\n z = 0;\n a = 0;\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n // hex-color\n } else if (value.startsWith('#')) {\n let hex;\n if (/^#[\\da-f]{6}$/.test(value)) {\n hex = value;\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n hex = `#${r}${r}${g}${g}${b}${b}`;\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n hex = value;\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, aa] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n hex = `#${r}${r}${g}${g}${b}${b}${aa}${aa}`;\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n [x, y, z, a] = convertHexToXyz(hex);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // lab()\n } else if (value.startsWith('lab')) {\n [x, y, z, a] = parseLab(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // lch()\n } else if (value.startsWith('lch')) {\n [x, y, z, a] = parseLch(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // oklab()\n } else if (value.startsWith('oklab')) {\n [x, y, z, a] = parseOklab(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // oklch()\n } else if (value.startsWith('oklch')) {\n [x, y, z, a] = parseOklch(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n } else {\n let r, g, b;\n // rgb()\n if (value.startsWith('rgb')) {\n [r, g, b, a] = parseRgb(value);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [r, g, b, a] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [r, g, b, a] = parseHwb(value);\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n }\n return [x, y, z, a];\n};\n\n/**\n * convert color value to linear rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @returns {Array.} - [r, g, b, a] r|g|b|a: 0..1\n */\nexport const convertColorValueToLinearRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { alpha } = opt;\n let x, y, z, a;\n if (value.startsWith('color(')) {\n [x, y, z, a] = parseColorFunc(value);\n } else {\n [x, y, z, a] = parseColorValue(value);\n }\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n r = Math.min(Math.max(r, 0), 1);\n g = Math.min(Math.max(g, 0), 1);\n b = Math.min(Math.max(b, 0), 1);\n const rgb = [r, g, b];\n if (alpha) {\n rgb.push(a);\n } else {\n rgb.push(1);\n }\n return rgb;\n};\n\n/**\n * convert color value to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertColorValueToRgb = value => {\n let [r, g, b, a] = convertColorValueToLinearRgb(value, {\n alpha: true\n });\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n return [r, g, b, a];\n};\n\n/**\n * resolve color value\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorValue = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n let r, g, b, a;\n // complement currentcolor as a missing color\n if (REG_CURRENT_COLOR.test(value)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n // named-color\n } else if (/^[a-z]+$/i.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n [r, g, b] = NAMED_COLORS[value];\n a = 1;\n } else if (value === 'transparent') {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n // hex-color\n } else if (value.startsWith('#')) {\n [r, g, b, a] = convertHexToRgb(value);\n // lab(), lch()\n } else if (/^l(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('lab')) {\n [x, y, z, a] = parseLab(value);\n } else {\n [x, y, z, a] = parseLch(value);\n }\n [r, g, b, a] = convertXyzD50ToRgb([x, y, z, a]);\n // oklab(), oklch()\n } else if (/^okl(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('oklab')) {\n [x, y, z, a] = parseOklab(value);\n } else {\n [x, y, z, a] = parseOklch(value);\n }\n [r, g, b, a] = convertXyzToRgb([x, y, z, a]);\n // rgb()\n } else if (value.startsWith('rgb')) {\n [r, g, b, a] = parseRgb(value);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [r, g, b, a] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [r, g, b, a] = parseHwb(value);\n }\n let res;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n res = [];\n } else {\n res = [\n Math.round(r),\n Math.round(g),\n Math.round(b),\n a\n ];\n }\n return res;\n};\n\n/**\n * resolve color()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorFunc = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^color\\\\(\\\\s*${REG_COLOR_FUNC}\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [x, y, z, a] = parseColorFunc(value);\n const [r, g, b] = convertXyzToRgb([x, y, z]);\n return [r, g, b, a];\n};\n\n/**\n * resolve color-mix()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorMix = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const regColorMix = new RegExp(`^${REG_COLOR_MIX_CAPT}$`, 'i');\n if (!regColorMix.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const CC_LCH = 'lch(none none none / none)';\n const CC_RGB = 'rgb(none none none / none)';\n const regColorPart =\n new RegExp(`^(${REG_COLOR_TYPE})(?:\\\\s+(${REG_PCT}))?$`, 'i');\n const regMissingColor = new RegExp(NONE);\n const [, colorSpace, colorPartA, colorPartB] = value.match(regColorMix);\n const [, colorA, pctA] = colorPartA.match(regColorPart);\n const [, colorB, pctB] = colorPartB.match(regColorPart);\n // normalize percentages and set multipler\n let pA, pB, m;\n if (pctA && pctB) {\n const p1 = parseFloat(pctA) / MAX_PCT;\n const p2 = parseFloat(pctB) / MAX_PCT;\n if (p1 < 0 || p1 > 1) {\n throw new RangeError(`${pctA} is not between 0% and 100%.`);\n }\n if (p2 < 0 || p2 > 1) {\n throw new RangeError(`${pctB} is not between 0% and 100%.`);\n }\n const factor = p1 + p2;\n if (factor === 0) {\n throw new Error(`Invalid property value: ${value}`);\n }\n pA = p1 / factor;\n pB = p2 / factor;\n m = factor < 1 ? factor : 1;\n } else {\n if (pctA) {\n pA = parseFloat(pctA) / MAX_PCT;\n if (pA < 0 || pA > 1) {\n throw new RangeError(`${pctA} is not between 0% and 100%.`);\n }\n pB = 1 - pA;\n } else if (pctB) {\n pB = parseFloat(pctB) / MAX_PCT;\n if (pB < 0 || pB > 1) {\n throw new RangeError(`${pctB} is not between 0% and 100%.`);\n }\n pA = 1 - pB;\n } else {\n pA = HALF;\n pB = HALF;\n }\n m = 1;\n }\n let r, g, b, a;\n // in srgb\n if (colorSpace === 'srgb') {\n let rgbA = convertColorValueToRgb(colorA, {\n alpha: true\n });\n let rgbB = convertColorValueToRgb(colorB, {\n alpha: true\n });\n if (REG_CURRENT_COLOR.test(colorA)) {\n rgbA = reInsertMissingColorComponents(CC_RGB, rgbA);\n } else if (regMissingColor.test(colorA)) {\n rgbA = reInsertMissingColorComponents(colorA, rgbA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n rgbB = reInsertMissingColorComponents(CC_RGB, rgbB);\n } else if (regMissingColor.test(colorB)) {\n rgbB = reInsertMissingColorComponents(colorB, rgbB);\n }\n const [\n [rA, gA, bA, aA],\n [rB, gB, bB, aB]\n ] = normalizeColorComponents(rgbA, rgbB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n if (a === 0) {\n r = rA * pA + rB * pB;\n g = gA * pA + gB * pB;\n b = bA * pA + bB * pB;\n } else {\n r = (rA * factorA + rB * factorB) / a;\n g = (gA * factorA + gB * factorB) / a;\n b = (bA * factorA + bB * factorB) / a;\n }\n // in srgb-linear\n } else if (colorSpace === 'srgb-linear') {\n let rgbA = convertColorValueToLinearRgb(colorA, {\n alpha: true\n });\n let rgbB = convertColorValueToLinearRgb(colorB, {\n alpha: true\n });\n if (REG_CURRENT_COLOR.test(colorA)) {\n rgbA = reInsertMissingColorComponents(CC_RGB, rgbA);\n } else if (regMissingColor.test(colorA)) {\n rgbA = reInsertMissingColorComponents(colorA, rgbA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n rgbB = reInsertMissingColorComponents(CC_RGB, rgbB);\n } else if (regMissingColor.test(colorB)) {\n rgbB = reInsertMissingColorComponents(colorB, rgbB);\n }\n const [\n [rA, gA, bA, aA],\n [rB, gB, bB, aB]\n ] = normalizeColorComponents(rgbA, rgbB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n if (a === 0) {\n r = (rA * pA + rB * pB) * MAX_RGB;\n g = (gA * pA + gB * pB) * MAX_RGB;\n b = (bA * pA + bB * pB) * MAX_RGB;\n } else {\n r = (rA * factorA + rB * factorB) * a * MAX_RGB;\n g = (gA * factorA + gB * factorB) * a * MAX_RGB;\n b = (bA * factorA + bB * factorB) * a * MAX_RGB;\n }\n // in xyz, xyz-d65\n } else if (/^xyz(?:-d65)?$/.test(colorSpace)) {\n let xyzA, xyzB;\n if (colorA.startsWith('color(')) {\n xyzA = parseColorFunc(colorA);\n } else {\n xyzA = parseColorValue(colorA);\n }\n if (colorB.startsWith('color(')) {\n xyzB = parseColorFunc(colorB);\n } else {\n xyzB = parseColorValue(colorB);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n xyzA = reInsertMissingColorComponents(CC_RGB, xyzA);\n } else if (regMissingColor.test(colorA)) {\n xyzA = reInsertMissingColorComponents(colorA, xyzA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n xyzB = reInsertMissingColorComponents(CC_RGB, xyzB);\n } else if (regMissingColor.test(colorB)) {\n xyzB = reInsertMissingColorComponents(colorB, xyzB);\n }\n const [\n [xA, yA, zA, aA],\n [xB, yB, zB, aB]\n ] = normalizeColorComponents(xyzA, xyzB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let x, y, z;\n if (a === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) * a;\n y = (yA * factorA + yB * factorB) * a;\n z = (zA * factorA + zB * factorB) * a;\n }\n [r, g, b] = convertXyzToRgb([x, y, z]);\n // in xyz-d50\n } else if (colorSpace === 'xyz-d50') {\n let xyzA, xyzB;\n if (colorA.startsWith('color(')) {\n xyzA = parseColorFunc(colorA, true);\n } else {\n xyzA = parseColorValue(colorA, true);\n }\n if (colorB.startsWith('color(')) {\n xyzB = parseColorFunc(colorB, true);\n } else {\n xyzB = parseColorValue(colorB, true);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n xyzA = reInsertMissingColorComponents(CC_RGB, xyzA);\n } else if (regMissingColor.test(colorA)) {\n xyzA = reInsertMissingColorComponents(colorA, xyzA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n xyzB = reInsertMissingColorComponents(CC_RGB, xyzB);\n } else if (regMissingColor.test(colorB)) {\n xyzB = reInsertMissingColorComponents(colorB, xyzB);\n }\n const [\n [xA, yA, zA, aA],\n [xB, yB, zB, aB]\n ] = normalizeColorComponents(xyzA, xyzB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let x, y, z;\n if (a === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) * a;\n y = (yA * factorA + yB * factorB) * a;\n z = (zA * factorA + zB * factorB) * a;\n }\n [r, g, b] = convertXyzD50ToRgb([x, y, z, a]);\n // in hsl\n } else if (colorSpace === 'hsl') {\n let hA, sA, lA, aA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [hA, sA, lA, aA] = convertXyzToHsl(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [hA, sA, lA, aA] = convertXyzToHsl(xyz);\n }\n let hB, sB, lB, aB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [hB, sB, lB, aB] = convertXyzToHsl(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [hB, sB, lB, aB] = convertXyzToHsl(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA, sA, hA, aA] =\n reInsertMissingColorComponents(CC_LCH, [lA, sA, hA, aA]);\n } else if (regMissingColor.test(colorA)) {\n [lA, sA, hA, aA] =\n reInsertMissingColorComponents(colorA, [lA, sA, hA, aA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lB, sB, hB, aB] =\n reInsertMissingColorComponents(CC_LCH, [lB, sB, hB, aB]);\n } else if (regMissingColor.test(colorB)) {\n [lB, sB, hB, aB] =\n reInsertMissingColorComponents(colorB, [lB, sB, hB, aB]);\n }\n [\n [hA, sA, lA, aA],\n [hB, sB, lB, aB]\n ] = normalizeColorComponents([hA, sA, lA, aA], [hB, sB, lB, aB]);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let s, l;\n if (a === 0) {\n s = sA * pA + sB * pB;\n l = lA * pA + lB * pB;\n } else {\n s = (sA * factorA + sB * factorB) / a;\n l = (lA * factorA + lB * factorB) / a;\n }\n [r, g, b] = convertColorValueToRgb(`hsl(${h} ${s}% ${l}%)`);\n // in hwb\n } else if (colorSpace === 'hwb') {\n let hA, wA, bA, aA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [hA, wA, bA, aA] = convertXyzToHwb(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [hA, wA, bA, aA] = convertXyzToHwb(xyz);\n }\n let hB, wB, bB, aB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [hB, wB, bB, aB] = convertXyzToHwb(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [hB, wB, bB, aB] = convertXyzToHwb(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [,, hA, aA] =\n reInsertMissingColorComponents(CC_LCH, [null, null, hA, aA]);\n } else if (regMissingColor.test(colorA)) {\n [,, hA, aA] =\n reInsertMissingColorComponents(colorA, [null, null, hA, aA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [,, hB, aB] =\n reInsertMissingColorComponents(CC_LCH, [null, null, hB, aB]);\n } else if (regMissingColor.test(colorB)) {\n [,, hB, aB] =\n reInsertMissingColorComponents(colorB, [null, null, hB, aB]);\n }\n [\n [hA, wA, bA, aA],\n [hB, wB, bB, aB]\n ] = normalizeColorComponents([hA, wA, bA, aA], [hB, wB, bB, aB]);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let w, bk;\n if (a === 0) {\n w = wA * pA + wB * pB;\n bk = bA * pA + bB * pB;\n } else {\n w = (wA * factorA + wB * factorB) / a;\n bk = (bA * factorA + bB * factorB) / a;\n }\n const rgb = convertColorValueToRgb(`hwb(${h} ${w}% ${bk}%)`);\n [r, g, b] = rgb;\n // in lab\n } else if (colorSpace === 'lab') {\n let lA, aA, bA, aaA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n [lA, aA, bA, aaA] = convertXyzD50ToLab(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n [lA, aA, bA, aaA] = convertXyzD50ToLab(xyz);\n }\n let lB, aB, bB, aaB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n [lB, aB, bB, aaB] = convertXyzD50ToLab(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n [lB, aB, bB, aaB] = convertXyzD50ToLab(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(CC_LCH, [lA, null, null, aaA]);\n } else if (regMissingColor.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(colorA, [lA, null, null, aaA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(CC_LCH, [lB, null, null, aaB]);\n } else if (regMissingColor.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(colorB, [lB, null, null, aaB]);\n }\n [\n [lA, aA, bA, aaA],\n [lB, aB, bB, aaB]\n ] = normalizeColorComponents([lA, aA, bA, aaA], [lB, aB, bB, aaB]);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, aX, bY;\n if (a === 0) {\n l = lA * pA + lB * pB;\n aX = aA * pA + aB * pB;\n bY = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n aX = (aA * factorA + aB * factorB) * a;\n bY = (bA * factorA + bB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`lab(${l} ${aX} ${bY})`);\n // in lch\n } else if (colorSpace === 'lch') {\n let lchA, lchB;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n lchA = convertXyzD50ToLch(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n lchA = convertXyzD50ToLch(xyz);\n }\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n lchB = convertXyzD50ToLch(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n lchB = convertXyzD50ToLch(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n lchA = reInsertMissingColorComponents(CC_LCH, lchA);\n } else if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n lchB = reInsertMissingColorComponents(CC_LCH, lchB);\n } else if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n const [\n [lA, cA, hA, aA],\n [lB, cB, hB, aB]\n ] = normalizeColorComponents(lchA, lchB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let l, c, h;\n if (a === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n h = hA * pA + hB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n c = (cA * factorA + cB * factorB) * a;\n h = (hA * factorA + hB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`lch(${l} ${c} ${h})`);\n // in oklab\n } else if (colorSpace === 'oklab') {\n let lA, aA, bA, aaA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [lA, aA, bA, aaA] = convertXyzToOklab(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [lA, aA, bA, aaA] = convertXyzToOklab(xyz);\n }\n let lB, aB, bB, aaB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [lB, aB, bB, aaB] = convertXyzToOklab(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [lB, aB, bB, aaB] = convertXyzToOklab(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(CC_LCH, [lA, null, null, aaA]);\n } else if (regMissingColor.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(colorA, [lA, null, null, aaA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lA,,, aaB] =\n reInsertMissingColorComponents(CC_LCH, [lB, null, null, aaB]);\n } else if (regMissingColor.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(colorB, [lB, null, null, aaB]);\n }\n [\n [lA, aA, bA, aaA],\n [lB, aB, bB, aaB]\n ] = normalizeColorComponents([lA, aA, bA, aaA], [lB, aB, bB, aaB]);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, aX, bY;\n if (a === 0) {\n l = lA * pA + lB * pB;\n aX = aA * pA + aB * pB;\n bY = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n aX = (aA * factorA + aB * factorB) * a;\n bY = (bA * factorA + bB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`oklab(${l} ${aX} ${bY})`);\n // in oklch\n } else if (colorSpace === 'oklch') {\n let lchA, lchB;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n lchA = convertXyzToOklch(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n lchA = convertXyzToOklch(xyz);\n }\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n lchB = convertXyzToOklch(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n lchB = convertXyzToOklch(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n lchA = reInsertMissingColorComponents(CC_LCH, lchA);\n } else if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n lchB = reInsertMissingColorComponents(CC_LCH, lchB);\n } else if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n const [\n [lA, cA, hA, aaA],\n [lB, cB, hB, aaB]\n ] = normalizeColorComponents(lchA, lchB);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, c, h;\n if (a === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n h = hA * pA + hB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n c = (cA * factorA + cB * factorB) * a;\n h = (hA * factorA + hB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`oklch(${l} ${c} ${h})`);\n }\n return [r, g, b, a * m];\n};\n", "/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nimport {\n convertRgbToHex, convertXyzD50ToLab, convertXyzD50ToLch, convertXyzToHex,\n convertXyzToHsl, convertXyzToHwb, convertXyzToOklab, convertXyzToOklch,\n convertXyzToRgb, convertXyzToXyzD50, parseColorFunc, parseColorValue,\n resolveColorFunc, resolveColorMix, resolveColorValue\n} from './js/color.js';\nimport { getType, isString } from './js/common.js';\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - color to use for `currentcolor` keyword\n * @param {string} [opt.format] - `rgb`(default), `array`, `hex` or `hexAlpha`\n * - `hexAlpha` is a hex color notation with alpha channel, i.e. #rrggbbaa\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array} - rgba?(), [r, g, b, a], #rrggbb(aa)?, null\n * - if `key` is specified, [key, rgba?()|[r, g, b, a]|#rrggbb(aa)?|null]\n * - in `rgb`, `r`, `g`, `b` values are rounded,\n * resolves as empty string if any of `r`, `g`, `b`, `a` is not a number\n * - in `array`, values are floating point,\n * if any of `r`, `g`, `b`, `a` is not a number then they stay as is,\n * e.g. [undefined, undefined, undefined, undefined]\n * - in `hex`, `transparent` resolves as `null`,\n * also resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n * - in `hexAlpha`, resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(color)}.`);\n }\n const { currentColor, format, key } = opt;\n let r, g, b, a;\n if (/^currentcolor$/i.test(color)) {\n if (currentColor) {\n if (currentColor.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(currentColor);\n } else if (currentColor.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(currentColor);\n } else {\n [r, g, b, a] = resolveColorValue(currentColor);\n }\n } else {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n } else if (/^transparent$/i.test(color)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n } else if (color.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(color);\n } else if (color.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(color);\n } else {\n [r, g, b, a] = resolveColorValue(color);\n }\n let res;\n switch (format) {\n case 'array': {\n if (key) {\n res = [key, [r, g, b, a]];\n } else {\n res = [r, g, b, a];\n }\n break;\n }\n case 'hex': {\n let hex;\n if (/^transparent$/i.test(color) || isNaN(r) || isNaN(g) || isNaN(b)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (/^transparent$/i.test(color)) {\n hex = '#00000000';\n } else if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, a]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n default: {\n let rgb;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n rgb = '';\n } else {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n if (a === 1) {\n rgb = `rgb(${r}, ${g}, ${b})`;\n } else {\n rgb = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n }\n if (key) {\n res = [key, rgb];\n } else {\n res = rgb;\n }\n }\n }\n return res;\n};\n\n/**\n * parse CSS color\n * @param {string} value - color value\n * - color-mix() and system colors are not supported\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z: around 0..1 a: 0..1\n */\nexport const parse = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (value.startsWith('color-mix(')) {\n throw new Error('color-mix() is not supported.');\n }\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { d50 } = opt;\n let xyz;\n if (value.startsWith('color(')) {\n xyz = parseColorFunc(value, d50);\n } else {\n xyz = parseColorValue(value, d50);\n }\n return xyz;\n};\n\n/**\n * convert\n * @property {Function} xyzD50ToHex - convert xyz d50 to hex\n * @property {Function} xyzD50ToLab - convert xyz d50 to lab\n * @property {Function} xyzD50ToLch - convert xyz d50 to lch\n * @property {Function} xyzD50ToRgb - convert xyz d50 to rgb\n * @property {Function} xyzToHex - convert xyz to hex\n * @property {Function} xyzToHsl - convert xyz to hsl\n * @property {Function} xyzToHwb - convert xyz to hwb\n * @property {Function} xyzToOklab - convert xyz to oklab\n * @property {Function} xyzToOklch - convert xyz to oklch\n * @property {Function} xyzToRgb - convert xyz to rgb\n * @property {Function} xyzToXyzD50 - convert xyz to xyz d50\n */\nexport const convert = {\n xyzD50ToLab: convertXyzD50ToLab,\n xyzD50ToLch: convertXyzD50ToLch,\n xyzToHex: convertXyzToHex,\n xyzToHsl: convertXyzToHsl,\n xyzToHwb: convertXyzToHwb,\n xyzToOklab: convertXyzToOklab,\n xyzToOklch: convertXyzToOklch,\n xyzToRgb: convertXyzToRgb,\n xyzToXyzD50: convertXyzToXyzD50\n};\n"], - "mappings": "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", + "sourcesContent": ["/**\r\n * common.js\r\n */\r\n\r\n/* constants */\r\nconst TYPE_FROM = 8;\r\nconst TYPE_TO = -1;\r\n\r\n/**\r\n * get type\r\n * @param {*} o - object to check\r\n * @returns {string} - type of object\r\n */\r\nexport const getType = o =>\r\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\r\n\r\n/**\r\n * is string\r\n * @param {*} o - object to check\r\n * @returns {boolean} - result\r\n */\r\nexport const isString = o => typeof o === 'string' || o instanceof String;\r\n", "/**\n * color.js\n *\n * Ref: CSS Color Module Level 4\n * \u00A717. Sample code for Color Conversions\n * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code\n */\n\nimport { getType, isString } from './common.js';\n\n/* constants */\nconst HALF = 0.5;\nconst DUO = 2;\nconst TRIA = 3;\nconst QUAT = 4;\nconst DEC = 10;\nconst HEX = 16;\nconst DEG = 360;\nconst DEG_INTERVAL = 60;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\nconst POW_SQUARE = 2;\nconst POW_CUBE = 3;\nconst POW_LINEAR = 2.4;\nconst LINEAR_COEF = 12.92;\nconst LINEAR_OFFSET = 0.055;\nconst LAB_L = 116;\nconst LAB_A = 500;\nconst LAB_B = 200;\nconst LAB_EPSILON = 216 / 24389;\nconst LAB_KAPPA = 24389 / 27;\n\n/* white point */\nconst D50 = [0.3457 / 0.3585, 1, (1 - 0.3457 - 0.3585) / 0.3585];\nconst MATRIX_D50_TO_D65 = [\n [0.9554734527042182, -0.023098536874261423, 0.0632593086610217],\n [-0.028369706963208136, 1.0099954580058226, 0.021041398966943008],\n [0.012314001688319899, -0.020507696433477912, 1.3303659366080753]\n];\nconst MATRIX_D65_TO_D50 = [\n [1.0479298208405488, 0.022946793341019088, -0.05019222954313557],\n [0.029627815688159344, 0.990434484573249, -0.01707382502938514],\n [-0.009243058152591178, 0.015055144896577895, 0.7518742899580008]\n];\n\n/* color space */\nconst MATRIX_RGB_TO_XYZ = [\n [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n [87098 / 409605, 175762 / 245763, 12673 / 175545],\n [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nconst MATRIX_XYZ_TO_RGB = [\n [12831 / 3959, -329 / 214, -1974 / 3959],\n [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n [705 / 12673, -2585 / 12673, 705 / 667]\n];\nconst MATRIX_XYZ_TO_LMS = [\n [0.8190224432164319, 0.3619062562801221, -0.12887378261216414],\n [0.0329836671980271, 0.9292868468965546, 0.03614466816999844],\n [0.048177199566046255, 0.26423952494422764, 0.6335478258136937]\n];\nconst MATRIX_LMS_TO_XYZ = [\n [1.2268798733741557, -0.5578149965554813, 0.28139105017721583],\n [-0.04057576262431372, 1.1122868293970594, -0.07171106666151701],\n [-0.07637294974672142, -0.4214933239627914, 1.5869240244272418]\n];\nconst MATRIX_OKLAB_TO_LMS = [\n [0.9999999984505196, 0.39633779217376774, 0.2158037580607588],\n [1.0000000088817607, -0.10556134232365633, -0.0638541747717059],\n [1.0000000546724108, -0.08948418209496574, -1.2914855378640917]\n];\nconst MATRIX_LMS_TO_OKLAB = [\n [0.2104542553, 0.7936177850, -0.0040720468],\n [1.9779984951, -2.4285922050, 0.4505937099],\n [0.0259040371, 0.7827717662, -0.8086757660]\n];\nconst MATRIX_P3_TO_XYZ = [\n [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n [0, 32229 / 714400, 5220557 / 5000800]\n];\nconst MATRIX_REC2020_TO_XYZ = [\n [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n [0, 19567812 / 697040785, 295819943 / 278816314]\n];\nconst MATRIX_A98_TO_XYZ = [\n [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nconst MATRIX_PROPHOTO_TO_XYZ_D50 = [\n [0.7977604896723027, 0.13518583717574031, 0.0313493495815248],\n [0.2880711282292934, 0.7118432178101014, 0.00008565396060525902],\n [0, 0, 0.8251046025104601]\n];\n\n/* regexp */\nconst NONE = 'none';\nconst REG_ANGLE = 'deg|g?rad|turn';\nconst REG_SRGB = 'srgb(?:-linear)?';\nconst REG_COLOR_SPACE_XYZ = 'xyz(?:-d(?:50|65))?';\nconst REG_COLOR_SPACE_COLOR_MIX =\n `(?:ok)?l(?:ab|ch)|h(?:sl|wb)|${REG_SRGB}|${REG_COLOR_SPACE_XYZ}`;\nconst REG_COLOR_SPACE_RGB =\n `(?:a98|prophoto)-rgb|display-p3|rec2020|${REG_SRGB}`;\nconst REG_NUM =\n '[+-]?(?:(?:0|[1-9]\\\\d*)(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?(?:0|[1-9]\\\\d*))?';\nconst REG_PCT = `${REG_NUM}%`;\nconst REG_HSL_HWB = `(?:${REG_NUM}(?:${REG_ANGLE})?|${NONE})(?:\\\\s+(?:${REG_PCT}|${NONE})){2}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_HSL_LV3 = `${REG_NUM}(?:${REG_ANGLE})?(?:\\\\s*,\\\\s*${REG_PCT}){2}(?:\\\\s*,\\\\s*(?:${REG_NUM}|${REG_PCT}))?`;\nconst REG_RGB = `(?:(?:${REG_NUM}|${NONE})(?:\\\\s+(?:${REG_NUM}|${NONE})){2}|(?:${REG_PCT}|${NONE})(?:\\\\s+(?:${REG_PCT}|${NONE})){2})(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_RGB_LV3 = `(?:${REG_NUM}(?:\\\\s*,\\\\s*${REG_NUM}){2}|${REG_PCT}(?:\\\\s*,\\\\s*${REG_PCT}){2})(?:\\\\s*,\\\\s*(?:${REG_NUM}|${REG_PCT}))?`;\nconst REG_LAB = `(?:${REG_NUM}|${REG_PCT}|${NONE})(?:\\\\s+(?:${REG_NUM}|${REG_PCT}|${NONE})){2}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_LCH = `(?:(?:${REG_NUM}|${REG_PCT}|${NONE})\\\\s+){2}(?:${REG_NUM}(?:${REG_ANGLE})?|${NONE})(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_COLOR_FUNC = `(?:${REG_COLOR_SPACE_RGB}|${REG_COLOR_SPACE_XYZ})(?:\\\\s+(?:${REG_NUM}|${REG_PCT}|${NONE})){3}(?:\\\\s*\\\\/\\\\s*(?:${REG_NUM}|${REG_PCT}|${NONE}))?`;\nconst REG_COLOR_TYPE = `[a-z]+|#(?:[\\\\da-f]{3}|[\\\\da-f]{4}|[\\\\da-f]{6}|[\\\\da-f]{8})|hsla?\\\\(\\\\s*(?:${REG_HSL_HWB}|${REG_HSL_LV3})\\\\s*\\\\)|hwb\\\\(\\\\s*${REG_HSL_HWB}\\\\s*\\\\)|rgba?\\\\(\\\\s*(?:${REG_RGB}|${REG_RGB_LV3})\\\\s*\\\\)|(?:ok)?lab\\\\(\\\\s*${REG_LAB}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${REG_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${REG_COLOR_FUNC}\\\\s*\\\\)`;\nconst REG_COLOR_MIX_PART = `(?:${REG_COLOR_TYPE})(?:\\\\s+${REG_PCT})?`;\nconst REG_COLOR_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${REG_COLOR_SPACE_COLOR_MIX})\\\\s*,\\\\s*(${REG_COLOR_MIX_PART})\\\\s*,\\\\s*(${REG_COLOR_MIX_PART})\\\\s*\\\\)`;\nconst REG_CURRENT_COLOR = /^currentColor$/i;\n\n/* named colors */\nconst NAMED_COLORS = {\n aliceblue: [0xF0, 0xF8, 0xFF],\n antiquewhite: [0xFA, 0xEB, 0xD7],\n aqua: [0x00, 0xFF, 0xFF],\n aquamarine: [0x7F, 0xFF, 0xD4],\n azure: [0xF0, 0xFF, 0xFF],\n beige: [0xF5, 0xF5, 0xDC],\n bisque: [0xFF, 0xE4, 0xC4],\n black: [0x00, 0x00, 0x00],\n blanchedalmond: [0xFF, 0xEB, 0xCD],\n blue: [0x00, 0x00, 0xFF],\n blueviolet: [0x8A, 0x2B, 0xE2],\n brown: [0xA5, 0x2A, 0x2A],\n burlywood: [0xDE, 0xB8, 0x87],\n cadetblue: [0x5F, 0x9E, 0xA0],\n chartreuse: [0x7F, 0xFF, 0x00],\n chocolate: [0xD2, 0x69, 0x1E],\n coral: [0xFF, 0x7F, 0x50],\n cornflowerblue: [0x64, 0x95, 0xED],\n cornsilk: [0xFF, 0xF8, 0xDC],\n crimson: [0xDC, 0x14, 0x3C],\n cyan: [0x00, 0xFF, 0xFF],\n darkblue: [0x00, 0x00, 0x8B],\n darkcyan: [0x00, 0x8B, 0x8B],\n darkgoldenrod: [0xB8, 0x86, 0x0B],\n darkgray: [0xA9, 0xA9, 0xA9],\n darkgreen: [0x00, 0x64, 0x00],\n darkgrey: [0xA9, 0xA9, 0xA9],\n darkkhaki: [0xBD, 0xB7, 0x6B],\n darkmagenta: [0x8B, 0x00, 0x8B],\n darkolivegreen: [0x55, 0x6B, 0x2F],\n darkorange: [0xFF, 0x8C, 0x00],\n darkorchid: [0x99, 0x32, 0xCC],\n darkred: [0x8B, 0x00, 0x00],\n darksalmon: [0xE9, 0x96, 0x7A],\n darkseagreen: [0x8F, 0xBC, 0x8F],\n darkslateblue: [0x48, 0x3D, 0x8B],\n darkslategray: [0x2F, 0x4F, 0x4F],\n darkslategrey: [0x2F, 0x4F, 0x4F],\n darkturquoise: [0x00, 0xCE, 0xD1],\n darkviolet: [0x94, 0x00, 0xD3],\n deeppink: [0xFF, 0x14, 0x93],\n deepskyblue: [0x00, 0xBF, 0xFF],\n dimgray: [0x69, 0x69, 0x69],\n dimgrey: [0x69, 0x69, 0x69],\n dodgerblue: [0x1E, 0x90, 0xFF],\n firebrick: [0xB2, 0x22, 0x22],\n floralwhite: [0xFF, 0xFA, 0xF0],\n forestgreen: [0x22, 0x8B, 0x22],\n fuchsia: [0xFF, 0x00, 0xFF],\n gainsboro: [0xDC, 0xDC, 0xDC],\n ghostwhite: [0xF8, 0xF8, 0xFF],\n gold: [0xFF, 0xD7, 0x00],\n goldenrod: [0xDA, 0xA5, 0x20],\n gray: [0x80, 0x80, 0x80],\n green: [0x00, 0x80, 0x00],\n greenyellow: [0xAD, 0xFF, 0x2F],\n grey: [0x80, 0x80, 0x80],\n honeydew: [0xF0, 0xFF, 0xF0],\n hotpink: [0xFF, 0x69, 0xB4],\n indianred: [0xCD, 0x5C, 0x5C],\n indigo: [0x4B, 0x00, 0x82],\n ivory: [0xFF, 0xFF, 0xF0],\n khaki: [0xF0, 0xE6, 0x8C],\n lavender: [0xE6, 0xE6, 0xFA],\n lavenderblush: [0xFF, 0xF0, 0xF5],\n lawngreen: [0x7C, 0xFC, 0x00],\n lemonchiffon: [0xFF, 0xFA, 0xCD],\n lightblue: [0xAD, 0xD8, 0xE6],\n lightcoral: [0xF0, 0x80, 0x80],\n lightcyan: [0xE0, 0xFF, 0xFF],\n lightgoldenrodyellow: [0xFA, 0xFA, 0xD2],\n lightgray: [0xD3, 0xD3, 0xD3],\n lightgreen: [0x90, 0xEE, 0x90],\n lightgrey: [0xD3, 0xD3, 0xD3],\n lightpink: [0xFF, 0xB6, 0xC1],\n lightsalmon: [0xFF, 0xA0, 0x7A],\n lightseagreen: [0x20, 0xB2, 0xAA],\n lightskyblue: [0x87, 0xCE, 0xFA],\n lightslategray: [0x77, 0x88, 0x99],\n lightslategrey: [0x77, 0x88, 0x99],\n lightsteelblue: [0xB0, 0xC4, 0xDE],\n lightyellow: [0xFF, 0xFF, 0xE0],\n lime: [0x00, 0xFF, 0x00],\n limegreen: [0x32, 0xCD, 0x32],\n linen: [0xFA, 0xF0, 0xE6],\n magenta: [0xFF, 0x00, 0xFF],\n maroon: [0x80, 0x00, 0x00],\n mediumaquamarine: [0x66, 0xCD, 0xAA],\n mediumblue: [0x00, 0x00, 0xCD],\n mediumorchid: [0xBA, 0x55, 0xD3],\n mediumpurple: [0x93, 0x70, 0xDB],\n mediumseagreen: [0x3C, 0xB3, 0x71],\n mediumslateblue: [0x7B, 0x68, 0xEE],\n mediumspringgreen: [0x00, 0xFA, 0x9A],\n mediumturquoise: [0x48, 0xD1, 0xCC],\n mediumvioletred: [0xC7, 0x15, 0x85],\n midnightblue: [0x19, 0x19, 0x70],\n mintcream: [0xF5, 0xFF, 0xFA],\n mistyrose: [0xFF, 0xE4, 0xE1],\n moccasin: [0xFF, 0xE4, 0xB5],\n navajowhite: [0xFF, 0xDE, 0xAD],\n navy: [0x00, 0x00, 0x80],\n oldlace: [0xFD, 0xF5, 0xE6],\n olive: [0x80, 0x80, 0x00],\n olivedrab: [0x6B, 0x8E, 0x23],\n orange: [0xFF, 0xA5, 0x00],\n orangered: [0xFF, 0x45, 0x00],\n orchid: [0xDA, 0x70, 0xD6],\n palegoldenrod: [0xEE, 0xE8, 0xAA],\n palegreen: [0x98, 0xFB, 0x98],\n paleturquoise: [0xAF, 0xEE, 0xEE],\n palevioletred: [0xDB, 0x70, 0x93],\n papayawhip: [0xFF, 0xEF, 0xD5],\n peachpuff: [0xFF, 0xDA, 0xB9],\n peru: [0xCD, 0x85, 0x3F],\n pink: [0xFF, 0xC0, 0xCB],\n plum: [0xDD, 0xA0, 0xDD],\n powderblue: [0xB0, 0xE0, 0xE6],\n purple: [0x80, 0x00, 0x80],\n rebeccapurple: [0x66, 0x33, 0x99],\n red: [0xFF, 0x00, 0x00],\n rosybrown: [0xBC, 0x8F, 0x8F],\n royalblue: [0x41, 0x69, 0xE1],\n saddlebrown: [0x8B, 0x45, 0x13],\n salmon: [0xFA, 0x80, 0x72],\n sandybrown: [0xF4, 0xA4, 0x60],\n seagreen: [0x2E, 0x8B, 0x57],\n seashell: [0xFF, 0xF5, 0xEE],\n sienna: [0xA0, 0x52, 0x2D],\n silver: [0xC0, 0xC0, 0xC0],\n skyblue: [0x87, 0xCE, 0xEB],\n slateblue: [0x6A, 0x5A, 0xCD],\n slategray: [0x70, 0x80, 0x90],\n slategrey: [0x70, 0x80, 0x90],\n snow: [0xFF, 0xFA, 0xFA],\n springgreen: [0x00, 0xFF, 0x7F],\n steelblue: [0x46, 0x82, 0xB4],\n tan: [0xD2, 0xB4, 0x8C],\n teal: [0x00, 0x80, 0x80],\n thistle: [0xD8, 0xBF, 0xD8],\n tomato: [0xFF, 0x63, 0x47],\n turquoise: [0x40, 0xE0, 0xD0],\n violet: [0xEE, 0x82, 0xEE],\n wheat: [0xF5, 0xDE, 0xB3],\n white: [0xFF, 0xFF, 0xFF],\n whitesmoke: [0xF5, 0xF5, 0xF5],\n yellow: [0xFF, 0xFF, 0x00],\n yellowgreen: [0x9A, 0xCD, 0x32]\n};\n\n/**\n * validate color components\n * @param {Array} arr - array of color components\n * @param {object} [opt] - options\n * @param {boolean} [opt.alpha] - alpha\n * @param {number} [opt.minLength] - min length\n * @param {number} [opt.maxLength] - max length\n * @param {number} [opt.minRange] - min range\n * @param {number} [opt.maxRange] - max range\n * @param {boolean} [opt.validateRange] - validate range\n * @returns {Array} - arr;\n */\nexport const validateColorComponents = (arr, opt = {}) => {\n if (!Array.isArray(arr)) {\n throw new TypeError(`Expected Array but got ${getType(arr)}.`);\n }\n const {\n alpha = false,\n minLength = TRIA,\n maxLength = QUAT,\n minRange = 0,\n maxRange = 1,\n validateRange = true\n } = opt;\n if (typeof minLength !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(minLength)}.`);\n } else if (Number.isNaN(minLength)) {\n throw new TypeError(`${minLength} is not a number.`);\n }\n if (typeof maxLength !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(maxLength)}.`);\n } else if (Number.isNaN(maxLength)) {\n throw new TypeError(`${maxLength} is not a number.`);\n }\n if (typeof minRange !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(minRange)}.`);\n } else if (Number.isNaN(minRange)) {\n throw new TypeError(`${minRange} is not a number.`);\n }\n if (typeof maxRange !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(maxRange)}.`);\n } else if (Number.isNaN(maxRange)) {\n throw new TypeError(`${maxRange} is not a number.`);\n }\n const l = arr.length;\n if (l < minLength || l > maxLength) {\n let msg;\n if (minLength === maxLength) {\n msg = `Expected array length of ${maxLength} but got ${l}.`;\n } else {\n msg =\n `Expected array length of ${minLength} or ${maxLength} but got ${l}.`;\n }\n throw new Error(msg);\n }\n let i = 0;\n while (i < l) {\n const v = arr[i];\n if (typeof v !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(v)}.`);\n } else if (Number.isNaN(v)) {\n throw new TypeError(`${v} is not a number.`);\n } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n } else if (i === TRIA && (v < 0 || v > 1)) {\n throw new RangeError(`${v} is not between 0 and 1.`);\n }\n i++;\n }\n if (alpha && l === TRIA) {\n arr.push(1);\n }\n return arr;\n};\n\n/**\n * transform matrix\n * @param {Array.>} mtx - 3 * 3 matrix\n * @param {Array.} vct - vector\n * @returns {Array.} - [p1, p2, p3]\n */\nexport const transformMatrix = (mtx, vct) => {\n if (!Array.isArray(mtx)) {\n throw new TypeError(`Expected Array but got ${getType(mtx)}.`);\n } else if (mtx.length !== TRIA) {\n throw new Error(`Expected array length of 3 but got ${mtx.length}.`);\n } else {\n for (let i of mtx) {\n i = validateColorComponents(i, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n }\n const [\n [r1c1, r1c2, r1c3],\n [r2c1, r2c2, r2c3],\n [r3c1, r3c2, r3c3]\n ] = mtx;\n const [v1, v2, v3] = validateColorComponents(vct, {\n maxLength: TRIA,\n validateRange: false\n });\n const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n return [p1, p2, p3];\n};\n\n/**\n * re-insert missing color components\n * @param {string} value - value\n * @param {Array} color - array of color components [r, g, b, a]|[l, c, h, a]\n * @returns {Array} - [v1, v2, v3, v4]\n */\nexport const reInsertMissingColorComponents = (value, color = []) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const [v1, v2, v3, v4] = color;\n let v1m, v2m, v3m, v4m;\n if (/none/.test(value)) {\n const regRgb = new RegExp(`^rgba?\\\\(\\\\s*(${REG_RGB})\\\\s*\\\\)$`);\n const regColor = new RegExp(`^color\\\\(\\\\s*(${REG_COLOR_FUNC})\\\\s*\\\\)$`);\n const regHsl = new RegExp(`^h(?:sla?|wb)\\\\(\\\\s*(${REG_HSL_HWB})\\\\s*\\\\)$`);\n const regLab = new RegExp(`^(?:ok)?lab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n const regLch = new RegExp(`^(?:ok)?lch\\\\(\\\\s*(${REG_LCH})\\\\s*\\\\)$`);\n // rgb()\n if (regRgb.test(value)) {\n [v1m, v2m, v3m, v4m] =\n value.match(regRgb)[1].replace('/', ' ').split(/\\s+/);\n // color()\n } else if (regColor.test(value)) {\n [, v1m, v2m, v3m, v4m] =\n value.match(regColor)[1].replace('/', ' ').split(/\\s+/);\n // hsl()\n } else if (value.startsWith('hsl') && regHsl.test(value)) {\n [v3m, v2m, v1m, v4m] =\n value.match(regHsl)[1].replace('/', ' ').split(/\\s+/);\n // hwb()\n } else if (value.startsWith('hwb') && regHsl.test(value)) {\n [v3m, , , v4m] = value.match(regHsl)[1].replace('/', ' ').split(/\\s+/);\n // lab(), oklab()\n } else if (regLab.test(value)) {\n [v1m, , , v4m] = value.match(regLab)[1].replace('/', ' ').split(/\\s+/);\n // lch(), oklch()\n } else if (regLch.test(value)) {\n [v1m, v2m, v3m, v4m] =\n value.match(regLch)[1].replace('/', ' ').split(/\\s+/);\n }\n }\n return [\n v1m === NONE ? v1m : v1,\n v2m === NONE ? v2m : v2,\n v3m === NONE ? v3m : v3,\n v4m === NONE ? v4m : v4\n ];\n};\n\n/**\n * normalize color components\n * @param {Array} colorA - array of color components [v1, v2, v3, v4]\n * @param {Array} colorB - array of color components [v1, v2, v3, v4]\n * @returns {Array.>} - [colorA, colorB]\n */\nexport const normalizeColorComponents = (colorA, colorB) => {\n if (!Array.isArray(colorA)) {\n throw new TypeError(`Expected Array but got ${getType(colorA)}.`);\n } else if (colorA.length !== QUAT) {\n throw new Error(`Expected array length of 4 but got ${colorA.length}.`);\n }\n if (!Array.isArray(colorB)) {\n throw new TypeError(`Expected Array but got ${getType(colorB)}.`);\n } else if (colorB.length !== QUAT) {\n throw new Error(`Expected array length of 4 but got ${colorB.length}.`);\n }\n let i = 0;\n while (i < QUAT) {\n if (colorA[i] === NONE && colorB[i] === NONE) {\n colorA[i] = 0;\n colorB[i] = 0;\n } else if (colorA[i] === NONE) {\n colorA[i] = colorB[i];\n } else if (colorB[i] === NONE) {\n colorB[i] = colorA[i];\n }\n i++;\n }\n colorA = validateColorComponents(colorA, {\n minLength: QUAT,\n validateRange: false\n });\n colorB = validateColorComponents(colorB, {\n minLength: QUAT,\n validateRange: false\n });\n return [colorA, colorB];\n};\n\n/**\n * number to hex string\n * @param {number} value - color value\n * @returns {string} - hex string\n */\nexport const numberToHexString = value => {\n if (typeof value !== 'number') {\n throw new TypeError(`Expected Number but got ${getType(value)}.`);\n } else if (Number.isNaN(value)) {\n throw new TypeError(`${value} is not a number.`);\n } else {\n value = Math.round(value);\n if (value < 0 || value > MAX_RGB) {\n throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n }\n }\n let hex = value.toString(HEX);\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n return hex;\n};\n\n/**\n * angle to deg\n * @param {string} angle - angle\n * @returns {number} - deg 0..360\n */\nexport const angleToDeg = angle => {\n if (isString(angle)) {\n angle = angle.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(angle)}.`);\n }\n const GRAD = DEG / 400;\n const RAD = DEG / (Math.PI * DUO);\n const reg = new RegExp(`^(${REG_NUM})(${REG_ANGLE})?$`);\n if (!reg.test(angle)) {\n throw new Error(`Invalid property value: ${angle}`);\n }\n const [, val, unit] = angle.match(reg);\n const value = val.startsWith('.') ? `0${val}` : val;\n let deg;\n switch (unit) {\n case 'grad':\n deg = parseFloat(value) * GRAD;\n break;\n case 'rad':\n deg = parseFloat(value) * RAD;\n break;\n case 'turn':\n deg = parseFloat(value) * DEG;\n break;\n default:\n deg = parseFloat(value);\n }\n deg %= DEG;\n if (deg < 0) {\n deg += DEG;\n }\n return deg;\n};\n\n/**\n * convert rgb to linear rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..255\n * @returns {Array.} - [r, g, b] r|g|b: 0..1\n */\nexport const convertRgbToLinearRgb = rgb => {\n const [rr, gg, bb] = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n });\n let r = rr / MAX_RGB;\n let g = gg / MAX_RGB;\n let b = bb / MAX_RGB;\n const COND_POW = 0.04045;\n if (r > COND_POW) {\n r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n r /= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n g /= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n b /= LINEAR_COEF;\n }\n return [r, g, b];\n};\n\n/**\n * convert rgb to xyz\n * @param {Array.} rgb - [r, g, b, [a]] r|g|b: 0..255 a: 0..1\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertRgbToXyz = rgb => {\n const [r, g, b, a] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const [rr, gg, bb] = convertRgbToLinearRgb([r, g, b]);\n const [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [rr, gg, bb]);\n return [x, y, z, a];\n};\n\n/**\n * convert rgb to xyz-d50\n * @param {Array.} rgb - [r, g, b, [a]] r|g|b: 0..255 a: 0..1\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertRgbToXyzD50 = rgb => {\n const [xx, yy, zz, a] = convertRgbToXyz(rgb);\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz]);\n return [x, y, z, a];\n};\n\n/**\n * convert rgb to hex color\n * @param {Array.} rgb - [r, g, b, a] r|g|b: 0..255 a: 0..1\n * @returns {string} - hex color;\n */\nexport const convertRgbToHex = rgb => {\n const [r, g, b, a] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n });\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(a * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert linear rgb to rgb\n * @param {Array.} rgb - [r, g, b] r|g|b: 0..1\n * @returns {Array.} - [r, g, b] r|g|b: 0..255\n */\nexport const convertLinearRgbToRgb = rgb => {\n let [r, g, b] = validateColorComponents(rgb, {\n maxLength: TRIA\n });\n const COND_POW = 809 / 258400;\n if (r > COND_POW) {\n r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n r *= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n g *= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n b *= LINEAR_COEF;\n }\n return [\n Math.round(r * MAX_RGB),\n Math.round(g * MAX_RGB),\n Math.round(b * MAX_RGB)\n ];\n};\n\n/**\n * convert linear rgb to hex color\n * @param {Array.} rgb - [r, g, b, a] r|g|b|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertLinearRgbToHex = rgb => {\n let [r, g, b, a] = validateColorComponents(rgb, {\n minLength: QUAT\n });\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(a * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert xyz to hex color\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertXyzToHex = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n a\n ]);\n return hex;\n};\n\n/**\n * convert xyz D50 to hex color\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {string} - hex color\n */\nexport const convertXyzD50ToHex = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, xyzD65);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n a\n ]);\n return hex;\n};\n\n/**\n * convert xyz to rgb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertXyzToRgb = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n validateRange: false\n });\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n [r, g, b] = convertLinearRgbToRgb([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1)\n ]);\n return [r, g, b, a];\n};\n\n/**\n * convert xyz to xyz-d50\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertXyzToXyzD50 = xyz => {\n const [xx, yy, zz, a] = validateColorComponents(xyz, {\n validateRange: false\n });\n const [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [xx, yy, zz]);\n return [x, y, z, a];\n};\n\n/**\n * convert xyz to hsl\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [h, s, l, a] h: 0..360 s|l: 0..100 a: 0..1\n */\nexport const convertXyzToHsl = xyz => {\n const [rr, gg, bb, a] = convertXyzToRgb(xyz);\n const r = rr / MAX_RGB;\n const g = gg / MAX_RGB;\n const b = bb / MAX_RGB;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const l = (max + min) * HALF * MAX_PCT;\n let h, s;\n if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n h = NONE;\n s = NONE;\n } else {\n s = d / (1 - Math.abs(max + min - 1)) * MAX_PCT;\n if (s === 0) {\n h = NONE;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d;\n break;\n case g:\n h = (b - r) / d + DUO;\n break;\n case b:\n default:\n h = (r - g) / d + QUAT;\n break;\n }\n h = h * DEG_INTERVAL % DEG;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [h, s, l, a];\n};\n\n/**\n * convert xyz to hwb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [h, w, b, a] h: 0..360 w|b: 0..100 a: 0..1\n */\nexport const convertXyzToHwb = xyz => {\n const [r, g, b, a] = convertXyzToRgb(xyz);\n const w = Math.min(r, g, b) / MAX_RGB;\n const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n let h;\n if (w + bk === 1) {\n h = NONE;\n } else {\n [h] = convertXyzToHsl(xyz);\n }\n return [\n h,\n w * MAX_PCT,\n bk * MAX_PCT,\n a\n ];\n};\n\n/**\n * convert xyz to oklab\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, a, b, aa] l|aa: 0..1 a|b: -0.4..0.4\n */\nexport const convertXyzToOklab = xyz => {\n const [x, y, z, aa] = validateColorComponents(xyz, {\n validateRange: false\n });\n const lms = transformMatrix(MATRIX_XYZ_TO_LMS, [x, y, z]);\n const xyzLms = lms.map(c => Math.cbrt(c));\n let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms);\n l = Math.min(Math.max(l, 0), 1);\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n a = NONE;\n b = NONE;\n }\n return [l, a, b, aa];\n};\n\n/**\n * convert xyz to oklch\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, c, h, aa] l|aa: 0..1 c: 0..0.4 h: 0..360\n */\nexport const convertXyzToOklch = xyz => {\n const [l, a, b, aa] = convertXyzToOklab(xyz);\n let c, h;\n const lPct = Math.round(parseFloat(l.toFixed(QUAT)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQUARE) + Math.pow(b, POW_SQUARE)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert xyz D50 to rgb\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertXyzD50ToRgb = xyz => {\n const [x, y, z, a] = validateColorComponents(xyz, {\n minLength: QUAT,\n validateRange: false\n });\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n const [r, g, b] = convertXyzToRgb(xyzD65);\n return [r, g, b, a];\n};\n\n/**\n * convert xyz-d50 to lab\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, a, b, aa] l: 0..100 a|b: -125..125 aa: 0..1\n */\nexport const convertXyzD50ToLab = xyz => {\n const [x, y, z, aa] = validateColorComponents(xyz, {\n validateRange: false\n });\n const xyzD50 = [x, y, z].map((val, i) => val / D50[i]);\n const [f0, f1, f2] = xyzD50.map(val => val > LAB_EPSILON\n ? Math.cbrt(val)\n : (val * LAB_KAPPA + HEX) / LAB_L\n );\n const l = Math.min(Math.max((LAB_L * f1) - HEX, 0), MAX_PCT);\n let a, b;\n if (l === 0 || l === MAX_PCT) {\n a = NONE;\n b = NONE;\n } else {\n a = (f0 - f1) * LAB_A;\n b = (f1 - f2) * LAB_B;\n }\n return [l, a, b, aa];\n};\n\n/**\n * convert xyz-d50 to lch\n * @param {Array.} xyz - [x, y, z, a] x|y|z|a: 0..1\n * @returns {Array.} - [l, c, h, a] l: 0..100 c: 0..150 h: 0..360 a: 0..1\n */\nexport const convertXyzD50ToLch = xyz => {\n const [l, a, b, aa] = convertXyzD50ToLab(xyz);\n let c, h;\n if (l === 0 || l === MAX_PCT) {\n c = NONE;\n h = NONE;\n } else {\n c =\n Math.max(Math.sqrt(Math.pow(a, POW_SQUARE) + Math.pow(b, POW_SQUARE)), 0);\n if (parseFloat(c.toFixed(QUAT)) === 0) {\n h = NONE;\n } else {\n h = Math.atan2(b, a) * DEG * HALF / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h, aa];\n};\n\n/**\n * convert hex color to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertHexToRgb = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n if (!(/^#[\\da-f]{6}$/.test(value) || /^#[\\da-f]{3}$/.test(value) ||\n /^#[\\da-f]{8}$/.test(value) || /^#[\\da-f]{4}$/.test(value))) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const arr = [];\n if (/^#[\\da-f]{6}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n 1\n );\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n 1\n );\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n const [, r, g, b, a] =\n value.match(/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/);\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n parseInt(a, HEX) / MAX_RGB\n );\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, a] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n parseInt(`${a}${a}`, HEX) / MAX_RGB\n );\n }\n return arr;\n};\n\n/**\n * convert hex color to linear rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b|a: 0..1\n */\nexport const convertHexToLinearRgb = value => {\n const [rr, gg, bb, a] = convertHexToRgb(value);\n const [r, g, b] = convertRgbToLinearRgb([rr, gg, bb]);\n return [r, g, b, a];\n};\n\n/**\n * convert hex color to xyz\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const convertHexToXyz = value => {\n const [r, g, b, a] = convertHexToLinearRgb(value);\n const [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [r, g, b]);\n return [x, y, z, a];\n};\n\n/**\n * parse alpha\n * @param {?string} [a] - alpha value\n * @returns {number} - a: 0..1\n */\nexport const parseAlpha = a => {\n if (isString(a)) {\n a = a.trim();\n if (!a) {\n a = 1;\n } else if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n if (Number.isNaN(a)) {\n throw new TypeError(`${a} is not a number.`);\n }\n if (a < 0 || a > 1) {\n a = Math.min(Math.max(a, 0), 1);\n }\n }\n } else {\n a = 1;\n }\n return a;\n};\n\n/**\n * parse rgb()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseRgb = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg =\n new RegExp(`^rgba?\\\\(\\\\s*(${REG_RGB}|${REG_RGB_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [r, g, b, a] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (r === NONE) {\n r = 0;\n } else {\n if (r.startsWith('.')) {\n r = `0${r}`;\n }\n if (r.endsWith('%')) {\n r = parseFloat(r) * MAX_RGB / MAX_PCT;\n } else {\n r = parseFloat(r);\n }\n }\n if (g === NONE) {\n g = 0;\n } else {\n if (g.startsWith('.')) {\n g = `0${g}`;\n }\n if (g.endsWith('%')) {\n g = parseFloat(g) * MAX_RGB / MAX_PCT;\n } else {\n g = parseFloat(g);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.startsWith('.')) {\n b = `0${b}`;\n }\n if (b.endsWith('%')) {\n b = parseFloat(b) * MAX_RGB / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n a = parseAlpha(a);\n return [\n Math.min(Math.max(r, 0), MAX_RGB),\n Math.min(Math.max(g, 0), MAX_RGB),\n Math.min(Math.max(b, 0), MAX_RGB),\n a\n ];\n};\n\n/**\n * parse hsl()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseHsl = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg =\n new RegExp(`^hsla?\\\\(\\\\s*(${REG_HSL_HWB}|${REG_HSL_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [h, s, l, a] = val.replace(/[,/]/g, ' ').split(/\\s+/);\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n if (s === NONE) {\n s = 0;\n } else {\n if (s.startsWith('.')) {\n s = `0${s}`;\n }\n s = Math.min(Math.max(parseFloat(s), 0), MAX_PCT);\n }\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n l = Math.min(Math.max(parseFloat(l), 0), MAX_PCT);\n }\n a = parseAlpha(a);\n let max, min;\n if (l < MAX_PCT * HALF) {\n max = (l + l * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n min = (l - l * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n } else {\n max = (l + (MAX_PCT - l) * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n min = (l - (MAX_PCT - l) * (s / MAX_PCT)) * MAX_RGB / MAX_PCT;\n }\n const factor = (max - min) / DEG_INTERVAL;\n let r, g, b;\n // < 60\n if (h >= 0 && h < DEG_INTERVAL) {\n r = max;\n g = h * factor + min;\n b = min;\n // < 120\n } else if (h < DEG_INTERVAL * DUO) {\n r = (DEG_INTERVAL * DUO - h) * factor + min;\n g = max;\n b = min;\n // < 180\n } else if (h < DEG * HALF) {\n r = min;\n g = max;\n b = (h - DEG_INTERVAL * DUO) * factor + min;\n // < 240\n } else if (h < DEG_INTERVAL * QUAT) {\n r = min;\n g = (DEG_INTERVAL * QUAT - h) * factor + min;\n b = max;\n // < 300\n } else if (h < DEG - DEG_INTERVAL) {\n r = (h - (DEG_INTERVAL * QUAT)) * factor + min;\n g = min;\n b = max;\n // < 360\n } else if (h < DEG) {\n r = max;\n g = min;\n b = (DEG - h) * factor + min;\n }\n return [\n Math.min(Math.max(r, 0), MAX_RGB),\n Math.min(Math.max(g, 0), MAX_RGB),\n Math.min(Math.max(b, 0), MAX_RGB),\n a\n ];\n};\n\n/**\n * parse hwb()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const parseHwb = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^hwb\\\\(\\\\s*(${REG_HSL_HWB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n let [h, w, b, a] = val.replace('/', ' ').split(/\\s+/);\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n if (w === NONE) {\n w = 0;\n } else {\n if (w.startsWith('.')) {\n w = `0${w}`;\n }\n w = Math.min(Math.max(parseFloat(w), 0), MAX_PCT) / MAX_PCT;\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.startsWith('.')) {\n b = `0${b}`;\n }\n b = Math.min(Math.max(parseFloat(b), 0), MAX_PCT) / MAX_PCT;\n }\n a = parseAlpha(a);\n const arr = [];\n if (w + b >= 1) {\n const v = (w / (w + b)) * MAX_RGB;\n arr.push(v, v, v, a);\n } else {\n const [rr, gg, bb] = parseHsl(`hsl(${h} 100% 50%)`);\n const factor = (1 - w - b) / MAX_RGB;\n arr.push(\n (rr * factor + w) * MAX_RGB,\n (gg * factor + w) * MAX_RGB,\n (bb * factor + w) * MAX_RGB,\n a\n );\n }\n return arr;\n};\n\n/**\n + parse lab()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseLab = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^lab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 1.25;\n const COND_POW = 8;\n const [, val] = value.match(reg);\n let [l, a, b, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l);\n if (l > MAX_PCT) {\n l = MAX_PCT;\n }\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n aa = parseAlpha(aa);\n const fl = (l + HEX) / LAB_L;\n const fa = (a / LAB_A + fl);\n const fb = (fl - b / LAB_B);\n const powFl = Math.pow(fl, POW_CUBE);\n const powFa = Math.pow(fa, POW_CUBE);\n const powFb = Math.pow(fb, POW_CUBE);\n const xyz = [\n powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n l > COND_POW ? powFl : l / LAB_KAPPA,\n powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n ];\n const [x, y, z] = xyz.map((val, i) => val * D50[i]);\n return [x, y, z, aa];\n};\n\n/**\n + parse lch()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseLch = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^lch\\\\(\\\\s*(${REG_LCH})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 1.5;\n const [, val] = value.match(reg);\n let [l, c, h, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n l = parseFloat(l);\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n c = 0;\n } else {\n if (c.startsWith('.')) {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT;\n } else {\n c = parseFloat(c);\n }\n }\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n aa = parseAlpha(aa);\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const [x, y, z] = parseLab(`lab(${l} ${a} ${b})`);\n return [x, y, z, aa];\n};\n\n/**\n * parse oklab()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseOklab = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^oklab\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(reg);\n let [l, a, b, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (a === NONE) {\n a = 0;\n } else {\n if (a.startsWith('.')) {\n a = `0${a}`;\n }\n if (a.endsWith('%')) {\n a = parseFloat(a) * COEF_PCT / MAX_PCT;\n } else {\n a = parseFloat(a);\n }\n }\n if (b === NONE) {\n b = 0;\n } else {\n if (b.endsWith('%')) {\n b = parseFloat(b) * COEF_PCT / MAX_PCT;\n } else {\n b = parseFloat(b);\n }\n }\n aa = parseAlpha(aa);\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(c => Math.pow(c, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms);\n return [x, y, z, aa];\n};\n\n/**\n * parse oklch()\n * @param {string} value - color value\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseOklch = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^oklch\\\\(\\\\s*(${REG_LAB})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(reg);\n let [l, c, h, aa] = val.replace('/', ' ').split(/\\s+/);\n if (l === NONE) {\n l = 0;\n } else {\n if (l.startsWith('.')) {\n l = `0${l}`;\n }\n if (l.endsWith('%')) {\n l = parseFloat(l) / MAX_PCT;\n } else {\n l = parseFloat(l);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (c === NONE) {\n c = 0;\n } else {\n if (c.startsWith('.')) {\n c = `0${c}`;\n }\n if (c.endsWith('%')) {\n c = parseFloat(c) * COEF_PCT / MAX_PCT;\n } else {\n c = parseFloat(c);\n }\n if (c < 0) {\n c = 0;\n }\n }\n if (h === NONE) {\n h = 0;\n } else {\n h = angleToDeg(h);\n }\n aa = parseAlpha(aa);\n const a = c * Math.cos(h * Math.PI / (DEG * HALF));\n const b = c * Math.sin(h * Math.PI / (DEG * HALF));\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(cl => Math.pow(cl, POW_CUBE));\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms);\n return [x, y, z, aa];\n};\n\n/**\n * parse color()\n * @param {string} value - color value\n * @param {boolean} d50 - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseColorFunc = (value, d50 = false) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^color\\\\(\\\\s*(${REG_COLOR_FUNC})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [, val] = value.match(reg);\n const [cs, v1, v2, v3, v4] = val.replace('/', ' ').split(/\\s+/);\n let r, g, b;\n if (v1 === NONE) {\n r = 0;\n } else {\n let rr;\n if (v1.startsWith('.')) {\n rr = `0${v1}`;\n } else {\n rr = v1;\n }\n r = rr.endsWith('%') ? parseFloat(rr) / MAX_PCT : parseFloat(rr);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n let gg;\n if (v2.startsWith('.')) {\n gg = `0${v2}`;\n } else {\n gg = v2;\n }\n g = gg.endsWith('%') ? parseFloat(gg) / MAX_PCT : parseFloat(gg);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n let bb;\n if (v3.startsWith('.')) {\n bb = `0${v3}`;\n } else {\n bb = v3;\n }\n b = bb.endsWith('%') ? parseFloat(bb) / MAX_PCT : parseFloat(bb);\n }\n const a = parseAlpha(v4);\n let x, y, z;\n // srgb\n if (cs === 'srgb') {\n [x, y, z] = convertRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // srgb-linear\n } else if (cs === 'srgb-linear') {\n [x, y, z] = transformMatrix(MATRIX_RGB_TO_XYZ, [r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // display-p3\n } else if (cs === 'display-p3') {\n const linearRgb = convertRgbToLinearRgb([\n r * MAX_RGB,\n g * MAX_RGB,\n b * MAX_RGB\n ]);\n [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // rec2020\n } else if (cs === 'rec2020') {\n const ALPHA = 1.09929682680944;\n const BETA = 0.018053968510807;\n const REC_COEF = 0.45;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c < BETA * REC_COEF * DEC) {\n cl = c / (REC_COEF * DEC);\n } else {\n cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // a98-rgb\n } else if (cs === 'a98-rgb') {\n const POW_A98 = 563 / 256;\n const rgb = [r, g, b].map(c => {\n const cl = Math.pow(c, POW_A98);\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // prophoto-rgb\n } else if (cs === 'prophoto-rgb') {\n const POW_PROPHOTO = 1.8;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c > 1 / (HEX * DUO)) {\n cl = Math.pow(c, POW_PROPHOTO);\n } else {\n cl = c / HEX;\n }\n return cl;\n });\n [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // xyz, xyz-d50, xyz-d65\n } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n [x, y, z] = [r, g, b];\n if (cs === 'xyz-d50') {\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n } else if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n }\n return [x, y, z, a];\n};\n\n/**\n * parse color value\n * @param {string} value - color value\n * @param {boolean} [d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z|a: 0..1\n */\nexport const parseColorValue = (value, d50 = false) => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n let x, y, z, a;\n // complement currentcolor as a missing color\n if (REG_CURRENT_COLOR.test(value)) {\n x = 0;\n y = 0;\n z = 0;\n a = 0;\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n const [r, g, b] = NAMED_COLORS[value];\n a = 1;\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n } else if (value === 'transparent') {\n x = 0;\n y = 0;\n z = 0;\n a = 0;\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n // hex-color\n } else if (value.startsWith('#')) {\n let hex;\n if (/^#[\\da-f]{6}$/.test(value)) {\n hex = value;\n } else if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(/^#([\\da-f])([\\da-f])([\\da-f])$/);\n hex = `#${r}${r}${g}${g}${b}${b}`;\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n hex = value;\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, aa] =\n value.match(/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/);\n hex = `#${r}${r}${g}${g}${b}${b}${aa}${aa}`;\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n [x, y, z, a] = convertHexToXyz(hex);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // lab()\n } else if (value.startsWith('lab')) {\n [x, y, z, a] = parseLab(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // lch()\n } else if (value.startsWith('lch')) {\n [x, y, z, a] = parseLch(value);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n // oklab()\n } else if (value.startsWith('oklab')) {\n [x, y, z, a] = parseOklab(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n // oklch()\n } else if (value.startsWith('oklch')) {\n [x, y, z, a] = parseOklch(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n } else {\n let r, g, b;\n // rgb()\n if (value.startsWith('rgb')) {\n [r, g, b, a] = parseRgb(value);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [r, g, b, a] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [r, g, b, a] = parseHwb(value);\n } else {\n throw new Error(`Invalid property value: ${value}`);\n }\n [x, y, z] = convertRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z]);\n }\n }\n return [x, y, z, a];\n};\n\n/**\n * convert color value to linear rgb\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @returns {Array.} - [r, g, b, a] r|g|b|a: 0..1\n */\nexport const convertColorValueToLinearRgb = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { alpha } = opt;\n let x, y, z, a;\n if (value.startsWith('color(')) {\n [x, y, z, a] = parseColorFunc(value);\n } else {\n [x, y, z, a] = parseColorValue(value);\n }\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_RGB, [x, y, z]);\n r = Math.min(Math.max(r, 0), 1);\n g = Math.min(Math.max(g, 0), 1);\n b = Math.min(Math.max(b, 0), 1);\n const rgb = [r, g, b];\n if (alpha) {\n rgb.push(a);\n } else {\n rgb.push(1);\n }\n return rgb;\n};\n\n/**\n * convert color value to rgb\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const convertColorValueToRgb = value => {\n let [r, g, b, a] = convertColorValueToLinearRgb(value, {\n alpha: true\n });\n [r, g, b] = convertLinearRgbToRgb([r, g, b]);\n return [r, g, b, a];\n};\n\n/**\n * resolve color value\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorValue = value => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n let r, g, b, a;\n // complement currentcolor as a missing color\n if (REG_CURRENT_COLOR.test(value)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n // named-color\n } else if (/^[a-z]+$/i.test(value)) {\n if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {\n [r, g, b] = NAMED_COLORS[value];\n a = 1;\n } else if (value === 'transparent') {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n // hex-color\n } else if (value.startsWith('#')) {\n [r, g, b, a] = convertHexToRgb(value);\n // lab(), lch()\n } else if (/^l(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('lab')) {\n [x, y, z, a] = parseLab(value);\n } else {\n [x, y, z, a] = parseLch(value);\n }\n [r, g, b, a] = convertXyzD50ToRgb([x, y, z, a]);\n // oklab(), oklch()\n } else if (/^okl(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('oklab')) {\n [x, y, z, a] = parseOklab(value);\n } else {\n [x, y, z, a] = parseOklch(value);\n }\n [r, g, b, a] = convertXyzToRgb([x, y, z, a]);\n // rgb()\n } else if (value.startsWith('rgb')) {\n [r, g, b, a] = parseRgb(value);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [r, g, b, a] = parseHsl(value);\n // hwb()\n } else if (value.startsWith('hwb')) {\n [r, g, b, a] = parseHwb(value);\n }\n let res;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n res = [];\n } else {\n res = [\n Math.round(r),\n Math.round(g),\n Math.round(b),\n a\n ];\n }\n return res;\n};\n\n/**\n * resolve color()\n * @param {string} value - color value\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorFunc = value => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const reg = new RegExp(`^color\\\\(\\\\s*${REG_COLOR_FUNC}\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const [x, y, z, a] = parseColorFunc(value);\n const [r, g, b] = convertXyzToRgb([x, y, z]);\n return [r, g, b, a];\n};\n\n/**\n * resolve color-mix()\n * @param {string} value - color value\n * @param {object} [opt] - options\n * @returns {Array.} - [r, g, b, a] r|g|b: 0..255 a: 0..1\n */\nexport const resolveColorMix = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const regColorMix = new RegExp(`^${REG_COLOR_MIX_CAPT}$`, 'i');\n if (!regColorMix.test(value)) {\n throw new Error(`Invalid property value: ${value}`);\n }\n const CC_LCH = 'lch(none none none / none)';\n const CC_RGB = 'rgb(none none none / none)';\n const regColorPart =\n new RegExp(`^(${REG_COLOR_TYPE})(?:\\\\s+(${REG_PCT}))?$`, 'i');\n const regMissingColor = new RegExp(NONE);\n const [, colorSpace, colorPartA, colorPartB] = value.match(regColorMix);\n const [, colorA, pctA] = colorPartA.match(regColorPart);\n const [, colorB, pctB] = colorPartB.match(regColorPart);\n // normalize percentages and set multipler\n let pA, pB, m;\n if (pctA && pctB) {\n const p1 = parseFloat(pctA) / MAX_PCT;\n const p2 = parseFloat(pctB) / MAX_PCT;\n if (p1 < 0 || p1 > 1) {\n throw new RangeError(`${pctA} is not between 0% and 100%.`);\n }\n if (p2 < 0 || p2 > 1) {\n throw new RangeError(`${pctB} is not between 0% and 100%.`);\n }\n const factor = p1 + p2;\n if (factor === 0) {\n throw new Error(`Invalid property value: ${value}`);\n }\n pA = p1 / factor;\n pB = p2 / factor;\n m = factor < 1 ? factor : 1;\n } else {\n if (pctA) {\n pA = parseFloat(pctA) / MAX_PCT;\n if (pA < 0 || pA > 1) {\n throw new RangeError(`${pctA} is not between 0% and 100%.`);\n }\n pB = 1 - pA;\n } else if (pctB) {\n pB = parseFloat(pctB) / MAX_PCT;\n if (pB < 0 || pB > 1) {\n throw new RangeError(`${pctB} is not between 0% and 100%.`);\n }\n pA = 1 - pB;\n } else {\n pA = HALF;\n pB = HALF;\n }\n m = 1;\n }\n let r, g, b, a;\n // in srgb\n if (colorSpace === 'srgb') {\n let rgbA = convertColorValueToRgb(colorA, {\n alpha: true\n });\n let rgbB = convertColorValueToRgb(colorB, {\n alpha: true\n });\n if (REG_CURRENT_COLOR.test(colorA)) {\n rgbA = reInsertMissingColorComponents(CC_RGB, rgbA);\n } else if (regMissingColor.test(colorA)) {\n rgbA = reInsertMissingColorComponents(colorA, rgbA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n rgbB = reInsertMissingColorComponents(CC_RGB, rgbB);\n } else if (regMissingColor.test(colorB)) {\n rgbB = reInsertMissingColorComponents(colorB, rgbB);\n }\n const [\n [rA, gA, bA, aA],\n [rB, gB, bB, aB]\n ] = normalizeColorComponents(rgbA, rgbB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n if (a === 0) {\n r = rA * pA + rB * pB;\n g = gA * pA + gB * pB;\n b = bA * pA + bB * pB;\n } else {\n r = (rA * factorA + rB * factorB) / a;\n g = (gA * factorA + gB * factorB) / a;\n b = (bA * factorA + bB * factorB) / a;\n }\n // in srgb-linear\n } else if (colorSpace === 'srgb-linear') {\n let rgbA = convertColorValueToLinearRgb(colorA, {\n alpha: true\n });\n let rgbB = convertColorValueToLinearRgb(colorB, {\n alpha: true\n });\n if (REG_CURRENT_COLOR.test(colorA)) {\n rgbA = reInsertMissingColorComponents(CC_RGB, rgbA);\n } else if (regMissingColor.test(colorA)) {\n rgbA = reInsertMissingColorComponents(colorA, rgbA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n rgbB = reInsertMissingColorComponents(CC_RGB, rgbB);\n } else if (regMissingColor.test(colorB)) {\n rgbB = reInsertMissingColorComponents(colorB, rgbB);\n }\n const [\n [rA, gA, bA, aA],\n [rB, gB, bB, aB]\n ] = normalizeColorComponents(rgbA, rgbB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n if (a === 0) {\n r = (rA * pA + rB * pB) * MAX_RGB;\n g = (gA * pA + gB * pB) * MAX_RGB;\n b = (bA * pA + bB * pB) * MAX_RGB;\n } else {\n r = (rA * factorA + rB * factorB) * a * MAX_RGB;\n g = (gA * factorA + gB * factorB) * a * MAX_RGB;\n b = (bA * factorA + bB * factorB) * a * MAX_RGB;\n }\n // in xyz, xyz-d65\n } else if (/^xyz(?:-d65)?$/.test(colorSpace)) {\n let xyzA, xyzB;\n if (colorA.startsWith('color(')) {\n xyzA = parseColorFunc(colorA);\n } else {\n xyzA = parseColorValue(colorA);\n }\n if (colorB.startsWith('color(')) {\n xyzB = parseColorFunc(colorB);\n } else {\n xyzB = parseColorValue(colorB);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n xyzA = reInsertMissingColorComponents(CC_RGB, xyzA);\n } else if (regMissingColor.test(colorA)) {\n xyzA = reInsertMissingColorComponents(colorA, xyzA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n xyzB = reInsertMissingColorComponents(CC_RGB, xyzB);\n } else if (regMissingColor.test(colorB)) {\n xyzB = reInsertMissingColorComponents(colorB, xyzB);\n }\n const [\n [xA, yA, zA, aA],\n [xB, yB, zB, aB]\n ] = normalizeColorComponents(xyzA, xyzB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let x, y, z;\n if (a === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) * a;\n y = (yA * factorA + yB * factorB) * a;\n z = (zA * factorA + zB * factorB) * a;\n }\n [r, g, b] = convertXyzToRgb([x, y, z]);\n // in xyz-d50\n } else if (colorSpace === 'xyz-d50') {\n let xyzA, xyzB;\n if (colorA.startsWith('color(')) {\n xyzA = parseColorFunc(colorA, true);\n } else {\n xyzA = parseColorValue(colorA, true);\n }\n if (colorB.startsWith('color(')) {\n xyzB = parseColorFunc(colorB, true);\n } else {\n xyzB = parseColorValue(colorB, true);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n xyzA = reInsertMissingColorComponents(CC_RGB, xyzA);\n } else if (regMissingColor.test(colorA)) {\n xyzA = reInsertMissingColorComponents(colorA, xyzA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n xyzB = reInsertMissingColorComponents(CC_RGB, xyzB);\n } else if (regMissingColor.test(colorB)) {\n xyzB = reInsertMissingColorComponents(colorB, xyzB);\n }\n const [\n [xA, yA, zA, aA],\n [xB, yB, zB, aB]\n ] = normalizeColorComponents(xyzA, xyzB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let x, y, z;\n if (a === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) * a;\n y = (yA * factorA + yB * factorB) * a;\n z = (zA * factorA + zB * factorB) * a;\n }\n [r, g, b] = convertXyzD50ToRgb([x, y, z, a]);\n // in hsl\n } else if (colorSpace === 'hsl') {\n let hA, sA, lA, aA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [hA, sA, lA, aA] = convertXyzToHsl(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [hA, sA, lA, aA] = convertXyzToHsl(xyz);\n }\n let hB, sB, lB, aB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [hB, sB, lB, aB] = convertXyzToHsl(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [hB, sB, lB, aB] = convertXyzToHsl(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA, sA, hA, aA] =\n reInsertMissingColorComponents(CC_LCH, [lA, sA, hA, aA]);\n } else if (regMissingColor.test(colorA)) {\n [lA, sA, hA, aA] =\n reInsertMissingColorComponents(colorA, [lA, sA, hA, aA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lB, sB, hB, aB] =\n reInsertMissingColorComponents(CC_LCH, [lB, sB, hB, aB]);\n } else if (regMissingColor.test(colorB)) {\n [lB, sB, hB, aB] =\n reInsertMissingColorComponents(colorB, [lB, sB, hB, aB]);\n }\n [\n [hA, sA, lA, aA],\n [hB, sB, lB, aB]\n ] = normalizeColorComponents([hA, sA, lA, aA], [hB, sB, lB, aB]);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let s, l;\n if (a === 0) {\n s = sA * pA + sB * pB;\n l = lA * pA + lB * pB;\n } else {\n s = (sA * factorA + sB * factorB) / a;\n l = (lA * factorA + lB * factorB) / a;\n }\n [r, g, b] = convertColorValueToRgb(`hsl(${h} ${s}% ${l}%)`);\n // in hwb\n } else if (colorSpace === 'hwb') {\n let hA, wA, bA, aA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [hA, wA, bA, aA] = convertXyzToHwb(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [hA, wA, bA, aA] = convertXyzToHwb(xyz);\n }\n let hB, wB, bB, aB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [hB, wB, bB, aB] = convertXyzToHwb(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [hB, wB, bB, aB] = convertXyzToHwb(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [,, hA, aA] =\n reInsertMissingColorComponents(CC_LCH, [null, null, hA, aA]);\n } else if (regMissingColor.test(colorA)) {\n [,, hA, aA] =\n reInsertMissingColorComponents(colorA, [null, null, hA, aA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [,, hB, aB] =\n reInsertMissingColorComponents(CC_LCH, [null, null, hB, aB]);\n } else if (regMissingColor.test(colorB)) {\n [,, hB, aB] =\n reInsertMissingColorComponents(colorB, [null, null, hB, aB]);\n }\n [\n [hA, wA, bA, aA],\n [hB, wB, bB, aB]\n ] = normalizeColorComponents([hA, wA, bA, aA], [hB, wB, bB, aB]);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n const h = (hA * pA + hB * pB) % DEG;\n let w, bk;\n if (a === 0) {\n w = wA * pA + wB * pB;\n bk = bA * pA + bB * pB;\n } else {\n w = (wA * factorA + wB * factorB) / a;\n bk = (bA * factorA + bB * factorB) / a;\n }\n const rgb = convertColorValueToRgb(`hwb(${h} ${w}% ${bk}%)`);\n [r, g, b] = rgb;\n // in lab\n } else if (colorSpace === 'lab') {\n let lA, aA, bA, aaA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n [lA, aA, bA, aaA] = convertXyzD50ToLab(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n [lA, aA, bA, aaA] = convertXyzD50ToLab(xyz);\n }\n let lB, aB, bB, aaB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n [lB, aB, bB, aaB] = convertXyzD50ToLab(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n [lB, aB, bB, aaB] = convertXyzD50ToLab(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(CC_LCH, [lA, null, null, aaA]);\n } else if (regMissingColor.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(colorA, [lA, null, null, aaA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(CC_LCH, [lB, null, null, aaB]);\n } else if (regMissingColor.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(colorB, [lB, null, null, aaB]);\n }\n [\n [lA, aA, bA, aaA],\n [lB, aB, bB, aaB]\n ] = normalizeColorComponents([lA, aA, bA, aaA], [lB, aB, bB, aaB]);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, aX, bY;\n if (a === 0) {\n l = lA * pA + lB * pB;\n aX = aA * pA + aB * pB;\n bY = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n aX = (aA * factorA + aB * factorB) * a;\n bY = (bA * factorA + bB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`lab(${l} ${aX} ${bY})`);\n // in lch\n } else if (colorSpace === 'lch') {\n let lchA, lchB;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n lchA = convertXyzD50ToLch(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n lchA = convertXyzD50ToLch(xyz);\n }\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n lchB = convertXyzD50ToLch(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n lchB = convertXyzD50ToLch(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n lchA = reInsertMissingColorComponents(CC_LCH, lchA);\n } else if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n lchB = reInsertMissingColorComponents(CC_LCH, lchB);\n } else if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n const [\n [lA, cA, hA, aA],\n [lB, cB, hB, aB]\n ] = normalizeColorComponents(lchA, lchB);\n const factorA = aA * pA;\n const factorB = aB * pB;\n a = (factorA + factorB);\n let l, c, h;\n if (a === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n h = hA * pA + hB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n c = (cA * factorA + cB * factorB) * a;\n h = (hA * factorA + hB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`lch(${l} ${c} ${h})`);\n // in oklab\n } else if (colorSpace === 'oklab') {\n let lA, aA, bA, aaA;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA);\n [lA, aA, bA, aaA] = convertXyzToOklab(xyz);\n } else {\n const xyz = parseColorValue(colorA);\n [lA, aA, bA, aaA] = convertXyzToOklab(xyz);\n }\n let lB, aB, bB, aaB;\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB);\n [lB, aB, bB, aaB] = convertXyzToOklab(xyz);\n } else {\n const xyz = parseColorValue(colorB);\n [lB, aB, bB, aaB] = convertXyzToOklab(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(CC_LCH, [lA, null, null, aaA]);\n } else if (regMissingColor.test(colorA)) {\n [lA,,, aaA] =\n reInsertMissingColorComponents(colorA, [lA, null, null, aaA]);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n [lA,,, aaB] =\n reInsertMissingColorComponents(CC_LCH, [lB, null, null, aaB]);\n } else if (regMissingColor.test(colorB)) {\n [lB,,, aaB] =\n reInsertMissingColorComponents(colorB, [lB, null, null, aaB]);\n }\n [\n [lA, aA, bA, aaA],\n [lB, aB, bB, aaB]\n ] = normalizeColorComponents([lA, aA, bA, aaA], [lB, aB, bB, aaB]);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, aX, bY;\n if (a === 0) {\n l = lA * pA + lB * pB;\n aX = aA * pA + aB * pB;\n bY = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n aX = (aA * factorA + aB * factorB) * a;\n bY = (bA * factorA + bB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`oklab(${l} ${aX} ${bY})`);\n // in oklch\n } else if (colorSpace === 'oklch') {\n let lchA, lchB;\n if (colorA.startsWith('color(')) {\n const xyz = parseColorFunc(colorA, true);\n lchA = convertXyzToOklch(xyz);\n } else {\n const xyz = parseColorValue(colorA, true);\n lchA = convertXyzToOklch(xyz);\n }\n if (colorB.startsWith('color(')) {\n const xyz = parseColorFunc(colorB, true);\n lchB = convertXyzToOklch(xyz);\n } else {\n const xyz = parseColorValue(colorB, true);\n lchB = convertXyzToOklch(xyz);\n }\n if (REG_CURRENT_COLOR.test(colorA)) {\n lchA = reInsertMissingColorComponents(CC_LCH, lchA);\n } else if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (REG_CURRENT_COLOR.test(colorB)) {\n lchB = reInsertMissingColorComponents(CC_LCH, lchB);\n } else if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n if (regMissingColor.test(colorA)) {\n lchA = reInsertMissingColorComponents(colorA, lchA);\n }\n if (regMissingColor.test(colorB)) {\n lchB = reInsertMissingColorComponents(colorB, lchB);\n }\n const [\n [lA, cA, hA, aaA],\n [lB, cB, hB, aaB]\n ] = normalizeColorComponents(lchA, lchB);\n const factorA = aaA * pA;\n const factorB = aaB * pB;\n a = (factorA + factorB);\n let l, c, h;\n if (a === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n h = hA * pA + hB * pB;\n } else {\n l = (lA * factorA + lB * factorB) * a;\n c = (cA * factorA + cB * factorB) * a;\n h = (hA * factorA + hB * factorB) * a;\n }\n [r, g, b] = resolveColorValue(`oklch(${l} ${c} ${h})`);\n }\n return [r, g, b, a * m];\n};\n", "/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nimport {\n convertRgbToHex, convertXyzD50ToLab, convertXyzD50ToLch, convertXyzToHex,\n convertXyzToHsl, convertXyzToHwb, convertXyzToOklab, convertXyzToOklch,\n convertXyzToRgb, convertXyzToXyzD50, parseColorFunc, parseColorValue,\n resolveColorFunc, resolveColorMix, resolveColorValue\n} from './js/color.js';\nimport { getType, isString } from './js/common.js';\n\n/**\n * resolve CSS color\n * @param {string} color - color value\n * - system colors are not supported\n * @param {object} [opt] - options\n * @param {string} [opt.currentColor] - color to use for `currentcolor` keyword\n * @param {string} [opt.format] - `rgb`(default), `array`, `hex` or `hexAlpha`\n * - `hexAlpha` is a hex color notation with alpha channel, i.e. #rrggbbaa\n * @param {*} [opt.key] - key e.g. CSS property `background-color`\n * @returns {?string|Array} - rgba?(), [r, g, b, a], #rrggbb(aa)?, null\n * - if `key` is specified, [key, rgba?()|[r, g, b, a]|#rrggbb(aa)?|null]\n * - in `rgb`, `r`, `g`, `b` values are rounded,\n * resolves as empty string if any of `r`, `g`, `b`, `a` is not a number\n * - in `array`, values are floating point,\n * if any of `r`, `g`, `b`, `a` is not a number then they stay as is,\n * e.g. [undefined, undefined, undefined, undefined]\n * - in `hex`, `transparent` resolves as `null`,\n * also resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n * - in `hexAlpha`, resolves as `null` if any of `r`, `g`, `b`, `a` is not a number\n */\nexport const resolve = (color, opt = {}) => {\n if (isString(color)) {\n color = color.trim();\n } else {\n throw new TypeError(`Expected String but got ${getType(color)}.`);\n }\n const { currentColor, format, key } = opt;\n let r, g, b, a;\n if (/^currentcolor$/i.test(color)) {\n if (currentColor) {\n if (currentColor.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(currentColor);\n } else if (currentColor.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(currentColor);\n } else {\n [r, g, b, a] = resolveColorValue(currentColor);\n }\n } else {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n }\n } else if (/^transparent$/i.test(color)) {\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n } else if (color.startsWith('color-mix')) {\n [r, g, b, a] = resolveColorMix(color);\n } else if (color.startsWith('color(')) {\n [r, g, b, a] = resolveColorFunc(color);\n } else {\n [r, g, b, a] = resolveColorValue(color);\n }\n let res;\n switch (format) {\n case 'array': {\n if (key) {\n res = [key, [r, g, b, a]];\n } else {\n res = [r, g, b, a];\n }\n break;\n }\n case 'hex': {\n let hex;\n if (/^transparent$/i.test(color) || isNaN(r) || isNaN(g) || isNaN(b)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n case 'hexAlpha': {\n let hex;\n if (/^transparent$/i.test(color)) {\n hex = '#00000000';\n } else if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n hex = null;\n } else {\n hex = convertRgbToHex([r, g, b, a]);\n }\n if (key) {\n res = [key, hex];\n } else {\n res = hex;\n }\n break;\n }\n default: {\n let rgb;\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n rgb = '';\n } else {\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n if (a === 1) {\n rgb = `rgb(${r}, ${g}, ${b})`;\n } else {\n rgb = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n }\n if (key) {\n res = [key, rgb];\n } else {\n res = rgb;\n }\n }\n }\n return res;\n};\n\n/**\n * parse CSS color\n * @param {string} value - color value\n * - color-mix() and system colors are not supported\n * @param {object} [opt] - options\n * @param {boolean} [opt.d50] - xyz in d50 white point\n * @returns {Array.} - [x, y, z, a] x|y|z: around 0..1 a: 0..1\n */\nexport const parse = (value, opt = {}) => {\n if (isString(value)) {\n value = value.trim();\n if (value.startsWith('color-mix(')) {\n throw new Error('color-mix() is not supported.');\n }\n } else {\n throw new TypeError(`Expected String but got ${getType(value)}.`);\n }\n const { d50 } = opt;\n let xyz;\n if (value.startsWith('color(')) {\n xyz = parseColorFunc(value, d50);\n } else {\n xyz = parseColorValue(value, d50);\n }\n return xyz;\n};\n\n/**\n * convert\n * @property {Function} rgbToHex - convert rgb to hex\n * @property {Function} xyzD50ToHex - convert xyz d50 to hex\n * @property {Function} xyzD50ToLab - convert xyz d50 to lab\n * @property {Function} xyzD50ToLch - convert xyz d50 to lch\n * @property {Function} xyzD50ToRgb - convert xyz d50 to rgb\n * @property {Function} xyzToHex - convert xyz to hex\n * @property {Function} xyzToHsl - convert xyz to hsl\n * @property {Function} xyzToHwb - convert xyz to hwb\n * @property {Function} xyzToOklab - convert xyz to oklab\n * @property {Function} xyzToOklch - convert xyz to oklch\n * @property {Function} xyzToRgb - convert xyz to rgb\n * @property {Function} xyzToXyzD50 - convert xyz to xyz d50\n */\nexport const convert = {\n rgbToHex: convertRgbToHex,\n xyzD50ToLab: convertXyzD50ToLab,\n xyzD50ToLch: convertXyzD50ToLch,\n xyzToHex: convertXyzToHex,\n xyzToHsl: convertXyzToHsl,\n xyzToHwb: convertXyzToHwb,\n xyzToOklab: convertXyzToOklab,\n xyzToOklch: convertXyzToOklch,\n xyzToRgb: convertXyzToRgb,\n xyzToXyzD50: convertXyzToXyzD50\n};\n"], + "mappings": "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", "names": ["getType", "o", "isString", "HALF", "DUO", "TRIA", "QUAT", "DEC", "HEX", "DEG", "DEG_INTERVAL", "MAX_PCT", "MAX_RGB", "POW_SQUARE", "POW_CUBE", "POW_LINEAR", "LINEAR_COEF", "LINEAR_OFFSET", "LAB_L", "LAB_A", "LAB_B", "LAB_EPSILON", "LAB_KAPPA", "D50", "MATRIX_D50_TO_D65", "MATRIX_D65_TO_D50", "MATRIX_RGB_TO_XYZ", "MATRIX_XYZ_TO_RGB", "MATRIX_XYZ_TO_LMS", "MATRIX_LMS_TO_XYZ", "MATRIX_OKLAB_TO_LMS", "MATRIX_LMS_TO_OKLAB", "MATRIX_P3_TO_XYZ", "MATRIX_REC2020_TO_XYZ", "MATRIX_A98_TO_XYZ", "MATRIX_PROPHOTO_TO_XYZ_D50", "NONE", "REG_ANGLE", "REG_SRGB", "REG_COLOR_SPACE_XYZ", "REG_COLOR_SPACE_COLOR_MIX", "REG_COLOR_SPACE_RGB", "REG_NUM", "REG_PCT", "REG_HSL_HWB", "REG_HSL_LV3", "REG_RGB", "REG_RGB_LV3", "REG_LAB", "REG_LCH", "REG_COLOR_FUNC", "REG_COLOR_TYPE", "REG_COLOR_MIX_PART", "REG_COLOR_MIX_CAPT", "REG_CURRENT_COLOR", "NAMED_COLORS", "validateColorComponents", "arr", "opt", "getType", "alpha", "minLength", "maxLength", "minRange", "maxRange", "validateRange", "msg", "i", "v", "transformMatrix", "mtx", "vct", "r1c1", "r1c2", "r1c3", "r2c1", "r2c2", "r2c3", "r3c1", "r3c2", "r3c3", "v1", "v2", "v3", "p1", "p2", "p3", "reInsertMissingColorComponents", "value", "color", "isString", "v4", "v1m", "v2m", "v3m", "v4m", "regRgb", "regColor", "regHsl", "regLab", "regLch", "normalizeColorComponents", "colorA", "colorB", "numberToHexString", "hex", "angleToDeg", "angle", "GRAD", "RAD", "reg", "val", "unit", "deg", "convertRgbToLinearRgb", "rgb", "rr", "gg", "bb", "r", "g", "b", "COND_POW", "convertRgbToXyz", "a", "x", "y", "z", "convertRgbToHex", "rgb", "r", "g", "b", "a", "validateColorComponents", "MAX_RGB", "rr", "numberToHexString", "gg", "bb", "aa", "hex", "convertLinearRgbToRgb", "TRIA", "COND_POW", "POW_LINEAR", "LINEAR_OFFSET", "LINEAR_COEF", "convertLinearRgbToHex", "QUAT", "convertXyzToHex", "xyz", "y", "z", "transformMatrix", "MATRIX_XYZ_TO_RGB", "convertXyzToRgb", "xyz", "y", "z", "a", "validateColorComponents", "r", "g", "b", "transformMatrix", "MATRIX_XYZ_TO_RGB", "convertLinearRgbToRgb", "convertXyzToXyzD50", "xx", "yy", "zz", "x", "MATRIX_D65_TO_D50", "convertXyzToHsl", "rr", "gg", "bb", "MAX_RGB", "max", "min", "d", "l", "HALF", "MAX_PCT", "h", "s", "NONE", "DUO", "QUAT", "DEG_INTERVAL", "DEG", "convertXyzToHwb", "w", "bk", "convertXyzToOklab", "aa", "xyzLms", "MATRIX_XYZ_TO_LMS", "c", "MATRIX_LMS_TO_OKLAB", "lPct", "convertXyzToOklch", "POW_SQUARE", "convertXyzD50ToRgb", "xyzD65", "MATRIX_D50_TO_D65", "convertXyzD50ToLab", "xyzD50", "val", "i", "D50", "f0", "f1", "f2", "LAB_EPSILON", "LAB_KAPPA", "HEX", "LAB_L", "LAB_A", "LAB_B", "convertXyzD50ToLch", "convertHexToRgb", "value", "isString", "getType", "arr", "convertHexToLinearRgb", "convertRgbToLinearRgb", "convertHexToXyz", "MATRIX_RGB_TO_XYZ", "parseAlpha", "parseRgb", "reg", "REG_RGB", "REG_RGB_LV3", "parseHsl", "REG_HSL_HWB", "REG_HSL_LV3", "angleToDeg", "factor", "parseHwb", "v", "parseLab", "REG_LAB", "COEF_PCT", "COND_POW", "fl", "fa", "fb", "powFl", "POW_CUBE", "powFa", "powFb", "parseLch", "REG_LCH", "parseOklab", "MATRIX_OKLAB_TO_LMS", "MATRIX_LMS_TO_XYZ", "parseOklch", "cl", "parseColorFunc", "d50", "REG_COLOR_FUNC", "cs", "v1", "v2", "v3", "v4", "convertRgbToXyz", "linearRgb", "MATRIX_P3_TO_XYZ", "ALPHA", "BETA", "REC_COEF", "rgb", "DEC", "MATRIX_REC2020_TO_XYZ", "POW_A98", "MATRIX_A98_TO_XYZ", "MATRIX_PROPHOTO_TO_XYZ_D50", "parseColorValue", "REG_CURRENT_COLOR", "NAMED_COLORS", "hex", "convertColorValueToLinearRgb", "opt", "alpha", "convertColorValueToRgb", "resolveColorValue", "res", "resolveColorFunc", "resolveColorMix", "regColorMix", "REG_COLOR_MIX_CAPT", "CC_LCH", "CC_RGB", "regColorPart", "REG_COLOR_TYPE", "REG_PCT", "regMissingColor", "colorSpace", "colorPartA", "colorPartB", "colorA", "pctA", "colorB", "pctB", "pA", "pB", "m", "p1", "p2", "rgbA", "rgbB", "reInsertMissingColorComponents", "rA", "gA", "bA", "aA", "rB", "gB", "bB", "aB", "normalizeColorComponents", "factorA", "factorB", "xyzA", "xyzB", "xA", "yA", "zA", "xB", "yB", "zB", "hA", "sA", "lA", "hB", "sB", "lB", "wA", "wB", "aaA", "aaB", "aX", "bY", "lchA", "lchB", "cA", "cB", "resolve", "color", "opt", "isString", "getType", "currentColor", "format", "key", "r", "g", "b", "a", "resolveColorMix", "resolveColorFunc", "resolveColorValue", "res", "hex", "convertRgbToHex", "rgb", "parse", "value", "d50", "xyz", "parseColorFunc", "parseColorValue", "convert", "convertXyzD50ToLab", "convertXyzD50ToLch", "convertXyzToHex", "convertXyzToHsl", "convertXyzToHwb", "convertXyzToOklab", "convertXyzToOklch", "convertXyzToRgb", "convertXyzToXyzD50"] } diff --git a/package.json b/package.json index c96f623..a625926 100644 --- a/package.json +++ b/package.json @@ -48,5 +48,5 @@ "test": "c8 --reporter=text mocha --exit test/**/*.test.js", "tsc": "npx tsc" }, - "version": "1.0.2" + "version": "1.0.3" } diff --git a/types/index.d.ts b/types/index.d.ts index bbb19b1..1ff4c3d 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -7,6 +7,7 @@ export function parse(value: string, opt?: { d50?: boolean; }): Array; export namespace convert { + export { convertRgbToHex as rgbToHex }; export { convertXyzD50ToLab as xyzD50ToLab }; export { convertXyzD50ToLch as xyzD50ToLch }; export { convertXyzToHex as xyzToHex }; @@ -17,6 +18,7 @@ export namespace convert { export { convertXyzToRgb as xyzToRgb }; export { convertXyzToXyzD50 as xyzToXyzD50 }; } +import { convertRgbToHex } from './js/color.js'; import { convertXyzD50ToLab } from './js/color.js'; import { convertXyzD50ToLch } from './js/color.js'; import { convertXyzToHex } from './js/color.js';