@docusaurus/theme-classic 0.0.0-4430 → 0.0.0-4435

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -178,7 +178,10 @@ options) {
178
178
  configureWebpack() {
179
179
  const prismLanguages = additionalLanguages.map(lang => `prism-${lang}`).join('|');
180
180
  return {
181
- plugins: [new ContextReplacementPlugin(/prismjs[\\/]components$/, new RegExp(`^./(${prismLanguages})$`))]
181
+ plugins: [// This allows better optimization by only bundling those components
182
+ // that the user actually needs, because the modules are dynamically
183
+ // required and can't be known during compile time.
184
+ new ContextReplacementPlugin(/prismjs[\\/]components$/, new RegExp(`^./(${prismLanguages})$`))]
182
185
  };
183
186
  },
184
187
 
@@ -10,12 +10,19 @@ import siteConfig from '@generated/docusaurus.config';
10
10
  const prismIncludeLanguages = (PrismObject) => {
11
11
  if (ExecutionEnvironment.canUseDOM) {
12
12
  const {
13
- themeConfig: {prism = {}},
13
+ themeConfig: {prism},
14
14
  } = siteConfig;
15
- const {additionalLanguages = []} = prism;
15
+ const {additionalLanguages} = prism; // Prism components work on the Prism instance on the window, while
16
+ // prism-react-renderer uses its own Prism instance. We temporarily mount
17
+ // the instance onto window, import components to enhance it, then remove it
18
+ // to avoid polluting global namespace.
19
+ // You can mutate this object: registering plugins, deleting languages... As
20
+ // long as you don't re-assign it
21
+
16
22
  window.Prism = PrismObject;
17
23
  additionalLanguages.forEach((lang) => {
18
- require(`prismjs/components/prism-${lang}`); // eslint-disable-line
24
+ // eslint-disable-next-line global-require, import/no-dynamic-require
25
+ require(`prismjs/components/prism-${lang}`);
19
26
  });
20
27
  delete window.Prism;
21
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/theme-classic",
3
- "version": "0.0.0-4430",
3
+ "version": "0.0.0-4435",
4
4
  "description": "Classic theme for Docusaurus",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/theme-classic.d.ts",
@@ -23,14 +23,14 @@
23
23
  "update-code-translations": "node -e 'require(\"./update-code-translations.js\").run()'"
24
24
  },
25
25
  "dependencies": {
26
- "@docusaurus/core": "0.0.0-4430",
27
- "@docusaurus/plugin-content-blog": "0.0.0-4430",
28
- "@docusaurus/plugin-content-docs": "0.0.0-4430",
29
- "@docusaurus/plugin-content-pages": "0.0.0-4430",
30
- "@docusaurus/theme-common": "0.0.0-4430",
31
- "@docusaurus/theme-translations": "0.0.0-4430",
32
- "@docusaurus/utils": "0.0.0-4430",
33
- "@docusaurus/utils-validation": "0.0.0-4430",
26
+ "@docusaurus/core": "0.0.0-4435",
27
+ "@docusaurus/plugin-content-blog": "0.0.0-4435",
28
+ "@docusaurus/plugin-content-docs": "0.0.0-4435",
29
+ "@docusaurus/plugin-content-pages": "0.0.0-4435",
30
+ "@docusaurus/theme-common": "0.0.0-4435",
31
+ "@docusaurus/theme-translations": "0.0.0-4435",
32
+ "@docusaurus/utils": "0.0.0-4435",
33
+ "@docusaurus/utils-validation": "0.0.0-4435",
34
34
  "@mdx-js/mdx": "^1.6.21",
35
35
  "@mdx-js/react": "^1.6.21",
36
36
  "clsx": "^1.1.1",
@@ -45,8 +45,8 @@
45
45
  "rtlcss": "^3.3.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@docusaurus/module-type-aliases": "0.0.0-4430",
49
- "@docusaurus/types": "0.0.0-4430",
48
+ "@docusaurus/module-type-aliases": "0.0.0-4435",
49
+ "@docusaurus/types": "0.0.0-4435",
50
50
  "@types/mdx-js__react": "^1.5.4",
51
51
  "@types/parse-numeric-range": "^0.0.1",
52
52
  "@types/rtlcss": "^3.1.1",
@@ -61,5 +61,5 @@
61
61
  "engines": {
62
62
  "node": ">=14"
63
63
  },
64
- "gitHead": "548160af2a7413bdb58a37c37b73ff65be106db9"
64
+ "gitHead": "41656dfd8207e4a9d80de20fa5d9591f197a12b6"
65
65
  }
package/src/index.ts CHANGED
@@ -18,13 +18,13 @@ import type {Plugin as PostCssPlugin} from 'postcss';
18
18
  import rtlcss from 'rtlcss';
19
19
  import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations';
20
20
  import type {Options} from '@docusaurus/theme-classic';
21
+ import type webpack from 'webpack';
21
22
 
22
23
  const requireFromDocusaurusCore = createRequire(
23
24
  require.resolve('@docusaurus/core/package.json'),
24
25
  );
25
- const ContextReplacementPlugin = requireFromDocusaurusCore(
26
- 'webpack/lib/ContextReplacementPlugin',
27
- );
26
+ const ContextReplacementPlugin: typeof webpack.ContextReplacementPlugin =
27
+ requireFromDocusaurusCore('webpack/lib/ContextReplacementPlugin');
28
28
 
29
29
  // Need to be inlined to prevent dark mode FOUC
30
30
  // Make sure that the 'storageKey' is the same as the one in `/theme/hooks/useTheme.js`
@@ -172,6 +172,9 @@ export default function docusaurusThemeClassic(
172
172
 
173
173
  return {
174
174
  plugins: [
175
+ // This allows better optimization by only bundling those components
176
+ // that the user actually needs, because the modules are dynamically
177
+ // required and can't be known during compile time.
175
178
  new ContextReplacementPlugin(
176
179
  /prismjs[\\/]components$/,
177
180
  new RegExp(`^./(${prismLanguages})$`),
@@ -12,14 +12,21 @@ import type * as PrismNamespace from 'prismjs';
12
12
  const prismIncludeLanguages = (PrismObject: typeof PrismNamespace): void => {
13
13
  if (ExecutionEnvironment.canUseDOM) {
14
14
  const {
15
- themeConfig: {prism = {}},
15
+ themeConfig: {prism},
16
16
  } = siteConfig;
17
- const {additionalLanguages = []} = prism as {additionalLanguages: string[]};
17
+ const {additionalLanguages} = prism as {additionalLanguages: string[]};
18
18
 
19
+ // Prism components work on the Prism instance on the window, while
20
+ // prism-react-renderer uses its own Prism instance. We temporarily mount
21
+ // the instance onto window, import components to enhance it, then remove it
22
+ // to avoid polluting global namespace.
23
+ // You can mutate this object: registering plugins, deleting languages... As
24
+ // long as you don't re-assign it
19
25
  window.Prism = PrismObject;
20
26
 
21
27
  additionalLanguages.forEach((lang) => {
22
- require(`prismjs/components/prism-${lang}`); // eslint-disable-line
28
+ // eslint-disable-next-line global-require, import/no-dynamic-require
29
+ require(`prismjs/components/prism-${lang}`);
23
30
  });
24
31
 
25
32
  delete (window as Window & {Prism?: typeof PrismNamespace}).Prism;