47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const useHead = require('./shared/vue.BmMjB48i.cjs');
|
|
const injectHead = require('./shared/vue.DWlmwWrc.cjs');
|
|
require('vue');
|
|
require('unhead');
|
|
require('@unhead/shared');
|
|
|
|
const UnheadPlugin = (_Vue) => {
|
|
_Vue.config.optionMergeStrategies.head = function(toVal, fromVal) {
|
|
return [toVal, fromVal].flat().filter(Boolean);
|
|
};
|
|
_Vue.mixin({
|
|
created() {
|
|
const head = this.$options.head;
|
|
if (head) {
|
|
if (Array.isArray(head)) {
|
|
head.forEach((h) => {
|
|
useHead.useHead(typeof h === "function" ? h.call(this) : h);
|
|
});
|
|
} else {
|
|
useHead.useHead(typeof head === "function" ? head.call(this) : head);
|
|
}
|
|
}
|
|
},
|
|
beforeCreate() {
|
|
const options = this.$options;
|
|
if (options.unhead) {
|
|
const origProvide = options.provide;
|
|
options.provide = function() {
|
|
let origProvideResult;
|
|
if (typeof origProvide === "function")
|
|
origProvideResult = origProvide.call(this);
|
|
else
|
|
origProvideResult = origProvide || {};
|
|
return {
|
|
...origProvideResult,
|
|
[injectHead.headSymbol]: options.unhead
|
|
};
|
|
};
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.UnheadPlugin = UnheadPlugin;
|