diff --git a/.gitignore b/.gitignore index b15fc4a..8d84c2d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ output bower_components node_modules +.pulp-cache/ diff --git a/README.md b/README.md index 2da2941..3986040 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,14 @@ For a more high-level set of bindings, you might like to look at `purescript-the - [Module Documentation](docs/) +## Dynamic children + +There are two ways that child elements can be passed to components: +- The first way is to spread the child element array when passing them to React's `createElement` function. The [React.DOM](docs/React/DOM.md) and [React.DOM.SVG](docs/React/DOM/SVG.md) spread the child element array. +- The second way is to pass the child element array to `createElement` without spreading. This is useful when dealing with [dynamic children](https://facebook.github.io/react/docs/multiple-components.html#dynamic-children). In this case a `key` property should be assigned direclty to each child. The [React.DOM.Dynamic](docs/React/DOM/Dynamic.md) and [React.DOM.SVG.Dynamic](docs/React/DOM/SVG/Dynamic.md) pass the child element array without spreading. + +Note that this module provides functions `createElement` and `createElementDynamic` to handle the two cases above for component classes. + ## Building The library and example can be built with Pulp as follows: diff --git a/bower.json b/bower.json index 189a061..85aa2d2 100644 --- a/bower.json +++ b/bower.json @@ -15,10 +15,10 @@ "test", "tests" ], - "repository": { - "type": "git", + "repository": { + "type": "git", "url": "git://github.com/purescript-contrib/purescript-react.git" - }, + }, "dependencies": { "purescript-dom": "~0.2.6" }, diff --git a/docs/React.md b/docs/React.md index 6de9af3..08ab7bb 100644 --- a/docs/React.md +++ b/docs/React.md @@ -2,6 +2,14 @@ This module defines foreign types and functions which wrap React's functionality. +#### `TagName` + +``` purescript +type TagName = String +``` + +Name of a tag. + #### `ReactElement` ``` purescript @@ -308,7 +316,31 @@ Create an event handler. createElement :: forall props. ReactClass props -> props -> Array ReactElement -> ReactElement ``` -Create an element from a React class. +Create an element from a React class spreading the children array. Used when the children are known up front. + +#### `createElementDynamic` + +``` purescript +createElementDynamic :: forall props. ReactClass props -> props -> Array ReactElement -> ReactElement +``` + +Create an element from a React class passing the children array. Used for a dynamic array of children. + +#### `createElementTagName` + +``` purescript +createElementTagName :: forall props. TagName -> props -> Array ReactElement -> ReactElement +``` + +Create an element from a tag name spreading the children array. Used when the children are known up front. + +#### `createElementTagNameDynamic` + +``` purescript +createElementTagNameDynamic :: forall props. TagName -> props -> Array ReactElement -> ReactElement +``` + +Create an element from a tag name passing the children array. Used for a dynamic array of children. #### `createFactory` diff --git a/docs/React/DOM.md b/docs/React/DOM.md index 4cec55b..a5dc1e7 100644 --- a/docs/React/DOM.md +++ b/docs/React/DOM.md @@ -1,9 +1,16 @@ ## Module React.DOM +#### `IsDynamic` + +``` purescript +newtype IsDynamic + = IsDynamic Boolean +``` + #### `mkDOM` ``` purescript -mkDOM :: String -> Array Props -> Array ReactElement -> ReactElement +mkDOM :: IsDynamic -> TagName -> Array Props -> Array ReactElement -> ReactElement ``` #### `text` diff --git a/docs/React/DOM/Dynamic.md b/docs/React/DOM/Dynamic.md new file mode 100644 index 0000000..d5e9441 --- /dev/null +++ b/docs/React/DOM/Dynamic.md @@ -0,0 +1,1353 @@ +## Module React.DOM.Dynamic + +#### `text` + +``` purescript +text :: String -> ReactElement +``` + +#### `a` + +``` purescript +a :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `a'` + +``` purescript +a' :: Array ReactElement -> ReactElement +``` + +#### `abbr` + +``` purescript +abbr :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `abbr'` + +``` purescript +abbr' :: Array ReactElement -> ReactElement +``` + +#### `address` + +``` purescript +address :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `address'` + +``` purescript +address' :: Array ReactElement -> ReactElement +``` + +#### `area` + +``` purescript +area :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `area'` + +``` purescript +area' :: Array ReactElement -> ReactElement +``` + +#### `article` + +``` purescript +article :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `article'` + +``` purescript +article' :: Array ReactElement -> ReactElement +``` + +#### `aside` + +``` purescript +aside :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `aside'` + +``` purescript +aside' :: Array ReactElement -> ReactElement +``` + +#### `audio` + +``` purescript +audio :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `audio'` + +``` purescript +audio' :: Array ReactElement -> ReactElement +``` + +#### `b` + +``` purescript +b :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `b'` + +``` purescript +b' :: Array ReactElement -> ReactElement +``` + +#### `base` + +``` purescript +base :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `base'` + +``` purescript +base' :: Array ReactElement -> ReactElement +``` + +#### `bdi` + +``` purescript +bdi :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `bdi'` + +``` purescript +bdi' :: Array ReactElement -> ReactElement +``` + +#### `bdo` + +``` purescript +bdo :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `bdo'` + +``` purescript +bdo' :: Array ReactElement -> ReactElement +``` + +#### `big` + +``` purescript +big :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `big'` + +``` purescript +big' :: Array ReactElement -> ReactElement +``` + +#### `blockquote` + +``` purescript +blockquote :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `blockquote'` + +``` purescript +blockquote' :: Array ReactElement -> ReactElement +``` + +#### `body` + +``` purescript +body :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `body'` + +``` purescript +body' :: Array ReactElement -> ReactElement +``` + +#### `br` + +``` purescript +br :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `br'` + +``` purescript +br' :: Array ReactElement -> ReactElement +``` + +#### `button` + +``` purescript +button :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `button'` + +``` purescript +button' :: Array ReactElement -> ReactElement +``` + +#### `canvas` + +``` purescript +canvas :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `canvas'` + +``` purescript +canvas' :: Array ReactElement -> ReactElement +``` + +#### `caption` + +``` purescript +caption :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `caption'` + +``` purescript +caption' :: Array ReactElement -> ReactElement +``` + +#### `cite` + +``` purescript +cite :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `cite'` + +``` purescript +cite' :: Array ReactElement -> ReactElement +``` + +#### `code` + +``` purescript +code :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `code'` + +``` purescript +code' :: Array ReactElement -> ReactElement +``` + +#### `col` + +``` purescript +col :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `col'` + +``` purescript +col' :: Array ReactElement -> ReactElement +``` + +#### `colgroup` + +``` purescript +colgroup :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `colgroup'` + +``` purescript +colgroup' :: Array ReactElement -> ReactElement +``` + +#### `_data` + +``` purescript +_data :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `_data'` + +``` purescript +_data' :: Array ReactElement -> ReactElement +``` + +#### `datalist` + +``` purescript +datalist :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `datalist'` + +``` purescript +datalist' :: Array ReactElement -> ReactElement +``` + +#### `dd` + +``` purescript +dd :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `dd'` + +``` purescript +dd' :: Array ReactElement -> ReactElement +``` + +#### `del` + +``` purescript +del :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `del'` + +``` purescript +del' :: Array ReactElement -> ReactElement +``` + +#### `details` + +``` purescript +details :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `details'` + +``` purescript +details' :: Array ReactElement -> ReactElement +``` + +#### `dfn` + +``` purescript +dfn :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `dfn'` + +``` purescript +dfn' :: Array ReactElement -> ReactElement +``` + +#### `dialog` + +``` purescript +dialog :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `dialog'` + +``` purescript +dialog' :: Array ReactElement -> ReactElement +``` + +#### `div` + +``` purescript +div :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `div'` + +``` purescript +div' :: Array ReactElement -> ReactElement +``` + +#### `dl` + +``` purescript +dl :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `dl'` + +``` purescript +dl' :: Array ReactElement -> ReactElement +``` + +#### `dt` + +``` purescript +dt :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `dt'` + +``` purescript +dt' :: Array ReactElement -> ReactElement +``` + +#### `em` + +``` purescript +em :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `em'` + +``` purescript +em' :: Array ReactElement -> ReactElement +``` + +#### `embed` + +``` purescript +embed :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `embed'` + +``` purescript +embed' :: Array ReactElement -> ReactElement +``` + +#### `fieldset` + +``` purescript +fieldset :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `fieldset'` + +``` purescript +fieldset' :: Array ReactElement -> ReactElement +``` + +#### `figcaption` + +``` purescript +figcaption :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `figcaption'` + +``` purescript +figcaption' :: Array ReactElement -> ReactElement +``` + +#### `figure` + +``` purescript +figure :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `figure'` + +``` purescript +figure' :: Array ReactElement -> ReactElement +``` + +#### `footer` + +``` purescript +footer :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `footer'` + +``` purescript +footer' :: Array ReactElement -> ReactElement +``` + +#### `form` + +``` purescript +form :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `form'` + +``` purescript +form' :: Array ReactElement -> ReactElement +``` + +#### `h1` + +``` purescript +h1 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h1'` + +``` purescript +h1' :: Array ReactElement -> ReactElement +``` + +#### `h2` + +``` purescript +h2 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h2'` + +``` purescript +h2' :: Array ReactElement -> ReactElement +``` + +#### `h3` + +``` purescript +h3 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h3'` + +``` purescript +h3' :: Array ReactElement -> ReactElement +``` + +#### `h4` + +``` purescript +h4 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h4'` + +``` purescript +h4' :: Array ReactElement -> ReactElement +``` + +#### `h5` + +``` purescript +h5 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h5'` + +``` purescript +h5' :: Array ReactElement -> ReactElement +``` + +#### `h6` + +``` purescript +h6 :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `h6'` + +``` purescript +h6' :: Array ReactElement -> ReactElement +``` + +#### `head` + +``` purescript +head :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `head'` + +``` purescript +head' :: Array ReactElement -> ReactElement +``` + +#### `header` + +``` purescript +header :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `header'` + +``` purescript +header' :: Array ReactElement -> ReactElement +``` + +#### `hr` + +``` purescript +hr :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `hr'` + +``` purescript +hr' :: Array ReactElement -> ReactElement +``` + +#### `html` + +``` purescript +html :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `html'` + +``` purescript +html' :: Array ReactElement -> ReactElement +``` + +#### `i` + +``` purescript +i :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `i'` + +``` purescript +i' :: Array ReactElement -> ReactElement +``` + +#### `iframe` + +``` purescript +iframe :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `iframe'` + +``` purescript +iframe' :: Array ReactElement -> ReactElement +``` + +#### `img` + +``` purescript +img :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `img'` + +``` purescript +img' :: Array ReactElement -> ReactElement +``` + +#### `input` + +``` purescript +input :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `input'` + +``` purescript +input' :: Array ReactElement -> ReactElement +``` + +#### `ins` + +``` purescript +ins :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `ins'` + +``` purescript +ins' :: Array ReactElement -> ReactElement +``` + +#### `kbd` + +``` purescript +kbd :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `kbd'` + +``` purescript +kbd' :: Array ReactElement -> ReactElement +``` + +#### `keygen` + +``` purescript +keygen :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `keygen'` + +``` purescript +keygen' :: Array ReactElement -> ReactElement +``` + +#### `label` + +``` purescript +label :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `label'` + +``` purescript +label' :: Array ReactElement -> ReactElement +``` + +#### `legend` + +``` purescript +legend :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `legend'` + +``` purescript +legend' :: Array ReactElement -> ReactElement +``` + +#### `li` + +``` purescript +li :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `li'` + +``` purescript +li' :: Array ReactElement -> ReactElement +``` + +#### `link` + +``` purescript +link :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `link'` + +``` purescript +link' :: Array ReactElement -> ReactElement +``` + +#### `main` + +``` purescript +main :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `main'` + +``` purescript +main' :: Array ReactElement -> ReactElement +``` + +#### `map` + +``` purescript +map :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `map'` + +``` purescript +map' :: Array ReactElement -> ReactElement +``` + +#### `mark` + +``` purescript +mark :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `mark'` + +``` purescript +mark' :: Array ReactElement -> ReactElement +``` + +#### `menu` + +``` purescript +menu :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `menu'` + +``` purescript +menu' :: Array ReactElement -> ReactElement +``` + +#### `menuitem` + +``` purescript +menuitem :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `menuitem'` + +``` purescript +menuitem' :: Array ReactElement -> ReactElement +``` + +#### `meta` + +``` purescript +meta :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `meta'` + +``` purescript +meta' :: Array ReactElement -> ReactElement +``` + +#### `meter` + +``` purescript +meter :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `meter'` + +``` purescript +meter' :: Array ReactElement -> ReactElement +``` + +#### `nav` + +``` purescript +nav :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `nav'` + +``` purescript +nav' :: Array ReactElement -> ReactElement +``` + +#### `noscript` + +``` purescript +noscript :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `noscript'` + +``` purescript +noscript' :: Array ReactElement -> ReactElement +``` + +#### `object` + +``` purescript +object :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `object'` + +``` purescript +object' :: Array ReactElement -> ReactElement +``` + +#### `ol` + +``` purescript +ol :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `ol'` + +``` purescript +ol' :: Array ReactElement -> ReactElement +``` + +#### `optgroup` + +``` purescript +optgroup :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `optgroup'` + +``` purescript +optgroup' :: Array ReactElement -> ReactElement +``` + +#### `option` + +``` purescript +option :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `option'` + +``` purescript +option' :: Array ReactElement -> ReactElement +``` + +#### `output` + +``` purescript +output :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `output'` + +``` purescript +output' :: Array ReactElement -> ReactElement +``` + +#### `p` + +``` purescript +p :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `p'` + +``` purescript +p' :: Array ReactElement -> ReactElement +``` + +#### `param` + +``` purescript +param :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `param'` + +``` purescript +param' :: Array ReactElement -> ReactElement +``` + +#### `picture` + +``` purescript +picture :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `picture'` + +``` purescript +picture' :: Array ReactElement -> ReactElement +``` + +#### `pre` + +``` purescript +pre :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `pre'` + +``` purescript +pre' :: Array ReactElement -> ReactElement +``` + +#### `progress` + +``` purescript +progress :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `progress'` + +``` purescript +progress' :: Array ReactElement -> ReactElement +``` + +#### `q` + +``` purescript +q :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `q'` + +``` purescript +q' :: Array ReactElement -> ReactElement +``` + +#### `rp` + +``` purescript +rp :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `rp'` + +``` purescript +rp' :: Array ReactElement -> ReactElement +``` + +#### `rt` + +``` purescript +rt :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `rt'` + +``` purescript +rt' :: Array ReactElement -> ReactElement +``` + +#### `ruby` + +``` purescript +ruby :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `ruby'` + +``` purescript +ruby' :: Array ReactElement -> ReactElement +``` + +#### `s` + +``` purescript +s :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `s'` + +``` purescript +s' :: Array ReactElement -> ReactElement +``` + +#### `samp` + +``` purescript +samp :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `samp'` + +``` purescript +samp' :: Array ReactElement -> ReactElement +``` + +#### `script` + +``` purescript +script :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `script'` + +``` purescript +script' :: Array ReactElement -> ReactElement +``` + +#### `section` + +``` purescript +section :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `section'` + +``` purescript +section' :: Array ReactElement -> ReactElement +``` + +#### `select` + +``` purescript +select :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `select'` + +``` purescript +select' :: Array ReactElement -> ReactElement +``` + +#### `small` + +``` purescript +small :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `small'` + +``` purescript +small' :: Array ReactElement -> ReactElement +``` + +#### `source` + +``` purescript +source :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `source'` + +``` purescript +source' :: Array ReactElement -> ReactElement +``` + +#### `span` + +``` purescript +span :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `span'` + +``` purescript +span' :: Array ReactElement -> ReactElement +``` + +#### `strong` + +``` purescript +strong :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `strong'` + +``` purescript +strong' :: Array ReactElement -> ReactElement +``` + +#### `style` + +``` purescript +style :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `style'` + +``` purescript +style' :: Array ReactElement -> ReactElement +``` + +#### `sub` + +``` purescript +sub :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `sub'` + +``` purescript +sub' :: Array ReactElement -> ReactElement +``` + +#### `summary` + +``` purescript +summary :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `summary'` + +``` purescript +summary' :: Array ReactElement -> ReactElement +``` + +#### `sup` + +``` purescript +sup :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `sup'` + +``` purescript +sup' :: Array ReactElement -> ReactElement +``` + +#### `table` + +``` purescript +table :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `table'` + +``` purescript +table' :: Array ReactElement -> ReactElement +``` + +#### `tbody` + +``` purescript +tbody :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `tbody'` + +``` purescript +tbody' :: Array ReactElement -> ReactElement +``` + +#### `td` + +``` purescript +td :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `td'` + +``` purescript +td' :: Array ReactElement -> ReactElement +``` + +#### `textarea` + +``` purescript +textarea :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `textarea'` + +``` purescript +textarea' :: Array ReactElement -> ReactElement +``` + +#### `tfoot` + +``` purescript +tfoot :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `tfoot'` + +``` purescript +tfoot' :: Array ReactElement -> ReactElement +``` + +#### `th` + +``` purescript +th :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `th'` + +``` purescript +th' :: Array ReactElement -> ReactElement +``` + +#### `thead` + +``` purescript +thead :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `thead'` + +``` purescript +thead' :: Array ReactElement -> ReactElement +``` + +#### `time` + +``` purescript +time :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `time'` + +``` purescript +time' :: Array ReactElement -> ReactElement +``` + +#### `title` + +``` purescript +title :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `title'` + +``` purescript +title' :: Array ReactElement -> ReactElement +``` + +#### `tr` + +``` purescript +tr :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `tr'` + +``` purescript +tr' :: Array ReactElement -> ReactElement +``` + +#### `track` + +``` purescript +track :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `track'` + +``` purescript +track' :: Array ReactElement -> ReactElement +``` + +#### `u` + +``` purescript +u :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `u'` + +``` purescript +u' :: Array ReactElement -> ReactElement +``` + +#### `ul` + +``` purescript +ul :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `ul'` + +``` purescript +ul' :: Array ReactElement -> ReactElement +``` + +#### `var` + +``` purescript +var :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `var'` + +``` purescript +var' :: Array ReactElement -> ReactElement +``` + +#### `video` + +``` purescript +video :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `video'` + +``` purescript +video' :: Array ReactElement -> ReactElement +``` + +#### `wbr` + +``` purescript +wbr :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `wbr'` + +``` purescript +wbr' :: Array ReactElement -> ReactElement +``` + + diff --git a/docs/React/DOM/Props.md b/docs/React/DOM/Props.md index 95a71d2..ce21a8e 100644 --- a/docs/React/DOM/Props.md +++ b/docs/React/DOM/Props.md @@ -18,6 +18,12 @@ unsafeMkProps :: forall val. String -> val -> Props unsafeUnfoldProps :: forall vals. String -> { | vals } -> Props ``` +#### `unsafeFromPropsArray` + +``` purescript +unsafeFromPropsArray :: forall props. Array Props -> props +``` + #### `aria` ``` purescript diff --git a/docs/React/DOM/SVG/Dynamic.md b/docs/React/DOM/SVG/Dynamic.md new file mode 100644 index 0000000..a4ac98f --- /dev/null +++ b/docs/React/DOM/SVG/Dynamic.md @@ -0,0 +1,111 @@ +## Module React.DOM.SVG.Dynamic + +#### `circle` + +``` purescript +circle :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `clipPath` + +``` purescript +clipPath :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `defs` + +``` purescript +defs :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `ellipse` + +``` purescript +ellipse :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `g` + +``` purescript +g :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `line` + +``` purescript +line :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `linearGradient` + +``` purescript +linearGradient :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `mask` + +``` purescript +mask :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `path` + +``` purescript +path :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `pattern` + +``` purescript +pattern :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `polygon` + +``` purescript +polygon :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `polyline` + +``` purescript +polyline :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `radialGradient` + +``` purescript +radialGradient :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `rect` + +``` purescript +rect :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `stop` + +``` purescript +stop :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `svg` + +``` purescript +svg :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `text` + +``` purescript +text :: Array Props -> Array ReactElement -> ReactElement +``` + +#### `tspan` + +``` purescript +tspan :: Array Props -> Array ReactElement -> ReactElement +``` + + diff --git a/src/React.js b/src/React.js index 61bea49..c35c5bc 100644 --- a/src/React.js +++ b/src/React.js @@ -106,13 +106,25 @@ exports.handle = function(f) { }; }; -exports.createElement = function(clazz) { +function createElement(value) { return function(props) { return function(children){ - return React.createElement.apply(React, [clazz, props].concat(children)); + return React.createElement.apply(React, [value, props].concat(children)); }; }; }; +exports.createElement = createElement; +exports.createElementTagName = createElement; + +function createElementDynamic(value) { + return function(props) { + return function(children){ + return React.createElement(value, props, children); + }; + }; +}; +exports.createElementDynamic = createElementDynamic; +exports.createElementTagNameDynamic = createElementDynamic; exports.createFactory = function(clazz) { return React.createFactory(clazz); diff --git a/src/React.purs b/src/React.purs index 980d660..506706d 100644 --- a/src/React.purs +++ b/src/React.purs @@ -3,6 +3,7 @@ module React ( ReactElement() , ReactThis() + , TagName() , EventHandler() @@ -51,6 +52,9 @@ module React , createClass , createElement + , createElementDynamic + , createElementTagName + , createElementTagNameDynamic , createFactory , render @@ -64,6 +68,9 @@ import DOM.Node.Types (Element()) import Control.Monad.Eff (Eff()) +-- | Name of a tag. +type TagName = String + -- | A virtual DOM node, or component. foreign import data ReactElement :: * @@ -287,9 +294,18 @@ foreign import createClass :: forall props state eff. ReactSpec props state eff -- | Create an event handler. foreign import handle :: forall eff ev props state result. (ev -> EventHandlerContext eff props state result) -> EventHandler ev --- | Create an element from a React class. +-- | Create an element from a React class spreading the children array. Used when the children are known up front. foreign import createElement :: forall props. ReactClass props -> props -> Array ReactElement -> ReactElement +-- | Create an element from a React class passing the children array. Used for a dynamic array of children. +foreign import createElementDynamic :: forall props. ReactClass props -> props -> Array ReactElement -> ReactElement + +-- | Create an element from a tag name spreading the children array. Used when the children are known up front. +foreign import createElementTagName :: forall props. TagName -> props -> Array ReactElement -> ReactElement + +-- | Create an element from a tag name passing the children array. Used for a dynamic array of children. +foreign import createElementTagNameDynamic :: forall props. TagName -> props -> Array ReactElement -> ReactElement + -- | Create a factory from a React class. foreign import createFactory :: forall props. ReactClass props -> props -> ReactElement diff --git a/src/React/DOM.js b/src/React/DOM.js index 25727ad..565cde0 100644 --- a/src/React/DOM.js +++ b/src/React/DOM.js @@ -3,30 +3,6 @@ // module React.DOM -function mkProps(props) { - var result = {}; - - for (var i = 0, len = props.length; i < len; i++) { - var prop = props[i]; - - for (var key in prop) { - if (prop.hasOwnProperty(key)) { - result[key] = prop[key]; - } - } - } - - return result; -}; - -exports.mkDOM = function(tagName) { - return function(props) { - return function(children) { - return React.createElement(tagName, props.length > 0 ? mkProps(props) : null, children); - } - } -}; - exports.text = function(text) { return text; }; diff --git a/src/React/DOM.purs b/src/React/DOM.purs index f9a7fa6..2c3f9d5 100644 --- a/src/React/DOM.purs +++ b/src/React/DOM.purs @@ -1,682 +1,689 @@ module React.DOM where -import Prelude hiding (sub, div, map) +import React (ReactElement(), TagName(), createElementTagName, createElementTagNameDynamic) +import React.DOM.Props (Props(), unsafeFromPropsArray) -import React -import React.DOM.Props (Props()) +newtype IsDynamic = IsDynamic Boolean -foreign import mkDOM :: String -> Array Props -> Array ReactElement -> ReactElement +mkDOM :: IsDynamic -> TagName -> Array Props -> Array ReactElement -> ReactElement +mkDOM dynamic tag props = createElement tag (unsafeFromPropsArray props) + where + createElement :: TagName -> Array Props -> Array ReactElement -> ReactElement + createElement = + case dynamic of + IsDynamic false -> createElementTagName + IsDynamic true -> createElementTagNameDynamic foreign import text :: String -> ReactElement a :: Array Props -> Array ReactElement -> ReactElement -a = mkDOM "a" +a = mkDOM (IsDynamic false) "a" a' :: Array ReactElement -> ReactElement a' = a [] abbr :: Array Props -> Array ReactElement -> ReactElement -abbr = mkDOM "abbr" +abbr = mkDOM (IsDynamic false) "abbr" abbr' :: Array ReactElement -> ReactElement abbr' = abbr [] address :: Array Props -> Array ReactElement -> ReactElement -address = mkDOM "address" +address = mkDOM (IsDynamic false) "address" address' :: Array ReactElement -> ReactElement address' = address [] area :: Array Props -> Array ReactElement -> ReactElement -area = mkDOM "area" +area = mkDOM (IsDynamic false) "area" area' :: Array ReactElement -> ReactElement area' = area [] article :: Array Props -> Array ReactElement -> ReactElement -article = mkDOM "article" +article = mkDOM (IsDynamic false) "article" article' :: Array ReactElement -> ReactElement article' = article [] aside :: Array Props -> Array ReactElement -> ReactElement -aside = mkDOM "aside" +aside = mkDOM (IsDynamic false) "aside" aside' :: Array ReactElement -> ReactElement aside' = aside [] audio :: Array Props -> Array ReactElement -> ReactElement -audio = mkDOM "audio" +audio = mkDOM (IsDynamic false) "audio" audio' :: Array ReactElement -> ReactElement audio' = audio [] b :: Array Props -> Array ReactElement -> ReactElement -b = mkDOM "b" +b = mkDOM (IsDynamic false) "b" b' :: Array ReactElement -> ReactElement b' = b [] base :: Array Props -> Array ReactElement -> ReactElement -base = mkDOM "base" +base = mkDOM (IsDynamic false) "base" base' :: Array ReactElement -> ReactElement base' = base [] bdi :: Array Props -> Array ReactElement -> ReactElement -bdi = mkDOM "bdi" +bdi = mkDOM (IsDynamic false) "bdi" bdi' :: Array ReactElement -> ReactElement bdi' = bdi [] bdo :: Array Props -> Array ReactElement -> ReactElement -bdo = mkDOM "bdo" +bdo = mkDOM (IsDynamic false) "bdo" bdo' :: Array ReactElement -> ReactElement bdo' = bdo [] big :: Array Props -> Array ReactElement -> ReactElement -big = mkDOM "big" +big = mkDOM (IsDynamic false) "big" big' :: Array ReactElement -> ReactElement big' = big [] blockquote :: Array Props -> Array ReactElement -> ReactElement -blockquote = mkDOM "blockquote" +blockquote = mkDOM (IsDynamic false) "blockquote" blockquote' :: Array ReactElement -> ReactElement blockquote' = blockquote [] body :: Array Props -> Array ReactElement -> ReactElement -body = mkDOM "body" +body = mkDOM (IsDynamic false) "body" body' :: Array ReactElement -> ReactElement body' = body [] br :: Array Props -> Array ReactElement -> ReactElement -br = mkDOM "br" +br = mkDOM (IsDynamic false) "br" br' :: Array ReactElement -> ReactElement br' = br [] button :: Array Props -> Array ReactElement -> ReactElement -button = mkDOM "button" +button = mkDOM (IsDynamic false) "button" button' :: Array ReactElement -> ReactElement button' = button [] canvas :: Array Props -> Array ReactElement -> ReactElement -canvas = mkDOM "canvas" +canvas = mkDOM (IsDynamic false) "canvas" canvas' :: Array ReactElement -> ReactElement canvas' = canvas [] caption :: Array Props -> Array ReactElement -> ReactElement -caption = mkDOM "caption" +caption = mkDOM (IsDynamic false) "caption" caption' :: Array ReactElement -> ReactElement caption' = caption [] cite :: Array Props -> Array ReactElement -> ReactElement -cite = mkDOM "cite" +cite = mkDOM (IsDynamic false) "cite" cite' :: Array ReactElement -> ReactElement cite' = cite [] code :: Array Props -> Array ReactElement -> ReactElement -code = mkDOM "code" +code = mkDOM (IsDynamic false) "code" code' :: Array ReactElement -> ReactElement code' = code [] col :: Array Props -> Array ReactElement -> ReactElement -col = mkDOM "col" +col = mkDOM (IsDynamic false) "col" col' :: Array ReactElement -> ReactElement col' = col [] colgroup :: Array Props -> Array ReactElement -> ReactElement -colgroup = mkDOM "colgroup" +colgroup = mkDOM (IsDynamic false) "colgroup" colgroup' :: Array ReactElement -> ReactElement colgroup' = colgroup [] _data :: Array Props -> Array ReactElement -> ReactElement -_data = mkDOM "data" +_data = mkDOM (IsDynamic false) "data" _data' :: Array ReactElement -> ReactElement _data' = _data [] datalist :: Array Props -> Array ReactElement -> ReactElement -datalist = mkDOM "datalist" +datalist = mkDOM (IsDynamic false) "datalist" datalist' :: Array ReactElement -> ReactElement datalist' = datalist [] dd :: Array Props -> Array ReactElement -> ReactElement -dd = mkDOM "dd" +dd = mkDOM (IsDynamic false) "dd" dd' :: Array ReactElement -> ReactElement dd' = dd [] del :: Array Props -> Array ReactElement -> ReactElement -del = mkDOM "del" +del = mkDOM (IsDynamic false) "del" del' :: Array ReactElement -> ReactElement del' = del [] details :: Array Props -> Array ReactElement -> ReactElement -details = mkDOM "details" +details = mkDOM (IsDynamic false) "details" details' :: Array ReactElement -> ReactElement details' = details [] dfn :: Array Props -> Array ReactElement -> ReactElement -dfn = mkDOM "dfn" +dfn = mkDOM (IsDynamic false) "dfn" dfn' :: Array ReactElement -> ReactElement dfn' = dfn [] dialog :: Array Props -> Array ReactElement -> ReactElement -dialog = mkDOM "dialog" +dialog = mkDOM (IsDynamic false) "dialog" dialog' :: Array ReactElement -> ReactElement dialog' = dialog [] div :: Array Props -> Array ReactElement -> ReactElement -div = mkDOM "div" +div = mkDOM (IsDynamic false) "div" div' :: Array ReactElement -> ReactElement div' = div [] dl :: Array Props -> Array ReactElement -> ReactElement -dl = mkDOM "dl" +dl = mkDOM (IsDynamic false) "dl" dl' :: Array ReactElement -> ReactElement dl' = dl [] dt :: Array Props -> Array ReactElement -> ReactElement -dt = mkDOM "dt" +dt = mkDOM (IsDynamic false) "dt" dt' :: Array ReactElement -> ReactElement dt' = dt [] em :: Array Props -> Array ReactElement -> ReactElement -em = mkDOM "em" +em = mkDOM (IsDynamic false) "em" em' :: Array ReactElement -> ReactElement em' = em [] embed :: Array Props -> Array ReactElement -> ReactElement -embed = mkDOM "embed" +embed = mkDOM (IsDynamic false) "embed" embed' :: Array ReactElement -> ReactElement embed' = embed [] fieldset :: Array Props -> Array ReactElement -> ReactElement -fieldset = mkDOM "fieldset" +fieldset = mkDOM (IsDynamic false) "fieldset" fieldset' :: Array ReactElement -> ReactElement fieldset' = fieldset [] figcaption :: Array Props -> Array ReactElement -> ReactElement -figcaption = mkDOM "figcaption" +figcaption = mkDOM (IsDynamic false) "figcaption" figcaption' :: Array ReactElement -> ReactElement figcaption' = figcaption [] figure :: Array Props -> Array ReactElement -> ReactElement -figure = mkDOM "figure" +figure = mkDOM (IsDynamic false) "figure" figure' :: Array ReactElement -> ReactElement figure' = figure [] footer :: Array Props -> Array ReactElement -> ReactElement -footer = mkDOM "footer" +footer = mkDOM (IsDynamic false) "footer" footer' :: Array ReactElement -> ReactElement footer' = footer [] form :: Array Props -> Array ReactElement -> ReactElement -form = mkDOM "form" +form = mkDOM (IsDynamic false) "form" form' :: Array ReactElement -> ReactElement form' = form [] h1 :: Array Props -> Array ReactElement -> ReactElement -h1 = mkDOM "h1" +h1 = mkDOM (IsDynamic false) "h1" h1' :: Array ReactElement -> ReactElement h1' = h1 [] h2 :: Array Props -> Array ReactElement -> ReactElement -h2 = mkDOM "h2" +h2 = mkDOM (IsDynamic false) "h2" h2' :: Array ReactElement -> ReactElement h2' = h2 [] h3 :: Array Props -> Array ReactElement -> ReactElement -h3 = mkDOM "h3" +h3 = mkDOM (IsDynamic false) "h3" h3' :: Array ReactElement -> ReactElement h3' = h3 [] h4 :: Array Props -> Array ReactElement -> ReactElement -h4 = mkDOM "h4" +h4 = mkDOM (IsDynamic false) "h4" h4' :: Array ReactElement -> ReactElement h4' = h4 [] h5 :: Array Props -> Array ReactElement -> ReactElement -h5 = mkDOM "h5" +h5 = mkDOM (IsDynamic false) "h5" h5' :: Array ReactElement -> ReactElement h5' = h5 [] h6 :: Array Props -> Array ReactElement -> ReactElement -h6 = mkDOM "h6" +h6 = mkDOM (IsDynamic false) "h6" h6' :: Array ReactElement -> ReactElement h6' = h6 [] head :: Array Props -> Array ReactElement -> ReactElement -head = mkDOM "head" +head = mkDOM (IsDynamic false) "head" head' :: Array ReactElement -> ReactElement head' = head [] header :: Array Props -> Array ReactElement -> ReactElement -header = mkDOM "header" +header = mkDOM (IsDynamic false) "header" header' :: Array ReactElement -> ReactElement header' = header [] hr :: Array Props -> Array ReactElement -> ReactElement -hr = mkDOM "hr" +hr = mkDOM (IsDynamic false) "hr" hr' :: Array ReactElement -> ReactElement hr' = hr [] html :: Array Props -> Array ReactElement -> ReactElement -html = mkDOM "html" +html = mkDOM (IsDynamic false) "html" html' :: Array ReactElement -> ReactElement html' = html [] i :: Array Props -> Array ReactElement -> ReactElement -i = mkDOM "i" +i = mkDOM (IsDynamic false) "i" i' :: Array ReactElement -> ReactElement i' = i [] iframe :: Array Props -> Array ReactElement -> ReactElement -iframe = mkDOM "iframe" +iframe = mkDOM (IsDynamic false) "iframe" iframe' :: Array ReactElement -> ReactElement iframe' = iframe [] img :: Array Props -> Array ReactElement -> ReactElement -img = mkDOM "img" +img = mkDOM (IsDynamic false) "img" img' :: Array ReactElement -> ReactElement img' = img [] input :: Array Props -> Array ReactElement -> ReactElement -input = mkDOM "input" +input = mkDOM (IsDynamic false) "input" input' :: Array ReactElement -> ReactElement input' = input [] ins :: Array Props -> Array ReactElement -> ReactElement -ins = mkDOM "ins" +ins = mkDOM (IsDynamic false) "ins" ins' :: Array ReactElement -> ReactElement ins' = ins [] kbd :: Array Props -> Array ReactElement -> ReactElement -kbd = mkDOM "kbd" +kbd = mkDOM (IsDynamic false) "kbd" kbd' :: Array ReactElement -> ReactElement kbd' = kbd [] keygen :: Array Props -> Array ReactElement -> ReactElement -keygen = mkDOM "keygen" +keygen = mkDOM (IsDynamic false) "keygen" keygen' :: Array ReactElement -> ReactElement keygen' = keygen [] label :: Array Props -> Array ReactElement -> ReactElement -label = mkDOM "label" +label = mkDOM (IsDynamic false) "label" label' :: Array ReactElement -> ReactElement label' = label [] legend :: Array Props -> Array ReactElement -> ReactElement -legend = mkDOM "legend" +legend = mkDOM (IsDynamic false) "legend" legend' :: Array ReactElement -> ReactElement legend' = legend [] li :: Array Props -> Array ReactElement -> ReactElement -li = mkDOM "li" +li = mkDOM (IsDynamic false) "li" li' :: Array ReactElement -> ReactElement li' = li [] link :: Array Props -> Array ReactElement -> ReactElement -link = mkDOM "link" +link = mkDOM (IsDynamic false) "link" link' :: Array ReactElement -> ReactElement link' = body [] main :: Array Props -> Array ReactElement -> ReactElement -main = mkDOM "main" +main = mkDOM (IsDynamic false) "main" main' :: Array ReactElement -> ReactElement main' = main [] map :: Array Props -> Array ReactElement -> ReactElement -map = mkDOM "map" +map = mkDOM (IsDynamic false) "map" map' :: Array ReactElement -> ReactElement map' = map [] mark :: Array Props -> Array ReactElement -> ReactElement -mark = mkDOM "mark" +mark = mkDOM (IsDynamic false) "mark" mark' :: Array ReactElement -> ReactElement mark' = mark [] menu :: Array Props -> Array ReactElement -> ReactElement -menu = mkDOM "menu" +menu = mkDOM (IsDynamic false) "menu" menu' :: Array ReactElement -> ReactElement menu' = menu [] menuitem :: Array Props -> Array ReactElement -> ReactElement -menuitem = mkDOM "menuitem" +menuitem = mkDOM (IsDynamic false) "menuitem" menuitem' :: Array ReactElement -> ReactElement menuitem' = menuitem [] meta :: Array Props -> Array ReactElement -> ReactElement -meta = mkDOM "meta" +meta = mkDOM (IsDynamic false) "meta" meta' :: Array ReactElement -> ReactElement meta' = meta [] meter :: Array Props -> Array ReactElement -> ReactElement -meter = mkDOM "meter" +meter = mkDOM (IsDynamic false) "meter" meter' :: Array ReactElement -> ReactElement meter' = meter [] nav :: Array Props -> Array ReactElement -> ReactElement -nav = mkDOM "nav" +nav = mkDOM (IsDynamic false) "nav" nav' :: Array ReactElement -> ReactElement nav' = nav [] noscript :: Array Props -> Array ReactElement -> ReactElement -noscript = mkDOM "noscript" +noscript = mkDOM (IsDynamic false) "noscript" noscript' :: Array ReactElement -> ReactElement noscript' = noscript [] object :: Array Props -> Array ReactElement -> ReactElement -object = mkDOM "object" +object = mkDOM (IsDynamic false) "object" object' :: Array ReactElement -> ReactElement object' = object [] ol :: Array Props -> Array ReactElement -> ReactElement -ol = mkDOM "ol" +ol = mkDOM (IsDynamic false) "ol" ol' :: Array ReactElement -> ReactElement ol' = ol [] optgroup :: Array Props -> Array ReactElement -> ReactElement -optgroup = mkDOM "optgroup" +optgroup = mkDOM (IsDynamic false) "optgroup" optgroup' :: Array ReactElement -> ReactElement optgroup' = optgroup [] option :: Array Props -> Array ReactElement -> ReactElement -option = mkDOM "option" +option = mkDOM (IsDynamic false) "option" option' :: Array ReactElement -> ReactElement option' = option [] output :: Array Props -> Array ReactElement -> ReactElement -output = mkDOM "output" +output = mkDOM (IsDynamic false) "output" output' :: Array ReactElement -> ReactElement output' = output [] p :: Array Props -> Array ReactElement -> ReactElement -p = mkDOM "p" +p = mkDOM (IsDynamic false) "p" p' :: Array ReactElement -> ReactElement p' = p [] param :: Array Props -> Array ReactElement -> ReactElement -param = mkDOM "param" +param = mkDOM (IsDynamic false) "param" param' :: Array ReactElement -> ReactElement param' = param [] picture :: Array Props -> Array ReactElement -> ReactElement -picture = mkDOM "picture" +picture = mkDOM (IsDynamic false) "picture" picture' :: Array ReactElement -> ReactElement picture' = picture [] pre :: Array Props -> Array ReactElement -> ReactElement -pre = mkDOM "pre" +pre = mkDOM (IsDynamic false) "pre" pre' :: Array ReactElement -> ReactElement pre' = pre [] progress :: Array Props -> Array ReactElement -> ReactElement -progress = mkDOM "progress" +progress = mkDOM (IsDynamic false) "progress" progress' :: Array ReactElement -> ReactElement progress' = progress [] q :: Array Props -> Array ReactElement -> ReactElement -q = mkDOM "q" +q = mkDOM (IsDynamic false) "q" q' :: Array ReactElement -> ReactElement q' = q [] rp :: Array Props -> Array ReactElement -> ReactElement -rp = mkDOM "rp" +rp = mkDOM (IsDynamic false) "rp" rp' :: Array ReactElement -> ReactElement rp' = rp [] rt :: Array Props -> Array ReactElement -> ReactElement -rt = mkDOM "rt" +rt = mkDOM (IsDynamic false) "rt" rt' :: Array ReactElement -> ReactElement rt' = rt [] ruby :: Array Props -> Array ReactElement -> ReactElement -ruby = mkDOM "ruby" +ruby = mkDOM (IsDynamic false) "ruby" ruby' :: Array ReactElement -> ReactElement ruby' = ruby [] s :: Array Props -> Array ReactElement -> ReactElement -s = mkDOM "s" +s = mkDOM (IsDynamic false) "s" s' :: Array ReactElement -> ReactElement s' = s [] samp :: Array Props -> Array ReactElement -> ReactElement -samp = mkDOM "samp" +samp = mkDOM (IsDynamic false) "samp" samp' :: Array ReactElement -> ReactElement samp' = samp [] script :: Array Props -> Array ReactElement -> ReactElement -script = mkDOM "script" +script = mkDOM (IsDynamic false) "script" script' :: Array ReactElement -> ReactElement script' = script [] section :: Array Props -> Array ReactElement -> ReactElement -section = mkDOM "section" +section = mkDOM (IsDynamic false) "section" section' :: Array ReactElement -> ReactElement section' = section [] select :: Array Props -> Array ReactElement -> ReactElement -select = mkDOM "select" +select = mkDOM (IsDynamic false) "select" select' :: Array ReactElement -> ReactElement select' = select [] small :: Array Props -> Array ReactElement -> ReactElement -small = mkDOM "small" +small = mkDOM (IsDynamic false) "small" small' :: Array ReactElement -> ReactElement small' = small [] source :: Array Props -> Array ReactElement -> ReactElement -source = mkDOM "source" +source = mkDOM (IsDynamic false) "source" source' :: Array ReactElement -> ReactElement source' = source [] span :: Array Props -> Array ReactElement -> ReactElement -span = mkDOM "span" +span = mkDOM (IsDynamic false) "span" span' :: Array ReactElement -> ReactElement span' = span [] strong :: Array Props -> Array ReactElement -> ReactElement -strong = mkDOM "strong" +strong = mkDOM (IsDynamic false) "strong" strong' :: Array ReactElement -> ReactElement strong' = strong [] style :: Array Props -> Array ReactElement -> ReactElement -style = mkDOM "style" +style = mkDOM (IsDynamic false) "style" style' :: Array ReactElement -> ReactElement style' = style [] sub :: Array Props -> Array ReactElement -> ReactElement -sub = mkDOM "sub" +sub = mkDOM (IsDynamic false) "sub" sub' :: Array ReactElement -> ReactElement sub' = sub [] summary :: Array Props -> Array ReactElement -> ReactElement -summary = mkDOM "summary" +summary = mkDOM (IsDynamic false) "summary" summary' :: Array ReactElement -> ReactElement summary' = summary [] sup :: Array Props -> Array ReactElement -> ReactElement -sup = mkDOM "sup" +sup = mkDOM (IsDynamic false) "sup" sup' :: Array ReactElement -> ReactElement sup' = sup [] table :: Array Props -> Array ReactElement -> ReactElement -table = mkDOM "table" +table = mkDOM (IsDynamic false) "table" table' :: Array ReactElement -> ReactElement table' = table [] tbody :: Array Props -> Array ReactElement -> ReactElement -tbody = mkDOM "tbody" +tbody = mkDOM (IsDynamic false) "tbody" tbody' :: Array ReactElement -> ReactElement tbody' = tbody [] td :: Array Props -> Array ReactElement -> ReactElement -td = mkDOM "td" +td = mkDOM (IsDynamic false) "td" td' :: Array ReactElement -> ReactElement td' = td [] textarea :: Array Props -> Array ReactElement -> ReactElement -textarea = mkDOM "textarea" +textarea = mkDOM (IsDynamic false) "textarea" textarea' :: Array ReactElement -> ReactElement textarea' = textarea [] tfoot :: Array Props -> Array ReactElement -> ReactElement -tfoot = mkDOM "tfoot" +tfoot = mkDOM (IsDynamic false) "tfoot" tfoot' :: Array ReactElement -> ReactElement tfoot' = tfoot [] th :: Array Props -> Array ReactElement -> ReactElement -th = mkDOM "th" +th = mkDOM (IsDynamic false) "th" th' :: Array ReactElement -> ReactElement th' = th [] thead :: Array Props -> Array ReactElement -> ReactElement -thead = mkDOM "thead" +thead = mkDOM (IsDynamic false) "thead" thead' :: Array ReactElement -> ReactElement thead' = thead [] time :: Array Props -> Array ReactElement -> ReactElement -time = mkDOM "time" +time = mkDOM (IsDynamic false) "time" time' :: Array ReactElement -> ReactElement time' = time [] title :: Array Props -> Array ReactElement -> ReactElement -title = mkDOM "title" +title = mkDOM (IsDynamic false) "title" title' :: Array ReactElement -> ReactElement title' = title [] tr :: Array Props -> Array ReactElement -> ReactElement -tr = mkDOM "tr" +tr = mkDOM (IsDynamic false) "tr" tr' :: Array ReactElement -> ReactElement tr' = tr [] track :: Array Props -> Array ReactElement -> ReactElement -track = mkDOM "track" +track = mkDOM (IsDynamic false) "track" track' :: Array ReactElement -> ReactElement track' = track [] u :: Array Props -> Array ReactElement -> ReactElement -u = mkDOM "u" +u = mkDOM (IsDynamic false) "u" u' :: Array ReactElement -> ReactElement u' = u [] ul :: Array Props -> Array ReactElement -> ReactElement -ul = mkDOM "ul" +ul = mkDOM (IsDynamic false) "ul" ul' :: Array ReactElement -> ReactElement ul' = ul [] var :: Array Props -> Array ReactElement -> ReactElement -var = mkDOM "var" +var = mkDOM (IsDynamic false) "var" var' :: Array ReactElement -> ReactElement var' = var [] video :: Array Props -> Array ReactElement -> ReactElement -video = mkDOM "video" +video = mkDOM (IsDynamic false) "video" video' :: Array ReactElement -> ReactElement video' = video [] wbr :: Array Props -> Array ReactElement -> ReactElement -wbr = mkDOM "body" +wbr = mkDOM (IsDynamic false) "body" wbr' :: Array ReactElement -> ReactElement wbr' = wbr [] diff --git a/src/React/DOM/Dynamic.purs b/src/React/DOM/Dynamic.purs new file mode 100644 index 0000000..2a63cb3 --- /dev/null +++ b/src/React/DOM/Dynamic.purs @@ -0,0 +1,680 @@ +module React.DOM.Dynamic where + +import React (ReactElement()) +import React.DOM.Props (Props()) +import qualified React.DOM as DOM + +text :: String -> ReactElement +text = DOM.text + +a :: Array Props -> Array ReactElement -> ReactElement +a = DOM.mkDOM (DOM.IsDynamic true) "a" + +a' :: Array ReactElement -> ReactElement +a' = a [] + +abbr :: Array Props -> Array ReactElement -> ReactElement +abbr = DOM.mkDOM (DOM.IsDynamic true) "abbr" + +abbr' :: Array ReactElement -> ReactElement +abbr' = abbr [] + +address :: Array Props -> Array ReactElement -> ReactElement +address = DOM.mkDOM (DOM.IsDynamic true) "address" + +address' :: Array ReactElement -> ReactElement +address' = address [] + +area :: Array Props -> Array ReactElement -> ReactElement +area = DOM.mkDOM (DOM.IsDynamic true) "area" + +area' :: Array ReactElement -> ReactElement +area' = area [] + +article :: Array Props -> Array ReactElement -> ReactElement +article = DOM.mkDOM (DOM.IsDynamic true) "article" + +article' :: Array ReactElement -> ReactElement +article' = article [] + +aside :: Array Props -> Array ReactElement -> ReactElement +aside = DOM.mkDOM (DOM.IsDynamic true) "aside" + +aside' :: Array ReactElement -> ReactElement +aside' = aside [] + +audio :: Array Props -> Array ReactElement -> ReactElement +audio = DOM.mkDOM (DOM.IsDynamic true) "audio" + +audio' :: Array ReactElement -> ReactElement +audio' = audio [] + +b :: Array Props -> Array ReactElement -> ReactElement +b = DOM.mkDOM (DOM.IsDynamic true) "b" + +b' :: Array ReactElement -> ReactElement +b' = b [] + +base :: Array Props -> Array ReactElement -> ReactElement +base = DOM.mkDOM (DOM.IsDynamic true) "base" + +base' :: Array ReactElement -> ReactElement +base' = base [] + +bdi :: Array Props -> Array ReactElement -> ReactElement +bdi = DOM.mkDOM (DOM.IsDynamic true) "bdi" + +bdi' :: Array ReactElement -> ReactElement +bdi' = bdi [] + +bdo :: Array Props -> Array ReactElement -> ReactElement +bdo = DOM.mkDOM (DOM.IsDynamic true) "bdo" + +bdo' :: Array ReactElement -> ReactElement +bdo' = bdo [] + +big :: Array Props -> Array ReactElement -> ReactElement +big = DOM.mkDOM (DOM.IsDynamic true) "big" + +big' :: Array ReactElement -> ReactElement +big' = big [] + +blockquote :: Array Props -> Array ReactElement -> ReactElement +blockquote = DOM.mkDOM (DOM.IsDynamic true) "blockquote" + +blockquote' :: Array ReactElement -> ReactElement +blockquote' = blockquote [] + +body :: Array Props -> Array ReactElement -> ReactElement +body = DOM.mkDOM (DOM.IsDynamic true) "body" + +body' :: Array ReactElement -> ReactElement +body' = body [] + +br :: Array Props -> Array ReactElement -> ReactElement +br = DOM.mkDOM (DOM.IsDynamic true) "br" + +br' :: Array ReactElement -> ReactElement +br' = br [] + +button :: Array Props -> Array ReactElement -> ReactElement +button = DOM.mkDOM (DOM.IsDynamic true) "button" + +button' :: Array ReactElement -> ReactElement +button' = button [] + +canvas :: Array Props -> Array ReactElement -> ReactElement +canvas = DOM.mkDOM (DOM.IsDynamic true) "canvas" + +canvas' :: Array ReactElement -> ReactElement +canvas' = canvas [] + +caption :: Array Props -> Array ReactElement -> ReactElement +caption = DOM.mkDOM (DOM.IsDynamic true) "caption" + +caption' :: Array ReactElement -> ReactElement +caption' = caption [] + +cite :: Array Props -> Array ReactElement -> ReactElement +cite = DOM.mkDOM (DOM.IsDynamic true) "cite" + +cite' :: Array ReactElement -> ReactElement +cite' = cite [] + +code :: Array Props -> Array ReactElement -> ReactElement +code = DOM.mkDOM (DOM.IsDynamic true) "code" + +code' :: Array ReactElement -> ReactElement +code' = code [] + +col :: Array Props -> Array ReactElement -> ReactElement +col = DOM.mkDOM (DOM.IsDynamic true) "col" + +col' :: Array ReactElement -> ReactElement +col' = col [] + +colgroup :: Array Props -> Array ReactElement -> ReactElement +colgroup = DOM.mkDOM (DOM.IsDynamic true) "colgroup" + +colgroup' :: Array ReactElement -> ReactElement +colgroup' = colgroup [] + +_data :: Array Props -> Array ReactElement -> ReactElement +_data = DOM.mkDOM (DOM.IsDynamic true) "data" + +_data' :: Array ReactElement -> ReactElement +_data' = _data [] + +datalist :: Array Props -> Array ReactElement -> ReactElement +datalist = DOM.mkDOM (DOM.IsDynamic true) "datalist" + +datalist' :: Array ReactElement -> ReactElement +datalist' = datalist [] + +dd :: Array Props -> Array ReactElement -> ReactElement +dd = DOM.mkDOM (DOM.IsDynamic true) "dd" + +dd' :: Array ReactElement -> ReactElement +dd' = dd [] + +del :: Array Props -> Array ReactElement -> ReactElement +del = DOM.mkDOM (DOM.IsDynamic true) "del" + +del' :: Array ReactElement -> ReactElement +del' = del [] + +details :: Array Props -> Array ReactElement -> ReactElement +details = DOM.mkDOM (DOM.IsDynamic true) "details" + +details' :: Array ReactElement -> ReactElement +details' = details [] + +dfn :: Array Props -> Array ReactElement -> ReactElement +dfn = DOM.mkDOM (DOM.IsDynamic true) "dfn" + +dfn' :: Array ReactElement -> ReactElement +dfn' = dfn [] + +dialog :: Array Props -> Array ReactElement -> ReactElement +dialog = DOM.mkDOM (DOM.IsDynamic true) "dialog" + +dialog' :: Array ReactElement -> ReactElement +dialog' = dialog [] + +div :: Array Props -> Array ReactElement -> ReactElement +div = DOM.mkDOM (DOM.IsDynamic true) "div" + +div' :: Array ReactElement -> ReactElement +div' = div [] + +dl :: Array Props -> Array ReactElement -> ReactElement +dl = DOM.mkDOM (DOM.IsDynamic true) "dl" + +dl' :: Array ReactElement -> ReactElement +dl' = dl [] + +dt :: Array Props -> Array ReactElement -> ReactElement +dt = DOM.mkDOM (DOM.IsDynamic true) "dt" + +dt' :: Array ReactElement -> ReactElement +dt' = dt [] + +em :: Array Props -> Array ReactElement -> ReactElement +em = DOM.mkDOM (DOM.IsDynamic true) "em" + +em' :: Array ReactElement -> ReactElement +em' = em [] + +embed :: Array Props -> Array ReactElement -> ReactElement +embed = DOM.mkDOM (DOM.IsDynamic true) "embed" + +embed' :: Array ReactElement -> ReactElement +embed' = embed [] + +fieldset :: Array Props -> Array ReactElement -> ReactElement +fieldset = DOM.mkDOM (DOM.IsDynamic true) "fieldset" + +fieldset' :: Array ReactElement -> ReactElement +fieldset' = fieldset [] + +figcaption :: Array Props -> Array ReactElement -> ReactElement +figcaption = DOM.mkDOM (DOM.IsDynamic true) "figcaption" + +figcaption' :: Array ReactElement -> ReactElement +figcaption' = figcaption [] + +figure :: Array Props -> Array ReactElement -> ReactElement +figure = DOM.mkDOM (DOM.IsDynamic true) "figure" + +figure' :: Array ReactElement -> ReactElement +figure' = figure [] + +footer :: Array Props -> Array ReactElement -> ReactElement +footer = DOM.mkDOM (DOM.IsDynamic true) "footer" + +footer' :: Array ReactElement -> ReactElement +footer' = footer [] + +form :: Array Props -> Array ReactElement -> ReactElement +form = DOM.mkDOM (DOM.IsDynamic true) "form" + +form' :: Array ReactElement -> ReactElement +form' = form [] + +h1 :: Array Props -> Array ReactElement -> ReactElement +h1 = DOM.mkDOM (DOM.IsDynamic true) "h1" + +h1' :: Array ReactElement -> ReactElement +h1' = h1 [] + +h2 :: Array Props -> Array ReactElement -> ReactElement +h2 = DOM.mkDOM (DOM.IsDynamic true) "h2" + +h2' :: Array ReactElement -> ReactElement +h2' = h2 [] + +h3 :: Array Props -> Array ReactElement -> ReactElement +h3 = DOM.mkDOM (DOM.IsDynamic true) "h3" + +h3' :: Array ReactElement -> ReactElement +h3' = h3 [] + +h4 :: Array Props -> Array ReactElement -> ReactElement +h4 = DOM.mkDOM (DOM.IsDynamic true) "h4" + +h4' :: Array ReactElement -> ReactElement +h4' = h4 [] + +h5 :: Array Props -> Array ReactElement -> ReactElement +h5 = DOM.mkDOM (DOM.IsDynamic true) "h5" + +h5' :: Array ReactElement -> ReactElement +h5' = h5 [] + +h6 :: Array Props -> Array ReactElement -> ReactElement +h6 = DOM.mkDOM (DOM.IsDynamic true) "h6" + +h6' :: Array ReactElement -> ReactElement +h6' = h6 [] + +head :: Array Props -> Array ReactElement -> ReactElement +head = DOM.mkDOM (DOM.IsDynamic true) "head" + +head' :: Array ReactElement -> ReactElement +head' = head [] + +header :: Array Props -> Array ReactElement -> ReactElement +header = DOM.mkDOM (DOM.IsDynamic true) "header" + +header' :: Array ReactElement -> ReactElement +header' = header [] + +hr :: Array Props -> Array ReactElement -> ReactElement +hr = DOM.mkDOM (DOM.IsDynamic true) "hr" + +hr' :: Array ReactElement -> ReactElement +hr' = hr [] + +html :: Array Props -> Array ReactElement -> ReactElement +html = DOM.mkDOM (DOM.IsDynamic true) "html" + +html' :: Array ReactElement -> ReactElement +html' = html [] + +i :: Array Props -> Array ReactElement -> ReactElement +i = DOM.mkDOM (DOM.IsDynamic true) "i" + +i' :: Array ReactElement -> ReactElement +i' = i [] + +iframe :: Array Props -> Array ReactElement -> ReactElement +iframe = DOM.mkDOM (DOM.IsDynamic true) "iframe" + +iframe' :: Array ReactElement -> ReactElement +iframe' = iframe [] + +img :: Array Props -> Array ReactElement -> ReactElement +img = DOM.mkDOM (DOM.IsDynamic true) "img" + +img' :: Array ReactElement -> ReactElement +img' = img [] + +input :: Array Props -> Array ReactElement -> ReactElement +input = DOM.mkDOM (DOM.IsDynamic true) "input" + +input' :: Array ReactElement -> ReactElement +input' = input [] + +ins :: Array Props -> Array ReactElement -> ReactElement +ins = DOM.mkDOM (DOM.IsDynamic true) "ins" + +ins' :: Array ReactElement -> ReactElement +ins' = ins [] + +kbd :: Array Props -> Array ReactElement -> ReactElement +kbd = DOM.mkDOM (DOM.IsDynamic true) "kbd" + +kbd' :: Array ReactElement -> ReactElement +kbd' = kbd [] + +keygen :: Array Props -> Array ReactElement -> ReactElement +keygen = DOM.mkDOM (DOM.IsDynamic true) "keygen" + +keygen' :: Array ReactElement -> ReactElement +keygen' = keygen [] + +label :: Array Props -> Array ReactElement -> ReactElement +label = DOM.mkDOM (DOM.IsDynamic true) "label" + +label' :: Array ReactElement -> ReactElement +label' = label [] + +legend :: Array Props -> Array ReactElement -> ReactElement +legend = DOM.mkDOM (DOM.IsDynamic true) "legend" + +legend' :: Array ReactElement -> ReactElement +legend' = legend [] + +li :: Array Props -> Array ReactElement -> ReactElement +li = DOM.mkDOM (DOM.IsDynamic true) "li" + +li' :: Array ReactElement -> ReactElement +li' = li [] + +link :: Array Props -> Array ReactElement -> ReactElement +link = DOM.mkDOM (DOM.IsDynamic true) "link" + +link' :: Array ReactElement -> ReactElement +link' = body [] + +main :: Array Props -> Array ReactElement -> ReactElement +main = DOM.mkDOM (DOM.IsDynamic true) "main" + +main' :: Array ReactElement -> ReactElement +main' = main [] + +map :: Array Props -> Array ReactElement -> ReactElement +map = DOM.mkDOM (DOM.IsDynamic true) "map" + +map' :: Array ReactElement -> ReactElement +map' = map [] + +mark :: Array Props -> Array ReactElement -> ReactElement +mark = DOM.mkDOM (DOM.IsDynamic true) "mark" + +mark' :: Array ReactElement -> ReactElement +mark' = mark [] + +menu :: Array Props -> Array ReactElement -> ReactElement +menu = DOM.mkDOM (DOM.IsDynamic true) "menu" + +menu' :: Array ReactElement -> ReactElement +menu' = menu [] + +menuitem :: Array Props -> Array ReactElement -> ReactElement +menuitem = DOM.mkDOM (DOM.IsDynamic true) "menuitem" + +menuitem' :: Array ReactElement -> ReactElement +menuitem' = menuitem [] + +meta :: Array Props -> Array ReactElement -> ReactElement +meta = DOM.mkDOM (DOM.IsDynamic true) "meta" + +meta' :: Array ReactElement -> ReactElement +meta' = meta [] + +meter :: Array Props -> Array ReactElement -> ReactElement +meter = DOM.mkDOM (DOM.IsDynamic true) "meter" + +meter' :: Array ReactElement -> ReactElement +meter' = meter [] + +nav :: Array Props -> Array ReactElement -> ReactElement +nav = DOM.mkDOM (DOM.IsDynamic true) "nav" + +nav' :: Array ReactElement -> ReactElement +nav' = nav [] + +noscript :: Array Props -> Array ReactElement -> ReactElement +noscript = DOM.mkDOM (DOM.IsDynamic true) "noscript" + +noscript' :: Array ReactElement -> ReactElement +noscript' = noscript [] + +object :: Array Props -> Array ReactElement -> ReactElement +object = DOM.mkDOM (DOM.IsDynamic true) "object" + +object' :: Array ReactElement -> ReactElement +object' = object [] + +ol :: Array Props -> Array ReactElement -> ReactElement +ol = DOM.mkDOM (DOM.IsDynamic true) "ol" + +ol' :: Array ReactElement -> ReactElement +ol' = ol [] + +optgroup :: Array Props -> Array ReactElement -> ReactElement +optgroup = DOM.mkDOM (DOM.IsDynamic true) "optgroup" + +optgroup' :: Array ReactElement -> ReactElement +optgroup' = optgroup [] + +option :: Array Props -> Array ReactElement -> ReactElement +option = DOM.mkDOM (DOM.IsDynamic true) "option" + +option' :: Array ReactElement -> ReactElement +option' = option [] + +output :: Array Props -> Array ReactElement -> ReactElement +output = DOM.mkDOM (DOM.IsDynamic true) "output" + +output' :: Array ReactElement -> ReactElement +output' = output [] + +p :: Array Props -> Array ReactElement -> ReactElement +p = DOM.mkDOM (DOM.IsDynamic true) "p" + +p' :: Array ReactElement -> ReactElement +p' = p [] + +param :: Array Props -> Array ReactElement -> ReactElement +param = DOM.mkDOM (DOM.IsDynamic true) "param" + +param' :: Array ReactElement -> ReactElement +param' = param [] + +picture :: Array Props -> Array ReactElement -> ReactElement +picture = DOM.mkDOM (DOM.IsDynamic true) "picture" + +picture' :: Array ReactElement -> ReactElement +picture' = picture [] + +pre :: Array Props -> Array ReactElement -> ReactElement +pre = DOM.mkDOM (DOM.IsDynamic true) "pre" + +pre' :: Array ReactElement -> ReactElement +pre' = pre [] + +progress :: Array Props -> Array ReactElement -> ReactElement +progress = DOM.mkDOM (DOM.IsDynamic true) "progress" + +progress' :: Array ReactElement -> ReactElement +progress' = progress [] + +q :: Array Props -> Array ReactElement -> ReactElement +q = DOM.mkDOM (DOM.IsDynamic true) "q" + +q' :: Array ReactElement -> ReactElement +q' = q [] + +rp :: Array Props -> Array ReactElement -> ReactElement +rp = DOM.mkDOM (DOM.IsDynamic true) "rp" + +rp' :: Array ReactElement -> ReactElement +rp' = rp [] + +rt :: Array Props -> Array ReactElement -> ReactElement +rt = DOM.mkDOM (DOM.IsDynamic true) "rt" + +rt' :: Array ReactElement -> ReactElement +rt' = rt [] + +ruby :: Array Props -> Array ReactElement -> ReactElement +ruby = DOM.mkDOM (DOM.IsDynamic true) "ruby" + +ruby' :: Array ReactElement -> ReactElement +ruby' = ruby [] + +s :: Array Props -> Array ReactElement -> ReactElement +s = DOM.mkDOM (DOM.IsDynamic true) "s" + +s' :: Array ReactElement -> ReactElement +s' = s [] + +samp :: Array Props -> Array ReactElement -> ReactElement +samp = DOM.mkDOM (DOM.IsDynamic true) "samp" + +samp' :: Array ReactElement -> ReactElement +samp' = samp [] + +script :: Array Props -> Array ReactElement -> ReactElement +script = DOM.mkDOM (DOM.IsDynamic true) "script" + +script' :: Array ReactElement -> ReactElement +script' = script [] + +section :: Array Props -> Array ReactElement -> ReactElement +section = DOM.mkDOM (DOM.IsDynamic true) "section" + +section' :: Array ReactElement -> ReactElement +section' = section [] + +select :: Array Props -> Array ReactElement -> ReactElement +select = DOM.mkDOM (DOM.IsDynamic true) "select" + +select' :: Array ReactElement -> ReactElement +select' = select [] + +small :: Array Props -> Array ReactElement -> ReactElement +small = DOM.mkDOM (DOM.IsDynamic true) "small" + +small' :: Array ReactElement -> ReactElement +small' = small [] + +source :: Array Props -> Array ReactElement -> ReactElement +source = DOM.mkDOM (DOM.IsDynamic true) "source" + +source' :: Array ReactElement -> ReactElement +source' = source [] + +span :: Array Props -> Array ReactElement -> ReactElement +span = DOM.mkDOM (DOM.IsDynamic true) "span" + +span' :: Array ReactElement -> ReactElement +span' = span [] + +strong :: Array Props -> Array ReactElement -> ReactElement +strong = DOM.mkDOM (DOM.IsDynamic true) "strong" + +strong' :: Array ReactElement -> ReactElement +strong' = strong [] + +style :: Array Props -> Array ReactElement -> ReactElement +style = DOM.mkDOM (DOM.IsDynamic true) "style" + +style' :: Array ReactElement -> ReactElement +style' = style [] + +sub :: Array Props -> Array ReactElement -> ReactElement +sub = DOM.mkDOM (DOM.IsDynamic true) "sub" + +sub' :: Array ReactElement -> ReactElement +sub' = sub [] + +summary :: Array Props -> Array ReactElement -> ReactElement +summary = DOM.mkDOM (DOM.IsDynamic true) "summary" + +summary' :: Array ReactElement -> ReactElement +summary' = summary [] + +sup :: Array Props -> Array ReactElement -> ReactElement +sup = DOM.mkDOM (DOM.IsDynamic true) "sup" + +sup' :: Array ReactElement -> ReactElement +sup' = sup [] + +table :: Array Props -> Array ReactElement -> ReactElement +table = DOM.mkDOM (DOM.IsDynamic true) "table" + +table' :: Array ReactElement -> ReactElement +table' = table [] + +tbody :: Array Props -> Array ReactElement -> ReactElement +tbody = DOM.mkDOM (DOM.IsDynamic true) "tbody" + +tbody' :: Array ReactElement -> ReactElement +tbody' = tbody [] + +td :: Array Props -> Array ReactElement -> ReactElement +td = DOM.mkDOM (DOM.IsDynamic true) "td" + +td' :: Array ReactElement -> ReactElement +td' = td [] + +textarea :: Array Props -> Array ReactElement -> ReactElement +textarea = DOM.mkDOM (DOM.IsDynamic true) "textarea" + +textarea' :: Array ReactElement -> ReactElement +textarea' = textarea [] + +tfoot :: Array Props -> Array ReactElement -> ReactElement +tfoot = DOM.mkDOM (DOM.IsDynamic true) "tfoot" + +tfoot' :: Array ReactElement -> ReactElement +tfoot' = tfoot [] + +th :: Array Props -> Array ReactElement -> ReactElement +th = DOM.mkDOM (DOM.IsDynamic true) "th" + +th' :: Array ReactElement -> ReactElement +th' = th [] + +thead :: Array Props -> Array ReactElement -> ReactElement +thead = DOM.mkDOM (DOM.IsDynamic true) "thead" + +thead' :: Array ReactElement -> ReactElement +thead' = thead [] + +time :: Array Props -> Array ReactElement -> ReactElement +time = DOM.mkDOM (DOM.IsDynamic true) "time" + +time' :: Array ReactElement -> ReactElement +time' = time [] + +title :: Array Props -> Array ReactElement -> ReactElement +title = DOM.mkDOM (DOM.IsDynamic true) "title" + +title' :: Array ReactElement -> ReactElement +title' = title [] + +tr :: Array Props -> Array ReactElement -> ReactElement +tr = DOM.mkDOM (DOM.IsDynamic true) "tr" + +tr' :: Array ReactElement -> ReactElement +tr' = tr [] + +track :: Array Props -> Array ReactElement -> ReactElement +track = DOM.mkDOM (DOM.IsDynamic true) "track" + +track' :: Array ReactElement -> ReactElement +track' = track [] + +u :: Array Props -> Array ReactElement -> ReactElement +u = DOM.mkDOM (DOM.IsDynamic true) "u" + +u' :: Array ReactElement -> ReactElement +u' = u [] + +ul :: Array Props -> Array ReactElement -> ReactElement +ul = DOM.mkDOM (DOM.IsDynamic true) "ul" + +ul' :: Array ReactElement -> ReactElement +ul' = ul [] + +var :: Array Props -> Array ReactElement -> ReactElement +var = DOM.mkDOM (DOM.IsDynamic true) "var" + +var' :: Array ReactElement -> ReactElement +var' = var [] + +video :: Array Props -> Array ReactElement -> ReactElement +video = DOM.mkDOM (DOM.IsDynamic true) "video" + +video' :: Array ReactElement -> ReactElement +video' = video [] + +wbr :: Array Props -> Array ReactElement -> ReactElement +wbr = DOM.mkDOM (DOM.IsDynamic true) "body" + +wbr' :: Array ReactElement -> ReactElement +wbr' = wbr [] diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 989dcfa..f2a5eef 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -26,3 +26,20 @@ exports.unsafeUnfoldProps = function(key) { return props; }; }; + +function unsafeFromPropsArray(props) { + var result = {}; + + for (var i = 0, len = props.length; i < len; i++) { + var prop = props[i]; + + for (var key in prop) { + if (prop.hasOwnProperty(key)) { + result[key] = prop[key]; + } + } + } + + return result; +}; +exports.unsafeFromPropsArray = unsafeFromPropsArray; diff --git a/src/React/DOM/Props.purs b/src/React/DOM/Props.purs index a256141..f3cac0f 100644 --- a/src/React/DOM/Props.purs +++ b/src/React/DOM/Props.purs @@ -1,8 +1,6 @@ module React.DOM.Props where -import Prelude - -import React +import React (Event(), EventHandlerContext(), KeyboardEvent(), MouseEvent(), handle) foreign import data Props :: * @@ -10,6 +8,8 @@ foreign import unsafeMkProps :: forall val. String -> val -> Props foreign import unsafeUnfoldProps :: forall vals. String -> { | vals } -> Props +foreign import unsafeFromPropsArray :: forall props. Array Props -> props + aria :: forall ariaAttrs. { | ariaAttrs } -> Props aria = unsafeUnfoldProps "aria" diff --git a/src/React/DOM/SVG.purs b/src/React/DOM/SVG.purs index a516372..efc5c43 100644 --- a/src/React/DOM/SVG.purs +++ b/src/React/DOM/SVG.purs @@ -1,59 +1,59 @@ module React.DOM.SVG where -import React -import React.DOM (mkDOM) +import React (ReactElement()) +import React.DOM (IsDynamic(..), mkDOM) import React.DOM.Props (Props()) circle :: Array Props -> Array ReactElement -> ReactElement -circle = mkDOM "circle" +circle = mkDOM (IsDynamic false) "circle" clipPath :: Array Props -> Array ReactElement -> ReactElement -clipPath = mkDOM "clipPath" +clipPath = mkDOM (IsDynamic false) "clipPath" defs :: Array Props -> Array ReactElement -> ReactElement -defs = mkDOM "defs" +defs = mkDOM (IsDynamic false) "defs" ellipse :: Array Props -> Array ReactElement -> ReactElement -ellipse = mkDOM "ellipse" +ellipse = mkDOM (IsDynamic false) "ellipse" g :: Array Props -> Array ReactElement -> ReactElement -g = mkDOM "g" +g = mkDOM (IsDynamic false) "g" line :: Array Props -> Array ReactElement -> ReactElement -line = mkDOM "line" +line = mkDOM (IsDynamic false) "line" linearGradient :: Array Props -> Array ReactElement -> ReactElement -linearGradient = mkDOM "linearGradient" +linearGradient = mkDOM (IsDynamic false) "linearGradient" mask :: Array Props -> Array ReactElement -> ReactElement -mask = mkDOM "mask" +mask = mkDOM (IsDynamic false) "mask" path :: Array Props -> Array ReactElement -> ReactElement -path = mkDOM "path" +path = mkDOM (IsDynamic false) "path" pattern :: Array Props -> Array ReactElement -> ReactElement -pattern = mkDOM "pattern" +pattern = mkDOM (IsDynamic false) "pattern" polygon :: Array Props -> Array ReactElement -> ReactElement -polygon = mkDOM "polygon" +polygon = mkDOM (IsDynamic false) "polygon" polyline :: Array Props -> Array ReactElement -> ReactElement -polyline = mkDOM "polyline" +polyline = mkDOM (IsDynamic false) "polyline" radialGradient :: Array Props -> Array ReactElement -> ReactElement -radialGradient = mkDOM "radialGradient" +radialGradient = mkDOM (IsDynamic false) "radialGradient" rect :: Array Props -> Array ReactElement -> ReactElement -rect = mkDOM "rect" +rect = mkDOM (IsDynamic false) "rect" stop :: Array Props -> Array ReactElement -> ReactElement -stop = mkDOM "stop" +stop = mkDOM (IsDynamic false) "stop" svg :: Array Props -> Array ReactElement -> ReactElement -svg = mkDOM "svg" +svg = mkDOM (IsDynamic false) "svg" text :: Array Props -> Array ReactElement -> ReactElement -text = mkDOM "text" +text = mkDOM (IsDynamic false) "text" tspan :: Array Props -> Array ReactElement -> ReactElement -tspan = mkDOM "tspan" +tspan = mkDOM (IsDynamic false) "tspan" diff --git a/src/React/DOM/SVG/Dynamic.purs b/src/React/DOM/SVG/Dynamic.purs new file mode 100644 index 0000000..a6d42c9 --- /dev/null +++ b/src/React/DOM/SVG/Dynamic.purs @@ -0,0 +1,59 @@ +module React.DOM.SVG.Dynamic where + +import React (ReactElement()) +import React.DOM (IsDynamic(..), mkDOM) +import React.DOM.Props (Props()) + +circle :: Array Props -> Array ReactElement -> ReactElement +circle = mkDOM (IsDynamic true) "circle" + +clipPath :: Array Props -> Array ReactElement -> ReactElement +clipPath = mkDOM (IsDynamic true) "clipPath" + +defs :: Array Props -> Array ReactElement -> ReactElement +defs = mkDOM (IsDynamic true) "defs" + +ellipse :: Array Props -> Array ReactElement -> ReactElement +ellipse = mkDOM (IsDynamic true) "ellipse" + +g :: Array Props -> Array ReactElement -> ReactElement +g = mkDOM (IsDynamic true) "g" + +line :: Array Props -> Array ReactElement -> ReactElement +line = mkDOM (IsDynamic true) "line" + +linearGradient :: Array Props -> Array ReactElement -> ReactElement +linearGradient = mkDOM (IsDynamic true) "linearGradient" + +mask :: Array Props -> Array ReactElement -> ReactElement +mask = mkDOM (IsDynamic true) "mask" + +path :: Array Props -> Array ReactElement -> ReactElement +path = mkDOM (IsDynamic true) "path" + +pattern :: Array Props -> Array ReactElement -> ReactElement +pattern = mkDOM (IsDynamic true) "pattern" + +polygon :: Array Props -> Array ReactElement -> ReactElement +polygon = mkDOM (IsDynamic true) "polygon" + +polyline :: Array Props -> Array ReactElement -> ReactElement +polyline = mkDOM (IsDynamic true) "polyline" + +radialGradient :: Array Props -> Array ReactElement -> ReactElement +radialGradient = mkDOM (IsDynamic true) "radialGradient" + +rect :: Array Props -> Array ReactElement -> ReactElement +rect = mkDOM (IsDynamic true) "rect" + +stop :: Array Props -> Array ReactElement -> ReactElement +stop = mkDOM (IsDynamic true) "stop" + +svg :: Array Props -> Array ReactElement -> ReactElement +svg = mkDOM (IsDynamic true) "svg" + +text :: Array Props -> Array ReactElement -> ReactElement +text = mkDOM (IsDynamic true) "text" + +tspan :: Array Props -> Array ReactElement -> ReactElement +tspan = mkDOM (IsDynamic true) "tspan" diff --git a/test/Container.purs b/test/Container.purs index d2e4465..3fbfb3d 100644 --- a/test/Container.purs +++ b/test/Container.purs @@ -7,6 +7,7 @@ import React import qualified React.DOM as D import qualified React.DOM.Props as P +container :: forall props. ReactClass props container = createClass $ spec unit \ctx -> do children <- getChildren ctx