Skip to content

Commit e6bb5d8

Browse files
committed
allow to set a class for parent div container
1 parent 07e0c0d commit e6bb5d8

File tree

6 files changed

+24
-7
lines changed

6 files changed

+24
-7
lines changed

docs/.vitepress/config.js

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { version } from "../../package.json";
55

66
export default withMermaid(
77
defineConfig({
8+
// mermaidPlugin: {
9+
// class: "mermaid my-class", // set additional css classes for parent container
10+
// },
811
lang: "en-US",
912
title: "VitePress Plugin Mermaid",
1013
description: "Mermaid support for vitepress",

docs/guide/getting-started.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ export default withMermaid({
3131
mermaid: {
3232
// refer https://mermaid.js.org/config/setup/modules/mermaidAPI.html#mermaidapi-configuration-defaults for options
3333
},
34+
// optionally set additional config for plugin itself with MermaidPluginConfig
35+
mermaidPlugin: {
36+
class: "mermaid my-class", // set additional css classes for parent container
37+
},
3438
});
3539
```
3640

37-
Use in any Markdown file
38-
3941
Code with ```mmd
4042

4143
```mmd

src/Mermaid.vue

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div v-html="svg" class="mermaid"></div>
2+
<div v-html="svg" :class="props.class"></div>
33
</template>
44

55
<script setup>
@@ -27,6 +27,11 @@ const props = defineProps({
2727
type: String,
2828
required: true,
2929
},
30+
class:{
31+
type: String,
32+
required: false,
33+
default: "mermaid",
34+
}
3035
});
3136
3237
const svg = ref(null);

src/index.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type UserConfig } from "vitepress";
22
import { MermaidMarkdown } from "./mermaid-markdown";
3-
import { MermaidPlugin } from "./mermaid-plugin";
3+
import { MermaidPlugin, MermaidPluginConfig } from "./mermaid-plugin";
44
import { MermaidConfig } from "mermaid/dist/config.type";
55

66
export { MermaidMarkdown } from "./mermaid-markdown";
@@ -11,14 +11,15 @@ export { UserConfig };
1111
declare module "vitepress" {
1212
interface UserConfig {
1313
mermaid?: MermaidConfig;
14+
mermaidPlugin?: MermaidPluginConfig;
1415
}
1516
}
1617

1718
export const withMermaid = (config: UserConfig) => {
1819
if (!config.markdown) config.markdown = {};
1920
const markdownConfigOriginal = config.markdown.config || (() => {});
2021
config.markdown.config = (...args) => {
21-
MermaidMarkdown(...args);
22+
MermaidMarkdown(...args, config.mermaidPlugin);
2223
markdownConfigOriginal(...args);
2324
};
2425

src/mermaid-markdown.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const MermaidMarkdown = (md) => {
1+
export const MermaidMarkdown = (md, pluginOptions) => {
22
const sum = (o) => {
33
function pad(hash, len) {
44
while (hash.length < len) {
@@ -61,10 +61,11 @@ export const MermaidMarkdown = (md) => {
6161
if (token.info.trim() === "mermaid") {
6262
try {
6363
const key = index;
64+
const cssClass = pluginOptions?.class || 'mermaid';
6465
return `
6566
<Suspense>
6667
<template #default>
67-
<Mermaid id="mermaid-${key}" graph="${encodeURIComponent(
68+
<Mermaid id="mermaid-${key}" class="${cssClass}" graph="${encodeURIComponent(
6869
token.content
6970
)}"></Mermaid>
7071
</template>

src/mermaid-plugin.ts

+5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ interface MermaidPluginOptions extends MermaidConfig {
99
externalDiagrams: ExternalDiagramDefinition[];
1010
}
1111

12+
// Additional configuration for plugin itself. Separate model, not to risk name conflicts with future MermaidConfig options
13+
export interface MermaidPluginConfig {
14+
class?: string;
15+
}
16+
1217
const DEFAULT_OPTIONS: MermaidConfig = {
1318
//We set loose as default here because is needed to load images
1419
securityLevel: "loose",

0 commit comments

Comments
 (0)