62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
import { h, nextTick, watch } from 'vue';
|
|
import type { Theme } from 'vitepress';
|
|
import { useData } from 'vitepress';
|
|
import DefaultTheme from 'vitepress/theme';
|
|
import Layout from './Layout.vue';
|
|
|
|
import './style.css';
|
|
import './custom.css';
|
|
import './tools.css';
|
|
import './mermaid-overrides.css';
|
|
|
|
import { createMermaidRenderer } from 'vitepress-mermaid-renderer';
|
|
|
|
export default {
|
|
extends: DefaultTheme,
|
|
|
|
Layout: () => {
|
|
const { isDark, localeIndex } = useData();
|
|
|
|
const initMermaid = () => {
|
|
const mermaidRenderer = createMermaidRenderer({
|
|
theme: isDark.value ? 'dark' : 'forest',
|
|
});
|
|
|
|
mermaidRenderer.setToolbar({
|
|
showLanguageLabel: false,
|
|
downloadFormat: 'svg',
|
|
fullscreenMode: 'browser',
|
|
desktop: {
|
|
copyCode: 'enabled',
|
|
toggleFullscreen: 'enabled',
|
|
resetView: 'enabled',
|
|
zoomOut: 'enabled',
|
|
zoomIn: 'enabled',
|
|
zoomLevel: 'enabled',
|
|
download: 'enabled',
|
|
},
|
|
fullscreen: {
|
|
copyCode: 'disabled',
|
|
toggleFullscreen: 'enabled',
|
|
resetView: 'disabled',
|
|
zoomLevel: 'disabled',
|
|
download: 'enabled',
|
|
},
|
|
});
|
|
};
|
|
|
|
nextTick(initMermaid);
|
|
|
|
watch(
|
|
() => [isDark.value, localeIndex.value] as const,
|
|
() => {
|
|
initMermaid();
|
|
},
|
|
);
|
|
|
|
return h(Layout);
|
|
},
|
|
|
|
enhanceApp() {},
|
|
} satisfies Theme;
|