all files / src/ h.js

100% Statements 38/38
93.75% Branches 30/32
100% Functions 2/2
100% Lines 34/34
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89    11× 11×   11×   11×   11×   11×   11×   11×                     224×           224×                                           221× 74× 74× 118× 118× 112×   110× 110×   112× 115×   115× 115× 13× 102× 102×   115×         221× 221× 221×     11×  
'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'];