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;