Skip to content

hunghg255/markdown-diagrams

Repository files navigation

markdown-diagrams

npm version npm downloads bundle JSDocs License

markdown-diagrams is a markdown-it plugin for diagram. It supports mermaid, plantuml. It supports contorls like zoom, move.

Features

  • Support PlantUML、Mermaid、Dot、Ditaa syntax;
  • Support zoom、move、rough、download、copy origin code and soon contorls;
  • Support Shift and mouse wheel to zoom in or out;
  • Support modal preview;
  • Support long press mouse click to drag the chart

UML examples

Markdown fence identifier:plantumlmermaiddotditaa

PlantUML

online

```plantuml
Bob -> Alice : hello
```

plantuml

DOT

```dot
digraph example1 {
    1 -> 2 -> { 4, 5 };
    1 -> 3 -> { 6, 7 };
}
```

dot

ditaa

Warning

On PlantUML, only PNG,TXT generation is supported.

```ditaa
+--------+   +-------+    +-------+
    |        | --+ ditaa +--> |       |
    |  Text  |   +-------+    |diagram|
    |Document|   |!magic!|    |       |
    |     {d}|   |       |    |       |
    +---+----+   +-------+    +-------+
        :                         ^
        |       Lots of work      |
        +-------------------------+
```

ditaa

mermaid

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

mermaid

Install

npm install markdown-diagrams --save

Usage

vite.config.ts

import MarkdownItDiagrams from 'markdown-diagrams'
import Markdown from 'unplugin-vue-markdown/vite'
export default defineConfig({
  plugins: [
    Markdown({
      markdownItSetup(md) {
        md.use(MarkdownItDiagrams, {
          showController: true, // show controller,default:false
          /**
           * PlantUML options
           * ditaa:imageFormat 'png| txt'
           * plantuml: imageFormat'png| svg| txt'
           * dot: imageFormat'png| svg| txt'
           */
          // imageFormat: 'svg', // image format:svg|png|txt,default:svg
          // server: '', // plantuml server,default:http://www.plantuml.com/plantuml
          // ditaa: {
          // imageFormat: 'svg', // image format:png|txt,default:svg
          // server: '', // plantuml server,default:http://www.plantuml.com/plantuml
          // }
        })
      }
    })
  ]
})

If you open the controller, you need to import the script in the initialization. vue3 example:

<script setup lang="ts">
import { markdownItDiagramDom } from 'markdown-diagrams/dom'
import { onMounted } from 'vue'
onMounted(async () => {
  // if you want to use mermaid, you need to install mermaid.js
  // npm install mermaid
  // import mermaid from 'mermaid'
  mermaid.initialize({ startOnLoad: false })
  await mermaid.run()
  // initialize markdown-diagrams/dom script
  await markdownItDiagramDom()
})
</script>

References

License

MIT License © 2024-PRESENT hunghg255