'use strict';
exports.__esModule = true;
exports.collectComponent = collectComponent;
exports.createComponent = createComponent;
var _util = require('../util');
/** 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
*/
var components = _util.createObject();
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 = 0; i < list.length; i++) {
if (list[i].constructor === Ctor) {
inst.nextBase = list[i].base;
list.splice(i, 1);
break;
}
}
}
return inst;
}
|