mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-06-23 04:20:34 +03:00
chore(release): 3.0.0-alpha.8
This commit is contained in:
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||||
|
|
||||||
|
## [3.0.0-alpha.8](https://github.com/nuxt/vue-meta/compare/v3.0.0-alpha.7...v3.0.0-alpha.8) (2021-06-06)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add plugin for options api support ([0745f16](https://github.com/nuxt/vue-meta/commit/0745f1668388c85d9a4eb50a26a350f8278b490c))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* remove unsupported meta types from v2 ([1bf1184](https://github.com/nuxt/vue-meta/commit/1bf1184c6e1ffe488c17b75ac54b7711d84f8fd9))
|
||||||
|
|
||||||
## [3.0.0-alpha.7](https://github.com/nuxt/vue-meta/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2021-05-23)
|
## [3.0.0-alpha.7](https://github.com/nuxt/vue-meta/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2021-05-23)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Vendored
+43
-15
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
@@ -799,9 +799,12 @@ function addVnode(isSSR, teleports, to, vnodes) {
|
|||||||
}
|
}
|
||||||
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
||||||
class MetaManager {
|
class MetaManager {
|
||||||
|
isSSR = false;
|
||||||
|
config;
|
||||||
|
target;
|
||||||
|
resolver;
|
||||||
|
ssrCleanedUp = false;
|
||||||
constructor(isSSR, config, target, resolver) {
|
constructor(isSSR, config, target, resolver) {
|
||||||
this.isSSR = false;
|
|
||||||
this.ssrCleanedUp = false;
|
|
||||||
this.isSSR = isSSR;
|
this.isSSR = isSSR;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -809,6 +812,19 @@ class MetaManager {
|
|||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static create = (isSSR, config, resolver) => {
|
||||||
|
const resolve = (options, contexts, active, key, pathSegments) => {
|
||||||
|
if (isFunction(resolver)) {
|
||||||
|
return resolver(options, contexts, active, key, pathSegments);
|
||||||
|
}
|
||||||
|
return resolver.resolve(options, contexts, active, key, pathSegments);
|
||||||
|
};
|
||||||
|
const active = vue.reactive({});
|
||||||
|
const mergedObject = createMergedObject(resolve, active);
|
||||||
|
// TODO: validate resolver
|
||||||
|
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
||||||
|
return manager;
|
||||||
|
};
|
||||||
install(app) {
|
install(app) {
|
||||||
app.component('Metainfo', Metainfo);
|
app.component('Metainfo', Metainfo);
|
||||||
app.config.globalProperties.$metaManager = this;
|
app.config.globalProperties.$metaManager = this;
|
||||||
@@ -932,25 +948,37 @@ class MetaManager {
|
|||||||
return vue.h(vue.Teleport, { to }, teleport);
|
return vue.h(vue.Teleport, { to }, teleport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MetaManager.create = (isSSR, config, resolver) => {
|
|
||||||
const resolve = (options, contexts, active, key, pathSegments) => {
|
const defaultOptions = {
|
||||||
if (isFunction(resolver)) {
|
keyName: 'metaInfo'
|
||||||
return resolver(options, contexts, active, key, pathSegments);
|
};
|
||||||
|
const createMixin = options => ({
|
||||||
|
created() {
|
||||||
|
const instance = vue.getCurrentInstance();
|
||||||
|
if (!instance?.type || !(options.keyName in instance.type)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return resolver.resolve(options, contexts, active, key, pathSegments);
|
const metaInfo = instance.type[options.keyName];
|
||||||
};
|
if (isFunction(metaInfo)) {
|
||||||
const active = vue.reactive({});
|
const computedMetaInfo = vue.computed(metaInfo);
|
||||||
const mergedObject = createMergedObject(resolve, active);
|
useMeta(computedMetaInfo);
|
||||||
// TODO: validate resolver
|
}
|
||||||
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
else {
|
||||||
return manager;
|
useMeta(metaInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const install = (app, _options = {}) => {
|
||||||
|
const options = Object.assign({}, defaultOptions, _options);
|
||||||
|
app.mixin(createMixin(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.createMetaManager = createMetaManager;
|
exports.createMetaManager = createMetaManager;
|
||||||
exports.deepestResolver = defaultResolver;
|
exports.deepestResolver = defaultResolver;
|
||||||
exports.defaultConfig = defaultConfig;
|
exports.defaultConfig = defaultConfig;
|
||||||
exports.getCurrentManager = getCurrentManager;
|
exports.getCurrentManager = getCurrentManager;
|
||||||
|
exports.plugin = install;
|
||||||
exports.resolveOption = resolveOption;
|
exports.resolveOption = resolveOption;
|
||||||
exports.useActiveMeta = useActiveMeta;
|
exports.useActiveMeta = useActiveMeta;
|
||||||
exports.useMeta = useMeta;
|
exports.useMeta = useMeta;
|
||||||
|
|||||||
Vendored
+43
-15
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
@@ -779,9 +779,12 @@ function addVnode(isSSR, teleports, to, vnodes) {
|
|||||||
}
|
}
|
||||||
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
||||||
class MetaManager {
|
class MetaManager {
|
||||||
|
isSSR = false;
|
||||||
|
config;
|
||||||
|
target;
|
||||||
|
resolver;
|
||||||
|
ssrCleanedUp = false;
|
||||||
constructor(isSSR, config, target, resolver) {
|
constructor(isSSR, config, target, resolver) {
|
||||||
this.isSSR = false;
|
|
||||||
this.ssrCleanedUp = false;
|
|
||||||
this.isSSR = isSSR;
|
this.isSSR = isSSR;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -789,6 +792,19 @@ class MetaManager {
|
|||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static create = (isSSR, config, resolver) => {
|
||||||
|
const resolve = (options, contexts, active, key, pathSegments) => {
|
||||||
|
if (isFunction(resolver)) {
|
||||||
|
return resolver(options, contexts, active, key, pathSegments);
|
||||||
|
}
|
||||||
|
return resolver.resolve(options, contexts, active, key, pathSegments);
|
||||||
|
};
|
||||||
|
const active = vue.reactive({});
|
||||||
|
const mergedObject = createMergedObject(resolve, active);
|
||||||
|
// TODO: validate resolver
|
||||||
|
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
||||||
|
return manager;
|
||||||
|
};
|
||||||
install(app) {
|
install(app) {
|
||||||
app.component('Metainfo', Metainfo);
|
app.component('Metainfo', Metainfo);
|
||||||
app.config.globalProperties.$metaManager = this;
|
app.config.globalProperties.$metaManager = this;
|
||||||
@@ -912,25 +928,37 @@ class MetaManager {
|
|||||||
return vue.h(vue.Teleport, { to }, teleport);
|
return vue.h(vue.Teleport, { to }, teleport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MetaManager.create = (isSSR, config, resolver) => {
|
|
||||||
const resolve = (options, contexts, active, key, pathSegments) => {
|
const defaultOptions = {
|
||||||
if (isFunction(resolver)) {
|
keyName: 'metaInfo'
|
||||||
return resolver(options, contexts, active, key, pathSegments);
|
};
|
||||||
|
const createMixin = options => ({
|
||||||
|
created() {
|
||||||
|
const instance = vue.getCurrentInstance();
|
||||||
|
if (!instance?.type || !(options.keyName in instance.type)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return resolver.resolve(options, contexts, active, key, pathSegments);
|
const metaInfo = instance.type[options.keyName];
|
||||||
};
|
if (isFunction(metaInfo)) {
|
||||||
const active = vue.reactive({});
|
const computedMetaInfo = vue.computed(metaInfo);
|
||||||
const mergedObject = createMergedObject(resolve, active);
|
useMeta(computedMetaInfo);
|
||||||
// TODO: validate resolver
|
}
|
||||||
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
else {
|
||||||
return manager;
|
useMeta(metaInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const install = (app, _options = {}) => {
|
||||||
|
const options = Object.assign({}, defaultOptions, _options);
|
||||||
|
app.mixin(createMixin(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.createMetaManager = createMetaManager;
|
exports.createMetaManager = createMetaManager;
|
||||||
exports.deepestResolver = defaultResolver;
|
exports.deepestResolver = defaultResolver;
|
||||||
exports.defaultConfig = defaultConfig;
|
exports.defaultConfig = defaultConfig;
|
||||||
exports.getCurrentManager = getCurrentManager;
|
exports.getCurrentManager = getCurrentManager;
|
||||||
|
exports.plugin = install;
|
||||||
exports.resolveOption = resolveOption;
|
exports.resolveOption = resolveOption;
|
||||||
exports.useActiveMeta = useActiveMeta;
|
exports.useActiveMeta = useActiveMeta;
|
||||||
exports.useMeta = useMeta;
|
exports.useMeta = useMeta;
|
||||||
|
|||||||
Vendored
+114
-2
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
@@ -64,6 +64,110 @@ declare class MetaManager {
|
|||||||
}): VNode[];
|
}): VNode[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface AttributeProperty {
|
||||||
|
[key: string]: string | string[];
|
||||||
|
}
|
||||||
|
interface MetaDataProperty {
|
||||||
|
vmid?: string;
|
||||||
|
once?: boolean;
|
||||||
|
skip?: boolean;
|
||||||
|
body?: boolean;
|
||||||
|
pbody?: boolean;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
interface MetaPropertyCharset extends MetaDataProperty {
|
||||||
|
charset: string;
|
||||||
|
}
|
||||||
|
interface MetaPropertyEquiv extends MetaDataProperty {
|
||||||
|
httpEquiv: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface MetaPropertyTrueEquiv extends MetaDataProperty {
|
||||||
|
'http-equiv': string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface MetaPropertyName extends MetaDataProperty {
|
||||||
|
name: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface MetaPropertyMicrodata extends MetaDataProperty {
|
||||||
|
itemprop: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface MetaPropertyProperty extends MetaDataProperty {
|
||||||
|
property: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
interface LinkPropertyBase extends MetaDataProperty {
|
||||||
|
rel: string;
|
||||||
|
crossOrigin?: string | null;
|
||||||
|
media?: string;
|
||||||
|
nonce?: string;
|
||||||
|
referrerPolicy?: string;
|
||||||
|
rev?: string;
|
||||||
|
type?: string;
|
||||||
|
}
|
||||||
|
interface LinkPropertyHref extends LinkPropertyBase {
|
||||||
|
href?: string;
|
||||||
|
hreflang?: string;
|
||||||
|
callback?: void;
|
||||||
|
}
|
||||||
|
interface LinkPropertyHrefCallback extends LinkPropertyBase {
|
||||||
|
vmid: string;
|
||||||
|
href?: string;
|
||||||
|
hreflang?: string;
|
||||||
|
}
|
||||||
|
interface StyleProperty extends MetaDataProperty {
|
||||||
|
cssText: string;
|
||||||
|
media?: string;
|
||||||
|
nonce?: string;
|
||||||
|
type?: string;
|
||||||
|
}
|
||||||
|
interface ScriptPropertyBase extends MetaDataProperty {
|
||||||
|
type?: string;
|
||||||
|
charset?: string;
|
||||||
|
async?: boolean;
|
||||||
|
defer?: boolean;
|
||||||
|
crossOrigin?: string;
|
||||||
|
nonce?: string;
|
||||||
|
}
|
||||||
|
interface ScriptPropertyText extends ScriptPropertyBase {
|
||||||
|
innerHTML: string;
|
||||||
|
}
|
||||||
|
interface ScriptPropertySrc extends ScriptPropertyBase {
|
||||||
|
src: string;
|
||||||
|
callback?: void;
|
||||||
|
}
|
||||||
|
interface ScriptPropertySrcCallback extends ScriptPropertyBase {
|
||||||
|
vmid: string;
|
||||||
|
}
|
||||||
|
declare type JsonVal = string | number | boolean | JsonObj | JsonObj[] | null;
|
||||||
|
interface JsonObj {
|
||||||
|
[key: string]: JsonVal | JsonVal[];
|
||||||
|
}
|
||||||
|
interface ScriptPropertyJson extends ScriptPropertyBase {
|
||||||
|
json: JsonObj;
|
||||||
|
}
|
||||||
|
interface NoScriptProperty extends MetaDataProperty {
|
||||||
|
innerHTML: string;
|
||||||
|
}
|
||||||
|
interface ComponentMetaInfo {
|
||||||
|
title?: string;
|
||||||
|
htmlAttrs?: AttributeProperty;
|
||||||
|
headAttrs?: AttributeProperty;
|
||||||
|
bodyAttrs?: AttributeProperty;
|
||||||
|
base?: {
|
||||||
|
target: string;
|
||||||
|
href: string;
|
||||||
|
};
|
||||||
|
meta?: (MetaPropertyCharset | MetaPropertyEquiv | MetaPropertyTrueEquiv | MetaPropertyName | MetaPropertyMicrodata | MetaPropertyProperty)[];
|
||||||
|
link?: (LinkPropertyBase | LinkPropertyHref | LinkPropertyHrefCallback)[];
|
||||||
|
style?: StyleProperty[];
|
||||||
|
script?: (ScriptPropertyText | ScriptPropertySrc | ScriptPropertySrcCallback | ScriptPropertyJson)[];
|
||||||
|
noscript?: NoScriptProperty[];
|
||||||
|
}
|
||||||
|
declare type ComponentOptionsMetaInfo = ComponentMetaInfo | (() => ComponentMetaInfo);
|
||||||
|
|
||||||
declare type MetaConfigSectionKey = 'tag' | 'to' | 'keyAttribute' | 'valueAttribute' | 'nameless' | 'group' | 'namespaced' | 'namespacedAttribute' | 'attributesFor';
|
declare type MetaConfigSectionKey = 'tag' | 'to' | 'keyAttribute' | 'valueAttribute' | 'nameless' | 'group' | 'namespaced' | 'namespacedAttribute' | 'attributesFor';
|
||||||
interface MetaConfigSectionTag {
|
interface MetaConfigSectionTag {
|
||||||
tag?: string;
|
tag?: string;
|
||||||
@@ -191,6 +295,9 @@ declare module '@vue/runtime-core' {
|
|||||||
$metaManager: MetaManager;
|
$metaManager: MetaManager;
|
||||||
$metaGuards: MetaGuards;
|
$metaGuards: MetaGuards;
|
||||||
}
|
}
|
||||||
|
interface ComponentCustomOptions {
|
||||||
|
metaInfo?: ComponentOptionsMetaInfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare const setup: MetaResolveSetup;
|
declare const setup: MetaResolveSetup;
|
||||||
@@ -207,6 +314,11 @@ declare namespace deepest_d {
|
|||||||
|
|
||||||
declare const defaultConfig: MetaConfig;
|
declare const defaultConfig: MetaConfig;
|
||||||
|
|
||||||
|
declare type PluginOptions = {
|
||||||
|
keyName: string;
|
||||||
|
};
|
||||||
|
declare const install: (app: App, _options?: Partial<PluginOptions>) => void;
|
||||||
|
|
||||||
interface ResolveOptionPredicament<T, U> {
|
interface ResolveOptionPredicament<T, U> {
|
||||||
(currentValue: T | undefined, context: U): T;
|
(currentValue: T | undefined, context: U): T;
|
||||||
}
|
}
|
||||||
@@ -216,4 +328,4 @@ declare function getCurrentManager(vm?: ComponentInternalInstance): MetaManager
|
|||||||
declare function useMeta(source: MetaSource, manager?: MetaManager): MetaProxy;
|
declare function useMeta(source: MetaSource, manager?: MetaManager): MetaProxy;
|
||||||
declare function useActiveMeta(): MetaActive;
|
declare function useActiveMeta(): MetaActive;
|
||||||
|
|
||||||
export { ExcludesFalsy, MetaActive, MetaConfig, MetaConfigSection, MetaConfigSectionAttribute, MetaConfigSectionGroup, MetaConfigSectionKey, MetaConfigSectionTag, MetaGroupConfig, MetaGuardRemoved, MetaGuards, MetaProxy, MetaRenderContext, MetaRendered, MetaRenderedNode, MetaResolveContext, MetaResolveSetup, MetaResolver, MetaResolverSetup, MetaSource, MetaSourceProxy, MetaTagConfig, MetaTagConfigKey, MetaTagName, MetaTagsConfig, MetaTeleports, Modify, SlotScopeProperties, TODO, Truthy, createMetaManager, deepest_d as deepestResolver, defaultConfig, getCurrentManager, resolveOption, useActiveMeta, useMeta };
|
export { ExcludesFalsy, MetaActive, MetaConfig, MetaConfigSection, MetaConfigSectionAttribute, MetaConfigSectionGroup, MetaConfigSectionKey, MetaConfigSectionTag, MetaGroupConfig, MetaGuardRemoved, MetaGuards, MetaProxy, MetaRenderContext, MetaRendered, MetaRenderedNode, MetaResolveContext, MetaResolveSetup, MetaResolver, MetaResolverSetup, MetaSource, MetaSourceProxy, MetaTagConfig, MetaTagConfigKey, MetaTagName, MetaTagsConfig, MetaTeleports, Modify, SlotScopeProperties, TODO, Truthy, createMetaManager, deepest_d as deepestResolver, defaultConfig, getCurrentManager, install as plugin, resolveOption, useActiveMeta, useMeta };
|
||||||
|
|||||||
Vendored
+44
-17
@@ -1,12 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { markRaw, h, getCurrentInstance, isProxy, watch, inject, defineComponent, onUnmounted, Teleport, reactive, Comment } from 'vue';
|
import { markRaw, h, getCurrentInstance, isProxy, watch, inject, defineComponent, reactive, onUnmounted, Teleport, Comment, computed } from 'vue';
|
||||||
|
|
||||||
const resolveOption = (predicament, initialValue) => (options, contexts) => {
|
const resolveOption = (predicament, initialValue) => (options, contexts) => {
|
||||||
let resolvedIndex = -1;
|
let resolvedIndex = -1;
|
||||||
@@ -795,9 +795,12 @@ function addVnode(isSSR, teleports, to, vnodes) {
|
|||||||
}
|
}
|
||||||
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
||||||
class MetaManager {
|
class MetaManager {
|
||||||
|
isSSR = false;
|
||||||
|
config;
|
||||||
|
target;
|
||||||
|
resolver;
|
||||||
|
ssrCleanedUp = false;
|
||||||
constructor(isSSR, config, target, resolver) {
|
constructor(isSSR, config, target, resolver) {
|
||||||
this.isSSR = false;
|
|
||||||
this.ssrCleanedUp = false;
|
|
||||||
this.isSSR = isSSR;
|
this.isSSR = isSSR;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -805,6 +808,19 @@ class MetaManager {
|
|||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static create = (isSSR, config, resolver) => {
|
||||||
|
const resolve = (options, contexts, active, key, pathSegments) => {
|
||||||
|
if (isFunction(resolver)) {
|
||||||
|
return resolver(options, contexts, active, key, pathSegments);
|
||||||
|
}
|
||||||
|
return resolver.resolve(options, contexts, active, key, pathSegments);
|
||||||
|
};
|
||||||
|
const active = reactive({});
|
||||||
|
const mergedObject = createMergedObject(resolve, active);
|
||||||
|
// TODO: validate resolver
|
||||||
|
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
||||||
|
return manager;
|
||||||
|
};
|
||||||
install(app) {
|
install(app) {
|
||||||
app.component('Metainfo', Metainfo);
|
app.component('Metainfo', Metainfo);
|
||||||
app.config.globalProperties.$metaManager = this;
|
app.config.globalProperties.$metaManager = this;
|
||||||
@@ -928,19 +944,30 @@ class MetaManager {
|
|||||||
return h(Teleport, { to }, teleport);
|
return h(Teleport, { to }, teleport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MetaManager.create = (isSSR, config, resolver) => {
|
|
||||||
const resolve = (options, contexts, active, key, pathSegments) => {
|
const defaultOptions = {
|
||||||
if (isFunction(resolver)) {
|
keyName: 'metaInfo'
|
||||||
return resolver(options, contexts, active, key, pathSegments);
|
};
|
||||||
|
const createMixin = options => ({
|
||||||
|
created() {
|
||||||
|
const instance = getCurrentInstance();
|
||||||
|
if (!instance?.type || !(options.keyName in instance.type)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return resolver.resolve(options, contexts, active, key, pathSegments);
|
const metaInfo = instance.type[options.keyName];
|
||||||
};
|
if (isFunction(metaInfo)) {
|
||||||
const active = reactive({});
|
const computedMetaInfo = computed(metaInfo);
|
||||||
const mergedObject = createMergedObject(resolve, active);
|
useMeta(computedMetaInfo);
|
||||||
// TODO: validate resolver
|
}
|
||||||
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
else {
|
||||||
return manager;
|
useMeta(metaInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const install = (app, _options = {}) => {
|
||||||
|
const options = Object.assign({}, defaultOptions, _options);
|
||||||
|
app.mixin(createMixin(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
export { createMetaManager, defaultResolver as deepestResolver, defaultConfig, getCurrentManager, resolveOption, useActiveMeta, useMeta };
|
export { createMetaManager, defaultResolver as deepestResolver, defaultConfig, getCurrentManager, install as plugin, resolveOption, useActiveMeta, useMeta };
|
||||||
|
|||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+44
-17
@@ -1,12 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { markRaw, h, getCurrentInstance, isProxy, watch, inject, defineComponent, onUnmounted, Teleport, reactive, Comment } from 'vue';
|
import { markRaw, h, getCurrentInstance, isProxy, watch, inject, defineComponent, reactive, onUnmounted, Teleport, Comment, computed } from 'vue';
|
||||||
|
|
||||||
const resolveOption = (predicament, initialValue) => (options, contexts) => {
|
const resolveOption = (predicament, initialValue) => (options, contexts) => {
|
||||||
let resolvedIndex = -1;
|
let resolvedIndex = -1;
|
||||||
@@ -795,9 +795,12 @@ function addVnode(isSSR, teleports, to, vnodes) {
|
|||||||
}
|
}
|
||||||
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
||||||
class MetaManager {
|
class MetaManager {
|
||||||
|
isSSR = false;
|
||||||
|
config;
|
||||||
|
target;
|
||||||
|
resolver;
|
||||||
|
ssrCleanedUp = false;
|
||||||
constructor(isSSR, config, target, resolver) {
|
constructor(isSSR, config, target, resolver) {
|
||||||
this.isSSR = false;
|
|
||||||
this.ssrCleanedUp = false;
|
|
||||||
this.isSSR = isSSR;
|
this.isSSR = isSSR;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -805,6 +808,19 @@ class MetaManager {
|
|||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static create = (isSSR, config, resolver) => {
|
||||||
|
const resolve = (options, contexts, active, key, pathSegments) => {
|
||||||
|
if (isFunction(resolver)) {
|
||||||
|
return resolver(options, contexts, active, key, pathSegments);
|
||||||
|
}
|
||||||
|
return resolver.resolve(options, contexts, active, key, pathSegments);
|
||||||
|
};
|
||||||
|
const active = reactive({});
|
||||||
|
const mergedObject = createMergedObject(resolve, active);
|
||||||
|
// TODO: validate resolver
|
||||||
|
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
||||||
|
return manager;
|
||||||
|
};
|
||||||
install(app) {
|
install(app) {
|
||||||
app.component('Metainfo', Metainfo);
|
app.component('Metainfo', Metainfo);
|
||||||
app.config.globalProperties.$metaManager = this;
|
app.config.globalProperties.$metaManager = this;
|
||||||
@@ -928,19 +944,30 @@ class MetaManager {
|
|||||||
return h(Teleport, { to }, teleport);
|
return h(Teleport, { to }, teleport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MetaManager.create = (isSSR, config, resolver) => {
|
|
||||||
const resolve = (options, contexts, active, key, pathSegments) => {
|
const defaultOptions = {
|
||||||
if (isFunction(resolver)) {
|
keyName: 'metaInfo'
|
||||||
return resolver(options, contexts, active, key, pathSegments);
|
};
|
||||||
|
const createMixin = options => ({
|
||||||
|
created() {
|
||||||
|
const instance = getCurrentInstance();
|
||||||
|
if (!instance?.type || !(options.keyName in instance.type)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return resolver.resolve(options, contexts, active, key, pathSegments);
|
const metaInfo = instance.type[options.keyName];
|
||||||
};
|
if (isFunction(metaInfo)) {
|
||||||
const active = reactive({});
|
const computedMetaInfo = computed(metaInfo);
|
||||||
const mergedObject = createMergedObject(resolve, active);
|
useMeta(computedMetaInfo);
|
||||||
// TODO: validate resolver
|
}
|
||||||
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
else {
|
||||||
return manager;
|
useMeta(metaInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const install = (app, _options = {}) => {
|
||||||
|
const options = Object.assign({}, defaultOptions, _options);
|
||||||
|
app.mixin(createMixin(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
export { createMetaManager, defaultResolver as deepestResolver, defaultConfig, getCurrentManager, resolveOption, useActiveMeta, useMeta };
|
export { createMetaManager, defaultResolver as deepestResolver, defaultConfig, getCurrentManager, install as plugin, resolveOption, useActiveMeta, useMeta };
|
||||||
|
|||||||
Vendored
+43
-15
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* vue-meta v3.0.0-alpha.7
|
* vue-meta v3.0.0-alpha.8
|
||||||
* (c) 2021
|
* (c) 2021
|
||||||
* - Pim (@pimlie)
|
* - Pim (@pimlie)
|
||||||
* - All the amazing contributors
|
* - All the amazing contributors
|
||||||
@@ -796,9 +796,12 @@ var VueMeta = (function (exports, vue) {
|
|||||||
}
|
}
|
||||||
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
|
||||||
class MetaManager {
|
class MetaManager {
|
||||||
|
isSSR = false;
|
||||||
|
config;
|
||||||
|
target;
|
||||||
|
resolver;
|
||||||
|
ssrCleanedUp = false;
|
||||||
constructor(isSSR, config, target, resolver) {
|
constructor(isSSR, config, target, resolver) {
|
||||||
this.isSSR = false;
|
|
||||||
this.ssrCleanedUp = false;
|
|
||||||
this.isSSR = isSSR;
|
this.isSSR = isSSR;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -806,6 +809,19 @@ var VueMeta = (function (exports, vue) {
|
|||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static create = (isSSR, config, resolver) => {
|
||||||
|
const resolve = (options, contexts, active, key, pathSegments) => {
|
||||||
|
if (isFunction(resolver)) {
|
||||||
|
return resolver(options, contexts, active, key, pathSegments);
|
||||||
|
}
|
||||||
|
return resolver.resolve(options, contexts, active, key, pathSegments);
|
||||||
|
};
|
||||||
|
const active = vue.reactive({});
|
||||||
|
const mergedObject = createMergedObject(resolve, active);
|
||||||
|
// TODO: validate resolver
|
||||||
|
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
||||||
|
return manager;
|
||||||
|
};
|
||||||
install(app) {
|
install(app) {
|
||||||
app.component('Metainfo', Metainfo);
|
app.component('Metainfo', Metainfo);
|
||||||
app.config.globalProperties.$metaManager = this;
|
app.config.globalProperties.$metaManager = this;
|
||||||
@@ -929,25 +945,37 @@ var VueMeta = (function (exports, vue) {
|
|||||||
return vue.h(vue.Teleport, { to }, teleport);
|
return vue.h(vue.Teleport, { to }, teleport);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MetaManager.create = (isSSR, config, resolver) => {
|
|
||||||
const resolve = (options, contexts, active, key, pathSegments) => {
|
const defaultOptions = {
|
||||||
if (isFunction(resolver)) {
|
keyName: 'metaInfo'
|
||||||
return resolver(options, contexts, active, key, pathSegments);
|
};
|
||||||
|
const createMixin = options => ({
|
||||||
|
created() {
|
||||||
|
const instance = vue.getCurrentInstance();
|
||||||
|
if (!instance?.type || !(options.keyName in instance.type)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return resolver.resolve(options, contexts, active, key, pathSegments);
|
const metaInfo = instance.type[options.keyName];
|
||||||
};
|
if (isFunction(metaInfo)) {
|
||||||
const active = vue.reactive({});
|
const computedMetaInfo = vue.computed(metaInfo);
|
||||||
const mergedObject = createMergedObject(resolve, active);
|
useMeta(computedMetaInfo);
|
||||||
// TODO: validate resolver
|
}
|
||||||
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
|
else {
|
||||||
return manager;
|
useMeta(metaInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const install = (app, _options = {}) => {
|
||||||
|
const options = Object.assign({}, defaultOptions, _options);
|
||||||
|
app.mixin(createMixin(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.createMetaManager = createMetaManager;
|
exports.createMetaManager = createMetaManager;
|
||||||
exports.deepestResolver = defaultResolver;
|
exports.deepestResolver = defaultResolver;
|
||||||
exports.defaultConfig = defaultConfig;
|
exports.defaultConfig = defaultConfig;
|
||||||
exports.getCurrentManager = getCurrentManager;
|
exports.getCurrentManager = getCurrentManager;
|
||||||
|
exports.plugin = install;
|
||||||
exports.resolveOption = resolveOption;
|
exports.resolveOption = resolveOption;
|
||||||
exports.useActiveMeta = useActiveMeta;
|
exports.useActiveMeta = useActiveMeta;
|
||||||
exports.useMeta = useMeta;
|
exports.useMeta = useMeta;
|
||||||
|
|||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "vue-meta",
|
"name": "vue-meta",
|
||||||
"version": "3.0.0-alpha.7",
|
"version": "3.0.0-alpha.8",
|
||||||
"description": "Manage HTML metadata in Vue.js components with SSR support",
|
"description": "Manage HTML metadata in Vue.js components with SSR support",
|
||||||
"main": "dist/vue-meta.cjs.js",
|
"main": "dist/vue-meta.cjs.js",
|
||||||
"browser": "dist/vue-meta.esm-browser.min.js",
|
"browser": "dist/vue-meta.esm-browser.min.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user