@kushki/ng-suka
Version:
<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>
176 lines • 12.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @param {?} r
* @param {?} g
* @param {?} b
* @return {?}
*/
export function rgbToHsv(r, g, b) {
/** @type {?} */
let h;
/** @type {?} */
let s;
/** @type {?} */
const rabs = r / 255;
/** @type {?} */
const gabs = g / 255;
/** @type {?} */
const babs = b / 255;
/** @type {?} */
const v = Math.max(rabs, gabs, babs);
/** @type {?} */
const diff = v - Math.min(rabs, gabs, babs);
/** @type {?} */
const diffc = (/**
* @param {?} c
* @return {?}
*/
c => (v - c) / 6 / diff + 1 / 2);
/** @type {?} */
const percentRoundFn = (/**
* @param {?} num
* @return {?}
*/
num => Math.round(num * 100) / 100);
if (diff === 0) {
h = s = 0;
}
else {
s = diff / v;
/** @type {?} */
const rr = diffc(rabs);
/** @type {?} */
const gg = diffc(gabs);
/** @type {?} */
const bb = diffc(babs);
if (rabs === v) {
h = bb - gg;
}
else if (gabs === v) {
h = (1 / 3) + rr - bb;
}
else if (babs === v) {
h = (2 / 3) + gg - rr;
}
if (h < 0) {
h += 1;
}
else if (h > 1) {
h -= 1;
}
}
return {
h: Math.round(h * 360),
s: percentRoundFn(s * 100),
v: percentRoundFn(v * 100)
};
}
/**
* @param {?} hex
* @return {?}
*/
export function hexToRgb(hex) {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
/** @type {?} */
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, (/**
* @param {?} m
* @param {?} r
* @param {?} g
* @param {?} b
* @return {?}
*/
(m, r, g, b) => {
return r + r + g + g + b + b;
}));
/** @type {?} */
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
/**
* @param {?} r
* @param {?} g
* @param {?} b
* @return {?}
*/
export function rgbToHex(r, g, b) {
/**
* @param {?} x
* @return {?}
*/
function hex(x) {
return ('0' + parseInt(x).toString(16)).slice(-2);
}
return '#' + hex(r) + hex(g) + hex(b);
}
/**
* @param {?} hue
* @param {?} saturation
* @param {?} value
* @return {?}
*/
export function hsvToRgb(hue, saturation, value) {
/** @type {?} */
const h = hue / 60;
/** @type {?} */
const s = saturation / 100;
/** @type {?} */
let v = value / 100;
/** @type {?} */
const hi = Math.floor(h) % 6;
/** @type {?} */
const f = h - Math.floor(h);
/** @type {?} */
const p = 255 * v * (1 - s);
/** @type {?} */
const q = 255 * v * (1 - (s * f));
/** @type {?} */
const t = 255 * v * (1 - (s * (1 - f)));
v *= 255;
/** @type {?} */
let rgbArray;
switch (hi) {
case 0:
rgbArray = [v, t, p];
break;
case 1:
rgbArray = [q, v, p];
break;
case 2:
rgbArray = [p, v, t];
break;
case 3:
rgbArray = [p, q, v];
break;
case 4:
rgbArray = [t, p, v];
break;
case 5:
rgbArray = [v, p, q];
break;
}
return {
r: rgbArray[0],
g: rgbArray[1],
b: rgbArray[2],
};
}
/**
* @param {?} h
* @param {?} s
* @param {?} v
* @return {?}
*/
export function hsvToHex(h, s, v) {
/** @type {?} */
const rgbColor = hsvToRgb(h, s, v);
return rgbToHex(rgbColor.r, rgbColor.g, rgbColor.b);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3VzaGtpL25nLXN1a2EvIiwic291cmNlcyI6WyJsaWIvY29sb3ItcGlja2VyL2NvbG9yLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzs7UUFDMUIsQ0FBQzs7UUFDRCxDQUFDOztVQUVDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRzs7VUFDZCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUc7O1VBQ2QsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHOztVQUNkLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDOztVQUM5QixJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7O1VBQ3JDLEtBQUs7Ozs7SUFBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTs7VUFDdkMsY0FBYzs7OztJQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ3pELElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtRQUNkLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7U0FBTTtRQUNMLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDOztjQUNQLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDOztjQUNoQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQzs7Y0FDaEIsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2QsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDYjthQUFNLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN2QjthQUFNLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULENBQUMsSUFBSSxDQUFDLENBQUM7U0FDUjthQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ1I7S0FDRjtJQUNELE9BQU87UUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMxQixDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDM0IsQ0FBQztBQUNKLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFHOzs7VUFFcEIsY0FBYyxHQUFHLGtDQUFrQztJQUN6RCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjOzs7Ozs7O0lBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUMsRUFBQyxDQUFDOztVQUVHLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0tBQzNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzs7Ozs7SUFDOUIsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUs7O1VBQ3ZDLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTs7VUFDWixDQUFDLEdBQUcsVUFBVSxHQUFHLEdBQUc7O1FBQ3RCLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRzs7VUFDYixFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDOztVQUV0QixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOztVQUNyQixDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7O1VBQ3JCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOztVQUMzQixDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsSUFBSSxHQUFHLENBQUM7O1FBRUwsUUFBUTtJQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1YsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO1FBQ1IsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO1FBQ1IsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO1FBQ1IsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO1FBQ1IsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO1FBQ1IsS0FBSyxDQUFDO1lBQ0osUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNO0tBQ1Q7SUFFRCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzs7VUFDeEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xuICBsZXQgaDtcbiAgbGV0IHM7XG5cbiAgY29uc3QgcmFicyA9IHIgLyAyNTU7XG4gIGNvbnN0IGdhYnMgPSBnIC8gMjU1O1xuICBjb25zdCBiYWJzID0gYiAvIDI1NTtcbiAgY29uc3QgdiA9IE1hdGgubWF4KHJhYnMsIGdhYnMsIGJhYnMpO1xuICBjb25zdCBkaWZmID0gdiAtIE1hdGgubWluKHJhYnMsIGdhYnMsIGJhYnMpO1xuICBjb25zdCBkaWZmYyA9IGMgPT4gKHYgLSBjKSAvIDYgLyBkaWZmICsgMSAvIDI7XG4gIGNvbnN0IHBlcmNlbnRSb3VuZEZuID0gbnVtID0+IE1hdGgucm91bmQobnVtICogMTAwKSAvIDEwMDtcbiAgaWYgKGRpZmYgPT09IDApIHtcbiAgICBoID0gcyA9IDA7XG4gIH0gZWxzZSB7XG4gICAgcyA9IGRpZmYgLyB2O1xuICAgIGNvbnN0IHJyID0gZGlmZmMocmFicyk7XG4gICAgY29uc3QgZ2cgPSBkaWZmYyhnYWJzKTtcbiAgICBjb25zdCBiYiA9IGRpZmZjKGJhYnMpO1xuXG4gICAgaWYgKHJhYnMgPT09IHYpIHtcbiAgICAgIGggPSBiYiAtIGdnO1xuICAgIH0gZWxzZSBpZiAoZ2FicyA9PT0gdikge1xuICAgICAgaCA9ICgxIC8gMykgKyByciAtIGJiO1xuICAgIH0gZWxzZSBpZiAoYmFicyA9PT0gdikge1xuICAgICAgaCA9ICgyIC8gMykgKyBnZyAtIHJyO1xuICAgIH1cbiAgICBpZiAoaCA8IDApIHtcbiAgICAgIGggKz0gMTtcbiAgICB9IGVsc2UgaWYgKGggPiAxKSB7XG4gICAgICBoIC09IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgaDogTWF0aC5yb3VuZChoICogMzYwKSxcbiAgICBzOiBwZXJjZW50Um91bmRGbihzICogMTAwKSxcbiAgICB2OiBwZXJjZW50Um91bmRGbih2ICogMTAwKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoaGV4KSB7XG4gIC8vIEV4cGFuZCBzaG9ydGhhbmQgZm9ybSAoZS5nLiBcIjAzRlwiKSB0byBmdWxsIGZvcm0gKGUuZy4gXCIwMDMzRkZcIilcbiAgY29uc3Qgc2hvcnRoYW5kUmVnZXggPSAvXiM/KFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pO1xuICBoZXggPSBoZXgucmVwbGFjZShzaG9ydGhhbmRSZWdleCwgKG0sIHIsIGcsIGIpID0+IHtcbiAgICByZXR1cm4gciArIHIgKyBnICsgZyArIGIgKyBiO1xuICB9KTtcblxuICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgcmV0dXJuIHJlc3VsdCA/IHtcbiAgICByOiBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcbiAgICBnOiBwYXJzZUludChyZXN1bHRbMl0sIDE2KSxcbiAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KVxuICB9IDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYlRvSGV4KHIsIGcsIGIpIHtcbiAgZnVuY3Rpb24gaGV4KHgpIHtcbiAgICAgIHJldHVybiAoJzAnICsgcGFyc2VJbnQoeCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG4gIH1cbiAgcmV0dXJuICcjJyArIGhleChyKSArIGhleChnKSArIGhleChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvUmdiKGh1ZSwgc2F0dXJhdGlvbiwgdmFsdWUpIHtcbiAgY29uc3QgaCA9IGh1ZSAvIDYwO1xuICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgbGV0IHYgPSB2YWx1ZSAvIDEwMDtcbiAgY29uc3QgaGkgPSBNYXRoLmZsb29yKGgpICUgNjtcblxuICBjb25zdCBmID0gaCAtIE1hdGguZmxvb3IoaCk7XG4gIGNvbnN0IHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcbiAgY29uc3QgcSA9IDI1NSAqIHYgKiAoMSAtIChzICogZikpO1xuICBjb25zdCB0ID0gMjU1ICogdiAqICgxIC0gKHMgKiAoMSAtIGYpKSk7XG4gIHYgKj0gMjU1O1xuXG4gIGxldCByZ2JBcnJheTtcbiAgc3dpdGNoIChoaSkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJnYkFycmF5ID0gW3YsIHQsIHBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgcmdiQXJyYXkgPSBbcSwgdiwgcF07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICByZ2JBcnJheSA9IFtwLCB2LCB0XTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHJnYkFycmF5ID0gW3AsIHEsIHZdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgcmdiQXJyYXkgPSBbdCwgcCwgdl07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZ2JBcnJheSA9IFt2LCBwLCBxXTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByOiByZ2JBcnJheVswXSxcbiAgICBnOiByZ2JBcnJheVsxXSxcbiAgICBiOiByZ2JBcnJheVsyXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvSGV4KGgsIHMsIHYpIHtcbiAgY29uc3QgcmdiQ29sb3IgPSBoc3ZUb1JnYihoLCBzLCB2KTtcbiAgcmV0dXJuIHJnYlRvSGV4KHJnYkNvbG9yLnIsIHJnYkNvbG9yLmcsIHJnYkNvbG9yLmIpO1xufVxuIl19