@@ -13,6 +13,7 @@ internal class DiagramExtension : ITemplateExtension
1313 {
1414 internal class DiagramRender : ITemplateRender
1515 {
16+ public ColorScheme ColorScheme { get ; set ; }
1617 public TemplateResourceType ResourceType { get ; set ; }
1718 public void Render ( HtmlTemplate template )
1819 {
@@ -26,12 +27,25 @@ public void Render(HtmlTemplate template)
2627 mermaidJsUrl = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" ;
2728 }
2829 template . PostScripts . Add ( $ "<script src=\" { mermaidJsUrl } \" ></script>") ;
29- template . PostScripts . Add ( "<script>try { mermaid.initialize({ startOnLoad: true }); } catch (e) { }</script>" ) ;
30+
31+ if ( ColorScheme == ColorScheme . Light )
32+ {
33+ template . PostScripts . Add ( "<script>try { mermaid.initialize({ 'securityLevel': 'loose', 'theme': 'forest', startOnLoad: true }); } catch (e) { }</script>" ) ;
34+ }
35+ else if ( ColorScheme == ColorScheme . Dark )
36+ {
37+ template . PostScripts . Add ( "<script>try { mermaid.initialize({ 'securityLevel': 'loose', 'theme': 'dark', startOnLoad: true }); } catch (e) { }</script>" ) ;
38+ }
39+ else //Use System Settings
40+ {
41+ template . PostScripts . Add ( "<script>if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches){ try { mermaid.initialize({ 'securityLevel': 'loose', 'theme': 'dark', startOnLoad: true }); } catch (e) { } } else {try { mermaid.initialize({ 'securityLevel': 'loose', 'theme': 'forest', startOnLoad: true }); } catch (e) { }}</script>" ) ;
42+ }
3043 }
3144 }
3245 public void Setup ( HtmlTemplateBuilder builder , TemplateResourceType resourceType )
3346 {
34- builder . Renders . Add ( new DiagramRender { ResourceType = resourceType } ) ;
47+ var scheme = Enum . TryParse < ColorScheme > ( Properties . Settings . Default . Markdown_ColorScheme ?? String . Empty , out var result ) ? result : ColorScheme . System ;
48+ builder . Renders . Add ( new DiagramRender { ResourceType = resourceType , ColorScheme = scheme } ) ;
3549 }
3650 }
3751}
0 commit comments