# CollaborationFlat · CRDT 协作

把一个 Core 连接到共享 CRDT 副本，提供按本地作者归属的撤销重做。必须提供 doc 并关闭普通 UndoRedo；网络同步与权限由宿主接入。

把一个 Core 连接到共享 CRDT 副本，提供按本地作者归属的撤销重做。必须提供 doc 并关闭普通 UndoRedo；网络同步与权限由宿主接入。

`@quirekit/collab-flat` · **AGPL-3.0-only**

## 编辑器适用范围
层次：**共享文档能力**
| 编辑器 | 状态 | 所需装配与边界 |
| --- | --- | --- |
| Classic | 需适配 | 需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。 |
| Block | 需适配 | 需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。 |

“直接支持”指已有上述产品装配；具体交互、宿主服务和格式支持仍有各自条件。[状态与接入规则](/plugins/compatibility)。许可独立显示。

## 接入

当前 `@quirekit/collab-flat` 的包元数据标为 private。本站使用工作区源码；外部项目需先取得对应分发包，不能把下面的公开导出理解为已经能从公共 npm 安装。

在创建 Editor 时放入 `extensions`。挂载容器、视图和保存由宿主提供，见[快速开始](/guide/quick-start)。

```ts
import { CollaborationFlat } from '@quirekit/collab-flat'
```

安装时按包声明选择兼容版本，外部可用版本以分发源为准。本站使用工作区 Alpha；许可标签来自入口所属包，使用条件见[支持与许可](/support)。

## 按编辑器接入

以下片段沿用已挂载的宿主元素 `element`，宿主负责容器尺寸与保存；退出页面时调用 `instance.destroy()`。已有预设装配的能力不要再重复追加；需要宿主端口的入口应先完成下方配置。

### Classic

需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。

### Block

需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。

## 配置

下面是扩展自身的默认选项。预设可以覆盖这些值；它们不等于当前文档属性。配置方法见[配置插件](/plugins/configuration)。

### doc

本次协作会话共享的 CRDT 文档副本。必须提供，不能使用默认 null 建立可用协作。

类型：`CrdtDoc | null`

默认：`null`

### granularity

覆盖已安装特性声明的属性合并粒度；未提供时使用特性自己的协作事实。

类型：`AttributeGranularityResolver | undefined`

默认：`undefined`

### initialize

共享副本为空时，是否把当前编辑器的初始内容写入其中。

类型：`boolean`

默认：`false`

### verify

是否在每次变更后用完整解码校验结果，主要用于测试与调试。

类型：`boolean`

默认：`false`

### repairIdentity

是否由本编辑器修复容器身份；服务器统一修复时关闭。

类型：`boolean`

默认：`true`

### captureTimeout

连续本地修改合并成一个协作撤销步骤的时间窗口，单位为毫秒。

类型：`number`

默认：`500`

## 命令与运行方式

以下命令由此扩展直接提供，均在当前 Editor 上调用。命令是否可用由已安装 schema、当前选区与保护策略决定；可以先用 `editor.can()` 查询。

| 命令 | 参数签名 |
| --- | --- |
| `undo` | `undo()` |
| `redo` | `redo()` |

这里只展示参数签名。接界面时见[命令与控件](/build/commands)，正文变更继续经过同一事务与历史。

应关闭 StarterKit.undoRedo。扩展负责文档绑定与协作历史；鉴权、网络端点、离线副本保存与断线恢复仍是宿主接入工作。

## 下一步

返回[全部插件](/plugins)，或阅读[配置插件](/plugins/configuration)区分配置、文档属性与命令。

自己定义能力时见[扩展开发](/build/extension)；搭建完整宿主时见[构建产品](/build)。
