| import { getSharedHighlighter } from "@pierre/diffs" | |
| import { bundledLanguages, type BundledLanguage } from "shiki" | |
| import { createSimpleContext } from "./helper" | |
| import { createMarkdownParser } from "./marked-parser" | |
| import { registerOpenCodeTheme } from "./marked-theme-register" | |
| export { OpenCodeTheme } from "./marked-theme" | |
| registerOpenCodeTheme() | |
| export const { use: useMarked, provider: MarkedProvider } = createSimpleContext({ | |
| name: "Marked", | |
| init: () => | |
| createMarkdownParser(async (code, language) => { | |
| const highlighter = await getSharedHighlighter({ | |
| themes: ["OpenCode"], | |
| langs: [], | |
| preferredHighlighter: "shiki-wasm", | |
| }) | |
| const name = language in bundledLanguages ? language : "text" | |
| if (!highlighter.getLoadedLanguages().includes(name)) await highlighter.loadLanguage(name as BundledLanguage) | |
| return highlighter.codeToHtml(code, { | |
| lang: name, | |
| theme: "OpenCode", | |
| tabindex: false, | |
| }) | |
| }), | |
| }) | |