nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
47 lines (46 loc) • 1.77 kB
JavaScript
import { _isValidAlpha, _isValidHue, _isValidPercentage, _isValidRGBComponent, } from './helpers.js';
export function isHex6(color) {
return /^#[0-9A-Fa-f]{6}$/.test(color?.trim());
}
export function isHex8(color) {
return /^#[0-9A-Fa-f]{8}$/.test(color?.trim());
}
export function isRGB(color) {
const match = color
?.trim()
?.match(/^rgb\(\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?)\s*\)$/);
if (!match)
return false;
const [r, g, b] = match.slice(1).map(Number);
return _isValidRGBComponent(r) && _isValidRGBComponent(g) && _isValidRGBComponent(b);
}
export function isRGBA(color) {
const match = color
?.trim()
?.match(/^rgba\(\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?),\s*(0|1|0?\.\d+)\s*\)$/);
if (!match)
return false;
const [r, g, b, a] = match.slice(1).map(Number);
return (_isValidRGBComponent(r) &&
_isValidRGBComponent(g) &&
_isValidRGBComponent(b) &&
_isValidAlpha(a));
}
export function isHSL(color) {
const match = color
?.trim()
?.match(/^hsl\(\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?)%,\s*(\d{1,3}(?:\.\d+)?)%\s*\)$/);
if (!match)
return false;
const [h, s, l] = match.slice(1).map(Number);
return _isValidHue(h) && _isValidPercentage(s) && _isValidPercentage(l);
}
export function isHSLA(color) {
const match = color
?.trim()
.match(/^hsla\(\s*(\d{1,3}(?:\.\d+)?),\s*(\d{1,3}(?:\.\d+)?)%,\s*(\d{1,3}(?:\.\d+)?)%,\s*(0|1|0?\.\d+)\s*\)$/);
if (!match)
return false;
const [h, s, l, a] = match.slice(1).map(Number);
return _isValidHue(h) && _isValidPercentage(s) && _isValidPercentage(l) && _isValidAlpha(a);
}