4814 lines
		
	
	
		
			197 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			4814 lines
		
	
	
		
			197 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import {
 | |
|   log,
 | |
|   setLogLevel
 | |
| } from "./chunk-2LXNVE6Q.mjs";
 | |
| import {
 | |
|   __export,
 | |
|   __name
 | |
| } from "./chunk-DLQEHMXD.mjs";
 | |
| 
 | |
| // src/diagram-api/regexes.ts
 | |
| var frontMatterRegex = /^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s;
 | |
| var directiveRegex = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi;
 | |
| var anyCommentRegex = /\s*%%.*\n/gm;
 | |
| 
 | |
| // src/errors.ts
 | |
| var UnknownDiagramError = class extends Error {
 | |
|   static {
 | |
|     __name(this, "UnknownDiagramError");
 | |
|   }
 | |
|   constructor(message) {
 | |
|     super(message);
 | |
|     this.name = "UnknownDiagramError";
 | |
|   }
 | |
| };
 | |
| 
 | |
| // src/diagram-api/detectType.ts
 | |
| var detectors = {};
 | |
| var detectType = /* @__PURE__ */ __name(function(text2, config2) {
 | |
|   text2 = text2.replace(frontMatterRegex, "").replace(directiveRegex, "").replace(anyCommentRegex, "\n");
 | |
|   for (const [key, { detector }] of Object.entries(detectors)) {
 | |
|     const diagram = detector(text2, config2);
 | |
|     if (diagram) {
 | |
|       return key;
 | |
|     }
 | |
|   }
 | |
|   throw new UnknownDiagramError(
 | |
|     `No diagram type detected matching given configuration for text: ${text2}`
 | |
|   );
 | |
| }, "detectType");
 | |
| var registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => {
 | |
|   for (const { id, detector, loader } of diagrams2) {
 | |
|     addDetector(id, detector, loader);
 | |
|   }
 | |
| }, "registerLazyLoadedDiagrams");
 | |
| var addDetector = /* @__PURE__ */ __name((key, detector, loader) => {
 | |
|   if (detectors[key]) {
 | |
|     log.warn(`Detector with key ${key} already exists. Overwriting.`);
 | |
|   }
 | |
|   detectors[key] = { detector, loader };
 | |
|   log.debug(`Detector with key ${key} added${loader ? " with loader" : ""}`);
 | |
| }, "addDetector");
 | |
| var getDiagramLoader = /* @__PURE__ */ __name((key) => {
 | |
|   return detectors[key].loader;
 | |
| }, "getDiagramLoader");
 | |
| 
 | |
| // src/assignWithDepth.ts
 | |
| var assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = false } = {}) => {
 | |
|   const config2 = { depth, clobber };
 | |
|   if (Array.isArray(src) && !Array.isArray(dst)) {
 | |
|     src.forEach((s) => assignWithDepth(dst, s, config2));
 | |
|     return dst;
 | |
|   } else if (Array.isArray(src) && Array.isArray(dst)) {
 | |
|     src.forEach((s) => {
 | |
|       if (!dst.includes(s)) {
 | |
|         dst.push(s);
 | |
|       }
 | |
|     });
 | |
|     return dst;
 | |
|   }
 | |
|   if (dst === void 0 || depth <= 0) {
 | |
|     if (dst !== void 0 && dst !== null && typeof dst === "object" && typeof src === "object") {
 | |
|       return Object.assign(dst, src);
 | |
|     } else {
 | |
|       return src;
 | |
|     }
 | |
|   }
 | |
|   if (src !== void 0 && typeof dst === "object" && typeof src === "object") {
 | |
|     Object.keys(src).forEach((key) => {
 | |
|       if (typeof src[key] === "object" && (dst[key] === void 0 || typeof dst[key] === "object")) {
 | |
|         if (dst[key] === void 0) {
 | |
|           dst[key] = Array.isArray(src[key]) ? [] : {};
 | |
|         }
 | |
|         dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });
 | |
|       } else if (clobber || typeof dst[key] !== "object" && typeof src[key] !== "object") {
 | |
|         dst[key] = src[key];
 | |
|       }
 | |
|     });
 | |
|   }
 | |
|   return dst;
 | |
| }, "assignWithDepth");
 | |
| var assignWithDepth_default = assignWithDepth;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/channel.js
 | |
| var Channel = {
 | |
|   /* CLAMP */
 | |
|   min: {
 | |
|     r: 0,
 | |
|     g: 0,
 | |
|     b: 0,
 | |
|     s: 0,
 | |
|     l: 0,
 | |
|     a: 0
 | |
|   },
 | |
|   max: {
 | |
|     r: 255,
 | |
|     g: 255,
 | |
|     b: 255,
 | |
|     h: 360,
 | |
|     s: 100,
 | |
|     l: 100,
 | |
|     a: 1
 | |
|   },
 | |
|   clamp: {
 | |
|     r: /* @__PURE__ */ __name((r) => r >= 255 ? 255 : r < 0 ? 0 : r, "r"),
 | |
|     g: /* @__PURE__ */ __name((g) => g >= 255 ? 255 : g < 0 ? 0 : g, "g"),
 | |
|     b: /* @__PURE__ */ __name((b) => b >= 255 ? 255 : b < 0 ? 0 : b, "b"),
 | |
|     h: /* @__PURE__ */ __name((h) => h % 360, "h"),
 | |
|     s: /* @__PURE__ */ __name((s) => s >= 100 ? 100 : s < 0 ? 0 : s, "s"),
 | |
|     l: /* @__PURE__ */ __name((l) => l >= 100 ? 100 : l < 0 ? 0 : l, "l"),
 | |
|     a: /* @__PURE__ */ __name((a) => a >= 1 ? 1 : a < 0 ? 0 : a, "a")
 | |
|   },
 | |
|   /* CONVERSION */
 | |
|   //SOURCE: https://planetcalc.com/7779
 | |
|   toLinear: /* @__PURE__ */ __name((c) => {
 | |
|     const n = c / 255;
 | |
|     return c > 0.03928 ? Math.pow((n + 0.055) / 1.055, 2.4) : n / 12.92;
 | |
|   }, "toLinear"),
 | |
|   //SOURCE: https://gist.github.com/mjackson/5311256
 | |
|   hue2rgb: /* @__PURE__ */ __name((p, q, t) => {
 | |
|     if (t < 0)
 | |
|       t += 1;
 | |
|     if (t > 1)
 | |
|       t -= 1;
 | |
|     if (t < 1 / 6)
 | |
|       return p + (q - p) * 6 * t;
 | |
|     if (t < 1 / 2)
 | |
|       return q;
 | |
|     if (t < 2 / 3)
 | |
|       return p + (q - p) * (2 / 3 - t) * 6;
 | |
|     return p;
 | |
|   }, "hue2rgb"),
 | |
|   hsl2rgb: /* @__PURE__ */ __name(({ h, s, l }, channel2) => {
 | |
|     if (!s)
 | |
|       return l * 2.55;
 | |
|     h /= 360;
 | |
|     s /= 100;
 | |
|     l /= 100;
 | |
|     const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
 | |
|     const p = 2 * l - q;
 | |
|     switch (channel2) {
 | |
|       case "r":
 | |
|         return Channel.hue2rgb(p, q, h + 1 / 3) * 255;
 | |
|       case "g":
 | |
|         return Channel.hue2rgb(p, q, h) * 255;
 | |
|       case "b":
 | |
|         return Channel.hue2rgb(p, q, h - 1 / 3) * 255;
 | |
|     }
 | |
|   }, "hsl2rgb"),
 | |
|   rgb2hsl: /* @__PURE__ */ __name(({ r, g, b }, channel2) => {
 | |
|     r /= 255;
 | |
|     g /= 255;
 | |
|     b /= 255;
 | |
|     const max = Math.max(r, g, b);
 | |
|     const min = Math.min(r, g, b);
 | |
|     const l = (max + min) / 2;
 | |
|     if (channel2 === "l")
 | |
|       return l * 100;
 | |
|     if (max === min)
 | |
|       return 0;
 | |
|     const d = max - min;
 | |
|     const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
 | |
|     if (channel2 === "s")
 | |
|       return s * 100;
 | |
|     switch (max) {
 | |
|       case r:
 | |
|         return ((g - b) / d + (g < b ? 6 : 0)) * 60;
 | |
|       case g:
 | |
|         return ((b - r) / d + 2) * 60;
 | |
|       case b:
 | |
|         return ((r - g) / d + 4) * 60;
 | |
|       default:
 | |
|         return -1;
 | |
|     }
 | |
|   }, "rgb2hsl")
 | |
| };
 | |
| var channel_default = Channel;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/lang.js
 | |
| var Lang = {
 | |
|   /* API */
 | |
|   clamp: /* @__PURE__ */ __name((number, lower, upper) => {
 | |
|     if (lower > upper)
 | |
|       return Math.min(lower, Math.max(upper, number));
 | |
|     return Math.min(upper, Math.max(lower, number));
 | |
|   }, "clamp"),
 | |
|   round: /* @__PURE__ */ __name((number) => {
 | |
|     return Math.round(number * 1e10) / 1e10;
 | |
|   }, "round")
 | |
| };
 | |
| var lang_default = Lang;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/unit.js
 | |
| var Unit = {
 | |
|   /* API */
 | |
|   dec2hex: /* @__PURE__ */ __name((dec) => {
 | |
|     const hex = Math.round(dec).toString(16);
 | |
|     return hex.length > 1 ? hex : `0${hex}`;
 | |
|   }, "dec2hex")
 | |
| };
 | |
| var unit_default = Unit;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/utils/index.js
 | |
| var Utils = {
 | |
|   channel: channel_default,
 | |
|   lang: lang_default,
 | |
|   unit: unit_default
 | |
| };
 | |
| var utils_default = Utils;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/constants.js
 | |
| var DEC2HEX = {};
 | |
| for (let i = 0; i <= 255; i++)
 | |
|   DEC2HEX[i] = utils_default.unit.dec2hex(i);
 | |
| var TYPE = {
 | |
|   ALL: 0,
 | |
|   RGB: 1,
 | |
|   HSL: 2
 | |
| };
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/type.js
 | |
| var Type = class {
 | |
|   static {
 | |
|     __name(this, "Type");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.type = TYPE.ALL;
 | |
|   }
 | |
|   /* API */
 | |
|   get() {
 | |
|     return this.type;
 | |
|   }
 | |
|   set(type) {
 | |
|     if (this.type && this.type !== type)
 | |
|       throw new Error("Cannot change both RGB and HSL channels at the same time");
 | |
|     this.type = type;
 | |
|   }
 | |
|   reset() {
 | |
|     this.type = TYPE.ALL;
 | |
|   }
 | |
|   is(type) {
 | |
|     return this.type === type;
 | |
|   }
 | |
| };
 | |
| var type_default = Type;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/index.js
 | |
| var Channels = class {
 | |
|   static {
 | |
|     __name(this, "Channels");
 | |
|   }
 | |
|   /* CONSTRUCTOR */
 | |
|   constructor(data, color) {
 | |
|     this.color = color;
 | |
|     this.changed = false;
 | |
|     this.data = data;
 | |
|     this.type = new type_default();
 | |
|   }
 | |
|   /* API */
 | |
|   set(data, color) {
 | |
|     this.color = color;
 | |
|     this.changed = false;
 | |
|     this.data = data;
 | |
|     this.type.type = TYPE.ALL;
 | |
|     return this;
 | |
|   }
 | |
|   /* HELPERS */
 | |
|   _ensureHSL() {
 | |
|     const data = this.data;
 | |
|     const { h, s, l } = data;
 | |
|     if (h === void 0)
 | |
|       data.h = utils_default.channel.rgb2hsl(data, "h");
 | |
|     if (s === void 0)
 | |
|       data.s = utils_default.channel.rgb2hsl(data, "s");
 | |
|     if (l === void 0)
 | |
|       data.l = utils_default.channel.rgb2hsl(data, "l");
 | |
|   }
 | |
|   _ensureRGB() {
 | |
|     const data = this.data;
 | |
|     const { r, g, b } = data;
 | |
|     if (r === void 0)
 | |
|       data.r = utils_default.channel.hsl2rgb(data, "r");
 | |
|     if (g === void 0)
 | |
|       data.g = utils_default.channel.hsl2rgb(data, "g");
 | |
|     if (b === void 0)
 | |
|       data.b = utils_default.channel.hsl2rgb(data, "b");
 | |
|   }
 | |
|   /* GETTERS */
 | |
|   get r() {
 | |
|     const data = this.data;
 | |
|     const r = data.r;
 | |
|     if (!this.type.is(TYPE.HSL) && r !== void 0)
 | |
|       return r;
 | |
|     this._ensureHSL();
 | |
|     return utils_default.channel.hsl2rgb(data, "r");
 | |
|   }
 | |
|   get g() {
 | |
|     const data = this.data;
 | |
|     const g = data.g;
 | |
|     if (!this.type.is(TYPE.HSL) && g !== void 0)
 | |
|       return g;
 | |
|     this._ensureHSL();
 | |
|     return utils_default.channel.hsl2rgb(data, "g");
 | |
|   }
 | |
|   get b() {
 | |
|     const data = this.data;
 | |
|     const b = data.b;
 | |
|     if (!this.type.is(TYPE.HSL) && b !== void 0)
 | |
|       return b;
 | |
|     this._ensureHSL();
 | |
|     return utils_default.channel.hsl2rgb(data, "b");
 | |
|   }
 | |
|   get h() {
 | |
|     const data = this.data;
 | |
|     const h = data.h;
 | |
|     if (!this.type.is(TYPE.RGB) && h !== void 0)
 | |
|       return h;
 | |
|     this._ensureRGB();
 | |
|     return utils_default.channel.rgb2hsl(data, "h");
 | |
|   }
 | |
|   get s() {
 | |
|     const data = this.data;
 | |
|     const s = data.s;
 | |
|     if (!this.type.is(TYPE.RGB) && s !== void 0)
 | |
|       return s;
 | |
|     this._ensureRGB();
 | |
|     return utils_default.channel.rgb2hsl(data, "s");
 | |
|   }
 | |
|   get l() {
 | |
|     const data = this.data;
 | |
|     const l = data.l;
 | |
|     if (!this.type.is(TYPE.RGB) && l !== void 0)
 | |
|       return l;
 | |
|     this._ensureRGB();
 | |
|     return utils_default.channel.rgb2hsl(data, "l");
 | |
|   }
 | |
|   get a() {
 | |
|     return this.data.a;
 | |
|   }
 | |
|   /* SETTERS */
 | |
|   set r(r) {
 | |
|     this.type.set(TYPE.RGB);
 | |
|     this.changed = true;
 | |
|     this.data.r = r;
 | |
|   }
 | |
|   set g(g) {
 | |
|     this.type.set(TYPE.RGB);
 | |
|     this.changed = true;
 | |
|     this.data.g = g;
 | |
|   }
 | |
|   set b(b) {
 | |
|     this.type.set(TYPE.RGB);
 | |
|     this.changed = true;
 | |
|     this.data.b = b;
 | |
|   }
 | |
|   set h(h) {
 | |
|     this.type.set(TYPE.HSL);
 | |
|     this.changed = true;
 | |
|     this.data.h = h;
 | |
|   }
 | |
|   set s(s) {
 | |
|     this.type.set(TYPE.HSL);
 | |
|     this.changed = true;
 | |
|     this.data.s = s;
 | |
|   }
 | |
|   set l(l) {
 | |
|     this.type.set(TYPE.HSL);
 | |
|     this.changed = true;
 | |
|     this.data.l = l;
 | |
|   }
 | |
|   set a(a) {
 | |
|     this.changed = true;
 | |
|     this.data.a = a;
 | |
|   }
 | |
| };
 | |
| var channels_default = Channels;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/channels/reusable.js
 | |
| var channels = new channels_default({ r: 0, g: 0, b: 0, a: 0 }, "transparent");
 | |
| var reusable_default = channels;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hex.js
 | |
| var Hex = {
 | |
|   /* VARIABLES */
 | |
|   re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,
 | |
|   /* API */
 | |
|   parse: /* @__PURE__ */ __name((color) => {
 | |
|     if (color.charCodeAt(0) !== 35)
 | |
|       return;
 | |
|     const match = color.match(Hex.re);
 | |
|     if (!match)
 | |
|       return;
 | |
|     const hex = match[1];
 | |
|     const dec = parseInt(hex, 16);
 | |
|     const length = hex.length;
 | |
|     const hasAlpha = length % 4 === 0;
 | |
|     const isFullLength = length > 4;
 | |
|     const multiplier = isFullLength ? 1 : 17;
 | |
|     const bits = isFullLength ? 8 : 4;
 | |
|     const bitsOffset = hasAlpha ? 0 : -1;
 | |
|     const mask = isFullLength ? 255 : 15;
 | |
|     return reusable_default.set({
 | |
|       r: (dec >> bits * (bitsOffset + 3) & mask) * multiplier,
 | |
|       g: (dec >> bits * (bitsOffset + 2) & mask) * multiplier,
 | |
|       b: (dec >> bits * (bitsOffset + 1) & mask) * multiplier,
 | |
|       a: hasAlpha ? (dec & mask) * multiplier / 255 : 1
 | |
|     }, color);
 | |
|   }, "parse"),
 | |
|   stringify: /* @__PURE__ */ __name((channels2) => {
 | |
|     const { r, g, b, a } = channels2;
 | |
|     if (a < 1) {
 | |
|       return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;
 | |
|     } else {
 | |
|       return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;
 | |
|     }
 | |
|   }, "stringify")
 | |
| };
 | |
| var hex_default = Hex;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/hsl.js
 | |
| var HSL = {
 | |
|   /* VARIABLES */
 | |
|   re: /^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,
 | |
|   hueRe: /^(.+?)(deg|grad|rad|turn)$/i,
 | |
|   /* HELPERS */
 | |
|   _hue2deg: /* @__PURE__ */ __name((hue) => {
 | |
|     const match = hue.match(HSL.hueRe);
 | |
|     if (match) {
 | |
|       const [, number, unit] = match;
 | |
|       switch (unit) {
 | |
|         case "grad":
 | |
|           return utils_default.channel.clamp.h(parseFloat(number) * 0.9);
 | |
|         case "rad":
 | |
|           return utils_default.channel.clamp.h(parseFloat(number) * 180 / Math.PI);
 | |
|         case "turn":
 | |
|           return utils_default.channel.clamp.h(parseFloat(number) * 360);
 | |
|       }
 | |
|     }
 | |
|     return utils_default.channel.clamp.h(parseFloat(hue));
 | |
|   }, "_hue2deg"),
 | |
|   /* API */
 | |
|   parse: /* @__PURE__ */ __name((color) => {
 | |
|     const charCode = color.charCodeAt(0);
 | |
|     if (charCode !== 104 && charCode !== 72)
 | |
|       return;
 | |
|     const match = color.match(HSL.re);
 | |
|     if (!match)
 | |
|       return;
 | |
|     const [, h, s, l, a, isAlphaPercentage] = match;
 | |
|     return reusable_default.set({
 | |
|       h: HSL._hue2deg(h),
 | |
|       s: utils_default.channel.clamp.s(parseFloat(s)),
 | |
|       l: utils_default.channel.clamp.l(parseFloat(l)),
 | |
|       a: a ? utils_default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1
 | |
|     }, color);
 | |
|   }, "parse"),
 | |
|   stringify: /* @__PURE__ */ __name((channels2) => {
 | |
|     const { h, s, l, a } = channels2;
 | |
|     if (a < 1) {
 | |
|       return `hsla(${utils_default.lang.round(h)}, ${utils_default.lang.round(s)}%, ${utils_default.lang.round(l)}%, ${a})`;
 | |
|     } else {
 | |
|       return `hsl(${utils_default.lang.round(h)}, ${utils_default.lang.round(s)}%, ${utils_default.lang.round(l)}%)`;
 | |
|     }
 | |
|   }, "stringify")
 | |
| };
 | |
| var hsl_default = HSL;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/keyword.js
 | |
| var Keyword = {
 | |
|   /* VARIABLES */
 | |
|   colors: {
 | |
|     aliceblue: "#f0f8ff",
 | |
|     antiquewhite: "#faebd7",
 | |
|     aqua: "#00ffff",
 | |
|     aquamarine: "#7fffd4",
 | |
|     azure: "#f0ffff",
 | |
|     beige: "#f5f5dc",
 | |
|     bisque: "#ffe4c4",
 | |
|     black: "#000000",
 | |
|     blanchedalmond: "#ffebcd",
 | |
|     blue: "#0000ff",
 | |
|     blueviolet: "#8a2be2",
 | |
|     brown: "#a52a2a",
 | |
|     burlywood: "#deb887",
 | |
|     cadetblue: "#5f9ea0",
 | |
|     chartreuse: "#7fff00",
 | |
|     chocolate: "#d2691e",
 | |
|     coral: "#ff7f50",
 | |
|     cornflowerblue: "#6495ed",
 | |
|     cornsilk: "#fff8dc",
 | |
|     crimson: "#dc143c",
 | |
|     cyanaqua: "#00ffff",
 | |
|     darkblue: "#00008b",
 | |
|     darkcyan: "#008b8b",
 | |
|     darkgoldenrod: "#b8860b",
 | |
|     darkgray: "#a9a9a9",
 | |
|     darkgreen: "#006400",
 | |
|     darkgrey: "#a9a9a9",
 | |
|     darkkhaki: "#bdb76b",
 | |
|     darkmagenta: "#8b008b",
 | |
|     darkolivegreen: "#556b2f",
 | |
|     darkorange: "#ff8c00",
 | |
|     darkorchid: "#9932cc",
 | |
|     darkred: "#8b0000",
 | |
|     darksalmon: "#e9967a",
 | |
|     darkseagreen: "#8fbc8f",
 | |
|     darkslateblue: "#483d8b",
 | |
|     darkslategray: "#2f4f4f",
 | |
|     darkslategrey: "#2f4f4f",
 | |
|     darkturquoise: "#00ced1",
 | |
|     darkviolet: "#9400d3",
 | |
|     deeppink: "#ff1493",
 | |
|     deepskyblue: "#00bfff",
 | |
|     dimgray: "#696969",
 | |
|     dimgrey: "#696969",
 | |
|     dodgerblue: "#1e90ff",
 | |
|     firebrick: "#b22222",
 | |
|     floralwhite: "#fffaf0",
 | |
|     forestgreen: "#228b22",
 | |
|     fuchsia: "#ff00ff",
 | |
|     gainsboro: "#dcdcdc",
 | |
|     ghostwhite: "#f8f8ff",
 | |
|     gold: "#ffd700",
 | |
|     goldenrod: "#daa520",
 | |
|     gray: "#808080",
 | |
|     green: "#008000",
 | |
|     greenyellow: "#adff2f",
 | |
|     grey: "#808080",
 | |
|     honeydew: "#f0fff0",
 | |
|     hotpink: "#ff69b4",
 | |
|     indianred: "#cd5c5c",
 | |
|     indigo: "#4b0082",
 | |
|     ivory: "#fffff0",
 | |
|     khaki: "#f0e68c",
 | |
|     lavender: "#e6e6fa",
 | |
|     lavenderblush: "#fff0f5",
 | |
|     lawngreen: "#7cfc00",
 | |
|     lemonchiffon: "#fffacd",
 | |
|     lightblue: "#add8e6",
 | |
|     lightcoral: "#f08080",
 | |
|     lightcyan: "#e0ffff",
 | |
|     lightgoldenrodyellow: "#fafad2",
 | |
|     lightgray: "#d3d3d3",
 | |
|     lightgreen: "#90ee90",
 | |
|     lightgrey: "#d3d3d3",
 | |
|     lightpink: "#ffb6c1",
 | |
|     lightsalmon: "#ffa07a",
 | |
|     lightseagreen: "#20b2aa",
 | |
|     lightskyblue: "#87cefa",
 | |
|     lightslategray: "#778899",
 | |
|     lightslategrey: "#778899",
 | |
|     lightsteelblue: "#b0c4de",
 | |
|     lightyellow: "#ffffe0",
 | |
|     lime: "#00ff00",
 | |
|     limegreen: "#32cd32",
 | |
|     linen: "#faf0e6",
 | |
|     magenta: "#ff00ff",
 | |
|     maroon: "#800000",
 | |
|     mediumaquamarine: "#66cdaa",
 | |
|     mediumblue: "#0000cd",
 | |
|     mediumorchid: "#ba55d3",
 | |
|     mediumpurple: "#9370db",
 | |
|     mediumseagreen: "#3cb371",
 | |
|     mediumslateblue: "#7b68ee",
 | |
|     mediumspringgreen: "#00fa9a",
 | |
|     mediumturquoise: "#48d1cc",
 | |
|     mediumvioletred: "#c71585",
 | |
|     midnightblue: "#191970",
 | |
|     mintcream: "#f5fffa",
 | |
|     mistyrose: "#ffe4e1",
 | |
|     moccasin: "#ffe4b5",
 | |
|     navajowhite: "#ffdead",
 | |
|     navy: "#000080",
 | |
|     oldlace: "#fdf5e6",
 | |
|     olive: "#808000",
 | |
|     olivedrab: "#6b8e23",
 | |
|     orange: "#ffa500",
 | |
|     orangered: "#ff4500",
 | |
|     orchid: "#da70d6",
 | |
|     palegoldenrod: "#eee8aa",
 | |
|     palegreen: "#98fb98",
 | |
|     paleturquoise: "#afeeee",
 | |
|     palevioletred: "#db7093",
 | |
|     papayawhip: "#ffefd5",
 | |
|     peachpuff: "#ffdab9",
 | |
|     peru: "#cd853f",
 | |
|     pink: "#ffc0cb",
 | |
|     plum: "#dda0dd",
 | |
|     powderblue: "#b0e0e6",
 | |
|     purple: "#800080",
 | |
|     rebeccapurple: "#663399",
 | |
|     red: "#ff0000",
 | |
|     rosybrown: "#bc8f8f",
 | |
|     royalblue: "#4169e1",
 | |
|     saddlebrown: "#8b4513",
 | |
|     salmon: "#fa8072",
 | |
|     sandybrown: "#f4a460",
 | |
|     seagreen: "#2e8b57",
 | |
|     seashell: "#fff5ee",
 | |
|     sienna: "#a0522d",
 | |
|     silver: "#c0c0c0",
 | |
|     skyblue: "#87ceeb",
 | |
|     slateblue: "#6a5acd",
 | |
|     slategray: "#708090",
 | |
|     slategrey: "#708090",
 | |
|     snow: "#fffafa",
 | |
|     springgreen: "#00ff7f",
 | |
|     tan: "#d2b48c",
 | |
|     teal: "#008080",
 | |
|     thistle: "#d8bfd8",
 | |
|     transparent: "#00000000",
 | |
|     turquoise: "#40e0d0",
 | |
|     violet: "#ee82ee",
 | |
|     wheat: "#f5deb3",
 | |
|     white: "#ffffff",
 | |
|     whitesmoke: "#f5f5f5",
 | |
|     yellow: "#ffff00",
 | |
|     yellowgreen: "#9acd32"
 | |
|   },
 | |
|   /* API */
 | |
|   parse: /* @__PURE__ */ __name((color) => {
 | |
|     color = color.toLowerCase();
 | |
|     const hex = Keyword.colors[color];
 | |
|     if (!hex)
 | |
|       return;
 | |
|     return hex_default.parse(hex);
 | |
|   }, "parse"),
 | |
|   stringify: /* @__PURE__ */ __name((channels2) => {
 | |
|     const hex = hex_default.stringify(channels2);
 | |
|     for (const name in Keyword.colors) {
 | |
|       if (Keyword.colors[name] === hex)
 | |
|         return name;
 | |
|     }
 | |
|     return;
 | |
|   }, "stringify")
 | |
| };
 | |
| var keyword_default = Keyword;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/rgb.js
 | |
