types/event.types.ts
types/event.types.ts is a file in Bane's Lab Site. 37 lines of code and 10 definitions.
export interface RouteRequestedEvent {
readonly name: "route.requested";
readonly page: string;
readonly path?: string;
}
export interface RouteChangedEvent {
readonly name: "route.changed";
readonly page: string;
}
export interface OverlayRequestedEvent {
readonly content: Element;
readonly name: "overlay.requested";
readonly title: string;
}
export interface OverlayDismissedEvent {
readonly name: "overlay.dismissed";
}
export interface TabSelectedEvent {
readonly name: "tab.selected";
readonly page: string;
readonly tab: string;
}
export interface NodeRequestedEvent {
readonly id: string;
readonly line: number | null;
readonly name: "node.requested";
}
export type AppEvent =
| NodeRequestedEvent
| OverlayDismissedEvent
| OverlayRequestedEvent
| RouteChangedEvent
| RouteRequestedEvent
| TabSelectedEvent;
export type EventName = AppEvent["name"];
export type EventOf<N extends EventName> = Extract<AppEvent, { readonly name: N }>;
export type EventListener<T extends AppEvent = AppEvent> = (event: T) => void;