{-# LANGUAGE OverloadedStrings #-} module React.DOM where import Data.Monoid import Data.Text (Text) import React.Elements import React.GHCJS import React.Imports import React.Types -- | Parent nodes always take a list of arguments and children. -- @ -- span_ [class_ "example"] $ ... children ... -- @ domParent :: JSString -> [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig domParent name attrs children = DomElement (ReactDOMElement name attrs children Nothing Nothing) domLeaf :: JSString -> [AttrOrHandler sig] -> ReactNode sig domLeaf name attrs = DomElement (ReactDOMElement name attrs mempty Nothing Nothing) -- -- TODO ToJSString a => ? -- -- Would this just be annoyingly ambiguous? text_ :: Text -> ReactNode sig text_ = NodeText textarea_ :: [AttrOrHandler sig] -> Text -> ReactNode sig textarea_ attrs str = domParent "textarea" attrs (text_ str) -- TODO generate these automatically a_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig a_ = domParent "a" abbr_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig abbr_ = domParent "abbr" address_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig address_ = domParent "address" article_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig article_ = domParent "article" aside_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig aside_ = domParent "aside" audio_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig audio_ = domParent "audio" b_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig b_ = domParent "b" bdi_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig bdi_ = domParent "bdi" bdo_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig bdo_ = domParent "bdo" big_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig big_ = domParent "big" blockquote_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig blockquote_ = domParent "blockquote" body_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig body_ = domParent "body" button_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig button_ = domParent "button" canvas_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig canvas_ = domParent "canvas" caption_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig caption_ = domParent "caption" cite_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig cite_ = domParent "cite" code_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig code_ = domParent "code" colgroup_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig colgroup_ = domParent "colgroup" data_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig data_ = domParent "data" datalist_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig datalist_ = domParent "datalist" dd_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig dd_ = domParent "dd" del_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig del_ = domParent "del" details_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig details_ = domParent "details" dfn_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig dfn_ = domParent "dfn" div_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig div_ = domParent "div" dl_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig dl_ = domParent "dl" dt_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig dt_ = domParent "dt" em_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig em_ = domParent "em" fieldset_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig fieldset_ = domParent "fieldset" figcaption_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig figcaption_ = domParent "figcaption" figure_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig figure_ = domParent "figure" footer_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig footer_ = domParent "footer" form_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig form_ = domParent "form" h1_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h1_ = domParent "h1" h2_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h2_ = domParent "h2" h3_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h3_ = domParent "h3" h4_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h4_ = domParent "h4" h5_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h5_ = domParent "h5" h6_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig h6_ = domParent "h6" head_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig head_ = domParent "head" header_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig header_ = domParent "header" html_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig html_ = domParent "html" i_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig i_ = domParent "i" iframe_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig iframe_ = domParent "iframe" ins_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig ins_ = domParent "ins" kbd_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig kbd_ = domParent "kbd" label_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig label_ = domParent "label" legend_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig legend_ = domParent "legend" li_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig li_ = domParent "li" main_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig main_ = domParent "main" map_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig map_ = domParent "map" mark_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig mark_ = domParent "mark" menu_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig menu_ = domParent "menu" menuitem_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig menuitem_ = domParent "menuitem" meter_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig meter_ = domParent "meter" nav_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig nav_ = domParent "nav" noscript_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig noscript_ = domParent "noscript" object_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig object_ = domParent "object" ol_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig ol_ = domParent "ol" optgroup_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig optgroup_ = domParent "optgroup" option_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig option_ = domParent "option" output_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig output_ = domParent "output" p_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig p_ = domParent "p" pre_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig pre_ = domParent "pre" progress_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig progress_ = domParent "progress" q_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig q_ = domParent "q" rp_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig rp_ = domParent "rp" rt_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig rt_ = domParent "rt" ruby_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig ruby_ = domParent "ruby" s_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig s_ = domParent "signal" samp_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig samp_ = domParent "samp" section_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig section_ = domParent "section" select_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig select_ = domParent "select" small_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig small_ = domParent "small" span_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig span_ = domParent "span" strong_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig strong_ = domParent "strong" sub_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig sub_ = domParent "sub" summary_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig summary_ = domParent "summary" sup_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig sup_ = domParent "sup" table_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig table_ = domParent "table" tbody_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig tbody_ = domParent "tbody" td_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig td_ = domParent "td" tfoot_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig tfoot_ = domParent "tfoot" th_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig th_ = domParent "th" thead_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig thead_ = domParent "thead" time_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig time_ = domParent "time" tr_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig tr_ = domParent "tr" u_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig u_ = domParent "u" ul_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig ul_ = domParent "ul" var_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig var_ = domParent "var" video_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig video_ = domParent "video" area_ :: [AttrOrHandler sig] -> ReactNode sig area_ = domLeaf "area" base_ :: [AttrOrHandler sig] -> ReactNode sig base_ = domLeaf "base" br_ :: [AttrOrHandler sig] -> ReactNode sig br_ = domLeaf "br" col_ :: [AttrOrHandler sig] -> ReactNode sig col_ = domLeaf "col" embed_ :: [AttrOrHandler sig] -> ReactNode sig embed_ = domLeaf "embed" hr_ :: [AttrOrHandler sig] -> ReactNode sig hr_ = domLeaf "hr" img_ :: [AttrOrHandler sig] -> ReactNode sig img_ = domLeaf "img" input_ :: [AttrOrHandler sig] -> ReactNode sig input_ = domLeaf "input" keygen_ :: [AttrOrHandler sig] -> ReactNode sig keygen_ = domLeaf "keygen" link_ :: [AttrOrHandler sig] -> ReactNode sig link_ = domLeaf "link" meta_ :: [AttrOrHandler sig] -> ReactNode sig meta_ = domLeaf "meta" param_ :: [AttrOrHandler sig] -> ReactNode sig param_ = domLeaf "param" source_ :: [AttrOrHandler sig] -> ReactNode sig source_ = domLeaf "source" track_ :: [AttrOrHandler sig] -> ReactNode sig track_ = domLeaf "track" wbr_ :: [AttrOrHandler sig] -> ReactNode sig wbr_ = domLeaf "wbr" -- script :: RawAttrs -> JSString -> IO ForeignNode -- style :: RawAttrs -> JSString -> IO ForeignNode -- title :: RawAttrs -> JSString -> IO ForeignNode -- svg! svg_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig svg_ = domParent "svg" defs_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig defs_ = domParent "defs" g_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig g_ = domParent "g" linearGradient_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig linearGradient_ = domParent "linearGradient" mask_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig mask_ = domParent "mask" pattern_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig pattern_ = domParent "pattern" radialGradient_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig radialGradient_ = domParent "radialGradient" stop_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig stop_ = domParent "stop" -- text_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig -- text_ = domParent "text" tspan_ :: [AttrOrHandler sig] -> ReactNode sig -> ReactNode sig tspan_ = domParent "tspan" circle_ :: [AttrOrHandler sig] -> ReactNode sig circle_ = domLeaf "circle" ellipse_ :: [AttrOrHandler sig] -> ReactNode sig ellipse_ = domLeaf "ellipse" line_ :: [AttrOrHandler sig] -> ReactNode sig line_ = domLeaf "line" path_ :: [AttrOrHandler sig] -> ReactNode sig path_ = domLeaf "path" polygon_ :: [AttrOrHandler sig] -> ReactNode sig polygon_ = domLeaf "polygon" polyline_ :: [AttrOrHandler sig] -> ReactNode sig polyline_ = domLeaf "polyline" rect_ :: [AttrOrHandler sig] -> ReactNode sig rect_ = domLeaf "rect"