- Remove DecoratorNode state
- Redefine TS React.Node type
- Add markdown indented list support
- Fix IME issue when applying text format
- Add line numbers in Code Highlight plugin.
- Remove top-level document reference to fix SSR.
- Show highlight language over code block
- Fix bug in RangeSelection.is that was causing incorrect formatting.
- Improve copy/paste for Tables and Lists
- Handle RangeSelection Containing Partial Table Selection
- Fix build issue with @lexical/code
- Add $getNearestBlockElementAncestorOrThrow helper
- Fix issues related to getting the wrong element ancestor in certain rich text features
- Improve table resizing
- Fix import issue in @lexical/list
- Fix incorrect types in @lexical/dragon
- Fix bad build
- Fix some outstanding issues with the textcontent listener and the removal of linebreaks.
- Add useLexicaTextEntity hook for using TextEntity in React.
- Add a warning when cloned nodes might unexpectedly refer to the pending editor state
- Add support for keyboard selection in Tables.
- Rename add* APIs to register* (e.g., addUpdateListener -> registerUpdateListener)
- Deprecate editor prop in Lexical Composer
- Reorganize code, creating several new packages: @lexical/code, rich-text, plain-text, dragon, history, link, overflow, markdown
- Move withSubscription to @lexical/utils
- Move command types out of listener callbacks and makes them an argument to registerCommand
- Add createCommand for better command payload typing
- Rename execCommand to dispatchCommand
- Add id prop to LexicalContentEditable
- Add basic support for copying and pasting tables.
- Various bug fixes and performance improvements
- Fix scrolling regression.
- Add missing dependency in lexical-react.
- Improve composition on Firefox
- Splits helper code into several smaller packages.
- Fixes clipboard behavior on Firefox.
- Fix hashtag with adjacent non-simple text node
- Rename addTransform to addNodeTransform
- Fix copy & paste issue
- Added TableCellHeaderStates to enable table header customization.
- Fixes to composition for WebKit.
- Fixes to HashtagPlugin destroy behavior.
- SSR fixes.
- Moved appropriate NPM peer dependencies to dependencies. I.e. @lexical/clipboard will now be fetched automatically when using @lexical/react.
- Simplified LexicalNestedComposer props to inherit parent when possible.
- SSR fixes.
- Added TypeScript definitions for lexical and @lexical/react
- LexicalComposer and createEditor now take a mandatory onError prop.
- createEditor can now take an optional readOnly prop.
- Moved LexicalEventHelpers to @lexical/clipboard.
- Minor selection fixes.
- Added GridSelection to support table selection. Selection is now
null | RangeSelection | GridSelection | NodeSelection
. - The editor now natively supports read only mode. Use
editor.setReadOnly(boolean)
andeditor.isReadOnly()
to find the read only mode. - An additional listener has been added to support listening to readonly changes. Use
editor.registerListener('readonly', value => {... })
to react to read only mode changes. - The BootstrapPlugin has been removed. Instead now use the
initialEditorState
prop on either the PlainTextPlugin or RichTextPlugin to initialize editor state.
- Added NodeSelection to support multiple non-adjacent node selection. Selection is now
null | RangeSelection | NodeSelection
. Upgrade note:selection !== null
->$isRangeSelection(selection)
. - HTML to DOM conversion has been to moved to the nodes themselves. Nodes now take an optional
static convertDOM(): DOMConversionMap | null
. - When onError is not passed to
createEditor({onError})
errors will now throw by default. Also, removedregisterListener('error')
. - Fixed BootstrapPlugin race condition.
- Added
registerListener('mutation', Class<LexicalNode>, Map<NodeKey, NodeMutation>)
to track created/destroyed nodes.NodeMutation = 'created' | 'destroyed'
- Removed
$log()
. - Moved TableNode/Row/Cell to its own
@lexical/table
package. - Composition fixes.
Lexical{Plain/Rich}TextPlugin
andDEPRECATED_use{Plain/Rich}TextPlugin
no longer create a ParagraphNode for you. This logic has been decoupled into a separate plugin . The Bootstrap plugin also accepts an initialPayloadFn and clearEditorFn for custom initialization (i.e. edit behavior from server data).<BootstrapPlugin /> <RichTextPlugin .. />
. If you're using theDEPRECATED_{Plain/Rich}Text
version you may also want to copy-paste this hook and run it before the RichText initialization - https://github.com/facebook/lexical/blob/main/packages/lexical/src/__tests__/utils/DEPRECATED__useLexicalBootstrap.js- Bugfixes.