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.
- package/README.md +941 -25
- package/dist/cjs/index.cjs +55 -9
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/native/index.cjs +1079 -0
- package/dist/cjs/native/index.cjs.map +1 -0
- package/dist/cjs/next/index.cjs +89 -5
- package/dist/cjs/next/index.cjs.map +1 -1
- package/dist/es/index.js +55 -9
- package/dist/es/index.js.map +1 -1
- package/dist/es/native/index.js +1071 -0
- package/dist/es/native/index.js.map +1 -0
- package/dist/es/next/index.js +90 -6
- package/dist/es/next/index.js.map +1 -1
- package/dist/react-fathom.js +55 -9
- package/dist/react-fathom.js.map +1 -1
- package/dist/react-fathom.min.js +2 -2
- package/dist/react-fathom.min.js.map +1 -1
- package/package.json +28 -5
- package/src/FathomContext.tsx +30 -1
- package/src/FathomProvider.test.tsx +115 -15
- package/src/FathomProvider.tsx +10 -2
- package/src/components/TrackClick.test.tsx +7 -7
- package/src/components/TrackClick.tsx +1 -1
- package/src/components/TrackVisible.test.tsx +7 -7
- package/src/components/TrackVisible.tsx +1 -1
- package/src/hooks/useFathom.test.tsx +14 -3
- package/src/hooks/useTrackOnClick.test.tsx +4 -4
- package/src/hooks/useTrackOnClick.ts +1 -1
- package/src/hooks/useTrackOnVisible.test.tsx +4 -4
- package/src/hooks/useTrackOnVisible.ts +1 -1
- package/src/index.ts +1 -0
- package/src/native/FathomWebView.test.tsx +410 -0
- package/src/native/FathomWebView.tsx +297 -0
- package/src/native/NativeFathomProvider.test.tsx +372 -0
- package/src/native/NativeFathomProvider.tsx +113 -0
- package/src/native/createWebViewClient.test.ts +380 -0
- package/src/native/createWebViewClient.ts +271 -0
- package/src/native/index.ts +29 -0
- package/src/native/react-native.d.ts +74 -0
- package/src/native/types.ts +145 -0
- package/src/native/useAppStateTracking.test.ts +249 -0
- package/src/native/useAppStateTracking.ts +66 -0
- package/src/native/useNavigationTracking.test.ts +446 -0
- package/src/native/useNavigationTracking.ts +177 -0
- package/src/next/NextFathomProviderApp.client.tsx +5 -0
- package/src/next/NextFathomProviderApp.test.tsx +154 -0
- package/src/next/NextFathomProviderApp.tsx +62 -0
- package/src/next/index.ts +3 -0
- package/src/types.ts +36 -9
- package/types/FathomContext.d.ts +1 -1
- package/types/FathomContext.d.ts.map +1 -1
- package/types/FathomProvider.d.ts.map +1 -1
- package/types/components/TrackClick.d.ts +1 -1
- package/types/components/TrackVisible.d.ts +1 -1
- package/types/hooks/useTrackOnClick.d.ts +1 -1
- package/types/hooks/useTrackOnVisible.d.ts +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/native/FathomWebView.d.ts +59 -0
- package/types/native/FathomWebView.d.ts.map +1 -0
- package/types/native/NativeFathomProvider.d.ts +36 -0
- package/types/native/NativeFathomProvider.d.ts.map +1 -0
- package/types/native/createWebViewClient.d.ts +51 -0
- package/types/native/createWebViewClient.d.ts.map +1 -0
- package/types/native/index.d.ts +10 -0
- package/types/native/index.d.ts.map +1 -0
- package/types/native/types.d.ts +125 -0
- package/types/native/types.d.ts.map +1 -0
- package/types/native/useAppStateTracking.d.ts +25 -0
- package/types/native/useAppStateTracking.d.ts.map +1 -0
- package/types/native/useNavigationTracking.d.ts +30 -0
- package/types/native/useNavigationTracking.d.ts.map +1 -0
- package/types/next/NextFathomProviderApp.client.d.ts +3 -0
- package/types/next/NextFathomProviderApp.client.d.ts.map +1 -0
- package/types/next/NextFathomProviderApp.d.ts +38 -4
- package/types/next/NextFathomProviderApp.d.ts.map +1 -1
- package/types/next/index.d.ts +1 -0
- package/types/next/index.d.ts.map +1 -1
- package/types/types.d.ts +34 -9
- package/types/types.d.ts.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","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]}
|
package/dist/cjs/next/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! react-fathom - 0.
|
|
1
|
+
/*! react-fathom - 0.2.0 !*/
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var React = require('react');
|
|
@@ -113,7 +113,45 @@ function requireRouter () {
|
|
|
113
113
|
|
|
114
114
|
var routerExports = requireRouter();
|
|
115
115
|
|
|
116
|
-
var
|
|
116
|
+
var warnMissingProvider = function warnMissingProvider(methodName) {
|
|
117
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
118
|
+
console.warn("[react-fathom] ".concat(methodName, "() called without a FathomProvider. ") + 'Wrap your app with <FathomProvider> to enable analytics tracking.');
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Default context value with stub methods that warn in development.
|
|
124
|
+
* These allow useFathom() to be called without optional chaining,
|
|
125
|
+
* while still informing developers when the provider is missing.
|
|
126
|
+
*/
|
|
127
|
+
var defaultContextValue = {
|
|
128
|
+
blockTrackingForMe: function blockTrackingForMe() {
|
|
129
|
+
return warnMissingProvider('blockTrackingForMe');
|
|
130
|
+
},
|
|
131
|
+
enableTrackingForMe: function enableTrackingForMe() {
|
|
132
|
+
return warnMissingProvider('enableTrackingForMe');
|
|
133
|
+
},
|
|
134
|
+
isTrackingEnabled: function isTrackingEnabled() {
|
|
135
|
+
warnMissingProvider('isTrackingEnabled');
|
|
136
|
+
return false;
|
|
137
|
+
},
|
|
138
|
+
load: function load() {
|
|
139
|
+
return warnMissingProvider('load');
|
|
140
|
+
},
|
|
141
|
+
setSite: function setSite() {
|
|
142
|
+
return warnMissingProvider('setSite');
|
|
143
|
+
},
|
|
144
|
+
trackPageview: function trackPageview() {
|
|
145
|
+
return warnMissingProvider('trackPageview');
|
|
146
|
+
},
|
|
147
|
+
trackEvent: function trackEvent() {
|
|
148
|
+
return warnMissingProvider('trackEvent');
|
|
149
|
+
},
|
|
150
|
+
trackGoal: function trackGoal() {
|
|
151
|
+
return warnMissingProvider('trackGoal');
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
var FathomContext = /*#__PURE__*/React.createContext(defaultContextValue);
|
|
117
155
|
|
|
118
156
|
var useFathom = function useFathom() {
|
|
119
157
|
var context = React.useContext(FathomContext);
|
|
@@ -3319,6 +3357,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3319
3357
|
var FathomProvider = function FathomProvider(_ref) {
|
|
3320
3358
|
var children = _ref.children,
|
|
3321
3359
|
providedClient = _ref.client,
|
|
3360
|
+
clientRef = _ref.clientRef,
|
|
3322
3361
|
clientOptions = _ref.clientOptions,
|
|
3323
3362
|
siteId = _ref.siteId,
|
|
3324
3363
|
providedDefaultPageviewOptions = _ref.defaultPageviewOptions,
|
|
@@ -3357,8 +3396,8 @@ var FathomProvider = function FathomProvider(_ref) {
|
|
|
3357
3396
|
var setSite = React.useCallback(function (siteId) {
|
|
3358
3397
|
client.setSite(siteId);
|
|
3359
3398
|
}, [client]);
|
|
3360
|
-
var trackEvent = React.useCallback(function (
|
|
3361
|
-
client.trackEvent(
|
|
3399
|
+
var trackEvent = React.useCallback(function (eventName, options) {
|
|
3400
|
+
client.trackEvent(eventName, _objectSpread(_objectSpread({}, defaultEventOptions), options));
|
|
3362
3401
|
}, [client, defaultEventOptions]);
|
|
3363
3402
|
var trackPageview = React.useCallback(function (options) {
|
|
3364
3403
|
client.trackPageview(_objectSpread(_objectSpread({}, defaultPageviewOptions), options));
|
|
@@ -3371,6 +3410,13 @@ var FathomProvider = function FathomProvider(_ref) {
|
|
|
3371
3410
|
load(siteId, clientOptions);
|
|
3372
3411
|
}
|
|
3373
3412
|
}, [clientOptions, load, siteId]);
|
|
3413
|
+
|
|
3414
|
+
// Populate the clientRef so the parent component can access the client
|
|
3415
|
+
React.useEffect(function () {
|
|
3416
|
+
if (clientRef) {
|
|
3417
|
+
clientRef.current = client;
|
|
3418
|
+
}
|
|
3419
|
+
}, [client, clientRef]);
|
|
3374
3420
|
return /*#__PURE__*/React.createElement(FathomContext.Provider, {
|
|
3375
3421
|
value: {
|
|
3376
3422
|
blockTrackingForMe: blockTrackingForMe,
|
|
@@ -3389,6 +3435,43 @@ var FathomProvider = function FathomProvider(_ref) {
|
|
|
3389
3435
|
};
|
|
3390
3436
|
FathomProvider.displayName = 'FathomProvider';
|
|
3391
3437
|
|
|
3438
|
+
var _excluded$2 = ["children", "disableAutoTrack"];
|
|
3439
|
+
/**
|
|
3440
|
+
* Client component wrapper that combines FathomProvider and NextFathomTrackViewApp
|
|
3441
|
+
* for easy integration in Next.js App Router layouts.
|
|
3442
|
+
*
|
|
3443
|
+
* This component is marked with 'use client' and can be used directly in Server Components
|
|
3444
|
+
* like the root layout.tsx file.
|
|
3445
|
+
*
|
|
3446
|
+
* @example
|
|
3447
|
+
* ```tsx
|
|
3448
|
+
* // app/layout.tsx
|
|
3449
|
+
* import { NextFathomProviderApp } from 'react-fathom/next'
|
|
3450
|
+
*
|
|
3451
|
+
* export default function RootLayout({ children }) {
|
|
3452
|
+
* return (
|
|
3453
|
+
* <html>
|
|
3454
|
+
* <body>
|
|
3455
|
+
* <NextFathomProviderApp siteId="YOUR_SITE_ID">
|
|
3456
|
+
* {children}
|
|
3457
|
+
* </NextFathomProviderApp>
|
|
3458
|
+
* </body>
|
|
3459
|
+
* </html>
|
|
3460
|
+
* )
|
|
3461
|
+
* }
|
|
3462
|
+
* ```
|
|
3463
|
+
*/
|
|
3464
|
+
var NextFathomProviderApp = function NextFathomProviderApp(_ref) {
|
|
3465
|
+
var children = _ref.children,
|
|
3466
|
+
_ref$disableAutoTrack = _ref.disableAutoTrack,
|
|
3467
|
+
disableAutoTrack = _ref$disableAutoTrack === void 0 ? false : _ref$disableAutoTrack,
|
|
3468
|
+
fathomProviderProps = _objectWithoutProperties(_ref, _excluded$2);
|
|
3469
|
+
return /*#__PURE__*/React.createElement(FathomProvider, fathomProviderProps, /*#__PURE__*/React.createElement(NextFathomTrackViewApp, {
|
|
3470
|
+
disableAutoTrack: disableAutoTrack
|
|
3471
|
+
}), children);
|
|
3472
|
+
};
|
|
3473
|
+
NextFathomProviderApp.displayName = 'NextFathomProviderApp';
|
|
3474
|
+
|
|
3392
3475
|
var _excluded$1 = ["disableAutoTrack"];
|
|
3393
3476
|
/**
|
|
3394
3477
|
* Higher-order component that wraps your Next.js Pages Router app with FathomProvider
|
|
@@ -3465,9 +3548,10 @@ var withAppRouter = function withAppRouter(Component, providerProps) {
|
|
|
3465
3548
|
return WithAppRouter;
|
|
3466
3549
|
};
|
|
3467
3550
|
|
|
3551
|
+
exports.NextFathomProviderApp = NextFathomProviderApp;
|
|
3468
3552
|
exports.NextFathomTrackViewApp = NextFathomTrackViewApp;
|
|
3469
3553
|
exports.NextFathomTrackViewPages = NextFathomTrackViewPages;
|
|
3470
3554
|
exports.withAppRouter = withAppRouter;
|
|
3471
3555
|
exports.withPagesRouter = withPagesRouter;
|
|
3472
|
-
/* Copyright
|
|
3556
|
+
/* Copyright 2026 - Ryan Hefner <hi@ryanhefner.com> (https://www.ryanhefner.com) */
|
|
3473
3557
|
//# sourceMappingURL=index.cjs.map
|