///|
#external
pub type HTMLDivElement

///|
pub fn HTMLDivElement::as_any(self : HTMLDivElement) -> @core.Any = "%identity"

///|
pub fn HTMLDivElement::as_event_target(
  self : HTMLDivElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLDivElement::as_node(self : HTMLDivElement) -> Node = "%identity"

///|
pub fn HTMLDivElement::as_element(self : HTMLDivElement) -> Element = "%identity"

///|
pub fn HTMLDivElement::as_html_element(self : HTMLDivElement) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
/// HTMLCanvasElement represents a  element
/// https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement
pub(all) struct HTMLCanvasElement {
  mut width : Int
  mut height : Int
}

///|
pub impl Show for HTMLCanvasElement with fn output(self, logger) {
  write_dom_show(logger, self.as_any())
}

///|
pub fn HTMLCanvasElement::as_any(self : HTMLCanvasElement) -> @core.Any = "%identity"

///|
pub fn HTMLCanvasElement::as_event_target(
  self : HTMLCanvasElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLCanvasElement::as_node(self : HTMLCanvasElement) -> Node = "%identity"

///|
pub fn HTMLCanvasElement::as_element(self : HTMLCanvasElement) -> Element = "%identity"

///|
pub fn HTMLCanvasElement::as_html_element(
  self : HTMLCanvasElement,
) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
/// Canvas methods
pub fn HTMLCanvasElement::getContext(
  self : Self,
  context_type : String,
) -> @core.Any {
  self.as_any()._call("getContext", [@core.any(context_type)]).cast()
}

///|
pub fn HTMLCanvasElement::toDataURL(
  self : Self,
  image_type? : String,
  quality? : Double,
) -> String {
  match (image_type, quality) {
    (Some(t), Some(q)) =>
      self.as_any()._call("toDataURL", [@core.any(t), @core.any(q)]).cast()
    (Some(t), None) => self.as_any()._call("toDataURL", [@core.any(t)]).cast()
    (None, _) => self.as_any()._call("toDataURL", []).cast()
  }
}

///|
pub async fn HTMLCanvasElement::toBlob(
  self : Self,
  image_type? : String,
  quality? : Double,
) -> @blob.Blob {
  let promise : @js.Promise[@blob.Blob] = match (image_type, quality) {
    (Some(t), Some(q)) =>
      self.as_any()._call("toBlob", [@core.any(t), @core.any(q)]).cast()
    (Some(t), None) => self.as_any()._call("toBlob", [@core.any(t)]).cast()
    (None, _) => self.as_any()._call("toBlob", []).cast()
  }
  promise.wait()
}

///|
#external
pub type HTMLBodyElement

///|
pub fn HTMLBodyElement::as_any(self : HTMLBodyElement) -> @core.Any = "%identity"

///|
pub fn HTMLBodyElement::as_event_target(
  self : HTMLBodyElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLBodyElement::as_node(self : HTMLBodyElement) -> Node = "%identity"

///|
pub fn HTMLBodyElement::as_element(self : HTMLBodyElement) -> Element = "%identity"

///|
pub fn HTMLBodyElement::as_html_element(self : HTMLBodyElement) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
#external
pub type HTMLHeadElement

///|
pub fn HTMLHeadElement::as_any(self : HTMLHeadElement) -> @core.Any = "%identity"

///|
pub fn HTMLHeadElement::as_event_target(
  self : HTMLHeadElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLHeadElement::as_node(self : HTMLHeadElement) -> Node = "%identity"

///|
pub fn HTMLHeadElement::as_element(self : HTMLHeadElement) -> Element = "%identity"

///|
pub fn HTMLHeadElement::as_html_element(self : HTMLHeadElement) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
#external
pub type HTMLHtmlElement

///|
pub fn HTMLHtmlElement::as_any(self : HTMLHtmlElement) -> @core.Any = "%identity"

///|
pub fn HTMLHtmlElement::as_event_target(
  self : HTMLHtmlElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLHtmlElement::as_node(self : HTMLHtmlElement) -> Node = "%identity"

///|
pub fn HTMLHtmlElement::as_element(self : HTMLHtmlElement) -> Element = "%identity"

///|
pub fn HTMLHtmlElement::as_html_element(self : HTMLHtmlElement) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
#external
pub type HTMLSpanElement

///|
pub fn HTMLSpanElement::as_any(self : HTMLSpanElement) -> @core.Any = "%identity"

///|
pub fn HTMLSpanElement::as_event_target(
  self : HTMLSpanElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLSpanElement::as_node(self : HTMLSpanElement) -> Node = "%identity"

///|
pub fn HTMLSpanElement::as_element(self : HTMLSpanElement) -> Element = "%identity"

///|
pub fn HTMLSpanElement::as_html_element(self : HTMLSpanElement) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
/// HTMLAnchorElement represents an  element
/// https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement
pub(all) struct HTMLAnchorElement {
  mut href : String
  mut target : String
}

///|
pub fn HTMLAnchorElement::as_any(self : HTMLAnchorElement) -> @core.Any = "%identity"

///|
pub fn HTMLAnchorElement::as_event_target(
  self : HTMLAnchorElement,
) -> @event.EventTarget = "%identity"

///|
pub fn HTMLAnchorElement::as_node(self : HTMLAnchorElement) -> Node = "%identity"

///|
pub fn HTMLAnchorElement::as_element(self : HTMLAnchorElement) -> Element = "%identity"

///|
pub fn HTMLAnchorElement::as_html_element(
  self : HTMLAnchorElement,
) -> HTMLElement = "%identity"

///|

///|

///|

///|

///|

///|
/// HTMLButtonElement represents a