import { reactiveInjectKey } from './inject';
|
export function needToProduceProvide(original) {
|
return (typeof original !== 'function' ||
|
(!original.managed && !original.managedReactive));
|
}
|
export function produceProvide(original) {
|
var provide = function () {
|
var _this = this;
|
var rv = typeof original === 'function' ? original.call(this) : original;
|
rv = Object.create(rv || null);
|
// set reactive services (propagates previous services if necessary)
|
rv[reactiveInjectKey] = Object.create(this[reactiveInjectKey] || {});
|
for (var i in provide.managed) {
|
rv[provide.managed[i]] = this[i];
|
}
|
var _loop_1 = function (i) {
|
rv[provide.managedReactive[i]] = this_1[i]; // Duplicates the behavior of `@Provide`
|
Object.defineProperty(rv[reactiveInjectKey], provide.managedReactive[i], {
|
enumerable: true,
|
get: function () { return _this[i]; },
|
});
|
};
|
var this_1 = this;
|
for (var i in provide.managedReactive) {
|
_loop_1(i);
|
}
|
return rv;
|
};
|
provide.managed = {};
|
provide.managedReactive = {};
|
return provide;
|
}
|