galho
Version:
galho is js library for create and manipulate dom elements without need compiling, configuration or VirtualDom
27 lines (26 loc) • 1.09 kB
TypeScript
import { bool, Dic, float, str } from "./util.js";
/**event arg */
export interface Arg<T = any> {
v: T;
/**prevented */
p?: bool;
}
export interface Options<A extends any[] = any[]> {
delay?: float;
once?: bool;
passive?: bool;
check?: (...args: A) => bool;
}
export type EventTargetCallback<T, A extends any[] = any[]> = ((this: T, ...args: A) => any) & Options<A>;
export interface EventObject<T extends Dic<any[]> = any> {
/**events handlers*/
eh: {
[K in keyof T]?: EventTargetCallback<this, T[K]>[];
};
/**when true this object do not raise events */
slip?: bool;
}
export declare function on<E extends EventObject>(e: E, event: str, callback: EventTargetCallback<E>, options?: Options): E;
export declare function off<E extends EventObject>(e: E, event: PropertyKey, callback?: EventTargetCallback<E>): E;
export declare function emit<T extends EventObject, K extends keyof T["eh"]>(e: T, event: K, ...args: any[]): T;
export declare function emitAsync(stack: EventTargetCallback<any>[], args: any[], me?: any): Promise<void>;