'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, {}, false),
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'];
|