| var RGB = {
 | |
|   /* VARIABLES */
 | |
|   re: /^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,
 | |
|   /* API */
 | |
|   parse: /* @__PURE__ */ __name((color) => {
 | |
|     const charCode = color.charCodeAt(0);
 | |
|     if (charCode !== 114 && charCode !== 82)
 | |
|       return;
 | |
|     const match = color.match(RGB.re);
 | |
|     if (!match)
 | |
|       return;
 | |
|     const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;
 | |
|     return reusable_default.set({
 | |
|       r: utils_default.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),
 | |
|       g: utils_default.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),
 | |
|       b: utils_default.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),
 | |
|       a: a ? utils_default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1
 | |
|     }, color);
 | |
|   }, "parse"),
 | |
|   stringify: /* @__PURE__ */ __name((channels2) => {
 | |
|     const { r, g, b, a } = channels2;
 | |
|     if (a < 1) {
 | |
|       return `rgba(${utils_default.lang.round(r)}, ${utils_default.lang.round(g)}, ${utils_default.lang.round(b)}, ${utils_default.lang.round(a)})`;
 | |
|     } else {
 | |
|       return `rgb(${utils_default.lang.round(r)}, ${utils_default.lang.round(g)}, ${utils_default.lang.round(b)})`;
 | |
|     }
 | |
|   }, "stringify")
 | |
| };
 | |
| var rgb_default = RGB;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/color/index.js
 | |
| var Color = {
 | |
|   /* VARIABLES */
 | |
|   format: {
 | |
|     keyword: keyword_default,
 | |
|     hex: hex_default,
 | |
|     rgb: rgb_default,
 | |
|     rgba: rgb_default,
 | |
|     hsl: hsl_default,
 | |
|     hsla: hsl_default
 | |
|   },
 | |
|   /* API */
 | |
|   parse: /* @__PURE__ */ __name((color) => {
 | |
|     if (typeof color !== "string")
 | |
|       return color;
 | |
|     const channels2 = hex_default.parse(color) || rgb_default.parse(color) || hsl_default.parse(color) || keyword_default.parse(color);
 | |
|     if (channels2)
 | |
|       return channels2;
 | |
|     throw new Error(`Unsupported color format: "${color}"`);
 | |
|   }, "parse"),
 | |
|   stringify: /* @__PURE__ */ __name((channels2) => {
 | |
|     if (!channels2.changed && channels2.color)
 | |
|       return channels2.color;
 | |
|     if (channels2.type.is(TYPE.HSL) || channels2.data.r === void 0) {
 | |
|       return hsl_default.stringify(channels2);
 | |
|     } else if (channels2.a < 1 || !Number.isInteger(channels2.r) || !Number.isInteger(channels2.g) || !Number.isInteger(channels2.b)) {
 | |
|       return rgb_default.stringify(channels2);
 | |
|     } else {
 | |
|       return hex_default.stringify(channels2);
 | |
|     }
 | |
|   }, "stringify")
 | |
| };
 | |
| var color_default = Color;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/change.js
 | |
| var change = /* @__PURE__ */ __name((color, channels2) => {
 | |
|   const ch = color_default.parse(color);
 | |
|   for (const c in channels2) {
 | |
|     ch[c] = utils_default.channel.clamp[c](channels2[c]);
 | |
|   }
 | |
|   return color_default.stringify(ch);
 | |
| }, "change");
 | |
| var change_default = change;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/rgba.js
 | |
| var rgba = /* @__PURE__ */ __name((r, g, b = 0, a = 1) => {
 | |
|   if (typeof r !== "number")
 | |
|     return change_default(r, { a: g });
 | |
|   const channels2 = reusable_default.set({
 | |
|     r: utils_default.channel.clamp.r(r),
 | |
|     g: utils_default.channel.clamp.g(g),
 | |
|     b: utils_default.channel.clamp.b(b),
 | |
|     a: utils_default.channel.clamp.a(a)
 | |
|   });
 | |
|   return color_default.stringify(channels2);
 | |
| }, "rgba");
 | |
| var rgba_default = rgba;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/channel.js
 | |
| var channel = /* @__PURE__ */ __name((color, channel2) => {
 | |
|   return utils_default.lang.round(color_default.parse(color)[channel2]);
 | |
| }, "channel");
 | |
| var channel_default2 = channel;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/luminance.js
 | |
| var luminance = /* @__PURE__ */ __name((color) => {
 | |
|   const { r, g, b } = color_default.parse(color);
 | |
|   const luminance2 = 0.2126 * utils_default.channel.toLinear(r) + 0.7152 * utils_default.channel.toLinear(g) + 0.0722 * utils_default.channel.toLinear(b);
 | |
|   return utils_default.lang.round(luminance2);
 | |
| }, "luminance");
 | |
| var luminance_default = luminance;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_light.js
 | |
| var isLight = /* @__PURE__ */ __name((color) => {
 | |
|   return luminance_default(color) >= 0.5;
 | |
| }, "isLight");
 | |
| var is_light_default = isLight;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/is_dark.js
 | |
| var isDark = /* @__PURE__ */ __name((color) => {
 | |
|   return !is_light_default(color);
 | |
| }, "isDark");
 | |
| var is_dark_default = isDark;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust_channel.js
 | |
| var adjustChannel = /* @__PURE__ */ __name((color, channel2, amount) => {
 | |
|   const channels2 = color_default.parse(color);
 | |
|   const amountCurrent = channels2[channel2];
 | |
|   const amountNext = utils_default.channel.clamp[channel2](amountCurrent + amount);
 | |
|   if (amountCurrent !== amountNext)
 | |
|     channels2[channel2] = amountNext;
 | |
|   return color_default.stringify(channels2);
 | |
| }, "adjustChannel");
 | |
| var adjust_channel_default = adjustChannel;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/lighten.js
 | |
| var lighten = /* @__PURE__ */ __name((color, amount) => {
 | |
|   return adjust_channel_default(color, "l", amount);
 | |
| }, "lighten");
 | |
| var lighten_default = lighten;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/darken.js
 | |
| var darken = /* @__PURE__ */ __name((color, amount) => {
 | |
|   return adjust_channel_default(color, "l", -amount);
 | |
| }, "darken");
 | |
| var darken_default = darken;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/adjust.js
 | |
| var adjust = /* @__PURE__ */ __name((color, channels2) => {
 | |
|   const ch = color_default.parse(color);
 | |
|   const changes = {};
 | |
|   for (const c in channels2) {
 | |
|     if (!channels2[c])
 | |
|       continue;
 | |
|     changes[c] = ch[c] + channels2[c];
 | |
|   }
 | |
|   return change_default(color, changes);
 | |
| }, "adjust");
 | |
| var adjust_default = adjust;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/mix.js
 | |
| var mix = /* @__PURE__ */ __name((color1, color2, weight = 50) => {
 | |
|   const { r: r1, g: g1, b: b1, a: a1 } = color_default.parse(color1);
 | |
|   const { r: r2, g: g2, b: b2, a: a2 } = color_default.parse(color2);
 | |
|   const weightScale = weight / 100;
 | |
|   const weightNormalized = weightScale * 2 - 1;
 | |
|   const alphaDelta = a1 - a2;
 | |
|   const weight1combined = weightNormalized * alphaDelta === -1 ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);
 | |
|   const weight1 = (weight1combined + 1) / 2;
 | |
|   const weight2 = 1 - weight1;
 | |
|   const r = r1 * weight1 + r2 * weight2;
 | |
|   const g = g1 * weight1 + g2 * weight2;
 | |
|   const b = b1 * weight1 + b2 * weight2;
 | |
|   const a = a1 * weightScale + a2 * (1 - weightScale);
 | |
|   return rgba_default(r, g, b, a);
 | |
| }, "mix");
 | |
| var mix_default = mix;
 | |
| 
 | |
| // ../../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/invert.js
 | |
| var invert = /* @__PURE__ */ __name((color, weight = 100) => {
 | |
|   const inverse = color_default.parse(color);
 | |
|   inverse.r = 255 - inverse.r;
 | |
|   inverse.g = 255 - inverse.g;
 | |
|   inverse.b = 255 - inverse.b;
 | |
|   return mix_default(inverse, color, weight);
 | |
| }, "invert");
 | |
| var invert_default = invert;
 | |
| 
 | |
| // src/themes/erDiagram-oldHardcodedValues.ts
 | |
| var oldAttributeBackgroundColorOdd = "#ffffff";
 | |
| var oldAttributeBackgroundColorEven = "#f2f2f2";
 | |
| 
 | |
| // src/themes/theme-helpers.js
 | |
| var mkBorder = /* @__PURE__ */ __name((col, darkMode) => darkMode ? adjust_default(col, { s: -40, l: 10 }) : adjust_default(col, { s: -40, l: -10 }), "mkBorder");
 | |
| 
 | |
| // src/themes/theme-base.js
 | |
| var Theme = class {
 | |
|   static {
 | |
|     __name(this, "Theme");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.background = "#f4f4f4";
 | |
|     this.primaryColor = "#fff4dd";
 | |
|     this.noteBkgColor = "#fff5ad";
 | |
|     this.noteTextColor = "#333";
 | |
|     this.THEME_COLOR_LIMIT = 12;
 | |
|     this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif';
 | |
|     this.fontSize = "16px";
 | |
|   }
 | |
|   updateColors() {
 | |
|     this.primaryTextColor = this.primaryTextColor || (this.darkMode ? "#eee" : "#333");
 | |
|     this.secondaryColor = this.secondaryColor || adjust_default(this.primaryColor, { h: -120 });
 | |
|     this.tertiaryColor = this.tertiaryColor || adjust_default(this.primaryColor, { h: 180, l: 5 });
 | |
|     this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);
 | |
|     this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);
 | |
|     this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);
 | |
|     this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);
 | |
|     this.noteBkgColor = this.noteBkgColor || "#fff5ad";
 | |
|     this.noteTextColor = this.noteTextColor || "#333";
 | |
|     this.secondaryTextColor = this.secondaryTextColor || invert_default(this.secondaryColor);
 | |
|     this.tertiaryTextColor = this.tertiaryTextColor || invert_default(this.tertiaryColor);
 | |
|     this.lineColor = this.lineColor || invert_default(this.background);
 | |
|     this.arrowheadColor = this.arrowheadColor || invert_default(this.background);
 | |
|     this.textColor = this.textColor || this.primaryTextColor;
 | |
|     this.border2 = this.border2 || this.tertiaryBorderColor;
 | |
|     this.nodeBkg = this.nodeBkg || this.primaryColor;
 | |
|     this.mainBkg = this.mainBkg || this.primaryColor;
 | |
|     this.nodeBorder = this.nodeBorder || this.primaryBorderColor;
 | |
|     this.clusterBkg = this.clusterBkg || this.tertiaryColor;
 | |
|     this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;
 | |
|     this.defaultLinkColor = this.defaultLinkColor || this.lineColor;
 | |
|     this.titleColor = this.titleColor || this.tertiaryTextColor;
 | |
|     this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken_default(this.secondaryColor, 30) : this.secondaryColor);
 | |
|     this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;
 | |
|     this.actorBorder = this.actorBorder || this.primaryBorderColor;
 | |
|     this.actorBkg = this.actorBkg || this.mainBkg;
 | |
|     this.actorTextColor = this.actorTextColor || this.primaryTextColor;
 | |
|     this.actorLineColor = this.actorLineColor || this.actorBorder;
 | |
|     this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;
 | |
|     this.signalColor = this.signalColor || this.textColor;
 | |
|     this.signalTextColor = this.signalTextColor || this.textColor;
 | |
|     this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;
 | |
|     this.labelTextColor = this.labelTextColor || this.actorTextColor;
 | |
|     this.loopTextColor = this.loopTextColor || this.actorTextColor;
 | |
|     this.activationBorderColor = this.activationBorderColor || darken_default(this.secondaryColor, 10);
 | |
|     this.activationBkgColor = this.activationBkgColor || this.secondaryColor;
 | |
|     this.sequenceNumberColor = this.sequenceNumberColor || invert_default(this.lineColor);
 | |
|     this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;
 | |
|     this.altSectionBkgColor = this.altSectionBkgColor || "white";
 | |
|     this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;
 | |
|     this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;
 | |
|     this.excludeBkgColor = this.excludeBkgColor || "#eeeeee";
 | |
|     this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;
 | |
|     this.taskBkgColor = this.taskBkgColor || this.primaryColor;
 | |
|     this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;
 | |
|     this.activeTaskBkgColor = this.activeTaskBkgColor || lighten_default(this.primaryColor, 23);
 | |
|     this.gridColor = this.gridColor || "lightgrey";
 | |
|     this.doneTaskBkgColor = this.doneTaskBkgColor || "lightgrey";
 | |
|     this.doneTaskBorderColor = this.doneTaskBorderColor || "grey";
 | |
|     this.critBorderColor = this.critBorderColor || "#ff8888";
 | |
|     this.critBkgColor = this.critBkgColor || "red";
 | |
|     this.todayLineColor = this.todayLineColor || "red";
 | |
|     this.vertLineColor = this.vertLineColor || "navy";
 | |
|     this.taskTextColor = this.taskTextColor || this.textColor;
 | |
|     this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;
 | |
|     this.taskTextLightColor = this.taskTextLightColor || this.textColor;
 | |
|     this.taskTextColor = this.taskTextColor || this.primaryTextColor;
 | |
|     this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;
 | |
|     this.taskTextClickableColor = this.taskTextClickableColor || "#003163";
 | |
|     this.personBorder = this.personBorder || this.primaryBorderColor;
 | |
|     this.personBkg = this.personBkg || this.mainBkg;
 | |
|     if (this.darkMode) {
 | |
|       this.rowOdd = this.rowOdd || darken_default(this.mainBkg, 5) || "#ffffff";
 | |
|       this.rowEven = this.rowEven || darken_default(this.mainBkg, 10);
 | |
|     } else {
 | |
|       this.rowOdd = this.rowOdd || lighten_default(this.mainBkg, 75) || "#ffffff";
 | |
|       this.rowEven = this.rowEven || lighten_default(this.mainBkg, 5);
 | |
|     }
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.transitionLabelColor = this.transitionLabelColor || this.textColor;
 | |
|     this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;
 | |
|     this.stateBkg = this.stateBkg || this.mainBkg;
 | |
|     this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;
 | |
|     this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;
 | |
|     this.altBackground = this.altBackground || this.tertiaryColor;
 | |
|     this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;
 | |
|     this.compositeBorder = this.compositeBorder || this.nodeBorder;
 | |
|     this.innerEndBackground = this.nodeBorder;
 | |
|     this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
 | |
|     this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.specialStateColor = this.lineColor;
 | |
|     this.cScale0 = this.cScale0 || this.primaryColor;
 | |
|     this.cScale1 = this.cScale1 || this.secondaryColor;
 | |
|     this.cScale2 = this.cScale2 || this.tertiaryColor;
 | |
|     this.cScale3 = this.cScale3 || adjust_default(this.primaryColor, { h: 30 });
 | |
|     this.cScale4 = this.cScale4 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.cScale5 = this.cScale5 || adjust_default(this.primaryColor, { h: 90 });
 | |
|     this.cScale6 = this.cScale6 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.cScale7 = this.cScale7 || adjust_default(this.primaryColor, { h: 150 });
 | |
|     this.cScale8 = this.cScale8 || adjust_default(this.primaryColor, { h: 210, l: 150 });
 | |
|     this.cScale9 = this.cScale9 || adjust_default(this.primaryColor, { h: 270 });
 | |
|     this.cScale10 = this.cScale10 || adjust_default(this.primaryColor, { h: 300 });
 | |
|     this.cScale11 = this.cScale11 || adjust_default(this.primaryColor, { h: 330 });
 | |
|     if (this.darkMode) {
 | |
|       for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|         this["cScale" + i] = darken_default(this["cScale" + i], 75);
 | |
|       }
 | |
|     } else {
 | |
|       for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|         this["cScale" + i] = darken_default(this["cScale" + i], 25);
 | |
|       }
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleInv" + i] = this["cScaleInv" + i] || invert_default(this["cScale" + i]);
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       if (this.darkMode) {
 | |
|         this["cScalePeer" + i] = this["cScalePeer" + i] || lighten_default(this["cScale" + i], 10);
 | |
|       } else {
 | |
|         this["cScalePeer" + i] = this["cScalePeer" + i] || darken_default(this["cScale" + i], 10);
 | |
|       }
 | |
|     }
 | |
|     this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleLabel" + i] = this["cScaleLabel" + i] || this.scaleLabelColor;
 | |
|     }
 | |
|     const multiplier = this.darkMode ? -4 : -1;
 | |
|     for (let i = 0; i < 5; i++) {
 | |
|       this["surface" + i] = this["surface" + i] || adjust_default(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });
 | |
|       this["surfacePeer" + i] = this["surfacePeer" + i] || adjust_default(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });
 | |
|     }
 | |
|     this.classText = this.classText || this.textColor;
 | |
|     this.fillType0 = this.fillType0 || this.primaryColor;
 | |
|     this.fillType1 = this.fillType1 || this.secondaryColor;
 | |
|     this.fillType2 = this.fillType2 || adjust_default(this.primaryColor, { h: 64 });
 | |
|     this.fillType3 = this.fillType3 || adjust_default(this.secondaryColor, { h: 64 });
 | |
|     this.fillType4 = this.fillType4 || adjust_default(this.primaryColor, { h: -64 });
 | |
|     this.fillType5 = this.fillType5 || adjust_default(this.secondaryColor, { h: -64 });
 | |
|     this.fillType6 = this.fillType6 || adjust_default(this.primaryColor, { h: 128 });
 | |
|     this.fillType7 = this.fillType7 || adjust_default(this.secondaryColor, { h: 128 });
 | |
|     this.pie1 = this.pie1 || this.primaryColor;
 | |
|     this.pie2 = this.pie2 || this.secondaryColor;
 | |
|     this.pie3 = this.pie3 || this.tertiaryColor;
 | |
|     this.pie4 = this.pie4 || adjust_default(this.primaryColor, { l: -10 });
 | |
|     this.pie5 = this.pie5 || adjust_default(this.secondaryColor, { l: -10 });
 | |
|     this.pie6 = this.pie6 || adjust_default(this.tertiaryColor, { l: -10 });
 | |
|     this.pie7 = this.pie7 || adjust_default(this.primaryColor, { h: 60, l: -10 });
 | |
|     this.pie8 = this.pie8 || adjust_default(this.primaryColor, { h: -60, l: -10 });
 | |
|     this.pie9 = this.pie9 || adjust_default(this.primaryColor, { h: 120, l: 0 });
 | |
|     this.pie10 = this.pie10 || adjust_default(this.primaryColor, { h: 60, l: -20 });
 | |
|     this.pie11 = this.pie11 || adjust_default(this.primaryColor, { h: -60, l: -20 });
 | |
|     this.pie12 = this.pie12 || adjust_default(this.primaryColor, { h: 120, l: -10 });
 | |
|     this.pieTitleTextSize = this.pieTitleTextSize || "25px";
 | |
|     this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
 | |
|     this.pieSectionTextSize = this.pieSectionTextSize || "17px";
 | |
|     this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
 | |
|     this.pieLegendTextSize = this.pieLegendTextSize || "17px";
 | |
|     this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
 | |
|     this.pieStrokeColor = this.pieStrokeColor || "black";
 | |
|     this.pieStrokeWidth = this.pieStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
 | |
|     this.pieOpacity = this.pieOpacity || "0.7";
 | |
|     this.radar = {
 | |
|       axisColor: this.radar?.axisColor || this.lineColor,
 | |
|       axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
 | |
|       axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
 | |
|       curveOpacity: this.radar?.curveOpacity || 0.5,
 | |
|       curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
 | |
|       graticuleColor: this.radar?.graticuleColor || "#DEDEDE",
 | |
|       graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
 | |
|       graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
 | |
|       legendBoxSize: this.radar?.legendBoxSize || 12,
 | |
|       legendFontSize: this.radar?.legendFontSize || 12
 | |
|     };
 | |
|     this.archEdgeColor = this.archEdgeColor || "#777";
 | |
|     this.archEdgeArrowColor = this.archEdgeArrowColor || "#777";
 | |
|     this.archEdgeWidth = this.archEdgeWidth || "3";
 | |
|     this.archGroupBorderColor = this.archGroupBorderColor || "#000";
 | |
|     this.archGroupBorderWidth = this.archGroupBorderWidth || "2px";
 | |
|     this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
 | |
|     this.quadrant2Fill = this.quadrant2Fill || adjust_default(this.primaryColor, { r: 5, g: 5, b: 5 });
 | |
|     this.quadrant3Fill = this.quadrant3Fill || adjust_default(this.primaryColor, { r: 10, g: 10, b: 10 });
 | |
|     this.quadrant4Fill = this.quadrant4Fill || adjust_default(this.primaryColor, { r: 15, g: 15, b: 15 });
 | |
|     this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;
 | |
|     this.quadrant2TextFill = this.quadrant2TextFill || adjust_default(this.primaryTextColor, { r: -5, g: -5, b: -5 });
 | |
|     this.quadrant3TextFill = this.quadrant3TextFill || adjust_default(this.primaryTextColor, { r: -10, g: -10, b: -10 });
 | |
|     this.quadrant4TextFill = this.quadrant4TextFill || adjust_default(this.primaryTextColor, { r: -15, g: -15, b: -15 });
 | |
|     this.quadrantPointFill = this.quadrantPointFill || is_dark_default(this.quadrant1Fill) ? lighten_default(this.quadrant1Fill) : darken_default(this.quadrant1Fill);
 | |
|     this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
 | |
|     this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;
 | |
|     this.xyChart = {
 | |
|       backgroundColor: this.xyChart?.backgroundColor || this.background,
 | |
|       titleColor: this.xyChart?.titleColor || this.primaryTextColor,
 | |
|       xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
 | |
|       xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
 | |
|       xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
 | |
|       xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
 | |
|       yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
 | |
|       yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
 | |
|       yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
 | |
|       yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
 | |
|       plotColorPalette: this.xyChart?.plotColorPalette || "#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"
 | |
|     };
 | |
|     this.requirementBackground = this.requirementBackground || this.primaryColor;
 | |
|     this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;
 | |
|     this.requirementBorderSize = this.requirementBorderSize || "1";
 | |
|     this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;
 | |
|     this.relationColor = this.relationColor || this.lineColor;
 | |
|     this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken_default(this.secondaryColor, 30) : this.secondaryColor);
 | |
|     this.relationLabelColor = this.relationLabelColor || this.actorTextColor;
 | |
|     this.git0 = this.git0 || this.primaryColor;
 | |
|     this.git1 = this.git1 || this.secondaryColor;
 | |
|     this.git2 = this.git2 || this.tertiaryColor;
 | |
|     this.git3 = this.git3 || adjust_default(this.primaryColor, { h: -30 });
 | |
|     this.git4 = this.git4 || adjust_default(this.primaryColor, { h: -60 });
 | |
|     this.git5 = this.git5 || adjust_default(this.primaryColor, { h: -90 });
 | |
|     this.git6 = this.git6 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.git7 = this.git7 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     if (this.darkMode) {
 | |
|       this.git0 = lighten_default(this.git0, 25);
 | |
|       this.git1 = lighten_default(this.git1, 25);
 | |
|       this.git2 = lighten_default(this.git2, 25);
 | |
|       this.git3 = lighten_default(this.git3, 25);
 | |
|       this.git4 = lighten_default(this.git4, 25);
 | |
|       this.git5 = lighten_default(this.git5, 25);
 | |
|       this.git6 = lighten_default(this.git6, 25);
 | |
|       this.git7 = lighten_default(this.git7, 25);
 | |
|     } else {
 | |
|       this.git0 = darken_default(this.git0, 25);
 | |
|       this.git1 = darken_default(this.git1, 25);
 | |
|       this.git2 = darken_default(this.git2, 25);
 | |
|       this.git3 = darken_default(this.git3, 25);
 | |
|       this.git4 = darken_default(this.git4, 25);
 | |
|       this.git5 = darken_default(this.git5, 25);
 | |
|       this.git6 = darken_default(this.git6, 25);
 | |
|       this.git7 = darken_default(this.git7, 25);
 | |
|     }
 | |
|     this.gitInv0 = this.gitInv0 || invert_default(this.git0);
 | |
|     this.gitInv1 = this.gitInv1 || invert_default(this.git1);
 | |
|     this.gitInv2 = this.gitInv2 || invert_default(this.git2);
 | |
|     this.gitInv3 = this.gitInv3 || invert_default(this.git3);
 | |
|     this.gitInv4 = this.gitInv4 || invert_default(this.git4);
 | |
|     this.gitInv5 = this.gitInv5 || invert_default(this.git5);
 | |
|     this.gitInv6 = this.gitInv6 || invert_default(this.git6);
 | |
|     this.gitInv7 = this.gitInv7 || invert_default(this.git7);
 | |
|     this.branchLabelColor = this.branchLabelColor || (this.darkMode ? "black" : this.labelTextColor);
 | |
|     this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;
 | |
|     this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;
 | |
|     this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;
 | |
|     this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;
 | |
|     this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;
 | |
|     this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;
 | |
|     this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;
 | |
|     this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;
 | |
|     this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;
 | |
|     this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;
 | |
|     this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;
 | |
|     this.tagLabelFontSize = this.tagLabelFontSize || "10px";
 | |
|     this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;
 | |
|     this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;
 | |
|     this.commitLabelFontSize = this.commitLabelFontSize || "10px";
 | |
|     this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;
 | |
|     this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;
 | |
|   }
 | |
|   calculate(overrides) {
 | |
|     if (typeof overrides !== "object") {
 | |
|       this.updateColors();
 | |
|       return;
 | |
|     }
 | |
|     const keys = Object.keys(overrides);
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|     this.updateColors();
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|   }
 | |
| };
 | |
| var getThemeVariables = /* @__PURE__ */ __name((userOverrides) => {
 | |
|   const theme = new Theme();
 | |
|   theme.calculate(userOverrides);
 | |
|   return theme;
 | |
| }, "getThemeVariables");
 | |
| 
 | |
| // src/themes/theme-dark.js
 | |
| var Theme2 = class {
 | |
|   static {
 | |
|     __name(this, "Theme");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.background = "#333";
 | |
|     this.primaryColor = "#1f2020";
 | |
|     this.secondaryColor = lighten_default(this.primaryColor, 16);
 | |
|     this.tertiaryColor = adjust_default(this.primaryColor, { h: -160 });
 | |
|     this.primaryBorderColor = invert_default(this.background);
 | |
|     this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);
 | |
|     this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);
 | |
|     this.primaryTextColor = invert_default(this.primaryColor);
 | |
|     this.secondaryTextColor = invert_default(this.secondaryColor);
 | |
|     this.tertiaryTextColor = invert_default(this.tertiaryColor);
 | |
|     this.lineColor = invert_default(this.background);
 | |
|     this.textColor = invert_default(this.background);
 | |
|     this.mainBkg = "#1f2020";
 | |
|     this.secondBkg = "calculated";
 | |
|     this.mainContrastColor = "lightgrey";
 | |
|     this.darkTextColor = lighten_default(invert_default("#323D47"), 10);
 | |
|     this.lineColor = "calculated";
 | |
|     this.border1 = "#ccc";
 | |
|     this.border2 = rgba_default(255, 255, 255, 0.25);
 | |
|     this.arrowheadColor = "calculated";
 | |
|     this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif';
 | |
|     this.fontSize = "16px";
 | |
|     this.labelBackground = "#181818";
 | |
|     this.textColor = "#ccc";
 | |
|     this.THEME_COLOR_LIMIT = 12;
 | |
|     this.nodeBkg = "calculated";
 | |
|     this.nodeBorder = "calculated";
 | |
|     this.clusterBkg = "calculated";
 | |
|     this.clusterBorder = "calculated";
 | |
|     this.defaultLinkColor = "calculated";
 | |
|     this.titleColor = "#F9FFFE";
 | |
|     this.edgeLabelBackground = "calculated";
 | |
|     this.actorBorder = "calculated";
 | |
|     this.actorBkg = "calculated";
 | |
|     this.actorTextColor = "calculated";
 | |
|     this.actorLineColor = "calculated";
 | |
|     this.signalColor = "calculated";
 | |
