File tree Expand file tree Collapse file tree 5 files changed +324
-6
lines changed
Expand file tree Collapse file tree 5 files changed +324
-6
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import 'codemirror-mode-elixir'
77import consts from 'browser/lib/consts'
88import Raphael from 'raphael'
99import flowchart from 'flowchart'
10+ import mermaidRender from './render/MermaidRender'
1011import SequenceDiagram from 'js-sequence-diagrams'
1112import eventEmitter from 'browser/main/lib/eventEmitter'
1213import htmlTextHelper from 'browser/lib/htmlTextHelper'
@@ -533,6 +534,10 @@ export default class MarkdownPreview extends React.Component {
533534 el . innerHTML = 'Sequence diagram parse error: ' + e . message
534535 }
535536 } )
537+
538+ _ . forEach ( this . refs . root . contentWindow . document . querySelectorAll ( '.mermaid' ) , ( el ) => {
539+ mermaidRender ( el , htmlTextHelper . decodeEntities ( el . innerHTML ) )
540+ } )
536541 }
537542
538543 focus ( ) {
Original file line number Diff line number Diff line change 1+ import mermaidAPI from 'mermaid'
2+
3+ function getRandomInt ( min , max ) {
4+ return Math . floor ( Math . random ( ) * ( max - min ) ) + min
5+ }
6+
7+ function getId ( ) {
8+ var pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
9+ var id = 'm-'
10+ for ( var i = 0 ; i < 7 ; i ++ ) {
11+ id += pool [ getRandomInt ( 0 , 16 ) ]
12+ }
13+ return id
14+ }
15+
16+ function render ( element , content ) {
17+ try {
18+ mermaidAPI . render ( getId ( ) , content , ( svgGraph ) => {
19+ element . innerHTML = svgGraph
20+ } )
21+ } catch ( e ) {
22+ console . error ( e )
23+ element . className = 'mermaid-error'
24+ element . innerHTML = 'mermaid diagram parse error: ' + e . message
25+ }
26+ }
27+
28+ export default render
Original file line number Diff line number Diff line change @@ -40,6 +40,9 @@ class Markdown {
4040 if ( langType === 'sequence' ) {
4141 return `<pre class="sequence">${ str } </pre>`
4242 }
43+ if ( langType === 'mermaid' ) {
44+ return `<pre class="mermaid">${ str } </pre>`
45+ }
4346 return '<pre class="code CodeMirror">' +
4447 '<span class="filename">' + fileName + '</span>' +
4548 createGutter ( str , firstLineNumber ) +
Original file line number Diff line number Diff line change 8181 "markdown-it-plantuml" : " ^1.1.0" ,
8282 "markdown-it-smartarrows" : " ^1.0.1" ,
8383 "mdurl" : " ^1.0.1" ,
84+ "mermaid" : " ^8.0.0-rc.8" ,
8485 "moment" : " ^2.10.3" ,
8586 "mousetrap" : " ^1.6.1" ,
8687 "mousetrap-global-bind" : " ^1.1.0" ,
You can’t perform that action at this time.
0 commit comments