mirror of
https://github.com/nunocoracao/blowfish.git
synced 2025-04-29 16:01:54 +02:00
258 lines
7.4 KiB
JavaScript
258 lines
7.4 KiB
JavaScript
import { l as log } from "./config-b4fa35bb.js";
|
|
import { i as isDetailedError, u as utils, r as registerLazyLoadedDiagrams, l as loadRegisteredDiagrams } from "./utils-872dfc50.js";
|
|
import { m as mermaidAPI } from "./mermaidAPI-6f22a815.js";
|
|
import "./setupGraphViewbox-16a0ba81.js";
|
|
import "./commonDb-7f40ab5a.js";
|
|
import "./errorRenderer-ebf63d74.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(/<br\s*\/?>/gi, "<br/>");
|
|
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
|
|
};
|
|
export {
|
|
mermaid as default
|
|
};
|
|
//# sourceMappingURL=mermaid.esm.mjs.map
|