# 附加模块

# 撤销重做

  • 功能

即通常所说的 undoredo

撤销会将编辑器的状态(内容和选区)恢复到上一步,重做是对“撤销”的“撤销”。

提示

  • 1000ms 内的操作将会合并,这意味着连续输入的时候撤销会导致多个新输入的文本都会被移除。
  • 撤销重做基于操作变换,而非快照,所以性能非常高。最大支持深度为 100 步。
  • 协同过程中,撤销仅对当前用户有效,不影响其他用户协同编辑的数据。
  • 定义
history: {
  undo()
  redo()
}

# undo()

  • 说明

撤销。

# redo()

  • 说明

重做。

# 查找替换

  • 功能

在编辑器中查找并高亮指定的字符串。支持对查找结果进行替换,支持单个替换和全部替换。

查找准确地说,是一种状态。开启查找后,编辑器中所有匹配到的字符串进入高亮状态。高亮状态会随着编辑行为而动态变更。

在高亮的基础上,还有激活状态。激活仅对单个匹配结果有效,可通过接口切换。

  • 定义
find: {
  find(text: string)

  getResults(): {
    count: number
    active: number
  }

  activePrev()
  activeNext()
  replace(newText: string, isAll: boolean = false)
  exit()
}

# find()

  • 说明

开启查找状态,高亮所有匹配结果。

  • 参数
    • text: 关键词。

# getResults()

  • 说明

获取匹配结果的信息。可多次调用,每次调用会获取最新的结果。

  • 返回
    • count: 匹配结果数量。
    • active: 当前激活匹配结果的索引。

# activePrev()

  • 说明

激活上一个匹配结果。当前是第一个匹配结果时,激活最后一个匹配结果。

# activeNext()

  • 说明

激活下一个匹配结果。当前是最后一个匹配结果时,激活第一个匹配结果。

# replace()

  • 说明

将匹配结果替换为新的字符串,支持全部替换。

  • 参数
    • newText: 新的字符串。
    • isAll: 是否批量替换。

# exit()

  • 说明

退出查找状态,移除所有高亮。

# 格式刷

  • 功能

提供格式刷、清除格式等功能。

  • 定义
painter: {
  active(actived: boolean = true)
  clear()
}

# active()

  • 说明

激活或取消格式刷。

  • 参数
    • actived:
      • true: 激活格式刷。
      • false: 取消激活格式刷。

# clear()

  • 说明

清除选中区域所有格式。

# 提及(@)

支持提及用户,提及文档正在开发中。

//TODO:

待完善

# 迭代器

  • 功能

对编辑器全部内容或者指定内容按句子进行迭代,每次迭代返回句子的文本内容和选区范围。

可用于 TTS 功能,实现按句朗读并高亮对应句子的功能。

  • 定义
/** 迭代器,按块级元素或句子迭代。 */
iterator: {
  /**
   * 初始化,支持指定选区内容进行迭代
   * @param index 起始位置,默认 0(开始位置)
   * @param length 内容长度,默认剩余长度
   */
  setup(index: number = 0, length: number = remaining)

  /** 是否有下一句 */
  hasNext(): boolean

  /**
   * 获取下一句
   * @param dryrun 为 true 时仅返回内容,不移动索引
   */
  next(dryrun: boolean = false): { text: string; range: Range } | null

  /**
   * 高亮包含指定范围的句子,实际会高亮包含选区的一个或多个句子。
   * @param range 待高亮的范围
   * @param highlighted 是否高亮,false 时取消高亮。
   */
  highlight(range: Range, highlighted: boolean = true)
}

# setup()

  • 说明

初始化或重设迭代器,从指定选区的开头开始重新迭代。

  • 参数

    • index: 选区起始位置,默认 0。
    • length: 选区长度,默认剩余长度。
  • 返回

无。

# hasNext()

  • 说明

获取迭代是否到末尾。

  • 参数

无。

  • 返回
    • true: 还没到末尾。
    • false: 已到末尾。

# next()

  • 说明

进行一次迭代,并返回该次迭代的结果。

  • 参数

    • dryrun: 为 true 时仅返回内容,不移动索引。
  • 返回

    • text: 句子文本内容。
    • range: 句子对应的选区,可根据需求调用高亮。

# highlight()

  • 说明

对包含给定选区的句子进行高亮。

  • 参数

    • range: 选区。
    • highlighted:
      • true: 设置高亮。
      • false: 取消高亮。
  • 返回

无。