UNPKG

md2

Version:

Angular2 based Material Design components, directives and services are Accordion, Autocomplete, Chips(Tags), Collapse, Colorpicker, Data Table, Datepicker, Dialog(Modal), Menu, Multiselect, Select, Tabs, Tags(Chips), Toast and Tooltip.

249 lines 8.69 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { Injectable } from '@angular/core'; export var COLOR_RGB = /(rgb)a?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*%?,\s*(\d{1,3})\s*%?(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/; export var COLOR_HSL = /(hsl)a?\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/; var Hsva = (function () { function Hsva(h, s, v, a) { this.h = h; this.s = s; this.v = v; this.a = a; } return Hsva; }()); export { Hsva }; var Hsla = (function () { function Hsla(h, s, l, a) { this.h = h; this.s = s; this.l = l; this.a = a; } return Hsla; }()); export { Hsla }; var Rgba = (function () { function Rgba(r, g, b, a) { this.r = r; this.g = g; this.b = b; this.a = a; } return Rgba; }()); export { Rgba }; var ColorUtil = (function () { function ColorUtil() { } /** * hsla to hsva * @param hsla */ ColorUtil.prototype.hsla2hsva = function (hsla) { var h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1), l = Math.min(hsla.l, 1); var a = Math.min(hsla.a, 1); if (l === 0) { return { h: h, s: 0, v: 0, a: a }; } else { var v = l + s * (1 - Math.abs(2 * l - 1)) / 2; return { h: h, s: 2 * (v - l) / v, v: v, a: a }; } }; /** * hsva to hsla * @param hsva */ ColorUtil.prototype.hsva2hsla = function (hsva) { var h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a; if (v === 0) { return new Hsla(h, 0, 0, a); } else if (s === 0 && v === 1) { return new Hsla(h, 1, 1, a); } else { var l = v * (2 - s) / 2; return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a); } }; /** * rgba to hsva * @param rgba */ ColorUtil.prototype.rgbaToHsva = function (rgba) { var r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1), b = Math.min(rgba.b, 1); var a = Math.min(rgba.a, 1); var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, v = max; var d = max - min; s = max === 0 ? 0 : d / max; if (max === min) { h = 0; } else { switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return new Hsva(h, s, v, a); }; /** * hsva to rgba * @param hsva */ ColorUtil.prototype.hsvaToRgba = function (hsva) { var h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a; var r, g, b; var i = Math.floor(h * 6); var f = h * 6 - i; var p = v * (1 - s); var q = v * (1 - f * s); var t = v * (1 - (1 - f) * s); switch (i % 6) { case 0: r = v; g = t; b = p; break; case 1: r = q; g = v; b = p; break; case 2: r = p; g = v; b = t; break; case 3: r = p; g = q; b = v; break; case 4: r = t; g = p; b = v; break; case 5: r = v; g = p; b = q; break; } return new Rgba(r, g, b, a); }; /** * string to hsva * @param colorString */ ColorUtil.prototype.stringToHsva = function (colorString) { var stringParsers = [ { re: COLOR_RGB, parse: function (execResult) { return new Rgba(parseInt(execResult[2]) / 255, parseInt(execResult[3]) / 255, parseInt(execResult[4]) / 255, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5])); } }, { re: COLOR_HSL, parse: function (execResult) { return new Hsla(parseInt(execResult[2]) / 360, parseInt(execResult[3]) / 100, parseInt(execResult[4]) / 100, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5])); } }, { re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/, parse: function (execResult) { return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, 1); } }, { re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/, parse: function (execResult) { return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255, parseInt(execResult[2] + execResult[2], 16) / 255, parseInt(execResult[3] + execResult[3], 16) / 255, 1); } } ]; colorString = colorString.toLowerCase(); var hsva = null; for (var key in stringParsers) { if (stringParsers.hasOwnProperty(key)) { var parser = stringParsers[key]; var match = parser.re.exec(colorString); var color = match && parser.parse(match); if (color) { if (color instanceof Rgba) { hsva = this.rgbaToHsva(color); } else if (color instanceof Hsla) { hsva = this.hsla2hsva(color); } return hsva; } } } return hsva; }; /** * output formate of color * @param hsva * @param outputFormat */ ColorUtil.prototype.outputFormat = function (hsva, outputFormat) { if (hsva.a < 1) { switch (outputFormat) { case 'hsl': var hsla = this.hsva2hsla(hsva); var hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100); return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' + hslaText.a + ')'; default: var rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva)); return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + Math.round(rgba.a * 100) / 100 + ')'; } } else { switch (outputFormat) { case 'hsl': var hsla = this.hsva2hsla(hsva); var hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100); return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)'; case 'rgb': var rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva)); return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')'; default: return this.hexText(this.denormalizeRGBA(this.hsvaToRgba(hsva))); } } }; ColorUtil.prototype.hexText = function (rgba) { var mainText = ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16); var hexText = '#' + mainText.substr(1); return hexText.toLowerCase(); }; ColorUtil.prototype.denormalizeRGBA = function (rgba) { return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a); }; return ColorUtil; }()); ColorUtil = __decorate([ Injectable() ], ColorUtil); export { ColorUtil }; //# sourceMappingURL=color-util.js.map