UNPKG

@grafana/ui

Version:
1 lines 4.23 kB
{"version":3,"file":"theme.mjs","sources":["../../../../src/components/Monaco/theme.ts"],"sourcesContent":["import tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { Monaco, monacoTypes } from './types';\n\nfunction getColors(theme?: GrafanaTheme2): monacoTypes.editor.IColors {\n if (theme === undefined) {\n return {};\n } else {\n const colors: Record<string, string> = {\n 'editor.background': theme.components.input.background,\n 'minimap.background': theme.colors.background.secondary,\n };\n\n Object.keys(colors).forEach((resultKey) => {\n colors[resultKey] = normalizeColorForMonaco(colors[resultKey]);\n });\n return colors;\n }\n}\n\nfunction normalizeColorForMonaco(color?: string): string {\n // monaco needs 6char hex colors\n // see https://github.com/grafana/grafana/issues/43158\n return tinycolor(color).toHexString();\n}\n\n// we support calling this without a theme, it will make sure the themes\n// are registered in monaco, even if the colors are not perfect.\nexport default function defineThemes(monaco: Monaco, theme?: GrafanaTheme2) {\n // color tokens are defined here https://github.com/microsoft/vscode/blob/main/src/vs/platform/theme/common/colorRegistry.ts#L174\n const colors = getColors(theme);\n monaco.editor.defineTheme('grafana-dark', {\n base: 'vs-dark',\n inherit: true,\n colors: colors,\n // fallback syntax highlighting for languages that microsoft doesn't handle (ex cloudwatch's metric math)\n rules: [\n { token: 'predefined', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('purple')) },\n { token: 'operator', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('orange')) },\n { token: 'tag', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('green')) },\n ],\n });\n\n monaco.editor.defineTheme('grafana-light', {\n base: 'vs',\n inherit: true,\n colors: colors,\n // fallback syntax highlighting for languages that microsoft doesn't handle (ex cloudwatch's metric math)\n rules: [\n { token: 'predefined', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('purple')) },\n { token: 'operator', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('orange')) },\n { token: 'tag', foreground: normalizeColorForMonaco(theme?.visualization.getColorByName('green')) },\n ],\n });\n}\n"],"names":[],"mappings":";;AAMA,SAAS,UAAU,KAAmD,EAAA;AACpE,EAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,IAAA,OAAO,EAAC;AAAA,GACH,MAAA;AACL,IAAA,MAAM,MAAiC,GAAA;AAAA,MACrC,mBAAA,EAAqB,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,UAAA;AAAA,MAC5C,oBAAA,EAAsB,KAAM,CAAA,MAAA,CAAO,UAAW,CAAA;AAAA,KAChD;AAEA,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAc,KAAA;AACzC,MAAA,MAAA,CAAO,SAAS,CAAA,GAAI,uBAAwB,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,KAC9D,CAAA;AACD,IAAO,OAAA,MAAA;AAAA;AAEX;AAEA,SAAS,wBAAwB,KAAwB,EAAA;AAGvD,EAAO,OAAA,SAAA,CAAU,KAAK,CAAA,CAAE,WAAY,EAAA;AACtC;AAIwB,SAAA,YAAA,CAAa,QAAgB,KAAuB,EAAA;AAE1E,EAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA;AAC9B,EAAO,MAAA,CAAA,MAAA,CAAO,YAAY,cAAgB,EAAA;AAAA,IACxC,IAAM,EAAA,SAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,MAAA;AAAA;AAAA,IAEA,KAAO,EAAA;AAAA,MACL,EAAE,OAAO,YAAc,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,QAAA,CAAS,CAAE,EAAA;AAAA,MAC1G,EAAE,OAAO,UAAY,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,QAAA,CAAS,CAAE,EAAA;AAAA,MACxG,EAAE,OAAO,KAAO,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,OAAA,CAAQ,CAAE;AAAA;AACpG,GACD,CAAA;AAED,EAAO,MAAA,CAAA,MAAA,CAAO,YAAY,eAAiB,EAAA;AAAA,IACzC,IAAM,EAAA,IAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,MAAA;AAAA;AAAA,IAEA,KAAO,EAAA;AAAA,MACL,EAAE,OAAO,YAAc,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,QAAA,CAAS,CAAE,EAAA;AAAA,MAC1G,EAAE,OAAO,UAAY,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,QAAA,CAAS,CAAE,EAAA;AAAA,MACxG,EAAE,OAAO,KAAO,EAAA,UAAA,EAAY,wBAAwB,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAc,cAAe,CAAA,OAAA,CAAQ,CAAE;AAAA;AACpG,GACD,CAAA;AACH;;;;"}