/** Retains a pool of Components for re-use, keyed on component name.
* Note: since component names are not unique or even necessarily available, these are primarily a form of sharding.
* @private
*/
"use strict";
exports.__esModule = true;
exports.collectComponent = collectComponent;
exports.createComponent = createComponent;
var components = {};
function collectComponent(component) {
var name = component.constructor.name,
list = components[name];
if (list) list.push(component);else components[name] = [component];
}
function createComponent(Ctor, props, context) {
var inst = new Ctor(props, context),
list = components[Ctor.name];
if (list) {
for (var i = list.length; i--;) {
if (list[i].constructor === Ctor) {
inst.nextBase = list[i].nextBase;
list.splice(i, 1);
break;
}
}
}
return inst;
}
|