mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-06-21 20:30:33 +03:00
chore(release): 2.0.5
This commit is contained in:
@@ -2,6 +2,23 @@
|
||||
|
||||
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.
|
||||
|
||||
### [2.0.5](https://github.com/nuxt/vue-meta/compare/v2.0.3...v2.0.5) (2019-07-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add warning for v1 boolean attribute syntax ([bfeab17](https://github.com/nuxt/vue-meta/commit/bfeab17))
|
||||
* dont change title when value is undefined (fix [#396](https://github.com/nuxt/vue-meta/issues/396)) ([90f9710](https://github.com/nuxt/vue-meta/commit/90f9710))
|
||||
* ensure hasAttribute exists on $root.$el ([f1511ac](https://github.com/nuxt/vue-meta/commit/f1511ac))
|
||||
* only show boolean attrs with truthy value ([1d9072a](https://github.com/nuxt/vue-meta/commit/1d9072a))
|
||||
|
||||
|
||||
### Tests
|
||||
|
||||
* enable all getMetaInfo tests again ([24d7fee](https://github.com/nuxt/vue-meta/commit/24d7fee))
|
||||
|
||||
|
||||
|
||||
### [2.0.4](https://github.com/nuxt/vue-meta/compare/v2.0.3...v2.0.4) (2019-06-22)
|
||||
|
||||
|
||||
|
||||
Vendored
+65
-54
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue-meta v2.0.4
|
||||
* vue-meta v2.0.5
|
||||
* (c) 2019
|
||||
* - Declan de Wet
|
||||
* - Sébastien Chopin (@Atinux)
|
||||
@@ -13,12 +13,12 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
||||
|
||||
var deepmerge = _interopDefault(require('deepmerge'));
|
||||
|
||||
var version = "2.0.4";
|
||||
var version = "2.0.5";
|
||||
|
||||
// store an id to keep track of DOM updates
|
||||
var batchId = null;
|
||||
|
||||
function triggerUpdate(vm, hookName) {
|
||||
function triggerUpdate (vm, hookName) {
|
||||
// if an update was triggered during initialization or when an update was triggered by the
|
||||
// metaInfo watcher, set initialized to null
|
||||
// then we keep falsy value but know we need to run a triggerUpdate after initialization
|
||||
@@ -39,7 +39,7 @@ function triggerUpdate(vm, hookName) {
|
||||
* @param {Function} callback - the update to perform
|
||||
* @return {Number} id - a new ID
|
||||
*/
|
||||
function batchUpdate(callback, timeout) {
|
||||
function batchUpdate (callback, timeout) {
|
||||
if ( timeout === void 0 ) timeout = 10;
|
||||
|
||||
clearTimeout(batchId);
|
||||
@@ -56,27 +56,27 @@ function batchUpdate(callback, timeout) {
|
||||
* @param {any} arg - the object to check
|
||||
* @return {Boolean} - true if `arg` is an array
|
||||
*/
|
||||
function isArray(arg) {
|
||||
function isArray (arg) {
|
||||
return Array.isArray(arg)
|
||||
}
|
||||
|
||||
function isUndefined(arg) {
|
||||
function isUndefined (arg) {
|
||||
return typeof arg === 'undefined'
|
||||
}
|
||||
|
||||
function isObject(arg) {
|
||||
function isObject (arg) {
|
||||
return typeof arg === 'object'
|
||||
}
|
||||
|
||||
function isFunction(arg) {
|
||||
function isFunction (arg) {
|
||||
return typeof arg === 'function'
|
||||
}
|
||||
|
||||
function isString(arg) {
|
||||
function isString (arg) {
|
||||
return typeof arg === 'string'
|
||||
}
|
||||
|
||||
function ensureIsArray(arg, key) {
|
||||
function ensureIsArray (arg, key) {
|
||||
if (!key || !isObject(arg)) {
|
||||
return isArray(arg) ? arg : []
|
||||
}
|
||||
@@ -87,27 +87,27 @@ function ensureIsArray(arg, key) {
|
||||
return arg
|
||||
}
|
||||
|
||||
function ensuredPush(object, key, el) {
|
||||
function ensuredPush (object, key, el) {
|
||||
ensureIsArray(object, key);
|
||||
|
||||
object[key].push(el);
|
||||
}
|
||||
|
||||
// Vue $root instance has a _vueMeta object property, otherwise its a boolean true
|
||||
function hasMetaInfo(vm) {
|
||||
function hasMetaInfo (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && (vm._vueMeta === true || isObject(vm._vueMeta))
|
||||
}
|
||||
|
||||
// a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has
|
||||
function inMetaInfoBranch(vm) {
|
||||
function inMetaInfoBranch (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && !isUndefined(vm._vueMeta)
|
||||
}
|
||||
|
||||
function addNavGuards(vm) {
|
||||
function addNavGuards (vm) {
|
||||
// return when nav guards already added or no router exists
|
||||
if (vm.$root._vueMeta.navGuards || !vm.$root.$router) {
|
||||
/* istanbul ignore next */
|
||||
@@ -135,18 +135,18 @@ function addNavGuards(vm) {
|
||||
|
||||
var appId = 1;
|
||||
|
||||
function createMixin(Vue, options) {
|
||||
function createMixin (Vue, options) {
|
||||
// for which Vue lifecycle hooks should the metaInfo be refreshed
|
||||
var updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];
|
||||
|
||||
// watch for client side component updates
|
||||
return {
|
||||
beforeCreate: function beforeCreate() {
|
||||
beforeCreate: function beforeCreate () {
|
||||
var this$1 = this;
|
||||
|
||||
Object.defineProperty(this, '_hasMetaInfo', {
|
||||
configurable: true,
|
||||
get: function get() {
|
||||
get: function get () {
|
||||
// Show deprecation warning once when devtools enabled
|
||||
if (Vue.config.devtools && !this.$root._vueMeta.hasMetaInfoDeprecationWarningShown) {
|
||||
console.warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead'); // eslint-disable-line no-console
|
||||
@@ -210,7 +210,7 @@ function createMixin(Vue, options) {
|
||||
ensuredPush(this.$options, 'beforeMount', function () {
|
||||
// if this Vue-app was server rendered, set the appId to 'ssr'
|
||||
// only one SSR app per page is supported
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
this$1.$root._vueMeta.appId = 'ssr';
|
||||
}
|
||||
});
|
||||
@@ -424,7 +424,7 @@ var booleanHtmlAttributes = [
|
||||
'visible'
|
||||
];
|
||||
|
||||
function setOptions(options) {
|
||||
function setOptions (options) {
|
||||
// combine options
|
||||
options = isObject(options) ? options : {};
|
||||
|
||||
@@ -437,7 +437,7 @@ function setOptions(options) {
|
||||
return options
|
||||
}
|
||||
|
||||
function getOptions(options) {
|
||||
function getOptions (options) {
|
||||
var optionsCopy = {};
|
||||
for (var key in options) {
|
||||
optionsCopy[key] = options[key];
|
||||
@@ -445,7 +445,7 @@ function getOptions(options) {
|
||||
return optionsCopy
|
||||
}
|
||||
|
||||
function pause(refresh) {
|
||||
function pause (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = true;
|
||||
@@ -453,7 +453,7 @@ function pause(refresh) {
|
||||
return function () { return resume(refresh); }
|
||||
}
|
||||
|
||||
function resume(refresh) {
|
||||
function resume (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = false;
|
||||
@@ -463,7 +463,7 @@ function resume(refresh) {
|
||||
}
|
||||
}
|
||||
|
||||
function applyTemplate(ref, headObject, template, chunk) {
|
||||
function applyTemplate (ref, headObject, template, chunk) {
|
||||
var component = ref.component;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
var contentKeyName = ref.contentKeyName;
|
||||
@@ -498,7 +498,7 @@ function applyTemplate(ref, headObject, template, chunk) {
|
||||
* files in server/ still use normal js function
|
||||
*/
|
||||
|
||||
function findIndex(array, predicate) {
|
||||
function findIndex (array, predicate) {
|
||||
var arguments$1 = arguments;
|
||||
|
||||
if ( !Array.prototype.findIndex) {
|
||||
@@ -513,14 +513,14 @@ function findIndex(array, predicate) {
|
||||
return array.findIndex(predicate, arguments[2])
|
||||
}
|
||||
|
||||
function toArray(arg) {
|
||||
function toArray (arg) {
|
||||
if ( !Array.from) {
|
||||
return Array.prototype.slice.call(arg)
|
||||
}
|
||||
return Array.from(arg)
|
||||
}
|
||||
|
||||
function includes(array, value) {
|
||||
function includes (array, value) {
|
||||
if ( !Array.prototype.includes) {
|
||||
for (var idx in array) {
|
||||
if (array[idx] === value) {
|
||||
@@ -543,14 +543,14 @@ var serverSequences = [
|
||||
|
||||
var clientSequences = [
|
||||
[/&/g, '\u0026'],
|
||||
[/</g, '\u003c'],
|
||||
[/>/g, '\u003e'],
|
||||
[/</g, '\u003C'],
|
||||
[/>/g, '\u003E'],
|
||||
[/"/g, '\u0022'],
|
||||
[/'/g, '\u0027']
|
||||
];
|
||||
|
||||
// sanitizes potentially dangerous characters
|
||||
function escape(info, options, escapeOptions) {
|
||||
function escape (info, options, escapeOptions) {
|
||||
var tagIDKeyName = options.tagIDKeyName;
|
||||
var doEscape = escapeOptions.doEscape; if ( doEscape === void 0 ) doEscape = function (v) { return v; };
|
||||
var escaped = {};
|
||||
@@ -600,7 +600,7 @@ function escape(info, options, escapeOptions) {
|
||||
return escaped
|
||||
}
|
||||
|
||||
function arrayMerge(ref, target, source) {
|
||||
function arrayMerge (ref, target, source) {
|
||||
var component = ref.component;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
@@ -667,7 +667,7 @@ function arrayMerge(ref, target, source) {
|
||||
return destination.concat(source)
|
||||
}
|
||||
|
||||
function merge(target, source, options) {
|
||||
function merge (target, source, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
// remove properties explicitly set to false so child components can
|
||||
@@ -712,7 +712,7 @@ function merge(target, source, options) {
|
||||
* @param {Object} [result={}] - result so far
|
||||
* @return {Object} result - final aggregated result
|
||||
*/
|
||||
function getComponentOption(options, component, result) {
|
||||
function getComponentOption (options, component, result) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( result === void 0 ) result = {};
|
||||
|
||||
@@ -782,7 +782,7 @@ function getComponentOption(options, component, result) {
|
||||
* @param {Object} component - the Vue instance to get meta info from
|
||||
* @return {Object} - returned meta info
|
||||
*/
|
||||
function getMetaInfo(options, component, escapeSequences) {
|
||||
function getMetaInfo (options, component, escapeSequences) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( escapeSequences === void 0 ) escapeSequences = [];
|
||||
|
||||
@@ -840,7 +840,7 @@ function getMetaInfo(options, component, escapeSequences) {
|
||||
* @param {Object} attrs - the new document html attributes
|
||||
* @param {HTMLElement} tag - the HTMLElement tag to update with new attrs
|
||||
*/
|
||||
function updateAttribute(ref, attrs, tag) {
|
||||
function updateAttribute (ref, attrs, tag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
@@ -885,7 +885,7 @@ function updateAttribute(ref, attrs, tag) {
|
||||
*
|
||||
* @param {String} title - the new title of the document
|
||||
*/
|
||||
function updateTitle(title) {
|
||||
function updateTitle (title) {
|
||||
if (title === undefined) {
|
||||
return
|
||||
}
|
||||
@@ -901,7 +901,7 @@ function updateTitle(title) {
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - a representation of what tags changed
|
||||
*/
|
||||
function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
function updateTag (appId, ref, type, tags, headTag, bodyTag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
@@ -947,7 +947,13 @@ function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
var _attr = includes(dataAttributes, attr)
|
||||
? ("data-" + attr)
|
||||
: attr;
|
||||
var value = isUndefined(tag[attr]) || includes(booleanHtmlAttributes, attr) ? '' : tag[attr];
|
||||
|
||||
var isBooleanAttribute = includes(booleanHtmlAttributes, attr);
|
||||
if (isBooleanAttribute && !tag[attr]) {
|
||||
continue
|
||||
}
|
||||
|
||||
var value = isBooleanAttribute ? '' : tag[attr];
|
||||
newElement.setAttribute(_attr, value);
|
||||
}
|
||||
}
|
||||
@@ -981,7 +987,7 @@ function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
return { oldTags: oldTags, newTags: newTags }
|
||||
}
|
||||
|
||||
function getTag(tags, tag) {
|
||||
function getTag (tags, tag) {
|
||||
if (!tags[tag]) {
|
||||
tags[tag] = document.getElementsByTagName(tag)[0];
|
||||
}
|
||||
@@ -994,7 +1000,7 @@ function getTag(tags, tag) {
|
||||
*
|
||||
* @param {Object} newInfo - the meta info to update to
|
||||
*/
|
||||
function updateClientMetaInfo(appId, options, newInfo) {
|
||||
function updateClientMetaInfo (appId, options, newInfo) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var ssrAttribute = options.ssrAttribute;
|
||||
@@ -1058,7 +1064,7 @@ function updateClientMetaInfo(appId, options, newInfo) {
|
||||
return { addedTags: addedTags, removedTags: removedTags }
|
||||
}
|
||||
|
||||
function _refresh(options) {
|
||||
function _refresh (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
/**
|
||||
@@ -1071,7 +1077,7 @@ function _refresh(options) {
|
||||
*
|
||||
* @return {Object} - new meta info
|
||||
*/
|
||||
return function refresh() {
|
||||
return function refresh () {
|
||||
var metaInfo = getMetaInfo(options, this.$root, clientSequences);
|
||||
|
||||
var appId = this.$root._vueMeta.appId;
|
||||
@@ -1092,12 +1098,12 @@ function _refresh(options) {
|
||||
* @param {Object} data - the attributes to generate
|
||||
* @return {Object} - the attribute generator
|
||||
*/
|
||||
function attributeGenerator(ref, type, data) {
|
||||
function attributeGenerator (ref, type, data) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
return {
|
||||
text: function text() {
|
||||
text: function text () {
|
||||
var attributeStr = '';
|
||||
var watchedAttrs = [];
|
||||
|
||||
@@ -1126,12 +1132,12 @@ function attributeGenerator(ref, type, data) {
|
||||
* @param {String} data - the title text
|
||||
* @return {Object} - the title generator
|
||||
*/
|
||||
function titleGenerator(appId, ref, type, data) {
|
||||
function titleGenerator (appId, ref, type, data) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
return {
|
||||
text: function text() {
|
||||
text: function text () {
|
||||
return ("<" + type + ">" + data + "</" + type + ">")
|
||||
}
|
||||
}
|
||||
@@ -1144,13 +1150,13 @@ function titleGenerator(appId, ref, type, data) {
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - the tag generator
|
||||
*/
|
||||
function tagGenerator(appId, ref, type, tags) {
|
||||
function tagGenerator (appId, ref, type, tags) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
|
||||
return {
|
||||
text: function text(ref) {
|
||||
text: function text (ref) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var body = ref.body; if ( body === void 0 ) body = false;
|
||||
|
||||
@@ -1179,7 +1185,12 @@ function tagGenerator(appId, ref, type, tags) {
|
||||
prefix = 'data-';
|
||||
}
|
||||
|
||||
return isUndefined(tag[attr]) || booleanHtmlAttributes.includes(attr)
|
||||
var isBooleanAttr = booleanHtmlAttributes.includes(attr);
|
||||
if (isBooleanAttr && !tag[attr]) {
|
||||
return attrsStr
|
||||
}
|
||||
|
||||
return isBooleanAttr
|
||||
? (attrsStr + " " + prefix + attr)
|
||||
: (attrsStr + " " + prefix + attr + "=\"" + (tag[attr]) + "\"")
|
||||
}, '');
|
||||
@@ -1215,7 +1226,7 @@ function tagGenerator(appId, ref, type, tags) {
|
||||
* @return {Object} - the new injector
|
||||
*/
|
||||
|
||||
function generateServerInjector(appId, options, type, data) {
|
||||
function generateServerInjector (appId, options, type, data) {
|
||||
if (type === 'title') {
|
||||
return titleGenerator(appId, options, type, data)
|
||||
}
|
||||
@@ -1227,7 +1238,7 @@ function generateServerInjector(appId, options, type, data) {
|
||||
return tagGenerator(appId, options, type, data)
|
||||
}
|
||||
|
||||
function _inject(options) {
|
||||
function _inject (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
/**
|
||||
@@ -1237,7 +1248,7 @@ function _inject(options) {
|
||||
* @this {Object} - Vue instance - ideally the root component
|
||||
* @return {Object} - server meta info with `toString` methods
|
||||
*/
|
||||
return function inject() {
|
||||
return function inject () {
|
||||
// get meta info with sensible defaults
|
||||
var metaInfo = getMetaInfo(options, this.$root, serverSequences);
|
||||
|
||||
@@ -1252,7 +1263,7 @@ function _inject(options) {
|
||||
}
|
||||
}
|
||||
|
||||
function _$meta(options) {
|
||||
function _$meta (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var _refresh$1 = _refresh(options);
|
||||
@@ -1263,7 +1274,7 @@ function _$meta(options) {
|
||||
* @this {Object} - the Vue instance (a root component)
|
||||
* @return {Object} - injector
|
||||
*/
|
||||
return function $meta() {
|
||||
return function $meta () {
|
||||
return {
|
||||
getOptions: function () { return getOptions(options); },
|
||||
refresh: _refresh$1.bind(this),
|
||||
@@ -1278,7 +1289,7 @@ function _$meta(options) {
|
||||
* Plugin install function.
|
||||
* @param {Function} Vue - the Vue constructor.
|
||||
*/
|
||||
function install(Vue, options) {
|
||||
function install (Vue, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
if (Vue.__vuemeta_installed) {
|
||||
|
||||
Vendored
+50
-44
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue-meta v2.0.4
|
||||
* vue-meta v2.0.5
|
||||
* (c) 2019
|
||||
* - Declan de Wet
|
||||
* - Sébastien Chopin (@Atinux)
|
||||
@@ -9,12 +9,12 @@
|
||||
|
||||
import deepmerge from 'deepmerge';
|
||||
|
||||
var version = "2.0.4";
|
||||
var version = "2.0.5";
|
||||
|
||||
// store an id to keep track of DOM updates
|
||||
let batchId = null;
|
||||
|
||||
function triggerUpdate(vm, hookName) {
|
||||
function triggerUpdate (vm, hookName) {
|
||||
// if an update was triggered during initialization or when an update was triggered by the
|
||||
// metaInfo watcher, set initialized to null
|
||||
// then we keep falsy value but know we need to run a triggerUpdate after initialization
|
||||
@@ -35,7 +35,7 @@ function triggerUpdate(vm, hookName) {
|
||||
* @param {Function} callback - the update to perform
|
||||
* @return {Number} id - a new ID
|
||||
*/
|
||||
function batchUpdate(callback, timeout = 10) {
|
||||
function batchUpdate (callback, timeout = 10) {
|
||||
clearTimeout(batchId);
|
||||
|
||||
batchId = setTimeout(() => {
|
||||
@@ -50,27 +50,27 @@ function batchUpdate(callback, timeout = 10) {
|
||||
* @param {any} arg - the object to check
|
||||
* @return {Boolean} - true if `arg` is an array
|
||||
*/
|
||||
function isArray(arg) {
|
||||
function isArray (arg) {
|
||||
return Array.isArray(arg)
|
||||
}
|
||||
|
||||
function isUndefined(arg) {
|
||||
function isUndefined (arg) {
|
||||
return typeof arg === 'undefined'
|
||||
}
|
||||
|
||||
function isObject(arg) {
|
||||
function isObject (arg) {
|
||||
return typeof arg === 'object'
|
||||
}
|
||||
|
||||
function isFunction(arg) {
|
||||
function isFunction (arg) {
|
||||
return typeof arg === 'function'
|
||||
}
|
||||
|
||||
function isString(arg) {
|
||||
function isString (arg) {
|
||||
return typeof arg === 'string'
|
||||
}
|
||||
|
||||
function ensureIsArray(arg, key) {
|
||||
function ensureIsArray (arg, key) {
|
||||
if (!key || !isObject(arg)) {
|
||||
return isArray(arg) ? arg : []
|
||||
}
|
||||
@@ -81,23 +81,23 @@ function ensureIsArray(arg, key) {
|
||||
return arg
|
||||
}
|
||||
|
||||
function ensuredPush(object, key, el) {
|
||||
function ensuredPush (object, key, el) {
|
||||
ensureIsArray(object, key);
|
||||
|
||||
object[key].push(el);
|
||||
}
|
||||
|
||||
// Vue $root instance has a _vueMeta object property, otherwise its a boolean true
|
||||
function hasMetaInfo(vm = this) {
|
||||
function hasMetaInfo (vm = this) {
|
||||
return vm && (vm._vueMeta === true || isObject(vm._vueMeta))
|
||||
}
|
||||
|
||||
// a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has
|
||||
function inMetaInfoBranch(vm = this) {
|
||||
function inMetaInfoBranch (vm = this) {
|
||||
return vm && !isUndefined(vm._vueMeta)
|
||||
}
|
||||
|
||||
function addNavGuards(vm) {
|
||||
function addNavGuards (vm) {
|
||||
// return when nav guards already added or no router exists
|
||||
if (vm.$root._vueMeta.navGuards || !vm.$root.$router) {
|
||||
/* istanbul ignore next */
|
||||
@@ -124,16 +124,16 @@ function addNavGuards(vm) {
|
||||
|
||||
let appId = 1;
|
||||
|
||||
function createMixin(Vue, options) {
|
||||
function createMixin (Vue, options) {
|
||||
// for which Vue lifecycle hooks should the metaInfo be refreshed
|
||||
const updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];
|
||||
|
||||
// watch for client side component updates
|
||||
return {
|
||||
beforeCreate() {
|
||||
beforeCreate () {
|
||||
Object.defineProperty(this, '_hasMetaInfo', {
|
||||
configurable: true,
|
||||
get() {
|
||||
get () {
|
||||
// Show deprecation warning once when devtools enabled
|
||||
if (Vue.config.devtools && !this.$root._vueMeta.hasMetaInfoDeprecationWarningShown) {
|
||||
console.warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead'); // eslint-disable-line no-console
|
||||
@@ -197,7 +197,7 @@ function createMixin(Vue, options) {
|
||||
ensuredPush(this.$options, 'beforeMount', () => {
|
||||
// if this Vue-app was server rendered, set the appId to 'ssr'
|
||||
// only one SSR app per page is supported
|
||||
if (this.$root.$el && this.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
if (this.$root.$el && this.$root.$el.hasAttribute && this.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
this.$root._vueMeta.appId = 'ssr';
|
||||
}
|
||||
});
|
||||
@@ -400,7 +400,7 @@ const booleanHtmlAttributes = [
|
||||
// eslint-disable-next-line no-console
|
||||
const showWarningNotSupported = () => console.warn('This vue app/component has no vue-meta configuration');
|
||||
|
||||
function setOptions(options) {
|
||||
function setOptions (options) {
|
||||
// combine options
|
||||
options = isObject(options) ? options : {};
|
||||
|
||||
@@ -413,7 +413,7 @@ function setOptions(options) {
|
||||
return options
|
||||
}
|
||||
|
||||
function getOptions(options) {
|
||||
function getOptions (options) {
|
||||
const optionsCopy = {};
|
||||
for (const key in options) {
|
||||
optionsCopy[key] = options[key];
|
||||
@@ -421,13 +421,13 @@ function getOptions(options) {
|
||||
return optionsCopy
|
||||
}
|
||||
|
||||
function pause(refresh = true) {
|
||||
function pause (refresh = true) {
|
||||
this.$root._vueMeta.paused = true;
|
||||
|
||||
return () => resume(refresh)
|
||||
}
|
||||
|
||||
function resume(refresh = true) {
|
||||
function resume (refresh = true) {
|
||||
this.$root._vueMeta.paused = false;
|
||||
|
||||
if (refresh) {
|
||||
@@ -435,7 +435,7 @@ function resume(refresh = true) {
|
||||
}
|
||||
}
|
||||
|
||||
function applyTemplate({ component, metaTemplateKeyName, contentKeyName }, headObject, template, chunk) {
|
||||
function applyTemplate ({ component, metaTemplateKeyName, contentKeyName }, headObject, template, chunk) {
|
||||
if (isUndefined(template)) {
|
||||
template = headObject[metaTemplateKeyName];
|
||||
delete headObject[metaTemplateKeyName];
|
||||
@@ -466,28 +466,28 @@ function applyTemplate({ component, metaTemplateKeyName, contentKeyName }, headO
|
||||
* files in server/ still use normal js function
|
||||
*/
|
||||
|
||||
function findIndex(array, predicate) {
|
||||
function findIndex (array, predicate) {
|
||||
return array.findIndex(predicate, arguments[2])
|
||||
}
|
||||
|
||||
function toArray(arg) {
|
||||
function toArray (arg) {
|
||||
return Array.from(arg)
|
||||
}
|
||||
|
||||
function includes(array, value) {
|
||||
function includes (array, value) {
|
||||
return array.includes(value)
|
||||
}
|
||||
|
||||
const clientSequences = [
|
||||
[/&/g, '\u0026'],
|
||||
[/</g, '\u003c'],
|
||||
[/>/g, '\u003e'],
|
||||
[/</g, '\u003C'],
|
||||
[/>/g, '\u003E'],
|
||||
[/"/g, '\u0022'],
|
||||
[/'/g, '\u0027']
|
||||
];
|
||||
|
||||
// sanitizes potentially dangerous characters
|
||||
function escape(info, options, escapeOptions) {
|
||||
function escape (info, options, escapeOptions) {
|
||||
const { tagIDKeyName } = options;
|
||||
const { doEscape = v => v } = escapeOptions;
|
||||
const escaped = {};
|
||||
@@ -537,7 +537,7 @@ function escape(info, options, escapeOptions) {
|
||||
return escaped
|
||||
}
|
||||
|
||||
function arrayMerge({ component, tagIDKeyName, metaTemplateKeyName, contentKeyName }, target, source) {
|
||||
function arrayMerge ({ component, tagIDKeyName, metaTemplateKeyName, contentKeyName }, target, source) {
|
||||
// we concat the arrays without merging objects contained in,
|
||||
// but we check for a `vmid` property on each object in the array
|
||||
// using an O(1) lookup associative array exploit
|
||||
@@ -599,7 +599,7 @@ function arrayMerge({ component, tagIDKeyName, metaTemplateKeyName, contentKeyNa
|
||||
return destination.concat(source)
|
||||
}
|
||||
|
||||
function merge(target, source, options = {}) {
|
||||
function merge (target, source, options = {}) {
|
||||
// remove properties explicitly set to false so child components can
|
||||
// optionally _not_ overwrite the parents content
|
||||
// (for array properties this is checked in arrayMerge)
|
||||
@@ -642,7 +642,7 @@ function merge(target, source, options = {}) {
|
||||
* @param {Object} [result={}] - result so far
|
||||
* @return {Object} result - final aggregated result
|
||||
*/
|
||||
function getComponentOption(options = {}, component, result = {}) {
|
||||
function getComponentOption (options = {}, component, result = {}) {
|
||||
const { keyName, metaTemplateKeyName, tagIDKeyName } = options;
|
||||
const { $options, $children } = component;
|
||||
|
||||
@@ -706,7 +706,7 @@ function getComponentOption(options = {}, component, result = {}) {
|
||||
* @param {Object} component - the Vue instance to get meta info from
|
||||
* @return {Object} - returned meta info
|
||||
*/
|
||||
function getMetaInfo(options = {}, component, escapeSequences = []) {
|
||||
function getMetaInfo (options = {}, component, escapeSequences = []) {
|
||||
// collect & aggregate all metaInfo $options
|
||||
let info = getComponentOption(options, component, defaultInfo);
|
||||
|
||||
@@ -756,7 +756,7 @@ function getMetaInfo(options = {}, component, escapeSequences = []) {
|
||||
* @param {Object} attrs - the new document html attributes
|
||||
* @param {HTMLElement} tag - the HTMLElement tag to update with new attrs
|
||||
*/
|
||||
function updateAttribute({ attribute } = {}, attrs, tag) {
|
||||
function updateAttribute ({ attribute } = {}, attrs, tag) {
|
||||
const vueMetaAttrString = tag.getAttribute(attribute);
|
||||
const vueMetaAttrs = vueMetaAttrString ? vueMetaAttrString.split(',') : [];
|
||||
const toRemove = toArray(vueMetaAttrs);
|
||||
@@ -798,7 +798,7 @@ function updateAttribute({ attribute } = {}, attrs, tag) {
|
||||
*
|
||||
* @param {String} title - the new title of the document
|
||||
*/
|
||||
function updateTitle(title) {
|
||||
function updateTitle (title) {
|
||||
if (title === undefined) {
|
||||
return
|
||||
}
|
||||
@@ -814,7 +814,7 @@ function updateTitle(title) {
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - a representation of what tags changed
|
||||
*/
|
||||
function updateTag(appId, { attribute, tagIDKeyName } = {}, type, tags, headTag, bodyTag) {
|
||||
function updateTag (appId, { attribute, tagIDKeyName } = {}, type, tags, headTag, bodyTag) {
|
||||
const oldHeadTags = toArray(headTag.querySelectorAll(`${type}[${attribute}="${appId}"], ${type}[data-${tagIDKeyName}]`));
|
||||
const oldBodyTags = toArray(bodyTag.querySelectorAll(`${type}[${attribute}="${appId}"][data-body="true"], ${type}[data-${tagIDKeyName}][data-body="true"]`));
|
||||
const dataAttributes = [tagIDKeyName, 'body'];
|
||||
@@ -856,7 +856,13 @@ function updateTag(appId, { attribute, tagIDKeyName } = {}, type, tags, headTag,
|
||||
const _attr = includes(dataAttributes, attr)
|
||||
? `data-${attr}`
|
||||
: attr;
|
||||
const value = isUndefined(tag[attr]) || includes(booleanHtmlAttributes, attr) ? '' : tag[attr];
|
||||
|
||||
const isBooleanAttribute = includes(booleanHtmlAttributes, attr);
|
||||
if (isBooleanAttribute && !tag[attr]) {
|
||||
continue
|
||||
}
|
||||
|
||||
const value = isBooleanAttribute ? '' : tag[attr];
|
||||
newElement.setAttribute(_attr, value);
|
||||
}
|
||||
}
|
||||
@@ -890,7 +896,7 @@ function updateTag(appId, { attribute, tagIDKeyName } = {}, type, tags, headTag,
|
||||
return { oldTags, newTags }
|
||||
}
|
||||
|
||||
function getTag(tags, tag) {
|
||||
function getTag (tags, tag) {
|
||||
if (!tags[tag]) {
|
||||
tags[tag] = document.getElementsByTagName(tag)[0];
|
||||
}
|
||||
@@ -903,7 +909,7 @@ function getTag(tags, tag) {
|
||||
*
|
||||
* @param {Object} newInfo - the meta info to update to
|
||||
*/
|
||||
function updateClientMetaInfo(appId, options = {}, newInfo) {
|
||||
function updateClientMetaInfo (appId, options = {}, newInfo) {
|
||||
const { ssrAttribute } = options;
|
||||
|
||||
// only cache tags for current update
|
||||
@@ -963,7 +969,7 @@ function updateClientMetaInfo(appId, options = {}, newInfo) {
|
||||
return { addedTags, removedTags }
|
||||
}
|
||||
|
||||
function _refresh(options = {}) {
|
||||
function _refresh (options = {}) {
|
||||
/**
|
||||
* When called, will update the current meta info with new meta info.
|
||||
* Useful when updating meta info as the result of an asynchronous
|
||||
@@ -974,7 +980,7 @@ function _refresh(options = {}) {
|
||||
*
|
||||
* @return {Object} - new meta info
|
||||
*/
|
||||
return function refresh() {
|
||||
return function refresh () {
|
||||
const metaInfo = getMetaInfo(options, this.$root, clientSequences);
|
||||
|
||||
const appId = this.$root._vueMeta.appId;
|
||||
@@ -988,7 +994,7 @@ function _refresh(options = {}) {
|
||||
}
|
||||
}
|
||||
|
||||
function _$meta(options = {}) {
|
||||
function _$meta (options = {}) {
|
||||
const _refresh$1 = _refresh(options);
|
||||
const inject = () => {};
|
||||
|
||||
@@ -997,7 +1003,7 @@ function _$meta(options = {}) {
|
||||
* @this {Object} - the Vue instance (a root component)
|
||||
* @return {Object} - injector
|
||||
*/
|
||||
return function $meta() {
|
||||
return function $meta () {
|
||||
if (!this.$root._vueMeta) {
|
||||
return {
|
||||
getOptions: showWarningNotSupported,
|
||||
@@ -1022,7 +1028,7 @@ function _$meta(options = {}) {
|
||||
* Plugin install function.
|
||||
* @param {Function} Vue - the Vue constructor.
|
||||
*/
|
||||
function install(Vue, options = {}) {
|
||||
function install (Vue, options = {}) {
|
||||
if (Vue.__vuemeta_installed) {
|
||||
return
|
||||
}
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+65
-54
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue-meta v2.0.4
|
||||
* vue-meta v2.0.5
|
||||
* (c) 2019
|
||||
* - Declan de Wet
|
||||
* - Sébastien Chopin (@Atinux)
|
||||
@@ -9,12 +9,12 @@
|
||||
|
||||
import deepmerge from 'deepmerge';
|
||||
|
||||
var version = "2.0.4";
|
||||
var version = "2.0.5";
|
||||
|
||||
// store an id to keep track of DOM updates
|
||||
var batchId = null;
|
||||
|
||||
function triggerUpdate(vm, hookName) {
|
||||
function triggerUpdate (vm, hookName) {
|
||||
// if an update was triggered during initialization or when an update was triggered by the
|
||||
// metaInfo watcher, set initialized to null
|
||||
// then we keep falsy value but know we need to run a triggerUpdate after initialization
|
||||
@@ -35,7 +35,7 @@ function triggerUpdate(vm, hookName) {
|
||||
* @param {Function} callback - the update to perform
|
||||
* @return {Number} id - a new ID
|
||||
*/
|
||||
function batchUpdate(callback, timeout) {
|
||||
function batchUpdate (callback, timeout) {
|
||||
if ( timeout === void 0 ) timeout = 10;
|
||||
|
||||
clearTimeout(batchId);
|
||||
@@ -52,27 +52,27 @@ function batchUpdate(callback, timeout) {
|
||||
* @param {any} arg - the object to check
|
||||
* @return {Boolean} - true if `arg` is an array
|
||||
*/
|
||||
function isArray(arg) {
|
||||
function isArray (arg) {
|
||||
return Array.isArray(arg)
|
||||
}
|
||||
|
||||
function isUndefined(arg) {
|
||||
function isUndefined (arg) {
|
||||
return typeof arg === 'undefined'
|
||||
}
|
||||
|
||||
function isObject(arg) {
|
||||
function isObject (arg) {
|
||||
return typeof arg === 'object'
|
||||
}
|
||||
|
||||
function isFunction(arg) {
|
||||
function isFunction (arg) {
|
||||
return typeof arg === 'function'
|
||||
}
|
||||
|
||||
function isString(arg) {
|
||||
function isString (arg) {
|
||||
return typeof arg === 'string'
|
||||
}
|
||||
|
||||
function ensureIsArray(arg, key) {
|
||||
function ensureIsArray (arg, key) {
|
||||
if (!key || !isObject(arg)) {
|
||||
return isArray(arg) ? arg : []
|
||||
}
|
||||
@@ -83,27 +83,27 @@ function ensureIsArray(arg, key) {
|
||||
return arg
|
||||
}
|
||||
|
||||
function ensuredPush(object, key, el) {
|
||||
function ensuredPush (object, key, el) {
|
||||
ensureIsArray(object, key);
|
||||
|
||||
object[key].push(el);
|
||||
}
|
||||
|
||||
// Vue $root instance has a _vueMeta object property, otherwise its a boolean true
|
||||
function hasMetaInfo(vm) {
|
||||
function hasMetaInfo (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && (vm._vueMeta === true || isObject(vm._vueMeta))
|
||||
}
|
||||
|
||||
// a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has
|
||||
function inMetaInfoBranch(vm) {
|
||||
function inMetaInfoBranch (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && !isUndefined(vm._vueMeta)
|
||||
}
|
||||
|
||||
function addNavGuards(vm) {
|
||||
function addNavGuards (vm) {
|
||||
// return when nav guards already added or no router exists
|
||||
if (vm.$root._vueMeta.navGuards || !vm.$root.$router) {
|
||||
/* istanbul ignore next */
|
||||
@@ -131,18 +131,18 @@ function addNavGuards(vm) {
|
||||
|
||||
var appId = 1;
|
||||
|
||||
function createMixin(Vue, options) {
|
||||
function createMixin (Vue, options) {
|
||||
// for which Vue lifecycle hooks should the metaInfo be refreshed
|
||||
var updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];
|
||||
|
||||
// watch for client side component updates
|
||||
return {
|
||||
beforeCreate: function beforeCreate() {
|
||||
beforeCreate: function beforeCreate () {
|
||||
var this$1 = this;
|
||||
|
||||
Object.defineProperty(this, '_hasMetaInfo', {
|
||||
configurable: true,
|
||||
get: function get() {
|
||||
get: function get () {
|
||||
// Show deprecation warning once when devtools enabled
|
||||
if (Vue.config.devtools && !this.$root._vueMeta.hasMetaInfoDeprecationWarningShown) {
|
||||
console.warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead'); // eslint-disable-line no-console
|
||||
@@ -206,7 +206,7 @@ function createMixin(Vue, options) {
|
||||
ensuredPush(this.$options, 'beforeMount', function () {
|
||||
// if this Vue-app was server rendered, set the appId to 'ssr'
|
||||
// only one SSR app per page is supported
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
this$1.$root._vueMeta.appId = 'ssr';
|
||||
}
|
||||
});
|
||||
@@ -420,7 +420,7 @@ var booleanHtmlAttributes = [
|
||||
'visible'
|
||||
];
|
||||
|
||||
function setOptions(options) {
|
||||
function setOptions (options) {
|
||||
// combine options
|
||||
options = isObject(options) ? options : {};
|
||||
|
||||
@@ -433,7 +433,7 @@ function setOptions(options) {
|
||||
return options
|
||||
}
|
||||
|
||||
function getOptions(options) {
|
||||
function getOptions (options) {
|
||||
var optionsCopy = {};
|
||||
for (var key in options) {
|
||||
optionsCopy[key] = options[key];
|
||||
@@ -441,7 +441,7 @@ function getOptions(options) {
|
||||
return optionsCopy
|
||||
}
|
||||
|
||||
function pause(refresh) {
|
||||
function pause (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = true;
|
||||
@@ -449,7 +449,7 @@ function pause(refresh) {
|
||||
return function () { return resume(refresh); }
|
||||
}
|
||||
|
||||
function resume(refresh) {
|
||||
function resume (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = false;
|
||||
@@ -459,7 +459,7 @@ function resume(refresh) {
|
||||
}
|
||||
}
|
||||
|
||||
function applyTemplate(ref, headObject, template, chunk) {
|
||||
function applyTemplate (ref, headObject, template, chunk) {
|
||||
var component = ref.component;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
var contentKeyName = ref.contentKeyName;
|
||||
@@ -494,7 +494,7 @@ function applyTemplate(ref, headObject, template, chunk) {
|
||||
* files in server/ still use normal js function
|
||||
*/
|
||||
|
||||
function findIndex(array, predicate) {
|
||||
function findIndex (array, predicate) {
|
||||
var arguments$1 = arguments;
|
||||
|
||||
if ( !Array.prototype.findIndex) {
|
||||
@@ -509,14 +509,14 @@ function findIndex(array, predicate) {
|
||||
return array.findIndex(predicate, arguments[2])
|
||||
}
|
||||
|
||||
function toArray(arg) {
|
||||
function toArray (arg) {
|
||||
if ( !Array.from) {
|
||||
return Array.prototype.slice.call(arg)
|
||||
}
|
||||
return Array.from(arg)
|
||||
}
|
||||
|
||||
function includes(array, value) {
|
||||
function includes (array, value) {
|
||||
if ( !Array.prototype.includes) {
|
||||
for (var idx in array) {
|
||||
if (array[idx] === value) {
|
||||
@@ -539,14 +539,14 @@ var serverSequences = [
|
||||
|
||||
var clientSequences = [
|
||||
[/&/g, '\u0026'],
|
||||
[/</g, '\u003c'],
|
||||
[/>/g, '\u003e'],
|
||||
[/</g, '\u003C'],
|
||||
[/>/g, '\u003E'],
|
||||
[/"/g, '\u0022'],
|
||||
[/'/g, '\u0027']
|
||||
];
|
||||
|
||||
// sanitizes potentially dangerous characters
|
||||
function escape(info, options, escapeOptions) {
|
||||
function escape (info, options, escapeOptions) {
|
||||
var tagIDKeyName = options.tagIDKeyName;
|
||||
var doEscape = escapeOptions.doEscape; if ( doEscape === void 0 ) doEscape = function (v) { return v; };
|
||||
var escaped = {};
|
||||
@@ -596,7 +596,7 @@ function escape(info, options, escapeOptions) {
|
||||
return escaped
|
||||
}
|
||||
|
||||
function arrayMerge(ref, target, source) {
|
||||
function arrayMerge (ref, target, source) {
|
||||
var component = ref.component;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
@@ -663,7 +663,7 @@ function arrayMerge(ref, target, source) {
|
||||
return destination.concat(source)
|
||||
}
|
||||
|
||||
function merge(target, source, options) {
|
||||
function merge (target, source, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
// remove properties explicitly set to false so child components can
|
||||
@@ -708,7 +708,7 @@ function merge(target, source, options) {
|
||||
* @param {Object} [result={}] - result so far
|
||||
* @return {Object} result - final aggregated result
|
||||
*/
|
||||
function getComponentOption(options, component, result) {
|
||||
function getComponentOption (options, component, result) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( result === void 0 ) result = {};
|
||||
|
||||
@@ -778,7 +778,7 @@ function getComponentOption(options, component, result) {
|
||||
* @param {Object} component - the Vue instance to get meta info from
|
||||
* @return {Object} - returned meta info
|
||||
*/
|
||||
function getMetaInfo(options, component, escapeSequences) {
|
||||
function getMetaInfo (options, component, escapeSequences) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( escapeSequences === void 0 ) escapeSequences = [];
|
||||
|
||||
@@ -836,7 +836,7 @@ function getMetaInfo(options, component, escapeSequences) {
|
||||
* @param {Object} attrs - the new document html attributes
|
||||
* @param {HTMLElement} tag - the HTMLElement tag to update with new attrs
|
||||
*/
|
||||
function updateAttribute(ref, attrs, tag) {
|
||||
function updateAttribute (ref, attrs, tag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
@@ -881,7 +881,7 @@ function updateAttribute(ref, attrs, tag) {
|
||||
*
|
||||
* @param {String} title - the new title of the document
|
||||
*/
|
||||
function updateTitle(title) {
|
||||
function updateTitle (title) {
|
||||
if (title === undefined) {
|
||||
return
|
||||
}
|
||||
@@ -897,7 +897,7 @@ function updateTitle(title) {
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - a representation of what tags changed
|
||||
*/
|
||||
function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
function updateTag (appId, ref, type, tags, headTag, bodyTag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
@@ -943,7 +943,13 @@ function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
var _attr = includes(dataAttributes, attr)
|
||||
? ("data-" + attr)
|
||||
: attr;
|
||||
var value = isUndefined(tag[attr]) || includes(booleanHtmlAttributes, attr) ? '' : tag[attr];
|
||||
|
||||
var isBooleanAttribute = includes(booleanHtmlAttributes, attr);
|
||||
if (isBooleanAttribute && !tag[attr]) {
|
||||
continue
|
||||
}
|
||||
|
||||
var value = isBooleanAttribute ? '' : tag[attr];
|
||||
newElement.setAttribute(_attr, value);
|
||||
}
|
||||
}
|
||||
@@ -977,7 +983,7 @@ function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
return { oldTags: oldTags, newTags: newTags }
|
||||
}
|
||||
|
||||
function getTag(tags, tag) {
|
||||
function getTag (tags, tag) {
|
||||
if (!tags[tag]) {
|
||||
tags[tag] = document.getElementsByTagName(tag)[0];
|
||||
}
|
||||
@@ -990,7 +996,7 @@ function getTag(tags, tag) {
|
||||
*
|
||||
* @param {Object} newInfo - the meta info to update to
|
||||
*/
|
||||
function updateClientMetaInfo(appId, options, newInfo) {
|
||||
function updateClientMetaInfo (appId, options, newInfo) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var ssrAttribute = options.ssrAttribute;
|
||||
@@ -1054,7 +1060,7 @@ function updateClientMetaInfo(appId, options, newInfo) {
|
||||
return { addedTags: addedTags, removedTags: removedTags }
|
||||
}
|
||||
|
||||
function _refresh(options) {
|
||||
function _refresh (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
/**
|
||||
@@ -1067,7 +1073,7 @@ function _refresh(options) {
|
||||
*
|
||||
* @return {Object} - new meta info
|
||||
*/
|
||||
return function refresh() {
|
||||
return function refresh () {
|
||||
var metaInfo = getMetaInfo(options, this.$root, clientSequences);
|
||||
|
||||
var appId = this.$root._vueMeta.appId;
|
||||
@@ -1088,12 +1094,12 @@ function _refresh(options) {
|
||||
* @param {Object} data - the attributes to generate
|
||||
* @return {Object} - the attribute generator
|
||||
*/
|
||||
function attributeGenerator(ref, type, data) {
|
||||
function attributeGenerator (ref, type, data) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
return {
|
||||
text: function text() {
|
||||
text: function text () {
|
||||
var attributeStr = '';
|
||||
var watchedAttrs = [];
|
||||
|
||||
@@ -1122,12 +1128,12 @@ function attributeGenerator(ref, type, data) {
|
||||
* @param {String} data - the title text
|
||||
* @return {Object} - the title generator
|
||||
*/
|
||||
function titleGenerator(appId, ref, type, data) {
|
||||
function titleGenerator (appId, ref, type, data) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
return {
|
||||
text: function text() {
|
||||
text: function text () {
|
||||
return ("<" + type + ">" + data + "</" + type + ">")
|
||||
}
|
||||
}
|
||||
@@ -1140,13 +1146,13 @@ function titleGenerator(appId, ref, type, data) {
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - the tag generator
|
||||
*/
|
||||
function tagGenerator(appId, ref, type, tags) {
|
||||
function tagGenerator (appId, ref, type, tags) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
|
||||
return {
|
||||
text: function text(ref) {
|
||||
text: function text (ref) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var body = ref.body; if ( body === void 0 ) body = false;
|
||||
|
||||
@@ -1175,7 +1181,12 @@ function tagGenerator(appId, ref, type, tags) {
|
||||
prefix = 'data-';
|
||||
}
|
||||
|
||||
return isUndefined(tag[attr]) || booleanHtmlAttributes.includes(attr)
|
||||
var isBooleanAttr = booleanHtmlAttributes.includes(attr);
|
||||
if (isBooleanAttr && !tag[attr]) {
|
||||
return attrsStr
|
||||
}
|
||||
|
||||
return isBooleanAttr
|
||||
? (attrsStr + " " + prefix + attr)
|
||||
: (attrsStr + " " + prefix + attr + "=\"" + (tag[attr]) + "\"")
|
||||
}, '');
|
||||
@@ -1211,7 +1222,7 @@ function tagGenerator(appId, ref, type, tags) {
|
||||
* @return {Object} - the new injector
|
||||
*/
|
||||
|
||||
function generateServerInjector(appId, options, type, data) {
|
||||
function generateServerInjector (appId, options, type, data) {
|
||||
if (type === 'title') {
|
||||
return titleGenerator(appId, options, type, data)
|
||||
}
|
||||
@@ -1223,7 +1234,7 @@ function generateServerInjector(appId, options, type, data) {
|
||||
return tagGenerator(appId, options, type, data)
|
||||
}
|
||||
|
||||
function _inject(options) {
|
||||
function _inject (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
/**
|
||||
@@ -1233,7 +1244,7 @@ function _inject(options) {
|
||||
* @this {Object} - Vue instance - ideally the root component
|
||||
* @return {Object} - server meta info with `toString` methods
|
||||
*/
|
||||
return function inject() {
|
||||
return function inject () {
|
||||
// get meta info with sensible defaults
|
||||
var metaInfo = getMetaInfo(options, this.$root, serverSequences);
|
||||
|
||||
@@ -1248,7 +1259,7 @@ function _inject(options) {
|
||||
}
|
||||
}
|
||||
|
||||
function _$meta(options) {
|
||||
function _$meta (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var _refresh$1 = _refresh(options);
|
||||
@@ -1259,7 +1270,7 @@ function _$meta(options) {
|
||||
* @this {Object} - the Vue instance (a root component)
|
||||
* @return {Object} - injector
|
||||
*/
|
||||
return function $meta() {
|
||||
return function $meta () {
|
||||
return {
|
||||
getOptions: function () { return getOptions(options); },
|
||||
refresh: _refresh$1.bind(this),
|
||||
@@ -1274,7 +1285,7 @@ function _$meta(options) {
|
||||
* Plugin install function.
|
||||
* @param {Function} Vue - the Vue constructor.
|
||||
*/
|
||||
function install(Vue, options) {
|
||||
function install (Vue, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
if (Vue.__vuemeta_installed) {
|
||||
|
||||
Vendored
+143
-150
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* vue-meta v2.0.4
|
||||
* vue-meta v2.0.5
|
||||
* (c) 2019
|
||||
* - Declan de Wet
|
||||
* - Sébastien Chopin (@Atinux)
|
||||
@@ -13,12 +13,12 @@
|
||||
(global = global || self, global.VueMeta = factory());
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var version = "2.0.4";
|
||||
var version = "2.0.5";
|
||||
|
||||
// store an id to keep track of DOM updates
|
||||
var batchId = null;
|
||||
|
||||
function triggerUpdate(vm, hookName) {
|
||||
function triggerUpdate (vm, hookName) {
|
||||
// if an update was triggered during initialization or when an update was triggered by the
|
||||
// metaInfo watcher, set initialized to null
|
||||
// then we keep falsy value but know we need to run a triggerUpdate after initialization
|
||||
@@ -39,7 +39,7 @@
|
||||
* @param {Function} callback - the update to perform
|
||||
* @return {Number} id - a new ID
|
||||
*/
|
||||
function batchUpdate(callback, timeout) {
|
||||
function batchUpdate (callback, timeout) {
|
||||
if ( timeout === void 0 ) timeout = 10;
|
||||
|
||||
clearTimeout(batchId);
|
||||
@@ -56,27 +56,27 @@
|
||||
* @param {any} arg - the object to check
|
||||
* @return {Boolean} - true if `arg` is an array
|
||||
*/
|
||||
function isArray(arg) {
|
||||
function isArray (arg) {
|
||||
return Array.isArray(arg)
|
||||
}
|
||||
|
||||
function isUndefined(arg) {
|
||||
function isUndefined (arg) {
|
||||
return typeof arg === 'undefined'
|
||||
}
|
||||
|
||||
function isObject(arg) {
|
||||
function isObject (arg) {
|
||||
return typeof arg === 'object'
|
||||
}
|
||||
|
||||
function isFunction(arg) {
|
||||
function isFunction (arg) {
|
||||
return typeof arg === 'function'
|
||||
}
|
||||
|
||||
function isString(arg) {
|
||||
function isString (arg) {
|
||||
return typeof arg === 'string'
|
||||
}
|
||||
|
||||
function ensureIsArray(arg, key) {
|
||||
function ensureIsArray (arg, key) {
|
||||
if (!key || !isObject(arg)) {
|
||||
return isArray(arg) ? arg : []
|
||||
}
|
||||
@@ -87,27 +87,27 @@
|
||||
return arg
|
||||
}
|
||||
|
||||
function ensuredPush(object, key, el) {
|
||||
function ensuredPush (object, key, el) {
|
||||
ensureIsArray(object, key);
|
||||
|
||||
object[key].push(el);
|
||||
}
|
||||
|
||||
// Vue $root instance has a _vueMeta object property, otherwise its a boolean true
|
||||
function hasMetaInfo(vm) {
|
||||
function hasMetaInfo (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && (vm._vueMeta === true || isObject(vm._vueMeta))
|
||||
}
|
||||
|
||||
// a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has
|
||||
function inMetaInfoBranch(vm) {
|
||||
function inMetaInfoBranch (vm) {
|
||||
if ( vm === void 0 ) vm = this;
|
||||
|
||||
return vm && !isUndefined(vm._vueMeta)
|
||||
}
|
||||
|
||||
function addNavGuards(vm) {
|
||||
function addNavGuards (vm) {
|
||||
// return when nav guards already added or no router exists
|
||||
if (vm.$root._vueMeta.navGuards || !vm.$root.$router) {
|
||||
/* istanbul ignore next */
|
||||
@@ -135,18 +135,18 @@
|
||||
|
||||
var appId = 1;
|
||||
|
||||
function createMixin(Vue, options) {
|
||||
function createMixin (Vue, options) {
|
||||
// for which Vue lifecycle hooks should the metaInfo be refreshed
|
||||
var updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];
|
||||
|
||||
// watch for client side component updates
|
||||
return {
|
||||
beforeCreate: function beforeCreate() {
|
||||
beforeCreate: function beforeCreate () {
|
||||
var this$1 = this;
|
||||
|
||||
Object.defineProperty(this, '_hasMetaInfo', {
|
||||
configurable: true,
|
||||
get: function get() {
|
||||
get: function get () {
|
||||
// Show deprecation warning once when devtools enabled
|
||||
if (Vue.config.devtools && !this.$root._vueMeta.hasMetaInfoDeprecationWarningShown) {
|
||||
console.warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead'); // eslint-disable-line no-console
|
||||
@@ -210,7 +210,7 @@
|
||||
ensuredPush(this.$options, 'beforeMount', function () {
|
||||
// if this Vue-app was server rendered, set the appId to 'ssr'
|
||||
// only one SSR app per page is supported
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
if (this$1.$root.$el && this$1.$root.$el.hasAttribute && this$1.$root.$el.hasAttribute('data-server-rendered')) {
|
||||
this$1.$root._vueMeta.appId = 'ssr';
|
||||
}
|
||||
});
|
||||
@@ -417,7 +417,7 @@
|
||||
// eslint-disable-next-line no-console
|
||||
var showWarningNotSupported = function () { return console.warn('This vue app/component has no vue-meta configuration'); };
|
||||
|
||||
function setOptions(options) {
|
||||
function setOptions (options) {
|
||||
// combine options
|
||||
options = isObject(options) ? options : {};
|
||||
|
||||
@@ -430,7 +430,7 @@
|
||||
return options
|
||||
}
|
||||
|
||||
function getOptions(options) {
|
||||
function getOptions (options) {
|
||||
var optionsCopy = {};
|
||||
for (var key in options) {
|
||||
optionsCopy[key] = options[key];
|
||||
@@ -438,7 +438,7 @@
|
||||
return optionsCopy
|
||||
}
|
||||
|
||||
function pause(refresh) {
|
||||
function pause (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = true;
|
||||
@@ -446,7 +446,7 @@
|
||||
return function () { return resume(refresh); }
|
||||
}
|
||||
|
||||
function resume(refresh) {
|
||||
function resume (refresh) {
|
||||
if ( refresh === void 0 ) refresh = true;
|
||||
|
||||
this.$root._vueMeta.paused = false;
|
||||
@@ -456,7 +456,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
function applyTemplate(ref, headObject, template, chunk) {
|
||||
function applyTemplate (ref, headObject, template, chunk) {
|
||||
var component = ref.component;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
var contentKeyName = ref.contentKeyName;
|
||||
@@ -491,7 +491,7 @@
|
||||
* files in server/ still use normal js function
|
||||
*/
|
||||
|
||||
function findIndex(array, predicate) {
|
||||
function findIndex (array, predicate) {
|
||||
var arguments$1 = arguments;
|
||||
|
||||
if ( !Array.prototype.findIndex) {
|
||||
@@ -506,14 +506,14 @@
|
||||
return array.findIndex(predicate, arguments[2])
|
||||
}
|
||||
|
||||
function toArray(arg) {
|
||||
function toArray (arg) {
|
||||
if ( !Array.from) {
|
||||
return Array.prototype.slice.call(arg)
|
||||
}
|
||||
return Array.from(arg)
|
||||
}
|
||||
|
||||
function includes(array, value) {
|
||||
function includes (array, value) {
|
||||
if ( !Array.prototype.includes) {
|
||||
for (var idx in array) {
|
||||
if (array[idx] === value) {
|
||||
@@ -528,14 +528,14 @@
|
||||
|
||||
var clientSequences = [
|
||||
[/&/g, '\u0026'],
|
||||
[/</g, '\u003c'],
|
||||
[/>/g, '\u003e'],
|
||||
[/</g, '\u003C'],
|
||||
[/>/g, '\u003E'],
|
||||
[/"/g, '\u0022'],
|
||||
[/'/g, '\u0027']
|
||||
];
|
||||
|
||||
// sanitizes potentially dangerous characters
|
||||
function escape(info, options, escapeOptions) {
|
||||
function escape (info, options, escapeOptions) {
|
||||
var tagIDKeyName = options.tagIDKeyName;
|
||||
var doEscape = escapeOptions.doEscape; if ( doEscape === void 0 ) doEscape = function (v) { return v; };
|
||||
var escaped = {};
|
||||
@@ -585,130 +585,117 @@
|
||||
return escaped
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
var isMergeableObject = function isMergeableObject(value) {
|
||||
return isNonNullObject(value)
|
||||
&& !isSpecial(value)
|
||||
};
|
||||
|
||||
function createCommonjsModule(fn, module) {
|
||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
||||
function isNonNullObject(value) {
|
||||
return !!value && typeof value === 'object'
|
||||
}
|
||||
|
||||
var umd = createCommonjsModule(function (module, exports) {
|
||||
(function (global, factory) {
|
||||
module.exports = factory() ;
|
||||
}(commonjsGlobal, function () {
|
||||
var isMergeableObject = function isMergeableObject(value) {
|
||||
return isNonNullObject(value)
|
||||
&& !isSpecial(value)
|
||||
};
|
||||
function isSpecial(value) {
|
||||
var stringValue = Object.prototype.toString.call(value);
|
||||
|
||||
function isNonNullObject(value) {
|
||||
return !!value && typeof value === 'object'
|
||||
return stringValue === '[object RegExp]'
|
||||
|| stringValue === '[object Date]'
|
||||
|| isReactElement(value)
|
||||
}
|
||||
|
||||
// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
|
||||
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
|
||||
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
|
||||
|
||||
function isReactElement(value) {
|
||||
return value.$$typeof === REACT_ELEMENT_TYPE
|
||||
}
|
||||
|
||||
function emptyTarget(val) {
|
||||
return Array.isArray(val) ? [] : {}
|
||||
}
|
||||
|
||||
function cloneUnlessOtherwiseSpecified(value, options) {
|
||||
return (options.clone !== false && options.isMergeableObject(value))
|
||||
? deepmerge(emptyTarget(value), value, options)
|
||||
: value
|
||||
}
|
||||
|
||||
function defaultArrayMerge(target, source, options) {
|
||||
return target.concat(source).map(function(element) {
|
||||
return cloneUnlessOtherwiseSpecified(element, options)
|
||||
})
|
||||
}
|
||||
|
||||
function getMergeFunction(key, options) {
|
||||
if (!options.customMerge) {
|
||||
return deepmerge
|
||||
}
|
||||
var customMerge = options.customMerge(key);
|
||||
return typeof customMerge === 'function' ? customMerge : deepmerge
|
||||
}
|
||||
|
||||
function isSpecial(value) {
|
||||
var stringValue = Object.prototype.toString.call(value);
|
||||
|
||||
return stringValue === '[object RegExp]'
|
||||
|| stringValue === '[object Date]'
|
||||
|| isReactElement(value)
|
||||
}
|
||||
|
||||
// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
|
||||
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
|
||||
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
|
||||
|
||||
function isReactElement(value) {
|
||||
return value.$$typeof === REACT_ELEMENT_TYPE
|
||||
}
|
||||
|
||||
function emptyTarget(val) {
|
||||
return Array.isArray(val) ? [] : {}
|
||||
}
|
||||
|
||||
function cloneUnlessOtherwiseSpecified(value, options) {
|
||||
return (options.clone !== false && options.isMergeableObject(value))
|
||||
? deepmerge(emptyTarget(value), value, options)
|
||||
: value
|
||||
}
|
||||
|
||||
function defaultArrayMerge(target, source, options) {
|
||||
return target.concat(source).map(function(element) {
|
||||
return cloneUnlessOtherwiseSpecified(element, options)
|
||||
function getEnumerableOwnPropertySymbols(target) {
|
||||
return Object.getOwnPropertySymbols
|
||||
? Object.getOwnPropertySymbols(target).filter(function(symbol) {
|
||||
return target.propertyIsEnumerable(symbol)
|
||||
})
|
||||
}
|
||||
: []
|
||||
}
|
||||
|
||||
function getMergeFunction(key, options) {
|
||||
if (!options.customMerge) {
|
||||
return deepmerge
|
||||
}
|
||||
var customMerge = options.customMerge(key);
|
||||
return typeof customMerge === 'function' ? customMerge : deepmerge
|
||||
}
|
||||
function getKeys(target) {
|
||||
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
|
||||
}
|
||||
|
||||
function getEnumerableOwnPropertySymbols(target) {
|
||||
return Object.getOwnPropertySymbols
|
||||
? Object.getOwnPropertySymbols(target).filter(function(symbol) {
|
||||
return target.propertyIsEnumerable(symbol)
|
||||
})
|
||||
: []
|
||||
}
|
||||
|
||||
function getKeys(target) {
|
||||
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
|
||||
}
|
||||
|
||||
function mergeObject(target, source, options) {
|
||||
var destination = {};
|
||||
if (options.isMergeableObject(target)) {
|
||||
getKeys(target).forEach(function(key) {
|
||||
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
|
||||
});
|
||||
}
|
||||
getKeys(source).forEach(function(key) {
|
||||
if (!options.isMergeableObject(source[key]) || !target[key]) {
|
||||
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
|
||||
} else {
|
||||
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
||||
}
|
||||
function mergeObject(target, source, options) {
|
||||
var destination = {};
|
||||
if (options.isMergeableObject(target)) {
|
||||
getKeys(target).forEach(function(key) {
|
||||
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
|
||||
});
|
||||
return destination
|
||||
}
|
||||
|
||||
function deepmerge(target, source, options) {
|
||||
options = options || {};
|
||||
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
|
||||
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
|
||||
|
||||
var sourceIsArray = Array.isArray(source);
|
||||
var targetIsArray = Array.isArray(target);
|
||||
var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
||||
|
||||
if (!sourceAndTargetTypesMatch) {
|
||||
return cloneUnlessOtherwiseSpecified(source, options)
|
||||
} else if (sourceIsArray) {
|
||||
return options.arrayMerge(target, source, options)
|
||||
getKeys(source).forEach(function(key) {
|
||||
if (!options.isMergeableObject(source[key]) || !target[key]) {
|
||||
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
|
||||
} else {
|
||||
return mergeObject(target, source, options)
|
||||
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
||||
}
|
||||
});
|
||||
return destination
|
||||
}
|
||||
|
||||
function deepmerge(target, source, options) {
|
||||
options = options || {};
|
||||
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
|
||||
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
|
||||
|
||||
var sourceIsArray = Array.isArray(source);
|
||||
var targetIsArray = Array.isArray(target);
|
||||
var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
||||
|
||||
if (!sourceAndTargetTypesMatch) {
|
||||
return cloneUnlessOtherwiseSpecified(source, options)
|
||||
} else if (sourceIsArray) {
|
||||
return options.arrayMerge(target, source, options)
|
||||
} else {
|
||||
return mergeObject(target, source, options)
|
||||
}
|
||||
}
|
||||
|
||||
deepmerge.all = function deepmergeAll(array, options) {
|
||||
if (!Array.isArray(array)) {
|
||||
throw new Error('first argument should be an array')
|
||||
}
|
||||
|
||||
deepmerge.all = function deepmergeAll(array, options) {
|
||||
if (!Array.isArray(array)) {
|
||||
throw new Error('first argument should be an array')
|
||||
}
|
||||
return array.reduce(function(prev, next) {
|
||||
return deepmerge(prev, next, options)
|
||||
}, {})
|
||||
};
|
||||
|
||||
return array.reduce(function(prev, next) {
|
||||
return deepmerge(prev, next, options)
|
||||
}, {})
|
||||
};
|
||||
var deepmerge_1 = deepmerge;
|
||||
|
||||
var deepmerge_1 = deepmerge;
|
||||
var cjs = deepmerge_1;
|
||||
|
||||
return deepmerge_1;
|
||||
|
||||
}));
|
||||
});
|
||||
|
||||
function arrayMerge(ref, target, source) {
|
||||
function arrayMerge (ref, target, source) {
|
||||
var component = ref.component;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
var metaTemplateKeyName = ref.metaTemplateKeyName;
|
||||
@@ -775,7 +762,7 @@
|
||||
return destination.concat(source)
|
||||
}
|
||||
|
||||
function merge(target, source, options) {
|
||||
function merge (target, source, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
// remove properties explicitly set to false so child components can
|
||||
@@ -801,7 +788,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
return umd(target, source, {
|
||||
return cjs(target, source, {
|
||||
arrayMerge: function (t, s) { return arrayMerge(options, t, s); }
|
||||
})
|
||||
}
|
||||
@@ -820,7 +807,7 @@
|
||||
* @param {Object} [result={}] - result so far
|
||||
* @return {Object} result - final aggregated result
|
||||
*/
|
||||
function getComponentOption(options, component, result) {
|
||||
function getComponentOption (options, component, result) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( result === void 0 ) result = {};
|
||||
|
||||
@@ -890,7 +877,7 @@
|
||||
* @param {Object} component - the Vue instance to get meta info from
|
||||
* @return {Object} - returned meta info
|
||||
*/
|
||||
function getMetaInfo(options, component, escapeSequences) {
|
||||
function getMetaInfo (options, component, escapeSequences) {
|
||||
if ( options === void 0 ) options = {};
|
||||
if ( escapeSequences === void 0 ) escapeSequences = [];
|
||||
|
||||
@@ -948,7 +935,7 @@
|
||||
* @param {Object} attrs - the new document html attributes
|
||||
* @param {HTMLElement} tag - the HTMLElement tag to update with new attrs
|
||||
*/
|
||||
function updateAttribute(ref, attrs, tag) {
|
||||
function updateAttribute (ref, attrs, tag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
|
||||
@@ -993,7 +980,7 @@
|
||||
*
|
||||
* @param {String} title - the new title of the document
|
||||
*/
|
||||
function updateTitle(title) {
|
||||
function updateTitle (title) {
|
||||
if (title === undefined) {
|
||||
return
|
||||
}
|
||||
@@ -1009,7 +996,7 @@
|
||||
* @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base
|
||||
* @return {Object} - a representation of what tags changed
|
||||
*/
|
||||
function updateTag(appId, ref, type, tags, headTag, bodyTag) {
|
||||
function updateTag (appId, ref, type, tags, headTag, bodyTag) {
|
||||
if ( ref === void 0 ) ref = {};
|
||||
var attribute = ref.attribute;
|
||||
var tagIDKeyName = ref.tagIDKeyName;
|
||||
@@ -1055,7 +1042,13 @@
|
||||
var _attr = includes(dataAttributes, attr)
|
||||
? ("data-" + attr)
|
||||
: attr;
|
||||
var value = isUndefined(tag[attr]) || includes(booleanHtmlAttributes, attr) ? '' : tag[attr];
|
||||
|
||||
var isBooleanAttribute = includes(booleanHtmlAttributes, attr);
|
||||
if (isBooleanAttribute && !tag[attr]) {
|
||||
continue
|
||||
}
|
||||
|
||||
var value = isBooleanAttribute ? '' : tag[attr];
|
||||
newElement.setAttribute(_attr, value);
|
||||
}
|
||||
}
|
||||
@@ -1089,7 +1082,7 @@
|
||||
return { oldTags: oldTags, newTags: newTags }
|
||||
}
|
||||
|
||||
function getTag(tags, tag) {
|
||||
function getTag (tags, tag) {
|
||||
if (!tags[tag]) {
|
||||
tags[tag] = document.getElementsByTagName(tag)[0];
|
||||
}
|
||||
@@ -1102,7 +1095,7 @@
|
||||
*
|
||||
* @param {Object} newInfo - the meta info to update to
|
||||
*/
|
||||
function updateClientMetaInfo(appId, options, newInfo) {
|
||||
function updateClientMetaInfo (appId, options, newInfo) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var ssrAttribute = options.ssrAttribute;
|
||||
@@ -1166,7 +1159,7 @@
|
||||
return { addedTags: addedTags, removedTags: removedTags }
|
||||
}
|
||||
|
||||
function _refresh(options) {
|
||||
function _refresh (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
/**
|
||||
@@ -1179,7 +1172,7 @@
|
||||
*
|
||||
* @return {Object} - new meta info
|
||||
*/
|
||||
return function refresh() {
|
||||
return function refresh () {
|
||||
var metaInfo = getMetaInfo(options, this.$root, clientSequences);
|
||||
|
||||
var appId = this.$root._vueMeta.appId;
|
||||
@@ -1193,7 +1186,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
function _$meta(options) {
|
||||
function _$meta (options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
var _refresh$1 = _refresh(options);
|
||||
@@ -1204,7 +1197,7 @@
|
||||
* @this {Object} - the Vue instance (a root component)
|
||||
* @return {Object} - injector
|
||||
*/
|
||||
return function $meta() {
|
||||
return function $meta () {
|
||||
if (!this.$root._vueMeta) {
|
||||
return {
|
||||
getOptions: showWarningNotSupported,
|
||||
@@ -1229,7 +1222,7 @@
|
||||
* Plugin install function.
|
||||
* @param {Function} Vue - the Vue constructor.
|
||||
*/
|
||||
function install(Vue, options) {
|
||||
function install (Vue, options) {
|
||||
if ( options === void 0 ) options = {};
|
||||
|
||||
if (Vue.__vuemeta_installed) {
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vue-meta",
|
||||
"version": "2.0.4",
|
||||
"version": "2.0.5",
|
||||
"description": "Manage HTML metadata in Vue.js components with ssr support",
|
||||
"keywords": [
|
||||
"attribute",
|
||||
|
||||
Reference in New Issue
Block a user