Skip to content

Releases: facebook/lexical

v0.23.1

09 Jan 20:54
Compare
Choose a tag to compare

Breaking Changes

The only breaking change in this release is minor (#7023) and should not affect any correct code. However, if you are counting the number of times your update listener is called during editor.setRootElement(null) then you will have to change that expectation.

Highlights

Highlights since v0.23.0

Core Editor:

  • ✅ Fix: Updates are committed on editor.setRootElement(null) #7023
  • ✅ Fix: TabNode deserialization regression from v0.23.0 #7031

Mark:

  • ✅ Fix: MarkNode.addID regression #7020

React:

  • 🆕 Feature: Merge TabIndentionPlugin and ListMaxIndentLevelPlugin plugins, previously the ListMaxIndentLevelPlugin functionality was only in the playground #7018

What's Changed

  • v0.23.0 by @etrepum in #7017
  • [lexical-mark] Bug Fix: reverse ternary in MarkNode.addID by @james-atticus in #7020
  • [lexical-react] Feature: Merge TabIndentionPlugin and ListMaxIndentLevelPlugin plugins by @fantactuka in #7018
  • [lexical] Fix TabNode deserialization regression by @etrepum in #7031
  • [Breaking Change][lexical] Bug Fix: Commit updates on editor.setRootElement(null) by @etrepum in #7023

New Contributors

Full Changelog: v0.23.0...v0.23.1

v0.23.0

05 Jan 22:11
Compare
Choose a tag to compare

Breaking Changes

  • 🆕 Feature: Add updateFromJSON and move more textFormat/textStyle to ElementNode
    This change adds optional textFormat and textStyle properties to SerializedElementNode. If you have existing classes with those properties it could create a namespace clash that you will have to resolve one way or another.

    TextNode and ElementNode subclasses should be updated to call the updateFromJSON(serializedNode) method from their static importJSON methods. If they don't, they won't support this new functionality, and will have to continue copy and pasting the super implementation of importJSON for correct behavior if the base class ever changes in the future.

    You should consider dropping usage of the version field.

Highlights

Highlights since v0.22.0

Core Editor:

  • 🆕 Feature: Add updateFromJSON and move more textFormat/textStyle to ElementNode #6970
  • ✅ Fix: getNodes over-selection #7006
  • ✅ Fix: registerNodeTransform regression #7016

Playground:

  • ✅ Fix: table hover actions button position #7011

Yjs:

  • 🆕 Feature: Expose function to get anchor and focus nodes for given user awareness state #6942

What's Changed

  • v0.22.0 by @potatowagon in #6993
  • [lexical] Bug Fix: Flow is missing some variables and functions by @lytion in #6977
  • [tests] npm upgrade next by @potatowagon in #6996
  • Documentation: Fix typo "nest nest"->"nest" in README.md by @christianhg in #7000
  • [test] npm upgrade astro by @potatowagon in #7001
  • [lexical] Bug Fix: Fix getNodes over-selection by @etrepum in #7006
  • [Breaking Change][lexical] Feature: Add updateFromJSON and move more textFormat/textStyle to ElementNode by @etrepum in #6970
  • [lexical-playground] Refactor: switch headings test file names by @christianhg in #7008
  • [lexical] Bug Fix: Fix registerNodeTransform regression introduced in #6894 by @etrepum in #7016
  • [lexical-playground] Fix table hover actions button position by @ivailop7 in #7011
  • [lexical-yjs] Feature: Expose function to get anchor and focus nodes for given user awareness state by @amanharwara in #6942

New Contributors

Full Changelog: v0.22.0...v0.23.0

v0.22.0

24 Dec 16:37
Compare
Choose a tag to compare

Breaking Changes

  • 🆕 Feature: Support capitalization format
    #6897
    ^ You may need to update callsites that enumerate all cases of TextFormatType eg. switch statements

  • 🆕 Feature: New update tag: skip-dom-selection, $onUpdate now always called
    #6894

Highlights

Highlights since v0.21.0

Link:

  • ✅ Fix: Preserve the start/end of the selection for non-text points when creating a LinkNode
    #6883

List:

  • ✅ Fix: Ensure new paragraph node retains selection styling when exiting list
    #6917

Text:

  • 🆕 Feature: Support capitalization format
    #6897

Markdown:

  • ✅ Fix: preserve the order of markdown tags for markdown combinations, and close the tags when the outmost tag is closed by
    #5758

Table:

  • 🆕 Support google docs colgroup import (via deprecated col width attribute)
    #6971

  • ✅ fix: check is current selection in target table node
    #6979

  • ✅ Fix: Allow TableSelection to be preserved during contextmenu events
    #6964

  • ✅ Fix: Insertion of multiple rows
    #6963

  • ✅ Fix: Delete table row in merge cells
    #6922

  • ✅ Fix: Enforce table integrity with transforms and move non-React plugin code to @lexical/table
    #6914

Selection:

Core editor:

  • ✅ Fix: Refactor markSelection for getDOMSlot and not using updateDOM
    #6961

  • ✅ Refactor: exportJSON, nodes dont need to redeclare exportJSON
    #6983

  • 🆕 Feature: New update tag: skip-dom-selection, $onUpdate now always called
    #6894

  • 🆕 Feature: Warn about "display: flex" container for the editor
    #6901

React:

  • ✅ Replace React$MixedElement and React$Node with React.MixedElement and React.Node in flow API
    #6984

  • ✅ Fix: the location of draggable-block-menu cannot be calculated
    #6966

What's Changed

  • [Documentation Update] Add release protocol to maintainers-guide.md by @potatowagon in #6895
  • v0.21.0 by @potatowagon in #6896
  • [lexical-link] Bug Fix: Preserve the start/end of the selection for non-text points when creating a LinkNode by @etrepum in #6883
  • [lexical-website][lexical-react] Documentation Update: documentation for LexicalTreeView plugin by @Kingscliq in #6898
  • Warn about "display: flex" container for the editor by @fantactuka in #6901
  • [lexical-website] Fix: /docs/react/ "next" button links to itself by @vantage-ola in #6911
  • [lexical-table][lexical-utils][lexical-react]: Bug Fix: Enforce table integrity with transforms and move non-React plugin code to @lexical/table by @etrepum in #6914
  • [lexical][@lexical/selection] Feature: Unify $selectAll Implementations by @elgh0ul in #6902
  • [lexical-playground]: Fix empty layout item causes 100% CPU usage by @basile-savouret in #6906
  • [lexical-playground] Chore: Update Prettier to v3 by @daichan132 in #6920
  • Doc nits by @zurfyx in #6927
  • Update core-tests workflow triggers by @zurfyx in #6928
  • [*] Bug Fix: add merge_group to the tests workflow by @etrepum in #6932
  • [Breaking Change][lexical-list] Fix: Preserve original format after indenting list item by @citruscai in #6912
  • [lexical-playground] Fix: tabs do not show strikethrough/underline by @vantage-ola in #6811
  • [lexical-playground] Refactor: editor styles should in PlaygroundEditorTheme.css by @umaranis in #6934
  • [lexical-react]Bug Fix: the location of draggable-block-menu cannot be calculated #6818 by @lin-mt in #6915
  • [lexical-list] Bug Fix: Ensure new paragraph node retains selection styling when exiting list by @aleksandr-lapushkin in #6917
  • [lexical-table] Fix: Delete table row in merge cells by @iamvinayvk in #6922
  • [scripts-integration-fixtures] Address GitHub detected a vulnerability in the @sveltejs/kit dependency by @Fetz in #6943
  • [lexical-list] Revert PR 6912 by @potatowagon in #6944
  • [lexical-onboarding] testing sev mitigation by @nyogi in #6952
  • Test comment for pr testing by @bailey-meta in #6953
  • Create a test PR by @Tranquiliz00 in #6955
  • Revert "[lexical-onboarding] testing sev mitigation (#6952)" by @nyogi in #6956
  • Revert "Test comment for pr testing (#6953)" by @bailey-meta in #6957
  • Test234 by @Tranquiliz00 in #6958
  • [Breaking Change][lexical] Feature: New update tag: skip-dom-selection, $onUpdate now always called by @etrepum in #6894
  • [lexical-table][lexical-playground] Fix: Insertion of multiple rows by @iamvinayvk in #6963
  • [lexical-playground] Bug Fix: Allow scrolling if the table cell content overflows by @Parasaran-Python in #6966
  • [lexical][Breaking Change][lexical-rich-text][lexical-playground] Feature: Support capitalization format by @bedre7 in #6897
  • [lexical-website] Add Discord to the community section of the footer by @etrepum in #6967
  • [lexical][lexical-table] Bug Fix: Allow TableSelection to be preserved during contextmenu events by @etrepum in #6964
  • [lexical-utils] Bug Fix: Refactor markSelection for getDOMSlot and not using updateDOM by @etrepum in #6961
  • [lexical-markdown] Bug Fix: preserve the order of markdown tags for markdown combinations, and close the tags when the outmost tag is closed by @yhw5 in #5758
  • [lexical-table] Feature: Support google docs colgroup import (via deprecated col width attribute) by @etrepum in #6971
  • [Documentation][lexical-website]: Documentation for useLexical node selection hook by @Kingscliq in #6976
  • [lexical][lexical-table] Bug fix: TablePlugin: - check is current selection in target table node by @Ulop in #6979
  • feature: expose forEachSelectedTextNode by @GermanJablo in #6981
  • Refactor: exportJSON by @GermanJablo in #6983
  • [lexical] Fix flow error: change this to any by @potatowagon in #6992
  • [lexical-react] Refactor: Replace React$MixedElement and React$Node with React.MixedElement and React.Node by @SamChou19815 in #6984

New Contributors

Full Changelog: v0.21.0...v0.22.0

v0.21.0

02 Dec 16:30
Compare
Choose a tag to compare

Breaking Changes

  • 🆕 Deprecate $nodesOfType function
    #6855

  • 🆕 Feature: Scrollable tables with experimental getDOMSlot API
    #6759

  • ✅ Fix get table-cell background selection color from a class
    #6658
    Example change would be #6892

Highlights

Highlights since v0.20.0

Core editor:

  • 🆕 skipInitialization defaults to false for registerMutationListener
    #6857

  • 🆕 Deprecate $nodesOfType function
    #6855

  • ✅ Fix backspace bug when deleting nodes with canInsertTextAfter set to false
    #6268

  • 🆕 Add missing flow types for utils
    #6841

  • ✅ Fix: Add feature detection to calculateZoomLevel
    #6864

  • ✅ Fix: Allow setEditorState to work correctly inside of an update (Fixes Autocomplete plugin)
    #6876

React:

  • ✅ Fix: Prevent initial value fn to be called on rerender
    #6835

  • 🆕 ContentEditable Props type rename to ContentEditableProps
    #6837

Link:

  • 🆕 Add missing flow types
    #6833

Table:

  • 🆕 Feature: Scrollable tables with experimental getDOMSlot API
    #6759
  • ✅ Fix down arrow key handling in TableObserver
    #6839
  • ✅ Fix Resolve table selection issue when the mouse crosses over a portal
    #6834
  • ✅ Fix get table-cell background selection color from a class
    #6658
  • ✅ Fix left arrow key handling for table selection
    #6875
  • ✅ Fix table tab navigation
    #6880
  • ✅ Fix scrollable table exportDOM
    #6884

i8n:

  • ✅ Fix: workaround for Korean IME issue on iOS
    #6819

A11y:

  • ✅ Fix: Aria attributes for ContentEditable are ignored
    #6814

Mention:

  • 🆕 Mention nodes are no longer spellchecked
    #6788

List:

  • ✅ Fix: Handle appending inline element nodes in ListNode.append
    #6791

Mark:

  • ✅ Fix: Don’t deep copy mark node ids in clone to prevent redundant change detection in syncPropertiesFromYjs
    #6810

Selection:

  • 🆕 New plugin to retain selection: SelectionAlwaysOnDisplay plugin
    #6872

  • ✅ Fix: positionNodeOnRange fixes
    #6873

What's Changed

  • v0.20.0 by @etrepum in #6809
  • [lexical-mark] Bug Fix: Stop MarkNode __ids array deep copy in clone by @ebads67 in #6810
  • [lexical-list] Bug Fix: Handle appending inline element nodes in ListNode.append by @amanharwara in #6791
  • Mention nodes shouldn't be spellcheck'd :) by @sevki in #6788
  • Fix: Aria attributes for ContentEditable are ignored by @vantage-ola in #6814
  • [lexical-rich-text][lexical-plain-text] workaround for Korean IME issue on iOS by @2wheeh in #6819
  • [lexical][lexical-table] Feature: Scrollable tables with experimental getDOMSlot API by @etrepum in #6759
  • [lexical-examples] Chore: Add DOMExportOutputMap type to the exportMap by @Kingscliq in #6827
  • Link flow types by @zurfyx in #6833
  • Prevent initial value fn to be called on rerender by @fantactuka in #6835
  • [lexical-table] Bug Fix: Fix down arrow key handling in TableObserver by @etrepum in #6839
  • [lexical-link] Test: Removing link from node(children) by @vantage-ola in #6817
  • [lexical-react] Fix(lexical-react): ContentEditable props type rename by @ivaaaaann in #6837
  • [lexical-utils] Bug Fix: Add missing Flow type declarations by @hadiham in #6841
  • Table Action Menu - fix UI issue with Merge Cells item by @umaranis in #6830
  • [*] Chore: npm upgrade cross-spawn by @potatowagon in #6848
  • [lexical-link] Test: Appending inline element nodes to ListNode by @Shopiley in #6826
  • [Lexical] Bug Fix: backspace bug when deleting nodes with canInsertTextAfter set to false by @dani-lp in #6268
  • Feature: Deprecate $nodesOfType function by @Sachin-Mahato in #6855
  • [tests] npm upgrade cross-spawn by @potatowagon in #6856
  • [Lexical] Chore: Update default skipInitialization to false for registerMutationListener by @Shopiley in #6857
  • [lexical-table] Bug Fix: Resolve table selection issue when the mouse crosses over a portal by @etrepum in #6834
  • [lexical-table] Bug Fix: get table-cell background selection color from a class by @hamza221 in #6658
  • [lexical-selection] Bug Fix: Wrong selection type in $setBlocksType by @lytion in #6867
  • Add Documentation for RootNode's semantic and use case by @citruscai in #6869
  • [lexical-utils] Bug Fix: Add feature detection to calculateZoomLevel by @etrepum in #6864
  • [lexical-playground] Bug Fix: autocomplete format before and after insertion by @bedre7 in #6845
  • [lexical-playground] Bug Fix: Preserve the selection using the link editor from a table by @etrepum in #6865
  • Allow passing params to run-all by @zurfyx in #6874
  • Add SelectionAlwaysOnDisplay plugin by @zurfyx in #6872
  • positionNodeOnRange fixes by @zurfyx in #6873
  • [lexical-table] Bug Fix: Fix left arrow key handling for table selection by @etrepum in #6875
  • [lexical-playground] Fix: Hidden comment button on narrow screens or vertical monitors by @vantage-ola in #6871
  • [lexical-playground] Feature: Highlight special strings with format by @citruscai in #6860
  • [lexical-table] Bug Fix: Fix table tab navigation by @etrepum in #6880
  • [lexical-table] Bug Fix: Fix scrollable table exportDOM by @etrepum in #6884
  • v0.20.1 by @potatowagon in #6887
  • [lexical-playground] Fix CSS property by @ivailop7 in #6886
  • [lexical][lexical-playground] Bug Fix: Allow setEditorState to work correctly inside of an update by @etrepum in #6876
  • [lexical-website] Feature: Document the withKlass option for node replacement by @Shopiley in #6890
  • v0.20.2 by @potatowagon in #6891
  • Fix selected table colors by @zurfyx in #6892
  • [lexical-table] Bug Fix: TableNode exportDOM fixes for partial table selection by @etrepum in #6889

