You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/examples/experiments/mermaid.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ modified_at: 2023-06-14
12
12
13
13
You can create flowcharts and diagrams in CKEditor 5 thanks to the experimental integration with the [Mermaid](https://mermaid.js.org/) library. Mermaid uses a Markdown-inspired syntax to create and dynamically modify flowcharts, Gantt diagrams, pie or quadrant charts, graphs, mindmaps, and more.
14
14
15
-
The example below lets you test creating diagrams and flowcharts right during the content creation — no more screenshots that need to be re-created and re-uploaded each time something needs a change! You can also check out a live implementation in [GitHub Writer](https://ckeditor.com/blog/github-writer-now-available-with-mermaid-support/).
15
+
The example below lets you test creating diagrams and flowcharts right during the content creation – no more screenshots that need to be re-created and re-uploaded each time something needs a change! You can also check out a live implementation in [GitHub Writer](https://ckeditor.com/blog/github-writer-now-available-with-mermaid-support/).
Remember, if some element or attribute does not have declared converters (whether by the dedicated feature or {@link features/html/general-html-support General HTML support) plugin then those won't get inserted.
171
+
Remember, if some element or attribute does not have declared converters (whether by the dedicated feature or {@link features/general-html-support General HTML support}) plugin then those will not get inserted.
172
172
173
173
### How to focus the editor?
174
174
@@ -293,7 +293,7 @@ for ( const range of wordRanges ) {
293
293
}
294
294
```
295
295
296
-
### How to listen on a doubleclick (e.g. link elements)?
296
+
### How to listen on a double-click (e.g. link elements)?
297
297
298
298
```js
299
299
// Add observer for double click and extend a generic DomEventObserver class by a native DOM dblclick event:
Copy file name to clipboardExpand all lines: docs/examples/index.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ If you need even more, try our experimental plugins, like the integration of the
34
34
35
35
## How-tos
36
36
37
-
There come times when you don't need deep-dive guides, elaborate solutions, and complicated examples. Sometimes, you just need to know how to set the height of CKEditor 5. Or, maybe you want to learn how to focus the editor? This is what the {@link examples/how-tos How-to} section is for!
37
+
There come times when you do not need deep-dive guides, elaborate solutions, and complicated examples. Sometimes, you just need to know how to set the height of CKEditor 5. Or, maybe you want to learn how to focus the editor? This is what the {@link examples/how-tos How-to} section is for!
Copy file name to clipboardExpand all lines: docs/features/image-upload.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ order: 10
8
8
{@snippet features/build-image-upload-source}
9
9
# Image upload overview
10
10
11
-
Inserting {@link features/images-overview images} into content created with CKEditor 5 is a very common task. In a properly configured rich-text editor, there are several ways for the end user to insert images:
11
+
Inserting {@link features/images-overview images} into content created with CKEditor 5 is quite a common task. In a properly configured rich-text editor, there are several ways for the end user to insert images:
12
12
13
13
***Pasting** an image from the clipboard.
14
14
***Dragging** a file from the file system.
@@ -41,7 +41,7 @@ Except for pasting URLs to images, all other solutions mentioned above require t
41
41
42
42
### CKBox
43
43
44
-
CKBox is the most complete solution for not just image upload but also file management in CKEditor 5.
44
+
CKBox is the ultimate solution for not just image upload but also file management in CKEditor 5.
45
45
46
46
It is a modern file uploader with a clean interface, automatic support for responsive images, and top-notch UX. It also provides editing capabilities like cropping, rotating, or flipping.
The {@link features/base64-upload-adapter Base64 upload feature} converts images inserted into the editor into [Base64 strings](https://en.wikipedia.org/wiki/Base64) in the {@link installation/getting-started/getting-and-setting-data editor output}.
74
74
75
75
<info-boxwarning>
76
-
Please remember that while `Base64` upload is a very easy solution, it is also highly inefficient. The image file itself is kept as data in the database, generating a much heavier data load and higher transfer. We recommend using alternative ways to upload images into CKEditor 5.
76
+
Please remember that while `Base64` upload is an easy solution, it is also highly inefficient. The image file itself is kept as data in the database, generating a much heavier data load and higher transfer. We recommend using alternative ways to upload images into CKEditor 5.
77
77
</info-box>
78
78
79
79
{@link features/base64-upload-adapter **Learn how to use Base64–encoded images in CKEditor 5**}.
Copy file name to clipboardExpand all lines: docs/features/index.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ Rich text would not be rich without images. You can upload them, caption them, s
41
41
42
42
An essential feature for online content are {@link features/link links} {@icon@ckeditor/ckeditor5-link/theme/icons/link.svg Link} - these can be easily pasted, changed and attributed.
43
43
44
-
Provide clear and accessible data using {@link features/tables tables} {@icon@ckeditor/ckeditor5-table/theme/icons/table.svg Table} (you can even nest them to create advanced layouts), ordered {@icon@ckeditor/ckeditor5-list/theme/icons/numberedlist.svg Numbered List} and unordered {@link features/lists lists} {@icon@ckeditor/ckeditor5-list/theme/icons/bulletedlist.svg} Bulleted List with various markers to choose from and {@link features/todo-lists to-do lists} {@icon@ckeditor/ckeditor5-list/theme/icons/todolist.svg Todo List}. Use {@link features/indent indents and outdents} {@icon@ckeditor/ckeditor5-indent/theme/icons/indent.svg Indent} as well as {@link features/block-quote block quotes} {@icon@ckeditor/ckeditor5-core/theme/icons/quote.svg Quote} to structure the content and draw the reader's attention to it.
44
+
Provide clear and accessible data using {@link features/tables tables} {@icon@ckeditor/ckeditor5-table/theme/icons/table.svg Table} (you can even nest them to create advanced layouts), ordered {@icon@ckeditor/ckeditor5-list/theme/icons/numberedlist.svg Numbered List} and unordered {@link features/lists lists} {@icon@ckeditor/ckeditor5-list/theme/icons/bulletedlist.svg} Bulleted List with various markers to choose from and {@link features/todo-lists to-do lists} {@icon@ckeditor/ckeditor5-list/theme/icons/todolist.svg To-do List}. Use {@link features/indent indents and outdents} {@icon@ckeditor/ckeditor5-indent/theme/icons/indent.svg Indent} as well as {@link features/block-quote block quotes} {@icon@ckeditor/ckeditor5-core/theme/icons/quote.svg Quote} to structure the content and draw the reader's attention to it.
45
45
46
46
Enrich you content further by {@link features/html-embed embedding HTML code} {@icon@ckeditor/ckeditor5-html-embed/theme/icons/html.svg HTML} - this one is especially useful for webmasters. If you need to present code instead of employing it - use the {@link features/code-blocks code block} {@icon@ckeditor/ckeditor5-code-block/theme/icons/codeblock.svg Code Block} that lets you produce code listing with a syntax highlight, too!
You can also easily track the progress and changes done in the content with the {@link features/revision-history revision history feature} {@icon@ckeditor/ckeditor5-core/theme/icons/history.svg Revision history}. This modern and robust document versioning tool lets you create named versions, compare changes, and restore previous document versions at ease, tracking all progress — also when multiple editors work together.
62
+
You can also easily track the progress and changes done in the content with the {@link features/revision-history revision history feature} {@icon@ckeditor/ckeditor5-core/theme/icons/history.svg Revision history}. This modern and robust document versioning tool lets you create named versions, compare changes, and restore previous document versions at ease, tracking all progress – also when multiple editors work together.
If you need to share the document outside your team, use the {@link features/export-pdf export to PDF feature} {@icon@ckeditor/ckeditor5-export-pdf/theme/icons/exportpdf.svg Export to PDF} to produce industry standard, portable, cross-platform final files. If you need to work further on the document, choose the {@link features/export-word export to Word feature} {@icon@ckeditor/ckeditor5-export-word/theme/icons/exportword.svg Export to Word} instead — and keep your comments and changes in the resulting document, ready to be edited further. These two are accompanied by the {@link features/pagination pagination feature} {@icon@ckeditor/ckeditor5-pagination/theme/icons/arrow-up.svg Previous page}{@icon@ckeditor/ckeditor5-pagination/theme/icons/arrow-down.svg Next page}, to ensure all produced documents will always look the way they should.
68
+
If you need to share the document outside your team, use the {@link features/export-pdf export to PDF feature} {@icon@ckeditor/ckeditor5-export-pdf/theme/icons/exportpdf.svg Export to PDF} to produce industry standard, portable, cross-platform final files. If you need to work further on the document, choose the {@link features/export-word export to Word feature} {@icon@ckeditor/ckeditor5-export-word/theme/icons/exportword.svg Export to Word} instead – and keep your comments and changes in the resulting document, ready to be edited further. These two are accompanied by the {@link features/pagination pagination feature} {@icon@ckeditor/ckeditor5-pagination/theme/icons/arrow-up.svg Previous page}{@icon@ckeditor/ckeditor5-pagination/theme/icons/arrow-down.svg Next page}, to ensure all produced documents will always look the way they should.
command.value=true; // -> 'value has changed from undefined to true'
247
247
```
248
248
249
-
Observables have one more feature which is widely used by the editor (especially in the UI library) — the ability to bind the value of one object's property to the value of some other property or properties (of one or more objects). This, of course, can also be processed by callbacks.
249
+
Observables have one more feature which is widely used by the editor (especially in the UI library) – the ability to bind the value of one object's property to the value of some other property or properties (of one or more objects). This, of course, can also be processed by callbacks.
250
250
251
251
Assuming that `target` and `source` are observables and that used properties are observable:
Copy file name to clipboardExpand all lines: docs/framework/architecture/editing-engine.md
+10-10Lines changed: 10 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ The editing engine implements an MVC architecture. The shape of it is not enforc
18
18
19
19
[{@img assets/img/framework-architecture-engine-diagram.png Diagram of the engine's MVC architecture.}](%BASE_PATH%/assets/img/framework-architecture-engine-diagram.png)
20
20
21
-
What you can see, are three layers: **model**, **controller** and **view**. There is one **model document** which is {@link framework/deep-dive/conversion/intro **converted**} into separate views — the [**editing view**](#editing-pipeline) and the [**data view**](#data-pipeline). These two views represent, respectively, the content that the user is editing (the DOM structure that you see in the browser) and the editor input and output data (in a format that the plugged data processor understands). Both views feature virtual DOM structures (custom, DOM-like structures) on which converters and features work and which are then **rendered** to the DOM.
21
+
What you can see, are three layers: **model**, **controller** and **view**. There is one **model document** which is {@link framework/deep-dive/conversion/intro **converted**} into separate views – the [**editing view**](#editing-pipeline) and the [**data view**](#data-pipeline). These two views represent, respectively, the content that the user is editing (the DOM structure that you see in the browser) and the editor input and output data (in a format that the plugged data processor understands). Both views feature virtual DOM structures (custom, DOM-like structures) on which converters and features work and which are then **rendered** to the DOM.
22
22
23
23
The green blocks are the code introduced by editor features (plugins). These features control what changes are made to the model, how they are converted to the view and how the model needs to be changed based on fired events (the view's and model's ones).
Text styles such as "bold" and "italic" are kept in the model not as elements but as text attributes (think — like element attributes). The following DOM structure:
81
+
Text styles such as "bold" and "italic" are kept in the model not as elements but as text attributes (think – like element attributes). The following DOM structure:
82
82
83
83
```html
84
84
<p>
@@ -109,7 +109,7 @@ Such representation of inline text styling allows to significantly reduce the co
109
109
</p>
110
110
```
111
111
112
-
and you have a selection before the letter `"b"` (`"Foo ^bar"`), is this position inside or outside `<strong>`? If you use [native DOM Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection), you may get both positions — one anchored in `<p>` and the other anchored in `<strong>`. In CKEditor 5 this position translates exactly to `"Foo ^bar"`.
112
+
and you have a selection before the letter `"b"` (`"Foo ^bar"`), is this position inside or outside `<strong>`? If you use [native DOM Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection), you may get both positions – one anchored in `<p>` and the other anchored in `<strong>`. In CKEditor 5 this position translates exactly to `"Foo ^bar"`.
113
113
114
114
### Selection attributes
115
115
@@ -180,7 +180,7 @@ This information is then used by the features and the engine to make decisions o
180
180
* To which elements the heading feature can be applied (which blocks can be turned to headings and which elements are blocks in the first place).
181
181
* Which elements can be wrapped with a block quote.
182
182
* Whether the bold button is enabled when the selection is in a heading (and whether the text in this heading can be bolded).
183
-
* Where the selection can be placed (which is — only in text nodes and on object elements).
183
+
* Where the selection can be placed (which is – only in text nodes and on object elements).
184
184
* etc.
185
185
186
186
The schema is, by default, configured by editor plugins. It is recommended that every editor feature comes with rules that enable and preconfigure it in the editor. This will make sure that the plugin user can enable it without worrying to re-configure their schema.
@@ -197,7 +197,7 @@ Let's again take a look at the editing engine's architecture:
197
197
198
198
[{@img assets/img/framework-architecture-engine-diagram.png Diagram of the engine's MVC architecture.}](%BASE_PATH%/assets/img/framework-architecture-engine-diagram.png)
199
199
200
-
So far, we talked about the topmost layer of this diagram — the model. The role of the model layer is to create an abstraction over the data. Its format was designed to allow storing and modifying the data in the most convenient way, while enabling implementation of complex features. Most features operate on the model (read from it and change it).
200
+
So far, we talked about the topmost layer of this diagram – the model. The role of the model layer is to create an abstraction over the data. Its format was designed to allow storing and modifying the data in the most convenient way, while enabling implementation of complex features. Most features operate on the model (read from it and change it).
201
201
202
202
The view, on the other hand, is an abstract representation of the DOM structure which should be presented to the user (for editing) and which should (in most cases) represent the editor's input and output (i.e. the data returned by `editor.getData()`, the data set by `editor.setData()`, pasted content, etc.).
203
203
@@ -242,7 +242,7 @@ Additionally, you can define {@link module:engine/view/element~Element#getCustom
242
242
243
243
* Whether an element is a widget (added by {@link module:widget/utils~toWidget `toWidget()`}).
244
244
* How an element should be marked when a [marker](#markers) highlights it.
245
-
* Whether an element belongs to a certain feature — if it is a link, progress bar, caption, etc.
245
+
* Whether an element belongs to a certain feature – if it is a link, progress bar, caption, etc.
* {@link module:engine/view/downcastwriter~DowncastWriter} — available in the `change()` blocks, used during downcasting the model to the view. It operates on a "semantic view" so a view structure which differentiates between different types of elements (see [Element types and custom data](#element-types-and-custom-data)).
273
-
* {@link module:engine/view/upcastwriter~UpcastWriter} — a writer to be used when pre-processing the "input" data (e.g. pasted content) which happens usually before the conversion (upcasting) to the model. It operates on ["non-semantic views"](#non-semantic-views).
272
+
* {@link module:engine/view/downcastwriter~DowncastWriter} – available in the `change()` blocks, used during downcasting the model to the view. It operates on a "semantic view" so a view structure which differentiates between different types of elements (see [Element types and custom data](#element-types-and-custom-data)).
273
+
* {@link module:engine/view/upcastwriter~UpcastWriter} – a writer to be used when pre-processing the "input" data (e.g. pasted content) which happens usually before the conversion (upcasting) to the model. It operates on ["non-semantic views"](#non-semantic-views).
274
274
</info-box>
275
275
276
276
### Positions
@@ -365,8 +365,8 @@ Let's take a look at the diagram of the engine's MVC architecture and see where
365
365
{@link framework/deep-dive/conversion/downcast#downcast-pipelines **Editing downcasting**} is a bit different process than the other two.
366
366
367
367
* It takes place in the "editing pipeline" (the left branch of the diagram).
368
-
* It does not have its counterpart — there is no *editing upcasting* because all user actions are handled by editor features by listening to [view events](#observers), analyzing what happened and applying necessary changes to the model. Hence, this process does not involve conversion.
369
-
* Unlike {@link module:engine/controller/datacontroller~DataController} (which handles the *data pipeline*), {@link module:engine/controller/editingcontroller~EditingController} maintains a single instance of the {@link module:engine/view/document~Document} view document's for its entire life. Every change in the model is converted to changes in that view so changes in that view can then be rendered to the DOM (if needed — i.e. if the DOM actually differs from the view at this stage).
368
+
* It does not have its counterpart – there is no *editing upcasting* because all user actions are handled by editor features by listening to [view events](#observers), analyzing what happened and applying necessary changes to the model. Hence, this process does not involve conversion.
369
+
* Unlike {@link module:engine/controller/datacontroller~DataController} (which handles the *data pipeline*), {@link module:engine/controller/editingcontroller~EditingController} maintains a single instance of the {@link module:engine/view/document~Document} view document's for its entire life. Every change in the model is converted to changes in that view so changes in that view can then be rendered to the DOM (if needed – i.e. if the DOM actually differs from the view at this stage).
0 commit comments