UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

31 lines (28 loc) 1.07 kB
'use client'; import { jsx } from 'react/jsx-runtime'; import { useState, useMemo, useEffect } from 'react'; import { createOptionalContext } from '@mantine/core'; import { plainTextAdapter } from './adapters/plain-text-adapter.mjs'; const [CodeHighlightProvider, useCodeHighlight] = createOptionalContext({ adapter: plainTextAdapter, highlight: plainTextAdapter.getHighlighter(null) }); function CodeHighlightAdapterProvider({ adapter, children }) { const [ctx, setCtx] = useState(null); const highlight = useMemo(() => adapter.getHighlighter(ctx), [adapter, ctx]); useEffect(() => { if (adapter.loadContext) { adapter.loadContext().then(setCtx); } }, [adapter]); return /* @__PURE__ */ jsx(CodeHighlightProvider, { value: { adapter, highlight }, children }); } function useHighlight() { const ctx = useCodeHighlight(); return ctx?.highlight || plainTextAdapter.getHighlighter(null); } export { CodeHighlightAdapterProvider, CodeHighlightProvider, useCodeHighlight, useHighlight }; //# sourceMappingURL=CodeHighlightProvider.mjs.map