1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
unleash.unleash/website/src/theme/prism-include-languages.ts
Alvin Bryan a1d6795533
Docusaurus v3 (#8485)
- Upgrades to latest Docusaurus
- Upgrades our OpenAPI plugin to latest too
- Removes old, unneeded dependencies
- Our configs and sidebar files now use TypeScript

[Preview
link](https://unleash-docs-git-alvin-docusaurus-v3-unleash-team.vercel.app/)

---------

Co-authored-by: melindafekete <melinda.fekete@getunleash.io>
Co-authored-by: Christopher Kolstad <chriswk@getunleash.io>
2024-10-30 11:55:51 +00:00

34 lines
1.2 KiB
TypeScript

import siteConfig from '@generated/docusaurus.config';
import type * as PrismNamespace from 'prismjs';
import type { Optional } from 'utility-types';
export default function prismIncludeLanguages(
PrismObject: typeof PrismNamespace,
): void {
const {
themeConfig: { prism },
} = siteConfig;
const { additionalLanguages } = prism as { additionalLanguages: string[] };
// Prism components work on the Prism instance on the window, while prism-
// react-renderer uses its own Prism instance. We temporarily mount the
// instance onto window, import components to enhance it, then remove it to
// avoid polluting global namespace.
// You can mutate PrismObject: registering plugins, deleting languages... As
// long as you don't re-assign it
globalThis.Prism = PrismObject;
additionalLanguages.forEach((lang) => {
if (lang === 'php') {
// eslint-disable-next-line global-require
require('prismjs/components/prism-markup-templating.js');
}
// eslint-disable-next-line global-require, import/no-dynamic-require
require(`prismjs/components/prism-${lang}`);
});
require('prism-svelte');
delete (globalThis as Optional<typeof globalThis, 'Prism'>).Prism;
}