UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

1 lines 2.81 kB
{"version":3,"file":"shiki-adapter.cjs","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';\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 isHighlighted: true,\n highlightedCode: stripShikiCodeBlocks(\n ctx.codeToHtml(code, {\n lang: language,\n theme: forceColorScheme || ((colorScheme === 'light' ? light : dark) as any),\n })\n ),\n });\n },\n };\n};\n"],"names":["light","dark"],"mappings":";;;;AAGA,SAAS,YAAA,CAAa,SAAiB,IAAA,EAAc;AACnD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAC5C,EAAA,IAAI,UAAA,GAAa,YAAY,OAAA,CAAQ,MAAA;AAErC,EAAA,KAAA,IAAS,CAAA,GAAI,SAAA,EAAW,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAC5C,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AACnB,MAAA,UAAA,GAAa,CAAA;AACb,MAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA;AACpE,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAA,EAAA,EAAK,OAAO,KAAK,EAAE,CAAA;AAC5C;AAEO,SAAS,qBAAqB,IAAA,EAAc;AACjD,EAAA,OAAO,YAAA,CAAa,MAAA,EAAQ,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AACvD;AAMO,MAAM,qBAAqB,CAChC,SAAA,EACA,EAAE,gBAAA,EAAiB,GAA+B,EAAC,KAC1B;AACzB,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,SAAA;AAAA,IACb,cAAA,EAAgB,CAAC,GAAA,KAAQ;AACvB,MAAA,IAAI,CAAC,GAAA,EAAK;AACR,QAAA,OAAO,CAAC,EAAE,IAAA,EAAK,MAAO,EAAE,eAAA,EAAiB,IAAA,EAAM,eAAe,KAAA,EAAM,CAAA;AAAA,MACtE;AAEA,MAAA,OAAO,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,aAAY,MAAO;AAAA,QAC3C,aAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAiB,oBAAA;AAAA,UACf,GAAA,CAAI,WAAW,IAAA,EAAM;AAAA,YACnB,IAAA,EAAM,QAAA;AAAA,YACN,KAAA,EAAO,gBAAA,KAAsB,WAAA,KAAgB,OAAA,GAAUA,iBAAA,GAAQC,gBAAA;AAAA,WAChE;AAAA;AACH,OACF,CAAA;AAAA,IACF;AAAA,GACF;AACF;;;;;"}