all files / src/dom/ recycler.js

96.15% Statements 25/26
85.71% Branches 6/7
100% Functions 4/4
100% Lines 23/23
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      11× 11× 11×   11×   11×       11×   11× 37×     10× 10×   10×     95×     95× 95× 95× 95×     10×   10×             10×   10×              
// import { ATTR_KEY } from '../constants';
'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 = {};
 
var normalizeName = _util.memoize(function (name) {
	return name.toUpperCase();
});
 
function collectNode(node) {
	cleanNode(node);
	var name = normalizeName(node.nodeName),
	    list = nodes[name];
	if (list) list.push(node);else nodes[name] = [node];
}
 
function createNode(nodeName) {
	var name = normalizeName(nodeName),
	    list = nodes[name],
	    node = list && list.pop() || document.createElement(nodeName);
	_.ensureNodeData(node);
	node.normalizedNodeType = 1;
	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)
 
	// if (!node[ATTR_KEY]) {
	// 	node[ATTR_KEY] = getRawNodeAttributes(node);
	// }
	_.setNodeData(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]);
	// }
}