| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | 
							- type Comment := {
 
-     data: String,
 
-     length: Number,
 
-     nodeName: "#comment",
 
-     nodeType: 8,
 
-     nodeValue: String,
 
-     ownerDoucment: null | Document,
 
-     toString: (this: Comment) => String
 
- }
 
- type DOMText := {
 
-     data: String,
 
-     type: "DOMTextNode",
 
-     length: Number,
 
-     nodeType: 3,
 
-     toString: (this: DOMText) => String,
 
-     replaceChild: (
 
-         this: DOMText,
 
-         index: Number,
 
-         length: Number,
 
-         value: String
 
-     ) => void
 
- }
 
- type DOMNode := DOMText | DOMElement | DocumentFragment
 
- type DOMChild := DOMText | DOMElement
 
- type DOMElement := {
 
-     tagName: String,
 
-     className: String,
 
-     dataset: Object<String, Any>,
 
-     childNodes: Array<DOMChild>,
 
-     parentNode: null | DOMElement,
 
-     style: Object<String, String>,
 
-     type: "DOMElement",
 
-     nodeType: 1,
 
-     ownerDoucment: null | Document,
 
-     namespaceURI: null | String,
 
-     appendChild: (this: DOMElement, child: DOMChild) => DOMChild,
 
-     replaceChild:(
 
-         this: DOMElement,
 
-         elem: DOMChild,
 
-         needle: DOMChild
 
-     ) => DOMChild,
 
-     removeChild: (this: DOMElement, child: DOMChild) => DOMChild,
 
-     insertBefore: (
 
-         this: DOMElement,
 
-         elem: DOMChild,
 
-         needle: DOMChild | null | undefined
 
-     ) => DOMChild,
 
-     addEventListener: addEventListener,
 
-     dispatchEvent: dispatchEvent,
 
-     focus: () => void,
 
-     toString: (this: DOMElement) => String,
 
-     getElementsByClassName: (
 
-         this: DOMElement,
 
-         className: String
 
-     ) => Array<DOMElement>,
 
-     getElementsByTagName: (
 
-         this: DOMElement,
 
-         tagName: String
 
-     ) => Array<DOMElement>,
 
- }
 
- type DocumentFragment := {
 
-     childNodes: Array<DOMChild>,
 
-     parentNode: null | DOMElement,
 
-     type: "DocumentFragment",
 
-     nodeType: 11,
 
-     nodeName: "#document-fragment",
 
-     ownerDoucment: Document | null,
 
-     appendChild: (this: DocumentFragment, child: DOMChild),
 
-     replaceChild:
 
-         (this: DocumentFragment, elem: DOMChild, needle: DOMChild),
 
-     removeChild: (this: DocumentFragment, child: DOMChild),
 
-     toString: (this: DocumentFragment) => String
 
- }
 
- type Document := {
 
-     body: DOMElement,
 
-     childNodes: Array<DOMChild>,
 
-     documentElement: DOMElement,
 
-     nodeType: 9,
 
-     createComment: (this: Document, data: String) => Commment,
 
-     createTextNode: (this: Document, value: String) => DOMText,
 
-     createElement: (this: Document, tagName: String) => DOMElement,
 
-     createElementNS: (
 
-         this: Document,
 
-         namespace: String | null,
 
-         tagName: String
 
-     ) => DOMElement,
 
-     createDocumentFragment: (this: Document) => DocumentFragment,
 
-     createEvent: () => Event,
 
-     getElementById: (
 
-         this: Document,
 
-         id: String,
 
-     ) => null | DOMElement,
 
-     getElementsByClassName: (
 
-         this: Document,
 
-         className: String
 
-     ) => Array<DOMElement>,
 
-     getElementsByTagName: (
 
-         this: Document,
 
-         tagName: String
 
-     ) => Array<DOMElement>
 
- }
 
- type Event := {
 
-     type: String,
 
-     bubbles: Boolean,
 
-     cancelable: Boolean,
 
-     initEvent: (
 
-         this: Event,
 
-         type: String,
 
-         bubbles: Boolean,
 
-         cancelable: Boolean
 
-     ) => void
 
- }
 
- type addEventListener := (
 
-     this: DOMElement,
 
-     type: String,
 
-     listener: Listener
 
- ) => void
 
- type dispatchEvent := (
 
-     this: DOMElement,
 
-     ev: Event
 
- )
 
- min-document/event/add-event-listener := addEventListener
 
- min-document/event/dispatch-event := dispatchEvent
 
- min-document/document := () => Document
 
- min-document/dom-element :=
 
-     (tagName: String, owner?: Document, namespace?: String | null) => DOMElement
 
- min-document/dom-fragment :=
 
-     (owner?: Document) => DocumentFragment
 
- min-document/dom-text :=
 
-     (value: String, owner?: Document) => DOMText
 
- min-document/event := () => Event
 
- min-document/serialize := (DOMElement) => String
 
- min-document := Document
 
 
  |