@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/assertions.d.ts +4 -1
- package/dist/convertCSSRGBtoHex.d.ts +3 -0
- package/dist/convertCSSRGBtoRGB.d.ts +12 -0
- package/dist/convertHextoCSSRGB.d.ts +1 -1
- package/dist/convertHextoRGB.d.ts +2 -2
- package/dist/convertRGBtoHSV.d.ts +16 -0
- package/dist/getContrastRatio.d.ts +3 -2
- package/dist/getContrastRatioFromHex.d.ts +1 -1
- package/dist/getContrastRatioFromNamedCSSColour.d.ts +1 -1
- package/dist/getSRGBLuminanceFromHex.d.ts +1 -1
- package/dist/index.cjs +1011 -575
- package/dist/index.d.ts +4 -5
- package/dist/index.min.js +1 -7
- package/dist/index.mjs +1011 -610
- package/dist/isDarkColour.d.ts +2 -2
- package/dist/pickHexColourContrast.d.ts +1 -1
- package/dist/sortHexColours.d.ts +26 -0
- package/dist/types.d.ts +12 -1
- package/dist/util/index.d.ts +2 -12
- package/dist/util/regexers.d.ts +6 -9
- package/package.json +73 -57
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
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};
|