niram
Version:
A javascript library to convert between various css colour formats.
22 lines (21 loc) • 1.46 kB
JavaScript
import { getAlphaHexFromFraction } from './helpers/hex.js';
import { getRgbHexAndAlpha, getColourName } from './helpers/getColour.js';
import { rgbToHsl } from './helpers/rgbToHsl.js';
export function convertColour(colour) {
if (!colour) {
return;
}
const { type, redHex, greenHex, blueHex, alphaFraction, alphaHex } = getRgbHexAndAlpha(colour);
const { hueDegree, satPercent, levelPercent } = rgbToHsl(Number(`0x${redHex}`), Number(`0x${greenHex}`), Number(`0x${blueHex}`));
const hexCode = `#${redHex}${greenHex}${blueHex}`;
return {
name: type.startsWith('named_') ? colour : getColourName(hexCode),
decimal: Number(`0x${redHex}${greenHex}${blueHex}${alphaHex !== null && alphaHex !== void 0 ? alphaHex : getAlphaHexFromFraction(alphaFraction)}`),
hex: hexCode,
rgb: `rgb(${Number('0x' + redHex)}, ${Number('0x' + greenHex)}, ${Number('0x' + blueHex)})`,
rgba: `rgba(${Number('0x' + redHex)}, ${Number('0x' + greenHex)}, ${Number('0x' + blueHex)}, ${alphaFraction !== null && alphaFraction !== void 0 ? alphaFraction : 1})`,
hsl: `hsl(${hueDegree}deg, ${satPercent.toFixed()}%, ${levelPercent.toFixed()}%)`,
hsla: `hsla(${hueDegree}deg, ${satPercent.toFixed()}%, ${levelPercent.toFixed()}%, ${alphaFraction !== null && alphaFraction !== void 0 ? alphaFraction : 1})`,
opacity: alphaFraction !== null && alphaFraction !== void 0 ? alphaFraction : 1,
};
}