|     this.signalTextColor = "calculated";
 | |
|     this.labelBoxBkgColor = "calculated";
 | |
|     this.labelBoxBorderColor = "calculated";
 | |
|     this.labelTextColor = "calculated";
 | |
|     this.loopTextColor = "calculated";
 | |
|     this.noteBorderColor = "calculated";
 | |
|     this.noteBkgColor = "#fff5ad";
 | |
|     this.noteTextColor = "calculated";
 | |
|     this.activationBorderColor = "calculated";
 | |
|     this.activationBkgColor = "calculated";
 | |
|     this.sequenceNumberColor = "black";
 | |
|     this.sectionBkgColor = darken_default("#EAE8D9", 30);
 | |
|     this.altSectionBkgColor = "calculated";
 | |
|     this.sectionBkgColor2 = "#EAE8D9";
 | |
|     this.excludeBkgColor = darken_default(this.sectionBkgColor, 10);
 | |
|     this.taskBorderColor = rgba_default(255, 255, 255, 70);
 | |
|     this.taskBkgColor = "calculated";
 | |
|     this.taskTextColor = "calculated";
 | |
|     this.taskTextLightColor = "calculated";
 | |
|     this.taskTextOutsideColor = "calculated";
 | |
|     this.taskTextClickableColor = "#003163";
 | |
|     this.activeTaskBorderColor = rgba_default(255, 255, 255, 50);
 | |
|     this.activeTaskBkgColor = "#81B1DB";
 | |
|     this.gridColor = "calculated";
 | |
|     this.doneTaskBkgColor = "calculated";
 | |
|     this.doneTaskBorderColor = "grey";
 | |
|     this.critBorderColor = "#E83737";
 | |
|     this.critBkgColor = "#E83737";
 | |
|     this.taskTextDarkColor = "calculated";
 | |
|     this.todayLineColor = "#DB5757";
 | |
|     this.vertLineColor = "#00BFFF";
 | |
|     this.personBorder = this.primaryBorderColor;
 | |
|     this.personBkg = this.mainBkg;
 | |
|     this.archEdgeColor = "calculated";
 | |
|     this.archEdgeArrowColor = "calculated";
 | |
|     this.archEdgeWidth = "3";
 | |
|     this.archGroupBorderColor = this.primaryBorderColor;
 | |
|     this.archGroupBorderWidth = "2px";
 | |
|     this.rowOdd = this.rowOdd || lighten_default(this.mainBkg, 5) || "#ffffff";
 | |
|     this.rowEven = this.rowEven || darken_default(this.mainBkg, 10);
 | |
|     this.labelColor = "calculated";
 | |
|     this.errorBkgColor = "#a44141";
 | |
|     this.errorTextColor = "#ddd";
 | |
|   }
 | |
|   updateColors() {
 | |
|     this.secondBkg = lighten_default(this.mainBkg, 16);
 | |
|     this.lineColor = this.mainContrastColor;
 | |
|     this.arrowheadColor = this.mainContrastColor;
 | |
|     this.nodeBkg = this.mainBkg;
 | |
|     this.nodeBorder = this.border1;
 | |
|     this.clusterBkg = this.secondBkg;
 | |
|     this.clusterBorder = this.border2;
 | |
|     this.defaultLinkColor = this.lineColor;
 | |
|     this.edgeLabelBackground = lighten_default(this.labelBackground, 25);
 | |
|     this.actorBorder = this.border1;
 | |
|     this.actorBkg = this.mainBkg;
 | |
|     this.actorTextColor = this.mainContrastColor;
 | |
|     this.actorLineColor = this.actorBorder;
 | |
|     this.signalColor = this.mainContrastColor;
 | |
|     this.signalTextColor = this.mainContrastColor;
 | |
|     this.labelBoxBkgColor = this.actorBkg;
 | |
|     this.labelBoxBorderColor = this.actorBorder;
 | |
|     this.labelTextColor = this.mainContrastColor;
 | |
|     this.loopTextColor = this.mainContrastColor;
 | |
|     this.noteBorderColor = this.secondaryBorderColor;
 | |
|     this.noteBkgColor = this.secondBkg;
 | |
|     this.noteTextColor = this.secondaryTextColor;
 | |
|     this.activationBorderColor = this.border1;
 | |
|     this.activationBkgColor = this.secondBkg;
 | |
|     this.altSectionBkgColor = this.background;
 | |
|     this.taskBkgColor = lighten_default(this.mainBkg, 23);
 | |
|     this.taskTextColor = this.darkTextColor;
 | |
|     this.taskTextLightColor = this.mainContrastColor;
 | |
|     this.taskTextOutsideColor = this.taskTextLightColor;
 | |
|     this.gridColor = this.mainContrastColor;
 | |
|     this.doneTaskBkgColor = this.mainContrastColor;
 | |
|     this.taskTextDarkColor = this.darkTextColor;
 | |
|     this.archEdgeColor = this.lineColor;
 | |
|     this.archEdgeArrowColor = this.lineColor;
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.transitionLabelColor = this.transitionLabelColor || this.textColor;
 | |
|     this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;
 | |
|     this.stateBkg = this.stateBkg || this.mainBkg;
 | |
|     this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;
 | |
|     this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;
 | |
|     this.altBackground = this.altBackground || "#555";
 | |
|     this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;
 | |
|     this.compositeBorder = this.compositeBorder || this.nodeBorder;
 | |
|     this.innerEndBackground = this.primaryBorderColor;
 | |
|     this.specialStateColor = "#f4f4f4";
 | |
|     this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
 | |
|     this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
 | |
|     this.fillType0 = this.primaryColor;
 | |
|     this.fillType1 = this.secondaryColor;
 | |
|     this.fillType2 = adjust_default(this.primaryColor, { h: 64 });
 | |
|     this.fillType3 = adjust_default(this.secondaryColor, { h: 64 });
 | |
|     this.fillType4 = adjust_default(this.primaryColor, { h: -64 });
 | |
|     this.fillType5 = adjust_default(this.secondaryColor, { h: -64 });
 | |
|     this.fillType6 = adjust_default(this.primaryColor, { h: 128 });
 | |
|     this.fillType7 = adjust_default(this.secondaryColor, { h: 128 });
 | |
|     this.cScale1 = this.cScale1 || "#0b0000";
 | |
|     this.cScale2 = this.cScale2 || "#4d1037";
 | |
|     this.cScale3 = this.cScale3 || "#3f5258";
 | |
|     this.cScale4 = this.cScale4 || "#4f2f1b";
 | |
|     this.cScale5 = this.cScale5 || "#6e0a0a";
 | |
|     this.cScale6 = this.cScale6 || "#3b0048";
 | |
|     this.cScale7 = this.cScale7 || "#995a01";
 | |
|     this.cScale8 = this.cScale8 || "#154706";
 | |
|     this.cScale9 = this.cScale9 || "#161722";
 | |
|     this.cScale10 = this.cScale10 || "#00296f";
 | |
|     this.cScale11 = this.cScale11 || "#01629c";
 | |
|     this.cScale12 = this.cScale12 || "#010029";
 | |
|     this.cScale0 = this.cScale0 || this.primaryColor;
 | |
|     this.cScale1 = this.cScale1 || this.secondaryColor;
 | |
|     this.cScale2 = this.cScale2 || this.tertiaryColor;
 | |
|     this.cScale3 = this.cScale3 || adjust_default(this.primaryColor, { h: 30 });
 | |
|     this.cScale4 = this.cScale4 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.cScale5 = this.cScale5 || adjust_default(this.primaryColor, { h: 90 });
 | |
|     this.cScale6 = this.cScale6 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.cScale7 = this.cScale7 || adjust_default(this.primaryColor, { h: 150 });
 | |
|     this.cScale8 = this.cScale8 || adjust_default(this.primaryColor, { h: 210 });
 | |
|     this.cScale9 = this.cScale9 || adjust_default(this.primaryColor, { h: 270 });
 | |
|     this.cScale10 = this.cScale10 || adjust_default(this.primaryColor, { h: 300 });
 | |
|     this.cScale11 = this.cScale11 || adjust_default(this.primaryColor, { h: 330 });
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleInv" + i] = this["cScaleInv" + i] || invert_default(this["cScale" + i]);
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScalePeer" + i] = this["cScalePeer" + i] || lighten_default(this["cScale" + i], 10);
 | |
|     }
 | |
|     for (let i = 0; i < 5; i++) {
 | |
|       this["surface" + i] = this["surface" + i] || adjust_default(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });
 | |
|       this["surfacePeer" + i] = this["surfacePeer" + i] || adjust_default(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });
 | |
|     }
 | |
|     this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor);
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleLabel" + i] = this["cScaleLabel" + i] || this.scaleLabelColor;
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["pie" + i] = this["cScale" + i];
 | |
|     }
 | |
|     this.pieTitleTextSize = this.pieTitleTextSize || "25px";
 | |
|     this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
 | |
|     this.pieSectionTextSize = this.pieSectionTextSize || "17px";
 | |
|     this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
 | |
|     this.pieLegendTextSize = this.pieLegendTextSize || "17px";
 | |
|     this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
 | |
|     this.pieStrokeColor = this.pieStrokeColor || "black";
 | |
|     this.pieStrokeWidth = this.pieStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
 | |
|     this.pieOpacity = this.pieOpacity || "0.7";
 | |
|     this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
 | |
|     this.quadrant2Fill = this.quadrant2Fill || adjust_default(this.primaryColor, { r: 5, g: 5, b: 5 });
 | |
|     this.quadrant3Fill = this.quadrant3Fill || adjust_default(this.primaryColor, { r: 10, g: 10, b: 10 });
 | |
|     this.quadrant4Fill = this.quadrant4Fill || adjust_default(this.primaryColor, { r: 15, g: 15, b: 15 });
 | |
|     this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;
 | |
|     this.quadrant2TextFill = this.quadrant2TextFill || adjust_default(this.primaryTextColor, { r: -5, g: -5, b: -5 });
 | |
|     this.quadrant3TextFill = this.quadrant3TextFill || adjust_default(this.primaryTextColor, { r: -10, g: -10, b: -10 });
 | |
|     this.quadrant4TextFill = this.quadrant4TextFill || adjust_default(this.primaryTextColor, { r: -15, g: -15, b: -15 });
 | |
|     this.quadrantPointFill = this.quadrantPointFill || is_dark_default(this.quadrant1Fill) ? lighten_default(this.quadrant1Fill) : darken_default(this.quadrant1Fill);
 | |
|     this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
 | |
|     this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;
 | |
|     this.xyChart = {
 | |
|       backgroundColor: this.xyChart?.backgroundColor || this.background,
 | |
|       titleColor: this.xyChart?.titleColor || this.primaryTextColor,
 | |
|       xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
 | |
|       xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
 | |
|       xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
 | |
|       xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
 | |
|       yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
 | |
|       yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
 | |
|       yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
 | |
|       yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
 | |
|       plotColorPalette: this.xyChart?.plotColorPalette || "#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22"
 | |
|     };
 | |
|     this.packet = {
 | |
|       startByteColor: this.primaryTextColor,
 | |
|       endByteColor: this.primaryTextColor,
 | |
|       labelColor: this.primaryTextColor,
 | |
|       titleColor: this.primaryTextColor,
 | |
|       blockStrokeColor: this.primaryTextColor,
 | |
|       blockFillColor: this.background
 | |
|     };
 | |
|     this.radar = {
 | |
|       axisColor: this.radar?.axisColor || this.lineColor,
 | |
|       axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
 | |
|       axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
 | |
|       curveOpacity: this.radar?.curveOpacity || 0.5,
 | |
|       curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
 | |
|       graticuleColor: this.radar?.graticuleColor || "#DEDEDE",
 | |
|       graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
 | |
|       graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
 | |
|       legendBoxSize: this.radar?.legendBoxSize || 12,
 | |
|       legendFontSize: this.radar?.legendFontSize || 12
 | |
|     };
 | |
|     this.classText = this.primaryTextColor;
 | |
|     this.requirementBackground = this.requirementBackground || this.primaryColor;
 | |
|     this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;
 | |
|     this.requirementBorderSize = this.requirementBorderSize || "1";
 | |
|     this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;
 | |
|     this.relationColor = this.relationColor || this.lineColor;
 | |
|     this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken_default(this.secondaryColor, 30) : this.secondaryColor);
 | |
|     this.relationLabelColor = this.relationLabelColor || this.actorTextColor;
 | |
|     this.git0 = lighten_default(this.secondaryColor, 20);
 | |
|     this.git1 = lighten_default(this.pie2 || this.secondaryColor, 20);
 | |
|     this.git2 = lighten_default(this.pie3 || this.tertiaryColor, 20);
 | |
|     this.git3 = lighten_default(this.pie4 || adjust_default(this.primaryColor, { h: -30 }), 20);
 | |
|     this.git4 = lighten_default(this.pie5 || adjust_default(this.primaryColor, { h: -60 }), 20);
 | |
|     this.git5 = lighten_default(this.pie6 || adjust_default(this.primaryColor, { h: -90 }), 10);
 | |
|     this.git6 = lighten_default(this.pie7 || adjust_default(this.primaryColor, { h: 60 }), 10);
 | |
|     this.git7 = lighten_default(this.pie8 || adjust_default(this.primaryColor, { h: 120 }), 20);
 | |
|     this.gitInv0 = this.gitInv0 || invert_default(this.git0);
 | |
|     this.gitInv1 = this.gitInv1 || invert_default(this.git1);
 | |
|     this.gitInv2 = this.gitInv2 || invert_default(this.git2);
 | |
|     this.gitInv3 = this.gitInv3 || invert_default(this.git3);
 | |
|     this.gitInv4 = this.gitInv4 || invert_default(this.git4);
 | |
|     this.gitInv5 = this.gitInv5 || invert_default(this.git5);
 | |
|     this.gitInv6 = this.gitInv6 || invert_default(this.git6);
 | |
|     this.gitInv7 = this.gitInv7 || invert_default(this.git7);
 | |
|     this.gitBranchLabel0 = this.gitBranchLabel0 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;
 | |
|     this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;
 | |
|     this.gitBranchLabel3 = this.gitBranchLabel3 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;
 | |
|     this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;
 | |
|     this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;
 | |
|     this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;
 | |
|     this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;
 | |
|     this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;
 | |
|     this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;
 | |
|     this.tagLabelFontSize = this.tagLabelFontSize || "10px";
 | |
|     this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;
 | |
|     this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;
 | |
|     this.commitLabelFontSize = this.commitLabelFontSize || "10px";
 | |
|     this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten_default(this.background, 12);
 | |
|     this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten_default(this.background, 2);
 | |
|     this.nodeBorder = this.nodeBorder || "#999";
 | |
|   }
 | |
|   calculate(overrides) {
 | |
|     if (typeof overrides !== "object") {
 | |
|       this.updateColors();
 | |
|       return;
 | |
|     }
 | |
|     const keys = Object.keys(overrides);
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|     this.updateColors();
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|   }
 | |
| };
 | |
| var getThemeVariables2 = /* @__PURE__ */ __name((userOverrides) => {
 | |
|   const theme = new Theme2();
 | |
|   theme.calculate(userOverrides);
 | |
|   return theme;
 | |
| }, "getThemeVariables");
 | |
| 
 | |
| // src/themes/theme-default.js
 | |
| var Theme3 = class {
 | |
|   static {
 | |
|     __name(this, "Theme");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.background = "#f4f4f4";
 | |
|     this.primaryColor = "#ECECFF";
 | |
|     this.secondaryColor = adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.secondaryColor = "#ffffde";
 | |
|     this.tertiaryColor = adjust_default(this.primaryColor, { h: -160 });
 | |
|     this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);
 | |
|     this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);
 | |
|     this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);
 | |
|     this.primaryTextColor = invert_default(this.primaryColor);
 | |
|     this.secondaryTextColor = invert_default(this.secondaryColor);
 | |
|     this.tertiaryTextColor = invert_default(this.tertiaryColor);
 | |
|     this.lineColor = invert_default(this.background);
 | |
|     this.textColor = invert_default(this.background);
 | |
|     this.background = "white";
 | |
|     this.mainBkg = "#ECECFF";
 | |
|     this.secondBkg = "#ffffde";
 | |
|     this.lineColor = "#333333";
 | |
|     this.border1 = "#9370DB";
 | |
|     this.border2 = "#aaaa33";
 | |
|     this.arrowheadColor = "#333333";
 | |
|     this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif';
 | |
|     this.fontSize = "16px";
 | |
|     this.labelBackground = "rgba(232,232,232, 0.8)";
 | |
|     this.textColor = "#333";
 | |
|     this.THEME_COLOR_LIMIT = 12;
 | |
|     this.nodeBkg = "calculated";
 | |
|     this.nodeBorder = "calculated";
 | |
|     this.clusterBkg = "calculated";
 | |
|     this.clusterBorder = "calculated";
 | |
|     this.defaultLinkColor = "calculated";
 | |
|     this.titleColor = "calculated";
 | |
|     this.edgeLabelBackground = "calculated";
 | |
|     this.actorBorder = "calculated";
 | |
|     this.actorBkg = "calculated";
 | |
|     this.actorTextColor = "black";
 | |
|     this.actorLineColor = "calculated";
 | |
|     this.signalColor = "calculated";
 | |
|     this.signalTextColor = "calculated";
 | |
|     this.labelBoxBkgColor = "calculated";
 | |
|     this.labelBoxBorderColor = "calculated";
 | |
|     this.labelTextColor = "calculated";
 | |
|     this.loopTextColor = "calculated";
 | |
|     this.noteBorderColor = "calculated";
 | |
|     this.noteBkgColor = "#fff5ad";
 | |
|     this.noteTextColor = "calculated";
 | |
|     this.activationBorderColor = "#666";
 | |
|     this.activationBkgColor = "#f4f4f4";
 | |
|     this.sequenceNumberColor = "white";
 | |
|     this.sectionBkgColor = "calculated";
 | |
|     this.altSectionBkgColor = "calculated";
 | |
|     this.sectionBkgColor2 = "calculated";
 | |
|     this.excludeBkgColor = "#eeeeee";
 | |
|     this.taskBorderColor = "calculated";
 | |
|     this.taskBkgColor = "calculated";
 | |
|     this.taskTextLightColor = "calculated";
 | |
|     this.taskTextColor = this.taskTextLightColor;
 | |
|     this.taskTextDarkColor = "calculated";
 | |
|     this.taskTextOutsideColor = this.taskTextDarkColor;
 | |
|     this.taskTextClickableColor = "calculated";
 | |
|     this.activeTaskBorderColor = "calculated";
 | |
|     this.activeTaskBkgColor = "calculated";
 | |
|     this.gridColor = "calculated";
 | |
|     this.doneTaskBkgColor = "calculated";
 | |
|     this.doneTaskBorderColor = "calculated";
 | |
|     this.critBorderColor = "calculated";
 | |
|     this.critBkgColor = "calculated";
 | |
|     this.todayLineColor = "calculated";
 | |
|     this.vertLineColor = "calculated";
 | |
|     this.sectionBkgColor = rgba_default(102, 102, 255, 0.49);
 | |
|     this.altSectionBkgColor = "white";
 | |
|     this.sectionBkgColor2 = "#fff400";
 | |
|     this.taskBorderColor = "#534fbc";
 | |
|     this.taskBkgColor = "#8a90dd";
 | |
|     this.taskTextLightColor = "white";
 | |
|     this.taskTextColor = "calculated";
 | |
|     this.taskTextDarkColor = "black";
 | |
|     this.taskTextOutsideColor = "calculated";
 | |
|     this.taskTextClickableColor = "#003163";
 | |
|     this.activeTaskBorderColor = "#534fbc";
 | |
|     this.activeTaskBkgColor = "#bfc7ff";
 | |
|     this.gridColor = "lightgrey";
 | |
|     this.doneTaskBkgColor = "lightgrey";
 | |
|     this.doneTaskBorderColor = "grey";
 | |
|     this.critBorderColor = "#ff8888";
 | |
|     this.critBkgColor = "red";
 | |
|     this.todayLineColor = "red";
 | |
|     this.vertLineColor = "navy";
 | |
|     this.personBorder = this.primaryBorderColor;
 | |
|     this.personBkg = this.mainBkg;
 | |
|     this.archEdgeColor = "calculated";
 | |
|     this.archEdgeArrowColor = "calculated";
 | |
|     this.archEdgeWidth = "3";
 | |
|     this.archGroupBorderColor = this.primaryBorderColor;
 | |
|     this.archGroupBorderWidth = "2px";
 | |
|     this.rowOdd = "calculated";
 | |
|     this.rowEven = "calculated";
 | |
|     this.labelColor = "black";
 | |
|     this.errorBkgColor = "#552222";
 | |
|     this.errorTextColor = "#552222";
 | |
|     this.updateColors();
 | |
|   }
 | |
|   updateColors() {
 | |
|     this.cScale0 = this.cScale0 || this.primaryColor;
 | |
|     this.cScale1 = this.cScale1 || this.secondaryColor;
 | |
|     this.cScale2 = this.cScale2 || this.tertiaryColor;
 | |
|     this.cScale3 = this.cScale3 || adjust_default(this.primaryColor, { h: 30 });
 | |
|     this.cScale4 = this.cScale4 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.cScale5 = this.cScale5 || adjust_default(this.primaryColor, { h: 90 });
 | |
|     this.cScale6 = this.cScale6 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.cScale7 = this.cScale7 || adjust_default(this.primaryColor, { h: 150 });
 | |
|     this.cScale8 = this.cScale8 || adjust_default(this.primaryColor, { h: 210 });
 | |
|     this.cScale9 = this.cScale9 || adjust_default(this.primaryColor, { h: 270 });
 | |
|     this.cScale10 = this.cScale10 || adjust_default(this.primaryColor, { h: 300 });
 | |
|     this.cScale11 = this.cScale11 || adjust_default(this.primaryColor, { h: 330 });
 | |
|     this["cScalePeer1"] = this["cScalePeer1"] || darken_default(this.secondaryColor, 45);
 | |
|     this["cScalePeer2"] = this["cScalePeer2"] || darken_default(this.tertiaryColor, 40);
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScale" + i] = darken_default(this["cScale" + i], 10);
 | |
|       this["cScalePeer" + i] = this["cScalePeer" + i] || darken_default(this["cScale" + i], 25);
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleInv" + i] = this["cScaleInv" + i] || adjust_default(this["cScale" + i], { h: 180 });
 | |
|     }
 | |
|     for (let i = 0; i < 5; i++) {
 | |
|       this["surface" + i] = this["surface" + i] || adjust_default(this.mainBkg, { h: 30, l: -(5 + i * 5) });
 | |
|       this["surfacePeer" + i] = this["surfacePeer" + i] || adjust_default(this.mainBkg, { h: 30, l: -(7 + i * 5) });
 | |
|     }
 | |
|     this.scaleLabelColor = this.scaleLabelColor !== "calculated" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;
 | |
|     if (this.labelTextColor !== "calculated") {
 | |
|       this.cScaleLabel0 = this.cScaleLabel0 || invert_default(this.labelTextColor);
 | |
|       this.cScaleLabel3 = this.cScaleLabel3 || invert_default(this.labelTextColor);
 | |
|       for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|         this["cScaleLabel" + i] = this["cScaleLabel" + i] || this.labelTextColor;
 | |
|       }
 | |
|     }
 | |
|     this.nodeBkg = this.mainBkg;
 | |
|     this.nodeBorder = this.border1;
 | |
|     this.clusterBkg = this.secondBkg;
 | |
|     this.clusterBorder = this.border2;
 | |
|     this.defaultLinkColor = this.lineColor;
 | |
|     this.titleColor = this.textColor;
 | |
|     this.edgeLabelBackground = this.labelBackground;
 | |
|     this.actorBorder = lighten_default(this.border1, 23);
 | |
|     this.actorBkg = this.mainBkg;
 | |
|     this.labelBoxBkgColor = this.actorBkg;
 | |
|     this.signalColor = this.textColor;
 | |
|     this.signalTextColor = this.textColor;
 | |
|     this.labelBoxBorderColor = this.actorBorder;
 | |
|     this.labelTextColor = this.actorTextColor;
 | |
|     this.loopTextColor = this.actorTextColor;
 | |
|     this.noteBorderColor = this.border2;
 | |
|     this.noteTextColor = this.actorTextColor;
 | |
|     this.actorLineColor = this.actorBorder;
 | |
|     this.taskTextColor = this.taskTextLightColor;
 | |
|     this.taskTextOutsideColor = this.taskTextDarkColor;
 | |
|     this.archEdgeColor = this.lineColor;
 | |
|     this.archEdgeArrowColor = this.lineColor;
 | |
|     this.rowOdd = this.rowOdd || lighten_default(this.primaryColor, 75) || "#ffffff";
 | |
|     this.rowEven = this.rowEven || lighten_default(this.primaryColor, 1);
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.transitionLabelColor = this.transitionLabelColor || this.textColor;
 | |
|     this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;
 | |
|     this.stateBkg = this.stateBkg || this.mainBkg;
 | |
|     this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;
 | |
|     this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;
 | |
|     this.altBackground = this.altBackground || "#f0f0f0";
 | |
|     this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;
 | |
|     this.compositeBorder = this.compositeBorder || this.nodeBorder;
 | |
|     this.innerEndBackground = this.nodeBorder;
 | |
|     this.specialStateColor = this.lineColor;
 | |
|     this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
 | |
|     this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.classText = this.primaryTextColor;
 | |
|     this.fillType0 = this.primaryColor;
 | |
|     this.fillType1 = this.secondaryColor;
 | |
|     this.fillType2 = adjust_default(this.primaryColor, { h: 64 });
 | |
|     this.fillType3 = adjust_default(this.secondaryColor, { h: 64 });
 | |
|     this.fillType4 = adjust_default(this.primaryColor, { h: -64 });
 | |
|     this.fillType5 = adjust_default(this.secondaryColor, { h: -64 });
 | |
|     this.fillType6 = adjust_default(this.primaryColor, { h: 128 });
 | |
|     this.fillType7 = adjust_default(this.secondaryColor, { h: 128 });
 | |
|     this.pie1 = this.pie1 || this.primaryColor;
 | |
|     this.pie2 = this.pie2 || this.secondaryColor;
 | |
|     this.pie3 = this.pie3 || adjust_default(this.tertiaryColor, { l: -40 });
 | |
|     this.pie4 = this.pie4 || adjust_default(this.primaryColor, { l: -10 });
 | |
|     this.pie5 = this.pie5 || adjust_default(this.secondaryColor, { l: -30 });
 | |
|     this.pie6 = this.pie6 || adjust_default(this.tertiaryColor, { l: -20 });
 | |
|     this.pie7 = this.pie7 || adjust_default(this.primaryColor, { h: 60, l: -20 });
 | |
|     this.pie8 = this.pie8 || adjust_default(this.primaryColor, { h: -60, l: -40 });
 | |
|     this.pie9 = this.pie9 || adjust_default(this.primaryColor, { h: 120, l: -40 });
 | |
|     this.pie10 = this.pie10 || adjust_default(this.primaryColor, { h: 60, l: -40 });
 | |
|     this.pie11 = this.pie11 || adjust_default(this.primaryColor, { h: -90, l: -40 });
 | |
|     this.pie12 = this.pie12 || adjust_default(this.primaryColor, { h: 120, l: -30 });
 | |
|     this.pieTitleTextSize = this.pieTitleTextSize || "25px";
 | |
|     this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
 | |
|     this.pieSectionTextSize = this.pieSectionTextSize || "17px";
 | |
|     this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
 | |
|     this.pieLegendTextSize = this.pieLegendTextSize || "17px";
 | |
|     this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
 | |
|     this.pieStrokeColor = this.pieStrokeColor || "black";
 | |
|     this.pieStrokeWidth = this.pieStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
 | |
|     this.pieOpacity = this.pieOpacity || "0.7";
 | |
|     this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
 | |
|     this.quadrant2Fill = this.quadrant2Fill || adjust_default(this.primaryColor, { r: 5, g: 5, b: 5 });
 | |
