UNPKG

@playkit-js/playkit-js-ui

Version:

[![Build Status](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml/badge.svg)](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml) [![code style: prettier](https://img.shields.io/badge/c

142 lines (124 loc) 2.98 kB
/* 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; }