Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+39
View File
@@ -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();
})();