123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447moduleProp=structincludeDom_dsl_core.PropincludeDom_aria_attributes(* List of props adapted from rescript-react:
* https://github.com/rescript-lang/rescript-react/blob/16dcbd8d079c7c20f3bd48fd677dfe7d70d0d020/src/ReactDOM.res#L51
*)(* react textarea/input *)letdefaultChecked=bool"defaultChecked"letdefaultValue=string"defaultValue"(* global html attributes *)letaccessKey=string"accessKey"letclassName=string"className"(* substitute for "class" *)letclassNamesnames=className(String.concat" "names)letcontentEditable=bool"contentEditable"letcontextMenu=string"contextMenu"letdir=string"dir"(* "ltr", "rtl" or "auto" *)letdraggable=bool"draggable"lethidden=bool"hidden"letid=string"id"letlang=string"lang"letrole=string"role"(* ARIA role *)letstyle=(any"style":Dom.Style.t->t)letspellCheck=bool"spellCheck"lettabIndex=int"tabIndex"lettitle=string"title"(* html5 microdata *)letitemID=string"itemID"letitemProp=string"itemProp"letitemRef=string"itemRef"letitemScope=bool"itemScope"letitemType=string"itemType"(* uri *)(* tag-specific html attributes *)letaccept=string"accept"letacceptCharset=string"acceptCharset"letaction=string"action"(* uri *)letallowFullScreen=bool"allowFullScreen"letalt=string"alt"letasync=bool"async"letautoComplete=string"autoComplete"(* has a fixed, but large-ish, set of possible values *)letautoCapitalize=string"autoCapitalize"(* Mobile Safari specific *)letautoFocus=bool"autoFocus"letautoPlay=bool"autoPlay"letchallenge=string"challenge"letcharSet=string"charSet"letchecked=bool"checked"letcite=string"cite"(* uri *)letcrossOrigin=string"crossOrigin"(* anonymous, use-credentials *)letcols=int"cols"letcolSpan=int"colSpan"letcontent=string"content"letcontrols=bool"controls"letcoords=string"coords"(* set of values specifying the coordinates of a region *)letdata=string"data"(* uri *)letdateTime=string"dateTime"(* "valid date string with optional time" *)letdefault=bool"default"letdefer=bool"defer"letdisabled=bool"disabled"letdownload=string"download"(* should really be either a boolean, signifying presence, or a string *)letencType=string"encType"(* "application/x-www-form-urlencoded", "multipart/form-data" or "text/plain" *)letform=string"form"letformAction=string"formAction"(* uri *)letformTarget=string"formTarget"(* "_blank", "_self", etc. *)letformMethod=string"formMethod"(* "post", "get", "put" *)letheaders=string"headers"letheight=string"height"(* in html5 this can only be a number, but in html4 it can ba a percentage as well *)lethigh=int"high"lethref=string"href"(* uri *)lethrefLang=string"hrefLang"lethtmlFor=string"htmlFor"(* substitute for "for" *)lethttpEquiv=string"httpEquiv"(* has a fixed set of possible values *)leticon=string"icon"(* uri? *)letinputMode=string"inputMode"(* "verbatim", "latin", "numeric", etc. *)letintegrity=string"integrity"letkeyType=string"keyType"letkind=string"kind"(* has a fixed set of possible values *)letlabel=string"label"letlist=string"list"letloop=bool"loop"letlow=int"low"letmanifest=string"manifest"(* uri *)letmax=string"max"(* should be int or Js.Date.t *)letmaxLength=int"maxLength"letmedia=string"media"(* a valid media query *)letmediaGroup=string"mediaGroup"letmethod_=string"method"(* "post" or "get", reserved keyword *)letmin=string"min"letminLength=int"minLength"letmultiple=bool"multiple"letmuted=bool"muted"letname=string"name"letnonce=string"nonce"letnoValidate=bool"noValidate"letopen_=bool"open"(* reserved keyword *)letoptimum=int"optimum"letpattern=string"pattern"(* valid Js RegExp *)letplaceholder=string"placeholder"letplaysInline=bool"playsInline"letposter=string"poster"(* uri *)letpreload=string"preload"(* "none", "metadata" or "auto" (and "" as a synonym for "auto") *)letradioGroup=string"radioGroup"letreadOnly=bool"readOnly"letrel=string"rel"(* a space- or comma-separated (depending on the element) list of a fixed set of "link types" *)letrequired=bool"required"letreversed=bool"reversed"letrows=int"rows"letrowSpan=int"rowSpan"letsandbox=string"sandbox"(* has a fixed set of possible values *)letscope=string"scope"(* has a fixed set of possible values *)letscoped=bool"scoped"letscrolling=string"scrolling"(* html4 only, "auto", "yes" or "no" *)letselected=bool"selected"letshape=string"shape"letsize=int"size"letsizes=string"sizes"letspan=int"span"letsrc=string"src"(* uri *)letsrcDoc=string"srcDoc"letsrcLang=string"srcLang"letsrcSet=string"srcSet"letstart=int"start"letstep=float_"step"letsummary=string"summary"(* deprecated *)lettarget=string"target"lettype_=string"type"(* has a fixed but large-ish set of possible values, reserved keyword *)letuseMap=string"useMap"letvalue=string"value"letwidth=string"width"(* in html5 this can only be a number, but in html4 it can ba a percentage as well *)letwrap=string"wrap"(* "hard" or "soft" *)(* Clipboard events *)letonCopy=(event"onCopy":(Event.Clipboard.t->unit)->t)letonCut=(event"onCut":(Event.Clipboard.t->unit)->t)letonPaste=(event"onPaste":(Event.Clipboard.t->unit)->t)(* Composition events *)letonCompositionEnd=(event"onCompositionEnd":(Event.Composition.t->unit)->t)letonCompositionStart=(event"onCompositionStart":(Event.Composition.t->unit)->t)letonCompositionUpdate=(event"onCompositionUpdate":(Event.Composition.t->unit)->t)(* Keyboard events *)letonKeyDown=(event"onKeyDown":(Event.Keyboard.t->unit)->t)letonKeyPress=(event"onKeyPress":(Event.Keyboard.t->unit)->t)letonKeyUp=(event"onKeyUp":(Event.Keyboard.t->unit)->t)(* Focus events *)letonFocus=(event"onFocus":(Event.Focus.t->unit)->t)letonBlur=(event"onBlur":(Event.Focus.t->unit)->t)(* Form events *)letonChange=(event"onChange":(Event.Form.t->unit)->t)letonInput=(event"onInput":(Event.Form.t->unit)->t)letonSubmit=(event"onSubmit":(Event.Form.t->unit)->t)letonInvalid=(event"onInvalid":(Event.Form.t->unit)->t)(* Mouse events *)letonClick=(event"onClick":(Event.Mouse.t->unit)->t)letonContextMenu=(event"onContextMenu":(Event.Mouse.t->unit)->t)letonDoubleClick=(event"onDoubleClick":(Event.Mouse.t->unit)->t)letonDrag=(event"onDrag":(Event.Mouse.t->unit)->t)letonDragEnd=(event"onDragEnd":(Event.Mouse.t->unit)->t)letonDragEnter=(event"onDragEnter":(Event.Mouse.t->unit)->t)letonDragExit=(event"onDragExit":(Event.Mouse.t->unit)->t)letonDragLeave=(event"onDragLeave":(Event.Mouse.t->unit)->t)letonDragOver=(event"onDragOver":(Event.Mouse.t->unit)->t)letonDragStart=(event"onDragStart":(Event.Mouse.t->unit)->t)letonDrop=(event"onDrop":(Event.Mouse.t->unit)->t)letonMouseDown=(event"onMouseDown":(Event.Mouse.t->unit)->t)letonMouseEnter=(event"onMouseEnter":(Event.Mouse.t->unit)->t)letonMouseLeave=(event"onMouseLeave":(Event.Mouse.t->unit)->t)letonMouseMove=(event"onMouseMove":(Event.Mouse.t->unit)->t)letonMouseOut=(event"onMouseOut":(Event.Mouse.t->unit)->t)letonMouseOver=(event"onMouseOver":(Event.Mouse.t->unit)->t)letonMouseUp=(event"onMouseUp":(Event.Mouse.t->unit)->t)(* Selection events *)letonSelect=(event"onSelect":(Event.Selection.t->unit)->t)(* Touch events *)letonTouchCancel=(event"onTouchCancel":(Event.Touch.t->unit)->t)letonTouchEnd=(event"onTouchEnd":(Event.Touch.t->unit)->t)letonTouchMove=(event"onTouchMove":(Event.Touch.t->unit)->t)letonTouchStart=(event"onTouchStart":(Event.Touch.t->unit)->t)(* Pointer events *)letonPointerOver=(event"onPointerOver":(Event.Pointer.t->unit)->t)letonPointerEnter=(event"onPointerEnter":(Event.Pointer.t->unit)->t)letonPointerDown=(event"onPointerDown":(Event.Pointer.t->unit)->t)letonPointerMove=(event"onPointerMove":(Event.Pointer.t->unit)->t)letonPointerUp=(event"onPointerUp":(Event.Pointer.t->unit)->t)letonPointerCancel=(event"onPointerCancel":(Event.Pointer.t->unit)->t)letonPointerOut=(event"onPointerOut":(Event.Pointer.t->unit)->t)letonPointerLeave=(event"onPointerLeave":(Event.Pointer.t->unit)->t)letonGotPointerCapture=(event"onGotPointerCapture":(Event.Pointer.t->unit)->t)letonLostPointerCapture=(event"onLostPointerCapture":(Event.Pointer.t->unit)->t)(* UI events *)letonScroll=(event"onScroll":(Event.UI.t->unit)->t)(* Wheel events *)letonWheel=(event"onWheel":(Event.Wheel.t->unit)->t)(* Media events *)letonAbort=(event"onAbort":(Event.Media.t->unit)->t)letonCanPlay=(event"onCanPlay":(Event.Media.t->unit)->t)letonCanPlayThrough=(event"onCanPlayThrough":(Event.Media.t->unit)->t)letonDurationChange=(event"onDurationChange":(Event.Media.t->unit)->t)letonEmptied=(event"onEmptied":(Event.Media.t->unit)->t)letonEncrypted=(event"onEncrypted":(Event.Media.t->unit)->t)letonEnded=(event"onEnded":(Event.Media.t->unit)->t)letonError=(event"onError":(Event.Media.t->unit)->t)letonLoadedData=(event"onLoadedData":(Event.Media.t->unit)->t)letonLoadedMetadata=(event"onLoadedMetadata":(Event.Media.t->unit)->t)letonLoadStart=(event"onLoadStart":(Event.Media.t->unit)->t)letonPause=(event"onPause":(Event.Media.t->unit)->t)letonPlay=(event"onPlay":(Event.Media.t->unit)->t)letonPlaying=(event"onPlaying":(Event.Media.t->unit)->t)letonProgress=(event"onProgress":(Event.Media.t->unit)->t)letonRateChange=(event"onRateChange":(Event.Media.t->unit)->t)letonSeeked=(event"onSeeked":(Event.Media.t->unit)->t)letonSeeking=(event"onSeeking":(Event.Media.t->unit)->t)letonStalled=(event"onStalled":(Event.Media.t->unit)->t)letonSuspend=(event"onSuspend":(Event.Media.t->unit)->t)letonTimeUpdate=(event"onTimeUpdate":(Event.Media.t->unit)->t)letonVolumeChange=(event"onVolumeChange":(Event.Media.t->unit)->t)letonWaiting=(event"onWaiting":(Event.Media.t->unit)->t)(* Image events *)letonLoad=(event"onLoad"(* duplicate *):(Event.Image.t->unit)->t)(* Animation events *)letonAnimationStart=(event"onAnimationStart":(Event.Animation.t->unit)->t)letonAnimationEnd=(event"onAnimationEnd":(Event.Animation.t->unit)->t)letonAnimationIteration=(event"onAnimationIteration":(Event.Animation.t->unit)->t)(* Transition events *)letonTransitionEnd=(event"onTransitionEnd":(Event.Transition.t->unit)->t)(* react-specific *)include[%js:typehtml_objectvalmake_react_html_object:__html:string->html_object[@@js.builder][@@js.verbatim_names]]letdangerouslySetInnerHTML(str:Dom.SafeString.t)=any"dangerouslySetInnerHTML"(make_react_html_object~__html:(Dom.SafeString.to_stringstr))letsuppressContentEditableWarning=bool"suppressContentEditableWarning"endincludePropincludeDom_dsl_core.ElementincludeDom_dsl_core.Common(* Elements *)leta=h"a"letabbr=h"abbr"letaddress=h"address"letarea=h"area"letarticle=h"article"letaside=h"aside"letaudio=h"audio"letb=h"b"letbase=h"base"letbdi=h"bdi"letbdo=h"bdo"letbig=h"big"letblockquote=h"blockquote"letbody=h"body"letbr=h"br"letbutton=h"button"letcanvas=h"canvas"letcaption=h"caption"letcite=h"cite"letcode=h"code"letcol=h"col"letcolgroup=h"colgroup"letdata=h"data"letdatalist=h"datalist"letdd=h"dd"letdel=h"del"letdetails=h"details"letdfn=h"dfn"letdialog=h"dialog"letdiv=h"div"letdl=h"dl"letdt=h"dt"letem=h"em"letembed=h"embed"letfieldset=h"fieldset"letfigcaption=h"figcaption"letfigure=h"figure"letfooter=h"footer"letform=h"form"leth1=h"h1"leth2=h"h2"leth3=h"h3"leth4=h"h4"leth5=h"h5"leth6=h"h6"lethead=h"head"letheader=h"header"lethr=h"hr"lethtml=h"html"leti=h"i"letiframe=h"iframe"letimg=h"img"letinput=h"input"letins=h"ins"letkbd=h"kbd"letkeygen=h"keygen"letlabel=h"label"letlegend=h"legend"letli=h"li"letlink=h"link"letmain=h"main"letmap=h"map"letmark=h"mark"letmenu=h"menu"letmenuitem=h"menuitem"letmeta=h"meta"letmeter=h"meter"letnav=h"nav"letnoscript=h"noscript"letobject_=h"object"(* reserved keyword *)letol=h"ol"letoptgroup=h"optgroup"letoption=h"option"letoutput=h"output"letp=h"p"letparam=h"param"letpicture=h"picture"letpre=h"pre"letprogress=h"progress"letq=h"q"letrp=h"rp"letrt=h"rt"letruby=h"ruby"lets=h"s"letsamp=h"samp"letscript=h"script"letsection=h"section"letselect=h"select"letsmall=h"small"letsource=h"source"letspan=h"span"letstrong=h"strong"letstyle=h"style"letsub=h"sub"letsummary=h"summary"letsup=h"sup"lettable=h"table"lettbody=h"tbody"lettd=h"td"lettextarea=h"textarea"lettfoot=h"tfoot"letth=h"th"letthead=h"thead"lettime=h"time"lettitle=h"title"lettr=h"tr"lettrack=h"track"letu=h"u"letul=h"ul"letvar=h"var"letvideo=h"video"letwbr=h"wbr"