import { MixinConstructor } from './Mixin'; type HandlerContext = { handler: HandlerFn; context: any; }; export type EventRecords = Record; export type BaseEventParamsType = { type?: string; target?: any; [propName: string]: any; }; export type HandlerFnResultType = { type: string; target: any; [propName: string]: any; }; export type HandlerFn = (result?: HandlerFnResultType) => void | boolean; export default function (Base: T): { new (...args: any[]): { _eventMap?: Record; _eventParent?: any; _eventTarget?: any; /** * 注册事件的监听 * * @english * Register a handler function to be called whenever this event is fired. * * @param eventsOn - event types to register, seperated by space if more than one. * @param handler - handler function to be called * @param context - the context of the handler * @example * foo.on('mousedown mousemove mouseup', onMouseEvent, foo); */ on(eventsOn: string | EventRecords, handler: HandlerFn, context?: any): any; /** * on方法的alias * * @english * Alias for [on]{@link Eventable.on} * * @param eventTypes - event types to register, seperated by space if more than one. * @param handler - handler function to be called * @param context - the context of the handler */ addEventListener(...args: any[]): any; /** * 与on方法作用类似,但监听方法只会执行一次 * * @english * Same as on, except the listener will only get fired once and then removed. * * @param eventTypes - event types to register, seperated by space if more than one. * @param handler - listener handler * @param context - the context of the handler * @example * foo.once('mousedown mousemove mouseup', onMouseEvent, foo); */ once(eventTypes: string | EventRecords, handler: HandlerFn, context?: any): any; /** * * 取消对事件的监听 * * @english * Unregister the event handler for the specified event types. * * @param eventsOff - event types to unregister, seperated by space if more than one. * @param handler - listener handler * @param context - the context of the handler * @example * foo.off('mousedown mousemove mouseup', onMouseEvent, foo); */ off(eventsOff: string | EventRecords, handler: HandlerFn, context?: any): any; /** * off方法的别名 alias * * @english * Alias for [off]{@link Eventable.off} * * @param eventTypes - event types to unregister, seperated by space if more than one. * @param handler - listener handler * @param context - the context of the handler */ removeEventListener(...args: any[]): any; /** * 是否监听了指定的事件 * * @english * Returns listener's count registered for the event type. * * @param eventType - an event type * @param hanlder - listener function * @param context - the context of the handler */ listens(eventType: string, handler?: HandlerFn, context?: any): number; /** * 返回所有监听的事件 * @english * Get all the listening event types */ getListeningEvents(): string[]; /** * 把事件监听拷贝给给定的目标对象 * @english * Copy all the event listener to the target object * @param target - target object to copy to. */ copyEventListeners(target: any): any; /** * 触发一个事件,并执行所有监听该事件的handler方法 * * @english * Fire an event, causing all handlers for that event name to run. * * @param eventType - an event type to fire * @param param - parameters for the listener function. */ fire(eventType: string, param?: BaseEventParamsType): any; _wrapOnceHandler(evtType: string, handler: HandlerFn, context?: any): (...args: any[]) => void; _switch(to: string, eventRecords: EventRecords, context?: any): any; _clearListeners(eventType: string): void; _clearAllListeners(): void; /** * 设置一个事件父级对象,用来代替执行所有的事件监听 * * @english * Set a event parent to handle all the events * @param parent - event parent * @private * @internal */ _setEventParent(parent: any): any; _setEventTarget(target: any): any; _fire(eventType: string, param: BaseEventParamsType): any; }; } & T; export {}; //# sourceMappingURL=Eventable.d.ts.map