|     this.quadrant3Fill = this.quadrant3Fill || adjust_default(this.primaryColor, { r: 10, g: 10, b: 10 });
 | |
|     this.quadrant4Fill = this.quadrant4Fill || adjust_default(this.primaryColor, { r: 15, g: 15, b: 15 });
 | |
|     this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;
 | |
|     this.quadrant2TextFill = this.quadrant2TextFill || adjust_default(this.primaryTextColor, { r: -5, g: -5, b: -5 });
 | |
|     this.quadrant3TextFill = this.quadrant3TextFill || adjust_default(this.primaryTextColor, { r: -10, g: -10, b: -10 });
 | |
|     this.quadrant4TextFill = this.quadrant4TextFill || adjust_default(this.primaryTextColor, { r: -15, g: -15, b: -15 });
 | |
|     this.quadrantPointFill = this.quadrantPointFill || is_dark_default(this.quadrant1Fill) ? lighten_default(this.quadrant1Fill) : darken_default(this.quadrant1Fill);
 | |
|     this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
 | |
|     this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;
 | |
|     this.radar = {
 | |
|       axisColor: this.radar?.axisColor || this.lineColor,
 | |
|       axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
 | |
|       axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
 | |
|       curveOpacity: this.radar?.curveOpacity || 0.5,
 | |
|       curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
 | |
|       graticuleColor: this.radar?.graticuleColor || "#DEDEDE",
 | |
|       graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
 | |
|       graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
 | |
|       legendBoxSize: this.radar?.legendBoxSize || 12,
 | |
|       legendFontSize: this.radar?.legendFontSize || 12
 | |
|     };
 | |
|     this.xyChart = {
 | |
|       backgroundColor: this.xyChart?.backgroundColor || this.background,
 | |
|       titleColor: this.xyChart?.titleColor || this.primaryTextColor,
 | |
|       xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
 | |
|       xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
 | |
|       xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
 | |
|       xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
 | |
|       yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
 | |
|       yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
 | |
|       yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
 | |
|       yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
 | |
|       plotColorPalette: this.xyChart?.plotColorPalette || "#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3"
 | |
|     };
 | |
|     this.requirementBackground = this.requirementBackground || this.primaryColor;
 | |
|     this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;
 | |
|     this.requirementBorderSize = this.requirementBorderSize || "1";
 | |
|     this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;
 | |
|     this.relationColor = this.relationColor || this.lineColor;
 | |
|     this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;
 | |
|     this.relationLabelColor = this.relationLabelColor || this.actorTextColor;
 | |
|     this.git0 = this.git0 || this.primaryColor;
 | |
|     this.git1 = this.git1 || this.secondaryColor;
 | |
|     this.git2 = this.git2 || this.tertiaryColor;
 | |
|     this.git3 = this.git3 || adjust_default(this.primaryColor, { h: -30 });
 | |
|     this.git4 = this.git4 || adjust_default(this.primaryColor, { h: -60 });
 | |
|     this.git5 = this.git5 || adjust_default(this.primaryColor, { h: -90 });
 | |
|     this.git6 = this.git6 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.git7 = this.git7 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     if (this.darkMode) {
 | |
|       this.git0 = lighten_default(this.git0, 25);
 | |
|       this.git1 = lighten_default(this.git1, 25);
 | |
|       this.git2 = lighten_default(this.git2, 25);
 | |
|       this.git3 = lighten_default(this.git3, 25);
 | |
|       this.git4 = lighten_default(this.git4, 25);
 | |
|       this.git5 = lighten_default(this.git5, 25);
 | |
|       this.git6 = lighten_default(this.git6, 25);
 | |
|       this.git7 = lighten_default(this.git7, 25);
 | |
|     } else {
 | |
|       this.git0 = darken_default(this.git0, 25);
 | |
|       this.git1 = darken_default(this.git1, 25);
 | |
|       this.git2 = darken_default(this.git2, 25);
 | |
|       this.git3 = darken_default(this.git3, 25);
 | |
|       this.git4 = darken_default(this.git4, 25);
 | |
|       this.git5 = darken_default(this.git5, 25);
 | |
|       this.git6 = darken_default(this.git6, 25);
 | |
|       this.git7 = darken_default(this.git7, 25);
 | |
|     }
 | |
|     this.gitInv0 = this.gitInv0 || darken_default(invert_default(this.git0), 25);
 | |
|     this.gitInv1 = this.gitInv1 || invert_default(this.git1);
 | |
|     this.gitInv2 = this.gitInv2 || invert_default(this.git2);
 | |
|     this.gitInv3 = this.gitInv3 || invert_default(this.git3);
 | |
|     this.gitInv4 = this.gitInv4 || invert_default(this.git4);
 | |
|     this.gitInv5 = this.gitInv5 || invert_default(this.git5);
 | |
|     this.gitInv6 = this.gitInv6 || invert_default(this.git6);
 | |
|     this.gitInv7 = this.gitInv7 || invert_default(this.git7);
 | |
|     this.gitBranchLabel0 = this.gitBranchLabel0 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;
 | |
|     this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;
 | |
|     this.gitBranchLabel3 = this.gitBranchLabel3 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;
 | |
|     this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;
 | |
|     this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;
 | |
|     this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;
 | |
|     this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;
 | |
|     this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;
 | |
|     this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;
 | |
|     this.tagLabelFontSize = this.tagLabelFontSize || "10px";
 | |
|     this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;
 | |
|     this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;
 | |
|     this.commitLabelFontSize = this.commitLabelFontSize || "10px";
 | |
|     this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;
 | |
|     this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;
 | |
|   }
 | |
|   calculate(overrides) {
 | |
|     Object.keys(this).forEach((k) => {
 | |
|       if (this[k] === "calculated") {
 | |
|         this[k] = void 0;
 | |
|       }
 | |
|     });
 | |
|     if (typeof overrides !== "object") {
 | |
|       this.updateColors();
 | |
|       return;
 | |
|     }
 | |
|     const keys = Object.keys(overrides);
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|     this.updateColors();
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|   }
 | |
| };
 | |
| var getThemeVariables3 = /* @__PURE__ */ __name((userOverrides) => {
 | |
|   const theme = new Theme3();
 | |
|   theme.calculate(userOverrides);
 | |
|   return theme;
 | |
| }, "getThemeVariables");
 | |
| 
 | |
| // src/themes/theme-forest.js
 | |
| var Theme4 = class {
 | |
|   static {
 | |
|     __name(this, "Theme");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.background = "#f4f4f4";
 | |
|     this.primaryColor = "#cde498";
 | |
|     this.secondaryColor = "#cdffb2";
 | |
|     this.background = "white";
 | |
|     this.mainBkg = "#cde498";
 | |
|     this.secondBkg = "#cdffb2";
 | |
|     this.lineColor = "green";
 | |
|     this.border1 = "#13540c";
 | |
|     this.border2 = "#6eaa49";
 | |
|     this.arrowheadColor = "green";
 | |
|     this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif';
 | |
|     this.fontSize = "16px";
 | |
|     this.tertiaryColor = lighten_default("#cde498", 10);
 | |
|     this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);
 | |
|     this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);
 | |
|     this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);
 | |
|     this.primaryTextColor = invert_default(this.primaryColor);
 | |
|     this.secondaryTextColor = invert_default(this.secondaryColor);
 | |
|     this.tertiaryTextColor = invert_default(this.primaryColor);
 | |
|     this.lineColor = invert_default(this.background);
 | |
|     this.textColor = invert_default(this.background);
 | |
|     this.THEME_COLOR_LIMIT = 12;
 | |
|     this.nodeBkg = "calculated";
 | |
|     this.nodeBorder = "calculated";
 | |
|     this.clusterBkg = "calculated";
 | |
|     this.clusterBorder = "calculated";
 | |
|     this.defaultLinkColor = "calculated";
 | |
|     this.titleColor = "#333";
 | |
|     this.edgeLabelBackground = "#e8e8e8";
 | |
|     this.actorBorder = "calculated";
 | |
|     this.actorBkg = "calculated";
 | |
|     this.actorTextColor = "black";
 | |
|     this.actorLineColor = "calculated";
 | |
|     this.signalColor = "#333";
 | |
|     this.signalTextColor = "#333";
 | |
|     this.labelBoxBkgColor = "calculated";
 | |
|     this.labelBoxBorderColor = "#326932";
 | |
|     this.labelTextColor = "calculated";
 | |
|     this.loopTextColor = "calculated";
 | |
|     this.noteBorderColor = "calculated";
 | |
|     this.noteBkgColor = "#fff5ad";
 | |
|     this.noteTextColor = "calculated";
 | |
|     this.activationBorderColor = "#666";
 | |
|     this.activationBkgColor = "#f4f4f4";
 | |
|     this.sequenceNumberColor = "white";
 | |
|     this.sectionBkgColor = "#6eaa49";
 | |
|     this.altSectionBkgColor = "white";
 | |
|     this.sectionBkgColor2 = "#6eaa49";
 | |
|     this.excludeBkgColor = "#eeeeee";
 | |
|     this.taskBorderColor = "calculated";
 | |
|     this.taskBkgColor = "#487e3a";
 | |
|     this.taskTextLightColor = "white";
 | |
|     this.taskTextColor = "calculated";
 | |
|     this.taskTextDarkColor = "black";
 | |
|     this.taskTextOutsideColor = "calculated";
 | |
|     this.taskTextClickableColor = "#003163";
 | |
|     this.activeTaskBorderColor = "calculated";
 | |
|     this.activeTaskBkgColor = "calculated";
 | |
|     this.gridColor = "lightgrey";
 | |
|     this.doneTaskBkgColor = "lightgrey";
 | |
|     this.doneTaskBorderColor = "grey";
 | |
|     this.critBorderColor = "#ff8888";
 | |
|     this.critBkgColor = "red";
 | |
|     this.todayLineColor = "red";
 | |
|     this.vertLineColor = "#00BFFF";
 | |
|     this.personBorder = this.primaryBorderColor;
 | |
|     this.personBkg = this.mainBkg;
 | |
|     this.archEdgeColor = "calculated";
 | |
|     this.archEdgeArrowColor = "calculated";
 | |
|     this.archEdgeWidth = "3";
 | |
|     this.archGroupBorderColor = this.primaryBorderColor;
 | |
|     this.archGroupBorderWidth = "2px";
 | |
|     this.labelColor = "black";
 | |
|     this.errorBkgColor = "#552222";
 | |
|     this.errorTextColor = "#552222";
 | |
|   }
 | |
|   updateColors() {
 | |
|     this.actorBorder = darken_default(this.mainBkg, 20);
 | |
|     this.actorBkg = this.mainBkg;
 | |
|     this.labelBoxBkgColor = this.actorBkg;
 | |
|     this.labelTextColor = this.actorTextColor;
 | |
|     this.loopTextColor = this.actorTextColor;
 | |
|     this.noteBorderColor = this.border2;
 | |
|     this.noteTextColor = this.actorTextColor;
 | |
|     this.actorLineColor = this.actorBorder;
 | |
|     this.cScale0 = this.cScale0 || this.primaryColor;
 | |
|     this.cScale1 = this.cScale1 || this.secondaryColor;
 | |
|     this.cScale2 = this.cScale2 || this.tertiaryColor;
 | |
|     this.cScale3 = this.cScale3 || adjust_default(this.primaryColor, { h: 30 });
 | |
|     this.cScale4 = this.cScale4 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.cScale5 = this.cScale5 || adjust_default(this.primaryColor, { h: 90 });
 | |
|     this.cScale6 = this.cScale6 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.cScale7 = this.cScale7 || adjust_default(this.primaryColor, { h: 150 });
 | |
|     this.cScale8 = this.cScale8 || adjust_default(this.primaryColor, { h: 210 });
 | |
|     this.cScale9 = this.cScale9 || adjust_default(this.primaryColor, { h: 270 });
 | |
|     this.cScale10 = this.cScale10 || adjust_default(this.primaryColor, { h: 300 });
 | |
|     this.cScale11 = this.cScale11 || adjust_default(this.primaryColor, { h: 330 });
 | |
|     this["cScalePeer1"] = this["cScalePeer1"] || darken_default(this.secondaryColor, 45);
 | |
|     this["cScalePeer2"] = this["cScalePeer2"] || darken_default(this.tertiaryColor, 40);
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScale" + i] = darken_default(this["cScale" + i], 10);
 | |
|       this["cScalePeer" + i] = this["cScalePeer" + i] || darken_default(this["cScale" + i], 25);
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleInv" + i] = this["cScaleInv" + i] || adjust_default(this["cScale" + i], { h: 180 });
 | |
|     }
 | |
|     this.scaleLabelColor = this.scaleLabelColor !== "calculated" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleLabel" + i] = this["cScaleLabel" + i] || this.scaleLabelColor;
 | |
|     }
 | |
|     for (let i = 0; i < 5; i++) {
 | |
|       this["surface" + i] = this["surface" + i] || adjust_default(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });
 | |
|       this["surfacePeer" + i] = this["surfacePeer" + i] || adjust_default(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });
 | |
|     }
 | |
|     this.nodeBkg = this.mainBkg;
 | |
|     this.nodeBorder = this.border1;
 | |
|     this.clusterBkg = this.secondBkg;
 | |
|     this.clusterBorder = this.border2;
 | |
|     this.defaultLinkColor = this.lineColor;
 | |
|     this.taskBorderColor = this.border1;
 | |
|     this.taskTextColor = this.taskTextLightColor;
 | |
|     this.taskTextOutsideColor = this.taskTextDarkColor;
 | |
|     this.activeTaskBorderColor = this.taskBorderColor;
 | |
|     this.activeTaskBkgColor = this.mainBkg;
 | |
|     this.archEdgeColor = this.lineColor;
 | |
|     this.archEdgeArrowColor = this.lineColor;
 | |
|     this.rowOdd = this.rowOdd || lighten_default(this.mainBkg, 75) || "#ffffff";
 | |
|     this.rowEven = this.rowEven || lighten_default(this.mainBkg, 20);
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.transitionLabelColor = this.transitionLabelColor || this.textColor;
 | |
|     this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;
 | |
|     this.stateBkg = this.stateBkg || this.mainBkg;
 | |
|     this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;
 | |
|     this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;
 | |
|     this.altBackground = this.altBackground || "#f0f0f0";
 | |
|     this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;
 | |
|     this.compositeBorder = this.compositeBorder || this.nodeBorder;
 | |
|     this.innerEndBackground = this.primaryBorderColor;
 | |
|     this.specialStateColor = this.lineColor;
 | |
|     this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
 | |
|     this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
 | |
|     this.transitionColor = this.transitionColor || this.lineColor;
 | |
|     this.classText = this.primaryTextColor;
 | |
|     this.fillType0 = this.primaryColor;
 | |
|     this.fillType1 = this.secondaryColor;
 | |
|     this.fillType2 = adjust_default(this.primaryColor, { h: 64 });
 | |
|     this.fillType3 = adjust_default(this.secondaryColor, { h: 64 });
 | |
|     this.fillType4 = adjust_default(this.primaryColor, { h: -64 });
 | |
|     this.fillType5 = adjust_default(this.secondaryColor, { h: -64 });
 | |
|     this.fillType6 = adjust_default(this.primaryColor, { h: 128 });
 | |
|     this.fillType7 = adjust_default(this.secondaryColor, { h: 128 });
 | |
|     this.pie1 = this.pie1 || this.primaryColor;
 | |
|     this.pie2 = this.pie2 || this.secondaryColor;
 | |
|     this.pie3 = this.pie3 || this.tertiaryColor;
 | |
|     this.pie4 = this.pie4 || adjust_default(this.primaryColor, { l: -30 });
 | |
|     this.pie5 = this.pie5 || adjust_default(this.secondaryColor, { l: -30 });
 | |
|     this.pie6 = this.pie6 || adjust_default(this.tertiaryColor, { h: 40, l: -40 });
 | |
|     this.pie7 = this.pie7 || adjust_default(this.primaryColor, { h: 60, l: -10 });
 | |
|     this.pie8 = this.pie8 || adjust_default(this.primaryColor, { h: -60, l: -10 });
 | |
|     this.pie9 = this.pie9 || adjust_default(this.primaryColor, { h: 120, l: 0 });
 | |
|     this.pie10 = this.pie10 || adjust_default(this.primaryColor, { h: 60, l: -50 });
 | |
|     this.pie11 = this.pie11 || adjust_default(this.primaryColor, { h: -60, l: -50 });
 | |
|     this.pie12 = this.pie12 || adjust_default(this.primaryColor, { h: 120, l: -50 });
 | |
|     this.pieTitleTextSize = this.pieTitleTextSize || "25px";
 | |
|     this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
 | |
|     this.pieSectionTextSize = this.pieSectionTextSize || "17px";
 | |
|     this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
 | |
|     this.pieLegendTextSize = this.pieLegendTextSize || "17px";
 | |
|     this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
 | |
|     this.pieStrokeColor = this.pieStrokeColor || "black";
 | |
|     this.pieStrokeWidth = this.pieStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
 | |
|     this.pieOpacity = this.pieOpacity || "0.7";
 | |
|     this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
 | |
|     this.quadrant2Fill = this.quadrant2Fill || adjust_default(this.primaryColor, { r: 5, g: 5, b: 5 });
 | |
|     this.quadrant3Fill = this.quadrant3Fill || adjust_default(this.primaryColor, { r: 10, g: 10, b: 10 });
 | |
|     this.quadrant4Fill = this.quadrant4Fill || adjust_default(this.primaryColor, { r: 15, g: 15, b: 15 });
 | |
|     this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;
 | |
|     this.quadrant2TextFill = this.quadrant2TextFill || adjust_default(this.primaryTextColor, { r: -5, g: -5, b: -5 });
 | |
|     this.quadrant3TextFill = this.quadrant3TextFill || adjust_default(this.primaryTextColor, { r: -10, g: -10, b: -10 });
 | |
|     this.quadrant4TextFill = this.quadrant4TextFill || adjust_default(this.primaryTextColor, { r: -15, g: -15, b: -15 });
 | |
|     this.quadrantPointFill = this.quadrantPointFill || is_dark_default(this.quadrant1Fill) ? lighten_default(this.quadrant1Fill) : darken_default(this.quadrant1Fill);
 | |
|     this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
 | |
|     this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;
 | |
|     this.packet = {
 | |
|       startByteColor: this.primaryTextColor,
 | |
|       endByteColor: this.primaryTextColor,
 | |
|       labelColor: this.primaryTextColor,
 | |
|       titleColor: this.primaryTextColor,
 | |
|       blockStrokeColor: this.primaryTextColor,
 | |
|       blockFillColor: this.mainBkg
 | |
|     };
 | |
|     this.radar = {
 | |
|       axisColor: this.radar?.axisColor || this.lineColor,
 | |
|       axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
 | |
|       axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
 | |
|       curveOpacity: this.radar?.curveOpacity || 0.5,
 | |
|       curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
 | |
|       graticuleColor: this.radar?.graticuleColor || "#DEDEDE",
 | |
|       graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
 | |
|       graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
 | |
|       legendBoxSize: this.radar?.legendBoxSize || 12,
 | |
|       legendFontSize: this.radar?.legendFontSize || 12
 | |
|     };
 | |
|     this.xyChart = {
 | |
|       backgroundColor: this.xyChart?.backgroundColor || this.background,
 | |
|       titleColor: this.xyChart?.titleColor || this.primaryTextColor,
 | |
|       xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
 | |
|       xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
 | |
|       xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
 | |
|       xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
 | |
|       yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
 | |
|       yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
 | |
|       yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
 | |
|       yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
 | |
|       plotColorPalette: this.xyChart?.plotColorPalette || "#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176"
 | |
|     };
 | |
|     this.requirementBackground = this.requirementBackground || this.primaryColor;
 | |
|     this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;
 | |
|     this.requirementBorderSize = this.requirementBorderSize || "1";
 | |
|     this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;
 | |
|     this.relationColor = this.relationColor || this.lineColor;
 | |
|     this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;
 | |
|     this.relationLabelColor = this.relationLabelColor || this.actorTextColor;
 | |
|     this.git0 = this.git0 || this.primaryColor;
 | |
|     this.git1 = this.git1 || this.secondaryColor;
 | |
|     this.git2 = this.git2 || this.tertiaryColor;
 | |
|     this.git3 = this.git3 || adjust_default(this.primaryColor, { h: -30 });
 | |
|     this.git4 = this.git4 || adjust_default(this.primaryColor, { h: -60 });
 | |
|     this.git5 = this.git5 || adjust_default(this.primaryColor, { h: -90 });
 | |
|     this.git6 = this.git6 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.git7 = this.git7 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     if (this.darkMode) {
 | |
|       this.git0 = lighten_default(this.git0, 25);
 | |
|       this.git1 = lighten_default(this.git1, 25);
 | |
|       this.git2 = lighten_default(this.git2, 25);
 | |
|       this.git3 = lighten_default(this.git3, 25);
 | |
|       this.git4 = lighten_default(this.git4, 25);
 | |
|       this.git5 = lighten_default(this.git5, 25);
 | |
|       this.git6 = lighten_default(this.git6, 25);
 | |
|       this.git7 = lighten_default(this.git7, 25);
 | |
|     } else {
 | |
|       this.git0 = darken_default(this.git0, 25);
 | |
|       this.git1 = darken_default(this.git1, 25);
 | |
|       this.git2 = darken_default(this.git2, 25);
 | |
|       this.git3 = darken_default(this.git3, 25);
 | |
|       this.git4 = darken_default(this.git4, 25);
 | |
|       this.git5 = darken_default(this.git5, 25);
 | |
|       this.git6 = darken_default(this.git6, 25);
 | |
|       this.git7 = darken_default(this.git7, 25);
 | |
|     }
 | |
|     this.gitInv0 = this.gitInv0 || invert_default(this.git0);
 | |
|     this.gitInv1 = this.gitInv1 || invert_default(this.git1);
 | |
|     this.gitInv2 = this.gitInv2 || invert_default(this.git2);
 | |
|     this.gitInv3 = this.gitInv3 || invert_default(this.git3);
 | |
|     this.gitInv4 = this.gitInv4 || invert_default(this.git4);
 | |
|     this.gitInv5 = this.gitInv5 || invert_default(this.git5);
 | |
|     this.gitInv6 = this.gitInv6 || invert_default(this.git6);
 | |
|     this.gitInv7 = this.gitInv7 || invert_default(this.git7);
 | |
|     this.gitBranchLabel0 = this.gitBranchLabel0 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;
 | |
|     this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;
 | |
|     this.gitBranchLabel3 = this.gitBranchLabel3 || invert_default(this.labelTextColor);
 | |
|     this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;
 | |
|     this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;
 | |
|     this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;
 | |
|     this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;
 | |
|     this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;
 | |
|     this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;
 | |
|     this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;
 | |
|     this.tagLabelFontSize = this.tagLabelFontSize || "10px";
 | |
|     this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;
 | |
|     this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;
 | |
|     this.commitLabelFontSize = this.commitLabelFontSize || "10px";
 | |
|     this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;
 | |
|     this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;
 | |
|   }
 | |
|   calculate(overrides) {
 | |
|     if (typeof overrides !== "object") {
 | |
|       this.updateColors();
 | |
|       return;
 | |
|     }
 | |
|     const keys = Object.keys(overrides);
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|     this.updateColors();
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|   }
 | |
| };
 | |
| var getThemeVariables4 = /* @__PURE__ */ __name((userOverrides) => {
 | |
|   const theme = new Theme4();
 | |
|   theme.calculate(userOverrides);
 | |
|   return theme;
 | |
| }, "getThemeVariables");
 | |
| 
 | |
| // src/themes/theme-neutral.js
 | |
| var Theme5 = class {
 | |
|   static {
 | |
|     __name(this, "Theme");
 | |
|   }
 | |
|   constructor() {
 | |
|     this.primaryColor = "#eee";
 | |
|     this.contrast = "#707070";
 | |
|     this.secondaryColor = lighten_default(this.contrast, 55);
 | |
|     this.background = "#ffffff";
 | |
|     this.tertiaryColor = adjust_default(this.primaryColor, { h: -160 });
 | |
|     this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);
 | |
|     this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);
 | |
|     this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);
 | |
|     this.primaryTextColor = invert_default(this.primaryColor);
 | |
|     this.secondaryTextColor = invert_default(this.secondaryColor);
 | |
|     this.tertiaryTextColor = invert_default(this.tertiaryColor);
 | |
|     this.lineColor = invert_default(this.background);
 | |
|     this.textColor = invert_default(this.background);
 | |
|     this.mainBkg = "#eee";
 | |
|     this.secondBkg = "calculated";
 | |
|     this.lineColor = "#666";
 | |
|     this.border1 = "#999";
 | |
|     this.border2 = "calculated";
 | |
|     this.note = "#ffa";
 | |
|     this.text = "#333";
 | |
|     this.critical = "#d42";
 | |
|     this.done = "#bbb";
 | |
|     this.arrowheadColor = "#333333";
 | |
|     this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif';
 | |
|     this.fontSize = "16px";
 | |
|     this.THEME_COLOR_LIMIT = 12;
 | |
|     this.nodeBkg = "calculated";
 | |
|     this.nodeBorder = "calculated";
 | |
|     this.clusterBkg = "calculated";
 | |
|     this.clusterBorder = "calculated";
 | |
|     this.defaultLinkColor = "calculated";
 | |
|     this.titleColor = "calculated";
 | |
|     this.edgeLabelBackground = "white";
 | |
|     this.actorBorder = "calculated";
 | |
|     this.actorBkg = "calculated";
 | |
|     this.actorTextColor = "calculated";
 | |
|     this.actorLineColor = this.actorBorder;
 | |
|     this.signalColor = "calculated";
 | |
|     this.signalTextColor = "calculated";
 | |
|     this.labelBoxBkgColor = "calculated";
 | |
|     this.labelBoxBorderColor = "calculated";
 | |
|     this.labelTextColor = "calculated";
 | |
|     this.loopTextColor = "calculated";
 | |
|     this.noteBorderColor = "calculated";
 | |
|     this.noteBkgColor = "calculated";
 | |
|     this.noteTextColor = "calculated";
 | |
|     this.activationBorderColor = "#666";
 | |
|     this.activationBkgColor = "#f4f4f4";
 | |
|     this.sequenceNumberColor = "white";
 | |
|     this.sectionBkgColor = "calculated";
 | |
|     this.altSectionBkgColor = "white";
 | |
|     this.sectionBkgColor2 = "calculated";
 | |
|     this.excludeBkgColor = "#eeeeee";
 | |
|     this.taskBorderColor = "calculated";
 | |
|     this.taskBkgColor = "calculated";
 | |
|     this.taskTextLightColor = "white";
 | |
|     this.taskTextColor = "calculated";
 | |
|     this.taskTextDarkColor = "calculated";
 | |
|     this.taskTextOutsideColor = "calculated";
 | |
|     this.taskTextClickableColor = "#003163";
 | |
|     this.activeTaskBorderColor = "calculated";
 | |
|     this.activeTaskBkgColor = "calculated";
 | |
|     this.gridColor = "calculated";
 | |
|     this.doneTaskBkgColor = "calculated";
 | |
|     this.doneTaskBorderColor = "calculated";
 | |
|     this.critBkgColor = "calculated";
 | |
|     this.critBorderColor = "calculated";
 | |
|     this.todayLineColor = "calculated";
 | |
|     this.vertLineColor = "calculated";
 | |
|     this.personBorder = this.primaryBorderColor;
 | |
|     this.personBkg = this.mainBkg;
 | |
|     this.archEdgeColor = "calculated";
 | |
|     this.archEdgeArrowColor = "calculated";
 | |
|     this.archEdgeWidth = "3";
 | |
|     this.archGroupBorderColor = this.primaryBorderColor;
 | |
|     this.archGroupBorderWidth = "2px";
 | |
|     this.rowOdd = this.rowOdd || lighten_default(this.mainBkg, 75) || "#ffffff";
 | |
|     this.rowEven = this.rowEven || "#f4f4f4";
 | |
