We would like to let you know that the 4th developer preview of CKEditor 5 was tagged as version v0.4.0 last week.
You can read about the initial goals of this iteration in https://github.com/ckeditor/ckeditor5-design/issues/163. We have not managed to do everything but this release contains important fixes and some new features anyway.
Selection direction is now correctly rendered. This fixed a lot of issues with resetting the backward selection.
Selection attributes are now correctly rendered. This solves some edge cases in rendering the selection inside empty inline elements (like <strong>[]</strong>) and is another step towards a full support for text composition (IME).
Selection change events were cleaned up — they are now fired only when something has really changed.
And, as usual, many other bugs were fixed as well.
Last but not least, we implemented fake selection support which is important for widgets. We planned to also implement our first widget (in the form of the image feature), but this has to be moved to the next iteration.
Clipboard Support
We implemented the clipboard feature which brings basic support for pasting. The feature uses the new DataController.insert() method which, of course ;), filters out the content before inserting it into the data model.
Since the clipboard feature uses DataTransfer, there is no support for pasting HTML in Safari yet. However, we asked the WebKit team to fix this issue and it was closed immediately. Thanks!
In the next iteration we plan to work on the stability of the content filtering mechanism. Filtering is based on the view-to-model conversion logic (which is meant to drop everything that a certain feature does not handle) and so far we have been writing converters only with allowed content in mind. It is now time to write tests and improvements for the pessimistic scenarios.
One which supports block formatting (like headings and lists).
The other one which handles inline formatting (bold, italic, etc).
This feature is predefined to create e.g. a heading when you type # at the beginning of a block or bold the text between ** characters. The engines can also be configured to apply different formats on different "triggers".
The change done by the autoformatter can, of course, be undone if the user did not intend to make it.
Focus tracker was implemented. Tracking focus is an important aspect of an accessible UI. The editor must control whether the focus is still inside it or was moved out.
It is now possible to use views in templates. It is an important UI framework improvement which lead us to a refactoring that we have just finished in iteration 5.
There are no better changes than removing the code so we removed the load module. It was meant to simplify loading features, but it has been working around different module system limitations, so it was a bigger problem than gain.
Sample
We updated the basic CKEditor 5 sample that you can play with. Check out the developer preview of CKEditor 5 (version 0.4.0) on the CKEditor 5 GitHub.io page.
We would like to let you know that the 4th developer preview of CKEditor 5 was tagged as version v0.4.0 last week.
You can read about the initial goals of this iteration in https://github.com/ckeditor/ckeditor5-design/issues/163. We have not managed to do everything but this release contains important fixes and some new features anyway.
Engine Improvements
Selection handling improvements:
<strong>[]</strong>
) and is another step towards a full support for text composition (IME).Other improvements:
Last but not least, we implemented fake selection support which is important for widgets. We planned to also implement our first widget (in the form of the image feature), but this has to be moved to the next iteration.
Clipboard Support
We implemented the clipboard feature which brings basic support for pasting. The feature uses the new
DataController.insert()
method which, of course ;), filters out the content before inserting it into the data model.Since the clipboard feature uses DataTransfer, there is no support for pasting HTML in Safari yet. However, we asked the WebKit team to fix this issue and it was closed immediately. Thanks!
In the next iteration we plan to work on the stability of the content filtering mechanism. Filtering is based on the view-to-model conversion logic (which is meant to drop everything that a certain feature does not handle) and so far we have been writing converters only with allowed content in mind. It is now time to write tests and improvements for the pessimistic scenarios.
Package: https://github.com/ckeditor/ckeditor5-clipboard
Autoformatting
We implemented the autoformat feature which has two engines:
This feature is predefined to create e.g. a heading when you type
#
at the beginning of a block or bold the text between**
characters. The engines can also be configured to apply different formats on different "triggers".The change done by the autoformatter can, of course, be undone if the user did not intend to make it.
Package: https://github.com/ckeditor/ckeditor5-autoformat
Other Changes
load
module. It was meant to simplify loading features, but it has been working around different module system limitations, so it was a bigger problem than gain.Sample
We updated the basic CKEditor 5 sample that you can play with. Check out the developer preview of CKEditor 5 (version 0.4.0) on the CKEditor 5 GitHub.io page.