@reatom/web
Version:
Reatom for web
9 lines • 1 kB
TypeScript
import { Ctx, Fn, Unsubscribe } from '@reatom/core';
export type EventOfTarget<Target extends EventTarget, Type extends string> = Target extends Record<`on${Type}`, infer Cb> ? Parameters<Cb>[0] : Target extends Record<'onEvent', (type: Type, cb: infer Cb) => any> ? Parameters<Cb>[0] : never;
export declare const onEvent: {
<Target extends EventTarget, Type extends Target extends Record<`on${infer Type}`, Fn> ? Type : string>(ctx: Ctx, target: Target, type: Type): Promise<EventOfTarget<Target, Type>>;
<Event>(ctx: Ctx, target: EventTarget, type: string): Promise<Event>;
<Target extends EventTarget, Type extends Target extends Record<`on${infer Type}`, Fn> ? Type : string>(ctx: Ctx, target: Target, type: Type, cb: (value: EventOfTarget<Target, Type>) => any, options?: AddEventListenerOptions): Unsubscribe;
<Event>(ctx: Ctx, target: EventTarget, type: string, cb: (value: Event) => any, options?: AddEventListenerOptions): Unsubscribe;
};
//# sourceMappingURL=event.d.ts.map