quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
66 lines (57 loc) • 1.49 kB
JavaScript
import { clientList, planClientUpdate } from '../../plugins/meta/Meta.js'
export default metaOptions => {
if (__QUASAR_SSR_SERVER__) {
return {
created:
typeof metaOptions === 'function'
? function created() {
this.ssrContext.__qMetaList.push(metaOptions.call(this) || {})
}
: function created() {
this.ssrContext.__qMetaList.push(metaOptions)
}
}
}
const mixin = {
activated() {
this.__qMeta.active = true
planClientUpdate()
},
deactivated() {
this.__qMeta.active = false
planClientUpdate()
},
unmounted() {
clientList.splice(clientList.indexOf(this.__qMeta), 1)
planClientUpdate()
this.__qMeta = void 0
}
}
if (typeof metaOptions === 'function') {
Object.assign(mixin, {
computed: {
__qMetaOptions() {
return metaOptions.call(this) || {}
}
},
watch: {
__qMetaOptions(val) {
this.__qMeta.val = val
if (this.__qMeta.active === true) planClientUpdate()
}
},
created() {
this.__qMeta = { active: true, val: this.__qMetaOptions }
clientList.push(this.__qMeta)
planClientUpdate()
}
})
} else {
mixin.created = function created() {
this.__qMeta = { active: true, val: metaOptions }
clientList.push(this.__qMeta)
planClientUpdate()
}
}
return mixin
}