// This file is auto-generated. Do not edit manually.
// Generated by scripts/generate_inheritance.ts

///|
/// Upcast from Node to Element
pub fn Element::cast_from_node(value : Node) -> Element = "%identity"

///|
/// Upcast from EventTarget to Element
pub fn Element::cast_from_event_target(value : @event.EventTarget) -> Element = "%identity"

///|
/// Inherited from Node
pub fn Element::nodeType(self : Self) -> Int {
  self.as_node().nodeType()
}

///|
/// Inherited from Node
pub fn Element::nodeName(self : Self) -> String {
  self.as_node().nodeName()
}

///|
/// Inherited from Node
pub fn Element::parentNode(self : Self) -> Node? {
  self.as_node().parentNode()
}

///|
/// Inherited from Node
pub fn Element::childNodes(self : Self) -> Array[Node] {
  self.as_node().childNodes()
}

///|
/// Inherited from Node
pub fn Element::firstChild(self : Self) -> Node? {
  self.as_node().firstChild()
}

///|
/// Inherited from Node
pub fn Element::lastChild(self : Self) -> Node? {
  self.as_node().lastChild()
}

///|
/// Inherited from Node
pub fn Element::previousSibling(self : Self) -> Node? {
  self.as_node().previousSibling()
}

///|
/// Inherited from Node
pub fn Element::nextSibling(self : Self) -> Node? {
  self.as_node().nextSibling()
}

///|
/// Inherited from Node
pub fn Element::appendChild(self : Self, child : Node) -> Node {
  self.as_node().appendChild(child)
}

///|
/// Inherited from Node
pub fn Element::removeChild(self : Self, child : Node) -> Node {
  self.as_node().removeChild(child)
}

///|
/// Inherited from Node
pub fn Element::insertBefore(
  self : Self,
  new_node : Node,
  ref_node : Node?,
) -> Node {
  self.as_node().insertBefore(new_node, ref_node)
}

///|
/// Inherited from Node
pub fn Element::replaceChild(
  self : Self,
  new_child : Node,
  old_child : Node,
) -> Node {
  self.as_node().replaceChild(new_child, old_child)
}

///|
/// Inherited from Node
pub fn Element::cloneNode(self : Self, deep : Bool) -> Node {
  self.as_node().cloneNode(deep)
}

///|
/// Inherited from Node
pub fn Element::contains(self : Self, other : Node?) -> Bool {
  self.as_node().contains(other)
}

///|
/// Inherited from Node
pub fn Element::hasChildNodes(self : Self) -> Bool {
  self.as_node().hasChildNodes()
}

///|
/// Inherited from Node
pub fn Element::textContent(self : Self) -> String {
  self.as_node().textContent()
}

///|
/// Inherited from Node
pub fn Element::setTextContent(self : Self, content : String) -> Unit {
  self.as_node().setTextContent(content)
}

///|
/// Inherited from Node
pub fn Element::moveBefore(
  self : Self,
  moved_node : Node,
  ref_node : Node?,
) -> Unit {
  self.as_node().moveBefore(moved_node, ref_node)
}

///|
/// Inherited from Node
pub fn Element::compareDocumentPosition(self : Self, other : Node) -> Int {
  self.as_node().compareDocumentPosition(other)
}

///|
/// Inherited from Node
pub fn Element::getRootNode(self : Self) -> Node {
  self.as_node().getRootNode()
}

///|
/// Inherited from Node
pub fn Element::isEqualNode(self : Self, other : Node?) -> Bool {
  self.as_node().isEqualNode(other)
}

///|
/// Inherited from Node
pub fn Element::isSameNode(self : Self, other : Node?) -> Bool {
  self.as_node().isSameNode(other)
}

///|
/// Inherited from Node
pub fn Element::normalize(self : Self) -> Unit {
  self.as_node().normalize()
}

///|
/// Inherited from Node
pub fn Element::nodeValue(self : Self) -> String? {
  self.as_node().nodeValue()
}

///|
/// Inherited from Node
pub fn Element::setNodeValue(self : Self, value : String?) -> Unit {
  self.as_node().setNodeValue(value)
}

///|
/// Inherited from Node
pub fn Element::ownerDocument(self : Self) -> Document? {
  self.as_node().ownerDocument()
}

///|
/// Inherited from Node
pub fn Element::isConnected(self : Self) -> Bool {
  self.as_node().isConnected()
}

///|
/// Inherited from EventTarget
#alias(add_event_listener)
pub fn Element::addEventListener(
  self : Self,
  event_type : String,
  handler : (@core.Any) -> Unit,
  capture? : Bool = false,
  once? : Bool = false,
  passive? : Bool = false,
  signal? : @js_async.AbortSignal,
) -> Unit {
  self
  .as_node()
  .as_event_target()
  .addEventListener(event_type, handler, capture~, once~, passive~, signal?)
}

///|
/// Inherited from EventTarget
pub fn Element::on(
  self : Self,
  event_type : String,
  handler : (@core.Any) -> Unit,
  capture? : Bool = false,
  once? : Bool = false,
  passive? : Bool = false,
  signal? : @js_async.AbortSignal,
) -> Unit {
  self
  .as_node()
  .as_event_target()
  .on(event_type, handler, capture~, once~, passive~, signal?)
}

///|
/// Inherited from EventTarget
#alias(remove_event_listener)
pub fn Element::removeEventListener(
  self : Self,
  event_type : String,
  handler : (@core.Any) -> Unit,
  capture? : Bool = false,
) -> Unit {
  self
  .as_node()
  .as_event_target()
  .removeEventListener(event_type, handler, capture~)
}

///|
/// Inherited from EventTarget
pub fn Element::off(
  self : Self,
  event_type : String,
  handler : (@core.Any) -> Unit,
  capture? : Bool = false,
) -> Unit {
  self.as_node().as_event_target().off(event_type, handler, capture~)
}

///|
/// Inherited from EventTarget
#alias(dispatch_event)
pub fn Element::dispatchEvent(self : Self, event : @event.Event) -> Bool {
  self.as_node().as_event_target().dispatchEvent(event)
}