2
0
mirror of https://github.com/tenrok/vue-meta.git synced 2026-06-12 11:22:26 +03:00
Files
vue-meta/src/useApi.ts
T
pimlie 9cfde5b550 feat: make ssr work
feat: update build script

chore: use jiti instead of babel-node for examples
2021-01-25 00:50:46 +01:00

31 lines
792 B
TypeScript

import { inject, getCurrentInstance, ComponentInternalInstance } from 'vue'
import { metaInfoKey } from './symbols'
import type { Manager, MetainfoActive, MetainfoInput, MetaProxy } from './types'
export function getCurrentManager (vm?: ComponentInternalInstance): Manager {
if (!vm) {
vm = getCurrentInstance()!
}
return vm.appContext.config.globalProperties.$metaManager
}
export function useMeta (obj: MetainfoInput, manager?: Manager): MetaProxy {
const vm = getCurrentInstance()
if (!manager && vm) {
manager = getCurrentManager(vm)
}
if (!manager) {
// oopsydoopsy
throw new Error('No manager or current instance')
}
return manager.addMeta(obj, vm || undefined)
}
export function useMetainfo (): MetainfoActive {
return inject(metaInfoKey)!
}