@sardine/colour 2.4.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { RGBdistance } from "./RGBdistance";
1
+ export { isCSSRGBColour, isHexColour, isNamedCSSColour } from "./assertions";
2
2
  export { ciede2000 } from "./CIEDE2000";
3
3
  export { convertCSSRGBtoHex } from "./convertCSSRGBtoHex";
4
4
  export { convertCSSRGBtoRGB } from "./convertCSSRGBtoRGB";
@@ -13,8 +13,8 @@ export { convertRGBtoLab } from "./convertRGBtoLab";
13
13
  export { convertRGBtoNamedCSSColour } from "./convertRGBtoNamedCSSColour";
14
14
  export { convertRGBtoXYZ } from "./convertRGBtoXYZ";
15
15
  export { convertXYZtoLab } from "./convertXYZtoLab";
16
- export { findNearestCSSRGBColour } from "./findNearestCSSRGBColour";
17
16
  export { findNearestColour } from "./findNearestColour";
17
+ export { findNearestCSSRGBColour } from "./findNearestCSSRGBColour";
18
18
  export { findNearestHexColour } from "./findNearestHexColour";
19
19
  export { findNearestNamedCSSColour } from "./findNearestNamedCSSColour";
20
20
  export { findNearestRGBColour } from "./findNearestRGBColour";
@@ -25,10 +25,9 @@ export { getContrastRatioFromNamedCSSColour } from "./getContrastRatioFromNamedC
25
25
  export { getSRGBLuminanceFromHex } from "./getSRGBLuminanceFromHex";
26
26
  export { getSRGBLuminanceFromRGB } from "./getSRGBLuminanceFromRGB";
27
27
  export { isCSSNamedDarkColour } from "./isCSSNameDarkColour";
28
- export { isCSSRGBColour } from "./assertions";
29
28
  export { isCSSRGBDarkColour } from "./isCSSRGBDarkColour";
30
29
  export { isDarkColour } from "./isDarkColour";
31
- export { isHexColour } from "./assertions";
32
30
  export { isHexDarkColour } from "./isHexDarkColour";
33
- export { isNamedCSSColour } from "./assertions";
34
31
  export { pickHexColourContrast } from "./pickHexColourContrast";
