Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

42 lines
1.4 KiB
JavaScript

/**
* Mermaid loader for MkDocs Material.
*
* Material's `navigation.instant` swaps page content without a full reload,
* so Mermaid must be (re-)initialized after every page swap. We hook into
* both the initial load and Material's custom `document-subscriber` event.
*
* The mermaid.js runtime itself is loaded via mkdocs.yml `extra_javascript`
* with `defer`, so it's available by the time this script runs.
*/
(function () {
function isMermaidReady() {
return typeof window.mermaid !== 'undefined';
}
function renderAll() {
if (!isMermaidReady()) return;
try {
window.mermaid.initialize({
startOnLoad: false,
theme: document.documentElement.getAttribute('data-md-color-scheme') === 'slate'
? 'dark'
: 'default',
securityLevel: 'loose', // allow $ in labels, e.g. $web_search
flowchart: { curve: 'basis', useMaxWidth: true },
});
window.mermaid.run({ querySelector: '.mermaid:not([data-processed])' });
} catch (e) {
console.warn('[mermaid] render failed:', e);
}
}
// Re-render whenever Material swaps to a new page.
document.addEventListener('DOMContentLoaded', renderAll);
document$.subscribe(renderAll); // `document$` is provided by Material
// Re-theme when the user toggles light/dark.
new MutationObserver(renderAll)
.observe(document.documentElement,
{ attributes: true, attributeFilter: ['data-md-color-scheme'] });
})();