Skip to content

Register CodeNode and LineBreakNode by default; decode CodeNode language leniently - #83

Open
jwatzman wants to merge 1 commit into
facebook:mainfrom
anserinelabs:code-node-support
Open

Register CodeNode and LineBreakNode by default; decode CodeNode language leniently#83
jwatzman wants to merge 1 commit into
facebook:mainfrom
anserinelabs:code-node-support

Conversation

@jwatzman

Copy link
Copy Markdown

Two fixes that allow editor states containing code blocks to round-trip through EditorState.fromJSON:

  • CodeNode and LineBreakNode are built-in node types with public NodeTypes and full rendering support, but neither was present in Editor's default registeredNodes map. As a result, deserializing any editor state that contains a code block (or a bare line break) could not reconstruct those nodes. Register them alongside the other built-ins (root, text, element, heading, paragraph, quote).
  • CodeNode's Decodable init required a "language" key. Editor states produced by other Lexical implementations (e.g. lexical-web) omit "language" when no language is set, so decoding threw keyNotFound. Use decodeIfPresent with an empty-string default so a missing language is tolerated.

…age leniently

Two fixes that allow editor states containing code blocks to round-trip through EditorState.fromJSON:

  - CodeNode and LineBreakNode are built-in node types with public NodeTypes and full rendering support, but neither was present in Editor's default registeredNodes map. As a result, deserializing any editor state that contains a code block (or a bare line break) could not reconstruct those nodes. Register them alongside the other built-ins (root, text, element, heading, paragraph, quote).
  - CodeNode's Decodable init required a "language" key. Editor states produced by other Lexical implementations (e.g. lexical-web) omit "language" when no language is set, so decoding threw keyNotFound. Use decodeIfPresent with an empty-string default so a missing language is tolerated.
@meta-cla meta-cla Bot added the cla signed label Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants