{"version":3,"file":"config-389b86ff.js","sources":["../src/logger.ts","../src/diagrams/common/common.ts","../src/themes/theme-helpers.js","../src/themes/erDiagram-oldHardcodedValues.ts","../src/themes/theme-base.js","../src/themes/theme-dark.js","../src/themes/theme-default.js","../src/themes/theme-forest.js","../src/themes/theme-neutral.js","../src/themes/index.js","../src/defaultConfig.ts","../src/assignWithDepth.js","../src/config.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable no-console */\nimport dayjs from 'dayjs';\n\nexport type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LEVELS: Record = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n\nexport const log: Record = {\n trace: (..._args: any[]) => {},\n debug: (..._args: any[]) => {},\n info: (..._args: any[]) => {},\n warn: (..._args: any[]) => {},\n error: (..._args: any[]) => {},\n fatal: (..._args: any[]) => {},\n};\n\n/**\n * Sets a log level\n *\n * @param level - The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level: keyof typeof LEVELS | number | string = 'fatal') {\n let numericLevel: number = LEVELS.fatal;\n if (typeof level === 'string') {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level as keyof typeof LEVELS];\n }\n } else if (typeof level === 'number') {\n numericLevel = level;\n }\n log.trace = () => {};\n log.debug = () => {};\n log.info = () => {};\n log.warn = () => {};\n log.error = () => {};\n log.fatal = () => {};\n\n if (numericLevel <= LEVELS.fatal) {\n log.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (numericLevel <= LEVELS.error) {\n log.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (numericLevel <= LEVELS.warn) {\n log.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (numericLevel <= LEVELS.info) {\n log.info = console.info\n ? console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (numericLevel <= LEVELS.debug) {\n log.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n if (numericLevel <= LEVELS.trace) {\n log.trace = console.debug\n ? console.debug.bind(console, format('TRACE'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('TRACE'));\n }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param level - The level for the log format\n * @returns The format with the timestamp and log level\n */\nconst format = (level: Uppercase): string => {\n const time = dayjs().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","import DOMPurify from 'dompurify';\nimport { MermaidConfig } from '../../config.type';\n\n/**\n * Gets the rows of lines in a string\n *\n * @param s - The string to check the lines for\n * @returns The rows in that string\n */\nexport const getRows = (s?: string): string[] => {\n if (!s) {\n return [''];\n }\n const str = breakToPlaceholder(s).replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\n/**\n * Removes script tags from a text\n *\n * @param txt - The text to sanitize\n * @returns The safer text\n */\nexport const removeScript = (txt: string): string => {\n return DOMPurify.sanitize(txt);\n};\n\nconst sanitizeMore = (text: string, config: MermaidConfig) => {\n if (config.flowchart?.htmlLabels !== false) {\n const level = config.securityLevel;\n if (level === 'antiscript' || level === 'strict') {\n text = removeScript(text);\n } else if (level !== 'loose') {\n text = breakToPlaceholder(text);\n text = text.replace(//g, '>');\n text = text.replace(/=/g, '=');\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\n\nexport const sanitizeText = (text: string, config: MermaidConfig): string => {\n if (!text) {\n return text;\n }\n if (config.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config), {\n FORBID_TAGS: ['style'],\n }).toString();\n }\n return text;\n};\n\nexport const sanitizeTextOrArray = (\n a: string | string[] | string[][],\n config: MermaidConfig\n): string | string[] => {\n if (typeof a === 'string') {\n return sanitizeText(a, config);\n }\n // TODO: Refactor to avoid flat.\n return a.flat().map((x: string) => sanitizeText(x, config));\n};\n\nexport const lineBreakRegex = //gi;\n\n/**\n * Whether or not a text has any line breaks\n *\n * @param text - The text to test\n * @returns Whether or not the text has breaks\n */\nexport const hasBreaks = (text: string): boolean => {\n return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on
tags\n *\n * @param text - Text to split\n * @returns List of lines as strings\n */\nexport const splitBreaks = (text: string): string[] => {\n return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to line breaks in HTML\n *\n * @param s - HTML with placeholders\n * @returns HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s: string): string => {\n return s.replace(/#br#/g, '
');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param s - HTML string\n * @returns String with placeholders\n */\nconst breakToPlaceholder = (s: string): string => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param useAbsolute - Whether to return the absolute URL or not\n * @returns The current URL\n */\nconst getUrl = (useAbsolute: boolean): string => {\n let url = '';\n if (useAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replaceAll(/\\(/g, '\\\\(');\n url = url.replaceAll(/\\)/g, '\\\\)');\n }\n\n return url;\n};\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param val - String or boolean to convert\n * @returns The result from the input\n */\nexport const evaluate = (val?: string | boolean): boolean =>\n val === false || ['false', 'null', '0'].includes(String(val).trim().toLowerCase()) ? false : true;\n\n/**\n * Makes generics in typescript syntax\n *\n * @example\n * Array of array of strings in typescript syntax\n *\n * ```js\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n * ```\n * @param text - The text to convert\n * @returns The converted string\n */\nexport const parseGenericTypes = function (text: string): string {\n let cleanedText = text;\n\n if (text.split('~').length - 1 >= 2) {\n let newCleanedText = cleanedText;\n\n // use a do...while loop instead of replaceAll to detect recursion\n // e.g. Array~Array~T~~\n do {\n cleanedText = newCleanedText;\n newCleanedText = cleanedText.replace(/~([^\\s,:;]+)~/, '<$1>');\n } while (newCleanedText != cleanedText);\n\n return parseGenericTypes(newCleanedText);\n } else {\n return cleanedText;\n }\n};\n\nexport default {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n};\n","import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n","/**\n * Values that have been hardcoded in src/diagrams/er/styles.js. These can be used by\n * theme-_._ files to maintain display styles until themes, styles, renderers are revised. --\n * 2022-09-22\n */\nexport const oldAttributeBackgroundColorOdd = '#ffffff';\nexport const oldAttributeBackgroundColorEven = '#f2f2f2';\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for instance line color. Default value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n\n this.primaryColor = '#fff4dd';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n this.THEME_COLOR_LIMIT = 12;\n\n // dark\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n }\n updateColors() {\n // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* Sequence Diagram variables */\n\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the states*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScale' + i] = darken(this['cScale' + i], 25);\n }\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] ||\n adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* cScale */\n this.cScale1 = this.cScale1 || '#0b0000';\n this.cScale2 = this.cScale2 || '#4d1037';\n this.cScale3 = this.cScale3 || '#3f5258';\n this.cScale4 = this.cScale4 || '#4f2f1b';\n this.cScale5 = this.cScale5 || '#6e0a0a';\n this.cScale6 = this.cScale6 || '#3b0048';\n this.cScale7 = this.cScale7 || '#995a01';\n this.cScale8 = this.cScale8 || '#154706';\n this.cScale9 = this.cScale9 || '#161722';\n this.cScale10 = this.cScale10 || '#00296f';\n this.cScale11 = this.cScale11 || '#01629c';\n this.cScale12 = this.cScale12 || '#010029';\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || lighten(this.background, 2);\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, rgba, adjust, darken } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n // Setup the label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n if (this.labelTextColor !== 'calculated') {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.labelTextColor;\n }\n }\n\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Each color-set will have a background, a foreground and a border color */\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n // Setup the peer color for the set, useful for borders\n this['cScale' + i] = darken(this['cScale' + i], 10);\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n }\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n }\n\n // Setup teh label color for the set\n this.scaleLabelColor =\n this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n ? this.scaleLabelColor\n : this.labelTextColor;\n\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] =\n this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n oldAttributeBackgroundColorEven,\n oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.THEME_COLOR_LIMIT = 12;\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* C4 Context Diagram variables */\n\n this.personBorder = 'calculated';\n this.personBkg = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Color Scale */\n /* Each color-set will have a background, a foreground and a border color */\n\n this.cScale0 = this.cScale0 || '#555';\n this.cScale1 = this.cScale1 || '#F4F4F4';\n this.cScale2 = this.cScale2 || '#555';\n this.cScale3 = this.cScale3 || '#BBB';\n this.cScale4 = this.cScale4 || '#777';\n this.cScale5 = this.cScale5 || '#999';\n this.cScale6 = this.cScale6 || '#DDD';\n this.cScale7 = this.cScale7 || '#FFF';\n this.cScale8 = this.cScale8 || '#DDD';\n this.cScale9 = this.cScale9 || '#BBB';\n this.cScale10 = this.cScale10 || '#999';\n this.cScale11 = this.cScale11 || '#777';\n\n // Setup the inverted color for the set\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n }\n // Setup the peer color for the set, useful for borders\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n } else {\n this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n }\n }\n\n // Setup the label color for the set\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n this['cScaleLabel0'] = this['cScaleLabel0'] || this.cScale1;\n this['cScaleLabel2'] = this['cScaleLabel2'] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n }\n\n for (let i = 0; i < 5; i++) {\n this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this['surfacePeer' + i] =\n this['surfacePeer' + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n /* Pie diagram */\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this['pie' + i] = this['cScale' + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n /* -------------------------------------------------- */\n /* EntityRelationship diagrams */\n\n this.attributeBackgroundColorOdd =\n this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven =\n this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n /* -------------------------------------------------- */\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n","import theme from './themes';\nimport { MermaidConfig } from './config.type';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**\n *\n * ```js\n * mermaid.initialize({ flowchart:{ htmlLabels: false } });\n * ```\n *\n * **Example 2:**\n *\n * ```html\n * \n * ```\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n */\nconst config: Partial = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n *\n * @example\n *\n * ```js\n * {\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n * }\n * ```\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | --------------------------------------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 'trace','debug','info','warn','error','fatal' |\n *\n * **Notes:**\n *\n * - Trace: 0\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ |\n * | securityLevel | Level of trust for parsed diagram | string | Required | 'sandbox', 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n * functionality is enabled\n * - **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This\n * prevent any JavaScript from running in the context. This may hinder interactive functionality\n * of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc.\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behavior.\n *\n * **Notes**:\n *\n * This matters if your files are checked into source control e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the flowchart | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper, elk |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid, elk for layout using\n * elkjs\n *\n * Default value: 'dagre-wrapper'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n hideUnusedParticipants: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open Sans\", sans-serif'\n */\n actorFontFamily: '\"Open Sans\", sans-serif',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ---------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Date/time format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ------------| ------ | -------- | ------- |\n * | tickInterval | axis ticks | string | Optional | string |\n *\n * **Notes:**\n *\n * Pattern is /^([1-9][0-9]*)(minute|hour|day|week|month)$/\n *\n * Default value: undefined\n */\n tickInterval: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n /** The object containing configurations specific for timeline diagrams */\n timeline: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n disableMulticolor: false,\n },\n class: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n arrowMarkerAbsolute: false,\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n state: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------------------------------------ | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding between text in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding between text in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n gitGraph: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the Git diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n diagramPadding: 8,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0,\n },\n mainBranchName: 'main',\n mainBranchOrder: 0,\n showCommitLabel: true,\n showBranches: true,\n rotateCommitLabel: true,\n },\n\n /** The object containing configurations specific for c4 diagrams */\n c4: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------- | ------- | -------- | ------------------ |\n * | c4ShapeMargin | Margin between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n c4ShapeMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------- | ------- | -------- | ------------------ |\n * | c4ShapePadding | Padding between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n c4ShapePadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | width | Width of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 216\n */\n width: 216,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------- | ------- | -------- | ------------------ |\n * | height | Height of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 60\n */\n height: 60,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | boxMargin | Margin around boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------- | ------- | -------- | ------------------ |\n * | c4ShapeInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many shapes to place in each row.\n *\n * Default value: 4\n */\n c4ShapeInRow: 4,\n\n nextLinePaddingX: 0,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ------------------ |\n * | c4BoundaryInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many boundaries to place in each row.\n *\n * Default value: 2\n */\n c4BoundaryInRow: 2,\n\n /**\n * This sets the font size of Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n personFontSize: 14,\n /**\n * This sets the font family of Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n personFontWeight: 'normal',\n\n /**\n * This sets the font size of External Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_personFontSize: 14,\n /**\n * This sets the font family of External Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_personFontWeight: 'normal',\n\n /**\n * This sets the font size of System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n systemFontSize: 14,\n /**\n * This sets the font family of System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n systemFontWeight: 'normal',\n\n /**\n * This sets the font size of External System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_systemFontSize: 14,\n /**\n * This sets the font family of External System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_systemFontWeight: 'normal',\n\n /**\n * This sets the font size of System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_dbFontSize: 14,\n /**\n * This sets the font family of System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_dbFontSize: 14,\n /**\n * This sets the font family of External System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_queueFontSize: 14,\n /**\n * This sets the font family of System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_queueFontSize: 14,\n /**\n * This sets the font family of External System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of Boundary shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n boundaryFontSize: 14,\n /**\n * This sets the font family of Boundary shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n boundaryFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Boundary shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n boundaryFontWeight: 'normal',\n\n /**\n * This sets the font size of Message shape for the diagram\n *\n * **Notes:** Default value: 12.\n */\n messageFontSize: 12,\n /**\n * This sets the font family of Message shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n messageFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Message shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n messageFontWeight: 'normal',\n\n /**\n * This sets the font size of Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n containerFontSize: 14,\n /**\n * This sets the font family of Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n containerFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_containerFontSize: 14,\n /**\n * This sets the font family of External Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_containerFontWeight: 'normal',\n\n /**\n * This sets the font size of Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_dbFontSize: 14,\n /**\n * This sets the font family of Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_dbFontSize: 14,\n /**\n * This sets the font family of External Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_queueFontSize: 14,\n /**\n * This sets the font family of Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_queueFontSize: 14,\n /**\n * This sets the font family of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n componentFontSize: 14,\n /**\n * This sets the font family of Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n componentFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_componentFontSize: 14,\n /**\n * This sets the font family of External Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_componentFontWeight: 'normal',\n\n /**\n * This sets the font size of Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_dbFontSize: 14,\n /**\n * This sets the font family of Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_dbFontSize: 14,\n /**\n * This sets the font family of External Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_dbFontWeight: 'normal',\n\n /**\n * This sets the font size of Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_queueFontSize: 14,\n /**\n * This sets the font family of Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_queueFontWeight: 'normal',\n\n /**\n * This sets the font size of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_queueFontSize: 14,\n /**\n * This sets the font family of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_queueFontWeight: 'normal',\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: true.\n */\n wrap: true,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n personFont: function () {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight,\n };\n },\n\n external_personFont: function () {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight,\n };\n },\n\n systemFont: function () {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight,\n };\n },\n\n external_systemFont: function () {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight,\n };\n },\n\n system_dbFont: function () {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight,\n };\n },\n\n external_system_dbFont: function () {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight,\n };\n },\n\n system_queueFont: function () {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight,\n };\n },\n\n external_system_queueFont: function () {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight,\n };\n },\n\n containerFont: function () {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight,\n };\n },\n\n external_containerFont: function () {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight,\n };\n },\n\n container_dbFont: function () {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight,\n };\n },\n\n external_container_dbFont: function () {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight,\n };\n },\n\n container_queueFont: function () {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight,\n };\n },\n\n external_container_queueFont: function () {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight,\n };\n },\n\n componentFont: function () {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight,\n };\n },\n\n external_componentFont: function () {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight,\n };\n },\n\n component_dbFont: function () {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight,\n };\n },\n\n external_component_dbFont: function () {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight,\n };\n },\n\n component_queueFont: function () {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight,\n };\n },\n\n external_component_queueFont: function () {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight,\n };\n },\n\n boundaryFont: function () {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight,\n };\n },\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n\n // ' Colors\n // ' ##################################\n person_bg_color: '#08427B',\n person_border_color: '#073B6F',\n external_person_bg_color: '#686868',\n external_person_border_color: '#8A8A8A',\n system_bg_color: '#1168BD',\n system_border_color: '#3C7FC0',\n system_db_bg_color: '#1168BD',\n system_db_border_color: '#3C7FC0',\n system_queue_bg_color: '#1168BD',\n system_queue_border_color: '#3C7FC0',\n external_system_bg_color: '#999999',\n external_system_border_color: '#8A8A8A',\n external_system_db_bg_color: '#999999',\n external_system_db_border_color: '#8A8A8A',\n external_system_queue_bg_color: '#999999',\n external_system_queue_border_color: '#8A8A8A',\n container_bg_color: '#438DD5',\n container_border_color: '#3C7FC0',\n container_db_bg_color: '#438DD5',\n container_db_border_color: '#3C7FC0',\n container_queue_bg_color: '#438DD5',\n container_queue_border_color: '#3C7FC0',\n external_container_bg_color: '#B3B3B3',\n external_container_border_color: '#A6A6A6',\n external_container_db_bg_color: '#B3B3B3',\n external_container_db_border_color: '#A6A6A6',\n external_container_queue_bg_color: '#B3B3B3',\n external_container_queue_border_color: '#A6A6A6',\n component_bg_color: '#85BBF0',\n component_border_color: '#78A8D8',\n component_db_bg_color: '#85BBF0',\n component_db_border_color: '#78A8D8',\n component_queue_bg_color: '#85BBF0',\n component_queue_border_color: '#78A8D8',\n external_component_bg_color: '#CCCCCC',\n external_component_border_color: '#BFBFBF',\n external_component_db_bg_color: '#CCCCCC',\n external_component_db_border_color: '#BFBFBF',\n external_component_queue_bg_color: '#CCCCCC',\n external_component_queue_border_color: '#BFBFBF',\n },\n mindmap: {\n useMaxWidth: true,\n padding: 10,\n maxNodeWidth: 200,\n },\n fontSize: 16,\n};\n\nif (config.class) {\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\nif (config.gitGraph) {\n config.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\n\nconst keyify = (obj: any, prefix = ''): string[] =>\n Object.keys(obj).reduce((res: string[], el): string[] => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys: string[] = keyify(config, '');\nexport default config;\n","'use strict';\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```js\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nconst assignWithDepth = function (dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === undefined || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== undefined && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport default assignWithDepth;\n","import assignWithDepth from './assignWithDepth';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\nimport type { MermaidConfig } from './config.type';\n\nexport const defaultConfig: MermaidConfig = Object.freeze(config);\n\nlet siteConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize: MermaidConfig;\nlet directives: any[] = [];\nlet currentConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: any[]) => {\n // start with config being the siteConfig\n let cfg: MermaidConfig = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives: MermaidConfig = {};\n for (const d of _directives) {\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVariables\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme as keyof typeof theme].getThemeVariables(themeVariables);\n }\n }\n\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns The new siteConfig\n */\nexport const setSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n // @ts-ignore: TODO Fix ts errors\n if (conf.theme && theme[conf.theme]) {\n // @ts-ignore: TODO Fix ts errors\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitialize = (conf: MermaidConfig): void => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns The siteConfig\n */\nexport const getSiteConfig = (): MermaidConfig => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param conf - The potential currentConfig\n * @returns The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf: MermaidConfig): MermaidConfig => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n checkConfig(conf);\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns The currentConfig\n */\nexport const getConfig = (): MermaidConfig => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param options - The potential setConfig parameter\n */\nexport const sanitize = (options: any) => {\n // Checking that options are not in the list of excluded options\n ['secure', ...(siteConfig.secure ?? [])].forEach((key) => {\n if (options[key] !== undefined) {\n // DO NOT attempt to print options[key] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svg's with inline script tags\n Object.keys(options).forEach((key) => {\n if (\n typeof options[key] === 'string' &&\n (options[key].includes('<') ||\n options[key].includes('>') ||\n options[key].includes('url(data:'))\n ) {\n delete options[key];\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param directive - The directive to push in\n */\nexport const addDirective = (directive: any) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n *\n * @param config - base set of values, which currentConfig could be **reset** to.\n * Defaults to the current siteConfig (e.g returned by {@link getSiteConfig}).\n */\nexport const reset = (config = siteConfig): void => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(config, directives);\n};\n\nenum ConfigWarning {\n 'LAZY_LOAD_DEPRECATED' = 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.',\n}\ntype ConfigWarningStrings = keyof typeof ConfigWarning;\nconst issuedWarnings: { [key in ConfigWarningStrings]?: boolean } = {};\nconst issueWarning = (warning: ConfigWarningStrings) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\n\nconst checkConfig = (config: MermaidConfig) => {\n if (!config) {\n return;\n }\n // @ts-expect-error Properties were removed in v10. Warning should exist.\n if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) {\n issueWarning('LAZY_LOAD_DEPRECATED');\n }\n};\n"],"names":["config","getThemeVariables","theme","Theme","baseThemeVariables","darkThemeVariables","defaultThemeVariables","forestThemeVariables","assignWithDepth","ConfigWarning"],"mappings":"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"}