'use strict';
exports.__esModule = true;
exports['default'] = h;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _vnode = require('./vnode');
var _vnode2 = _interopRequireDefault(_vnode);
var _hooks = require('./hooks');
var _util = require('./util');
var SHARED_TEMP_ARRAY = [];
/** JSX/hyperscript reviver
* @see http://jasonformat.com/wtf-is-jsx
* @public
* @example
* /** @jsx h *\/
* import { render, h } from 'preact';
* render(<span>foo</span>, document.body);
*/
function h(nodeName, attributes, firstChild) {
var len = arguments.length,
attributeChildren = attributes && attributes.children,
children = undefined,
arr = undefined,
lastSimple = undefined;
if (attributeChildren) {
delete attributes.children;
// if (len<3) {
// unfilteredChildren = attributeChildren;
// start = 0;
// }
if (len < 3) return h(nodeName, attributes, attributeChildren);
}
// if (len===3 && typeof arguments[2]!=='object') {
// let child = arguments[2];
// if (!falsey(child)) {
// if (!isString(child)) {
// child = String(child);
// }
// children = [child];
// }
// }
/*if (len===3 && typeof firstChild!=='object') {
if (!falsey(firstChild)) {
children = [String(firstChild)];
}
}
else*/if (len > 2) {
children = [];
for (var i = 2; i < len; i++) {
var _p = arguments[i];
if (_util.falsey(_p)) continue;
if (_p.join) {
arr = _p;
} else {
arr = SHARED_TEMP_ARRAY;
arr[0] = _p;
}
for (var j = 0; j < arr.length; j++) {
var child = arr[j],
simple = !_util.falsey(child) && !(child instanceof _vnode2['default']);
if (simple && !_util.isString(child)) child = String(child);
if (simple && lastSimple) {
children[children.length - 1] += child;
} else Eif (!_util.falsey(child)) {
children.push(child);
}
lastSimple = simple;
}
}
}
var p = new _vnode2['default'](nodeName, attributes || undefined, children || undefined);
_hooks.optionsHook('vnode', p);
return p;
}
module.exports = exports['default'];
|