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
JavaScript
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