11import AbstractEvent from 'shared/AbstractEvent' ;
22
3+ import { DragEvent , DragEventData } from '../../../Draggable/DragEvent' ;
4+
5+ interface CollidableEventData {
6+ dragEvent : DragEvent < DragEventData > ;
7+ }
8+
39/**
410 * Base collidable event
511 * @class CollidableEvent
612 * @module CollidableEvent
713 * @extends AbstractEvent
814 */
9- export class CollidableEvent extends AbstractEvent {
15+ export class CollidableEvent <
16+ T extends CollidableEventData ,
17+ > extends AbstractEvent < CollidableEventData > {
1018 static type = 'collidable' ;
1119
20+ /**
21+ * CollidableEvent constructor.
22+ * @constructs CollidableEvent
23+ * @param {CollidableEventData } data - Event data
24+ */
25+ constructor ( public data : T ) {
26+ super ( data ) ;
27+ }
28+
1229 /**
1330 * Drag event that triggered this colliable event
1431 * @property dragEvent
@@ -20,13 +37,17 @@ export class CollidableEvent extends AbstractEvent {
2037 }
2138}
2239
40+ interface CollidableInEventData extends CollidableEventData {
41+ collidingElement : HTMLElement ;
42+ }
43+
2344/**
2445 * Collidable in event
2546 * @class CollidableInEvent
2647 * @module CollidableInEvent
2748 * @extends CollidableEvent
2849 */
29- export class CollidableInEvent extends CollidableEvent {
50+ export class CollidableInEvent extends CollidableEvent < CollidableInEventData > {
3051 static type = 'collidable:in' ;
3152
3253 /**
@@ -40,13 +61,17 @@ export class CollidableInEvent extends CollidableEvent {
4061 }
4162}
4263
64+ interface CollidableOutEventData extends CollidableEventData {
65+ collidingElement : HTMLElement ;
66+ }
67+
4368/**
4469 * Collidable out event
4570 * @class CollidableOutEvent
4671 * @module CollidableOutEvent
4772 * @extends CollidableEvent
4873 */
49- export class CollidableOutEvent extends CollidableEvent {
74+ export class CollidableOutEvent extends CollidableEvent < CollidableOutEventData > {
5075 static type = 'collidable:out' ;
5176
5277 /**
0 commit comments