Skip to content

Commit

Permalink
refine types for browser event handler
Browse files Browse the repository at this point in the history
Signed-off-by: eternal-flame-AD <[email protected]>
  • Loading branch information
eternal-flame-AD committed Sep 2, 2024
1 parent 8bda0b0 commit a9fceda
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions js/igv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -732,19 +732,19 @@ interface CreateOptExtras {
export namespace BrowserEvents {
export type EventType = "trackremoved" | "trackdrag" | "trackdragend" | "locuschange" | "trackclick" | "trackorderchanged";

export type EventPayload<T extends EventType> =
T extends "trackremoved" ? Tracks.Track[] :
T extends "locusChange" ? {
export type EventHandler<T extends EventType> =
T extends "trackremoved" ? (tracks: Tracks.Track[]) => EventReturn<T> :
T extends "locusChange" ? (loci: {
chr: string;
start: number;
end: number;
getLocusString: () => string;
}[] :
T extends "trackclick" ? {
name: string;
value: string;
} :
T extends "trackorderchanged" ? string[] :
}[]) => EventReturn<T> :
T extends "trackclick" ? (
track: Tracks.Track,
popoverData?: Record<string, string>,
) => EventReturn<T> :
T extends "trackorderchanged" ? (trackNames: string[]) => EventReturn<T> :
never;

export type EventReturn<T extends EventType> =
Expand Down Expand Up @@ -816,7 +816,7 @@ declare class _Browser {

sessionURL(): string;

on<T extends BrowserEvents.EventType>(event: T, handler: (payload: BrowserEvents.EventPayload<T>) => BrowserEvents.EventReturn<T>): void;
on<T extends BrowserEvents.EventType>(event: T, handler: BrowserEvents.EventHandler<T>): void;
off(event: BrowserEvents.EventType): void;
}

Expand Down

0 comments on commit a9fceda

Please sign in to comment.