UNPKG

@visualjs/grid

Version:
25 lines (24 loc) 933 B
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;