New Contributors

Full Changelog: v0.20.0...v0.21.0

v0.20.2

01 Dec 16:12
Compare
Choose a tag to compare

Highlights

Highlights since v0.20.0

Core editor:

  • 🆕 skipInitialization defaults to false for registerMutationListener
    #6857

  • 🆕 Deprecate $nodesOfType function
    #6855

  • ✅ Fix backspace bug when deleting nodes with canInsertTextAfter set to false
    #6268

  • 🆕 Add missing flow types for utils
    #6841

  • ✅ Fix: Add feature detection to calculateZoomLevel
    #6864

  • ✅ Fix: Allow setEditorState to work correctly inside of an update (Fixes Autocomplete plugin)
    #6876

React:

  • ✅ Fix: Prevent initial value fn to be called on rerender
    #6835

  • 🆕 ContentEditable Props type rename to ContentEditableProps
    #6837

Link:

  • 🆕 Add missing flow types
    #6833

Table:

  • 🆕 Feature: Scrollable tables with experimental getDOMSlot API
    #6759
  • ✅ Fix down arrow key handling in TableObserver
    #6839
  • ✅ Fix Resolve table selection issue when the mouse crosses over a portal
    #6834
  • ✅ Fix get table-cell background selection color from a class
    #6658
  • ✅ Fix left arrow key handling for table selection
    #6875
  • ✅ Fix table tab navigation
    #6880
  • ✅ Fix scrollable table exportDOM
    #6884

