feat(richtext-lexical): upgrade lexical from 0.35.0 to 0.41.0#15760
feat(richtext-lexical): upgrade lexical from 0.35.0 to 0.41.0#15760GermanJablo wants to merge 4 commits intomainfrom
Conversation
Bump all @lexical/* and lexical dependencies to 0.40.0 and update the lexicalTargetVersion constant.
📦 esbuild Bundle Analysis for payloadThis analysis was generated by esbuild-bundle-analyzer. 🤖 |
…ith new specifications
| type: 'paragraph', | ||
| version: 1, | ||
| textFormat: 0, | ||
| textFormat: 16, |
There was a problem hiding this comment.
Lexical v0.39.0, via facebook/lexical#7971, changed how ElementNode serializes textFormat and textStyle to JSON.
Now, Lexical computes textFormat from the children's format, so a paragraph containing only inline code text (format: 16) will have textFormat: 16 instead of 0. The property is also omitted entirely when it's not needed (e.g., when the element has direct TextNode children that already carry the format).
The inline code rendering is identical; only the serialized metadata on the parent paragraph changed.
There was a problem hiding this comment.
The property is also omitted entirely when it's not needed (e.g., when the element has direct TextNode children that already carry the format)
Isn't this the case here, and we should be able to remove the textFormat property here?
There was a problem hiding this comment.
No. The test is asking for it.
It seems the paragraph gets its formatting from its children in cases like this.
Move --lexical-indent-base-value CSS variable from indent class to editor root element per v0.41.0 breaking change (#8132).
Summary
Upgrades the lexical dependency from 0.35.0 to 0.41.0.
Keeping up with Lexical releases avoids accumulating too large a gap, which makes future upgrades risky and time-consuming. This upgrade also brings in the upstream
normalizeMarkdownfix (facebook/lexical#7812), which means we can eventually drop our vendored copy of that function.If you installed lexical manually, update it to 0.41.0. Installing lexical manually is not recommended, as it may break between updates, and our re-exported versions should be used. See the yellow banner box for details.
If you still encounter richtext-lexical errors, do the following, in this order:
Lexical Breaking Changes
The following Lexical releases contain breaking changes. We recommend reading them if you're using Lexical APIs directly (
@payloadcms/richtext-lexical/lexical/*).--lexical-indent-base-valueCSS custom property is now only read from the editor root element, not from indented elements. Payload already handles this change internally — no action required.ElementNodeJSON serialization:textFormatandtextStyleare now only serialized when necessary (when the node has no direct TextNode children). May affect code that reads these properties from serialized data.DecoratorNode.decorate()return type widened tonull | T. Collaboration context changes (not used by Payload).None of these breaking changes require action from Payload users under normal usage.
Changes
@lexical/*andlexicalfrom 0.35.0 to 0.41.0lexicalTargetVersionconstant--lexical-indent-base-valueCSS variable from.LexicalEditorTheme__indentto the.LexicalEditorThemeroot selector (v0.41.0 breaking change)textFormattest expectations for inline code paragraphs (v0.39.0 serialization change)Previous Lexical Upgrades