react-fathom 0.1.0 → 0.1.1
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 +215 -52
- package/dist/cjs/index.cjs +3 -4
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/next/index.cjs +186 -725
- package/dist/cjs/next/index.cjs.map +1 -1
- package/dist/es/index.js +3 -4
- package/dist/es/index.js.map +1 -1
- package/dist/es/next/index.js +186 -724
- package/dist/es/next/index.js.map +1 -1
- package/dist/react-fathom.js +3 -4
- 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 +15 -1
- package/src/FathomProvider.tsx +0 -1
- package/src/next/NextFathomTrackViewApp.test.tsx +265 -0
- package/src/next/NextFathomTrackViewApp.tsx +78 -0
- package/src/next/NextFathomTrackViewPages.test.tsx +222 -0
- package/src/next/NextFathomTrackViewPages.tsx +83 -0
- package/src/next/compositions/withAppRouter.test.tsx +31 -10
- package/src/next/compositions/withAppRouter.tsx +10 -3
- package/src/next/compositions/withPagesRouter.test.tsx +31 -10
- package/src/next/compositions/withPagesRouter.tsx +10 -3
- package/src/next/index.ts +3 -3
- package/src/next/types.ts +0 -7
- package/src/types.ts +0 -1
- package/types/FathomProvider.d.ts.map +1 -1
- package/types/next/NextFathomProviderApp.d.ts.map +1 -1
- package/types/next/NextFathomProviderPages.d.ts.map +1 -1
- package/types/next/NextFathomTrackViewApp.d.ts +34 -0
- package/types/next/NextFathomTrackViewApp.d.ts.map +1 -0
- package/types/next/NextFathomTrackViewPages.d.ts +30 -0
- package/types/next/NextFathomTrackViewPages.d.ts.map +1 -0
- package/types/next/compositions/withAppRouter.d.ts +1 -0
- package/types/next/compositions/withAppRouter.d.ts.map +1 -1
- package/types/next/compositions/withPagesRouter.d.ts +1 -0
- package/types/next/compositions/withPagesRouter.d.ts.map +1 -1
- package/types/next/index.d.ts +2 -3
- package/types/next/index.d.ts.map +1 -1
- package/types/next/types.d.ts +0 -6
- package/types/next/types.d.ts.map +1 -1
- package/types/types.d.ts +0 -1
- package/types/types.d.ts.map +1 -1
- package/src/next/NextFathomProvider.test.tsx +0 -131
- package/src/next/NextFathomProvider.tsx +0 -62
- package/src/next/NextFathomProviderApp.test.tsx +0 -308
- package/src/next/NextFathomProviderApp.tsx +0 -106
- package/src/next/NextFathomProviderPages.test.tsx +0 -330
- package/src/next/NextFathomProviderPages.tsx +0 -112
package/README.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# 😻 react-fathom
|
|
2
2
|
|
|
3
|
+
[](https://www.pkgstats.com/pkg:react-fathom)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://www.pkgstats.com/pkg:react-fathom)
|
|
6
|
+
[](https://coveralls.io/github/ryanhefner/react-fathom)
|
|
7
|
+
[](https://codecov.io/gh/ryanhefner/react-fathom)
|
|
8
|
+
[](https://circleci.com/gh/ryanhefner/react-fathom)
|
|
9
|
+

|
|
10
|
+

|
|
11
|
+
|
|
3
12
|
Easily compose Fathom Analytics into your React/Next.js apps with automatic pageview tracking and full TypeScript support.
|
|
4
13
|
|
|
5
14
|
## Features
|
|
@@ -54,131 +63,285 @@ Access Fathom methods via the `useFathom` hook:
|
|
|
54
63
|
import { useFathom } from 'react-fathom'
|
|
55
64
|
|
|
56
65
|
function MyComponent() {
|
|
57
|
-
const { trackPageview, trackEvent, load } = useFathom()
|
|
66
|
+
const { trackPageview, trackEvent, trackGoal, load } = useFathom()
|
|
58
67
|
|
|
59
68
|
const handleClick = () => {
|
|
60
69
|
trackEvent?.('button-click', { id: 'signup-button' })
|
|
61
70
|
}
|
|
62
71
|
|
|
63
|
-
|
|
72
|
+
const handlePurchase = () => {
|
|
73
|
+
trackGoal?.('purchase', 2999) // $29.99 in cents
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<>
|
|
78
|
+
<button onClick={handleClick}>Sign Up</button>
|
|
79
|
+
<button onClick={handlePurchase}>Buy Now</button>
|
|
80
|
+
</>
|
|
81
|
+
)
|
|
64
82
|
}
|
|
65
83
|
```
|
|
66
84
|
|
|
67
|
-
###
|
|
85
|
+
### Convenience Hooks
|
|
68
86
|
|
|
69
|
-
|
|
87
|
+
Track events and pageviews with convenience hooks:
|
|
70
88
|
|
|
71
89
|
```tsx
|
|
72
|
-
|
|
73
|
-
|
|
90
|
+
import {
|
|
91
|
+
useTrackOnMount,
|
|
92
|
+
useTrackOnClick,
|
|
93
|
+
useTrackOnVisible,
|
|
94
|
+
} from 'react-fathom'
|
|
95
|
+
|
|
96
|
+
function MyComponent() {
|
|
97
|
+
// Track pageview on mount
|
|
98
|
+
useTrackOnMount({ url: '/custom-page' })
|
|
99
|
+
|
|
100
|
+
// Track event on click
|
|
101
|
+
const handleClick = useTrackOnClick({
|
|
102
|
+
eventName: 'button-click',
|
|
103
|
+
id: 'signup-button',
|
|
104
|
+
callback: (e) => {
|
|
105
|
+
console.log('Tracked click!', e)
|
|
106
|
+
},
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
// Track event when element becomes visible
|
|
110
|
+
const ref = useTrackOnVisible({
|
|
111
|
+
eventName: 'section-viewed',
|
|
112
|
+
section: 'hero',
|
|
113
|
+
callback: (entry) => {
|
|
114
|
+
console.log('Element is visible!', entry)
|
|
115
|
+
},
|
|
116
|
+
})
|
|
74
117
|
|
|
75
|
-
function MyApp({ Component, pageProps }) {
|
|
76
118
|
return (
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
|
|
119
|
+
<>
|
|
120
|
+
<button onClick={handleClick}>Sign Up</button>
|
|
121
|
+
<div ref={ref}>This will be tracked when visible</div>
|
|
122
|
+
</>
|
|
80
123
|
)
|
|
81
124
|
}
|
|
82
|
-
|
|
83
|
-
export default MyApp
|
|
84
125
|
```
|
|
85
126
|
|
|
86
|
-
|
|
127
|
+
### Declarative Components
|
|
128
|
+
|
|
129
|
+
Use declarative components for tracking:
|
|
87
130
|
|
|
88
131
|
```tsx
|
|
89
|
-
|
|
90
|
-
import { withPagesRouter } from 'react-fathom/next'
|
|
132
|
+
import { TrackPageview, TrackClick, TrackVisible } from 'react-fathom'
|
|
91
133
|
|
|
92
|
-
function
|
|
93
|
-
return
|
|
134
|
+
function MyPage() {
|
|
135
|
+
return (
|
|
136
|
+
<>
|
|
137
|
+
{/* Track pageview on mount */}
|
|
138
|
+
<TrackPageview url="/custom-page">
|
|
139
|
+
<div>Page content</div>
|
|
140
|
+
</TrackPageview>
|
|
141
|
+
|
|
142
|
+
{/* Track click events */}
|
|
143
|
+
<TrackClick eventName="button-click" id="signup-button">
|
|
144
|
+
<button>Sign Up</button>
|
|
145
|
+
</TrackClick>
|
|
146
|
+
|
|
147
|
+
{/* Track when element becomes visible */}
|
|
148
|
+
<TrackVisible eventName="section-viewed" section="hero">
|
|
149
|
+
<div>Hero section</div>
|
|
150
|
+
</TrackVisible>
|
|
151
|
+
</>
|
|
152
|
+
)
|
|
94
153
|
}
|
|
95
|
-
|
|
96
|
-
export default withPagesRouter(MyApp, {
|
|
97
|
-
siteId: 'YOUR_SITE_ID',
|
|
98
|
-
clientOptions: {
|
|
99
|
-
spa: 'auto',
|
|
100
|
-
},
|
|
101
|
-
})
|
|
102
154
|
```
|
|
103
155
|
|
|
104
156
|
### Next.js App Router
|
|
105
157
|
|
|
106
|
-
Use `
|
|
158
|
+
Use `FathomProvider` with `NextFathomTrackViewApp` for automatic route tracking:
|
|
107
159
|
|
|
108
160
|
```tsx
|
|
109
161
|
// app/layout.tsx
|
|
110
|
-
import {
|
|
162
|
+
import { FathomProvider } from 'react-fathom'
|
|
163
|
+
import { NextFathomTrackViewApp } from 'react-fathom/next'
|
|
111
164
|
|
|
112
165
|
export default function RootLayout({ children }) {
|
|
113
166
|
return (
|
|
114
167
|
<html>
|
|
115
168
|
<body>
|
|
116
|
-
<
|
|
169
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
170
|
+
<NextFathomTrackViewApp />
|
|
171
|
+
{children}
|
|
172
|
+
</FathomProvider>
|
|
117
173
|
</body>
|
|
118
174
|
</html>
|
|
119
175
|
)
|
|
120
176
|
}
|
|
121
177
|
```
|
|
122
178
|
|
|
123
|
-
|
|
179
|
+
### Next.js Pages Router
|
|
180
|
+
|
|
181
|
+
Use `FathomProvider` with `NextFathomTrackViewPages` for automatic route tracking:
|
|
124
182
|
|
|
125
183
|
```tsx
|
|
126
|
-
//
|
|
127
|
-
import {
|
|
184
|
+
// pages/_app.tsx
|
|
185
|
+
import { FathomProvider } from 'react-fathom'
|
|
186
|
+
import { NextFathomTrackViewPages } from 'react-fathom/next'
|
|
128
187
|
|
|
129
|
-
function
|
|
188
|
+
function MyApp({ Component, pageProps }) {
|
|
130
189
|
return (
|
|
131
|
-
<
|
|
132
|
-
<
|
|
133
|
-
|
|
190
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
191
|
+
<NextFathomTrackViewPages />
|
|
192
|
+
<Component {...pageProps} />
|
|
193
|
+
</FathomProvider>
|
|
134
194
|
)
|
|
135
195
|
}
|
|
136
196
|
|
|
137
|
-
export default
|
|
138
|
-
siteId: 'YOUR_SITE_ID',
|
|
139
|
-
clientOptions: {
|
|
140
|
-
spa: 'auto',
|
|
141
|
-
},
|
|
142
|
-
})
|
|
197
|
+
export default MyApp
|
|
143
198
|
```
|
|
144
199
|
|
|
145
200
|
## API
|
|
146
201
|
|
|
147
202
|
### `FathomProvider`
|
|
148
203
|
|
|
149
|
-
Main provider component for React apps.
|
|
204
|
+
Main provider component for React apps. Supports composable nesting - nested providers can override `client`, `defaultPageviewOptions`, or `defaultEventOptions`.
|
|
150
205
|
|
|
151
206
|
**Props:**
|
|
152
207
|
|
|
153
|
-
- `siteId` (string,
|
|
208
|
+
- `siteId` (string, optional): Your Fathom Analytics site ID
|
|
154
209
|
- `client` (FathomClient, optional): Custom Fathom client instance
|
|
155
210
|
- `clientOptions` (LoadOptions, optional): Options passed to `fathom-client`
|
|
156
|
-
- `
|
|
157
|
-
- `
|
|
211
|
+
- `defaultPageviewOptions` (PageViewOptions, optional): Default options merged into all `trackPageview` calls
|
|
212
|
+
- `defaultEventOptions` (EventOptions, optional): Default options merged into all `trackEvent` calls
|
|
213
|
+
|
|
214
|
+
**Example:**
|
|
215
|
+
|
|
216
|
+
```tsx
|
|
217
|
+
<FathomProvider
|
|
218
|
+
siteId="YOUR_SITE_ID"
|
|
219
|
+
defaultPageviewOptions={{ referrer: 'https://example.com' }}
|
|
220
|
+
defaultEventOptions={{ id: 'global-id' }}
|
|
221
|
+
>
|
|
222
|
+
{/* Your app */}
|
|
223
|
+
</FathomProvider>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### `NextFathomTrackViewApp`
|
|
227
|
+
|
|
228
|
+
Component that tracks pageviews for Next.js App Router. Must be used within a `FathomProvider`.
|
|
229
|
+
|
|
230
|
+
**Props:**
|
|
231
|
+
|
|
232
|
+
- `disableAutoTrack` (boolean, optional): Disable automatic pageview tracking on route changes (defaults to false)
|
|
233
|
+
|
|
234
|
+
**Example:**
|
|
235
|
+
|
|
236
|
+
```tsx
|
|
237
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
238
|
+
<NextFathomTrackViewApp />
|
|
239
|
+
{/* Your app */}
|
|
240
|
+
</FathomProvider>
|
|
241
|
+
```
|
|
158
242
|
|
|
159
|
-
### `
|
|
243
|
+
### `NextFathomTrackViewPages`
|
|
160
244
|
|
|
161
|
-
Next.js
|
|
245
|
+
Component that tracks pageviews for Next.js Pages Router. Must be used within a `FathomProvider`.
|
|
162
246
|
|
|
163
247
|
**Props:**
|
|
164
248
|
|
|
165
|
-
-
|
|
166
|
-
|
|
167
|
-
|
|
249
|
+
- `disableAutoTrack` (boolean, optional): Disable automatic pageview tracking on route changes (defaults to false)
|
|
250
|
+
|
|
251
|
+
**Example:**
|
|
252
|
+
|
|
253
|
+
```tsx
|
|
254
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
255
|
+
<NextFathomTrackViewPages />
|
|
256
|
+
{/* Your app */}
|
|
257
|
+
</FathomProvider>
|
|
258
|
+
```
|
|
168
259
|
|
|
169
260
|
### `useFathom()`
|
|
170
261
|
|
|
171
|
-
Hook to access Fathom methods.
|
|
262
|
+
Hook to access Fathom methods and context.
|
|
172
263
|
|
|
173
264
|
**Returns:**
|
|
174
265
|
|
|
175
|
-
- `trackPageview(options?)`: Track a pageview
|
|
176
|
-
- `trackEvent(eventName, options?)`: Track a custom event
|
|
266
|
+
- `trackPageview(options?)`: Track a pageview (automatically merges `defaultPageviewOptions`)
|
|
267
|
+
- `trackEvent(eventName, options?)`: Track a custom event (automatically merges `defaultEventOptions`)
|
|
268
|
+
- `trackGoal(code, cents)`: Track a goal conversion
|
|
177
269
|
- `load(siteId, options?)`: Load Fathom with a site ID
|
|
178
270
|
- `setSite(siteId)`: Change the site ID
|
|
179
271
|
- `blockTrackingForMe()`: Block tracking for current user
|
|
180
272
|
- `enableTrackingForMe()`: Enable tracking for current user
|
|
181
273
|
- `isTrackingEnabled()`: Check if tracking is enabled
|
|
274
|
+
- `client`: The Fathom client instance
|
|
275
|
+
- `defaultPageviewOptions`: Current default pageview options
|
|
276
|
+
- `defaultEventOptions`: Current default event options
|
|
277
|
+
|
|
278
|
+
### `useTrackOnMount(options?)`
|
|
279
|
+
|
|
280
|
+
Hook to track a pageview when a component mounts.
|
|
281
|
+
|
|
282
|
+
**Options:**
|
|
283
|
+
|
|
284
|
+
- `url` (string, optional): URL to track
|
|
285
|
+
- `referrer` (string, optional): Referrer URL
|
|
286
|
+
- All other `PageViewOptions` from `fathom-client`
|
|
287
|
+
|
|
288
|
+
### `useTrackOnClick(options)`
|
|
289
|
+
|
|
290
|
+
Hook that returns a click handler function to track events.
|
|
291
|
+
|
|
292
|
+
**Options:**
|
|
293
|
+
|
|
294
|
+
- `eventName` (string, required): Event name to track
|
|
295
|
+
- `preventDefault` (boolean, optional): Whether to prevent default behavior (defaults to false)
|
|
296
|
+
- `callback` ((e?: MouseEvent) => void, optional): Callback function to run after tracking
|
|
297
|
+
- All other `EventOptions` from `fathom-client`
|
|
298
|
+
|
|
299
|
+
### `useTrackOnVisible(options)`
|
|
300
|
+
|
|
301
|
+
Hook that returns a ref to attach to an element. Tracks an event when the element becomes visible.
|
|
302
|
+
|
|
303
|
+
**Options:**
|
|
304
|
+
|
|
305
|
+
- `eventName` (string, required): Event name to track
|
|
306
|
+
- `callback` ((entry: IntersectionObserverEntry) => void, optional): Callback function to run after tracking
|
|
307
|
+
- `threshold` (number, optional): IntersectionObserver threshold (defaults to 0.1)
|
|
308
|
+
- `rootMargin` (string, optional): IntersectionObserver rootMargin
|
|
309
|
+
- All other `EventOptions` from `fathom-client`
|
|
310
|
+
|
|
311
|
+
### `TrackPageview`
|
|
312
|
+
|
|
313
|
+
Component that tracks a pageview when it mounts.
|
|
314
|
+
|
|
315
|
+
**Props:**
|
|
316
|
+
|
|
317
|
+
- `url` (string, optional): URL to track
|
|
318
|
+
- `referrer` (string, optional): Referrer URL
|
|
319
|
+
- `children` (ReactNode, optional): Child elements to render
|
|
320
|
+
- All other `PageViewOptions` from `fathom-client`
|
|
321
|
+
|
|
322
|
+
### `TrackClick`
|
|
323
|
+
|
|
324
|
+
Component that tracks an event when clicked.
|
|
325
|
+
|
|
326
|
+
**Props:**
|
|
327
|
+
|
|
328
|
+
- `eventName` (string, required): Event name to track
|
|
329
|
+
- `preventDefault` (boolean, optional): Whether to prevent default behavior (defaults to false)
|
|
330
|
+
- `children` (ReactNode, required): Child element(s) to render
|
|
331
|
+
- All other `EventOptions` from `fathom-client`
|
|
332
|
+
|
|
333
|
+
### `TrackVisible`
|
|
334
|
+
|
|
335
|
+
Component that tracks an event when it becomes visible.
|
|
336
|
+
|
|
337
|
+
**Props:**
|
|
338
|
+
|
|
339
|
+
- `eventName` (string, required): Event name to track
|
|
340
|
+
- `threshold` (number, optional): IntersectionObserver threshold (defaults to 0.1)
|
|
341
|
+
- `rootMargin` (string, optional): IntersectionObserver rootMargin
|
|
342
|
+
- `children` (ReactNode, required): Child element(s) to render
|
|
343
|
+
- `as` (string, optional): HTML element type to render (defaults to 'div')
|
|
344
|
+
- All other `EventOptions` from `fathom-client`
|
|
182
345
|
|
|
183
346
|
## Tree-shaking
|
|
184
347
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! react-fathom - 0.1.
|
|
1
|
+
/*! react-fathom - 0.1.1 !*/
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var React = require('react');
|
|
@@ -65,9 +65,8 @@ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t
|
|
|
65
65
|
var FathomProvider = function FathomProvider(_ref) {
|
|
66
66
|
var children = _ref.children,
|
|
67
67
|
providedClient = _ref.client,
|
|
68
|
-
clientOptions = _ref.clientOptions
|
|
69
|
-
_ref.
|
|
70
|
-
var siteId = _ref.siteId,
|
|
68
|
+
clientOptions = _ref.clientOptions,
|
|
69
|
+
siteId = _ref.siteId,
|
|
71
70
|
providedDefaultPageviewOptions = _ref.defaultPageviewOptions,
|
|
72
71
|
providedDefaultEventOptions = _ref.defaultEventOptions;
|
|
73
72
|
// Read parent context if it exists
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/FathomContext.tsx","../../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","../../src/FathomProvider.tsx","../../src/hooks/useFathom.ts","../../src/hooks/useTrackOnMount.ts","../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../src/hooks/useTrackOnClick.ts","../../src/hooks/useTrackOnVisible.ts","../../src/components/TrackClick.tsx","../../src/components/TrackPageview.tsx","../../src/components/TrackVisible.tsx"],"sourcesContent":["import { createContext } from 'react'\n\nimport type { FathomContextInterface } from './types'\n\nexport const FathomContext = createContext<Partial<FathomContextInterface>>({})\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 };","import 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 clientOptions,\n disableDefaultTrack,\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 (category: string, options?: EventOptions) => {\n client.trackEvent(category, {\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 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 } from 'react'\n\nimport type { PageViewOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\n/**\n * Hook to track a pageview when a component mounts\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * useTrackOnMount({ url: '/custom-page' })\n * return <div>Content</div>\n * }\n * ```\n */\nexport const useTrackOnMount = (options?: PageViewOptions) => {\n const { trackPageview } = useFathom()\n\n useEffect(() => {\n trackPageview?.(options)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","import { useCallback } from 'react'\nimport type { MouseEvent } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\nexport interface UseTrackOnClickOptions extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Whether to prevent default behavior\n * @default false\n */\n preventDefault?: boolean\n /**\n * Optional callback function to run after tracking\n * Receives the click event as a parameter\n */\n callback?: (e?: MouseEvent) => void\n}\n\n/**\n * Hook that returns a click handler function that tracks an event\n *\n * @example\n * ```tsx\n * function Button() {\n * const handleClick = useTrackOnClick({\n * eventName: 'button-click',\n * id: 'signup-button',\n * callback: (e) => {\n * console.log('Button clicked!')\n * // Your custom logic here\n * },\n * })\n *\n * return <button onClick={handleClick}>Sign Up</button>\n * }\n * ```\n */\nexport const useTrackOnClick = (\n options: UseTrackOnClickOptions,\n): ((e?: MouseEvent) => void) => {\n const { trackEvent } = useFathom()\n const {\n eventName,\n preventDefault = false,\n callback,\n ...eventOptions\n } = options\n\n return useCallback(\n (e?: MouseEvent) => {\n if (preventDefault && e) {\n e.preventDefault()\n }\n trackEvent?.(eventName, eventOptions)\n callback?.(e)\n },\n [eventName, preventDefault, trackEvent, eventOptions, callback],\n )\n}\n","import { useEffect, useRef } from 'react'\nimport type { RefObject } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\nexport interface UseTrackOnVisibleOptions extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Intersection observer options\n */\n observerOptions?: IntersectionObserverInit\n /**\n * Whether to track only once or every time it becomes visible\n * @default true\n */\n trackOnce?: boolean\n /**\n * Optional callback function to run after tracking\n * Receives the intersection observer entry as a parameter\n */\n callback?: (entry: IntersectionObserverEntry) => void\n}\n\n/**\n * Hook to track an event when an element becomes visible (using Intersection Observer)\n *\n * @example\n * ```tsx\n * function Section() {\n * const ref = useTrackOnVisible({\n * eventName: 'section-viewed',\n * section: 'hero',\n * callback: (entry) => {\n * console.log('Section is visible!', entry.isIntersecting)\n * // Your custom logic here\n * },\n * })\n *\n * return <section ref={ref}>Content</section>\n * }\n * ```\n */\nexport const useTrackOnVisible = (\n options: UseTrackOnVisibleOptions,\n): RefObject<HTMLElement | null> => {\n const { trackEvent } = useFathom()\n const {\n eventName,\n observerOptions,\n trackOnce = true,\n callback,\n ...eventOptions\n } = options\n const ref = useRef<HTMLElement | null>(null)\n const hasTracked = useRef(false)\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!trackOnce || !hasTracked.current) {\n trackEvent?.(eventName, eventOptions)\n callback?.(entry)\n hasTracked.current = true\n }\n }\n })\n },\n {\n threshold: 0.1,\n ...observerOptions,\n },\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [\n eventName,\n eventOptions,\n observerOptions,\n trackOnce,\n trackEvent,\n callback,\n ])\n\n return ref\n}\n","import React from 'react'\nimport type { ElementType, MouseEvent, ReactNode } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackClickProps extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Child element(s) to wrap\n */\n children: ReactNode\n /**\n * Whether to prevent default behavior\n * @default false\n */\n preventDefault?: boolean\n /**\n * Custom onClick handler (will be called before tracking)\n */\n onClick?: (e: MouseEvent) => void\n /**\n * HTML element to render as wrapper\n * @default 'div'\n */\n as?: ElementType\n}\n\n/**\n * Component wrapper that automatically tracks clicks on its children\n *\n * @example\n * ```tsx\n * <TrackClick eventName=\"cta-clicked\" id=\"hero-cta\">\n * <button>Get Started</button>\n * </TrackClick>\n * ```\n */\nexport const TrackClick: React.FC<TrackClickProps> = ({\n eventName,\n children,\n preventDefault = false,\n onClick,\n as: Component = 'div',\n ...eventOptions\n}) => {\n const { trackEvent } = useFathom()\n\n const handleClick = (e: MouseEvent) => {\n if (preventDefault) {\n e.preventDefault()\n }\n onClick?.(e)\n trackEvent?.(eventName, eventOptions)\n }\n\n return <Component onClick={handleClick}>{children}</Component>\n}\n","import React, { useEffect } from 'react'\nimport type { ReactNode } from 'react'\n\nimport type { PageViewOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackPageviewProps extends PageViewOptions {\n /**\n * Child element(s) to render\n */\n children?: ReactNode\n}\n\n/**\n * Component that tracks a pageview when it mounts\n *\n * @example\n * ```tsx\n * <TrackPageview url=\"/custom-page\">\n * <div>Page content</div>\n * </TrackPageview>\n * ```\n */\nexport const TrackPageview: React.FC<TrackPageviewProps> = ({\n children,\n ...pageviewOptions\n}) => {\n const { trackPageview } = useFathom()\n\n useEffect(() => {\n trackPageview?.(pageviewOptions)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return <>{children}</>\n}\n","import React, { useEffect, useRef, forwardRef, useCallback } from 'react'\nimport type { ElementType, ReactNode } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackVisibleProps extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Child element(s) to render\n */\n children?: ReactNode\n /**\n * Intersection observer options\n */\n observerOptions?: IntersectionObserverInit\n /**\n * Whether to track only once or every time it becomes visible\n * @default true\n */\n trackOnce?: boolean\n /**\n * HTML element to render as wrapper\n * @default 'div'\n */\n as?: ElementType\n}\n\n/**\n * Component that tracks an event when it becomes visible in the viewport\n *\n * @example\n * ```tsx\n * <TrackVisible eventName=\"section-viewed\" section=\"hero\">\n * <HeroSection />\n * </TrackVisible>\n * ```\n */\nexport const TrackVisible = forwardRef<HTMLDivElement, TrackVisibleProps>(\n function TrackVisible(\n {\n eventName,\n children,\n observerOptions,\n trackOnce = true,\n as: Component = 'div',\n ...eventOptions\n },\n forwardedRef,\n ) {\n const { trackEvent } = useFathom()\n const internalRef = useRef<HTMLDivElement | null>(null)\n const hasTracked = useRef(false)\n\n // Callback ref that handles both forwarded and internal refs\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n internalRef.current = node\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(node)\n } else if (forwardedRef !== null && forwardedRef !== undefined) {\n forwardedRef.current = node\n }\n },\n [forwardedRef],\n )\n\n useEffect(() => {\n const element = internalRef.current\n if (element === null) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!trackOnce || !hasTracked.current) {\n trackEvent?.(eventName, eventOptions)\n hasTracked.current = true\n }\n }\n })\n },\n {\n threshold: 0.1,\n ...observerOptions,\n },\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [eventName, eventOptions, observerOptions, trackOnce, trackEvent])\n\n return <Component ref={setRef}>{children}</Component>\n },\n)\n"],"names":["FathomContext","createContext","FathomProvider","_ref","children","providedClient","client","clientOptions","disableDefaultTrack","siteId","providedDefaultPageviewOptions","defaultPageviewOptions","providedDefaultEventOptions","defaultEventOptions","parentContext","useContext","useMemo","_ref2","Fathom","blockTrackingForMe","useCallback","enableTrackingForMe","isTrackingEnabled","_client$isTrackingEna","load","setSite","trackEvent","category","options","_objectSpread","trackPageview","trackGoal","code","cents","useEffect","undefined","React","createElement","Provider","value","displayName","useFathom","context","useTrackOnMount","_useFathom","objectWithoutPropertiesLoose","useTrackOnClick","eventName","_options$preventDefau","preventDefault","callback","eventOptions","_objectWithoutProperties","_excluded","e","useTrackOnVisible","observerOptions","_options$trackOnce","trackOnce","ref","useRef","hasTracked","element","current","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","threshold","observe","disconnect","TrackClick","_ref$preventDefault","onClick","_ref$as","as","Component","handleClick","TrackPageview","pageviewOptions","Fragment","TrackVisible","forwardRef","forwardedRef","_ref$trackOnce","internalRef","setRef","node"],"mappings":"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","x_google_ignoreList":[1,2,3,4,8,9]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/FathomContext.tsx","../../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","../../src/FathomProvider.tsx","../../src/hooks/useFathom.ts","../../src/hooks/useTrackOnMount.ts","../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../src/hooks/useTrackOnClick.ts","../../src/hooks/useTrackOnVisible.ts","../../src/components/TrackClick.tsx","../../src/components/TrackPageview.tsx","../../src/components/TrackVisible.tsx"],"sourcesContent":["import { createContext } from 'react'\n\nimport type { FathomContextInterface } from './types'\n\nexport const FathomContext = createContext<Partial<FathomContextInterface>>({})\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 };","import 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 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 (category: string, options?: EventOptions) => {\n client.trackEvent(category, {\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 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 } from 'react'\n\nimport type { PageViewOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\n/**\n * Hook to track a pageview when a component mounts\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * useTrackOnMount({ url: '/custom-page' })\n * return <div>Content</div>\n * }\n * ```\n */\nexport const useTrackOnMount = (options?: PageViewOptions) => {\n const { trackPageview } = useFathom()\n\n useEffect(() => {\n trackPageview?.(options)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","import { useCallback } from 'react'\nimport type { MouseEvent } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\nexport interface UseTrackOnClickOptions extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Whether to prevent default behavior\n * @default false\n */\n preventDefault?: boolean\n /**\n * Optional callback function to run after tracking\n * Receives the click event as a parameter\n */\n callback?: (e?: MouseEvent) => void\n}\n\n/**\n * Hook that returns a click handler function that tracks an event\n *\n * @example\n * ```tsx\n * function Button() {\n * const handleClick = useTrackOnClick({\n * eventName: 'button-click',\n * id: 'signup-button',\n * callback: (e) => {\n * console.log('Button clicked!')\n * // Your custom logic here\n * },\n * })\n *\n * return <button onClick={handleClick}>Sign Up</button>\n * }\n * ```\n */\nexport const useTrackOnClick = (\n options: UseTrackOnClickOptions,\n): ((e?: MouseEvent) => void) => {\n const { trackEvent } = useFathom()\n const {\n eventName,\n preventDefault = false,\n callback,\n ...eventOptions\n } = options\n\n return useCallback(\n (e?: MouseEvent) => {\n if (preventDefault && e) {\n e.preventDefault()\n }\n trackEvent?.(eventName, eventOptions)\n callback?.(e)\n },\n [eventName, preventDefault, trackEvent, eventOptions, callback],\n )\n}\n","import { useEffect, useRef } from 'react'\nimport type { RefObject } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from './useFathom'\n\nexport interface UseTrackOnVisibleOptions extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Intersection observer options\n */\n observerOptions?: IntersectionObserverInit\n /**\n * Whether to track only once or every time it becomes visible\n * @default true\n */\n trackOnce?: boolean\n /**\n * Optional callback function to run after tracking\n * Receives the intersection observer entry as a parameter\n */\n callback?: (entry: IntersectionObserverEntry) => void\n}\n\n/**\n * Hook to track an event when an element becomes visible (using Intersection Observer)\n *\n * @example\n * ```tsx\n * function Section() {\n * const ref = useTrackOnVisible({\n * eventName: 'section-viewed',\n * section: 'hero',\n * callback: (entry) => {\n * console.log('Section is visible!', entry.isIntersecting)\n * // Your custom logic here\n * },\n * })\n *\n * return <section ref={ref}>Content</section>\n * }\n * ```\n */\nexport const useTrackOnVisible = (\n options: UseTrackOnVisibleOptions,\n): RefObject<HTMLElement | null> => {\n const { trackEvent } = useFathom()\n const {\n eventName,\n observerOptions,\n trackOnce = true,\n callback,\n ...eventOptions\n } = options\n const ref = useRef<HTMLElement | null>(null)\n const hasTracked = useRef(false)\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!trackOnce || !hasTracked.current) {\n trackEvent?.(eventName, eventOptions)\n callback?.(entry)\n hasTracked.current = true\n }\n }\n })\n },\n {\n threshold: 0.1,\n ...observerOptions,\n },\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [\n eventName,\n eventOptions,\n observerOptions,\n trackOnce,\n trackEvent,\n callback,\n ])\n\n return ref\n}\n","import React from 'react'\nimport type { ElementType, MouseEvent, ReactNode } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackClickProps extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Child element(s) to wrap\n */\n children: ReactNode\n /**\n * Whether to prevent default behavior\n * @default false\n */\n preventDefault?: boolean\n /**\n * Custom onClick handler (will be called before tracking)\n */\n onClick?: (e: MouseEvent) => void\n /**\n * HTML element to render as wrapper\n * @default 'div'\n */\n as?: ElementType\n}\n\n/**\n * Component wrapper that automatically tracks clicks on its children\n *\n * @example\n * ```tsx\n * <TrackClick eventName=\"cta-clicked\" id=\"hero-cta\">\n * <button>Get Started</button>\n * </TrackClick>\n * ```\n */\nexport const TrackClick: React.FC<TrackClickProps> = ({\n eventName,\n children,\n preventDefault = false,\n onClick,\n as: Component = 'div',\n ...eventOptions\n}) => {\n const { trackEvent } = useFathom()\n\n const handleClick = (e: MouseEvent) => {\n if (preventDefault) {\n e.preventDefault()\n }\n onClick?.(e)\n trackEvent?.(eventName, eventOptions)\n }\n\n return <Component onClick={handleClick}>{children}</Component>\n}\n","import React, { useEffect } from 'react'\nimport type { ReactNode } from 'react'\n\nimport type { PageViewOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackPageviewProps extends PageViewOptions {\n /**\n * Child element(s) to render\n */\n children?: ReactNode\n}\n\n/**\n * Component that tracks a pageview when it mounts\n *\n * @example\n * ```tsx\n * <TrackPageview url=\"/custom-page\">\n * <div>Page content</div>\n * </TrackPageview>\n * ```\n */\nexport const TrackPageview: React.FC<TrackPageviewProps> = ({\n children,\n ...pageviewOptions\n}) => {\n const { trackPageview } = useFathom()\n\n useEffect(() => {\n trackPageview?.(pageviewOptions)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return <>{children}</>\n}\n","import React, { useEffect, useRef, forwardRef, useCallback } from 'react'\nimport type { ElementType, ReactNode } from 'react'\n\nimport type { EventOptions } from 'fathom-client'\n\nimport { useFathom } from '../hooks/useFathom'\n\nexport interface TrackVisibleProps extends EventOptions {\n /**\n * Event name to track\n */\n eventName: string\n /**\n * Child element(s) to render\n */\n children?: ReactNode\n /**\n * Intersection observer options\n */\n observerOptions?: IntersectionObserverInit\n /**\n * Whether to track only once or every time it becomes visible\n * @default true\n */\n trackOnce?: boolean\n /**\n * HTML element to render as wrapper\n * @default 'div'\n */\n as?: ElementType\n}\n\n/**\n * Component that tracks an event when it becomes visible in the viewport\n *\n * @example\n * ```tsx\n * <TrackVisible eventName=\"section-viewed\" section=\"hero\">\n * <HeroSection />\n * </TrackVisible>\n * ```\n */\nexport const TrackVisible = forwardRef<HTMLDivElement, TrackVisibleProps>(\n function TrackVisible(\n {\n eventName,\n children,\n observerOptions,\n trackOnce = true,\n as: Component = 'div',\n ...eventOptions\n },\n forwardedRef,\n ) {\n const { trackEvent } = useFathom()\n const internalRef = useRef<HTMLDivElement | null>(null)\n const hasTracked = useRef(false)\n\n // Callback ref that handles both forwarded and internal refs\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n internalRef.current = node\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(node)\n } else if (forwardedRef !== null && forwardedRef !== undefined) {\n forwardedRef.current = node\n }\n },\n [forwardedRef],\n )\n\n useEffect(() => {\n const element = internalRef.current\n if (element === null) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!trackOnce || !hasTracked.current) {\n trackEvent?.(eventName, eventOptions)\n hasTracked.current = true\n }\n }\n })\n },\n {\n threshold: 0.1,\n ...observerOptions,\n },\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n }\n }, [eventName, eventOptions, observerOptions, trackOnce, trackEvent])\n\n return <Component ref={setRef}>{children}</Component>\n },\n)\n"],"names":["FathomContext","createContext","FathomProvider","_ref","children","providedClient","client","clientOptions","siteId","providedDefaultPageviewOptions","defaultPageviewOptions","providedDefaultEventOptions","defaultEventOptions","parentContext","useContext","useMemo","_ref2","Fathom","blockTrackingForMe","useCallback","enableTrackingForMe","isTrackingEnabled","_client$isTrackingEna","load","setSite","trackEvent","category","options","_objectSpread","trackPageview","trackGoal","code","cents","useEffect","undefined","React","createElement","Provider","value","displayName","useFathom","context","useTrackOnMount","_useFathom","objectWithoutPropertiesLoose","useTrackOnClick","eventName","_options$preventDefau","preventDefault","callback","eventOptions","_objectWithoutProperties","_excluded","e","useTrackOnVisible","observerOptions","_options$trackOnce","trackOnce","ref","useRef","hasTracked","element","current","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","threshold","observe","disconnect","TrackClick","_ref$preventDefault","onClick","_ref$as","as","Component","handleClick","TrackPageview","pageviewOptions","Fragment","TrackVisible","forwardRef","forwardedRef","_ref$trackOnce","internalRef","setRef","node"],"mappings":"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","x_google_ignoreList":[1,2,3,4,8,9]}
|