UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

42 lines (41 loc) 1.42 kB
const require_shiki_themes = require("./shiki-themes.cjs"); //#region packages/@mantine/code-highlight/src/CodeHighlightProvider/adapters/shiki-adapter.ts 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; } return (data.slice(0, openIndex) + data.slice(closeIndex + 1)).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 }) => { let _colorScheme = colorScheme; if (colorScheme === "light") _colorScheme = require_shiki_themes.light; else if (colorScheme === "dark") _colorScheme = require_shiki_themes.dark; return { isHighlighted: true, highlightedCode: stripShikiCodeBlocks(ctx.codeToHtml(code, { lang: language, theme: forceColorScheme || _colorScheme })) }; }; } }; }; //#endregion exports.createShikiAdapter = createShikiAdapter; exports.stripShikiCodeBlocks = stripShikiCodeBlocks; //# sourceMappingURL=shiki-adapter.cjs.map