UNPKG

@maizzle/framework

Version:

Maizzle is a framework that helps you quickly build HTML emails with Tailwind CSS.

1,750 lines 125 kB
//#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