i8n:

  • ✅ Fix: workaround for Korean IME issue on iOS
    #6819

A11y:

  • ✅ Fix: Aria attributes for ContentEditable are ignored
    #6814

Mention:

  • 🆕 Mention nodes are no longer spellchecked
    #6788

List:

  • ✅ Fix: Handle appending inline element nodes in ListNode.append
    #6791

Mark:

  • ✅ Fix: Don’t deep copy mark node ids in clone to prevent redundant change detection in syncPropertiesFromYjs
    #6810

Selection:

  • 🆕 New plugin to retain selection: SelectionAlwaysOnDisplay plugin
    #6872

  • ✅ Fix: positionNodeOnRange fixes
    #6873

What's Changed

  • v0.20.0 by @etrepum in #6809
  • [lexical-mark] Bug Fix: Stop MarkNode __ids array deep copy in clone by @ebads67 in #6810
  • [lexical-list] Bug Fix: Handle appending inline element nodes in ListNode.append by @amanharwara in #6791
  • Mention nodes shouldn't be spellcheck'd :) by @sevki in #6788
  • Fix: Aria attributes for ContentEditable are ignored by @vantage-ola in #6814
  • [lexical-rich-text][lexical-plain-text] workaround for Korean IME issue on iOS by @2wheeh in #6819
  • [lexical][lexical-table] Feature: Scrollable tables with experimental getDOMSlot API by @etrepum in #6759
  • [lexical-examples] Chore: Add DOMExportOutputMap type to the exportMap by @Kingscliq in #6827
  • Link flow types by @zurfyx in #6833
  • Prevent initial value fn to be called on rerender by @fantactuka in #6835
  • [lexical-table] Bug Fix: Fix down arrow key handling in TableObserver by @etrepum in #6839
  • [lexical-link] Test: Removing link from node(children) by @vantage-ola in #6817
  • [lexical-react] Fix(lexical-react): ContentEditable props type rename by @ivaaaaann in #6837
  • [lexical-utils] Bug Fix: Add missing Flow type declarations by @hadiham in #6841
  • Table Action Menu - fix UI issue with Merge Cells item by @umaranis in #6830
  • [*] Chore: npm upgrade cross-spawn by @potatowagon in #6848
  • [lexical-link] Test: Appending inline element nodes to ListNode by @Shopiley in #6826
  • [Lexical] Bug Fix: backspace bug when deleting nodes with canInsertTextAfter set to false by @dani-lp in #6268
  • Feature: Deprecate $nodesOfType function by @Sachin-Mahato in #6855
  • [tests] npm upgrade cross-spawn by @potatowagon in #6856
  • [Lexical] Chore: Update default skipInitialization to false for registerMutationListener by @Shopiley in #6857
  • [lexical-table] Bug Fix: Resolve table selection issue when the mouse crosses over a portal by @etrepum in #6834
  • [lexical-table] Bug Fix: get table-cell background selection color from a class by @hamza221 in #6658
  • [lexical-selection] Bug Fix: Wrong selection type in $setBlocksType by @lytion in #6867
  • Add Documentation for RootNode's semantic and use case by @citruscai in #6869
  • [lexical-utils] Bug Fix: Add feature detection to calculateZoomLevel by @etrepum in #6864
  • [lexical-playground] Bug Fix: autocomplete format before and after insertion by @bedre7 in #6845
  • [lexical-playground] Bug Fix: Preserve the selection using the link editor from a table by @etrepum in #6865
  • Allow passing params to run-all by @zurfyx in #6874
  • Add SelectionAlwaysOnDisplay plugin by @zurfyx in #6872
  • positionNodeOnRange fixes by @zurfyx in #6873
  • [lexical-table] Bug Fix: Fix left arrow key handling for table selection by @etrepum in #6875
  • [lexical-playground] Fix: Hidden comment button on narrow screens or vertical monitors by @vantage-ola in #6871
  • [lexical-playground] Feature: Highlight special strings with format by @citruscai in #6860
  • [lexical-table] Bug Fix: Fix table tab navigation by @etrepum in #6880
  • [lexical-table] Bug Fix: Fix scrollable table exportDOM by @etrepum in #6884
  • v0.20.1 by @potatowagon in #6887
  • [lexical-playground] Fix CSS property by @ivailop7 in #6886
  • [lexical][lexical-playground] Bug Fix: Allow setEditorState to work correctly inside of an update by @etrepum in #6876
  • [lexical-website] Feature: Document the withKlass option for node replacement by @Shopiley in #6890

