diff --git a/src/renderer/components/MarkdownComposer.tsx b/src/renderer/components/MarkdownComposer.tsx index f6add2b..5ac82a9 100644 --- a/src/renderer/components/MarkdownComposer.tsx +++ b/src/renderer/components/MarkdownComposer.tsx @@ -21,29 +21,6 @@ import { $convertToMarkdownString, } from '@lexical/markdown'; import { $isCodeNode, $createCodeNode, CodeNode } from '@lexical/code'; - -// Prism must be on `globalThis` before @lexical/code-prism initializes its -// tokenizer reference. Vite's dev-mode esbuild CJS shim can race the global -// assignment, so we force it here before importing the module. -import Prism from 'prismjs'; -import 'prismjs/components/prism-clike'; -import 'prismjs/components/prism-javascript'; -import 'prismjs/components/prism-markup'; -import 'prismjs/components/prism-markdown'; -import 'prismjs/components/prism-c'; -import 'prismjs/components/prism-css'; -import 'prismjs/components/prism-objectivec'; -import 'prismjs/components/prism-sql'; -import 'prismjs/components/prism-python'; -import 'prismjs/components/prism-rust'; -import 'prismjs/components/prism-swift'; -import 'prismjs/components/prism-typescript'; -import 'prismjs/components/prism-java'; -import 'prismjs/components/prism-cpp'; -if (typeof globalThis !== 'undefined') { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (globalThis as any).Prism = Prism; -} import { registerCodeHighlighting } from '@lexical/code-prism'; import { $isListNode, diff --git a/src/renderer/lib/prismSetup.ts b/src/renderer/lib/prismSetup.ts new file mode 100644 index 0000000..4823780 --- /dev/null +++ b/src/renderer/lib/prismSetup.ts @@ -0,0 +1,15 @@ +/** + * Ensures the PrismJS global is available before @lexical/code-prism + * captures its tokenizer reference. + * + * @lexical/code-prism reads `globalThis.Prism` at module-evaluation time. + * In Vite dev mode the esbuild CJS shim may not have set the global yet, + * so we force it here. This module must be imported before any module + * that transitively loads @lexical/code-prism. + */ +import Prism from 'prismjs'; + +if (typeof globalThis !== 'undefined' && !globalThis.Prism) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (globalThis as any).Prism = Prism; +} diff --git a/src/renderer/main.tsx b/src/renderer/main.tsx index cc67373..4591098 100644 --- a/src/renderer/main.tsx +++ b/src/renderer/main.tsx @@ -1,6 +1,7 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; +import '@renderer/lib/prismSetup'; import App from '@renderer/App'; import '@renderer/styles.css';