all files / src/ render.js

100% Statements 17/17
93.33% Branches 14/15
100% Functions 2/2
100% Lines 14/14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47    11× 11×   11×   11×   11×   11×                                   1170×       1170×   1170× 53×     1170×   1170×     11×  
'use strict';
 
exports.__esModule = true;
exports['default'] = render;
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
var _vdomDiff = require('./vdom/diff');
 
var _vdomDiff2 = _interopRequireDefault(_vdomDiff);
 
var _hooks = require('./hooks');
 
/** Render JSX into a `parent` Element.
 *	@param {VNode} vnode		A (JSX) VNode to render
 *	@param {Element} parent		DOM element to render into
 *	@param {Element} [merge]	Attempt to re-use an existing DOM tree rooted at `merge`
 *	@public
 *
 *	@example
 *	// render a div into <body>:
 *	render(<div id="hello">hello!</div>, document.body);
 *
 *	@example
 *	// render a "Thing" component into #foo:
 *	const Thing = ({ name }) => <span>{ name }</span>;
 *	render(<Thing name="one" />, document.querySelector('#foo'));
 */
 
function render(vnode, parent, merge) {
  var existing = merge && merge._component && merge._componentConstructor === vnode.nodeName,
      built = _vdomDiff2['default'](merge, vnode, {}),
      c = !existing && built._component;
 
  if (c) _hooks.deepHook(c, 'componentWillMount');
 
  if (built.parentNode !== parent) {
    parent.appendChild(built);
  }
 
  if (c) _hooks.deepHook(c, 'componentDidMount');
 
  return built;
}
 
module.exports = exports['default'];