Back to Plate

操作

docs/api/slate/operation.cn.mdx

1.0.06.3 KB
Original Source

操作(Operation)是 Plate 编辑器用来修改其内部状态的最底层指令。将所有变更表示为操作,使得 Plate 编辑器能够轻松实现历史记录、协作编辑等功能。

typescript
export type Operation<N extends Descendant = Descendant> =
  | NodeOperation<N>
  | SelectionOperation
  | TextOperation;

OperationApi

isNodeOperation

检查一个值是否为 NodeOperation 对象。

<API name="isNodeOperation"> <APIParameters> <APIItem name="value" type="any"> 要检查的值。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果是节点操作则返回 `true`。 </APIReturns> </API>

inverse

反转操作,返回一个新操作,当应用该操作时将完全撤销原始操作。

<API name="inverse"> <APIParameters> <APIItem name="op" type="Operation"> 要反转的操作。 </APIItem> </APIParameters> <APIReturns type="Operation"> 一个能撤销原始操作的新操作。 </APIReturns> </API>

isOperation

检查一个值是否为 Operation 对象。

<API name="isOperation"> <APIParameters> <APIItem name="value" type="any"> 要检查的值。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果是操作则返回 `true`。 </APIReturns> </API>

isOperationList

检查一个值是否为 Operation 对象列表。

<API name="isOperationList"> <APIParameters> <APIItem name="value" type="any"> 要检查的值。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果是操作数组则返回 `true`。 </APIReturns> </API>

isSelectionOperation

检查一个值是否为 SelectionOperation 对象。

<API name="isSelectionOperation"> <APIParameters> <APIItem name="value" type="any"> 要检查的值。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果是选区操作则返回 `true`。 </APIReturns> </API>

isTextOperation

检查一个值是否为 TextOperation 对象。

<API name="isTextOperation"> <APIParameters> <APIItem name="value" type="any"> 要检查的值。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果是文本操作则返回 `true`。 </APIReturns> </API>

类型

Operation

ts
export type Operation<N extends Descendant = Descendant> =
  | NodeOperation<N>
  | SelectionOperation
  | TextOperation;

NodeOperation

节点操作用于修改节点。

ts
export type NodeOperation<N extends Descendant = Descendant> =
  | InsertNodeOperation<N>
  | MergeNodeOperation<N>
  | MoveNodeOperation
  | RemoveNodeOperation<N>
  | SetNodeOperation<N>
  | SplitNodeOperation<N>;

SelectionOperation

选区操作用于修改选区。

ts
export type SelectionOperation = SetSelectionOperation;

TextOperation

文本操作用于修改文本内容。

ts
export type TextOperation = InsertTextOperation | RemoveTextOperation;

InsertNodeOperation

<API name="InsertNodeOperation"> <APIAttributes> <APIItem name="node" type="N"> 要插入的节点。 </APIItem> <APIItem name="path" type="Path"> 插入位置的路径。 </APIItem> <APIItem name="type" type="'insert_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

MergeNodeOperation

<API name="MergeNodeOperation"> <APIAttributes> <APIItem name="path" type="Path"> 要合并节点的路径。 </APIItem> <APIItem name="position" type="number"> 合并位置。 </APIItem> <APIItem name="properties" type="Partial<NodeProps<N>>"> 合并后节点的属性。 </APIItem> <APIItem name="type" type="'merge_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

MoveNodeOperation

<API name="MoveNodeOperation"> <APIAttributes> <APIItem name="newPath" type="Path"> 移动目标路径。 </APIItem> <APIItem name="path" type="Path"> 要移动节点的路径。 </APIItem> <APIItem name="type" type="'move_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

RemoveNodeOperation

<API name="RemoveNodeOperation"> <APIAttributes> <APIItem name="node" type="N"> 要移除的节点。 </APIItem> <APIItem name="path" type="Path"> 节点的路径。 </APIItem> <APIItem name="type" type="'remove_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

SetNodeOperation

<API name="SetNodeOperation"> <APIAttributes> <APIItem name="newProperties" type="Partial<NodeProps<N1>>"> 要设置的新属性。 </APIItem> <APIItem name="path" type="Path"> 节点的路径。 </APIItem> <APIItem name="properties" type="Partial<NodeProps<N2>>"> 旧属性。 </APIItem> <APIItem name="type" type="'set_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

SplitNodeOperation

<API name="SplitNodeOperation"> <APIAttributes> <APIItem name="path" type="Path"> 要拆分节点的路径。 </APIItem> <APIItem name="position" type="number"> 拆分位置。 </APIItem> <APIItem name="properties" type="Partial<NodeProps<N>>"> 拆分后新节点的属性。 </APIItem> <APIItem name="type" type="'split_node'"> 操作类型。 </APIItem> </APIAttributes> </API>

SetSelectionOperation

<API name="SetSelectionOperation"> <APIAttributes> <APIItem name="newProperties" type="Partial<TRange> | TRange | null"> 新选区属性。 </APIItem> <APIItem name="properties" type="Partial<TRange> | TRange | null"> 旧选区属性。 </APIItem> <APIItem name="type" type="'set_selection'"> 操作类型。 </APIItem> </APIAttributes> </API>

InsertTextOperation

<API name="InsertTextOperation"> <APIAttributes> <APIItem name="offset" type="number"> 插入位置的偏移量。 </APIItem> <APIItem name="path" type="Path"> 文本节点的路径。 </APIItem> <APIItem name="text" type="string"> 要插入的文本。 </APIItem> <APIItem name="type" type="'insert_text'"> 操作类型。 </APIItem> </APIAttributes> </API>

RemoveTextOperation

<API name="RemoveTextOperation"> <APIAttributes> <APIItem name="offset" type="number"> 移除位置的偏移量。 </APIItem> <APIItem name="path" type="Path"> 文本节点的路径。 </APIItem> <APIItem name="text" type="string"> 被移除的文本。 </APIItem> <APIItem name="type" type="'remove_text'"> 操作类型。 </APIItem> </APIAttributes> </API>