mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-12-29 18:28:31 +01:00
build based on abd74c8
This commit is contained in:
@@ -7333,7 +7333,8 @@ a.anchor-link {
|
||||
if (!diagrams.length) {
|
||||
return;
|
||||
}
|
||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.2.3/mermaid.esm.min.mjs")).default;
|
||||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.3.1/mermaid.esm.min.mjs")).default;
|
||||
const parser = new DOMParser();
|
||||
|
||||
mermaid.initialize({
|
||||
maxTextSize: 100000,
|
||||
@@ -7349,39 +7350,52 @@ a.anchor-link {
|
||||
let _nextMermaidId = 0;
|
||||
|
||||
function makeMermaidImage(svg) {
|
||||
const img = document.createElement('img');
|
||||
const maxWidth = svg.match(/max-width: (\d+)/);
|
||||
if (maxWidth && maxWidth[1]) {
|
||||
const width = parseInt(maxWidth[1]);
|
||||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
||||
img.width = width;
|
||||
}
|
||||
const img = document.createElement("img");
|
||||
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||||
const svgEl = doc.querySelector("svg");
|
||||
const { maxWidth } = svgEl?.style || {};
|
||||
const firstTitle = doc.querySelector("title");
|
||||
const firstDesc = doc.querySelector("desc");
|
||||
|
||||
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||
if (maxWidth) {
|
||||
img.width = parseInt(maxWidth);
|
||||
}
|
||||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||||
return img;
|
||||
if (firstTitle) {
|
||||
img.setAttribute("alt", firstTitle.textContent);
|
||||
}
|
||||
if (firstDesc) {
|
||||
const caption = document.createElement("figcaption");
|
||||
caption.className = "sr-only";
|
||||
caption.textContent = firstDesc.textContent;
|
||||
return [img, caption];
|
||||
}
|
||||
return [img];
|
||||
}
|
||||
|
||||
async function makeMermaidError(text) {
|
||||
let errorMessage = '';
|
||||
let errorMessage = "";
|
||||
try {
|
||||
await mermaid.parse(text);
|
||||
} catch (err) {
|
||||
errorMessage = `${err}`;
|
||||
}
|
||||
|
||||
const result = document.createElement('details');
|
||||
const summary = document.createElement('summary');
|
||||
const pre = document.createElement('pre');
|
||||
const code = document.createElement('code');
|
||||
const result = document.createElement("details");
|
||||
result.className = 'jp-RenderedMermaid-Details';
|
||||
const summary = document.createElement("summary");
|
||||
summary.className = 'jp-RenderedMermaid-Summary';
|
||||
const pre = document.createElement("pre");
|
||||
const code = document.createElement("code");
|
||||
code.innerText = text;
|
||||
pre.appendChild(code);
|
||||
summary.appendChild(pre);
|
||||
result.appendChild(summary);
|
||||
|
||||
const warning = document.createElement('pre');
|
||||
const warning = document.createElement("pre");
|
||||
warning.innerText = errorMessage;
|
||||
result.appendChild(warning);
|
||||
return result;
|
||||
return [result];
|
||||
}
|
||||
|
||||
async function renderOneMarmaid(src) {
|
||||
@@ -7391,30 +7405,41 @@ a.anchor-link {
|
||||
const el = document.createElement("div");
|
||||
el.style.visibility = "hidden";
|
||||
document.body.appendChild(el);
|
||||
let result = null;
|
||||
let results = null;
|
||||
let output = null;
|
||||
try {
|
||||
const { svg } = await mermaid.render(id, raw, el);
|
||||
result = makeMermaidImage(svg);
|
||||
results = makeMermaidImage(svg);
|
||||
output = document.createElement("figure");
|
||||
results.map(output.appendChild, output);
|
||||
} catch (err) {
|
||||
parent.classList.add("jp-mod-warning");
|
||||
result = await makeMermaidError(raw);
|
||||
results = await makeMermaidError(raw);
|
||||
output = results[0];
|
||||
} finally {
|
||||
el.remove();
|
||||
}
|
||||
parent.classList.add("jp-RenderedMermaid");
|
||||
parent.appendChild(result);
|
||||
parent.appendChild(output);
|
||||
}
|
||||
|
||||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||||
display: none;
|
||||
}
|
||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
||||
|
||||
.jp-RenderedMermaid {
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.jp-RenderedMermaid.jp-mod-warning {
|
||||
width: auto;
|
||||
padding: 10px;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||||
border-radius: var(--jp-border-radius);
|
||||
color: var(--jp-ui-font-color1);
|
||||
@@ -7422,18 +7447,33 @@ a.anchor-link {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
||||
|
||||
.jp-RenderedMermaid figure {
|
||||
margin: 0;
|
||||
overflow: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.jp-RenderedMermaid img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.jp-RenderedMermaid-Details > pre {
|
||||
margin-top: 1em;
|
||||
}
|
||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
||||
|
||||
.jp-RenderedMermaid-Summary {
|
||||
color: var(--jp-warn-color2);
|
||||
}
|
||||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
||||
display: inline-block;
|
||||
}
|
||||
.jp-RenderedMermaid > .mermaid {
|
||||
|
||||
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jp-RenderedMermaid-Summary > pre {
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
}
|
||||
</style>
|
||||
<!-- End of mermaid configuration --></head>
|
||||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||||
|
||||
Reference in New Issue
Block a user