mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-21 17:54:23 +01:00
31 lines
869 B
TypeScript
31 lines
869 B
TypeScript
import { marked } from "marked"
|
|
import markedShiki from "marked-shiki"
|
|
import { bundledLanguages, type BundledLanguage } from "shiki"
|
|
|
|
import { createSimpleContext } from "./helper"
|
|
import { useShiki } from "./shiki"
|
|
|
|
export const { use: useMarked, provider: MarkedProvider } = createSimpleContext({
|
|
name: "Marked",
|
|
init: () => {
|
|
const highlighter = useShiki()
|
|
return marked.use(
|
|
markedShiki({
|
|
async highlight(code, lang) {
|
|
if (!(lang in bundledLanguages)) {
|
|
lang = "text"
|
|
}
|
|
if (!highlighter.getLoadedLanguages().includes(lang)) {
|
|
await highlighter.loadLanguage(lang as BundledLanguage)
|
|
}
|
|
return highlighter.codeToHtml(code, {
|
|
lang: lang || "text",
|
|
theme: "opencode",
|
|
tabindex: false,
|
|
})
|
|
},
|
|
}),
|
|
)
|
|
},
|
|
})
|