TypeCellOS / BlockNote

A React Rich Text Editor that's block-based (Notion style) and extensible. Built on top of Prosemirror and Tiptap.
https://www.blocknotejs.org/
Mozilla Public License 2.0
5.97k stars 391 forks source link

Bug: TipTap's `liftListItem` causing error in block key handlers #73

Open matthewlipski opened 1 year ago

matthewlipski commented 1 year ago

For this particular nesting pattern:

block1
|  block2
|  |  block3
|  |  |  block4
|  block5

With the cursor at the start of block2, attempting to un-indent the block using Backspace or Shift+Tab will result in the following error: Uncaught TransformError: Invalid content for node block. This seems to be an issue with TipTap's liftListItem function, which is used in both key handlers. There are definitely other situations where this happens, the example above is just one case.

It's probably worth mentioning this issue was present before PR #64, so it's almost certainly something going wrong within liftListItem.

abrgr commented 1 year ago

The issue here is that liftListItem attempts to create a block with blockContent followed by two blockGroups. I am experimenting with changing the block schema to allow "blockContent blockGroup*" instead of "blockContent blockGroup?". Can you see any reason that this would be a bad idea to fix this issue? The more straightforward alternative is to collapse the nested blockGroups into one blockGroup within a custom liftListItem.

avipl commented 4 months ago

@abrgr Hey! did you get chance to work on this issue? or is there any quick workaround for it?

matthewlipski commented 1 month ago

Wanted to fix this in a bug fix release recently but couldn't get it done in time, see #797