2024-12-31 12:59:04 +00:00
|
|
|
import { createHighlighter } from "shiki";
|
|
|
|
import { Monaco } from "@monaco-editor/react";
|
|
|
|
import { shikiToMonaco } from "@shikijs/monaco";
|
|
|
|
import { SUPPORTED_LANGUAGES } from "./languages";
|
|
|
|
|
2024-12-31 13:22:33 +00:00
|
|
|
export const SUPPORTED_THEMES = [
|
|
|
|
{
|
|
|
|
key: "vitesse-dark",
|
|
|
|
value: "vitesse-dark",
|
|
|
|
label: "Vitesse Dark",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "vitesse-light",
|
|
|
|
value: "vitesse-light",
|
|
|
|
label: "Vitesse Light",
|
|
|
|
},
|
|
|
|
];
|
2024-12-31 12:59:04 +00:00
|
|
|
|
2024-12-31 13:22:33 +00:00
|
|
|
export const DEFAULT_THEME = SUPPORTED_THEMES[0].value;
|
2024-12-31 12:59:04 +00:00
|
|
|
|
|
|
|
export const highlightMonacoEditor = async (monaco: Monaco) => {
|
|
|
|
const highlighter = await createHighlighter({
|
2024-12-31 13:22:33 +00:00
|
|
|
themes: SUPPORTED_THEMES.map((theme) => theme.key),
|
2024-12-31 12:59:04 +00:00
|
|
|
langs: SUPPORTED_LANGUAGES.map((lang) => lang.key),
|
|
|
|
});
|
|
|
|
|
|
|
|
for (const lang of SUPPORTED_LANGUAGES) {
|
|
|
|
monaco.languages.register({ id: lang.key });
|
|
|
|
}
|
|
|
|
|
|
|
|
shikiToMonaco(highlighter, monaco);
|
|
|
|
};
|