File tree Expand file tree Collapse file tree 2 files changed +38
-17
lines changed Expand file tree Collapse file tree 2 files changed +38
-17
lines changed Original file line number Diff line number Diff line change 33--> 
44
55< script  src ="https://cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js "> </ script > 
6+ 
67< script > 
78  $ ( function ( )  { 
9+     function  updateMermaid ( event )  { 
10+       if  ( event . source  ===  window  &&  event . data  && 
11+             event . data . direction  ===  ModeToggle . ID )  { 
12+ 
13+         const  mode  =  event . data . message ; 
14+ 
15+         if  ( typeof  mermaid  ===  "undefined" )  { 
16+           return ; 
17+         } 
18+ 
19+         let  expectedTheme  =  ( mode  ===  ModeToggle . DARK_MODE ? "dark"  : "default" ) ; 
20+         let  config  =  {  theme : expectedTheme  } ; 
21+ 
22+         /* Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */ 
23+         $ ( ".mermaid" ) . each ( function ( )  { 
24+           let  svgCode  =  $ ( this ) . prev ( ) . children ( ) . html ( ) ; 
25+           $ ( this ) . removeAttr ( "data-processed" ) ; 
26+           $ ( this ) . html ( svgCode ) ; 
27+         } ) ; 
28+ 
29+         mermaid . initialize ( config ) ; 
30+         mermaid . init ( undefined ,  ".mermaid" ) ; 
31+       } 
32+     } 
33+ 
834    let  initTheme  =  "default" ; 
935
1036    if  ( $ ( "html[mode=dark]" ) . length  >  0 
2551    } ) ; 
2652
2753    mermaid . initialize ( mermaidConf ) ; 
54+ 
55+     window . addEventListener ( "message" ,  updateMermaid ) ; 
2856  } ) ; 
2957</ script > 
Original file line number Diff line number Diff line change 77    static  get  MODE_KEY ( )  {  return  "mode" ;  } 
88    static  get  DARK_MODE ( )  {  return  "dark" ;  } 
99    static  get  LIGHT_MODE ( )  {  return  "light" ;  } 
10+     static  get  ID ( )  {  return  "mode-toggle" ;  } 
1011
1112    constructor ( )  { 
1213      if  ( this . hasMode )  { 
4041          self . clearMode ( ) ; 
4142        } 
4243
43-         self . updateMermaid ( ) ; 
44+         self . notify ( ) ; 
45+ 
4446      } ) ; 
4547
4648    }  /* constructor() */ 
8284      sessionStorage . removeItem ( ModeToggle . MODE_KEY ) ; 
8385    } 
8486
85-     updateMermaid ( )  { 
86-       if  ( typeof  mermaid  !==  "undefined" )  { 
87-         let  expectedTheme  =  ( this . modeStatus  ===  ModeToggle . DARK_MODE ? "dark"  : "default" ) ; 
88-         let  config  =  {  theme : expectedTheme  } ; 
89- 
90-         /* re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */ 
91-         $ ( ".mermaid" ) . each ( function ( )  { 
92-           let  svgCode  =  $ ( this ) . prev ( ) . children ( ) . html ( ) ; 
93-           $ ( this ) . removeAttr ( "data-processed" ) ; 
94-           $ ( this ) . html ( svgCode ) ; 
95-         } ) ; 
96- 
97-         mermaid . initialize ( config ) ; 
98-         mermaid . init ( undefined ,  ".mermaid" ) ; 
99-       } 
87+     /* Notify another plugins that the theme mode has changed */ 
88+     notify ( )  { 
89+       window . postMessage ( { 
90+         direction : ModeToggle . ID , 
91+         message : this . modeStatus 
92+       } ,  "*" ) ; 
10093    } 
10194
10295  }  /* ModeToggle */ 
128121      } 
129122    } 
130123
131-     toggle . updateMermaid ( ) ; 
124+     toggle . notify ( ) ; 
132125
133126  }  /* flipMode() */ 
134127
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments