UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

43 lines (39 loc) 1.28 kB
'use strict'; var shikiThemes = require('./shiki-themes.cjs'); 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" ? shikiThemes.light : shikiThemes.dark) }) ) }); } }; }; exports.createShikiAdapter = createShikiAdapter; exports.stripShikiCodeBlocks = stripShikiCodeBlocks; //# sourceMappingURL=shiki-adapter.cjs.map