New Contributors

Full Changelog: v0.20.0...v0.20.2

v0.20.0

08 Nov 00:05
Compare
Choose a tag to compare

Highlights

Highlights since v0.19.0

Lexical Core:

  • 🆕 $onUpdate to add an "onUpdate" callback while processing an editor.update
    #6773

Markdown:

  • 🆕 Add ability to control finding the end of a node matched by TextMatchTransformer
    #6681
  • ✅ Avoid infinite markdown shortcut matchers
    #6778

Collab / Yjs:

  • ✅ Clean up dangling text after undo in collaboration
    #6670

Playground & Docs:

  • 🆕 Demonstrate how to preserve more styles when pasting HTML
    #6780
    #6770
  • 🆕 Add more keyboard shortcuts
    #6754

What's Changed

  • [lexical] Feature: Add onUpdate function during update with $onUpdate (correct baselline) by @landisdesign in #6773
  • #6768 fix to avoid infinite markdown shortcut matchers run by @fantactuka in #6778
  • [lexical-playground] Fix: the placement of the fontSize button in the ToolbarPlugin and hide the vertical scroll (Bug Fix) by @vantage-ola in #6786
  • Bug Fix: ContextMenu Paste option not preserving style by @citruscai in #6780
  • [lexical-website] Chore: upgrade to Docusaurus v3.6 - Docusaurus Faster by @slorber in #6761
  • [lexical-react] Bug Fix: LexicalTypeaheadMenuPlugin SSR error: ReferenceError: document is not defined by @bedre7 in #6794
  • [lexical-markdown] Feature: add ability to control finding the end of a node matched by TextMatchTransformer by @AlessioGr in #6681
  • [Lexical-website] BugFix: Change button text colour to improve visibility by @Shopiley in #6796
  • [lexical-yjs] Bug Fix: clean up dangling text after undo in collaboration by @mike-atticus in #6670
  • [lexical-website] Documentation Update: Add Documentation for html Property in Lexical Editor Configuration by @Kingscliq in #6770
  • [lexical-playground] Feature: Add more keyboard shortcuts by @bedre7 in #6754
  • Fix importDOM for Layout plugin by @ivailop7 in #6799
  • Add optional selection argument to $getHtmlContent flow type by @rajivanisetti in #6803
  • [lexical] Chore: Add export of DOMExportOutputMap from lexical by @Kingscliq in #6805

