docs/api/slate/editor-api.cn.mdx
Editor API 提供了一系列辅助函数,用于查询和操作编辑器状态。
At编辑器中的位置引用。可以是 Location 或 Node。
type At = TLocation | TNode
当传入 Node 时,会使用 editor.api.findPath() 查找其路径。这样您可以通过以下方式引用位置:
示例:
// 使用位置
editor.api.nodes({ at: [0, 0] }) // 路径位置
editor.api.nodes({ at: { path: [0], offset: 0 } }) // 点位置
editor.api.nodes({ at: { anchor: point1, focus: point2 } }) // 范围位置
// 使用节点引用
const node = editor.children[0]
editor.api.nodes({ at: node }) // 内部会查找节点的路径
匹配节点的谓词。谓词可以是:
node 和 path 并返回 boolean 的函数示例:
// 函数谓词
editor.api.nodes({
match: (node) => node.type === 'p'
})
// 对象谓词
editor.api.nodes({
match: { type: 'p' }
})
// 带多个可能值的对象谓词
editor.api.nodes({
match: { type: ['p', 'h1'] }
})
QueryMode查询节点层次结构的模式。
<API name="QueryMode"> <APIOptions type="QueryMode"> <APIItem name="mode" type="'all' | 'highest' | 'lowest'" optional> - `'all'` (默认): 返回所有匹配节点 - `'highest'`: 在节点层次结构中,仅返回最高级别的匹配节点 - `'lowest'`: 在节点层次结构中,仅返回最低级别的匹配节点示例:
```ts
// 给定结构:
// - blockquote (匹配)
// - paragraph (匹配)
// - text
// mode: 'all' 返回 blockquote 和 paragraph
editor.api.nodes({ match: { type: ['blockquote', 'paragraph'] }, mode: 'all' })
// mode: 'highest' 仅返回 blockquote
editor.api.nodes({ match: { type: ['blockquote', 'paragraph'] }, mode: 'highest' })
// mode: 'lowest' 仅返回 paragraph
editor.api.nodes({ match: { type: ['blockquote', 'paragraph'] }, mode: 'lowest' })
```
QueryOptions查询编辑器中节点的通用选项。
<API name="QueryOptions"> <APIOptions type="QueryOptions<V>"> <APIItem name="at" type="At" optional> 查询的起始位置。默认为当前编辑器选区。 </APIItem> <APIItem name="block" type="boolean" optional> 匹配块节点。为 true 时仅匹配块元素。 </APIItem> <APIItem name="empty" type="boolean" optional> 匹配空/非空节点。 - 为 true 时仅匹配空节点 - 为 false 时仅匹配非空节点 </APIItem> <APIItem name="id" type="boolean | string" optional> 按 id 匹配节点。 - 为 true 时匹配所有带 id 的节点 - 为字符串时匹配特定 id 的节点 </APIItem> <APIItem name="match" type="Predicate<NodeIn<V>>" optional> 匹配节点的自定义函数或对象。 - 函数: `(node, path) => boolean` - 对象: 应与节点匹配的键值对 </APIItem> <APIItem name="text" type="boolean" optional> 匹配文本节点。为 true 时仅匹配文本节点。 </APIItem> </APIOptions> </API>editor.apiabove获取文档中位置上方匹配的祖先节点。
<API name="above"> <APIOptions type="EditorAboveOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 通用查询选项。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 查询模式选项。 </APIItem> <APIItem name="voids" type="boolean" optional> 是否在搜索中包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<N> | undefined"> 包含匹配祖先节点及其路径的元组,未找到则返回 `undefined`。 </APIReturns> </API>block获取位置处的块或查找第一个匹配选项的块。
块通常是顶级节点,因此这是检索祖先块的常用方式。
editor.api.block() // 获取选区上方的块
editor.api.block({ above: true }) // 获取选区上方的块
editor.api.block({ at: [0, 0] }) // 获取 [0, 0] 处的块
editor.api.block({ at: [0, 0], above: true }) // 获取 [0] 处的块
editor.api.block({ highest: true }) // 获取选区处最高级别的块
blocks返回所有匹配的块。
<API name="blocks"> <APIOptions type="EditorNodesOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 匹配块的通用查询选项。 </APIItem> <APIItem name="at" type="At | Span" optional> 查询位置。默认为当前选区。 </APIItem> <APIItem name="ignoreNonSelectable" type="boolean" optional> 遍历时是否忽略不可选节点。 </APIItem> <APIItem name="reverse" type="boolean" optional> 是否反向遍历。 </APIItem> <APIItem name="universal" type="boolean" optional> 是否确保操作在所有节点上通用。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 匹配块的查询模式。 </APIItem> <APIItem name="voids" type="boolean" optional> 是否在搜索中包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<ElementIn<V>>[]"> 匹配块节点条目的数组。 </APIReturns> </API>edgeBlocks返回位置上方的边缘块(默认:选区)。
用于获取范围的起始和结束块。
first获取位置处的第一个节点。
<API name="first"> <APIParameters> <APIItem name="at" type="At"> 获取第一个节点的位置。 </APIItem> </APIParameters> <APIReturns type="NodeEntry<DescendantIn<V>> | undefined"> 包含第一个节点及其路径的元组,未找到则返回 undefined。 </APIReturns> </API>fragment获取位置或选区处的片段。
<API name="fragment"> <APIParameters> <APIItem name="at" type="At | null" optional> 提取片段的位置。默认为当前选区。 </APIItem> <APIItem name="options" type="EditorFragmentOptions" optional> 提取和处理片段的选项。 </APIItem> </APIParameters> <APIReturns type="ElementOrTextIn<V>[] | undefined"> 位置处的片段。 </APIReturns> </API>getFragment返回当前选区处的片段。例如在剪切或复制时使用,获取当前选区的片段。
<API name="getFragment"> <APIParameters> <APIItem name="at" type="At" optional> 获取片段的位置。默认为当前选区。 </APIItem> </APIParameters> <APIReturns type="ElementOrTextIn<V>[]"> 当前选区处的片段。 </APIReturns> </API>hasBlocks检查节点是否有块子节点。
<API name="hasBlocks"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素有块子节点则为 true,否则为 false。 </APIReturns> </API>hasInlines检查节点是否有内联和文本子节点。
<API name="hasInlines"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素有内联和文本子节点则为 true,否则为 false。 </APIReturns> </API>hasMark检查选区处标记是否激活。
<API name="hasMark"> <APIParameters> <APIItem name="key" type="keyof MarksIn<V>"> 要检查的标记键。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果当前选区处标记激活则为 true,否则为 false。 </APIReturns> </API>hasPath检查路径是否存在于编辑器中。
<API name="hasPath"> <APIParameters> <APIItem name="path" type="Path"> 要检查的路径。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果路径存在则为 true,否则为 false。 </APIReturns> </API>hasTexts检查节点是否有文本子节点。
<API name="hasTexts"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素有文本子节点则为 true,否则为 false。 </APIReturns> </API>isAt检查位置(点/范围)是否在特定位置。
// 对于范围:
editor.api.isAt({ text: true }) // 检查范围是否在单个文本节点内
editor.api.isAt({ block: true }) // 检查范围是否在单个块内
editor.api.isAt({ blocks: true }) // 检查范围是否跨多个块
editor.api.isAt({ start: true }) // 检查范围是否起始于块起始处
editor.api.isAt({ end: true }) // 检查范围是否结束于块末尾
// 对于点:
editor.api.isAt({ word: true }) // 相对于单词边界检查
editor.api.isAt({ start: true }) // 检查是否在起始处
editor.api.isAt({ end: true }) // 检查是否在末尾
isCollapsed检查选区是否折叠(起始点和结束点相同)。
<API name="isCollapsed"> <APIReturns type="boolean"> 如果选区折叠则为 true,否则为 false。 </APIReturns> </API>isEdge检查点是否是位置的边缘。
<API name="isEdge"> <APIParameters> <APIItem name="point" type="Point"> 要检查的点。 </APIItem> <APIItem name="at" type="At" optional> 要检查的位置。默认为当前选区。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果点是位置的边缘则为 true,否则为 false。 </APIReturns> </API>isEditorEnd检查选区是否在编辑器末尾。
<API name="isEditorEnd"> <APIReturns type="boolean"> 如果选区在编辑器末尾则为 true,否则为 false。 </APIReturns> </API>isEmpty检查元素是否为空,考虑 void 节点。
editor.api.isEmpty() // 检查编辑器是否为空
editor.api.isEmpty(at) // 检查位置处的节点是否为空
editor.api.isEmpty(at, { after: true }) // 检查位置后的文本是否为空
editor.api.isEmpty(at, { block: true }) // 检查位置上方的块是否为空
isEnd检查点是否是位置的结束点。
<API name="isEnd"> <APIParameters> <APIItem name="point" type="Point"> 要检查的点。 </APIItem> <APIItem name="at" type="At" optional> 要检查的位置。默认为当前选区。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果点是位置的结束点则为 true,否则为 false。 </APIReturns> </API>isExpanded检查选区是否展开(起始点和结束点不同)。
<API name="isExpanded"> <APIReturns type="boolean"> 如果选区展开则为 true,否则为 false。 </APIReturns> </API>isNormalizing检查编辑器当前是否在每个操作后规范化。
<API name="isNormalizing"> <APIReturns type="boolean"> 如果编辑器当前正在规范化则为 true,否则为 false。 </APIReturns> </API>isStartCheck if a point is the start point of a location.
<API name="isStart"> <APIParameters> <APIItem name="point" type="Point"> The point to check. </APIItem> <APIItem name="at" type="At" optional> The location to check against. Defaults to current selection. </APIItem> </APIParameters> <APIReturns type="boolean"> True if the point is the start point of the location, false otherwise. </APIReturns> </API>isSelected检查路径是否被当前选区选中。
<API name="isSelected"> <APIParameters> <APIItem name="target" type="Path | TRange"> 要检查的路径或范围。 </APIItem> <APIItem name="options" type="EditorIsSelectedOptions" optional> 检查选区的选项。 </APIItem> </APIParameters> <APIOptions type="EditorIsSelectedOptions"> <APIItem name="contains" type="boolean" optional> 检查选区是否包含整个路径范围。 </APIItem> </APIOptions> <APIReturns type="boolean"> 如果路径被选中则为 true,否则为 false。 </APIReturns> </API>leaf获取位置处的叶子文本节点。
<API name="leaf"> <APIParameters> <APIItem name="at" type="At"> 要获取叶子的位置。 </APIItem> <APIItem name="options" type="EditorLeafOptions" optional> 获取叶子的选项。 </APIItem> </APIParameters> <APIOptions type="EditorLeafOptions"> <APIItem name="depth" type="number" optional> 查找叶子时要遍历的深度。 </APIItem> <APIItem name="edge" type="LeafEdge" optional> 从位置的哪个边缘获取叶子(`'start' | 'end'`)。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<TextIn<V>> | undefined"> 包含叶子文本节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>levels遍历位置处的所有层级。这包括直到根编辑器节点的所有祖先。
<API name="levels"> <APIOptions type="EditorLevelsOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 匹配层级的通用查询选项。 </APIItem> <APIItem name="reverse" type="boolean" optional> 是否反向遍历(自下而上 vs 自上而下)。 </APIItem> <APIItem name="voids" type="boolean" optional> 是否在遍历中包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="Generator<NodeEntry<NodeIn<V>>, void, undefined>"> 为每个祖先层级生成 [node, path] 元组的生成器。 </APIReturns> </API>last获取位置处的最后一个节点。
<API name="last"> <APIParameters> <APIItem name="at" type="At"> 要获取最后一个节点的位置。 </APIItem> <APIItem name="options" type="EditorLastOptions" optional> 获取最后一个节点的选项。 </APIItem> </APIParameters> <APIOptions type="EditorLastOptions"> <APIItem name="level" type="number" optional> 在此层级获取最后一个节点(从0开始)。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<DescendantIn<V>> | undefined"> 包含最后一个节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>mark通过键返回选区标记值。
<API name="mark"> <APIParameters> <APIItem name="key" type="keyof MarksIn<V>"> 标记键。 </APIItem> </APIParameters> <APIReturns type="MarksIn<V>[K] | null | undefined"> 如果存在则返回标记值,如果未设置则为 null,如果存在多个不同的值则为 undefined。 </APIReturns> </API>marks获取当前选区处文本将添加的标记。
<API name="marks"> <APIReturns type="MarksIn<V> | null"> 当前选区处的标记,如果没有标记则为 null。 </APIReturns> </API>next获取文档分支中位置之后的匹配节点。
<API name="next"> <APIOptions type="EditorNextOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 匹配节点的通用查询选项。 </APIItem> <APIItem name="at" type="At | Span" optional> 开始搜索的位置。默认为当前选区。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 匹配节点的查询模式。 </APIItem> <APIItem name="voids" type="boolean" optional> 是否在搜索中包含 void 节点。 </APIItem> <APIItem name="from" type="'after' | 'child'" optional> - `'after'`: 从当前位置之后的点开始 - `'child'`: 从当前路径的第一个子节点开始 </APIItem> </APIOptions> <APIReturns type="NodeEntry<DescendantIn<V>> | undefined"> 包含下一个匹配节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>node获取指定位置的节点或查找第一个匹配选项的节点。
<API name="node"> <APIParameters> <APIItem name="at" type="At" optional> 要获取节点的位置。 </APIItem> <APIItem name="nodeOptions" type="EditorNodeOptions" optional> 获取节点的选项。 </APIItem> </APIParameters> <APIOptions type="EditorNodeOptions"> <APIItem name="depth" type="number" optional> 查找节点时要遍历的深度。 </APIItem> <APIItem name="edge" type="'start' | 'end'" optional> 从位置的哪个边缘获取节点。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<NodeIn<V>> | undefined"> 包含匹配节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>nodes遍历编辑器中所有匹配给定选项的节点。
<API name="nodes"> <APIOptions type="EditorNodesOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 匹配节点的通用查询选项。 </APIItem> <APIItem name="at" type="At | Span" optional> 开始遍历的位置。默认为编辑器选区。 </APIItem> <APIItem name="ignoreNonSelectable" type="boolean" optional> 遍历时是否忽略不可选择的节点。 </APIItem> <APIItem name="reverse" type="boolean" optional> 是否反向遍历。 </APIItem> <APIItem name="universal" type="boolean" optional> 是否确保操作在所有节点上通用。 </APIItem> <APIItem name="mode" type="QueryMode" optional> - `'all'`: 返回所有匹配的节点 - `'highest'`: 返回最高级别的匹配节点 - `'lowest'`: 返回最低级别的匹配节点 </APIItem> <APIItem name="voids" type="boolean" optional> 搜索时是否包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="Generator<NodeEntry<DescendantIn<V>>, void, undefined>"> 为每个匹配节点生成 [node, path] 元组的生成器。 </APIReturns> </API>parent获取位置的父节点。
<API name="parent"> <APIParameters> <APIItem name="at" type="At" optional> 要获取父节点的位置。 </APIItem> <APIItem name="options" type="EditorParentOptions" optional> 获取父节点的选项。 </APIItem> </APIParameters> <APIOptions type="EditorParentOptions"> <APIItem name="depth" type="number" optional> 向上遍历查找父节点的层级数。 </APIItem> <APIItem name="edge" type="'start' | 'end'" optional> 从位置的哪个边缘获取父节点。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<AncestorIn<V>> | undefined"> 包含父节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>previous获取文档分支中位置之前的匹配节点。
<API name="previous"> <APIOptions type="EditorPreviousOptions<V>"> <APIItem name="...options" type="QueryOptions<V>" optional> 匹配节点的通用查询选项。 </APIItem> <APIItem name="at" type="At | Span" optional> 开始搜索的位置。默认为当前选区。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 匹配节点的查询模式。 </APIItem> <APIItem name="voids" type="boolean" optional> 搜索时是否包含 void 节点。 </APIItem> <APIItem name="sibling" type="boolean" optional> 是否获取前一个兄弟节点而不是任何前一个节点。 </APIItem> <APIItem name="from" type="'before' | 'parent'" optional> - `'before'`: 从当前位置之前的点开始 - `'parent'`: 从当前位置的父节点开始 </APIItem> </APIOptions> <APIReturns type="NodeEntry<DescendantIn<V>> | undefined"> 包含前一个匹配节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>prop从节点列表中获取属性值。如果属性值在所有节点中不一致,则返回 undefined。
string获取位置的文本字符串内容。
<API name="string"> <APIParameters> <APIItem name="at" type="At" optional> 要获取文本内容的位置。默认为当前选区。 </APIItem> <APIItem name="options" type="EditorStringOptions" optional> 获取文本内容的选项。 </APIItem> </APIParameters> <APIOptions type="EditorStringOptions"> <APIItem name="voids" type="boolean" optional> 是否包含 void 节点的文本内容。 </APIItem> </APIOptions> <APIReturns type="string"> 指定位置的文本内容。 </APIReturns> </API>void匹配编辑器当前分支中的 void 节点。
<API name="void"> <APIOptions type="EditorVoidOptions"> <APIItem name="at" type="At" optional> 开始搜索的位置。默认为当前选区。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 匹配节点的查询模式。 </APIItem> <APIItem name="voids" type="boolean" optional> 搜索时是否包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="NodeEntry<ElementIn<V>> | undefined"> 包含 void 节点及其路径的元组,如果未找到则为 undefined。 </APIReturns> </API>findPath查找编辑器中 Plate 节点的路径。
<API name="findPath"> <APIParameters> <APIItem name="node" type="TNode"> 要在编辑器树中查找路径的节点。 </APIItem> <APIItem name="options" type="EditorFindPathOptions" optional> 查找节点路径的选项。 </APIItem> </APIParameters> <APIOptions type="EditorFindPathOptions"> <APIItem name="...options" type="QueryOptions<Value>" optional> 查找节点的通用查询选项。 </APIItem> <APIItem name="ignoreNonSelectable" type="boolean" optional> 遍历时是否忽略不可选择的节点。 </APIItem> <APIItem name="reverse" type="boolean" optional> 是否反向遍历。 </APIItem> <APIItem name="universal" type="boolean" optional> 是否确保操作在所有节点上通用。 </APIItem> <APIItem name="mode" type="QueryMode" optional> 查找节点的查询模式。 </APIItem> <APIItem name="voids" type="boolean" optional> 搜索时是否包含 void 节点。 </APIItem> </APIOptions> <APIReturns type="Path | undefined"> 如果找到则返回节点的路径,否则为 undefined。 </APIReturns> </API>path获取位置的路径。
<API name="path"> <APIParameters> <APIItem name="at" type="At" optional> 要获取路径的位置。默认为当前选区。 </APIItem> </APIParameters> <APIReturns type="Path"> 位置的路径。 </APIReturns> </API>point获取位置的 start 或 end(默认为 start)点。
positions遍历文档中所有可能的点位置。
<API name="positions"> <APIOptions type="EditorPositionsOptions"> <APIItem name="at" type="At" optional> 开始遍历的位置。默认为编辑器选区。 </APIItem> <APIItem name="unit" type="TextUnitAdjustment" optional> - `'offset'`: 移动到下一个偏移点 - `'character'`: 移动到下一个字符 - `'word'`: 移动到下一个单词后的位置 - `'line'` | 'block': 在块边界之间移动 </APIItem> <APIItem name="reverse" type="boolean" optional> 为 true 时按相反顺序返回位置。 </APIItem> <APIItem name="voids" type="boolean" optional> 是否包含 void 节点内的位置。 </APIItem> <APIItem name="ignoreNonSelectable" type="boolean" optional> 是否跳过不可选择节点中的位置。 </APIItem> </APIOptions> <APIReturns type="Generator<Point, void, undefined>"> 生成器,用于生成文档中每个有效点位置。 </APIReturns> </API>nodesRange返回跨越给定节点条目的范围。
<API name="nodesRange"> <APIParameters> <APIItem name="nodes" type="NodeEntry[]"> 要获取范围的节点条目。 </APIItem> </APIParameters> <APIReturns type="TRange | undefined"> 跨越节点的范围,如果无法创建有效范围则为 undefined。 </APIReturns> </API>range在两个位置之间创建范围。
<API name="range"> <APIOptions type="EditorRangeOptions"> <APIItem name="at" type="At" optional> 创建范围的位置。默认为当前选区。 </APIItem> <APIItem name="focus" type="Point" optional> 范围的焦点(结束)点。 </APIItem> <APIItem name="anchor" type="Point" optional> 范围的锚点(开始)点。 </APIItem> </APIOptions> <APIReturns type="TRange"> 指定点之间的新范围。 </APIReturns> </API>start获取位置的起始点。
<API name="start"> <APIParameters> <APIItem name="at" type="At" optional> 要获取起始点的位置。 </APIItem> <APIItem name="options" type="EditorStartOptions" optional> 获取起始点的选项。 </APIItem> </APIParameters> <APIOptions type="EditorStartOptions"> <APIItem name="next" type="boolean" optional> 获取下一个节点的起始点,而不是当前节点。 </APIItem> </APIOptions> <APIReturns type="Point"> 位置的起始点。 </APIReturns> </API>unhangRange将范围转换为非悬挂范围。
"悬挂"范围是由浏览器的"三击"选择行为创建的。当三击一个块时,浏览器会从该块的开始选择到下一个块的开始。因此,该范围"悬挂"到下一个块中。如果给 unhangRange 这样的范围,它会将结束点向后移动,直到它位于悬挂块之前的非空文本节点中。
请注意,unhangRange 是为修复三击块而设计的,因此目前有一些注意事项:
elementReadOnly检查元素是否为只读。
<API name="elementReadOnly"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查只读状态的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素是只读的则为 true,否则为 false。 </APIReturns> </API>isBlock检查值是否为块级 Element 对象。
isInline检查值是否为内联 Element 对象。
isSelectable检查值是否为可选择的 Element 对象。
isVoid检查元素是否为 void。
<API name="isVoid"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查 void 状态的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素是 void 则为 true,否则为 false。 </APIReturns> </API>markableVoid检查元素是否为可标记的 void 元素。
<API name="markableVoid"> <APIParameters> <APIItem name="element" type="ElementIn<V>"> 要检查可标记 void 状态的元素。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果元素是可标记的 void 元素则为 true,否则为 false。 </APIReturns> </API>pathRef为 Path 创建可变引用。
pathRefs获取编辑器当前跟踪的路径引用集合。
<API name="pathRefs"> <APIReturns type="Set<PathRef>"> 编辑器当前跟踪的路径引用集合。 </APIReturns> </API>pointRef为 Point 创建可变引用。
pointRefs获取编辑器当前跟踪的点引用集合。
<API name="pointRefs"> <APIReturns type="Set<PointRef>"> 编辑器当前跟踪的点引用集合。 </APIReturns> </API>rangeRef为 Range 创建可变引用。
rangeRefs获取编辑器当前跟踪的范围引用集合。
<API name="rangeRefs"> <APIReturns type="Set<RangeRef>"> 编辑器当前跟踪的范围引用集合。 </APIReturns> </API>findDocumentOrShadowRoot从编辑器中查找文档或影子根。
<API name="findDocumentOrShadowRoot"> <APIReturns type="Document | ShadowRoot"> 包含编辑器的文档或影子根。 </APIReturns> </API>findEventRange从 DOM 事件中获取目标范围。
<API name="findEventRange"> <APIParameters> <APIItem name="event" type="Event"> 要获取范围的 DOM 事件。 </APIItem> </APIParameters> <APIReturns type="TRange | null"> 事件目标处的范围,如果未找到有效范围则为 null。 </APIReturns> </API>findKey查找 Plate 节点的键。返回一个 Key 实例,形如 { id: string }。
getWindow从编辑器中获取 window 对象。
<API name="getWindow"> <APIReturns type="Window"> 与编辑器关联的 window 对象。 </APIReturns> </API>hasDOMNode检查 DOM 节点是否在编辑器内。
<API name="hasDOMNode"> <APIParameters> <APIItem name="target" type="Node"> 要检查的 DOM 节点。 </APIItem> <APIItem name="options" type="object" optional> 检查 DOM 节点的选项。 </APIItem> </APIParameters> <APIOptions type="object"> <APIItem name="editable" type="boolean" optional> 是否检查节点是否在可编辑元素中。 </APIItem> </APIOptions> <APIReturns type="boolean"> 如果 DOM 节点在编辑器内则为 true,否则为 false。 </APIReturns> </API>hasEditableTarget检查 DOM 目标是否可编辑。
<API name="hasEditableTarget"> <APIParameters> <APIItem name="target" type="EventTarget | null"> 要检查的 DOM 目标。 </APIItem> </APIParameters> <APIReturns type="target is Node"> 如果目标是可编辑的则为 true,否则为 false。 </APIReturns> </API>hasRange检查编辑器是否有范围。
<API name="hasRange"> <APIParameters> <APIItem name="range" type="TRange"> 要检查的范围。 </APIItem> </APIParameters> <APIReturns type="boolean"> 如果编辑器有指定范围则为 true,否则为 false。 </APIReturns> </API>hasSelectableTarget检查 DOM 目标是否可选。
<API name="hasSelectableTarget"> <APIParameters> <APIItem name="target" type="EventTarget | null"> 要检查的 DOM 目标。 </APIItem> </APIParameters> <APIReturns type="target is Node"> 如果目标是可选的则为 true,否则为 false。 </APIReturns> </API>hasTarget检查 DOM 目标是否存在。
<API name="hasTarget"> <APIParameters> <APIItem name="target" type="EventTarget | null"> 要检查的 DOM 目标。 </APIItem> </APIParameters> <APIReturns type="target is Node"> 如果目标存在则为 true,否则为 false。 </APIReturns> </API>isComposing检查用户是否正在编辑器中输入。
<API name="isComposing"> <APIReturns type="boolean"> 如果用户正在输入文本则为 true,否则为 false。 </APIReturns> </API>isFocused检查编辑器是否获得焦点。
<API name="isFocused"> <APIReturns type="boolean"> 如果编辑器有焦点则为 true,否则为 false。 </APIReturns> </API>isReadOnly检查编辑器是否处于只读模式。
<API name="isReadOnly"> <APIReturns type="boolean"> 如果编辑器是只读的则为 true,否则为 false。 </APIReturns> </API>toDOMNode从 Plate 节点查找原生 DOM 元素。
<API name="toDOMNode"> <APIOptions type="TNode"> <APIItem name="node" type="TNode"> 要转换为 DOM 元素的 Plate 节点。 </APIItem> </APIOptions> <APIReturns type="HTMLElement"> Plate 节点对应的 DOM 元素。 </APIReturns> </API>toDOMPoint从 Plate 点查找原生 DOM 选择点。
<API name="toDOMPoint"> <APIOptions type="Point"> <APIItem name="point" type="Point"> 要转换为 DOM 点的 Plate 点。 </APIItem> </APIOptions> <APIReturns type="DOMPoint"> 表示 DOM 点的 [node, offset] 元组。 </APIReturns> </API>toDOMRange从 Plate 范围查找原生 DOM 范围。
<API name="toDOMRange"> <APIOptions type="TRange"> <APIItem name="range" type="TRange"> 要转换为 DOM 范围的 Plate 范围。 </APIItem> </APIOptions> <APIReturns type="DOMRange"> Plate 范围对应的 DOM 范围。 </APIReturns> </API>toSlateNode从原生 DOM 元素查找 Plate 节点。
<API name="toSlateNode"> <APIOptions type="DOMNode"> <APIItem name="domNode" type="DOMNode"> 要转换为 Plate 节点的 DOM 节点。 </APIItem> </APIOptions> <APIReturns type="TNode | undefined"> 如果找到则返回对应的 Plate 节点,否则返回 undefined。 </APIReturns> </API>toSlatePoint从 DOM 选择点查找 Plate 点。
<API name="toSlatePoint"> <APIOptions type="DOMPoint"> <APIItem name="domPoint" type="DOMPoint"> 要转换为 Plate 点的 DOM 点。 </APIItem> </APIOptions> <APIReturns type="Point | undefined"> 如果找到则返回对应的 Plate 点,否则返回 undefined。 </APIReturns> </API>toSlateRange从 DOM 范围查找 Plate 范围。
<API name="toSlateRange"> <APIOptions type="DOMRange"> <APIItem name="domRange" type="DOMRange"> 要转换为 Plate 范围的 DOM 范围。 </APIItem> </APIOptions> <APIReturns type="TRange | undefined"> 如果找到则返回对应的 Plate 范围,否则返回 undefined。 </APIReturns> </API>onChange当编辑器发生变化时调用。
<API name="onChange"> <APIOptions type="object"> <APIItem name="operation" type="Operation" optional> 触发变更的操作。 </APIItem> </APIOptions> </API>getDirtyPaths获取操作后需要规范化的路径。
<API name="getDirtyPaths"> <APIParameters> <APIItem name="operation" type="Operation<N extends DescendantIn<V>>"> 触发规范化的操作。 </APIItem> </APIParameters> <APIReturns type="Path[]"> 操作后需要规范化的路径数组。 </APIReturns> </API>shouldNormalizeNode重写此方法以阻止规范化特定节点。默认返回 true。
setNormalizing手动控制编辑器的规范化状态。
<API name="setNormalizing"> <APIOptions type="boolean"> <APIItem name="isNormalizing" type="boolean"> 编辑器是否应该在每个操作后进行规范化。 </APIItem> </APIOptions> </API>shouldNormalize控制编辑器是否应该在操作后进行规范化。重写此方法以在某些情况下阻止规范化。
<API name="shouldNormalize"> <APIOptions type="object"> <APIItem name="dirtyPaths" type="Path[]"> 需要规范化的路径。 </APIItem> <APIItem name="initialDirtyPathsLength" type="number"> 规范化开始前的初始脏路径数量。 </APIItem> <APIItem name="iteration" type="number"> 当前规范化迭代计数。 </APIItem> <APIItem name="operation" type="Operation" optional> 触发规范化的操作。 </APIItem> </APIOptions> <APIReturns type="boolean"> 如果编辑器应该规范化则为 true,否则为 false。 </APIReturns> </API>isMerging获取合并标志的当前值。
<API name="isMerging"> <APIReturns type="boolean"> 如果编辑器当前正在合并操作则为 true,否则为 false。 </APIReturns> </API>isSaving获取保存标志的当前值。
<API name="isSaving"> <APIReturns type="boolean"> 如果编辑器当前正在保存则为 true,否则为 false。 </APIReturns> </API>isSplittingOnce获取拆分标志的当前值。
<API name="isSplittingOnce"> <APIReturns type="boolean"> 如果编辑器当前正在执行单个拆分操作则为 true,否则为 false。 </APIReturns> </API>create.block创建新块元素的默认块工厂。
<API name="create.block"> <APIParameters> <APIItem name="node" type="Partial<TElement>" optional> 要合并到新块中的部分元素属性。 </APIItem> <APIItem name="path" type="Path" optional> 新块的路径。 </APIItem> </APIParameters> <APIReturns type="TElement"> 新的块元素。 </APIReturns> </API>create.value创建新编辑器值的默认值工厂。
<API name="create.value"> <APIReturns type="Value"> 新的编辑器值。 </APIReturns> </API>