@mantine/code-highlight
Version:
Code highlight with Mantine theme
36 lines (32 loc) • 1.25 kB
JavaScript
'use client';
;
var jsxRuntime = require('react/jsx-runtime');
var react = require('react');
var core = require('@mantine/core');
var plainTextAdapter = require('./adapters/plain-text-adapter.cjs');
const [CodeHighlightProvider, useCodeHighlight] = core.createOptionalContext({
adapter: plainTextAdapter.plainTextAdapter,
highlight: plainTextAdapter.plainTextAdapter.getHighlighter(null)
});
function CodeHighlightAdapterProvider({
adapter,
children
}) {
const [ctx, setCtx] = react.useState(null);
const highlight = react.useMemo(() => adapter.getHighlighter(ctx), [adapter, ctx]);
react.useEffect(() => {
if (adapter.loadContext) {
adapter.loadContext().then(setCtx);
}
}, [adapter]);
return /* @__PURE__ */ jsxRuntime.jsx(CodeHighlightProvider, { value: { adapter, highlight }, children });
}
function useHighlight() {
const ctx = useCodeHighlight();
return ctx?.highlight || plainTextAdapter.plainTextAdapter.getHighlighter(null);
}
exports.CodeHighlightAdapterProvider = CodeHighlightAdapterProvider;
exports.CodeHighlightProvider = CodeHighlightProvider;
exports.useCodeHighlight = useCodeHighlight;
exports.useHighlight = useHighlight;
//# sourceMappingURL=CodeHighlightProvider.cjs.map