color-contrast-finder
Version:
The Color Contrast Finder is a library that automatically selects text colors that contrast with a given color.
2 lines (1 loc) • 4.67 kB
JavaScript
(function(d,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(d=typeof globalThis<"u"?globalThis:d||self,l(d["color-contrast-finder"]={}))})(this,(function(d){"use strict";const l={WHITE:"#FFFFFF",BLACK:"#000000"},s=1,b={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",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",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function g(a){if(!/^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/.test(a))throw new Error("Invalid HEX color code");const e=a.replace(/^#/,"");let r,o,t,n=s;return e.length===3||e.length===4?(r=parseInt(e[0]+e[0],16),o=parseInt(e[1]+e[1],16),t=parseInt(e[2]+e[2],16),e.length===4&&(n=parseInt(e[3]+e[3],16)/255)):(r=parseInt(e.slice(0,2),16),o=parseInt(e.slice(2,4),16),t=parseInt(e.slice(4,6),16),e.length===8&&(n=parseInt(e.slice(6,8),16)/255)),{r,g:o,b:t,a:n}}function h(a){const e=/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)/.exec(a);if(!e)throw new Error("Invalid RGB color code");const[,r,o,t,n]=e;return{r:parseInt(r,10),g:parseInt(o,10),b:parseInt(t,10),a:n?parseFloat(n):s}}function m(a){let f=a.trim().toLowerCase();if(f in b&&(f=b[f]),f.startsWith("#"))return g(f);if(f.startsWith("rgb")){const e=h(f);if(e)return e;throw new Error("Invalid RGB color format")}throw new Error("Invalid color format")}function u({r:a,g:f,b:e}){const r=c=>{const i=c/255;return i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)},o=r(a),t=r(f),n=r(e);return o*.2126+t*.7152+n*.0722}function p(a,f){const e=u({r:255,g:255,b:255});return a<1?a*f+(1-a)*e:f}function y(a,f,e,r){return a>=f?e:r}function k(a){const{color:f,threshold:e=.5,highColor:r=l.BLACK,lowColor:o=l.WHITE}=a,{r:t,g:n,b:c,a:i}=m(f),w=u({r:t,g:n,b:c}),v=p(i,w);return y(v,e,r,o)}d.findContrastColor=k,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}));