'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]);
// }
}
|