summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/markdown/remark/src')
-rw-r--r--packages/markdown/remark/src/remark-shiki.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/markdown/remark/src/remark-shiki.ts b/packages/markdown/remark/src/remark-shiki.ts
index ad7c982f9..8035635f9 100644
--- a/packages/markdown/remark/src/remark-shiki.ts
+++ b/packages/markdown/remark/src/remark-shiki.ts
@@ -10,10 +10,30 @@ import type { ShikiConfig } from './types.js';
*/
const highlighterCacheAsync = new Map<string, Promise<shiki.Highlighter>>();
+// Map of old theme names to new names to preserve compatibility when we upgrade shiki
+const compatThemes: Record<string, string> = {
+ 'material-darker': 'material-theme-darker',
+ 'material-default': 'material-theme',
+ 'material-lighter': 'material-theme-lighter',
+ 'material-ocean': 'material-theme-ocean',
+ 'material-palenight': 'material-theme-palenight',
+};
+
+const normalizeTheme = (theme: string | shiki.IShikiTheme) => {
+ if (typeof theme === 'string') {
+ return compatThemes[theme] || theme;
+ } else if (compatThemes[theme.name]) {
+ return { ...theme, name: compatThemes[theme.name] };
+ } else {
+ return theme;
+ }
+};
+
const remarkShiki = async (
{ langs = [], theme = 'github-dark', wrap = false }: ShikiConfig,
scopedClassName?: string | null
) => {
+ theme = normalizeTheme(theme);
const cacheID: string = typeof theme === 'string' ? theme : theme.name;
let highlighterAsync = highlighterCacheAsync.get(cacheID);
if (!highlighterAsync) {