{"version":3,"sources":["/Users/ibnlanre/Desktop/workspace/afex-dapps/apps/cookies/dist/index.cjs","../src/constants/attributes.ts","../src/constants/events.ts","../src/helpers/is-dictionary/index.ts","../src/helpers/is-valid-key/index.ts","../src/helpers/is-object/index.ts","../src/functions/clone-deep/index.ts","../src/functions/deep-merge/index.ts","../src/constants/configuration.ts","../src/functions/create-cookie-configuration/index.ts","../src/functions/create-cookie-styles/index.ts","../src/functions/css/index.ts","../src/hooks/use-cookie-banner.ts","../src/hooks/use-cookie-styles.ts","../src/functions/serialize-cookie-styles/index.ts","../src/functions/firebase/index.ts","../src/hooks/use-unique-user-id/index.ts"],"names":["useEffect","useMemo","useCallback"],"mappings":"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","file":"/Users/ibnlanre/Desktop/workspace/afex-dapps/apps/cookies/dist/index.cjs","sourcesContent":[null,"/**\n * Bind any button or link to the consent manager using the `data-cc` attribute.\n * This allows you to trigger the consent manager from anywhere on your website.\n * The value of the `data-cc` attribute should be one of the predefined values.\n */\nexport const cookieConsentAttributes = {\n  /**\n   * @description\n   * Use this value to accept all cookie categories.\n   *\n   * @example\n   *\n   * ```html\n   * <button type=\"button\" data-cc=\"accept-all\">Accept all categories</button>\n   * <a href=\"#\" data-cc={cookieConsentAttributes.acceptAll}>Accept all categories</a>\n   * ```\n   */\n  acceptAll: \"accept-all\",\n\n  /**\n   * @description\n   * Use this value to accept the current selection inside the preferences modal.\n   *\n   * @example\n   *\n   * ```html\n   * <button type=\"button\" data-cc=\"accept-custom\">Accept selection</button>\n   * <a href=\"#\" data-cc={cookieConsentAttributes.acceptCustom}>Accept selection</a>\n   * ```\n   */\n  acceptCustom: \"accept-custom\",\n\n  /**\n   * @description\n   * Use this value to accept only the necessary cookie categories.\n   *\n   * @example\n   *\n   * ```html\n   * <button type=\"button\" data-cc=\"accept-necessary\">Reject all categories</button>\n   * <a href=\"#\" data-cc={cookieConsentAttributes.acceptNecessary}>Reject all categories</a>\n   * ```\n   */\n  acceptNecessary: \"accept-necessary\",\n\n  /**\n   * @description\n   * Use this value to show the consentModal. If the consent modal does not exist, it will be generated on the fly.\n   *\n   * @example\n   *\n   * ```html\n   * <button type=\"button\" data-cc=\"show-consentModal\">View Consent Modal</button>\n   * <a href=\"#\" data-cc={cookieConsentAttributes.showConsentModal}>View Consent Modal</a>\n   * ```\n   */\n  showConsentModal: \"show-consentModal\",\n\n  /**\n   * @description\n   * Use this value to show the preferencesModal.\n   *\n   * @example\n   *\n   * ```html\n   * <button type=\"button\" data-cc=\"show-preferencesModal\">View Preferences Modal</button>\n   * <a href=\"#\" data-cc={cookieConsentAttributes.showPreferencesModal}>View Preferences Modal</a>\n   * ```\n   */\n  showPreferencesModal: \"show-preferencesModal\",\n};\n","export const cookieConsentEvents = {\n  /**\n   * @description\n   * This event is triggered when the user modifies their preferences and only if consent has already been provided.\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onChange // \"cc:onChange\"\n   * window.addEventListener('cc:onChange', ({ detail }) => {\n   *    // detail.cookie\n   *    // detail.changedCategories\n   *    // detail.changedServices\n   * });\n   * ```\n   */\n  onChange: \"cc:onChange\",\n\n  /**\n   * @description\n   * This event is triggered the very first time the user expresses their choice of consent — just like onFirstConsent — but also on every subsequent page load.\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onConsent // \"cc:onConsent\"\n   * window.addEventListener('cc:onConsent', ({ detail }) => {\n   *    // detail.cookie\n   * });\n   * ```\n   */\n  onConsent: \"cc:onConsent\",\n\n  /**\n   * @description\n   * This event is triggered only the very first time that the user expresses their choice of consent (accept/reject).\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onFirstConsent // \"cc:onFirstConsent\"\n   * window.addEventListener('cc:onFirstConsent', ({ detail }) => {\n   *    // detail.cookie\n   * });\n   * ```\n   */\n  onFirstConsent: \"cc:onFirstConsent\",\n\n  /**\n   * @description\n   * This event is triggered when one of the modals is hidden.\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onModalHide // \"cc:onModalHide\"\n   * window.addEventListener('cc:onModalHide', ({ detail }) => {\n   *    // detail.modalName\n   * });\n   * ```\n   */\n  onModalHide: \"cc:onModalHide\",\n\n  /**\n   * @description\n   * This event is triggered when a modal is created and appended to the DOM.\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onModalReady // \"cc:onModalReady\"\n   * window.addEventListener('cc:onModalReady', ({ detail }) => {\n   *    // detail.modalName\n   *    // detail.modal\n   * });\n   * ```\n   */\n  onModalReady: \"cc:onModalReady\",\n\n  /**\n   * @description\n   * This event is triggered when one of the modals is visible.\n   *\n   * @example\n   *\n   * ```js\n   * cookieConsentEvents.onModalShow // \"cc:onModalShow\"\n   * window.addEventListener('cc:onModalShow', ({ detail }) => {\n   *    // detail.modalName\n   * });\n   * ```\n   */\n  onModalShow: \"cc:onModalShow\",\n};\n","/**\n * Type for dictionary objects\n */\nexport type Dictionary = Record<string | symbol, any>;\n\n/**\n * Check if a value is a plain object (dictionary)\n */\nexport function isDictionary(value: unknown): value is Dictionary {\n  return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n","/**\n * Check if a key is valid and safe to use\n * Prevents prototype pollution and other security issues\n */\nexport function isValidKey(key: string | symbol): boolean {\n  return key !== \"__proto__\" && key !== \"constructor\" && key !== \"prototype\";\n}\n","export type ReferenceType = Record<PropertyKey, any>;\n\n/**\n * Check if a value is an object\n * This includes arrays, but excludes null and functions\n */\nexport function isObject(value: unknown): value is ReferenceType {\n  return value !== null && typeof value === \"object\";\n}\n","import { isDictionary } from \"@/helpers/is-dictionary\";\nimport { isObject, type ReferenceType } from \"@/helpers/is-object\";\nimport { isValidKey } from \"@/helpers/is-valid-key\";\n\n/**\n * Create a deep clone of any value\n * Preserves prototypes for plain objects and handles:\n * - Primitives\n * - Date objects\n * - RegExp objects\n * - Arrays\n * - Plain objects (preserving prototype)\n * - Cyclic references\n * - Other objects (shallow copy)\n *\n * @param value - The value to clone\n * @param visited - WeakMap tracking already processed objects to handle cyclic references\n * @returns A new cloned value\n */\nexport function cloneDeep<T>(value: T, visited = new WeakMap<ReferenceType, any>()): T {\n  // Handle non-object types\n  if (!isObject(value)) return value;\n\n  // Handle cyclic references\n  if (visited.has(value)) return visited.get(value);\n\n  // Handle Date objects\n  if (value instanceof Date) {\n    return new Date(value.getTime()) as T;\n  }\n\n  // Handle RegExp objects\n  if (value instanceof RegExp) {\n    return new RegExp(value.source, value.flags) as T;\n  }\n\n  // Handle Arrays\n  if (Array.isArray(value)) {\n    const clone = [] as any[];\n\n    // Track this array in our visited map before we clone children\n    visited.set(value, clone);\n\n    // Clone array items, handling potential cyclic references\n    value.forEach((item, index) => {\n      clone[index] = cloneDeep(item, visited);\n    });\n\n    return clone as T;\n  }\n\n  // Handle plain objects\n  if (isDictionary(value)) {\n    // Create a new object with the same prototype as the original\n    const result = Object.create(\n      Object.getPrototypeOf(value),\n      Object.getOwnPropertyDescriptors(value)\n    );\n\n    // Track this object in our visited map before we clone children\n    visited.set(value, result);\n\n    // Clone object properties, handling potential cyclic references\n    Reflect.ownKeys(result).forEach((key) => {\n      if (isValidKey(key) && Reflect.has(result, key)) {\n        const clone = cloneDeep(Reflect.get(result, key), visited);\n        Reflect.set(result, key, clone);\n      }\n    });\n\n    return result as T;\n  }\n\n  // Handle other objects (shallow copy)\n  return value;\n}\n","import { isDictionary } from \"@/helpers/is-dictionary\";\nimport { isValidKey } from \"@/helpers/is-valid-key\";\nimport { cloneDeep } from \"@/functions/clone-deep\";\nimport { isObject, type ReferenceType } from \"@/helpers/is-object\";\n\n/**\n * A simple and straightforward deep merge function that recursively merges objects.\n * Handles cyclic references to prevent infinite recursion.\n *\n * @param target - The target object that will receive the merged values\n * @param sources - One or more source objects to merge into the target\n * @param visited - WeakMap tracking already processed objects to handle cyclic references\n *\n * @returns A new merged object without modifying any of the inputs\n */\nexport function deepMerge<T extends ReferenceType>(\n  target: T,\n  ...sources: Array<any>\n): T {\n  return deepMergeInternal(target, sources, new WeakMap());\n}\n\n/**\n * Internal implementation of deepMerge that tracks visited objects\n */\nfunction deepMergeInternal<T extends ReferenceType>(\n  target: T,\n  sources: Array<any>,\n  visited: WeakMap<object, any>\n): T {\n  if (!sources.length || sources.every((source) => !source)) {\n    return cloneDeep(target, visited);\n  }\n\n  // If target has been visited before, return the cached result\n  if (isObject(target) && visited.has(target)) {\n    return visited.get(target);\n  }\n\n  const result = cloneDeep(target, visited);\n\n  if (isObject(target)) visited.set(target, result);\n\n  for (const source of sources) {\n    if (!source) continue;\n\n    for (const key of Reflect.ownKeys(source)) {\n      if (!isValidKey(key)) continue;\n\n      const targetValue = result[key];\n      const sourceValue = Reflect.get(source, key);\n\n      if (sourceValue === undefined) continue;\n\n      if (isObject(sourceValue) && visited.has(sourceValue)) {\n        Reflect.set(result, key, visited.get(sourceValue));\n        continue;\n      }\n\n      if (isDictionary(targetValue) && isDictionary(sourceValue)) {\n        Reflect.set(\n          result,\n          key,\n          deepMergeInternal(targetValue, [sourceValue], visited)\n        );\n        continue;\n      }\n\n      Reflect.set(result, key, cloneDeep(sourceValue, visited));\n    }\n  }\n\n  return result as T;\n}\n","import type { CookieConsentConfiguration } from \"@/types/cookie-consent-configuration\";\n\nexport const defaultConfiguration = {\n  autoClearCookies: true,\n  autoShow: false,\n  categories: {\n    analytics: {\n      enabled: true,\n      readOnly: false,\n    },\n    necessary: {\n      enabled: true,\n      readOnly: true,\n    },\n  },\n  cookie: {\n    expiresAfterDays: 180,\n    name: \"_cc-cookie\",\n    path: \"/\",\n    sameSite: \"Strict\",\n    secure: true,\n    useLocalStorage: false,\n  },\n  disablePageInteraction: false,\n  hideFromBots: true,\n  language: {\n    autoDetect: \"browser\",\n    default: \"en\",\n    rtl: \"ar\",\n    translations: {\n      en: {\n        consentModal: {\n          acceptAllBtn: \"Accept all\",\n          acceptNecessaryBtn: \"Reject all\",\n          description:\n            \"Our site uses scripts (e.g. cookies) to collect and store data such as personal identifiers (IP address, session details) and browsing activity. This helps us deliver content, ensure security, enhance user experience, and support marketing. You can reject non-essential cookies or adjust your preferences by clicking here.\",\n          showPreferencesBtn: \"Manage Individual preferences\",\n          title: \"Cookie preferences\",\n        },\n        preferencesModal: {\n          acceptAllBtn: \"Accept all\",\n          acceptNecessaryBtn: \"Reject all\",\n          closeIconLabel: \"Close modal\",\n          savePreferencesBtn: \"Accept current selection\",\n          sections: [],\n          title: \"Manage cookie preferences\",\n        },\n      },\n    },\n  },\n  manageScriptTags: true,\n} satisfies CookieConsentConfiguration;\n","import type { CookieConsentConfiguration } from \"@/types/cookie-consent-configuration\";\nimport type { DeepPartial } from \"@/types/deep-partial\";\n\nimport { deepMerge } from \"@/functions/deep-merge\";\nimport { defaultConfiguration } from \"@/constants/configuration\";\n\nexport function createCookieConfiguration(\n  options?: DeepPartial<CookieConsentConfiguration>\n): CookieConsentConfiguration {\n  return deepMerge(defaultConfiguration, options);\n}\n","import type { CookieStyles } from \"@/types/cookie-banner/styles\";\n\nexport function createCookieStyles(styles: CookieStyles) {\n  return styles;\n}\n","import type { CookieVariable } from \"@/types/cookie-banner/styles/cookie-variables\";\n\n/**\n * Returns a CSS variable as a string.\n *\n * @param variable - The CSS variable to return.\n * @returns The CSS variable as a string.\n *\n * @example\n *\n * ```typescript\n * import { css } from 'cookies';\n *\n * const primaryColor = css('--cc-primary-color');\n * console.log(primaryColor); // Outputs: var(--cc-primary-color)\n * ```\n *\n * @see {@link CookieVariable} for a list of available CSS variables.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/var() var()} for more information on CSS variables.\n */\nexport function css(variable: CookieVariable | (string & {})): string {\n  return `var(${variable})`;\n}\n","import type { CookieBannerProps } from \"@/types/cookie-banner/props\";\nimport type { CookieConsentConfiguration } from \"@/types/cookie-consent-configuration\";\n\nimport * as CookieConsent from \"vanilla-cookieconsent\";\n\nimport { useCallback, useEffect, useMemo } from \"react\";\n\nimport { useCookieStyles } from \"./use-cookie-styles\";\nimport { defaultConfiguration } from \"@/constants/configuration\";\nimport { useSetupFirebase } from \"@/functions/firebase\";\nimport { useUniqueUserId } from \"@/hooks/use-unique-user-id\";\nimport { deepMerge } from \"@/functions/deep-merge\";\n\nexport function useCookieBanner({\n  activeTheme = \"light\",\n  configuration,\n  delay = 1000,\n  firebase,\n  styles,\n}: CookieBannerProps = {}) {\n  const userId = useUniqueUserId();\n\n  const { onChange, onFirstConsent, ...options } = useMemo(() => {\n    return deepMerge<CookieConsentConfiguration>(\n      defaultConfiguration,\n      configuration\n    );\n  }, [configuration]);\n\n  const { retrieveUserCookieData, updateUserCookieData } =\n    useSetupFirebase(firebase);\n\n  const logConsent = useCallback(() => {\n    const cookie = CookieConsent.getCookie();\n    const preferences = CookieConsent.getUserPreferences();\n\n    if (firebase?.apiKey) {\n      updateUserCookieData({\n        cookie,\n        language: options.language.default,\n        preferences,\n        userId,\n      });\n    }\n  }, [\n    firebase?.apiKey,\n    options.language.default,\n    updateUserCookieData,\n    userId,\n  ]);\n\n  const updateUserId = useCallback(\n    async (newUserId: string, onError?: (e: unknown) => void) => {\n      if (firebase?.apiKey) {\n        await updateUserCookieData({ userId: newUserId }, userId, onError);\n      }\n    },\n    [firebase?.apiKey, userId, updateUserCookieData]\n  );\n\n  useEffect(() => {\n    CookieConsent.run({\n      ...options,\n      onChange: (param) => {\n        logConsent();\n        onChange?.(param);\n      },\n      onFirstConsent: (param) => {\n        logConsent();\n        onFirstConsent?.(param);\n      },\n    });\n\n    const timeoutId = setTimeout(CookieConsent.show, delay);\n\n    return () => {\n      clearTimeout(timeoutId);\n    };\n  }, [options, delay, logConsent, onFirstConsent, onChange]);\n\n  useEffect(() => {\n    CookieConsent.setCookieData({\n      mode: \"update\",\n      value: { userId },\n    });\n  }, [userId]);\n\n  useCookieStyles(activeTheme, styles);\n\n  return { retrieveUserCookieData, updateUserCookieData, updateUserId, userId };\n}\n","import type { CookieStyles } from \"@/types/cookie-banner/styles\";\n\nimport { useEffect, useInsertionEffect, useLayoutEffect } from \"react\";\n\nimport { serializeCookieStyles } from \"@/functions/serialize-cookie-styles\";\n\nconst useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function useCookieStyles(activeTheme: \"dark\" | \"light\" = \"light\", styles?: CookieStyles) {\n  useInsertionEffect(() => {\n    if (!styles) return;\n\n    const style = document.createElement(\"style\");\n    style.innerHTML = serializeCookieStyles(styles);\n    document.head.insertAdjacentHTML(\"beforeend\", style.outerHTML);\n  }, [styles]);\n\n  useIsomorphicLayoutEffect(() => {\n    if (!activeTheme) return;\n\n    const variants = { dark: \"cc--darkmode\", light: \"default-light\" };\n    const classes = document.documentElement.classList;\n    const theme = variants[activeTheme];\n\n    classes.toggle(theme, true);\n  }, [activeTheme]);\n}\n","import type { CSSInterpolation } from \"@emotion/serialize\";\n\nimport { serializeStyles } from \"@emotion/serialize\";\n\nexport function serializeCookieStyles(styles: CSSInterpolation) {\n  return serializeStyles([styles]).styles;\n}\n","import type { UserCookieData } from \"@/types/cookie-banner/props\";\nimport type { FirebaseConfig } from \"@/types/cookie-consent-configuration\";\n\nimport * as CookieConsent from \"vanilla-cookieconsent\";\n\nimport { initializeApp } from \"firebase/app\";\nimport { collection, doc, getDoc, getFirestore, setDoc } from \"firebase/firestore/lite\";\nimport { useCallback, useMemo } from \"react\";\n\nexport function useSetupFirebase(firebaseConfig: FirebaseConfig = { collectionName: \"AFEX\" }) {\n  const { collectionName, projectId } = firebaseConfig;\n\n  const app = useMemo(() => {\n    if (!projectId) return null;\n\n    try {\n      return initializeApp(firebaseConfig);\n    } catch (error) {\n      console.error(\"Failed to initialize Firebase:\", error);\n      return null;\n    }\n  }, [firebaseConfig]);\n\n  const db = useMemo(() => {\n    if (!app) return null;\n    return getFirestore(app);\n  }, [app]);\n\n  const updateUserCookieData = useCallback(\n    async (\n      data: Partial<UserCookieData>,\n      documentId = data.userId,\n      onError?: (e: unknown) => void\n    ): Promise<null | string> => {\n      if (!collectionName || !documentId || !db) return null;\n\n      if (data.userId !== documentId) {\n        CookieConsent.setCookieData({\n          mode: \"update\",\n          value: { userId: data.userId },\n        });\n      }\n\n      try {\n        const cookieSettingsRef = collection(db, collectionName);\n        const newDocRef = doc(cookieSettingsRef, documentId);\n        await setDoc(newDocRef, data);\n        return newDocRef.id;\n      } catch (error) {\n        onError?.(error);\n        return null;\n      }\n    },\n    [collectionName, db]\n  );\n\n  const retrieveUserCookieData = useCallback(\n    async (documentId: string, onError?: (e: unknown) => void): Promise<null | UserCookieData> => {\n      if (!collectionName || !documentId || !db) return null;\n\n      try {\n        const cookieSettingsRef = collection(db, collectionName);\n        const docRef = doc(cookieSettingsRef, documentId);\n        const docSnapshot = await getDoc(docRef);\n\n        if (!docSnapshot.exists()) return null;\n        return { id: docSnapshot.id, ...docSnapshot.data() } as UserCookieData;\n      } catch (error) {\n        onError?.(error);\n        return null;\n      }\n    },\n    [collectionName, db]\n  );\n\n  return { retrieveUserCookieData, updateUserCookieData };\n}\n","import { useEffect, useState } from \"react\";\nimport { v4, v5 } from \"uuid\";\n\ninterface UserBrowserInfo {\n  browser: string;\n  location: string;\n  referrer: string;\n  screen_height: number;\n  screen_width: number;\n}\n\n/**\n * React hook to generate a unique user ID based on the user's browser information.\n * Falls back to a random UUID if browser APIs are not available or if an error occurs during generation.\n */\nexport function useUniqueUserId(): string {\n  const [userId, setUserId] = useState<string>(() => v4());\n\n  useEffect(() => {\n    try {\n      const userInfo: UserBrowserInfo = {\n        browser: navigator.userAgent,\n        location: document.location.origin,\n        referrer: document.referrer,\n        screen_height: screen.height,\n        screen_width: screen.width,\n      };\n\n      const userInfoString = Object.values(userInfo).join(\"|\");\n      const clientSpecificId = v5(userInfoString, v5.URL);\n\n      // Set the client ID to a unique value based on the user's browser information\n      // This will be consistent across sessions for the same user\n      setUserId(clientSpecificId);\n    } catch (error) {\n      console.error(\"Error generating client-specific unique user ID; will use initial random UUID:\", error);\n    }\n  }, []);\n\n  return userId;\n}\n"]}