import { createDecorator } from 'vue-class-component';
|
import { reactiveInjectKey } from '../helpers/provideInject';
|
/**
|
* decorator of a reactive inject
|
* @param from key
|
* @return PropertyDecorator
|
*/
|
export function InjectReactive(options) {
|
return createDecorator(function (componentOptions, key) {
|
if (typeof componentOptions.inject === 'undefined') {
|
componentOptions.inject = {};
|
}
|
if (!Array.isArray(componentOptions.inject)) {
|
var fromKey_1 = !!options ? options.from || options : key;
|
var defaultVal_1 = (!!options && options.default) || undefined;
|
if (!componentOptions.computed)
|
componentOptions.computed = {};
|
componentOptions.computed[key] = function () {
|
var obj = this[reactiveInjectKey];
|
return obj ? obj[fromKey_1] : defaultVal_1;
|
};
|
componentOptions.inject[reactiveInjectKey] = reactiveInjectKey;
|
}
|
});
|
}
|