@atlaskit/tokens
Version:
Design tokens are the single source of truth to name and store design decisions.
26 lines (25 loc) • 905 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.deltaE = deltaE;
var _rgbToLab = require("./rgb-to-lab");
function deltaE(rgbA, rgbB) {
var labA = (0, _rgbToLab.rgbToLab)(rgbA);
var labB = (0, _rgbToLab.rgbToLab)(rgbB);
var deltaL = labA[0] - labB[0];
var deltaA = labA[1] - labB[1];
var deltaB = labA[2] - labB[2];
var c1 = Math.sqrt(labA[1] * labA[1] + labA[2] * labA[2]);
var c2 = Math.sqrt(labB[1] * labB[1] + labB[2] * labB[2]);
var deltaC = c1 - c2;
var deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
var sc = 1.0 + 0.045 * c1;
var sh = 1.0 + 0.015 * c1;
var deltaLKlsl = deltaL / 1.0;
var deltaCkcsc = deltaC / sc;
var deltaHkhsh = deltaH / sh;
var i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
return i < 0 ? 0 : Math.sqrt(i);
}