mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
180 lines
6.3 KiB
Plaintext
180 lines
6.3 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<title>
|
|
mermaid - Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams,
|
|
gantt charts and git graphs.
|
|
</title>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
<meta
|
|
name="description"
|
|
content="Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs."
|
|
/>
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
|
|
/>
|
|
<!-- <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css"> -->
|
|
<link rel="stylesheet" href="theme.css" />
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css"
|
|
/>
|
|
<script
|
|
defer
|
|
data-domain="mermaid-js.github.io"
|
|
src="https://plausible.io/js/plausible.js"
|
|
></script>
|
|
<script>
|
|
const require = {
|
|
paths: { vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.29.1/min/vs' },
|
|
};
|
|
</script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.29.1/min/vs/loader.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.29.1/min/vs/editor/editor.main.nls.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.29.1/min/vs/editor/editor.main.js"></script>
|
|
<script>
|
|
exports = {};
|
|
</script>
|
|
<script src="https://unpkg.com/monaco-mermaid/browser.js"></script>
|
|
|
|
<style>
|
|
.markdown-section {
|
|
max-width: 1200px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app"></div>
|
|
<script type="module">
|
|
import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs';
|
|
import mindmap from 'https://unpkg.com/@mermaid-js/mermaid-mindmap@9/dist/mermaid-mindmap.esm.min.mjs';
|
|
await mermaid.registerExternalDiagrams([mindmap]);
|
|
|
|
window.mermaid = mermaid;
|
|
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
|
|
const conf = {
|
|
logLevel: 4,
|
|
startOnLoad: true,
|
|
themeCSS: '.label { font-family: Source Sans Pro,Helvetica Neue,Arial,sans-serif; }',
|
|
};
|
|
if (isDarkMode) conf.theme = 'dark';
|
|
|
|
async function loadMermaid() {
|
|
mermaid.parseError = (e) => {
|
|
console.log('parse error', e); // eslint-disable-line
|
|
};
|
|
await mermaid.registerExternalDiagrams([mindmap]);
|
|
mermaid.initialize(conf);
|
|
console.log('mermaid initialized'); // eslint-disable-line
|
|
}
|
|
|
|
await loadMermaid();
|
|
</script>
|
|
<script>
|
|
let initEditor = exports.default;
|
|
let parser = new DOMParser();
|
|
let currentCodeExample = 0;
|
|
let colorize = [];
|
|
let num = 0;
|
|
|
|
function colorizeEverything(html) {
|
|
initEditor(monaco);
|
|
return new Promise((resolve, reject) => {
|
|
monaco.editor.setTheme('mermaid');
|
|
const parsed = parser.parseFromString(html, 'text/html').body;
|
|
Promise.all(
|
|
[...parsed.querySelectorAll('pre[id*="code"]')].map((codeBlock) =>
|
|
monaco.editor.colorize(codeBlock.innerText, 'mermaid')
|
|
)
|
|
).then((result) => {
|
|
parsed
|
|
.querySelectorAll('pre[id*="code"]')
|
|
.forEach((codeBlock, index) => (codeBlock.innerHTML = result[index]));
|
|
resolve(parsed.innerHTML);
|
|
});
|
|
});
|
|
}
|
|
|
|
function escapeHTML(html) {
|
|
return html
|
|
.replaceAll('&', '&')
|
|
.replaceAll('<', '<')
|
|
.replaceAll('>', '>')
|
|
.replaceAll('"', '"')
|
|
.replaceAll("'", ''');
|
|
}
|
|
|
|
window.$docsify = {
|
|
search: 'auto',
|
|
name: 'mermaid',
|
|
repo: 'https://github.com/mermaid-js/mermaid',
|
|
loadSidebar: true,
|
|
mergeNavbar: true,
|
|
maxLevel: 4,
|
|
subMaxLevel: 2,
|
|
markdown: {
|
|
renderer: {
|
|
code: function (code, lang) {
|
|
if (lang === 'mermaid-example') {
|
|
console.log('An example'); // eslint-disable-line
|
|
currentCodeExample++;
|
|
colorize.push(currentCodeExample);
|
|
return '<pre id="code' + currentCodeExample + '">' + escapeHTML(code) + '</pre>';
|
|
} else if (lang === 'mermaid') {
|
|
return '<pre class="mermaid">' + code + '</pre>';
|
|
}
|
|
return this.origin.code.apply(this, arguments);
|
|
},
|
|
heading: function (text) {
|
|
if (text.includes('THIS IS AN AUTOGENERATED FILE. DO NOT EDIT')) {
|
|
return '';
|
|
}
|
|
return this.origin.heading.apply(this, arguments);
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
function (hook, vm) {
|
|
hook.beforeEach(function (html) {
|
|
url = 'https://github.com/mermaid-js/mermaid/blob/develop/src/docs/' + vm.route.file;
|
|
const editHtml = '[:memo: Edit this Page](' + url + ')\n';
|
|
return editHtml + html;
|
|
});
|
|
// Invoked on each page load after new HTML has been appended to the DOM
|
|
hook.doneEach(async function () {
|
|
await mermaid.init();
|
|
});
|
|
|
|
hook.afterEach(function (html, next) {
|
|
next(html);
|
|
(async () => {
|
|
while (!window.hasOwnProperty('monaco'))
|
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
colorizeEverything(html).then(
|
|
(newHTML) =>
|
|
(document.querySelector('article.markdown-section').innerHTML = newHTML)
|
|
);
|
|
})();
|
|
});
|
|
},
|
|
],
|
|
};
|
|
</script>
|
|
<script>
|
|
window.onhashchange = function (a) {
|
|
// if (location && ga) {
|
|
// ga('send', 'pageview', location.hash);
|
|
// }
|
|
};
|
|
</script>
|
|
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
|
|
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
|
|
<!-- <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/ga.min.js"></script> -->
|
|
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-coffeescript.min.js"></script>
|
|
</body>
|
|
</html>
|