Skip to content

Fix(#7442): dynamic loading of codemirror language modes#7443

Merged
martinjagodic merged 5 commits intodecaporg:mainfrom
fgnass:fix/codemirror-esm
Apr 20, 2026
Merged

Fix(#7442): dynamic loading of codemirror language modes#7443
martinjagodic merged 5 commits intodecaporg:mainfrom
fgnass:fix/codemirror-esm

Conversation

@fgnass
Copy link
Copy Markdown
Contributor

@fgnass fgnass commented Mar 28, 2025

Currently, the code widget does not work properly in ESM builds as it calls require() with a dynamic argument, hence the dynamic loading of language modes is broken (see #7442).

This PR fixes this by using a map of loader functions that use dynamic imports with static paths. The map is generated by the same script that creates the languages.json file.

NOTE:
Ideally, we would use https://github.com/codemirror/language-data instead, which internally uses the same approach, but this requires codemirror 6.x which in turn is not supported by react-codemirror2, the wrapper library that is currently used. In the long term switching to https://www.npmjs.com/package/@uiw/react-codemirror would probably make sense, but this would require a huge refactoring.

@fgnass fgnass requested a review from a team as a code owner March 28, 2025 15:05
Copy link
Copy Markdown
Contributor

@yanthomasdev yanthomasdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks. I agree the suggested approach is better, but given current limitations this will do.

@martinjagodic martinjagodic merged commit 708f6fa into decaporg:main Apr 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants