@realsee/dnalogel
Version:
24 lines (23 loc) • 1.1 kB
TypeScript
import * as BasePlugin from './BasePlugin';
type State = BasePlugin.State;
type Config = BasePlugin.Config;
interface EventMap<PluginState, PluginData> extends BasePlugin.EventMap<PluginState> {
/** 数据变更 */
dataChange: (data: PluginData, prevData?: PluginData) => void;
/** 数据加载完成 */
dataLoaded: (data: PluginData) => void;
}
declare abstract class Controller<PluginState extends State, PluginEventMap extends EventMap<PluginState, PluginData>, PluginServerData, PluginData> extends BasePlugin.Controller<PluginState, PluginEventMap> {
protected abstract data?: PluginData;
/**
* 加载插件依赖数据
* @param serverData 插件数据
* @param state 插件 State
*/
abstract load(serverData: PluginServerData, state?: PluginState, userAction?: boolean): Promise<void>;
/** 把原始数据转化为插件数据 */
protected abstract formatData?(serverData: PluginServerData): Promise<PluginData> | PluginData;
}
export type { State, EventMap, Config };
export type { BaseOptions } from './BasePlugin';
export { Controller };