@@ -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+
3246interface 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 ;
0 commit comments