mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-02-24 09:13:24 +01:00
38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
# Operations
|
|
|
|
Operations are the granular, low-level actions that occur while invoking commands and transforms. A single high-level command could result in many low-level operations being applied to the editor.
|
|
|
|
Unlike commands, operations aren't extendable. Slate's core defines all of the possible operations that can occur on a richtext document. For example:
|
|
|
|
```javascript
|
|
editor.apply({
|
|
type: 'insert_text',
|
|
path: [0, 0],
|
|
offset: 15,
|
|
text: 'A new string of text to be inserted.',
|
|
})
|
|
|
|
editor.apply({
|
|
type: 'remove_node',
|
|
path: [0, 0],
|
|
node: {
|
|
text: 'A line of text!',
|
|
},
|
|
})
|
|
|
|
editor.apply({
|
|
type: 'set_selection',
|
|
properties: {
|
|
anchor: { path: [0, 0], offset: 0 },
|
|
},
|
|
newProperties: {
|
|
anchor: { path: [0, 0], offset: 15 },
|
|
},
|
|
})
|
|
```
|
|
|
|
Under the covers Slate converts complex commands into the low-level operations and applies them to the editor automatically, so you rarely have to think about them.
|
|
|
|
> 🤖 Slate's editing behaviors being defined as operations is what makes things like collaborative editing possible, because each change is easily define-able, apply-able, compose-able and even undo-able!
|
|
|