What is @ckeditor/ckeditor5-editor-multi-root?
@ckeditor/ckeditor5-editor-multi-root is a package that provides a multi-root editor implementation for CKEditor 5. This allows you to create an editor instance that can manage multiple editable areas (roots) within a single editor instance. This is particularly useful for complex applications where you need to manage multiple content areas simultaneously.
What are @ckeditor/ckeditor5-editor-multi-root's main functionalities?
Creating a Multi-Root Editor
This code demonstrates how to create a multi-root editor instance with two editable areas: 'header' and 'content'. The editor is initialized with these two roots, allowing you to manage both areas within a single editor instance.
const MultiRootEditor = require('@ckeditor/ckeditor5-editor-multi-root/src/multirooteditor');
const ClassicEditor = require('@ckeditor/ckeditor5-editor-classic/src/classiceditor');
MultiRootEditor.create({
header: document.querySelector('#header'),
content: document.querySelector('#content')
}).then(editor => {
console.log('Editor was initialized', editor);
}).catch(error => {
console.error(error.stack);
});
Adding Plugins to Multi-Root Editor
This code sample shows how to add plugins to the multi-root editor. In this example, the Essentials, Paragraph, and Bold plugins are added, and the toolbar is configured to include the 'bold' button.
const MultiRootEditor = require('@ckeditor/ckeditor5-editor-multi-root/src/multirooteditor');
const Essentials = require('@ckeditor/ckeditor5-essentials/src/essentials');
const Paragraph = require('@ckeditor/ckeditor5-paragraph/src/paragraph');
const Bold = require('@ckeditor/ckeditor5-basic-styles/src/bold');
MultiRootEditor.create({
header: document.querySelector('#header'),
content: document.querySelector('#content')
}, {
plugins: [ Essentials, Paragraph, Bold ],
toolbar: [ 'bold' ]
}).then(editor => {
console.log('Editor with plugins was initialized', editor);
}).catch(error => {
console.error(error.stack);
});
Accessing and Modifying Editor Data
This code demonstrates how to access and modify the data in different roots of the multi-root editor. You can get the data from a specific root and set new data for a specific root.
const MultiRootEditor = require('@ckeditor/ckeditor5-editor-multi-root/src/multirooteditor');
MultiRootEditor.create({
header: document.querySelector('#header'),
content: document.querySelector('#content')
}).then(editor => {
// Accessing data
const headerData = editor.getData({ rootName: 'header' });
const contentData = editor.getData({ rootName: 'content' });
console.log('Header Data:', headerData);
console.log('Content Data:', contentData);
// Modifying data
editor.setData('<p>New header content</p>', { rootName: 'header' });
editor.setData('<p>New content area</p>', { rootName: 'content' });
}).catch(error => {
console.error(error.stack);
});
Other packages similar to @ckeditor/ckeditor5-editor-multi-root
quill
Quill is a modern WYSIWYG editor built for compatibility and extensibility. While it does not natively support multi-root editing, it offers a highly customizable and extensible architecture that can be adapted for complex use cases. Compared to @ckeditor/ckeditor5-editor-multi-root, Quill is more lightweight but may require additional customization for multi-root functionality.
tinymce
TinyMCE is a popular rich text editor that provides a wide range of features and plugins. It supports multiple instances of editors on the same page but does not natively support a single editor instance managing multiple roots. TinyMCE is highly configurable and offers extensive documentation and community support, making it a robust alternative to @ckeditor/ckeditor5-editor-multi-root for many use cases.
draft-js
Draft.js is a JavaScript rich text editor framework, built for React. It provides a lot of flexibility and control over the editor's behavior and appearance. While it does not offer out-of-the-box multi-root editing, its modular architecture allows developers to implement custom solutions for managing multiple content areas. Draft.js is more of a framework than a ready-to-use editor, offering more control at the cost of requiring more development effort.
43.0.0 (August 7, 2024)
We are happy to announce the release of CKEditor 5 v43.0.0.
Release highlights
Merge fields
The new merge fields feature is a game-changer for creating document templates and other kinds of personalized or dynamic content. Thanks to this feature, you can insert placeholders into your content, indicating where actual values should go. These places are marked in the final content in a distinctive way, making it easy to later process the template and fill it with the actual values. The feature supports a preview mode too - you can define preview data sets, and see how the content will look like when real values are used directly in the editor. The plugin is highly customizable to fit various applications and scenarios. Finally, merge fields are fully integrated with our Export to Word, Export to PDF, and Import from Word features, both when they are used from the editor and via REST API.
We are extremely happy to share with you this highly demanded feature, and we cannot wait to listen to your feedback!
Make sure to visit our builder or documentation to learn more about the feature.
Export to Word V2 as the default version
The V2 version of the export to Word feature introduced significant improvements, optimizations, and fixes. This update enhances the overall performance, making the export process faster and more reliable, especially for large documents. Key improvements include better handling of table borders, automatic detection of Word styles from CSS, and support for more text-related CSS properties, ensuring your documents maintain their intended formatting.
Starting this version, the V2 configuration becomes the default in the ExportWord
plugin. Make sure to migrate your configuration if you are using it.
Improved sidebar accessibility and navigation
We have introduced multiple enhancements to make the sidebar more accessible. Among other improvements, you can now use the <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>E</kbd> keystroke to move focus from the editor marker to the active annotation. When your comment reply is ready, you can quickly submit it using the new <kbd>Ctrl</kbd>+<kbd>Enter</kbd> shortcut. Also, navigation from one annotation to another is now possible by using arrow keys.
The full lists of keyboard supported actions can be reviewed in our Accessibility support guide.
Important bug fixes and improvements
This release brings notable bug fixes and improvements to enhance your editing experience.
- Several improvements have been made to typing in the editor, especially for Android IME and Safari. On Android, issues like duplicated characters and reverse writing effects have been resolved. In Safari, the reverse typing effect after focus change has been fixed.
- A couple of UI improvements:
- We replaced the visual indication of the selected option in dropdowns (blue background) with the checkbox marks to better indicate selected options, aligning visual cues across the toolbar and menu bar.
- All editor types now support the menu bar.
- Additionally, the special characters UI has been moved from a dropdown to a dialog. This unifies the action between the menu bar and toolbar, and also gives content creators quicker access to the always-on-top dialog.
- We have improved the drawing of page break line algorithm to address the pagination feature issues. We also improved the performance of the plugin.
React and Vue integrations updates
We have released new major versions of the React and Vue integrations. In both of them, we have migrated to JavaScript modules (ESM) and rewritten large parts of the codebases to support the latest versions of these frameworks and to follow the latest recommendations for writing the components.
We strongly recommend that you follow the release highlights to update to the latest versions: