UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

1 lines 4.66 kB
{"version":3,"file":"CodeHighlightProvider.mjs","sources":["../../src/CodeHighlightProvider/CodeHighlightProvider.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { createOptionalContext } from '@mantine/core';\nimport { plainTextAdapter } from './adapters/plain-text-adapter';\n\ninterface HighlighterInput {\n colorScheme: 'light' | 'dark';\n code: string;\n language?: string;\n}\n\ntype Highlighter = (input: HighlighterInput) => {\n /** Highlighted code (html markup) */\n highlightedCode: string;\n\n /** `true` if the code is represented with html string, `false` for plain text string */\n isHighlighted: boolean;\n\n /** Props to pass down to `<code>` tag */\n codeElementProps?: Record<string, any>;\n};\n\nexport interface CodeHighlightAdapter {\n loadContext?: () => Promise<any>;\n getHighlighter: (ctx: any) => Highlighter;\n}\n\ninterface CodeHighlightProviderContext {\n adapter: CodeHighlightAdapter;\n highlight: Highlighter;\n}\n\nexport const [CodeHighlightProvider, useCodeHighlight] =\n createOptionalContext<CodeHighlightProviderContext>({\n adapter: plainTextAdapter,\n highlight: plainTextAdapter.getHighlighter(null),\n });\n\nexport interface CodeHighlightAdapterProviderProps {\n adapter: CodeHighlightAdapter;\n children: React.ReactNode;\n}\n\nexport function CodeHighlightAdapterProvider({\n adapter,\n children,\n}: CodeHighlightAdapterProviderProps) {\n const [ctx, setCtx] = useState<any>(null);\n const highlight = useMemo(() => adapter.getHighlighter(ctx), [adapter, ctx]);\n\n useEffect(() => {\n if (adapter.loadContext) {\n adapter.loadContext().then(setCtx);\n }\n }, [adapter]);\n\n return <CodeHighlightProvider value={{ adapter, highlight }}>{children}</CodeHighlightProvider>;\n}\n\nexport function useHighlight() {\n const ctx = useCodeHighlight();\n return ctx?.highlight || plainTextAdapter.getHighlighter(null);\n}\n"],"names":[],"mappings":";;;;;;AA+BO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,gBAAgB,CAAA,CAAA,CAAA,CACnD,qBAAoD,CAAA,CAAA;AAAA,CAClD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACT,SAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAI,CAAA,CAAA,CAAA,CAAA;AACjD,CAAC,CAAA,CAAA;AAOI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,4BAA6B,CAAA,CAAA;AAAA,CAAA,CAC3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAsC,CAAA,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA;AACxC,CAAA,CAAM,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA;AAE3E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACd,CAAA,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA;AACvB,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,MAAM,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACnC,CAAA,CAAA,CACF,CAAG,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA;AAEZ,CAAA,CAAA,2BAAQ,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,EAAA,CAAA,CAAA;AACzE,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,YAAe,CAAA,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,gBAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA;AAC/D,CAAA;;"}