UNPKG

colorjs.io

Version:

Let’s get serious about color

3 lines 78.7 kB
"use strict";function e(e,t){let r,a,n=e.length,o=!1,s=!1;Array.isArray(e[0])?r=e:(r=[e],n=r.length,o=!0),Array.isArray(t[0])?a=t:(a=t.length>0?t.map((e=>[e])):[[]],s=!0);let i=a[0].length,l=a[0].map(((e,t)=>a.map((e=>e[t])))),c=r.map((e=>l.map((t=>{let r=0;if(!Array.isArray(e)){for(let a of t)r+=e*a;return r}for(let a=0;a<e.length;a++)r+=e[a]*(t[a]||0);return r}))));return 1===n&&o&&(c=c[0]),1===i&&s?1===n&&o?c[0]:c.map((e=>e[0])):c}function t(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function r(e,r,a=[0,0,0]){const n=t(e,r[0]),o=t(e,r[1]),s=t(e,r[2]);return a[0]=n,a[1]=o,a[2]=s,a}function a(e){return"string"===n(e)}function n(e){return(Object.prototype.toString.call(e).match(/^\[object\s+(.*?)\]$/)[1]||"").toLowerCase()}function o(e,{precision:t=16,unit:r}){return s(e)?"none":(e=+l(e,t))+(r??"")}function s(e){return null===e}function i(e){return s(e)?0:e}function l(e,t){if(0===e)return 0;let r=~~e,a=0;r&&t&&(a=1+~~Math.log10(Math.abs(r)));const n=10**(t-a);return Math.floor(e*n+.5)/n}function c(e,t,r){return isNaN(e)?t:isNaN(t)?e:e+(t-e)*r}function u(e,t,r){return(r-e)/(t-e)}function h(e,t,r){return!e||!t||e===t||e[0]===t[0]&&e[1]===t[1]||isNaN(r)||null===r?r:c(t[0],t[1],u(e[0],e[1],r))}function m(e,t,r){return Math.max(Math.min(r,t),e)}function f(e,t){return Math.sign(e)===Math.sign(t)?e:-e}function p(e,t){return f(Math.abs(e)**t,e)}function d(e,t){return 0===t?0:e/t}function g(e,t,r=0,a=e.length){for(;r<a;){const n=r+a>>1;e[n]<t?r=n+1:a=n}return r}function b(e,t){if(e instanceof t)return!0;const r=t.name;for(;e;){const t=Object.getPrototypeOf(e),a=t?.constructor?.name;if(a===r)return!0;if(!a||"Object"===a)return!1;e=t}return!1}Object.defineProperty(exports,"__esModule",{value:!0});var M=Object.freeze({__proto__:null,bisectLeft:g,clamp:m,copySign:f,interpolate:c,interpolateInv:u,isInstance:b,isNone:s,isString:a,mapRange:h,multiplyMatrices:e,multiply_v3_m3x3:r,serializeNumber:o,skipNone:i,spow:p,toPrecision:l,type:n,zdiv:d});const y=new class{add(e,t,r){if("string"==typeof arguments[0])(Array.isArray(e)?e:[e]).forEach((function(e){this[e]=this[e]||[],t&&this[e][r?"unshift":"push"](t)}),this);else for(var e in arguments[0])this.add(e,arguments[0][e],arguments[1])}run(e,t){this[e]=this[e]||[],this[e].forEach((function(e){e.call(t&&t.context?t.context:t,t)}))}};var w={gamut_mapping:"css",precision:5,deltaE:"76",verbose:"test"!==globalThis?.process?.env?.NODE_ENV?.toLowerCase(),warn:function(e){this.verbose&&globalThis?.console?.warn?.(e)}};class v{type;coordMeta;coordRange;range;constructor(e,t){if("object"==typeof e&&(this.coordMeta=e),t&&(this.coordMeta=t,this.coordRange=t.range??t.refRange),"string"==typeof e){let t=e.trim().match(/^(?<type><[a-z]+>)(\[(?<min>-?[.\d]+),\s*(?<max>-?[.\d]+)\])?$/);if(!t)throw new TypeError(`Cannot parse ${e} as a type definition.`);this.type=t.groups.type;let{min:r,max:a}=t.groups;(r||a)&&(this.range=[+r,+a])}}get computedRange(){return this.range?this.range:"<percentage>"===this.type?this.percentageRange():"<angle>"===this.type?[0,360]:null}get unit(){return"<percentage>"===this.type?"%":"<angle>"===this.type?"deg":""}resolve(e){if("<angle>"===this.type)return e;let t=this.computedRange,r=this.coordRange;return"<percentage>"===this.type&&(r??=this.percentageRange()),h(t,r,e)}serialize(e,t){let r="<percentage>"===this.type?this.percentageRange(100):this.computedRange,a=this.unit;return o(e=h(this.coordRange,r,e),{unit:a,precision:t})}toString(){let e=this.type;if(this.range){let[t="",r=""]=this.range;e+=`[${t},${r}]`}return e}percentageRange(e=1){let t;return t=this.coordMeta&&this.coordMeta.range||this.coordRange&&this.coordRange[0]>=0?[0,1]:[-1,1],[t[0]*e,t[1]*e]}static get(e,t){return b(e,this)?e:new this(e,t)}}const C=Symbol("instance");class B{type;name;spaceCoords;coords;id;alpha;constructor(e,t=e.space){e[C]=this,this.type="function",this.name="color",Object.assign(this,e),this.space=t,"custom"!==this.type&&(this.spaceCoords=Object.values(t.coords),this.coords||(this.coords=this.spaceCoords.map((e=>{let t=["<number>","<percentage>"];return"angle"===e.type&&t.push("<angle>"),t}))),this.coords=this.coords.map(((e,t)=>{let r=this.spaceCoords[t];return"string"==typeof e&&(e=e.trim().split(/\s*\|\s*/)),e.map((e=>v.get(e,r)))})))}serializeCoords(e,t,r){return r=e.map(((e,t)=>v.get(r?.[t]??this.coords[t][0],this.spaceCoords[t]))),e.map(((e,a)=>r[a].serialize(e,t)))}coerceCoords(e,t){return Object.entries(this.space.coords).map((([r,a],n)=>{let o=e[n];if(s(o)||isNaN(o))return o;let i=t[n],l=this.coords[n].find((e=>e.type==i));if(!l){let e=a.name||r;throw new TypeError(`${i??o?.raw??o} not allowed for ${e} in ${this.name}()`)}return o=l.resolve(o),l.range&&(t[n]=l.toString()),o}))}canSerialize(){return"function"===this.type||this.serialize}parse(e){return null}static get(e,...t){return!e||b(e,this)?e:e[C]?e[C]:new B(e,...t)}}const R={D50:[.3457/.3585,1,.2958/.3585],D65:[.3127/.329,1,.3583/.329]};function _(e){return Array.isArray(e)?e:R[e]}function x(e,t,a,n={}){if(e=_(e),t=_(t),!e||!t)throw new TypeError(`Missing white point to convert ${e?"":"from"}${e||t?"":"/"}${t?"":"to"}`);if(e===t)return a;let o={W1:e,W2:t,XYZ:a,options:n};if(y.run("chromatic-adaptation-start",o),o.M||(o.W1===R.D65&&o.W2===R.D50?o.M=[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]]:o.W1===R.D50&&o.W2===R.D65&&(o.M=[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]])),y.run("chromatic-adaptation-end",o),o.M)return r(o.XYZ,o.M);throw new TypeError("Only Bradford CAT with white points D50 and D65 supported for now.")}function k(e,t){let r,a={str:String(e)?.trim(),options:t};if(y.run("parse-start",a),a.color)return a.color;a.parsed=function(e){if(!e)return;e=e.trim();let t=e.match(L.function);if(t){let e=[],r=[],a=!1,n=t[1].toLowerCase(),o=t[2].replace(L.singleArgument,((t,o)=>{let{value:s,meta:i}=function(e){let t={},r=e.match(L.unitValue)?.[0],a=t.raw=e;r?(t.type="%"===r?"<percentage>":"<angle>",t.unit=r,t.unitless=Number(a.slice(0,-r.length)),a=t.unitless*S[r]):L.number.test(a)?(a=Number(a),t.type="<number>"):"none"===a?a=null:"NaN"===a||"calc(NaN)"===a?(a=NaN,t.type="<number>"):t.type="<ident>";return{value:a,meta:t}}(o);return(t.startsWith("/")||"color"!==n&&3===e.length)&&(a=!0),e.push(s),r.push(i),""}));return{name:n,args:e,argMeta:r,lastAlpha:a,commas:o.includes(","),rawName:t[1],rawArgs:t[2]}}}(a.str);let n=a.options?a.options.parseMeta??a.options.meta:null;if(a.parsed){let t,o,s=a.parsed.name,i=a.parsed.args,l=i.map(((e,t)=>a.parsed.argMeta[t]?.type));if("color"===s){let r=i.shift();l.shift();let n=r.startsWith("--")?r.substring(2):`--${r}`,c=[r,n];if(t=O.findFormat({name:s,id:c,type:"function"}),!t){let t,o=r in O.registry?r:n;if(o in O.registry){let a=O.registry[o].formats?.color?.id;if(a){t=`Did you mean ${e.replace("color("+r,"color("+a)}?`}}throw new TypeError(`Cannot parse ${a.str}. `+(t??"Missing a plugin?"))}o=t.space,t.id.startsWith("--")&&!r.startsWith("--")&&w.warn(`${o.name} is a non-standard space and not currently supported in the CSS spec. Use prefixed color(${t.id}) instead of color(${r}).`),r.startsWith("--")&&!t.id.startsWith("--")&&w.warn(`${o.name} is a standard space and supported in the CSS spec. Use color(${t.id}) instead of prefixed color(${r}).`)}else t=O.findFormat({name:s,type:"function"}),o=t.space;n&&Object.assign(n,{format:t,formatId:t.name,types:l,commas:a.parsed.commas});let c=1;a.parsed.lastAlpha&&(c=a.parsed.args.pop(),n&&(n.alphaType=l.pop()));let u=t.coords.length;if(i.length!==u)throw new TypeError(`Expected ${u} coordinates for ${o.id} in ${a.str}), got ${i.length}`);i=t.coerceCoords(i,l),r={spaceId:o.id,coords:i,alpha:c}}else e:for(let e of O.all)for(let t in e.formats){let o=e.formats[t];if("custom"!==o.type)continue;if(o.test&&!o.test(a.str))continue;let s=e.getFormat(o),i=s.parse(a.str);if(i){n&&Object.assign(n,{format:s,formatId:t}),r=i;break e}}if(!r)throw new TypeError(`Could not parse ${e} as a color. Missing a plugin?`);return r.alpha=s(r.alpha)?r.alpha:void 0===r.alpha?1:m(0,r.alpha,1),r}const S={"%":.01,deg:1,grad:.9,rad:180/Math.PI,turn:360},L={function:/^([a-z]+)\(((?:calc\(NaN\)|.)+?)\)$/i,number:/^([-+]?(?:[0-9]*\.)?[0-9]+(e[-+]?[0-9]+)?)$/i,unitValue:RegExp(`(${Object.keys(S).join("|")})$`),singleArgument:/\/?\s*(none|NaN|calc\(NaN\)|[-+\w.]+(?:%|deg|g?rad|turn)?)/g};function E(e,t){if(Array.isArray(e))return e.map((e=>E(e,t)));if(!e)throw new TypeError("Empty color reference");a(e)&&(e=k(e,t));let r=e.space||e.spaceId;return"string"==typeof r&&(e.space=O.get(r)),void 0===e.alpha&&(e.alpha=1),e}class O{constructor(e){this.id=e.id,this.name=e.name,this.base=e.base?O.get(e.base):null,this.aliases=e.aliases,this.displaySpaces=e.displaySpaces?.map((e=>O.get(e))),this.bases=[];for(let e=this.base;e;e=e.base)this.bases.push(e);e.rgbGamut&&(this.rgbGamut=e.rgbGamut),e.linearGamut&&(this.linearGamut=e.linearGamut),this.base&&(this.fromBase=e.fromBase,this.toBase=e.toBase);let t=e.coords??this.base.coords;for(let e in t)"name"in t[e]||(t[e].name=e);this.coords=t;let r=e.white??this.base.white??"D65";this.white=_(r),this.formats=e.formats??{};for(let e in this.formats){let t=this.formats[e];t.type||="function",t.name||=e}this.formats.color?.id||(this.formats.color={...this.formats.color??{},id:e.cssId||this.id}),e.gamutSpace?this.gamutSpace="self"===e.gamutSpace?this:O.get(e.gamutSpace):this.isPolar?this.gamutSpace=this.base:this.gamutSpace=this,this.gamutSpace.isUnbounded&&(this.inGamut=(e,t)=>!0),this.referred=e.referred,Object.defineProperty(this,"path",{value:j(this).reverse(),writable:!1,enumerable:!0,configurable:!0}),y.run("colorspace-init-end",this)}inGamut(e,{epsilon:t=75e-6}={}){if(!this.equals(this.gamutSpace))return e=this.to(this.gamutSpace,e),this.gamutSpace.inGamut(e,{epsilon:t});let r=Object.values(this.coords);return e.every(((e,a)=>{let n=r[a];if("angle"!==n.type&&n.range){if(s(e))return!0;let[r,a]=n.range;return(void 0===r||e>=r-t)&&(void 0===a||e<=a+t)}return!0}))}get isUnbounded(){return Object.values(this.coords).every((e=>!("range"in e)))}get cssId(){return this.formats?.color?.id||this.id}get isPolar(){for(let e in this.coords)if("angle"===this.coords[e].type)return!0;return!1}getFormat(e){if(!e)return null;"default"===e?e=Object.values(this.formats)[0]:"string"==typeof e&&(e=this.formats[e]);let t=B.get(e,this);return t!==e&&e.name in this.formats&&(this.formats[e.name]=t),t}equals(e){return!!e&&(this===e||this.id===e||this.id===e.id)}to(e,t){if(1===arguments.length){const r=E(e);[e,t]=[r.space,r.coords]}if(e=O.get(e),this.equals(e))return t;t=t.map((e=>s(e)?0:e));let r,a,n=this.path,o=e.path;for(let e=0;e<n.length&&n[e].equals(o[e]);e++)r=n[e],a=e;if(!r)throw new Error(`Cannot convert between color spaces ${this} and ${e}: no connection space was found`);for(let e=n.length-1;e>a;e--)t=n[e].toBase(t);for(let e=a+1;e<o.length;e++)t=o[e].fromBase(t);return t}from(e,t){if(1===arguments.length){const r=E(e);[e,t]=[r.space,r.coords]}return(e=O.get(e)).to(this,t)}toString(){return`${this.name} (${this.id})`}getMinCoords(){let e=[];for(let t in this.coords){let r=this.coords[t],a=r.range||r.refRange;e.push(a?.min??0)}return e}static registry={};static get all(){return[...new Set(Object.values(O.registry))]}static register(e,t){if(1===arguments.length&&(e=(t=arguments[0]).id),t=this.get(t),this.registry[e]&&this.registry[e]!==t)throw new Error(`Duplicate color space registration: '${e}'`);if(this.registry[e]=t,1===arguments.length&&t.aliases)for(let e of t.aliases)this.register(e,t);return t}static get(e,...t){if(!e||b(e,this))return e;if("string"===n(e)){let t=O.registry[e.toLowerCase()];if(!t)throw new TypeError(`No color space found with id = "${e}"`);return t}if(t.length)return O.get(...t);throw new TypeError(`${e} is not a valid color space`)}static findFormat(e,t=O.all){if(!e)return null;"string"==typeof e&&(e={name:e});for(let r of t)for(let[t,a]of Object.entries(r.formats)){a.name??=t,a.type??="function";let n=!(e.name&&a.name!==e.name||e.type&&a.type!==e.type);if(e.id){let t=a.ids||[a.id],r=Array.isArray(e.id)?e.id:[e.id];n&&=r.some((e=>t.includes(e)))}if(n){let e=B.get(a,r);return e!==a&&(r.formats[a.name]=e),e}}return null}static resolveCoord(e,t){let r,a,o=n(e);if("string"===o?e.includes(".")?[r,a]=e.split("."):[r,a]=[,e]:Array.isArray(e)?[r,a]=e:(r=e.space,a=e.coordId),r=O.get(r),r||(r=t),!r)throw new TypeError(`Cannot resolve coordinate reference ${e}: No color space specified and relative references are not allowed here`);if(o=n(a),"number"===o||"string"===o&&a>=0){let e=Object.entries(r.coords)[a];if(e)return{space:r,id:e[0],index:a,...e[1]}}r=O.get(r);let s=a.toLowerCase(),i=0;for(let e in r.coords){let t=r.coords[e];if(e.toLowerCase()===s||t.name?.toLowerCase()===s)return{space:r,id:e,index:i,...t};i++}throw new TypeError(`No "${a}" coordinate found in ${r.name}. Its coordinates are: ${Object.keys(r.coords).join(", ")}`)}static DEFAULT_FORMAT={type:"functions",name:"color"}}function j(e){let t=[e];for(let r=e;r=r.base;)t.push(r);return t}var z=new O({id:"xyz-d65",name:"XYZ D65",coords:{x:{refRange:[0,1],name:"X"},y:{refRange:[0,1],name:"Y"},z:{refRange:[0,1],name:"Z"}},white:"D65",formats:{color:{ids:["xyz-d65","xyz"]}},aliases:["xyz"]});class P extends O{constructor(e){e.coords||(e.coords={r:{range:[0,1],name:"Red"},g:{range:[0,1],name:"Green"},b:{range:[0,1],name:"Blue"}}),e.base||(e.base=z),e.toXYZ_M&&e.fromXYZ_M&&(e.toBase??=t=>{let a=r(t,e.toXYZ_M);return this.white!==this.base.white&&(a=x(this.white,this.base.white,a)),a},e.fromBase??=t=>r(t=x(this.base.white,this.white,t),e.fromXYZ_M)),e.referred??="display",super(e)}}function I(e,t={}){if(Array.isArray(e))return e.map((e=>I(e,t)));let{cssProperty:r="background-color",element:n,...o}=t,s=null;try{return E(e,o)}catch(e){s=e}let{CSS:i,getComputedStyle:l}=globalThis;if(a(e)&&n&&i&&l&&i.supports(r,e)){let t=n.style[r];e!==t&&(n.style[r]=e);let a=l(n).getPropertyValue(r);if(e!==t&&(n.style[r]=t),a!==e)try{return E(a,o)}catch(e){s=e}else s={message:"Color value is a valid CSS color, but it could not be resolved :("}}return t.errorMeta&&(t.errorMeta.error=s),null}function A(e,t){e=E(e);let r,a=O.get(t,t?.space),n=t?.precision;return r=!a||e.space.equals(a)?e.coords.slice():a.from(e),void 0===n?r:r.map((e=>l(e,n)))}function H(e,t){if(e=E(e),"alpha"===t)return e.alpha??1;let{space:r,index:a}=O.resolveCoord(t,e.space);return A(e,r)[a]}function $(e,t,r,a){return e=E(e),Array.isArray(t)&&([t,r,a]=[e.space,t,r]),t=O.get(t),e.coords=t===e.space?r.slice():t.to(e.space,r),void 0!==a&&(e.alpha=a),e}function q(e,t,r){if(e=E(e),2===arguments.length&&"object"===n(arguments[1])){let t=arguments[1];for(let r in t)q(e,r,t[r])}else if("function"==typeof r&&(r=r(H(e,t))),"alpha"===t)e.alpha=r;else{let{space:a,index:n}=O.resolveCoord(t,e.space),o=A(e,a);o[n]=r,$(e,a,o)}return e}$.returns="color",q.returns="color";var G=new O({id:"xyz-d50",name:"XYZ D50",white:"D50",base:z,fromBase:e=>x(z.white,"D50",e),toBase:e=>x("D50",z.white,e)});const D=216/24389,T=24/116,W=24389/27;let N=R.D50;var F=new O({id:"lab",name:"Lab",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:N,base:G,fromBase(e){let t=e.map(((e,t)=>e/N[t])).map((e=>e>D?Math.cbrt(e):(W*e+16)/116));return[116*t[1]-16,500*(t[0]-t[1]),200*(t[1]-t[2])]},toBase(e){let[t,r,a]=e,n=[];return n[1]=(t+16)/116,n[0]=r/500+n[1],n[2]=n[1]-a/200,[n[0]>T?Math.pow(n[0],3):(116*n[0]-16)/W,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/W,n[2]>T?Math.pow(n[2],3):(116*n[2]-16)/W].map(((e,t)=>e*N[t]))},formats:{lab:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <percentage>"]}}});function X(e){return"number"!=typeof e?e:(e%360+360)%360}function Y(e,t){let[r,a]=t,n=s(r),o=s(a);if(n&&o)return[r,a];if(n?r=a:o&&(a=r),"raw"===e)return t;r=X(r),a=X(a);let i=a-r;return"increasing"===e?i<0&&(a+=360):"decreasing"===e?i>0&&(r+=360):"longer"===e?-180<i&&i<180&&(i>0?r+=360:a+=360):"shorter"===e&&(i>180?r+=360:i<-180&&(a+=360)),[r,a]}var Z=new O({id:"lch",name:"LCH",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,150],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:F,fromBase(e){if(void 0===this.ε){let e=Object.values(this.base.coords)[1].refRange,t=e[1]-e[0];this.ε=t/1e5}let[t,r,a]=e,n=Math.abs(r)<this.ε&&Math.abs(a)<this.ε,o=n?null:X(180*Math.atan2(a,r)/Math.PI);return[t,n?0:Math.sqrt(r**2+a**2),o]},toBase(e){let[t,r,a]=e,n=null,o=null;return s(a)||(r=r<0?0:r,n=r*Math.cos(a*Math.PI/180),o=r*Math.sin(a*Math.PI/180)),[t,n,o]},formats:{lch:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <angle>"]}}});const J=25**7,K=Math.PI,U=180/K,V=K/180;function Q(e){const t=e*e;return t*t*t*e}function ee(e,t,{kL:r=1,kC:a=1,kH:n=1}={}){[e,t]=E([e,t]);let[o,s,i]=F.from(e),l=Z.from(F,[o,s,i])[1],[c,u,h]=F.from(t),m=Z.from(F,[c,u,h])[1];l<0&&(l=0),m<0&&(m=0);let f=Q((l+m)/2),p=.5*(1-Math.sqrt(f/(f+J))),d=(1+p)*s,g=(1+p)*u,b=Math.sqrt(d**2+i**2),M=Math.sqrt(g**2+h**2),y=0===d&&0===i?0:Math.atan2(i,d),v=0===g&&0===h?0:Math.atan2(h,g);y<0&&(y+=2*K),v<0&&(v+=2*K),y*=U,v*=U;let C,B=c-o,R=M-b,_=v-y,x=y+v,k=Math.abs(_);b*M==0?C=0:k<=180?C=_:_>180?C=_-360:_<-180?C=_+360:w.warn("the unthinkable has happened");let S,L=2*Math.sqrt(M*b)*Math.sin(C*V/2),O=(o+c)/2,j=(b+M)/2,z=Q(j);S=b*M==0?x:k<=180?x/2:x<360?(x+360)/2:(x-360)/2;let P=(O-50)**2,I=1+.015*P/Math.sqrt(20+P),A=1+.045*j,H=1;H-=.17*Math.cos((S-30)*V),H+=.24*Math.cos(2*S*V),H+=.32*Math.cos((3*S+6)*V),H-=.2*Math.cos((4*S-63)*V);let $=1+.015*j*H,q=30*Math.exp(-1*((S-275)/25)**2),G=2*Math.sqrt(z/(z+J)),D=(B/(r*I))**2;return D+=(R/(a*A))**2,D+=(L/(n*$))**2,D+=-1*Math.sin(2*q*V)*G*(R/(a*A))*(L/(n*$)),Math.sqrt(D)}const te=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],re=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],ae=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],ne=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]];var oe=new O({id:"oklab",name:"Oklab",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:"D65",base:z,fromBase(e){let t=r(e,te);return t[0]=Math.cbrt(t[0]),t[1]=Math.cbrt(t[1]),t[2]=Math.cbrt(t[2]),r(t,ae,t)},toBase(e){let t=r(e,ne);return t[0]=t[0]**3,t[1]=t[1]**3,t[2]=t[2]**3,r(t,re,t)},formats:{oklab:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <percentage>"]}}});function se(e,t){[e,t]=E([e,t]);let[r,a,n]=oe.from(e),[o,s,i]=oe.from(t),l=r-o,c=a-s,u=n-i;return Math.sqrt(l**2+c**2+u**2)}function ie(e,t,{epsilon:r=75e-6}={}){e=E(e),t||(t=e.space),t=O.get(t);let a=e.coords;return t!==e.space&&(a=t.from(e)),t.inGamut(a,{epsilon:r})}var le=new O({id:"oklch",name:"OkLCh",coords:{l:{refRange:[0,1],name:"Lightness"},c:{refRange:[0,.4],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:oe,fromBase:Z.fromBase,toBase:Z.toBase,formats:{oklch:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <angle>"]}}});function ce(e){return{space:e.space,coords:e.coords.slice(),alpha:e.alpha}}function ue(e,t,r="lab"){let a=(r=O.get(r)).from(e),n=r.from(t);return Math.sqrt(a.reduce(((e,t,r)=>{let a=n[r];return s(t)||s(a)?e:e+(a-t)**2}),0))}const he=Math.PI/180;var me=new O({id:"xyz-abs-d65",cssId:"--xyz-abs-d65",name:"Absolute XYZ D65",coords:{x:{refRange:[0,9504.7],name:"Xa"},y:{refRange:[0,1e4],name:"Ya"},z:{refRange:[0,10888.3],name:"Za"}},base:z,fromBase:e=>e.map((e=>203*e)),toBase:e=>e.map((e=>e/203))});const fe=1.15,pe=.66,de=2610/16384,ge=16384/2610,be=.8359375,Me=2413/128,ye=18.6875,we=1.7*2523/32,ve=32/(1.7*2523),Ce=-.56,Be=16295499532821565e-27,Re=[[.41478972,.579999,.014648],[-.20151,1.120649,.0531008],[-.0166008,.2648,.6684799]],_e=[[1.9242264357876067,-1.0047923125953657,.037651404030618],[.35031676209499907,.7264811939316552,-.06538442294808501],[-.09098281098284752,-.3127282905230739,1.5227665613052603]],xe=[[.5,.5,0],[3.524,-4.066708,.542708],[.199076,1.096799,-1.295875]],ke=[[1,.13860504327153927,.05804731615611883],[1,-.1386050432715393,-.058047316156118904],[1,-.09601924202631895,-.811891896056039]];var Se=new O({id:"jzazbz",name:"Jzazbz",coords:{jz:{refRange:[0,1],name:"Jz"},az:{refRange:[-.21,.21]},bz:{refRange:[-.21,.21]}},base:me,fromBase(e){let[t,a,n]=e,o=r([fe*t-(fe-1)*n,pe*a-(pe-1)*t,n],Re).map((function(e){let t=be+Me*p(e/1e4,de),r=1+ye*p(e/1e4,de);return p(t/r,we)})),[s,i,l]=r(o,xe);return[(1+Ce)*s/(1+Ce*s)-Be,i,l]},toBase(e){let[t,a,n]=e,o=r([(t+Be)/(1+Ce-Ce*(t+Be)),a,n],ke).map((function(e){let t=be-p(e,ve),r=ye*p(e,ve)-Me;return 1e4*p(t/r,ge)})),[s,i,l]=r(o,_e),c=(s+(fe-1)*l)/fe;return[c,(i+(pe-1)*c)/pe,l]},formats:{jzazbz:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <percentage>"]}}}),Le=new O({id:"jzczhz",name:"JzCzHz",coords:{jz:{refRange:[0,1],name:"Jz"},cz:{refRange:[0,.26],name:"Chroma"},hz:{refRange:[0,360],type:"angle",name:"Hue"}},base:Se,fromBase:Z.fromBase,toBase:Z.toBase,formats:{jzczhz:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <angle>"]}}});const Ee=.8359375,Oe=2413/128,je=18.6875,ze=2610/16384,Pe=2523/32,Ie=16384/2610,Ae=32/2523,He=[[.3592832590121217,.6976051147779502,-.035891593232029],[-.1920808463704993,1.100476797037432,.0753748658519118],[.0070797844607479,.0748396662186362,.8433265453898765]],$e=[[.5,.5,0],[6610/4096,-13613/4096,7003/4096],[17933/4096,-17390/4096,-543/4096]],qe=[[.9999999999999998,.0086090370379328,.111029625003026],[.9999999999999998,-.0086090370379328,-.1110296250030259],[.9999999999999998,.5600313357106791,-.3206271749873188]],Ge=[[2.0701522183894223,-1.3263473389671563,.2066510476294053],[.3647385209748072,.6805660249472273,-.0453045459220347],[-.0497472075358123,-.0492609666966131,1.1880659249923042]];var De=new O({id:"ictcp",name:"ICTCP",coords:{i:{refRange:[0,1],name:"I"},ct:{refRange:[-.5,.5],name:"CT"},cp:{refRange:[-.5,.5],name:"CP"}},base:me,fromBase:e=>function(e){let t=e.map((function(e){return((Ee+Oe*(e/1e4)**ze)/(1+je*(e/1e4)**ze))**Pe}));return r(t,$e)}(r(e,He)),toBase(e){let t=function(e){let t=r(e,qe),a=t.map((function(e){return 1e4*(Math.max(e**Ae-Ee,0)/(Oe-je*e**Ae))**Ie}));return a}(e);return r(t,Ge)},formats:{ictcp:{coords:["<percentage> | <number>","<number> | <percentage>","<number> | <percentage>"]}}});const Te=R.D65,We=1/.42,Ne=2*Math.PI,Fe=[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],Xe=[[1.8620678550872327,-1.0112546305316843,.14918677544445175],[.38752654323613717,.6214474419314753,-.008973985167612518],[-.015841498849333856,-.03412293802851557,1.0499644368778496]],Ye=[[460,451,288],[460,-891,-261],[460,-220,-6300]],Ze={dark:[.8,.525,.8],dim:[.9,.59,.9],average:[1,.69,1]},Je={h:[20.14,90,164.25,237.53,380.14],e:[.8,.7,1,1.2,.8],H:[0,100,200,300,400]},Ke=180/Math.PI,Ue=Math.PI/180;function Ve(e,t){const r=e.map((e=>{const r=p(t*Math.abs(e)*.01,.42);return 400*f(r,e)/(r+27.13)}));return r}function Qe(e,t,a,n,o){const s={};s.discounting=o,s.refWhite=e,s.surround=n;const i=e.map((e=>100*e));s.la=t,s.yb=a;const l=i[1],u=r(i,Fe);let h=Ze[s.surround];const m=h[0];s.c=h[1],s.nc=h[2];const f=(1/(5*s.la+1))**4;s.fl=f*s.la+.1*(1-f)*(1-f)*Math.cbrt(5*s.la),s.flRoot=s.fl**.25,s.n=s.yb/l,s.z=1.48+Math.sqrt(s.n),s.nbb=.725*s.n**-.2,s.ncb=s.nbb;const p=Math.max(Math.min(m*(1-1/3.6*Math.exp((-s.la-42)/92)),1),0);s.dRgb=u.map((e=>c(1,l/e,p))),s.dRgbInv=s.dRgb.map((e=>1/e));const d=u.map(((e,t)=>e*s.dRgb[t])),g=Ve(d,s.fl);return s.aW=s.nbb*(2*g[0]+g[1]+.05*g[2]),s}const et=Qe(Te,64/Math.PI*.2,20,"average",!1);function tt(e,t){if(!(void 0!==e.J^void 0!==e.Q))throw new Error("Conversion requires one and only one: 'J' or 'Q'");if(!(void 0!==e.C^void 0!==e.M^void 0!==e.s))throw new Error("Conversion requires one and only one: 'C', 'M' or 's'");if(!(void 0!==e.h^void 0!==e.H))throw new Error("Conversion requires one and only one: 'h' or 'H'");if(0===e.J||0===e.Q)return[0,0,0];let a=0;a=void 0!==e.h?X(e.h)*Ue:function(e){let t=(e%400+400)%400;const r=Math.floor(.01*t);t%=100;const[a,n]=Je.h.slice(r,r+2),[o,s]=Je.e.slice(r,r+2);return X((t*(s*a-o*n)-100*a*s)/(t*(s-o)-100*s))}(e.H)*Ue;const n=Math.cos(a),o=Math.sin(a);let s=0;void 0!==e.J?s=.1*p(e.J,.5):void 0!==e.Q&&(s=.25*t.c*e.Q/((t.aW+4)*t.flRoot));let i=0;void 0!==e.C?i=e.C/s:void 0!==e.M?i=e.M/t.flRoot/s:void 0!==e.s&&(i=4e-4*e.s**2*(t.aW+4)/t.c);const l=p(i*Math.pow(1.64-Math.pow(.29,t.n),-.73),10/9),c=.25*(Math.cos(a+2)+3.8),u=t.aW*p(s,2/t.c/t.z),h=5e4/13*t.nc*t.ncb*c,m=u/t.nbb,g=23*(m+.305)*d(l,23*h+l*(11*n+108*o)),b=function(e,t){const r=100/t*2588.068098016295;return e.map((e=>{const t=Math.abs(e);return f(r*p(t/(400-t),We),e)}))}(r([m,g*n,g*o],Ye).map((e=>1*e/1403)),t.fl);return r(b.map(((e,r)=>e*t.dRgbInv[r])),Xe).map((e=>e/100))}function rt(e,t){const a=e.map((e=>100*e)),n=Ve(r(a,Fe).map(((e,r)=>e*t.dRgb[r])),t.fl),o=n[0]+(-12*n[1]+n[2])/11,s=(n[0]+n[1]-2*n[2])/9,i=(Math.atan2(s,o)%Ne+Ne)%Ne,l=.25*(Math.cos(i+2)+3.8),c=p(5e4/13*t.nc*t.ncb*d(l*Math.sqrt(o**2+s**2),n[0]+n[1]+1.05*n[2]+.305),.9)*Math.pow(1.64-Math.pow(.29,t.n),.73),u=p(t.nbb*(2*n[0]+n[1]+.05*n[2])/t.aW,.5*t.c*t.z),h=100*p(u,2),m=4/t.c*u*(t.aW+4)*t.flRoot,f=c*u,b=f*t.flRoot,M=X(i*Ke),y=function(e){let t=X(e);t<=Je.h[0]&&(t+=360);const r=g(Je.h,t)-1,[a,n]=Je.h.slice(r,r+2),[o,s]=Je.e.slice(r,r+2),i=(t-a)/o;return Je.H[r]+100*i/(i+(n-t)/s)}(M);return{J:h,C:f,h:M,s:50*p(t.c*c/(t.aW+4),.5),Q:m,M:b,H:y}}var at=new O({id:"cam16-jmh",cssId:"--cam16-jmh",name:"CAM16-JMh",coords:{j:{refRange:[0,100],name:"J"},m:{refRange:[0,105],name:"Colorfulness"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:z,fromBase(e){void 0===this.ε&&(this.ε=Object.values(this.coords)[1].refRange[1]/1e5);const t=rt(e,et),r=Math.abs(t.M)<this.ε;return[t.J,r?0:t.M,r?null:t.h]},toBase:e=>tt({J:e[0],M:e[1],h:e[2]},et)});const nt=R.D65,ot=216/24389,st=24389/27;function it(e){return e>8?Math.pow((e+16)/116,3):e/st}function lt(e,t){const r=116*((a=e[1])>ot?Math.cbrt(a):(st*a+16)/116)-16;var a;if(0===r)return[0,0,0];const n=rt(e,ct);return[X(n.h),n.C,r]}const ct=Qe(nt,200/Math.PI*it(50),100*it(50),"average",!1);var ut=new O({id:"hct",name:"HCT",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},c:{refRange:[0,145],name:"Colorfulness"},t:{refRange:[0,100],name:"Tone"}},base:z,fromBase(e){void 0===this.ε&&(this.ε=Object.values(this.coords)[1].refRange[1]/1e5);let t=lt(e);return t[1]<this.ε&&(t[1]=0,t[0]=null),t},toBase:e=>function(e,t){let[r,a,n]=e,o=[],s=0;if(0===n)return[0,0,0];let i=it(n);s=n>0?.00379058511492914*n**2+.608983189401032*n+.9155088574762233:9514440756550361e-21*n**2+.08693057439788597*n-21.928975842194614;let l=0,c=1/0,u=[0,0,0];for(;l<=15;){o=tt({J:s,C:a,h:r},t);const e=Math.abs(o[1]-i);if(e<c){if(e<=2e-12)return o;u=o,c=e}s-=(o[1]-i)*s/(2*o[1]),l+=1}return u}(e,ct),formats:{color:{id:"--hct",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});const ht=Math.PI/180,mt=[1,.007,.0228];function ft(e){e[1]<0&&(e=ut.fromBase(ut.toBase(e)));const t=Math.log(Math.max(1+mt[2]*e[1]*ct.flRoot,1))/mt[2],r=e[0]*ht,a=t*Math.cos(r),n=t*Math.sin(r);return[e[2],a,n]}const{cos:pt,sin:dt,sqrt:gt,atan2:bt,exp:Mt,abs:yt,pow:wt,PI:vt}=Math,Ct=[[1.000042977349746,20718877053183e-18,-4361018085669474e-20],[26946201090235744e-21,.9999906145080147,-14898828405401079e-21],[-7941753620756204e-21,12875204405137254e-21,.9997859822609763]],Bt=[[.9999570254019492,-2071874272730964e-20,4361733292468361e-20],[-2694517763358666e-20,1.000009385946497,1490098223546482e-20],[7943459292954202e-21,-1287824596735154e-20,1.000214063706999]],Rt=[[.7212986433113499,.45344826541531813,-.19288975751942616],[-.788211869495579,1.795241376757236,.0876172451181785],[-.0917700599912156,.45765588659459255,1.2922045513917677]],_t=[[1.065107295808859,-.3150044075301121,.1803492381741039],[.4721107713837796,.4271995765962455,.04150680489380985],[-.09156391926309541,-.1736709363194979,.7719790382558294]],xt=[.47229813098762524,.5149184096354483,.5113233386366979],kt=[2.1173067060606283,1.9420552485353544,1.9557096741686448],St=[[-.26355622180094096,.4168322883703174,.4926763141656403],[1.8897570508777322,-3.1212232034205774,1.0421666921060384],[.3585108617962056,1.7694028193790368,-1.4120626067695372]],Lt=[[.9183897822815021,.5232051237088666,.7065804598090856],[1.0899090574433026,.07005324849041904,.4319776874787044],[1.598895729264209,.22061850068770233,.012506037355220951]],Et=-.02833024015436984,Ot=-.21131429516166544,jt=.2189784817615645,zt=-.06871898981942523,Pt=.005506053349515315,It=-.0641329861299175,At=-.053592461436994296,Ht=-.00954137464208059,$t=.2676231133101982,qt=.8934892185255707,Gt=.7173169828841472,Dt=.6915224124600773,Tt=.48647127559605596,Wt=.9853124591201782,Nt=.5385456675962418,Ft=.12508858146241716,Xt=.6768950256217603,Yt=-.4963251525324449,Zt=-.09564696283240552,Jt=-.029053748937210654,Kt=1.3346761652952872,Ut=-.1698908144723919,Vt=-28.2*vt/180,Qt=pt(Vt),er=dt(Vt);function tr(e){return Et*pt(e)+Ot*dt(e)+jt*pt(2*e)+zt*dt(2*e)+Pt*pt(3*e)+It*dt(3*e)+At*pt(4*e)+Ht*dt(4*e)}function rr(e){return-Et*dt(e)+Ot*pt(e)+-2*jt*dt(2*e)+2*zt*pt(2*e)+-3*Pt*dt(3*e)+3*It*pt(3*e)+-4*At*dt(4*e)+4*Ht*pt(4*e)}function ar(e){let t=-.195370576218515*pt(e)+.5330819227283227*dt(e)+.08863325582067766*pt(2*e)+.9365540137751136*dt(2*e)+.13789738139719568*pt(3*e)+.061650260197979936*dt(3*e)+.0641970862504494*pt(4*e)+-.027401052793571013*dt(4*e);return Mt(t)}function nr(e){let t=e-.5;return Mt(m(-30,-1.5239477450767043*t+-1.751157310240011*t*t,30))}function or(e,t){let r=-.43576378069144767*pt(e)+1.060094063845983*dt(e)+.47931193034584496*pt(2*e)+-.2622579649434462*dt(2*e);return Mt(m(-30,(t-.5)*r,30))}function sr(e){let t=.13610794232685908*pt(e)+.1168702235362288*dt(e)+-.01617739641422492*pt(2*e)+.038145638815030566*dt(2*e);return Mt(t)}function ir(e){return 1+-.09900209889026965*pt(e)+.059635520647228726*dt(e)+-.013586499967803128*pt(2*e)+.2253393118474472*dt(2*e)}const lr=function(e){let t=r(e,Ct),[a,n,o]=r(t,Rt),s=p(a,xt[0]),i=p(n,xt[1]),l=p(o,xt[2]),[c,u,h]=r([s,i,l],St),f=bt(h,u),d=gt(u*u+h*h),g=f+tr(f);u=d*pt(g),h=d*dt(g);let b=gt(u*u+h*h),M=$t*wt(b,m(.01,qt,10)),y=bt(h,u);c+=M*(1+Gt*pt(y)+Dt*dt(y)+Tt*pt(2*y)+Wt*dt(2*y)),f=bt(h,u),c=function(e,t){let r=e*(1-e),a=e+Nt*r+Ft*r*(.5-e)+Xt*r*r;return a+=r*(Yt*pt(t)+Zt*dt(t)),a}(c,f),f=bt(h,u),c=function(e,t){let r=Jt+Kt*pt(t)+Ut*dt(t),a=e<1?1-e:0;return e*Mt(m(-30,r*e*a*a,30))}(c,f),f=bt(h,u);let w=ar(f);u*=w,h*=w,f=bt(h,u),d=gt(u*u+h*h);let v=ir(f),C=d>0?wt(d,v):0;u=C*pt(f),h=C*dt(f);let B=nr(c);u*=B,h*=B,f=bt(h,u);let R=or(f,c);return u*=R,h*=R,f=bt(h,u),c*=sr(f),[c,u*Qt-h*er,u*er+h*Qt]},cr=function(e){let[t,a,n]=e,o=-a*er+n*Qt;a=a*Qt+n*er,n=o;let s=bt(n,a);t/=sr(s),s=bt(n,a);let i=or(s,t);a/=i,n/=i;let l=nr(t);a/=l,n/=l,s=bt(n,a);let c=gt(a*a+n*n),u=ir(s),h=c>0?wt(c,1/u):0;a=h*pt(s),n=h*dt(s),s=bt(n,a);let f=ar(s);a/=f,n/=f,s=bt(n,a),t=function(e,t){let r=Jt+Kt*pt(t)+Ut*dt(t),a=e;for(let t=0;t<12;t++){let t=a<1?1-a:0,n=Mt(m(-30,r*a*t*t,30)),o=a*n-e,s=n*(1+a*(r*t*(1-3*a)));yt(s)<1e-10&&(s=1),a-=o/s}return a}(t,s),s=bt(n,a),t=function(e,t){let r=Yt*pt(t)+Zt*dt(t),a=e;for(let t=0;t<15;t++){let t=a*(1-a),n=1-2*a,o=a+(Nt+r)*t+Ft*t*(.5-a)+Xt*t*t-e,s=1+(Nt+r)*n+Ft*(n*(.5-a)-t)+2*Xt*t*n;yt(s)<1e-10&&(s=1),a-=o/s}return a}(t,s);let d=gt(a*a+n*n),g=$t*wt(d,m(.01,qt,10)),b=bt(n,a);t-=g*(1+Gt*pt(b)+Dt*dt(b)+Tt*pt(2*b)+Wt*dt(2*b));let M=bt(n,a);c=gt(a*a+n*n);let y=M;for(let e=0;e<8;e++){let e=y+tr(y)-M,t=1+rr(y);yt(t)<1e-10&&(t=1),y-=e/t}a=c*pt(y),n=c*dt(y);let[w,v,C]=r([t,a,n],Lt),B=r([p(w,kt[0]),p(v,kt[1]),p(C,kt[2])],_t);return r(B,Bt)};var ur=new O({id:"helmlab-metric",name:"Helmlab MetricSpace",cssId:"--helmlab-metric",coords:{l:{refRange:[0,1.6],name:"Lightness"},a:{refRange:[-1.5,1.5]},b:{refRange:[-1.5,1.5]}},white:"D65",base:z,fromBase:e=>lr(e),toBase:e=>cr(e)});var hr={deltaE76:function(e,t){return ue(e,t,"lab")},deltaECMC:function(e,t,{l:r=2,c:a=1}={}){[e,t]=E([e,t]);let[n,o,i]=F.from(e),[,l,c]=Z.from(F,[n,o,i]),[u,h,m]=F.from(t),f=Z.from(F,[u,h,m])[1];l<0&&(l=0),f<0&&(f=0);let p=n-u,d=l-f,g=(o-h)**2+(i-m)**2-d**2,b=.511;n>=16&&(b=.040975*n/(1+.01765*n));let M,y=.0638*l/(1+.0131*l)+.638;s(c)&&(c=0),M=c>=164&&c<=345?.56+Math.abs(.2*Math.cos((c+168)*he)):.36+Math.abs(.4*Math.cos((c+35)*he));let w=Math.pow(l,4),v=Math.sqrt(w/(w+1900)),C=(p/(r*b))**2;return C+=(d/(a*y))**2,C+=g/(y*(v*M+1-v))**2,Math.sqrt(C)},deltaE2000:ee,deltaEJz:function(e,t){[e,t]=E([e,t]);let[r,a,n]=Le.from(e),[o,i,l]=Le.from(t),c=r-o,u=a-i;s(n)&&s(l)?(n=0,l=0):s(n)?n=l:s(l)&&(l=n);let h=n-l,m=2*Math.sqrt(a*i)*Math.sin(h/2*(Math.PI/180));return Math.sqrt(c**2+u**2+m**2)},deltaEITP:function(e,t){[e,t]=E([e,t]);let[r,a,n]=De.from(e),[o,s,i]=De.from(t);return 720*Math.sqrt((r-o)**2+.25*(a-s)**2+(n-i)**2)},deltaEOK:se,deltaEOK2:function(e,t){[e,t]=E([e,t]);let[r,a,n]=oe.from(e),[o,s,i]=oe.from(t),l=r-o,c=2*(a-s),u=2*(n-i);return Math.sqrt(l**2+c**2+u**2)},deltaEHCT:function(e,t){[e,t]=E([e,t]);let[r,a,n]=ft(ut.from(e)),[o,s,i]=ft(ut.from(t));return Math.sqrt((r-o)**2+(a-s)**2+(n-i)**2)},deltaEHelmlab:function(e,t){[e,t]=E([e,t]);let[r,a,n]=ur.from(e),[o,s,i]=ur.from(t),l=((r-o)**2/(1+-.9155125151657894*(.5*(r+o)-.5)**2)**2+3.966003089807536*((a-s)**2+(n-i)**2)/(1+2.9268353744941558*(.5*(Math.sqrt(a**2+n**2)+Math.sqrt(s**2+i**2))))**2)**.9868540585202484;return(l/(1+52.473130649294724*l))**.47897301074925214}};const mr={hct:{method:"hct.c",jnd:2,deltaEMethod:"hct",blackWhiteClamp:{}},"hct-tonal":{method:"hct.c",jnd:0,deltaEMethod:"hct",blackWhiteClamp:{channel:"hct.t",min:0,max:100}}};function fr(e,{method:t=w.gamut_mapping,space:r,deltaEMethod:n="",jnd:o=2,blackWhiteClamp:i,min:l,max:c}={}){if(e=E(e),a(arguments[1])?r=arguments[1]:r||(r=e.space),ie(e,r=O.get(r),{epsilon:0}))return e;let u;if("css"===t)u=function(e,{space:t}={}){const r=.02,a=1e-4;e=E(e),t||(t=e.space);if(t=O.get(t),t.isUnbounded)return gr(e,t);const n=gr(e,le);let o=n.coords[0];if(o>=1){const r=gr(pr.WHITE,t);return r.alpha=e.alpha,gr(r,t)}if(o<=0){const r=gr(pr.BLACK,t);return r.alpha=e.alpha,gr(r,t)}if(ie(n,t,{epsilon:0}))return gr(n,t);function s(e){const r=gr(e,t),a=Object.values(t.coords);return r.coords=r.coords.map(((e,t)=>{if("range"in a[t]){const[r,n]=a[t].range;return m(r,e,n)}return e})),r}let i=0,l=n.coords[1],c=!0,u=ce(n),h=s(u),f=se(h,u);if(f<r)return h;for(;l-i>a;){const e=(i+l)/2;if(u.coords[1]=e,c&&ie(u,t,{epsilon:0}))i=e;else if(h=s(u),f=se(h,u),f<r){if(r-f<a)break;c=!1,i=e}else l=e}return h}(e,{space:r});else if("raytrace"===t)u=function(e,{space:t}={}){e=E(e),t||(t=e.space);if(t=O.get(t),t.isUnbounded)return gr(e,t);let r=gr(e,le),[a,n,o]=r.coords;if(a>=1){const r=gr(pr.WHITE,t);return r.alpha=e.alpha,gr(r,t)}if(a<=0){const r=gr(pr.BLACK,t);return r.alpha=e.alpha,gr(r,t)}const s=t,i=t.rgbGamut;void 0!==i&&(t=i);if(!b(t,P))throw Error("An RGB gamut is required");let[l,c]=Object.values(t.coords)[0].range,u=[c,c,c];const h=t.linearGamut;if(void 0!==h){let r=gr({space:t,coords:u,alpha:e.alpha},h);c=r.coords[0],u=[c,c,c],t=h,l=Object.values(t.coords)[0].range[0]}let f=[l,l,l],p=gr(r,t);if(!p.coords.every((e=>l<=e&&e<=c))){let e=gr({space:le,coords:[a,0,o]},t).coords;const r=l+1e-6,n=c-1e-6;let s=p.coords;for(let i=0;i<4;i++){if(i){const e=gr(p,le);e.coords[0]=a,e.coords[2]=o,p=gr(e,t)}const l=dr(e,p.coords,f,u);if(0===l.length){p.coords=[...s];break}i&&p.coords.every((e=>r<e&&e<n))&&(e=[...p.coords]),s=l,p.coords=[...l]}}p=gr(p,s);const d=Object.values(s.coords);return p.coords=p.coords.map(((e,t)=>{if("range"in d[t]){const[r,a]=d[t].range;return m(r,e,a)}return e})),p}(e,{space:r});else{if("clip"!==t){Object.prototype.hasOwnProperty.call(mr,t)&&({method:t,jnd:o,deltaEMethod:n,blackWhiteClamp:i}=mr[t]);let a=ee;if(""!==n)for(let e in hr)if("deltae"+n.toLowerCase()===e.toLowerCase()){a=hr[e];break}0===o&&(o=1e-16);let h=fr(gr(e,r),{method:"clip",space:r});if(a(e,h)>o){if(i&&3===Object.keys(i).length){let t=O.resolveCoord(i.channel),r=H(gr(e,t.space),t.id);if(s(r)&&(r=0),r>=i.max)return gr({space:"xyz-d65",coords:R.D65},e.space);if(r<=i.min)return gr({space:"xyz-d65",coords:[0,0,0]},e.space)}let n=O.resolveCoord(t),h=n.space,m=n.id,f=gr(e,h);f.coords.forEach(((e,t)=>{s(e)&&(f.coords[t]=0)}));let p=n.range||n.refRange;l??=p[0];let d=function(e){const t=e?Math.floor(Math.log10(Math.abs(e))):0;return Math.max(parseFloat("1e"+(t-2)),1e-6)}(o),g=l,b=Math.min(H(f,m),c??1/0);for(q(f,m,b);b-g>d;){let e=ce(f);e=fr(e,{space:r,method:"clip"}),a(f,e)-o<d?g=H(f,m):b=H(f,m),q(f,m,(g+b)/2)}u=gr(f,r)}else u=h}else u=gr(e,r);if("clip"===t||!ie(u,r,{epsilon:0})){let e=Object.values(r.coords).map((e=>e.range||[]));u.coords=u.coords.map(((t,r)=>{let[a,n]=e[r];return void 0!==a&&(t=Math.max(a,t)),void 0!==n&&(t=Math.min(t,n)),t}))}}return r!==e.space&&(u=gr(u,e.space)),e.coords=u.coords,e}fr.returns="color";const pr={WHITE:{space:oe,coords:[1,0,0],alpha:1},BLACK:{space:oe,coords:[0,0,0],alpha:1}};function dr(e,t,r=[0,0,0],a=[1,1,1]){let n=1/0,o=-1/0,s=[];for(let i=0;i<3;i++){const l=e[i],c=t[i]-l,u=r[i],h=a[i];if(s.push(c),Math.abs(c)>1e-12){const e=1/c,t=(u-l)*e,r=(h-l)*e;o=Math.max(Math.min(t,r),o),n=Math.min(Math.max(t,r),n)}else if(l<u||l>h)return[]}return o>n||n<0?[]:(o<0&&(o=n),isFinite(o)?[e[0]+s[0]*o,e[1]+s[1]*o,e[2]+s[2]*o]:[])}function gr(e,t,{inGamut:r}={}){e=E(e);let a=(t=O.get(t)).from(e),n={space:t,coords:a,alpha:e.alpha};return r&&(n=fr(n,!0===r?void 0:r)),n}function br(e,t={}){let r,{precision:a=w.precision,format:n,inGamut:s=!0,coords:i,alpha:l,commas:c}=t,u=E(e),h=n,m=u.parseMeta;m&&!n&&(m.format.canSerialize()&&(n=m.format,h=m.formatId),i??=m.types,l??=m.alphaType,c??=m.commas),h&&(n=u.space.getFormat(n)??O.findFormat(h)),n||(n=u.space.getFormat("default")??O.DEFAULT_FORMAT,h=n.name),n&&n.space&&n.space!==u.space&&(u=gr(u,n.space));let f=u.coords.slice();if(s||=n.toGamut,s&&!ie(u)&&(f=fr(ce(u),!0===s?void 0:s).coords),"custom"===n.type){if(!n.serialize)throw new TypeError(`format ${h} can only be used to parse colors, not for serialization`);r=n.serialize(f,u.alpha,t)}else{let e=n.name||"color",t=n.serializeCoords(f,a,i);if("color"===e){let e=n.id||n.ids?.[0]||u.space.cssId||u.space.id;t.unshift(e)}let s=u.alpha;void 0!==l&&"object"!=typeof l&&(l="string"==typeof l?{type:l}:{include:l});let h=l?.type??"<number>",m=!0===l?.include||!0===n.alpha||!1!==l?.include&&!1!==n.alpha&&s<1,p="";if(c??=n.commas,m){if(null!==a){let e;"<percentage>"===h&&(e="%",s*=100),s=o(s,{precision:a,unit:e})}p=`${c?",":" /"} ${s}`}r=`${e}(${t.join(c?", ":" ")}${p})`}return r}gr.returns="color";var Mr=new P({id:"rec2020-linear",cssId:"--rec2020-linear",name:"Linear REC.2020",white:"D65",toXYZ_M:[[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],fromXYZ_M:[[1.716651187971268,-.355670783776392,-.25336628137366],[-.666684351832489,1.616481236634939,.0157685458139111],[.017639857445311,-.042770613257809,.942103121235474]]}),yr=new P({id:"rec2020",name:"REC.2020",base:Mr,linearGamut:Mr,toBase:e=>e.map((function(e){let t=e<0?-1:1,r=e*t;return t*Math.pow(r,2.4)})),fromBase:e=>e.map((function(e){let t=e<0?-1:1,r=e*t;return t*Math.pow(r,1/2.4)}))});var wr=new P({id:"p3-linear",cssId:"display-p3-linear",name:"Linear P3",white:"D65",toXYZ_M:[[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],fromXYZ_M:[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]]});const vr=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]];var Cr=new P({id:"srgb-linear",name:"Linear sRGB",white:"D65",toXYZ_M:[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],fromXYZ_M:vr}),Br={aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aqua:[0,1,1],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],black:[0,0,0],blanchedalmond:[1,235/255,205/255],blue:[0,0,1],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[.6,50/255,.8],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],fuchsia:[1,0,1],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],gray:[128/255,128/255,128/255],green:[0,128/255,0],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,.6],lightslategrey:[119/255,136/255,.6],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],lime:[0,1,0],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],maroon:[128/255,0,0],mediumaquamarine:[.4,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,.8],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],navy:[0,0,128/255],oldlace:[253/255,245/255,230/255],olive:[128/255,128/255,0],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],purple:[128/255,0,128/255],rebeccapurple:[.4,.2,.6],red:[1,0,0],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],silver:[192/255,192/255,192/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],teal:[0,128/255,128/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],white:[1,1,1],whitesmoke:[245/255,245/255,245/255],yellow:[1,1,0],yellowgreen:[154/255,205/255,50/255]};let Rr=Array(3).fill("<percentage> | <number>[0, 255]"),_r=Array(3).fill("<number>[0, 255]");var xr=new P({id:"srgb",name:"sRGB",base:Cr,linearGamut:Cr,fromBase:e=>e.map((e=>{let t=e<0?-1:1,r=e*t;return r>.0031308?t*(1.055*r**(1/2.4)-.055):12.92*e})),toBase:e=>e.map((e=>{let t=e<0?-1:1,r=e*t;return r<=.04045?e/12.92:t*((r+.055)/1.055)**2.4})),formats:{rgb:{coords:Rr},rgb_number:{name:"rgb",commas:!0,coords:_r,alpha:!1},color:{},rgba:{coords:Rr,commas:!0,alpha:!0},rgba_number:{name:"rgba",commas:!0,coords:_r},hex:{type:"custom",toGamut:!0,test:e=>/^#(([a-f0-9]{2}){3,4}|[a-f0-9]{3,4})$/i.test(e),parse(e){e.length<=5&&(e=e.replace(/[a-f0-9]/gi,"$&$&"));let t=[];return e.replace(/[a-f0-9]{2}/gi,(e=>{t.push(parseInt(e,16)/255)})),{spaceId:"srgb",coords:t.slice(0,3),alpha:t.slice(3)[0]}},serialize:(e,t,{collapse:r=!0,alpha:a}={})=>{(!1!==a&&t<1||!0===a)&&e.push(t),e=e.map((e=>Math.round(255*e)));let n=r&&e.every((e=>e%17==0)),o=e.map((e=>n?(e/17).toString(16):e.toString(16).padStart(2,"0"))).join("");return"#"+o}},keyword:{type:"custom",test:e=>/^[a-z]+$/i.test(e),parse(e){let t={spaceId:"srgb",coords:null,alpha:1};if("transparent"===(e=e.toLowerCase())?(t.coords=Br.black,t.alpha=0):t.coords=Br[e],t.coords)return t}}}}),kr=new P({id:"p3",cssId:"display-p3",name:"P3",base:wr,linearGamut:wr,fromBase:xr.fromBase,toBase:xr.toBase});let Sr;if(w.display_space=xr,"undefined"!=typeof CSS&&CSS.supports)for(let e of[F,yr,kr]){let t=e.getMinCoords(),r=br({space:e,coords:t,alpha:1});if(CSS.supports("color",r)){w.display_space=e;break}}const Lr=1e6,Er={};function Or(e){let t=[];for(let r=1e5;e;r/=10)t.push(Math.floor(e/r)),e%=r;return t}function jr(e,t,{space:r,gamut:a}){r=O.get(r),a=O.get(a);let n=(Er[r.id]??={})[a.id]??=function(e,t){if(!e.isPolar||!("c"in e.coords))throw new TypeError(`maxChroma() needs a polar space with a "c" coordinate, got ${e.id}`);let r=Object.keys(e.coords),a=r.find((t=>"angle"===e.coords[t].type)),n=r.find((e=>"c"!==e&&e!==a)),o=t=>e.coords[t].range??e.coords[t].refRange,[s,i]=o(n),[l,c]=o(a),u=o("c")[1],h=r.indexOf("c"),m=`${e.id}.c`,f=[];return function(n,o){if(n<=s||n>=i)return 0;let p=f;for(let e of Or(Math.floor((n-s)/(i-s)*Lr)))p=p[e]??=[];let d=p.h??=[];for(let e of Or(Math.floor((X(o)-l)/(c-l)*Lr)))d=d[e]??=[];let g=r.map((e=>"c"===e?u:e===a?o:n));return d.value??=fr({space:e,coords:g},{space:t,method:m,deltaEMethod:"OK",jnd:0}).coords[h]}}(r,a);return n(e,t)}function zr(e,t){return s(e)||s(t)?e===t?null:0:e-t}function Pr(e){return H(e,[z,"y"])}function Ir(e,t){q(e,[z,"y"],t)}var Ar=Object.freeze({__proto__:null,getLuminance:Pr,register:function(e){Object.defineProperty(e.prototype,"luminance",{get(){return Pr(this)},set(e){Ir(this,e)}})},setLuminance:Ir});function Hr(e){return e>=.022?e:e+(.022-e)**1.414}function $r(e){let t=e<0?-1:1,r=Math.abs(e);return t*Math.pow(r,2.4)}const qr=216/24389,Gr=24/116,Dr=24389/27;let Tr=R.D65;var Wr=new O({id:"lab-d65",name:"Lab D65",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Tr,base:z,fromBase(e){let t=e.map(((e,t)=>e/Tr[t])).map((e=>e>qr?Math.cbrt(e):(Dr*e+16)/116));return[116*t[1]-16,500*(t[0]-t[1]),200*(t[1]-t[2])]},toBase(e){let t=[];return t[1]=(e[0]+16)/116,t[0]=e[1]/500+t[1],t[2]=t[1]-e[2]/200,[t[0]>Gr?Math.pow(t[0],3):(116*t[0]-16)/Dr,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/Dr,t[2]>Gr?Math.pow(t[2],3):(116*t[2]-16)/Dr].map(((e,t)=>e*Tr[t]))},formats:{"lab-d65":{coords:["<number> | <percentage>","<number> | <percentage>","<number> | <percentage>"]}}});const Nr=.5*Math.pow(5,.5)+.5;var Fr=Object.freeze({__proto__:null,contrastAPCA:function(e,t){let r,a,n,o,i,l;t=E(t),e=E(e),t=gr(t,"srgb"),[o,i,l]=t.coords.map((e=>s(e)?0:e));let c=.2126729*$r(o)+.7151522*$r(i)+.072175*$r(l);e=gr(e,"srgb"),[o,i,l]=e.coords.map((e=>s(e)?0:e));let u=.2126729*$r(o)+.7151522*$r(i)+.072175*$r(l),h=Hr(c),m=Hr(u),f=m>h;return Math.abs(m-h)<5e-4?a=0:f?(r=m**.56-h**.57,a=1.14*r):(r=m**.65-h**.62,a=1.14*r),n=Math.abs(a)<.1?0:a>0?a-.027:a+.027,100*n},contrastDeltaPhi:function(e,t){e=E(e),t=E(t);let r=H(e,[Wr,"l"]),a=H(t,[Wr,"l"]),n=Math.abs(Math.pow(r,Nr)-Math.pow(a,Nr)),o=Math.pow(n,1/Nr)*Math.SQRT2-40;return o<7.5?0:o},contrastLstar:function(e,t){e=E(e),t=E(t);let r=H(e,[F,"l"]),a=H(t,[F,"l"]);return Math.abs(r-a)},contrastMichelson:function(e,t){e=E(e),t=E(t);let r=Math.max(Pr(e),0),a=Math.max(Pr(t),0);a>r&&([r,a]=[a,r]);let n=r+a;return 0===n?0:(r-a)/n},contrastWCAG21:function(e,t){e=E(e),t=E(t);let r=Math.max(Pr(e),0),a=Math.max(Pr(t),0);return a>r&&([r,a]=[a,r]),(r+.05)/(a+.05)},contrastWeber:function(e,t){e=E(e),t=E(t);let r=Math.max(Pr(e),0),a=Math.max(Pr(t),0);return a>r&&([r,a]=[a,r]),0===a?5e4:(r-a)/a}});function Xr(e){let[t,r,a]=A(e,z),n=t+15*r+3*a;return[4*t/n,9*r/n]}function Yr(e){let[t,r,a]=A(e,z),n=t+r+a;return[t/n,r/n]}var Zr=Object.freeze({__proto__:null,register:function(e){Object.defineProperty(e.prototype,"uv",{get(){return Xr(this)}}),Object.defineProperty(e.prototype,"xy",{get(){return Yr(this)}})},uv:Xr,xy:Yr});function Jr(e,t,r={}){a(r)&&(r={method:r});let{method:n=w.deltaE,...o}=r;for(let r in hr)if("deltae"+n.toLowerCase()===r.toLowerCase())return hr[r](e,t,o);throw new TypeError(`Unknown deltaE method: ${n}`)}function Kr(e,t=.25){return q(e,[O.get("oklch","lch"),"l"],(e=>e*(1+t)))}function Ur(e,t=.25){return q(e,[O.get("oklch","lch"),"l"],(e=>e*(1-t)))}Kr.returns="color",Ur.returns="color";var Vr=Object.freeze({__proto__:null,darken:Ur,lighten:Kr});function Qr(e,t,r,a={}){return[e,t]=[E(e),E(t)],"object"===n(r)&&([r,a]=[.5,r]),ta(e,t,a)(r??.5)}function ea(e,t,r={}){let a;ra(e)&&([a,r]=[e,t],[e,t]=a.rangeArgs.colors);let{maxDeltaE:n,deltaEMethod:o,steps:s=2,maxSteps:i=1e3,...l}=r;a||([e,t]=[E(e),E(t)],a=ta(e,t,l));let c=Jr(e,t),u=n>0?Math.max(s,Math.ceil(c/n)+1):s,h=[];if(void 0!==i&&(u=Math.min(u,i)),1===u)h=[{p:.5,color:a(.5)}];else{let e=1/(u-1);h=Array.from({length:u},((t,r)=>{let n=r*e;return{p:n,color:a(n)}}))}if(n>0){let e=h.reduce(((e,t,r)=>{if(0===r)return 0;let a=Jr(t.color,h[r-1].color,o);return Math.max(e,a)}),0);for(;e>n;){e=0;for(let t=1;t<h.length&&h.length<i;t++){let r=h[t-1],n=h[t],o=(n.p+r.p)/2,s=a(o);e=Math.max(e,Jr(s,r.color),Jr(s,n.color)),h.splice(t,0,{p:o,color:a(o)}),t++}}}return h=h.map((e=>e.color)),h}function ta(e,t,r={}){if(ra(e)){let[r,a]=[e,t];return ta(...r.rangeArgs.colors,{...r.rangeArgs.options,...a})}let{space:a,outputSpace:n,progression:o,premultiplied:i}=r;e=E(e),t=E(t),e=ce(e),t=ce(t);let l={colors:[e,t],options:r};if(a=a?O.get(a):O.registry[w.interpolationSpace]||e.space,n=n?O.get(n):a,e=gr(e,a),t=gr(t,a),e=fr(e),t=fr(t),a.coords.h&&"angle"===a.coords.h.type){let n=r.hue=r.hue||"shorter",o=[a,"h"],[i,l]=[H(e,o),H(t,o)];s(i)&&!s(l)?i=l:s(l)&&!s(i)&&(l=i),[i,l]=Y(n,[i,l]),q(e,o,i),q(t,o,l)}return i&&(e.coords=e.coords.map((t=>t*e.alpha)),t.coords=t.coords.map((e=>e*t.alpha))),Object.assign((r=>{r=o?o(r):r;let s=e.coords.map(((e,a)=>c(e,t.coords[a],r))),l=c(e.alpha,t.alpha,r),u={space:a,coords:s,alpha:l};return i&&(u.coords=u.coords.map((e=>e/l))),n!==a&&(u=gr(u,n)),u}),{rangeArgs:l})}function ra(e){return"function"===n(e)&&!!e.rangeArgs}w.interpolationSpace="lab";var aa=Object.freeze({__proto__:null,isRange:ra,mix:Qr,range:ta,register:function(e){e.defineFunction("mix",Qr,{returns:"color"}),e.defineFunction("range",ta,{returns:"function<color>"}),e.defineFunction("steps",ea,{returns:"array<color>"})},steps:ea}),na=new O({id:"hsl",name:"HSL",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:xr,rgbGamut:xr,fromBase:e=>{let t=Math.max(...e),r=Math.min(...e),[a,n,o]=e,[s,i,l]=[null,0,(r+t)/2],c=t-r;if(0!==c){switch(i=0===l||1===l?0:(t-l)/Math.min(l,1-l),t){case a:s=(n-o)/c+(n<o?6:0);break;case n:s=(o-a)/c+2;break;case o:s=(a-n)/c+4}s*=60}return i<0&&(s+=180,i=Math.abs(i)),s>=360&&(s-=360),[s,100*i,100*l]},toBase:e=>{let[t,r,a]=e;function n(e){let n=(e+t/30)%12,o=r*Math.min(a,1-a);return a-o*Math.max(-1,Math.min(n-3,9-n,1))}return t%=360,t<0&&(t+=360),r/=100,a/=100,[n(0),n(8),n(4)]},formats:{hsl:{coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]},hsla:{coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"],commas:!0,alpha:!0}}}),oa=new O({id:"hsl-p3",cssId:"--hsl-p3",name:"HSL P3",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:kr,rgbGamut:kr,fromBase:na.fromBase,toBase:na.toBase}),sa=new O({id:"hsl-rec2020",cssId:"--hsl-rec2020",name:"HSL Rec.2020",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:yr,rgbGamut:yr,fromBase:na.fromBase,toBase:na.toBase}),ia=new O({id:"hsv",name:"HSV",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},v:{range:[0,100],name:"Value"}},base:xr,rgbGamut:xr,fromBase(e){let t=Math.max(...e),r=Math.min(...e),[a,n,o]=e,[s,i,l]=[null,0,t],c=t-r;if(0!==c){switch(t){case a:s=(n-o)/c+(n<o?6:0);break;case n:s=(o-a)/c+2;break;case o:s=(a-n)/c+4}s*=60}return l&&(i=c/l),s>=360&&(s-=360),[s,100*i,100*l]},toBase(e){let[t,r,a]=e;function n(e){let n=(e+t/60)%6;return a-a*r*Math.max(0,Math.min(n,4-n,1))}return t%=360,t<0&&(t+=360),r/=100,a/=100,[n(5),n(3),n(1)]},formats:{color:{id:"--hsv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),la=new O({id:"hwb",name:"HWB",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},w:{range:[0,100],name:"Whiteness"},b:{range:[0,100],name:"Blackness"}},base:ia,rgbGamut:xr,fromBase(e){let[t,r,a]=e;return[t,a*(100-r)/100,100-a]},toBase(e){let[t,r,a]=e;r/=100,a/=100;let n=r+a;if(n>=1){return[t,0,100*(r/n)]}let o=1-a;return[t,100*(0===o?0:1-r/o),100*o]},formats:{hwb:{coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});var ca=new P({id:"a98rgb-linear",cssId:"--a98-rgb-linear",name:"Linear Adobe® 98 RGB compatible",white:"D65",toXYZ_M:[[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],fromXYZ_M:[[2.0415879038107465,-.5650069742788596,-.34473135077832956],[-.9692436362808795,1.8759675015077202,.04155505740717557],[.013444280632031142,-.11836239223101838,1.0151749943912054]]}),ua=new P({id:"a98rgb",cssId:"a98-rgb",name:"Adobe® 98 RGB compatible",base:ca,linearGamut:ca,toBase:e=>e.map((e=>Math.pow(Math.abs(e),563/256)*Math.sign(e))),fromBase:e=>e.map((e=>Math.pow(Math.abs(e),256/563)*Math.sign(e)))});var ha=new P({id:"prophoto-linear",cssId:"--prophoto-rgb-linear",name:"Linear ProPhoto",white:"D50",base:G,toXYZ_M:[[.7977666449006423,.13518129740053308,.0313477341283922],[.2880748288194013,.711835234241873,8993693872564e-17],[0,0,.8251046025104602]],fromXYZ_M:[[1.3457868816471583,-.25557208737979464,-.05110186497554526],[-.5446307051249019,1.5082477428451468,.02052744743642139],[0,0,1.2119675456389452]]});const ma=1/512;var fa=new P({id:"prophoto",cssId:"prophoto-rgb",name:"ProPhoto",base:ha,linearGamut:ha,toBase:e=>e.map((e=>{let t=e<0?-1:1,r=e*t;return r<.03125?e/16:t*r**1.8})),fromBase:e=>e.map((e=>{let t=e<0?-1:1,r=e*t;return r>=ma?t*r**(1/1.8):16*e}))});const pa=1.09929682680944,da=.018053968510807;var ga=new P({id:"--rec2020-oetf",name:"REC.2020_Scene_Referred",base:Mr,linearGamut:Mr,referred:"scene",toBase:e=>e.map((function(e){let t=e<0?-1:1,r=e*t;return r<4.5*da?e/4.5:t*Math.pow((r+pa-1)/pa,1/.45)})),fromBase:e=>e.map((function(e){let t=e<0?-1:1,r=e*t;return r>=da?t*(pa*Math.pow(r,.45)-(pa-1)):4.5*e}))}),ba=new O({id:"oklch-p3",name:"OKLCh P3",coords:{l:{refRange:[0,1],name:"Lightness"},c:{range:[0,1],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:le,toBase:([e,t,r])=>([e,t,r].some(s)||(t*=jr(e,r,{space:le,gamut:"p3"})),[e,t,r]),fromBase([e,t,r]){if(![e,t,r].some(s)){let a=jr(e,r,{space:le,gamut:"p3"});t=a?t/a:0}return[e,t,r]},formats:{color:{id:"--oklch-p3",coords:["<percentage> | <number>","<number> | <percentage>","<number> | <angle>"]}}});const Ma=2*Math.PI,ya=[[4.076741636075958,-3.307711539258063,.2309699031821043],[-1.2684379732850315,2.609757349287688,-.341319376002657],[-.0041960761386756,-.7034186179359362,1.7076146940746117]],wa=[[[-1.8817031,-.80936501],[1.19086277,1.76576728,.59662641,.75515197,.56771245]],[[1.8144408,-1.19445267],[.73956515,-.45954404,.08285427,.12541073,-.14503204]],[[.13110758,1.81333971],[1.35733652,-.00915799,-1.1513021,-.50559606,.00692167]]],va=Number.MAX_VALUE,Ca=.206,Ba=.03,Ra=(1+Ca)/1.03;function _a(e,t){let r=e.length;if(r!==t.length)throw new Error(`Vectors of size ${r} and ${t.length} are not aligned`);let a=0;return e.forEach(((e,r)=>{a+=e*t[r]})),a}function xa(e){return.5*(Ra*e-Ca+Math.sqrt((Ra*e-Ca)*(Ra*e-Ca)+.12*Ra*e))}function ka(e){return(e**2+Ca*e)/(Ra*(e+Ba))}function Sa(e){let[t,r]=e;return[r/t,r/(1-t)]}function La(e,t){let a=r(e,ne);return a[0]=a[0]**3,a[1]=a[1]**3,a[2]=a[2]**3,r(a,t,a)}function Ea(e,t,r,a){let n=function(e,t,r,a){let n,o,s,i,l,c,u,h;_a(a[0][0],[e,t])>1?([n,o,s,i,l]=a[0][1],[c,u,h]=r[0]):_a(a[1][0],[e,t])>1?([n,o,s,i,l]=a[1][1],[c,u,h]=r[1]):([n,o,s,i,l]=a[2][1],[c,u,h]=r[2]);let m=n+o*e+s*t+i*e**2+l*e*t,f=_a(ne[0].slice(1),[e,t]),p=_a(ne[1].slice(1),[e,t]),d=_a(ne[2].slice(1),[e,t]),g=1+m*f,b=1+m*p,M=1+m*d,y=b**3,w=c*g**3+u*y+h*M**3,v=c*(3*f*g**2)+u*(3*p*b**2)+h*(3*d*M**2);return m-=w*v/(v**2-.5*w*(c*(6*f**2*g)+u*(6*p**2*b)+h*(6*d**2*M))),m}(e,t,r,a),o=La([1,n*e,n*t],r),s=p(1/Math.max(...o),1/3);return[s,s*n]}function Oa(e,t,r){let[a,n,o]=e,s=Ea(n,o,t,r),i=function(e,t,r,a,n,o,s,i){let l;if(void 0===i&&(i=Ea(e,t,o,s)),(r-n)*i[1]-(i[0]-n)*a<=0)l=i[1]*n/(a*i[0]+i[1]*(n-r));else{l=i[1]*(n-1)/(a*(i[0]-1)+i[1]*(n-r));let s=r-n,c=a,u=_a(ne[0].slice(1),[e,t]),h=_a(ne[1].slice(1),[e,t]),m=_a(ne[2].slice(1),[e,t]),f=s+c*u,p=s+c*h,d=s+c*m,g=n*(1-l)+l*r,b=l*a,M=g+b*u,y=g+b*h,w=g+b*m,v=M**3,C=y**3,B=w**3,R=3*f*M**2,_=3*p*y**2,x=3*d*w**2,k=6*f**2*M,S=6*p**2*y,L=6*d**2*w,E=_a(o[0],[v,C,B])-1,O=_a(o[0],[R,_,x]),j=O/(O*O-.5*E*_a(o[0],[k,S,L])),z=-E*j,P=_a(o[1],[v,C,B])-1,I=_a(o[1],[R,_,x]),A=I/(I*I-.5*P*_a(o[1],[k,S,L])),H=-P*A,$=_a(o[2],[v,C,B])-1,q=_a(o[2],[R,_,x]),G=q/(q*q-.5*$*_a(o[2],[k,S,L])),D=-$*G;z=j>=0?z:va,H=A>=0?H:va,D=G>=0?D:va,l+=Math.min(z,Math.min(H,D))}return l}(n,o,a,1,a,t,r,s),l=Sa(s),c=i/Math.min(a*l[0],(1-a)*l[1]),u=function(e,t){return[.11516993+1/(7.4477897+4.1590124*t+e*(1.75198401*t-2.19557347+e*(-2.13704948-10.02301043*t+e*(5.38770819*t-4.24894561+4.69891013*e)))),.11239642+1/(1.6132032-.68124379*t+e*(.40370612+.90148123*t+e*(.6122399*t-.27087943+e*(.00299215-.45399568*t-.14661872*e))))]}(n,o),h=a*u[0],m=(1-a)*u[1],f=.9*c*Math.sqrt(Math.sqrt(1/(1/h**4+1/m**4)));return h=.4*a,m=.8*(1-a),[Math.sqrt(1/(1/h**2+1/m**2)),f,i]}const ja=new O({id:"okhsl",name:"Okhsl",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,1],name:"Saturation"},l:{range:[0,1],name:"Lightness"}},base:oe,gamutSpace:"self",fromBase:e=>function(e,t,r){let a=e[0],n=0,o=xa(a),s=Math.sqrt(e[1]**2+e[2]**2),i=.5+Math.atan2(-e[2],-e[1])/Ma;if(0!==o&&1!==o&&0!==s){let o,i,l,c,u=e[1]/s,h=e[2]/s,[m,f,p]=Oa([a,u,h],t,r),d=.8;s<f?(i=d*m,l=1-i/f,c=s/(i+l*s),n=c*d):(o=f,i=.2*f**2*1.5625/m,l=1-i/(p-f),c=(s-o)/(i+l*(s-o)),n=d+.2*c)}const l=Math.abs(n)<1e-4;return l||0===o||Math.abs(1-o)<1e-7?(i=null,l||(n=0)):i=X(360*i),[i,n,o]}(e,ya,wa),toBase:e=>function(e,t,r){let[a,n,o]=e,s=ka(o),i=null,l=null;if(a=X(a)/360,0!==s&&1!==s&&0!==n){let e,o,c,u,h=Math.cos(Ma*a),m=Math.sin(Ma*a),[f,p,d]=Oa([s,h,m],t,r),g=.8;n<g?(e=1.25*n,o=0,c=g*f,u=1-c/p):(e=5*(n-.8),o=p,c=.2*p**2*1.5625/f,u=1-c/(d-p));let b=o+e*c/(1-u*e);i=b*h,l=b*m}return[s,i,l]}(e,ya,wa),formats:{color:{id:"--okhsl",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});ja.rgbGamut=new P({id:"okhsl-prism",cssId:"--okhsl-prism",name:"Okhsl Prism",base:ja,fromBase:e=>na.toBase([e[0],100*e[1],100*e[2]]),toBase(e){const t=na.fromBase(e);return t[1]/=100,t[2]/=100,t}});var za=new O({id:"oklrab",name:"Oklrab",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:"D65",base:oe,fromBase:e=>[xa(e[0]),e[1],e[2]],toBase:e=>[ka(e[0]),e[1],e[2]],formats:{color:{coords:["<percentage> | <number>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),Pa=new O({id:"oklrch",name:"Oklrch",coords:{l:{refRange:[0,1],name:"Lightness"},c:{refRange:[0,.4],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:za,fromBase:Z.fromBase,toBase:Z.toBase,formats:{color:{coords:["<percentage> | <number>","<number> | <percentage>[0,1]","<number> | <angle>"]}}});const Ia=new O({id:"okhsv",name:"Okhsv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,1],name:"Saturation"},v:{range:[0,1],name:"Value"}},base:oe,gamutSpace:"self",fromBase:e=>function(e,t,r){let a=e[0],n=0,o=xa(a),s=Math.sqrt(e[1]**2+e[2]**2),i=.5+Math.atan2(-e[2],-e[1])/Ma;if(0!==a&&1!==a&&0!==s){let i=e[1]/s,l=e[2]/s,c=Ea(i,l,t,r),[u,h]=Sa(c),m=.5,f=1-m/u,d=h/(s+a*h),g=d*a,b=d*s,M=ka(g),y=b*M/g,[w,v,C]=La([M,i*y,l*y],t),B=p(1/Math.max(Math.max(w,v),Math.max(C,0)),1/3);a/=B,s/=B,s=s*xa(a)/a,a=xa(a),o=a/g,n=(m+h)*b/(h*m+h*f*b)}return i=Math.abs(n)<1e-4||0===o?null:X(360*i),[i,n,o]}(e,ya,wa),toBase:e=>function(e,t,r){let[a,n,o]=e;a=X(a)/360;let s=ka(o),i=null,l=null;if(0!==s&&0!==n){let e=Math.cos(Ma*a),c=Math.sin(Ma*a),u=Ea(e,c,t,r),[h,m]=Sa(u),f=.5,d=1-f/h,g=1-n*f/(f+m-m*d*n),b=n*m*f/(f+m-m*d*n);s=o*g;let M=o*b,y=ka(g),w=b*y/g,v=ka(s);M=M*v/s,s=v;let[C,B,R]=La([y,e*w,c*w],t),_=p(1/Math.max(Math.max(C,B),Math.max(R,0)),1/3);s*=_,M*=_,i=M*e,l=M*c}return[s,i,l]}(e,ya,wa),formats:{color:{id:"--okhsv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});Ia.rgbGamut=new P({id:"okhsv-prism",cssId:"--okhsv-prism",name:"Okhsv Prism",base:Ia,fromBase:e=>na.toBase([e[0],100*e[1],100*e[2]]),toBase(e){const t=na.fromBase(e);return t[1]/=100,t[2]/=100,t}});let Aa=R.D65;const Ha=216/24389,$a=24389/27,[qa,Ga]=Xr({space:z,coords:Aa});var Da=new O({id:"luv",name:"Luv",coords:{l:{refRange:[0,100],name:"Lightness"},u:{refRange:[-215,215]},v:{refRange:[-215,215]}},white:Aa,base:z,fromBase(e){let t=[i(e[0]),i(e[1]),i(e[2])],r=t[1],[a,n]=Xr({space:z,coords:t});if(!Number.isFinite(a)||!Number.isFinite(n))return[0,0,0];let o=r<=Ha?$a*r:116*Math.cbrt(r)-16;return[o,13*o*(a-qa),13*o*(n-Ga)]},toBase(e){let[t,r,a]=e;if(0===t||s(t))return[0,0,0];r=i(r),a=i(a);let n=r/(13*t)+qa,o=a/(13*t)+Ga,l=t<=8?t/$a:Math.pow((t+16)/116,3);return[l*(9*n/(4*o)),l,l*((12-3*n-20*o)/(4*o))]},formats:{color:{id:"--luv",coords:["<number> | <percentage>","<number> | <percentage>","<number> | <percentage>"]}}}),Ta=new O({id:"lchuv",name:"LChuv",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,220],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:Da,fromBase:Z.fromBase,toBase:Z.toBase,formats:{color:{id:"--lchuv",coords:["<number> | <percentage>","<number> | <percentage>","<number> | <angle>"]}}});const Wa=216/24389,Na=24389/27,Fa=vr[0][0],Xa=vr[0][1],Ya=vr[0][2],Za=vr[1][0],Ja=vr[1][1],Ka=vr[1][2],Ua=vr[2][0],Va=vr[2][1],Qa=vr[2][2];function en(e,t,r){const a=t/(Math.sin(r)-e*Math.cos(r));return a<0?1/0:a}function tn(e){const t=Math.pow(e+16,3)/1560896,r=t>Wa?t:e/Na,a=r*(284517*Fa-94839*Ya),n=r*(838422*Ya+769860*Xa+731718*Fa),o=r*(632260*Ya-126452*Xa),s=r*(284517*Za-94839*Ka),i=r*(838422*Ka+769860*Ja+731718*Za),l=r*(632260*Ka-126452*Ja),c=r*(284517*Ua-94839*Qa),u=r*(838422*Qa+769860*Va+731718*Ua),h=r*(632260*Qa-126452*Va);return{r0s:a/o,r0i:n*e/o,r1s:a/(o+126452),r1i:(n-769860)*e/(o+126452),g0s:s/l,g0i:i*e/l,g1s:s/(l+126452),g1i:(i-769860)*e/(l+126452),b0s:c/h,b0i:u*e/h,b1s:c/(h+126452),b1i:(u-769860)*e/(h+126452)}}function rn(e,t){const r=t/360*Math.PI*2,a=en(e.r0s,e.r0i,r),n=en(e.r1s,e.r1i,r),o=en(e.g0s,e.g0i,r),s=en(e.g1s,e.g1i,r),i=en(e.b0s,e.b0i,r),l=en(e.b1s,e.b1i,r);return Math.min(a,n,o,s,i,l)}var an=new O({id:"hsluv",name:"HSLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:Ta,gamutSpace:xr,rgbGamut:xr,fromBase(e){let t,[r,a,n]=[i(e[0]),i(e[1]),i(e[2])];if(r>99.9999999)t=0,r=100;else if(r<1e-8)t=0,r=0;else{t=a/rn(tn(r),n)*100}return[n,t,r]},toBase(e){let t,[r,a,n]=[i(e[0]),i(e[1]),i(e[2])];if(n>99.9999999)n=100,t=0;else if(n<1e-8)n=0,t=0;else{t=rn(tn(n),r)/100*a}return[n,t,r]},formats:{color:{id:"--hsluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});function nn(e,t){return Math.abs(t)/Math.sqrt(Math.pow(e,2)+1)}function on(e){let t=nn(e.r0s,e.r0i),r=nn(e.r1s,e.r1i),a=nn(e.g0s,e.g0i),n=nn(e.g1s,e.g1i),o=nn(e.b0s,e.b0i),s=nn(e.b1s,e.b1i);return Math.min(t,r,a,n,o,s)}vr[0][0],vr[0][1],vr[0][2],vr[1][0],vr[1][1],vr[1][2],vr[2][0],vr[2][1],vr[2][2];const sn=new O({id:"hpluv",name:"HPLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:Ta,gamutSpace:"self",fromBase(e){let t,[r,a,n]=[i(e[0]),i(e[1]),i(e[2])];if(r>99.9999999)t=0,r=100;else if(r<1e-8)t=0,r=0;else{t=a/on(tn(r))*100}return[n,t,r]},toBase(e){let t,[r,a,n]=[i(e[0]),i(e[1]),i(e[2])];if(n>99.9999999)n=100,t=0;else if(n<1e-8)n=0,t=0;else{t=on(tn(n))/100*a}return[n,t,r]},formats:{color:{id:"--hpluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});sn.rgbGamut=new P({id:"hpluv-prism",cssId:"--hpluv-prism",name:"HPLuv Prism",base:sn,fromBase:e=>na.toBase(e),toBase:e=>na.fromBase(e)});const ln=.021,cn=Math.sqrt(.007),un=cn*cn*cn,hn=264.5*Math.PI/180,mn=[[.8154832155941288,.36033406153856506,-.12434135574228214],[.03301008352745078,.9292865057066169,.03612192716575443],[.04818827356456861,.2642841575338424,.6334971784195534]],fn=[[1.2325947975032656,-.5557590239287523,.2736201534771583],[-.040801327874216024,1.112228863738653,-.07142753586443781],[-.07673825928337766,-.42172784577108585,1.5875238558143416]],pn=[[.21193779684470104,.7992121834263127,-.00410075161564345],[2.4672018828033475,-2.9877348024830788,.520532919679731],[-.11390787868068575,1.3932982808117473,-1.279390402131062]],dn=[[.9930001151336143,.32599327253052285,.1294508563171392],[.9930001151336139,-.08708353111074627,-.03861361743004929],[.9930001151336136,-.12386097008215022,-.8351991365871061]],gn=[0,.05,.1,.15,.2,.25,.3,.35,.4,.45,.5,.55,.6,.65,.7,.75,.8,.85,.9,.95,1],bn=[0,.009494013522189627,.02564569838030986,.055259661658689105,.10574901531227408,.16055853320726027,.21405964892993756,.26786230508811226,.3220435246104499,.3739052098520243,.43020997780918835,.4835465162128873,.5399824670411353,.5956710081330342,.6542161666450478,.7115380216519989,.7702762412711669,.8293313467712837,.889406386197059,.9462829573474728,1],Mn=gn.length;function yn(e){let t=e/(2*un),r=2*cn*Math.sinh(Math.asinh(t)/3),a=r*r*r+ln*r-e,n=3*r*r+ln,o=2*n*n-a*(6*r);return Math.abs(o)>1e-30&&(r-=2*a*n/o),r}function wn(e){return e*e*e+ln*e}function vn(e){let t=Math.max(0,Math.min(1,(e-.37)/.63));return Math.sin(Math.PI*t)**2}var Cn=new O({id:"helmgen",name:"HelmGen",cssId:"--helmgen",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.6,.6]},b:{refRange:[-.6,.6]}},white:"D65",base:z,fromBase(e){let t=r(e,mn),a=yn(Math.max(t[0],0)),n=yn(Math.max(t[1],0)),o=yn(Math.max(t[2],0));{let e=(a+n+o)/3,t=(Math.max(a,n,o)-Math.min(a,n,o))/Math.max(Math.abs(e),1e-30),r=Math.exp(-((t/1e-5)**2));a+=r*(e-a),n+=r*(e-n),o+=r*(e-o)}let[s,i,l]=r([a,n,o],pn);{let e=Math.sqrt(i*i+l*l);if(e>1e-12){let t=Math.pow(e,.978)/e;i*=t,l*=t}}return s=function(e){if(e<=0||e>=1)return e;let t=0,r=Mn-1;for(;r-t>1;){let a=t+r>>1;gn[a]<=e?t=a:r=a}return bn[t]+(e-gn[t])/(gn[r]-gn[t])*(bn[r]-bn[t])}(s),[i,l]=function(e,t,r){let a=Math.sqrt(t*t+r*r);if(a<1e-12)return[t,r];let n=vn(e);if(n<1e-12)return[t,r];let o=Math.atan2(r,t),s=o-hn;s-=2*Math.round(s/(2*Math.PI))*Math.PI;let i=o+.058*n*Math.exp(-.5*(s/.7)**2);return[a*Math.cos(i),a*Math.sin(i)]}(s,i,l),[s,i,l]},toBase(e){let[t,a,n]=e;[a,n]=function(e,t,r){let a=Math.sqrt(t*t+r*r);if(a<1e-12)return[t,r];let n=vn(e);if(n<1e-12)return[t,r];let o=Math.atan2(r,t),s=.7*.7,i=.058*n,l=o;for(let e=0;e<8;e++){let e=l-hn;e-=2*Math.round(e/(2*Math.PI))*Math.PI;let t=Math.exp(-.5*e*e/s),r=l+i*t-o,a=1+i*t*(-e/s),n=2*a*a-r*(i*t*(-1/s+e*e/(s*s)));Math.abs(n)>1e-30&&(l-=2*r*a/n)}return[a*Math.cos(l),a*Math.sin(l)]}(t,a,n),t=function(e){if(e<=bn[0]||e>=bn[Mn-1])return e;let t=0,r=Mn-1;for(;r-t>1;){let a=t+r>>1;bn[a]<=e?t=a:r=a}return gn[t]+(e-bn[t])/(bn[r]-bn[t])*(gn[r]-gn[t])}(t);{let e=Math.sqrt(a*a+n*n);if(e>1e-12){let t=Math.pow(e,1/.978)/e;a*=t,n*=t}}let[o,s,i]=r([t,a,n],dn);{let e=(o+s+i)/3,t=(Math.max(o,s,i)-Math.min(o,s,i))/Math.max(Math.abs(e),1e-30),r=Math.exp(-((t/1e-5)**2));o+=r*(e-o),s+=r*(e-s),i+=r*(e-i)}return r([wn(o),wn(s),wn(i)],fn)}}),Bn=new O({id:"helmgenlch",name:"HelmGenLCh",coords:{l:{refRange:[0,1],name:"Lightness"},c:{refRange:[0,.65],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:Cn,fromBase:Z.fromBase,toBase:Z.toBase}),Rn=new P({id:"rec2100-linear",name:"Linear REC.2100",white:"D65",toBase:Mr.toBase,fromBase:Mr.fromBase});const _n=2610/16384,xn=16384/2610,kn=32/2523,Sn=.8359375,Ln=2413/128,En=18.6875;var On=new P({id:"rec2100pq",cssId:"rec2100-pq",name:"REC.2100-PQ",base:Rn,linearGamut:Rn,toBase:e=>e.map((function(e){return 1e4*(Math.max(e**kn-Sn,0)/(Ln-En*e**kn))**xn/203})),fromBase:e=>e.map((function(e){let t=Math.max(203*e/1e4,0);return((Sn+Ln*t**_n)/(1+En*t**_n))**78.84375}))});const jn=.17883277,zn=.28466892,Pn=.55991073,In=3.7743;var An=new P({id:"rec2100hlg",cssId:"rec2100-hlg",name:"REC.2100-HLG",referred:"scene",base:Rn,linearGamut:Rn,toBase:e=>e.map((function(e){return e<=.5?e**2/3*In:(Math.exp((e-Pn)/jn)+zn)/12*In})),fromBase:e=>e.map((function(e){return(e/=In)<=1/12?p(3*e,.5):jn*Math.log(12*e-zn)+Pn}))});const Hn={};function $n({id:e,toCone_M:t,fromCone_M:r}){Hn[e]=arguments[0]}function qn(t,r,a="Bradford"){let n=Hn[a],[o,s,i]=e(n.toCone_M,t),[l,c,u]=e(n.toCone_M,r),h=e([[l/o,0,0],[0,c/s,0],[0,0,u/i]],n.toCone_M);return e(n.fromCone_M,h)}y.add("chromatic-adaptation-start",(e=>{e.options.method&&(e.M=qn(e.W1,e.W2,e.options.method))})),y.add("chromatic-adaptation-end",(e=>{e.M||(e.M=qn(e.W1,e.W2,e.options.method))})),$n({id:"von Kries",toCone_M:[[.40024,.7076,-.08081],[-.2263,1.16532,.0457],[0,0,.91822]],fromCone_M:[[1.8599363874558397,-1.1293816185800916,.21989740959619328],[.3611914362417676,.6388124632850422,-6370596838649899e-21],[0,0,1.0890636230968613]]}),$n({id:"Bradford",toCone_M:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],fromCone_M:[[.9869929054667121,-.14705425642099013,.15996265166373122],[.4323052697233945,.5183602715367774,.049291228212855594],[-.00852866457517732,.04004282165408486,.96848669578755]]}),$n({id:"CAT02",toCone_M:[[.7328,.4296,-.1624],[-.7036,1.6975,.0061],[.003,.0136,.9834]],fromCone_M:[[1.0961238208355142,-.27886900021828726,.18274517938277307],[.4543690419753592,.4735331543074117,.07209780371722911],[-.009627608738429355,-.00569803121611342,1.0153256399545427]]}),$n({id:"CAT16",toCone_M:[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],fromCone_M:[[1.862067855087233,-1.0112546305316845,.14918677544445172],[.3875265432361372,.6214474419314753,-.008973985167612521],[-.01584149884933386,-.03412293802851557,1.0499644368778496]]}),Object.assign(R,{A:[1.0985,1,.35585],C:[.98074,1,1.18232],D55:[.95682,1,.92149],D75:[.94972,1,1.22638],E:[1,1,1],F2:[.99186,1,.67393],F7:[.95041,1,1.08747],F11:[1.00962,1,.6435]}),R.ACES=[.32168/.33767,1,.34065/.33767];var Gn=new P({id:"acescg",cssId:"--acescg",name:"ACEScg",coords:{r:{range:[0,65504],name:"Red"},g:{range:[0,65504],name:"Green"},b:{range:[0,65504],name:"Blue"}},referred:"scene",white:R.ACES,toXYZ_M:[[.6624541811085053,.13400420645643313,.1561876870049078],[.27222871678091454,.6740817658111484,.05368951740793705],[-.005574649490394108,.004060733528982826,1.0103391003129971]],fromXYZ_M:[[1.6410233796943257,-.32480329418479,-.23642469523761225],[-.6636628587229829,1.6153315916573379,.016756347685530137],[.011721894328375376,-.008284441996237409,.9883948585390215]]});const Dn=2**-16,Tn=-.35828683,Wn=(Math.log2(65504)+9.72)/17.52;var Nn=new P({id:"acescc",cssId:"--acescc",name:"ACEScc",coords:{r:{range:[Tn,Wn],name:"Red"},g:{range:[Tn,Wn],name:"Green"},b:{range:[Tn,Wn],name:"Blue"}},referred:"scene",base:Gn,linearGamut:Gn,toBase:e=>e.map((function(e){return e<=-.3013698630136986?2*(2**(17.52*e-9.72)-Dn):e<Wn?2**(17.52*e-9.72):65504})),fromBase:e=>e.map((function(e){return e<=0?(Math.log2(Dn)+9.72)/17.52:e<Dn?(Math.log2(Dn+.5*e)+9.72)/17.52:(Math.log2(e)+9.72)/17.52}))}),Fn=Object.freeze({__proto__:null,A98RGB:ua,A98RGB_Linear:ca,ACEScc:Nn,ACEScg:Gn,CAM16_JMh:at,HCT:ut,HPLuv:sn,HSL:na,HSL_P3:oa,HSL_REC2020:sa,HSLuv:an,HSV:ia,HWB:la,HelmGen:Cn,HelmGenLCh:Bn,Helmlab:ur,ICTCP:De,JzCzHz:Le,Jzazbz:Se,LCH:Z,LCHuv:Ta,Lab:F,Lab_D65:Wr,Luv:Da,OKLCH:le,OKLCH_P3:ba,OKLab:oe,OKLrCH:Pa,OKLrab:za,Okhsl:ja,Okhsv:Ia,P3:kr,P3_Linear:wr,ProPhoto:fa,ProPhoto_Linear:ha,REC_2020:yr,REC_2020_Linear:Mr,REC_2020_Scene_Referred:ga,REC_2100_HLG:An,REC_2100_Linear:Rn,REC_2100_PQ:On,XYZ_ABS_D65:me,XYZ_D50:G,XYZ_D65:z,sRGB:xr,sRGB_Linear:Cr});class Xn{constructor(...e){let t,r,a,n;if(1===e.length){let r={};"object"==typeof e[0]&&Object.getPrototypeOf(e[0]).constructor===Object&&(e[0]={...e[0]}),t=E(e[0],{parseMeta:r}),r.format&&(this.parseMeta=r)}t?(r=t.space||t.spaceId,a=t.coords,n=t.alpha):[r,a,n]=e,Object.defineProperty(this,"space",{value:O.get(r),writable:!1,enumerable:!0,configurable:!0}),this.coords=a?a.slice():[0,0,0],this.alpha=s(n)?n:void 0===n?1:m(0,n,1);for(let e in this.space.coords)Object.defineProperty(this,e,{get:()=>this.get(e),set:t=>this.set(e,t)})}get spaceId(){return this.space.id}clone(){return new Xn(this.space,this.coords,this.alpha)}toJSON(){return{spaceId:this.spaceId,coords:this.coords,alpha:this.alpha}}display(...e){let t=function(e,{space:t,supports:r=globalThis.CSS?.supports,...a}={}){let n=br(e=E(e),a);if(r&&!r("color",n)&&w.display_space){let o=e;if((e.coords.some(s)||s(e.alpha))&&!(Sr??=r("color","hsl(none 50% 50%)"))&&(o=ce(e),o.coords=o.coords.map(i),o.alpha=i(o.alpha),n=br(o,a),r("color",n)))return n=new String(n),n.color=o,n;if(void 0===t){let e=(t=o.space).displaySpaces??t.bases;t.displaySpaces||t.id.startsWith("xyz-")||(e=e.filter((e=>!e.id.startsWith("xyz-"))));for(let t of e){let e=gr(o,t),s=br(e,a);if(r("color",s))return n=new String(s),n.color=e,n}t=w.display_space}o=gr(o,t),n=new String(br(o,a)),n.color=o}else n=new String(n),n.color=e;return n}(this,...e);return t.color=new Xn(t.color),t}static get(e,...t){return b(e,this)?e:new Xn(e,...t)}static try(e,t){if(b(e,this))return e;let r=I(e,t);return r?new Xn(r):null}static defineFunction(e,t,r=t){let{instance:a=!0,returns:n}=r,o=function(...e){let r=t(...e);if("color"===n)r=Xn.get(r);else if("function<color>"===n){let e=r;r=function(...t){let r=e(...t);return Xn.get(r)},Object.assign(r,e)}else"array<color>"===n&&(r=r.map((e=>Xn.get(e))));return r};e in Xn||(Xn[e]=o),a&&(Xn.prototype[e]=function(...e){return o(this,...e)})}static defineFunctions(e){for(let t in e)Xn.defineFunction(t,e[t],e[t])}static extend(e){if(e.register)e.register(Xn);else for(let t in e)Xn.defineFunction(t,e[t])}}Xn.defineFunctions({get:H,getAll:A,set:q,setAll:$,to:gr,equals:function(e,t){return e=E(e),t=E(t),e.space===t.space&&e.alpha===t.alpha&&e.coords.every(((e,r)=>e===t.coords[r]))},inGamut:ie,toGamut:fr,distance:ue,deltas:function(e,t,{space:r,hue:a="shorter"}={}){e=E(e),r||=e.space,r=O.get(r);let n=Object.values(r.coords);[e,t]=[e,t].map((e=>gr(e,r)));let[o,s]=[e,t].map((e=>e.coords)),i=o.map(((e,t)=>{let r=n[t],o=s[t];return"angle"===r.type&&([e,o]=Y(a,[e,o])),zr(e,o)})),l=zr(e.alpha,t.alpha);return{space:r,coords:i,alpha:l}},toString:br}),Object.assign(Xn,{util:M,hooks:y,WHITES:R,Space:O,spaces:O.registry,parse:k,defaults:w});for(let e of Object.keys(Fn))O.register(Fn[e]);for(let e in O.registry)Yn(e,O.registry[e]);function Yn(e,t){let r=e.replace(/-/g,"_");Object.defineProperty(Xn.prototype,r,{get(){let r=this.getAll(e);if("undefined"==typeof Proxy)return r;let a=new Proxy(r,{has:(e,r)=>{try{return O.resolveCoord([t,r]),!0}catch(e){}return Reflect.has(e,r)},get:(e,r,n)=>{if(r&&"symbol"!=typeof r&&!(r in e)&&r in a){let{index:a}=O.resolveCoord([t,r]);if(a>=0)return e[a]}return Reflect.get(e,r,n)},set:(r,a,n,o)=>{if(a&&"symbol"!=typeof a&&!(a in r)||Number(a)>=0){let{index:o}=O.resolveCoord([t,a]);if(o>=0)return r[o]=n,this.setAll(e,r),!0}return Reflect.set(r,a,n,o)}});return a},set(t){this.setAll(e,t)},configurable:!0,enumerable:!0})}y.add("colorspace-init-end",(e=>{Yn(e.id,e),e.aliases?.forEach((t=>{Yn(t,e)}))})),Xn.extend(hr),Xn.extend({deltaE:Jr}),Object.assign(Xn,{deltaEMethods:hr}),Xn.extend(Vr),Xn.extend({contrast:function(e,t,r){a(r)&&(r={algorithm:r});let{algorithm:n,...o}=r||{};if(!n){let e=Object.keys(Fr).map((e=>e.replace(/^contrast/,""))).join(", ");throw new TypeError(`contrast() function needs a contrast algorithm. Please specify one of: ${e}`)}e=E(e),t=E(t);for(let r in Fr)if("contrast"+n.toLowerCase()===r.toLowerCase())return Fr[r](e,t,o);throw new TypeError(`Unknown contrast algorithm: ${n}`)}}),Xn.extend(Zr),Xn.extend(Ar),Xn.extend(aa),Xn.extend(Fr),exports.default=Xn;
//# sourceMappingURL=color.min.cjs.map