iles
Version:
Vite & Vue powered static site generator with partial hydration
25 lines (24 loc) • 1.14 kB
JavaScript
import { inject, provide } from 'vue';
import { useAppConfig } from './appConfig';
export const mdxComponentsKey = Symbol('[iles-mdx-components]');
// Public: Allows to globally obtain replacements for built-ins, such as img.
export function useMDXComponents() {
return inject(mdxComponentsKey);
}
// Public: Allows to globally provide replacements for built-ins, such as img.
export function provideMDXComponents(mdxComponents) {
const overrideElements = useAppConfig()?.overrideElements;
if (overrideElements) {
for (const key in mdxComponents) {
if (key === key.toLowerCase() && !overrideElements.includes(key))
console.warn(`Provided an MDX shortcode for '${key}', but it's being optimized. You must specify '${key}' in mdxComponents in app.ts`);
}
}
provide(mdxComponentsKey, mdxComponents);
}
export async function installMDXComponents(context, { mdxComponents }) {
const components = mdxComponents
? typeof mdxComponents === 'function' ? await mdxComponents(context) : mdxComponents
: {};
context.app.provide(mdxComponentsKey, components);
}