File size: 1,000 Bytes
eb1202c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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,
})
}),
})
|