UNPKG

@ambitiondev/nuxt-cookiebot

Version:

Implementation for Cookiebot in Nuxt applications

46 lines (45 loc) 1.29 kB
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(); }); } }); } });