UNPKG

@textbus/core

Version:

Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.

82 lines (81 loc) 2.22 kB
import { Observable } from '@tanbo/stream'; import { Operation } from '../model/_api'; import { RootComponentRef } from './_injection-tokens'; import { Selection } from './selection'; import { Adapter } from './adapter'; /** * 数据变更源 */ export declare enum ChangeOrigin { History = 0, Local = 1, Remote = 2 } /** * 标记一次变更属于本地、远程或者是历史记录 */ export interface ChangeItem { from: ChangeOrigin; operation: Operation; } /** * Textbus 调度器,用于控制文档内容的更新及渲染 */ export declare class Scheduler { private rootComponentRef; private adapter; private selection; /** * 最后一次文档变更是否包含本地变更 */ get lastChangesHasLocalUpdate(): boolean; /** * 最后一次文档变更是否包含远程变更 */ get lastChangesHasRemoteUpdate(): boolean; /** * 当文档发生变更时触发 */ onDocChange: Observable<void>; /** * 当文档渲染完成时触发 */ onDocChanged: Observable<ChangeItem[]>; /** 当文档在本地发生第一次变更触发 */ onDocFirstChangeFromLocal: Observable<void>; /** 当文档在本地发生变更之前触发 */ onLocalChangeBefore: Observable<void>; private _lastChangesHasLocalUpdate; private _lastChangesHasRemoteUpdate; private changeFromRemote; private changeFromHistory; private docChangedEvent; private docChangeEvent; private localChangeBeforeEvent; private subs; private updatedTasks; constructor(rootComponentRef: RootComponentRef, adapter: Adapter, selection: Selection); /** * 远程更新文档事务 * @param task 事务处理函数 */ remoteUpdateTransact(task: () => void): void; /** * 历史记录更新文档事务 * @param task 事务处理函数 */ historyApplyTransact(task: () => void): void; /** * 添加文档渲染后副作用任务 * @param fn */ addUpdatedTask(fn: () => void): void; /** * 启动调度器,并兼听文档变更自动渲染文档 */ run(): void; /** * 销毁调度器 */ destroy(): void; }