all files / src/dom/ recycler.js

95.65% Statements 22/23
88.89% Branches 8/9
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    12× 12× 12×   12×   12×       12×   4968× 4968×   4968×     5089×   5089× 5089× 5089×     4968×   4968×       4968×   4968×              
'use strict';
 
exports.__esModule = true;
exports.collectNode = collectNode;
exports.createNode = createNode;
 
var _util = require('../util');
 
var _index = require('./index');
 
/** DOM node pool, keyed on nodeName. */
 
var nodes = {};
 
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, isSvg) {
	var name = _util.toLowerCase(nodeName),
	    node = nodes[name] && nodes[name].pop() || (isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName));
	_index.ensureNodeData(node);
	node.normalizedNodeName = name;
	return node;
}
 
function cleanNode(node) {
	_index.removeNode(node);
 
	Iif (_index.getNodeType(node) === 3) return;
 
	// When reclaiming externally created nodes, seed the attribute cache: (Issue #97)
 
	_index.ensureNodeData(node, _index.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]);
	// }
}