@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
47 lines (44 loc) • 1.41 kB
JavaScript
import * as namedColors from 'css-color-names'; // eslint-disable-line import/no-namespace
import { isHex } from './is-hex';
import { isRgb } from './is-rgb';
import { rgbToHex } from './rgb-to-hex';
/**
* @returns String with HEX-coded color.
*/
export function normalizeHexColor(color, defaultColor) {
if (!color) {
return null;
}
// Normalize to hex
color = color.trim().toLowerCase();
if (isHex(color)) {
// Normalize 3-hex to 6-hex colours
if (color.length === 4) {
color = color.split('').map(c => c === '#' ? '#' : `${c}${c}`).join('');
}
} else if (isRgb(color)) {
return rgbToHex(color);
} else {
// http://dev.w3.org/csswg/css-color/#named-colors
if (color === 'default') {
return null;
} else if (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
namedColors.default &&
// eslint-disable-next-line @typescript-eslint/no-explicit-any
namedColors.default[color]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
color = namedColors.default[color];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} else if (namedColors && namedColors[color]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
color = namedColors[color];
} else {
return null;
}
}
if (color === defaultColor) {
return null;
}
return color;
}