export interface Collaborator { id: number | string; name?: string; avatar?: string; color?: string; [key: string]: unknown; } export interface CollaboratorsChangedPayload { type: 'snapshot' | 'enter' | 'leave'; collaborators: Collaborator[]; enterUsers?: Collaborator[]; leaveUsers?: Collaborator[]; raw?: unknown; } export interface EventMap { /** * 保存状态发生变更 */ saveStatusChanged: { /** * @since 22.2.1 */ status?: 'saving' | 'saved' | 'error'; }; /** * 保存状态发生变更 * @deprecated - use saveStatusChanged */ saveStatusDidChange: { /** * @since 22.2.1 */ status?: 'saving' | 'saved' | 'error'; }; /** * 用户确认“系统已禁止编辑”弹窗后触发 */ editForbiddenConfirmed: { /** * 当前仅支持 STATUS_FORBIDDEN */ reason: 'STATUS_FORBIDDEN'; }; /** * 用于类似表格打开定位到当前 tab 的用途。事件触发时,替换当前的 url 的 search params 参数,在初始化 JS SDK 时传入。 */ paramsChanged: { params: string; }; /** * 协作者列表发生变更 */ collaboratorsChanged: CollaboratorsChangedPayload; } export interface BaseEditor { /** * 监听事件 */ on: (event: K, handler: (payload: T[K]) => void) => void; /** * 取消监听事件 */ off: (event: K, handler?: (payload: T[K]) => void) => void; /** * 设置文档标题 */ setTitle: (title: string) => Promise; /** * 获取当前协作者列表 */ getCollaborators: () => Collaborator[]; }