@mantine/code-highlight
Version:
Code highlight with Mantine theme
30 lines (29 loc) • 1.04 kB
JavaScript
"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