UNPKG

amis-model-design

Version:

amis模型设计器

95 lines (94 loc) 3.45 kB
import { DBTable, DataSourceItem, FieldItem, ModelItem, RelationShipItem } from '../type'; export interface EventContext<P = any> { data?: P; [propName: string]: any; } /** * 将事件上下文转成事件对象。 */ export type PluginEvent<T, P = any> = { context: T; type: string; preventDefault: () => void; stopPropagation: () => void; setData: (data: P) => void; prevented?: boolean; stoped?: boolean; pending?: Promise<any>; data?: P; }; export type PluginEventFn = (e: PluginEvent<EventContext>) => false | void; /** * 创建事件。 * @param type * @param context */ export declare function createEvent<T extends EventContext>(type: string, context: T): PluginEvent<T>; export interface AddModelEventContext extends EventContext { datasource: DataSourceItem; data: ModelItem; } export interface UpdateModelEventContext extends AddModelEventContext { } export interface AddFieldsEventContext extends EventContext { datasource: DataSourceItem; model: ModelItem; data: FieldItem | Array<FieldItem>; } export interface AddRelationEventContext extends EventContext { datasource: DataSourceItem; model: ModelItem; models: ModelItem[]; data: RelationShipItem; dbTable?: DBTable; } export interface RemoveFieldEventContext extends EventContext { datasource: DataSourceItem; model: ModelItem; data: FieldItem; } export interface RemoveRelationEventContext extends AddRelationEventContext { } export interface RemoveModelEventContext extends EventContext { datasource: DataSourceItem; data: ModelItem; } export interface PluginEventListener { /** 添加模型相关 */ beforeAddModel?: (event: PluginEvent<AddModelEventContext>) => false | void; afterAddModel?: (event: PluginEvent<AddModelEventContext>) => void; beforeUpdateModel?: (event: PluginEvent<AddModelEventContext>) => false | void; afterUpdateModel?: (event: PluginEvent<AddModelEventContext>) => void; /** 添加字段相关事件 */ beforeAddFields?: (event: PluginEvent<AddFieldsEventContext>) => false | void; afterAddFields?: (event: PluginEvent<AddFieldsEventContext>) => void; /** 删除字段 */ beforeRemoveField?: (event: PluginEvent<RemoveFieldEventContext>) => false | void; afterRemoveField?: (event: PluginEvent<RemoveFieldEventContext>) => void; /** 添加关系相关事件 */ beforeAddRelation?: (event: PluginEvent<AddRelationEventContext>) => false | void; afterAddRelation?: (event: PluginEvent<AddRelationEventContext>) => void; /** 删除关系事件 */ beforeRemoveRelation?: (event: PluginEvent<RemoveRelationEventContext>) => false | void; afterRemoveRelation?: (event: PluginEvent<RemoveRelationEventContext>) => void; /** 删除模型 */ beforeRemoveModel?: (event: PluginEvent<RemoveModelEventContext>) => false | void; afterRemoveModel?: (event: PluginEvent<RemoveModelEventContext>) => void; } export declare class EventEmitter { readonly listeners: Array<{ type: string; fn: PluginEventFn; }>; on(event: string, fn: PluginEventFn): void; off(event: string, fn: PluginEventFn): void; /** * 派发事件。 * @param type * @param context */ trigger<T extends EventContext>(type: string, context: T, additionalListeners?: Array<{ type: string; fn: PluginEventFn; }>): PluginEvent<T>; }