import type { FC } from 'react' import * as React from 'react' import { IS_CE_EDITION, IS_PROD } from '@/config' import { headers } from '@/next/headers' import Script from '@/next/script' export enum GaType { admin = 'admin', webapp = 'webapp', } const GA_MEASUREMENT_ID_ADMIN = 'G-DM9497FN4V' const GA_MEASUREMENT_ID_WEBAPP = 'G-2MFWXK7WYT' const COOKIEYES_SCRIPT_SRC = 'https://cdn-cookieyes.com/client_data/2a645945fcae53f8e025a2b1/script.js' const gaIdMaps = { [GaType.admin]: GA_MEASUREMENT_ID_ADMIN, [GaType.webapp]: GA_MEASUREMENT_ID_WEBAPP, } type IGAProps = { gaType: GaType } const extractNonceFromCSP = (cspHeader: string | null): string | undefined => { if (!cspHeader) return undefined const nonceMatch = /'nonce-([^']+)'/.exec(cspHeader) return nonceMatch ? nonceMatch[1] : undefined } const GA: FC = async ({ gaType, }) => { if (IS_CE_EDITION) return null const cspHeader = IS_PROD ? (await headers()).get('content-security-policy') : null const nonce = extractNonceFromCSP(cspHeader) return ( <> {/* Initialize dataLayer first */}