@maizzle/framework
Version:
Maizzle is a framework that helps you quickly build HTML emails with Tailwind CSS.
1,750 lines • 125 kB
JavaScript
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseNumber.js
var parseNumber = (color, len) => {
if (typeof color !== "number") return;
if (len === 3) return {
mode: "rgb",
r: (color >> 8 & 15 | color >> 4 & 240) / 255,
g: (color >> 4 & 15 | color & 240) / 255,
b: (color & 15 | color << 4 & 240) / 255
};
if (len === 4) return {
mode: "rgb",
r: (color >> 12 & 15 | color >> 8 & 240) / 255,
g: (color >> 8 & 15 | color >> 4 & 240) / 255,
b: (color >> 4 & 15 | color & 240) / 255,
alpha: (color & 15 | color << 4 & 240) / 255
};
if (len === 6) return {
mode: "rgb",
r: (color >> 16 & 255) / 255,
g: (color >> 8 & 255) / 255,
b: (color & 255) / 255
};
if (len === 8) return {
mode: "rgb",
r: (color >> 24 & 255) / 255,
g: (color >> 16 & 255) / 255,
b: (color >> 8 & 255) / 255,
alpha: (color & 255) / 255
};
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/colors/named.js
var named = {
aliceblue: 15792383,
antiquewhite: 16444375,
aqua: 65535,
aquamarine: 8388564,
azure: 15794175,
beige: 16119260,
bisque: 16770244,
black: 0,
blanchedalmond: 16772045,
blue: 255,
blueviolet: 9055202,
brown: 10824234,
burlywood: 14596231,
cadetblue: 6266528,
chartreuse: 8388352,
chocolate: 13789470,
coral: 16744272,
cornflowerblue: 6591981,
cornsilk: 16775388,
crimson: 14423100,
cyan: 65535,
darkblue: 139,
darkcyan: 35723,
darkgoldenrod: 12092939,
darkgray: 11119017,
darkgreen: 25600,
darkgrey: 11119017,
darkkhaki: 12433259,
darkmagenta: 9109643,
darkolivegreen: 5597999,
darkorange: 16747520,
darkorchid: 10040012,
darkred: 9109504,
darksalmon: 15308410,
darkseagreen: 9419919,
darkslateblue: 4734347,
darkslategray: 3100495,
darkslategrey: 3100495,
darkturquoise: 52945,
darkviolet: 9699539,
deeppink: 16716947,
deepskyblue: 49151,
dimgray: 6908265,
dimgrey: 6908265,
dodgerblue: 2003199,
firebrick: 11674146,
floralwhite: 16775920,
forestgreen: 2263842,
fuchsia: 16711935,
gainsboro: 14474460,
ghostwhite: 16316671,
gold: 16766720,
goldenrod: 14329120,
gray: 8421504,
green: 32768,
greenyellow: 11403055,
grey: 8421504,
honeydew: 15794160,
hotpink: 16738740,
indianred: 13458524,
indigo: 4915330,
ivory: 16777200,
khaki: 15787660,
lavender: 15132410,
lavenderblush: 16773365,
lawngreen: 8190976,
lemonchiffon: 16775885,
lightblue: 11393254,
lightcoral: 15761536,
lightcyan: 14745599,
lightgoldenrodyellow: 16448210,
lightgray: 13882323,
lightgreen: 9498256,
lightgrey: 13882323,
lightpink: 16758465,
lightsalmon: 16752762,
lightseagreen: 2142890,
lightskyblue: 8900346,
lightslategray: 7833753,
lightslategrey: 7833753,
lightsteelblue: 11584734,
lightyellow: 16777184,
lime: 65280,
limegreen: 3329330,
linen: 16445670,
magenta: 16711935,
maroon: 8388608,
mediumaquamarine: 6737322,
mediumblue: 205,
mediumorchid: 12211667,
mediumpurple: 9662683,
mediumseagreen: 3978097,
mediumslateblue: 8087790,
mediumspringgreen: 64154,
mediumturquoise: 4772300,
mediumvioletred: 13047173,
midnightblue: 1644912,
mintcream: 16121850,
mistyrose: 16770273,
moccasin: 16770229,
navajowhite: 16768685,
navy: 128,
oldlace: 16643558,
olive: 8421376,
olivedrab: 7048739,
orange: 16753920,
orangered: 16729344,
orchid: 14315734,
palegoldenrod: 15657130,
palegreen: 10025880,
paleturquoise: 11529966,
palevioletred: 14381203,
papayawhip: 16773077,
peachpuff: 16767673,
peru: 13468991,
pink: 16761035,
plum: 14524637,
powderblue: 11591910,
purple: 8388736,
rebeccapurple: 6697881,
red: 16711680,
rosybrown: 12357519,
royalblue: 4286945,
saddlebrown: 9127187,
salmon: 16416882,
sandybrown: 16032864,
seagreen: 3050327,
seashell: 16774638,
sienna: 10506797,
silver: 12632256,
skyblue: 8900331,
slateblue: 6970061,
slategray: 7372944,
slategrey: 7372944,
snow: 16775930,
springgreen: 65407,
steelblue: 4620980,
tan: 13808780,
teal: 32896,
thistle: 14204888,
tomato: 16737095,
turquoise: 4251856,
violet: 15631086,
wheat: 16113331,
white: 16777215,
whitesmoke: 16119285,
yellow: 16776960,
yellowgreen: 10145074
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseNamed.js
var parseNamed = (color) => {
return parseNumber(named[color.toLowerCase()], 6);
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseHex.js
var hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
var parseHex = (color) => {
let match;
return (match = color.match(hex)) ? parseNumber(parseInt(match[1], 16), match[1].length) : void 0;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/util/regex.js
var num$1 = "([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)";
`${num$1}`;
var per = `${num$1}%`;
`${num$1}`;
var num_per = `(?:${num$1}%|${num$1})`;
var num_per_none = `(?:${num$1}%|${num$1}|none)`;
var hue$1 = `(?:${num$1}(deg|grad|rad|turn)|${num$1})`;
`${num$1}${num$1}`;
var c = `\\s*,\\s*`;
new RegExp("^" + num_per_none + "$");
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseRgbLegacy.js
var rgb_num_old = new RegExp(`^rgba?\\(\\s*${num$1}${c}${num$1}${c}${num$1}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
var rgb_per_old = new RegExp(`^rgba?\\(\\s*${per}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
var parseRgbLegacy = (color) => {
let res = { mode: "rgb" };
let match;
if (match = color.match(rgb_num_old)) {
if (match[1] !== void 0) res.r = match[1] / 255;
if (match[2] !== void 0) res.g = match[2] / 255;
if (match[3] !== void 0) res.b = match[3] / 255;
} else if (match = color.match(rgb_per_old)) {
if (match[1] !== void 0) res.r = match[1] / 100;
if (match[2] !== void 0) res.g = match[2] / 100;
if (match[3] !== void 0) res.b = match[3] / 100;
} else return;
if (match[4] !== void 0) res.alpha = Math.max(0, Math.min(1, match[4] / 100));
else if (match[5] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[5]));
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/_prepare.js
var prepare = (color, mode) => color === void 0 ? void 0 : typeof color !== "object" ? parse(color) : color.mode !== void 0 ? color : mode ? {
...color,
mode
} : void 0;
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/converter.js
var converter = (target_mode = "rgb") => (color) => (color = prepare(color, target_mode)) !== void 0 ? color.mode === target_mode ? color : converters[color.mode][target_mode] ? converters[color.mode][target_mode](color) : target_mode === "rgb" ? converters[color.mode].rgb(color) : converters.rgb[target_mode](converters[color.mode].rgb(color)) : void 0;
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/modes.js
var converters = {};
var modes = {};
var parsers = [];
var colorProfiles = {};
var identity = (v) => v;
var useMode = (definition) => {
converters[definition.mode] = {
...converters[definition.mode],
...definition.toMode
};
Object.keys(definition.fromMode || {}).forEach((k) => {
if (!converters[k]) converters[k] = {};
converters[k][definition.mode] = definition.fromMode[k];
});
if (!definition.ranges) definition.ranges = {};
if (!definition.difference) definition.difference = {};
definition.channels.forEach((channel) => {
if (definition.ranges[channel] === void 0) definition.ranges[channel] = [0, 1];
if (!definition.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);
if (typeof definition.interpolate[channel] === "function") definition.interpolate[channel] = { use: definition.interpolate[channel] };
if (!definition.interpolate[channel].fixup) definition.interpolate[channel].fixup = identity;
});
modes[definition.mode] = definition;
(definition.parse || []).forEach((parser) => {
useParser(parser, definition.mode);
});
return converter(definition.mode);
};
var getMode = (mode) => modes[mode];
var useParser = (parser, mode) => {
if (typeof parser === "string") {
if (!mode) throw new Error(`'mode' required when 'parser' is a string`);
colorProfiles[parser] = mode;
} else if (typeof parser === "function") {
if (parsers.indexOf(parser) < 0) parsers.push(parser);
}
};
var removeParser = (parser) => {
if (typeof parser === "string") delete colorProfiles[parser];
else if (typeof parser === "function") {
const idx = parsers.indexOf(parser);
if (idx > 0) parsers.splice(idx, 1);
}
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/parse.js
var IdentStartCodePoint = /[^\x00-\x7F]|[a-zA-Z_]/;
var IdentCodePoint = /[^\x00-\x7F]|[-\w]/;
var Tok = {
Function: "function",
Ident: "ident",
Number: "number",
Percentage: "percentage",
ParenClose: ")",
None: "none",
Hue: "hue",
Alpha: "alpha"
};
var _i = 0;
function is_num(chars) {
let ch = chars[_i];
let ch1 = chars[_i + 1];
if (ch === "-" || ch === "+") return /\d/.test(ch1) || ch1 === "." && /\d/.test(chars[_i + 2]);
if (ch === ".") return /\d/.test(ch1);
return /\d/.test(ch);
}
function is_ident(chars) {
if (_i >= chars.length) return false;
let ch = chars[_i];
if (IdentStartCodePoint.test(ch)) return true;
if (ch === "-") {
if (chars.length - _i < 2) return false;
let ch1 = chars[_i + 1];
if (ch1 === "-" || IdentStartCodePoint.test(ch1)) return true;
return false;
}
return false;
}
var huenits = {
deg: 1,
rad: 180 / Math.PI,
grad: 9 / 10,
turn: 360
};
function num(chars) {
let value = "";
if (chars[_i] === "-" || chars[_i] === "+") value += chars[_i++];
value += digits(chars);
if (chars[_i] === "." && /\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);
if (chars[_i] === "e" || chars[_i] === "E") {
if ((chars[_i + 1] === "-" || chars[_i + 1] === "+") && /\d/.test(chars[_i + 2])) value += chars[_i++] + chars[_i++] + digits(chars);
else if (/\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);
}
if (is_ident(chars)) {
let id = ident(chars);
if (id === "deg" || id === "rad" || id === "turn" || id === "grad") return {
type: Tok.Hue,
value: value * huenits[id]
};
return;
}
if (chars[_i] === "%") {
_i++;
return {
type: Tok.Percentage,
value: +value
};
}
return {
type: Tok.Number,
value: +value
};
}
function digits(chars) {
let v = "";
while (/\d/.test(chars[_i])) v += chars[_i++];
return v;
}
function ident(chars) {
let v = "";
while (_i < chars.length && IdentCodePoint.test(chars[_i])) v += chars[_i++];
return v;
}
function identlike(chars) {
let v = ident(chars);
if (chars[_i] === "(") {
_i++;
return {
type: Tok.Function,
value: v
};
}
if (v === "none") return {
type: Tok.None,
value: void 0
};
return {
type: Tok.Ident,
value: v
};
}
function tokenize(str = "") {
let chars = str.trim();
let tokens = [];
let ch;
_i = 0;
while (_i < chars.length) {
ch = chars[_i++];
if (ch === "\n" || ch === " " || ch === " ") {
while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
continue;
}
if (ch === ",") return;
if (ch === ")") {
tokens.push({ type: Tok.ParenClose });
continue;
}
if (ch === "+") {
_i--;
if (is_num(chars)) {
tokens.push(num(chars));
continue;
}
return;
}
if (ch === "-") {
_i--;
if (is_num(chars)) {
tokens.push(num(chars));
continue;
}
if (is_ident(chars)) {
tokens.push({
type: Tok.Ident,
value: ident(chars)
});
continue;
}
return;
}
if (ch === ".") {
_i--;
if (is_num(chars)) {
tokens.push(num(chars));
continue;
}
return;
}
if (ch === "/") {
while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
let alpha;
if (is_num(chars)) {
alpha = num(chars);
if (alpha.type !== Tok.Hue) {
tokens.push({
type: Tok.Alpha,
value: alpha
});
continue;
}
}
if (is_ident(chars)) {
if (ident(chars) === "none") {
tokens.push({
type: Tok.Alpha,
value: {
type: Tok.None,
value: void 0
}
});
continue;
}
}
return;
}
if (/\d/.test(ch)) {
_i--;
tokens.push(num(chars));
continue;
}
if (IdentStartCodePoint.test(ch)) {
_i--;
tokens.push(identlike(chars));
continue;
}
return;
}
return tokens;
}
function parseColorSyntax(tokens) {
tokens._i = 0;
let token = tokens[tokens._i++];
if (!token || token.type !== Tok.Function || token.value !== "color") return;
token = tokens[tokens._i++];
if (token.type !== Tok.Ident) return;
const mode = colorProfiles[token.value];
if (!mode) return;
const res = { mode };
const coords = consumeCoords(tokens, false);
if (!coords) return;
const channels = getMode(mode).channels;
for (let ii = 0, c, ch; ii < channels.length; ii++) {
c = coords[ii];
ch = channels[ii];
if (c.type !== Tok.None) {
res[ch] = c.type === Tok.Number ? c.value : c.value / 100;
if (ch === "alpha") res[ch] = Math.max(0, Math.min(1, res[ch]));
}
}
return res;
}
function consumeCoords(tokens, includeHue) {
const coords = [];
let token;
while (tokens._i < tokens.length) {
token = tokens[tokens._i++];
if (token.type === Tok.None || token.type === Tok.Number || token.type === Tok.Alpha || token.type === Tok.Percentage || includeHue && token.type === Tok.Hue) {
coords.push(token);
continue;
}
if (token.type === Tok.ParenClose) {
if (tokens._i < tokens.length) return;
continue;
}
return;
}
if (coords.length < 3 || coords.length > 4) return;
if (coords.length === 4) {
if (coords[3].type !== Tok.Alpha) return;
coords[3] = coords[3].value;
}
if (coords.length === 3) coords.push({
type: Tok.None,
value: void 0
});
return coords.every((c) => c.type !== Tok.Alpha) ? coords : void 0;
}
function parseModernSyntax(tokens, includeHue) {
tokens._i = 0;
let token = tokens[tokens._i++];
if (!token || token.type !== Tok.Function) return;
let coords = consumeCoords(tokens, includeHue);
if (!coords) return;
coords.unshift(token.value);
return coords;
}
var parse = (color) => {
if (typeof color !== "string") return;
const tokens = tokenize(color);
const parsed = tokens ? parseModernSyntax(tokens, true) : void 0;
let result = void 0;
let i = 0;
let len = parsers.length;
while (i < len) if ((result = parsers[i++](color, parsed)) !== void 0) return result;
return tokens ? parseColorSyntax(tokens) : void 0;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseRgb.js
function parseRgb(color, parsed) {
if (!parsed || parsed[0] !== "rgb" && parsed[0] !== "rgba") return;
const res = { mode: "rgb" };
const [, r, g, b, alpha] = parsed;
if (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) return;
if (r.type !== Tok.None) res.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;
if (g.type !== Tok.None) res.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;
if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/parseTransparent.js
var parseTransparent = (c) => c === "transparent" ? {
mode: "rgb",
r: 0,
g: 0,
b: 0,
alpha: 0
} : void 0;
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/interpolate/lerp.js
var lerp = (a, b, t) => a + t * (b - a);
var unlerp = (a, b, v) => (v - a) / (b - a);
var blerp = (a00, a01, a10, a11, tx, ty) => {
return lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);
};
var trilerp = (a000, a010, a100, a110, a001, a011, a101, a111, tx, ty, tz) => {
return lerp(blerp(a000, a010, a100, a110, tx, ty), blerp(a001, a011, a101, a111, tx, ty), tz);
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/interpolate/piecewise.js
var get_classes = (arr) => {
let classes = [];
for (let i = 0; i < arr.length - 1; i++) {
let a = arr[i];
let b = arr[i + 1];
if (a === void 0 && b === void 0) classes.push(void 0);
else if (a !== void 0 && b !== void 0) classes.push([a, b]);
else classes.push(a !== void 0 ? [a, a] : [b, b]);
}
return classes;
};
var interpolatorPiecewise = (interpolator) => (arr) => {
let classes = get_classes(arr);
return (t) => {
let cls = t * classes.length;
let idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);
let pair = classes[idx];
return pair === void 0 ? void 0 : interpolator(pair[0], pair[1], cls - idx);
};
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/interpolate/linear.js
var interpolatorLinear = interpolatorPiecewise(lerp);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/fixup/alpha.js
var fixupAlpha = (arr) => {
let some_defined = false;
let res = arr.map((v) => {
if (v !== void 0) {
some_defined = true;
return v;
}
return 1;
});
return some_defined ? res : arr;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/rgb/definition.js
var definition$23 = {
mode: "rgb",
channels: [
"r",
"g",
"b",
"alpha"
],
parse: [
parseRgb,
parseHex,
parseRgbLegacy,
parseNamed,
parseTransparent,
"srgb"
],
serialize: "srgb",
interpolate: {
r: interpolatorLinear,
g: interpolatorLinear,
b: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
gamut: true,
white: {
r: 1,
g: 1,
b: 1
},
black: {
r: 0,
g: 0,
b: 0
}
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/a98/convertA98ToXyz65.js
var linearize$2 = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);
var convertA98ToXyz65 = (a98) => {
let r = linearize$2(a98.r);
let g = linearize$2(a98.g);
let b = linearize$2(a98.b);
let res = {
mode: "xyz65",
x: .5766690429101305 * r + .1855582379065463 * g + .1882286462349947 * b,
y: .297344975250536 * r + .6273635662554661 * g + .0752914584939979 * b,
z: .0270313613864123 * r + .0706888525358272 * g + .9913375368376386 * b
};
if (a98.alpha !== void 0) res.alpha = a98.alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/a98/convertXyz65ToA98.js
var gamma$3 = (v) => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);
var convertXyz65ToA98 = ({ x, y, z, alpha }) => {
if (x === void 0) x = 0;
if (y === void 0) y = 0;
if (z === void 0) z = 0;
let res = {
mode: "a98",
r: gamma$3(x * 2.0415879038107465 - y * .5650069742788597 - .3447313507783297 * z),
g: gamma$3(x * -.9692436362808798 + y * 1.8759675015077206 + .0415550574071756 * z),
b: gamma$3(x * .0134442806320312 - y * .1183623922310184 + 1.0151749943912058 * z)
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lrgb/convertRgbToLrgb.js
var fn$3 = (c = 0) => {
const abs = Math.abs(c);
if (abs <= .04045) return c / 12.92;
return (Math.sign(c) || 1) * Math.pow((abs + .055) / 1.055, 2.4);
};
var convertRgbToLrgb = ({ r, g, b, alpha }) => {
let res = {
mode: "lrgb",
r: fn$3(r),
g: fn$3(g),
b: fn$3(b)
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/xyz65/convertRgbToXyz65.js
var convertRgbToXyz65 = (rgb) => {
let { r, g, b, alpha } = convertRgbToLrgb(rgb);
let res = {
mode: "xyz65",
x: .4123907992659593 * r + .357584339383878 * g + .1804807884018343 * b,
y: .2126390058715102 * r + .715168678767756 * g + .0721923153607337 * b,
z: .0193308187155918 * r + .119194779794626 * g + .9505321522496607 * b
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lrgb/convertLrgbToRgb.js
var fn$2 = (c = 0) => {
const abs = Math.abs(c);
if (abs > .0031308) return (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - .055);
return c * 12.92;
};
var convertLrgbToRgb = ({ r, g, b, alpha }, mode = "rgb") => {
let res = {
mode,
r: fn$2(r),
g: fn$2(g),
b: fn$2(b)
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/xyz65/convertXyz65ToRgb.js
var convertXyz65ToRgb = ({ x, y, z, alpha }) => {
if (x === void 0) x = 0;
if (y === void 0) y = 0;
if (z === void 0) z = 0;
let res = convertLrgbToRgb({
r: x * 3.2409699419045226 - y * 1.537383177570094 - .4986107602930034 * z,
g: x * -.9692436362808796 + y * 1.8759675015077204 + .0415550574071756 * z,
b: x * .0556300796969936 - y * .2039769588889765 + 1.0569715142428784 * z
});
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/a98/definition.js
var definition = {
...definition$23,
mode: "a98",
parse: ["a98-rgb"],
serialize: "a98-rgb",
fromMode: {
rgb: (color) => convertXyz65ToA98(convertRgbToXyz65(color)),
xyz65: convertXyz65ToA98
},
toMode: {
rgb: (color) => convertXyz65ToRgb(convertA98ToXyz65(color)),
xyz65: convertA98ToXyz65
}
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/util/normalizeHue.js
var normalizeHue = (hue) => (hue = hue % 360) < 0 ? hue + 360 : hue;
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/fixup/hue.js
var hue = (hues, fn) => {
return hues.map((hue, idx, arr) => {
if (hue === void 0) return hue;
let normalized = normalizeHue(hue);
if (idx === 0 || hues[idx - 1] === void 0) return normalized;
return fn(normalized - normalizeHue(arr[idx - 1]));
}).reduce((acc, curr) => {
if (!acc.length || curr === void 0 || acc[acc.length - 1] === void 0) {
acc.push(curr);
return acc;
}
acc.push(curr + acc[acc.length - 1]);
return acc;
}, []);
};
var fixupHueShorter = (arr) => hue(arr, (d) => Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d));
var fixupHueLonger = (arr) => hue(arr, (d) => Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d));
var fixupHueIncreasing = (arr) => hue(arr, (d) => d >= 0 ? d : d + 360);
var fixupHueDecreasing = (arr) => hue(arr, (d) => d <= 0 ? d : d - 360);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/cubehelix/constants.js
var M = [
-.14861,
1.78277,
-.29227,
-.90649,
1.97294,
0
];
var degToRad = Math.PI / 180;
var radToDeg = 180 / Math.PI;
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js
var DE = M[3] * M[4];
var BE = M[1] * M[4];
var BCAD = M[1] * M[2] - M[0] * M[3];
var convertRgbToCubehelix = ({ r, g, b, alpha }) => {
if (r === void 0) r = 0;
if (g === void 0) g = 0;
if (b === void 0) b = 0;
let l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);
let x = b - l;
let y = (M[4] * (g - l) - M[2] * x) / M[3];
let res = {
mode: "cubehelix",
l,
s: l === 0 || l === 1 ? void 0 : Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))
};
if (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js
var convertCubehelixToRgb = ({ h, s, l, alpha }) => {
let res = { mode: "rgb" };
h = (h === void 0 ? 0 : h + 120) * degToRad;
if (l === void 0) l = 0;
let amp = s === void 0 ? 0 : s * l * (1 - l);
let cosh = Math.cos(h);
let sinh = Math.sin(h);
res.r = l + amp * (M[0] * cosh + M[1] * sinh);
res.g = l + amp * (M[2] * cosh + M[3] * sinh);
res.b = l + amp * (M[4] * cosh + M[5] * sinh);
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/difference.js
var differenceHueSaturation = (std, smp) => {
if (std.h === void 0 || smp.h === void 0 || !std.s || !smp.s) return 0;
let std_h = normalizeHue(std.h);
let smp_h = normalizeHue(smp.h);
let dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);
return 2 * Math.sqrt(std.s * smp.s) * dH;
};
var differenceHueNaive = (std, smp) => {
if (std.h === void 0 || smp.h === void 0) return 0;
let std_h = normalizeHue(std.h);
let smp_h = normalizeHue(smp.h);
if (Math.abs(smp_h - std_h) > 180) return std_h - (smp_h - 360 * Math.sign(smp_h - std_h));
return smp_h - std_h;
};
var differenceHueChroma = (std, smp) => {
if (std.h === void 0 || smp.h === void 0 || !std.c || !smp.c) return 0;
let std_h = normalizeHue(std.h);
let smp_h = normalizeHue(smp.h);
let dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);
return 2 * Math.sqrt(std.c * smp.c) * dH;
};
var differenceEuclidean = (mode = "rgb", weights = [
1,
1,
1,
0
]) => {
let def = getMode(mode);
let channels = def.channels;
let diffs = def.difference;
let conv = converter(mode);
return (std, smp) => {
let ConvStd = conv(std);
let ConvSmp = conv(smp);
return Math.sqrt(channels.reduce((sum, k, idx) => {
let delta = diffs[k] ? diffs[k](ConvStd, ConvSmp) : ConvStd[k] - ConvSmp[k];
return sum + (weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2);
}, 0));
};
};
var differenceCie76 = () => differenceEuclidean("lab65");
var differenceCie94 = (kL = 1, K1 = .045, K2 = .015) => {
let lab = converter("lab65");
return (std, smp) => {
let LabStd = lab(std);
let LabSmp = lab(smp);
let lStd = LabStd.l;
let aStd = LabStd.a;
let bStd = LabStd.b;
let cStd = Math.sqrt(aStd * aStd + bStd * bStd);
let lSmp = LabSmp.l;
let aSmp = LabSmp.a;
let bSmp = LabSmp.b;
let cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);
let dL2 = Math.pow(lStd - lSmp, 2);
let dC2 = Math.pow(cStd - cSmp, 2);
let dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;
return Math.sqrt(dL2 / Math.pow(kL, 2) + dC2 / Math.pow(1 + K1 * cStd, 2) + dH2 / Math.pow(1 + K2 * cStd, 2));
};
};
var differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {
let lab = converter("lab65");
return (std, smp) => {
let LabStd = lab(std);
let LabSmp = lab(smp);
let lStd = LabStd.l;
let aStd = LabStd.a;
let bStd = LabStd.b;
let cStd = Math.sqrt(aStd * aStd + bStd * bStd);
let lSmp = LabSmp.l;
let aSmp = LabSmp.a;
let bSmp = LabSmp.b;
let cAvg = (cStd + Math.sqrt(aSmp * aSmp + bSmp * bSmp)) / 2;
let G = .5 * (1 - Math.sqrt(Math.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))));
let apStd = aStd * (1 + G);
let apSmp = aSmp * (1 + G);
let cpStd = Math.sqrt(apStd * apStd + bStd * bStd);
let cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);
let hpStd = Math.abs(apStd) + Math.abs(bStd) === 0 ? 0 : Math.atan2(bStd, apStd);
hpStd += (hpStd < 0) * 2 * Math.PI;
let hpSmp = Math.abs(apSmp) + Math.abs(bSmp) === 0 ? 0 : Math.atan2(bSmp, apSmp);
hpSmp += (hpSmp < 0) * 2 * Math.PI;
let dL = lSmp - lStd;
let dC = cpSmp - cpStd;
let dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;
dhp -= (dhp > Math.PI) * 2 * Math.PI;
dhp += (dhp < -Math.PI) * 2 * Math.PI;
let dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);
let Lp = (lStd + lSmp) / 2;
let Cp = (cpStd + cpSmp) / 2;
let hp;
if (cpStd * cpSmp === 0) hp = hpStd + hpSmp;
else {
hp = (hpStd + hpSmp) / 2;
hp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;
hp += (hp < 0) * 2 * Math.PI;
}
let Lpm50 = Math.pow(Lp - 50, 2);
let T = 1 - .17 * Math.cos(hp - Math.PI / 6) + .24 * Math.cos(2 * hp) + .32 * Math.cos(3 * hp + Math.PI / 30) - .2 * Math.cos(4 * hp - 63 * Math.PI / 180);
let Sl = 1 + .015 * Lpm50 / Math.sqrt(20 + Lpm50);
let Sc = 1 + .045 * Cp;
let Sh = 1 + .015 * Cp * T;
let deltaTheta = 30 * Math.PI / 180 * Math.exp(-1 * Math.pow((180 / Math.PI * hp - 275) / 25, 2));
let Rc = 2 * Math.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));
let Rt = -1 * Math.sin(2 * deltaTheta) * Rc;
return Math.sqrt(Math.pow(dL / (Kl * Sl), 2) + Math.pow(dC / (Kc * Sc), 2) + Math.pow(dH / (Kh * Sh), 2) + Rt * dC / (Kc * Sc) * dH / (Kh * Sh));
};
};
var differenceCmc = (l = 1, c = 1) => {
let lab = converter("lab65");
return (std, smp) => {
let LabStd = lab(std);
let lStd = LabStd.l;
let aStd = LabStd.a;
let bStd = LabStd.b;
let cStd = Math.sqrt(aStd * aStd + bStd * bStd);
let hStd = Math.atan2(bStd, aStd);
hStd = hStd + 2 * Math.PI * (hStd < 0);
let LabSmp = lab(smp);
let lSmp = LabSmp.l;
let aSmp = LabSmp.a;
let bSmp = LabSmp.b;
let cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);
let dL2 = Math.pow(lStd - lSmp, 2);
let dC2 = Math.pow(cStd - cSmp, 2);
let dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;
let F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));
let T = hStd >= 164 / 180 * Math.PI && hStd <= 345 / 180 * Math.PI ? .56 + Math.abs(.2 * Math.cos(hStd + 168 / 180 * Math.PI)) : .36 + Math.abs(.4 * Math.cos(hStd + 35 / 180 * Math.PI));
let Sl = lStd < 16 ? .511 : .040975 * lStd / (1 + .01765 * lStd);
let Sc = .0638 * cStd / (1 + .0131 * cStd) + .638;
let Sh = Sc * (F * T + 1 - F);
return Math.sqrt(dL2 / Math.pow(l * Sl, 2) + dC2 / Math.pow(c * Sc, 2) + dH2 / Math.pow(Sh, 2));
};
};
var differenceHyab = () => {
let lab = converter("lab65");
return (std, smp) => {
let LabStd = lab(std);
let LabSmp = lab(smp);
let dL = LabStd.l - LabSmp.l;
let dA = LabStd.a - LabSmp.a;
let dB = LabStd.b - LabSmp.b;
return Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);
};
};
var differenceKotsarenkoRamos = () => differenceEuclidean("yiq", [
.5053,
.299,
.1957
]);
var differenceItp = () => differenceEuclidean("itp", [
518400,
129600,
518400
]);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/average.js
var averageAngle = (val) => {
let sum = val.reduce((sum, val) => {
if (val !== void 0) {
let rad = val * Math.PI / 180;
sum.sin += Math.sin(rad);
sum.cos += Math.cos(rad);
}
return sum;
}, {
sin: 0,
cos: 0
});
let angle = Math.atan2(sum.sin, sum.cos) * 180 / Math.PI;
return angle < 0 ? 360 + angle : angle;
};
var averageNumber = (val) => {
let a = val.filter((v) => v !== void 0);
return a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : void 0;
};
var isfn$1 = (o) => typeof o === "function";
function average(colors, mode = "rgb", overrides) {
let def = getMode(mode);
let cc = colors.map(converter(mode));
return def.channels.reduce((res, ch) => {
let arr = cc.map((c) => c[ch]).filter((val) => val !== void 0);
if (arr.length) {
let fn;
if (isfn$1(overrides)) fn = overrides;
else if (overrides && isfn$1(overrides[ch])) fn = overrides[ch];
else if (def.average && isfn$1(def.average[ch])) fn = def.average[ch];
else fn = averageNumber;
res[ch] = fn(arr, ch);
}
return res;
}, { mode });
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/cubehelix/definition.js
var definition$1 = {
mode: "cubehelix",
channels: [
"h",
"s",
"l",
"alpha"
],
parse: ["--cubehelix"],
serialize: "--cubehelix",
ranges: {
h: [0, 360],
s: [0, 4.614],
l: [0, 1]
},
fromMode: { rgb: convertRgbToCubehelix },
toMode: { rgb: convertCubehelixToRgb },
interpolate: {
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
s: interpolatorLinear,
l: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueSaturation },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lch/convertLabToLch.js
var convertLabToLch = ({ l, a, b, alpha }, mode = "lch") => {
if (a === void 0) a = 0;
if (b === void 0) b = 0;
let c = Math.sqrt(a * a + b * b);
let res = {
mode,
l,
c
};
if (c) res.h = normalizeHue(Math.atan2(b, a) * 180 / Math.PI);
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lch/convertLchToLab.js
var convertLchToLab = ({ l, c, h, alpha }, mode = "lab") => {
if (h === void 0) h = 0;
let res = {
mode,
l,
a: c ? c * Math.cos(h / 180 * Math.PI) : 0,
b: c ? c * Math.sin(h / 180 * Math.PI) : 0
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/xyz65/constants.js
var k$2 = Math.pow(29, 3) / Math.pow(3, 3);
var e$2 = Math.pow(6, 3) / Math.pow(29, 3);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/constants.js
var D50 = {
X: .3457 / .3585,
Y: 1,
Z: .2958 / .3585
};
var D65 = {
X: .3127 / .329,
Y: 1,
Z: .3583 / .329
};
Math.pow(29, 3) / Math.pow(3, 3);
Math.pow(6, 3) / Math.pow(29, 3);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lab65/convertLab65ToXyz65.js
var fn$1 = (v) => Math.pow(v, 3) > e$2 ? Math.pow(v, 3) : (116 * v - 16) / k$2;
var convertLab65ToXyz65 = ({ l, a, b, alpha }) => {
if (l === void 0) l = 0;
if (a === void 0) a = 0;
if (b === void 0) b = 0;
let fy = (l + 16) / 116;
let fx = a / 500 + fy;
let fz = fy - b / 200;
let res = {
mode: "xyz65",
x: fn$1(fx) * D65.X,
y: fn$1(fy) * D65.Y,
z: fn$1(fz) * D65.Z
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lab65/convertLab65ToRgb.js
var convertLab65ToRgb = (lab) => convertXyz65ToRgb(convertLab65ToXyz65(lab));
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lab65/convertXyz65ToLab65.js
var f$1 = (value) => value > e$2 ? Math.cbrt(value) : (k$2 * value + 16) / 116;
var convertXyz65ToLab65 = ({ x, y, z, alpha }) => {
if (x === void 0) x = 0;
if (y === void 0) y = 0;
if (z === void 0) z = 0;
let f0 = f$1(x / D65.X);
let f1 = f$1(y / D65.Y);
let f2 = f$1(z / D65.Z);
let res = {
mode: "lab65",
l: 116 * f1 - 16,
a: 500 * (f0 - f1),
b: 200 * (f1 - f2)
};
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/lab65/convertRgbToLab65.js
var convertRgbToLab65 = (rgb) => {
let res = convertXyz65ToLab65(convertRgbToXyz65(rgb));
if (rgb.r === rgb.b && rgb.b === rgb.g) res.a = res.b = 0;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/dlch/constants.js
var θ = 26 / 180 * Math.PI;
var cosθ = Math.cos(θ);
var sinθ = Math.sin(θ);
var factor = 100 / Math.log(139 / 100);
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/dlch/convertDlchToLab65.js
var convertDlchToLab65 = ({ l, c, h, alpha }) => {
if (l === void 0) l = 0;
if (c === void 0) c = 0;
if (h === void 0) h = 0;
let res = {
mode: "lab65",
l: (Math.exp(l * 1 / factor) - 1) / .0039
};
let G = (Math.exp(.0435 * c * 1 * 1) - 1) / .075;
let e = G * Math.cos(h / 180 * Math.PI - θ);
let f = G * Math.sin(h / 180 * Math.PI - θ);
res.a = e * cosθ - f / .83 * sinθ;
res.b = e * sinθ + f / .83 * cosθ;
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/dlch/convertLab65ToDlch.js
var convertLab65ToDlch = ({ l, a, b, alpha }) => {
if (l === void 0) l = 0;
if (a === void 0) a = 0;
if (b === void 0) b = 0;
let e = a * cosθ + b * sinθ;
let f = .83 * (b * cosθ - a * sinθ);
let G = Math.sqrt(e * e + f * f);
let res = {
mode: "dlch",
l: factor / 1 * Math.log(1 + .0039 * l),
c: Math.log(1 + .075 * G) / (.0435 * 1 * 1)
};
if (res.c) res.h = normalizeHue((Math.atan2(f, e) + θ) / Math.PI * 180);
if (alpha !== void 0) res.alpha = alpha;
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/dlab/definition.js
var convertDlabToLab65 = (c) => convertDlchToLab65(convertLabToLch(c, "dlch"));
var convertLab65ToDlab = (c) => convertLchToLab(convertLab65ToDlch(c), "dlab");
var definition$2 = {
mode: "dlab",
parse: ["--din99o-lab"],
serialize: "--din99o-lab",
toMode: {
lab65: convertDlabToLab65,
rgb: (c) => convertLab65ToRgb(convertDlabToLab65(c))
},
fromMode: {
lab65: convertLab65ToDlab,
rgb: (c) => convertLab65ToDlab(convertRgbToLab65(c))
},
channels: [
"l",
"a",
"b",
"alpha"
],
ranges: {
l: [0, 100],
a: [-40.09, 45.501],
b: [-40.469, 44.344]
},
interpolate: {
l: interpolatorLinear,
a: interpolatorLinear,
b: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
}
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/dlch/definition.js
var definition$3 = {
mode: "dlch",
parse: ["--din99o-lch"],
serialize: "--din99o-lch",
toMode: {
lab65: convertDlchToLab65,
dlab: (c) => convertLchToLab(c, "dlab"),
rgb: (c) => convertLab65ToRgb(convertDlchToLab65(c))
},
fromMode: {
lab65: convertLab65ToDlch,
dlab: (c) => convertLabToLch(c, "dlch"),
rgb: (c) => convertLab65ToDlch(convertRgbToLab65(c))
},
channels: [
"l",
"c",
"h",
"alpha"
],
ranges: {
l: [0, 100],
c: [0, 51.484],
h: [0, 360]
},
interpolate: {
l: interpolatorLinear,
c: interpolatorLinear,
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueChroma },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsi/convertHsiToRgb.js
function convertHsiToRgb({ h, s, i, alpha }) {
h = normalizeHue(h !== void 0 ? h : 0);
if (s === void 0) s = 0;
if (i === void 0) i = 0;
let f = Math.abs(h / 60 % 2 - 1);
let res;
switch (Math.floor(h / 60)) {
case 0:
res = {
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
b: i * (1 - s)
};
break;
case 1:
res = {
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 + s * (3 / (2 - f) - 1)),
b: i * (1 - s)
};
break;
case 2:
res = {
r: i * (1 - s),
g: i * (1 + s * (3 / (2 - f) - 1)),
b: i * (1 + s * (3 * (1 - f) / (2 - f) - 1))
};
break;
case 3:
res = {
r: i * (1 - s),
g: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
b: i * (1 + s * (3 / (2 - f) - 1))
};
break;
case 4:
res = {
r: i * (1 + s * (3 * (1 - f) / (2 - f) - 1)),
g: i * (1 - s),
b: i * (1 + s * (3 / (2 - f) - 1))
};
break;
case 5:
res = {
r: i * (1 + s * (3 / (2 - f) - 1)),
g: i * (1 - s),
b: i * (1 + s * (3 * (1 - f) / (2 - f) - 1))
};
break;
default: res = {
r: i * (1 - s),
g: i * (1 - s),
b: i * (1 - s)
};
}
res.mode = "rgb";
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsi/convertRgbToHsi.js
function convertRgbToHsi({ r, g, b, alpha }) {
if (r === void 0) r = 0;
if (g === void 0) g = 0;
if (b === void 0) b = 0;
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
mode: "hsi",
s: r + g + b === 0 ? 0 : 1 - 3 * m / (r + g + b),
i: (r + g + b) / 3
};
if (M - m !== 0) res.h = (M === r ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r) / (M - m) + 2 : (r - g) / (M - m) + 4) * 60;
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsi/definition.js
var definition$4 = {
mode: "hsi",
toMode: { rgb: convertHsiToRgb },
parse: ["--hsi"],
serialize: "--hsi",
fromMode: { rgb: convertRgbToHsi },
channels: [
"h",
"s",
"i",
"alpha"
],
ranges: { h: [0, 360] },
gamut: "rgb",
interpolate: {
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
s: interpolatorLinear,
i: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueSaturation },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsl/convertHslToRgb.js
function convertHslToRgb({ h, s, l, alpha }) {
h = normalizeHue(h !== void 0 ? h : 0);
if (s === void 0) s = 0;
if (l === void 0) l = 0;
let m1 = l + s * (l < .5 ? l : 1 - l);
let m2 = m1 - (m1 - l) * 2 * Math.abs(h / 60 % 2 - 1);
let res;
switch (Math.floor(h / 60)) {
case 0:
res = {
r: m1,
g: m2,
b: 2 * l - m1
};
break;
case 1:
res = {
r: m2,
g: m1,
b: 2 * l - m1
};
break;
case 2:
res = {
r: 2 * l - m1,
g: m1,
b: m2
};
break;
case 3:
res = {
r: 2 * l - m1,
g: m2,
b: m1
};
break;
case 4:
res = {
r: m2,
g: 2 * l - m1,
b: m1
};
break;
case 5:
res = {
r: m1,
g: 2 * l - m1,
b: m2
};
break;
default: res = {
r: 2 * l - m1,
g: 2 * l - m1,
b: 2 * l - m1
};
}
res.mode = "rgb";
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsl/convertRgbToHsl.js
function convertRgbToHsl({ r, g, b, alpha }) {
if (r === void 0) r = 0;
if (g === void 0) g = 0;
if (b === void 0) b = 0;
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
mode: "hsl",
s: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),
l: .5 * (M + m)
};
if (M - m !== 0) res.h = (M === r ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r) / (M - m) + 2 : (r - g) / (M - m) + 4) * 60;
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/util/hue.js
var hueToDeg = (val, unit) => {
switch (unit) {
case "deg": return +val;
case "rad": return val / Math.PI * 180;
case "grad": return val / 10 * 9;
case "turn": return val * 360;
}
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsl/parseHslLegacy.js
var hsl_old = new RegExp(`^hsla?\\(\\s*${hue$1}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
var parseHslLegacy = (color) => {
let match = color.match(hsl_old);
if (!match) return;
let res = { mode: "hsl" };
if (match[3] !== void 0) res.h = +match[3];
else if (match[1] !== void 0 && match[2] !== void 0) res.h = hueToDeg(match[1], match[2]);
if (match[4] !== void 0) res.s = Math.min(Math.max(0, match[4] / 100), 1);
if (match[5] !== void 0) res.l = Math.min(Math.max(0, match[5] / 100), 1);
if (match[6] !== void 0) res.alpha = Math.max(0, Math.min(1, match[6] / 100));
else if (match[7] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[7]));
return res;
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsl/parseHsl.js
function parseHsl(color, parsed) {
if (!parsed || parsed[0] !== "hsl" && parsed[0] !== "hsla") return;
const res = { mode: "hsl" };
const [, h, s, l, alpha] = parsed;
if (h.type !== Tok.None) {
if (h.type === Tok.Percentage) return;
res.h = h.value;
}
if (s.type !== Tok.None) {
if (s.type === Tok.Hue) return;
res.s = s.value / 100;
}
if (l.type !== Tok.None) {
if (l.type === Tok.Hue) return;
res.l = l.value / 100;
}
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsl/definition.js
var definition$5 = {
mode: "hsl",
toMode: { rgb: convertHslToRgb },
fromMode: { rgb: convertRgbToHsl },
channels: [
"h",
"s",
"l",
"alpha"
],
ranges: { h: [0, 360] },
gamut: "rgb",
parse: [parseHsl, parseHslLegacy],
serialize: (c) => `hsl(${c.h !== void 0 ? c.h : "none"} ${c.s !== void 0 ? c.s * 100 + "%" : "none"} ${c.l !== void 0 ? c.l * 100 + "%" : "none"}${c.alpha < 1 ? ` / ${c.alpha}` : ""})`,
interpolate: {
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
s: interpolatorLinear,
l: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueSaturation },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsv/convertHsvToRgb.js
function convertHsvToRgb({ h, s, v, alpha }) {
h = normalizeHue(h !== void 0 ? h : 0);
if (s === void 0) s = 0;
if (v === void 0) v = 0;
let f = Math.abs(h / 60 % 2 - 1);
let res;
switch (Math.floor(h / 60)) {
case 0:
res = {
r: v,
g: v * (1 - s * f),
b: v * (1 - s)
};
break;
case 1:
res = {
r: v * (1 - s * f),
g: v,
b: v * (1 - s)
};
break;
case 2:
res = {
r: v * (1 - s),
g: v,
b: v * (1 - s * f)
};
break;
case 3:
res = {
r: v * (1 - s),
g: v * (1 - s * f),
b: v
};
break;
case 4:
res = {
r: v * (1 - s * f),
g: v * (1 - s),
b: v
};
break;
case 5:
res = {
r: v,
g: v * (1 - s),
b: v * (1 - s * f)
};
break;
default: res = {
r: v * (1 - s),
g: v * (1 - s),
b: v * (1 - s)
};
}
res.mode = "rgb";
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsv/convertRgbToHsv.js
function convertRgbToHsv({ r, g, b, alpha }) {
if (r === void 0) r = 0;
if (g === void 0) g = 0;
if (b === void 0) b = 0;
let M = Math.max(r, g, b), m = Math.min(r, g, b);
let res = {
mode: "hsv",
s: M === 0 ? 0 : 1 - m / M,
v: M
};
if (M - m !== 0) res.h = (M === r ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r) / (M - m) + 2 : (r - g) / (M - m) + 4) * 60;
if (alpha !== void 0) res.alpha = alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hsv/definition.js
var definition$6 = {
mode: "hsv",
toMode: { rgb: convertHsvToRgb },
parse: ["--hsv"],
serialize: "--hsv",
fromMode: { rgb: convertRgbToHsv },
channels: [
"h",
"s",
"v",
"alpha"
],
ranges: { h: [0, 360] },
gamut: "rgb",
interpolate: {
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
s: interpolatorLinear,
v: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueSaturation },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hwb/convertHwbToRgb.js
function convertHwbToRgb({ h, w, b, alpha }) {
if (w === void 0) w = 0;
if (b === void 0) b = 0;
if (w + b > 1) {
let s = w + b;
w /= s;
b /= s;
}
return convertHsvToRgb({
h,
s: b === 1 ? 1 : 1 - w / (1 - b),
v: 1 - b,
alpha
});
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hwb/convertRgbToHwb.js
function convertRgbToHwb(rgba) {
let hsv = convertRgbToHsv(rgba);
if (hsv === void 0) return void 0;
let s = hsv.s !== void 0 ? hsv.s : 0;
let v = hsv.v !== void 0 ? hsv.v : 0;
let res = {
mode: "hwb",
w: (1 - s) * v,
b: 1 - v
};
if (hsv.h !== void 0) res.h = hsv.h;
if (hsv.alpha !== void 0) res.alpha = hsv.alpha;
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hwb/parseHwb.js
function ParseHwb(color, parsed) {
if (!parsed || parsed[0] !== "hwb") return;
const res = { mode: "hwb" };
const [, h, w, b, alpha] = parsed;
if (h.type !== Tok.None) {
if (h.type === Tok.Percentage) return;
res.h = h.value;
}
if (w.type !== Tok.None) {
if (w.type === Tok.Hue) return;
res.w = w.value / 100;
}
if (b.type !== Tok.None) {
if (b.type === Tok.Hue) return;
res.b = b.value / 100;
}
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
return res;
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hwb/definition.js
var definition$7 = {
mode: "hwb",
toMode: { rgb: convertHwbToRgb },
fromMode: { rgb: convertRgbToHwb },
channels: [
"h",
"w",
"b",
"alpha"
],
ranges: { h: [0, 360] },
gamut: "rgb",
parse: [ParseHwb],
serialize: (c) => `hwb(${c.h !== void 0 ? c.h : "none"} ${c.w !== void 0 ? c.w * 100 + "%" : "none"} ${c.b !== void 0 ? c.b * 100 + "%" : "none"}${c.alpha < 1 ? ` / ${c.alpha}` : ""})`,
interpolate: {
h: {
use: interpolatorLinear,
fixup: fixupHueShorter
},
w: interpolatorLinear,
b: interpolatorLinear,
alpha: {
use: interpolatorLinear,
fixup: fixupAlpha
}
},
difference: { h: differenceHueNaive },
average: { h: averageAngle }
};
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/hdr/transfer.js
var M1 = .1593017578125;
var M2 = 78.84375;
var C1 = .8359375;
var C2 = 18.8515625;
var C3 = 18.6875;
function transferPqDecode(v) {
if (v < 0) return 0;
const c = Math.pow(v, 1 / M2);
return 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);
}
function transferPqEncode(v) {
if (v < 0) return 0;
const c = Math.pow(v / 1e4, M1);
return Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);
}
//#endregion
//#region ../../home/cosmin/Work/maizzle/framework/node_modules/culori/src/itp/convertItpToXyz65.js
var toRel = (c) => Math.max(c / 203, 0);
var convertItpToXyz65 = ({ i, t, p, alpha }) => {
if (i === void 0) i = 0;
if (t === void 0) t = 0;
if (p === void 0) p = 0;
const l = transferPqDecode(i + .008609037037932761 * t + .11102962500302593 * p);
const m = transferPqDecode(i - .00860903703793275 * t - .1