UNPKG

@tbela99/css-parser

Version:

CSS parser for node and the browser

31 lines (28 loc) 1.14 kB
import { convertColor } from '../color.js'; import { getOKLABComponents } from '../oklab.js'; import { ColorType } from '../../../ast/types.js'; import '../../../ast/minify.js'; import '../../../ast/walk.js'; import '../../../parser/parse.js'; import '../../../parser/tokenize.js'; import '../../../parser/utils/config.js'; import './constants.js'; import '../../../renderer/sourcemap/lib/encode.js'; function okLabDistance(okLab1, okLab2) { return Math.sqrt(Math.pow(okLab1[0] - okLab2[0], 2) + Math.pow(okLab1[1] - okLab2[1], 2) + Math.pow(okLab1[2] - okLab2[2], 2)); } function isOkLabClose(color1, color2, threshold = .01) { color1 = convertColor(color1, ColorType.OKLAB); color2 = convertColor(color2, ColorType.OKLAB); // console.error(JSON.stringify({color1, color2}, null, 1)); if (color1 == null || color2 == null) { return false; } const okLab1 = getOKLABComponents(color1); const okLab2 = getOKLABComponents(color2); if (okLab1 == null || okLab2 == null) { return false; } return okLabDistance(okLab1, okLab2) < threshold; } export { isOkLabClose, okLabDistance };