@atlaskit/tokens
Version:
Design tokens are the single source of truth to name and store design decisions.
20 lines • 777 B
JavaScript
import { rgbToLab } from './rgb-to-lab';
export function deltaE(rgbA, rgbB) {
var labA = rgbToLab(rgbA);
var labB = 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);
}