New Contributors

Full Changelog: v0.19.0...v0.20.0

v0.19.0

28 Oct 06:40
Compare
Choose a tag to compare

Highlights

Highlights since v0.18.0

A11y:

  • 🆕 aria-errormessage and aria-invalid support
    #6745
    #6751

Clipboard:

  • 🆕 Trust HTML for rich text clipboard
    #6755

Markdown:

  • 🆕 Add ability to hook into the import process for multiline element transformers
    #6682

Code:

  • ✅ Fix: Add global type declarations for Prism
    #6736

Export:

  • ✅ Fix: Preserve indentation when serializing to and from HTML
    #6693

List:

  • ✅ Fix: Retain indentation when list format is removed and reapplied
    #6684

Link:

  • 🆕 add attributes in LinkPlugin
    #6760

Selection:

  • ✅ Fix: Insertion into inline ElementNode should not crash
    #6703

  • ✅ Fix: lines were being deleted with deleteLine
    #6719

Text:

  • ✅ Fix TextNode in token mode should not be split by removeText
    #6690

Collab:

  • ✅ Fix missing setLocalStateField method to ProviderAwareness type
    #6683

  • ✅ Fix: preserve custom fields in Lexical-Yjs sync
    #6724

Table:

  • 🆕 Support backward selection in rows deletion
    #6680

  • ✅ Fix: Style buttons in toolbar respect table selection
    #6678

  • ✅ Fix Table formatting when no TextNodes present
    #6675

  • ✅ Fix: colWidths not imported from DOM for TableNode
    #6731

  • ✅ Fix: Shift+down selects an extra subsequent element for Table selection
    #6679

  • 🆕 Inserted node returned from $insertTableRow__EXPERIMENTAL and $insertTableColumn__EXPERIMENTAL
    #6741

  • ✅ Fix calling split on undefined error
    #6746

What's Changed

  • v0.18.0 by @potatowagon in #6676
  • Support backward selection in rows deletion by @fantactuka in #6680
  • [lexical-table][lexical-playground] Bug Fix: Make style buttons in toolbar respect table selection by @KatsiarynaDzibrova in #6678
  • [lexical] Bug Fix: Fix Table formatting when no TextNodes present by @KatsiarynaDzibrova in #6675
  • [lexical-yjs] Bug Fix: Add missing setLocalStateField method to ProviderAwareness type by @collierrgbsitisfise in #6683
  • [lexical] Bug Fix: TextNode in token mode should not be split by removeText by @etrepum in #6690
  • [lexical-playground] 3 Bug Fixes, 1 UX Improvement: All Regarding Excalidraw Node by @neysanfoo in #6666
  • [lexical-playground] Bug Fix: toolbar font size input keyboard accessibility by @rilrom in #6695
  • [lexical-playground] Bug Fix: Track Resizing Actions for Excalidraw in History Stack by @neysanfoo in #6696
  • [lexical] Bug Fix: Insertion into inline ElementNode should not crash by @etrepum in #6703
  • [lexical][lexical-list] Bug Fix: Retain indentation when list format is removed and reapplied by @SeaBa55 in #6684
  • [lexical][lexical-list][lexical-rich-text]: Fix: Preserve indentation when serializing to and from HTML by @GermanJablo in #6693
  • fix: preserve custom fields in Lexical-Yjs sync by @collierrgbsitisfise in #6724
  • [lexical-playground] Remove unused command by @ivailop7 in #6726
  • [lexical-playground] Bug Fix: match toolbar font size input with the rest of toolbar items in Read-Only mode by @bedre7 in #6698
  • Chore: add workflow to auto close stale pr based on label by @potatowagon in #6732
  • [lexical-table] Bug Fix: colWidths not imported from DOM for TableNode by @cwstra in #6731
  • [lexical] Bug Fix: lines were being deleted with deleteLine by @taro-shono in #6719
  • [lexical-playground] Table Hover Actions Layout Fixes by @ivailop7 in #6725
  • [*] Chore: Disable react-beta test job for now by @etrepum in #6738
  • [lexical-code] Bug Fix: Add global type declarations for Prism by @etrepum in #6736
  • [lexical-playground] Bug Fix: Disable image and inline focusing, adding caption and editing in read-only mode by @neysanfoo in #6705
  • [lexical-markdown] Feature: add ability to hook into the import process for multiline element transformers by @AlessioGr in #6682
  • [lexical-playground] Bug Fix: Disable equation editing in read-only mode by @neysanfoo in #6707
  • Bug Fix: Shift+down selects an extra subsequent element for Table selection by @KatsiarynaDzibrova in #6679
  • [lexical-table] Return inserted node from $insertTableRow__EXPERIMENTAL and $insertTableColumn__EXPERIMENTAL by @amanharwara in #6741
  • [lexical-react] Feature: Add aria-errormessage and aria-invalid support to LexicalContentEditable by @ejhammond in #6745
  • Add ariaErrorMessage and ariaInvalid to Flow type by @ejhammond in #6751
  • [lexical-table] [lexical-selection] Try to fix calling split on undefined by @ivailop7 in #6746
  • [lexical-playground] Bug Fix: Disable table hover actions in read-only mode by @neysanfoo in #6706
  • [lexical-playground] Bug Fix: Disable editing of Excalidraw Component in Read-Only Mode by @neysanfoo in #6704
  • Trust HTML for rich text clipboard by @zurfyx in #6755
  • [lexical-react] replace abstract component by @potatowagon in #6752
  • [lexical-react] Feature: add attributes in LinkPlugin by @taro-shono in #6760
  • [lexical] Add missing commands to Lexical.js.flow by @potatowagon in #6769
  • update dependencies to address security vulnerabilities by @potatowagon in #6764

