/remark-mermaid-ssr

Mermaid plugin for remark with server side rendering

Primary LanguageTypeScript

remark-mermaid-ssr

Remark plugin for rendering mermaid diagrams server-side. Installation is smoothly handled by this package; no other installations are required. Supports rendering of an additional dark mode SVGs.

This plugin uses puppeteer to launch a headless chromium browser instance to render diagrams using mermaidAPI. The codeblocks of mermaid diagrams are replaced with rendered SVGs.

Usage

The plugin is installed as any other remark plugin, see unified's plugin documentation.

Diagrams are written as codeblocks with the "mermaid" language.

```mermaid
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
```

Options

The options are not the same as the mermaid options. The options have been tweaked to be easier to specify. Options can always be overwritten with raw mermaid options by using the __mermaid and __mermaid.__darkMode options.

security

security?: 'strict' | 'loose' | 'antiscript' | 'sandbox' = 'strict'

Same as the mermaid option securityLevel. Serves as an option for the level of trust for the parsed diagram.

  • 'strict': tags in text are encoded, script functionality is disabled.
  • 'loose': tags in text are allowed, script functionality is enabled.
  • 'antiscript': html tags in text are allowed, only script elements are removed, script functionality is enabled.

theme

theme?: string | ThemeOptions = 'default'

theme

theme?: string = 'default'

customCss

customCss?: string

variables

variables?: unknown

renderDark

renderDark?: DarkOptions | boolean = false

Enables the additional rendering of dark mode. This will require you to define css rules for displaying the images. Rendered svgs will always (even if you have renderDark disabled) have either the classes mermaid, and mermaid__light or mermaid__dark.

.mermaid.mermaid__light { display: initial; }
.mermaid.mermaid__dark { display: none; }

@media (prefers-color-scheme: dark) {
  .mermaid.mermaid__light { display: none; }
  .mermaid.mermaid__dark { display: initial; }
}

logLevel

logLevel?: LogLevel = LogLevel.Error

flowchart

flowchart?: FlowchartDiagramOptions

Options for flowchart diagrams.

sequence

sequence?: SequenceDiagramOptions

Options for sequence diagrams.

gantt

gantt?: GanttDiagramOptions

Options for gantt diagrams.

journey

journey?: JourneyDiagramOptions

Options for journey diagrams.

pie

pie?: PieChartOptions

Options for pie diagrams.

requirement

requirement?: RequirementDiagramOptions

Options for requirement diagrams.

er

er?: ErDiagramOptions

Options for er diagrams.

git

git?: GitGraphOptions

Options for git diagrams.

state

state?: StateDiagramOptions

Options for state diagrams.

freeze

freeze?: (keyof Options)[]

Keys in options to freeze. Same as the mermaid option secure.

style

style?: StyleOptions

fontFamily

fontFamily?: string

maxTextSize

maxTextSize?: number