Files
Vlad Durnea cffdf8af86
Some checks failed
CI/CD Pipeline / unit-tests (push) Failing after 1m16s
CI/CD Pipeline / integration-tests (push) Failing after 2m32s
CI/CD Pipeline / lint (push) Successful in 5m22s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
wip:milestone 0 fixes
2026-03-15 12:35:42 +02:00

30 lines
1.2 KiB
TypeScript

import { MuiBaseEvent } from '../muiEvent';
import { GridEventLookup, GridEvents } from './gridEventLookup';
type PublisherArgsNoEvent<E extends GridEvents, T extends {
params: any;
}> = [E, T['params']];
type PublisherArgsRequiredEvent<E extends GridEvents, T extends {
params: any;
event: MuiBaseEvent;
}> = [E, T['params'], T['event']];
type PublisherArgsOptionalEvent<E extends GridEvents, T extends {
params: any;
event: MuiBaseEvent;
}> = PublisherArgsRequiredEvent<E, T> | PublisherArgsNoEvent<E, T>;
type PublisherArgsEvent<E extends GridEvents, T extends {
params: any;
event: MuiBaseEvent;
}> = {} extends T['event'] ? PublisherArgsOptionalEvent<E, T> : PublisherArgsRequiredEvent<E, T>;
type PublisherArgsParams<E extends GridEvents, T extends {
params: any;
}> = [E, T['params']];
type PublisherArgsNoParams<E extends GridEvents> = [E];
type GridEventPublisherArg<E extends GridEvents, T> = T extends {
params: any;
event: MuiBaseEvent;
} ? PublisherArgsEvent<E, T> : T extends {
params: any;
} ? PublisherArgsParams<E, T> : PublisherArgsNoParams<E>;
export type GridEventPublisher = <E extends GridEvents>(...params: GridEventPublisherArg<E, GridEventLookup[E]>) => void;
export {};