rayine-ui/docs/composables/useShikiHighlighter.ts

35 lines
1.1 KiB
TypeScript

import { createShikiHighlighter } from "@nuxtjs/mdc/runtime/highlighter/shiki";
import MaterialTheme from "shiki/themes/material-theme.mjs";
import MaterialThemeLighter from "shiki/themes/material-theme-lighter.mjs";
import LightPlus from "shiki/themes/light-plus.mjs";
import DarkPlus from "shiki/themes/dark-plus.mjs";
import HtmlLang from "shiki/langs/html.mjs";
import MdcLang from "shiki/langs/mdc.mjs";
import VueLang from "shiki/langs/vue.mjs";
import YamlLang from "shiki/langs/yaml.mjs";
import PostcssLang from "shiki/langs/postcss.mjs";
import type { Highlighter } from "@nuxtjs/mdc";
let highlighter: Highlighter;
export const useShikiHighlighter = () => {
if (!highlighter) {
highlighter = createShikiHighlighter({
bundledThemes: {
"material-theme-lighter": MaterialThemeLighter,
"material-theme": MaterialTheme,
"light-plus": LightPlus,
"dark-plus": DarkPlus,
},
bundledLangs: {
html: HtmlLang,
mdc: MdcLang,
vue: VueLang,
yml: YamlLang,
postcss: PostcssLang,
},
});
}
return highlighter;
};