Skip to content

Commit 4cde324

Browse files
authored
Add support of Panorama Events (#41)
* add some missing `Abilities` API * add some missing `Game` api * run code lint * add all missing API from `cl_panorama_typescript_declarations` * fixed a return type error * Update api.d.ts * add support of panorama events * more apis and more tests * add support of register event handler and drag events
1 parent d93c6ce commit 4cde324

File tree

4 files changed

+446
-15
lines changed

4 files changed

+446
-15
lines changed

packages/panorama-types/types/api.d.ts

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ declare namespace GameEvents {
2929
: InferCustomGameEventType<T, TUntyped>;
3030
}
3131

32+
declare namespace PanoramaEvents {
33+
type PanoramaEventName = keyof PanoramaEvent;
34+
type InferPanoramaEventParams<T extends string, TUntyped> = T extends PanoramaEventName
35+
? PanoramaEvent[T] extends (...args: infer P) => void
36+
? P | [PanelBase, ...P]
37+
: TUntyped
38+
: TUntyped;
39+
type InferPanoramaCallback<T extends string> = T extends PanoramaEventName
40+
? PanoramaEvent[T] extends (...args: infer P) => void
41+
? (...args: P) => void
42+
: (...args: any[]) => void
43+
: (...args: any[]) => void;
44+
}
45+
3246
interface CDOTA_PanoramaScript_GameEvents {
3347
/**
3448
* Subscribe to a game event.
@@ -1972,10 +1986,16 @@ interface DollarStatic {
19721986
GetContextPanel(): Panel;
19731987
Schedule(time: number, callback: () => void): ScheduleID;
19741988
CancelScheduled(scheduledEvent: ScheduleID): void;
1975-
DispatchEvent(event: string, panelID?: string, ...args: any[]): void;
1976-
DispatchEvent(event: string, panel: PanelBase, ...args: any[]): void;
1977-
DispatchEventAsync(delay: number, event: string, panelID?: string, ...args: any[]): void;
1978-
DispatchEventAsync(delay: number, event: string, panel: PanelBase, ...args: any[]): void;
1989+
1990+
DispatchEvent<E extends PanoramaEvents.PanoramaEventName | string>(
1991+
eventName: E extends PanoramaEvents.PanoramaEventName ? E : string,
1992+
...args: PanoramaEvents.InferPanoramaEventParams<E, any[]>
1993+
): void;
1994+
DispatchEventAsync<E extends PanoramaEvents.PanoramaEventName | string>(
1995+
eventName: E extends PanoramaEvents.PanoramaEventName ? E : string,
1996+
...args: PanoramaEvents.InferPanoramaEventParams<E, any[]>
1997+
): void;
1998+
19791999
Language(): string;
19802000
/**
19812001
* Localize a string. Optionally accepts Quantity, Precision, and Panel arguments.
@@ -1986,18 +2006,16 @@ interface DollarStatic {
19862006
* @deprecated
19872007
*/
19882008
LocalizePlural(token: string, value: number, parent?: PanelBase): string;
1989-
RegisterEventHandler(
1990-
event: 'DragStart',
1991-
parent: PanelBase,
1992-
handler: (panelID: string, settings: DragSettings) => boolean,
1993-
): void;
1994-
RegisterEventHandler(
1995-
event: 'DragEnd' | 'DragDrop' | 'DragEnter' | 'DragLeave',
1996-
parent: PanelBase,
1997-
handler: (panelID: string, dragged: Panel) => boolean,
2009+
2010+
RegisterEventHandler<E extends PanoramaEvents.PanoramaEventName | string>(
2011+
eventName: E extends PanoramaEvents.PanoramaEventName ? E : string,
2012+
panel: PanelBase | string,
2013+
callback: PanoramaEvents.InferPanoramaCallback<E>,
19982014
): void;
1999-
RegisterEventHandler(event: string, parent: PanelBase, handler: (...args: any[]) => void): void;
2000-
RegisterForUnhandledEvent(event: string, handler: (...args: any[]) => void): UnhandledEventListenerID;
2015+
RegisterForUnhandledEvent<E extends PanoramaEvents.PanoramaEventName | string>(
2016+
eventName: E extends PanoramaEvents.PanoramaEventName ? E : string,
2017+
callback: PanoramaEvents.InferPanoramaCallback<E>,
2018+
): UnhandledEventListenerID;
20012019
UnregisterForUnhandledEvent(event: string, handle: UnhandledEventListenerID): void;
20022020
Each<T>(list: T[], callback: (item: T, index: number) => void): void;
20032021
Each<T>(map: { [key: string]: T }, callback: (value: T, key: string) => void): void;

packages/panorama-types/types/common.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/// <reference path="css.d.ts" />
33
/// <reference path="events.generated.d.ts" />
44
/// <reference path="panels.d.ts" />
5+
/// <reference path="panorama-events.d.ts" />
56
/// <reference path="stack-trace-api.d.ts" />
67

78
type EntityIndex = number & { _entityIndex: never };

0 commit comments

Comments
 (0)