UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

283 lines • 8.77 kB
define(["require", "exports", "../../Utilities", "./colorValues"], function (require, exports, Utilities_1, colorValues_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MAX_COLOR_SATURATION = 100; exports.MAX_COLOR_HUE = 359; exports.MAX_COLOR_VALUE = 100; exports.MAX_COLOR_RGBA = 255; function cssColor(color) { return (_named(color) || _hex3(color) || _hex6(color) || _rgb(color) || _rgba(color) || _hsl(color) || _hsla(color)); } exports.cssColor = cssColor; function rgb2hex(r, g, b) { return [_numberToPaddedHex(r), _numberToPaddedHex(g), _numberToPaddedHex(b)].join(''); } exports.rgb2hex = rgb2hex; function hsv2hex(h, s, v) { var _a = hsv2rgb(h, s, v), r = _a.r, g = _a.g, b = _a.b; return rgb2hex(r, g, b); } exports.hsv2hex = hsv2hex; function rgb2hsv(r, g, b) { var h = NaN; var s; var v; var max = Math.max(r, g, b); var min = Math.min(r, g, b); var delta = max - min; // hue if (delta === 0) { h = 0; } else if (r === max) { h = ((g - b) / delta) % 6; } else if (g === max) { h = (b - r) / delta + 2; } else if (b === max) { h = (r - g) / delta + 4; } h = Math.round(h * 60); if (h < 0) { h += 360; } // saturation s = Math.round((max === 0 ? 0 : delta / max) * 100); // value v = Math.round((max / 255) * 100); return { h: h, s: s, v: v }; } exports.rgb2hsv = rgb2hsv; function hsl2hsv(h, s, l) { s *= (l < 50 ? l : 100 - l) / 100; return { h: h, s: ((2 * s) / (l + s)) * 100, v: l + s }; } exports.hsl2hsv = hsl2hsv; function hsv2hsl(h, s, v) { s /= exports.MAX_COLOR_SATURATION; v /= exports.MAX_COLOR_VALUE; var l = (2 - s) * v; var sl = s * v; sl /= l <= 1 ? l : 2 - l; sl = sl || 0; l /= 2; return { h: h, s: sl * 100, l: l * 100 }; } exports.hsv2hsl = hsv2hsl; function hsl2rgb(h, s, l) { var hsv = hsl2hsv(h, s, l); return hsv2rgb(hsv.h, hsv.s, hsv.v); } exports.hsl2rgb = hsl2rgb; function hsv2rgb(h, s, v) { s = s / 100; v = v / 100; var rgb = []; var c = v * s; var hh = h / 60; var x = c * (1 - Math.abs((hh % 2) - 1)); var m = v - c; switch (Math.floor(hh)) { case 0: rgb = [c, x, 0]; break; case 1: rgb = [x, c, 0]; break; case 2: rgb = [0, c, x]; break; case 3: rgb = [0, x, c]; break; case 4: rgb = [x, 0, c]; break; case 5: rgb = [c, 0, x]; break; } return { r: Math.round(exports.MAX_COLOR_RGBA * (rgb[0] + m)), g: Math.round(exports.MAX_COLOR_RGBA * (rgb[1] + m)), b: Math.round(exports.MAX_COLOR_RGBA * (rgb[2] + m)) }; } exports.hsv2rgb = hsv2rgb; function getColorFromString(inputColor) { var color = cssColor(inputColor); if (!color) { return; } var a = color.a, b = color.b, g = color.g, r = color.r; var _a = rgb2hsv(r, g, b), h = _a.h, s = _a.s, v = _a.v; return { a: a, b: b, g: g, h: h, hex: rgb2hex(r, g, b), r: r, s: s, str: inputColor, v: v }; } exports.getColorFromString = getColorFromString; function getColorFromRGBA(rgba) { var a = rgba.a, b = rgba.b, g = rgba.g, r = rgba.r; var _a = rgb2hsv(r, g, b), h = _a.h, s = _a.s, v = _a.v; var hex = rgb2hex(r, g, b); return { a: a, b: b, g: g, h: h, hex: hex, r: r, s: s, str: a === 100 ? "#" + hex : "rgba(" + r + ", " + g + ", " + b + ", " + a / 100 + ")", v: v }; } exports.getColorFromRGBA = getColorFromRGBA; function getFullColorString(color) { return "#" + hsv2hex(color.h, exports.MAX_COLOR_SATURATION, exports.MAX_COLOR_VALUE); } exports.getFullColorString = getFullColorString; function updateSV(color, s, v) { var _a = hsv2rgb(color.h, s, v), r = _a.r, g = _a.g, b = _a.b; var hex = rgb2hex(r, g, b); return { a: color.a, b: b, g: g, h: color.h, hex: hex, r: r, s: s, str: color.a === 100 ? "#" + hex : "rgba(" + r + ", " + g + ", " + b + ", " + color.a / 100 + ")", v: v }; } exports.updateSV = updateSV; function updateH(color, h) { var _a = hsv2rgb(h, color.s, color.v), r = _a.r, g = _a.g, b = _a.b; var hex = rgb2hex(r, g, b); return { a: color.a, b: b, g: g, h: h, hex: hex, r: r, s: color.s, str: color.a === 100 ? "#" + hex : "rgba(" + r + ", " + g + ", " + b + ", " + color.a / 100 + ")", v: color.v }; } exports.updateH = updateH; function updateA(color, a) { return Utilities_1.assign({}, color, { a: a, str: a === 100 ? "#" + color.hex : "rgba(" + color.r + ", " + color.g + ", " + color.b + ", " + a / 100 + ")" }); } exports.updateA = updateA; function _numberToPaddedHex(num) { var hex = num.toString(16); return hex.length === 1 ? '0' + hex : hex; } function _named(str) { var c = colorValues_1.COLOR_VALUES[str.toLowerCase()]; if (c) { return { r: c[0], g: c[1], b: c[2], a: 100 }; } } function _rgb(str) { if (0 === str.indexOf('rgb(')) { str = str.match(/rgb\(([^)]+)\)/)[1]; var parts = str.split(/ *, */).map(Number); return { r: parts[0], g: parts[1], b: parts[2], a: 100 }; } } function _rgba(str) { if (str.indexOf('rgba(') === 0) { str = str.match(/rgba\(([^)]+)\)/)[1]; var parts = str.split(/ *, */).map(Number); return { r: parts[0], g: parts[1], b: parts[2], a: parts[3] * 100 }; } } function _hex6(str) { if ('#' === str[0] && 7 === str.length) { return { r: parseInt(str.slice(1, 3), 16), g: parseInt(str.slice(3, 5), 16), b: parseInt(str.slice(5, 7), 16), a: 100 }; } } function _hex3(str) { if ('#' === str[0] && 4 === str.length) { return { r: parseInt(str[1] + str[1], 16), g: parseInt(str[2] + str[2], 16), b: parseInt(str[3] + str[3], 16), a: 100 }; } } function _hsl(str) { if (str.indexOf('hsl(') === 0) { str = str.match(/hsl\(([^)]+)\)/)[1]; var parts = str.split(/ *, */); var h = parseInt(parts[0], 10); var s = parseInt(parts[1], 10); var l = parseInt(parts[2], 10); var rgba = hsl2rgb(h, s, l); rgba.a = 100; return rgba; } } function _hsla(str) { if (str.indexOf('hsla(') === 0) { str = str.match(/hsla\(([^)]+)\)/)[1]; var parts = str.split(/ *, */); var h = parseInt(parts[0], 10); var s = parseInt(parts[1], 10); var l = parseInt(parts[2], 10); var a = parseInt(parts[3], 10) * 100; var rgba = hsl2rgb(h, s, l); rgba.a = a; return rgba; } } }); //# sourceMappingURL=colors.js.map