content: {-# 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"
  