rspress-plugin-mermaid 0.1.2-beta.0 → 0.1.4-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/typings.d.ts +5 -0
- package/dist/typings.js +1 -0
- package/package.json +5 -2
- package/CHANGELOG.md +0 -27
- package/dist/components/MermaidRender.d.ts +0 -8
- package/dist/components/MermaidRender.js +0 -32
- package/doc_build/static/search_index.e342ad1c.json +0 -1
- package/docs/index.md +0 -10
- package/image.png +0 -0
- package/rspress.config.ts +0 -9
- package/src/components/MermaidRender.tsx +0 -55
- package/src/index.ts +0 -55
- package/tsconfig.json +0 -8
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export default function rspressPluginMermaid(options = {}) {
|
|
|
6
6
|
components: [
|
|
7
7
|
{
|
|
8
8
|
lang: 'mermaid',
|
|
9
|
-
componentPath: path.join(__dirname, '
|
|
9
|
+
componentPath: path.join(__dirname, '../components', 'MermaidRender.tsx'),
|
|
10
10
|
childrenProvider() {
|
|
11
11
|
return [];
|
|
12
12
|
},
|
package/dist/typings.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rspress-plugin-mermaid",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4-beta.0",
|
|
4
4
|
"description": "Rspress plugin to render mermaid diagrams",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist"
|
|
7
|
+
],
|
|
5
8
|
"keywords": [
|
|
6
9
|
"rspress",
|
|
7
10
|
"plugin",
|
|
@@ -25,7 +28,7 @@
|
|
|
25
28
|
"dependencies": {
|
|
26
29
|
"@rspress/shared": "^1.17.1",
|
|
27
30
|
"mermaid": "^10.9.0",
|
|
28
|
-
"rspress-plugin-devkit": "^0.1.
|
|
31
|
+
"rspress-plugin-devkit": "^0.1.3"
|
|
29
32
|
},
|
|
30
33
|
"devDependencies": {
|
|
31
34
|
"@types/node": "^20.12.5",
|
package/CHANGELOG.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# rspress-plugin-mermaid
|
|
2
|
-
|
|
3
|
-
## 0.1.2-beta.0
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- 932dbb7: compat component path
|
|
8
|
-
- Updated dependencies [932dbb7]
|
|
9
|
-
- rspress-plugin-devkit@0.1.2-beta.0
|
|
10
|
-
|
|
11
|
-
## 0.1.1
|
|
12
|
-
|
|
13
|
-
### Patch Changes
|
|
14
|
-
|
|
15
|
-
- 546dcf0: release beta
|
|
16
|
-
- 5e28903: fixup publish config
|
|
17
|
-
- Updated dependencies [546dcf0]
|
|
18
|
-
- Updated dependencies [5e28903]
|
|
19
|
-
- rspress-plugin-devkit@0.1.1
|
|
20
|
-
|
|
21
|
-
## 0.1.1-beta.0
|
|
22
|
-
|
|
23
|
-
### Patch Changes
|
|
24
|
-
|
|
25
|
-
- 546dcf0: release beta
|
|
26
|
-
- Updated dependencies [546dcf0]
|
|
27
|
-
- rspress-plugin-devkit@0.1.1-beta.0
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useId, useState } from 'react';
|
|
3
|
-
import mermaid from 'mermaid';
|
|
4
|
-
const MermaidRenderer = (props) => {
|
|
5
|
-
const { code, config = {} } = props;
|
|
6
|
-
const id = useId();
|
|
7
|
-
const [svg, setSvg] = useState('');
|
|
8
|
-
const [renderError, setRenderError] = useState(false);
|
|
9
|
-
async function renderMermaid2SVG() {
|
|
10
|
-
// https://github.com/mermaid-js/mermaid/blob/1b40f552b20df4ab99a986dd58c9d254b3bfd7bc/packages/mermaid/src/docs/.vitepress/theme/Mermaid.vue#L53
|
|
11
|
-
const hasDarkClass = document.documentElement.classList.contains('dark');
|
|
12
|
-
const mermaidConfig = {
|
|
13
|
-
securityLevel: 'loose',
|
|
14
|
-
startOnLoad: false,
|
|
15
|
-
theme: hasDarkClass ? 'dark' : 'default',
|
|
16
|
-
...config,
|
|
17
|
-
};
|
|
18
|
-
try {
|
|
19
|
-
mermaid.initialize(mermaidConfig);
|
|
20
|
-
const { svg } = await mermaid.render(id.replace(/:/g, ''), code);
|
|
21
|
-
setSvg(svg);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
setRenderError(true);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
renderMermaid2SVG();
|
|
29
|
-
}, [code]);
|
|
30
|
-
return (_jsx(_Fragment, { children: renderError ? null : _jsx("div", { dangerouslySetInnerHTML: { __html: svg } }) }));
|
|
31
|
-
};
|
|
32
|
-
export default MermaidRenderer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[{"id":0,"title":"RSPress x Mermaid","content":"#\n\n","routePath":"/","lang":"","toc":[],"domain":"","frontmatter":{},"version":""}]
|
package/docs/index.md
DELETED
package/image.png
DELETED
|
Binary file
|
package/rspress.config.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useId, useState } from 'react';
|
|
2
|
-
|
|
3
|
-
import mermaid, { type MermaidConfig } from 'mermaid';
|
|
4
|
-
|
|
5
|
-
export interface MermaidRendererProps {
|
|
6
|
-
code: string;
|
|
7
|
-
config?: MermaidConfig;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const MermaidRenderer: React.FC<MermaidRendererProps> = (props) => {
|
|
11
|
-
const { code, config = {} } = props;
|
|
12
|
-
|
|
13
|
-
const id = useId();
|
|
14
|
-
|
|
15
|
-
const [svg, setSvg] = useState('');
|
|
16
|
-
|
|
17
|
-
const [renderError, setRenderError] = useState(false);
|
|
18
|
-
|
|
19
|
-
async function renderMermaid2SVG() {
|
|
20
|
-
// https://github.com/mermaid-js/mermaid/blob/1b40f552b20df4ab99a986dd58c9d254b3bfd7bc/packages/mermaid/src/docs/.vitepress/theme/Mermaid.vue#L53
|
|
21
|
-
const hasDarkClass = document.documentElement.classList.contains('dark');
|
|
22
|
-
|
|
23
|
-
const mermaidConfig: MermaidConfig = {
|
|
24
|
-
securityLevel: 'loose',
|
|
25
|
-
startOnLoad: false,
|
|
26
|
-
theme: hasDarkClass ? 'dark' : 'default',
|
|
27
|
-
...config,
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
try {
|
|
31
|
-
mermaid.initialize(mermaidConfig);
|
|
32
|
-
|
|
33
|
-
const { svg } = await mermaid.render(
|
|
34
|
-
id.replace(/:/g, ''),
|
|
35
|
-
code as string,
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
setSvg(svg);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
setRenderError(true);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
renderMermaid2SVG();
|
|
46
|
-
}, [code]);
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<>
|
|
50
|
-
{renderError ? null : <div dangerouslySetInnerHTML={{ __html: svg }} />}
|
|
51
|
-
</>
|
|
52
|
-
);
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export default MermaidRenderer;
|
package/src/index.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
PresetConfigMutator,
|
|
5
|
-
RemarkCodeBlockToGlobalComponentPluginFactory,
|
|
6
|
-
getCompatComponentPath,
|
|
7
|
-
} from 'rspress-plugin-devkit';
|
|
8
|
-
|
|
9
|
-
import type { RspressPlugin } from '@rspress/shared';
|
|
10
|
-
import type { MermaidConfig } from 'mermaid';
|
|
11
|
-
import type { MermaidRendererProps } from './components/MermaidRender';
|
|
12
|
-
|
|
13
|
-
interface RspressPluginMermaidOptions {
|
|
14
|
-
mermaidConfig?: MermaidConfig;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export default function rspressPluginMermaid(
|
|
18
|
-
options: RspressPluginMermaidOptions = {},
|
|
19
|
-
): RspressPlugin {
|
|
20
|
-
const { mermaidConfig = {} } = options;
|
|
21
|
-
|
|
22
|
-
const remarkMermaid = new RemarkCodeBlockToGlobalComponentPluginFactory({
|
|
23
|
-
components: [
|
|
24
|
-
{
|
|
25
|
-
lang: 'mermaid',
|
|
26
|
-
componentPath: path.join(
|
|
27
|
-
__dirname,
|
|
28
|
-
'./components',
|
|
29
|
-
getCompatComponentPath(__dirname, 'MermaidRender.tsx'),
|
|
30
|
-
),
|
|
31
|
-
childrenProvider() {
|
|
32
|
-
return [];
|
|
33
|
-
},
|
|
34
|
-
propsProvider(code) {
|
|
35
|
-
return {
|
|
36
|
-
code,
|
|
37
|
-
config: mermaidConfig,
|
|
38
|
-
} satisfies MermaidRendererProps;
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
name: 'rspress-plugin-mermaid',
|
|
46
|
-
config(config) {
|
|
47
|
-
return new PresetConfigMutator(config).disableMdxRs().toConfig();
|
|
48
|
-
},
|
|
49
|
-
markdown: {
|
|
50
|
-
remarkPlugins: [remarkMermaid.remarkPlugin],
|
|
51
|
-
globalComponents: remarkMermaid.mdxComponents,
|
|
52
|
-
},
|
|
53
|
-
builderConfig: remarkMermaid.builderConfig,
|
|
54
|
-
};
|
|
55
|
-
}
|