UNPKG

vue-async-properties

Version:

Vue Component Plugin for asynchronous data and computed properties.

39 lines (30 loc) 1.47 kB
import AsyncDataMixinBuilder from './async-data.js' import AsyncComputedMixinBuilder from './async-computed.js' import AsyncMethodsMixinBuilder from './async-methods.js' import { globalDefaults, dataDefaults, computedDefaults, methodDefaults } from './defaults.js' export let asyncPropertiesOptions = null const AsyncPropertiesPlugin = { install(Vue, options = {}) { const globalOptions = globalDefaults(options) const meta = globalOptions.meta const dataGlobalDefaults = dataDefaults(globalOptions) const computedGlobalDefaults = computedDefaults(globalOptions) const methodGlobalDefaults = methodDefaults(globalOptions) const AsyncDataMixin = AsyncDataMixinBuilder(dataGlobalDefaults, meta) const AsyncComputedMixin = AsyncComputedMixinBuilder(computedGlobalDefaults, meta) const AsyncMethodsMixin = AsyncMethodsMixinBuilder(methodGlobalDefaults, meta) const strategy = Vue.config.optionMergeStrategies.computed Vue.config.optionMergeStrategies.asyncData = strategy Vue.config.optionMergeStrategies.asyncComputed = strategy Vue.config.optionMergeStrategies.asyncMethods = strategy Vue.mixin(AsyncDataMixin) Vue.mixin(AsyncComputedMixin) Vue.mixin(AsyncMethodsMixin) asyncPropertiesOptions = { meta, dataGlobalDefaults, computedGlobalDefaults, methodGlobalDefaults } } } export default AsyncPropertiesPlugin if (typeof window !== 'undefined' && window.Vue) { // Auto install in dist mode window.Vue.use(AsyncPropertiesPlugin) }