{"version":3,"file":"kendo.color.min.js","sources":["kendo.color.js"],"sourcesContent":["/***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n(function(f, define) {\n define('kendo.color',[ \"kendo.core\" ], f);\n})(function() {\n/* eslint-disable space-before-blocks, space-before-function-paren, no-multi-spaces */\n\n var __meta__ = {\n id: \"color\",\n name: \"Color utils\",\n category: \"framework\",\n advanced: true,\n description: \"Color utilities used across components\",\n depends: [ \"core\" ]\n };\n\nwindow.kendo = window.kendo || {};\n\nvar Class = kendo.Class;\nvar support = kendo.support;\n\nvar namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = Class.extend({\n init: function() { },\n\n toHSV: function() { return this; },\n\n toRGB: function() { return this; },\n\n toHex: function(options) { return this.toBytes().toHex(options); },\n\n toBytes: function() { return this; },\n\n toCss: function(options) { return \"#\" + this.toHex(options); },\n\n toCssRgba: function() {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n },\n\n toDisplay: function() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n },\n\n equals: function(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n },\n\n diff: function(other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n\n clone: function() {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n});\n\nvar RGB = BaseColor.extend({\n init: function(r, g, b, a) {\n BaseColor.fn.init.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n\n toHSV: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n },\n\n toHSL: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\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 default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n },\n\n toBytes: function() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n});\n\nvar Bytes = RGB.extend({\n init: function(r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n\n toRGB: function() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toHex: function(options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n },\n\n toBytes: function() {\n return this;\n }\n});\n\nfunction hex(n, width, pad) {\n if (pad === void 0) { pad = \"0\"; }\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = BaseColor.extend({\n init: function(h, s, v, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n\n toRGB: function() {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n});\n\nvar HSL = BaseColor.extend({\n init: function(h, s, l, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n\n toRGB: function() {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\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 new RGB(r, g, b, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n});\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nfunction parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = Class.extend({\n init: function(value) {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n },\n\n toHex: function() {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n },\n\n resolveColor: function(value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n },\n\n normalizeByte: function(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n },\n\n padDigit: function(value) {\n return (value.length === 1) ? \"0\" + value : value;\n },\n\n brightness: function(value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n },\n\n percBrightness: function() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n },\n\n isDark: function() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n});\n\nColor.fromBytes = function(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n};\n\nColor.fromRGB = function(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n};\n\nColor.fromHSV = function(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n};\n\nColor.fromHSL = function(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n};\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nkendo.deepExtend(kendo, {\n parseColor: parseColor,\n namedColors: namedColors,\n Color: Color\n});\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3){ (a3 || a2)(); });\n"],"names":["define","__meta__","id","name","category","advanced","description","depends","Class","window","kendo","support","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","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","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","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","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","browser","matchNamedColor","color","colorNames","Object","keys","push","regexp","RegExp","join","exec","BaseColor","extend","init","toHSV","this","toRGB","toHex","options","toBytes","toCss","toCssRgba","rgb","parseFloat","Number","a","toFixed","toDisplay","msie","version","equals","c","undefined","parseColor","diff","other","NaN","c1","c2","Math","sqrt","pow","r","g","b","clone","Bytes","RGB","fn","call","ref","min","max","delta","v","h","s","HSV","toHSL","l","d","HSL","round","value","hex","alpha","n","width","pad","result","toString","length","i","floor","f","p","q","t","hue2rgb","alphaFromHex","parseInt","safe","m","ret","toLowerCase","match","Error","DARK_TRESHOLD","Color","this$1","arguments","formats","resolvedColor","resolveColor","idx","formatRegex","re","processor","process","parts","channels","normalizeByte","padDigit","charAt","substr","replace","isNaN","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","deepExtend","amd","a1","a2","a3"],"mappings":"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"}