forked from snowplow/snowplow-javascript-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
53 lines (48 loc) · 1.6 KB
/
Copy pathindex.ts
File metadata and controls
53 lines (48 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import type { BrowserPlugin, BrowserTracker } from '@snowplow/browser-tracker-core';
import { addFormListeners, removeFormListeners, type FormTrackingConfiguration } from './helpers';
export { type FormTrackingConfiguration } from './helpers';
const _trackers: Record<string, BrowserTracker> = {};
/**
* A plugin which enables automatic form focus, change, and submit tracking
*/
export function FormTrackingPlugin(): BrowserPlugin {
return {
activateBrowserPlugin: (tracker: BrowserTracker) => {
_trackers[tracker.id] = tracker;
},
};
}
/**
* Enables automatic form tracking.
*
* An event will be fired when a form field is changed or a form submitted.
* This can be called multiple times: previous listeners will be removed and replaced with any updated configuration.
*
* @param configuration - The form tracking configuration
* @param trackers - The tracker identifiers which the events will be sent to
*/
export function enableFormTracking(
configuration: FormTrackingConfiguration = {},
trackers: Array<string> = Object.keys(_trackers)
) {
trackers.forEach((t) => {
if (_trackers[t]) {
removeFormListeners(_trackers[t]);
addFormListeners(_trackers[t], configuration);
}
});
}
/**
* Disables automatic form tracking.
*
* All page-level listeners for the given trackers will be removed.
*
* @param trackers - The tracker identifiers which the events will be sent to
*/
export function disableFormTracking(trackers: Array<string> = Object.keys(_trackers)) {
trackers.forEach((t) => {
if (_trackers[t]) {
removeFormListeners(_trackers[t]);
}
});
}