|     this.labelColor = "black";
 | |
|     this.errorBkgColor = "#552222";
 | |
|     this.errorTextColor = "#552222";
 | |
|   }
 | |
|   updateColors() {
 | |
|     this.secondBkg = lighten_default(this.contrast, 55);
 | |
|     this.border2 = this.contrast;
 | |
|     this.actorBorder = lighten_default(this.border1, 23);
 | |
|     this.actorBkg = this.mainBkg;
 | |
|     this.actorTextColor = this.text;
 | |
|     this.actorLineColor = this.actorBorder;
 | |
|     this.signalColor = this.text;
 | |
|     this.signalTextColor = this.text;
 | |
|     this.labelBoxBkgColor = this.actorBkg;
 | |
|     this.labelBoxBorderColor = this.actorBorder;
 | |
|     this.labelTextColor = this.text;
 | |
|     this.loopTextColor = this.text;
 | |
|     this.noteBorderColor = "#999";
 | |
|     this.noteBkgColor = "#666";
 | |
|     this.noteTextColor = "#fff";
 | |
|     this.cScale0 = this.cScale0 || "#555";
 | |
|     this.cScale1 = this.cScale1 || "#F4F4F4";
 | |
|     this.cScale2 = this.cScale2 || "#555";
 | |
|     this.cScale3 = this.cScale3 || "#BBB";
 | |
|     this.cScale4 = this.cScale4 || "#777";
 | |
|     this.cScale5 = this.cScale5 || "#999";
 | |
|     this.cScale6 = this.cScale6 || "#DDD";
 | |
|     this.cScale7 = this.cScale7 || "#FFF";
 | |
|     this.cScale8 = this.cScale8 || "#DDD";
 | |
|     this.cScale9 = this.cScale9 || "#BBB";
 | |
|     this.cScale10 = this.cScale10 || "#999";
 | |
|     this.cScale11 = this.cScale11 || "#777";
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleInv" + i] = this["cScaleInv" + i] || invert_default(this["cScale" + i]);
 | |
|     }
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       if (this.darkMode) {
 | |
|         this["cScalePeer" + i] = this["cScalePeer" + i] || lighten_default(this["cScale" + i], 10);
 | |
|       } else {
 | |
|         this["cScalePeer" + i] = this["cScalePeer" + i] || darken_default(this["cScale" + i], 10);
 | |
|       }
 | |
|     }
 | |
|     this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? "black" : this.labelTextColor);
 | |
|     this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1;
 | |
|     this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1;
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["cScaleLabel" + i] = this["cScaleLabel" + i] || this.scaleLabelColor;
 | |
|     }
 | |
|     for (let i = 0; i < 5; i++) {
 | |
|       this["surface" + i] = this["surface" + i] || adjust_default(this.mainBkg, { l: -(5 + i * 5) });
 | |
|       this["surfacePeer" + i] = this["surfacePeer" + i] || adjust_default(this.mainBkg, { l: -(8 + i * 5) });
 | |
|     }
 | |
|     this.nodeBkg = this.mainBkg;
 | |
|     this.nodeBorder = this.border1;
 | |
|     this.clusterBkg = this.secondBkg;
 | |
|     this.clusterBorder = this.border2;
 | |
|     this.defaultLinkColor = this.lineColor;
 | |
|     this.titleColor = this.text;
 | |
|     this.sectionBkgColor = lighten_default(this.contrast, 30);
 | |
|     this.sectionBkgColor2 = lighten_default(this.contrast, 30);
 | |
|     this.taskBorderColor = darken_default(this.contrast, 10);
 | |
|     this.taskBkgColor = this.contrast;
 | |
|     this.taskTextColor = this.taskTextLightColor;
 | |
|     this.taskTextDarkColor = this.text;
 | |
|     this.taskTextOutsideColor = this.taskTextDarkColor;
 | |
|     this.activeTaskBorderColor = this.taskBorderColor;
 | |
|     this.activeTaskBkgColor = this.mainBkg;
 | |
|     this.gridColor = lighten_default(this.border1, 30);
 | |
|     this.doneTaskBkgColor = this.done;
 | |
|     this.doneTaskBorderColor = this.lineColor;
 | |
|     this.critBkgColor = this.critical;
 | |
|     this.critBorderColor = darken_default(this.critBkgColor, 10);
 | |
|     this.todayLineColor = this.critBkgColor;
 | |
|     this.vertLineColor = this.critBkgColor;
 | |
|     this.archEdgeColor = this.lineColor;
 | |
|     this.archEdgeArrowColor = this.lineColor;
 | |
|     this.transitionColor = this.transitionColor || "#000";
 | |
|     this.transitionLabelColor = this.transitionLabelColor || this.textColor;
 | |
|     this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;
 | |
|     this.stateBkg = this.stateBkg || this.mainBkg;
 | |
|     this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;
 | |
|     this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;
 | |
|     this.altBackground = this.altBackground || "#f4f4f4";
 | |
|     this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;
 | |
|     this.stateBorder = this.stateBorder || "#000";
 | |
|     this.innerEndBackground = this.primaryBorderColor;
 | |
|     this.specialStateColor = "#222";
 | |
|     this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;
 | |
|     this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;
 | |
|     this.classText = this.primaryTextColor;
 | |
|     this.fillType0 = this.primaryColor;
 | |
|     this.fillType1 = this.secondaryColor;
 | |
|     this.fillType2 = adjust_default(this.primaryColor, { h: 64 });
 | |
|     this.fillType3 = adjust_default(this.secondaryColor, { h: 64 });
 | |
|     this.fillType4 = adjust_default(this.primaryColor, { h: -64 });
 | |
|     this.fillType5 = adjust_default(this.secondaryColor, { h: -64 });
 | |
|     this.fillType6 = adjust_default(this.primaryColor, { h: 128 });
 | |
|     this.fillType7 = adjust_default(this.secondaryColor, { h: 128 });
 | |
|     for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {
 | |
|       this["pie" + i] = this["cScale" + i];
 | |
|     }
 | |
|     this.pie12 = this.pie0;
 | |
|     this.pieTitleTextSize = this.pieTitleTextSize || "25px";
 | |
|     this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
 | |
|     this.pieSectionTextSize = this.pieSectionTextSize || "17px";
 | |
|     this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
 | |
|     this.pieLegendTextSize = this.pieLegendTextSize || "17px";
 | |
|     this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
 | |
|     this.pieStrokeColor = this.pieStrokeColor || "black";
 | |
|     this.pieStrokeWidth = this.pieStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
 | |
|     this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
 | |
|     this.pieOpacity = this.pieOpacity || "0.7";
 | |
|     this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
 | |
|     this.quadrant2Fill = this.quadrant2Fill || adjust_default(this.primaryColor, { r: 5, g: 5, b: 5 });
 | |
|     this.quadrant3Fill = this.quadrant3Fill || adjust_default(this.primaryColor, { r: 10, g: 10, b: 10 });
 | |
|     this.quadrant4Fill = this.quadrant4Fill || adjust_default(this.primaryColor, { r: 15, g: 15, b: 15 });
 | |
|     this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;
 | |
|     this.quadrant2TextFill = this.quadrant2TextFill || adjust_default(this.primaryTextColor, { r: -5, g: -5, b: -5 });
 | |
|     this.quadrant3TextFill = this.quadrant3TextFill || adjust_default(this.primaryTextColor, { r: -10, g: -10, b: -10 });
 | |
|     this.quadrant4TextFill = this.quadrant4TextFill || adjust_default(this.primaryTextColor, { r: -15, g: -15, b: -15 });
 | |
|     this.quadrantPointFill = this.quadrantPointFill || is_dark_default(this.quadrant1Fill) ? lighten_default(this.quadrant1Fill) : darken_default(this.quadrant1Fill);
 | |
|     this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
 | |
|     this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
 | |
|     this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;
 | |
|     this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;
 | |
|     this.xyChart = {
 | |
|       backgroundColor: this.xyChart?.backgroundColor || this.background,
 | |
|       titleColor: this.xyChart?.titleColor || this.primaryTextColor,
 | |
|       xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
 | |
|       xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
 | |
|       xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
 | |
|       xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
 | |
|       yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
 | |
|       yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
 | |
|       yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
 | |
|       yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
 | |
|       plotColorPalette: this.xyChart?.plotColorPalette || "#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0"
 | |
|     };
 | |
|     this.radar = {
 | |
|       axisColor: this.radar?.axisColor || this.lineColor,
 | |
|       axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
 | |
|       axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
 | |
|       curveOpacity: this.radar?.curveOpacity || 0.5,
 | |
|       curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
 | |
|       graticuleColor: this.radar?.graticuleColor || "#DEDEDE",
 | |
|       graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
 | |
|       graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
 | |
|       legendBoxSize: this.radar?.legendBoxSize || 12,
 | |
|       legendFontSize: this.radar?.legendFontSize || 12
 | |
|     };
 | |
|     this.requirementBackground = this.requirementBackground || this.primaryColor;
 | |
|     this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;
 | |
|     this.requirementBorderSize = this.requirementBorderSize || "1";
 | |
|     this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;
 | |
|     this.relationColor = this.relationColor || this.lineColor;
 | |
|     this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;
 | |
|     this.relationLabelColor = this.relationLabelColor || this.actorTextColor;
 | |
|     this.git0 = darken_default(this.pie1, 25) || this.primaryColor;
 | |
|     this.git1 = this.pie2 || this.secondaryColor;
 | |
|     this.git2 = this.pie3 || this.tertiaryColor;
 | |
|     this.git3 = this.pie4 || adjust_default(this.primaryColor, { h: -30 });
 | |
|     this.git4 = this.pie5 || adjust_default(this.primaryColor, { h: -60 });
 | |
|     this.git5 = this.pie6 || adjust_default(this.primaryColor, { h: -90 });
 | |
|     this.git6 = this.pie7 || adjust_default(this.primaryColor, { h: 60 });
 | |
|     this.git7 = this.pie8 || adjust_default(this.primaryColor, { h: 120 });
 | |
|     this.gitInv0 = this.gitInv0 || invert_default(this.git0);
 | |
|     this.gitInv1 = this.gitInv1 || invert_default(this.git1);
 | |
|     this.gitInv2 = this.gitInv2 || invert_default(this.git2);
 | |
|     this.gitInv3 = this.gitInv3 || invert_default(this.git3);
 | |
|     this.gitInv4 = this.gitInv4 || invert_default(this.git4);
 | |
|     this.gitInv5 = this.gitInv5 || invert_default(this.git5);
 | |
|     this.gitInv6 = this.gitInv6 || invert_default(this.git6);
 | |
|     this.gitInv7 = this.gitInv7 || invert_default(this.git7);
 | |
|     this.branchLabelColor = this.branchLabelColor || this.labelTextColor;
 | |
|     this.gitBranchLabel0 = this.branchLabelColor;
 | |
|     this.gitBranchLabel1 = "white";
 | |
|     this.gitBranchLabel2 = this.branchLabelColor;
 | |
|     this.gitBranchLabel3 = "white";
 | |
|     this.gitBranchLabel4 = this.branchLabelColor;
 | |
|     this.gitBranchLabel5 = this.branchLabelColor;
 | |
|     this.gitBranchLabel6 = this.branchLabelColor;
 | |
|     this.gitBranchLabel7 = this.branchLabelColor;
 | |
|     this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;
 | |
|     this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;
 | |
|     this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;
 | |
|     this.tagLabelFontSize = this.tagLabelFontSize || "10px";
 | |
|     this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;
 | |
|     this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;
 | |
|     this.commitLabelFontSize = this.commitLabelFontSize || "10px";
 | |
|     this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;
 | |
|     this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;
 | |
|   }
 | |
|   calculate(overrides) {
 | |
|     if (typeof overrides !== "object") {
 | |
|       this.updateColors();
 | |
|       return;
 | |
|     }
 | |
|     const keys = Object.keys(overrides);
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|     this.updateColors();
 | |
|     keys.forEach((k) => {
 | |
|       this[k] = overrides[k];
 | |
|     });
 | |
|   }
 | |
| };
 | |
| var getThemeVariables5 = /* @__PURE__ */ __name((userOverrides) => {
 | |
|   const theme = new Theme5();
 | |
|   theme.calculate(userOverrides);
 | |
|   return theme;
 | |
| }, "getThemeVariables");
 | |
| 
 | |
| // src/themes/index.js
 | |
| var themes_default = {
 | |
|   base: {
 | |
|     getThemeVariables
 | |
|   },
 | |
|   dark: {
 | |
|     getThemeVariables: getThemeVariables2
 | |
|   },
 | |
|   default: {
 | |
|     getThemeVariables: getThemeVariables3
 | |
|   },
 | |
|   forest: {
 | |
|     getThemeVariables: getThemeVariables4
 | |
|   },
 | |
|   neutral: {
 | |
|     getThemeVariables: getThemeVariables5
 | |
|   }
 | |
| };
 | |
| 
 | |
| // src/schemas/config.schema.yaml?only-defaults=true
 | |
| var config_schema_default = {
 | |
|   "flowchart": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "subGraphTitleMargin": {
 | |
|       "top": 0,
 | |
|       "bottom": 0
 | |
|     },
 | |
|     "diagramPadding": 8,
 | |
|     "htmlLabels": true,
 | |
|     "nodeSpacing": 50,
 | |
|     "rankSpacing": 50,
 | |
|     "curve": "basis",
 | |
|     "padding": 15,
 | |
|     "defaultRenderer": "dagre-wrapper",
 | |
|     "wrappingWidth": 200,
 | |
|     "inheritDir": false
 | |
|   },
 | |
|   "sequence": {
 | |
|     "useMaxWidth": true,
 | |
|     "hideUnusedParticipants": false,
 | |
|     "activationWidth": 10,
 | |
|     "diagramMarginX": 50,
 | |
|     "diagramMarginY": 10,
 | |
|     "actorMargin": 50,
 | |
|     "width": 150,
 | |
|     "height": 65,
 | |
|     "boxMargin": 10,
 | |
|     "boxTextMargin": 5,
 | |
|     "noteMargin": 10,
 | |
|     "messageMargin": 35,
 | |
|     "messageAlign": "center",
 | |
|     "mirrorActors": true,
 | |
|     "forceMenus": false,
 | |
|     "bottomMarginAdj": 1,
 | |
|     "rightAngles": false,
 | |
|     "showSequenceNumbers": false,
 | |
|     "actorFontSize": 14,
 | |
|     "actorFontFamily": '"Open Sans", sans-serif',
 | |
|     "actorFontWeight": 400,
 | |
|     "noteFontSize": 14,
 | |
|     "noteFontFamily": '"trebuchet ms", verdana, arial, sans-serif',
 | |
|     "noteFontWeight": 400,
 | |
|     "noteAlign": "center",
 | |
|     "messageFontSize": 16,
 | |
|     "messageFontFamily": '"trebuchet ms", verdana, arial, sans-serif',
 | |
|     "messageFontWeight": 400,
 | |
|     "wrap": false,
 | |
|     "wrapPadding": 10,
 | |
|     "labelBoxWidth": 50,
 | |
|     "labelBoxHeight": 20
 | |
|   },
 | |
|   "gantt": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "barHeight": 20,
 | |
|     "barGap": 4,
 | |
|     "topPadding": 50,
 | |
|     "rightPadding": 75,
 | |
|     "leftPadding": 75,
 | |
|     "gridLineStartPadding": 35,
 | |
|     "fontSize": 11,
 | |
|     "sectionFontSize": 11,
 | |
|     "numberSectionStyles": 4,
 | |
|     "axisFormat": "%Y-%m-%d",
 | |
|     "topAxis": false,
 | |
|     "displayMode": "",
 | |
|     "weekday": "sunday"
 | |
|   },
 | |
|   "journey": {
 | |
|     "useMaxWidth": true,
 | |
|     "diagramMarginX": 50,
 | |
|     "diagramMarginY": 10,
 | |
|     "leftMargin": 150,
 | |
|     "maxLabelWidth": 360,
 | |
|     "width": 150,
 | |
|     "height": 50,
 | |
|     "boxMargin": 10,
 | |
|     "boxTextMargin": 5,
 | |
|     "noteMargin": 10,
 | |
|     "messageMargin": 35,
 | |
|     "messageAlign": "center",
 | |
|     "bottomMarginAdj": 1,
 | |
|     "rightAngles": false,
 | |
|     "taskFontSize": 14,
 | |
|     "taskFontFamily": '"Open Sans", sans-serif',
 | |
|     "taskMargin": 50,
 | |
|     "activationWidth": 10,
 | |
|     "textPlacement": "fo",
 | |
|     "actorColours": [
 | |
|       "#8FBC8F",
 | |
|       "#7CFC00",
 | |
|       "#00FFFF",
 | |
|       "#20B2AA",
 | |
|       "#B0E0E6",
 | |
|       "#FFFFE0"
 | |
|     ],
 | |
|     "sectionFills": [
 | |
|       "#191970",
 | |
|       "#8B008B",
 | |
|       "#4B0082",
 | |
|       "#2F4F4F",
 | |
|       "#800000",
 | |
|       "#8B4513",
 | |
|       "#00008B"
 | |
|     ],
 | |
|     "sectionColours": [
 | |
|       "#fff"
 | |
|     ],
 | |
|     "titleColor": "",
 | |
|     "titleFontFamily": '"trebuchet ms", verdana, arial, sans-serif',
 | |
|     "titleFontSize": "4ex"
 | |
|   },
 | |
|   "class": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "arrowMarkerAbsolute": false,
 | |
|     "dividerMargin": 10,
 | |
|     "padding": 5,
 | |
|     "textHeight": 10,
 | |
|     "defaultRenderer": "dagre-wrapper",
 | |
|     "htmlLabels": false,
 | |
|     "hideEmptyMembersBox": false
 | |
|   },
 | |
|   "state": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "dividerMargin": 10,
 | |
|     "sizeUnit": 5,
 | |
|     "padding": 8,
 | |
|     "textHeight": 10,
 | |
|     "titleShift": -15,
 | |
|     "noteMargin": 10,
 | |
|     "forkWidth": 70,
 | |
|     "forkHeight": 7,
 | |
|     "miniPadding": 2,
 | |
|     "fontSizeFactor": 5.02,
 | |
|     "fontSize": 24,
 | |
|     "labelHeight": 16,
 | |
|     "edgeLengthFactor": "20",
 | |
|     "compositTitleSize": 35,
 | |
|     "radius": 5,
 | |
|     "defaultRenderer": "dagre-wrapper"
 | |
|   },
 | |
|   "er": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "diagramPadding": 20,
 | |
|     "layoutDirection": "TB",
 | |
|     "minEntityWidth": 100,
 | |
|     "minEntityHeight": 75,
 | |
|     "entityPadding": 15,
 | |
|     "nodeSpacing": 140,
 | |
|     "rankSpacing": 80,
 | |
|     "stroke": "gray",
 | |
|     "fill": "honeydew",
 | |
|     "fontSize": 12
 | |
|   },
 | |
|   "pie": {
 | |
|     "useMaxWidth": true,
 | |
|     "textPosition": 0.75
 | |
|   },
 | |
|   "quadrantChart": {
 | |
|     "useMaxWidth": true,
 | |
|     "chartWidth": 500,
 | |
|     "chartHeight": 500,
 | |
|     "titleFontSize": 20,
 | |
|     "titlePadding": 10,
 | |
|     "quadrantPadding": 5,
 | |
|     "xAxisLabelPadding": 5,
 | |
|     "yAxisLabelPadding": 5,
 | |
|     "xAxisLabelFontSize": 16,
 | |
|     "yAxisLabelFontSize": 16,
 | |
|     "quadrantLabelFontSize": 16,
 | |
|     "quadrantTextTopPadding": 5,
 | |
|     "pointTextPadding": 5,
 | |
|     "pointLabelFontSize": 12,
 | |
|     "pointRadius": 5,
 | |
|     "xAxisPosition": "top",
 | |
|     "yAxisPosition": "left",
 | |
|     "quadrantInternalBorderStrokeWidth": 1,
 | |
|     "quadrantExternalBorderStrokeWidth": 2
 | |
|   },
 | |
|   "xyChart": {
 | |
|     "useMaxWidth": true,
 | |
|     "width": 700,
 | |
|     "height": 500,
 | |
|     "titleFontSize": 20,
 | |
|     "titlePadding": 10,
 | |
|     "showDataLabel": false,
 | |
|     "showTitle": true,
 | |
|     "xAxis": {
 | |
|       "$ref": "#/$defs/XYChartAxisConfig",
 | |
|       "showLabel": true,
 | |
|       "labelFontSize": 14,
 | |
|       "labelPadding": 5,
 | |
|       "showTitle": true,
 | |
|       "titleFontSize": 16,
 | |
|       "titlePadding": 5,
 | |
|       "showTick": true,
 | |
|       "tickLength": 5,
 | |
|       "tickWidth": 2,
 | |
|       "showAxisLine": true,
 | |
|       "axisLineWidth": 2
 | |
|     },
 | |
|     "yAxis": {
 | |
|       "$ref": "#/$defs/XYChartAxisConfig",
 | |
|       "showLabel": true,
 | |
|       "labelFontSize": 14,
 | |
|       "labelPadding": 5,
 | |
|       "showTitle": true,
 | |
|       "titleFontSize": 16,
 | |
|       "titlePadding": 5,
 | |
|       "showTick": true,
 | |
|       "tickLength": 5,
 | |
|       "tickWidth": 2,
 | |
|       "showAxisLine": true,
 | |
|       "axisLineWidth": 2
 | |
|     },
 | |
|     "chartOrientation": "vertical",
 | |
|     "plotReservedSpacePercent": 50
 | |
|   },
 | |
|   "requirement": {
 | |
|     "useMaxWidth": true,
 | |
|     "rect_fill": "#f9f9f9",
 | |
|     "text_color": "#333",
 | |
|     "rect_border_size": "0.5px",
 | |
|     "rect_border_color": "#bbb",
 | |
|     "rect_min_width": 200,
 | |
|     "rect_min_height": 200,
 | |
|     "fontSize": 14,
 | |
|     "rect_padding": 10,
 | |
|     "line_height": 20
 | |
|   },
 | |
|   "mindmap": {
 | |
|     "useMaxWidth": true,
 | |
|     "padding": 10,
 | |
|     "maxNodeWidth": 200,
 | |
|     "layoutAlgorithm": "cose-bilkent"
 | |
|   },
 | |
|   "kanban": {
 | |
|     "useMaxWidth": true,
 | |
|     "padding": 8,
 | |
|     "sectionWidth": 200,
 | |
|     "ticketBaseUrl": ""
 | |
|   },
 | |
|   "timeline": {
 | |
|     "useMaxWidth": true,
 | |
|     "diagramMarginX": 50,
 | |
|     "diagramMarginY": 10,
 | |
|     "leftMargin": 150,
 | |
|     "width": 150,
 | |
|     "height": 50,
 | |
|     "boxMargin": 10,
 | |
|     "boxTextMargin": 5,
 | |
|     "noteMargin": 10,
 | |
|     "messageMargin": 35,
 | |
|     "messageAlign": "center",
 | |
|     "bottomMarginAdj": 1,
 | |
|     "rightAngles": false,
 | |
|     "taskFontSize": 14,
 | |
|     "taskFontFamily": '"Open Sans", sans-serif',
 | |
|     "taskMargin": 50,
 | |
|     "activationWidth": 10,
 | |
|     "textPlacement": "fo",
 | |
|     "actorColours": [
 | |
|       "#8FBC8F",
 | |
|       "#7CFC00",
 | |
|       "#00FFFF",
 | |
|       "#20B2AA",
 | |
|       "#B0E0E6",
 | |
|       "#FFFFE0"
 | |
|     ],
 | |
|     "sectionFills": [
 | |
|       "#191970",
 | |
|       "#8B008B",
 | |
|       "#4B0082",
 | |
|       "#2F4F4F",
 | |
|       "#800000",
 | |
|       "#8B4513",
 | |
|       "#00008B"
 | |
|     ],
 | |
|     "sectionColours": [
 | |
|       "#fff"
 | |
|     ],
 | |
|     "disableMulticolor": false
 | |
|   },
 | |
|   "gitGraph": {
 | |
|     "useMaxWidth": true,
 | |
|     "titleTopMargin": 25,
 | |
|     "diagramPadding": 8,
 | |
|     "nodeLabel": {
 | |
|       "width": 75,
 | |
|       "height": 100,
 | |
|       "x": -25,
 | |
|       "y": 0
 | |
|     },
 | |
|     "mainBranchName": "main",
 | |
|     "mainBranchOrder": 0,
 | |
|     "showCommitLabel": true,
 | |
|     "showBranches": true,
 | |
|     "rotateCommitLabel": true,
 | |
|     "parallelCommits": false,
 | |
|     "arrowMarkerAbsolute": false
 | |
|   },
 | |
|   "c4": {
 | |
|     "useMaxWidth": true,
 | |
|     "diagramMarginX": 50,
 | |
|     "diagramMarginY": 10,
 | |
|     "c4ShapeMargin": 50,
 | |
|     "c4ShapePadding": 20,
 | |
|     "width": 216,
 | |
|     "height": 60,
 | |
|     "boxMargin": 10,
 | |
|     "c4ShapeInRow": 4,
 | |
|     "nextLinePaddingX": 0,
 | |
|     "c4BoundaryInRow": 2,
 | |
|     "personFontSize": 14,
 | |
|     "personFontFamily": '"Open Sans", sans-serif',
 | |
|     "personFontWeight": "normal",
 | |
|     "external_personFontSize": 14,
 | |
|     "external_personFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_personFontWeight": "normal",
 | |
|     "systemFontSize": 14,
 | |
|     "systemFontFamily": '"Open Sans", sans-serif',
 | |
|     "systemFontWeight": "normal",
 | |
|     "external_systemFontSize": 14,
 | |
|     "external_systemFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_systemFontWeight": "normal",
 | |
|     "system_dbFontSize": 14,
 | |
|     "system_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "system_dbFontWeight": "normal",
 | |
|     "external_system_dbFontSize": 14,
 | |
|     "external_system_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_system_dbFontWeight": "normal",
 | |
|     "system_queueFontSize": 14,
 | |
|     "system_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "system_queueFontWeight": "normal",
 | |
|     "external_system_queueFontSize": 14,
 | |
|     "external_system_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_system_queueFontWeight": "normal",
 | |
|     "boundaryFontSize": 14,
 | |
|     "boundaryFontFamily": '"Open Sans", sans-serif',
 | |
|     "boundaryFontWeight": "normal",
 | |
|     "messageFontSize": 12,
 | |
|     "messageFontFamily": '"Open Sans", sans-serif',
 | |
|     "messageFontWeight": "normal",
 | |
|     "containerFontSize": 14,
 | |
|     "containerFontFamily": '"Open Sans", sans-serif',
 | |
|     "containerFontWeight": "normal",
 | |
|     "external_containerFontSize": 14,
 | |
|     "external_containerFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_containerFontWeight": "normal",
 | |
|     "container_dbFontSize": 14,
 | |
|     "container_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "container_dbFontWeight": "normal",
 | |
|     "external_container_dbFontSize": 14,
 | |
|     "external_container_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_container_dbFontWeight": "normal",
 | |
|     "container_queueFontSize": 14,
 | |
|     "container_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "container_queueFontWeight": "normal",
 | |
|     "external_container_queueFontSize": 14,
 | |
|     "external_container_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_container_queueFontWeight": "normal",
 | |
|     "componentFontSize": 14,
 | |
|     "componentFontFamily": '"Open Sans", sans-serif',
 | |
|     "componentFontWeight": "normal",
 | |
|     "external_componentFontSize": 14,
 | |
|     "external_componentFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_componentFontWeight": "normal",
 | |
|     "component_dbFontSize": 14,
 | |
|     "component_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "component_dbFontWeight": "normal",
 | |
|     "external_component_dbFontSize": 14,
 | |
|     "external_component_dbFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_component_dbFontWeight": "normal",
 | |
|     "component_queueFontSize": 14,
 | |
|     "component_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "component_queueFontWeight": "normal",
 | |
|     "external_component_queueFontSize": 14,
 | |
|     "external_component_queueFontFamily": '"Open Sans", sans-serif',
 | |
|     "external_component_queueFontWeight": "normal",
 | |
|     "wrap": true,
 | |
|     "wrapPadding": 10,
 | |
|     "person_bg_color": "#08427B",
 | |
|     "person_border_color": "#073B6F",
 | |
|     "external_person_bg_color": "#686868",
 | |
|     "external_person_border_color": "#8A8A8A",
 | |
|     "system_bg_color": "#1168BD",
 | |
|     "system_border_color": "#3C7FC0",
 | |
|     "system_db_bg_color": "#1168BD",
 | |
|     "system_db_border_color": "#3C7FC0",
 | |
|     "system_queue_bg_color": "#1168BD",
 | |
|     "system_queue_border_color": "#3C7FC0",
 | |
|     "external_system_bg_color": "#999999",
 | |
|     "external_system_border_color": "#8A8A8A",
 | |
|     "external_system_db_bg_color": "#999999",
 | |
|     "external_system_db_border_color": "#8A8A8A",
 | |
|     "external_system_queue_bg_color": "#999999",
 | |
|     "external_system_queue_border_color": "#8A8A8A",
 | |
|     "container_bg_color": "#438DD5",
 | |
|     "container_border_color": "#3C7FC0",
 | |
|     "container_db_bg_color": "#438DD5",
 | |
|     "container_db_border_color": "#3C7FC0",
 | |
|     "container_queue_bg_color": "#438DD5",
 | |
|     "container_queue_border_color": "#3C7FC0",
 | |
|     "external_container_bg_color": "#B3B3B3",
 | |
|     "external_container_border_color": "#A6A6A6",
 | |
|     "external_container_db_bg_color": "#B3B3B3",
 | |
|     "external_container_db_border_color": "#A6A6A6",
 | |
|     "external_container_queue_bg_color": "#B3B3B3",
 | |
|     "external_container_queue_border_color": "#A6A6A6",
 | |
|     "component_bg_color": "#85BBF0",
 | |
|     "component_border_color": "#78A8D8",
 | |
|     "component_db_bg_color": "#85BBF0",
 | |
|     "component_db_border_color": "#78A8D8",
 | |
|     "component_queue_bg_color": "#85BBF0",
 | |
|     "component_queue_border_color": "#78A8D8",
 | |
|     "external_component_bg_color": "#CCCCCC",
 | |
|     "external_component_border_color": "#BFBFBF",
 | |
|     "external_component_db_bg_color": "#CCCCCC",
 | |
|     "external_component_db_border_color": "#BFBFBF",
 | |
|     "external_component_queue_bg_color": "#CCCCCC",
 | |
|     "external_component_queue_border_color": "#BFBFBF"
 | |
|   },
 | |
