import { l as log } from "./commonDb-89160e91.js"; import { d as detectType, i as isDetailedError, u as utils, r as registerLazyLoadedDiagrams, l as loadRegisteredDiagrams } from "./utils-1aebe9b6.js"; import { m as mermaidAPI } from "./mermaidAPI-c841a67f.js"; function dedent(templ) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } var strings = Array.from(typeof templ === "string" ? [templ] : templ); strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, ""); var indentLengths = strings.reduce(function(arr, str) { var matches = str.match(/\n([\t ]+|(?!\s).)/g); if (matches) { return arr.concat(matches.map(function(match) { var _a, _b; return (_b = (_a = match.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; })); } return arr; }, []); if (indentLengths.length) { var pattern_1 = new RegExp("\n[ ]{" + Math.min.apply(Math, indentLengths) + "}", "g"); strings = strings.map(function(str) { return str.replace(pattern_1, "\n"); }); } strings[0] = strings[0].replace(/^\r?\n/, ""); var string = strings[0]; values.forEach(function(value, i) { var endentations = string.match(/(?:^|\n)( *)$/); var endentation = endentations ? endentations[1] : ""; var indentedValue = value; if (typeof value === "string" && value.includes("\n")) { indentedValue = String(value).split("\n").map(function(str, i2) { return i2 === 0 ? str : "" + endentation + str; }).join("\n"); } string += indentedValue + strings[i + 1]; }); return string; } const handleError = (error, errors, parseError) => { log.warn(error); if (isDetailedError(error)) { if (parseError) { parseError(error.str, error.hash); } errors.push({ ...error, message: error.str, error }); } else { if (parseError) { parseError(error); } if (error instanceof Error) { errors.push({ str: error.message, message: error.message, hash: error.name, error }); } } }; const run = async function(options = { querySelector: ".mermaid" }) { try { await runThrowsErrors(options); } catch (e) { if (isDetailedError(e)) { log.error(e.str); } if (mermaid.parseError) { mermaid.parseError(e); } if (!options.suppressErrors) { log.error("Use the suppressErrors option to suppress these errors"); throw e; } } }; const runThrowsErrors = async function({ postRenderCallback, querySelector, nodes } = { querySelector: ".mermaid" }) { const conf = mermaidAPI.getConfig(); log.debug(`${!postRenderCallback ? "No " : ""}Callback function found`); let nodesToProcess; if (nodes) { nodesToProcess = nodes; } else if (querySelector) { nodesToProcess = document.querySelectorAll(querySelector); } else { throw new Error("Nodes and querySelector are both undefined"); } log.debug(`Found ${nodesToProcess.length} diagrams`); if ((conf == null ? void 0 : conf.startOnLoad) !== void 0) { log.debug("Start On Load: " + (conf == null ? void 0 : conf.startOnLoad)); mermaidAPI.updateSiteConfig({ startOnLoad: conf == null ? void 0 : conf.startOnLoad }); } const idGenerator = new utils.initIdGenerator(conf.deterministicIds, conf.deterministicIDSeed); let txt; const errors = []; for (const element of Array.from(nodesToProcess)) { log.info("Rendering diagram: " + element.id); /*! Check if previously processed */ if (element.getAttribute("data-processed")) { continue; } element.setAttribute("data-processed", "true"); const id = `mermaid-${idGenerator.next()}`; txt = element.innerHTML; txt = dedent(utils.entityDecode(txt)).trim().replace(//gi, "
"); const init2 = utils.detectInit(txt); if (init2) { log.debug("Detected early reinit: ", init2); } try { const { svg, bindFunctions } = await render(id, txt, element); element.innerHTML = svg; if (postRenderCallback) { await postRenderCallback(id); } if (bindFunctions) { bindFunctions(element); } } catch (error) { handleError(error, errors, mermaid.parseError); } } if (errors.length > 0) { throw errors[0]; } }; const initialize = function(config) { mermaidAPI.initialize(config); }; const init = async function(config, nodes, callback) { log.warn("mermaid.init is deprecated. Please use run instead."); if (config) { initialize(config); } const runOptions = { postRenderCallback: callback, querySelector: ".mermaid" }; if (typeof nodes === "string") { runOptions.querySelector = nodes; } else if (nodes) { if (nodes instanceof HTMLElement) { runOptions.nodes = [nodes]; } else { runOptions.nodes = nodes; } } await run(runOptions); }; const registerExternalDiagrams = async (diagrams, { lazyLoad = true } = {}) => { registerLazyLoadedDiagrams(...diagrams); if (lazyLoad === false) { await loadRegisteredDiagrams(); } }; const contentLoaded = function() { if (mermaid.startOnLoad) { const { startOnLoad } = mermaidAPI.getConfig(); if (startOnLoad) { mermaid.run().catch((err) => log.error("Mermaid failed to initialize", err)); } } }; if (typeof document !== "undefined") { /*! * Wait for document loaded before starting the execution */ window.addEventListener("load", contentLoaded, false); } const setParseErrorHandler = function(parseErrorHandler) { mermaid.parseError = parseErrorHandler; }; const executionQueue = []; let executionQueueRunning = false; const executeQueue = async () => { if (executionQueueRunning) { return; } executionQueueRunning = true; while (executionQueue.length > 0) { const f = executionQueue.shift(); if (f) { try { await f(); } catch (e) { log.error("Error executing queue", e); } } } executionQueueRunning = false; }; const parse = async (text, parseOptions) => { return new Promise((resolve, reject) => { const performCall = () => new Promise((res, rej) => { mermaidAPI.parse(text, parseOptions).then( (r) => { res(r); resolve(r); }, (e) => { var _a; log.error("Error parsing", e); (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e); rej(e); reject(e); } ); }); executionQueue.push(performCall); executeQueue().catch(reject); }); }; const render = (id, text, container) => { return new Promise((resolve, reject) => { const performCall = () => new Promise((res, rej) => { mermaidAPI.render(id, text, container).then( (r) => { res(r); resolve(r); }, (e) => { var _a; log.error("Error parsing", e); (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e); rej(e); reject(e); } ); }); executionQueue.push(performCall); executeQueue().catch(reject); }); }; const mermaid = { startOnLoad: true, mermaidAPI, parse, render, init, run, registerExternalDiagrams, initialize, parseError: void 0, contentLoaded, setParseErrorHandler, detectType }; export { mermaid as default }; //# sourceMappingURL=mermaid.esm.mjs.map