32
+ export { RGBdistance } from "./RGBdistance";
33
+ export { sortHexColours } from "./sortHexColours";
package/dist/index.min.js CHANGED
@@ -1,7 +1 @@
1
- "use strict";function j(e,t){if(e===0&&t===0)return 0;const n=Math.atan2(e,t)*(180/Math.PI);return n>=0?n:n+360}function Ce({C1:e,C2:t,h1_d:n,h2_d:o}){if(e*t===0)return 0;const r=o-n;return Math.abs(r)<=180?r:r>180?r-360:r+360}function Se({C1:e,C2:t,h1_d:n,h2_d:o}){if(e*t===0)return o+n;const r=Math.abs(n-o);return r<=180?(o+n)/2:r>180&&n+o<360?(o+n+360)/2:(o+n-360)/2}const b=e=>e*(Math.PI/180),O=e=>Math.sqrt(e**7/(e**7+25**7));function g(e,t){const n=e/255,o=t?.03928:.04045;let r;return n>o?r=((n+.055)/1.055)**2.4:r=n/12.92,r}function y(e){const t=.20689655172413793,n=t**3;let o;return e>n?o=Math.cbrt(e):o=e/(3*t**2)+4/29,o}function pe(e,t,n){return Math.min(Math.max(e,t),n)}function V(e,t){const n=e.L,o=e.a,r=e.b,a=t.L,s=t.a,c=t.b,f=1,m=1,G=1,h=Math.sqrt(o**2+r**2),C=Math.sqrt(s**2+c**2),ue=a-n,le=(h+C)/2,F=.5*(1-O(le)),E=o*(1+F),Y=s*(1+F),B=Math.sqrt(E**2+r**2),k=Math.sqrt(Y**2+c**2),w=(B+k)/2,X=k-B,Z=j(r,E),D=j(c,Y),de=Ce({C1:h,C2:C,h1_d:Z,h2_d:D}),z=2*Math.sqrt(B*k)*Math.sin(b(de)/2),S=Se({C1:h,C2:C,h1_d:Z,h2_d:D}),_=(n+a)/2,me=1-.17*Math.cos(b(S-30))+.24*Math.cos(b(2*S))+.32*Math.cos(b(3*S+6))-.2*Math.cos(b(4*S-63)),be=1+.015*(_-50)**2/Math.sqrt(20+(_-50)**2),T=.045*w+1,U=1+.015*w*me,ge=30*Math.exp(-(((S-275)/25)**2)),he=-2*O(w)*Math.sin(b(ge*2));return Math.sqrt((ue/(f*be))**2+(X/(m*T))**2+(z/(G*U))**2+he*(X/(m*T))*(z/(G*U)))}function J(e){const{R:t,G:n,B:o}=e,r=g(t)*100,a=g(n)*100,s=g(o)*100,c=r*.4124+a*.3576+s*.1805,f=r*.2126+a*.7152+s*.0722,m=r*.0193+a*.1192+s*.9505;return{X:c,Y:f,Z:m}}function K(e){const{X:t,Y:n,Z:o}=e,r=t/95.047,a=n/100,s=o/108.883,c=y(r),f=y(a),m=y(s),G=116*f-16,h=500*(c-f),C=200*(f-m);return{L:G,a:h,b:C}}function N(e){const t=J(e);return K(t)}const Q=(e,t)=>{const n=N(e),o=N(t);return V(n,o)},ee=/^#[a-fA-F0-9]{6}$/,te=/^#[a-fA-F0-9]{8}$/,ne=/^#[a-fA-F0-9]{3}$/,re=/^#[a-fA-F0-9]{4}$/,oe=/^rgba*\(\s*([-+]?\d+)\s*(?:,)?\s*([-+]?\d+)\s*(?:,)?\s*([-+]?\d+)\s*(?:,*|\/*)\s*([-+]?\d*[.]?\d+[%]?)*\)$/i;function i(e){const t=e.match(oe);if(!t)throw new Error(`convertCSSRGBtoHex expects a valid CSS RGB string but got ${e}`);const n=o=>o?Number.parseFloat(o):void 0;return{R:n(t[1]),G:n(t[2]),B:n(t[3]),A:n(t[4])}}function p({R:e,G:t,B:n,A:o}){const r=a=>pe(a,0,255).toString(16).padStart(2,"0");return`#${r(e)}${r(t)}${r(n)}${o?r(Math.round(o*255)):""}`}function M(e){const t=i(e);return p(t)}function u(e){if(typeof e!="string")throw new Error(`convertHextoRGB expects a string but got a ${typeof e}`);if(e.match(ee))return{R:Number.parseInt(`${e[1]}${e[2]}`,16),G:Number.parseInt(`${e[3]}${e[4]}`,16),B:Number.parseInt(`${e[5]}${e[6]}`,16)};if(e.match(ne))return{R:Number.parseInt(`${e[1]}${e[1]}`,16),G:Number.parseInt(`${e[2]}${e[2]}`,16),B:Number.parseInt(`${e[3]}${e[3]}`,16)};if(e.match(te))return{R:Number.parseInt(`${e[1]}${e[2]}`,16),G:Number.parseInt(`${e[3]}${e[4]}`,16),B:Number.parseInt(`${e[5]}${e[6]}`,16),A:Math.round(Number.parseInt(`${e[7]}${e[8]}`,16)/255*100)/100};if(e.match(re))return{R:Number.parseInt(`${e[1]}${e[1]}`,16),G:Number.parseInt(`${e[2]}${e[2]}`,16),B:Number.parseInt(`${e[3]}${e[3]}`,16),A:Math.round(Number.parseInt(`${e[4]}${e[4]}`,16)/255*100)/100};throw new Error(`convertHextoRGB expects an valid hexadecimal colour value but got ${e}`)}function Re(e){const t=u(e);return t.A?`rgba(${t.R},${t.G},${t.B},${t.A})`:`rgb(${t.R},${t.G},${t.B})`}const H=new Map([["aliceblue","#f0f8ff"],["antiquewhite","#faebd7"],["aqua","#00ffff"],["aquamarine","#7fffd4"],["azure","#f0ffff"],["beige","#f5f5dc"],["bisque","#ffe4c4"],["black","#000000"],["blanchedalmond","#ffebcd"],["blue","#0000ff"],["blueviolet","#8a2be2"],["brown","#a52a2a"],["burlywood","#deb887"],["cadetblue","#5f9ea0"],["chartreuse","#7fff00"],["chocolate","#d2691e"],["coral","#ff7f50"],["cornflowerblue","#6495ed"],["cornsilk","#fff8dc"],["crimson","#dc143c"],["cyan","#00ffff"],["darkblue","#00008b"],["darkcyan","#008b8b"],["darkgoldenrod","#b8860b"],["darkgray","#a9a9a9"],["darkgreen","#006400"],["darkgrey","#a9a9a9"],["darkkhaki","#bdb76b"],["darkmagenta","#8b008b"],["darkolivegreen","#556b2f"],["darkorange","#ff8c00"],["darkorchid","#9932cc"],["darkred","#8b0000"],["darksalmon","#e9967a"],["darkseagreen","#8fbc8f"],["darkslateblue","#483d8b"],["darkslategray","#2f4f4f"],["darkslategrey","#2f4f4f"],["darkturquoise","#00ced1"],["darkviolet","#9400d3"],["deeppink","#ff1493"],["deepskyblue","#00bfff"],["dimgray","#696969"],["dimgrey","#696969"],["dodgerblue","#1e90ff"],["firebrick","#b22222"],["floralwhite","#fffaf0"],["forestgreen","#228b22"],["fuchsia","#ff00ff"],["gainsboro","#dcdcdc"],["ghostwhite","#f8f8ff"],["gold","#ffd700"],["goldenrod","#daa520"],["gray","#808080"],["green","#008000"],["greenyellow","#adff2f"],["grey","#808080"],["honeydew","#f0fff0"],["hotpink","#ff69b4"],["indianred","#cd5c5c"],["indigo","#4b0082"],["ivory","#fffff0"],["khaki","#f0e68c"],["lavender","#e6e6fa"],["lavenderblush","#fff0f5"],["lawngreen","#7cfc00"],["lemonchiffon","#fffacd"],["lightblue","#add8e6"],["lightcoral","#f08080"],["lightcyan","#e0ffff"],["lightgoldenrodyellow","#fafad2"],["lightgray","#d3d3d3"],["lightgreen","#90ee90"],["lightgrey","#d3d3d3"],["lightpink","#ffb6c1"],["lightsalmon","#ffa07a"],["lightseagreen","#20b2aa"],["lightskyblue","#87cefa"],["lightslategray","#778899"],["lightslategrey","#778899"],["lightsteelblue","#b0c4de"],["lightyellow","#ffffe0"],["lime","#00ff00"],["limegreen","#32cd32"],["linen","#faf0e6"],["magenta","#ff00ff"],["maroon","#800000"],["mediumaquamarine","#66cdaa"],["mediumblue","#0000cd"],["mediumorchid","#ba55d3"],["mediumpurple","#9370db"],["mediumseagreen","#3cb371"],["mediumslateblue","#7b68ee"],["mediumspringgreen","#00fa9a"],["mediumturquoise","#48d1cc"],["mediumvioletred","#c71585"],["midnightblue","#191970"],["mintcream","#f5fffa"],["mistyrose","#ffe4e1"],["moccasin","#ffe4b5"],["navajowhite","#ffdead"],["navy","#000080"],["oldlace","#fdf5e6"],["olive","#808000"],["olivedrab","#6b8e23"],["orangered","#ff4500"],["orchid","#da70d6"],["palegoldenrod","#eee8aa"],["palegreen","#98fb98"],["paleturquoise","#afeeee"],["palevioletred","#db7093"],["papayawhip","#ffefd5"],["peachpuff","#ffdab9"],["peru","#cd853f"],["pink","#ffc0cb"],["plum","#dda0dd"],["powderblue","#b0e0e6"],["purple","#800080"],["red","#ff0000"],["rosybrown","#bc8f8f"],["royalblue","#4169e1"],["saddlebrown","#8b4513"],["salmon","#fa8072"],["sandybrown","#f4a460"],["seagreen","#2e8b57"],["seashell","#fff5ee"],["sienna","#a0522d"],["silver","#c0c0c0"],["skyblue","#87ceeb"],["slateblue","#6a5acd"],["slategray","#708090"],["slategrey","#708090"],["snow","#fffafa"],["springgreen","#00ff7f"],["steelblue","#4682b4"],["tan","#d2b48c"],["teal","#008080"],["thistle","#d8bfd8"],["tomato","#ff6347"],["transparent","#00000000"],["turquoise","#40e0d0"],["violet","#ee82ee"],["wheat","#f5deb3"],["white","#ffffff"],["whitesmoke","#f5f5f5"],["yellow","#ffff00"],["yellowgreen","#9acd32"]]);function ae(e){for(const[t,n]of H.entries())if(n===e)return t}function l(e){return H.get(e)}function R(e){const t=l(e);if(t)return u(t)}function q({R:e,G:t,B:n,A:o}){return`rgb(${e} ${t} ${n}${o?` / ${o}`:""})`}function I(e){const t=p(e);return ae(t)}function $(e,t){if(!t||t.length<2)return e;const n=[];for(const r of t){const a=Q(e,r);n.push([r,a])}return n.sort((r,a)=>r[1]-a[1])[0][0]}function $e(e,t){if(!t||t.length<2)return e;const n=i(e),o=t.map(a=>i(a)),r=$(n,o);return q(r)}function L(e){return!!e.match(oe)}function W(e){return!!e.match(ee)||!!e.match(te)||!!e.match(re)||!!e.match(ne)}function x(e){return H.has(e)}function ve(e,t){if(!t||t.length<2)return e;let n,o;const r=[];if(W(e)&&(n=u(e),o="hex"),L(e)&&(n=i(e),o="cssRGB"),x(e)&&(n=R(e),o="namedCSS"),!n)return;for(const s of t)W(s)&&r.push(u(s)),L(s)&&r.push(i(s)),x(s)&&r.push(R(s));if(r.length<2)return e;const a=$(n,r);return o==="hex"?p(a):o==="cssRGB"?q(a):I(a)}function Ge(e,t){if(!t||t.length<2)return e;const n=u(e),o=t.map(a=>u(a)),r=$(n,o);return p(r)}function Be(e,t){if(!t||t.length<2)return e;const n=R(e),r=t.map(s=>R(s)).filter(s=>s!==void 0);if(!n||r.length<2)return e;const a=$(n,r);return I(a)}function v({R:e,G:t,B:n},o){const r=o==="WCAG2.1",a=g(e,r),s=g(t,r),c=g(n,r);return .2126*a+.7152*s+.0722*c}function d(e,t){const n=u(e);return v(n,t)}function se(e,t){const n=Math.max(e,t),o=Math.min(e,t),r=(n+.05)/(o+.05);return Math.floor(r*1e3)/1e3}function P(e,t,n){const o=d(e,n),r=d(t,n);return se(o,r)}function ke(e,t,n){let o,r;if(e.startsWith("#"))o=e;else if(e.startsWith("rgb"))o=M(e);else{const a=l(e);if(a===void 0)throw new Error(`getContrastRatio expects valid CSS named colours.
2
- ${e} is not a valid CSS named colour.
3
- See https://developer.mozilla.org/en-US/docs/Web/CSS/named-color`);o=a}if(t.startsWith("#"))r=t;else if(t.startsWith("rgb"))r=M(t);else{const a=l(t);if(a===void 0)throw new Error(`getContrastRatio expects valid CSS named colours.
4
- ${t} is not a valid CSS named colour.
5
- See https://developer.mozilla.org/en-US/docs/Web/CSS/named-color`);r=a}return P(o,r,n)}function we(e,t,n){const o=i(e),r=i(t),a=v(o,n),s=v(r,n);return se(a,s)}function ye(e,t,n){const o=l(e),r=l(t);if(o===void 0||r===void 0)throw new Error(`getContrastRatioFromNamedCSSColour expects valid CSS named colours.
6
- ${e} or ${t} are not valid CSS named colours.
7
- See https://developer.mozilla.org/en-US/docs/Web/CSS/named-color`);return P(o,r,n)}function A(e,t){const n=d(e,t)+.05,o=1.05/n,r=n/.05;return o>r}function ce(e,t){const n=l(e);if(n)return A(n,t);throw new Error(`${e} is not a valid colour format. isCSSNamedDarkColour only accepts CSS named colours. Check more details here https://developer.mozilla.org/en-US/docs/Web/CSS/named-color`)}function fe(e,t){const n=i(e),o=v(n,t),r=1.05/o,a=o/.05;return r>a}function Ne(e,t){try{return e.startsWith("#")?A(e,t):e.startsWith("rgb")?fe(e,t):ce(e,t)}catch{throw new Error(`${e} is not a valid colour format. isDarkColour accepts CSS RGB formats, ie rgb(0,0,0) and rgba(255, 255, 255, 0.4), hexadecimal and CSS named colours.`)}}const ie=(e,t)=>e>t?e/t:t/e,Me=({backgroundColour:e,optionOneColour:t,optionTwoColour:n},o)=>{const r=d(e,o)+.05,a=d(t,o)+.05,s=d(n,o)+.05,c=ie(a,r),f=ie(s,r);return c>f?t:n};export{Q as RGBdistance,V as ciede2000,M as convertCSSRGBtoHex,i as convertCSSRGBtoRGB,Re as convertHextoCSSRGB,ae as convertHextoNamedCSSColour,u as convertHextoRGB,l as convertNamedCSSColourtoHex,R as convertNamedCSSColourtoRGB,q as convertRGBtoCSSRGB,p as convertRGBtoHex,N as convertRGBtoLab,I as convertRGBtoNamedCSSColour,J as convertRGBtoXYZ,K as convertXYZtoLab,$e as findNearestCSSRGBColour,ve as findNearestColour,Ge as findNearestHexColour,Be as findNearestNamedCSSColour,$ as findNearestRGBColour,ke as getContrastRatio,we as getContrastRatioFromCSSRGB,P as getContrastRatioFromHex,ye as getContrastRatioFromNamedCSSColour,d as getSRGBLuminanceFromHex,v as getSRGBLuminanceFromRGB,ce as isCSSNamedDarkColour,L as isCSSRGBColour,fe as isCSSRGBDarkColour,Ne as isDarkColour,W as isHexColour,A as isHexDarkColour,x as isNamedCSSColour,Me as pickHexColourContrast};
1
+ "use strict";var $=new Map([["aliceblue","#f0f8ff"],["antiquewhite","#faebd7"],["aqua","#00ffff"],["aquamarine","#7fffd4"],["azure","#f0ffff"],["beige","#f5f5dc"],["bisque","#ffe4c4"],["black","#000000"],["blanchedalmond","#ffebcd"],["blue","#0000ff"],["blueviolet","#8a2be2"],["brown","#a52a2a"],["burlywood","#deb887"],["cadetblue","#5f9ea0"],["chartreuse","#7fff00"],["chocolate","#d2691e"],["coral","#ff7f50"],["cornflowerblue","#6495ed"],["cornsilk","#fff8dc"],["crimson","#dc143c"],["cyan","#00ffff"],["darkblue","#00008b"],["darkcyan","#008b8b"],["darkgoldenrod","#b8860b"],["darkgray","#a9a9a9"],["darkgreen","#006400"],["darkgrey","#a9a9a9"],["darkkhaki","#bdb76b"],["darkmagenta","#8b008b"],["darkolivegreen","#556b2f"],["darkorange","#ff8c00"],["darkorchid","#9932cc"],["darkred","#8b0000"],["darksalmon","#e9967a"],["darkseagreen","#8fbc8f"],["darkslateblue","#483d8b"],["darkslategray","#2f4f4f"],["darkslategrey","#2f4f4f"],["darkturquoise","#00ced1"],["darkviolet","#9400d3"],["deeppink","#ff1493"],["deepskyblue","#00bfff"],["dimgray","#696969"],["dimgrey","#696969"],["dodgerblue","#1e90ff"],["firebrick","#b22222"],["floralwhite","#fffaf0"],["forestgreen","#228b22"],["fuchsia","#ff00ff"],["gainsboro","#dcdcdc"],["ghostwhite","#f8f8ff"],["gold","#ffd700"],["goldenrod","#daa520"],["gray","#808080"],["green","#008000"],["greenyellow","#adff2f"],["grey","#808080"],["honeydew","#f0fff0"],["hotpink","#ff69b4"],["indianred","#cd5c5c"],["indigo","#4b0082"],["ivory","#fffff0"],["khaki","#f0e68c"],["lavender","#e6e6fa"],["lavenderblush","#fff0f5"],["lawngreen","#7cfc00"],["lemonchiffon","#fffacd"],["lightblue","#add8e6"],["lightcoral","#f08080"],["lightcyan","#e0ffff"],["lightgoldenrodyellow","#fafad2"],["lightgray","#d3d3d3"],["lightgreen","#90ee90"],["lightgrey","#d3d3d3"],["lightpink","#ffb6c1"],["lightsalmon","#ffa07a"],["lightseagreen","#20b2aa"],["lightskyblue","#87cefa"],["lightslategray","#778899"],["lightslategrey","#778899"],["lightsteelblue","#b0c4de"],["lightyellow","#ffffe0"],["lime","#00ff00"],["limegreen","#32cd32"],["linen","#faf0e6"],["magenta","#ff00ff"],["maroon","#800000"],["mediumaquamarine","#66cdaa"],["mediumblue","#0000cd"],["mediumorchid","#ba55d3"],["mediumpurple","#9370db"],["mediumseagreen","#3cb371"],["mediumslateblue","#7b68ee"],["mediumspringgreen","#00fa9a"],["mediumturquoise","#48d1cc"],["mediumvioletred","#c71585"],["midnightblue","#191970"],["mintcream","#f5fffa"],["mistyrose","#ffe4e1"],["moccasin","#ffe4b5"],["navajowhite","#ffdead"],["navy","#000080"],["oldlace","#fdf5e6"],["olive","#808000"],["olivedrab","#6b8e23"],["orange","#ffa500"],["orangered","#ff4500"],["orchid","#da70d6"],["palegoldenrod","#eee8aa"],["palegreen","#98fb98"],["paleturquoise","#afeeee"],["palevioletred","#db7093"],["papayawhip","#ffefd5"],["peachpuff","#ffdab9"],["peru","#cd853f"],["pink","#ffc0cb"],["plum","#dda0dd"],["powderblue","#b0e0e6"],["purple","#800080"],["rebeccapurple","#663399"],["red","#ff0000"],["rosybrown","#bc8f8f"],["royalblue","#4169e1"],["saddlebrown","#8b4513"],["salmon","#fa8072"],["sandybrown","#f4a460"],["seagreen","#2e8b57"],["seashell","#fff5ee"],["sienna","#a0522d"],["silver","#c0c0c0"],["skyblue","#87ceeb"],["slateblue","#6a5acd"],["slategray","#708090"],["slategrey","#708090"],["snow","#fffafa"],["springgreen","#00ff7f"],["steelblue","#4682b4"],["tan","#d2b48c"],["teal","#008080"],["thistle","#d8bfd8"],["tomato","#ff6347"],["transparent","#00000000"],["turquoise","#40e0d0"],["violet","#ee82ee"],["wheat","#f5deb3"],["white","#ffffff"],["whitesmoke","#f5f5f5"],["yellow","#ffff00"],["yellowgreen","#9acd32"]]),j=/^#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{4}|[0-9a-fA-F]{3})$/,Q=/^rgba?\(\s*([-+]?\d*\.?\d+%?)\s*[,\s]\s*([-+]?\d*\.?\d+%?)\s*[,\s]\s*([-+]?\d*\.?\d+%?)\s*(?:[,/]\s*([-+]?\d*\.?\d+%?))?\s*\)$/i;function L(e){return Q.test(e)}function x(e){return j.test(e)}function A(e){return $.has(e)}function J(e,t){if(e===0&&t===0)return 0;const r=Math.atan2(e,t)*(180/Math.PI);return r>=0?r:r+360}function Se({C1:e,C2:t,h1_d:r,h2_d:n}){if(e*t===0)return 0;const o=n-r;return Math.abs(o)<=180?o:o>180?o-360:o+360}function pe({C1:e,C2:t,h1_d:r,h2_d:n}){if(e*t===0)return n+r;const o=Math.abs(r-n);return o<=180?(n+r)/2:o>180&&r+n<360?(n+r+360)/2:(n+r-360)/2}var ve=Math.PI/180,m=e=>e*ve,Re=25**7,K=e=>Math.sqrt(e**7/(e**7+Re));function C(e,t){const r=e/255,n=t?.03928:.04045;let o;return r>n?o=((r+.055)/1.055)**2.4:o=r/12.92,o}var ee=6/29,Be=ee**3,Ge=3*ee**2;function I(e){return e>Be?Math.cbrt(e):e/Ge+4/29}function ke(e,t,r){return Math.min(Math.max(e,t),r)}var G="https://developer.mozilla.org/en-US/docs/Web/CSS/named-color";function te(e,t){const r=e.L,n=e.a,o=e.b,a=t.L,s=t.a,f=t.b,i=1,c=1,g=1,u=Math.sqrt(n**2+o**2),k=Math.sqrt(s**2+f**2),de=a-r,D=.5*(1-K((u+k)/2)),F=n*(1+D),T=s*(1+D),w=Math.sqrt(F**2+o**2),y=Math.sqrt(T**2+f**2),M=(w+y)/2,Y=y-w,O=J(o,F),V=J(f,T),ge=Se({C1:u,C2:k,h1_d:O,h2_d:V}),X=2*Math.sqrt(w*y)*Math.sin(m(ge)/2),S=pe({C1:u,C2:k,h1_d:O,h2_d:V}),Z=(r+a)/2,he=1-.17*Math.cos(m(S-30))+.24*Math.cos(m(2*S))+.32*Math.cos(m(3*S+6))-.2*Math.cos(m(4*S-63)),be=1+.015*(Z-50)**2/Math.sqrt(20+(Z-50)**2),U=.045*M+1,z=1+.015*M*he,me=30*Math.exp(-(((S-275)/25)**2)),Ce=-2*K(M)*Math.sin(m(me*2));return Math.sqrt((de/(i*be))**2+(Y/(c*U))**2+(X/(g*z))**2+Ce*(Y/(c*U))*(X/(g*z)))}function re(e,t=!1){if(e.endsWith("%")){const r=Number.parseFloat(e.slice(0,-1));return t?r/100:Math.round(r/100*255)}return Number.parseFloat(e)}function N(e){if(e)return re(e)}function we(e){if(e)return re(e,!0)}function l(e){const t=e.match(Q);if(!t)throw new Error(`convertCSSRGBtoRGB expects a valid CSS RGB string but got ${e}`);return{R:N(t[1]),G:N(t[2]),B:N(t[3]),A:we(t[4])}}function p({R:e,G:t,B:r,A:n}){const o=a=>ke(a,0,255).toString(16).padStart(2,"0");return`#${o(e)}${o(t)}${o(r)}${n?o(Math.round(n*255)):""}`}function H(e){return p(l(e))}function d(e){if(typeof e!="string"||!j.test(e))return null;switch(e.length){case 7:return{R:parseInt(e.slice(1,3),16),G:parseInt(e.slice(3,5),16),B:parseInt(e.slice(5,7),16)};case 4:return{R:parseInt(e.slice(1,2).repeat(2),16),G:parseInt(e.slice(2,3).repeat(2),16),B:parseInt(e.slice(3,4).repeat(2),16)};case 9:return{R:parseInt(e.slice(1,3),16),G:parseInt(e.slice(3,5),16),B:parseInt(e.slice(5,7),16),A:Math.round(parseInt(e.slice(7,9),16)/255*100)/100};default:return{R:parseInt(e.slice(1,2).repeat(2),16),G:parseInt(e.slice(2,3).repeat(2),16),B:parseInt(e.slice(3,4).repeat(2),16),A:Math.round(parseInt(e.slice(4,5).repeat(2),16)/255*100)/100}}}function ye(e){const t=d(e);return t?t.A?`rgba(${t.R},${t.G},${t.B},${t.A})`:`rgb(${t.R},${t.G},${t.B})`:null}function ne(e){for(const[t,r]of $.entries())if(r===e)return t}function h(e){return $.get(e)}function v(e){const t=h(e);if(t)return d(t)||void 0}function _({R:e,G:t,B:r,A:n}){return`rgb(${e} ${t} ${r}${n?` / ${n}`:""})`}function oe(e){const{R:t,G:r,B:n}=e,o=C(t)*100,a=C(r)*100,s=C(n)*100;return{X:o*.4124+a*.3576+s*.1805,Y:o*.2126+a*.7152+s*.0722,Z:o*.0193+a*.1192+s*.9505}}function ae(e){const{X:t,Y:r,Z:n}=e,o=t/95.047,a=r/100,s=n/108.883,f=I(o),i=I(a),c=I(s);return{L:116*i-16,a:500*(f-i),b:200*(i-c)}}function q(e){return ae(oe(e))}function P(e){return ne(p(e))}var se=(e,t)=>te(q(e),q(t));function R(e,t){if(!t||t.length<2)return e;let r=e,n=Number.POSITIVE_INFINITY;for(const o of t){const a=se(e,o);a<n&&(n=a,r=o)}return r}function Me(e,t){if(!t||t.length<2)return e;let r,n;const o=[];if(x(e)?(r=d(e),n="hex"):L(e)?(r=l(e),n="cssRGB"):A(e)&&(r=v(e),n="namedCSS"),!r)return;for(const s of t)if(x(s)){const f=d(s);f&&o.push(f)}else if(L(s))o.push(l(s));else if(A(s)){const f=v(s);f&&o.push(f)}if(o.length<2)return e;const a=R(r,o);return n==="hex"?p(a):n==="cssRGB"?_(a):P(a)}function $e(e,t){return!t||t.length<2?e:_(R(l(e),t.map(r=>l(r))))}function Le(e,t){if(!t||t.length<2)return e;const r=d(e);return r?p(R(r,t.map(n=>d(n)).filter(n=>n!==null))):e}function xe(e,t){if(!t||t.length<2)return e;const r=v(e),n=t.map(o=>v(o)).filter(o=>o!==void 0);return!r||n.length<2?e:P(R(r,n))}function B({R:e,G:t,B:r},n){const o=n==="WCAG2.1",a=C(e,o),s=C(t,o),f=C(r,o);return .2126*a+.7152*s+.0722*f}function b(e,t){const r=d(e);return r?B(r,t):null}function fe(e,t){const r=Math.max(e,t),n=Math.min(e,t),o=(r+.05)/(n+.05);return Math.floor(o*1e3)/1e3}function E(e,t,r){const n=b(e,r),o=b(t,r);return n===null||o===null?null:fe(n,o)}function Ae(e,t,r){let n,o;if(e.startsWith("#"))n=e;else if(e.startsWith("rgb"))n=H(e);else{const s=h(e);if(s===void 0)throw new Error(`getContrastRatio expects valid CSS named colours. ${e} is not a valid CSS named colour. See ${G}`);n=s}if(t.startsWith("#"))o=t;else if(t.startsWith("rgb"))o=H(t);else{const s=h(t);if(s===void 0)throw new Error(`getContrastRatio expects valid CSS named colours. ${t} is not a valid CSS named colour. See ${G}`);o=s}const a=E(n,o,r);if(a===null)throw new Error(`getContrastRatio expects valid hexadecimal colours but received ${n} or ${o}.`);return a}function Ie(e,t,r){const n=l(e),o=l(t);return fe(B(n,r),B(o,r))}function Ne(e,t,r){const n=h(e),o=h(t);if(n===void 0||o===void 0)throw new Error(`getContrastRatioFromNamedCSSColour expects valid CSS named colours. ${e} or ${t} are not valid CSS named colours. See ${G}`);return E(n,o,r)}function W(e,t){const r=b(e,t);if(r===null)return!1;const n=r+.05;return 1.05/n>n/.05}function ie(e,t){const r=h(e);if(r)return W(r,t);throw new Error(`${e} is not a valid colour format. isCSSNamedDarkColour only accepts CSS named colours. See ${G}`)}function ce(e,t){const r=B(l(e),t);return 1.05/r>r/.05}function He(e,t){try{return e.startsWith("#")?W(e,t):e.startsWith("rgb")?ce(e,t):ie(e,t)}catch{throw new Error(`${e} is not a valid colour format. isDarkColour accepts CSS RGB formats, ie rgb(0,0,0), rgba(255, 255, 255, 0.4), rgb(50%, 25%, 100%), and rgba(50%, 25%, 100%, 80%), hexadecimal and CSS named colours.`)}}var ue=(e,t)=>e>t?e/t:t/e,_e=({backgroundColour:e,optionOneColour:t,optionTwoColour:r},n)=>{const o=b(e,n),a=b(t,n),s=b(r,n);if(o===null||a===null||s===null)return null;const f=o+.05,i=a+.05,c=s+.05;return ue(i,f)>ue(c,f)?t:r};function qe(e,t,r){const n=e/255,o=t/255,a=r/255,s=Math.max(n,o,a),f=Math.min(n,o,a);let i=0,c=0;const g=s,u=s-f;return s===0?c=0:c=u/s,u!==0&&(s===n?i=(o-a)/u%6:s===o?i=(a-n)/u+2:s===a&&(i=(n-o)/u+4),i=i*60,i<0&&(i=i+360)),{h:i,s:c,v:g}}function Pe(e){const t=d(e);if(!t)return null;const{R:r,G:n,B:o,A:a}=t,s=typeof a=="number"?a:1,{h:f,s:i,v:c}=qe(r,n,o);return{h:f,s:i,v:c,a:s}}function le(e){return e===0?1:e===1?2:0}function Ee(e){const t=new Map;for(const a of e)if(!t.has(a)){const s=Pe(a);s&&t.set(a,s)}const r=[],n=[],o=[];for(const a of e){const s=t.get(a);if(!s)continue;const{s:f,a:i}=s;i===0?o.push(a):f===0?n.push(a):r.push(a)}return r.sort((a,s)=>{const f=t.get(a),i=t.get(s);return f.h!==i.h?f.h-i.h:i.s-f.s}),n.sort((a,s)=>{const f=t.get(a),i=t.get(s),c=le(f.v),g=le(i.v);return c!==g?c-g:f.v-i.v}),o.sort((a,s)=>{const f=t.get(a),i=t.get(s);return f.v-i.v}),[...r,...n,...o]}export{se as RGBdistance,te as ciede2000,H as convertCSSRGBtoHex,l as convertCSSRGBtoRGB,ye as convertHextoCSSRGB,ne as convertHextoNamedCSSColour,d as convertHextoRGB,h as convertNamedCSSColourtoHex,v as convertNamedCSSColourtoRGB,_ as convertRGBtoCSSRGB,p as convertRGBtoHex,q as convertRGBtoLab,P as convertRGBtoNamedCSSColour,oe as convertRGBtoXYZ,ae as convertXYZtoLab,$e as findNearestCSSRGBColour,Me as findNearestColour,Le as findNearestHexColour,xe as findNearestNamedCSSColour,R as findNearestRGBColour,Ae as getContrastRatio,Ie as getContrastRatioFromCSSRGB,E as getContrastRatioFromHex,Ne as getContrastRatioFromNamedCSSColour,b as getSRGBLuminanceFromHex,B as getSRGBLuminanceFromRGB,ie as isCSSNamedDarkColour,L as isCSSRGBColour,ce as isCSSRGBDarkColour,He as isDarkColour,x as isHexColour,W as isHexDarkColour,A as isNamedCSSColour,_e as pickHexColourContrast,Ee as sortHexColours};