@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
TypeScript
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;
}