New Contributors

Full Changelog: v0.18.0...v0.19.0

v0.18.0

26 Sep 17:36
Compare
Choose a tag to compare

Highlights

Highlights since 0.17.1

Core editor:

  • 🆕 Iterable $dfs
    #6664

  • 🆕 Pass in an array of tags to EditorUpdateOptions for multiple tag update
    #6507

  • 🆕 exportDOM function supports document fragment exports
    #6641

  • ✅ Fix issue where cmd/ctrl + left arrow after a tab character would cause exception
    #6588

Markdown:

  • 🆕 shouldMergeAdjacentLines option in $convertFromMarkdownString. If true, merges adjacent lines as per commonmark spec (line1\nline2 -> line1line2). If false (default and current behavior, adjacent lines remain separated by newline, as per GFM (line1\nline2 -> line1\nline2)
    #6608
    #6660
  • 🆕 multiline markdown transformers / mdx support
    #6530
  • 🆕 More flexible TextMatchTransformer api, more fields made optional
    #6651

Link:

  • ✅ Fix removing a link from nodes with children, eg. Mark Node for comments
    #6656

Table:

  • ✅ Fix merged cell related edge cases
    #6607
  • ✅ Fix Table formatting and styling not persisting for empty cells
    #6626
  • ✅ Fix crash in $deleteCellHandler
    #6650
  • ✅ Fix incorrect addition of empty cells on table paste
    #6578
  • ✅ Fix issue where selecting a cell then dragging outside of table would not select entire table
    #6579
  • ✅ Fix Table Cut Event Handling
    #6596
  • 🆕 optional colWidths property to TableNode
    #6625
  • 🆕 Table row striping feature, increases tables visual accessiblity.
    #6547

Selection:

  • 🆕 Expose getStyleObjectFromCss in @lexical/selection
    #6612

Misc:

  • ✅ Check undeclared dependencies in build, declare missing dependencies
    #6574
  • ✅ Fix window is undefined error appears when creating a code node in a headless editor in a nodejs environment
    #6562

What's Changed

  • v0.17.1 by @ivailop7 in #6559
  • [lexical-table] Bug Fix: Add @lexical/clipboard as a direct dependency of @lexical/table by @etrepum in #6571
  • [lexical-react] menu positioning: Unrevert PR6510 but with gating by @potatowagon in #6566
  • [*] Feature: Check undeclared dependencies in build by @etrepum in #6574
  • [lexical-table] feat: Add row striping by @ivailop7 in #6547
  • [lexical-react]: Fix incorrect addition of empty cells on table paste by @Shubhankerism in #6578
  • [lexical-list][lexical-react] Refactor: Create registerList Function Separate from React Shared Utils by @jkjk822 in #6560
  • Fix test results CI path on Windows by @moughxyz in #6585
  • [lexical][lexical-overflow] Refactor: simplified removeText and insertText rewrite (part 1) by @GermanJablo in #6456
  • [lexical-table] Fix Table Cut Event Handling by @ivailop7 in #6596
  • [lexical-markdown][breaking change] Feature: multiline markdown transformers / mdx support by @AlessioGr in #6530
  • Address svelte vulnerability by @potatowagon in #6603
  • Fix issue where cmd/ctrl + left arrow after a tab character would cause exception by @moughxyz in #6588
  • [lexical-table][lexical-playground] Bug Fix: Fix merged cell related edge cases by @etrepum in #6607
  • [lexical-code][breaking change] Bug Fix: explicitly import instead of window. to support code nodes in nodejs by @nadine-nguyen in #6562
  • Multiple update tags by @zurfyx in #6507
  • [lexical-playground] Fix: Poll Option not clickable at some place after checked state by @iamvinayvk in #6609
  • [lexical-markdown] update markdown flow api by @potatowagon in #6615
  • Expose getStyleObjectFromCss in @lexical/selection by @mofoshow in #6612
  • [lexical-markdown] Fix: normalize markdown in $convertFromMarkdownString to comply with CommonMark spec by @GermanJablo in #6608
  • [lexical] Chore: Add more helpful invariants to $applyNodeReplacement by @etrepum in #6567
  • [lexical-markdown] Breaking Change: rename 'multilineElement' to 'multiline-element' by @potatowagon in #6617
  • Bug Fix: Fix issue where selecting a cell then dragging outside of table would not select entire table by @moughxyz in #6579
  • address micromatch vulnerability by @potatowagon in #6616
  • CI: tag flaky test by @potatowagon in #6620
  • [lexical-react] Refactor: Ensure disconnect is called after connection is established in useYjsCollaboration by @smworld01 in #6619
  • Revert "[lexical-markdown] Fix: normalize markdown in $convertFromMarkdownString to comply with CommonMark spec (#6608)" by @potatowagon in #6627
  • [lexical-playground] Bug Fix: Fix table row/column index when resizing merged cells by @patrick-atticus in #6630
  • [lexical-markdown] Fix: normalize markdown in $convertFromMarkdownString to comply with CommonMark spec (2nd try) by @GermanJablo in #6629
  • [lexical-table] Bug: Table formatting and styling not persisting for empty cells by @KatsiarynaDzibrova in #6626
  • [lexical-playground][ExcalidrawNode] Bug Fix: Preserve Excalidraw image dimensions after resizing by @neysanfoo in #6634
  • [lexical-table][lexical-playground] Feature: Add column widths to TableNode by @patrick-atticus in #6625
  • Grammar Issue - Repeated Word by @DocAdam in #6643
  • Allow exporting a document fragment from the exportDOM function by @skopz356 in #6641
  • [lexical-react][lexical-playground] Bug Fix: Workaround for yjs disconnect race in React StrictMode by @etrepum in #6644
  • [lexical-code] Bug Fix: Annotate @lexical/code as having side-effects for Prism by @etrepum in #6652
  • [lexical-markdown] shouldMergeAdjacentLines as an option by @potatowagon in #6642
  • [lexical-playground] Bug Fix: empty code block not focused by @potatowagon in #6649
  • [lexical-table] Bug Fix: Fix crash in $deleteCellHandler by @etrepum in #6650
  • [lexical-markdown]: Refactor: allows omitting certain properties from TextMatchTransformers, adds jsdocs by @AlessioGr in #6651
  • [lexical-playground] Bug Fix: Correct ExcalidrawNode DOM handling for proper resizing by @neysanfoo in #6657
  • [lexical-link] Bug Fix: Removing a link from descendants by @levensta in #6656
  • [lexical-markdown] set shouldMergeAdjacentLines default to be false by @potatowagon in #6660
  • Iterable $dfs by @zurfyx in #6664

New Contributors

Full Changelog: v0.17.1...v0.18.0

v0.17.1

27 Aug 08:29
Compare
Choose a tag to compare

Highlights

  • Multiple fixes focused on table stability
  • Various cleans up and small refactors across the codebase

What's Changed

  • v0.17.0 by @potatowagon in #6487
  • [lexical-table] Bug Fix: Enable observer updates on table elements attributes change by @EugeneVorobyev in #6479
  • [lexical] Bug Fix: Merge pasted paragraph into empty quote by @2wheeh in #6367
  • [@lexical/playground] fix: block cursor show horizontal by @keiseiTi in #6486
  • When creating a new check list, set the checked value of the list item to false instead of undefined by @amanharwara in #5978
  • Revert "[@lexical/playground] fix: block cursor show horizontal" by @etrepum in #6490
  • docs: prevent automatic <p> tag wrapping by @devy-bee in #6491
  • [lexical] Feature: Add version identifier to LexicalEditor constructor by @etrepum in #6488
  • [lexical-playground] Bug Fix: Update tooltip for redo button with correct macOS shortcut by @etrepum in #6497
  • Flow: add more HTMLDivElementDOMProps by @zurfyx in #6500
  • Fix splitText when detached by @zurfyx in #6501
  • [lexical] Bug Fix: Fix decorator selection regression with short-circuiting by @etrepum in #6508
  • [lexical] surface more error details in reconciler by @potatowagon in #6511
  • [@lexical/selection] Feature: yield target to style patch fn by @mrdivyansh in #6472
  • [lexical] Refactor: [RFC] LexicalNode.afterCloneFrom to simplify clone implementation by @etrepum in #6505
  • [lexical-react] remove editor__DEPRECATED that has been deprecated for two years by @etrepum in #6494
  • Fix OverflowNode configuration by @zurfyx in #6027
  • [lexical-react] Fix: Fix React.startTransition on Webpack + React 17 by @turnerguo in #6517
  • Revert "Fix OverflowNode configuration" by @etrepum in #6535
  • [lexical-table] Bug Fix: Selection in tables with merged cells by @elbotho in #6529
  • [*] Chore: Mark additional tests as flaky from #6535 test runs by @etrepum in #6536
  • [lexical-list] Bug Fix: handle non-integer numbers in setIndent by @jrfitzsimmons in #6522
  • Chore: change className props in TreeView component to optional by @reekystive in #6531
  • [lexical-table] Fix a number of table Cut command scenarios by @ivailop7 in #6528
  • [lexical-table] Stop selecting the whole table after pasting cells by @ivailop7 in #6539
  • [lexical-yjs] Bug Fix: Properly sync when emptying document via undo by @moughxyz in #6523
  • [lexical-react] Fix multiple node selection deletion by @ivailop7 in #6538
  • [lexical-playground] Fix: in playground show component-menu when scroll by @keiseiTi in #6510
  • Bug Fix: Fix issue where triple-clicking a cell would dangerously select entire document by @moughxyz in #6542
  • [lexical-playground] Bug Fix: Fix firefox e2e test regression in Selection.spec.mjs by @etrepum in #6546
  • [lexical-table][lexical-clipboard] Bug Fix: Race condition in table CUT_COMMAND by @etrepum in #6550
  • [lexical-table] Fix table selection paste as plain text by @ivailop7 in #6548
  • [lexical-table] Bug Fix: Append a ParagraphNode to each cell when unmerging by @kmslab20 in #6556
  • [lexical] Add tests for HTMLConfig by @2wheeh in #5507
  • [lexical-playground] Bug Fix: fix comment timestamps by @irahopkinson in #6555
  • Revert "[lexical-playground] Fix: in playground show component-menu w… by @zurfyx in #6558

New Contributors

Full Changelog: v0.17.0...v0.17.1

v0.17.0

01 Aug 16:31
Compare
Choose a tag to compare

What's Changed

  • v0.16.1 by @ivailop7 in #6363
  • [lexical-markdown] Feature Change: Dont trim whitespaces on convertFromMarkdownString by @potatowagon in #6360
  • [lexical][lexical-table] Chore: Replace references to old GridSelection with TableSelection by @etrepum in #6366
  • [lexical-playground] Table Hover Action Buttons by @ivailop7 in #6355
  • Make placeholder accessible by @zurfyx in #6171
  • CI: run e2e flaky tests in a separate job by @potatowagon in #6365
  • [Lexical] Create initial Gallery View with Emoji Plugin Example by @Sahejkm in #6369
  • [Lexical][Gallery] Add description in the card, option to render preview card at run time if no image by @Sahejkm in #6372
  • [rexical-react] Bug Fix: Headings inside collapsible sections are lost when Table of Contents is re-initialized by @KatsiarynaDzibrova in #6371
  • [Lexical] Fix flow errors on syncing build to meta intern by @Sahejkm in #6373
  • [lexical-playground] Fix Table Hover Actions Noclick Bug by @ivailop7 in #6375
  • [Lexical][Gallery] Add option to search examples in the gallery by @Sahejkm in #6379
  • [examples] Chore: Use named export of LexicalErrorBoundary in the examples by @etrepum in #6378
  • [lexical][lexical-playground] Bug Fix: Create line break on paste of content type text/html by @jnnwnk in #6376
  • [Lexical][Gallery] Convert files to follow typescript by @Sahejkm in #6383
  • Fix integrity test by @zurfyx in #6385
  • Prettier sort test attributes by @zurfyx in #6384
  • CI: tag flaky tests by @potatowagon in #6388
  • Fix clear rootElement on React by @zurfyx in #6389
  • [Gallery] Add option to filter plugins based on tags by @Sahejkm in #6391
  • [lexical-playground][lexical-table] Bug Fix: Fix Shift+ Down Arrow regression for table sequence. by @serey-roth in #6393
  • [lexical-html] Feature: support pasting empty block nodes by @potatowagon in #6392
  • [lexical] Bug Fix: more accurate line break pasting by @potatowagon in #6395
  • [lexical] Feature: Implement Editor.read and EditorState.read with editor argument by @etrepum in #6347
  • [lexical] Feature: registerMutationListener should initialize its existing nodes by @etrepum in #6357
  • Add ref to contenteditable by @zurfyx in #6381
  • Restore registerRootListener null call by @zurfyx in #6403
  • Fix transpile nodesOfType by @zurfyx in #6408
  • [lexical-react][lexical-playground] sync draggable block plugin to www by @potatowagon in #6397
  • CI: tag flaky tests by @potatowagon in #6405
  • CI: run flaky tests on firefox browsers by @potatowagon in #6411
  • CI: fix build failure on astro integration tests by @2wheeh in #6414
  • Fix discrete nested updates by @zurfyx in #6419
  • fix(docs): correct typo in Lexical collaboration guide by @andasan in #6421
  • docs: fix typo in editor.registerCommand() usage by @yangshun in #6429
  • [lexical-react] update flow typing for draggable block plugin by @potatowagon in #6426
  • [lexical-playground][TableCellResizer] Bug Fix: Register event handlers on root element by @JBWereRuss in #6416
  • fix(LexicalNode): fix inline decorator isSelected by @jason89521 in #5948
  • [lexical-playground] Refactor: run prettier to fix CI by @GermanJablo in #6436
  • [lexical-history][lexical-selection][lexical-react] Fix: #6409 TextNode change detection by @etrepum in #6420
  • [lexical][lexical-selection] Bug Fix: Respect mode when patching text style by @adrianmxb in #6428
  • [lexical][auto-link] Fix auto link crash editor by @MaxPlav in #6433
  • [Lexical][Gallery] Create Simple Tableplugin example by @Sahejkm in #6445
  • [Lexical][CI] ignore running unit/integerity/e2e tests on examples folder code by @Sahejkm in #6446
  • [Lexical][Gallery] Add tableplugin example to gallery by @Sahejkm in #6447
  • [lexical] [lexical-selection] Preserve paragraph styles between lines by @ivailop7 in #6437
  • [lexical] Bug Fix: getCachedTypeToNodeMap should handle a empty and writable EditorState by @etrepum in #6444
  • [lexical-react]: sync format in flow file by @potatowagon in #6448
  • [lexical-rich-text] Bug Fix: HeadingNode.insertNewAfter by @GermanJablo in #6435
  • Flow add tags type to OnChange plugin by @zurfyx in #6457
  • CI: dont cancel other test runs if e2e flaky job fails by @potatowagon in #6460
  • [lexical] Bug Fix: Allow getTopLevelElement to return a DecoratorNode by @etrepum in #6458
  • CI: tag flaky tests by @potatowagon in #6462
  • [Lexical][CI] Update canary e2e test os by @Sahejkm in #6465
  • [lexical-table] Bug Fix: cannot delete content when a table inside selection by @placeba in #6412
  • [Lexica][CI] run extended tests for safari in mac-os and chrome/firefox in linux/windows by @Sahejkm in #6466
  • be in sync with www by @potatowagon in #6478

New Contributors

Full Changelog: v0.16.1...v0.17.0