EditorUtils 工具类
EditorUtils 是一个提供编辑器操作工具方法的静态类,封装了常用的 Slate 编辑器操作。
功能描述
EditorUtils 类提供了丰富的编辑器操作方法,包括:
- 路径操作 - 路径查找、比较、移动
- 节点操作 - 节点创建、删除、替换
- 格式操作 - 文本格式设置、清除
- 媒体操作 - 媒体节点创建和管理
- 选择操作 - 选区管理和操作
- DOM 操作 - DOM 元素和事件处理
主要方法
路径操作
hasPath(editor: Editor, path: Path): boolean
检查路径是否存在于编辑器中。
isPrevious(firstPath: Path, nextPath: Path): boolean
检查第一个路径是否在第二个路径之前。
isNextPath(firstPath: Path, nextPath: Path): boolean
检查第一个路径是否在第二个路径之后。
findPrev(editor: Editor, path: Path): Path
查找指定路径的前一个有效路径。
findNext(editor: Editor, path: Path): Path
查找指定路径的下一个有效路径。
节点操作
replaceSelectedNode(editor: Editor, newNode: Elements[]): void
替换当前选中的节点。
deleteAll(editor: Editor, insertNodes?: Elements[]): void
删除所有内容,可选择插入新节点。
reset(editor: Editor, insertNodes?: Elements[], force?: boolean | History): void
重置编辑器内容。
格式操作
clearMarks(editor: Editor, split = false): void
清除当前选区的所有格式标记。
toggleFormat(editor: Editor, format: string): void
切换指定格式的激活状态。
isFormatActive(editor: Editor, format: string, value?: any): boolean
检查指定格式是否处于激活状态。
setAlignment(editor: Editor, alignment: 'left' | 'center' | 'right'): void
设置文本对齐方式。
isAlignmentActive(editor: Editor, alignment: string): boolean
检查指定对齐方式是否激活。
媒体操作
createMediaNode(src: string | undefined, type: string, extraPros?: Record<string, any>): CardNode | { text: string }
创建媒体节点(图片、视频、音频等)。
wrapperCardNode(node: any, props: Record<string, any> = {}): CardNode
将节点包装为卡片节点。
选择操作
focus(editor: Editor): void
聚焦编辑器。
blur(editor: Editor): void
取消编辑器聚焦。
copyText(editor: Editor, start: Point, end?: Point): string
复制指定范围的文本。
cutText(editor: Editor, start: Point, end?: Point): string
剪切指定范围的文本。
工具方法
copy(data: object): object
深度复制对象。
checkEnd(editor: Editor): boolean
检查是否在编辑器末尾。
checkSelEnd(editor: Editor, path: Path): boolean
检查指定路径是否在选区末尾。
常量
p
段落节点的默认结构。
CLEARABLE_MARKS
可清除的格式标记列表。
使用场景
编辑器初始化
格式操作
媒体插入
内容操作
注意事项
- 错误处理:所有方法都包含错误处理,不会抛出异常
- 路径验证:使用前应验证路径的有效性
- 选区检查:某些操作需要有效的选区
- 性能考虑:大量操作时注意性能影响
- 类型安全:使用 TypeScript 确保类型安全
扩展性
EditorUtils 类设计为可扩展的,可以:
- 添加新的工具方法
- 自定义节点创建逻辑
- 扩展格式操作功能
- 集成第三方编辑器功能
