@mantine/code-highlight
Version:
Code highlight with Mantine theme
1 lines • 2.56 kB
Source Map (JSON)
{"version":3,"file":"shiki-adapter.cjs","names":["light","dark"],"sources":["../../../src/CodeHighlightProvider/adapters/shiki-adapter.ts"],"sourcesContent":["import type { CodeHighlightAdapter } from '../CodeHighlightProvider';\nimport { dark, light } from './shiki-themes';\n\nfunction stripElement(openTag: string, data: string) {\n const openIndex = data.indexOf(`<${openTag}`);\n let closeIndex = openIndex + openTag.length;\n\n for (let i = openIndex; i < data.length; i++) {\n if (data[i] === '>') {\n closeIndex = i;\n break;\n }\n }\n\n const striped = data.slice(0, openIndex) + data.slice(closeIndex + 1);\n return striped.replace(`</${openTag}>`, '');\n}\n\nexport function stripShikiCodeBlocks(data: string) {\n return stripElement('code', stripElement('pre', data));\n}\n\ninterface CreateShikiAdapterOptions {\n forceColorScheme?: 'dark' | 'light' | (string & {});\n}\n\nexport const createShikiAdapter = (\n loadShiki: () => Promise<any>,\n { forceColorScheme }: CreateShikiAdapterOptions = {}\n): CodeHighlightAdapter => {\n return {\n loadContext: loadShiki,\n getHighlighter: (ctx) => {\n if (!ctx) {\n return ({ code }) => ({ highlightedCode: code, isHighlighted: false });\n }\n\n return ({ code, language, colorScheme }) => {\n let _colorScheme: any = colorScheme;\n\n if (colorScheme === 'light') {\n _colorScheme = light;\n } else if (colorScheme === 'dark') {\n _colorScheme = dark;\n }\n\n return {\n isHighlighted: true,\n highlightedCode: stripShikiCodeBlocks(\n ctx.codeToHtml(code, {\n lang: language,\n theme: forceColorScheme || _colorScheme,\n })\n ),\n };\n };\n },\n };\n};\n"],"mappings":";;AAGA,SAAS,aAAa,SAAiB,MAAc;CACnD,MAAM,YAAY,KAAK,QAAQ,IAAI,SAAS;CAC5C,IAAI,aAAa,YAAY,QAAQ;CAErC,KAAK,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KACvC,IAAI,KAAK,OAAO,KAAK;EACnB,aAAa;EACb;CACF;CAIF,QADgB,KAAK,MAAM,GAAG,SAAS,IAAI,KAAK,MAAM,aAAa,CAAC,GACrD,QAAQ,KAAK,QAAQ,IAAI,EAAE;AAC5C;AAEA,SAAgB,qBAAqB,MAAc;CACjD,OAAO,aAAa,QAAQ,aAAa,OAAO,IAAI,CAAC;AACvD;AAMA,MAAa,sBACX,WACA,EAAE,qBAAgD,CAAC,MAC1B;CACzB,OAAO;EACL,aAAa;EACb,iBAAiB,QAAQ;GACvB,IAAI,CAAC,KACH,QAAQ,EAAE,YAAY;IAAE,iBAAiB;IAAM,eAAe;GAAM;GAGtE,QAAQ,EAAE,MAAM,UAAU,kBAAkB;IAC1C,IAAI,eAAoB;IAExB,IAAI,gBAAgB,SAClB,eAAeA,qBAAAA;SACV,IAAI,gBAAgB,QACzB,eAAeC,qBAAAA;IAGjB,OAAO;KACL,eAAe;KACf,iBAAiB,qBACf,IAAI,WAAW,MAAM;MACnB,MAAM;MACN,OAAO,oBAAoB;KAC7B,CAAC,CACH;IACF;GACF;EACF;CACF;AACF"}