all files / src/dom/ recycler.js

95.65% Statements 22/23
85.71% Branches 6/7
100% Functions 3/3
100% Lines 20/20
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×   12× 12×   12×     130×     130× 130× 130×     12×   12×       12×   12×              
'use strict';
 
exports.__esModule = true;
exports.collectNode = collectNode;
exports.createNode = createNode;
 
var _util = require('../util');
 
var _ = require('.');
 
/** DOM node pool, keyed on nodeName. */
 
var nodes = _util.createObject();
 
function collectNode(node) {
	cleanNode(node);
	var name = _util.toLowerCase(node.nodeName),
	    list = nodes[name];
	if (list) list.push(node);else nodes[name] = [node];
}
 
function createNode(nodeName) {
	var name = _util.toLowerCase(nodeName),
	    list = nodes[name],
	    node = list && list.pop() || document.createElement(name);
	_.ensureNodeData(node);
	node.normalizedNodeName = name;
	return node;
}
 
function cleanNode(node) {
	_.removeNode(node);
 
	Iif (_.getNodeType(node) === 3) return;
 
	// When reclaiming externally created nodes, seed the attribute cache: (Issue #97)
 
	_.ensureNodeData(node, _.getRawNodeAttributes(node));
 
	node._component = node._componentConstructor = null;
 
	// if (node.childNodes.length>0) {
	// 	console.trace(`Warning: Recycler collecting <${node.nodeName}> with ${node.childNodes.length} children.`);
	// 	for (let i=node.childNodes.length; i--; ) collectNode(node.childNodes[i]);
	// }
}