|   "sankey": {
 | |
|     "useMaxWidth": true,
 | |
|     "width": 600,
 | |
|     "height": 400,
 | |
|     "linkColor": "gradient",
 | |
|     "nodeAlignment": "justify",
 | |
|     "showValues": true,
 | |
|     "prefix": "",
 | |
|     "suffix": ""
 | |
|   },
 | |
|   "block": {
 | |
|     "useMaxWidth": true,
 | |
|     "padding": 8
 | |
|   },
 | |
|   "packet": {
 | |
|     "useMaxWidth": true,
 | |
|     "rowHeight": 32,
 | |
|     "bitWidth": 32,
 | |
|     "bitsPerRow": 32,
 | |
|     "showBits": true,
 | |
|     "paddingX": 5,
 | |
|     "paddingY": 5
 | |
|   },
 | |
|   "architecture": {
 | |
|     "useMaxWidth": true,
 | |
|     "padding": 40,
 | |
|     "iconSize": 80,
 | |
|     "fontSize": 16
 | |
|   },
 | |
|   "radar": {
 | |
|     "useMaxWidth": true,
 | |
|     "width": 600,
 | |
|     "height": 600,
 | |
|     "marginTop": 50,
 | |
|     "marginRight": 50,
 | |
|     "marginBottom": 50,
 | |
|     "marginLeft": 50,
 | |
|     "axisScaleFactor": 1,
 | |
|     "axisLabelFactor": 1.05,
 | |
|     "curveTension": 0.17
 | |
|   },
 | |
|   "theme": "default",
 | |
|   "look": "classic",
 | |
|   "handDrawnSeed": 0,
 | |
|   "layout": "dagre",
 | |
|   "maxTextSize": 5e4,
 | |
|   "maxEdges": 500,
 | |
|   "darkMode": false,
 | |
|   "fontFamily": '"trebuchet ms", verdana, arial, sans-serif;',
 | |
|   "logLevel": 5,
 | |
|   "securityLevel": "strict",
 | |
|   "startOnLoad": true,
 | |
|   "arrowMarkerAbsolute": false,
 | |
|   "secure": [
 | |
|     "secure",
 | |
|     "securityLevel",
 | |
|     "startOnLoad",
 | |
|     "maxTextSize",
 | |
|     "suppressErrorRendering",
 | |
|     "maxEdges"
 | |
|   ],
 | |
|   "legacyMathML": false,
 | |
|   "forceLegacyMathML": false,
 | |
|   "deterministicIds": false,
 | |
|   "fontSize": 16,
 | |
|   "markdownAutoWrap": true,
 | |
|   "suppressErrorRendering": false
 | |
| };
 | |
| 
 | |
| // src/defaultConfig.ts
 | |
| var config = {
 | |
|   ...config_schema_default,
 | |
|   // Set, even though they're `undefined` so that `configKeys` finds these keys
 | |
|   // TODO: Should we replace these with `null` so that they can go in the JSON Schema?
 | |
|   deterministicIDSeed: void 0,
 | |
|   elk: {
 | |
|     // mergeEdges is needed here to be considered
 | |
|     mergeEdges: false,
 | |
|     nodePlacementStrategy: "BRANDES_KOEPF",
 | |
|     forceNodeModelOrder: false,
 | |
|     considerModelOrder: "NODES_AND_EDGES"
 | |
|   },
 | |
|   themeCSS: void 0,
 | |
|   // add non-JSON default config values
 | |
|   themeVariables: themes_default.default.getThemeVariables(),
 | |
|   sequence: {
 | |
|     ...config_schema_default.sequence,
 | |
|     messageFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.messageFontFamily,
 | |
|         fontSize: this.messageFontSize,
 | |
|         fontWeight: this.messageFontWeight
 | |
|       };
 | |
|     }, "messageFont"),
 | |
|     noteFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.noteFontFamily,
 | |
|         fontSize: this.noteFontSize,
 | |
|         fontWeight: this.noteFontWeight
 | |
|       };
 | |
|     }, "noteFont"),
 | |
|     actorFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.actorFontFamily,
 | |
|         fontSize: this.actorFontSize,
 | |
|         fontWeight: this.actorFontWeight
 | |
|       };
 | |
|     }, "actorFont")
 | |
|   },
 | |
|   class: {
 | |
|     hideEmptyMembersBox: false
 | |
|   },
 | |
|   gantt: {
 | |
|     ...config_schema_default.gantt,
 | |
|     tickInterval: void 0,
 | |
|     useWidth: void 0
 | |
|     // can probably be removed since `configKeys` already includes this
 | |
|   },
 | |
|   c4: {
 | |
|     ...config_schema_default.c4,
 | |
|     useWidth: void 0,
 | |
|     personFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.personFontFamily,
 | |
|         fontSize: this.personFontSize,
 | |
|         fontWeight: this.personFontWeight
 | |
|       };
 | |
|     }, "personFont"),
 | |
|     flowchart: {
 | |
|       ...config_schema_default.flowchart,
 | |
|       inheritDir: false
 | |
|       // default to legacy behavior
 | |
|     },
 | |
|     external_personFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_personFontFamily,
 | |
|         fontSize: this.external_personFontSize,
 | |
|         fontWeight: this.external_personFontWeight
 | |
|       };
 | |
|     }, "external_personFont"),
 | |
|     systemFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.systemFontFamily,
 | |
|         fontSize: this.systemFontSize,
 | |
|         fontWeight: this.systemFontWeight
 | |
|       };
 | |
|     }, "systemFont"),
 | |
|     external_systemFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_systemFontFamily,
 | |
|         fontSize: this.external_systemFontSize,
 | |
|         fontWeight: this.external_systemFontWeight
 | |
|       };
 | |
|     }, "external_systemFont"),
 | |
|     system_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.system_dbFontFamily,
 | |
|         fontSize: this.system_dbFontSize,
 | |
|         fontWeight: this.system_dbFontWeight
 | |
|       };
 | |
|     }, "system_dbFont"),
 | |
|     external_system_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_system_dbFontFamily,
 | |
|         fontSize: this.external_system_dbFontSize,
 | |
|         fontWeight: this.external_system_dbFontWeight
 | |
|       };
 | |
|     }, "external_system_dbFont"),
 | |
|     system_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.system_queueFontFamily,
 | |
|         fontSize: this.system_queueFontSize,
 | |
|         fontWeight: this.system_queueFontWeight
 | |
|       };
 | |
|     }, "system_queueFont"),
 | |
|     external_system_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_system_queueFontFamily,
 | |
|         fontSize: this.external_system_queueFontSize,
 | |
|         fontWeight: this.external_system_queueFontWeight
 | |
|       };
 | |
|     }, "external_system_queueFont"),
 | |
|     containerFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.containerFontFamily,
 | |
|         fontSize: this.containerFontSize,
 | |
|         fontWeight: this.containerFontWeight
 | |
|       };
 | |
|     }, "containerFont"),
 | |
|     external_containerFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_containerFontFamily,
 | |
|         fontSize: this.external_containerFontSize,
 | |
|         fontWeight: this.external_containerFontWeight
 | |
|       };
 | |
|     }, "external_containerFont"),
 | |
|     container_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.container_dbFontFamily,
 | |
|         fontSize: this.container_dbFontSize,
 | |
|         fontWeight: this.container_dbFontWeight
 | |
|       };
 | |
|     }, "container_dbFont"),
 | |
|     external_container_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_container_dbFontFamily,
 | |
|         fontSize: this.external_container_dbFontSize,
 | |
|         fontWeight: this.external_container_dbFontWeight
 | |
|       };
 | |
|     }, "external_container_dbFont"),
 | |
|     container_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.container_queueFontFamily,
 | |
|         fontSize: this.container_queueFontSize,
 | |
|         fontWeight: this.container_queueFontWeight
 | |
|       };
 | |
|     }, "container_queueFont"),
 | |
|     external_container_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_container_queueFontFamily,
 | |
|         fontSize: this.external_container_queueFontSize,
 | |
|         fontWeight: this.external_container_queueFontWeight
 | |
|       };
 | |
|     }, "external_container_queueFont"),
 | |
|     componentFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.componentFontFamily,
 | |
|         fontSize: this.componentFontSize,
 | |
|         fontWeight: this.componentFontWeight
 | |
|       };
 | |
|     }, "componentFont"),
 | |
|     external_componentFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_componentFontFamily,
 | |
|         fontSize: this.external_componentFontSize,
 | |
|         fontWeight: this.external_componentFontWeight
 | |
|       };
 | |
|     }, "external_componentFont"),
 | |
|     component_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.component_dbFontFamily,
 | |
|         fontSize: this.component_dbFontSize,
 | |
|         fontWeight: this.component_dbFontWeight
 | |
|       };
 | |
|     }, "component_dbFont"),
 | |
|     external_component_dbFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_component_dbFontFamily,
 | |
|         fontSize: this.external_component_dbFontSize,
 | |
|         fontWeight: this.external_component_dbFontWeight
 | |
|       };
 | |
|     }, "external_component_dbFont"),
 | |
|     component_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.component_queueFontFamily,
 | |
|         fontSize: this.component_queueFontSize,
 | |
|         fontWeight: this.component_queueFontWeight
 | |
|       };
 | |
|     }, "component_queueFont"),
 | |
|     external_component_queueFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.external_component_queueFontFamily,
 | |
|         fontSize: this.external_component_queueFontSize,
 | |
|         fontWeight: this.external_component_queueFontWeight
 | |
|       };
 | |
|     }, "external_component_queueFont"),
 | |
|     boundaryFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.boundaryFontFamily,
 | |
|         fontSize: this.boundaryFontSize,
 | |
|         fontWeight: this.boundaryFontWeight
 | |
|       };
 | |
|     }, "boundaryFont"),
 | |
|     messageFont: /* @__PURE__ */ __name(function() {
 | |
|       return {
 | |
|         fontFamily: this.messageFontFamily,
 | |
|         fontSize: this.messageFontSize,
 | |
|         fontWeight: this.messageFontWeight
 | |
|       };
 | |
|     }, "messageFont")
 | |
|   },
 | |
|   pie: {
 | |
|     ...config_schema_default.pie,
 | |
|     useWidth: 984
 | |
|   },
 | |
|   xyChart: {
 | |
|     ...config_schema_default.xyChart,
 | |
|     useWidth: void 0
 | |
|   },
 | |
|   requirement: {
 | |
|     ...config_schema_default.requirement,
 | |
|     useWidth: void 0
 | |
|   },
 | |
|   packet: {
 | |
|     ...config_schema_default.packet
 | |
|   },
 | |
|   radar: {
 | |
|     ...config_schema_default.radar
 | |
|   },
 | |
|   treemap: {
 | |
|     useMaxWidth: true,
 | |
|     padding: 10,
 | |
|     diagramPadding: 8,
 | |
|     showValues: true,
 | |
|     nodeWidth: 100,
 | |
|     nodeHeight: 40,
 | |
|     borderWidth: 1,
 | |
|     valueFontSize: 12,
 | |
|     labelFontSize: 14,
 | |
|     valueFormat: ","
 | |
|   }
 | |
| };
 | |
| var keyify = /* @__PURE__ */ __name((obj, prefix = "") => Object.keys(obj).reduce((res, el) => {
 | |
|   if (Array.isArray(obj[el])) {
 | |
|     return res;
 | |
|   } else if (typeof obj[el] === "object" && obj[el] !== null) {
 | |
|     return [...res, prefix + el, ...keyify(obj[el], "")];
 | |
|   }
 | |
|   return [...res, prefix + el];
 | |
| }, []), "keyify");
 | |
| var configKeys = new Set(keyify(config, ""));
 | |
| var defaultConfig_default = config;
 | |
| 
 | |
| // src/utils/sanitizeDirective.ts
 | |
| var sanitizeDirective = /* @__PURE__ */ __name((args) => {
 | |
|   log.debug("sanitizeDirective called with", args);
 | |
|   if (typeof args !== "object" || args == null) {
 | |
|     return;
 | |
|   }
 | |
|   if (Array.isArray(args)) {
 | |
|     args.forEach((arg) => sanitizeDirective(arg));
 | |
|     return;
 | |
|   }
 | |
|   for (const key of Object.keys(args)) {
 | |
|     log.debug("Checking key", key);
 | |
|     if (key.startsWith("__") || key.includes("proto") || key.includes("constr") || !configKeys.has(key) || args[key] == null) {
 | |
|       log.debug("sanitize deleting key: ", key);
 | |
|       delete args[key];
 | |
|       continue;
 | |
|     }
 | |
|     if (typeof args[key] === "object") {
 | |
|       log.debug("sanitizing object", key);
 | |
|       sanitizeDirective(args[key]);
 | |
|       continue;
 | |
|     }
 | |
|     const cssMatchers = ["themeCSS", "fontFamily", "altFontFamily"];
 | |
|     for (const cssKey of cssMatchers) {
 | |
|       if (key.includes(cssKey)) {
 | |
|         log.debug("sanitizing css option", key);
 | |
|         args[key] = sanitizeCss(args[key]);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   if (args.themeVariables) {
 | |
|     for (const k of Object.keys(args.themeVariables)) {
 | |
|       const val = args.themeVariables[k];
 | |
|       if (val?.match && !val.match(/^[\d "#%(),.;A-Za-z]+$/)) {
 | |
|         args.themeVariables[k] = "";
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   log.debug("After sanitization", args);
 | |
| }, "sanitizeDirective");
 | |
| var sanitizeCss = /* @__PURE__ */ __name((str) => {
 | |
|   let startCnt = 0;
 | |
|   let endCnt = 0;
 | |
|   for (const element of str) {
 | |
|     if (startCnt < endCnt) {
 | |
|       return "{ /* ERROR: Unbalanced CSS */ }";
 | |
|     }
 | |
|     if (element === "{") {
 | |
|       startCnt++;
 | |
|     } else if (element === "}") {
 | |
|       endCnt++;
 | |
|     }
 | |
|   }
 | |
|   if (startCnt !== endCnt) {
 | |
|     return "{ /* ERROR: Unbalanced CSS */ }";
 | |
|   }
 | |
|   return str;
 | |
| }, "sanitizeCss");
 | |
| 
 | |
| // src/config.ts
 | |
| var defaultConfig = Object.freeze(defaultConfig_default);
 | |
| var siteConfig = assignWithDepth_default({}, defaultConfig);
 | |
| var configFromInitialize;
 | |
| var directives = [];
 | |
| var currentConfig = assignWithDepth_default({}, defaultConfig);
 | |
| var updateCurrentConfig = /* @__PURE__ */ __name((siteCfg, _directives) => {
 | |
|   let cfg = assignWithDepth_default({}, siteCfg);
 | |
|   let sumOfDirectives = {};
 | |
|   for (const d of _directives) {
 | |
|     sanitize(d);
 | |
|     sumOfDirectives = assignWithDepth_default(sumOfDirectives, d);
 | |
|   }
 | |
|   cfg = assignWithDepth_default(cfg, sumOfDirectives);
 | |
|   if (sumOfDirectives.theme && sumOfDirectives.theme in themes_default) {
 | |
|     const tmpConfigFromInitialize = assignWithDepth_default({}, configFromInitialize);
 | |
|     const themeVariables = assignWithDepth_default(
 | |
|       tmpConfigFromInitialize.themeVariables || {},
 | |
|       sumOfDirectives.themeVariables
 | |
|     );
 | |
|     if (cfg.theme && cfg.theme in themes_default) {
 | |
|       cfg.themeVariables = themes_default[cfg.theme].getThemeVariables(themeVariables);
 | |
|     }
 | |
|   }
 | |
|   currentConfig = cfg;
 | |
|   checkConfig(currentConfig);
 | |
|   return currentConfig;
 | |
| }, "updateCurrentConfig");
 | |
| var setSiteConfig = /* @__PURE__ */ __name((conf) => {
 | |
|   siteConfig = assignWithDepth_default({}, defaultConfig);
 | |
|   siteConfig = assignWithDepth_default(siteConfig, conf);
 | |
|   if (conf.theme && themes_default[conf.theme]) {
 | |
|     siteConfig.themeVariables = themes_default[conf.theme].getThemeVariables(conf.themeVariables);
 | |
|   }
 | |
|   updateCurrentConfig(siteConfig, directives);
 | |
|   return siteConfig;
 | |
| }, "setSiteConfig");
 | |
| var saveConfigFromInitialize = /* @__PURE__ */ __name((conf) => {
 | |
|   configFromInitialize = assignWithDepth_default({}, conf);
 | |
| }, "saveConfigFromInitialize");
 | |
| var updateSiteConfig = /* @__PURE__ */ __name((conf) => {
 | |
|   siteConfig = assignWithDepth_default(siteConfig, conf);
 | |
|   updateCurrentConfig(siteConfig, directives);
 | |
|   return siteConfig;
 | |
| }, "updateSiteConfig");
 | |
| var getSiteConfig = /* @__PURE__ */ __name(() => {
 | |
|   return assignWithDepth_default({}, siteConfig);
 | |
| }, "getSiteConfig");
 | |
| var setConfig = /* @__PURE__ */ __name((conf) => {
 | |
|   checkConfig(conf);
 | |
|   assignWithDepth_default(currentConfig, conf);
 | |
|   return getConfig();
 | |
| }, "setConfig");
 | |
| var getConfig = /* @__PURE__ */ __name(() => {
 | |
|   return assignWithDepth_default({}, currentConfig);
 | |
| }, "getConfig");
 | |
| var sanitize = /* @__PURE__ */ __name((options) => {
 | |
|   if (!options) {
 | |
|     return;
 | |
|   }
 | |
|   ["secure", ...siteConfig.secure ?? []].forEach((key) => {
 | |
|     if (Object.hasOwn(options, key)) {
 | |
|       log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);
 | |
|       delete options[key];
 | |
|     }
 | |
|   });
 | |
|   Object.keys(options).forEach((key) => {
 | |
|     if (key.startsWith("__")) {
 | |
|       delete options[key];
 | |
|     }
 | |
|   });
 | |
|   Object.keys(options).forEach((key) => {
 | |
|     if (typeof options[key] === "string" && (options[key].includes("<") || options[key].includes(">") || options[key].includes("url(data:"))) {
 | |
|       delete options[key];
 | |
|     }
 | |
|     if (typeof options[key] === "object") {
 | |
|       sanitize(options[key]);
 | |
|     }
 | |
|   });
 | |
| }, "sanitize");
 | |
| var addDirective = /* @__PURE__ */ __name((directive) => {
 | |
|   sanitizeDirective(directive);
 | |
|   if (directive.fontFamily && !directive.themeVariables?.fontFamily) {
 | |
|     directive.themeVariables = {
 | |
|       ...directive.themeVariables,
 | |
|       fontFamily: directive.fontFamily
 | |
|     };
 | |
|   }
 | |
|   directives.push(directive);
 | |
|   updateCurrentConfig(siteConfig, directives);
 | |
| }, "addDirective");
 | |
| var reset = /* @__PURE__ */ __name((config2 = siteConfig) => {
 | |
|   directives = [];
 | |
|   updateCurrentConfig(config2, directives);
 | |
| }, "reset");
 | |
| var ConfigWarning = {
 | |
|   LAZY_LOAD_DEPRECATED: "The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."
 | |
| };
 | |
| var issuedWarnings = {};
 | |
| var issueWarning = /* @__PURE__ */ __name((warning) => {
 | |
|   if (issuedWarnings[warning]) {
 | |
|     return;
 | |
|   }
 | |
|   log.warn(ConfigWarning[warning]);
 | |
|   issuedWarnings[warning] = true;
 | |
| }, "issueWarning");
 | |
| var checkConfig = /* @__PURE__ */ __name((config2) => {
 | |
|   if (!config2) {
 | |
|     return;
 | |
|   }
 | |
|   if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {
 | |
|     issueWarning("LAZY_LOAD_DEPRECATED");
 | |
|   }
 | |
| }, "checkConfig");
 | |
| var getUserDefinedConfig = /* @__PURE__ */ __name(() => {
 | |
|   let userConfig = {};
 | |
|   if (configFromInitialize) {
 | |
|     userConfig = assignWithDepth_default(userConfig, configFromInitialize);
 | |
|   }
 | |
|   for (const d of directives) {
 | |
|     userConfig = assignWithDepth_default(userConfig, d);
 | |
|   }
 | |
|   return userConfig;
 | |
| }, "getUserDefinedConfig");
 | |
| 
 | |
| // ../../node_modules/.pnpm/dompurify@3.2.6/node_modules/dompurify/dist/purify.es.mjs
 | |
| var {
 | |
|   entries,
 | |
|   setPrototypeOf,
 | |
|   isFrozen,
 | |
|   getPrototypeOf,
 | |
|   getOwnPropertyDescriptor
 | |
| } = Object;
 | |
| var {
 | |
|   freeze,
 | |
|   seal,
 | |
|   create
 | |
| } = Object;
 | |
| var {
 | |
|   apply,
 | |
|   construct
 | |
| } = typeof Reflect !== "undefined" && Reflect;
 | |
| if (!freeze) {
 | |
|   freeze = /* @__PURE__ */ __name(function freeze2(x) {
 | |
|     return x;
 | |
|   }, "freeze");
 | |
| }
 | |
| if (!seal) {
 | |
|   seal = /* @__PURE__ */ __name(function seal2(x) {
 | |
|     return x;
 | |
|   }, "seal");
 | |
| }
 | |
| if (!apply) {
 | |
|   apply = /* @__PURE__ */ __name(function apply2(fun, thisValue, args) {
 | |
|     return fun.apply(thisValue, args);
 | |
|   }, "apply");
 | |
| }
 | |
| if (!construct) {
 | |
|   construct = /* @__PURE__ */ __name(function construct2(Func, args) {
 | |
|     return new Func(...args);
 | |
|   }, "construct");
 | |
| }
 | |
| var arrayForEach = unapply(Array.prototype.forEach);
 | |
| var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
 | |
| var arrayPop = unapply(Array.prototype.pop);
 | |
| var arrayPush = unapply(Array.prototype.push);
 | |
| var arraySplice = unapply(Array.prototype.splice);
 | |
| var stringToLowerCase = unapply(String.prototype.toLowerCase);
 | |
| var stringToString = unapply(String.prototype.toString);
 | |
| var stringMatch = unapply(String.prototype.match);
 | |
| var stringReplace = unapply(String.prototype.replace);
 | |
| var stringIndexOf = unapply(String.prototype.indexOf);
 | |
| var stringTrim = unapply(String.prototype.trim);
 | |
| var objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
 | |
| var regExpTest = unapply(RegExp.prototype.test);
 | |
| var typeErrorCreate = unconstruct(TypeError);
 | |
| function unapply(func) {
 | |
|   return function(thisArg) {
 | |
|     if (thisArg instanceof RegExp) {
 | |
|       thisArg.lastIndex = 0;
 | |
|     }
 | |
|     for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
 | |
|       args[_key - 1] = arguments[_key];
 | |
|     }
 | |
|     return apply(func, thisArg, args);
 | |
|   };
 | |
| }
 | |
| __name(unapply, "unapply");
 | |
| function unconstruct(func) {
 | |
|   return function() {
 | |
|     for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
 | |
|       args[_key2] = arguments[_key2];
 | |
|     }
 | |
|     return construct(func, args);
 | |
|   };
 | |
| }
 | |
| __name(unconstruct, "unconstruct");
 | |
| function addToSet(set, array) {
 | |
|   let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
 | |
|   if (setPrototypeOf) {
 | |
|     setPrototypeOf(set, null);
 | |
|   }
 | |
|   let l = array.length;
 | |
|   while (l--) {
 | |
|     let element = array[l];
 | |
|     if (typeof element === "string") {
 | |
|       const lcElement = transformCaseFunc(element);
 | |
|       if (lcElement !== element) {
 | |
|         if (!isFrozen(array)) {
 | |
|           array[l] = lcElement;
 | |
|         }
 | |
|         element = lcElement;
 | |
|       }
 | |
|     }
 | |
|     set[element] = true;
 | |
|   }
 | |
|   return set;
 | |
| }
 | |
| __name(addToSet, "addToSet");
 | |
| function cleanArray(array) {
 | |
|   for (let index = 0; index < array.length; index++) {
 | |
|     const isPropertyExist = objectHasOwnProperty(array, index);
 | |
|     if (!isPropertyExist) {
 | |
|       array[index] = null;
 | |
|     }
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| __name(cleanArray, "cleanArray");
 | |
| function clone(object) {
 | |
|   const newObject = create(null);
 | |
|   for (const [property, value] of entries(object)) {
 | |
|     const isPropertyExist = objectHasOwnProperty(object, property);
 | |
|     if (isPropertyExist) {
 | |
|       if (Array.isArray(value)) {
 | |
|         newObject[property] = cleanArray(value);
 | |
|       } else if (value && typeof value === "object" && value.constructor === Object) {
 | |
|         newObject[property] = clone(value);
 | |
|       } else {
 | |
|         newObject[property] = value;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return newObject;
 | |
| }
 | |
| __name(clone, "clone");
 | |
| function lookupGetter(object, prop) {
 | |
|   while (object !== null) {
 | |
|     const desc = getOwnPropertyDescriptor(object, prop);
 | |
|     if (desc) {
 | |
|       if (desc.get) {
 | |
|         return unapply(desc.get);
 | |
|       }
 | |
|       if (typeof desc.value === "function") {
 | |
|         return unapply(desc.value);
 | |
|       }
 | |
|     }
 | |
|     object = getPrototypeOf(object);
 | |
|   }
 | |
|   function fallbackValue() {
 | |
|     return null;
 | |
|   }
 | |
|   __name(fallbackValue, "fallbackValue");
 | |
|   return fallbackValue;
 | |
| }
 | |
| __name(lookupGetter, "lookupGetter");
 | |
| var html$1 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
 | |
| var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
 | |
| var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
 | |
| var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
 | |
| var mathMl$1 = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]);
 | |
| var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
 | |
| var text = freeze(["#text"]);
 | |
| var html = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns", "slot"]);
 | |
| var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "exponent", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "intercept", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "slope", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "tablevalues", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
 | |
| var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
 | |
| var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
 | |
| var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
 | |
| var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
 | |
| var TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm);
 | |
| var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
 | |
| var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
 | |
| var IS_ALLOWED_URI = seal(
 | |
|   /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
 | |
|   // eslint-disable-line no-useless-escape
 | |
| );
 | |
| var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
 | |
| var ATTR_WHITESPACE = seal(
 | |
|   /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
 | |
|   // eslint-disable-line no-control-regex
 | |
| );
 | |
| var DOCTYPE_NAME = seal(/^html$/i);
 | |
| var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
 | |
| var EXPRESSIONS = /* @__PURE__ */ Object.freeze({
 | |
|   __proto__: null,
 | |
|   ARIA_ATTR,
 | |
|   ATTR_WHITESPACE,
 | |
|   CUSTOM_ELEMENT,
 | |
|   DATA_ATTR,
 | |
|   DOCTYPE_NAME,
 | |
|   ERB_EXPR,
 | |
|   IS_ALLOWED_URI,
 | |
|   IS_SCRIPT_OR_DATA,
 | |
|   MUSTACHE_EXPR,
 | |
|   TMPLIT_EXPR
 | |
| });
 | |
| var NODE_TYPE = {
 | |
|   element: 1,
 | |
|   attribute: 2,
 | |
|   text: 3,
 | |
|   cdataSection: 4,
 | |
|   entityReference: 5,
 | |
|   // Deprecated
 | |
|   entityNode: 6,
 | |
|   // Deprecated
 | |
|   progressingInstruction: 7,
 | |
|   comment: 8,
 | |
|   document: 9,
 | |
|   documentType: 10,
 | |
|   documentFragment: 11,
 | |
|   notation: 12
 | |
|   // Deprecated
 | |
| };
 | |
| var getGlobal = /* @__PURE__ */ __name(function getGlobal2() {
 | |
|   return typeof window === "undefined" ? null : window;
 | |
| }, "getGlobal");
 | |
| var _createTrustedTypesPolicy = /* @__PURE__ */ __name(function _createTrustedTypesPolicy2(trustedTypes, purifyHostElement) {
 | |
|   if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") {
 | |
|     return null;
 | |
|   }
 | |
|   let suffix = null;
 | |
|   const ATTR_NAME = "data-tt-policy-suffix";
 | |
|   if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
 | |
|     suffix = purifyHostElement.getAttribute(ATTR_NAME);
 | |
|   }
 | |
|   const policyName = "dompurify" + (suffix ? "#" + suffix : "");
 | |
|   try {
 | |
|     return trustedTypes.createPolicy(policyName, {
 | |
|       createHTML(html2) {
 | |
|         return html2;
 | |
|       },
 | |
|       createScriptURL(scriptUrl) {
 | |
|         return scriptUrl;
 | |
|       }
 | |
|     });
 | |
|   } catch (_) {
 | |
|     console.warn("TrustedTypes policy " + policyName + " could not be created.");
 | |
|     return null;
 | |
|   }
 | |
| }, "_createTrustedTypesPolicy");
 | |
| var _createHooksMap = /* @__PURE__ */ __name(function _createHooksMap2() {
 | |
|   return {
 | |
|     afterSanitizeAttributes: [],
 | |
|     afterSanitizeElements: [],
 | |
|     afterSanitizeShadowDOM: [],
 | |
|     beforeSanitizeAttributes: [],
 | |
|     beforeSanitizeElements: [],
 | |
|     beforeSanitizeShadowDOM: [],
 | |
|     uponSanitizeAttribute: [],
 | |
|     uponSanitizeElement: [],
 | |
|     uponSanitizeShadowNode: []
 | |
|   };
 | |
| }, "_createHooksMap");
 | |
| function createDOMPurify() {
 | |
|   let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
 | |
|   const DOMPurify = /* @__PURE__ */ __name((root) => createDOMPurify(root), "DOMPurify");
 | |
|   DOMPurify.version = "3.2.6";
 | |
|   DOMPurify.removed = [];
 | |
|   if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
 | |
|     DOMPurify.isSupported = false;
 | |
|     return DOMPurify;
 | |
|   }
 | |
|   let {
 | |
|     document: document2
 | |
|   } = window2;
 | |
|   const originalDocument = document2;
 | |
|   const currentScript = originalDocument.currentScript;
 | |
|   const {
 | |
|     DocumentFragment,
 | |
|     HTMLTemplateElement,
 | |
|     Node,
 | |
|     Element,
 | |
|     NodeFilter,
 | |
|     NamedNodeMap = window2.NamedNodeMap || window2.MozNamedAttrMap,
 | |
|     HTMLFormElement,
 | |
|     DOMParser,
 | |
|     trustedTypes
 | |
|   } = window2;
 | |
|   const ElementPrototype = Element.prototype;
 | |
|   const cloneNode = lookupGetter(ElementPrototype, "cloneNode");
 | |
|   const remove = lookupGetter(ElementPrototype, "remove");
 | |
|   const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
 | |
|   const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
 | |
|   const getParentNode = lookupGetter(ElementPrototype, "parentNode");
 | |
|   if (typeof HTMLTemplateElement === "function") {
 | |
|     const template = document2.createElement("template");
 | |
|     if (template.content && template.content.ownerDocument) {
 | |
|       document2 = template.content.ownerDocument;
 | |
|     }
 | |
|   }
 | |
|   let trustedTypesPolicy;
 | |
|   let emptyHTML = "";
 | |
|   const {
 | |
|     implementation,
 | |
|     createNodeIterator,
 | |
|     createDocumentFragment,
 | |
|     getElementsByTagName
 | |
|   } = document2;
 | |
|   const {
 | |
|     importNode
 | |
|   } = originalDocument;
 | |
|   let hooks = _createHooksMap();
 | |
|   DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0;
 | |
|   const {
 | |
|     MUSTACHE_EXPR: MUSTACHE_EXPR2,
 | |
|     ERB_EXPR: ERB_EXPR2,
 | |
|     TMPLIT_EXPR: TMPLIT_EXPR2,
 | |
|     DATA_ATTR: DATA_ATTR2,
 | |
|     ARIA_ATTR: ARIA_ATTR2,
 | |
|     IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA2,
 | |
|     ATTR_WHITESPACE: ATTR_WHITESPACE2,
 | |
|     CUSTOM_ELEMENT: CUSTOM_ELEMENT2
 | |
|   } = EXPRESSIONS;
 | |
|   let {
 | |
|     IS_ALLOWED_URI: IS_ALLOWED_URI$1
 | |
|   } = EXPRESSIONS;
 | |
|   let ALLOWED_TAGS = null;
 | |
|   const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
 | |
|   let ALLOWED_ATTR = null;
 | |
|   const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
 | |
|   let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
 | |
|     tagNameCheck: {
 | |
|       writable: true,
 | |
|       configurable: false,
 | |
|       enumerable: true,
 | |
|       value: null
 | |
|     },
 | |
|     attributeNameCheck: {
 | |
|       writable: true,
 | |
|       configurable: false,
 | |
|       enumerable: true,
 | |
|       value: null
 | |
|     },
 | |
|     allowCustomizedBuiltInElements: {
 | |
|       writable: true,
 | |
|       configurable: false,
 | |
|       enumerable: true,
 | |
|       value: false
 | |
|     }
 | |
|   }));
 | |
|   let FORBID_TAGS = null;
 | |
|   let FORBID_ATTR = null;
 | |
|   let ALLOW_ARIA_ATTR = true;
 | |
|   let ALLOW_DATA_ATTR = true;
 | |
|   let ALLOW_UNKNOWN_PROTOCOLS = false;
 | |
|   let ALLOW_SELF_CLOSE_IN_ATTR = true;
 | |
|   let SAFE_FOR_TEMPLATES = false;
 | |
|   let SAFE_FOR_XML = true;
 | |
|   let WHOLE_DOCUMENT = false;
 | |
|   let SET_CONFIG = false;
 | |
|   let FORCE_BODY = false;
 | |
|   let RETURN_DOM = false;
 | |
|   let RETURN_DOM_FRAGMENT = false;
 | |
|   let RETURN_TRUSTED_TYPE = false;
 | |
|   let SANITIZE_DOM = true;
 | |
|   let SANITIZE_NAMED_PROPS = false;
 | |
|   const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
 | |
|   let KEEP_CONTENT = true;
 | |
|   let IN_PLACE = false;
 | |
|   let USE_PROFILES = {};
 | |
|   let FORBID_CONTENTS = null;
 | |
|   const DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
 | |
|   let DATA_URI_TAGS = null;
 | |
|   const DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
 | |
|   let URI_SAFE_ATTRIBUTES = null;
 | |
|   const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
 | |
|   const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
 | |
|   const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
 | |
|   const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
 | |
|   let NAMESPACE = HTML_NAMESPACE;
 | |
|   let IS_EMPTY_INPUT = false;
 | |
|   let ALLOWED_NAMESPACES = null;
 | |
|   const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
 | |
|   let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
 | |
|   let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
 | |
|   const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
 | |
|   let PARSER_MEDIA_TYPE = null;
 | |
|   const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
 | |
|   const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
 | |
|   let transformCaseFunc = null;
 | |
|   let CONFIG = null;
 | |
|   const formElement = document2.createElement("form");
 | |
|   const isRegexOrFunction = /* @__PURE__ */ __name(function isRegexOrFunction2(testValue) {
 | |
|     return testValue instanceof RegExp || testValue instanceof Function;
 | |
|   }, "isRegexOrFunction");
 | |
|   const _parseConfig = /* @__PURE__ */ __name(function _parseConfig2() {
 | |
|     let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
 | |
|     if (CONFIG && CONFIG === cfg) {
 | |
|       return;
 | |
|     }
 | |
|     if (!cfg || typeof cfg !== "object") {
 | |
|       cfg = {};
 | |
|     }
 | |
|     cfg = clone(cfg);
 | |
|     PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
 | |
|     SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
 | |
|     transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
 | |
|     ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
 | |
|     ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
 | |
|     ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
 | |
|     URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
 | |
|     DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
 | |
|     FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
 | |
|     FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
 | |
|     FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
 | |
|     USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false;
 | |
|     ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
 | |
|     ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
 | |
|     ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
 | |
|     ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
 | |
|     SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
 | |
|     SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
 | |
|     WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
 | |
|     RETURN_DOM = cfg.RETURN_DOM || false;
 | |
|     RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
 | |
|     RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
 | |
|     FORCE_BODY = cfg.FORCE_BODY || false;
 | |
|     SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
 | |
|     SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
 | |
|     KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
 | |
|     IN_PLACE = cfg.IN_PLACE || false;
 | |
|     IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
 | |
|     NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
 | |
|     MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
 | |
|     HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
 | |
|     CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
 | |
|     if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
 | |
|       CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
 | |
|     }
 | |
|     if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
 | |
|       CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
 | |
|     }
 | |
|     if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
 | |
|       CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
 | |
|     }
 | |
|     if (SAFE_FOR_TEMPLATES) {
 | |
|       ALLOW_DATA_ATTR = false;
 | |
|     }
 | |
|     if (RETURN_DOM_FRAGMENT) {
 | |
|       RETURN_DOM = true;
 | |
|     }
 | |
|     if (USE_PROFILES) {
 | |
|       ALLOWED_TAGS = addToSet({}, text);
 | |
|       ALLOWED_ATTR = [];
 | |
|       if (USE_PROFILES.html === true) {
 | |
|         addToSet(ALLOWED_TAGS, html$1);
 | |
|         addToSet(ALLOWED_ATTR, html);
 | |
|       }
 | |
|       if (USE_PROFILES.svg === true) {
 | |
|         addToSet(ALLOWED_TAGS, svg$1);
 | |
|         addToSet(ALLOWED_ATTR, svg);
 | |
|         addToSet(ALLOWED_ATTR, xml);
 | |
|       }
 | |
|       if (USE_PROFILES.svgFilters === true) {
 | |
|         addToSet(ALLOWED_TAGS, svgFilters);
 | |
|         addToSet(ALLOWED_ATTR, svg);
 | |
|         addToSet(ALLOWED_ATTR, xml);
 | |
|       }
 | |
|       if (USE_PROFILES.mathMl === true) {
 | |
|         addToSet(ALLOWED_TAGS, mathMl$1);
 | |
|         addToSet(ALLOWED_ATTR, mathMl);
 | |
|         addToSet(ALLOWED_ATTR, xml);
 | |
|       }
 | |
|     }
 | |
|     if (cfg.ADD_TAGS) {
 | |
|       if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
 | |
|         ALLOWED_TAGS = clone(ALLOWED_TAGS);
 | |
|       }
 | |
|       addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
 | |
|     }
 | |
