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; } }); }