@ambitiondev/nuxt-cookiebot
Version:
Implementation for Cookiebot in Nuxt applications
46 lines (45 loc) • 1.29 kB
JavaScript
import { CB_NAME, consentBannerURL, useLogger } from "@ambitiondev/cookiebot-common";
import { defineNuxtPlugin, useRouter } from "#app";
import { useServerHead } from "#imports";
import * as pluginOptions from "#cookiebot-options";
export default defineNuxtPlugin((nuxt) => {
const defaultLocale = (
// @ts-expect-error - i18n is not typed in this context
"$i18n" in nuxt && "locale" in nuxt.$i18n ? nuxt.$i18n.locale.value : void 0
);
const router = useRouter();
const { error } = useLogger();
const { autoConsentBanner, cookieBotId, culture = defaultLocale, ...rest } = pluginOptions;
if (!cookieBotId?.length) {
return error("No Cookiebot ID given. Aborting...");
}
if (autoConsentBanner) {
useServerHead(
{
script: [
{
id: CB_NAME,
src: consentBannerURL({
cookieBotId,
culture,
...rest
})
}
]
},
{
tagPosition: "head",
tagPriority: "critical"
}
);
}
if (import.meta.client) {
router.afterEach(() => {
if (window instanceof Window && "Cookiebot" in window) {
window.requestAnimationFrame(() => {
window.Cookiebot.runScripts();
});
}
});
}
});