# std/dom

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

Declaration of the Document Object Model for the JavaScript backend.

# Document Ready

- Basic example of a document ready:

Example: cmd: -b:js -r:off

    import std/dom
    proc example(e: Event) = echo "Document is ready"
    document.addEventListener("DOMContentLoaded", example)  # You can also use "load" event.

- This example runs 5 seconds after the document ready:

Example: cmd: -b:js -r:off

    import std/dom
    proc example() = echo "5 seconds after document ready"
    proc domReady(e: Event) = discard setTimeout(example, 5_000) # Document is ready.
    document.addEventListener("DOMContentLoaded", domReady)

# Document onUnload

- Simple example of how to implement code that runs when the page unloads:

Example: cmd: -b:js -r:off

    import std/dom
    proc example(e: Event) = echo "Document is unloaded"
    document.addEventListener("unload", example)  # You can also use "beforeunload".

# Document Autorefresh

- Minimal example of a document autorefresh:

Example: cmd: -b:js -r:off

    import std/dom
    proc example() = window.location.reload()
    discard setTimeout(example, 5_000)

- For more examples, see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

# Imports

since

# Types

    AddEventListenerOptions = object
      capture*: bool
      once*: bool
      passive*: bool

  Source Edit

    AnchorElement {.importc.} = ref object of Element
      text*: cstring
      x*, y*: int

  Source Edit

    Blob {.importc.} = ref object of RootObj
      size*: int

  see docs Source Edit

    BoundingRect {.importc.} = object
      top*, bottom*, left*, right*, x*, y*, width*, height*: float

  Source Edit

    ClassList {.importc.} = ref object of RootObj

  Source Edit

    ClipboardEvent {.importc.} = object of Event
      clipboardData*: DataTransfer

  see docs Source Edit

    DataTransfer {.importc.} = ref object of RootObj
      dropEffect*: cstring
      effectAllowed*: cstring
      files*: seq[Element]
      items*: seq[DataTransferItem]
      types*: seq[cstring]

  see docs Source Edit

    DataTransferDropEffect {.pure.} = enum
      None = "none", Copy = "copy", Link = "link", Move = "move"

  Source Edit

    DataTransferEffectAllowed {.pure.} = enum
      None = "none", Copy = "copy", CopyLink = "copyLink", CopyMove = "copyMove",
      Link = "link", LinkMove = "linkMove", Move = "move", All = "all",
      Uninitialized = "uninitialized"

  Source Edit

    DataTransferItem {.importc.} = ref object of RootObj
      kind*: cstring

  see docs Source Edit

    DataTransferItemKind {.pure.} = enum
      File = "file", String = "string"

  Source Edit

    Document {.importc.} = ref object of Node
      activeElement*: Element
      documentElement*: Element
      alinkColor*: cstring
      bgColor*: cstring
      body*: Element
      charset*: cstring
      cookie*: cstring
      defaultCharset*: cstring
      fgColor*: cstring
      head*: Element
      hidden*: bool
      lastModified*: cstring
      linkColor*: cstring
      referrer*: cstring
      title*: cstring
      URL*: cstring
      visibilityState*: cstring
      vlinkColor*: cstring
      anchors*: seq[AnchorElement]
      forms*: seq[FormElement]
      images*: seq[ImageElement]
      applets*: seq[Element]
      embeds*: seq[EmbedElement]
      links*: seq[LinkElement]
      fonts*: FontFaceSet

  Source Edit

    DocumentOrShadowRoot {.importc.} = object of RootObj
      activeElement*: Element

  Source Edit

    DomEvent {.pure.} = enum
      Abort = "abort", BeforeInput = "beforeinput", Blur = "blur", Click = "click",
      CompositionEnd = "compositionend", CompositionStart = "compositionstart",
      CompositionUpdate = "compositionupdate", DblClick = "dblclick",
      Error = "error", Focus = "focus", FocusIn = "focusin", FocusOut = "focusout",
      Input = "input", KeyDown = "keydown", KeyPress = "keypress", KeyUp = "keyup",
      Load = "load", MouseDown = "mousedown", MouseEnter = "mouseenter",
      MouseLeave = "mouseleave", MouseMove = "mousemove", MouseOut = "mouseout",
      MouseOver = "mouseover", MouseUp = "mouseup", Resize = "resize",
      Scroll = "scroll", Select = "select", Storage = "storage", Unload = "unload",
      Wheel = "wheel"

  see docs Source Edit

    DomException {.importc.} = ref object

  The DOMException interface represents an abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. Each exception has a name, which is a short "CamelCase" style string identifying the error or abnormal condition. https://developer.mozilla.org/en-US/docs/Web/API/DOMException Source Edit

    DomParser = ref object

  DOM Parser object (defined on browser only, may not be on NodeJS).

  - https://developer.mozilla.org/en-US/docs/Web/API/DOMParser

        let prsr = newDomParser()
        discard prsr.parseFromString("<html><marquee>Hello World</marquee></html>".cstring, "text/html".cstring)

  Source Edit

    DragEvent {.importc.} = object of MouseEvent
      dataTransfer*: DataTransfer

  see docs Source Edit

    DragEventTypes = enum
      Drag = "drag", DragEnd = "dragend", DragEnter = "dragenter",
      DragExit = "dragexit", DragLeave = "dragleave", DragOver = "dragover",
      DragStart = "dragstart", Drop = "drop"

  Source Edit

    Element {.importc.} = ref object of Node
      className*: cstring
      classList*: ClassList
      checked*: bool
      defaultChecked*: bool
      defaultValue*: cstring
      disabled*: bool
      form*: FormElement
      name*: cstring
      readOnly*: bool
      options*: seq[OptionElement]
      selectedOptions*: seq[OptionElement]
      clientWidth*, clientHeight*: int
      contentEditable*: cstring
      isContentEditable*: bool
      dir*: cstring
      offsetHeight*: int
      offsetWidth*: int
      offsetLeft*: int
      offsetTop*: int

  Source Edit

    EmbedElement {.importc.} = ref object of Element
      height*: int
      hspace*: int
      src*: cstring
      width*: int
      vspace*: int

  Source Edit

    Event {.importc.} = ref object of RootObj
      bubbles*: bool
      cancelBubble*: bool
      cancelable*: bool
      composed*: bool
      currentTarget*: Node
      defaultPrevented*: bool
      eventPhase*: int
      target*: Node
      isTrusted*: bool

  see docs Source Edit

    EventPhase = enum
      None = 0, CapturingPhase, AtTarget, BubblingPhase

  Source Edit

    EventTarget {.importc.} = ref object of RootObj
      onabort*: proc (event: Event) {.closure.}
      onblur*: proc (event: Event) {.closure.}
      onchange*: proc (event: Event) {.closure.}
      onclick*: proc (event: Event) {.closure.}
      ondblclick*: proc (event: Event) {.closure.}
      onerror*: proc (event: Event) {.closure.}
      onfocus*: proc (event: Event) {.closure.}
      onkeydown*: proc (event: Event) {.closure.}
      onkeypress*: proc (event: Event) {.closure.}
      onkeyup*: proc (event: Event) {.closure.}
      onload*: proc (event: Event) {.closure.}
      onmousedown*: proc (event: Event) {.closure.}
      onmousemove*: proc (event: Event) {.closure.}
      onmouseout*: proc (event: Event) {.closure.}
      onmouseover*: proc (event: Event) {.closure.}
      onmouseup*: proc (event: Event) {.closure.}
      onreset*: proc (event: Event) {.closure.}
      onselect*: proc (event: Event) {.closure.}
      onstorage*: proc (event: Event) {.closure.}
      onsubmit*: proc (event: Event) {.closure.}
      onunload*: proc (event: Event) {.closure.}
      onloadstart*: proc (event: Event) {.closure.}
      onprogress*: proc (event: Event) {.closure.}
      onloadend*: proc (event: Event) {.closure.}

  Source Edit

    File {.importc.} = ref object of Blob
      lastModified*: int
      name*: cstring

  see docs Source Edit

    FileReader {.importc.} = ref object of EventTarget

  The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. https://developer.mozilla.org/en-US/docs/Web/API/FileReader Source Edit

    FileReaderState = distinct range[0'u16 .. 2'u16]

  Source Edit

    FontFaceSet {.importc.} = ref object
      ready*: FontFaceSetReady
      onloadingdone*: proc (event: Event)

  see: docs Source Edit

    FontFaceSetReady {.importc.} = ref object
      then*: proc (cb: proc ())

  see: docs Source Edit

    FormElement {.importc.} = ref object of Element
      acceptCharset*: cstring
      action*: cstring
      autocomplete*: cstring
      elements*: seq[Element]
      encoding*: cstring
      enctype*: cstring
      length*: int
      noValidate*: bool
      target*: cstring

  see docs Source Edit

    Frame {.importc.} = ref object of Window

  Source Edit

    History {.importc.} = ref object of RootObj
      length*: int

  Source Edit

    HTMLSlotElement {.importc.} = ref object of RootObj
      name*: cstring

  Source Edit

    ImageElement {.importc.} = ref object of Element
      border*: int
      complete*: bool
      height*: int
      hspace*: int
      lowsrc*: cstring
      src*: cstring
      vspace*: int
      width*: int

  Source Edit

    InputElement {.importc.} = ref object of Element
      formAction*: cstring
      formEncType*: cstring
      formMethod*: cstring
      formNoValidate*: bool
      formTarget*: cstring
      autofocus*: bool
      required*: bool
      value*: cstring
      validity*: ValidityState
      validationMessage*: cstring
      willValidate*: bool
      indeterminate*: bool
      alt*: cstring
      height*: cstring
      src*: cstring
      width*: cstring
      accept*: cstring
      files*: seq[Blob]
      autocomplete*: cstring
      maxLength*: int
      size*: int
      pattern*: cstring
      placeholder*: cstring
      min*: cstring
      max*: cstring
      selectionStart*: int
      selectionEnd*: int
      selectionDirection*: cstring
      dirName*: cstring
      accessKey*: cstring
      list*: Element
      multiple*: bool
      labels*: seq[Element]
      step*: cstring
      valueAsDate*: cstring
      valueAsNumber*: float

  see docs Source Edit

    Interval {.importc.} = ref object of RootObj

  Source Edit

    KeyboardEvent {.importc.} = ref object of UIEvent
      altKey*, ctrlKey*, metaKey*, shiftKey*: bool
      code*: cstring
      isComposing*: bool
      key*: cstring
      keyCode*: int
      location*: int

  see docs Source Edit

    KeyboardEventKey {.pure.} = enum
      Alt, AltGraph, CapsLock, Control, Fn, FnLock, Hyper, Meta, NumLock,
      ScrollLock, Shift, Super, Symbol, SymbolLock, ArrowDown, ArrowLeft,
      ArrowRight, ArrowUp, End, Home, PageDown, PageUp, Backspace, Clear, Copy,
      CrSel, Cut, Delete, EraseEof, ExSel, Insert, Paste, Redo, Undo, Accept, Again,
      Attn, Cancel, ContextMenu, Escape, Execute, Find, Finish, Help, Pause, Play,
      Props, Select, ZoomIn, ZoomOut, BrigtnessDown, BrigtnessUp, Eject, LogOff,
      Power, PowerOff, PrintScreen, Hibernate, Standby, WakeUp, AllCandidates,
      Alphanumeric, CodeInput, Compose, Convert, Dead, FinalMode, GroupFirst,
      GroupLast, GroupNext, GroupPrevious, ModeChange, NextCandidate, NonConvert,
      PreviousCandidate, Process, SingleCandidate, HangulMode, HanjaMode, JunjaMode,
      Eisu, Hankaku, Hiragana, HiraganaKatakana, KanaMode, KanjiMode, Katakana,
      Romaji, Zenkaku, ZenkakuHanaku, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11,
      F12, F13, F14, F15, F16, F17, F18, F19, F20, Soft1, Soft2, Soft3, Soft4,
      AppSwitch, Call, Camera, CameraFocus, EndCall, GoBack, GoHome, HeadsetHook,
      LastNumberRedial, Notification, MannerMode, VoiceDial, ChannelDown, ChannelUp,
      MediaFastForward, MediaPause, MediaPlay, MediaPlayPause, MediaRecord,
      MediaRewind, MediaStop, MediaTrackNext, MediaTrackPrevious, AudioBalanceLeft,
      AudioBalanceRight, AudioBassDown, AudioBassBoostDown, AudioBassBoostToggle,
      AudioBassBoostUp, AudioBassUp, AudioFaderFront, AudioFaderRear,
      AudioSurroundModeNext, AudioTrebleDown, AudioTrebleUp, AudioVolumeDown,
      AUdioVolumeMute, AudioVolumeUp, MicrophoneToggle, MicrophoneVolumeDown,
      MicrophoneVolumeMute, MicrophoneVolumeUp, TV, TV3DMode, TVAntennaCable,
      TVAudioDescription, TVAudioDescriptionMixDown, TVAudioDescriptionMixUp,
      TVContentsMenu, TVDataService, TVInput, TVInputComponent1, TVInputComponent2,
      TVInputComposite1, TVInputComposite2, TVInputHDMI1, TVInputHDMI2,
      TVInputHDMI3, TVInputHDMI4, TVInputVGA1, TVMediaContext, TVNetwork,
      TVNumberEntry, TVPower, TVRadioService, TVSatellite, TVSatelliteBS,
      TVSatelliteCS, TVSatelliteToggle, TVTerrestrialAnalog, TVTerrestrialDigital,
      TVTimer, AVRInput, AVRPower, ColorF0Red, ColorF1Green, ColorF2Yellow,
      ColorF3Blue, ColorF4Grey, ColorF5Brown, ClosedCaptionToggle, Dimmer,
      DisplaySwap, DVR, Exit, FavoriteClear0, FavoriteClear1, FavoriteClear2,
      FavoriteClear3, FavoriteRecall0, FavoriteRecall1, FavoriteRecall2,
      FavoriteRecall3, FavoriteStore0, FavoriteStore1, FavoriteStore2,
      FavoriteStore3, Guide, GuideNextDay, GuidePreviousDay, Info, InstantReplay,
      Link, ListProgram, LiveContent, Lock, MediaApps, MediaAudioTrack, MediaLast,
      MediaSkipBackward, MediaSkipForward, MediaStepBackward, MediaStepForward,
      MediaTopMenu, NavigateIn, NavigateNext, NavigateOut, NavigatePrevious,
      NextFavoriteChannel, NextUserProfile, OnDemand, Pairing, PinPDown, PinPMove,
      PinPUp, PlaySpeedDown, PlaySpeedReset, PlaySpeedUp, RandomToggle,
      RcLowBattery, RecordSpeedNext, RfBypass, ScanChannelsToggle, ScreenModeNext,
      Settings, SplitScreenToggle, STBInput, STBPower, Subtitle, Teletext,
      VideoModeNext, Wink, ZoomToggle, SpeechCorrectionList, SpeechInputToggle,
      Close, New, Open, Print, Save, SpellCheck, MailForward, MailReply, MailSend,
      LaunchCalculator, LaunchCalendar, LaunchContacts, LaunchMail,
      LaunchMediaPlayer, LaunchMusicPlayer, LaunchMyComputer, LaunchPhone,
      LaunchScreenSaver, LaunchSpreadsheet, LaunchWebBrowser, LaunchWebCam,
      LaunchWordProcessor, LaunchApplication1, LaunchApplication2,
      LaunchApplication3, LaunchApplication4, LaunchApplication5,
      LaunchApplication6, LaunchApplication7, LaunchApplication8,
      LaunchApplication9, LaunchApplication10, LaunchApplication11,
      LaunchApplication12, LaunchApplication13, LaunchApplication14,
      LaunchApplication15, LaunchApplication16, BrowserBack, BrowserFavorites,
      BrowserForward, BrowserHome, BrowserRefresh, BrowserSearch, BrowserStop,
      Key11, Key12, Separator

  see docs Source Edit

    LinkElement {.importc.} = ref object of Element
      target*: cstring
      text*: cstring
      x*: int
      y*: int

  Source Edit

    Location {.importc.} = ref object of RootObj
      hash*: cstring
      host*: cstring
      hostname*: cstring
      href*: cstring
      pathname*: cstring
      port*: cstring
      protocol*: cstring
      search*: cstring
      origin*: cstring

  Source Edit

    LocationBar {.importc.} = object of RootObj
      visible*: bool

  Source Edit

    MediaQueryList {.importc.} = ref object of EventTarget
      matches*: bool
      media*: cstring

  Source Edit

    MenuBar = LocationBar

  Source Edit

    MimeType {.importc.} = object of RootObj
      description*: cstring
      enabledPlugin*: ref Plugin
      suffixes*: seq[cstring]

  Source Edit

    MouseButtons = enum
      NoButton = 0, PrimaryButton = 1, SecondaryButton = 2, AuxilaryButton = 4,
      FourthButton = 8, FifthButton = 16

  Source Edit

    MouseEvent {.importc.} = ref object of UIEvent
      altKey*, ctrlKey*, metaKey*, shiftKey*: bool
      button*: int
      buttons*: int
      clientX*, clientY*: int
      movementX*, movementY*: int
      offsetX*, offsetY*: int
      pageX*, pageY*: int
      relatedTarget*: EventTarget
      screenX*, screenY*: int
      x*, y*: int

  see docs Source Edit

    Navigator {.importc.} = ref object of RootObj
      appCodeName*: cstring
      appName*: cstring
      appVersion*: cstring
      buildID*: cstring          ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/buildID
      cookieEnabled*: bool
      deviceMemory*: float       ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/deviceMemory
      doNotTrack*: cstring       ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/doNotTrack
      language*: cstring
      languages*: seq[cstring]   ## https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages
      maxTouchPoints*: cint      ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/maxTouchPoints
      onLine*: bool              ## https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine
      oscpu*: cstring            ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/oscpu
      platform*: cstring
      userAgent*: cstring
      vendor*: cstring           ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vendor
      webdriver*: bool           ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/webdriver
      mimeTypes*: seq[ref MimeType]

  Source Edit

    Node {.importc.} = ref object of EventTarget
      attributes*: seq[Node]
      childNodes*: seq[Node]
      children*: seq[Node]
      data*: cstring
      firstChild*: Node
      lastChild*: Node
      nextSibling*: Node
      nodeName*: cstring
      nodeType*: NodeType
      nodeValue*: cstring
      parentNode*: Node
      content*: Node
      previousSibling*: Node
      ownerDocument*: Document
      innerHTML*: cstring
      outerHTML*: cstring
      innerText*: cstring
      textContent*: cstring
      style*: Style
      baseURI*: cstring
      parentElement*: Element
      isConnected*: bool

  Source Edit

    NodeType = enum
      ElementNode = 1, AttributeNode, TextNode, CDATANode, EntityRefNode,
      EntityNode, ProcessingInstructionNode, CommentNode, DocumentNode,
      DocumentTypeNode, DocumentFragmentNode, NotationNode

  Source Edit

    OptionElement {.importc.} = ref object of Element
      defaultSelected*: bool
      selected*: bool
      selectedIndex*: int
      text*: cstring
      value*: cstring

  Source Edit

    Performance {.importc.} = ref object
      memory*: PerformanceMemory
      timing*: PerformanceTiming

  Source Edit

    PerformanceMemory {.importc.} = ref object
      jsHeapSizeLimit*: float
      totalJSHeapSize*: float
      usedJSHeapSize*: float

  Source Edit

    PerformanceTiming {.importc.} = ref object
      connectStart*: float
      domComplete*: float
      domContentLoadedEventEnd*: float
      domContentLoadedEventStart*: float
      domInteractive*: float
      domLoading*: float
      domainLookupEnd*: float
      domainLookupStart*: float
      fetchStart*: float
      loadEventEnd*: float
      loadEventStart*: float
      navigationStart*: float
      redirectEnd*: float
      redirectStart*: float
      requestStart*: float
      responseEnd*: float
      responseStart*: float
      secureConnectionStart*: float
      unloadEventEnd*: float
      unloadEventStart*: float

  Source Edit

    PersonalBar = LocationBar

  Source Edit

    Plugin {.importc.} = object of RootObj
      description*: cstring
      filename*: cstring
      name*: cstring

  Source Edit

    Range {.importc.} = ref object
      collapsed*: bool
      commonAncestorContainer*: Node
      endContainer*: Node
      endOffset*: int
      startContainer*: Node
      startOffset*: int

  see docs Source Edit

    RootNodeOptions = object of RootObj
      composed*: bool

  Source Edit

    Screen {.importc.} = ref object of RootObj
      availHeight*: int
      availWidth*: int
      colorDepth*: int
      height*: int
      pixelDepth*: int
      width*: int

  Source Edit

    ScrollBars = LocationBar

  Source Edit

    ScrollIntoViewOptions = object
      behavior*: cstring
      inline*: cstring

  Source Edit

    Selection {.importc.} = ref object
      anchorNode*: Node
      anchorOffset*: int
      focusNode*: Node
      focusOffset*: int
      isCollapsed*: bool
      rangeCount*: int

  see docs Source Edit

    ShadowRoot {.importc.} = ref object of DocumentOrShadowRoot
      delegatesFocus*: bool
      host*: Element
      innerHTML*: cstring
      mode*: cstring

  Source Edit

    ShadowRootInit = object of RootObj
      mode*: cstring
      delegatesFocus*: bool

  Source Edit

    SlotOptions = object of RootObj
      flatten*: bool

  Source Edit

    StatusBar = LocationBar

  Source Edit

    Storage {.importc.} = ref object

  Source Edit

    StorageEvent {.importc.} = ref object of Event
      key*: cstring
      newValue*, oldValue*: cstring
      storageArea*: Storage
      url*: cstring

  see docs Source Edit

    Style {.importc.} = ref object of RootObj
      alignContent*: cstring
      alignItems*: cstring
      alignSelf*: cstring
      all*: cstring
      animation*: cstring
      animationDelay*: cstring
      animationDirection*: cstring
      animationDuration*: cstring
      animationFillMode*: cstring
      animationIterationCount*: cstring
      animationName*: cstring
      animationPlayState*: cstring
      animationTimingFunction*: cstring
      backdropFilter*: cstring
      backfaceVisibility*: cstring
      background*: cstring
      backgroundAttachment*: cstring
      backgroundBlendMode*: cstring
      backgroundClip*: cstring
      backgroundColor*: cstring
      backgroundImage*: cstring
      backgroundOrigin*: cstring
      backgroundPosition*: cstring
      backgroundRepeat*: cstring
      backgroundSize*: cstring
      blockSize*: cstring
      border*: cstring
      borderBlock*: cstring
      borderBlockColor*: cstring
      borderBlockEnd*: cstring
      borderBlockEndColor*: cstring
      borderBlockEndStyle*: cstring
      borderBlockEndWidth*: cstring
      borderBlockStart*: cstring
      borderBlockStartColor*: cstring
      borderBlockStartStyle*: cstring
      borderBlockStartWidth*: cstring
      borderBlockStyle*: cstring
      borderBlockWidth*: cstring
      borderBottom*: cstring
      borderBottomColor*: cstring
      borderBottomLeftRadius*: cstring
      borderBottomRightRadius*: cstring
      borderBottomStyle*: cstring
      borderBottomWidth*: cstring
      borderCollapse*: cstring
      borderColor*: cstring
      borderEndEndRadius*: cstring
      borderEndStartRadius*: cstring
      borderImage*: cstring
      borderImageOutset*: cstring
      borderImageRepeat*: cstring
      borderImageSlice*: cstring
      borderImageSource*: cstring
      borderImageWidth*: cstring
      borderInline*: cstring
      borderInlineColor*: cstring
      borderInlineEnd*: cstring
      borderInlineEndColor*: cstring
      borderInlineEndStyle*: cstring
      borderInlineEndWidth*: cstring
      borderInlineStart*: cstring
      borderInlineStartColor*: cstring
      borderInlineStartStyle*: cstring
      borderInlineStartWidth*: cstring
      borderInlineStyle*: cstring
      borderInlineWidth*: cstring
      borderLeft*: cstring
      borderLeftColor*: cstring
      borderLeftStyle*: cstring
      borderLeftWidth*: cstring
      borderRadius*: cstring
      borderRight*: cstring
      borderRightColor*: cstring
      borderRightStyle*: cstring
      borderRightWidth*: cstring
      borderSpacing*: cstring
      borderStartEndRadius*: cstring
      borderStartStartRadius*: cstring
      borderStyle*: cstring
      borderTop*: cstring
      borderTopColor*: cstring
      borderTopLeftRadius*: cstring
      borderTopRightRadius*: cstring
      borderTopStyle*: cstring
      borderTopWidth*: cstring
      borderWidth*: cstring
      bottom*: cstring
      boxDecorationBreak*: cstring
      boxShadow*: cstring
      boxSizing*: cstring
      breakAfter*: cstring
      breakBefore*: cstring
      breakInside*: cstring
      captionSide*: cstring
      caretColor*: cstring
      clear*: cstring
      clip*: cstring
      clipPath*: cstring
      color*: cstring
      colorAdjust*: cstring
      columnCount*: cstring
      columnFill*: cstring
      columnGap*: cstring
      columnRule*: cstring
      columnRuleColor*: cstring
      columnRuleStyle*: cstring
      columnRuleWidth*: cstring
      columnSpan*: cstring
      columnWidth*: cstring
      columns*: cstring
      contain*: cstring
      content*: cstring
      counterIncrement*: cstring
      counterReset*: cstring
      counterSet*: cstring
      cursor*: cstring
      direction*: cstring
      display*: cstring
      emptyCells*: cstring
      filter*: cstring
      flex*: cstring
      flexBasis*: cstring
      flexDirection*: cstring
      flexFlow*: cstring
      flexGrow*: cstring
      flexShrink*: cstring
      flexWrap*: cstring
      cssFloat*: cstring
      font*: cstring
      fontFamily*: cstring
      fontFeatureSettings*: cstring
      fontKerning*: cstring
      fontLanguageOverride*: cstring
      fontOpticalSizing*: cstring
      fontSize*: cstring
      fontSizeAdjust*: cstring
      fontStretch*: cstring
      fontStyle*: cstring
      fontSynthesis*: cstring
      fontVariant*: cstring
      fontVariantAlternates*: cstring
      fontVariantCaps*: cstring
      fontVariantEastAsian*: cstring
      fontVariantLigatures*: cstring
      fontVariantNumeric*: cstring
      fontVariantPosition*: cstring
      fontVariationSettings*: cstring
      fontWeight*: cstring
      gap*: cstring
      grid*: cstring
      gridArea*: cstring
      gridAutoColumns*: cstring
      gridAutoFlow*: cstring
      gridAutoRows*: cstring
      gridColumn*: cstring
      gridColumnEnd*: cstring
      gridColumnStart*: cstring
      gridRow*: cstring
      gridRowEnd*: cstring
      gridRowStart*: cstring
      gridTemplate*: cstring
      gridTemplateAreas*: cstring
      gridTemplateColumns*: cstring
      gridTemplateRows*: cstring
      hangingPunctuation*: cstring
      height*: cstring
      hyphens*: cstring
      imageOrientation*: cstring
      imageRendering*: cstring
      inlineSize*: cstring
      inset*: cstring
      insetBlock*: cstring
      insetBlockEnd*: cstring
      insetBlockStart*: cstring
      insetInline*: cstring
      insetInlineEnd*: cstring
      insetInlineStart*: cstring
      isolation*: cstring
      justifyContent*: cstring
      justifyItems*: cstring
      justifySelf*: cstring
      left*: cstring
      letterSpacing*: cstring
      lineBreak*: cstring
      lineHeight*: cstring
      listStyle*: cstring
      listStyleImage*: cstring
      listStylePosition*: cstring
      listStyleType*: cstring
      margin*: cstring
      marginBlock*: cstring
      marginBlockEnd*: cstring
      marginBlockStart*: cstring
      marginBottom*: cstring
      marginInline*: cstring
      marginInlineEnd*: cstring
      marginInlineStart*: cstring
      marginLeft*: cstring
      marginRight*: cstring
      marginTop*: cstring
      mask*: cstring
      maskBorder*: cstring
      maskBorderMode*: cstring
      maskBorderOutset*: cstring
      maskBorderRepeat*: cstring
      maskBorderSlice*: cstring
      maskBorderSource*: cstring
      maskBorderWidth*: cstring
      maskClip*: cstring
      maskComposite*: cstring
      maskImage*: cstring
      maskMode*: cstring
      maskOrigin*: cstring
      maskPosition*: cstring
      maskRepeat*: cstring
      maskSize*: cstring
      maskType*: cstring
      maxBlockSize*: cstring
      maxHeight*: cstring
      maxInlineSize*: cstring
      maxWidth*: cstring
      minBlockSize*: cstring
      minHeight*: cstring
      minInlineSize*: cstring
      minWidth*: cstring
      mixBlendMode*: cstring
      objectFit*: cstring
      objectPosition*: cstring
      offset*: cstring
      offsetAnchor*: cstring
      offsetDistance*: cstring
      offsetPath*: cstring
      offsetRotate*: cstring
      opacity*: cstring
      order*: cstring
      orphans*: cstring
      outline*: cstring
      outlineColor*: cstring
      outlineOffset*: cstring
      outlineStyle*: cstring
      outlineWidth*: cstring
      overflow*: cstring
      overflowAnchor*: cstring
      overflowBlock*: cstring
      overflowInline*: cstring
      overflowWrap*: cstring
      overflowX*: cstring
      overflowY*: cstring
      overscrollBehavior*: cstring
      overscrollBehaviorBlock*: cstring
      overscrollBehaviorInline*: cstring
      overscrollBehaviorX*: cstring
      overscrollBehaviorY*: cstring
      padding*: cstring
      paddingBlock*: cstring
      paddingBlockEnd*: cstring
      paddingBlockStart*: cstring
      paddingBottom*: cstring
      paddingInline*: cstring
      paddingInlineEnd*: cstring
      paddingInlineStart*: cstring
      paddingLeft*: cstring
      paddingRight*: cstring
      paddingTop*: cstring
      pageBreakAfter*: cstring
      pageBreakBefore*: cstring
      pageBreakInside*: cstring
      paintOrder*: cstring
      perspective*: cstring
      perspectiveOrigin*: cstring
      placeContent*: cstring
      placeItems*: cstring
      placeSelf*: cstring
      pointerEvents*: cstring
      position*: cstring
      quotes*: cstring
      resize*: cstring
      right*: cstring
      rotate*: cstring
      rowGap*: cstring
      scale*: cstring
      scrollBehavior*: cstring
      scrollMargin*: cstring
      scrollMarginBlock*: cstring
      scrollMarginBlockEnd*: cstring
      scrollMarginBlockStart*: cstring
      scrollMarginBottom*: cstring
      scrollMarginInline*: cstring
      scrollMarginInlineEnd*: cstring
      scrollMarginInlineStart*: cstring
      scrollMarginLeft*: cstring
      scrollMarginRight*: cstring
      scrollMarginTop*: cstring
      scrollPadding*: cstring
      scrollPaddingBlock*: cstring
      scrollPaddingBlockEnd*: cstring
      scrollPaddingBlockStart*: cstring
      scrollPaddingBottom*: cstring
      scrollPaddingInline*: cstring
      scrollPaddingInlineEnd*: cstring
      scrollPaddingInlineStart*: cstring
      scrollPaddingLeft*: cstring
      scrollPaddingRight*: cstring
      scrollPaddingTop*: cstring
      scrollSnapAlign*: cstring
      scrollSnapStop*: cstring
      scrollSnapType*: cstring
      scrollbar3dLightColor*: cstring
      scrollbarArrowColor*: cstring
      scrollbarBaseColor*: cstring
      scrollbarColor*: cstring
      scrollbarDarkshadowColor*: cstring
      scrollbarFaceColor*: cstring
      scrollbarHighlightColor*: cstring
      scrollbarShadowColor*: cstring
      scrollbarTrackColor*: cstring
      scrollbarWidth*: cstring
      shapeImageThreshold*: cstring
      shapeMargin*: cstring
      shapeOutside*: cstring
      tabSize*: cstring
      tableLayout*: cstring
      textAlign*: cstring
      textAlignLast*: cstring
      textCombineUpright*: cstring
      textDecoration*: cstring
      textDecorationColor*: cstring
      textDecorationLine*: cstring
      textDecorationSkipInk*: cstring
      textDecorationStyle*: cstring
      textDecorationThickness*: cstring
      textEmphasis*: cstring
      textEmphasisColor*: cstring
      textEmphasisPosition*: cstring
      textEmphasisStyle*: cstring
      textIndent*: cstring
      textJustify*: cstring
      textOrientation*: cstring
      textOverflow*: cstring
      textRendering*: cstring
      textShadow*: cstring
      textTransform*: cstring
      textUnderlineOffset*: cstring
      textUnderlinePosition*: cstring
      top*: cstring
      touchAction*: cstring
      transform*: cstring
      transformBox*: cstring
      transformOrigin*: cstring
      transformStyle*: cstring
      transition*: cstring
      transitionDelay*: cstring
      transitionDuration*: cstring
      transitionProperty*: cstring
      transitionTimingFunction*: cstring
      translate*: cstring
      unicodeBidi*: cstring
      verticalAlign*: cstring
      visibility*: cstring
      whiteSpace*: cstring
      widows*: cstring
      width*: cstring
      willChange*: cstring
      wordBreak*: cstring
      wordSpacing*: cstring
      writingMode*: cstring
      zIndex*: cstring

  Source Edit

    TextAreaElement {.importc.} = ref object of Element
      value*: cstring
      selectionStart*, selectionEnd*: int
      selectionDirection*: cstring
      rows*, cols*: int

  see docs Source Edit

    TimeOut {.importc.} = ref object of RootObj

  Source Edit

    ToolBar = LocationBar

  Source Edit

    Touch {.importc.} = ref object of RootObj
      identifier*: int
      screenX*, screenY*, clientX*, clientY*, pageX*, pageY*: int
      target*: Element
      radiusX*, radiusY*: int
      rotationAngle*: int
      force*: float

  Source Edit

    TouchEvent {.importc.} = ref object of UIEvent
      changedTouches*, targetTouches*, touches*: seq[Touch]

  Source Edit

    TouchList {.importc.} = ref object of RootObj
      length*: int

  Source Edit

    UIEvent {.importc.} = ref object of Event
      detail*: int64
      view*: Window

  see docs Source Edit

    ValidityState {.importc.} = ref object
      badInput*: bool
      customError*: bool
      patternMismatch*: bool
      rangeOverflow*: bool
      rangeUnderflow*: bool
      stepMismatch*: bool
      tooLong*: bool
      tooShort*: bool
      typeMismatch*: bool
      valid*: bool
      valueMissing*: bool

  see docs Source Edit

    VisualViewport {.importc.} = ref object of EventTarget
      offsetLeft*, offsetTop*, pageLeft*, pageTop*, width*, height*, scale*: float
      onResize*, onScroll*: proc (event: Event) {.closure.}

  Source Edit

    Window {.importc.} = ref object of EventTarget
      document*: Document
      event*: Event
      history*: History
      location*: Location
      closed*: bool
      defaultStatus*: cstring
      devicePixelRatio*: float
      innerHeight*, innerWidth*: int
      locationbar*: ref LocationBar
      menubar*: ref MenuBar
      name*: cstring
      outerHeight*, outerWidth*: int
      pageXOffset*, pageYOffset*: int
      scrollX*: float
      scrollY*: float
      personalbar*: ref PersonalBar
      scrollbars*: ref ScrollBars
      statusbar*: ref StatusBar
      status*: cstring
      toolbar*: ref ToolBar
      frames*: seq[Frame]
      screen*: Screen
      performance*: Performance
      onpopstate*: proc (event: Event)
      localStorage*: Storage
      sessionStorage*: Storage
      parent*: Window

  Source Edit

