opencode/packages/ui/src/context/marked.tsx
opencode-agent[bot] 0dcedc199c
chore: merge dev into v2 (#41460)
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
2026-08-10 03:36:24 +00:00

28 lines
1,000 B
TypeScript

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,
})
}),
})