白板

形状是节点,因此可以像 AI 代理建议的文档内容一样,携带修订跟踪建议。白板会在形状上显示这些建议,并可通过修订跟踪命令审核它们。

独立产品

修订跟踪 是独立于 Whiteboard 的 Tiptap 产品,需单独购买。

设置编辑器

安装跟踪更改,并将其添加到白板的编辑器中。将跟踪更改中的 getSuggestionHTMLAttributes 作为 WhiteboardKit 的 shapeElementAttributes 选项传递:

import { Editor } from '@tiptap/core'
import { getSuggestionHTMLAttributes, TrackedChanges } from '@tiptap-pro/extension-tracked-changes'
import { WhiteboardKit } from '@tiptap-pro/extension-whiteboard'

const editor = new Editor({
  element: viewport,
  extensions: [
    WhiteboardKit.configure({ shapeElementAttributes: getSuggestionHTMLAttributes }),
    TrackedChanges,
  ],
})

在 React 中,请在组件外部创建配置好的扩展,或使用 useMemo 保证只创建一次。参见 React 白板设置指南。

shapeElementAttributes 从形状的节点向每个形状的元素添加属性。使用 getSuggestionHTMLAttributes,建议更改的形状元素将获得 data-suggestion-* 属性,例如 data-suggestion-type 和 data-suggestion-user。

跟踪更改以 enabled: false 开头。然后直接应用白板上的编辑,并且板会显示形状所带来的建议。

显示建议

设置建议根据其元素上的属性更改的形状的样式:

/* A shape that a suggestion adds */
[data-shape][data-suggestion-type='add'] {
  outline: calc(2px / var(--zoom, 1)) dashed #2b9a66;
}

/* A shape that a suggestion deletes */
[data-shape][data-suggestion-type='delete'] {
  opacity: 0.5;
}

/* A shape that a suggestion moves or changes */
[data-shape][data-suggestion-type='attributeChange'] {
  outline: calc(2px / var(--zoom, 1)) dashed #0d74ce;
}

接受或拒绝建议后,这些属性会消失。形状文本中的建议与其他文档中的显示方式相同。完整属性列表请参阅样式。

查看建议

使用 findSuggestions 查找建议,并通过 ID 接受或拒绝它们:

import { findSuggestions } from '@tiptap-pro/extension-tracked-changes'

const [suggestion] = findSuggestions(editor)

if (suggestion) {
  editor.commands.acceptSuggestion({ id: suggestion.id })
}

添加形状的建议会在 insertedNodes 中列出这些形状,例如 { type: 'stickyNote' }。一项建议可以添加多个形状,例如 AI 工具调用一次添加的所有便签;使用同一个 ID 即可接受或拒绝全部形状。

建议接受拒绝
添加形状保留形状删除形状
删除形状删除形状保留形状
移动形状保留新位置放回形状
更改其文本保留新文本返回旧文本

当被拒绝的建议删除形状时,连接该形状的箭头将保留自由端。评论在协作白板上也有效:所有用户都会看到建议,并且评论适用于任何地方。

后续步骤