|     if (cfg.ADD_ATTR) {
 | |
|       if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
 | |
|         ALLOWED_ATTR = clone(ALLOWED_ATTR);
 | |
|       }
 | |
|       addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
 | |
|     }
 | |
|     if (cfg.ADD_URI_SAFE_ATTR) {
 | |
|       addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
 | |
|     }
 | |
|     if (cfg.FORBID_CONTENTS) {
 | |
|       if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
 | |
|         FORBID_CONTENTS = clone(FORBID_CONTENTS);
 | |
|       }
 | |
|       addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
 | |
|     }
 | |
|     if (KEEP_CONTENT) {
 | |
|       ALLOWED_TAGS["#text"] = true;
 | |
|     }
 | |
|     if (WHOLE_DOCUMENT) {
 | |
|       addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
 | |
|     }
 | |
|     if (ALLOWED_TAGS.table) {
 | |
|       addToSet(ALLOWED_TAGS, ["tbody"]);
 | |
|       delete FORBID_TAGS.tbody;
 | |
|     }
 | |
|     if (cfg.TRUSTED_TYPES_POLICY) {
 | |
|       if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") {
 | |
|         throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
 | |
|       }
 | |
|       if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
 | |
|         throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
 | |
|       }
 | |
|       trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
 | |
|       emptyHTML = trustedTypesPolicy.createHTML("");
 | |
|     } else {
 | |
|       if (trustedTypesPolicy === void 0) {
 | |
|         trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
 | |
|       }
 | |
|       if (trustedTypesPolicy !== null && typeof emptyHTML === "string") {
 | |
|         emptyHTML = trustedTypesPolicy.createHTML("");
 | |
|       }
 | |
|     }
 | |
|     if (freeze) {
 | |
|       freeze(cfg);
 | |
|     }
 | |
|     CONFIG = cfg;
 | |
|   }, "_parseConfig");
 | |
|   const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
 | |
|   const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
 | |
|   const _checkValidNamespace = /* @__PURE__ */ __name(function _checkValidNamespace2(element) {
 | |
|     let parent = getParentNode(element);
 | |
|     if (!parent || !parent.tagName) {
 | |
|       parent = {
 | |
|         namespaceURI: NAMESPACE,
 | |
|         tagName: "template"
 | |
|       };
 | |
|     }
 | |
|     const tagName = stringToLowerCase(element.tagName);
 | |
|     const parentTagName = stringToLowerCase(parent.tagName);
 | |
|     if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
 | |
|       return false;
 | |
|     }
 | |
|     if (element.namespaceURI === SVG_NAMESPACE) {
 | |
|       if (parent.namespaceURI === HTML_NAMESPACE) {
 | |
|         return tagName === "svg";
 | |
|       }
 | |
|       if (parent.namespaceURI === MATHML_NAMESPACE) {
 | |
|         return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
 | |
|       }
 | |
|       return Boolean(ALL_SVG_TAGS[tagName]);
 | |
|     }
 | |
|     if (element.namespaceURI === MATHML_NAMESPACE) {
 | |
|       if (parent.namespaceURI === HTML_NAMESPACE) {
 | |
|         return tagName === "math";
 | |
|       }
 | |
|       if (parent.namespaceURI === SVG_NAMESPACE) {
 | |
|         return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
 | |
|       }
 | |
|       return Boolean(ALL_MATHML_TAGS[tagName]);
 | |
|     }
 | |
|     if (element.namespaceURI === HTML_NAMESPACE) {
 | |
|       if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
 | |
|         return false;
 | |
|       }
 | |
|       if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
 | |
|         return false;
 | |
|       }
 | |
|       return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
 | |
|     }
 | |
|     if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
 | |
|       return true;
 | |
|     }
 | |
|     return false;
 | |
|   }, "_checkValidNamespace");
 | |
|   const _forceRemove = /* @__PURE__ */ __name(function _forceRemove2(node) {
 | |
|     arrayPush(DOMPurify.removed, {
 | |
|       element: node
 | |
|     });
 | |
|     try {
 | |
|       getParentNode(node).removeChild(node);
 | |
|     } catch (_) {
 | |
|       remove(node);
 | |
|     }
 | |
|   }, "_forceRemove");
 | |
|   const _removeAttribute = /* @__PURE__ */ __name(function _removeAttribute2(name, element) {
 | |
|     try {
 | |
|       arrayPush(DOMPurify.removed, {
 | |
|         attribute: element.getAttributeNode(name),
 | |
|         from: element
 | |
|       });
 | |
|     } catch (_) {
 | |
|       arrayPush(DOMPurify.removed, {
 | |
|         attribute: null,
 | |
|         from: element
 | |
|       });
 | |
|     }
 | |
|     element.removeAttribute(name);
 | |
|     if (name === "is") {
 | |
|       if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
 | |
|         try {
 | |
|           _forceRemove(element);
 | |
|         } catch (_) {
 | |
|         }
 | |
|       } else {
 | |
|         try {
 | |
|           element.setAttribute(name, "");
 | |
|         } catch (_) {
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }, "_removeAttribute");
 | |
|   const _initDocument = /* @__PURE__ */ __name(function _initDocument2(dirty) {
 | |
|     let doc = null;
 | |
|     let leadingWhitespace = null;
 | |
|     if (FORCE_BODY) {
 | |
|       dirty = "<remove></remove>" + dirty;
 | |
|     } else {
 | |
|       const matches = stringMatch(dirty, /^[\r\n\t ]+/);
 | |
|       leadingWhitespace = matches && matches[0];
 | |
|     }
 | |
|     if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
 | |
|       dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
 | |
|     }
 | |
|     const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
 | |
|     if (NAMESPACE === HTML_NAMESPACE) {
 | |
|       try {
 | |
|         doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
 | |
|       } catch (_) {
 | |
|       }
 | |
|     }
 | |
|     if (!doc || !doc.documentElement) {
 | |
|       doc = implementation.createDocument(NAMESPACE, "template", null);
 | |
|       try {
 | |
|         doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
 | |
|       } catch (_) {
 | |
|       }
 | |
|     }
 | |
|     const body = doc.body || doc.documentElement;
 | |
|     if (dirty && leadingWhitespace) {
 | |
|       body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
 | |
|     }
 | |
|     if (NAMESPACE === HTML_NAMESPACE) {
 | |
|       return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
 | |
|     }
 | |
|     return WHOLE_DOCUMENT ? doc.documentElement : body;
 | |
|   }, "_initDocument");
 | |
|   const _createNodeIterator = /* @__PURE__ */ __name(function _createNodeIterator2(root) {
 | |
|     return createNodeIterator.call(
 | |
|       root.ownerDocument || root,
 | |
|       root,
 | |
|       // eslint-disable-next-line no-bitwise
 | |
|       NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
 | |
|       null
 | |
|     );
 | |
|   }, "_createNodeIterator");
 | |
|   const _isClobbered = /* @__PURE__ */ __name(function _isClobbered2(element) {
 | |
|     return element instanceof HTMLFormElement && (typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function");
 | |
|   }, "_isClobbered");
 | |
|   const _isNode = /* @__PURE__ */ __name(function _isNode2(value) {
 | |
|     return typeof Node === "function" && value instanceof Node;
 | |
|   }, "_isNode");
 | |
|   function _executeHooks(hooks2, currentNode, data) {
 | |
|     arrayForEach(hooks2, (hook) => {
 | |
|       hook.call(DOMPurify, currentNode, data, CONFIG);
 | |
|     });
 | |
|   }
 | |
|   __name(_executeHooks, "_executeHooks");
 | |
|   const _sanitizeElements = /* @__PURE__ */ __name(function _sanitizeElements2(currentNode) {
 | |
|     let content = null;
 | |
|     _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
 | |
|     if (_isClobbered(currentNode)) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     const tagName = transformCaseFunc(currentNode.nodeName);
 | |
|     _executeHooks(hooks.uponSanitizeElement, currentNode, {
 | |
|       tagName,
 | |
|       allowedTags: ALLOWED_TAGS
 | |
|     });
 | |
|     if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
 | |
|       if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
 | |
|         if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
 | |
|           return false;
 | |
|         }
 | |
|         if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
 | |
|           return false;
 | |
|         }
 | |
|       }
 | |
|       if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
 | |
|         const parentNode = getParentNode(currentNode) || currentNode.parentNode;
 | |
|         const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
 | |
|         if (childNodes && parentNode) {
 | |
|           const childCount = childNodes.length;
 | |
|           for (let i = childCount - 1; i >= 0; --i) {
 | |
|             const childClone = cloneNode(childNodes[i], true);
 | |
|             childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
 | |
|             parentNode.insertBefore(childClone, getNextSibling(currentNode));
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
 | |
|       _forceRemove(currentNode);
 | |
|       return true;
 | |
|     }
 | |
|     if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
 | |
|       content = currentNode.textContent;
 | |
|       arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
 | |
|         content = stringReplace(content, expr, " ");
 | |
|       });
 | |
|       if (currentNode.textContent !== content) {
 | |
|         arrayPush(DOMPurify.removed, {
 | |
|           element: currentNode.cloneNode()
 | |
|         });
 | |
|         currentNode.textContent = content;
 | |
|       }
 | |
|     }
 | |
|     _executeHooks(hooks.afterSanitizeElements, currentNode, null);
 | |
|     return false;
 | |
|   }, "_sanitizeElements");
 | |
|   const _isValidAttribute = /* @__PURE__ */ __name(function _isValidAttribute2(lcTag, lcName, value) {
 | |
|     if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
 | |
|       return false;
 | |
|     }
 | |
|     if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR2, lcName)) ;
 | |
|     else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR2, lcName)) ;
 | |
|     else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
 | |
|       if (
 | |
|         // First condition does a very basic check if a) it's basically a valid custom element tagname AND
 | |
|         // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
 | |
|         // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
 | |
|         _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND
 | |
|         // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
 | |
|         lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))
 | |
|       ) ;
 | |
|       else {
 | |
|         return false;
 | |
|       }
 | |
|     } else if (URI_SAFE_ATTRIBUTES[lcName]) ;
 | |
|     else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE2, ""))) ;
 | |
|     else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ;
 | |
|     else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA2, stringReplace(value, ATTR_WHITESPACE2, ""))) ;
 | |
|     else if (value) {
 | |
|       return false;
 | |
|     } else ;
 | |
|     return true;
 | |
|   }, "_isValidAttribute");
 | |
|   const _isBasicCustomElement = /* @__PURE__ */ __name(function _isBasicCustomElement2(tagName) {
 | |
|     return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT2);
 | |
|   }, "_isBasicCustomElement");
 | |
|   const _sanitizeAttributes = /* @__PURE__ */ __name(function _sanitizeAttributes2(currentNode) {
 | |
|     _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
 | |
|     const {
 | |
|       attributes
 | |
|     } = currentNode;
 | |
|     if (!attributes || _isClobbered(currentNode)) {
 | |
|       return;
 | |
|     }
 | |
|     const hookEvent = {
 | |
|       attrName: "",
 | |
|       attrValue: "",
 | |
|       keepAttr: true,
 | |
|       allowedAttributes: ALLOWED_ATTR,
 | |
|       forceKeepAttr: void 0
 | |
|     };
 | |
|     let l = attributes.length;
 | |
|     while (l--) {
 | |
|       const attr = attributes[l];
 | |
|       const {
 | |
|         name,
 | |
|         namespaceURI,
 | |
|         value: attrValue
 | |
|       } = attr;
 | |
|       const lcName = transformCaseFunc(name);
 | |
|       const initValue = attrValue;
 | |
|       let value = name === "value" ? initValue : stringTrim(initValue);
 | |
|       hookEvent.attrName = lcName;
 | |
|       hookEvent.attrValue = value;
 | |
|       hookEvent.keepAttr = true;
 | |
|       hookEvent.forceKeepAttr = void 0;
 | |
|       _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
 | |
|       value = hookEvent.attrValue;
 | |
|       if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
 | |
|         _removeAttribute(name, currentNode);
 | |
|         value = SANITIZE_NAMED_PROPS_PREFIX + value;
 | |
|       }
 | |
|       if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
 | |
|         _removeAttribute(name, currentNode);
 | |
|         continue;
 | |
|       }
 | |
|       if (hookEvent.forceKeepAttr) {
 | |
|         continue;
 | |
|       }
 | |
|       if (!hookEvent.keepAttr) {
 | |
|         _removeAttribute(name, currentNode);
 | |
|         continue;
 | |
|       }
 | |
|       if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
 | |
|         _removeAttribute(name, currentNode);
 | |
|         continue;
 | |
|       }
 | |
|       if (SAFE_FOR_TEMPLATES) {
 | |
|         arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
 | |
|           value = stringReplace(value, expr, " ");
 | |
|         });
 | |
|       }
 | |
|       const lcTag = transformCaseFunc(currentNode.nodeName);
 | |
|       if (!_isValidAttribute(lcTag, lcName, value)) {
 | |
|         _removeAttribute(name, currentNode);
 | |
|         continue;
 | |
|       }
 | |
|       if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") {
 | |
|         if (namespaceURI) ;
 | |
