历史记录
Facade API | 付费版本 | 需要 Univer 服务端 | Univer on Node.js | Preset |
---|---|---|---|---|
✅ | ✅ | ✅ | - | UniverSheetsCollaborationPreset |
Univer 基于协同编辑提供了历史记录功能,因此在使用历史记录之前,需要先安装 协同编辑 功能。
该功能包含以下插件包:
Presets 安装
按照 协同编辑功能 中的引导安装即可。
高级安装
npm install @univerjs-pro/edit-history-viewer @univerjs-pro/edit-history-loader
import { LocaleType, Tools } from '@univerjs/core';
import { UniverEditHistoryLoaderPlugin } from '@univerjs-pro/edit-history-loader';
import EditHistoryViewerZhCN from '@univerjs-pro/edit-history-viewer/locale/zh-CN';
import '@univerjs-pro/edit-history-viewer/lib/index.css';
const univer = new Univer({
theme: defaultTheme,
locale: LocaleType.ZH_CN,
locales: {
[LocaleType.ZH_CN]: Tools.deepMerge(
EditHistoryViewerZhCN
),
},
});
univer.registerPlugin(UniverEditHistoryLoaderPlugin, {
univerContainerId: 'Your-Univer-Container-Id',
});
启动历史记录时,UniverEditHistoryLoaderPlugin 会加载一个新的 Univer 实例挂载指定 DOM 节点上。因此在注册时,需要提供合适的 DOM 节点 id(如原 Univer 实例的 Container),以达到历史记录面板覆盖原 Univer 面板的目的。若节点 id 未指定,则默认为 univer-container
。
Feature 适配
历史记录的 Univer 实例中只会默认加载官方的 Plugin。为业务需求开发的第三方 Feature Plugin 需要被注册到 HistoryLoaderService 后,才会被正确的显示在历史记录中。
对已经内置注册的官方 Plugin,也可以修改其配置。
import { Disposable } from '@univerjs/core';
import { HistoryLoaderService } from '@univerjs-pro/edit-history-loader'
export class YourFeatureController extends Disposable {
constructor(
@Inject(HistoryLoaderService) private _historyLoaderService: HistoryLoaderService
) {
super();
// 和 PluginService 的注册方式一致,历史记录的 Univer 实例在新建后会按照以下配置来注册对应 Plugin
this._historyLoaderService.registerPlugin(YourPlugin, YourPluginConfig))
// 配置官方已注册的 Plugin, 需设置 true 参数表示覆盖原配置
this._historyLoaderService.registerPlugin(ExamplePlugin, ExamplePluginConfig, true))
}
}