Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,39 @@
|
||||
(() => {
|
||||
const mermaid = globalThis.mermaid;
|
||||
const vscode = acquireVsCodeApi();
|
||||
mermaid.initialize({ startOnLoad: false, securityLevel: 'loose', theme: document.body.classList.contains('vscode-dark') ? 'dark' : 'default', flowchart: { htmlLabels: false } });
|
||||
|
||||
// 渲染失败保留原始 Mermaid 并显示原因,不把空白图当成成功。
|
||||
async function render() {
|
||||
let sequence = 0;
|
||||
for (const code of document.querySelectorAll('pre > code.language-mermaid')) {
|
||||
try {
|
||||
const { svg } = await mermaid.render(`dever-flow-${sequence++}`, code.textContent);
|
||||
const container = document.createElement('div');
|
||||
container.className = 'dever-flow';
|
||||
container.innerHTML = svg;
|
||||
code.parentElement.replaceWith(container);
|
||||
} catch (error) {
|
||||
const message = document.createElement('p');
|
||||
message.className = 'dever-flow-error';
|
||||
message.textContent = `流程图渲染失败:${error.message}`;
|
||||
code.parentElement.before(message);
|
||||
}
|
||||
// Mermaid 的连续 Promise 会占满微任务队列;每张图后让页面处理加载、滚动和点击。
|
||||
await new Promise(resolve => setTimeout(resolve, 0));
|
||||
}
|
||||
document.getElementById(document.body.dataset.anchor)?.scrollIntoView();
|
||||
document.body.dataset.rendered = 'true';
|
||||
}
|
||||
|
||||
document.addEventListener('click', event => {
|
||||
const link = event.target.closest('a');
|
||||
if (!link) return;
|
||||
const href = link.getAttribute('href') || link.getAttribute('xlink:href');
|
||||
if (!href) return;
|
||||
event.preventDefault();
|
||||
if (href.startsWith('#')) document.getElementById(decodeURIComponent(href.slice(1)))?.scrollIntoView();
|
||||
else vscode.postMessage({ type: 'open', href });
|
||||
});
|
||||
render();
|
||||
})();
|
||||
Reference in new issue
Block a user