mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-06-22 14:10:34 +03:00
11 lines
13 KiB
JavaScript
11 lines
13 KiB
JavaScript
/**
|
|
* vue-meta v2.3.2
|
|
* (c) 2020
|
|
* - Declan de Wet
|
|
* - Sébastien Chopin (@Atinux)
|
|
* - Pim (@pimlie)
|
|
* - All the amazing contributors
|
|
* @license MIT
|
|
*/
|
|
import n from"deepmerge";function e(n){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function t(n){return Array.isArray(n)}function r(n){return void 0===n}function i(n){return"object"===e(n)}function o(n){return"object"===e(n)&&null!==n}function a(n){return"function"==typeof n}var u=(function(){try{return!r(window)}catch(n){return!1}}()?window:global).console||{};function f(n){u&&u.warn&&u.warn(n)}var c=function(n){return f("".concat(n," is not supported in browser builds"))},s={title:void 0,titleChunk:"",titleTemplate:"%s",htmlAttrs:{},bodyAttrs:{},headAttrs:{},base:[],link:[],meta:[],style:[],script:[],noscript:[],__dangerouslyDisableSanitizers:[],__dangerouslyDisableSanitizersByTagID:{}},d="metaInfo",l="data-vue-meta",v="data-vue-meta-server-rendered",m="vmid",p="content",y="template",h=!0,b=10,g="ssr",I=Object.keys(s),A=[I[12],I[13]],N=[I[1],I[2],"changed"].concat(A),T=[I[3],I[4],I[5]],w=["link","style","script"],O=["once","template"],M=["body","pbody"],S=["allowfullscreen","amp","async","autofocus","autoplay","checked","compact","controls","declare","default","defaultchecked","defaultmuted","defaultselected","defer","disabled","enabled","formnovalidate","hidden","indeterminate","inert","ismap","itemscope","loop","multiple","muted","nohref","noresize","noshade","novalidate","nowrap","open","pauseonexit","readonly","required","reversed","scoped","seamless","selected","sortable","truespeed","typemustmatch","visible"],j=null;function K(n,e,t){var r=n.t;e._vueMeta.i||!e._vueMeta.o&&"watcher"!==t||(e._vueMeta.i=null),e._vueMeta.i&&!e._vueMeta.u&&function(n,e){if(!(e=void 0===e?10:e))return void n();clearTimeout(j),j=setTimeout((function(){n()}),e)}((function(){e.$meta().refresh()}),r)}function _(n,e,t){if(!Array.prototype.findIndex){for(var r=0;r<n.length;r++)if(e.call(t,n[r],r,n))return r;return-1}return n.findIndex(e,t)}function D(n){return Array.from?Array.from(n):Array.prototype.slice.call(n)}function k(n,e){if(!Array.prototype.includes){for(var t in n)if(n[t]===e)return!0;return!1}return n.includes(e)}function x(n,e){return e&&i(n)?(t(n[e])||(n[e]=[]),n):t(n)?n:[]}function V(n,e,t){x(n,e),n[e].push(t)}function z(n){return(n=n||this)&&(!0===n._vueMeta||i(n._vueMeta))}function B(n,e){return n._vueMeta.u=!0,function(){return J(n,e)}}function J(n,e){if(n._vueMeta.u=!1,e||void 0===e)return n.$meta().refresh()}function W(n){var e=n.$router;!n._vueMeta.s&&e&&(n._vueMeta.s=!0,e.beforeEach((function(e,t,r){B(n),r()})),e.afterEach((function(){n.$nextTick((function(){var e=J(n).metaInfo;e&&a(e.afterNavigation)&&e.afterNavigation(e)}))})))}var C=1;function H(n,e){var t=["activated","deactivated","beforeMount"];return{beforeCreate:function(){var i=this.$root,o=this.$options,u=n.config.devtools;if(Object.defineProperty(this,"_hasMetaInfo",{configurable:!0,get:function(){return u&&!i._vueMeta.l&&(f("VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead"),i._vueMeta.l=!0),z(this)}}),!r(o[e.v])&&null!==o[e.v]){if(i._vueMeta||(i._vueMeta={m:C},C++,u&&i.$options[e.v]&&this.$nextTick((function(){var n=function(n,e,t){if(Array.prototype.find)return n.find(e,t);for(var r=0;r<n.length;r++)if(e.call(t,n[r],r,n))return n[r]}(i.$children,(function(n){return n.$vnode&&n.$vnode.fnOptions}));n&&n.$vnode.fnOptions[e.v]&&f("VueMeta has detected a possible global mixin which adds a ".concat(e.v," property to all Vue components on the page. This could cause severe performance issues. If possible, use $meta().addApp to add meta information instead"))}))),!this._vueMeta){this._vueMeta=!0;for(var c=this.$parent;c&&c!==i;)r(c._vueMeta)&&(c._vueMeta=!1),c=c.$parent}a(o[e.v])&&(o.computed=o.computed||{},o.computed.$metaInfo=o[e.v],this.$isServer||V(o,"created",(function(){this.$watch("$metaInfo",(function(){K(e,this.$root,"watcher")}))}))),r(i._vueMeta.i)&&(i._vueMeta.i=this.$isServer,i._vueMeta.i||(i._vueMeta.initializedSsr||(i._vueMeta.initializedSsr=!0,V(o,"beforeMount",(function(){this.$el&&1===this.$el.nodeType&&this.$el.hasAttribute("data-server-rendered")&&(this._vueMeta.m=e.p)}))),V(o,"mounted",(function(){var n=this.$root;n._vueMeta.i||(n._vueMeta.o=!0,this.$nextTick((function(){var t=n.$meta().refresh(),r=t.tags,i=t.metaInfo;!1===r&&null===n._vueMeta.i&&this.$nextTick((function(){return K(e,n,"init")})),n._vueMeta.i=!0,delete n._vueMeta.o,!e.h&&i.afterNavigation&&W(n)})))})),e.h&&W(i))),this.$isServer||t.forEach((function(n){V(o,n,(function(){K(e,this.$root,n)}))}))}},destroyed:function(){var n=this;this.$parent&&z(this)&&(delete this._hasMetaInfo,this.$nextTick((function(){if(e.g&&n.$el&&n.$el.offsetParent)var t=setInterval((function(){n.$el&&null!==n.$el.offsetParent||(clearInterval(t),K(e,n.$root,"destroyed"))}),50);else K(e,n.$root,"destroyed")})))}}}var L=[[/&/g,"&"],[/</g,"<"],[/>/g,">"],[/"/g,'"'],[/'/g,"'"]];function P(n,e,r){r=r||[];var i={A:function(n){return r.reduce((function(n,e){return n.replace(e[0],e[1])}),n)}};return A.forEach((function(n,t){if(0===t)x(e,n);else if(1===t)for(var r in e[n])x(e[n],r);i[n]=e[n]})),function n(e,r,i,a){var u=r.j,f=i.A,c=void 0===f?function(n){return n}:f,s={};for(var d in e){var l=e[d];if(k(N,d))s[d]=l;else{var v=A[0];if(i[v]&&k(i[v],d))s[d]=l;else{var m=e[u];if(m&&(v=A[1],i[v]&&i[v][m]&&k(i[v][m],d)))s[d]=l;else if("string"==typeof l?s[d]=c(l):t(l)?s[d]=l.map((function(e){return o(e)?n(e,r,i,!0):c(e)})):o(l)?s[d]=n(l,r,i,!0):s[d]=l,a){var p=c(d);d!==p&&(s[p]=s[d],delete s[d])}}}}return s}(e,n,i)}function R(n,e,t,i){var o=n.component,u=n.N,f=n.T;return!0!==t&&!0!==e[u]&&(r(t)&&e[u]&&(t=e[u],e[u]=!0),t?(r(i)&&(i=e[f]),e[f]=a(t)?t.call(o,i):t.replace(/%s/g,i),!0):(delete e[u],!1))}var $=!1;function q(e,t,r){return r=r||{},void 0===t.title&&delete t.title,T.forEach((function(n){if(t[n])for(var e in t[n])e in t[n]&&void 0===t[n][e]&&(k(S,e)&&!$&&(f("VueMeta: Please note that since v2 the value undefined is not used to indicate boolean attributes anymore, see migration guide for details"),$=!0),delete t[n][e])})),n(e,t,{O:function(n,e){return function(n,e,t){var r=n.component,i=n.j,o=n.N,a=n.T,u=[];return e.length||t.length?(e.forEach((function(n,e){if(n[i]){var f=_(t,(function(e){return e[i]===n[i]})),c=t[f];if(-1!==f){if(a in c&&void 0===c[a]||"innerHTML"in c&&void 0===c.innerHTML)return u.push(n),void t.splice(f,1);if(null!==c[a]&&null!==c.innerHTML){var s=n[o];if(s){if(!c[o])return R({component:r,N:o,T:a},c,s),void(c.template=!0);c[a]||R({component:r,N:o,T:a},c,void 0,n[a])}}else t.splice(f,1)}else u.push(n)}else u.push(n)})),u.concat(t)):u}(r,n,e)}})}function E(n,e){return function n(e,t,o){if(o=o||{},t._inactive)return o;var a=(e=e||{}).v,u=t.$metaInfo,f=t.$options,c=t.$children;if(f[a]){var s=u||f[a];i(s)&&(o=q(o,s,e))}c.length&&c.forEach((function(t){(function(n){return(n=n||this)&&!r(n._vueMeta)})(t)&&(o=n(e,t,o))}));return o}(n||{},e,s)}var U=function(n,e){return(e||document).querySelectorAll(n)};function F(n,e){return n[e]||(n[e]=document.getElementsByTagName(e)[0]),n[e]}function G(n,e,t){var r=e.m,i=e.M,o=e.type,a=e.j;t=t||{};var u=["".concat(o,"[").concat(i,'="').concat(r,'"]'),"".concat(o,"[data-").concat(a,"]")].map((function(n){for(var e in t){var r=t[e],i=r&&!0!==r?'="'.concat(r,'"'):"";n+="[data-".concat(e).concat(i,"]")}return n}));return D(U(u.join(", "),n))}function Q(n,e){n.removeAttribute(e)}var X=[];function Y(n,e,t,r){var i=n.j,o=!1;return t.forEach((function(n){n[i]&&n.callback&&(o=!0,function(n,e){1===arguments.length&&(e=n,n=""),X.push([n,e])}("".concat(e,"[data-").concat(i,'="').concat(n[i],'"]'),n.callback))})),r&&o?Z():o}function Z(){var n;"complete"!==(n||document).readyState?document.onreadystatechange=function(){nn()}:nn()}function nn(n){X.forEach((function(e){var t=e[0],r=e[1],i="".concat(t,'[onload="this.__vm_l=1"]'),o=[];n||(o=D(U(i))),n&&n.matches(i)&&(o=[n]),o.forEach((function(n){if(!n.__vm_cb){var e=function(){n.__vm_cb=!0,Q(n,"onload"),r(n)};n.__vm_l?e():n.__vm_ev||(n.__vm_ev=!0,n.addEventListener("load",e))}}))}))}var en,tn={};function rn(n,e,t,r,i){var o=(e||{}).M,a=i.getAttribute(o);a&&(tn[t]=JSON.parse(decodeURI(a)),Q(i,o));var u=tn[t]||{},f=[];for(var c in u)u[c]&&n in u[c]&&(f.push(c),r[c]||delete u[c][n]);for(var s in r){var d=u[s];d&&d[n]===r[s]||(f.push(s),r[s]&&(u[s]=u[s]||{},u[s][n]=r[s]))}for(var l=0,v=f;l<v.length;l++){var m=v[l],p=u[m],y=[];for(var h in p)Array.prototype.push.apply(y,[].concat(p[h]));if(y.length){var b=k(S,m)&&y.some(Boolean)?"":y.filter(Boolean).join(" ");i.setAttribute(m,b)}else Q(i,m)}tn[t]=u}function on(n,e,t,r,i,o){var a=e||{},u=a.M,f=a.j,c=M.slice();c.push(f);var s=[],d={m:n,M:u,type:t,j:f},l={head:G(i,d),pbody:G(o,d,{pbody:!0}),body:G(o,d,{body:!0})};if(r.length>1){var v=[];r=r.filter((function(n){var e=JSON.stringify(n),t=!k(v,e);return v.push(e),t}))}r.forEach((function(e){if(!e.skip){var r=document.createElement(t);r.setAttribute(u,n),Object.keys(e).forEach((function(n){if(!k(O,n))if("innerHTML"!==n)if("json"!==n)if("cssText"!==n)if("callback"!==n){var t=k(c,n)?"data-".concat(n):n,i=k(S,n);if(!i||e[n]){var o=i?"":e[n];r.setAttribute(t,o)}}else r.onload=function(){return e[n](r)};else r.styleSheet?r.styleSheet.cssText=e.cssText:r.appendChild(document.createTextNode(e.cssText));else r.innerHTML=JSON.stringify(e.json);else r.innerHTML=e.innerHTML}));var i,o=l[function(n){var e=n.body,t=n.pbody;return e?"body":t?"pbody":"head"}(e)];o.some((function(n,e){return i=e,r.isEqualNode(n)}))&&(i||0===i)?o.splice(i,1):s.push(r)}}));var m=[];for(var p in l)Array.prototype.push.apply(m,l[p]);return m.forEach((function(n){n.parentNode.removeChild(n)})),s.forEach((function(n){n.hasAttribute("data-body")?o.appendChild(n):n.hasAttribute("data-pbody")?o.insertBefore(n,o.firstChild):i.appendChild(n)})),{oldTags:m,newTags:s}}function an(n,e,r){var i=e=e||{},o=i.S,a=i.p,u={},f=F(u,"html");if(n===a&&f.hasAttribute(o)){Q(f,o);var c=!1;return w.forEach((function(n){r[n]&&Y(e,n,r[n])&&(c=!0)})),c&&Z(),!1}var s,d={},l={};for(var v in r)if(!k(N,v))if("title"!==v){if(k(T,v)){var m=v.substr(0,4);rn(n,e,v,r[v],F(u,m))}else if(t(r[v])){var p=on(n,e,v,r[v],F(u,"head"),F(u,"body")),y=p.oldTags,h=p.newTags;h.length&&(d[v]=h,l[v]=y)}}else((s=r.title)||""===s)&&(document.title=s);return{D:d,K:l}}function un(n,e,t){return{set:function(r){return function(n,e,t,r){if(n&&n.$el)return an(e,t,r);(en=en||{})[e]=r}(n,e,t,r)},remove:function(){return function(n,e,t){if(n&&n.$el){var r={},i=!0,o=!1,a=void 0;try{for(var u,f=T[Symbol.iterator]();!(i=(u=f.next()).done);i=!0){var c=u.value,s=c.substr(0,4);rn(e,t,c,{},F(r,s))}}catch(n){o=!0,a=n}finally{try{i||null==f.return||f.return()}finally{if(o)throw a}}return function(n,e){var t=n.M;D(U("[".concat(t,'="').concat(e,'"]'))).map((function(n){return n.remove()}))}(t,e)}en[e]&&(delete en[e],cn())}(n,e,t)}}}function fn(){return en}function cn(n){!n&&Object.keys(en).length||(en=void 0)}function sn(n,e){if(e=e||{},!n._vueMeta)return f("This vue app/component has no vue-meta configuration"),{};var t=function(n,e,t,r){t=t||[];var i=(n=n||{}).j;return e.title&&(e.titleChunk=e.title),e.titleTemplate&&"%s"!==e.titleTemplate&&R({component:r,T:"title"},e,e.titleTemplate,e.titleChunk||""),e.base&&(e.base=Object.keys(e.base).length?[e.base]:[]),e.meta&&(e.meta=e.meta.filter((function(n,e,t){return!n[i]||e===_(t,(function(e){return e[i]===n[i]}))})),e.meta.forEach((function(e){return R(n,e)}))),P(n,e,t)}(e,E(e,n),L,n),r=an(n._vueMeta.m,e,t);r&&a(t.changed)&&(t.changed(t,r.D,r.K),r={addedTags:r.D,removedTags:r.K});var i=fn();if(i){for(var o in i)an(o,e,i[o]),delete i[o];cn(!0)}return{vm:n,metaInfo:t,tags:r}}function dn(n){n=n||{};var e=this.$root;return{getOptions:function(){return function(n){var e={};for(var t in n)e[t]=n[t];return e}(n)},setOptions:function(t){t&&t.h&&(n.h=!!t.h,W(e));if(t&&"debounceWait"in t){var r=parseInt(t.t);isNaN(r)||(n.t=r)}t&&"waitOnDestroyed"in t&&(n.g=!!t.g)},refresh:function(){return sn(e,n)},inject:function(){return c("inject")},pause:function(){return B(e)},resume:function(){return J(e)},addApp:function(t){return un(e,t,n)}}}var ln={version:"2.3.2",install:function(n,e){n.__vuemeta_installed||(n.__vuemeta_installed=!0,e=function(n){return{v:(n=i(n)?n:{}).keyName||d,M:n.attribute||l,S:n.ssrAttribute||v,j:n.tagIDKeyName||m,T:n.contentKeyName||p,N:n.metaTemplateKeyName||y,t:r(n.debounceWait)?b:n.debounceWait,g:r(n.waitOnDestroyed)?h:n.waitOnDestroyed,p:n.ssrAppId||g,h:!!n.refreshOnceOnNavigation}}(e),n.prototype.$meta=function(){return dn.call(this,e)},n.mixin(H(n,e)))},generate:function(n,e){return c("generate")},hasMetaInfo:z};export default ln;
|