|         else {
 | |
|           switch (trustedTypes.getAttributeType(lcTag, lcName)) {
 | |
|             case "TrustedHTML": {
 | |
|               value = trustedTypesPolicy.createHTML(value);
 | |
|               break;
 | |
|             }
 | |
|             case "TrustedScriptURL": {
 | |
|               value = trustedTypesPolicy.createScriptURL(value);
 | |
|               break;
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|       if (value !== initValue) {
 | |
|         try {
 | |
|           if (namespaceURI) {
 | |
|             currentNode.setAttributeNS(namespaceURI, name, value);
 | |
|           } else {
 | |
|             currentNode.setAttribute(name, value);
 | |
|           }
 | |
|           if (_isClobbered(currentNode)) {
 | |
|             _forceRemove(currentNode);
 | |
|           } else {
 | |
|             arrayPop(DOMPurify.removed);
 | |
|           }
 | |
|         } catch (_) {
 | |
|           _removeAttribute(name, currentNode);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
 | |
|   }, "_sanitizeAttributes");
 | |
|   const _sanitizeShadowDOM = /* @__PURE__ */ __name(function _sanitizeShadowDOM2(fragment) {
 | |
|     let shadowNode = null;
 | |
|     const shadowIterator = _createNodeIterator(fragment);
 | |
|     _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
 | |
|     while (shadowNode = shadowIterator.nextNode()) {
 | |
|       _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
 | |
|       _sanitizeElements(shadowNode);
 | |
|       _sanitizeAttributes(shadowNode);
 | |
|       if (shadowNode.content instanceof DocumentFragment) {
 | |
|         _sanitizeShadowDOM2(shadowNode.content);
 | |
|       }
 | |
|     }
 | |
|     _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
 | |
|   }, "_sanitizeShadowDOM");
 | |
|   DOMPurify.sanitize = function(dirty) {
 | |
|     let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
 | |
|     let body = null;
 | |
|     let importedNode = null;
 | |
|     let currentNode = null;
 | |
|     let returnNode = null;
 | |
|     IS_EMPTY_INPUT = !dirty;
 | |
|     if (IS_EMPTY_INPUT) {
 | |
|       dirty = "<!-->";
 | |
|     }
 | |
|     if (typeof dirty !== "string" && !_isNode(dirty)) {
 | |
|       if (typeof dirty.toString === "function") {
 | |
|         dirty = dirty.toString();
 | |
|         if (typeof dirty !== "string") {
 | |
|           throw typeErrorCreate("dirty is not a string, aborting");
 | |
|         }
 | |
|       } else {
 | |
|         throw typeErrorCreate("toString is not a function");
 | |
|       }
 | |
|     }
 | |
|     if (!DOMPurify.isSupported) {
 | |
|       return dirty;
 | |
|     }
 | |
|     if (!SET_CONFIG) {
 | |
|       _parseConfig(cfg);
 | |
|     }
 | |
|     DOMPurify.removed = [];
 | |
|     if (typeof dirty === "string") {
 | |
|       IN_PLACE = false;
 | |
|     }
 | |
|     if (IN_PLACE) {
 | |
|       if (dirty.nodeName) {
 | |
|         const tagName = transformCaseFunc(dirty.nodeName);
 | |
|         if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
 | |
|           throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
 | |
|         }
 | |
|       }
 | |
|     } else if (dirty instanceof Node) {
 | |
|       body = _initDocument("<!---->");
 | |
|       importedNode = body.ownerDocument.importNode(dirty, true);
 | |
|       if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") {
 | |
|         body = importedNode;
 | |
|       } else if (importedNode.nodeName === "HTML") {
 | |
|         body = importedNode;
 | |
|       } else {
 | |
|         body.appendChild(importedNode);
 | |
|       }
 | |
|     } else {
 | |
|       if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
 | |
|       dirty.indexOf("<") === -1) {
 | |
|         return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
 | |
|       }
 | |
|       body = _initDocument(dirty);
 | |
|       if (!body) {
 | |
|         return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
 | |
|       }
 | |
|     }
 | |
|     if (body && FORCE_BODY) {
 | |
|       _forceRemove(body.firstChild);
 | |
|     }
 | |
|     const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
 | |
|     while (currentNode = nodeIterator.nextNode()) {
 | |
|       _sanitizeElements(currentNode);
 | |
|       _sanitizeAttributes(currentNode);
 | |
|       if (currentNode.content instanceof DocumentFragment) {
 | |
|         _sanitizeShadowDOM(currentNode.content);
 | |
|       }
 | |
|     }
 | |
|     if (IN_PLACE) {
 | |
|       return dirty;
 | |
|     }
 | |
|     if (RETURN_DOM) {
 | |
|       if (RETURN_DOM_FRAGMENT) {
 | |
|         returnNode = createDocumentFragment.call(body.ownerDocument);
 | |
|         while (body.firstChild) {
 | |
|           returnNode.appendChild(body.firstChild);
 | |
|         }
 | |
|       } else {
 | |
|         returnNode = body;
 | |
|       }
 | |
|       if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
 | |
|         returnNode = importNode.call(originalDocument, returnNode, true);
 | |
|       }
 | |
|       return returnNode;
 | |
|     }
 | |
|     let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
 | |
|     if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
 | |
|       serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
 | |
|     }
 | |
|     if (SAFE_FOR_TEMPLATES) {
 | |
|       arrayForEach([MUSTACHE_EXPR2, ERB_EXPR2, TMPLIT_EXPR2], (expr) => {
 | |
|         serializedHTML = stringReplace(serializedHTML, expr, " ");
 | |
|       });
 | |
|     }
 | |
|     return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
 | |
|   };
 | |
|   DOMPurify.setConfig = function() {
 | |
|     let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
 | |
|     _parseConfig(cfg);
 | |
|     SET_CONFIG = true;
 | |
|   };
 | |
|   DOMPurify.clearConfig = function() {
 | |
|     CONFIG = null;
 | |
|     SET_CONFIG = false;
 | |
|   };
 | |
|   DOMPurify.isValidAttribute = function(tag, attr, value) {
 | |
|     if (!CONFIG) {
 | |
|       _parseConfig({});
 | |
|     }
 | |
|     const lcTag = transformCaseFunc(tag);
 | |
|     const lcName = transformCaseFunc(attr);
 | |
|     return _isValidAttribute(lcTag, lcName, value);
 | |
|   };
 | |
|   DOMPurify.addHook = function(entryPoint, hookFunction) {
 | |
|     if (typeof hookFunction !== "function") {
 | |
|       return;
 | |
|     }
 | |
|     arrayPush(hooks[entryPoint], hookFunction);
 | |
|   };
 | |
|   DOMPurify.removeHook = function(entryPoint, hookFunction) {
 | |
|     if (hookFunction !== void 0) {
 | |
|       const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
 | |
|       return index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];
 | |
|     }
 | |
|     return arrayPop(hooks[entryPoint]);
 | |
|   };
 | |
|   DOMPurify.removeHooks = function(entryPoint) {
 | |
|     hooks[entryPoint] = [];
 | |
|   };
 | |
|   DOMPurify.removeAllHooks = function() {
 | |
|     hooks = _createHooksMap();
 | |
|   };
 | |
|   return DOMPurify;
 | |
| }
 | |
| __name(createDOMPurify, "createDOMPurify");
 | |
| var purify = createDOMPurify();
 | |
| 
 | |
| // src/diagrams/common/common.ts
 | |
| var lineBreakRegex = /<br\s*\/?>/gi;
 | |
| var getRows = /* @__PURE__ */ __name((s) => {
 | |
|   if (!s) {
 | |
|     return [""];
 | |
|   }
 | |
|   const str = breakToPlaceholder(s).replace(/\\n/g, "#br#");
 | |
|   return str.split("#br#");
 | |
| }, "getRows");
 | |
| var setupDompurifyHooksIfNotSetup = /* @__PURE__ */ (() => {
 | |
|   let setup = false;
 | |
|   return () => {
 | |
|     if (!setup) {
 | |
|       setupDompurifyHooks();
 | |
|       setup = true;
 | |
|     }
 | |
|   };
 | |
| })();
 | |
| function setupDompurifyHooks() {
 | |
|   const TEMPORARY_ATTRIBUTE = "data-temp-href-target";
 | |
|   purify.addHook("beforeSanitizeAttributes", (node) => {
 | |
|     if (node.tagName === "A" && node.hasAttribute("target")) {
 | |
|       node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute("target") ?? "");
 | |
|     }
 | |
|   });
 | |
|   purify.addHook("afterSanitizeAttributes", (node) => {
 | |
|     if (node.tagName === "A" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
 | |
|       node.setAttribute("target", node.getAttribute(TEMPORARY_ATTRIBUTE) ?? "");
 | |
|       node.removeAttribute(TEMPORARY_ATTRIBUTE);
 | |
|       if (node.getAttribute("target") === "_blank") {
 | |
|         node.setAttribute("rel", "noopener");
 | |
|       }
 | |
|     }
 | |
|   });
 | |
| }
 | |
| __name(setupDompurifyHooks, "setupDompurifyHooks");
 | |
| var removeScript = /* @__PURE__ */ __name((txt) => {
 | |
|   setupDompurifyHooksIfNotSetup();
 | |
|   const sanitizedText = purify.sanitize(txt);
 | |
|   return sanitizedText;
 | |
| }, "removeScript");
 | |
| var sanitizeMore = /* @__PURE__ */ __name((text2, config2) => {
 | |
|   if (config2.flowchart?.htmlLabels !== false) {
 | |
|     const level = config2.securityLevel;
 | |
|     if (level === "antiscript" || level === "strict") {
 | |
|       text2 = removeScript(text2);
 | |
|     } else if (level !== "loose") {
 | |
|       text2 = breakToPlaceholder(text2);
 | |
|       text2 = text2.replace(/</g, "<").replace(/>/g, ">");
 | |
|       text2 = text2.replace(/=/g, "=");
 | |
|       text2 = placeholderToBreak(text2);
 | |
|     }
 | |
|   }
 | |
|   return text2;
 | |
| }, "sanitizeMore");
 | |
| var sanitizeText = /* @__PURE__ */ __name((text2, config2) => {
 | |
|   if (!text2) {
 | |
|     return text2;
 | |
|   }
 | |
|   if (config2.dompurifyConfig) {
 | |
|     text2 = purify.sanitize(sanitizeMore(text2, config2), config2.dompurifyConfig).toString();
 | |
|   } else {
 | |
|     text2 = purify.sanitize(sanitizeMore(text2, config2), {
 | |
|       FORBID_TAGS: ["style"]
 | |
|     }).toString();
 | |
|   }
 | |
|   return text2;
 | |
| }, "sanitizeText");
 | |
| var sanitizeTextOrArray = /* @__PURE__ */ __name((a, config2) => {
 | |
|   if (typeof a === "string") {
 | |
|     return sanitizeText(a, config2);
 | |
|   }
 | |
|   return a.flat().map((x) => sanitizeText(x, config2));
 | |
| }, "sanitizeTextOrArray");
 | |
| var hasBreaks = /* @__PURE__ */ __name((text2) => {
 | |
|   return lineBreakRegex.test(text2);
 | |
| }, "hasBreaks");
 | |
| var splitBreaks = /* @__PURE__ */ __name((text2) => {
 | |
|   return text2.split(lineBreakRegex);
 | |
| }, "splitBreaks");
 | |
| var placeholderToBreak = /* @__PURE__ */ __name((s) => {
 | |
|   return s.replace(/#br#/g, "<br/>");
 | |
| }, "placeholderToBreak");
 | |
| var breakToPlaceholder = /* @__PURE__ */ __name((s) => {
 | |
|   return s.replace(lineBreakRegex, "#br#");
 | |
| }, "breakToPlaceholder");
 | |
| var getUrl = /* @__PURE__ */ __name((useAbsolute) => {
 | |
|   let url = "";
 | |
|   if (useAbsolute) {
 | |
|     url = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search;
 | |
|     url = CSS.escape(url);
 | |
|   }
 | |
|   return url;
 | |
| }, "getUrl");
 | |
| var evaluate = /* @__PURE__ */ __name((val) => val === false || ["false", "null", "0"].includes(String(val).trim().toLowerCase()) ? false : true, "evaluate");
 | |
| var getMax = /* @__PURE__ */ __name(function(...values) {
 | |
|   const newValues = values.filter((value) => {
 | |
|     return !isNaN(value);
 | |
|   });
 | |
|   return Math.max(...newValues);
 | |
| }, "getMax");
 | |
| var getMin = /* @__PURE__ */ __name(function(...values) {
 | |
|   const newValues = values.filter((value) => {
 | |
|     return !isNaN(value);
 | |
|   });
 | |
|   return Math.min(...newValues);
 | |
| }, "getMin");
 | |
| var parseGenericTypes = /* @__PURE__ */ __name(function(input) {
 | |
|   const inputSets = input.split(/(,)/);
 | |
|   const output = [];
 | |
|   for (let i = 0; i < inputSets.length; i++) {
 | |
|     let thisSet = inputSets[i];
 | |
|     if (thisSet === "," && i > 0 && i + 1 < inputSets.length) {
 | |
|       const previousSet = inputSets[i - 1];
 | |
|       const nextSet = inputSets[i + 1];
 | |
|       if (shouldCombineSets(previousSet, nextSet)) {
 | |
|         thisSet = previousSet + "," + nextSet;
 | |
|         i++;
 | |
|         output.pop();
 | |
|       }
 | |
|     }
 | |
|     output.push(processSet(thisSet));
 | |
|   }
 | |
|   return output.join("");
 | |
| }, "parseGenericTypes");
 | |
| var countOccurrence = /* @__PURE__ */ __name((string, substring) => {
 | |
|   return Math.max(0, string.split(substring).length - 1);
 | |
| }, "countOccurrence");
 | |
| var shouldCombineSets = /* @__PURE__ */ __name((previousSet, nextSet) => {
 | |
|   const prevCount = countOccurrence(previousSet, "~");
 | |
|   const nextCount = countOccurrence(nextSet, "~");
 | |
|   return prevCount === 1 && nextCount === 1;
 | |
| }, "shouldCombineSets");
 | |
| var processSet = /* @__PURE__ */ __name((input) => {
 | |
|   const tildeCount = countOccurrence(input, "~");
 | |
|   let hasStartingTilde = false;
 | |
|   if (tildeCount <= 1) {
 | |
|     return input;
 | |
|   }
 | |
|   if (tildeCount % 2 !== 0 && input.startsWith("~")) {
 | |
|     input = input.substring(1);
 | |
|     hasStartingTilde = true;
 | |
|   }
 | |
|   const chars = [...input];
 | |
|   let first = chars.indexOf("~");
 | |
|   let last = chars.lastIndexOf("~");
 | |
|   while (first !== -1 && last !== -1 && first !== last) {
 | |
|     chars[first] = "<";
 | |
|     chars[last] = ">";
 | |
|     first = chars.indexOf("~");
 | |
|     last = chars.lastIndexOf("~");
 | |
|   }
 | |
|   if (hasStartingTilde) {
 | |
|     chars.unshift("~");
 | |
|   }
 | |
|   return chars.join("");
 | |
| }, "processSet");
 | |
| var isMathMLSupported = /* @__PURE__ */ __name(() => window.MathMLElement !== void 0, "isMathMLSupported");
 | |
| var katexRegex = /\$\$(.*)\$\$/g;
 | |
| var hasKatex = /* @__PURE__ */ __name((text2) => (text2.match(katexRegex)?.length ?? 0) > 0, "hasKatex");
 | |
| var calculateMathMLDimensions = /* @__PURE__ */ __name(async (text2, config2) => {
 | |
|   const divElem = document.createElement("div");
 | |
|   divElem.innerHTML = await renderKatexSanitized(text2, config2);
 | |
|   divElem.id = "katex-temp";
 | |
|   divElem.style.visibility = "hidden";
 | |
|   divElem.style.position = "absolute";
 | |
|   divElem.style.top = "0";
 | |
|   const body = document.querySelector("body");
 | |
|   body?.insertAdjacentElement("beforeend", divElem);
 | |
|   const dim = { width: divElem.clientWidth, height: divElem.clientHeight };
 | |
|   divElem.remove();
 | |
|   return dim;
 | |
| }, "calculateMathMLDimensions");
 | |
| var renderKatexUnsanitized = /* @__PURE__ */ __name(async (text2, config2) => {
 | |
|   if (!hasKatex(text2)) {
 | |
|     return text2;
 | |
|   }
 | |
|   if (!(isMathMLSupported() || config2.legacyMathML || config2.forceLegacyMathML)) {
 | |
|     return text2.replace(katexRegex, "MathML is unsupported in this environment.");
 | |
|   }
 | |
|   if (true) {
 | |
|     const { default: katex } = await import("./katex-A6QSACVP.mjs");
 | |
|     const outputMode = config2.forceLegacyMathML || !isMathMLSupported() && config2.legacyMathML ? "htmlAndMathml" : "mathml";
 | |
|     return text2.split(lineBreakRegex).map(
 | |
|       (line) => hasKatex(line) ? `<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${line}</div>` : `<div>${line}</div>`
 | |
|     ).join("").replace(
 | |
|       katexRegex,
 | |
|       (_, c) => katex.renderToString(c, {
 | |
|         throwOnError: true,
 | |
|         displayMode: true,
 | |
|         output: outputMode
 | |
|       }).replace(/\n/g, " ").replace(/<annotation.*<\/annotation>/g, "")
 | |
|     );
 | |
|   }
 | |
|   return text2.replace(
 | |
|     katexRegex,
 | |
|     "Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library."
 | |
|   );
 | |
| }, "renderKatexUnsanitized");
 | |
| var renderKatexSanitized = /* @__PURE__ */ __name(async (text2, config2) => {
 | |
|   return sanitizeText(await renderKatexUnsanitized(text2, config2), config2);
 | |
| }, "renderKatexSanitized");
 | |
| var common_default = {
 | |
|   getRows,
 | |
|   sanitizeText,
 | |
|   sanitizeTextOrArray,
 | |
|   hasBreaks,
 | |
|   splitBreaks,
 | |
|   lineBreakRegex,
 | |
|   removeScript,
 | |
|   getUrl,
 | |
|   evaluate,
 | |
|   getMax,
 | |
|   getMin
 | |
| };
 | |
| 
 | |
| // src/setupGraphViewbox.js
 | |
| var d3Attrs = /* @__PURE__ */ __name(function(d3Elem, attrs) {
 | |
|   for (let attr of attrs) {
 | |
|     d3Elem.attr(attr[0], attr[1]);
 | |
|   }
 | |
| }, "d3Attrs");
 | |
| var calculateSvgSizeAttrs = /* @__PURE__ */ __name(function(height, width, useMaxWidth) {
 | |
|   let attrs = /* @__PURE__ */ new Map();
 | |
|   if (useMaxWidth) {
 | |
|     attrs.set("width", "100%");
 | |
|     attrs.set("style", `max-width: ${width}px;`);
 | |
|   } else {
 | |
|     attrs.set("height", height);
 | |
|     attrs.set("width", width);
 | |
|   }
 | |
|   return attrs;
 | |
| }, "calculateSvgSizeAttrs");
 | |
| var configureSvgSize = /* @__PURE__ */ __name(function(svgElem, height, width, useMaxWidth) {
 | |
|   const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);
 | |
|   d3Attrs(svgElem, attrs);
 | |
| }, "configureSvgSize");
 | |
| var setupGraphViewbox = /* @__PURE__ */ __name(function(graph, svgElem, padding, useMaxWidth) {
 | |
|   const svgBounds = svgElem.node().getBBox();
 | |
|   const sWidth = svgBounds.width;
 | |
|   const sHeight = svgBounds.height;
 | |
|   log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);
 | |
|   let width = 0;
 | |
|   let height = 0;
 | |
|   log.info(`Graph bounds: ${width}x${height}`, graph);
 | |
|   width = sWidth + padding * 2;
 | |
|   height = sHeight + padding * 2;
 | |
|   log.info(`Calculated bounds: ${width}x${height}`);
 | |
|   configureSvgSize(svgElem, height, width, useMaxWidth);
 | |
|   const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;
 | |
|   svgElem.attr("viewBox", vBox);
 | |
| }, "setupGraphViewbox");
 | |
| 
 | |
| // src/styles.ts
 | |
| var themes = {};
 | |
| var getStyles = /* @__PURE__ */ __name((type, userStyles, options) => {
 | |
|   let diagramStyles = "";
 | |
|   if (type in themes && themes[type]) {
 | |
|     diagramStyles = themes[type](options);
 | |
|   } else {
 | |
|     log.warn(`No theme found for ${type}`);
 | |
|   }
 | |
|   return ` & {
 | |
|     font-family: ${options.fontFamily};
 | |
|     font-size: ${options.fontSize};
 | |
|     fill: ${options.textColor}
 | |
|   }
 | |
|   @keyframes edge-animation-frame {
 | |
|     from {
 | |
|       stroke-dashoffset: 0;
 | |
|     }
 | |
|   }
 | |
|   @keyframes dash {
 | |
|     to {
 | |
|       stroke-dashoffset: 0;
 | |
|     }
 | |
|   }
 | |
|   & .edge-animation-slow {
 | |
|     stroke-dasharray: 9,5 !important;
 | |
|     stroke-dashoffset: 900;
 | |
|     animation: dash 50s linear infinite;
 | |
|     stroke-linecap: round;
 | |
|   }
 | |
|   & .edge-animation-fast {
 | |
|     stroke-dasharray: 9,5 !important;
 | |
|     stroke-dashoffset: 900;
 | |
|     animation: dash 20s linear infinite;
 | |
|     stroke-linecap: round;
 | |
|   }
 | |
|   /* Classes common for multiple diagrams */
 | |
| 
 | |
|   & .error-icon {
 | |
|     fill: ${options.errorBkgColor};
 | |
|   }
 | |
|   & .error-text {
 | |
|     fill: ${options.errorTextColor};
 | |
|     stroke: ${options.errorTextColor};
 | |
|   }
 | |
| 
 | |
|   & .edge-thickness-normal {
 | |
|     stroke-width: 1px;
 | |
|   }
 | |
|   & .edge-thickness-thick {
 | |
|     stroke-width: 3.5px
 | |
|   }
 | |
|   & .edge-pattern-solid {
 | |
|     stroke-dasharray: 0;
 | |
|   }
 | |
|   & .edge-thickness-invisible {
 | |
|     stroke-width: 0;
 | |
|     fill: none;
 | |
|   }
 | |
|   & .edge-pattern-dashed{
 | |
|     stroke-dasharray: 3;
 | |
|   }
 | |
|   .edge-pattern-dotted {
 | |
|     stroke-dasharray: 2;
 | |
|   }
 | |
| 
 | |
|   & .marker {
 | |
|     fill: ${options.lineColor};
 | |
|     stroke: ${options.lineColor};
 | |
|   }
 | |
|   & .marker.cross {
 | |
|     stroke: ${options.lineColor};
 | |
|   }
 | |
| 
 | |
|   & svg {
 | |
|     font-family: ${options.fontFamily};
 | |
|     font-size: ${options.fontSize};
 | |
|   }
 | |
|    & p {
 | |
|     margin: 0
 | |
|    }
 | |
| 
 | |
|   ${diagramStyles}
 | |
| 
 | |
|   ${userStyles}
 | |
| `;
 | |
| }, "getStyles");
 | |
| var addStylesForDiagram = /* @__PURE__ */ __name((type, diagramTheme) => {
 | |
|   if (diagramTheme !== void 0) {
 | |
|     themes[type] = diagramTheme;
 | |
|   }
 | |
| }, "addStylesForDiagram");
 | |
| var styles_default = getStyles;
 | |
| 
 | |
| // src/diagrams/common/commonDb.ts
 | |
| var commonDb_exports = {};
 | |
| __export(commonDb_exports, {
 | |
|   clear: () => clear,
 | |
|   getAccDescription: () => getAccDescription,
 | |
|   getAccTitle: () => getAccTitle,
 | |
|   getDiagramTitle: () => getDiagramTitle,
 | |
|   setAccDescription: () => setAccDescription,
 | |
|   setAccTitle: () => setAccTitle,
 | |
|   setDiagramTitle: () => setDiagramTitle
 | |
| });
 | |
| var accTitle = "";
 | |
| var diagramTitle = "";
 | |
| var accDescription = "";
 | |
| var sanitizeText2 = /* @__PURE__ */ __name((txt) => sanitizeText(txt, getConfig()), "sanitizeText");
 | |
| var clear = /* @__PURE__ */ __name(() => {
 | |
|   accTitle = "";
 | |
|   accDescription = "";
 | |
|   diagramTitle = "";
 | |
| }, "clear");
 | |
| var setAccTitle = /* @__PURE__ */ __name((txt) => {
 | |
|   accTitle = sanitizeText2(txt).replace(/^\s+/g, "");
 | |
| }, "setAccTitle");
 | |
| var getAccTitle = /* @__PURE__ */ __name(() => accTitle, "getAccTitle");
 | |
| var setAccDescription = /* @__PURE__ */ __name((txt) => {
 | |
|   accDescription = sanitizeText2(txt).replace(/\n\s+/g, "\n");
 | |
| }, "setAccDescription");
 | |
| var getAccDescription = /* @__PURE__ */ __name(() => accDescription, "getAccDescription");
 | |
| var setDiagramTitle = /* @__PURE__ */ __name((txt) => {
 | |
|   diagramTitle = sanitizeText2(txt);
 | |
| }, "setDiagramTitle");
 | |
| var getDiagramTitle = /* @__PURE__ */ __name(() => diagramTitle, "getDiagramTitle");
 | |
| 
 | |
| // src/diagram-api/diagramAPI.ts
 | |
| var log2 = log;
 | |
| var setLogLevel2 = setLogLevel;
 | |
| var getConfig2 = getConfig;
 | |
| var setConfig2 = setConfig;
 | |
| var defaultConfig2 = defaultConfig;
 | |
| var sanitizeText3 = /* @__PURE__ */ __name((text2) => sanitizeText(text2, getConfig2()), "sanitizeText");
 | |
| var setupGraphViewbox2 = setupGraphViewbox;
 | |
| var getCommonDb = /* @__PURE__ */ __name(() => {
 | |
|   return commonDb_exports;
 | |
| }, "getCommonDb");
 | |
| var diagrams = {};
 | |
| var registerDiagram = /* @__PURE__ */ __name((id, diagram, detector) => {
 | |
|   if (diagrams[id]) {
 | |
|     log2.warn(`Diagram with id ${id} already registered. Overwriting.`);
 | |
|   }
 | |
|   diagrams[id] = diagram;
 | |
|   if (detector) {
 | |
|     addDetector(id, detector);
 | |
|   }
 | |
|   addStylesForDiagram(id, diagram.styles);
 | |
|   diagram.injectUtils?.(
 | |
|     log2,
 | |
|     setLogLevel2,
 | |
|     getConfig2,
 | |
|     sanitizeText3,
 | |
|     setupGraphViewbox2,
 | |
|     getCommonDb(),
 | |
|     () => {
 | |
|     }
 | |
|   );
 | |
| }, "registerDiagram");
 | |
| var getDiagram = /* @__PURE__ */ __name((name) => {
 | |
|   if (name in diagrams) {
 | |
|     return diagrams[name];
 | |
|   }
 | |
|   throw new DiagramNotFoundError(name);
 | |
| }, "getDiagram");
 | |
| var DiagramNotFoundError = class extends Error {
 | |
|   static {
 | |
|     __name(this, "DiagramNotFoundError");
 | |
|   }
 | |
|   constructor(name) {
 | |
|     super(`Diagram ${name} not found.`);
 | |
|   }
 | |
| };
 | |
| 
 | |
| export {
 | |
|   assignWithDepth_default,
 | |
|   rgba_default,
 | |
|   channel_default2 as channel_default,
 | |
|   is_dark_default,
 | |
|   lighten_default,
 | |
|   darken_default,
 | |
|   getThemeVariables3 as getThemeVariables,
 | |
|   themes_default,
 | |
|   defaultConfig_default,
 | |
|   sanitizeDirective,
 | |
|   defaultConfig,
 | |
|   setSiteConfig,
 | |
|   saveConfigFromInitialize,
 | |
|   updateSiteConfig,
 | |
|   getSiteConfig,
 | |
|   setConfig,
 | |
|   getConfig,
 | |
|   addDirective,
 | |
|   reset,
 | |
|   getUserDefinedConfig,
 | |
|   purify,
 | |
|   lineBreakRegex,
 | |
|   sanitizeText,
 | |
|   getUrl,
 | |
|   evaluate,
 | |
|   parseGenericTypes,
 | |
|   hasKatex,
 | |
|   calculateMathMLDimensions,
 | |
|   renderKatexSanitized,
 | |
|   common_default,
 | |
|   frontMatterRegex,
 | |
|   directiveRegex,
 | |
|   UnknownDiagramError,
 | |
|   detectors,
 | |
|   detectType,
 | |
|   registerLazyLoadedDiagrams,
 | |
|   getDiagramLoader,
 | |
|   configureSvgSize,
 | |
|   setupGraphViewbox,
 | |
|   styles_default,
 | |
|   clear,
 | |
|   setAccTitle,
 | |
|   getAccTitle,
 | |
|   setAccDescription,
 | |
|   getAccDescription,
 | |
|   setDiagramTitle,
 | |
|   getDiagramTitle,
 | |
|   commonDb_exports,
 | |
|   getConfig2,
 | |
|   setConfig2,
 | |
|   defaultConfig2,
 | |
|   sanitizeText3 as sanitizeText2,
 | |
|   setupGraphViewbox2,
 | |
|   registerDiagram,
 | |
|   getDiagram
 | |
| };
 | |
| /*! Bundled license information:
 | |
| 
 | |
| dompurify/dist/purify.es.mjs:
 | |
|   (*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE *)
 | |
| */
 | 
