UNPKG

1.34 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const hsluv_1 = require("hsluv");
5const base_1 = require("./configs/base");
6function colorFactory(theme, scheme, config = base_1.config) {
7 return Object.assign({}, ...Object.entries(theme).map(([role, hex]) => {
8 if (typeof hex !== 'string') {
9 return null;
10 }
11 const base = hsluv_1.hexToHsluv(hex);
12 const variants = config[role] || [];
13 return Object.assign({}, variants.reduce((accumulator, _a) => {
14 var { name } = _a, settings = tslib_1.__rest(_a, ["name"]);
15 const { hue = base[0], saturation = base[1], lightness = base[2], alpha = 1, } = settings[scheme];
16 const resolve = (value, baseToResolve) => {
17 return typeof value === 'number' ? value : value(baseToResolve);
18 };
19 const [red, green, blue] = hsluv_1.hsluvToRgb([
20 resolve(hue, base[0]),
21 resolve(saturation, base[1]),
22 resolve(lightness, base[2]),
23 ]).map((channel) => Math.round(channel * 255));
24 return Object.assign(Object.assign({}, accumulator), { [name]: `rgba(${red}, ${green}, ${blue}, ${alpha})` });
25 }, {}));
26 }));
27}
28exports.colorFactory = colorFactory;