pigmentjs
Version:
A zero-dependency colour organisation, creation and manipulation library built for web developers.
146 lines • 4.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rgb2array = exports.hsl2array = exports.relativeLuminance = exports.hsl2rgb = exports.hsl2string = exports.rgb2hsl = exports.rgb2string = exports.rgb2hex = exports.hex2rgb = void 0;
var hex2rgb = function (hex) {
return {
r: parseInt(hex.substring(1, 3), 16),
g: parseInt(hex.substring(3, 5), 16),
b: parseInt(hex.substring(5, 7), 16),
};
};
exports.hex2rgb = hex2rgb;
var rgb2hex = function (rgb) {
var rs = Number(rgb.r).toString(16);
var gs = Number(rgb.g).toString(16);
var bs = Number(rgb.b).toString(16);
if (rs.length === 1) {
rs = "0".concat(rs);
}
if (gs.length === 1) {
gs = "0".concat(gs);
}
if (bs.length === 1) {
bs = "0".concat(bs);
}
return "#".concat(rs).concat(gs).concat(bs).toUpperCase();
};
exports.rgb2hex = rgb2hex;
var rgb2string = function (rgb) {
return "".concat(rgb.r, ", ").concat(rgb.g, ", ").concat(rgb.b);
};
exports.rgb2string = rgb2string;
var rgb2hsl = function (rgb) {
var hue;
var sat;
var light;
var r = rgb.r / 255;
var g = rgb.g / 255;
var b = rgb.b / 255;
var min = Math.min(r, g, b);
var max = Math.max(r, g, b);
light = (min + max) / 2;
if (light < 1) {
sat = ((max - min) / (1 - Math.abs(2 * light - 1))) * 100;
}
else {
sat = 0;
}
switch (max) {
case r:
hue = ((g - b) / (max - min)) * 60;
break;
case g:
hue = (2.0 + (b - r) / (max - min)) * 60;
break;
case b:
hue = (4.0 + (r - g) / (max - min)) * 60;
break;
default:
throw Error("Error processing rgb2hsl");
}
if (hue < 0) {
hue += 360;
}
hue = Math.round(hue * 10) / 10;
sat = Math.round(sat * 10) / 10;
light = Math.round(light * 100 * 10) / 10;
return {
h: hue || 0,
s: sat || 0,
l: light,
};
};
exports.rgb2hsl = rgb2hsl;
var hsl2rgb = function (hsl) {
var hue = hsl.h;
var sat = hsl.s / 100;
var light = hsl.l / 100;
var chroma = (1 - Math.abs(2 * light - 1)) * sat;
var x = chroma * (1 - Math.abs(((hue / 60) % 2) - 1));
var m = light - chroma / 2;
var r = 0;
var g = 0;
var b = 0;
if (0 <= hue && hue < 60) {
r = chroma;
g = x;
b = 0;
}
else if (60 <= hue && hue < 120) {
r = x;
g = chroma;
b = 0;
}
else if (120 <= hue && hue < 180) {
r = 0;
g = chroma;
b = x;
}
else if (180 <= hue && hue < 240) {
r = 0;
g = x;
b = chroma;
}
else if (240 <= hue && hue < 300) {
r = x;
g = 0;
b = chroma;
}
else if (300 <= hue && hue <= 360) {
r = chroma;
g = 0;
b = x;
}
return {
r: Math.abs(Math.round((r + m) * 255)),
g: Math.abs(Math.round((g + m) * 255)),
b: Math.abs(Math.round((b + m) * 255)),
};
};
exports.hsl2rgb = hsl2rgb;
var hsl2string = function (hsl) {
return "".concat(hsl.h, ", ").concat(hsl.s, ", ").concat(hsl.l);
};
exports.hsl2string = hsl2string;
var relativeLuminance = function (rgb) {
var lowCoefficient = 1 / 12.92;
var rsRGB = rgb.r / 255;
var gsRGB = rgb.g / 255;
var bsRGB = rgb.b / 255;
var r = rsRGB <= 0.03928
? rsRGB * lowCoefficient
: Math.pow((rsRGB + 0.055) / 1.055, 2.4);
var g = gsRGB <= 0.03928
? gsRGB * lowCoefficient
: Math.pow((gsRGB + 0.055) / 1.055, 2.4);
var b = bsRGB <= 0.03928
? bsRGB * lowCoefficient
: Math.pow((bsRGB + 0.055) / 1.055, 2.4);
return r * 0.2126 + g * 0.7152 + b * 0.0722;
};
exports.relativeLuminance = relativeLuminance;
var hsl2array = function (hsl) { return [hsl.h, hsl.s, hsl.l]; };
exports.hsl2array = hsl2array;
var rgb2array = function (rgb) { return [rgb.r, rgb.g, rgb.b]; };
exports.rgb2array = rgb2array;
//# sourceMappingURL=transformations.js.map