File tree Expand file tree Collapse file tree 3 files changed +67
-2
lines changed
Expand file tree Collapse file tree 3 files changed +67
-2
lines changed Original file line number Diff line number Diff line change 1+ <!--
2+ mermaid-js loader
3+ -->
4+ < script src ="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js "> </ script >
5+ < script >
6+
7+ let initTheme = "default" ;
8+
9+ if ( $ ( "html[mode=dark]" ) . length > 0
10+ || ( $ ( "html[mode]" ) . length == 0
11+ && window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ) ) {
12+ initTheme = "dark" ;
13+ }
14+
15+ let mermaidConf = {
16+ theme : initTheme /* <default|dark|forest|neutral> */
17+ } ;
18+
19+ /* Markdown converts to HTML */
20+ $ ( "pre" ) . has ( "code.language-mermaid" ) . each ( function ( ) {
21+ let svgCode = $ ( this ) . children ( ) . html ( ) ;
22+ $ ( this ) . addClass ( "unloaded" ) ;
23+ $ ( this ) . after ( `<div class=\"mermaid\">${ svgCode } </div>` ) ;
24+ } ) ;
25+
26+ mermaid . initialize ( mermaidConf ) ;
27+
28+ </ script >
Original file line number Diff line number Diff line change 3333
3434 /* always follow the system prefers */
3535 this . sysDarkPrefers . addListener ( function ( ) {
36- if ( self . mode != null ) {
37- if ( self . mode == ModeToggle . DARK_MODE ) {
36+ if ( self . hasMode ) {
37+ if ( self . isDarkMode ) {
3838 if ( ! self . isSysDarkPrefer ) {
3939 self . setDark ( ) ;
4040 }
4747
4848 self . clearMode ( ) ;
4949 }
50+
51+ self . updateMermaid ( ) ;
5052 } ) ;
5153
5254 } /* constructor() */
7981
8082 get mode ( ) { return sessionStorage . getItem ( ModeToggle . MODE_KEY ) ; }
8183
84+ /* get the current mode on screen */
85+ get modeStatus ( ) {
86+ if ( this . isDarkMode
87+ || ( ! this . hasMode && this . isSysDarkPrefer ) ) {
88+ return ModeToggle . DARK_MODE ;
89+ } else {
90+ return ModeToggle . LIGHT_MODE ;
91+ }
92+ }
93+
94+ updateMermaid ( ) {
95+ if ( mermaid !== undefined ) {
96+ let expectedTheme = ( this . modeStatus === ModeToggle . DARK_MODE ? "dark" : "default" ) ;
97+ let config = { theme : expectedTheme } ;
98+
99+ /* re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
100+ $ ( ".mermaid" ) . each ( function ( ) {
101+ let svgCode = $ ( this ) . prev ( ) . children ( ) . html ( ) ;
102+ $ ( this ) . removeAttr ( "data-processed" ) ;
103+ $ ( this ) . html ( svgCode ) ;
104+ } ) ;
105+
106+ mermaid . initialize ( config ) ;
107+ mermaid . init ( undefined , ".mermaid" ) ;
108+ }
109+ }
110+
82111 flipMode ( ) {
83112 if ( this . hasMode ) {
84113 if ( this . isSysDarkPrefer ) {
104133 }
105134 }
106135
136+ this . updateMermaid ( ) ;
137+
107138 } /* flipMode() */
108139
109140 } /* ModeToggle */
110141
111142 let toggle = new ModeToggle ( ) ;
112143
113144 $ ( ".mode-toggle" ) . click ( function ( ) {
145+
114146 toggle . flipMode ( ) ;
147+
115148 } ) ;
116149
117150</ script >
Original file line number Diff line number Diff line change 4040
4141 </ div > <!-- #main-wrapper -->
4242
43+ {% if page.mermaid %}
44+ {% include mermaid.html %}
45+ {% endif %}
46+
4347 < div id ="mask "> </ div >
4448
4549 < a id ="back-to-top " href ="# " aria-label ="back-to-top " class ="btn btn-lg btn-box-shadow " role ="button ">
You can’t perform that action at this time.
0 commit comments