30 lines
1.2 KiB
JavaScript
30 lines
1.2 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
import siteConfig from '@generated/docusaurus.config';
|
|
export default function prismIncludeLanguages(PrismObject) {
|
|
const {
|
|
themeConfig: {prism},
|
|
} = siteConfig;
|
|
const {additionalLanguages} = prism;
|
|
// 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}`);
|
|
});
|
|
//delete globalThis.Prism; // <-- If this line is not commented, `liquid` will fail.
|
|
}
|