What is @ckeditor/ckeditor5-editor-classic?
@ckeditor/ckeditor5-editor-classic is a classic editor build for CKEditor 5, which provides a rich text editor with a wide range of features for content creation. It is highly customizable and can be extended with various plugins to enhance its functionality.
What are @ckeditor/ckeditor5-editor-classic's main functionalities?
Basic Text Editing
This code initializes a basic instance of the classic editor, allowing users to perform standard text editing operations such as typing, formatting, and styling text.
const ClassicEditor = require('@ckeditor/ckeditor5-editor-classic/src/classiceditor');
ClassicEditor.create(document.querySelector('#editor'))
.then(editor => {
console.log('Editor was initialized', editor);
})
.catch(error => {
console.error(error);
});
Adding Plugins
This code demonstrates how to add plugins to the classic editor. In this example, the 'Bold' and 'Italic' plugins are added, and the toolbar is configured to include buttons for these functionalities.
const ClassicEditor = require('@ckeditor/ckeditor5-editor-classic/src/classiceditor');
const Essentials = require('@ckeditor/ckeditor5-essentials/src/essentials');
const Bold = require('@ckeditor/ckeditor5-basic-styles/src/bold');
const Italic = require('@ckeditor/ckeditor5-basic-styles/src/italic');
ClassicEditor.create(document.querySelector('#editor'), {
plugins: [Essentials, Bold, Italic],
toolbar: ['bold', 'italic']
})
.then(editor => {
console.log('Editor with plugins was initialized', editor);
})
.catch(error => {
console.error(error);
});
Customizing Toolbar
This code shows how to customize the toolbar of the classic editor. The toolbar is configured to include specific items such as 'heading', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'undo', and 'redo'.
const ClassicEditor = require('@ckeditor/ckeditor5-editor-classic/src/classiceditor');
ClassicEditor.create(document.querySelector('#editor'), {
toolbar: {
items: [
'heading',
'|',
'bold',
'italic',
'link',
'bulletedList',
'numberedList',
'|',
'undo',
'redo'
]
}
})
.then(editor => {
console.log('Editor with custom toolbar was initialized', editor);
})
.catch(error => {
console.error(error);
});
Other packages similar to @ckeditor/ckeditor5-editor-classic
tinymce
TinyMCE is a popular rich text editor that offers a wide range of features similar to CKEditor. It is highly customizable and supports various plugins for extending its functionality. Compared to @ckeditor/ckeditor5-editor-classic, TinyMCE has a different API and plugin system but offers comparable text editing capabilities.
quill
Quill is a modern rich text editor built for compatibility and extensibility. It provides a clean API and a modular architecture, making it easy to customize and extend. While Quill offers a different approach to text editing compared to @ckeditor/ckeditor5-editor-classic, it is also a powerful tool for creating rich text content.
draft-js
Draft.js is a JavaScript rich text editor framework developed by Facebook. It provides a set of tools for building rich text editors with React. Unlike @ckeditor/ckeditor5-editor-classic, Draft.js is more of a framework than a ready-to-use editor, offering more flexibility for developers to create custom text editing experiences.
43.3.0 (October 29, 2024)
We are happy to announce the release of CKEditor 5 v43.3.0.
Release highlights
Performance improvements
We have improved how the editor handles the document structure by making it more reliable and efficient to access specific elements and verify their positions.
- Node index and offset caching: The
Node
and NodeList
elements now cache index and offset values, reducing the need for recalculations and significantly boosting overall performance during model operations. - Selection range validation: The newly implemented
Position#isValid()
method is also utilized to better validate selection ranges, ensuring more consistent behavior in various editing scenarios. - Performance improvements in numbers: The editor now loads content between 3x and, in some cases, up to 6x faster, depending on the type and size of the content. For instance, where a specific 200-page document previously took almost 25 seconds to load, the time has now been reduced to just 3.5 seconds.
We’re committed to ongoing performance enhancements, so you can expect even faster, smoother experience in future updates.
Export to Word watermark support
A new configuration option has been added to include a watermark when exporting documents to Word, providing additional flexibility in document branding and protection.
Notable bug fixes and improvements
- Suggestions retention on revision restore: Suggestions are no longer lost in specific cases when restoring revisions with changes from multiple users. The revision tracking process has been improved to ensure that all operations, including markers, are handled and saved correctly during synchronization. This fix resolves issues where markers were previously not retained, ensuring consistent data handling in collaborative editing scenarios.
- Action dropdown visibility fix: Resolved an issue where the action dropdown remained hidden after permission changes on comments. The dropdown now properly reflects updated permissions, allowing users to interact with the available actions seamlessly.
- AI command enhancements:
- Custom AI Commands are now correctly applied to individual dropdowns when only one group of comments is present, instead of the entire group.
- Empty comment groups no longer render, improving UI clarity.
- Fixed an issue where nested AI command menus would close unexpectedly when used within a balloon toolbar, preventing unintended behavior during selection.
Features
- engine: Introduced the
getChildAtOffset()
method for model.Element
and model.DocumentFragment
. (commit) - engine: Introduced the
Position#isValid()
method to check whether the position exists in the current model tree. (commit) - export-word: Added a configuration setting for adding a watermark to generated documents.
- revision-history: Introduced the
RevisionTracker#getRevisionDocumentData()
and RevisionTracker#getRevisionRootsAttributes()
methods to the public scope of the editor API. You can use them to retrieve document data saved with the revision. - utils: Made
FocusTracker
extendable with other FocusTracker
instances to allow logical focus tracking across separate DOM sub-trees (see #17277). (commit)
Bug fixes
- ai: Empty AI Assistant command groups should not render in the UI.
- ai: The AI Assistant command list should be flat when only one command group is available.
- comments: Fixed an issue where the action dropdown remained hidden when permissions allowing actions on a comment changed.
- engine: The content of an inline object should be handled as a flow root so whitespaces should be trimmed as the content of an inline object element is inside a block element. Closes #17199. (commit)
- image: Handle existing picture element correctly on
sources
downcast. (commit) - link: No longer crash editor after removing link from image when
LinkConfig#addTargetToExternalLinks: true
is set. Closes https://github.com/ckeditor/ckeditor5/issues/17252. (commit) - list-multi-level: Multi-level lists should display correctly in RTL mode for Decoupled Editor.
- pagination: Improved pagination of large tables that are followed by block elements.
- revision-history: Suggestions are no longer lost in some scenarios when restoring revisions in real-time collaboration.
- ui: The dropdown menu component should not cause editor blur if used in a
BalloonToolbar
while the user hovers a nested menu. Closes #17277. (commit) - ui: Made the page unscrollable while the modal is visible. Closes #17093. (commit)
Other changes
- engine: Node index and offset related values are now cached in model
Node
and NodeList
to improve performance. (commit) - link: Exported link and unlink icons from the
ckeditor5-link
package. Closes #17304. (commit) - ui: Disabled dragging support for modal windows in the
Dialog
plugin. Closes #17290. (commit) - ui: Disabled positioning restrictions for modal windows caused by
config.ui.viewportOffset
. Closes #17290. (commit)
Released packages
Check out the Versioning policy guide for more information.
<details>
<summary>Released packages (summary)</summary>
Releases containing new features:
Other releases:
</details>