vue-property-decorator
Version:
property decorators for Vue Component
26 lines (25 loc) • 1 kB
JavaScript
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;
}
});
}