-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OOTB Mermaid code block #1258
Comments
Non sure if the plugin is still updated but there is remarkable-mermaid. I’m interested in this too but I haven’t found the time to test it |
This comment has been minimized.
This comment has been minimized.
This should be really good addition to support product technical documentation in Docusaurus. |
After much consideration, this is indeed best left to markdown plugin https://github.com/temando/remark-mermaid on v2 |
Hey did anyone did it on version 2 yet? Maybe I can help contribute? |
Hey did anyone did it on version 1? |
any update on this ? |
Nope i dont think so any one has writen any code over this yet ... |
With the current version it's pretty straightforward to integrate: // siteConfig.js
scripts: [
'https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.4.4/mermaid.min.js',
'/init.js',
],
markdownPlugins: [ (md) => {
md.renderer.rules.fence_custom.mermaid = (tokens, idx, options, env, instance) => {
return `<div class="mermaid">${tokens[idx].content}</div>`;
};
}], Then in init simply /* eslint-disable */
window.addEventListener('load', function() {
mermaid.initialize({startOnLoad:true});
}); Usage:
|
Summary: Pull Request resolved: https://github.com/facebookincubator/symphony/pull/263 - Followed this thread in order to add mermaid (graphs on docuzauros) support - facebook/docusaurus#1258 - https://mermaid-js.github.io/mermaid/#/ Reviewed By: vdorfman Differential Revision: D19688738 fbshipit-source-id: 35a27fe17cdad5456054edd7b6865f82dad09ccf
Hi @chmelevskij , thanks for sharing. Is there any way to get this to work on Docusaurus 2? |
in v2, you can make your own Component an import it into your markdown.
import React, { useEffect } from "react";
import mermaid from "mermaid";
mermaid.initialize({
startOnLoad: true
});
const Mermaid = ({ chart }) => {
useEffect(() => {
mermaid.contentLoaded();
}, []);
return <div className="mermaid">{chart}</div>;
};
export default Mermaid;
import Mermaid from '@theme/Mermaid';
...
<Mermaid chart={`
graph LR;
A-->B;
B-->C;
B-->D[plop lanflz eknlzeknfz];
`}/>
... |
@endiliey, is there away to specify a |
This way is still more troublesome. expect: graph
A --> B
|
I have taken the Mermaid component example given above and bundled it in a package mdx-mermaid The package also includes a remark plugin so that it can be used with code blocks There are setup instructions and examples here If you run into problems, please raise an issue on the github repo |
Thanks for creating a package @sjwall ! btw you can add it there: https://docusaurus.io/community/resources |
@sjwall |
It's live now: https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/ Native support for Mermaid in Docusaurus would be nice. :) |
Has anyone experimented with remark-mermaid and checked if it works with Docusaurus? Does it have to be built-in? I'm not against making it OOTB, but better see if there has been community work being done already. |
@Josh-Cena I could not get it working out of the box. However, I was able to get mermaid work in a GFM compatible way. It works by introducing a theme component custom remark pluginfunction remarkMermaid() {
return function transformer(root: any) {
root.children = root.children.map(x => {
if (x.type === 'code' && x.lang === 'mermaid') {
const loc = {
start: {line: x.position.start.line, column: x.position.start.column},
end: {line: x.position.end.line, column: x.position.end.column},
};
const start = x.position.start.offset;
const end = x.position.end.offset;
const range = [start, end];
const mermaidNode = {
type: 'mdxJsxFlowElement',
name: 'Mermaid',
data: {_xdmExplicitJsx: true},
children: [],
attributes: [{
type: 'mdxJsxAttribute',
name: 'chart',
value: {
type: 'mdxJsxAttributeValueExpression',
value: ['`\n', x.value, '`'].join('\n'),
data: {
estree: {
body: [{
type: "ExpressionStatement",
start,
range,
loc,
expression: {
loc,
range,
start,
end,
type: "Literal",
value: x.value,
raw: ['`\n', x.value, '`'].join('\n'),
},
}],
comments: [],
end,
loc,
range,
sourceType: "module",
start,
type: "Program",
},
},
},
position: x.position,
}],
};
return mermaidNode;
}
return x;
});
};
}; |
Going to re-open. I think it would be very helpful to have this out-of-the-box. |
VS Code has also added support for Mermaid: https://twitter.com/mattbierner/status/1522003140777701376 Many Markdown renderers also support it. I see a general trend to make this available out-of-the-box. If anyone wants to try their hands at a remark plugin, PRs are welcome. |
I've been using |
@Josh-Cena I am looking at merging in mdx-mermaid, should hopefully have a PR together this week |
Super excited to see this land! Thanks for all of the hard work! |
use a custom component to render mermaid diagrams mdx-mermaid didn't work, but docusaurus should soon integrate this feature natively see facebook/docusaurus#1258
use a custom component to render mermaid diagrams mdx-mermaid didn't work, but docusaurus should soon integrate this feature natively see facebook/docusaurus#1258
docusaurus v3 has this implementation: yarn add @docusaurus/theme-mermaid then, in your docusaurus.config.ts const config = { markdown: { ... rest of the code }; Now write down mermaid code normally as it is (no need to be .mdx) |
🚀 Feature
mermaidjs seems to be a pretty neat tool that allows drawing diagrams using markdown. It'd be nice if Docusaurus can be integrated with that.
Have you read the Contributing Guidelines on issues?
yes
Motivation
Most documentation needs to show diagrams. The current method involves using some external tool and then create an image (i.e. png, svg, jpg, etc). You'll need to manage those diagrams yourself separate from the content.
Pitch
Draw diagrams in the markdown along with the actual content where they are going to be used. This will make it a lot easier to maintain document (contents + diagrams) all in one place.
The text was updated successfully, but these errors were encountered: