@playkit-js/playkit-js-ui
Version:
[](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml) [ • 2.98 kB
text/typescript
/* eslint-disable */
// @ts-nocheck
// These color convertors based on https://www.npmjs.com/package/color-convert
/**
* Convert css color form HEX to RGB format.
* @param {string} args - css color in HEX format
* @returns {string} - css color in RGB format
*/
export function hexToRgb(args) {
const match = args.toString().match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
if (!match) {
return [0, 0, 0];
}
let colorString = match[0];
if (match[0].length === 3) {
colorString = colorString
.split('')
.map(char => {
return char + char;
})
.join('');
}
const integer = parseInt(colorString, 16);
const r = (integer >> 16) & 0xff;
const g = (integer >> 8) & 0xff;
const b = integer & 0xff;
return [r, g, b];
}
/**
* Convert css color form RGB to HSL format.
* @param {string} rgb - css color in RGB format
* @returns {string} - css color in HSL format
*/
export function rgbToHsl(rgb) {
const r = rgb[0] / 255;
const g = rgb[1] / 255;
const b = rgb[2] / 255;
const min = Math.min(r, g, b);
const max = Math.max(r, g, b);
const delta = max - min;
let h;
let s;
if (max === min) {
h = 0;
} else if (r === max) {
h = (g - b) / delta;
} else if (g === max) {
h = 2 + (b - r) / delta;
} else if (b === max) {
h = 4 + (r - g) / delta;
}
h = Math.min(h * 60, 360);
if (h < 0) {
h += 360;
}
const l = (min + max) / 2;
if (max === min) {
s = 0;
} else if (l <= 0.5) {
s = delta / (max + min);
} else {
s = delta / (2 - max - min);
}
return [h, s * 100, l * 100];
}
/**
* Convert css color form HEX to HSL format.
* @param {string} hex - css color in HEX format
* @returns {string} - css color in HSL format
*/
export function hexToHsl(hex) {
return rgbToHsl(hexToRgb(hex));
}
/**
* Convert css color form HSL to HEX format.
* @param {number} h - hue
* @param {number} s - saturation
* @param {number} l - lightness
* @returns {string} hex - css color in HEX format
*/
export function hslToHex(h, s, l) {
s /= 100;
l /= 100;
let c = (1 - Math.abs(2 * l - 1)) * s,
x = c * (1 - Math.abs(((h / 60) % 2) - 1)),
m = l - c / 2,
r = 0,
g = 0,
b = 0;
if (0 <= h && h < 60) {
r = c;
g = x;
b = 0;
} else if (60 <= h && h < 120) {
r = x;
g = c;
b = 0;
} else if (120 <= h && h < 180) {
r = 0;
g = c;
b = x;
} else if (180 <= h && h < 240) {
r = 0;
g = x;
b = c;
} else if (240 <= h && h < 300) {
r = x;
g = 0;
b = c;
} else if (300 <= h && h < 360) {
r = c;
g = 0;
b = x;
}
// Having obtained RGB, convert channels to hex
r = Math.round((r + m) * 255).toString(16);
g = Math.round((g + m) * 255).toString(16);
b = Math.round((b + m) * 255).toString(16);
// Prepend 0s, if necessary
if (r.length == 1) r = '0' + r;
if (g.length == 1) g = '0' + g;
if (b.length == 1) b = '0' + b;
return '#' + r + g + b;
}