UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

40 lines (37 loc) 1.19 kB
import { light, dark } from './shiki-themes.mjs'; function stripElement(openTag, data) { const openIndex = data.indexOf(`<${openTag}`); let closeIndex = openIndex + openTag.length; for (let i = openIndex; i < data.length; i++) { if (data[i] === ">") { closeIndex = i; break; } } const striped = data.slice(0, openIndex) + data.slice(closeIndex + 1); return striped.replace(`</${openTag}>`, ""); } function stripShikiCodeBlocks(data) { return stripElement("code", stripElement("pre", data)); } const createShikiAdapter = (loadShiki, { forceColorScheme } = {}) => { return { loadContext: loadShiki, getHighlighter: (ctx) => { if (!ctx) { return ({ code }) => ({ highlightedCode: code, isHighlighted: false }); } return ({ code, language, colorScheme }) => ({ isHighlighted: true, highlightedCode: stripShikiCodeBlocks( ctx.codeToHtml(code, { lang: language, theme: forceColorScheme || (colorScheme === "light" ? light : dark) }) ) }); } }; }; export { createShikiAdapter, stripShikiCodeBlocks }; //# sourceMappingURL=shiki-adapter.mjs.map