{"version":3,"sources":["jsdelivr-header.js","/npm/react-facebook@11.0.2/src/constants/LoginStatus.ts","/npm/react-facebook@11.0.2/src/utils/Facebook.ts","/npm/react-facebook@11.0.2/src/errors/FBError.ts","/npm/react-facebook@11.0.2/src/components/FacebookContext.tsx","/npm/react-facebook@11.0.2/src/utils/FacebookPixel.ts","/npm/react-facebook@11.0.2/src/components/FacebookPixelProvider.tsx","/npm/react-facebook@11.0.2/src/components/FacebookProvider.tsx","/npm/react-facebook@11.0.2/src/hooks/useFacebook.ts","/npm/react-facebook@11.0.2/src/components/Parser.tsx","/npm/react-facebook@11.0.2/src/utils/getCurrentHref.ts","/npm/react-facebook@11.0.2/src/components/Like.tsx","/npm/react-facebook@11.0.2/src/utils/clearUndefinedProperties.ts","/npm/react-facebook@11.0.2/src/hooks/useDialog.ts","/npm/react-facebook@11.0.2/src/hooks/useShare.ts","/npm/react-facebook@11.0.2/src/components/ShareButton.tsx","/npm/react-facebook@11.0.2/src/components/Page.tsx","/npm/react-facebook@11.0.2/src/hooks/useLogin.ts","/npm/react-facebook@11.0.2/src/hooks/useSubscribe.ts","/npm/react-facebook@11.0.2/src/hooks/useLoginStatus.ts","/npm/react-facebook@11.0.2/src/hooks/useProfile.ts","/npm/react-facebook@11.0.2/src/components/Login.tsx","/npm/react-facebook@11.0.2/src/components/EmbeddedPost.tsx","/npm/react-facebook@11.0.2/src/components/EmbeddedVideo.tsx","/npm/react-facebook@11.0.2/src/components/Comments.tsx","/npm/react-facebook@11.0.2/src/components/CommentsCount.tsx","/npm/react-facebook@11.0.2/src/components/Share.tsx","/npm/react-facebook@11.0.2/src/constants/LikeSize.ts","/npm/react-facebook@11.0.2/src/components/FacebookErrorBoundary.tsx","/npm/react-facebook@11.0.2/src/constants/LikeLayout.ts","/npm/react-facebook@11.0.2/src/constants/ColorScheme.ts","/npm/react-facebook@11.0.2/src/constants/LikeAction.ts","/npm/react-facebook@11.0.2/src/constants/CommentsOrderBy.ts","/npm/react-facebook@11.0.2/src/constants/MessengerSize.ts","/npm/react-facebook@11.0.2/src/constants/MessengerColor.ts","/npm/react-facebook@11.0.2/src/constants/Fields.ts","/npm/react-facebook@11.0.2/src/hooks/useLocale.ts","/npm/react-facebook@11.0.2/src/hooks/useFeed.ts","/npm/react-facebook@11.0.2/src/hooks/useSend.ts","/npm/react-facebook@11.0.2/src/hooks/usePixel.ts","/npm/react-facebook@11.0.2/src/hooks/usePageView.ts","/npm/react-facebook@11.0.2/src/utils/ReactPixel.ts","/npm/react-facebook@11.0.2/src/hooks/useGraphAPI.ts"],"names":[],"mappings":"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","file":"/npm/react-facebook@11.0.2/dist/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-facebook@11.0.2/dist/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","enum LoginStatus {\n  CONNECTED = 'connected',\n  AUTHORIZATION_EXPIRED = 'authorization_expired',\n  NOT_AUTHORIZED = 'not_authorized',\n  UNKNOWN = 'unknown',\n}\n\nexport default LoginStatus;\n","import LoginStatus from '../constants/LoginStatus';\nimport FBError from '../errors/FBError';\n\nexport type AuthResponse = {\n  userID: string;\n  accessToken: string;\n};\n\nexport type LoginResponse =\n  | {\n      status: LoginStatus.CONNECTED;\n      authResponse: AuthResponse;\n    }\n  | {\n      status: Exclude<LoginStatus, LoginStatus.CONNECTED>;\n    };\n\nexport type LoginOptions = {\n  scope?: string;\n  returnScopes?: boolean;\n  authType?: string[];\n  rerequest?: boolean;\n  reauthorize?: boolean;\n};\n\ntype FBErrorResponse = {\n  error: {\n    code: number;\n    type: string;\n    message: string;\n  };\n};\n\ntype FBSDK = {\n  init: (options: {\n    appId: string;\n    version?: string;\n    cookie?: boolean;\n    status?: boolean;\n    xfbml?: boolean;\n    frictionlessRequests?: boolean;\n  }) => void;\n  api: (path: string, method: string, params: Record<string, unknown>, callback: (response: unknown) => void) => void;\n  ui: (options: Record<string, unknown>, callback: (response: unknown) => void) => void;\n  login: (callback: (response: unknown) => void, options: Record<string, unknown>) => void;\n  logout: (callback: (response: unknown) => void) => void;\n  getLoginStatus: (callback: (response: unknown) => void) => void;\n  Event: {\n    subscribe: (event: string, callback: (...args: unknown[]) => void) => void;\n    unsubscribe: (event: string, callback: (...args: unknown[]) => void) => void;\n  };\n  XFBML: {\n    parse: (element?: HTMLElement) => void;\n  };\n};\n\ndeclare global {\n  interface Window {\n    fbAsyncInit: () => void;\n    FB: FBSDK;\n  }\n}\n\nexport enum Method {\n  GET = 'get',\n  POST = 'post',\n  DELETE = 'delete',\n}\n\nexport type FacebookOptions = {\n  domain?: string;\n  version?: string;\n  cookie?: boolean;\n  status?: boolean;\n  xfbml?: boolean;\n  language?: string;\n  frictionlessRequests?: boolean;\n  debug?: boolean;\n  chatSupport?: boolean;\n  appId: string;\n  autoLogAppEvents?: boolean;\n  lazy?: boolean;\n};\n\nconst defaultOptions: Omit<FacebookOptions, 'appId'> = {\n  domain: 'connect.facebook.net',\n  version: 'v23.0',\n  cookie: false,\n  status: false,\n  xfbml: false,\n  language: 'en_US',\n  frictionlessRequests: false,\n  debug: false,\n  chatSupport: false,\n  autoLogAppEvents: true,\n  lazy: false,\n};\n\nfunction isFBError(response: unknown): response is FBErrorResponse {\n  return typeof response === 'object' && response !== null && 'error' in response;\n}\n\nexport type FacebookInstance = {\n  getAppId: () => string;\n  getFB: () => FBSDK | undefined;\n  init: () => Promise<FacebookInstance>;\n  ui: (options: Record<string, unknown>) => Promise<unknown>;\n  api: <T>(path: string, method?: Method, params?: Record<string, unknown>) => Promise<T>;\n  login: (options: LoginOptions) => Promise<LoginResponse>;\n  logout: () => Promise<void>;\n  getLoginStatus: () => Promise<LoginResponse>;\n  getTokenDetail: (loginResponse?: LoginResponse) => Promise<AuthResponse>;\n  getProfile: (params: { fields: string }) => Promise<unknown>;\n  getPermissions: () => Promise<{ permission: string; status: 'granted' }[]>;\n  hasPermissions: (permissions: string[]) => Promise<boolean>;\n  subscribe: <T>(eventName: string, callback: (value: T) => void) => Promise<() => Promise<void>>;\n  unsubscribe: <T>(eventName: string, callback: (value: T) => void) => Promise<void>;\n  parse: (parentNode?: HTMLElement) => Promise<void>;\n  getLocale: () => string;\n  changeLocale: (newLocale: string) => Promise<void>;\n  options: FacebookOptions;\n  loadingPromise: Promise<FacebookInstance> | undefined;\n};\n\nexport default function createFacebook(options: FacebookOptions): FacebookInstance {\n  if (!options.appId) {\n    throw new Error('[react-facebook] You need to set appId');\n  }\n\n  const opts: FacebookOptions = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  let loadingPromise: Promise<FacebookInstance> | undefined;\n\n  function getAppId() {\n    return opts.appId;\n  }\n\n  function getFB(): FBSDK | undefined {\n    if (typeof window === 'undefined') return undefined;\n    return window.FB;\n  }\n\n  async function init(): Promise<FacebookInstance> {\n    if (typeof window === 'undefined') {\n      return instance;\n    }\n\n    if (loadingPromise) {\n      return loadingPromise;\n    }\n\n    loadingPromise = new Promise<FacebookInstance>((resolve, reject) => {\n      const { domain, language, debug, chatSupport, ...restOptions } = opts;\n\n      const initParams = {\n        appId: restOptions.appId,\n        version: restOptions.version,\n        cookie: restOptions.cookie,\n        status: restOptions.status,\n        xfbml: restOptions.xfbml,\n        frictionlessRequests: restOptions.frictionlessRequests,\n      };\n\n      let poll: ReturnType<typeof setInterval> | undefined;\n\n      const timeout = setTimeout(() => {\n        if (poll) clearInterval(poll);\n        loadingPromise = undefined;\n        instance.loadingPromise = undefined;\n        reject(\n          new Error(\n            '[react-facebook] Facebook SDK loading timed out after 10 seconds. ' +\n              'This may be caused by an ad blocker or network issue.',\n          ),\n        );\n      }, 10000);\n\n      function onSDKReady() {\n        if (poll) clearInterval(poll);\n        clearTimeout(timeout);\n        window.FB.init(initParams);\n        resolve(instance);\n      }\n\n      window.fbAsyncInit = onSDKReady;\n\n      if (window.document.getElementById('facebook-jssdk')) {\n        if (window.FB) {\n          clearTimeout(timeout);\n          return resolve(instance);\n        }\n        // Script exists but FB not yet loaded. Keep timeout active and\n        // poll as a fallback in case fbAsyncInit already fired before\n        // we set our handler (SSR hydration, multiple providers, static script tag).\n        poll = setInterval(() => {\n          if (window.FB) onSDKReady();\n        }, 50);\n        return;\n      }\n\n      const js = window.document.createElement('script');\n      js.id = 'facebook-jssdk';\n      js.async = true;\n      js.defer = true;\n      js.crossOrigin = 'anonymous';\n      js.src = `https://${domain}/${language}/sdk${chatSupport ? '/xfbml.customerchat' : ''}${debug ? '/debug' : ''}.js`;\n\n      js.onerror = () => {\n        clearTimeout(timeout);\n        loadingPromise = undefined;\n        instance.loadingPromise = undefined;\n        reject(\n          new Error(\n            `[react-facebook] Failed to load Facebook SDK from ${js.src}. ` +\n              'This may be caused by an ad blocker or network issue.',\n          ),\n        );\n      };\n\n      window.document.body.appendChild(js);\n    });\n\n    instance.loadingPromise = loadingPromise;\n    return loadingPromise;\n  }\n\n  async function call<T>(invoke: (fb: FBSDK, callback: (response: unknown) => void) => void): Promise<T> {\n    await init();\n\n    const fb = getFB();\n    if (!fb) throw new Error('[react-facebook] Facebook SDK not available');\n\n    return new Promise((resolve, reject) => {\n      const callback = (response: unknown) => {\n        if (!response) {\n          reject(new Error('Response is undefined'));\n        } else if (isFBError(response)) {\n          const { code, type, message } = response.error;\n          reject(new FBError(message, code, type));\n        } else {\n          resolve(response as T);\n        }\n      };\n\n      invoke(fb, callback);\n    });\n  }\n\n  async function ui(options: Record<string, unknown>) {\n    await init();\n\n    const fb = getFB();\n    if (!fb) throw new Error('[react-facebook] Facebook SDK not available');\n\n    return new Promise((resolve, reject) => {\n      fb.ui(options, (response: unknown) => {\n        if (!response) {\n          resolve(undefined);\n          return;\n        }\n        if (isFBError(response)) {\n          const { code, type, message } = response.error;\n          reject(new FBError(message, code, type));\n          return;\n        }\n        resolve(response);\n      });\n    });\n  }\n\n  async function api<T>(path: string, method = Method.GET, params: Record<string, unknown> = {}) {\n    return call<T>((fb, cb) => fb.api(path, method, params, cb));\n  }\n\n  async function login(loginOpts: LoginOptions) {\n    const { scope, returnScopes, rerequest, reauthorize } = loginOpts;\n    const types = [...(loginOpts.authType ?? [])];\n    const fbLoginOptions: Record<string, unknown> = { scope };\n\n    if (returnScopes) {\n      fbLoginOptions.return_scopes = true;\n    }\n\n    if (rerequest) {\n      types.push('rerequest');\n    }\n\n    if (reauthorize) {\n      types.push('reauthenticate');\n    }\n\n    if (types.length) {\n      fbLoginOptions.auth_type = types.join(',');\n    }\n\n    return call<LoginResponse>((fb, cb) => fb.login(cb, fbLoginOptions));\n  }\n\n  async function logout() {\n    return call<void>((fb, cb) => fb.logout(cb));\n  }\n\n  async function getLoginStatus(): Promise<LoginResponse> {\n    return call<LoginResponse>((fb, cb) => fb.getLoginStatus(cb));\n  }\n\n  async function getTokenDetail(loginResponse?: LoginResponse): Promise<AuthResponse> {\n    if (loginResponse?.status === LoginStatus.CONNECTED) {\n      return loginResponse.authResponse;\n    }\n\n    const response = await getLoginStatus();\n\n    if (response.status === LoginStatus.CONNECTED) {\n      return response.authResponse;\n    }\n\n    throw new Error('Token is undefined');\n  }\n\n  async function getProfile(params: { fields: string }) {\n    return api('/me', Method.GET, params as Record<string, unknown>);\n  }\n\n  async function getPermissions() {\n    const response = await api<{ data: { permission: string; status: 'granted' }[] }>('/me/permissions');\n    return response.data;\n  }\n\n  async function hasPermissions(permissions: string[]) {\n    const usersPermissions = await getPermissions();\n\n    const matchedPermissions = permissions.filter((p) => {\n      return usersPermissions.some((row) => row.status === 'granted' && row.permission === p);\n    });\n\n    return matchedPermissions.length === permissions.length;\n  }\n\n  async function subscribe<T>(eventName: string, callback: (value: T) => void) {\n    await init();\n    const fb = getFB();\n    if (!fb) throw new Error('[react-facebook] Facebook SDK not available');\n    fb.Event.subscribe(eventName, callback as (...args: unknown[]) => void);\n\n    return () => unsubscribe(eventName, callback);\n  }\n\n  async function unsubscribe<T>(eventName: string, callback: (value: T) => void) {\n    await init();\n    const fb = getFB();\n    if (!fb) throw new Error('[react-facebook] Facebook SDK not available');\n    fb.Event.unsubscribe(eventName, callback as (...args: unknown[]) => void);\n  }\n\n  async function parse(parentNode?: HTMLElement) {\n    await init();\n\n    const fb = getFB();\n    if (!fb) throw new Error('[react-facebook] Facebook SDK not available');\n\n    if (parentNode) {\n      fb.XFBML.parse(parentNode);\n    } else {\n      fb.XFBML.parse();\n    }\n  }\n\n  function getLocale(): string {\n    return opts.language || 'en_US';\n  }\n\n  async function changeLocale(newLocale: string): Promise<void> {\n    if (typeof window === 'undefined') return;\n\n    opts.language = newLocale;\n\n    const existingScript = window.document.getElementById('facebook-jssdk');\n    if (existingScript) {\n      existingScript.remove();\n    }\n\n    if (window.FB) {\n      delete (window as { FB?: FBSDK }).FB;\n    }\n\n    loadingPromise = undefined;\n    instance.loadingPromise = undefined;\n\n    await init();\n\n    const fb = getFB();\n    if (fb?.XFBML?.parse) {\n      fb.XFBML.parse();\n    }\n  }\n\n  const instance: FacebookInstance = {\n    getAppId,\n    getFB,\n    init,\n    ui,\n    api,\n    login,\n    logout,\n    getLoginStatus,\n    getTokenDetail,\n    getProfile,\n    getPermissions,\n    hasPermissions,\n    subscribe,\n    unsubscribe,\n    parse,\n    getLocale,\n    changeLocale,\n    options: opts,\n    loadingPromise: undefined,\n  };\n\n  if (!opts.lazy && typeof window !== 'undefined') {\n    init();\n  }\n\n  return instance;\n}\n","export default class FBError extends Error {\n  readonly code: number;\n  readonly type: string;\n  readonly name = 'FBError';\n\n  constructor(message: string, code: number, type: string) {\n    super(`[react-facebook] ${message} (code: ${code}, type: ${type})`);\n\n    this.code = code;\n    this.type = type;\n  }\n}\n","import { createContext } from 'react';\nimport type { FacebookInstance } from '../utils/Facebook';\n\nexport type FacebookContextInterface = {\n  loading: boolean;\n  error: Error | undefined;\n  init: () => Promise<FacebookInstance | undefined>;\n  api: FacebookInstance | undefined;\n  parse: (element: HTMLDivElement | HTMLSpanElement) => Promise<void>;\n  locale: string;\n  setLocale: (locale: string) => Promise<void>;\n};\n\nexport default createContext<FacebookContextInterface | undefined>(undefined);\n","export type PixelOptions = {\n  pixelId: string;\n  autoConfig?: boolean;\n  debug?: boolean;\n  advancedMatching?: Record<string, unknown>;\n};\n\nexport type PixelEventData = Record<string, unknown>;\n\nexport type PixelEventName =\n  | 'PageView'\n  | 'ViewContent'\n  | 'Search'\n  | 'AddToCart'\n  | 'AddToWishlist'\n  | 'InitiateCheckout'\n  | 'AddPaymentInfo'\n  | 'Purchase'\n  | 'Lead'\n  | 'CompleteRegistration'\n  | 'Contact'\n  | 'CustomizeProduct'\n  | 'Donate'\n  | 'FindLocation'\n  | 'Schedule'\n  | 'StartTrial'\n  | 'SubmitApplication'\n  | 'Subscribe'\n  | 'Custom';\n\ntype FBQ = {\n  (...args: unknown[]): void;\n  callMethod?: (...args: unknown[]) => void;\n  queue: unknown[];\n  push: FBQ;\n  loaded: boolean;\n  version: string;\n};\n\nconst defaultPixelOptions: Omit<PixelOptions, 'pixelId'> = {\n  autoConfig: true,\n  debug: false,\n  advancedMatching: {},\n};\n\ndeclare global {\n  interface Window {\n    fbq: FBQ | undefined;\n    _fbq: FBQ | undefined;\n  }\n}\n\nexport type FacebookPixelInstance = {\n  init: () => Promise<FacebookPixelInstance>;\n  pageView: () => Promise<void>;\n  track: (eventName: PixelEventName, data?: PixelEventData) => Promise<void>;\n  trackSingle: (pixelId: string, eventName: PixelEventName, data?: PixelEventData) => Promise<void>;\n  trackCustom: (eventName: string, data?: PixelEventData) => Promise<void>;\n  trackSingleCustom: (pixelId: string, eventName: string, data?: PixelEventData) => Promise<void>;\n  grantConsent: () => Promise<void>;\n  revokeConsent: () => Promise<void>;\n  fbq: (...args: unknown[]) => Promise<void>;\n  isInitialized: () => boolean;\n  getOptions: () => PixelOptions;\n};\n\nexport default function createFacebookPixel(options: PixelOptions): FacebookPixelInstance {\n  if (!options.pixelId) {\n    throw new Error('You need to set pixelId');\n  }\n\n  const opts: PixelOptions = {\n    ...defaultPixelOptions,\n    ...options,\n    debug: options.debug ?? false,\n  };\n\n  let loadingPromise: Promise<FacebookPixelInstance> | undefined;\n\n  function warn(...args: unknown[]): void {\n    if (!opts.debug) return;\n    console.warn('[react-facebook-pixel]', ...args);\n  }\n\n  function log(...args: unknown[]): void {\n    if (!opts.debug) return;\n    console.info('[react-facebook-pixel]', ...args);\n  }\n\n  function loadPixelScript(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (typeof window === 'undefined') {\n        resolve();\n        return;\n      }\n\n      if (window.fbq) {\n        resolve();\n        return;\n      }\n\n      const script = document.createElement('script');\n      script.async = true;\n      script.src = 'https://connect.facebook.net/en_US/fbevents.js';\n\n      script.onload = () => {\n        if (!window.fbq) {\n          // Real fbevents.js failed to set up fbq; create a stub\n          const fbq = function (...args: unknown[]) {\n            if (fbq.callMethod) {\n              fbq.callMethod(...args);\n            } else {\n              fbq.queue.push(args);\n            }\n          } as FBQ;\n          fbq.queue = [];\n          fbq.loaded = true;\n          fbq.version = '2.0';\n          fbq.push = fbq;\n          window.fbq = fbq;\n        }\n\n        if (!window._fbq) {\n          window._fbq = window.fbq!;\n        }\n\n        resolve();\n      };\n\n      script.onerror = () => {\n        warn('Failed to load Facebook Pixel script');\n        reject(\n          new Error(\n            '[react-facebook] Failed to load Facebook Pixel script. ' +\n              'This may be caused by an ad blocker or network issue.',\n          ),\n        );\n      };\n\n      document.head.appendChild(script);\n    });\n  }\n\n  async function init(): Promise<FacebookPixelInstance> {\n    if (loadingPromise) {\n      return loadingPromise;\n    }\n\n    loadingPromise = loadPixelScript()\n      .then(() => {\n        if (typeof window === 'undefined' || !window.fbq) return instance;\n\n        const { pixelId, autoConfig, advancedMatching } = opts;\n\n        if (autoConfig === false) {\n          window.fbq('set', 'autoConfig', false, pixelId);\n        }\n\n        window.fbq('init', pixelId, advancedMatching);\n\n        log('Pixel initialized successfully');\n        return instance;\n      })\n      .catch((error) => {\n        loadingPromise = undefined;\n        throw error;\n      });\n\n    return loadingPromise;\n  }\n\n  function getFbq(): FBQ {\n    const fbq = window.fbq;\n    if (!fbq) throw new Error('[react-facebook] Facebook Pixel not initialized');\n    return fbq;\n  }\n\n  async function pageView(): Promise<void> {\n    await init();\n    getFbq()('track', 'PageView');\n    log(\"Called fbq('track', 'PageView')\");\n  }\n\n  async function track(eventName: PixelEventName, data?: PixelEventData): Promise<void> {\n    await init();\n    getFbq()('track', eventName, data);\n    log(`Called fbq('track', '${eventName}')`);\n    if (data) log('with data:', data);\n  }\n\n  async function trackSingle(pixelId: string, eventName: PixelEventName, data?: PixelEventData): Promise<void> {\n    await init();\n    getFbq()('trackSingle', pixelId, eventName, data);\n    log(`Called fbq('trackSingle', '${pixelId}', '${eventName}')`);\n    if (data) log('with data:', data);\n  }\n\n  async function trackCustom(eventName: string, data?: PixelEventData): Promise<void> {\n    await init();\n    getFbq()('trackCustom', eventName, data);\n    log(`Called fbq('trackCustom', '${eventName}')`);\n    if (data) log('with data:', data);\n  }\n\n  async function trackSingleCustom(pixelId: string, eventName: string, data?: PixelEventData): Promise<void> {\n    await init();\n    getFbq()('trackSingleCustom', pixelId, eventName, data);\n    log(`Called fbq('trackSingleCustom', '${pixelId}', '${eventName}')`);\n    if (data) log('with data:', data);\n  }\n\n  async function grantConsent(): Promise<void> {\n    await init();\n    getFbq()('consent', 'grant');\n    log(\"Called fbq('consent', 'grant')\");\n  }\n\n  async function revokeConsent(): Promise<void> {\n    await init();\n    getFbq()('consent', 'revoke');\n    log(\"Called fbq('consent', 'revoke')\");\n  }\n\n  async function fbqDirect(...args: unknown[]): Promise<void> {\n    await init();\n    getFbq()(...args);\n    log(`Called fbq('${(args.slice(0, 2) as string[]).join(\"', '\")}')`);\n    if (args[2]) log('with data:', args[2]);\n  }\n\n  function isInitialized(): boolean {\n    return !!loadingPromise;\n  }\n\n  function getOptions(): PixelOptions {\n    return { ...opts };\n  }\n\n  const instance: FacebookPixelInstance = {\n    init,\n    pageView,\n    track,\n    trackSingle,\n    trackCustom,\n    trackSingleCustom,\n    grantConsent,\n    revokeConsent,\n    fbq: fbqDirect,\n    isInitialized,\n    getOptions,\n  };\n\n  return instance;\n}\n","import { useState, useEffect, useRef, useCallback, useMemo, createContext, type ReactNode } from 'react';\nimport createFacebookPixel from '../utils/FacebookPixel';\nimport type { FacebookPixelInstance, PixelOptions } from '../utils/FacebookPixel';\n\nexport type FacebookPixelContextInterface = {\n  loading: boolean;\n  error: Error | undefined;\n  init: () => Promise<void>;\n  pixel: FacebookPixelInstance | undefined;\n  pageView: () => Promise<void>;\n  track: (eventName: string, data?: Record<string, unknown>) => Promise<void>;\n  trackCustom: (eventName: string, data?: Record<string, unknown>) => Promise<void>;\n  grantConsent: () => Promise<void>;\n  revokeConsent: () => Promise<void>;\n  fbq: (...args: unknown[]) => Promise<void>;\n};\n\nexport const FacebookPixelContext = createContext<FacebookPixelContextInterface | undefined>(undefined);\n\nexport type FacebookPixelProviderProps = PixelOptions & {\n  children: ReactNode;\n  lazy?: boolean;\n};\n\nexport default function FacebookPixelProvider(props: FacebookPixelProviderProps) {\n  const { children, lazy = false, ...options } = props;\n  const [loading, setLoading] = useState<boolean>(true);\n  const [error, setError] = useState<Error | undefined>(undefined);\n  const pixelRef = useRef<FacebookPixelInstance | undefined>(undefined);\n  const initPromiseRef = useRef<Promise<void> | undefined>(undefined);\n  const optionsRef = useRef(options);\n  optionsRef.current = options;\n\n  const init = useCallback(async () => {\n    if (initPromiseRef.current) {\n      return initPromiseRef.current;\n    }\n\n    initPromiseRef.current = (async () => {\n      try {\n        if (pixelRef.current) {\n          return;\n        }\n\n        setLoading(true);\n        setError(undefined);\n\n        pixelRef.current = createFacebookPixel(optionsRef.current);\n        await pixelRef.current.init();\n      } catch (error) {\n        setError(error instanceof Error ? error : new Error(String(error)));\n      } finally {\n        setLoading(false);\n      }\n    })();\n\n    return initPromiseRef.current;\n  }, []);\n\n  const pageView = useCallback(async () => {\n    await init();\n    await pixelRef.current?.pageView();\n  }, [init]);\n\n  const track = useCallback(\n    async (eventName: string, data?: Record<string, unknown>) => {\n      await init();\n      await pixelRef.current?.track(eventName as Parameters<FacebookPixelInstance['track']>[0], data);\n    },\n    [init],\n  );\n\n  const trackCustom = useCallback(\n    async (eventName: string, data?: Record<string, unknown>) => {\n      await init();\n      await pixelRef.current?.trackCustom(eventName, data);\n    },\n    [init],\n  );\n\n  const grantConsent = useCallback(async () => {\n    await init();\n    await pixelRef.current?.grantConsent();\n  }, [init]);\n\n  const revokeConsent = useCallback(async () => {\n    await init();\n    await pixelRef.current?.revokeConsent();\n  }, [init]);\n\n  const fbq = useCallback(\n    async (...args: unknown[]) => {\n      await init();\n      await pixelRef.current?.fbq(...args);\n    },\n    [init],\n  );\n\n  useEffect(() => {\n    if (!lazy) {\n      init();\n    }\n  }, [lazy]);\n\n  const value: FacebookPixelContextInterface = useMemo(\n    () => ({\n      loading,\n      error,\n      init,\n      pixel: pixelRef.current,\n      pageView,\n      track,\n      trackCustom,\n      grantConsent,\n      revokeConsent,\n      fbq,\n    }),\n    [loading, error, init, pageView, track, trackCustom, grantConsent, revokeConsent, fbq],\n  );\n\n  return <FacebookPixelContext.Provider value={value}>{children}</FacebookPixelContext.Provider>;\n}\n","import { useState, useEffect, useRef, useCallback, useMemo, type ReactNode } from 'react';\nimport createFacebook from '../utils/Facebook';\nimport type { FacebookOptions, FacebookInstance } from '../utils/Facebook';\nimport FacebookContext from './FacebookContext';\nimport type { FacebookContextInterface } from './FacebookContext';\nimport FacebookPixelProvider from './FacebookPixelProvider';\n\nexport type FacebookProviderProps = FacebookOptions & {\n  children: ReactNode;\n  /** Facebook Pixel ID — enables automatic pixel integration */\n  pixelId?: string;\n};\n\nexport default function FacebookProvider(props: FacebookProviderProps) {\n  const { children, pixelId, ...options } = props;\n  const [loading, setLoading] = useState<boolean>(true);\n  const [isReady, setIsReady] = useState<boolean>(false);\n  const [error, setError] = useState<Error | undefined>();\n  const [locale, setLocaleState] = useState<string>(options.language || 'en_US');\n  const apiRef = useRef<FacebookInstance | undefined>(undefined);\n  const initPromiseRef = useRef<Promise<FacebookInstance | undefined> | undefined>(undefined);\n  const optionsRef = useRef(options);\n  optionsRef.current = options;\n\n  const init = useCallback(async () => {\n    if (initPromiseRef.current) {\n      return initPromiseRef.current;\n    }\n\n    initPromiseRef.current = (async () => {\n      try {\n        if (apiRef.current) {\n          return apiRef.current;\n        }\n\n        setIsReady(false);\n        setLoading(true);\n\n        apiRef.current = createFacebook(optionsRef.current);\n\n        await apiRef.current.init();\n\n        setIsReady(true);\n        return apiRef.current;\n      } catch (error) {\n        setError(error instanceof Error ? error : new Error(String(error)));\n      } finally {\n        setLoading(false);\n      }\n\n      return apiRef.current;\n    })();\n\n    return initPromiseRef.current;\n  }, []);\n\n  const parse = useCallback(\n    async (element: HTMLElement) => {\n      const api = await init();\n      if (api) {\n        await api.parse(element);\n      }\n    },\n    [init],\n  );\n\n  const setLocale = useCallback(async (newLocale: string) => {\n    if (!apiRef.current) {\n      setLocaleState(newLocale);\n      return;\n    }\n\n    try {\n      setLoading(true);\n      setError(undefined);\n\n      await apiRef.current.changeLocale(newLocale);\n\n      setLocaleState(newLocale);\n    } catch (error) {\n      setError(error instanceof Error ? error : new Error(String(error)));\n    } finally {\n      setLoading(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    const { lazy } = options;\n    if (!lazy) {\n      init();\n    }\n  }, [options.lazy]);\n\n  // Sync locale when the language *prop* changes (controlled mode).\n  // We intentionally exclude `locale` from the dependency array so that\n  // programmatic setLocale() calls are not reverted.\n  useEffect(() => {\n    const newLocale = options.language || 'en_US';\n    if (newLocale !== locale) {\n      setLocale(newLocale);\n    }\n  }, [options.language]);\n\n  const value: FacebookContextInterface = useMemo(\n    () => ({\n      loading,\n      error,\n      init,\n      api: isReady ? apiRef.current : undefined,\n      parse,\n      locale,\n      setLocale,\n    }),\n    [loading, error, init, isReady, parse, locale, setLocale],\n  );\n\n  const content = <FacebookContext.Provider value={value}>{children}</FacebookContext.Provider>;\n\n  if (pixelId) {\n    return <FacebookPixelProvider pixelId={pixelId}>{content}</FacebookPixelProvider>;\n  }\n\n  return content;\n}\n","import { useContext, useEffect } from 'react';\nimport FacebookContext from '../components/FacebookContext';\nimport type { FacebookContextInterface } from '../components/FacebookContext';\n\nexport type UseFacebookProps = {\n  lazy?: boolean;\n};\n\n/**\n * Hook for accessing the Facebook SDK context\n *\n * @returns The Facebook context with API instance, loading state, and utilities\n *\n * @example\n * ```tsx\n * function MyComponent() {\n *   const { api, loading, error } = useFacebook();\n *\n *   if (loading) return <p>Loading Facebook SDK...</p>;\n *   if (error) return <p>Error: {error.message}</p>;\n *\n *   return <p>Facebook SDK ready! App ID: {api?.getAppId()}</p>;\n * }\n * ```\n */\nexport default function useFacebook(props: UseFacebookProps = {}): FacebookContextInterface {\n  const { lazy = false } = props;\n\n  const context: FacebookContextInterface | undefined = useContext(FacebookContext);\n  if (!context) {\n    throw new Error(\n      '[react-facebook] useFacebook must be used within a <FacebookProvider>. ' +\n        'Wrap your component tree with <FacebookProvider appId=\"YOUR_APP_ID\">.',\n    );\n  }\n\n  useEffect(() => {\n    if (!lazy) {\n      context.init();\n    }\n  }, [lazy, context.init]);\n\n  return context;\n}\n","import {\n  useState,\n  memo,\n  forwardRef,\n  type ReactNode,\n  useEffect,\n  useCallback,\n  useMemo,\n  type ElementType,\n  type CSSProperties,\n  type MutableRefObject,\n  type Ref,\n} from 'react';\nimport useFacebook from '../hooks/useFacebook';\n\nexport type ParserProps = {\n  className: string;\n  as?: ElementType;\n  children?: ReactNode;\n  style?: CSSProperties;\n  data?: Record<string, string | undefined>;\n};\n\nfunction Parser(props: ParserProps, forwardedRef: Ref<HTMLElement>) {\n  const { as: As = 'div', children, className, style, data } = props;\n\n  const { parse } = useFacebook();\n  const [element, setElement] = useState<HTMLElement | null>(null);\n\n  const handleRef = useCallback(\n    (element: HTMLElement | null) => {\n      setElement(element);\n\n      if (forwardedRef) {\n        if (typeof forwardedRef === 'function') {\n          forwardedRef(element);\n        } else if (forwardedRef) {\n          (forwardedRef as MutableRefObject<HTMLElement | null>).current = element;\n        }\n      }\n    },\n    [forwardedRef],\n  );\n\n  const key = useMemo(() => {\n    let uniqueKey = `fb-parser-${As}-${className}`;\n    if (!data) {\n      return uniqueKey;\n    }\n\n    for (const key in data) {\n      const value = data[key];\n      if (value !== undefined) {\n        uniqueKey += `-${key}:${data[key] || ''}`;\n      }\n    }\n\n    return uniqueKey;\n  }, [data, As, className]);\n\n  useEffect(() => {\n    if (element?.parentNode) {\n      parse(element.parentNode as HTMLElement);\n    }\n  }, [element, parse, key]);\n\n  return (\n    <As className={className} style={style} ref={handleRef} {...data}>\n      {children}\n    </As>\n  );\n}\n\nexport default memo(forwardRef(Parser));\n","const canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport default function getCurrentHref() {\n  if (!canUseDOM) {\n    return 'https://www.facebook.com';\n  }\n\n  return window.location.href;\n}\n","import { memo, forwardRef, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type LikeProps = Partial<ParserProps> & {\n  referral?: string;\n  href?: string;\n  layout?: 'standard' | 'button_count' | 'button' | 'box_count';\n  showFaces?: boolean;\n  colorScheme?: string;\n  action?: string;\n  share?: boolean;\n  width?: number | string;\n  size?: string;\n  kidDirectedSite?: boolean;\n  lazy?: boolean;\n};\n\nfunction Like(props: LikeProps, ref: Ref<HTMLElement>) {\n  const {\n    className = '',\n    href = getCurrentHref(),\n    layout,\n    colorScheme,\n    action,\n    showFaces,\n    share,\n    width,\n    size,\n    kidDirectedSite,\n    referral,\n    lazy,\n    ...rest\n  } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-ref': referral,\n      'data-href': href,\n      'data-layout': layout,\n      'data-colorscheme': colorScheme,\n      'data-action': action,\n      'data-show-faces': showFaces ? 'true' : 'false',\n      'data-share': share ? 'true' : 'false',\n      'data-width': width?.toString(),\n      'data-size': size,\n      'data-lazy': lazy ? 'true' : 'false',\n      'data-kid-directed-site': kidDirectedSite ? 'true' : 'false',\n    };\n  }, [referral, href, layout, colorScheme, action, showFaces, share, width, size, kidDirectedSite, lazy]);\n\n  return <Parser className={`fb-like ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(Like));\n","type NonNullProperties<T> = {\n  [K in keyof T as T[K] extends undefined ? never : K]: T[K];\n};\n\nexport default function clearUndefinedProperties<T extends Record<string, unknown>, V = NonNullProperties<T>>(\n  obj: T,\n): V {\n  return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined)) as V;\n}\n","import { useState } from 'react';\nimport clearUndefinedProperties from '../utils/clearUndefinedProperties';\nimport useFacebook from './useFacebook';\nimport type { FacebookInstance } from '../utils/Facebook';\n\n/**\n * Internal factory hook for Facebook dialog-based actions (share, feed, send).\n * Not exported to consumers.\n */\nexport default function useDialog<TOptions>(\n  method: string,\n  buildParams: (options: TOptions, api: FacebookInstance) => Record<string, unknown>,\n) {\n  const { init } = useFacebook();\n  const [loading, setLoading] = useState<boolean>(false);\n  const [error, setError] = useState<Error | undefined>(undefined);\n\n  async function invoke(options: TOptions) {\n    try {\n      setError(undefined);\n      setLoading(true);\n\n      const api = await init();\n      if (!api) {\n        throw new Error('[react-facebook] Facebook API is not initialized');\n      }\n\n      return api.ui(\n        clearUndefinedProperties({\n          method,\n          ...buildParams(options, api),\n        }),\n      );\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(String(error));\n      setError(err);\n      throw err;\n    } finally {\n      setLoading(false);\n    }\n  }\n\n  return { loading, error, invoke };\n}\n","import useDialog from './useDialog';\n\nexport type ShareOptions = {\n  href: string;\n  display: 'iframe' | 'popup' | 'async' | 'page';\n  hashtag?: string;\n  redirectUri?: string;\n};\n\nexport type UseShareReturn = {\n  loading: boolean;\n  error: Error | undefined;\n  share: (options: ShareOptions) => Promise<unknown>;\n};\n\n/**\n * Hook for sharing content via Facebook Share dialog\n *\n * @returns Object with share function, loading state, and error\n *\n * @example\n * ```tsx\n * function ShareComponent() {\n *   const { share, loading, error } = useShare();\n *\n *   const handleShare = () => {\n *     share({\n *       href: 'https://example.com',\n *       display: 'popup',\n *       hashtag: '#example',\n *     });\n *   };\n *\n *   return <button onClick={handleShare} disabled={loading}>Share</button>;\n * }\n * ```\n */\nexport default function useShare(): UseShareReturn {\n  const { loading, error, invoke } = useDialog<ShareOptions>('share', (options, api) => {\n    const { href, display, hashtag, redirectUri, ...rest } = options;\n    return { href, display, app_id: api.getAppId(), hashtag, redirect_uri: redirectUri, ...rest };\n  });\n\n  return { loading, error, share: invoke };\n}\n","import { type ReactNode, type ComponentType, type ElementType, type CSSProperties } from 'react';\nimport type { ShareOptions } from '../hooks/useShare';\nimport useShare from '../hooks/useShare';\n\nexport type ShareButtonProps = ShareOptions & {\n  children?: ReactNode;\n  as?: ComponentType | ElementType;\n  disabled?: boolean;\n  className?: string;\n  style?: CSSProperties;\n};\n\nexport default function ShareButton(props: ShareButtonProps) {\n  const { as: AsChild = 'button', disabled, href, display, hashtag, redirectUri, ...rest } = props;\n\n  const { loading, share } = useShare();\n\n  const isDisabled = disabled || loading;\n\n  function handleShare() {\n    if (isDisabled) return;\n\n    share({\n      href,\n      display,\n      hashtag,\n      redirectUri,\n    });\n  }\n\n  return <AsChild onClick={handleShare} disabled={isDisabled} {...rest} />;\n}\n","import { memo, forwardRef, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type PageProps = Partial<ParserProps> & {\n  href?: string;\n  tabs?: string;\n  hideCover?: boolean;\n  height?: number | string;\n  width?: number | string;\n  showFacepile?: boolean;\n  hideCTA?: boolean;\n  smallHeader?: boolean;\n  adaptContainerWidth?: boolean;\n  lazy?: boolean;\n};\n\nfunction Page(props: PageProps, ref: Ref<HTMLElement>) {\n  const {\n    className = '',\n    style,\n    href = getCurrentHref(),\n    tabs,\n    hideCover,\n    width,\n    height,\n    showFacepile,\n    hideCTA,\n    smallHeader,\n    adaptContainerWidth,\n    lazy,\n    ...rest\n  } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-tabs': tabs,\n      'data-hide-cover': hideCover ? 'true' : 'false',\n      'data-show-facepile': showFacepile ? 'true' : 'false',\n      'data-hide-cta': hideCTA ? 'true' : 'false',\n      'data-href': href,\n      'data-small-header': smallHeader ? 'true' : 'false',\n      'data-adapt-container-width': adaptContainerWidth ? 'true' : 'false',\n      'data-height': height?.toString(),\n      'data-width': width?.toString(),\n      'data-lazy': lazy ? 'true' : 'false',\n    };\n  }, [href, tabs, hideCover, width, height, showFacepile, hideCTA, smallHeader, adaptContainerWidth, lazy]);\n\n  return <Parser className={`fb-page ${className}`} style={style} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(Page));\n","import { useState, useCallback, useRef } from 'react';\nimport useFacebook from './useFacebook';\nimport type { LoginResponse } from '../utils/Facebook';\nimport LoginStatus from '../constants/LoginStatus';\n\nexport type LoginOptions = {\n  scope?: string;\n  returnScopes?: boolean;\n  authType?: string[];\n  rerequest?: boolean;\n  reauthorize?: boolean;\n};\n\nexport type UseLoginReturn = {\n  login: (loginOptions: LoginOptions, callback?: (response: LoginResponse) => void) => Promise<LoginResponse>;\n  logout: () => Promise<void>;\n  loading: boolean;\n  error: Error | undefined;\n  status: LoginStatus | undefined;\n};\n\n/**\n * Hook for handling Facebook login and logout\n *\n * @returns Object with login/logout functions, loading state, error, and login status\n *\n * @example\n * ```tsx\n * function LoginComponent() {\n *   const { login, logout, loading, error, status } = useLogin();\n *\n *   if (status === 'connected') {\n *     return <button onClick={logout} disabled={loading}>Logout</button>;\n *   }\n *\n *   return <button onClick={() => login({ scope: 'email' })} disabled={loading}>Login</button>;\n * }\n * ```\n */\nexport default function useLogin(): UseLoginReturn {\n  const { api, loading: sdkLoading, init } = useFacebook();\n  const [error, setError] = useState<Error | undefined>(undefined);\n  const [actionLoading, setActionLoading] = useState<boolean>(false);\n  const [latestResponse, setLatestResponse] = useState<LoginResponse | undefined>();\n  const apiRef = useRef(api);\n  apiRef.current = api;\n\n  const handleLogin = useCallback(async (loginOptions: LoginOptions, callback?: (response: LoginResponse) => void) => {\n    try {\n      if (!apiRef.current) {\n        throw new Error('[react-facebook] Facebook API is not initialized');\n      }\n\n      setError(undefined);\n      setActionLoading(true);\n\n      const response = await apiRef.current.login(loginOptions);\n      if (response.status !== LoginStatus.CONNECTED) {\n        throw new Error('[react-facebook] Unauthorized user');\n      }\n\n      setLatestResponse(response);\n\n      callback?.(response);\n      return response;\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(String(error));\n      setError(err);\n      throw err;\n    } finally {\n      setActionLoading(false);\n    }\n  }, []);\n\n  const handleLogout = useCallback(async () => {\n    try {\n      setError(undefined);\n      setActionLoading(true);\n      const api = await init();\n      if (!api) {\n        throw new Error('[react-facebook] Facebook API is not initialized');\n      }\n      await api.logout();\n      setLatestResponse(undefined);\n    } catch (err) {\n      const error = err instanceof Error ? err : new Error(String(err));\n      setError(error);\n      throw error;\n    } finally {\n      setActionLoading(false);\n    }\n  }, [init]);\n\n  return {\n    login: handleLogin,\n    logout: handleLogout,\n    loading: sdkLoading || actionLoading,\n    error,\n    status: latestResponse?.status,\n  };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport useFacebook from './useFacebook';\n\n/**\n * Hook for subscribing to Facebook SDK events\n *\n * @param event - The Facebook event name to subscribe to (e.g., 'auth.statusChange')\n * @param callback - Optional callback invoked when the event fires\n * @returns The last event value received, or undefined\n *\n * @example\n * ```tsx\n * function AuthListener() {\n *   const lastStatus = useSubscribe('auth.statusChange', (response) => {\n *     console.log('Auth status changed:', response.status);\n *   });\n *\n *   return <p>Last status: {JSON.stringify(lastStatus)}</p>;\n * }\n * ```\n */\nexport default function useSubscribe<T>(event: string, callback?: (data: T) => void): T | undefined {\n  const [lastValue, setLastValue] = useState<T | undefined>(undefined);\n  const { init } = useFacebook();\n  const callbackRef = useRef(callback);\n  callbackRef.current = callback;\n\n  const handleResponse = useCallback((value: T) => {\n    setLastValue(value);\n    callbackRef.current?.(value);\n  }, []);\n\n  useEffect(() => {\n    let cancelled = false;\n    let unsubscribe: (() => Promise<void>) | undefined;\n\n    (async () => {\n      const api = await init();\n      if (cancelled) return;\n      if (api) {\n        unsubscribe = await api.subscribe(event, handleResponse);\n        if (cancelled) unsubscribe();\n      }\n    })();\n\n    return () => {\n      cancelled = true;\n      unsubscribe?.();\n    };\n  }, [event, handleResponse, init]);\n\n  return lastValue;\n}\n","import { useEffect, useState, useCallback } from 'react';\nimport useFacebook from './useFacebook';\nimport useSubscribe from './useSubscribe';\nimport LoginStatus from '../constants/LoginStatus';\n\nexport type UseLoginStatusReturn = {\n  loading: boolean;\n  error?: Error;\n  status?: LoginStatus;\n};\n\n/**\n * Hook for monitoring the user's Facebook login status\n *\n * @returns Object with current login status, loading state, and error\n *\n * @example\n * ```tsx\n * function StatusComponent() {\n *   const { status, loading } = useLoginStatus();\n *\n *   if (loading) return <p>Checking status...</p>;\n *\n *   return <p>Status: {status}</p>;\n * }\n * ```\n */\nexport default function useLoginStatus(): UseLoginStatusReturn {\n  const { init } = useFacebook();\n  const [loading, setLoading] = useState<boolean>(true);\n  const [error, setError] = useState<Error | undefined>(undefined);\n  const [status, setStatus] = useState<LoginStatus>(LoginStatus.UNKNOWN);\n\n  const handleStatusChanges = useCallback((response: { status: LoginStatus }) => {\n    setStatus(response.status);\n  }, []);\n\n  useSubscribe('auth.statusChange', handleStatusChanges);\n\n  useEffect(() => {\n    let cancelled = false;\n\n    async function fetchStatus() {\n      try {\n        setLoading(true);\n        const api = await init();\n        if (cancelled) return;\n        if (!api) {\n          throw new Error('Facebook API is not initialized');\n        }\n\n        const { status } = await api.getLoginStatus();\n        if (!cancelled) setStatus(status);\n      } catch (error) {\n        if (!cancelled) {\n          setError(error instanceof Error ? error : new Error(String(error)));\n        }\n      } finally {\n        if (!cancelled) setLoading(false);\n      }\n    }\n\n    fetchStatus();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [init]);\n\n  return {\n    loading,\n    error,\n    status,\n  };\n}\n","import { useState, useEffect } from 'react';\nimport LoginStatus from '../constants/LoginStatus';\nimport useFacebook from './useFacebook';\nimport useLoginStatus from './useLoginStatus';\n\nexport type UseProfileReturn = {\n  loading: boolean;\n  error: Error | undefined;\n  profile: Record<string, unknown> | undefined;\n};\n\n/**\n * Hook for fetching the logged-in user's Facebook profile\n *\n * @param fields - Array of profile fields to request (e.g., ['name', 'email', 'picture'])\n * @returns Object with profile data, loading state, and error\n *\n * @example\n * ```tsx\n * function ProfileComponent() {\n *   const { profile, loading, error } = useProfile(['name', 'email', 'picture']);\n *\n *   if (loading) return <p>Loading profile...</p>;\n *   if (error) return <p>Error: {error.message}</p>;\n *   if (!profile) return <p>Not logged in</p>;\n *\n *   return <p>Hello, {profile.name}!</p>;\n * }\n * ```\n */\nexport default function useProfile(fields: string[], enabled = true): UseProfileReturn {\n  const { init } = useFacebook();\n  const { status } = useLoginStatus();\n\n  const [loading, setLoading] = useState<boolean>(enabled);\n  const [profile, setProfile] = useState<Record<string, unknown> | undefined>(undefined);\n  const [error, setError] = useState<Error | undefined>(undefined);\n\n  // Stabilize fields reference to prevent infinite re-renders\n  const fieldsKey = fields.join(',');\n\n  useEffect(() => {\n    if (!enabled) {\n      setLoading(false);\n      return;\n    }\n\n    let cancelled = false;\n\n    async function updateProfile() {\n      try {\n        setError(undefined);\n        setLoading(true);\n\n        const api = await init();\n        if (!api || cancelled) return;\n\n        if (status === LoginStatus.CONNECTED) {\n          const result = await api.getProfile({\n            fields: fieldsKey,\n          });\n\n          if (!cancelled) {\n            setProfile(result as Record<string, unknown>);\n          }\n        } else {\n          if (!cancelled) {\n            setProfile(undefined);\n          }\n        }\n      } catch (error) {\n        if (!cancelled) {\n          setError(error instanceof Error ? error : new Error(String(error)));\n        }\n      } finally {\n        if (!cancelled) {\n          setLoading(false);\n        }\n      }\n    }\n\n    updateProfile();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [enabled, status, fieldsKey, init]);\n\n  return {\n    loading,\n    error,\n    profile,\n  };\n}\n","import {\n  type ReactNode,\n  type ReactElement,\n  type ComponentType,\n  type ElementType,\n  type CSSProperties,\n  useEffect,\n  useRef,\n} from 'react';\nimport useLogin from '../hooks/useLogin';\nimport useProfile from '../hooks/useProfile';\nimport type { LoginOptions } from '../hooks/useLogin';\nimport type { LoginResponse } from '../utils/Facebook';\n\ntype LoginRenderProps = {\n  onClick: () => void;\n  loading: boolean;\n  isDisabled: boolean;\n};\n\nexport type LoginProps = Omit<LoginOptions, 'scope'> & {\n  children?: ReactNode | ((props: LoginRenderProps) => ReactElement);\n\n  onSuccess?: (response: LoginResponse) => void;\n  onError?: (error: Error) => void;\n  onProfileSuccess?: (profile: Record<string, unknown>) => void;\n\n  scope?: string | string[];\n  fields?: string[];\n\n  as?: ElementType | ComponentType<Record<string, unknown>>;\n  disabled?: boolean;\n  className?: string;\n  style?: CSSProperties;\n};\n\nexport default function Login(props: LoginProps) {\n  const {\n    children,\n    onSuccess,\n    onError,\n    onProfileSuccess,\n    fields = [],\n    as: Component = 'button',\n    disabled = false,\n    scope = ['public_profile', 'email'],\n    returnScopes,\n    authType,\n    rerequest,\n    reauthorize,\n    ...rest\n  } = props;\n\n  const { loading, login } = useLogin();\n  const shouldFetchProfile = !!onProfileSuccess && fields.length > 0;\n  const { profile } = useProfile(fields, shouldFetchProfile);\n\n  const onProfileSuccessRef = useRef(onProfileSuccess);\n  onProfileSuccessRef.current = onProfileSuccess;\n\n  useEffect(() => {\n    if (profile && onProfileSuccessRef.current) {\n      onProfileSuccessRef.current(profile);\n    }\n  }, [profile]);\n\n  const handleLogin = async () => {\n    if (loading || disabled) return;\n\n    try {\n      const response = await login({\n        scope: Array.isArray(scope) ? scope.join(',') : scope,\n        returnScopes,\n        authType,\n        rerequest,\n        reauthorize,\n      });\n\n      onSuccess?.(response);\n    } catch (error) {\n      onError?.(error instanceof Error ? error : new Error(String(error)));\n    }\n  };\n\n  const isDisabled = disabled || loading;\n\n  // Render props pattern\n  if (typeof children === 'function') {\n    return children({\n      onClick: handleLogin,\n      loading,\n      isDisabled,\n    });\n  }\n\n  // Default button rendering\n  return (\n    <Component\n      onClick={handleLogin}\n      disabled={isDisabled}\n      aria-busy={loading}\n      aria-label={loading ? 'Logging in...' : 'Login with Facebook'}\n      {...rest}\n    >\n      {loading ? 'Loading...' : children || 'Login with Facebook'}\n    </Component>\n  );\n}\n","import { memo, forwardRef, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\n\nexport type EmbeddedPostProps = Partial<ParserProps> & {\n  href: string;\n  width?: string | number;\n  showText?: boolean;\n  lazy?: boolean;\n};\n\nfunction EmbeddedPost(props: EmbeddedPostProps, ref: Ref<HTMLElement>) {\n  const { className = '', href, width, showText, lazy, ...rest } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-href': href,\n      'data-width': width?.toString(),\n      'data-lazy': lazy ? 'true' : 'false',\n      'data-show-text': showText ? 'true' : 'false',\n    };\n  }, [href, width, lazy, showText]);\n\n  return <Parser className={`fb-post ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(EmbeddedPost));\n","import { memo, forwardRef, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\n\nexport type EmbeddedVideoProps = Partial<ParserProps> & {\n  href: string;\n  width?: number | string;\n  showText?: boolean;\n  allowFullScreen?: boolean;\n  autoPlay?: boolean;\n  showCaptions?: boolean;\n  lazy?: boolean;\n};\n\nfunction EmbeddedVideo(props: EmbeddedVideoProps, ref: Ref<HTMLElement>) {\n  const { className = '', href, width, showText, allowFullScreen, autoPlay, lazy, showCaptions, ...rest } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-href': href,\n      'data-width': width?.toString(),\n      'data-show-text': showText ? 'true' : 'false',\n      'data-show-captions': showCaptions ? 'true' : 'false',\n      'data-autoplay': autoPlay ? 'true' : 'false',\n      'data-lazy': lazy ? 'true' : 'false',\n      'data-allowfullscreen': allowFullScreen ? 'true' : 'false',\n    };\n  }, [href, width, showText, showCaptions, autoPlay, lazy, allowFullScreen]);\n\n  return <Parser className={`fb-video ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(EmbeddedVideo));\n","import { forwardRef, memo, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type CommentsProps = Partial<ParserProps> & {\n  href?: string;\n  numPosts?: number;\n  orderBy?: 'reverse_time' | 'time';\n  width?: number | string;\n  colorScheme?: 'light' | 'dark';\n  mobile?: boolean;\n  lazy?: boolean;\n};\n\nfunction Comments(props: CommentsProps, ref: Ref<HTMLElement>) {\n  const {\n    className = '',\n    colorScheme,\n    href = getCurrentHref(),\n    numPosts,\n    orderBy,\n    width,\n    mobile,\n    lazy,\n    ...rest\n  } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-colorscheme': colorScheme,\n      'data-numposts': numPosts?.toString(),\n      'data-href': href,\n      'data-order-by': orderBy,\n      'data-width': width?.toString(),\n      'data-skin': colorScheme,\n      'data-mobile': mobile ? 'true' : 'false',\n      'data-lazy': lazy ? 'true' : 'false',\n    };\n  }, [colorScheme, href, numPosts, orderBy, width, mobile, lazy]);\n\n  return <Parser className={`fb-comments ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(Comments));\n","import { forwardRef, memo, useMemo, type Ref } from 'react';\nimport Parser, { type ParserProps } from './Parser';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type CommentsCountProps = Partial<ParserProps> & {\n  href?: string;\n};\n\nfunction CommentsCount(props: CommentsCountProps, ref: Ref<HTMLElement>) {\n  const { className = '', href = getCurrentHref(), ...rest } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-href': href,\n    };\n  }, [href]);\n\n  return <Parser as=\"span\" className={`fb-comments-count ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(CommentsCount));\n","import { forwardRef, memo, type Ref, useMemo } from 'react';\nimport Parser, { type ParserProps } from './Parser';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type ShareProps = Partial<ParserProps> & {\n  href?: string;\n  lazy?: boolean; // default fb 'false'\n  size?: 'small' | 'large'; // default fb 'small'\n  layout?: 'box_count' | 'button_count' | 'button' | 'icon_link'; // default fb 'icon_link'\n};\n\nfunction Share(props: ShareProps, ref: Ref<HTMLElement>) {\n  const { className = '', href = getCurrentHref(), lazy, layout, size, ...rest } = props;\n\n  const data = useMemo(() => {\n    return {\n      'data-href': href,\n      'data-lazy': lazy ? 'true' : 'false',\n      'data-size': size,\n      'data-layout': layout,\n    };\n  }, [href, lazy, size, layout]);\n\n  return <Parser className={`fb-share-button ${className}`} data={data} {...rest} ref={ref} />;\n}\n\nexport default memo(forwardRef(Share));\n","enum LikeSize {\n  SMALL = 'small',\n  LARGE = 'large',\n}\n\nexport default LikeSize;\n","import { Component, type ReactNode, type ErrorInfo } from 'react';\n\nexport type FacebookErrorBoundaryProps = {\n  children: ReactNode;\n  /** Fallback UI to show when an error occurs. Can be a ReactNode or a render function. */\n  fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode);\n  /** Callback invoked when an error is caught */\n  onError?: (error: Error, errorInfo: ErrorInfo) => void;\n};\n\ntype State = {\n  hasError: boolean;\n  error: Error | null;\n};\n\n/**\n * Error boundary component for gracefully handling Facebook SDK errors.\n * Catches errors from ad blockers, network failures, and SDK initialization issues.\n *\n * @example\n * ```tsx\n * <FacebookErrorBoundary\n *   fallback={(error, reset) => (\n *     <div>\n *       <p>Facebook features unavailable: {error.message}</p>\n *       <button onClick={reset}>Retry</button>\n *     </div>\n *   )}\n * >\n *   <FacebookProvider appId=\"YOUR_APP_ID\">\n *     <App />\n *   </FacebookProvider>\n * </FacebookErrorBoundary>\n * ```\n */\nexport default class FacebookErrorBoundary extends Component<FacebookErrorBoundaryProps, State> {\n  state: State = { hasError: false, error: null };\n\n  static getDerivedStateFromError(error: Error): State {\n    return { hasError: true, error };\n  }\n\n  componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n    this.props.onError?.(error, errorInfo);\n  }\n\n  reset = () => {\n    this.setState({ hasError: false, error: null });\n  };\n\n  render() {\n    if (this.state.hasError && this.state.error) {\n      const { fallback } = this.props;\n      if (typeof fallback === 'function') {\n        return fallback(this.state.error, this.reset);\n      }\n      if (fallback) {\n        return fallback;\n      }\n      return null;\n    }\n    return this.props.children;\n  }\n}\n","enum LikeLayout {\n  STANDARD = 'standard',\n  BUTTON_COUNT = 'button_count',\n  BUTTON = 'button',\n  BOX_COUNT = 'box_count',\n}\n\nexport default LikeLayout;\n","enum ColorScheme {\n  LIGHT = 'light',\n  DARK = 'dark',\n}\n\nexport default ColorScheme;\n","enum LikeAction {\n  LIKE = 'like',\n  RECOMMEND = 'recommend',\n}\n\nexport default LikeAction;\n","enum CommentsOrderBy {\n  SOCIAL = 'social',\n  REVERSE_TIME = 'reverse_time',\n  TIME = 'time',\n}\n\nexport default CommentsOrderBy;\n","enum MessengerSize {\n  SMALL = 'small',\n  MEDIUM = 'medium',\n  STANDARD = 'standard',\n  LARGE = 'large',\n  XLARGE = 'xlarge',\n}\n\nexport default MessengerSize;\n","enum MessengerColor {\n  BLUE = 'blue',\n  WHITE = 'white',\n}\n\nexport default MessengerColor;\n","// @flow\n// 3.0 fields without app review https://developers.facebook.com/docs/facebook-login/permissions/?locale=en_US#reference-default\nexport default [\n  'id',\n  'first_name',\n  'last_name',\n  'middle_name',\n  'name',\n  'name_format',\n  'picture',\n  'short_name',\n  'email',\n];\n","import { useState } from 'react';\nimport useFacebook from './useFacebook';\n\n/**\n * Facebook locale string in the format `language_REGION` (e.g. `en_US`, `fr_FR`, `de_DE`).\n *\n * Facebook supports 100+ locales. Common values:\n * `en_US`, `en_GB`, `es_ES`, `es_LA`, `fr_FR`, `fr_CA`, `de_DE`, `it_IT`,\n * `pt_BR`, `pt_PT`, `ja_JP`, `ko_KR`, `zh_CN`, `zh_TW`, `zh_HK`, `ar_AR`,\n * `hi_IN`, `ru_RU`, `tr_TR`, `pl_PL`, `nl_NL`, `sv_SE`, `da_DK`, `nb_NO`,\n * `fi_FI`, `el_GR`, `cs_CZ`, `ro_RO`, `hu_HU`, `uk_UA`, `th_TH`, `vi_VN`,\n * `id_ID`, `ms_MY`, `tl_PH`, `he_IL`, `fa_IR`, `sr_RS`, `hr_HR`, `bg_BG`,\n * `sk_SK`, `sl_SI`, `ca_ES`, `eu_ES`, `gl_ES`\n *\n * Full list: https://www.facebook.com/translations/FacebookLocales.xml\n */\nexport type FacebookLocale = string;\n\n/**\n * Hook for managing Facebook SDK locale dynamically\n *\n * @returns Object with current locale, setLocale function, and loading state\n *\n * @example\n * ```tsx\n * function MyComponent() {\n *   const { locale, setLocale, isChangingLocale } = useLocale();\n *\n *   return (\n *     <div>\n *       <p>Current locale: {locale}</p>\n *       <button\n *         onClick={() => setLocale('es_ES')}\n *         disabled={isChangingLocale}\n *       >\n *         Switch to Spanish\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n */\nexport default function useLocale() {\n  const { locale, setLocale: setFacebookLocale, loading } = useFacebook();\n  const [isChangingLocale, setIsChangingLocale] = useState(false);\n\n  const setLocale = async (newLocale: FacebookLocale) => {\n    if (newLocale === locale) {\n      return;\n    }\n\n    try {\n      setIsChangingLocale(true);\n      await setFacebookLocale(newLocale);\n    } finally {\n      setIsChangingLocale(false);\n    }\n  };\n\n  return {\n    locale,\n    setLocale,\n    isChangingLocale: isChangingLocale || loading,\n  };\n}\n","import useDialog from './useDialog';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type FeedOptions = {\n  link?: string;\n  appId?: string;\n  from: string;\n  to: string;\n  picture?: string;\n  source?: string;\n  display?: string;\n  name?: string;\n  caption?: string;\n  description?: string;\n  dataRef?: string;\n  redirectURI?: string;\n};\n\nexport type UseFeedReturn = {\n  loading: boolean;\n  error: Error | undefined;\n  feed: (options: FeedOptions) => Promise<unknown>;\n};\n\n/**\n * Hook for posting to a user's feed via Facebook Feed dialog\n *\n * @returns Object with feed function, loading state, and error\n *\n * @example\n * ```tsx\n * function FeedComponent() {\n *   const { feed, loading } = useFeed();\n *\n *   const handlePost = () => {\n *     feed({\n *       from: 'me',\n *       to: 'friend_id',\n *       link: 'https://example.com',\n *       name: 'Check this out!',\n *     });\n *   };\n *\n *   return <button onClick={handlePost} disabled={loading}>Post</button>;\n * }\n * ```\n */\nexport default function useFeed(): UseFeedReturn {\n  const { loading, error, invoke } = useDialog<FeedOptions>('feed', (options, api) => {\n    const {\n      link = getCurrentHref(),\n      appId = api.getAppId(),\n      display,\n      redirectURI,\n      from,\n      to,\n      picture,\n      source,\n      name,\n      caption,\n      description,\n      dataRef,\n    } = options;\n\n    return {\n      link,\n      display,\n      app_id: appId,\n      redirect_uri: redirectURI,\n      from,\n      to,\n      picture,\n      source,\n      name,\n      caption,\n      description,\n      ref: dataRef,\n    };\n  });\n\n  return { loading, error, feed: invoke };\n}\n","import useDialog from './useDialog';\nimport getCurrentHref from '../utils/getCurrentHref';\n\nexport type SendOptions = {\n  link?: string;\n  appId?: string;\n  to: string;\n  redirectURI?: string;\n  display?: string;\n};\n\nexport type UseSendReturn = {\n  loading: boolean;\n  error: Error | undefined;\n  send: (options: SendOptions) => Promise<unknown>;\n};\n\n/**\n * Hook for sending messages via Facebook Send dialog\n *\n * @returns Object with send function, loading state, and error\n *\n * @example\n * ```tsx\n * function SendComponent() {\n *   const { send, loading } = useSend();\n *\n *   const handleSend = () => {\n *     send({\n *       to: 'friend_id',\n *       link: 'https://example.com',\n *     });\n *   };\n *\n *   return <button onClick={handleSend} disabled={loading}>Send</button>;\n * }\n * ```\n */\nexport default function useSend(): UseSendReturn {\n  const { loading, error, invoke } = useDialog<SendOptions>('send', (options, api) => {\n    const { link = getCurrentHref(), display, appId = api.getAppId(), to, redirectURI } = options;\n\n    return {\n      link,\n      display,\n      app_id: appId,\n      to,\n      redirect_uri: redirectURI,\n    };\n  });\n\n  return { loading, error, send: invoke };\n}\n","import { useContext, useEffect } from 'react';\nimport { FacebookPixelContext } from '../components/FacebookPixelProvider';\nimport type { FacebookPixelContextInterface } from '../components/FacebookPixelProvider';\n\nexport type UsePixelProps = {\n  lazy?: boolean;\n};\n\n/**\n * Hook for accessing Facebook Pixel tracking functionality\n *\n * @returns The Pixel context with tracking methods, loading state, and error\n *\n * @example\n * ```tsx\n * function TrackButton() {\n *   const { track, loading } = usePixel();\n *\n *   return (\n *     <button onClick={() => track('Purchase', { value: 9.99, currency: 'USD' })}>\n *       Buy Now\n *     </button>\n *   );\n * }\n * ```\n */\nexport default function usePixel(props: UsePixelProps = {}): FacebookPixelContextInterface {\n  const { lazy = false } = props;\n\n  const context: FacebookPixelContextInterface | undefined = useContext(FacebookPixelContext);\n  if (!context) {\n    throw new Error(\n      '[react-facebook] usePixel must be used within a <FacebookPixelProvider>. ' +\n        'Wrap your component tree with <FacebookPixelProvider pixelId=\"YOUR_PIXEL_ID\"> ' +\n        'or use the pixel prop on <FacebookProvider>.',\n    );\n  }\n\n  useEffect(() => {\n    if (!lazy) {\n      context.init();\n    }\n  }, [lazy, context.init]);\n\n  return context;\n}\n","import { useEffect, useRef } from 'react';\nimport usePixel from './usePixel';\n\nexport type UsePageViewProps = {\n  trackOnMount?: boolean;\n  trackOnRouteChange?: boolean;\n};\n\nexport type UsePageViewReturn = {\n  pageView: () => Promise<void>;\n  loading: boolean;\n};\n\n// Shared history patch: only applied once, dispatches a custom event\n// that all hook instances can listen to without interfering with each other.\nconst HISTORY_CHANGE_EVENT = 'react-facebook:history-change';\nlet historyPatched = false;\n\nfunction ensureHistoryPatched() {\n  if (historyPatched || typeof window === 'undefined') return;\n  historyPatched = true;\n\n  const originalPushState = history.pushState.bind(history);\n  const originalReplaceState = history.replaceState.bind(history);\n\n  history.pushState = (...args: Parameters<typeof history.pushState>) => {\n    originalPushState(...args);\n    window.dispatchEvent(new Event(HISTORY_CHANGE_EVENT));\n  };\n\n  history.replaceState = (...args: Parameters<typeof history.replaceState>) => {\n    originalReplaceState(...args);\n    window.dispatchEvent(new Event(HISTORY_CHANGE_EVENT));\n  };\n}\n\n/**\n * Hook for automatically tracking Facebook Pixel page views\n *\n * @param props - Configuration for page view tracking\n * @returns Object with manual pageView trigger and loading state\n *\n * @example\n * ```tsx\n * function MyPage() {\n *   // Automatically tracks page view on mount\n *   usePageView();\n *\n *   return <div>Page content</div>;\n * }\n *\n * // With route change tracking\n * function App() {\n *   usePageView({ trackOnRouteChange: true });\n *   return <Router />;\n * }\n * ```\n */\nexport default function usePageView(props: UsePageViewProps = {}): UsePageViewReturn {\n  const { trackOnMount = true, trackOnRouteChange = false } = props;\n  const { pageView, loading } = usePixel();\n  const previousUrlRef = useRef<string>('');\n  const loadingRef = useRef(loading);\n  loadingRef.current = loading;\n\n  useEffect(() => {\n    if (trackOnMount && !loading) {\n      pageView();\n    }\n  }, [trackOnMount, loading, pageView]);\n\n  useEffect(() => {\n    if (!trackOnRouteChange || typeof window === 'undefined') return;\n\n    previousUrlRef.current = window.location.href;\n\n    function handleUrlChange() {\n      const currentUrl = window.location.href;\n      if (previousUrlRef.current !== currentUrl) {\n        previousUrlRef.current = currentUrl;\n        if (!loadingRef.current) {\n          pageView();\n        }\n      }\n    }\n\n    ensureHistoryPatched();\n\n    window.addEventListener('popstate', handleUrlChange);\n    window.addEventListener(HISTORY_CHANGE_EVENT, handleUrlChange);\n\n    return () => {\n      window.removeEventListener('popstate', handleUrlChange);\n      window.removeEventListener(HISTORY_CHANGE_EVENT, handleUrlChange);\n    };\n  }, [trackOnRouteChange, pageView]);\n\n  return { pageView, loading };\n}\n","import createFacebookPixel from './FacebookPixel';\nimport type { FacebookPixelInstance, PixelEventName, PixelEventData } from './FacebookPixel';\n\n/**\n * Standalone Facebook Pixel API — no provider required.\n *\n * Drop-in replacement for `react-facebook-pixel`:\n *\n * @example\n * ```ts\n * import { ReactPixel } from 'react-facebook';\n *\n * ReactPixel.init('YOUR_PIXEL_ID');\n * ReactPixel.pageView();\n * ReactPixel.track('Purchase', { value: 29.99, currency: 'USD' });\n * ```\n */\n\nlet instance: FacebookPixelInstance | undefined;\n\nfunction getInstance(): FacebookPixelInstance {\n  if (!instance) {\n    throw new Error('[react-facebook] ReactPixel.init() must be called before using any tracking methods.');\n  }\n  return instance;\n}\n\nconst ReactPixel = {\n  /**\n   * Initialize Facebook Pixel.\n   *\n   * @param pixelId - Your Facebook Pixel ID\n   * @param advancedMatching - Optional advanced matching parameters (e.g. `{ em: 'user@example.com' }`)\n   * @param options - Optional configuration (`autoConfig`, `debug`)\n   */\n  init(\n    pixelId: string,\n    advancedMatching?: Record<string, unknown>,\n    options?: { autoConfig?: boolean; debug?: boolean },\n  ): Promise<void> {\n    instance = createFacebookPixel({\n      pixelId,\n      advancedMatching,\n      ...options,\n    });\n    return instance.init().then(() => undefined);\n  },\n\n  /** Track a page view event. */\n  pageView(): Promise<void> {\n    return getInstance().pageView();\n  },\n\n  /** Track a standard Facebook event. */\n  track(eventName: PixelEventName | string, data?: PixelEventData): Promise<void> {\n    return getInstance().track(eventName as PixelEventName, data);\n  },\n\n  /** Track a standard event for a specific pixel. */\n  trackSingle(pixelId: string, eventName: PixelEventName | string, data?: PixelEventData): Promise<void> {\n    return getInstance().trackSingle(pixelId, eventName as PixelEventName, data);\n  },\n\n  /** Track a custom event. */\n  trackCustom(eventName: string, data?: PixelEventData): Promise<void> {\n    return getInstance().trackCustom(eventName, data);\n  },\n\n  /** Track a custom event for a specific pixel. */\n  trackSingleCustom(pixelId: string, eventName: string, data?: PixelEventData): Promise<void> {\n    return getInstance().trackSingleCustom(pixelId, eventName, data);\n  },\n\n  /** Grant GDPR tracking consent. */\n  grantConsent(): Promise<void> {\n    return getInstance().grantConsent();\n  },\n\n  /** Revoke GDPR tracking consent. */\n  revokeConsent(): Promise<void> {\n    return getInstance().revokeConsent();\n  },\n\n  /** Direct access to fbq for advanced use cases. */\n  fbq(...args: unknown[]): Promise<void> {\n    return getInstance().fbq(...args);\n  },\n};\n\nexport default ReactPixel;\n","import { useState, useEffect, useCallback, useRef } from 'react';\nimport useFacebook from './useFacebook';\nimport { Method } from '../utils/Facebook';\n\nexport type GraphAPIOptions<T = unknown> = {\n  /** Graph API path, e.g. '/me', '/me/friends', '/{post-id}/comments' */\n  path: string;\n  /** HTTP method (default: GET) */\n  method?: Method;\n  /** Query parameters */\n  params?: Record<string, unknown>;\n  /** Whether to fetch automatically on mount (default: true) */\n  autoFetch?: boolean;\n  /** Transform the response before storing */\n  transform?: (data: unknown) => T;\n};\n\nexport type UseGraphAPIReturn<T = unknown> = {\n  /** The response data, undefined until loaded */\n  data: T | undefined;\n  /** Whether the request is in progress */\n  loading: boolean;\n  /** Error from the most recent request, if any */\n  error: Error | undefined;\n  /** Manually trigger the API call. Returns the response. */\n  fetch: (overrideParams?: Record<string, unknown>) => Promise<T>;\n  /** Reset data and error to initial state */\n  reset: () => void;\n};\n\n/**\n * Hook for making Facebook Graph API calls with automatic loading/error state management\n *\n * @param options - Configuration for the Graph API call\n * @returns Object with data, loading state, error, and fetch/reset functions\n *\n * @example\n * ```tsx\n * // Auto-fetch on mount\n * function MyFriends() {\n *   const { data, loading, error } = useGraphAPI({\n *     path: '/me/friends',\n *     params: { limit: 10 },\n *   });\n *\n *   if (loading) return <p>Loading...</p>;\n *   if (error) return <p>Error: {error.message}</p>;\n *   return <ul>{data?.data?.map(f => <li key={f.id}>{f.name}</li>)}</ul>;\n * }\n *\n * // Manual fetch\n * function PostComment() {\n *   const { fetch, loading } = useGraphAPI({\n *     path: '/me/feed',\n *     method: Method.POST,\n *     autoFetch: false,\n *   });\n *\n *   return (\n *     <button onClick={() => fetch({ message: 'Hello!' })} disabled={loading}>\n *       Post\n *     </button>\n *   );\n * }\n * ```\n */\nexport default function useGraphAPI<T = unknown>(options: GraphAPIOptions<T>): UseGraphAPIReturn<T> {\n  const { path, method = Method.GET, params, autoFetch = true, transform } = options;\n\n  const { init } = useFacebook();\n  const [data, setData] = useState<T | undefined>(undefined);\n  const [loading, setLoading] = useState<boolean>(autoFetch);\n  const [error, setError] = useState<Error | undefined>(undefined);\n  const mountedRef = useRef(true);\n  const transformRef = useRef(transform);\n  transformRef.current = transform;\n\n  // Stabilize params for dependency tracking\n  const paramsKey = params ? JSON.stringify(params) : '';\n\n  const fetchData = useCallback(\n    async (overrideParams?: Record<string, unknown>) => {\n      try {\n        setError(undefined);\n        setLoading(true);\n\n        const api = await init();\n        if (!api) {\n          throw new Error('[react-facebook] Facebook API is not initialized');\n        }\n\n        const requestParams = overrideParams ?? params ?? {};\n        const response = await api.api<T>(path, method, requestParams);\n        const result = transformRef.current ? transformRef.current(response) : response;\n\n        if (mountedRef.current) {\n          setData(result);\n        }\n        return result;\n      } catch (err) {\n        const error = err instanceof Error ? err : new Error(String(err));\n        if (mountedRef.current) {\n          setError(error);\n        }\n        throw error;\n      } finally {\n        if (mountedRef.current) {\n          setLoading(false);\n        }\n      }\n    },\n    [init, path, method, paramsKey],\n  );\n\n  const reset = useCallback(() => {\n    setData(undefined);\n    setError(undefined);\n    setLoading(false);\n  }, []);\n\n  useEffect(() => {\n    mountedRef.current = true;\n    if (autoFetch) {\n      fetchData().catch(() => {\n        // Error is already stored in state\n      });\n    }\n    return () => {\n      mountedRef.current = false;\n    };\n  }, [autoFetch, fetchData]);\n\n  return { data, loading, error, fetch: fetchData, reset };\n}\n"]}