Releases: facebook/lexical
v0.11.0
v0.11.0
v0.11.0 (2023-05-23)
Arguably no major new features but this version comes with substantial bugfixes! Most notably:
- Proper support for tabs
- Remove redundant spaces on paste
- Revised triple click heuristics
- Fixed NodeSelection clicks on Android
- Revised deletion heuristics style retention
- Revised
createRectsFromDOMRange
for Mark-like plugins
(you can read more on these on the changelog below)
LexicalContextMenu (experimental)
While we strongly advocate for a11y and features that work across devices, there is significant demand for desktop users to have access to tooling via the right click. UX-wise, they're very familiar with it as it's common within other editors such as the well-known Google Docs, Pages and Microsoft Word and it's also the fastest.
LexicalContextMenu is a WIP and not ready for production but the prototype is already live in the Playground under a feature flag (see the gear on the bottom left to enable it /?shouldUseLexicalContextMenu=true
)
Changelog
- Change
MarkNode::clone
node
arg type tothis
by @potomak in #4363 - Fall back to url if parser fails by @acywatson in #4364
- Inherit format for text entity node by @fantactuka in #4382
- Collapsible enhancements by @fantactuka in #4257
- Improve responsiveness of the floating text format toolbar buttons by @ChronicLynx in #4298
- Setting initial state of isSmallWidthViewport by @ebads67 in #4398
- Make DecoratorBlockNode.isInline return false by @egonbolton in #4383
- Add docs for list package by @acywatson in #4393
- Flow table bg color types by @zurfyx in #4400
- Use provided selection when serializing to HTML by @acywatson in #4392
- Fix markdown list merging by @acywatson in #4387
- Fix list merging by @acywatson in #4386
- Optional colrowSpan serialization by @zurfyx in #4344
- Split test files and skip flaky tests in linux + collab by @acywatson in #4394
- Fix HistoryPlugin selection out of sync by @zurfyx in #4390
- Remove unused styles by @thorn0 in #4426
- simplify logic for the fix "Improve responsiveness of the floating text format toolbar buttons" by @AlessioGr in #4431
- Updated Toolbar Plugin to Add keyboard shortcut for adding hyperlinks by @AnuragBalhra in #4413
- Fix text click selection on touch devices #3098 by @ibastawisi in #4395
- Allow to pass all possible attributes to a content editable div by @kazimirchuk in #4450
- Revisit touch devices by @zurfyx in #4441
- fix: attach event listeners to initial nodes by @OriginalEXE in #4454
- Disable flaky test by @zurfyx in #4455
- Add documentation for TabIndentationPlugin by @mrPaintMan in #4453
- Select all adjustments by @fantactuka in #4425
- Handle empty element deletion by @fantactuka in #4380
- Tab support by @zurfyx in #4436
- Event delegation for NoteEventPlugin by @fantactuka in #4424
- Generalize Menu Logic by @tylerjbainbridge in #4284
- Sanitize floatingLinkEditor by @acywatson in #4462
- Improve rect deduplication by @acywatson in #4471
- Tests for inserting text either side of an inline element by @shirakaba in #4346
- exportDOM methods for HeadingNode, QuoteNode by @ivailop7 in #4445
- Sanitize url by @acywatson in #4483
- Add text/uri-list support in clipboard. by @xinyuan0801 in #4478
- Fix Flow types by @zurfyx in #4485
- TypeAheadMenu and TableActionMenu rendered off screen fixed. by @Shubhankerism in #4301
- Fix GC memory leak by @zurfyx in #4510
- Adjust selection after triple click by @fantactuka in #4512
- Fix GC memory leak (2) by @zurfyx in #4513
- Make tabs flexible in code by @zurfyx in #4520
- Allow arbitrary awareness fields in Collaboration plugin by @attnov in #4507
- Fix clickable link plugin #4514 by @fantactuka in #4519
- Add HTML deserialization recipe to docs by @ivailop7 in #4432
- Allow importing width and height from table cell and DOM nodes by @GMchris in #4521
- Basic Context Menu (behind Switch) by @tylerjbainbridge in #4285
- Auto embed fix #4530 by @fantactuka in #4535
- Tame wild white spaces by @zurfyx in #4467
- v0.11.0 by @zurfyx in #4539
New Contributors (since v0.9.1)
- @khanakia made their first contribution in #4209
- @donotlb made their first contribution in #4192
- @nemophrost made their first contribution in #4216
- @howlowck made their first contribution in #4229
- @bencarletonn made their first contribution in #4237
- @yjhtry made their first contribution in #4263
- @aleksandr-kiliushin made their first contribution in #4277
- @umaranis made their first contribution in #4310
- @MohitSinghChauhan made their first contribution in #4318
- @potomak made their first contribution in #4363
- @thorn0 made their first contribution in #4426
- @AnuragBalhra made their first contribution in #4413
- @ibastawisi made their first contribution in #4395
- @kazimirchuk made their first contribution in #4450
- @OriginalEXE made their first contribution in #4454
- @mrPaintMan made their first contribution in #4453
- @shirakaba made their first contribution in #4346
- @xinyuan0801 made their first contribution in #4478
- @Shubhankerism made their first contribution in #4301
- @attnov made their first contribution in #4507
- @GMchris made their first contribution in #4521
Full Changelog: v0.10.0...v0.11.0
v0.10.0
0.10.0 (2023-04-18)
Breaking Changes
@lexical/link will now sanitize anchor tag hrefs before rendering them to the DOM. This provides a measure of protection against XSS attacks
that rely on inlining javascript in that attribute. However, it means that links using less common protocols will now be sanitized (converted to about:blank),
which will be a breaking change for any existing links.
Like most other node-based logic in Lexical, the sanitization logic can be overriden by overriding LinkNode using the Node Overrides API and replacing it with a node that implements the sanitizeUrl method differently.
Fixes CVE-2023-30792
- Table feature: background color (#4345) Gerard Rovira
- Add @react/LexicalClickableLinkPlugin (#4316) Gerard Rovira
- TablePlugin feature: cell merge (#4343) Gerard Rovira
- Ban javascript URLs in @lexical/link (#4342) Acy Watson
- Table Cell Background Color (#4306) Gerard Rovira
- ExportDOM in Debug Tree View (#4307) Ivaylo Pavlov
v0.9.2
0.9.2 (2023-04-14)
- Update codes.json (#4320) Gerard Rovira
- Missing table types (#4302) Gerard Rovira
- Fix cursor changing to default when resizing image (#4317) (#4318) Mohit Singh Chauhan
- Persist files and scene state in Excalidraw plugin (#4299) Ivaylo Pavlov
- Fix crash on prettier formatting fail (#4310) Syed Umar Anis
- YouTube embed: use more privacy-friendly youtube-nocookie.com instead of youtube.com (#4282) Alessio Gravili
- Fix flowtypes for insertBefore/after (#4245) Maksim Horbachevsky
- Fix excluded property imports (#4287) Acy Watson
- Allow excluding specific properties from collab syncing via plugin (#4275) Acy Watson
- Update tables.md (#4278) Gerard Rovira
- Refactor Check for mention match function (#4277) Aleksandr Kiliushin
- Replace canExtractContents with ShadowRoot check (#4276) Gerard Rovira
- Ignore script nodes in HTML deserialization (#4249) Acy Watson
- Fix Clear Formatting (Fixes #4188) (#4204) Ivaylo Pavlov
- Add try catch around katex renderer (#4260) John Flockton
- last table row delete throwing error (#4270) Aman Bansal
- Upgrade Flow to 0.2 (#4264) Gerard Rovira
- Cell merge backwards compatiblity 2 (#4268) Gerard Rovira
- Cell merge backwards compatiblity (#4267) Gerard Rovira
- fix get text selectRect error (#4263) yjh
- Loosen node and version types (#4143) John Flockton
- Bugfix: Comment popup closes when cursor hovers over table (#4228) Ben Carleton
- isEditable is true on first render even if editor initiated with false (#4251) Aman Bansal
- Fix TableCellNode import/exportJSON (#4259) Gerard Rovira
- Flow: table missing methods (#4261) Gerard Rovira
- Fix insertTableColumn when rowSpan > 1 (#4258) Gerard Rovira
- Bugfix: Floating tool bar not responsive in tables (#4237) Ben Carleton
- pasting text on input was creating a new paragraph node instead of ad… (#4246) Aman Bansal
- Excalidraw Component fixes (#4252) Ivaylo Pavlov
- Preserve content with merging cells (#4242) Gerard Rovira
- Support select all for node selection (#4233) Maksim Horbachevsky
- Fix TypeaheadMenuPlugin scrollIntoView to not rely on external class (#4238) Dragoș Străinu
- Ignore __indent in list deserialization (#4241) Acy Watson
- Revise Excalidraw dependency (#4234) Gerard Rovira
- Table toolbar foundation (#4182) Gerard Rovira
- Restore MD selection (#4232) Gerard Rovira
- Fixed
aria-label
typo (#4229) Hao Luo - Export $hasUpdateTag (#4216) Alma Madsen
- Fix incorrect placement of Auto Embed (#4192) wangqi
- Fix bad selection shift at boundary (#4219) Gerard Rovira
- Improve Documentation - multiple modules (#4166) Harry Sanders
- Unmerge cell (#4212) Gerard Rovira
- Only allow numbers in TablePlugin row / column number input (#4201) Alessio Gravili
- Create fragment attached to the doc (#4186) Maksim Horbachevsky
- Add a title to the link node to support titles in markdown (#4161) themagickoala
- Fix table insertion (#4180) Gerard Rovira
- added trash button to floatingLinkEditor plugin to toggle the link to… (#4209) Aman Bansal
- Delete unused LinkPreview.css (#4200) Alessio Gravili
- Use 'padding' shorthand CSS rule (#4198) Alessio Gravili
- Add missing flow file (#4193) Maksim Horbachevsky
v0.9.1
v0.9.1 (2023-03-24)
- Explicit E2E_BROWSER on E2E runs (#4179) Gerard Rovira
- Fix tables Webkit e2e (#4175) Gerard Rovira
- Remove unused convertToMarkdown file (#4169) themagickoala
- Improve markdown transformers (#3886) Godefroy
- Iterate through the live NodeList instead of copying to an array in $generateNodesFromDOM (#4164) Acy Watson
- Bump Excalidraw to v0.14.2 (#4153) Ivaylo Pavlov
- Fix table stealing selectionchange (#4162) Gerard Rovira
- Improve Documentation #2845 - lexical/selection (#4140) Harry Sanders
- UX: Floating link editor: better positioning (#4158) Alessio Gravili
- DecoratorNode not disabling placeholder at root (#4147) Harry Sanders
- Color picker - fixes #4127 (#4146) Harry Sanders
- Validate against infinite loop in ListItemNode.setIndent (#4120) Acy Watson
- Paste merged celled table (#4116) Gerard Rovira
- Add md import/export tests, fix numbered lists pasting (#4123) Maksim Horbachevsky
- Bump webpack from 5.75.0 to 5.76.0 (#4128) dependabot[bot]
- fix: drag-over event on windows (#4125) 子瞻 Luci
- Remove link preview (#4122) John Flockton
- Add a function to create a LinkMatcher based on a RegExp (#3972) Karibash
- Revise padding for smaller res (#4112) Gerard Rovira
- Catch failures in parseEditorState (#4109) Acy Watson
- Improve Documentation #2845 - lexical/list (#4107) Harry Sanders
- Fix tables Collab E2E (#4117) Gerard Rovira
- Fix ShadowRoot + X insertNode (#4115) Gerard Rovira
- Overflow of logos of action items in Lexical Playground (#4096) 7gaurab_khanal
- Remove columns w/ span support (#4093) Gerard Rovira
- Remove rows w/ span support (#4078) Gerard Rovira
- Table insert column w/ span support (#4074) Gerard Rovira
- Table insert row w/ span support (#4063) Gerard Rovira
- Use broader return types in
HorizontalRuleNode
(#4097) Chris Montrois - Add focus tag to editor.focus (#4092) Dragoș Străinu
- Improve Documentation #2845 - lexical/utils (#4047) Harry Sanders
- Fix toolbars that shouldn't appear in certain cases (#4077) Warren19
- Fixed reference to old
addUpdateListener
method in transforms doc (#4094) Kevin Ansfield - Pass tags to onChange for LexicalOnChangePlugin (#4091) Dragoș Străinu
- Fix tables E2E (#4090) John Flockton
- Change default indent to 40px (#4025) EgonBolton
- Update CODEOWNERS (#4089) John Flockton
- Updated InsertTableDialog UX (#4082) Brandon
- Export getNearestEditorFromDOMNode (#4079) Gerard Rovira
- Fix unresponsive resize handle in Safari (#4081) Brandon
- Sticky toolbar to assist in editing large content (#4076) Brandon
- Fix table RangeSelection test (#4061) Gerard Rovira
- Trim table e2e assert (#4060) Gerard Rovira
v0.8.1
- Clone objects from the CSS cache before mutating them (#3945) Brian Birtles
- added docsfeature-button in lexical playground issue#3918 (#3935) Mohan Sai Potla
- fix: change from to (#3942) Asim Kattum Thazha
- Added Chinese character support for native webkit (#3846) Annabelle Almås
- Fix autocapitalization (#3881) Gerard Rovira
- Expand the actionable empty playground editor text area via flex (#3883) Brandon
- Fix toggling styles on collapsed selections with (#3922) Brian Birtles
- Remove condition for history merge on null prev selection (#3914) Acy Watson
- fix: change tablecell return type for TableCellNode (#3925) Sebastien Ahkrin
- Align types for createEditor APIs (#3928) Acy Watson
- Remove instanceof type checks against HTMLElement and subtypes (#3913) Acy Watson
- Fix small lint error breaking main (#3924) John Flockton
- Update plugins.md (#3926) dimitarbikov
- Added support for Java & C++ (#3884) Vignesh gupta
- Add fixme annotation to flaky collab tests (#3916) Acy Watson
- Playground: fix issue with floating link editor plugin not closing (#3904) Rich
- Further tweaks to format/style selection (#3895) Dominic Gannaway
- Add KEY_DOWN_COMMAND (#3878) Dominic Gannaway
- Remove draggable block plugin on mobile devices (#3875) John Flockton
- Close color pickers on select (#3874) John Flockton
- Fix ContentEditable types for internal use (#3868) John Flockton
- Fix v0.8.9 typo in changelog, should be v0.8.0 (#3869) Joel Besada
v0.7.9
Fix bad import into core (#3861) Dominic Gannaway
Add import/export DOM methods to YouTubeNode and improve EquationNode (#3835) Pervez Ali
Fix backspace regression (#3862) Dominic Gannaway
Fix restoreEditorState (#3856) Dominic Gannaway
Add more configuration for heading in INSERT_TABLE_COMMAND (#3843) Sebastien Ahkrin
perf(playground): load prettier and its parsers on demand in code block (#3637) Shanmughapriyan
v0.8.0
What's Changed
- [0.8] feat: set the update tag from yjs based on the origin by @husseinraoouf in #3608
- [0.8] Apply node transform not only to the original node but also to the overriding node by @saint1991 in #3639
- [0.8] Allow users to customise the indentation of tabs by @thegreatercurve in #3802
- [0.8] Allow the format property to be omitted by @Karibash in #3812
- [0.8] Update ContentEditable types by @thegreatercurve in #3580
- [0.8] List indentation simplified by @egonbolton in #3809
- [0.8] Add style properties to RangeSelection by @trueadm in #3863
- Ensure deletions capture existing formatting by @trueadm in #3867
v0.7.7
- Add list-style-position:inside (#3814) John Flockton
- Fix is selected noop (#3805) James Abels
- Add
createParentElementNode
method on LexicalNode to fix copy/paste issues with clipboard (#3800) John Flockton - Remove innerHTML injection from table selection (#3804) John Flockton
- Better tab handling (#3770) James Abels
- Fix line delete bug in history (#3769) James Abels
- List node export dom with css classes (#3801) Maksim Horbachevsky
- Add highlight TextFormatType (#3583) moy2010
- Add check that target is not the root node (#3797) John Flockton
- Fix $generateJSONFromSelectedNodes with a custom selection passed in (#3749) William Wang
- Improve selection docs (#3798) Dominic Gannaway
- Fix copy paste wrong order in TableOfContents (#3786) Daniel Voigt
- fix(lexical-playground): fix bugs related to ComponentPickerPlugin (#3787) Shota Shimizu
- fix: styling information of paragraph are missing while importing dom (#3771) Rajatava Mukherjee
- Stabilize WeakMap in NodeEventPlugin (#3780) James Abels
- Clean up wonky logic (#3768) Dominic Gannaway
- Remove deprecated modules from core code base (#3729) John Flockton
- Edit CSS to fix marker alignment issue in Safari (#3753) John Flockton
- Move horizontal rule plugin to lexical/react (#3751) John Flockton
- Fix equation transformer in Playground (#3758) Leonardo E. Dominguez
- Fix list normalization on HTML paste. (#3757) Acy Watson
- Remove preventDefault from $copyToClipboardEvent (#3742) John Flockton
- fix(lexical-playground): NewTablePlugin is not draggable (#3747) Shota Shimizu
- Attach checkbox click listeners to editor root element instead of document (#3738) John Flockton
- Update listener in toc (#3726) Stepan Bolotnikov
- Close Excalidraw only on Escape key down (#3737) John Flockton
- fix: type-ahead menu scroll problem (#3672) huang yao
- Tweak CodeNode to allow for overrides (#3731) James Abels
- Discard empty TextNode that can creep into appendJSON (#3695) James Abels
- Add config to updateDOM in ParagraphNode (#3693) James Abels
v0.7.6
- Fix typo in LexicalAutoLinkPlugin code example (#3685) Lorenzo
- updated typo (#3697) Christopher Tran
- Add width and height to serialized image nodes (#3684) Ebad
- fix: force to set TextNode's content when compositionKey is invalid (#3679) Conatus
- Fix: convert html 's' tag to node for strickethrough format is missing (#3673) hun
- Fix bug with ArrowDown/ArrowUp in RichTextPlugin (#3676) Dominic Gannaway
- Remove ts-ignore for createContext (#3671) yf-yang
- Fix bug in reconciler sub-tree text content cache (#3669) Dominic Gannaway
- Hide commenting controls on mobile screen sizes (#3667) Dominic Gannaway
- Fix theming docs (#3668) Dominic Gannaway
- update: change character_limit to be passed as a props( maxlength) (#3649) 0x harry
- Add TabIndentationPlugin to playground. (#3632) Acy Watson
v0.7.5
- selectionChange fix (#3623) Dominic Gannaway
- Add docs for root listener (#3625) Acy Watson
- Add docs re: working with DOM Events (#3624) Acy Watson
- background-repeat: no-repeat; (#3621) Aloento
- Add logic in isSelectionCapturedInDecoratorInput for contentEditables (#3622) Dominic Gannaway
- Fix bug in convertTextFormatElement (#3618) Dominic Gannaway
- Add size limit report (#3600) Maksim Horbachevsky
- Allow focus/blur propagation in useYjsFocusTracking (#3617) Dominic Gannaway
- Add missing changelog for 0.7.4 (#3598) John Flockton
- Fix getSelectedNode logic for forward selection (#3609) moy2010
- Fix typo in documentation (#3614) Jeremy Bernier
- Fix bad rebase (#3607) Dominic Gannaway
- Escape plus signs of the tag in MarkdownImport, fixes #3596 (#3599) Teemu Pöntelin
- Add HTML paste support for checklists (#3579) Acy Watson
- Preserve empty parent during replacement (#3595) Maksim Horbachevsky