react-fathom 0.1.0 → 0.1.2
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 +222 -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 +16 -2
- 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,21 @@
|
|
|
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://bundlephobia.com/package/react-fathom)
|
|
7
|
+
[](https://github.com/ryanhefner/react-fathom/stargazers)
|
|
8
|
+
[](https://github.com/ryanhefner/react-fathom/network/members)
|
|
9
|
+
[](https://github.com/ryanhefner/react-fathom/issues)
|
|
10
|
+
[](https://github.com/ryanhefner/react-fathom/pulls)
|
|
11
|
+
[](https://coveralls.io/github/ryanhefner/react-fathom)
|
|
12
|
+
[](https://codecov.io/gh/ryanhefner/react-fathom)
|
|
13
|
+
[](https://circleci.com/gh/ryanhefner/react-fathom)
|
|
14
|
+
[](https://snyk.io/test/github/ryanhefner/react-fathom)
|
|
15
|
+
[](https://www.typescriptlang.org/)
|
|
16
|
+
[](https://github.com/ryanhefner/react-fathom/commits/main)
|
|
17
|
+
[](https://twitter.com/ryanhefner)
|
|
18
|
+
|
|
3
19
|
Easily compose Fathom Analytics into your React/Next.js apps with automatic pageview tracking and full TypeScript support.
|
|
4
20
|
|
|
5
21
|
## Features
|
|
@@ -54,131 +70,285 @@ Access Fathom methods via the `useFathom` hook:
|
|
|
54
70
|
import { useFathom } from 'react-fathom'
|
|
55
71
|
|
|
56
72
|
function MyComponent() {
|
|
57
|
-
const { trackPageview, trackEvent, load } = useFathom()
|
|
73
|
+
const { trackPageview, trackEvent, trackGoal, load } = useFathom()
|
|
58
74
|
|
|
59
75
|
const handleClick = () => {
|
|
60
76
|
trackEvent?.('button-click', { id: 'signup-button' })
|
|
61
77
|
}
|
|
62
78
|
|
|
63
|
-
|
|
79
|
+
const handlePurchase = () => {
|
|
80
|
+
trackGoal?.('purchase', 2999) // $29.99 in cents
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<>
|
|
85
|
+
<button onClick={handleClick}>Sign Up</button>
|
|
86
|
+
<button onClick={handlePurchase}>Buy Now</button>
|
|
87
|
+
</>
|
|
88
|
+
)
|
|
64
89
|
}
|
|
65
90
|
```
|
|
66
91
|
|
|
67
|
-
###
|
|
92
|
+
### Convenience Hooks
|
|
68
93
|
|
|
69
|
-
|
|
94
|
+
Track events and pageviews with convenience hooks:
|
|
70
95
|
|
|
71
96
|
```tsx
|
|
72
|
-
|
|
73
|
-
|
|
97
|
+
import {
|
|
98
|
+
useTrackOnMount,
|
|
99
|
+
useTrackOnClick,
|
|
100
|
+
useTrackOnVisible,
|
|
101
|
+
} from 'react-fathom'
|
|
102
|
+
|
|
103
|
+
function MyComponent() {
|
|
104
|
+
// Track pageview on mount
|
|
105
|
+
useTrackOnMount({ url: '/custom-page' })
|
|
106
|
+
|
|
107
|
+
// Track event on click
|
|
108
|
+
const handleClick = useTrackOnClick({
|
|
109
|
+
eventName: 'button-click',
|
|
110
|
+
id: 'signup-button',
|
|
111
|
+
callback: (e) => {
|
|
112
|
+
console.log('Tracked click!', e)
|
|
113
|
+
},
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
// Track event when element becomes visible
|
|
117
|
+
const ref = useTrackOnVisible({
|
|
118
|
+
eventName: 'section-viewed',
|
|
119
|
+
section: 'hero',
|
|
120
|
+
callback: (entry) => {
|
|
121
|
+
console.log('Element is visible!', entry)
|
|
122
|
+
},
|
|
123
|
+
})
|
|
74
124
|
|
|
75
|
-
function MyApp({ Component, pageProps }) {
|
|
76
125
|
return (
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
|
|
126
|
+
<>
|
|
127
|
+
<button onClick={handleClick}>Sign Up</button>
|
|
128
|
+
<div ref={ref}>This will be tracked when visible</div>
|
|
129
|
+
</>
|
|
80
130
|
)
|
|
81
131
|
}
|
|
82
|
-
|
|
83
|
-
export default MyApp
|
|
84
132
|
```
|
|
85
133
|
|
|
86
|
-
|
|
134
|
+
### Declarative Components
|
|
135
|
+
|
|
136
|
+
Use declarative components for tracking:
|
|
87
137
|
|
|
88
138
|
```tsx
|
|
89
|
-
|
|
90
|
-
import { withPagesRouter } from 'react-fathom/next'
|
|
139
|
+
import { TrackPageview, TrackClick, TrackVisible } from 'react-fathom'
|
|
91
140
|
|
|
92
|
-
function
|
|
93
|
-
return
|
|
141
|
+
function MyPage() {
|
|
142
|
+
return (
|
|
143
|
+
<>
|
|
144
|
+
{/* Track pageview on mount */}
|
|
145
|
+
<TrackPageview url="/custom-page">
|
|
146
|
+
<div>Page content</div>
|
|
147
|
+
</TrackPageview>
|
|
148
|
+
|
|
149
|
+
{/* Track click events */}
|
|
150
|
+
<TrackClick eventName="button-click" id="signup-button">
|
|
151
|
+
<button>Sign Up</button>
|
|
152
|
+
</TrackClick>
|
|
153
|
+
|
|
154
|
+
{/* Track when element becomes visible */}
|
|
155
|
+
<TrackVisible eventName="section-viewed" section="hero">
|
|
156
|
+
<div>Hero section</div>
|
|
157
|
+
</TrackVisible>
|
|
158
|
+
</>
|
|
159
|
+
)
|
|
94
160
|
}
|
|
95
|
-
|
|
96
|
-
export default withPagesRouter(MyApp, {
|
|
97
|
-
siteId: 'YOUR_SITE_ID',
|
|
98
|
-
clientOptions: {
|
|
99
|
-
spa: 'auto',
|
|
100
|
-
},
|
|
101
|
-
})
|
|
102
161
|
```
|
|
103
162
|
|
|
104
163
|
### Next.js App Router
|
|
105
164
|
|
|
106
|
-
Use `
|
|
165
|
+
Use `FathomProvider` with `NextFathomTrackViewApp` for automatic route tracking:
|
|
107
166
|
|
|
108
167
|
```tsx
|
|
109
168
|
// app/layout.tsx
|
|
110
|
-
import {
|
|
169
|
+
import { FathomProvider } from 'react-fathom'
|
|
170
|
+
import { NextFathomTrackViewApp } from 'react-fathom/next'
|
|
111
171
|
|
|
112
172
|
export default function RootLayout({ children }) {
|
|
113
173
|
return (
|
|
114
174
|
<html>
|
|
115
175
|
<body>
|
|
116
|
-
<
|
|
176
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
177
|
+
<NextFathomTrackViewApp />
|
|
178
|
+
{children}
|
|
179
|
+
</FathomProvider>
|
|
117
180
|
</body>
|
|
118
181
|
</html>
|
|
119
182
|
)
|
|
120
183
|
}
|
|
121
184
|
```
|
|
122
185
|
|
|
123
|
-
|
|
186
|
+
### Next.js Pages Router
|
|
187
|
+
|
|
188
|
+
Use `FathomProvider` with `NextFathomTrackViewPages` for automatic route tracking:
|
|
124
189
|
|
|
125
190
|
```tsx
|
|
126
|
-
//
|
|
127
|
-
import {
|
|
191
|
+
// pages/_app.tsx
|
|
192
|
+
import { FathomProvider } from 'react-fathom'
|
|
193
|
+
import { NextFathomTrackViewPages } from 'react-fathom/next'
|
|
128
194
|
|
|
129
|
-
function
|
|
195
|
+
function MyApp({ Component, pageProps }) {
|
|
130
196
|
return (
|
|
131
|
-
<
|
|
132
|
-
<
|
|
133
|
-
|
|
197
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
198
|
+
<NextFathomTrackViewPages />
|
|
199
|
+
<Component {...pageProps} />
|
|
200
|
+
</FathomProvider>
|
|
134
201
|
)
|
|
135
202
|
}
|
|
136
203
|
|
|
137
|
-
export default
|
|
138
|
-
siteId: 'YOUR_SITE_ID',
|
|
139
|
-
clientOptions: {
|
|
140
|
-
spa: 'auto',
|
|
141
|
-
},
|
|
142
|
-
})
|
|
204
|
+
export default MyApp
|
|
143
205
|
```
|
|
144
206
|
|
|
145
207
|
## API
|
|
146
208
|
|
|
147
209
|
### `FathomProvider`
|
|
148
210
|
|
|
149
|
-
Main provider component for React apps.
|
|
211
|
+
Main provider component for React apps. Supports composable nesting - nested providers can override `client`, `defaultPageviewOptions`, or `defaultEventOptions`.
|
|
150
212
|
|
|
151
213
|
**Props:**
|
|
152
214
|
|
|
153
|
-
- `siteId` (string,
|
|
215
|
+
- `siteId` (string, optional): Your Fathom Analytics site ID
|
|
154
216
|
- `client` (FathomClient, optional): Custom Fathom client instance
|
|
155
217
|
- `clientOptions` (LoadOptions, optional): Options passed to `fathom-client`
|
|
156
|
-
- `
|
|
157
|
-
- `
|
|
218
|
+
- `defaultPageviewOptions` (PageViewOptions, optional): Default options merged into all `trackPageview` calls
|
|
219
|
+
- `defaultEventOptions` (EventOptions, optional): Default options merged into all `trackEvent` calls
|
|
220
|
+
|
|
221
|
+
**Example:**
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
<FathomProvider
|
|
225
|
+
siteId="YOUR_SITE_ID"
|
|
226
|
+
defaultPageviewOptions={{ referrer: 'https://example.com' }}
|
|
227
|
+
defaultEventOptions={{ id: 'global-id' }}
|
|
228
|
+
>
|
|
229
|
+
{/* Your app */}
|
|
230
|
+
</FathomProvider>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### `NextFathomTrackViewApp`
|
|
234
|
+
|
|
235
|
+
Component that tracks pageviews for Next.js App Router. Must be used within a `FathomProvider`.
|
|
236
|
+
|
|
237
|
+
**Props:**
|
|
238
|
+
|
|
239
|
+
- `disableAutoTrack` (boolean, optional): Disable automatic pageview tracking on route changes (defaults to false)
|
|
240
|
+
|
|
241
|
+
**Example:**
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
245
|
+
<NextFathomTrackViewApp />
|
|
246
|
+
{/* Your app */}
|
|
247
|
+
</FathomProvider>
|
|
248
|
+
```
|
|
158
249
|
|
|
159
|
-
### `
|
|
250
|
+
### `NextFathomTrackViewPages`
|
|
160
251
|
|
|
161
|
-
Next.js
|
|
252
|
+
Component that tracks pageviews for Next.js Pages Router. Must be used within a `FathomProvider`.
|
|
162
253
|
|
|
163
254
|
**Props:**
|
|
164
255
|
|
|
165
|
-
-
|
|
166
|
-
|
|
167
|
-
|
|
256
|
+
- `disableAutoTrack` (boolean, optional): Disable automatic pageview tracking on route changes (defaults to false)
|
|
257
|
+
|
|
258
|
+
**Example:**
|
|
259
|
+
|
|
260
|
+
```tsx
|
|
261
|
+
<FathomProvider siteId="YOUR_SITE_ID">
|
|
262
|
+
<NextFathomTrackViewPages />
|
|
263
|
+
{/* Your app */}
|
|
264
|
+
</FathomProvider>
|
|
265
|
+
```
|
|
168
266
|
|
|
169
267
|
### `useFathom()`
|
|
170
268
|
|
|
171
|
-
Hook to access Fathom methods.
|
|
269
|
+
Hook to access Fathom methods and context.
|
|
172
270
|
|
|
173
271
|
**Returns:**
|
|
174
272
|
|
|
175
|
-
- `trackPageview(options?)`: Track a pageview
|
|
176
|
-
- `trackEvent(eventName, options?)`: Track a custom event
|
|
273
|
+
- `trackPageview(options?)`: Track a pageview (automatically merges `defaultPageviewOptions`)
|
|
274
|
+
- `trackEvent(eventName, options?)`: Track a custom event (automatically merges `defaultEventOptions`)
|
|
275
|
+
- `trackGoal(code, cents)`: Track a goal conversion
|
|
177
276
|
- `load(siteId, options?)`: Load Fathom with a site ID
|
|
178
277
|
- `setSite(siteId)`: Change the site ID
|
|
179
278
|
- `blockTrackingForMe()`: Block tracking for current user
|
|
180
279
|
- `enableTrackingForMe()`: Enable tracking for current user
|
|
181
280
|
- `isTrackingEnabled()`: Check if tracking is enabled
|
|
281
|
+
- `client`: The Fathom client instance
|
|
282
|
+
- `defaultPageviewOptions`: Current default pageview options
|
|
283
|
+
- `defaultEventOptions`: Current default event options
|
|
284
|
+
|
|
285
|
+
### `useTrackOnMount(options?)`
|
|
286
|
+
|
|
287
|
+
Hook to track a pageview when a component mounts.
|
|
288
|
+
|
|
289
|
+
**Options:**
|
|
290
|
+
|
|
291
|
+
- `url` (string, optional): URL to track
|
|
292
|
+
- `referrer` (string, optional): Referrer URL
|
|
293
|
+
- All other `PageViewOptions` from `fathom-client`
|
|
294
|
+
|
|
295
|
+
### `useTrackOnClick(options)`
|
|
296
|
+
|
|
297
|
+
Hook that returns a click handler function to track events.
|
|
298
|
+
|
|
299
|
+
**Options:**
|
|
300
|
+
|
|
301
|
+
- `eventName` (string, required): Event name to track
|
|
302
|
+
- `preventDefault` (boolean, optional): Whether to prevent default behavior (defaults to false)
|
|
303
|
+
- `callback` ((e?: MouseEvent) => void, optional): Callback function to run after tracking
|
|
304
|
+
- All other `EventOptions` from `fathom-client`
|
|
305
|
+
|
|
306
|
+
### `useTrackOnVisible(options)`
|
|
307
|
+
|
|
308
|
+
Hook that returns a ref to attach to an element. Tracks an event when the element becomes visible.
|
|
309
|
+
|
|
310
|
+
**Options:**
|
|
311
|
+
|
|
312
|
+
- `eventName` (string, required): Event name to track
|
|
313
|
+
- `callback` ((entry: IntersectionObserverEntry) => void, optional): Callback function to run after tracking
|
|
314
|
+
- `threshold` (number, optional): IntersectionObserver threshold (defaults to 0.1)
|
|
315
|
+
- `rootMargin` (string, optional): IntersectionObserver rootMargin
|
|
316
|
+
- All other `EventOptions` from `fathom-client`
|
|
317
|
+
|
|
318
|
+
### `TrackPageview`
|
|
319
|
+
|
|
320
|
+
Component that tracks a pageview when it mounts.
|
|
321
|
+
|
|
322
|
+
**Props:**
|
|
323
|
+
|
|
324
|
+
- `url` (string, optional): URL to track
|
|
325
|
+
- `referrer` (string, optional): Referrer URL
|
|
326
|
+
- `children` (ReactNode, optional): Child elements to render
|
|
327
|
+
- All other `PageViewOptions` from `fathom-client`
|
|
328
|
+
|
|
329
|
+
### `TrackClick`
|
|
330
|
+
|
|
331
|
+
Component that tracks an event when clicked.
|
|
332
|
+
|
|
333
|
+
**Props:**
|
|
334
|
+
|
|
335
|
+
- `eventName` (string, required): Event name to track
|
|
336
|
+
- `preventDefault` (boolean, optional): Whether to prevent default behavior (defaults to false)
|
|
337
|
+
- `children` (ReactNode, required): Child element(s) to render
|
|
338
|
+
- All other `EventOptions` from `fathom-client`
|
|
339
|
+
|
|
340
|
+
### `TrackVisible`
|
|
341
|
+
|
|
342
|
+
Component that tracks an event when it becomes visible.
|
|
343
|
+
|
|
344
|
+
**Props:**
|
|
345
|
+
|
|
346
|
+
- `eventName` (string, required): Event name to track
|
|
347
|
+
- `threshold` (number, optional): IntersectionObserver threshold (defaults to 0.1)
|
|
348
|
+
- `rootMargin` (string, optional): IntersectionObserver rootMargin
|
|
349
|
+
- `children` (ReactNode, required): Child element(s) to render
|
|
350
|
+
- `as` (string, optional): HTML element type to render (defaults to 'div')
|
|
351
|
+
- All other `EventOptions` from `fathom-client`
|
|
182
352
|
|
|
183
353
|
## Tree-shaking
|
|
184
354
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! react-fathom - 0.1.
|
|
1
|
+
/*! react-fathom - 0.1.2 !*/
|
|
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]}
|