UNPKG

@mantine/code-highlight

Version:

Code highlight with Mantine theme

30 lines (29 loc) 1.04 kB
"use client"; import { plainTextAdapter } from "./adapters/plain-text-adapter.mjs"; import { createContext, use, useEffect, useMemo, useState } from "react"; import { jsx } from "react/jsx-runtime"; //#region packages/@mantine/code-highlight/src/CodeHighlightProvider/CodeHighlightProvider.tsx const CodeHighlightContext = createContext({ 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(CodeHighlightContext, { value: { adapter, highlight }, children }); } function useHighlight() { return use(CodeHighlightContext)?.highlight || plainTextAdapter.getHighlighter(null); } //#endregion export { CodeHighlightAdapterProvider, useHighlight }; //# sourceMappingURL=CodeHighlightProvider.mjs.map