1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777 |
- #
- #
- # Nim's Runtime Library
- # (c) Copyright 2012 Andreas Rumpf
- #
- # See the file "copying.txt", included in this
- # distribution, for details about the copyright.
- #
- ## Declaration of the Document Object Model for the `JavaScript backend
- ## <backends.html#backends-the-javascript-target>`_.
- import std/private/since
- when not defined(js):
- {.error: "This module only works on the JavaScript platform".}
- const
- DomApiVersion* = 3 ## the version of DOM API we try to follow. No guarantees though.
- type
- EventTarget* = ref EventTargetObj
- EventTargetObj {.importc.} = 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.}
- DomEvent* {.pure.} = enum
- ## see `docs<https://developer.mozilla.org/en-US/docs/Web/Events>`_
- 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"
- PerformanceMemory* {.importc.} = ref object
- jsHeapSizeLimit*: float
- totalJSHeapSize*: float
- usedJSHeapSize*: float
- 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
- Performance* {.importc.} = ref object
- memory*: PerformanceMemory
- timing*: PerformanceTiming
- Range* {.importc.} = ref object
- ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/Range>`_
- collapsed*: bool
- commonAncestorContainer*: Node
- endContainer*: Node
- endOffset*: int
- startContainer*: Node
- startOffset*: int
- Selection* {.importc.} = ref object
- ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/Selection>`_
- anchorNode*: Node
- anchorOffset*: int
- focusNode*: Node
- focusOffset*: int
- isCollapsed*: bool
- rangeCount*: int
- `type`*: cstring
- Storage* {.importc.} = ref object
- Window* = ref WindowObj
- WindowObj {.importc.} = object of EventTargetObj
- 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
- Frame* = ref FrameObj
- FrameObj {.importc.} = object of WindowObj
- ClassList* = ref ClassListObj
- ClassListObj {.importc.} = object of RootObj
- NodeType* = enum
- ElementNode = 1,
- AttributeNode,
- TextNode,
- CDATANode,
- EntityRefNode,
- EntityNode,
- ProcessingInstructionNode,
- CommentNode,
- DocumentNode,
- DocumentTypeNode,
- DocumentFragmentNode,
- NotationNode
- Node* = ref NodeObj
- NodeObj {.importc.} = object of EventTargetObj
- 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
- Document* = ref DocumentObj
- DocumentObj {.importc.} = object of NodeObj
- activeElement*: Element
- documentElement*: Element
- alinkColor*: cstring
- bgColor*: cstring
- body*: Element
- charset*: cstring
- cookie*: cstring
- defaultCharset*: cstring
- fgColor*: cstring
- head*: Element
- lastModified*: cstring
- linkColor*: cstring
- referrer*: cstring
- title*: cstring
- URL*: cstring
- vlinkColor*: cstring
- anchors*: seq[AnchorElement]
- forms*: seq[FormElement]
- images*: seq[ImageElement]
- applets*: seq[Element]
- embeds*: seq[EmbedElement]
- links*: seq[LinkElement]
- fonts*: FontFaceSet
- Element* = ref ElementObj
- ElementObj {.importc.} = object of NodeObj
- 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
- ValidityState* = ref ValidityStateObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/ValidityState>`_
- ValidityStateObj {.importc.} = object
- badInput*: bool
- customError*: bool
- patternMismatch*: bool
- rangeOverflow*: bool
- rangeUnderflow*: bool
- stepMismatch*: bool
- tooLong*: bool
- tooShort*: bool
- typeMismatch*: bool
- valid*: bool
- valueMissing*: bool
- Blob* = ref BlobObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/Blob>`_
- BlobObj {.importc.} = object of RootObj
- size*: int
- `type`*: cstring
- File* = ref FileObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/File>`_
- FileObj {.importc.} = object of Blob
- lastModified*: int
- name*: cstring
- TextAreaElement* = ref TextAreaElementObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement>`_
- TextAreaElementObj {.importc.} = object of Element
- value*: cstring
- selectionStart*, selectionEnd*: int
- selectionDirection*: cstring
- rows*, cols*: int
- InputElement* = ref InputElementObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement>`_
- InputElementObj {.importc.} = object of Element
- # Properties related to the parent form
- formAction*: cstring
- formEncType*: cstring
- formMethod*: cstring
- formNoValidate*: bool
- formTarget*: cstring
- # Properties that apply to any type of input element that is not hidden
- `type`*: cstring
- autofocus*: bool
- required*: bool
- value*: cstring
- validity*: ValidityState
- validationMessage*: cstring
- willValidate*: bool
- # Properties that apply only to elements of type "checkbox" or "radio"
- indeterminate*: bool
- # Properties that apply only to elements of type "image"
- alt*: cstring
- height*: cstring
- src*: cstring
- width*: cstring
- # Properties that apply only to elements of type "file"
- accept*: cstring
- files*: seq[Blob]
- # Properties that apply only to text/number-containing or elements
- autocomplete*: cstring
- maxLength*: int
- size*: int
- pattern*: cstring
- placeholder*: cstring
- min*: cstring
- max*: cstring
- selectionStart*: int
- selectionEnd*: int
- selectionDirection*: cstring
- # Properties not yet categorized
- dirName*: cstring
- accessKey*: cstring
- list*: Element
- multiple*: bool
- labels*: seq[Element]
- step*: cstring
- valueAsDate*: cstring
- valueAsNumber*: float
- LinkElement* = ref LinkObj
- LinkObj {.importc.} = object of ElementObj
- target*: cstring
- text*: cstring
- x*: int
- y*: int
- EmbedElement* = ref EmbedObj
- EmbedObj {.importc.} = object of ElementObj
- height*: int
- hspace*: int
- src*: cstring
- width*: int
- `type`*: cstring
- vspace*: int
- AnchorElement* = ref AnchorObj
- AnchorObj {.importc.} = object of ElementObj
- text*: cstring
- x*, y*: int
- OptionElement* = ref OptionObj
- OptionObj {.importc.} = object of ElementObj
- defaultSelected*: bool
- selected*: bool
- selectedIndex*: int
- text*: cstring
- value*: cstring
- FormElement* = ref FormObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement>`_
- FormObj {.importc.} = object of ElementObj
- acceptCharset*: cstring
- action*: cstring
- autocomplete*: cstring
- elements*: seq[Element]
- encoding*: cstring
- enctype*: cstring
- length*: int
- `method`*: cstring
- noValidate*: bool
- target*: cstring
- ImageElement* = ref ImageObj
- ImageObj {.importc.} = object of ElementObj
- border*: int
- complete*: bool
- height*: int
- hspace*: int
- lowsrc*: cstring
- src*: cstring
- vspace*: int
- width*: int
- Style* = ref StyleObj
- StyleObj {.importc.} = 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
- EventPhase* = enum
- None = 0,
- CapturingPhase,
- AtTarget,
- BubblingPhase
- Event* = ref EventObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/Event>`_
- EventObj {.importc.} = object of RootObj
- bubbles*: bool
- cancelBubble*: bool
- cancelable*: bool
- composed*: bool
- currentTarget*: Node
- defaultPrevented*: bool
- eventPhase*: int
- target*: Node
- `type`*: cstring
- isTrusted*: bool
- UIEvent* = ref UIEventObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/UIEvent>`_
- UIEventObj {.importc.} = object of Event
- detail*: int64
- view*: Window
- KeyboardEvent* = ref KeyboardEventObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent>`_
- KeyboardEventObj {.importc.} = object of UIEvent
- altKey*, ctrlKey*, metaKey*, shiftKey*: bool
- code*: cstring
- isComposing*: bool
- key*: cstring
- keyCode*: int
- location*: int
- KeyboardEventKey* {.pure.} = enum ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values>`_
- # Modifier keys
- Alt,
- AltGraph,
- CapsLock,
- Control,
- Fn,
- FnLock,
- Hyper,
- Meta,
- NumLock,
- ScrollLock,
- Shift,
- Super,
- Symbol,
- SymbolLock,
- # Whitespace keys
- ArrowDown,
- ArrowLeft,
- ArrowRight,
- ArrowUp,
- End,
- Home,
- PageDown,
- PageUp,
- # Editing keys
- Backspace,
- Clear,
- Copy,
- CrSel,
- Cut,
- Delete,
- EraseEof,
- ExSel,
- Insert,
- Paste,
- Redo,
- Undo,
- # UI keys
- Accept,
- Again,
- Attn,
- Cancel,
- ContextMenu,
- Escape,
- Execute,
- Find,
- Finish,
- Help,
- Pause,
- Play,
- Props,
- Select,
- ZoomIn,
- ZoomOut,
- # Device keys
- BrigtnessDown,
- BrigtnessUp,
- Eject,
- LogOff,
- Power,
- PowerOff,
- PrintScreen,
- Hibernate,
- Standby,
- WakeUp,
- # Common IME keys
- AllCandidates,
- Alphanumeric,
- CodeInput,
- Compose,
- Convert,
- Dead,
- FinalMode,
- GroupFirst,
- GroupLast,
- GroupNext,
- GroupPrevious,
- ModeChange,
- NextCandidate,
- NonConvert,
- PreviousCandidate,
- Process,
- SingleCandidate,
- # Korean keyboards only
- HangulMode,
- HanjaMode,
- JunjaMode,
- # Japanese keyboards only
- Eisu,
- Hankaku,
- Hiragana,
- HiraganaKatakana,
- KanaMode,
- KanjiMode,
- Katakana,
- Romaji,
- Zenkaku,
- ZenkakuHanaku,
- # Function keys
- F1,
- F2,
- F3,
- F4,
- F5,
- F6,
- F7,
- F8,
- F9,
- F10,
- F11,
- F12,
- F13,
- F14,
- F15,
- F16,
- F17,
- F18,
- F19,
- F20,
- Soft1,
- Soft2,
- Soft3,
- Soft4,
- # Phone keys
- AppSwitch,
- Call,
- Camera,
- CameraFocus,
- EndCall,
- GoBack,
- GoHome,
- HeadsetHook,
- LastNumberRedial,
- Notification,
- MannerMode,
- VoiceDial,
- # Multimedia keys
- ChannelDown,
- ChannelUp,
- MediaFastForward,
- MediaPause,
- MediaPlay,
- MediaPlayPause,
- MediaRecord,
- MediaRewind,
- MediaStop,
- MediaTrackNext,
- MediaTrackPrevious,
- # Audio control keys
- AudioBalanceLeft,
- AudioBalanceRight,
- AudioBassDown,
- AudioBassBoostDown,
- AudioBassBoostToggle,
- AudioBassBoostUp,
- AudioBassUp,
- AudioFaderFront,
- AudioFaderRear,
- AudioSurroundModeNext,
- AudioTrebleDown,
- AudioTrebleUp,
- AudioVolumeDown,
- AUdioVolumeMute,
- AudioVolumeUp,
- MicrophoneToggle,
- MicrophoneVolumeDown,
- MicrophoneVolumeMute,
- MicrophoneVolumeUp,
- # TV control keys
- 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,
- # Media controller keys
- 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,
- # Speech recognition keys
- SpeechCorrectionList,
- SpeechInputToggle,
- # Document keys
- Close,
- New,
- Open,
- Print,
- Save,
- SpellCheck,
- MailForward,
- MailReply,
- MailSend,
- # Application selector keys
- 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,
- # Browser control keys
- BrowserBack,
- BrowserFavorites,
- BrowserForward,
- BrowserHome,
- BrowserRefresh,
- BrowserSearch,
- BrowserStop,
- # Numeric keypad keys
- Key11,
- Key12,
- Separator
- MouseButtons* = enum
- NoButton = 0,
- PrimaryButton = 1,
- SecondaryButton = 2,
- AuxilaryButton = 4,
- FourthButton = 8,
- FifthButton = 16
- MouseEvent* = ref MouseEventObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent>`_
- MouseEventObj {.importc.} = 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
- #region*: cstring
- screenX*, screenY*: int
- x*, y*: int
- DataTransferItemKind* {.pure.} = enum
- File = "file",
- String = "string"
- DataTransferItem* = ref DataTransferItemObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem>`_
- DataTransferItemObj {.importc.} = object of RootObj
- kind*: cstring
- `type`*: cstring
- DataTransfer* = ref DataTransferObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer>`_
- DataTransferObj {.importc.} = object of RootObj
- dropEffect*: cstring
- effectAllowed*: cstring
- files*: seq[Element]
- items*: seq[DataTransferItem]
- types*: seq[cstring]
- DataTransferDropEffect* {.pure.} = enum
- None = "none",
- Copy = "copy",
- Link = "link",
- Move = "move"
- DataTransferEffectAllowed* {.pure.} = enum
- None = "none",
- Copy = "copy",
- CopyLink = "copyLink",
- CopyMove = "copyMove",
- Link = "link",
- LinkMove = "linkMove",
- Move = "move",
- All = "all",
- Uninitialized = "uninitialized"
- DragEventTypes* = enum
- Drag = "drag",
- DragEnd = "dragend",
- DragEnter = "dragenter",
- DragExit = "dragexit",
- DragLeave = "dragleave",
- DragOver = "dragover",
- DragStart = "dragstart",
- Drop = "drop"
- DragEvent* {.importc.} = object of MouseEvent
- ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/DragEvent>`_
- dataTransfer*: DataTransfer
- ClipboardEvent* {.importc.} = object of Event
- ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent>`_
- clipboardData*: DataTransfer
- StorageEvent* = ref StorageEventObj ## see `docs<https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent>`_
- StorageEventObj {.importc.} = object of Event
- key*: cstring
- newValue*, oldValue*: cstring
- storageArea*: Storage
- url*: cstring
- TouchList* {.importc.} = ref object of RootObj
- length*: int
- Touch* = ref TouchObj
- TouchObj {.importc.} = object of RootObj
- identifier*: int
- screenX*, screenY*, clientX*, clientY*, pageX*, pageY*: int
- target*: Element
- radiusX*, radiusY*: int
- rotationAngle*: int
- force*: float
- TouchEvent* = ref TouchEventObj
- TouchEventObj {.importc.} = object of UIEvent
- changedTouches*, targetTouches*, touches*: seq[Touch]
- Location* = ref LocationObj
- LocationObj {.importc.} = object of RootObj
- hash*: cstring
- host*: cstring
- hostname*: cstring
- href*: cstring
- pathname*: cstring
- port*: cstring
- protocol*: cstring
- search*: cstring
- origin*: cstring
- History* = ref HistoryObj
- HistoryObj {.importc.} = object of RootObj
- length*: int
- Navigator* = ref NavigatorObj
- NavigatorObj {.importc.} = 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]
- Plugin* {.importc.} = object of RootObj
- description*: cstring
- filename*: cstring
- name*: cstring
- MimeType* {.importc.} = object of RootObj
- description*: cstring
- enabledPlugin*: ref Plugin
- suffixes*: seq[cstring]
- `type`*: cstring
- LocationBar* {.importc.} = object of RootObj
- visible*: bool
- MenuBar* = LocationBar
- PersonalBar* = LocationBar
- ScrollBars* = LocationBar
- ToolBar* = LocationBar
- StatusBar* = LocationBar
- Screen = ref ScreenObj
- ScreenObj {.importc.} = object of RootObj
- availHeight*: int
- availWidth*: int
- colorDepth*: int
- height*: int
- pixelDepth*: int
- width*: int
- TimeOut* {.importc.} = ref object of RootObj
- Interval* {.importc.} = ref object of RootObj
- AddEventListenerOptions* = object
- capture*: bool
- once*: bool
- passive*: bool
- FontFaceSetReady* {.importc.} = ref object
- ## see: `docs<https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/ready>`_
- then*: proc(cb: proc())
- FontFaceSet* {.importc.} = ref object
- ## see: `docs<https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet>`_
- ready*: FontFaceSetReady
- onloadingdone*: proc(event: Event)
- ScrollIntoViewOptions* = object
- behavior*: cstring
- `block`*: cstring
- inline*: cstring
- since (1, 3):
- type
- 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
- ##
- ## .. code-block:: nim
- ## let prsr = newDomParser()
- ## discard prsr.parseFromString("<html><marquee>Hello World</marquee></html>".cstring, "text/html".cstring)
- DomException* = ref DOMExceptionObj
- ## 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
- DOMExceptionObj {.importc.} = object
- FileReader* = ref FileReaderObj
- ## 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
- FileReaderObj {.importc.} = object of EventTargetObj
- FileReaderState* = distinct range[0'u16..2'u16]
- RootNodeOptions* = object of RootObj
- composed*: bool
- DocumentOrShadowRoot* {.importc.} = object of RootObj
- activeElement*: Element
- # styleSheets*: StyleSheetList
- ShadowRoot* = ref ShadowRootObj
- ShadowRootObj {.importc.} = object of DocumentOrShadowRoot
- delegatesFocus*: bool
- host*: Element
- innerHTML*: cstring
- mode*: cstring # "open" or "closed"
- ShadowRootInit* = object of RootObj
- mode*: cstring
- delegatesFocus*: bool
- HTMLSlotElement* = ref HTMLSlotElementObj
- HTMLSlotElementObj {.importc.} = object of RootObj
- name*: cstring
- SlotOptions* = object of RootObj
- flatten*: bool
- const
- fileReaderEmpty* = 0.FileReaderState
- fileReaderLoading* = 1.FileReaderState
- fileReaderDone* = 2.FileReaderState
- proc id*(n: Node): cstring {.importcpp: "#.id", nodecl.}
- proc `id=`*(n: Node; x: cstring) {.importcpp: "#.id = #", nodecl.}
- proc class*(n: Node): cstring {.importcpp: "#.className", nodecl.}
- proc `class=`*(n: Node; v: cstring) {.importcpp: "#.className = #", nodecl.}
- proc value*(n: Node): cstring {.importcpp: "#.value", nodecl.}
- proc `value=`*(n: Node; v: cstring) {.importcpp: "#.value = #", nodecl.}
- proc checked*(n: Node): bool {.importcpp: "#.checked", nodecl.}
- proc `checked=`*(n: Node; v: bool) {.importcpp: "#.checked = #", nodecl.}
- proc `disabled=`*(n: Node; v: bool) {.importcpp: "#.disabled = #", nodecl.}
- when defined(nodejs):
- # we provide a dummy DOM for nodejs for testing purposes
- proc len*(x: Node): int = x.childNodes.len
- proc `[]`*(x: Node; idx: int): Element =
- assert idx >= 0 and idx < x.childNodes.len
- result = cast[Element](x.childNodes[idx])
- var document* = Document(nodeType: DocumentNode)
- document.ownerDocument = document
- proc getElem(x: Element; id: cstring): Element =
- if x.id == id: return x
- for i in 0..<x.len:
- result = getElem(x[i], id)
- if result != nil: return result
- proc getElementById*(doc: Document; id: cstring): Element =
- getElem(doc.body, id)
- proc getElementById*(id: cstring): Element = document.getElementById(id)
- proc appendChild*(parent, n: Node) =
- n.parentNode = parent
- n.ownerDocument = parent.ownerDocument
- parent.childNodes.add n
- proc replaceChild*(parent, newNode, oldNode: Node) =
- newNode.parentNode = parent
- oldNode.parentNode = nil
- var i = 0
- while i < parent.len:
- if Node(parent[i]) == oldNode:
- parent.childNodes[i] = newNode
- return
- inc i
- doAssert false, "old node not in node list"
- proc removeChild*(parent, child: Node) =
- child.parentNode = nil
- var i = 0
- while i < parent.len:
- if Node(parent[i]) == child:
- parent.childNodes.delete(i)
- return
- inc i
- doAssert false, "old node not in node list"
- proc insertBefore*(parent, newNode, before: Node) =
- appendChild(parent, newNode)
- var i = 0
- while i < parent.len-1:
- if Node(parent[i]) == before:
- for j in countdown(parent.len-1, i-1):
- parent.childNodes[j] = parent.childNodes[j-1]
- parent.childNodes[i-1] = newNode
- return
- inc i
- #doAssert false, "before not in node list"
- proc createElement*(d: Document, identifier: cstring): Element =
- new(result)
- result.nodeName = identifier
- result.nodeType = NodeType.ElementNode
- proc createTextNode*(d: Document, identifier: cstring): Node =
- new(result)
- result.nodeName = "#text"
- result.nodeValue = identifier
- result.nodeType = NodeType.TextNode
- proc createComment*(d: Document, data: cstring): Node =
- new(result)
- result.nodeName = "#comment"
- result.nodeValue = data
- result.nodeType = NodeType.CommentNode
- else:
- proc len*(x: Node): int {.importcpp: "#.childNodes.length".}
- proc `[]`*(x: Node; idx: int): Element {.importcpp: "#.childNodes[#]".}
- proc getElementById*(id: cstring): Element {.importc: "document.getElementById", nodecl.}
- proc appendChild*(n, child: Node) {.importcpp.}
- proc removeChild*(n, child: Node) {.importcpp.}
- proc remove*(child: Node) {.importcpp.}
- proc replaceChild*(n, newNode, oldNode: Node) {.importcpp.}
- proc insertBefore*(n, newNode, before: Node) {.importcpp.}
- proc getElementById*(d: Document, id: cstring): Element {.importcpp.}
- proc createElement*(d: Document, identifier: cstring): Element {.importcpp.}
- proc createElementNS*(d: Document, namespaceURI, qualifiedIdentifier: cstring): Element {.importcpp.}
- proc createTextNode*(d: Document, identifier: cstring): Node {.importcpp.}
- proc createComment*(d: Document, data: cstring): Node {.importcpp.}
- proc setTimeout*(action: proc(); ms: int): TimeOut {.importc, nodecl.}
- proc clearTimeout*(t: TimeOut) {.importc, nodecl.}
- proc setInterval*(action: proc(); ms: int): Interval {.importc, nodecl.}
- proc clearInterval*(i: Interval) {.importc, nodecl.}
- {.push importcpp.}
- # EventTarget "methods"
- proc addEventListener*(et: EventTarget, ev: cstring, cb: proc(ev: Event), useCapture: bool = false)
- proc addEventListener*(et: EventTarget, ev: cstring, cb: proc(ev: Event), options: AddEventListenerOptions)
- proc dispatchEvent*(et: EventTarget, ev: Event)
- proc removeEventListener*(et: EventTarget; ev: cstring; cb: proc(ev: Event))
- # Window "methods"
- proc alert*(w: Window, msg: cstring)
- proc back*(w: Window)
- proc blur*(w: Window)
- proc clearInterval*(w: Window, interval: Interval)
- proc clearTimeout*(w: Window, timeout: TimeOut)
- proc close*(w: Window)
- proc confirm*(w: Window, msg: cstring): bool
- proc disableExternalCapture*(w: Window)
- proc enableExternalCapture*(w: Window)
- proc find*(w: Window, text: cstring, caseSensitive = false,
- backwards = false)
- proc focus*(w: Window)
- proc forward*(w: Window)
- proc getComputedStyle*(w: Window, e: Node, pe: Node = nil): Style
- ## .. warning:: The returned Style may or may not be read-only at run-time in the browser. getComputedStyle is performance costly.
- proc handleEvent*(w: Window, e: Event)
- proc home*(w: Window)
- proc moveBy*(w: Window, x, y: int)
- proc moveTo*(w: Window, x, y: int)
- proc open*(w: Window, uri, windowname: cstring,
- properties: cstring = nil): Window
- proc print*(w: Window)
- proc prompt*(w: Window, text, default: cstring): cstring
- proc resizeBy*(w: Window, x, y: int)
- proc resizeTo*(w: Window, x, y: int)
- proc routeEvent*(w: Window, event: Event)
- proc scrollBy*(w: Window, x, y: int)
- proc scrollTo*(w: Window, x, y: int)
- proc setInterval*(w: Window, code: cstring, pause: int): Interval
- proc setInterval*(w: Window, function: proc (), pause: int): Interval
- proc setTimeout*(w: Window, code: cstring, pause: int): TimeOut
- proc setTimeout*(w: Window, function: proc (), pause: int): Interval
- proc stop*(w: Window)
- proc requestAnimationFrame*(w: Window, function: proc (time: float)): int
- proc cancelAnimationFrame*(w: Window, id: int)
- # Node "methods"
- proc appendData*(n: Node, data: cstring)
- proc cloneNode*(n: Node, copyContent: bool): Node
- proc deleteData*(n: Node, start, len: int)
- proc focus*(e: Node)
- proc getAttribute*(n: Node, attr: cstring): cstring
- proc getAttributeNode*(n: Node, attr: cstring): Node
- proc hasAttribute*(n: Node, attr: cstring): bool
- proc hasChildNodes*(n: Node): bool
- proc normalize*(n: Node)
- proc insertData*(n: Node, position: int, data: cstring)
- proc removeAttribute*(n: Node, attr: cstring)
- proc removeAttributeNode*(n, attr: Node)
- proc replaceData*(n: Node, start, len: int, text: cstring)
- proc scrollIntoView*(n: Node)
- proc scrollIntoView*(n: Node, options: ScrollIntoViewOptions)
- proc setAttribute*(n: Node, name, value: cstring)
- proc setAttributeNode*(n: Node, attr: Node)
- proc querySelector*(n: Node, selectors: cstring): Element
- proc querySelectorAll*(n: Node, selectors: cstring): seq[Element]
- proc compareDocumentPosition*(n: Node, otherNode:Node): int
- proc lookupPrefix*(n: Node): cstring
- proc lookupNamespaceURI*(n: Node): cstring
- proc isDefaultNamespace*(n: Node): bool
- proc contains*(n: Node): bool
- proc isEqualNode*(n: Node): bool
- proc isSameNode*(n: Node): bool
- since (1, 3):
- proc getRootNode*(n: Node,options: RootNodeOptions): Node
- # DocumentOrShadowRoot
- proc getSelection*(n: DocumentOrShadowRoot): Selection
- proc elementFromPoint*(n: DocumentOrShadowRoot; x, y: float): Element
- # shadow dom
- proc attachShadow*(n: Element): ShadowRoot
- proc assignedNodes*(n: HTMLSlotElement; options: SlotOptions): seq[Node]
- proc assignedElements*(n: HTMLSlotElement; options: SlotOptions): seq[Element]
- # Document "methods"
- proc createAttribute*(d: Document, identifier: cstring): Node
- proc getElementsByName*(d: Document, name: cstring): seq[Element]
- proc getElementsByTagName*(d: Document, name: cstring): seq[Element]
- proc getElementsByClassName*(d: Document, name: cstring): seq[Element]
- proc insertNode*(range: Range, node: Node)
- proc getSelection*(d: Document): Selection
- proc handleEvent*(d: Document, event: Event)
- proc open*(d: Document)
- proc routeEvent*(d: Document, event: Event)
- proc write*(d: Document, text: cstring)
- proc writeln*(d: Document, text: cstring)
- proc querySelector*(d: Document, selectors: cstring): Element
- proc querySelectorAll*(d: Document, selectors: cstring): seq[Element]
- # Element "methods"
- proc blur*(e: Element)
- proc click*(e: Element)
- proc focus*(e: Element)
- proc handleEvent*(e: Element, event: Event)
- proc select*(e: Element)
- proc getElementsByTagName*(e: Element, name: cstring): seq[Element]
- proc getElementsByClassName*(e: Element, name: cstring): seq[Element]
- # FormElement "methods"
- proc reset*(f: FormElement)
- proc submit*(f: FormElement)
- proc checkValidity*(e: FormElement): bool
- proc reportValidity*(e: FormElement): bool
- # EmbedElement "methods"
- proc play*(e: EmbedElement)
- proc stop*(e: EmbedElement)
- # Location "methods"
- proc reload*(loc: Location)
- proc replace*(loc: Location, s: cstring)
- # History "methods"
- proc back*(h: History)
- proc forward*(h: History)
- proc go*(h: History, pagesToJump: int)
- proc pushState*[T](h: History, stateObject: T, title, url: cstring)
- # Navigator "methods"
- proc javaEnabled*(h: Navigator): bool
- since (1, 3):
- proc canShare*(self: Navigator; data: cstring): bool ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/canShare
- proc sendBeacon*(self: Navigator; url, data: cstring): bool ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon
- proc vibrate*(self: Navigator; pattern: cint): bool ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate
- proc vibrate*(self: Navigator; pattern: openArray[cint]): bool ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate
- proc registerProtocolHandler*(self: Navigator; scheme, url, title: cstring) ## https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler
- # ClassList "methods"
- proc add*(c: ClassList, class: cstring)
- proc remove*(c: ClassList, class: cstring)
- proc contains*(c: ClassList, class: cstring): bool
- proc toggle*(c: ClassList, class: cstring)
- # Style "methods"
- proc getPropertyValue*(s: Style, property: cstring): cstring
- proc removeProperty*(s: Style, property: cstring)
- proc setProperty*(s: Style, property, value: cstring, priority = "")
- proc getPropertyPriority*(s: Style, property: cstring): cstring
- # Event "methods"
- proc preventDefault*(ev: Event)
- proc stopImmediatePropagation*(ev: Event)
- proc stopPropagation*(ev: Event)
- # KeyboardEvent "methods"
- proc getModifierState*(ev: KeyboardEvent, keyArg: cstring): bool
- # MouseEvent "methods"
- proc getModifierState*(ev: MouseEvent, keyArg: cstring): bool
- # TouchEvent "methods"
- proc identifiedTouch*(list: TouchList): Touch
- proc item*(list: TouchList, i: int): Touch
- # DataTransfer "methods"
- proc clearData*(dt: DataTransfer, format: cstring)
- proc getData*(dt: DataTransfer, format: cstring): cstring
- proc setData*(dt: DataTransfer, format: cstring, data: cstring)
- proc setDragImage*(dt: DataTransfer, img: Element, xOffset: int64, yOffset: int64)
- # DataTransferItem "methods"
- proc getAsFile*(dti: DataTransferItem): File
- # InputElement "methods"
- proc setSelectionRange*(e: InputElement, selectionStart: int, selectionEnd: int, selectionDirection: cstring = "none")
- proc setRangeText*(e: InputElement, replacement: cstring, startindex: int = 0, endindex: int = 0, selectionMode: cstring = "preserve")
- proc setCustomValidity*(e: InputElement, error: cstring)
- proc checkValidity*(e: InputElement): bool
- # Blob "methods"
- proc slice*(e: Blob, startindex: int = 0, endindex: int = e.size, contentType: cstring = "")
- # Performance "methods"
- proc now*(p: Performance): float
- # Selection "methods"
- proc removeAllRanges*(s: Selection)
- proc deleteFromDocument*(s: Selection)
- proc getRangeAt*(s: Selection, index: int): Range
- converter toString*(s: Selection): cstring
- proc `$`*(s: Selection): string = $(s.toString())
- # Storage "methods"
- proc getItem*(s: Storage, key: cstring): cstring
- proc setItem*(s: Storage, key, value: cstring)
- proc hasItem*(s: Storage, key: cstring): bool
- proc clear*(s: Storage)
- proc removeItem*(s: Storage, key: cstring)
- {.pop.}
- proc setAttr*(n: Node; key, val: cstring) {.importcpp: "#.setAttribute(@)".}
- var
- window* {.importc, nodecl.}: Window
- navigator* {.importc, nodecl.}: Navigator
- screen* {.importc, nodecl.}: Screen
- when not defined(nodejs):
- var document* {.importc, nodecl.}: Document
- proc decodeURI*(uri: cstring): cstring {.importc, nodecl.}
- proc encodeURI*(uri: cstring): cstring {.importc, nodecl.}
- proc escape*(uri: cstring): cstring {.importc, nodecl.}
- proc unescape*(uri: cstring): cstring {.importc, nodecl.}
- proc decodeURIComponent*(uri: cstring): cstring {.importc, nodecl.}
- proc encodeURIComponent*(uri: cstring): cstring {.importc, nodecl.}
- proc isFinite*(x: BiggestFloat): bool {.importc, nodecl.}
- proc isNaN*(x: BiggestFloat): bool {.importc, nodecl.}
- ## see also `math.isNaN`.
- proc newEvent*(name: cstring): Event {.importcpp: "new Event(@)", constructor.}
- proc getElementsByClass*(n: Node; name: cstring): seq[Node] {.
- importcpp: "#.getElementsByClassName(#)", nodecl.}
- type
- BoundingRect* {.importc.} = object
- top*, bottom*, left*, right*, x*, y*, width*, height*: float
- proc getBoundingClientRect*(e: Node): BoundingRect {.
- importcpp: "getBoundingClientRect", nodecl.}
- proc clientHeight*(): int {.
- importcpp: "(window.innerHeight || document.documentElement.clientHeight)@", nodecl.}
- proc clientWidth*(): int {.
- importcpp: "(window.innerWidth || document.documentElement.clientWidth)@", nodecl.}
- proc inViewport*(el: Node): bool =
- let rect = el.getBoundingClientRect()
- result = rect.top >= 0 and rect.left >= 0 and
- rect.bottom <= clientHeight().float and
- rect.right <= clientWidth().float
- proc scrollTop*(e: Node): int {.importcpp: "#.scrollTop", nodecl.}
- proc `scrollTop=`*(e: Node, value: int) {.importcpp: "#.scrollTop = #", nodecl.}
- proc scrollLeft*(e: Node): int {.importcpp: "#.scrollLeft", nodecl.}
- proc scrollHeight*(e: Node): int {.importcpp: "#.scrollHeight", nodecl.}
- proc scrollWidth*(e: Node): int {.importcpp: "#.scrollWidth", nodecl.}
- proc offsetHeight*(e: Node): int {.importcpp: "#.offsetHeight", nodecl.}
- proc offsetWidth*(e: Node): int {.importcpp: "#.offsetWidth", nodecl.}
- proc offsetTop*(e: Node): int {.importcpp: "#.offsetTop", nodecl.}
- proc offsetLeft*(e: Node): int {.importcpp: "#.offsetLeft", nodecl.}
- since (1, 3):
- func newDomParser*(): DomParser {.importcpp: "new DOMParser()".}
- ## DOM Parser constructor.
- func parseFromString*(this: DomParser; str: cstring; mimeType: cstring): Document {.importcpp.}
- ## Parse from string to `Document`.
- proc newDomException*(): DomException {.importcpp: "new DomException()", constructor.}
- ## DOM Exception constructor
- proc message*(ex: DomException): cstring {.importcpp: "#.message", nodecl.}
- ## https://developer.mozilla.org/en-US/docs/Web/API/DOMException/message
- proc name*(ex: DomException): cstring {.importcpp: "#.name", nodecl.}
- ## https://developer.mozilla.org/en-US/docs/Web/API/DOMException/name
- proc newFileReader*(): FileReader {.importcpp: "new FileReader()", constructor.}
- ## File Reader constructor
- proc error*(f: FileReader): DomException {.importcpp: "#.error", nodecl.}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/error
- proc readyState*(f: FileReader): FileReaderState {.importcpp: "#.readyState", nodecl.}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState
- proc resultAsString*(f: FileReader): cstring {.importcpp: "#.result", nodecl.}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result
- proc abort*(f: FileReader) {.importcpp: "#.abort()".}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/abort
- proc readAsBinaryString*(f: FileReader, b: Blob) {.importcpp: "#.readAsBinaryString(#)".}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString
- proc readAsDataURL*(f: FileReader, b: Blob) {.importcpp: "#.readAsDataURL(#)".}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL
- proc readAsText*(f: FileReader, b: Blob|File, encoding = cstring"UTF-8") {.importcpp: "#.readAsText(#, #)".}
- ## https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText
- since (1, 5):
- proc elementsFromPoint*(n: DocumentOrShadowRoot; x, y: float): seq[Element] {.importcpp.}
|