165 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			V
		
	
	
module jsdom
 | 
						|
 | 
						|
pub interface IEvent {
 | 
						|
	composed_path() []IEventTarget
 | 
						|
}
 | 
						|
 | 
						|
pub struct JS.Event {}
 | 
						|
 | 
						|
pub struct JS.MouseEvent {}
 | 
						|
 | 
						|
pub struct Event {
 | 
						|
	event JS.Event [noinit]
 | 
						|
}
 | 
						|
 | 
						|
pub fn (ev Event) composed_path() []IEventTarget {
 | 
						|
	mut composed := []IEventTarget{}
 | 
						|
	#ev.event.composedPath().forEach((item) => {
 | 
						|
	#array_push(composed, jsdom__dispatch_event())
 | 
						|
	#})
 | 
						|
 | 
						|
	return composed
 | 
						|
}
 | 
						|
 | 
						|
pub struct UIEvent {
 | 
						|
	Event
 | 
						|
}
 | 
						|
 | 
						|
// detail returns `int` with detail about the event, depending on the event type.
 | 
						|
pub fn (ev UIEvent) detail() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.detail
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
pub struct MouseEvent {
 | 
						|
	UIEvent
 | 
						|
}
 | 
						|
 | 
						|
// button returns the button number that was pressed (if applicable) when the mouse event was fired.
 | 
						|
pub fn (ev MouseEvent) button() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.button;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// alt_key returns `true` if the `alt` key was down when the mouse event was fired.
 | 
						|
pub fn (ev MouseEvent) alt_key() bool {
 | 
						|
	ret := false
 | 
						|
	#ret.val = ev.event.altKey;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// buttons returns the buttons being depressed (if any) when the mouse event was fired.
 | 
						|
pub fn (ev MouseEvent) buttons() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.buttons;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// client_x returns the X coordinate of the mouse pointer in local coordinates.
 | 
						|
pub fn (ev MouseEvent) client_x() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.clientX;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// client_y returns the Y coordinate of the mouse pointer in local coordinates.
 | 
						|
pub fn (ev MouseEvent) client_y() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.clientY;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// ctrl_key returns `true` if the `ctrl` key was down when the mouse event was fired.
 | 
						|
pub fn (ev MouseEvent) ctrl_key() bool {
 | 
						|
	ret := false
 | 
						|
	#ret.val = ev.event.ctrlKey;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// meta_key returns `true` if the `meta` key was down when the mouse event was fired.
 | 
						|
pub fn (ev MouseEvent) meta_key() bool {
 | 
						|
	ret := false
 | 
						|
	#ret.val = ev.event.metaKey;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// movenet_x reaturns the X coordinate of the mouse pointer relative to the position of the last `mousemove` event.
 | 
						|
pub fn (ev MouseEvent) movement_x() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.movementX;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// movenet_y reaturns the Y coordinate of the mouse pointer relative to the position of the last `mousemove` event.
 | 
						|
pub fn (ev MouseEvent) movement_y() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.movementY;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// offset_x returns the X coordinate of the mouse pointer relative to the position of the padding edge of the target node.
 | 
						|
pub fn (ev MouseEvent) offset_x() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.offsetX;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
// offset_y reaturns the Y coordinate of the mouse pointer relative to the position of the padding edge of the target node.
 | 
						|
pub fn (ev MouseEvent) offset_y() int {
 | 
						|
	ret := 0
 | 
						|
	#ret.val = ev.event.offsetY;
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
pub fn (ev MouseEvent) composed_path() []IEventTarget {
 | 
						|
	mut composed := []IEventTarget{}
 | 
						|
	#ev.event.composedPath().forEach((item) => {
 | 
						|
	#array_push(composed, jsdom__dispatch_event())
 | 
						|
	#})
 | 
						|
 | 
						|
	return composed
 | 
						|
}
 | 
						|
 | 
						|
pub struct AbortSignal {
 | 
						|
	Event
 | 
						|
}
 | 
						|
 | 
						|
pub fn (ev AbortSignal) composed_path() []IEventTarget {
 | 
						|
	mut composed := []IEventTarget{}
 | 
						|
	#ev.event.composedPath().forEach((item) => {
 | 
						|
	#array_push(composed, jsdom__dispatch_event(item))
 | 
						|
	#})
 | 
						|
 | 
						|
	return composed
 | 
						|
}
 | 
						|
 | 
						|
pub fn (sig AbortSignal) aborted() bool {
 | 
						|
	res := false
 | 
						|
	#res.val = sig.event.aborted;
 | 
						|
 | 
						|
	return res
 | 
						|
}
 | 
						|
 | 
						|
fn dispatch_event(event JS.Event) IEvent {
 | 
						|
	mut ret := IEvent(Event{})
 | 
						|
	#if (event instanceof AbortSignal) { ret = new jsdom__AbortSignal({});  }
 | 
						|
	#else if (event instanceof MouseEvent) { ret = new jsdom__MouseEvent({}); }
 | 
						|
	#ret.event = event
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 |