|
| 1 | +using Microsoft.JSInterop; |
| 2 | + |
| 3 | +namespace DotNetLab; |
| 4 | + |
| 5 | +internal static class CustomMonacoTheme |
| 6 | +{ |
| 7 | + public const string Light = "dotnetlab-light"; |
| 8 | + public const string Dark = "dotnetlab-dark"; |
| 9 | + |
| 10 | + public static async Task DefineAsync(IJSRuntime jsRuntime) |
| 11 | + { |
| 12 | + // https://github.com/dotnet/vscode-csharp/blob/adf1a040d73c6cbe72d18c516b2c5ceb59b538e3/themes/vs2019_light.json |
| 13 | + await BlazorMonaco.Editor.Global.DefineTheme(jsRuntime, Light, new() |
| 14 | + { |
| 15 | + Base = BuiltInMonacoTheme.Light, |
| 16 | + Inherit = true, |
| 17 | + Colors = [], |
| 18 | + Rules = |
| 19 | + [ |
| 20 | + new() { Token = "comment", Foreground = "008000" }, |
| 21 | + new() { Token = "excludedCode", Foreground = "808080" }, |
| 22 | + new() { Token = "variable", Foreground = "001080" }, |
| 23 | + new() { Token = "keyword", Foreground = "0000ff" }, |
| 24 | + new() { Token = "keywordControl", Foreground = "af00db" }, |
| 25 | + new() { Token = "number", Foreground = "098658" }, |
| 26 | + new() { Token = "operator", Foreground = "000000" }, |
| 27 | + new() { Token = "operatorOverloaded", Foreground = "000000" }, |
| 28 | + new() { Token = "macro", Foreground = "0000ff" }, |
| 29 | + new() { Token = "string", Foreground = "a31515" }, |
| 30 | + new() { Token = "text", Foreground = "000000" }, |
| 31 | + new() { Token = "preprocessorText", Foreground = "a31515" }, |
| 32 | + new() { Token = "punctuation", Foreground = "222222" }, |
| 33 | + new() { Token = "stringVerbatim", Foreground = "a31515" }, |
| 34 | + new() { Token = "stringEscapeCharacter", Foreground = "ff0000" }, |
| 35 | + new() { Token = "class", Foreground = "267f99" }, |
| 36 | + new() { Token = "recordClassName", Foreground = "267f99" }, |
| 37 | + new() { Token = "delegateName", Foreground = "267f99" }, |
| 38 | + new() { Token = "enum", Foreground = "267f99" }, |
| 39 | + new() { Token = "interface", Foreground = "267f99" }, |
| 40 | + new() { Token = "moduleName", Foreground = "222222" }, |
| 41 | + new() { Token = "struct", Foreground = "267f99" }, |
| 42 | + new() { Token = "recordStructName", Foreground = "267f99" }, |
| 43 | + new() { Token = "typeParameter", Foreground = "267f99" }, |
| 44 | + new() { Token = "fieldName", Foreground = "222222" }, |
| 45 | + new() { Token = "enumMember", Foreground = "222222" }, |
| 46 | + new() { Token = "constantName", Foreground = "222222" }, |
| 47 | + new() { Token = "parameter", Foreground = "001080" }, |
| 48 | + new() { Token = "method", Foreground = "795e26" }, |
| 49 | + new() { Token = "extensionMethodName", Foreground = "795e26" }, |
| 50 | + new() { Token = "property", Foreground = "222222" }, |
| 51 | + new() { Token = "event", Foreground = "222222" }, |
| 52 | + new() { Token = "namespace", Foreground = "222222" }, |
| 53 | + new() { Token = "label", Foreground = "000000" }, |
| 54 | + new() { Token = "xmlDocCommentAttributeName", Foreground = "282828" }, |
| 55 | + new() { Token = "xmlDocCommentAttributeQuotes", Foreground = "282828" }, |
| 56 | + new() { Token = "xmlDocCommentAttributeValue", Foreground = "282828" }, |
| 57 | + new() { Token = "xmlDocCommentCDataSection", Foreground = "808080" }, |
| 58 | + new() { Token = "xmlDocCommentComment", Foreground = "008000" }, |
| 59 | + new() { Token = "xmlDocCommentDelimiter", Foreground = "808080" }, |
| 60 | + new() { Token = "xmlDocCommentEntityReference", Foreground = "008000" }, |
| 61 | + new() { Token = "xmlDocCommentName", Foreground = "808080" }, |
| 62 | + new() { Token = "xmlDocCommentProcessingInstruction", Foreground = "808080" }, |
| 63 | + new() { Token = "xmlDocCommentText", Foreground = "008000" }, |
| 64 | + new() { Token = "xmlLiteralAttributeName", Foreground = "ff0000" }, |
| 65 | + new() { Token = "xmlLiteralAttributeQuotes", Foreground = "0000ff" }, |
| 66 | + new() { Token = "xmlLiteralAttributeValue", Foreground = "0000ff" }, |
| 67 | + new() { Token = "xmlLiteralCDataSection", Foreground = "0000ff" }, |
| 68 | + new() { Token = "xmlLiteralComment", Foreground = "008000" }, |
| 69 | + new() { Token = "xmlLiteralDelimiter", Foreground = "800000" }, |
| 70 | + new() { Token = "xmlLiteralEmbeddedExpression", Foreground = "000000" }, |
| 71 | + new() { Token = "xmlLiteralEntityReference", Foreground = "ff0000" }, |
| 72 | + new() { Token = "xmlLiteralName", Foreground = "800000" }, |
| 73 | + new() { Token = "xmlLiteralProcessingInstruction", Foreground = "0000ff" }, |
| 74 | + new() { Token = "xmlLiteralText", Foreground = "0000ff" }, |
| 75 | + new() { Token = "regexComment", Foreground = "008000" }, |
| 76 | + new() { Token = "regexCharacterClass", Foreground = "0073ff" }, |
| 77 | + new() { Token = "regexAnchor", Foreground = "ff00c1" }, |
| 78 | + new() { Token = "regexQuantifier", Foreground = "ff00c1" }, |
| 79 | + new() { Token = "regexGrouping", Foreground = "05c3ba" }, |
| 80 | + new() { Token = "regexAlternation", Foreground = "05c3ba" }, |
| 81 | + new() { Token = "regexText", Foreground = "800000" }, |
| 82 | + new() { Token = "regexSelfEscapedCharacter", Foreground = "800000" }, |
| 83 | + new() { Token = "regexOtherEscape", Foreground = "9e5b71" }, |
| 84 | + new() { Token = "jsonComment", Foreground = "008000" }, |
| 85 | + new() { Token = "jsonNumber", Foreground = "098658" }, |
| 86 | + new() { Token = "jsonString", Foreground = "a31515" }, |
| 87 | + new() { Token = "jsonKeyword", Foreground = "0000ff" }, |
| 88 | + new() { Token = "jsonText", Foreground = "000000" }, |
| 89 | + new() { Token = "jsonOperator", Foreground = "000000" }, |
| 90 | + new() { Token = "jsonPunctuation", Foreground = "000000" }, |
| 91 | + new() { Token = "jsonArray", Foreground = "000000" }, |
| 92 | + new() { Token = "jsonObject", Foreground = "000000" }, |
| 93 | + new() { Token = "jsonPropertyName", Foreground = "0451a5" }, |
| 94 | + new() { Token = "jsonConstructorName", Foreground = "795e26" }, |
| 95 | + ], |
| 96 | + }); |
| 97 | + |
| 98 | + // https://github.com/dotnet/vscode-csharp/blob/adf1a040d73c6cbe72d18c516b2c5ceb59b538e3/themes/vs2019_dark.json |
| 99 | + await BlazorMonaco.Editor.Global.DefineTheme(jsRuntime, Dark, new() |
| 100 | + { |
| 101 | + Base = BuiltInMonacoTheme.Dark, |
| 102 | + Inherit = true, |
| 103 | + Colors = [], |
| 104 | + Rules = |
| 105 | + [ |
| 106 | + new() { Token = "comment", Foreground = "6a9955" }, |
| 107 | + new() { Token = "keyword", Foreground = "569cd6" }, |
| 108 | + new() { Token = "keywordControl", Foreground = "c586c0" }, |
| 109 | + new() { Token = "number", Foreground = "b5cea8" }, |
| 110 | + new() { Token = "operator", Foreground = "d4d4d4" }, |
| 111 | + new() { Token = "string", Foreground = "ce9178" }, |
| 112 | + new() { Token = "class", Foreground = "4ec9b0" }, |
| 113 | + new() { Token = "interface", Foreground = "b8d7a3" }, |
| 114 | + new() { Token = "struct", Foreground = "86c691" }, |
| 115 | + new() { Token = "enum", Foreground = "b8d7a3" }, |
| 116 | + new() { Token = "enumMember", Foreground = "d4d4d4" }, |
| 117 | + new() { Token = "delegateName", Foreground = "4ec9b0" }, |
| 118 | + new() { Token = "method", Foreground = "dcdcaa" }, |
| 119 | + new() { Token = "extensionMethodName", Foreground = "dcdcaa" }, |
| 120 | + new() { Token = "preprocessorText", Foreground = "d4d4d4" }, |
| 121 | + new() { Token = "xmlDocCommentComment", Foreground = "608b4e" }, |
| 122 | + new() { Token = "xmlDocCommentName", Foreground = "569cd6" }, |
| 123 | + new() { Token = "xmlDocCommentDelimiter", Foreground = "808080" }, |
| 124 | + new() { Token = "xmlDocCommentAttributeName", Foreground = "c8c8c8" }, |
| 125 | + new() { Token = "xmlDocCommentAttributeValue", Foreground = "c8c8c8" }, |
| 126 | + new() { Token = "xmlDocCommentCDataSection", Foreground = "e9d585" }, |
| 127 | + new() { Token = "xmlDocCommentText", Foreground = "608b4e" }, |
| 128 | + new() { Token = "punctuation", Foreground = "d4d4d4" }, |
| 129 | + new() { Token = "variable", Foreground = "9cdcfe" }, |
| 130 | + new() { Token = "property", Foreground = "d4d4d4" }, |
| 131 | + new() { Token = "parameter", Foreground = "9cdcfe" }, |
| 132 | + new() { Token = "fieldName", Foreground = "d4d4d4" }, |
| 133 | + new() { Token = "event", Foreground = "d4d4d4" }, |
| 134 | + new() { Token = "namespace", Foreground = "d4d4d4" }, |
| 135 | + new() { Token = "typeParameter", Foreground = "b8d7a3" }, |
| 136 | + new() { Token = "constantName", Foreground = "d4d4d4" }, |
| 137 | + new() { Token = "stringVerbatim", Foreground = "ce9178" }, |
| 138 | + new() { Token = "stringEscapeCharacter", Foreground = "d7ba7d" }, |
| 139 | + new() { Token = "excludedCode", Foreground = "808080" }, |
| 140 | + new() { Token = "macro", Foreground = "808080" }, |
| 141 | + new() { Token = "label", Foreground = "c8c8c8" }, |
| 142 | + new() { Token = "operatorOverloaded", Foreground = "d4d4d4" }, |
| 143 | + new() { Token = "regexComment", Foreground = "57a64a" }, |
| 144 | + new() { Token = "regexCharacterClass", Foreground = "2eabfe" }, |
| 145 | + new() { Token = "regexAnchor", Foreground = "f979ae" }, |
| 146 | + new() { Token = "regexQuantifier", Foreground = "f979ae" }, |
| 147 | + new() { Token = "regexGrouping", Foreground = "05c3ba" }, |
| 148 | + new() { Token = "regexAlternation", Foreground = "05c3ba" }, |
| 149 | + new() { Token = "regexSelfEscapedCharacter", Foreground = "d69d85" }, |
| 150 | + new() { Token = "regexOtherEscape", Foreground = "ffd68f" }, |
| 151 | + new() { Token = "regexText", Foreground = "d69d85" }, |
| 152 | + ], |
| 153 | + }); |
| 154 | + } |
| 155 | +} |
| 156 | + |
| 157 | +internal static class BuiltInMonacoTheme |
| 158 | +{ |
| 159 | + public const string Light = "vs"; |
| 160 | + public const string Dark = "vs-dark"; |
| 161 | +} |
0 commit comments