From e77051ccc4b47951bfa4fde2be436b1bb2fb113b Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Sun, 28 Apr 2024 17:33:09 +0200 Subject: use https://github.com/nunocoracao/blowfish.git --- .../assets/lib/mermaid/mermaidAPI-6f22a815.js | 1223 ++++++++++++++++++++ 1 file changed, 1223 insertions(+) create mode 100644 themes/blowfish/assets/lib/mermaid/mermaidAPI-6f22a815.js (limited to 'themes/blowfish/assets/lib/mermaid/mermaidAPI-6f22a815.js') diff --git a/themes/blowfish/assets/lib/mermaid/mermaidAPI-6f22a815.js b/themes/blowfish/assets/lib/mermaid/mermaidAPI-6f22a815.js new file mode 100644 index 0000000..fd82e55 --- /dev/null +++ b/themes/blowfish/assets/lib/mermaid/mermaidAPI-6f22a815.js @@ -0,0 +1,1223 @@ +import { g as getConfig, l as log, h as setConfig, i as getSiteConfig, u as updateSiteConfig, r as reset, j as defaultConfig, s as setLogLevel, a as addDirective, f as select, k as evaluate, p as purify, m as saveConfigFromInitialize, t as theme, n as setSiteConfig } from "./config-b4fa35bb.js"; +import { a as registerDiagram, r as registerLazyLoadedDiagrams, d as detectType, g as getDiagram, e as extractFrontMatter, b as getDiagramLoader, U as UnknownDiagramError, c as getNative, f as root, t as toSource, h as baseGetTag, M as Map, j as isFunction, k as freeGlobal, p as parseDirective, u as utils, m as directiveSanitizer, n as getStyles } from "./utils-872dfc50.js"; +import { r as renderer } from "./errorRenderer-ebf63d74.js"; +var COMMENT = "comm"; +var RULESET = "rule"; +var DECLARATION = "decl"; +var IMPORT = "@import"; +var KEYFRAMES = "@keyframes"; +var abs = Math.abs; +var from = String.fromCharCode; +function trim(value) { + return value.trim(); +} +function replace(value, pattern, replacement) { + return value.replace(pattern, replacement); +} +function indexof(value, search) { + return value.indexOf(search); +} +function charat(value, index) { + return value.charCodeAt(index) | 0; +} +function substr(value, begin, end) { + return value.slice(begin, end); +} +function strlen(value) { + return value.length; +} +function sizeof(value) { + return value.length; +} +function append(value, array) { + return array.push(value), value; +} +var line = 1; +var column = 1; +var length = 0; +var position = 0; +var character = 0; +var characters = ""; +function node(value, root2, parent, type, props, children, length2) { + return { value, root: root2, parent, type, props, children, line, column, length: length2, return: "" }; +} +function char() { + return character; +} +function prev() { + character = position > 0 ? charat(characters, --position) : 0; + if (column--, character === 10) + column = 1, line--; + return character; +} +function next() { + character = position < length ? charat(characters, position++) : 0; + if (column++, character === 10) + column = 1, line++; + return character; +} +function peek() { + return charat(characters, position); +} +function caret() { + return position; +} +function slice(begin, end) { + return substr(characters, begin, end); +} +function token(type) { + switch (type) { + case 0: + case 9: + case 10: + case 13: + case 32: + return 5; + case 33: + case 43: + case 44: + case 47: + case 62: + case 64: + case 126: + case 59: + case 123: + case 125: + return 4; + case 58: + return 3; + case 34: + case 39: + case 40: + case 91: + return 2; + case 41: + case 93: + return 1; + } + return 0; +} +function alloc(value) { + return line = column = 1, length = strlen(characters = value), position = 0, []; +} +function dealloc(value) { + return characters = "", value; +} +function delimit(type) { + return trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type))); +} +function whitespace(type) { + while (character = peek()) + if (character < 33) + next(); + else + break; + return token(type) > 2 || token(character) > 3 ? "" : " "; +} +function escaping(index, count) { + while (--count && next()) + if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97) + break; + return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32)); +} +function delimiter(type) { + while (next()) + switch (character) { + case type: + return position; + case 34: + case 39: + if (type !== 34 && type !== 39) + delimiter(character); + break; + case 40: + if (type === 41) + delimiter(type); + break; + case 92: + next(); + break; + } + return position; +} +function commenter(type, index) { + while (next()) + if (type + character === 47 + 10) + break; + else if (type + character === 42 + 42 && peek() === 47) + break; + return "/*" + slice(index, position - 1) + "*" + from(type === 47 ? type : next()); +} +function identifier(index) { + while (!token(peek())) + next(); + return slice(index, position); +} +function compile(value) { + return dealloc(parse$1("", null, null, null, [""], value = alloc(value), 0, [0], value)); +} +function parse$1(value, root2, parent, rule, rules, rulesets, pseudo, points, declarations) { + var index = 0; + var offset = 0; + var length2 = pseudo; + var atrule = 0; + var property = 0; + var previous = 0; + var variable = 1; + var scanning = 1; + var ampersand = 1; + var character2 = 0; + var type = ""; + var props = rules; + var children = rulesets; + var reference = rule; + var characters2 = type; + while (scanning) + switch (previous = character2, character2 = next()) { + case 40: + if (previous != 108 && charat(characters2, length2 - 1) == 58) { + if (indexof(characters2 += replace(delimit(character2), "&", "&\f"), "&\f") != -1) + ampersand = -1; + break; + } + case 34: + case 39: + case 91: + characters2 += delimit(character2); + break; + case 9: + case 10: + case 13: + case 32: + characters2 += whitespace(previous); + break; + case 92: + characters2 += escaping(caret() - 1, 7); + continue; + case 47: + switch (peek()) { + case 42: + case 47: + append(comment(commenter(next(), caret()), root2, parent), declarations); + break; + default: + characters2 += "/"; + } + break; + case 123 * variable: + points[index++] = strlen(characters2) * ampersand; + case 125 * variable: + case 59: + case 0: + switch (character2) { + case 0: + case 125: + scanning = 0; + case 59 + offset: + if (property > 0 && strlen(characters2) - length2) + append(property > 32 ? declaration(characters2 + ";", rule, parent, length2 - 1) : declaration(replace(characters2, " ", "") + ";", rule, parent, length2 - 2), declarations); + break; + case 59: + characters2 += ";"; + default: + append(reference = ruleset(characters2, root2, parent, index, offset, rules, points, type, props = [], children = [], length2), rulesets); + if (character2 === 123) + if (offset === 0) + parse$1(characters2, root2, reference, reference, props, rulesets, length2, points, children); + else + switch (atrule) { + case 100: + case 109: + case 115: + parse$1(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length2), children), rules, children, length2, points, rule ? props : children); + break; + default: + parse$1(characters2, reference, reference, reference, [""], children, 0, points, children); + } + } + index = offset = property = 0, variable = ampersand = 1, type = characters2 = "", length2 = pseudo; + break; + case 58: + length2 = 1 + strlen(characters2), property = previous; + default: + if (variable < 1) { + if (character2 == 123) + --variable; + else if (character2 == 125 && variable++ == 0 && prev() == 125) + continue; + } + switch (characters2 += from(character2), character2 * variable) { + case 38: + ampersand = offset > 0 ? 1 : (characters2 += "\f", -1); + break; + case 44: + points[index++] = (strlen(characters2) - 1) * ampersand, ampersand = 1; + break; + case 64: + if (peek() === 45) + characters2 += delimit(next()); + atrule = peek(), offset = length2 = strlen(type = characters2 += identifier(caret())), character2++; + break; + case 45: + if (previous === 45 && strlen(characters2) == 2) + variable = 0; + } + } + return rulesets; +} +function ruleset(value, root2, parent, index, offset, rules, points, type, props, children, length2) { + var post = offset - 1; + var rule = offset === 0 ? rules : [""]; + var size = sizeof(rule); + for (var i = 0, j = 0, k = 0; i < index; ++i) + for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x) + if (z = trim(j > 0 ? rule[x] + " " + y : replace(y, /&\f/g, rule[x]))) + props[k++] = z; + return node(value, root2, parent, offset === 0 ? RULESET : type, props, children, length2); +} +function comment(value, root2, parent) { + return node(value, root2, parent, COMMENT, from(char()), substr(value, 2, -2), 0); +} +function declaration(value, root2, parent, length2) { + return node(value, root2, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2); +} +function serialize(children, callback) { + var output = ""; + var length2 = sizeof(children); + for (var i = 0; i < length2; i++) + output += callback(children[i], i, children, callback) || ""; + return output; +} +function stringify(element, index, children, callback) { + switch (element.type) { + case IMPORT: + case DECLARATION: + return element.return = element.return || element.value; + case COMMENT: + return ""; + case KEYFRAMES: + return element.return = element.value + "{" + serialize(element.children, callback) + "}"; + case RULESET: + element.value = element.props.join(","); + } + return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : ""; +} +const version = "10.0.2"; +const id$i = "c4"; +const detector$i = (txt) => { + return txt.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/) !== null; +}; +const loader$i = async () => { + const { diagram } = await import("./c4Diagram-fa9ef55f.js"); + return { id: id$i, diagram }; +}; +const plugin$i = { + id: id$i, + detector: detector$i, + loader: loader$i +}; +const c4 = plugin$i; +const id$h = "flowchart"; +const detector$h = (txt, config) => { + var _a, _b; + if (((_a = config == null ? void 0 : config.flowchart) == null ? void 0 : _a.defaultRenderer) === "dagre-wrapper" || ((_b = config == null ? void 0 : config.flowchart) == null ? void 0 : _b.defaultRenderer) === "elk") { + return false; + } + return txt.match(/^\s*graph/) !== null; +}; +const loader$h = async () => { + const { diagram } = await import("./flowDiagram-e9252555.js"); + return { id: id$h, diagram }; +}; +const plugin$h = { + id: id$h, + detector: detector$h, + loader: loader$h +}; +const flowchart = plugin$h; +const id$g = "flowchart-v2"; +const detector$g = (txt, config) => { + var _a, _b, _c; + if (((_a = config == null ? void 0 : config.flowchart) == null ? void 0 : _a.defaultRenderer) === "dagre-d3" || ((_b = config == null ? void 0 : config.flowchart) == null ? void 0 : _b.defaultRenderer) === "elk") { + return false; + } + if (txt.match(/^\s*graph/) !== null && ((_c = config == null ? void 0 : config.flowchart) == null ? void 0 : _c.defaultRenderer) === "dagre-wrapper") { + return true; + } + return txt.match(/^\s*flowchart/) !== null; +}; +const loader$g = async () => { + const { diagram } = await import("./flowDiagram-v2-5a27c9e8.js"); + return { id: id$g, diagram }; +}; +const plugin$g = { + id: id$g, + detector: detector$g, + loader: loader$g +}; +const flowchartV2 = plugin$g; +const id$f = "er"; +const detector$f = (txt) => { + return txt.match(/^\s*erDiagram/) !== null; +}; +const loader$f = async () => { + const { diagram } = await import("./erDiagram-3be555e1.js"); + return { id: id$f, diagram }; +}; +const plugin$f = { + id: id$f, + detector: detector$f, + loader: loader$f +}; +const er = plugin$f; +const id$e = "gitGraph"; +const detector$e = (txt) => { + return txt.match(/^\s*gitGraph/) !== null; +}; +const loader$e = async () => { + const { diagram } = await import("./gitGraphDiagram-7563bb4a.js"); + return { id: id$e, diagram }; +}; +const plugin$e = { + id: id$e, + detector: detector$e, + loader: loader$e +}; +const git = plugin$e; +const id$d = "gantt"; +const detector$d = (txt) => { + return txt.match(/^\s*gantt/) !== null; +}; +const loader$d = async () => { + const { diagram } = await import("./ganttDiagram-a0b8da8b.js"); + return { id: id$d, diagram }; +}; +const plugin$d = { + id: id$d, + detector: detector$d, + loader: loader$d +}; +const gantt = plugin$d; +const id$c = "info"; +const detector$c = (txt) => { + return txt.match(/^\s*info/) !== null; +}; +const loader$c = async () => { + const { diagram } = await import("./infoDiagram-47175ff4.js"); + return { id: id$c, diagram }; +}; +const plugin$c = { + id: id$c, + detector: detector$c, + loader: loader$c +}; +const info = plugin$c; +const id$b = "pie"; +const detector$b = (txt) => { + return txt.match(/^\s*pie/) !== null; +}; +const loader$b = async () => { + const { diagram } = await import("./pieDiagram-2c4efa7e.js"); + return { id: id$b, diagram }; +}; +const plugin$b = { + id: id$b, + detector: detector$b, + loader: loader$b +}; +const pie = plugin$b; +const id$a = "requirement"; +const detector$a = (txt) => { + return txt.match(/^\s*requirement(Diagram)?/) !== null; +}; +const loader$a = async () => { + const { diagram } = await import("./requirementDiagram-339ed3c3.js"); + return { id: id$a, diagram }; +}; +const plugin$a = { + id: id$a, + detector: detector$a, + loader: loader$a +}; +const requirement = plugin$a; +const id$9 = "sequence"; +const detector$9 = (txt) => { + return txt.match(/^\s*sequenceDiagram/) !== null; +}; +const loader$9 = async () => { + const { diagram } = await import("./sequenceDiagram-5072c6f4.js"); + return { id: id$9, diagram }; +}; +const plugin$9 = { + id: id$9, + detector: detector$9, + loader: loader$9 +}; +const sequence = plugin$9; +const id$8 = "class"; +const detector$8 = (txt, config) => { + var _a; + if (((_a = config == null ? void 0 : config.class) == null ? void 0 : _a.defaultRenderer) === "dagre-wrapper") { + return false; + } + return txt.match(/^\s*classDiagram/) !== null; +}; +const loader$8 = async () => { + const { diagram } = await import("./classDiagram-3ab3550d.js"); + return { id: id$8, diagram }; +}; +const plugin$8 = { + id: id$8, + detector: detector$8, + loader: loader$8 +}; +const classDiagram = plugin$8; +const id$7 = "classDiagram"; +const detector$7 = (txt, config) => { + var _a; + if (txt.match(/^\s*classDiagram/) !== null && ((_a = config == null ? void 0 : config.class) == null ? void 0 : _a.defaultRenderer) === "dagre-wrapper") { + return true; + } + return txt.match(/^\s*classDiagram-v2/) !== null; +}; +const loader$7 = async () => { + const { diagram } = await import("./classDiagram-v2-8096aa52.js"); + return { id: id$7, diagram }; +}; +const plugin$7 = { + id: id$7, + detector: detector$7, + loader: loader$7 +}; +const classDiagramV2 = plugin$7; +const id$6 = "state"; +const detector$6 = (txt, config) => { + var _a; + if (((_a = config == null ? void 0 : config.state) == null ? void 0 : _a.defaultRenderer) === "dagre-wrapper") { + return false; + } + return txt.match(/^\s*stateDiagram/) !== null; +}; +const loader$6 = async () => { + const { diagram } = await import("./stateDiagram-4031bf72.js"); + return { id: id$6, diagram }; +}; +const plugin$6 = { + id: id$6, + detector: detector$6, + loader: loader$6 +}; +const state = plugin$6; +const id$5 = "stateDiagram"; +const detector$5 = (text, config) => { + var _a, _b; + if (text.match(/^\s*stateDiagram-v2/) !== null) { + return true; + } + if (text.match(/^\s*stateDiagram/) && ((_a = config == null ? void 0 : config.state) == null ? void 0 : _a.defaultRenderer) === "dagre-wrapper") { + return true; + } + if (text.match(/^\s*stateDiagram/) && ((_b = config == null ? void 0 : config.state) == null ? void 0 : _b.defaultRenderer) === "dagre-wrapper") { + return true; + } + return false; +}; +const loader$5 = async () => { + const { diagram } = await import("./stateDiagram-v2-ef8082bd.js"); + return { id: id$5, diagram }; +}; +const plugin$5 = { + id: id$5, + detector: detector$5, + loader: loader$5 +}; +const stateV2 = plugin$5; +const id$4 = "journey"; +const detector$4 = (txt) => { + return txt.match(/^\s*journey/) !== null; +}; +const loader$4 = async () => { + const { diagram } = await import("./journeyDiagram-1a99060c.js"); + return { id: id$4, diagram }; +}; +const plugin$4 = { + id: id$4, + detector: detector$4, + loader: loader$4 +}; +const journey = plugin$4; +const id$3 = "error"; +const detector$3 = (text) => { + return text.toLowerCase().trim() === "error"; +}; +const loader$3 = async () => { + const { diagram } = await import("./errorDiagram-8d01edd9.js"); + return { id: id$3, diagram }; +}; +const plugin$3 = { + id: id$3, + detector: detector$3, + loader: loader$3 +}; +const error = plugin$3; +const id$2 = "flowchart-elk"; +const detector$2 = (txt, config) => { + var _a; + if ( + // If diagram explicitly states flowchart-elk + txt.match(/^\s*flowchart-elk/) || // If a flowchart/graph diagram has their default renderer set to elk + txt.match(/^\s*flowchart|graph/) && ((_a = config == null ? void 0 : config.flowchart) == null ? void 0 : _a.defaultRenderer) === "elk" + ) { + return true; + } + return false; +}; +const loader$2 = async () => { + const { diagram } = await import("./flowchart-elk-definition-6f3d7532.js"); + return { id: id$2, diagram }; +}; +const plugin$2 = { + id: id$2, + detector: detector$2, + loader: loader$2 +}; +const flowchartElk = plugin$2; +const id$1 = "timeline"; +const detector$1 = (txt) => { + return txt.match(/^\s*timeline/) !== null; +}; +const loader$1 = async () => { + const { diagram } = await import("./timeline-definition-3a60be4b.js"); + return { id: id$1, diagram }; +}; +const plugin$1 = { + id: id$1, + detector: detector$1, + loader: loader$1 +}; +const timeline = plugin$1; +const id = "mindmap"; +const detector = (txt) => { + return txt.match(/^\s*mindmap/) !== null; +}; +const loader = async () => { + const { diagram } = await import("./mindmap-definition-b11d8ccb.js"); + return { id, diagram }; +}; +const plugin = { + id, + detector, + loader +}; +const mindmap = plugin; +let hasLoadedDiagrams = false; +const addDiagrams = () => { + if (hasLoadedDiagrams) { + return; + } + hasLoadedDiagrams = true; + registerDiagram( + "---", + // --- diagram type may appear if YAML front-matter is not parsed correctly + { + db: { + clear: () => { + } + }, + styles: {}, + // should never be used + renderer: {}, + // should never be used + parser: { + parser: { yy: {} }, + parse: () => { + throw new Error( + "Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks" + ); + } + }, + init: () => null + // no op + }, + (text) => { + return text.toLowerCase().trimStart().startsWith("---"); + } + ); + registerLazyLoadedDiagrams( + error, + c4, + classDiagramV2, + classDiagram, + er, + gantt, + info, + pie, + requirement, + sequence, + flowchartElk, + flowchartV2, + flowchart, + mindmap, + timeline, + git, + stateV2, + state, + journey + ); +}; +class Diagram { + constructor(text) { + var _a, _b; + this.text = text; + this.type = "graph"; + this.text += "\n"; + const cnf = getConfig(); + try { + this.type = detectType(text, cnf); + } catch (e) { + this.type = "error"; + this.detectError = e; + } + const diagram = getDiagram(this.type); + log.debug("Type " + this.type); + this.db = diagram.db; + (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a); + this.renderer = diagram.renderer; + this.parser = diagram.parser; + const originalParse = this.parser.parse.bind(this.parser); + this.parser.parse = (text2) => originalParse(extractFrontMatter(text2, this.db)); + this.parser.parser.yy = this.db; + if (diagram.init) { + diagram.init(cnf); + log.info("Initialized diagram " + this.type, cnf); + } + this.parse(); + } + parse() { + var _a, _b; + if (this.detectError) { + throw this.detectError; + } + (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a); + this.parser.parse(this.text); + } + async render(id2, version2) { + await this.renderer.draw(this.text, id2, version2, this); + } + getParser() { + return this.parser; + } + getType() { + return this.type; + } +} +const getDiagramFromText = async (text) => { + const type = detectType(text, getConfig()); + try { + getDiagram(type); + } catch (error2) { + const loader2 = getDiagramLoader(type); + if (!loader2) { + throw new UnknownDiagramError(`Diagram ${type} not found.`); + } + const { id: id2, diagram } = await loader2(); + registerDiagram(id2, diagram); + } + return new Diagram(text); +}; +let interactionFunctions = []; +const addFunction = (func) => { + interactionFunctions.push(func); +}; +const attachFunctions = () => { + interactionFunctions.forEach((f) => { + f(); + }); + interactionFunctions = []; +}; +var objectProto$3 = Object.prototype; +function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$3; + return value === proto; +} +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} +var nativeKeys = overArg(Object.keys, Object); +const nativeKeys$1 = nativeKeys; +var objectProto$2 = Object.prototype; +var hasOwnProperty$2 = objectProto$2.hasOwnProperty; +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys$1(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$2.call(object, key) && key != "constructor") { + result.push(key); + } + } + return result; +} +var DataView = getNative(root, "DataView"); +const DataView$1 = DataView; +var Promise$1 = getNative(root, "Promise"); +const Promise$2 = Promise$1; +var Set = getNative(root, "Set"); +const Set$1 = Set; +var WeakMap = getNative(root, "WeakMap"); +const WeakMap$1 = WeakMap; +var mapTag$2 = "[object Map]", objectTag$1 = "[object Object]", promiseTag = "[object Promise]", setTag$2 = "[object Set]", weakMapTag$1 = "[object WeakMap]"; +var dataViewTag$1 = "[object DataView]"; +var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1); +var getTag = baseGetTag; +if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$1 || Map && getTag(new Map()) != mapTag$2 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$2 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) { + getTag = function(value) { + var result = baseGetTag(value), Ctor = result == objectTag$1 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : ""; + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag$1; + case mapCtorString: + return mapTag$2; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag$2; + case weakMapCtorString: + return weakMapTag$1; + } + } + return result; + }; +} +const getTag$1 = getTag; +function isObjectLike(value) { + return value != null && typeof value == "object"; +} +var argsTag$1 = "[object Arguments]"; +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag$1; +} +var objectProto$1 = Object.prototype; +var hasOwnProperty$1 = objectProto$1.hasOwnProperty; +var propertyIsEnumerable = objectProto$1.propertyIsEnumerable; +var isArguments = baseIsArguments(function() { + return arguments; +}()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty$1.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); +}; +const isArguments$1 = isArguments; +var isArray = Array.isArray; +const isArray$1 = isArray; +var MAX_SAFE_INTEGER = 9007199254740991; +function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} +function stubFalse() { + return false; +} +var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports; +var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module; +var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; +var Buffer = moduleExports$1 ? root.Buffer : void 0; +var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0; +var isBuffer = nativeIsBuffer || stubFalse; +const isBuffer$1 = isBuffer; +var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", mapTag$1 = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag$1 = "[object Set]", stringTag = "[object String]", weakMapTag = "[object WeakMap]"; +var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag$1] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; +function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} +function baseUnary(func) { + return function(value) { + return func(value); + }; +} +var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; +var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; +var moduleExports = freeModule && freeModule.exports === freeExports; +var freeProcess = moduleExports && freeGlobal.process; +var nodeUtil = function() { + try { + var types = freeModule && freeModule.require && freeModule.require("util").types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e) { + } +}(); +const nodeUtil$1 = nodeUtil; +var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray; +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; +const isTypedArray$1 = isTypedArray; +var mapTag = "[object Map]", setTag = "[object Set]"; +var objectProto = Object.prototype; +var hasOwnProperty = objectProto.hasOwnProperty; +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && (isArray$1(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer$1(value) || isTypedArray$1(value) || isArguments$1(value))) { + return !value.length; + } + var tag = getTag$1(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; +} +const SVG_ROLE = "graphics-document document"; +function setA11yDiagramInfo(svg, diagramType) { + svg.attr("role", SVG_ROLE); + if (!isEmpty(diagramType)) { + svg.attr("aria-roledescription", diagramType); + } +} +function addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) { + if (svg.insert === void 0) { + return; + } + if (a11yTitle || a11yDesc) { + if (a11yDesc) { + const descId = "chart-desc-" + baseId; + svg.attr("aria-describedby", descId); + svg.insert("desc", ":first-child").attr("id", descId).text(a11yDesc); + } + if (a11yTitle) { + const titleId = "chart-title-" + baseId; + svg.attr("aria-labelledby", titleId); + svg.insert("title", ":first-child").attr("id", titleId).text(a11yTitle); + } + } else { + return; + } +} +const CLASSDEF_DIAGRAMS = ["graph", "flowchart", "flowchart-v2", "stateDiagram", "stateDiagram-v2"]; +const MAX_TEXTLENGTH = 5e4; +const MAX_TEXTLENGTH_EXCEEDED_MSG = "graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"; +const SECURITY_LVL_SANDBOX = "sandbox"; +const SECURITY_LVL_LOOSE = "loose"; +const XMLNS_SVG_STD = "http://www.w3.org/2000/svg"; +const XMLNS_XLINK_STD = "http://www.w3.org/1999/xlink"; +const XMLNS_XHTML_STD = "http://www.w3.org/1999/xhtml"; +const IFRAME_WIDTH = "100%"; +const IFRAME_HEIGHT = "100%"; +const IFRAME_STYLES = "border:0;margin:0;"; +const IFRAME_BODY_STYLE = "margin:0"; +const IFRAME_SANDBOX_OPTS = "allow-top-navigation-by-user-activation allow-popups"; +const IFRAME_NOT_SUPPORTED_MSG = 'The "iframe" tag is not supported by your browser.'; +const DOMPURIFY_TAGS = ["foreignobject"]; +const DOMPURIFY_ATTR = ["dominant-baseline"]; +async function parse(text, parseOptions) { + addDiagrams(); + let error2; + try { + const diagram = await getDiagramFromText(text); + diagram.parse(); + } catch (err) { + error2 = err; + } + if (parseOptions == null ? void 0 : parseOptions.suppressErrors) { + return error2 === void 0; + } + if (error2) { + throw error2; + } +} +const encodeEntities = function(text) { + let txt = text; + txt = txt.replace(/style.*:\S*#.*;/g, function(s) { + return s.substring(0, s.length - 1); + }); + txt = txt.replace(/classDef.*:\S*#.*;/g, function(s) { + return s.substring(0, s.length - 1); + }); + txt = txt.replace(/#\w+;/g, function(s) { + const innerTxt = s.substring(1, s.length - 1); + const isInt = /^\+?\d+$/.test(innerTxt); + if (isInt) { + return "fl°°" + innerTxt + "¶ß"; + } else { + return "fl°" + innerTxt + "¶ß"; + } + }); + return txt; +}; +const decodeEntities = function(text) { + let txt = text; + txt = txt.replace(/fl°°/g, "&#"); + txt = txt.replace(/fl°/g, "&"); + txt = txt.replace(/¶ß/g, ";"); + return txt; +}; +const cssImportantStyles = (cssClass, element, cssClasses = []) => { + return ` +.${cssClass} ${element} { ${cssClasses.join(" !important; ")} !important; }`; +}; +const createCssStyles = (config, graphType, classDefs = {}) => { + var _a; + let cssStyles = ""; + if (config.themeCSS !== void 0) { + cssStyles += ` +${config.themeCSS}`; + } + if (config.fontFamily !== void 0) { + cssStyles += ` +:root { --mermaid-font-family: ${config.fontFamily}}`; + } + if (config.altFontFamily !== void 0) { + cssStyles += ` +:root { --mermaid-alt-font-family: ${config.altFontFamily}}`; + } + if (!isEmpty(classDefs) && CLASSDEF_DIAGRAMS.includes(graphType)) { + const htmlLabels = config.htmlLabels || ((_a = config.flowchart) == null ? void 0 : _a.htmlLabels); + const cssHtmlElements = ["> *", "span"]; + const cssShapeElements = ["rect", "polygon", "ellipse", "circle", "path"]; + const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements; + for (const classId in classDefs) { + const styleClassDef = classDefs[classId]; + if (!isEmpty(styleClassDef.styles)) { + cssElements.forEach((cssElement) => { + cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles); + }); + } + if (!isEmpty(styleClassDef.textStyles)) { + cssStyles += cssImportantStyles(styleClassDef.id, "tspan", styleClassDef.textStyles); + } + } + } + return cssStyles; +}; +const createUserStyles = (config, graphType, classDefs, svgId) => { + const userCSSstyles = createCssStyles(config, graphType, classDefs); + const allStyles = getStyles(graphType, userCSSstyles, config.themeVariables); + return serialize(compile(`${svgId}{${allStyles}}`), stringify); +}; +const cleanUpSvgCode = (svgCode = "", inSandboxMode, useArrowMarkerUrls) => { + let cleanedUpSvg = svgCode; + if (!useArrowMarkerUrls && !inSandboxMode) { + cleanedUpSvg = cleanedUpSvg.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#'); + } + cleanedUpSvg = decodeEntities(cleanedUpSvg); + cleanedUpSvg = cleanedUpSvg.replace(/
/g, "
"); + return cleanedUpSvg; +}; +const putIntoIFrame = (svgCode = "", svgElement) => { + const height = svgElement ? svgElement.viewBox.baseVal.height + "px" : IFRAME_HEIGHT; + const base64encodedSrc = btoa('' + svgCode + ""); + return ``; +}; +const appendDivSvgG = (parentRoot, id2, enclosingDivId, divStyle, svgXlink) => { + const enclosingDiv = parentRoot.append("div"); + enclosingDiv.attr("id", enclosingDivId); + if (divStyle) { + enclosingDiv.attr("style", divStyle); + } + const svgNode = enclosingDiv.append("svg").attr("id", id2).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD); + if (svgXlink) { + svgNode.attr("xmlns:xlink", svgXlink); + } + svgNode.append("g"); + return parentRoot; +}; +function sandboxedIframe(parentNode, iFrameId) { + return parentNode.append("iframe").attr("id", iFrameId).attr("style", "width: 100%; height: 100%;").attr("sandbox", ""); +} +const removeExistingElements = (doc, id2, divId, iFrameId) => { + var _a, _b, _c; + (_a = doc.getElementById(id2)) == null ? void 0 : _a.remove(); + (_b = doc.getElementById(divId)) == null ? void 0 : _b.remove(); + (_c = doc.getElementById(iFrameId)) == null ? void 0 : _c.remove(); +}; +const render = async function(id2, text, svgContainingElement) { + var _a, _b, _c, _d; + addDiagrams(); + reset(); + const graphInit = utils.detectInit(text); + if (graphInit) { + directiveSanitizer(graphInit); + addDirective(graphInit); + } + const config = getConfig(); + log.debug(config); + if (text.length > ((config == null ? void 0 : config.maxTextSize) ?? MAX_TEXTLENGTH)) { + text = MAX_TEXTLENGTH_EXCEEDED_MSG; + } + text = text.replace(/\r\n?/g, "\n"); + const idSelector = "#" + id2; + const iFrameID = "i" + id2; + const iFrameID_selector = "#" + iFrameID; + const enclosingDivID = "d" + id2; + const enclosingDivID_selector = "#" + enclosingDivID; + let root2 = select("body"); + const isSandboxed = config.securityLevel === SECURITY_LVL_SANDBOX; + const isLooseSecurityLevel = config.securityLevel === SECURITY_LVL_LOOSE; + const fontFamily = config.fontFamily; + if (svgContainingElement !== void 0) { + if (svgContainingElement) { + svgContainingElement.innerHTML = ""; + } + if (isSandboxed) { + const iframe = sandboxedIframe(select(svgContainingElement), iFrameID); + root2 = select(iframe.nodes()[0].contentDocument.body); + root2.node().style.margin = 0; + } else { + root2 = select(svgContainingElement); + } + appendDivSvgG(root2, id2, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD); + } else { + removeExistingElements(document, id2, enclosingDivID, iFrameID); + if (isSandboxed) { + const iframe = sandboxedIframe(select("body"), iFrameID); + root2 = select(iframe.nodes()[0].contentDocument.body); + root2.node().style.margin = 0; + } else { + root2 = select("body"); + } + appendDivSvgG(root2, id2, enclosingDivID); + } + text = encodeEntities(text); + let diag; + let parseEncounteredException; + try { + diag = await getDiagramFromText(text); + } catch (error2) { + diag = new Diagram("error"); + parseEncounteredException = error2; + } + const element = root2.select(enclosingDivID_selector).node(); + const graphType = diag.type; + const svg = element.firstChild; + const firstChild = svg.firstChild; + const diagramClassDefs = CLASSDEF_DIAGRAMS.includes(graphType) ? diag.renderer.getClasses(text, diag) : {}; + const rules = createUserStyles( + config, + graphType, + // @ts-ignore convert renderer to TS. + diagramClassDefs, + idSelector + ); + const style1 = document.createElement("style"); + style1.innerHTML = rules; + svg.insertBefore(style1, firstChild); + try { + await diag.renderer.draw(text, id2, version, diag); + } catch (e) { + renderer.draw(text, id2, version); + throw e; + } + const svgNode = root2.select(`${enclosingDivID_selector} svg`); + const a11yTitle = (_b = (_a = diag.db).getAccTitle) == null ? void 0 : _b.call(_a); + const a11yDescr = (_d = (_c = diag.db).getAccDescription) == null ? void 0 : _d.call(_c); + addA11yInfo(graphType, svgNode, a11yTitle, a11yDescr); + root2.select(`[id="${id2}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD); + let svgCode = root2.select(enclosingDivID_selector).node().innerHTML; + log.debug("config.arrowMarkerAbsolute", config.arrowMarkerAbsolute); + svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config.arrowMarkerAbsolute)); + if (isSandboxed) { + const svgEl = root2.select(enclosingDivID_selector + " svg").node(); + svgCode = putIntoIFrame(svgCode, svgEl); + } else if (!isLooseSecurityLevel) { + svgCode = purify.sanitize(svgCode, { + ADD_TAGS: DOMPURIFY_TAGS, + ADD_ATTR: DOMPURIFY_ATTR + }); + } + attachFunctions(); + const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector; + const node2 = select(tmpElementSelector).node(); + if (node2 && "remove" in node2) { + node2.remove(); + } + if (parseEncounteredException) { + throw parseEncounteredException; + } + return { + svg: svgCode, + bindFunctions: diag.db.bindFunctions + }; +}; +function initialize(options = {}) { + var _a; + if ((options == null ? void 0 : options.fontFamily) && !((_a = options.themeVariables) == null ? void 0 : _a.fontFamily)) { + if (!options.themeVariables) { + options.themeVariables = {}; + } + options.themeVariables.fontFamily = options.fontFamily; + } + saveConfigFromInitialize(options); + if ((options == null ? void 0 : options.theme) && options.theme in theme) { + options.themeVariables = theme[options.theme].getThemeVariables( + options.themeVariables + ); + } else if (options) { + options.themeVariables = theme.default.getThemeVariables(options.themeVariables); + } + const config = typeof options === "object" ? setSiteConfig(options) : getSiteConfig(); + setLogLevel(config.logLevel); + addDiagrams(); +} +function addA11yInfo(graphType, svgNode, a11yTitle, a11yDescr) { + setA11yDiagramInfo(svgNode, graphType); + addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr("id")); +} +const mermaidAPI = Object.freeze({ + render, + parse, + parseDirective, + initialize, + getConfig, + setConfig, + getSiteConfig, + updateSiteConfig, + reset: () => { + reset(); + }, + globalReset: () => { + reset(defaultConfig); + }, + defaultConfig +}); +setLogLevel(getConfig().logLevel); +reset(getConfig()); +export { + Set$1 as S, + isArray$1 as a, + isArrayLike as b, + isArguments$1 as c, + isBuffer$1 as d, + isTypedArray$1 as e, + baseKeys as f, + isPrototype as g, + getTag$1 as h, + isObjectLike as i, + baseUnary as j, + isLength as k, + isEmpty as l, + mermaidAPI as m, + nodeUtil$1 as n, + overArg as o, + decodeEntities as p, + addFunction as q +}; +//# sourceMappingURL=mermaidAPI-6f22a815.js.map -- cgit v1.2.3