New features
- Block ids now displayed in DOM via a data-id attribute. Could be useful for plugins that want to access a Block's element by id.
- Blocks API — The
blocks.convert(blockId, newType)
API method was added. It allows to convert existing Block to a Block of another type. - Blocks API — The
blocks.insertMany()
API method added. It allows to insert several Blocks to the specified index.
Improvements
- UX — The Delete keydown at the end of the Block will now work opposite a Backspace at the start. Next Block will be removed (if empty) or merged with the current one.
- UX — The Delete keydown will work like a Backspace when several Blocks are selected.
- UX — If we have two empty Blocks, and press Backspace at the start of the second one, the previous will be removed instead of the current.
- Shortcuts — Tools shortcuts could be used to convert one Block to another.
- UI — Tools shortcuts displayed in the Conversion Toolbar
- UI — Initialization Loader has been removed.
- Styles — Selection style won't override your custom style for
::selection
outside the editor. - Performance — Performance optimizations: initialization speed increased,
blocks.render()
API method optimized. Big documents will be displayed 8x faster. - DX — "Editor saving" log removed
- DX — "I'm ready" log removed
- UI — The stub-block style is simplified.
- UI — If some Block's tool throws an error during construction, we will show Stub block instead of skipping it during render
- onChange — Call of
blocks.clear()
now will trigger onChange with "block-removed" event for all removed blocks. - Blocks API — The
blocks.clear()
now can be awaited. - Types —
BlockMutationType
andBlockMutationEvent
types exported - Blocks API —
blocks.update(id, data)
now can accept partial data object — it will update only passed properties, others will remain the same. - onChange —
blocks.update(id, data)
now will trigger onChange with onlyblock-change
event. - Blocks API —
blocks.update(id, data)
will return a promise with BlockAPI object of the changed block.