Operation Types
Operation
对象定义了底层指令,用来 Slate 编辑其应用更改到其内部状态。将所有的更改表示为操作是允许 Slate 编辑器轻松实现历史记录、写作和其他功能的原因。
- Operation object
- Operation subtypes
Node Operations
Node operations operate on Node
objects.
// insert a new `Node`
type InsertNodeOperation = {
type: 'insert_node'
path: Path
node: Node
}
// merge two `Node` objects
type MergeNodeOperation = {
type: 'merge_node'
path: Path
position: number
properties: Partial<Node>
}
// move `Node` from one path to another
type MoveNodeOperation = {
type: 'move_node'
path: Path
newPath: Path
}
// Remove a `Node`
type RemoveNodeOperation = {
type: 'remove_node'
path: Path
node: Node
}
// Set properties of a `Node`
type SetNodeOperation = {
type: 'set_node'
path: Path
properties: Partial<Node>
newProperties: Partial<Node>
}
// Split a node into two separate `Node` objects
type SplitNodeOperation = {
type: 'split_node'
path: Path
position: number
properties: Partial<Node>
}
export type NodeOperation =
| InsertNodeOperation
| MergeNodeOperation
| MoveNodeOperation
| RemoveNodeOperation
| SetNodeOperation
| SplitNodeOperation
Text Operations
Text operations operate on Text
objects only.
Note: Text
objects are Node
objects so you can use Node
operations on Text
objects.
// insert text into an existing `Text` node
type InsertTextOperation = {
type: 'insert_text'
path: Path
offset: number
text: string
}
// remove text from an existing `Text` node
type RemoveTextOperation = {
type: 'remove_text'
path: Path
offset: number
text: string
}
export type TextOperation = InsertTextOperation | RemoveTextOperation
Selection Operation
Operation to set or unset a selection Range
.
type SetSelectionOperation =
| {
type: 'set_selection'
properties: null
newProperties: Range
}
| {
type: 'set_selection'
properties: Partial<Range>
newProperties: Partial<Range>
}
| {
type: 'set_selection'
properties: Range
newProperties: null
}
export type SelectionOperation = SetSelectionOperation
Base Operation
The combination of all operation types.
export type BaseOperation = NodeOperation | SelectionOperation | TextOperation