# Vars

    document {.importc, nodecl.}: Document

  Source Edit

    navigator {.importc, nodecl.}: Navigator

  Source Edit

    screen {.importc, nodecl.}: Screen

  Source Edit

    window {.importc, nodecl.}: Window

  Source Edit

# Consts

    DomApiVersion = 3

  the version of DOM API we try to follow. No guarantees though. Source Edit

    fileReaderDone = 2'u

  Source Edit

    fileReaderEmpty = 0'u

  Source Edit

    fileReaderLoading = 1'u

  Source Edit

# Procs

    proc `$`(s: Selection): string {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc `[]`(x: Node; idx: int): Element {.importcpp: "#.childNodes[#]",
                                            ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc abort(f: FileReader) {.importcpp: "#.abort()", ...raises: [], tags: [],
                                forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/abort Source Edit

    proc add(c: ClassList; class: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc addEventListener(et: EventTarget; ev: cstring; cb: proc (ev: Event);
                          options: AddEventListenerOptions) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc addEventListener(et: EventTarget; ev: cstring; cb: proc (ev: Event);
                          useCapture: bool = false) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc after(self: Node; element: Node): Node {.importjs: "#.$1(@)", varargs,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/after Source Edit

    proc alert(w: Window; msg: cstring) {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc append(self: Node; element: Node): Node {.importjs: "#.$1(@)", varargs,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/append Source Edit

    proc appendChild(n, child: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc appendData(n: Node; data: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc assignedElements(n: HTMLSlotElement; options: SlotOptions): seq[Element] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc assignedNodes(n: HTMLSlotElement; options: SlotOptions): seq[Node] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc attachShadow(n: Element): ShadowRoot {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc back(h: History) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc back(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc before(self: Node; element: Node): Node {.importjs: "#.$1(@)", varargs,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/before Source Edit

    proc blur(e: Element) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc blur(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc cancelAnimationFrame(w: Window; id: int) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc canShare(self: Navigator; data: cstring): bool {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Navigator/canShare Source Edit

    proc checked(n: Node): bool {.importcpp: "#.checked", nodecl, ...raises: [],
                                  tags: [], forbids: [].}

  Source Edit

    proc checked=(n: Node; v: bool) {.importcpp: "#.checked = #", nodecl,
                                      ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc checkValidity(e: FormElement): bool {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc checkValidity(e: InputElement): bool {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc class(n: Node): cstring {.importcpp: "#.className", nodecl, ...raises: [],
                                   tags: [], forbids: [].}

  Source Edit

    proc class=(n: Node; v: cstring) {.importcpp: "#.className = #", nodecl,
                                       ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc clear(s: Storage) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc clearData(dt: DataTransfer; format: cstring) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc clearInterval(i: Interval) {.importc, nodecl, ...raises: [], tags: [],
                                      forbids: [].}

  Source Edit

    proc clearInterval(w: Window; interval: Interval) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc clearTimeout(t: TimeOut) {.importc, nodecl, ...raises: [], tags: [],
                                    forbids: [].}

  Source Edit

    proc clearTimeout(w: Window; timeout: TimeOut) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc click(e: Element) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc clientHeight(): int {.importcpp: "(window.innerHeight || document.documentElement.clientHeight)@",
                               nodecl, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc clientWidth(): int {.importcpp: "(window.innerWidth || document.documentElement.clientWidth)@",
                              nodecl, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc cloneNode(n: Node; copyContent: bool): Node {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc close(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc closest(self: Node; cssSelector: cstring): Node {.importjs: "#.$1(#)",
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/closest Source Edit

    proc compareDocumentPosition(n: Node; otherNode: Node): int {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc confirm(w: Window; msg: cstring): bool {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc contains(c: ClassList; class: cstring): bool {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc contains(n: Node): bool {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc createAttribute(d: Document; identifier: cstring): Node {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc createComment(d: Document; data: cstring): Node {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc createElement(d: Document; identifier: cstring): Element {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc createElementNS(d: Document; namespaceURI, qualifiedIdentifier: cstring): Element {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc createTextNode(d: Document; identifier: cstring): Node {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc decodeURI(uri: cstring): cstring {.importc, nodecl, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc decodeURIComponent(uri: cstring): cstring {.importc, nodecl, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc deleteData(n: Node; start, len: int) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc deleteFromDocument(s: Selection) {.importcpp, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc disabled=(n: Node; v: bool) {.importcpp: "#.disabled = #", nodecl,
                                       ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc disableExternalCapture(w: Window) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc dispatchEvent(et: EventTarget; ev: Event) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc elementFromPoint(n: DocumentOrShadowRoot; x, y: float): Element {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc elementsFromPoint(n: DocumentOrShadowRoot; x, y: float): seq[Element] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc enableExternalCapture(w: Window) {.importcpp, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc encodeURI(uri: cstring): cstring {.importc, nodecl, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc encodeURIComponent(uri: cstring): cstring {.importc, nodecl, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc error(f: FileReader): DomException {.importcpp: "#.error", nodecl,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/error Source Edit

    proc escape(uri: cstring): cstring {.importc, nodecl, ...raises: [], tags: [],
                                         forbids: [].}

  Source Edit

    proc find(w: Window; text: cstring; caseSensitive = false; backwards = false): bool {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc focus(e: Element) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc focus(e: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc focus(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc forward(h: History) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc forward(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getAsFile(dti: DataTransferItem): File {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc getAttribute(n: Node; attr: cstring): cstring {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc getAttributeNode(n: Node; attr: cstring): Node {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc getBoundingClientRect(e: Node): BoundingRect {.
        importcpp: "getBoundingClientRect", nodecl, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc getComputedStyle(w: Window; e: Node; pe: Node = nil): Style {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Warning: The returned Style may or may not be read-only at run-time in the browser. getComputedStyle is performance costly.
  Source Edit

    proc getData(dt: DataTransfer; format: cstring): cstring {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementById(d: Document; id: cstring): Element {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc getElementById(id: cstring): Element {.importc: "document.getElementById",
        nodecl, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementsByClass(n: Node; name: cstring): seq[Node] {.
        importcpp: "#.getElementsByClassName(#)", nodecl, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc getElementsByClassName(d: Document; name: cstring): seq[Element] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementsByClassName(e: Element; name: cstring): seq[Element] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementsByName(d: Document; name: cstring): seq[Element] {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementsByTagName(d: Document; name: cstring): seq[Element] {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getElementsByTagName(e: Element; name: cstring): seq[Element] {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getItem(s: Storage; key: cstring): cstring {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc getModifierState(ev: KeyboardEvent; keyArg: cstring): bool {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getModifierState(ev: MouseEvent; keyArg: cstring): bool {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getPropertyPriority(s: Style; property: cstring): cstring {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getPropertyValue(s: Style; property: cstring): cstring {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getRangeAt(s: Selection; index: int): Range {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc getRootNode(n: Node; options: RootNodeOptions): Node {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc getSelection(d: Document): Selection {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc getSelection(n: DocumentOrShadowRoot): Selection {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc go(h: History; pagesToJump: int) {.importcpp, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc handleEvent(d: Document; event: Event) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc handleEvent(e: Element; event: Event) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc handleEvent(w: Window; e: Event) {.importcpp, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc hasAttribute(n: Node; attr: cstring): bool {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc hasAttributeNS(self: Node; namespace, localName: cstring): bool {.
        importjs: "(#.$1(#, #) || false)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttributeNS Source Edit

    proc hasChildNodes(n: Node): bool {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc hasPointerCapture(self: Node; pointerId: SomeNumber): bool {.
        importjs: "(#.$1(#) || false)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/hasPointerCapture Source Edit

    proc home(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc id(n: Node): cstring {.importcpp: "#.id", nodecl, ...raises: [], tags: [],
                                forbids: [].}

  Source Edit

    proc id=(n: Node; x: cstring) {.importcpp: "#.id = #", nodecl, ...raises: [],
                                    tags: [], forbids: [].}

  Source Edit

    proc identifiedTouch(list: TouchList): Touch {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc insertAdjacentElement(self: Node; position: cstring; element: Node) {.
        importjs: "#.$1(#, #)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentElement Source Edit

    proc insertAdjacentHTML(self: Node; position, html: cstring) {.
        importjs: "#.$1(#, #)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML Source Edit

    proc insertAdjacentText(self: Node; position, data: cstring) {.
        importjs: "#.$1(#, #)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentText Source Edit

    proc insertBefore(n, newNode, before: Node) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc insertData(n: Node; position: int; data: cstring) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc insertNode(range: Range; node: Node) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc inViewport(el: Node): bool {....raises: [], tags: [], forbids: [].}

  Source Edit

    proc isDefaultNamespace(n: Node): bool {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc isEqualNode(n: Node): bool {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc isFinite(x: BiggestFloat): bool {.importc, nodecl, ...raises: [], tags: [],
                                           forbids: [].}

  Source Edit

    proc isNaN(x: BiggestFloat): bool {.importc, nodecl, ...raises: [], tags: [],
                                        forbids: [].}

  see also `math.isNaN`. Source Edit

    proc isSameNode(n: Node): bool {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc item(list: TouchList; i: int): Touch {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc javaEnabled(h: Navigator): bool {.importcpp, ...raises: [], tags: [],
                                           forbids: [].}

  Source Edit

    proc len(x: Node): int {.importcpp: "#.childNodes.length", ...raises: [], tags: [],
                             forbids: [].}

  Source Edit

    proc lookupNamespaceURI(n: Node): cstring {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc lookupPrefix(n: Node): cstring {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc matches(self: Node; cssSelector: cstring): bool {.
        importjs: "(#.$1(#) || false)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/matches Source Edit

    proc matchMedia(w: Window; mediaQueryString: cstring): MediaQueryList {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc message(ex: DomException): cstring {.importcpp: "#.message", nodecl,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/DOMException/message Source Edit

    proc moveBy(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc moveTo(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc name(ex: DomException): cstring {.importcpp: "#.name", nodecl, ...raises: [],
                                           tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/DOMException/name Source Edit

    proc newDomException(): DomException {.importcpp: "new DomException()",
                                           constructor, ...raises: [], tags: [],
                                           forbids: [].}

  DOM Exception constructor Source Edit

    func newDomParser(): DomParser {.importcpp: "new DOMParser()", ...raises: [],
                                     tags: [], forbids: [].}

  DOM Parser constructor. Source Edit

    proc newEvent(name: cstring): Event {.importcpp: "new Event(@)", constructor,
                                          ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc newFileReader(): FileReader {.importcpp: "new FileReader()", constructor,
                                       ...raises: [], tags: [], forbids: [].}

  File Reader constructor Source Edit

    proc normalize(n: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc now(p: Performance): float {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc offsetHeight(e: Node): int {.importcpp: "#.offsetHeight", nodecl,
                                      ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc offsetLeft(e: Node): int {.importcpp: "#.offsetLeft", nodecl, ...raises: [],
                                    tags: [], forbids: [].}

  Source Edit

    proc offsetTop(e: Node): int {.importcpp: "#.offsetTop", nodecl, ...raises: [],
                                   tags: [], forbids: [].}

  Source Edit

    proc offsetWidth(e: Node): int {.importcpp: "#.offsetWidth", nodecl, ...raises: [],
                                     tags: [], forbids: [].}

  Source Edit

    proc open(d: Document) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc open(w: Window; uri, windowname: cstring; properties: cstring = nil): Window {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    func parseFromString(this: DomParser; str: cstring; mimeType: cstring): Document {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Parse from string to `Document`. Source Edit

    proc play(e: EmbedElement) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc preventDefault(ev: Event) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc print(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc prompt(w: Window; text, default: cstring): cstring {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc pushState[T](h: History; stateObject: T; title, url: cstring) {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc querySelector(d: Document; selectors: cstring): Element {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc querySelector(n: Node; selectors: cstring): Element {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc querySelectorAll(d: Document; selectors: cstring): seq[Element] {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc querySelectorAll(n: Node; selectors: cstring): seq[Element] {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc readAsBinaryString(f: FileReader; b: Blob) {.
        importcpp: "#.readAsBinaryString(#)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString Source Edit

    proc readAsDataURL(f: FileReader; b: Blob) {.importcpp: "#.readAsDataURL(#)",
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL Source Edit

    proc readAsText(f: FileReader; b: Blob | File; encoding = cstring"UTF-8") {.
        importcpp: "#.readAsText(#, #)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText Source Edit

    proc readyState(f: FileReader): FileReaderState {.importcpp: "#.readyState",
        nodecl, ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState Source Edit

    proc registerProtocolHandler(self: Navigator; scheme, url, title: cstring) {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler Source Edit

    proc releasePointerCapture(self: Node; pointerId: SomeNumber) {.
        importjs: "#.$1(#)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/releasePointerCapture Source Edit

    proc reload(loc: Location) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc remove(c: ClassList; class: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc remove(child: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc removeAllRanges(s: Selection) {.importcpp, ...raises: [], tags: [],
                                         forbids: [].}

  Source Edit

    proc removeAttribute(n: Node; attr: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc removeAttributeNode(n, attr: Node) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc removeAttributeNS(self: Node; namespace, attributeName: cstring) {.
        importjs: "#.$1(#, #)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttributeNS Source Edit

    proc removeChild(n, child: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc removeEventListener(et: EventTarget; ev: cstring; cb: proc (ev: Event);
                             options: AddEventListenerOptions) {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc removeEventListener(et: EventTarget; ev: cstring; cb: proc (ev: Event);
                             useCapture: bool = false) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc removeItem(s: Storage; key: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc removeProperty(s: Style; property: cstring) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc replace(loc: Location; s: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc replaceChild(n, newNode, oldNode: Node) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc replaceChildren(self: Node; replacements: Node) {.importjs: "#.$1(@)",
        varargs, ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/replaceChildren Source Edit

    proc replaceData(n: Node; start, len: int; text: cstring) {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc replaceWith(self: Node; replacements: Node) {.importjs: "#.$1(@)", varargs,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/replaceWith Source Edit

    proc reportValidity(e: FormElement): bool {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc requestAnimationFrame(w: Window; function: proc (time: float)): int {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc requestPointerLock(self: Node) {.importjs: "#.$1()", ...raises: [], tags: [],
                                          forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/requestPointerLock Source Edit

    proc reset(f: FormElement) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc resizeBy(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc resizeTo(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc resultAsString(f: FileReader): cstring {.importcpp: "#.result", nodecl,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result Source Edit

    proc routeEvent(d: Document; event: Event) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc routeEvent(w: Window; event: Event) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc scrollBy(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc scrollHeight(e: Node): int {.importcpp: "#.scrollHeight", nodecl,
                                      ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc scrollIntoView(n: Node) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc scrollIntoView(n: Node; options: ScrollIntoViewOptions) {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc scrollIntoViewIfNeeded(self: Node; centerIfNeeded: bool) {.
        importjs: "#.$1(#)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewIfNeeded Source Edit

    proc scrollLeft(e: Node): int {.importcpp: "#.scrollLeft", nodecl, ...raises: [],
                                    tags: [], forbids: [].}

  Source Edit

    proc scrollTo(w: Window; x, y: int) {.importcpp, ...raises: [], tags: [],
                                          forbids: [].}

  Source Edit

    proc scrollTop(e: Node): int {.importcpp: "#.scrollTop", nodecl, ...raises: [],
                                   tags: [], forbids: [].}

  Source Edit

    proc scrollTop=(e: Node; value: int) {.importcpp: "#.scrollTop = #", nodecl,
                                           ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc scrollWidth(e: Node): int {.importcpp: "#.scrollWidth", nodecl, ...raises: [],
                                     tags: [], forbids: [].}

  Source Edit

    proc select(e: Element) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc sendBeacon(self: Navigator; url, data: cstring): bool {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon Source Edit

    proc setAttr(n: Node; key, val: cstring) {.importcpp: "#.setAttribute(@)",
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setAttribute(n: Node; name, value: cstring) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc setAttributeNode(n: Node; attr: Node) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc setCustomValidity(e: InputElement; error: cstring) {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc setData(dt: DataTransfer; format: cstring; data: cstring) {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setDragImage(dt: DataTransfer; img: Element; xOffset: int; yOffset: int) {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setHTML(self: Node; html: cstring) {.importjs: "#.$1(#)", ...raises: [],
        tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/setHTML Source Edit

    proc setInterval(action: proc (); ms: int): Interval {.importc, nodecl,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setInterval(w: Window; code: cstring; pause: int): Interval {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setInterval(w: Window; function: proc (); pause: int): Interval {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setItem(s: Storage; key, value: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc setProperty(s: Style; property, value: cstring; priority = "") {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setRangeText(e: InputElement; replacement: cstring; startindex: int = 0;
                      endindex: int = 0; selectionMode: cstring = "preserve") {.
        importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setSelectionRange(e: InputElement; selectionStart: int; selectionEnd: int;
                           selectionDirection: cstring = "none") {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setTimeout(action: proc (); ms: int): TimeOut {.importc, nodecl,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setTimeout(w: Window; code: cstring; pause: int): TimeOut {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc setTimeout(w: Window; function: proc (); pause: int): Interval {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc slice(e: Blob; startindex: int = 0; endindex: int = e.size;
               contentType: cstring = "") {.importcpp, ...raises: [], tags: [],
                                            forbids: [].}

  Source Edit

    proc stop(e: EmbedElement) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc stop(w: Window) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc stopImmediatePropagation(ev: Event) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc stopPropagation(ev: Event) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc submit(f: FormElement) {.importcpp, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc toggle(c: ClassList; class: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc toggleAttribute(self: Node; name: cstring; force = false): bool {.
        importjs: "(#.$1(#, #) || false)", ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute Source Edit

    proc unescape(uri: cstring): cstring {.importc, nodecl, ...raises: [], tags: [],
                                           forbids: [].}

  Source Edit

    proc value(n: Node): cstring {.importcpp: "#.value", nodecl, ...raises: [],
                                   tags: [], forbids: [].}

  Source Edit

    proc value=(n: Node; v: cstring) {.importcpp: "#.value = #", nodecl, ...raises: [],
                                       tags: [], forbids: [].}

  Source Edit

    proc vibrate(self: Navigator; pattern: cint): bool {.importcpp, ...raises: [],
        tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate Source Edit

    proc vibrate(self: Navigator; pattern: openArray[cint]): bool {.importcpp,
        ...raises: [], tags: [], forbids: [].}

  https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate Source Edit

    func visualViewport(self: Window): VisualViewport {.importjs: "#.$1", nodecl,
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc write(d: Document; text: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc writeln(d: Document; text: cstring) {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit

# Converters

    converter toString(s: Selection): cstring {.importcpp, ...raises: [], tags: [],
        forbids: [].}

  Source Edit