/** 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 list = components[Ctor.name],
len = list && list.length,
c = undefined;
for (var i = 0; i < len; i++) {
c = list[i];
if (c.constructor === Ctor) {
list.splice(i, 1);
var inst = new Ctor(props, context);
inst.nextBase = c.base;
return inst;
}
}
return new Ctor(props, context);
}
|