Skip to content

Commit d0d61d3

Browse files
Import everything as unnamed ESM modules and disable treeshaking for WWW code package
1 parent 39448a2 commit d0d61d3

File tree

5 files changed

+29
-26
lines changed

5 files changed

+29
-26
lines changed

packages/lexical-code/src/CodeHighlightNode.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import type {
1717
TabNode,
1818
} from 'lexical';
1919

20+
import './CodeHighlighterPrism';
21+
2022
import {
2123
addClassNamesToElement,
2224
removeClassNamesFromElement,
@@ -28,7 +30,6 @@ import {
2830
TextNode,
2931
} from 'lexical';
3032

31-
import {Prism} from './CodeHighlighterPrism';
3233
import {$createCodeNode} from './CodeNode';
3334

3435
export const DEFAULT_CODE_LANGUAGE = 'javascript';
@@ -82,11 +83,11 @@ export function getLanguageFriendlyName(lang: string) {
8283
export const getDefaultCodeLanguage = (): string => DEFAULT_CODE_LANGUAGE;
8384

8485
export const getCodeLanguages = (): Array<string> =>
85-
Object.keys(Prism.languages)
86+
Object.keys(window.Prism.languages)
8687
.filter(
8788
// Prism has several language helpers mixed into languages object
8889
// so filtering them out here to get langs list
89-
(language) => typeof Prism.languages[language] !== 'function',
90+
(language) => typeof window.Prism.languages[language] !== 'function',
9091
)
9192
.sort();
9293

packages/lexical-code/src/CodeHighlighter.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import type {
1616
RangeSelection,
1717
} from 'lexical';
1818

19+
import './CodeHighlighterPrism';
20+
1921
import {mergeRegister} from '@lexical/utils';
2022
import {
2123
$createLineBreakNode,
@@ -42,7 +44,6 @@ import {
4244
} from 'lexical';
4345
import invariant from 'shared/invariant';
4446

45-
import {Prism} from './CodeHighlighterPrism';
4647
import {
4748
$createCodeHighlightNode,
4849
$isCodeHighlightNode,
@@ -68,9 +69,10 @@ export interface Tokenizer {
6869
export const PrismTokenizer: Tokenizer = {
6970
defaultLanguage: DEFAULT_CODE_LANGUAGE,
7071
tokenize(code: string, language?: string): (string | Token)[] {
71-
return Prism.tokenize(
72+
return window.Prism.tokenize(
7273
code,
73-
Prism.languages[language || ''] || Prism.languages[this.defaultLanguage],
74+
window.Prism.languages[language || ''] ||
75+
window.Prism.languages[this.defaultLanguage],
7476
);
7577
},
7678
};

packages/lexical-code/src/CodeHighlighterPrism.ts

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,19 @@
77
*/
88

99
// eslint-disable-next-line simple-import-sort/imports
10-
require('prismjs');
10+
import 'prismjs';
1111

12-
require('prismjs/components/prism-clike');
13-
require('prismjs/components/prism-javascript');
14-
require('prismjs/components/prism-markup');
15-
require('prismjs/components/prism-markdown');
16-
require('prismjs/components/prism-c');
17-
require('prismjs/components/prism-css');
18-
require('prismjs/components/prism-objectivec');
19-
require('prismjs/components/prism-sql');
20-
require('prismjs/components/prism-python');
21-
require('prismjs/components/prism-rust');
22-
require('prismjs/components/prism-swift');
23-
require('prismjs/components/prism-typescript');
24-
require('prismjs/components/prism-java');
25-
require('prismjs/components/prism-cpp');
26-
27-
export const Prism = global.Prism;
12+
import 'prismjs/components/prism-clike';
13+
import 'prismjs/components/prism-javascript';
14+
import 'prismjs/components/prism-markup';
15+
import 'prismjs/components/prism-markdown';
16+
import 'prismjs/components/prism-c';
17+
import 'prismjs/components/prism-css';
18+
import 'prismjs/components/prism-objectivec';
19+
import 'prismjs/components/prism-sql';
20+
import 'prismjs/components/prism-python';
21+
import 'prismjs/components/prism-rust';
22+
import 'prismjs/components/prism-swift';
23+
import 'prismjs/components/prism-typescript';
24+
import 'prismjs/components/prism-java';
25+
import 'prismjs/components/prism-cpp';

packages/lexical-code/src/CodeNode.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import type {
2222
TabNode,
2323
} from 'lexical';
2424

25+
import './CodeHighlighterPrism';
26+
2527
import {addClassNamesToElement, isHTMLElement} from '@lexical/utils';
2628
import {
2729
$applyNodeReplacement,
@@ -33,7 +35,6 @@ import {
3335
ElementNode,
3436
} from 'lexical';
3537

36-
import {Prism} from './CodeHighlighterPrism';
3738
import {
3839
$createCodeHighlightNode,
3940
$isCodeHighlightNode,
@@ -51,7 +52,7 @@ const mapToPrismLanguage = (
5152
language: string | null | undefined,
5253
): string | null | undefined => {
5354
// eslint-disable-next-line no-prototype-builtins
54-
return language != null && Prism.languages.hasOwnProperty(language)
55+
return language != null && window.Prism.languages.hasOwnProperty(language)
5556
? language
5657
: undefined;
5758
};

scripts/build.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,8 @@ async function build(name, inputFile, outputPath, outputFile, isProd, format) {
287287
},
288288
},
289289
],
290-
treeshake: 'smallest',
290+
// This ensures PrismJS imports get included in the bundle
291+
treeshake: name !== 'Lexical Code' ? 'smallest' : false,
291292
};
292293
const outputOptions = {
293294
esModule: false,

0 commit comments

Comments
 (0)