react-fathom 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +941 -25
  2. package/dist/cjs/index.cjs +55 -9
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/native/index.cjs +1079 -0
  5. package/dist/cjs/native/index.cjs.map +1 -0
  6. package/dist/cjs/next/index.cjs +89 -5
  7. package/dist/cjs/next/index.cjs.map +1 -1
  8. package/dist/es/index.js +55 -9
  9. package/dist/es/index.js.map +1 -1
  10. package/dist/es/native/index.js +1071 -0
  11. package/dist/es/native/index.js.map +1 -0
  12. package/dist/es/next/index.js +90 -6
  13. package/dist/es/next/index.js.map +1 -1
  14. package/dist/react-fathom.js +55 -9
  15. package/dist/react-fathom.js.map +1 -1
  16. package/dist/react-fathom.min.js +2 -2
  17. package/dist/react-fathom.min.js.map +1 -1
  18. package/package.json +28 -5
  19. package/src/FathomContext.tsx +30 -1
  20. package/src/FathomProvider.test.tsx +115 -15
  21. package/src/FathomProvider.tsx +10 -2
  22. package/src/components/TrackClick.test.tsx +7 -7
  23. package/src/components/TrackClick.tsx +1 -1
  24. package/src/components/TrackVisible.test.tsx +7 -7
  25. package/src/components/TrackVisible.tsx +1 -1
  26. package/src/hooks/useFathom.test.tsx +14 -3
  27. package/src/hooks/useTrackOnClick.test.tsx +4 -4
  28. package/src/hooks/useTrackOnClick.ts +1 -1
  29. package/src/hooks/useTrackOnVisible.test.tsx +4 -4
  30. package/src/hooks/useTrackOnVisible.ts +1 -1
  31. package/src/index.ts +1 -0
  32. package/src/native/FathomWebView.test.tsx +410 -0
  33. package/src/native/FathomWebView.tsx +297 -0
  34. package/src/native/NativeFathomProvider.test.tsx +372 -0
  35. package/src/native/NativeFathomProvider.tsx +113 -0
  36. package/src/native/createWebViewClient.test.ts +380 -0
  37. package/src/native/createWebViewClient.ts +271 -0
  38. package/src/native/index.ts +29 -0
  39. package/src/native/react-native.d.ts +74 -0
  40. package/src/native/types.ts +145 -0
  41. package/src/native/useAppStateTracking.test.ts +249 -0
  42. package/src/native/useAppStateTracking.ts +66 -0
  43. package/src/native/useNavigationTracking.test.ts +446 -0
  44. package/src/native/useNavigationTracking.ts +177 -0
  45. package/src/next/NextFathomProviderApp.client.tsx +5 -0
  46. package/src/next/NextFathomProviderApp.test.tsx +154 -0
  47. package/src/next/NextFathomProviderApp.tsx +62 -0
  48. package/src/next/index.ts +3 -0
  49. package/src/types.ts +36 -9
  50. package/types/FathomContext.d.ts +1 -1
  51. package/types/FathomContext.d.ts.map +1 -1
  52. package/types/FathomProvider.d.ts.map +1 -1
  53. package/types/components/TrackClick.d.ts +1 -1
  54. package/types/components/TrackVisible.d.ts +1 -1
  55. package/types/hooks/useTrackOnClick.d.ts +1 -1
  56. package/types/hooks/useTrackOnVisible.d.ts +1 -1
  57. package/types/index.d.ts +1 -0
  58. package/types/index.d.ts.map +1 -1
  59. package/types/native/FathomWebView.d.ts +59 -0
  60. package/types/native/FathomWebView.d.ts.map +1 -0
  61. package/types/native/NativeFathomProvider.d.ts +36 -0
  62. package/types/native/NativeFathomProvider.d.ts.map +1 -0
  63. package/types/native/createWebViewClient.d.ts +51 -0
  64. package/types/native/createWebViewClient.d.ts.map +1 -0
  65. package/types/native/index.d.ts +10 -0
  66. package/types/native/index.d.ts.map +1 -0
  67. package/types/native/types.d.ts +125 -0
  68. package/types/native/types.d.ts.map +1 -0
  69. package/types/native/useAppStateTracking.d.ts +25 -0
  70. package/types/native/useAppStateTracking.d.ts.map +1 -0
  71. package/types/native/useNavigationTracking.d.ts +30 -0
  72. package/types/native/useNavigationTracking.d.ts.map +1 -0
  73. package/types/next/NextFathomProviderApp.client.d.ts +3 -0
  74. package/types/next/NextFathomProviderApp.client.d.ts.map +1 -0
  75. package/types/next/NextFathomProviderApp.d.ts +38 -4
  76. package/types/next/NextFathomProviderApp.d.ts.map +1 -1
  77. package/types/next/index.d.ts +1 -0
  78. package/types/next/index.d.ts.map +1 -1
  79. package/types/types.d.ts +34 -9
  80. package/types/types.d.ts.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../src/native/FathomWebView.tsx","../../../src/native/createWebViewClient.ts","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/fathom-client/dist/fathom-client.esm.js","../../../src/FathomContext.tsx","../../../src/FathomProvider.tsx","../../../src/hooks/useFathom.ts","../../../src/native/useAppStateTracking.ts","../../../src/native/NativeFathomProvider.tsx","../../../src/native/useNavigationTracking.ts"],"sourcesContent":["function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","import React, {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n useCallback,\n} from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { WebView, type WebViewMessageEvent } from 'react-native-webview'\n\nimport type { EventOptions, PageViewOptions, LoadOptions } from '../types'\n\nexport interface FathomWebViewRef {\n trackPageview: (opts?: PageViewOptions) => void\n trackEvent: (eventName: string, opts?: EventOptions) => void\n trackGoal: (code: string, cents: number) => void\n blockTrackingForMe: () => void\n enableTrackingForMe: () => void\n isReady: () => boolean\n}\n\nexport interface FathomWebViewProps {\n /**\n * Your Fathom Analytics site ID\n */\n siteId: string\n\n /**\n * Options passed to fathom.load()\n */\n loadOptions?: LoadOptions\n\n /**\n * Custom domain for Fathom script (if using custom domains feature)\n * @default 'cdn.usefathom.com'\n */\n scriptDomain?: string\n\n /**\n * Called when the Fathom script has loaded and is ready\n */\n onReady?: () => void\n\n /**\n * Called when an error occurs loading the script\n */\n onError?: (error: string) => void\n\n /**\n * Enable debug logging\n */\n debug?: boolean\n}\n\n/**\n * Hidden WebView component that loads and manages the Fathom Analytics script.\n *\n * This component renders an invisible WebView that loads the official Fathom\n * tracking script, allowing React Native apps to use Fathom's full functionality.\n *\n * @example\n * ```tsx\n * const fathomRef = useRef<FathomWebViewRef>(null)\n *\n * <FathomWebView\n * ref={fathomRef}\n * siteId=\"ABCDEFGH\"\n * onReady={() => console.log('Fathom ready!')}\n * />\n *\n * // Later, track events:\n * fathomRef.current?.trackPageview({ url: '/home' })\n * ```\n */\nexport const FathomWebView = forwardRef<FathomWebViewRef, FathomWebViewProps>(\n function FathomWebView(\n {\n siteId,\n loadOptions = {},\n scriptDomain = 'cdn.usefathom.com',\n onReady,\n onError,\n debug = false,\n },\n ref,\n ) {\n const webViewRef = useRef<WebView>(null)\n const [isReady, setIsReady] = useState(false)\n\n const log = useCallback(\n (...args: unknown[]) => {\n if (debug) {\n console.log('[react-fathom/webview]', ...args)\n }\n },\n [debug],\n )\n\n // Build data attributes for load options\n const buildDataAttributes = useCallback(() => {\n const attrs: string[] = [`data-site=\"${siteId}\"`]\n\n if (loadOptions.auto === false) {\n attrs.push('data-auto=\"false\"')\n }\n if (loadOptions.honorDNT) {\n attrs.push('data-honor-dnt=\"true\"')\n }\n if (loadOptions.canonical === false) {\n attrs.push('data-canonical=\"false\"')\n }\n if (loadOptions.spa) {\n attrs.push(`data-spa=\"${loadOptions.spa}\"`)\n }\n\n return attrs.join(' ')\n }, [siteId, loadOptions])\n\n // HTML content that loads the Fathom script\n const htmlContent = `\n <!DOCTYPE html>\n <html>\n <head>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <script src=\"https://${scriptDomain}/script.js\" ${buildDataAttributes()} defer></script>\n <script>\n // Wait for Fathom to be available\n function waitForFathom(callback, maxAttempts = 50) {\n let attempts = 0;\n const check = () => {\n attempts++;\n if (typeof window.fathom !== 'undefined') {\n callback();\n } else if (attempts < maxAttempts) {\n setTimeout(check, 100);\n } else {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'error',\n message: 'Fathom script failed to load after ' + (maxAttempts * 100) + 'ms'\n }));\n }\n };\n check();\n }\n\n // Initialize when DOM is ready\n document.addEventListener('DOMContentLoaded', () => {\n waitForFathom(() => {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'ready'\n }));\n });\n });\n\n // Handle commands from React Native\n window.handleCommand = function(command) {\n if (typeof window.fathom === 'undefined') {\n console.warn('Fathom not loaded yet');\n return;\n }\n\n try {\n switch (command.action) {\n case 'trackPageview':\n window.fathom.trackPageview(command.options || {});\n break;\n case 'trackEvent':\n window.fathom.trackEvent(command.eventName, command.options || {});\n break;\n case 'trackGoal':\n window.fathom.trackGoal(command.code, command.cents);\n break;\n case 'blockTrackingForMe':\n window.fathom.blockTrackingForMe();\n break;\n case 'enableTrackingForMe':\n window.fathom.enableTrackingForMe();\n break;\n default:\n console.warn('Unknown command:', command.action);\n }\n } catch (error) {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'error',\n message: error.message\n }));\n }\n };\n </script>\n </head>\n <body></body>\n </html>\n `\n\n const injectCommand = useCallback(\n (command: Record<string, unknown>) => {\n if (!webViewRef.current) {\n log('WebView not available')\n return\n }\n\n const script = `window.handleCommand(${JSON.stringify(command)}); true;`\n webViewRef.current.injectJavaScript(script)\n log('Injected command:', command)\n },\n [log],\n )\n\n const handleMessage = useCallback(\n (event: WebViewMessageEvent) => {\n try {\n const data = JSON.parse(event.nativeEvent.data)\n\n switch (data.type) {\n case 'ready':\n log('Fathom script loaded and ready')\n setIsReady(true)\n onReady?.()\n break\n case 'error':\n log('Error from WebView:', data.message)\n onError?.(data.message)\n break\n default:\n log('Unknown message type:', data.type)\n }\n } catch {\n log('Failed to parse WebView message:', event.nativeEvent.data)\n }\n },\n [log, onReady, onError],\n )\n\n // Expose methods via ref\n useImperativeHandle(\n ref,\n () => ({\n trackPageview: (opts?: PageViewOptions) => {\n injectCommand({ action: 'trackPageview', options: opts })\n },\n trackEvent: (eventName: string, opts?: EventOptions) => {\n injectCommand({ action: 'trackEvent', eventName, options: opts })\n },\n trackGoal: (code: string, cents: number) => {\n injectCommand({ action: 'trackGoal', code, cents })\n },\n blockTrackingForMe: () => {\n injectCommand({ action: 'blockTrackingForMe' })\n },\n enableTrackingForMe: () => {\n injectCommand({ action: 'enableTrackingForMe' })\n },\n isReady: () => isReady,\n }),\n [injectCommand, isReady],\n )\n\n return (\n <View style={styles.container}>\n <WebView\n ref={webViewRef}\n source={{ html: htmlContent }}\n onMessage={handleMessage}\n onError={(syntheticEvent) => {\n const { nativeEvent } = syntheticEvent\n log('WebView error:', nativeEvent)\n onError?.(nativeEvent.description || 'WebView error')\n }}\n javaScriptEnabled={true}\n domStorageEnabled={true}\n // Hide the WebView completely\n style={styles.webview}\n // Prevent any user interaction\n scrollEnabled={false}\n bounces={false}\n // Optimize for background operation\n cacheEnabled={true}\n incognito={false}\n />\n </View>\n )\n },\n)\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n width: 0,\n height: 0,\n overflow: 'hidden',\n },\n webview: {\n width: 1,\n height: 1,\n opacity: 0,\n },\n})\n","import type { FathomClient, EventOptions, LoadOptions, PageViewOptions } from '../types'\nimport type { FathomWebViewRef } from './FathomWebView'\n\nexport interface WebViewClientOptions {\n /**\n * Enable debug logging (default: false)\n */\n debug?: boolean\n\n /**\n * Enable offline event queuing (default: true)\n * When enabled, events are queued if the WebView isn't ready yet\n */\n enableQueue?: boolean\n\n /**\n * Maximum number of events to queue (default: 100)\n */\n maxQueueSize?: number\n}\n\ninterface QueuedCommand {\n type: 'pageview' | 'event' | 'goal' | 'block' | 'enable'\n args: unknown[]\n timestamp: number\n}\n\n/**\n * Creates a Fathom client that communicates with a FathomWebView component.\n *\n * This client queues commands until the WebView is ready, then flushes them.\n * It implements the standard FathomClient interface for compatibility with\n * the FathomProvider component.\n *\n * @example\n * ```tsx\n * import { createWebViewClient, FathomWebView } from 'react-fathom/native'\n *\n * function App() {\n * const webViewRef = useRef<FathomWebViewRef>(null)\n * const client = useMemo(\n * () => createWebViewClient(() => webViewRef.current, { debug: __DEV__ }),\n * []\n * )\n *\n * return (\n * <FathomProvider client={client} siteId=\"YOUR_SITE_ID\">\n * <FathomWebView ref={webViewRef} siteId=\"YOUR_SITE_ID\" />\n * <YourApp />\n * </FathomProvider>\n * )\n * }\n * ```\n */\nexport interface WebViewFathomClient extends FathomClient {\n processQueue: () => number\n getQueueLength: () => number\n setWebViewReady: () => void\n}\n\nexport function createWebViewClient(\n getWebViewRef: () => FathomWebViewRef | null | undefined,\n options: WebViewClientOptions = {},\n): WebViewFathomClient {\n const { debug = false, enableQueue = true, maxQueueSize = 100 } = options\n\n let isTrackingBlocked = false\n let currentSiteId: string | undefined\n let isLoaded = false\n\n // Queue for commands sent before WebView is ready\n const commandQueue: QueuedCommand[] = []\n\n const log = (...args: unknown[]) => {\n if (debug) {\n console.log('[react-fathom/webview-client]', ...args)\n }\n }\n\n const warn = (...args: unknown[]) => {\n if (debug) {\n console.warn('[react-fathom/webview-client]', ...args)\n }\n }\n\n /**\n * Queue a command for later execution\n */\n const queueCommand = (type: QueuedCommand['type'], args: unknown[]) => {\n if (!enableQueue) {\n warn('Queue disabled, dropping command:', type)\n return\n }\n\n if (commandQueue.length >= maxQueueSize) {\n commandQueue.shift()\n log('Queue full, removed oldest command')\n }\n\n commandQueue.push({\n type,\n args,\n timestamp: Date.now(),\n })\n\n log(`Command queued (${commandQueue.length}/${maxQueueSize}):`, type)\n }\n\n /**\n * Process all queued commands\n */\n const processQueue = () => {\n const ref = getWebViewRef()\n if (!ref?.isReady()) {\n return 0\n }\n\n log(`Processing ${commandQueue.length} queued commands`)\n let processed = 0\n\n while (commandQueue.length > 0) {\n const command = commandQueue.shift()!\n\n switch (command.type) {\n case 'pageview':\n ref.trackPageview(command.args[0] as PageViewOptions | undefined)\n break\n case 'event':\n ref.trackEvent(\n command.args[0] as string,\n command.args[1] as EventOptions | undefined,\n )\n break\n case 'goal':\n ref.trackGoal(command.args[0] as string, command.args[1] as number)\n break\n case 'block':\n ref.blockTrackingForMe()\n break\n case 'enable':\n ref.enableTrackingForMe()\n break\n }\n\n processed++\n }\n\n log(`Processed ${processed} queued commands`)\n return processed\n }\n\n /**\n * Execute a command immediately or queue it\n */\n const executeOrQueue = (\n type: QueuedCommand['type'],\n args: unknown[],\n executor: () => void,\n ) => {\n const ref = getWebViewRef()\n\n if (ref?.isReady()) {\n executor()\n } else {\n queueCommand(type, args)\n }\n }\n\n const client: WebViewFathomClient = {\n load: (siteId: string, opts?: LoadOptions) => {\n currentSiteId = siteId\n isLoaded = true\n log('Client loaded with site ID:', siteId)\n\n // Process any queued commands now that we're \"loaded\"\n // (actual WebView readiness is separate)\n processQueue()\n },\n\n trackPageview: (opts?: PageViewOptions) => {\n if (isTrackingBlocked) {\n log('Tracking blocked, skipping pageview')\n return\n }\n\n executeOrQueue('pageview', [opts], () => {\n const ref = getWebViewRef()\n ref?.trackPageview(opts)\n log('Tracked pageview:', opts)\n })\n },\n\n trackEvent: (eventName: string, opts?: EventOptions) => {\n if (isTrackingBlocked) {\n log('Tracking blocked, skipping event')\n return\n }\n\n executeOrQueue('event', [eventName, opts], () => {\n const ref = getWebViewRef()\n ref?.trackEvent(eventName, opts)\n log('Tracked event:', eventName, opts)\n })\n },\n\n trackGoal: (code: string, cents: number) => {\n if (isTrackingBlocked) {\n log('Tracking blocked, skipping goal')\n return\n }\n\n executeOrQueue('goal', [code, cents], () => {\n const ref = getWebViewRef()\n ref?.trackGoal(code, cents)\n log('Tracked goal:', code, cents)\n })\n },\n\n setSite: (id: string) => {\n currentSiteId = id\n log('Site ID changed to:', id)\n // Note: The WebView loads with a specific site ID, so changing it\n // at runtime would require reloading the WebView\n warn(\n 'setSite() called but WebView was initialized with a different site ID. ' +\n 'Consider re-mounting the FathomWebView component.',\n )\n },\n\n blockTrackingForMe: () => {\n isTrackingBlocked = true\n executeOrQueue('block', [], () => {\n const ref = getWebViewRef()\n ref?.blockTrackingForMe()\n })\n log('Tracking blocked')\n },\n\n enableTrackingForMe: () => {\n isTrackingBlocked = false\n executeOrQueue('enable', [], () => {\n const ref = getWebViewRef()\n ref?.enableTrackingForMe()\n })\n log('Tracking enabled')\n\n // Process queue when tracking is re-enabled\n processQueue()\n },\n\n isTrackingEnabled: () => {\n return !isTrackingBlocked\n },\n\n // Additional methods for React Native\n processQueue,\n\n getQueueLength: () => commandQueue.length,\n\n /**\n * Call this when the WebView signals it's ready.\n * This will flush any queued commands.\n */\n setWebViewReady: () => {\n log('WebView ready, processing queue')\n processQueue()\n },\n }\n\n return client\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","// src/index.ts\nvar enqueue = (command) => {\n window.__fathomClientQueue = window.__fathomClientQueue || [];\n window.__fathomClientQueue.push(command);\n};\nvar flushQueue = () => {\n window.__fathomIsLoading = false;\n window.__fathomClientQueue = window.__fathomClientQueue || [];\n window.__fathomClientQueue.forEach((command) => {\n switch (command.type) {\n case \"trackPageview\":\n trackPageview(command.opts);\n return;\n case \"trackGoal\":\n trackGoal(command.code, command.cents);\n return;\n case \"trackEvent\":\n trackEvent(command.eventName, command.opts);\n return;\n case \"enableTrackingForMe\":\n enableTrackingForMe();\n return;\n case \"blockTrackingForMe\":\n blockTrackingForMe();\n return;\n case \"setSite\":\n setSite(command.id);\n return;\n }\n });\n window.__fathomClientQueue = [];\n};\nvar checkDomainsAndWarn = (domains) => {\n const regex = /(https?)(?=:|\\/|$)/;\n domains.forEach((domain) => {\n if (regex.exec(domain) !== null)\n console.warn(\n `The include domain ${domain} might fail to work as intended as it begins with a transfer protocol (http://, https://). Consider removing the protocol portion of the string.`\n );\n });\n};\nvar load = (siteId, opts) => {\n if (window.__fathomIsLoading || window.fathom) return;\n window.__fathomIsLoading = true;\n let tracker = document.createElement(\"script\");\n let firstScript = document.getElementsByTagName(\"script\")[0] || document.querySelector(\"body\");\n tracker.id = \"fathom-script\";\n tracker.async = true;\n tracker.setAttribute(\"data-site\", siteId);\n tracker.src = opts && opts.url ? opts.url : \"https://cdn.usefathom.com/script.js\";\n if (opts) {\n if (opts.auto !== void 0)\n tracker.setAttribute(\"data-auto\", `${opts.auto}`);\n if (opts.honorDNT !== void 0)\n tracker.setAttribute(\"data-honor-dnt\", `${opts.honorDNT}`);\n if (opts.canonical !== void 0)\n tracker.setAttribute(\"data-canonical\", `${opts.canonical}`);\n if (opts.includedDomains) {\n checkDomainsAndWarn(opts.includedDomains);\n tracker.setAttribute(\n \"data-included-domains\",\n opts.includedDomains.join(\",\")\n );\n }\n if (opts.excludedDomains) {\n checkDomainsAndWarn(opts.excludedDomains);\n tracker.setAttribute(\n \"data-excluded-domains\",\n opts.excludedDomains.join(\",\")\n );\n }\n if (opts.spa) tracker.setAttribute(\"data-spa\", opts.spa);\n }\n tracker.onload = flushQueue;\n firstScript.parentNode.insertBefore(tracker, firstScript);\n};\nvar trackPageview = (opts) => {\n if (window.fathom) {\n if (opts) {\n window.fathom.trackPageview(opts);\n } else {\n window.fathom.trackPageview();\n }\n } else {\n enqueue({ type: \"trackPageview\", opts });\n }\n};\nvar trackGoal = (code, cents) => {\n if (window.fathom) {\n window.fathom.trackGoal(code, cents);\n } else {\n enqueue({ type: \"trackGoal\", code, cents });\n }\n};\nvar trackEvent = (eventName, opts) => {\n if (window.fathom) {\n window.fathom.trackEvent(eventName, opts);\n } else {\n enqueue({ type: \"trackEvent\", eventName, opts });\n }\n};\nvar blockTrackingForMe = () => {\n if (window.fathom) {\n window.fathom.blockTrackingForMe();\n } else {\n enqueue({ type: \"blockTrackingForMe\" });\n }\n};\nvar enableTrackingForMe = () => {\n if (window.fathom) {\n window.fathom.enableTrackingForMe();\n } else {\n enqueue({ type: \"enableTrackingForMe\" });\n }\n};\nvar isTrackingEnabled = () => {\n const preferenceStorage = localStorage.getItem(\n \"blockFathomTracking\"\n );\n return preferenceStorage !== null ? preferenceStorage !== \"true\" : true;\n};\nvar setSite = (id) => {\n if (window.fathom) {\n window.fathom.setSite(id);\n } else {\n enqueue({ type: \"setSite\", id });\n }\n};\nexport {\n blockTrackingForMe,\n enableTrackingForMe,\n isTrackingEnabled,\n load,\n setSite,\n trackEvent,\n trackGoal,\n trackPageview\n};\n","import { createContext } from 'react'\n\nimport type { FathomContextInterface } from './types'\n\nconst warnMissingProvider = (methodName: string) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[react-fathom] ${methodName}() called without a FathomProvider. ` +\n 'Wrap your app with <FathomProvider> to enable analytics tracking.',\n )\n }\n}\n\n/**\n * Default context value with stub methods that warn in development.\n * These allow useFathom() to be called without optional chaining,\n * while still informing developers when the provider is missing.\n */\nconst defaultContextValue: FathomContextInterface = {\n blockTrackingForMe: () => warnMissingProvider('blockTrackingForMe'),\n enableTrackingForMe: () => warnMissingProvider('enableTrackingForMe'),\n isTrackingEnabled: () => {\n warnMissingProvider('isTrackingEnabled')\n return false\n },\n load: () => warnMissingProvider('load'),\n setSite: () => warnMissingProvider('setSite'),\n trackPageview: () => warnMissingProvider('trackPageview'),\n trackEvent: () => warnMissingProvider('trackEvent'),\n trackGoal: () => warnMissingProvider('trackGoal'),\n}\n\nexport const FathomContext =\n createContext<FathomContextInterface>(defaultContextValue)\n","'use client'\n\nimport React, { useCallback, useContext, useEffect, useMemo } from 'react'\n\nimport * as Fathom from 'fathom-client'\nimport type { EventOptions, LoadOptions, PageViewOptions } from 'fathom-client'\n\nimport { FathomContext } from './FathomContext'\nimport type { FathomProviderProps } from './types'\n\nconst FathomProvider: React.FC<FathomProviderProps> = ({\n children,\n client: providedClient,\n clientRef,\n clientOptions,\n siteId,\n defaultPageviewOptions: providedDefaultPageviewOptions,\n defaultEventOptions: providedDefaultEventOptions,\n}) => {\n // Read parent context if it exists\n const parentContext = useContext(FathomContext)\n\n // Use provided client or fall back to parent client or default Fathom\n const client = useMemo(\n () => providedClient ?? parentContext.client ?? Fathom,\n [providedClient, parentContext.client],\n )\n\n // Merge defaultPageviewOptions: provided > parent > undefined\n const defaultPageviewOptions = useMemo(\n () =>\n providedDefaultPageviewOptions ?? parentContext.defaultPageviewOptions,\n [providedDefaultPageviewOptions, parentContext.defaultPageviewOptions],\n )\n\n // Merge defaultEventOptions: provided > parent > undefined\n const defaultEventOptions = useMemo(\n () => providedDefaultEventOptions ?? parentContext.defaultEventOptions,\n [providedDefaultEventOptions, parentContext.defaultEventOptions],\n )\n\n const blockTrackingForMe = useCallback(() => {\n client.blockTrackingForMe()\n }, [client])\n\n const enableTrackingForMe = useCallback(() => {\n client.enableTrackingForMe()\n }, [client])\n\n const isTrackingEnabled = useCallback(() => {\n return client.isTrackingEnabled() ?? false\n }, [client])\n\n const load = useCallback(\n (siteId: string, clientOptions?: LoadOptions) => {\n client.load(siteId, clientOptions)\n },\n [client],\n )\n\n const setSite = useCallback(\n (siteId: string) => {\n client.setSite(siteId)\n },\n [client],\n )\n\n const trackEvent = useCallback(\n (eventName: string, options?: EventOptions) => {\n client.trackEvent(eventName, {\n ...defaultEventOptions,\n ...options,\n })\n },\n [client, defaultEventOptions],\n )\n\n const trackPageview = useCallback(\n (options?: PageViewOptions) => {\n client.trackPageview({\n ...defaultPageviewOptions,\n ...options,\n })\n },\n [client, defaultPageviewOptions],\n )\n\n const trackGoal = useCallback(\n (code: string, cents: number) => {\n client.trackGoal(code, cents)\n },\n [client],\n )\n\n useEffect(() => {\n if (siteId !== undefined) {\n load(siteId, clientOptions)\n }\n }, [clientOptions, load, siteId])\n\n // Populate the clientRef so the parent component can access the client\n useEffect(() => {\n if (clientRef) {\n clientRef.current = client\n }\n }, [client, clientRef])\n\n return (\n <FathomContext.Provider\n value={{\n blockTrackingForMe,\n enableTrackingForMe,\n isTrackingEnabled,\n load,\n setSite,\n trackEvent,\n trackGoal,\n trackPageview,\n client,\n defaultPageviewOptions,\n defaultEventOptions,\n }}\n >\n {children}\n </FathomContext.Provider>\n )\n}\n\nFathomProvider.displayName = 'FathomProvider'\n\nexport { FathomProvider }\n","import { useContext } from 'react'\n\nimport { FathomContext } from '../FathomContext'\nimport type { FathomContextInterface } from '../types'\n\nexport const useFathom = (): FathomContextInterface => {\n const context = useContext(FathomContext)\n return context\n}\n\nuseFathom.displayName = 'useFathom'\n","import { useEffect, useRef } from 'react'\nimport { AppState, type AppStateStatus } from 'react-native'\n\nimport { useFathom } from '../hooks/useFathom'\nimport type { UseAppStateTrackingOptions } from './types'\n\n/**\n * Hook that tracks app state changes (foreground/background) as Fathom events.\n *\n * This is useful for understanding user engagement patterns and session behavior.\n *\n * @example\n * ```tsx\n * import { useAppStateTracking } from 'react-fathom/native'\n *\n * function App() {\n * useAppStateTracking({\n * foregroundEventName: 'app-resumed',\n * backgroundEventName: 'app-paused',\n * onStateChange: (state) => {\n * console.log('App state:', state)\n * },\n * })\n *\n * return <YourApp />\n * }\n * ```\n */\nexport function useAppStateTracking(options: UseAppStateTrackingOptions = {}) {\n const {\n foregroundEventName = 'app-foreground',\n backgroundEventName = 'app-background',\n eventOptions,\n onStateChange,\n } = options\n\n const { trackEvent } = useFathom()\n const appStateRef = useRef<AppStateStatus>(AppState.currentState)\n\n useEffect(() => {\n const handleAppStateChange = (nextAppState: AppStateStatus) => {\n const previousState = appStateRef.current\n\n // Track when app comes to foreground\n if (previousState.match(/inactive|background/) && nextAppState === 'active') {\n trackEvent?.(foregroundEventName, eventOptions)\n }\n\n // Track when app goes to background\n if (previousState === 'active' && nextAppState.match(/inactive|background/)) {\n trackEvent?.(backgroundEventName, eventOptions)\n }\n\n // Call the optional state change callback\n onStateChange?.(nextAppState as 'active' | 'background' | 'inactive')\n\n appStateRef.current = nextAppState\n }\n\n const subscription = AppState.addEventListener('change', handleAppStateChange)\n\n return () => {\n subscription.remove()\n }\n }, [trackEvent, foregroundEventName, backgroundEventName, eventOptions, onStateChange])\n}\n","import React, { useMemo, useRef, useCallback, useEffect } from 'react'\n\nimport { FathomProvider } from '../FathomProvider'\nimport { FathomWebView, type FathomWebViewRef } from './FathomWebView'\nimport { createWebViewClient, type WebViewFathomClient } from './createWebViewClient'\nimport { useAppStateTracking } from './useAppStateTracking'\nimport type { NativeFathomProviderProps } from './types'\n\n/**\n * Internal component that handles app state tracking\n */\nconst AppStateTracker: React.FC = () => {\n useAppStateTracking({\n foregroundEventName: 'app-foreground',\n backgroundEventName: 'app-background',\n })\n\n return null\n}\n\n/**\n * A convenience provider for React Native apps that uses a hidden WebView\n * to load the official Fathom Analytics script.\n *\n * This approach ensures full compatibility with Fathom's tracking by using\n * their official JavaScript client, while providing a native React API.\n *\n * @example\n * ```tsx\n * import { NativeFathomProvider } from 'react-fathom/native'\n *\n * function App() {\n * return (\n * <NativeFathomProvider\n * siteId=\"YOUR_SITE_ID\"\n * debug={__DEV__}\n * trackAppState\n * >\n * <YourApp />\n * </NativeFathomProvider>\n * )\n * }\n * ```\n *\n * @remarks\n * This component renders a hidden WebView that loads Fathom's tracking script.\n * Events are queued until the WebView is ready, then automatically flushed.\n *\n * The WebView approach is used because Fathom Analytics does not currently\n * provide a public API for server-side or mobile event tracking. This ensures\n * your analytics are recorded correctly using Fathom's official client.\n */\nexport const NativeFathomProvider: React.FC<NativeFathomProviderProps> = ({\n siteId,\n loadOptions,\n scriptDomain,\n defaultPageviewOptions,\n defaultEventOptions,\n trackAppState = false,\n debug = false,\n onReady,\n onError,\n clientRef,\n children,\n}) => {\n const webViewRef = useRef<FathomWebViewRef>(null)\n\n // Create the WebView-based client\n const client = useMemo(\n (): WebViewFathomClient =>\n createWebViewClient(() => webViewRef.current, {\n debug,\n enableQueue: true,\n maxQueueSize: 100,\n }),\n [debug],\n )\n\n // Populate the clientRef so the parent component can access the client\n useEffect(() => {\n if (clientRef) {\n clientRef.current = client\n }\n }, [client, clientRef])\n\n // Handle WebView ready event\n const handleReady = useCallback(() => {\n // Flush any queued commands\n client.setWebViewReady()\n onReady?.()\n }, [client, onReady])\n\n return (\n <FathomProvider\n client={client}\n siteId={siteId}\n defaultPageviewOptions={defaultPageviewOptions}\n defaultEventOptions={defaultEventOptions}\n >\n <FathomWebView\n ref={webViewRef}\n siteId={siteId}\n loadOptions={loadOptions}\n scriptDomain={scriptDomain}\n debug={debug}\n onReady={handleReady}\n onError={onError}\n />\n {trackAppState && <AppStateTracker />}\n {children}\n </FathomProvider>\n )\n}\n","import { useEffect, useRef, useCallback } from 'react'\n\nimport { useFathom } from '../hooks/useFathom'\nimport type { UseNavigationTrackingOptions } from './types'\n\n/**\n * Hook that tracks screen navigation as pageviews using React Navigation.\n *\n * This integrates with React Navigation's navigation container to automatically\n * track screen changes as Fathom pageviews.\n *\n * @example\n * ```tsx\n * import { NavigationContainer } from '@react-navigation/native'\n * import { useNavigationTracking } from 'react-fathom/native'\n *\n * function App() {\n * const navigationRef = useNavigationContainerRef()\n *\n * useNavigationTracking({\n * navigationRef,\n * transformRouteName: (name) => `/screens/${name}`,\n * })\n *\n * return (\n * <NavigationContainer ref={navigationRef}>\n * <Navigator />\n * </NavigationContainer>\n * )\n * }\n * ```\n */\nexport function useNavigationTracking(options: UseNavigationTrackingOptions) {\n const {\n navigationRef,\n transformRouteName,\n shouldTrackRoute,\n includeParams = false,\n } = options\n\n const { trackPageview } = useFathom()\n const routeNameRef = useRef<string | undefined>(undefined)\n\n /**\n * Get the current route name from the navigation state\n */\n const getCurrentRouteName = useCallback((): string | undefined => {\n if (!navigationRef.current) {\n return undefined\n }\n\n const state = navigationRef.current.getRootState?.()\n if (!state) {\n return undefined\n }\n\n // Navigate through nested navigators to get the deepest route\n let currentState = state\n while (currentState.routes[currentState.index]?.state) {\n currentState = currentState.routes[currentState.index].state as any\n }\n\n return currentState.routes[currentState.index]?.name\n }, [navigationRef])\n\n /**\n * Get the current route params from the navigation state\n */\n const getCurrentRouteParams = useCallback((): Record<string, any> | undefined => {\n if (!navigationRef.current) {\n return undefined\n }\n\n const state = navigationRef.current.getRootState?.()\n if (!state) {\n return undefined\n }\n\n // Navigate through nested navigators to get the deepest route\n let currentState = state\n while (currentState.routes[currentState.index]?.state) {\n currentState = currentState.routes[currentState.index].state as any\n }\n\n return currentState.routes[currentState.index]?.params as Record<string, any> | undefined\n }, [navigationRef])\n\n /**\n * Build the URL to track\n */\n const buildTrackingUrl = useCallback(\n (routeName: string, params?: Record<string, any>): string => {\n let url = transformRouteName ? transformRouteName(routeName) : `/${routeName}`\n\n if (includeParams && params && Object.keys(params).length > 0) {\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&')\n\n if (queryString) {\n url += `?${queryString}`\n }\n }\n\n return url\n },\n [transformRouteName, includeParams],\n )\n\n /**\n * Handle navigation state change\n */\n const handleStateChange = useCallback(() => {\n const currentRouteName = getCurrentRouteName()\n const previousRouteName = routeNameRef.current\n\n if (currentRouteName && currentRouteName !== previousRouteName) {\n const params = includeParams ? getCurrentRouteParams() : undefined\n\n // Check if this route should be tracked\n if (shouldTrackRoute && !shouldTrackRoute(currentRouteName, params)) {\n routeNameRef.current = currentRouteName\n return\n }\n\n const url = buildTrackingUrl(currentRouteName, params)\n\n trackPageview?.({\n url,\n referrer: previousRouteName ? buildTrackingUrl(previousRouteName) : undefined,\n })\n\n routeNameRef.current = currentRouteName\n }\n }, [\n getCurrentRouteName,\n getCurrentRouteParams,\n shouldTrackRoute,\n buildTrackingUrl,\n trackPageview,\n includeParams,\n ])\n\n // Track initial route on mount\n useEffect(() => {\n // Small delay to ensure navigation is ready\n const timeout = setTimeout(() => {\n const initialRoute = getCurrentRouteName()\n if (initialRoute) {\n const params = includeParams ? getCurrentRouteParams() : undefined\n\n if (!shouldTrackRoute || shouldTrackRoute(initialRoute, params)) {\n const url = buildTrackingUrl(initialRoute, params)\n trackPageview?.({ url })\n routeNameRef.current = initialRoute\n }\n }\n }, 0)\n\n return () => clearTimeout(timeout)\n }, []) // Only on mount\n\n // Set up navigation state change listener\n useEffect(() => {\n if (!navigationRef.current) {\n return\n }\n\n // Listen for navigation state changes\n const unsubscribe = navigationRef.current.addListener?.('state', handleStateChange)\n\n return () => {\n unsubscribe?.()\n }\n }, [navigationRef, handleStateChange])\n}\n"],"names":["arrayLikeToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","FathomWebView","forwardRef","_ref","ref","siteId","_ref$loadOptions","loadOptions","_ref$scriptDomain","scriptDomain","onReady","onError","_ref$debug","debug","webViewRef","useRef","_useState","useState","_useState2","_slicedToArray","isReady","setIsReady","log","useCallback","_console","_len","arguments","length","args","Array","_key","console","apply","concat","buildDataAttributes","attrs","auto","push","honorDNT","canonical","spa","join","htmlContent","injectCommand","command","current","script","JSON","stringify","injectJavaScript","handleMessage","event","data","parse","nativeEvent","type","message","_unused","useImperativeHandle","trackPageview","opts","action","options","trackEvent","eventName","trackGoal","code","cents","blockTrackingForMe","enableTrackingForMe","React","createElement","View","style","styles","container","WebView","source","html","onMessage","syntheticEvent","description","javaScriptEnabled","domStorageEnabled","webview","scrollEnabled","bounces","cacheEnabled","incognito","StyleSheet","create","position","width","height","overflow","opacity","createWebViewClient","getWebViewRef","undefined","_options$debug","_options$enableQueue","enableQueue","_options$maxQueueSize","maxQueueSize","isTrackingBlocked","commandQueue","warn","_console2","_len2","_key2","queueCommand","shift","timestamp","Date","now","processQueue","processed","executeOrQueue","executor","client","load","setSite","id","isTrackingEnabled","getQueueLength","setWebViewReady","warnMissingProvider","methodName","process","env","NODE_ENV","defaultContextValue","FathomContext","createContext","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","FathomProvider","children","providedClient","clientRef","clientOptions","providedDefaultPageviewOptions","defaultPageviewOptions","providedDefaultEventOptions","defaultEventOptions","parentContext","useContext","useMemo","_ref2","Fathom","_client$isTrackingEna","useEffect","Provider","value","displayName","useFathom","context","useAppStateTracking","_options$foregroundEv","foregroundEventName","_options$backgroundEv","backgroundEventName","eventOptions","onStateChange","_useFathom","appStateRef","AppState","currentState","handleAppStateChange","nextAppState","previousState","match","subscription","addEventListener","remove","AppStateTracker","NativeFathomProvider","_ref$trackAppState","trackAppState","handleReady","useNavigationTracking","navigationRef","transformRouteName","shouldTrackRoute","_options$includeParam","includeParams","routeNameRef","getCurrentRouteName","_navigationRef$curren","_navigationRef$curren2","_currentState$routes$2","state","getRootState","call","_currentState$routes$","routes","index","name","getCurrentRouteParams","_navigationRef$curren3","_navigationRef$curren4","_currentState$routes$4","_currentState$routes$3","params","buildTrackingUrl","routeName","url","queryString","entries","_","map","_ref3","_ref4","key","encodeURIComponent","String","handleStateChange","currentRouteName","previousRouteName","referrer","timeout","setTimeout","initialRoute","clearTimeout","_navigationRef$curren5","_navigationRef$curren6","unsubscribe","addListener"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,8,9,10,11,12]}
@@ -1,4 +1,5 @@
1
- /*! react-fathom - 0.1.10 !*/
1
+ 'use client'
2
+ /*! react-fathom - 0.2.0 !*/
2
3
  import React, { createContext, useContext, useRef, useEffect, useMemo, useCallback } from 'react';
3
4
  import * as Fathom from 'fathom-client';
4
5
 
@@ -92,7 +93,45 @@ function requireRouter () {
92
93
 
93
94
  var routerExports = requireRouter();
94
95
 
95
- var FathomContext = /*#__PURE__*/createContext({});
96
+ var warnMissingProvider = function warnMissingProvider(methodName) {
97
+ if (process.env.NODE_ENV !== 'production') {
98
+ console.warn("[react-fathom] ".concat(methodName, "() called without a FathomProvider. ") + 'Wrap your app with <FathomProvider> to enable analytics tracking.');
99
+ }
100
+ };
101
+
102
+ /**
103
+ * Default context value with stub methods that warn in development.
104
+ * These allow useFathom() to be called without optional chaining,
105
+ * while still informing developers when the provider is missing.
106
+ */
107
+ var defaultContextValue = {
108
+ blockTrackingForMe: function blockTrackingForMe() {
109
+ return warnMissingProvider('blockTrackingForMe');
110
+ },
111
+ enableTrackingForMe: function enableTrackingForMe() {
112
+ return warnMissingProvider('enableTrackingForMe');
113
+ },
114
+ isTrackingEnabled: function isTrackingEnabled() {
115
+ warnMissingProvider('isTrackingEnabled');
116
+ return false;
117
+ },
118
+ load: function load() {
119
+ return warnMissingProvider('load');
120
+ },
121
+ setSite: function setSite() {
122
+ return warnMissingProvider('setSite');
123
+ },
124
+ trackPageview: function trackPageview() {
125
+ return warnMissingProvider('trackPageview');
126
+ },
127
+ trackEvent: function trackEvent() {
128
+ return warnMissingProvider('trackEvent');
129
+ },
130
+ trackGoal: function trackGoal() {
131
+ return warnMissingProvider('trackGoal');
132
+ }
133
+ };
134
+ var FathomContext = /*#__PURE__*/createContext(defaultContextValue);
96
135
 
97
136
  var useFathom = function useFathom() {
98
137
  var context = useContext(FathomContext);
@@ -3298,6 +3337,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3298
3337
  var FathomProvider = function FathomProvider(_ref) {
3299
3338
  var children = _ref.children,
3300
3339
  providedClient = _ref.client,
3340
+ clientRef = _ref.clientRef,
3301
3341
  clientOptions = _ref.clientOptions,
3302
3342
  siteId = _ref.siteId,
3303
3343
  providedDefaultPageviewOptions = _ref.defaultPageviewOptions,
@@ -3336,8 +3376,8 @@ var FathomProvider = function FathomProvider(_ref) {
3336
3376
  var setSite = useCallback(function (siteId) {
3337
3377
  client.setSite(siteId);
3338
3378
  }, [client]);
3339
- var trackEvent = useCallback(function (category, options) {
3340
- client.trackEvent(category, _objectSpread(_objectSpread({}, defaultEventOptions), options));
3379
+ var trackEvent = useCallback(function (eventName, options) {
3380
+ client.trackEvent(eventName, _objectSpread(_objectSpread({}, defaultEventOptions), options));
3341
3381
  }, [client, defaultEventOptions]);
3342
3382
  var trackPageview = useCallback(function (options) {
3343
3383
  client.trackPageview(_objectSpread(_objectSpread({}, defaultPageviewOptions), options));
@@ -3350,6 +3390,13 @@ var FathomProvider = function FathomProvider(_ref) {
3350
3390
  load(siteId, clientOptions);
3351
3391
  }
3352
3392
  }, [clientOptions, load, siteId]);
3393
+
3394
+ // Populate the clientRef so the parent component can access the client
3395
+ useEffect(function () {
3396
+ if (clientRef) {
3397
+ clientRef.current = client;
3398
+ }
3399
+ }, [client, clientRef]);
3353
3400
  return /*#__PURE__*/React.createElement(FathomContext.Provider, {
3354
3401
  value: {
3355
3402
  blockTrackingForMe: blockTrackingForMe,
@@ -3368,6 +3415,43 @@ var FathomProvider = function FathomProvider(_ref) {
3368
3415
  };
3369
3416
  FathomProvider.displayName = 'FathomProvider';
3370
3417
 
3418
+ var _excluded$2 = ["children", "disableAutoTrack"];
3419
+ /**
3420
+ * Client component wrapper that combines FathomProvider and NextFathomTrackViewApp
3421
+ * for easy integration in Next.js App Router layouts.
3422
+ *
3423
+ * This component is marked with 'use client' and can be used directly in Server Components
3424
+ * like the root layout.tsx file.
3425
+ *
3426
+ * @example
3427
+ * ```tsx
3428
+ * // app/layout.tsx
3429
+ * import { NextFathomProviderApp } from 'react-fathom/next'
3430
+ *
3431
+ * export default function RootLayout({ children }) {
3432
+ * return (
3433
+ * <html>
3434
+ * <body>
3435
+ * <NextFathomProviderApp siteId="YOUR_SITE_ID">
3436
+ * {children}
3437
+ * </NextFathomProviderApp>
3438
+ * </body>
3439
+ * </html>
3440
+ * )
3441
+ * }
3442
+ * ```
3443
+ */
3444
+ var NextFathomProviderApp = function NextFathomProviderApp(_ref) {
3445
+ var children = _ref.children,
3446
+ _ref$disableAutoTrack = _ref.disableAutoTrack,
3447
+ disableAutoTrack = _ref$disableAutoTrack === void 0 ? false : _ref$disableAutoTrack,
3448
+ fathomProviderProps = _objectWithoutProperties(_ref, _excluded$2);
3449
+ return /*#__PURE__*/React.createElement(FathomProvider, fathomProviderProps, /*#__PURE__*/React.createElement(NextFathomTrackViewApp, {
3450
+ disableAutoTrack: disableAutoTrack
3451
+ }), children);
3452
+ };
3453
+ NextFathomProviderApp.displayName = 'NextFathomProviderApp';
3454
+
3371
3455
  var _excluded$1 = ["disableAutoTrack"];
3372
3456
  /**
3373
3457
  * Higher-order component that wraps your Next.js Pages Router app with FathomProvider
@@ -3444,6 +3528,6 @@ var withAppRouter = function withAppRouter(Component, providerProps) {
3444
3528
  return WithAppRouter;
3445
3529
  };
3446
3530
 
3447
- export { NextFathomTrackViewApp, NextFathomTrackViewPages, withAppRouter, withPagesRouter };
3448
- /* Copyright 2025 - Ryan Hefner <hi@ryanhefner.com> (https://www.ryanhefner.com) */
3531
+ export { NextFathomProviderApp, NextFathomTrackViewApp, NextFathomTrackViewPages, withAppRouter, withPagesRouter };
3532
+ /* Copyright 2026 - Ryan Hefner <hi@ryanhefner.com> (https://www.ryanhefner.com) */
3449
3533
  //# sourceMappingURL=index.js.map