UNPKG

@thi.ng/color

Version:

Array-based color types, CSS parsing, conversions, transformations, declarative theme generation, gradients, presets

51 lines (50 loc) 1.76 kB
import { isNumber } from "@thi.ng/checks/is-number"; import { isString } from "@thi.ng/checks/is-string"; import { convert } from "../convert.js"; import { hslCss } from "../hsl/hsl-css.js"; import { hsvCss } from "../hsv/hsv-css.js"; import { intArgb32Css } from "../int/int-css.js"; import { intAbgr32Argb32 } from "../int/int-int.js"; import { labCss } from "../lab/lab-css.js"; import { labLabD65_50 } from "../lab/lab-lab.js"; import { lchLab } from "../lab/lab-lch.js"; import { labRgb, labRgbD65 } from "../lab/lab-rgb.js"; import { lchCss } from "../lch/lch-css.js"; import { oklabCss } from "../oklab/oklab-css.js"; import { oklchCss } from "../oklch/oklch-css.js"; import { rgbCss } from "../rgb/rgb-css.js"; import { rgbSrgb } from "../rgb/rgb-srgb.js"; import { srgbCss } from "../srgb/srgb-css.js"; const CSS_LEVEL3 = { abgr32: (x) => intArgb32Css(intAbgr32Argb32(x[0])), argb32: (x) => intArgb32Css(x[0]), hsl: hslCss, hsv: hsvCss, lab50: (src) => srgbCss(rgbSrgb(null, labRgb([], src))), lab65: (src) => srgbCss(rgbSrgb(null, labRgbD65([], src))), lch: (src) => srgbCss(rgbSrgb(null, labRgb(null, lchLab([], src)))), rgb: rgbCss, srgb: srgbCss }; const CSS_LEVEL4 = { ...CSS_LEVEL3, lab50: labCss, lab65: (x) => labCss(labLabD65_50([], x)), lch: lchCss, oklab: oklabCss, oklch: oklchCss }; let CSS_DEFAULT = CSS_LEVEL3; const setDefaultCSSConversions = (fns) => CSS_DEFAULT = fns; const css = (src, cssTarget = CSS_DEFAULT) => { let asCss; return isString(src) ? src : isNumber(src) ? intArgb32Css(src) : src.mode ? (asCss = cssTarget[src.mode]) ? asCss(src) : cssTarget.rgb( convert([], src, "rgb", src.mode) ) : srgbCss(src); }; export { CSS_LEVEL3, CSS_LEVEL4, css, setDefaultCSSConversions };