{"version":3,"sources":["webpack:///./node_modules/tinycolor2/tinycolor.js"],"names":["Math","trimLeft","trimRight","tinyCounter","mathRound","round","mathMin","min","mathMax","max","mathRandom","random","tinycolor","color","opts","this","rgb","r","g","b","a","s","v","l","ok","format","replace","toLowerCase","match","named","names","matchers","exec","rgba","hsl","h","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","String","substr","convertToPercentage","i","floor","f","p","q","t","mod","hsvToRgb","hue2rgb","hslToRgb","hasOwnProperty","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","d","rgbToHsv","rgbToHex","allow3Char","hex","pad2","toString","charAt","join","rgbaToArgbHex","convertDecimalToHex","desaturate","amount","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","ret","push","monochromatic","toHsv","modification","prototype","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","pow","setAlpha","value","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","clone","_applyModification","fn","args","apply","concat","slice","call","arguments","_applyCombination","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","parms","level","size","toUpperCase","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","length","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","o","flipped","flip","parseFloat","isNaN","n","indexOf","isOnePointZero","processPercent","isPercentage","parseInt","abs","val","c","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","module","exports"],"mappings":"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","file":"js/npm.tinycolor2.ad9cf7b0.js","sourcesContent":["// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n"],"sourceRoot":""}