diff --git a/docs/site.json b/docs/site.json index 57220942e7..320570f55b 100644 --- a/docs/site.json +++ b/docs/site.json @@ -23,7 +23,8 @@ ], "plugins" : [ "filterTags", - "mathDelimiters" + "mathDelimiters", + "mermaid" ], "pluginsContext" : { "filterTags" : { diff --git a/docs/userGuide/plugins/mermaid.md b/docs/userGuide/plugins/mermaid.md new file mode 100644 index 0000000000..1f7d5a0099 --- /dev/null +++ b/docs/userGuide/plugins/mermaid.md @@ -0,0 +1,94 @@ +### Plugin: Mermaid + +This plugin allows you to utilize Mermaid by automatically importing the library and initializing the rendering of the diagrams. + +> Mermaid is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically. + + + +All supported diagrams and detailed configurations are available in [the mermaid official documentation](https://mermaid-js.github.io/mermaid/). + + + +To enable this plugin, add `mermaid` to your site's plugins. Optionally, you can specify alternative URL (e.g. to use another CDN or another version) or +any custom configurations in the plugin context. + +```js {heading="site.json"} +{ + ... + "plugins": [ + "mermaid" + ], + "pluginsContext" : { + "mermaid" : { // can be omitted if no changes to the following default settings are required + "address": "https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs", // replace with URL of your choice + "config": { + "startOnLoad": "true", // add or modify mermaid configurations + } + } + }, +} +``` + +{{ icon_example }} Pie Chart: + + +html + + +pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 + + + + +{{ icon_example }} Flowchart: + + +html + + +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] + + + + +{{ icon_example }} User Journey Diagram: + + +html + + +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + + + + +{{ icon_example }} Gitgraph Diagram: + + +html + + +gitGraph + commit + branch develop + checkout develop + commit + checkout main + merge develop + + + diff --git a/docs/userGuide/syntax/diagrams.md b/docs/userGuide/syntax/diagrams.md index d36e8b713e..bd84e2c8ae 100644 --- a/docs/userGuide/syntax/diagrams.md +++ b/docs/userGuide/syntax/diagrams.md @@ -147,6 +147,11 @@ name | `string` | The name of the output file. src | `string` | The URL of the diagram if your diagram is in another `.puml` file.
The URL can be specified as absolute or relative references. More info in: _[Intra-Site Links]({{baseUrl}}/userGuide/formattingContents.html#intraSiteLinks)_ width | `string` | The width of the diagram in pixels.
If both width and height are specified, width takes priority over height. It is to maintain the diagram's aspect ratio. + + +It's also possible to utilize JavaScript diagram libraries such as [Mermaid](https://mermaid-js.github.io/mermaid/) via the [Mermaid plugin](../usingPlugins.html#plugin-mermaid). + +
``` diff --git a/docs/userGuide/usingPlugins.md b/docs/userGuide/usingPlugins.md index dc268b4f7a..789fdbe82b 100644 --- a/docs/userGuide/usingPlugins.md +++ b/docs/userGuide/usingPlugins.md @@ -63,6 +63,7 @@ MarkBind has a set of built-in plugins that can be used immediately without inst + ## Using External Plugins diff --git a/packages/cli/test/functional/test_site/expected/bugs/index.html b/packages/cli/test/functional/test_site/expected/bugs/index.html index b624d60088..33ab7a4c5a 100644 --- a/packages/cli/test/functional/test_site/expected/bugs/index.html +++ b/packages/cli/test/functional/test_site/expected/bugs/index.html @@ -247,5 +247,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/index.html b/packages/cli/test/functional/test_site/expected/index.html index 1a34139fb6..f75e4d09bf 100644 --- a/packages/cli/test/functional/test_site/expected/index.html +++ b/packages/cli/test/functional/test_site/expected/index.html @@ -820,5 +820,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/siteData.json b/packages/cli/test/functional/test_site/expected/siteData.json index cbc796895a..3dd097f792 100644 --- a/packages/cli/test/functional/test_site/expected/siteData.json +++ b/packages/cli/test/functional/test_site/expected/siteData.json @@ -353,6 +353,12 @@ "title": "page nav with title added", "headings": {}, "headingKeywords": {} + }, + { + "src": "testMermaid.md", + "title": "Rendering of diagrams via mermaid-js", + "headings": {}, + "headingKeywords": {} } ] } diff --git a/packages/cli/test/functional/test_site/expected/sub_site/index.html b/packages/cli/test/functional/test_site/expected/sub_site/index.html index fb2b39c005..6778dfe376 100644 --- a/packages/cli/test/functional/test_site/expected/sub_site/index.html +++ b/packages/cli/test/functional/test_site/expected/sub_site/index.html @@ -255,5 +255,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/index.html b/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/index.html index 4c193b8b25..26acbaad18 100644 --- a/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/index.html +++ b/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/index.html @@ -246,5 +246,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/testNunjucksPathResolving.html b/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/testNunjucksPathResolving.html index 0c948c6338..f5c853884d 100644 --- a/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/testNunjucksPathResolving.html +++ b/packages/cli/test/functional/test_site/expected/sub_site/nested_sub_site/testNunjucksPathResolving.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/sub_site/testNunjucksPathResolving.html b/packages/cli/test/functional/test_site/expected/sub_site/testNunjucksPathResolving.html index 0c948c6338..f5c853884d 100644 --- a/packages/cli/test/functional/test_site/expected/sub_site/testNunjucksPathResolving.html +++ b/packages/cli/test/functional/test_site/expected/sub_site/testNunjucksPathResolving.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testAnchorGeneration.html b/packages/cli/test/functional/test_site/expected/testAnchorGeneration.html index e8ae389f7d..c4f538cef4 100644 --- a/packages/cli/test/functional/test_site/expected/testAnchorGeneration.html +++ b/packages/cli/test/functional/test_site/expected/testAnchorGeneration.html @@ -313,5 +313,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testAnnotate.html b/packages/cli/test/functional/test_site/expected/testAnnotate.html index 4a0c392e61..d91b4c685a 100644 --- a/packages/cli/test/functional/test_site/expected/testAnnotate.html +++ b/packages/cli/test/functional/test_site/expected/testAnnotate.html @@ -300,5 +300,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testAntiFOUCStyles.html b/packages/cli/test/functional/test_site/expected/testAntiFOUCStyles.html index d8d3ed09b7..c649a61115 100644 --- a/packages/cli/test/functional/test_site/expected/testAntiFOUCStyles.html +++ b/packages/cli/test/functional/test_site/expected/testAntiFOUCStyles.html @@ -268,5 +268,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testCenterText.html b/packages/cli/test/functional/test_site/expected/testCenterText.html index 87d0509b94..9f0cbe85dc 100644 --- a/packages/cli/test/functional/test_site/expected/testCenterText.html +++ b/packages/cli/test/functional/test_site/expected/testCenterText.html @@ -244,5 +244,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testCodeBlocks.html b/packages/cli/test/functional/test_site/expected/testCodeBlocks.html index 7529a6a4a1..cf4abfbd8f 100644 --- a/packages/cli/test/functional/test_site/expected/testCodeBlocks.html +++ b/packages/cli/test/functional/test_site/expected/testCodeBlocks.html @@ -436,5 +436,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testDates.html b/packages/cli/test/functional/test_site/expected/testDates.html index c6cc8641e3..a8cbe2b7da 100644 --- a/packages/cli/test/functional/test_site/expected/testDates.html +++ b/packages/cli/test/functional/test_site/expected/testDates.html @@ -250,5 +250,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testEmptyFrontmatter.html b/packages/cli/test/functional/test_site/expected/testEmptyFrontmatter.html index def9d790df..1c6e18d3ca 100644 --- a/packages/cli/test/functional/test_site/expected/testEmptyFrontmatter.html +++ b/packages/cli/test/functional/test_site/expected/testEmptyFrontmatter.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testExternalScripts.html b/packages/cli/test/functional/test_site/expected/testExternalScripts.html index 53b246e87f..cd740489ff 100644 --- a/packages/cli/test/functional/test_site/expected/testExternalScripts.html +++ b/packages/cli/test/functional/test_site/expected/testExternalScripts.html @@ -255,5 +255,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testHr.html b/packages/cli/test/functional/test_site/expected/testHr.html index e86b77efa3..35e13a8ea6 100644 --- a/packages/cli/test/functional/test_site/expected/testHr.html +++ b/packages/cli/test/functional/test_site/expected/testHr.html @@ -253,5 +253,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testImages.html b/packages/cli/test/functional/test_site/expected/testImages.html index 6655443b72..dd97e5b35a 100644 --- a/packages/cli/test/functional/test_site/expected/testImages.html +++ b/packages/cli/test/functional/test_site/expected/testImages.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testIncludeBoilerplate.html b/packages/cli/test/functional/test_site/expected/testIncludeBoilerplate.html index 569847a7b0..46f5a81133 100644 --- a/packages/cli/test/functional/test_site/expected/testIncludeBoilerplate.html +++ b/packages/cli/test/functional/test_site/expected/testIncludeBoilerplate.html @@ -335,5 +335,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testIncludeMultipleModals.html b/packages/cli/test/functional/test_site/expected/testIncludeMultipleModals.html index aca6bac2da..89e8af9b5a 100644 --- a/packages/cli/test/functional/test_site/expected/testIncludeMultipleModals.html +++ b/packages/cli/test/functional/test_site/expected/testIncludeMultipleModals.html @@ -250,5 +250,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testIncludePluginsRendered.html b/packages/cli/test/functional/test_site/expected/testIncludePluginsRendered.html index a450362407..69b9a7d043 100644 --- a/packages/cli/test/functional/test_site/expected/testIncludePluginsRendered.html +++ b/packages/cli/test/functional/test_site/expected/testIncludePluginsRendered.html @@ -245,5 +245,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testLayouts.html b/packages/cli/test/functional/test_site/expected/testLayouts.html index 091fb58154..21ea6d010c 100644 --- a/packages/cli/test/functional/test_site/expected/testLayouts.html +++ b/packages/cli/test/functional/test_site/expected/testLayouts.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testLayoutsOverride.html b/packages/cli/test/functional/test_site/expected/testLayoutsOverride.html index 1935272b5d..13d1833654 100644 --- a/packages/cli/test/functional/test_site/expected/testLayoutsOverride.html +++ b/packages/cli/test/functional/test_site/expected/testLayoutsOverride.html @@ -251,5 +251,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testLinks.html b/packages/cli/test/functional/test_site/expected/testLinks.html index 30525fc988..4426e92d50 100644 --- a/packages/cli/test/functional/test_site/expected/testLinks.html +++ b/packages/cli/test/functional/test_site/expected/testLinks.html @@ -254,5 +254,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testMath.html b/packages/cli/test/functional/test_site/expected/testMath.html index 9d2326c6de..d24d28f209 100644 --- a/packages/cli/test/functional/test_site/expected/testMath.html +++ b/packages/cli/test/functional/test_site/expected/testMath.html @@ -510,5 +510,9 @@

+import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testMermaid.html b/packages/cli/test/functional/test_site/expected/testMermaid.html new file mode 100644 index 0000000000..ed3c9d0f1a --- /dev/null +++ b/packages/cli/test/functional/test_site/expected/testMermaid.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + Rendering of diagrams via mermaid-js + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +
  • Open Bugs
  • +
    +
    +
    + Test Jumbotron
    +
    +
    +
    +

    Relative Link Test This is a relative Intra-Site link in a layout (see link)

    +
    +
    + + + + +
    +

    Mermaid Test

    +
    + %%{init: { "theme": "neutral" } }%% + + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +
    +
    + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +
    +
    + sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +
    +
    + gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d + + section Documentation + Describe gantt syntax :active, a1, after des1, 3d + Add gantt diagram to demo page :after a1 , 20h + Add another diagram to demo page :doc1, after a1 , 48h + + section Last section + Describe gantt syntax :after doc1, 3d + Add gantt diagram to demo page : 20h + Add another diagram to demo page : 48h +
    +
    + pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +
    + +
    + + + +
    +
    +
    +

    Heading in footer should not be indexed

    +
    + This is a dynamic height footer that supports markdown 😄! +
    +
    +
    +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testMermaid.page-vue-render.js b/packages/cli/test/functional/test_site/expected/testMermaid.page-vue-render.js new file mode 100644 index 0000000000..d6081ad444 --- /dev/null +++ b/packages/cli/test/functional/test_site/expected/testMermaid.page-vue-render.js @@ -0,0 +1,19 @@ + + var pageVueRenderFn = function anonymous( +) { +with(this){return _c('div',{attrs:{"id":"app"}},[_c('div',[_c('header',[_c('navbar',{attrs:{"type":"dark","default-highlight-on":"sibling-or-child"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/","title":"Home"}},[_v("MarkBind Test Site")])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/test_site/bugs/index.html"}},[_v("Open Bugs")])])]),_v(" "),_m(0)],1),_v(" "),_m(1)]),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"fw-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('div',[_c('h2',{attrs:{"id":"default-layout"}},[_c('span',{staticClass:"anchor",attrs:{"id":"default-layout"}}),_v("Default Layout"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#default-layout","onclick":"event.stopPropagation()"}})])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/test_site/index.html"}},[_v("Home 🏠")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/test_site/bugs/index.html"}},[_v("Open Bugs 🐛")])])]),_v(" "),_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-0"},[_c('h3',{attrs:{"id":"testing-site-nav"}},[_c('span',{staticClass:"anchor",attrs:{"id":"testing-site-nav"}}),_v("Testing Site-Nav"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#testing-site-nav","onclick":"event.stopPropagation()"}})])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Dropdown ")]),_v(" "),_c('span',{staticClass:"glyphicon glyphicon-search",attrs:{"aria-hidden":"true"}}),_v(" title ✏️ "),_v(" "),_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_v("Dropdown link one")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_v("Html within site-nav "),_c('span',{staticStyle:{"color":"red"}},[_v("should")]),_v(" be displayed properly")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Nested Dropdown title 📐\n\n"),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-2",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_c('strong',[_v("Nested")]),_v(" Dropdown link one")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-2",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_c('strong',[_v("Nested")]),_v(" Dropdown link two")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_v("Dropdown link two")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_c('mark',[_v("Third Link")]),_v(" 📋")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Filler text "),_c('a',{attrs:{"href":"https://www.youtube.com/"}},[_c('span',{staticClass:"glyphicon glyphicon-facetime-video",attrs:{"aria-hidden":"true"}}),_v(" Youtube 📺")]),_v(" filler text"),_v(" "),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}},[_v("The answer to everything in the universe")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('mark',[_v("Dropdown title")]),_v(" "),_c('span',{staticClass:"glyphicon glyphicon-comment",attrs:{"aria-hidden":"true"}}),_v(" ✏️ "),_v(" "),_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-2",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"https://www.google.com/"}},[_c('strong',[_v("Nested")]),_v(" Dropdown link one")])])])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown Title Really Long Dropdown\n\n"),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-1"},[_v("Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text Really Really Long Text")]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Nested Dropdown Title\n\n"),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-2"},[_v("Hello Doge Hello Doge 🐶")]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-2",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/test_site/index.html"}},[_c('strong',[_v("NESTED LINK")]),_v(" Home 🏠")])])]),_v(" "),_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-2"},[_v("Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit Text cut off from height limit")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Test line break in navigation layout\n\n"),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-1"},[_v("Nested line break text ✂️")]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/test_site/index.html"}},[_v("Nested line break href")]),_v(" "),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-2"},[_v("Nested Nested line break text ✂️")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Nested line break dropdown menu\n\n"),_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',{staticClass:"site-nav-custom-list-item site-nav-list-item-2"},[_v("Line break item 2 📘")])])])])])])],1)],1)])]),_v(" "),_m(2),_v(" "),_c('overlay-source',{attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(3)])} +}; + var pageVueStaticRenderFns = [function anonymous( +) { +with(this){return _c('div',{staticClass:"bg-info display-4 text-center text-white"},[_c('br'),_v("\n Test Jumbotron"),_c('br'),_v(" "),_c('br')])} +},function anonymous( +) { +with(this){return _c('p',[_c('strong',[_v("Relative Link Test")]),_v(" This is a relative Intra-Site link in a layout (see "),_c('a',{attrs:{"href":"/test_site/index.html#heading-with-hidden-keyword"}},[_v("link")]),_v(")")])} +},function anonymous( +) { +with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('p',[_c('strong',[_v("Mermaid Test")])]),_v(" "),_c('div',{staticClass:"mermaid"},[_v("\n%%{init: { \"theme\": \"neutral\" } }%%\n\ngraph TD;\n A-->B;\n A-->C;\n B-->D;\n C-->D;\n")]),_v(" "),_c('div',{staticClass:"mermaid"},[_v("\ngraph TD;\n A-->B;\n A-->C;\n B-->D;\n C-->D;\n")]),_v(" "),_c('div',{staticClass:"mermaid"},[_v("\nsequenceDiagram\n participant Alice\n participant Bob\n Alice->>John: Hello John, how are you?\n loop Healthcheck\n John->>John: Fight against hypochondria\n end\n Note right of John: Rational thoughts "),_c('br'),_v("prevail!\n John-->>Alice: Great!\n John->>Bob: How about you?\n Bob-->>John: Jolly good!\n")]),_v(" "),_c('div',{staticClass:"mermaid"},[_v("\ngantt\ndateFormat YYYY-MM-DD\ntitle Adding GANTT diagram to mermaid\nsection A section\nCompleted task :done, des1, 2014-01-06,2014-01-08\nActive task :active, des2, 2014-01-09, 3d\nFuture task : des3, after des2, 5d\nFuture task2 : des4, after des3, 5d\n\nsection Critical tasks\nCompleted task in the critical line :crit, done, 2014-01-06,24h\nImplement parser and jison :crit, done, after des1, 2d\nCreate tests for parser :crit, active, 3d\nFuture task in critical line :crit, 5d\nCreate tests for renderer :2d\nAdd to mermaid :1d\n\nsection Documentation\nDescribe gantt syntax :active, a1, after des1, 3d\nAdd gantt diagram to demo page :after a1 , 20h\nAdd another diagram to demo page :doc1, after a1 , 48h\n\nsection Last section\nDescribe gantt syntax :after doc1, 3d\nAdd gantt diagram to demo page : 20h\nAdd another diagram to demo page : 48h\n")]),_v(" "),_c('div',{staticClass:"mermaid"},[_v("\npie title Pets adopted by volunteers\n \"Dogs\" : 386\n \"Cats\" : 85\n \"Rats\" : 15\n")]),_v(" "),_c('i',{staticClass:"fa fa-arrow-circle-up fa-lg d-print-none",attrs:{"id":"scroll-top-button","onclick":"handleScrollTop()","aria-hidden":"true"}})])} +},function anonymous( +) { +with(this){return _c('div',[_c('footer',[_c('h1',{attrs:{"id":"heading-in-footer-should-not-be-indexed"}},[_c('span',{staticClass:"anchor",attrs:{"id":"heading-in-footer-should-not-be-indexed"}}),_v("Heading in footer should not be indexed"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#heading-in-footer-should-not-be-indexed","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"text-center"},[_v("\n This is a dynamic height footer that supports markdown "),_c('span',[_v("😄")]),_v("!\n ")])])])} +}]; + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testModals.html b/packages/cli/test/functional/test_site/expected/testModals.html index d32e7a23b7..cf4f16a5f1 100644 --- a/packages/cli/test/functional/test_site/expected/testModals.html +++ b/packages/cli/test/functional/test_site/expected/testModals.html @@ -386,5 +386,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testNunjucksPathResolving.html b/packages/cli/test/functional/test_site/expected/testNunjucksPathResolving.html index 0c948c6338..f5c853884d 100644 --- a/packages/cli/test/functional/test_site/expected/testNunjucksPathResolving.html +++ b/packages/cli/test/functional/test_site/expected/testNunjucksPathResolving.html @@ -251,5 +251,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPageNav.html b/packages/cli/test/functional/test_site/expected/testPageNav.html index 0fc384bc67..330d2994dd 100644 --- a/packages/cli/test/functional/test_site/expected/testPageNav.html +++ b/packages/cli/test/functional/test_site/expected/testPageNav.html @@ -259,5 +259,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPageNavTarget.html b/packages/cli/test/functional/test_site/expected/testPageNavTarget.html index 3b992fe4c8..ec2f5a7ea0 100644 --- a/packages/cli/test/functional/test_site/expected/testPageNavTarget.html +++ b/packages/cli/test/functional/test_site/expected/testPageNavTarget.html @@ -247,5 +247,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPageNavWithOnlyTitle.html b/packages/cli/test/functional/test_site/expected/testPageNavWithOnlyTitle.html index 377564beec..d9f0739518 100644 --- a/packages/cli/test/functional/test_site/expected/testPageNavWithOnlyTitle.html +++ b/packages/cli/test/functional/test_site/expected/testPageNavWithOnlyTitle.html @@ -247,5 +247,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPageNavWithoutTitleAndNavHeadings.html b/packages/cli/test/functional/test_site/expected/testPageNavWithoutTitleAndNavHeadings.html index 2c6e17b12d..97960626c2 100644 --- a/packages/cli/test/functional/test_site/expected/testPageNavWithoutTitleAndNavHeadings.html +++ b/packages/cli/test/functional/test_site/expected/testPageNavWithoutTitleAndNavHeadings.html @@ -243,5 +243,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPanelMarkdownParsing.html b/packages/cli/test/functional/test_site/expected/testPanelMarkdownParsing.html index 6be480a460..d4d2994c77 100644 --- a/packages/cli/test/functional/test_site/expected/testPanelMarkdownParsing.html +++ b/packages/cli/test/functional/test_site/expected/testPanelMarkdownParsing.html @@ -301,5 +301,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPlantUML.html b/packages/cli/test/functional/test_site/expected/testPlantUML.html index b1a5fc2a54..99909305c8 100644 --- a/packages/cli/test/functional/test_site/expected/testPlantUML.html +++ b/packages/cli/test/functional/test_site/expected/testPlantUML.html @@ -249,5 +249,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPopoverTrigger.html b/packages/cli/test/functional/test_site/expected/testPopoverTrigger.html index fd992ce519..e4ba891f56 100644 --- a/packages/cli/test/functional/test_site/expected/testPopoverTrigger.html +++ b/packages/cli/test/functional/test_site/expected/testPopoverTrigger.html @@ -249,5 +249,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testPopovers.html b/packages/cli/test/functional/test_site/expected/testPopovers.html index 27087e9da6..fea05b69e4 100644 --- a/packages/cli/test/functional/test_site/expected/testPopovers.html +++ b/packages/cli/test/functional/test_site/expected/testPopovers.html @@ -334,5 +334,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testThumbnails.html b/packages/cli/test/functional/test_site/expected/testThumbnails.html index 0f622deb7b..60995f570b 100644 --- a/packages/cli/test/functional/test_site/expected/testThumbnails.html +++ b/packages/cli/test/functional/test_site/expected/testThumbnails.html @@ -341,5 +341,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testTooltipSpacing.html b/packages/cli/test/functional/test_site/expected/testTooltipSpacing.html index e12e771e01..8904c6d146 100644 --- a/packages/cli/test/functional/test_site/expected/testTooltipSpacing.html +++ b/packages/cli/test/functional/test_site/expected/testTooltipSpacing.html @@ -251,5 +251,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testTree.html b/packages/cli/test/functional/test_site/expected/testTree.html index 99c9948b3d..8fd39116e6 100644 --- a/packages/cli/test/functional/test_site/expected/testTree.html +++ b/packages/cli/test/functional/test_site/expected/testTree.html @@ -316,5 +316,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/testVariableContainsInclude.html b/packages/cli/test/functional/test_site/expected/testVariableContainsInclude.html index e42ab9f487..6601580595 100644 --- a/packages/cli/test/functional/test_site/expected/testVariableContainsInclude.html +++ b/packages/cli/test/functional/test_site/expected/testVariableContainsInclude.html @@ -241,5 +241,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/expected/test_md_fragment.html b/packages/cli/test/functional/test_site/expected/test_md_fragment.html index af5a3ca5b7..03d836c5e4 100644 --- a/packages/cli/test/functional/test_site/expected/test_md_fragment.html +++ b/packages/cli/test/functional/test_site/expected/test_md_fragment.html @@ -242,5 +242,9 @@

    +import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +mermaid.initialize({"startOnLoad":true,"theme":"forest"}); + \ No newline at end of file diff --git a/packages/cli/test/functional/test_site/site.json b/packages/cli/test/functional/test_site/site.json index f2f74f4cbf..95964e9ba0 100644 --- a/packages/cli/test/functional/test_site/site.json +++ b/packages/cli/test/functional/test_site/site.json @@ -146,6 +146,10 @@ { "src": "testPageNavWithOnlyTitle.md", "title": "page nav with title added" + }, + { + "src": "testMermaid.md", + "title": "Rendering of diagrams via mermaid-js" } ], "pagesExclude": ["**/*-fragment.md"], @@ -171,7 +175,8 @@ "testMarkbindPlugin", "filterTags", "googleAnalytics", - "mathDelimiters" + "mathDelimiters", + "mermaid" ], "pluginsContext": { "testMarkbindPlugin": { @@ -190,6 +195,12 @@ }, "mathDelimiters": { "delimiters": ["beg_end"] + }, + "mermaid": { + "config": { + "startOnLoad": true, + "theme": "forest" + } } } } diff --git a/packages/cli/test/functional/test_site/testMermaid.md b/packages/cli/test/functional/test_site/testMermaid.md new file mode 100644 index 0000000000..a938c94cc3 --- /dev/null +++ b/packages/cli/test/functional/test_site/testMermaid.md @@ -0,0 +1,69 @@ +**Mermaid Test** + + +%%{init: { "theme": "neutral" } }%% + +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + + + +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + + + +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts
    prevail! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +
    + + +gantt +dateFormat YYYY-MM-DD +title Adding GANTT diagram to mermaid +section A section +Completed task :done, des1, 2014-01-06,2014-01-08 +Active task :active, des2, 2014-01-09, 3d +Future task : des3, after des2, 5d +Future task2 : des4, after des3, 5d + +section Critical tasks +Completed task in the critical line :crit, done, 2014-01-06,24h +Implement parser and jison :crit, done, after des1, 2d +Create tests for parser :crit, active, 3d +Future task in critical line :crit, 5d +Create tests for renderer :2d +Add to mermaid :1d + +section Documentation +Describe gantt syntax :active, a1, after des1, 3d +Add gantt diagram to demo page :after a1 , 20h +Add another diagram to demo page :doc1, after a1 , 48h + +section Last section +Describe gantt syntax :after doc1, 3d +Add gantt diagram to demo page : 20h +Add another diagram to demo page : 48h + + + +pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 + \ No newline at end of file diff --git a/packages/core/src/plugins/mermaid.js b/packages/core/src/plugins/mermaid.js new file mode 100644 index 0000000000..207e9e2d0c --- /dev/null +++ b/packages/core/src/plugins/mermaid.js @@ -0,0 +1,25 @@ +const DEFAULT_CDN_ADDRESS = 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; +const DEFAULT_CONFIG = '{"startOnLoad":true}'; + +function genScript(address, config) { + return ``; +} + +module.exports = { + tagConfig: { + mermaid: { + isSpecial: true, + }, + }, + getScripts: pluginContext => [genScript(pluginContext.address, pluginContext.config)], + processNode: (_, node) => { + if (node.name !== 'mermaid') { + return; + } + node.name = 'div'; + node.attribs.class = 'mermaid'; + }, +}; diff --git a/packages/core/test/unit/plugins/mermaid.test.js b/packages/core/test/unit/plugins/mermaid.test.js new file mode 100644 index 0000000000..6de56cb592 --- /dev/null +++ b/packages/core/test/unit/plugins/mermaid.test.js @@ -0,0 +1,62 @@ +const cheerio = require('cheerio'); +const mermaidPlugin = require('../../../src/plugins/mermaid'); + +/* +The plugin converts the following mermaid syntax: + +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] + +to +
    +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] +
    +which will be further converted to the actual diagram by the mermaid library. +*/ +test('processNode should work with flowchart', () => { + const raw = '' + + 'flowchart TD\n' + + ' A[Start] --> B{Is it?}\n' + + ' B -->|Yes| C[OK]\n' + + ' C --> D[Rethink]\n' + + ' D --> B\n' + + ' B ---->|No| E[End]\n' + + ''; + const expected = '
    ' + + 'flowchart TD\n' + + ' A[Start] --> B{Is it?}\n' + + ' B -->|Yes| C[OK]\n' + + ' C --> D[Rethink]\n' + + ' D --> B\n' + + ' B ---->|No| E[End]\n' + + '
    '; + const [expectedNode] = cheerio.parseHTML(expected, true); + const [rawNode] = cheerio.parseHTML(raw, true); + mermaidPlugin.processNode({}, rawNode); + expect(rawNode.name).toEqual('div'); + expect(rawNode.attribs.class).toEqual('mermaid'); + expect(rawNode.children[0].data).toEqual(expectedNode.children[0].data); +}); + +test('getScripts should work with pluginContext', () => { + const pluginContext = { + address: 'https://unpkg.com/mermaid@8/dist/mermaid.esm.min.mjs', + config: '{"startOnLoad":false}', + }; + const expected = ``; + const scripts = mermaidPlugin.getScripts(pluginContext); + expect(scripts.length).toEqual(1); + expect(scripts[0]).toEqual(expected); +});