Skip to content

Commit bfbd85e

Browse files
committed
Diagram color-scheme support.
1 parent 9f48767 commit bfbd85e

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

NoteWidgetAddIn/Markdown/Extension/DiagramExtension.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)