@visualjs/grid
Version:
JavaScript Data Table
25 lines (24 loc) • 933 B
TypeScript
import { Unsubscribe } from "../types";
import Grid from ".";
interface AnyActions {
[key: string]: (grid: Grid, cb: Function) => () => void;
}
export declare type HandlersOfActions<A extends AnyActions> = {
[K in keyof A]: Parameters<A[K]>[1];
};
export declare type AnyEvents<T> = {
[P in keyof T]: (...args: any) => boolean | void;
};
export declare type Events<T> = {
[P in keyof T]: T[P][];
};
export declare type Handlers<A extends AnyActions, E extends AnyEvents<E>> = HandlersOfActions<A> & E;
export declare class Observer<E extends AnyEvents<E>, A extends AnyActions> {
protected grid: Grid;
protected actions: A;
protected events: Events<E>;
constructor(grid: Grid, events: Events<E>, actions: A);
on<K extends keyof A | keyof E, H extends Handlers<A, E>>(e: K, h: H[K]): Unsubscribe;
trigger<K extends keyof E>(e: K, ...args: Parameters<E[K]>): boolean;
}
export default Observer;