use webcore::value::Reference;
use webapi::event_target::{IEventTarget, EventTarget};
use webapi::node::{INode, Node};
use webapi::token_list::TokenList;
use webapi::node_list::NodeList;
pub trait IElement: IEventTarget {
fn class_list( &self ) -> TokenList {
unsafe {
js!( return @{self.as_ref()}.classList; ).into_reference_unchecked().unwrap()
}
}
fn query_selector( &self, selector: &str ) -> Option< Element > {
unsafe {
js!( return @{self.as_ref()}.querySelector( @{selector} ); ).into_reference_unchecked()
}
}
fn query_selector_all( &self, selector: &str ) -> NodeList {
unsafe {
js!( return @{self.as_ref()}.querySelectorAll( @{selector} ); ).into_reference_unchecked().unwrap()
}
}
}
pub struct Element( Reference );
impl IEventTarget for Element {}
impl INode for Element {}
impl IElement for Element {}
reference_boilerplate! {
Element,
instanceof Element
convertible to EventTarget
convertible to Node
}