@picked/analytics 0.0.0-main.250121051314-d7736d6
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 +19 -0
- package/dist/index.cjs +1528 -0
- package/dist/index.d.cts +1956 -0
- package/dist/index.d.ts +1956 -0
- package/dist/index.js +1485 -0
- package/package.json +50 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,1528 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
bindUserInteractionListeners: () => bindUserInteractionListeners,
|
|
24
|
+
createTracker: () => createTracker,
|
|
25
|
+
trackAppCloseEvent: () => trackAppCloseEvent,
|
|
26
|
+
trackAppLoadEvent: () => trackAppLoadEvent,
|
|
27
|
+
trackAppOpenEvent: () => trackAppOpenEvent,
|
|
28
|
+
trackCartAddEvent: () => trackCartAddEvent,
|
|
29
|
+
trackCartRemoveEvent: () => trackCartRemoveEvent,
|
|
30
|
+
trackCheckoutCompleteEvent: () => trackCheckoutCompleteEvent,
|
|
31
|
+
trackExperienceLoadEvent: () => trackExperienceLoadEvent,
|
|
32
|
+
trackFieldValidationErrorEvent: () => trackFieldValidationErrorEvent,
|
|
33
|
+
trackFormSubmitErrorEvent: () => trackFormSubmitErrorEvent,
|
|
34
|
+
trackFormSubmitEvent: () => trackFormSubmitEvent,
|
|
35
|
+
trackFormSubmitSuccessEvent: () => trackFormSubmitSuccessEvent,
|
|
36
|
+
trackLeadCaptureEvent: () => trackLeadCaptureEvent,
|
|
37
|
+
trackModalCloseEvent: () => trackModalCloseEvent,
|
|
38
|
+
trackModalOpenEvent: () => trackModalOpenEvent,
|
|
39
|
+
trackPageViewEvent: () => trackPageViewEvent,
|
|
40
|
+
trackProductListViewEvent: () => trackProductListViewEvent,
|
|
41
|
+
trackProductSelectEvent: () => trackProductSelectEvent,
|
|
42
|
+
trackProductViewDetailsEvent: () => trackProductViewDetailsEvent,
|
|
43
|
+
trackRecommendationPresentEvent: () => trackRecommendationPresentEvent,
|
|
44
|
+
trackSearchResultsListViewEvent: () => trackSearchResultsListViewEvent,
|
|
45
|
+
trackStepComplete: () => trackStepComplete,
|
|
46
|
+
trackStepEnterEvent: () => trackStepEnterEvent,
|
|
47
|
+
trackStepSubmitErrorEvent: () => trackStepSubmitErrorEvent,
|
|
48
|
+
trackStepSubmitEvent: () => trackStepSubmitEvent,
|
|
49
|
+
trackStepSubmitSuccessEvent: () => trackStepSubmitSuccessEvent,
|
|
50
|
+
trackWishlistAddEvent: () => trackWishlistAddEvent
|
|
51
|
+
});
|
|
52
|
+
module.exports = __toCommonJS(src_exports);
|
|
53
|
+
|
|
54
|
+
// src/tracker.ts
|
|
55
|
+
var import_browser_tracker2 = require("@snowplow/browser-tracker");
|
|
56
|
+
var import_browser_plugin_button_click_tracking = require("@snowplow/browser-plugin-button-click-tracking");
|
|
57
|
+
var import_browser_plugin_performance_navigation_timing = require("@snowplow/browser-plugin-performance-navigation-timing");
|
|
58
|
+
var import_browser_plugin_error_tracking = require("@snowplow/browser-plugin-error-tracking");
|
|
59
|
+
var import_browser_plugin_web_vitals = require("@snowplow/browser-plugin-web-vitals");
|
|
60
|
+
|
|
61
|
+
// src/utils.ts
|
|
62
|
+
var import_browser_tracker = require("@snowplow/browser-tracker");
|
|
63
|
+
var MODULE_NAME = "snowplow";
|
|
64
|
+
function schemaUrl(schema, version) {
|
|
65
|
+
return `iglu:dev.pckd/${schema}/jsonschema/${version}`;
|
|
66
|
+
}
|
|
67
|
+
function log(message, ...data) {
|
|
68
|
+
console.log(`[${MODULE_NAME}] ${message}`, ...data);
|
|
69
|
+
}
|
|
70
|
+
function warn(message, ...data) {
|
|
71
|
+
console.warn(`[${MODULE_NAME}] ${message}`, ...data);
|
|
72
|
+
}
|
|
73
|
+
function error(message, ...data) {
|
|
74
|
+
console.error(`[${MODULE_NAME}] ${message}`, ...data);
|
|
75
|
+
}
|
|
76
|
+
function createEvent(type, context) {
|
|
77
|
+
return {
|
|
78
|
+
event: {
|
|
79
|
+
schema: schemaUrl("event", "1-0-0"),
|
|
80
|
+
data: {
|
|
81
|
+
type
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
context: context.filter(
|
|
85
|
+
(c) => c !== void 0
|
|
86
|
+
)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function createContext(schema, version, data) {
|
|
90
|
+
return {
|
|
91
|
+
schema: schemaUrl(schema, version),
|
|
92
|
+
data
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function createTrackEvent(eventName, formatter) {
|
|
96
|
+
return (eventPayload) => {
|
|
97
|
+
const eventData = formatter(eventPayload);
|
|
98
|
+
log(`Tracking event ${eventName}`, eventData);
|
|
99
|
+
(0, import_browser_tracker.trackSelfDescribingEvent)(eventData);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function createBindListener(type, handler15, options = { passive: true }) {
|
|
103
|
+
return (target) => {
|
|
104
|
+
target.removeEventListener(type, handler15);
|
|
105
|
+
target.addEventListener(type, handler15, options);
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function createDocumentBindListener(type, handler15) {
|
|
109
|
+
return () => {
|
|
110
|
+
document.removeEventListener(type, handler15);
|
|
111
|
+
document.addEventListener(type, handler15, { passive: true });
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function createWindowBindListener(type, handler15) {
|
|
115
|
+
return () => {
|
|
116
|
+
window.removeEventListener(type, handler15);
|
|
117
|
+
window.addEventListener(type, handler15, { passive: true });
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function formatFeatureListContextData(event) {
|
|
121
|
+
const items = event.abConfig?.map(({ feature, name, key, weight }) => ({
|
|
122
|
+
ab_feature: feature,
|
|
123
|
+
ab_name: name,
|
|
124
|
+
ab_key: key,
|
|
125
|
+
ab_weight: weight
|
|
126
|
+
})) || [];
|
|
127
|
+
return { items };
|
|
128
|
+
}
|
|
129
|
+
var UNKNOWN = "unknown";
|
|
130
|
+
function formatAppContextData(event) {
|
|
131
|
+
if (!event.organizationId || !event.projectId) {
|
|
132
|
+
warn(
|
|
133
|
+
'"organizationId" and "projectId" are required. They are likely missing from `init.analytics` in core-feature.ts and core-disabled.ts.',
|
|
134
|
+
event
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
organization_id: event.organizationId || UNKNOWN,
|
|
139
|
+
project_id: event.projectId || event.organizationId || UNKNOWN
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function formatSessionContextData(event) {
|
|
143
|
+
const gaClientId = getGoogleAnalyticsClientId();
|
|
144
|
+
return {
|
|
145
|
+
id: event.sessionId,
|
|
146
|
+
gaid: gaClientId
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function formatQuestionListContextData(event) {
|
|
150
|
+
if (!event.questions) {
|
|
151
|
+
return void 0;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
items: event.questions.map(({ id, type, title, options }) => ({
|
|
155
|
+
id,
|
|
156
|
+
type,
|
|
157
|
+
title,
|
|
158
|
+
options: options?.map(({ id: id2, title: title2, value }) => ({ id: id2, title: title2, value }))
|
|
159
|
+
}))
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function formatAnswerListContextData(event) {
|
|
163
|
+
if (!event.answers) {
|
|
164
|
+
return void 0;
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
items: event.answers.map(({ questionId, values }) => ({
|
|
168
|
+
question_id: questionId,
|
|
169
|
+
values: values.map((value) => {
|
|
170
|
+
return { value };
|
|
171
|
+
})
|
|
172
|
+
}))
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function formatStepContextData(event, required = false) {
|
|
176
|
+
const { step } = event;
|
|
177
|
+
if (step) {
|
|
178
|
+
return {
|
|
179
|
+
id: step.id,
|
|
180
|
+
title: step.title
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (required) {
|
|
184
|
+
warn('"step" is required for this event', event);
|
|
185
|
+
return {
|
|
186
|
+
id: UNKNOWN,
|
|
187
|
+
title: UNKNOWN
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return void 0;
|
|
191
|
+
}
|
|
192
|
+
function formatProductListContextData(event, required = false) {
|
|
193
|
+
const { productList } = event;
|
|
194
|
+
if (productList) {
|
|
195
|
+
return {
|
|
196
|
+
items: productList.map((productItem) => {
|
|
197
|
+
return {
|
|
198
|
+
item_id: productItem.itemId,
|
|
199
|
+
item_name: productItem.itemName,
|
|
200
|
+
affiliation: productItem.affiliation,
|
|
201
|
+
coupon: productItem.coupon,
|
|
202
|
+
currency: productItem.currency,
|
|
203
|
+
creative_name: productItem.creativeName,
|
|
204
|
+
creative_slot: productItem.creativeSlot,
|
|
205
|
+
discount: ensureNumber(productItem.discount),
|
|
206
|
+
index: ensureNumber(productItem.index),
|
|
207
|
+
item_brand: productItem.itemBrand,
|
|
208
|
+
item_category: productItem.itemCategory,
|
|
209
|
+
item_category2: productItem.itemCategory2,
|
|
210
|
+
item_category3: productItem.itemCategory3,
|
|
211
|
+
item_category4: productItem.itemCategory4,
|
|
212
|
+
item_category5: productItem.itemCategory5,
|
|
213
|
+
item_list_id: productItem.itemListId,
|
|
214
|
+
item_list_name: productItem.itemListName,
|
|
215
|
+
item_variant: productItem.itemVariant,
|
|
216
|
+
location_id: productItem.locationId,
|
|
217
|
+
price: ensureNumber(productItem.price),
|
|
218
|
+
promotion_id: productItem.promotionId,
|
|
219
|
+
promotion_name: productItem.promotionName,
|
|
220
|
+
quantity: ensureNumber(productItem.quantity)
|
|
221
|
+
};
|
|
222
|
+
})
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
if (required) {
|
|
226
|
+
warn('"productList" is required for this event', event);
|
|
227
|
+
return {};
|
|
228
|
+
}
|
|
229
|
+
return void 0;
|
|
230
|
+
}
|
|
231
|
+
function formatExperienceContextData(event, required = false) {
|
|
232
|
+
const { experience } = event;
|
|
233
|
+
if (experience) {
|
|
234
|
+
return {
|
|
235
|
+
id: experience.id,
|
|
236
|
+
type: experience.type,
|
|
237
|
+
title: experience.title
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
if (required) {
|
|
241
|
+
warn('"experience" is required for this event', event);
|
|
242
|
+
return {
|
|
243
|
+
id: UNKNOWN,
|
|
244
|
+
type: UNKNOWN,
|
|
245
|
+
title: UNKNOWN
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return void 0;
|
|
249
|
+
}
|
|
250
|
+
function formatExceptionContextData(event, required = false) {
|
|
251
|
+
const { exception } = event;
|
|
252
|
+
if (exception) {
|
|
253
|
+
return {
|
|
254
|
+
reason: exception.reason
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
if (required) {
|
|
258
|
+
warn('"exception" is required for this event', event);
|
|
259
|
+
return {
|
|
260
|
+
reason: UNKNOWN
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
return void 0;
|
|
264
|
+
}
|
|
265
|
+
function formatFormContextData(event) {
|
|
266
|
+
const { form } = event;
|
|
267
|
+
if (form) {
|
|
268
|
+
return {
|
|
269
|
+
id: form.id,
|
|
270
|
+
title: form.title
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
warn('"form" is required for this event', event);
|
|
274
|
+
return {
|
|
275
|
+
id: UNKNOWN,
|
|
276
|
+
title: UNKNOWN
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function formatModalContextData(event) {
|
|
280
|
+
const { modal } = event;
|
|
281
|
+
if (modal) {
|
|
282
|
+
return {
|
|
283
|
+
id: modal.id,
|
|
284
|
+
title: modal.title
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
warn('"modal" is required for this event', event);
|
|
288
|
+
return {
|
|
289
|
+
id: UNKNOWN,
|
|
290
|
+
title: UNKNOWN
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
function debounce(fn, ms = 300) {
|
|
294
|
+
let timeoutId;
|
|
295
|
+
return function(...args) {
|
|
296
|
+
clearTimeout(timeoutId);
|
|
297
|
+
timeoutId = setTimeout(() => fn.apply(this, args), ms);
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
function ensureNumber(input) {
|
|
301
|
+
if (typeof input === "number") {
|
|
302
|
+
return input;
|
|
303
|
+
}
|
|
304
|
+
if (typeof input !== "string") {
|
|
305
|
+
return void 0;
|
|
306
|
+
}
|
|
307
|
+
const numericValue = parseFloat(input);
|
|
308
|
+
if (isNaN(numericValue)) {
|
|
309
|
+
return void 0;
|
|
310
|
+
}
|
|
311
|
+
return numericValue;
|
|
312
|
+
}
|
|
313
|
+
function getGoogleAnalyticsClientId() {
|
|
314
|
+
const cookieName = "_ga=";
|
|
315
|
+
const cookies = document.cookie ? document.cookie.split(";") : [];
|
|
316
|
+
for (const cookie of cookies) {
|
|
317
|
+
const c = cookie.trim();
|
|
318
|
+
if (c.startsWith(cookieName)) {
|
|
319
|
+
const gaValue = c.substring(cookieName.length);
|
|
320
|
+
const parts = gaValue.split(".");
|
|
321
|
+
if (parts.length > 2) {
|
|
322
|
+
return parts.slice(2).join(".");
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// src/tracker.ts
|
|
329
|
+
function getEnabledPlugins(options) {
|
|
330
|
+
const plugins = [];
|
|
331
|
+
if (options.trackErrors) {
|
|
332
|
+
log("Enabling error tracking");
|
|
333
|
+
plugins.push((0, import_browser_plugin_error_tracking.ErrorTrackingPlugin)());
|
|
334
|
+
}
|
|
335
|
+
if (options.trackVitals) {
|
|
336
|
+
log("Enabling web vitals tracking");
|
|
337
|
+
plugins.push((0, import_browser_plugin_web_vitals.WebVitalsPlugin)());
|
|
338
|
+
}
|
|
339
|
+
if (options.trackPerformance) {
|
|
340
|
+
log("Enabling performance tracking");
|
|
341
|
+
plugins.push((0, import_browser_plugin_performance_navigation_timing.PerformanceNavigationTimingPlugin)());
|
|
342
|
+
}
|
|
343
|
+
if (options.trackButtonClickAllowList || options.trackButtonClickFilter) {
|
|
344
|
+
plugins.push((0, import_browser_plugin_button_click_tracking.ButtonClickTrackingPlugin)());
|
|
345
|
+
}
|
|
346
|
+
return plugins;
|
|
347
|
+
}
|
|
348
|
+
function initializePlugins(options) {
|
|
349
|
+
if (options.trackActivity && !options.trackActivityCallback) {
|
|
350
|
+
log("Enabling activity tracking");
|
|
351
|
+
(0, import_browser_tracker2.enableActivityTracking)({
|
|
352
|
+
minimumVisitLength: 30,
|
|
353
|
+
heartbeatDelay: 10
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
if (options.trackActivity && options.trackActivityCallback) {
|
|
357
|
+
log("Enabling activity tracking with callback");
|
|
358
|
+
(0, import_browser_tracker2.enableActivityTrackingCallback)({
|
|
359
|
+
minimumVisitLength: 30,
|
|
360
|
+
heartbeatDelay: 10,
|
|
361
|
+
callback: options.trackActivityCallback
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
if (options.trackButtonClickAllowList || options.trackButtonClickFilter) {
|
|
365
|
+
log("Enabling button click tracking");
|
|
366
|
+
(0, import_browser_plugin_button_click_tracking.enableButtonClickTracking)({
|
|
367
|
+
filter: options.trackButtonClickAllowList ? {
|
|
368
|
+
allowlist: options.trackButtonClickAllowList
|
|
369
|
+
} : options.trackButtonClickFilter
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
if (options.trackErrors) {
|
|
373
|
+
log("Enabling error tracking");
|
|
374
|
+
(0, import_browser_plugin_error_tracking.enableErrorTracking)();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
function createTracker(options) {
|
|
378
|
+
log("Initializing tracker");
|
|
379
|
+
const appId = options.appId;
|
|
380
|
+
const collectorUrl = options.collectorUrl;
|
|
381
|
+
if (!appId) {
|
|
382
|
+
error("No appId provided");
|
|
383
|
+
throw new Error("No appId provided");
|
|
384
|
+
}
|
|
385
|
+
if (!collectorUrl) {
|
|
386
|
+
error("No collectorUrl provided");
|
|
387
|
+
throw new Error("No collectorUrl provided");
|
|
388
|
+
}
|
|
389
|
+
const newTrackerConfiguration = {
|
|
390
|
+
appId,
|
|
391
|
+
platform: "web",
|
|
392
|
+
contexts: {
|
|
393
|
+
webPage: options.trackWebPage,
|
|
394
|
+
session: options.trackSessions,
|
|
395
|
+
browser: options.trackBrowser || false
|
|
396
|
+
},
|
|
397
|
+
plugins: getEnabledPlugins(options)
|
|
398
|
+
};
|
|
399
|
+
const tracker = (0, import_browser_tracker2.newTracker)("picked-analytics", collectorUrl, newTrackerConfiguration);
|
|
400
|
+
bindGlobalContext(options);
|
|
401
|
+
initializePlugins(options);
|
|
402
|
+
return tracker;
|
|
403
|
+
}
|
|
404
|
+
function bindGlobalContext(options) {
|
|
405
|
+
const globalContexts = [];
|
|
406
|
+
if (options.cvlyX) {
|
|
407
|
+
globalContexts.push(
|
|
408
|
+
createContext("cvly_x", "1-0-0", {
|
|
409
|
+
git_commit_sha: options.cvlyX.gitCommitSha,
|
|
410
|
+
vercel_deployment_id: options.cvlyX.vercelDeploymentId,
|
|
411
|
+
vercel_env: options.cvlyX.vercelEnv,
|
|
412
|
+
vercel_url: options.cvlyX.vercelUrl
|
|
413
|
+
})
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
(0, import_browser_tracker2.addGlobalContexts)(globalContexts);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// src/events/app_close.ts
|
|
420
|
+
var EVENT_TYPE = "app_close";
|
|
421
|
+
function formatEvent(analyticsEvent) {
|
|
422
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
423
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
424
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
425
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
426
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
427
|
+
return createEvent(EVENT_TYPE, [
|
|
428
|
+
createContext("app", "1-0-0", appContextData),
|
|
429
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
430
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
431
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
432
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0
|
|
433
|
+
]);
|
|
434
|
+
}
|
|
435
|
+
var trackAppCloseEvent = createTrackEvent(EVENT_TYPE, formatEvent);
|
|
436
|
+
|
|
437
|
+
// src/events/app_load.ts
|
|
438
|
+
var EVENT_TYPE2 = "app_load";
|
|
439
|
+
function formatEvent2(analyticsEvent) {
|
|
440
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
441
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
442
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
443
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
444
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
445
|
+
return createEvent(EVENT_TYPE2, [
|
|
446
|
+
createContext("app", "1-0-0", appContextData),
|
|
447
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
448
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
449
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
450
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0
|
|
451
|
+
]);
|
|
452
|
+
}
|
|
453
|
+
var trackAppLoadEvent = createTrackEvent(EVENT_TYPE2, formatEvent2);
|
|
454
|
+
|
|
455
|
+
// src/events/app_open.ts
|
|
456
|
+
var EVENT_TYPE3 = "app_open";
|
|
457
|
+
function formatEvent3(analyticsEvent) {
|
|
458
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
459
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
460
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
461
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
462
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
463
|
+
return createEvent(EVENT_TYPE3, [
|
|
464
|
+
createContext("app", "1-0-0", appContextData),
|
|
465
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
466
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
467
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
468
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0
|
|
469
|
+
]);
|
|
470
|
+
}
|
|
471
|
+
var trackAppOpenEvent = createTrackEvent(EVENT_TYPE3, formatEvent3);
|
|
472
|
+
|
|
473
|
+
// src/events/cart_add.ts
|
|
474
|
+
var EVENT_TYPE4 = "cart_add";
|
|
475
|
+
function formatEvent4(analyticsEvent) {
|
|
476
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
477
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
478
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
479
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
480
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
481
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
482
|
+
return createEvent(EVENT_TYPE4, [
|
|
483
|
+
createContext("app", "1-0-0", appContextData),
|
|
484
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
485
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
486
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
487
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
488
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
489
|
+
]);
|
|
490
|
+
}
|
|
491
|
+
var trackCartAddEvent = createTrackEvent(EVENT_TYPE4, formatEvent4);
|
|
492
|
+
|
|
493
|
+
// src/events/cart_remove.ts
|
|
494
|
+
var EVENT_TYPE5 = "cart_remove";
|
|
495
|
+
function formatEvent5(analyticsEvent) {
|
|
496
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
497
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
498
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
499
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
500
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
501
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
502
|
+
return createEvent(EVENT_TYPE5, [
|
|
503
|
+
createContext("app", "1-0-0", appContextData),
|
|
504
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
505
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
506
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
507
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
508
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
509
|
+
]);
|
|
510
|
+
}
|
|
511
|
+
var trackCartRemoveEvent = createTrackEvent(EVENT_TYPE5, formatEvent5);
|
|
512
|
+
|
|
513
|
+
// src/events/wishlist_add.ts
|
|
514
|
+
var EVENT_TYPE6 = "wishlist_add";
|
|
515
|
+
function formatEvent6(analyticsEvent) {
|
|
516
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
517
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
518
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
519
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
520
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
521
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
522
|
+
return createEvent(EVENT_TYPE6, [
|
|
523
|
+
createContext("app", "1-0-0", appContextData),
|
|
524
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
525
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
526
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
527
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
528
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
529
|
+
]);
|
|
530
|
+
}
|
|
531
|
+
var trackWishlistAddEvent = createTrackEvent(EVENT_TYPE6, formatEvent6);
|
|
532
|
+
|
|
533
|
+
// src/events/checkout_complete.ts
|
|
534
|
+
var EVENT_TYPE7 = "checkout_complete";
|
|
535
|
+
function formatEvent7(analyticsEvent) {
|
|
536
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
537
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
538
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
539
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
540
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
541
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
542
|
+
return createEvent(EVENT_TYPE7, [
|
|
543
|
+
createContext("app", "1-0-0", appContextData),
|
|
544
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
545
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
546
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
547
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
548
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
549
|
+
]);
|
|
550
|
+
}
|
|
551
|
+
var trackCheckoutCompleteEvent = createTrackEvent(EVENT_TYPE7, formatEvent7);
|
|
552
|
+
|
|
553
|
+
// src/events/experience_load.ts
|
|
554
|
+
var EVENT_TYPE8 = "experience_load";
|
|
555
|
+
function formatEvent8(analyticsEvent) {
|
|
556
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
557
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
558
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
559
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent, true);
|
|
560
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
561
|
+
return createEvent(EVENT_TYPE8, [
|
|
562
|
+
createContext("app", "1-0-0", appContextData),
|
|
563
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
564
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
565
|
+
createContext("experience", "1-0-0", experienceContextData),
|
|
566
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0
|
|
567
|
+
]);
|
|
568
|
+
}
|
|
569
|
+
var trackExperienceLoadEvent = createTrackEvent(EVENT_TYPE8, formatEvent8);
|
|
570
|
+
|
|
571
|
+
// src/events/field_validation_error.ts
|
|
572
|
+
var EVENT_TYPE9 = "field_validation_error";
|
|
573
|
+
function formatEvent9(analyticsEvent) {
|
|
574
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
575
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
576
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
577
|
+
const formContextData = {
|
|
578
|
+
id: "...",
|
|
579
|
+
title: "..."
|
|
580
|
+
};
|
|
581
|
+
const exceptionContextData = {
|
|
582
|
+
reason: "..."
|
|
583
|
+
};
|
|
584
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
585
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
586
|
+
return createEvent(EVENT_TYPE9, [
|
|
587
|
+
createContext("app", "1-0-0", appContextData),
|
|
588
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
589
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
590
|
+
createContext("exception", "1-0-0", exceptionContextData),
|
|
591
|
+
createContext("form", "1-0-0", formContextData),
|
|
592
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
593
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
594
|
+
]);
|
|
595
|
+
}
|
|
596
|
+
var trackFieldValidationErrorEvent = createTrackEvent(EVENT_TYPE9, formatEvent9);
|
|
597
|
+
|
|
598
|
+
// src/events/form_submit.ts
|
|
599
|
+
var EVENT_TYPE10 = "form_submit";
|
|
600
|
+
function formatEvent10(analyticsEvent) {
|
|
601
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
602
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
603
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
604
|
+
const formContextData = formatFormContextData(analyticsEvent);
|
|
605
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
606
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
607
|
+
return createEvent(EVENT_TYPE10, [
|
|
608
|
+
createContext("app", "1-0-0", appContextData),
|
|
609
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
610
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
611
|
+
createContext("form", "1-0-0", formContextData),
|
|
612
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
613
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
614
|
+
]);
|
|
615
|
+
}
|
|
616
|
+
var trackFormSubmitEvent = createTrackEvent(EVENT_TYPE10, formatEvent10);
|
|
617
|
+
|
|
618
|
+
// src/events/form_submit_error.ts
|
|
619
|
+
var EVENT_TYPE11 = "form_submit_error";
|
|
620
|
+
function formatEvent11(analyticsEvent) {
|
|
621
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
622
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
623
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
624
|
+
const formContextData = formatFormContextData(analyticsEvent);
|
|
625
|
+
const exceptionContextData = formatExceptionContextData(analyticsEvent, true);
|
|
626
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
627
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
628
|
+
return createEvent(EVENT_TYPE11, [
|
|
629
|
+
createContext("app", "1-0-0", appContextData),
|
|
630
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
631
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
632
|
+
createContext("form", "1-0-0", formContextData),
|
|
633
|
+
createContext("exception", "1-0-0", exceptionContextData),
|
|
634
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
635
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
636
|
+
]);
|
|
637
|
+
}
|
|
638
|
+
var trackFormSubmitErrorEvent = createTrackEvent(EVENT_TYPE11, formatEvent11);
|
|
639
|
+
|
|
640
|
+
// src/events/form_submit_success.ts
|
|
641
|
+
var EVENT_TYPE12 = "form_submit_success";
|
|
642
|
+
function formatEvent12(analyticsEvent) {
|
|
643
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
644
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
645
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
646
|
+
const formContextData = formatFormContextData(analyticsEvent);
|
|
647
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
648
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
649
|
+
return createEvent(EVENT_TYPE12, [
|
|
650
|
+
createContext("app", "1-0-0", appContextData),
|
|
651
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
652
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
653
|
+
createContext("form", "1-0-0", formContextData),
|
|
654
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
655
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
656
|
+
]);
|
|
657
|
+
}
|
|
658
|
+
var trackFormSubmitSuccessEvent = createTrackEvent(EVENT_TYPE12, formatEvent12);
|
|
659
|
+
|
|
660
|
+
// src/events/lead_capture.ts
|
|
661
|
+
var EVENT_TYPE13 = "lead_capture";
|
|
662
|
+
function formatEvent13(analyticsEvent) {
|
|
663
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
664
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
665
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
666
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
667
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
668
|
+
return createEvent(EVENT_TYPE13, [
|
|
669
|
+
createContext("app", "1-0-0", appContextData),
|
|
670
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
671
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
672
|
+
stepContextData && createContext("step", "1-0-0", stepContextData),
|
|
673
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
674
|
+
]);
|
|
675
|
+
}
|
|
676
|
+
var trackLeadCaptureEvent = createTrackEvent(EVENT_TYPE13, formatEvent13);
|
|
677
|
+
|
|
678
|
+
// src/events/modal_close.ts
|
|
679
|
+
var EVENT_TYPE14 = "modal_close";
|
|
680
|
+
function formatEvent14(analyticsEvent) {
|
|
681
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
682
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
683
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
684
|
+
const modalContextData = formatModalContextData(analyticsEvent);
|
|
685
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
686
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
687
|
+
return createEvent(EVENT_TYPE14, [
|
|
688
|
+
createContext("app", "1-0-0", appContextData),
|
|
689
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
690
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
691
|
+
createContext("modal", "1-0-0", modalContextData),
|
|
692
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
693
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
694
|
+
]);
|
|
695
|
+
}
|
|
696
|
+
var trackModalCloseEvent = createTrackEvent(EVENT_TYPE14, formatEvent14);
|
|
697
|
+
|
|
698
|
+
// src/events/modal_open.ts
|
|
699
|
+
var EVENT_TYPE15 = "modal_open";
|
|
700
|
+
function formatEvent15(analyticsEvent) {
|
|
701
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
702
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
703
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
704
|
+
const modalContextData = formatModalContextData(analyticsEvent);
|
|
705
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
706
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
707
|
+
return createEvent(EVENT_TYPE15, [
|
|
708
|
+
createContext("app", "1-0-0", appContextData),
|
|
709
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
710
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
711
|
+
createContext("modal", "1-0-0", modalContextData),
|
|
712
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
713
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
714
|
+
]);
|
|
715
|
+
}
|
|
716
|
+
var trackModalOpenEvent = createTrackEvent(EVENT_TYPE15, formatEvent15);
|
|
717
|
+
|
|
718
|
+
// src/events/page_view.ts
|
|
719
|
+
var EVENT_TYPE16 = "page_view";
|
|
720
|
+
function formatEvent16(analyticsEvent) {
|
|
721
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
722
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
723
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
724
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
725
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
726
|
+
const productListContextData = formatProductListContextData(analyticsEvent);
|
|
727
|
+
return createEvent(EVENT_TYPE16, [
|
|
728
|
+
createContext("app", "1-0-0", appContextData),
|
|
729
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
730
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
731
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
732
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0,
|
|
733
|
+
productListContextData ? createContext("product_list", "2-0-0", productListContextData) : void 0
|
|
734
|
+
]);
|
|
735
|
+
}
|
|
736
|
+
var trackPageViewEvent = createTrackEvent(EVENT_TYPE16, formatEvent16);
|
|
737
|
+
|
|
738
|
+
// src/events/product_view_details.ts
|
|
739
|
+
var EVENT_TYPE17 = "product_view_details";
|
|
740
|
+
function formatEvent17(analyticsEvent) {
|
|
741
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
742
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
743
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
744
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
745
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
746
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
747
|
+
return createEvent(EVENT_TYPE17, [
|
|
748
|
+
createContext("app", "1-0-0", appContextData),
|
|
749
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
750
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
751
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
752
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
753
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
754
|
+
]);
|
|
755
|
+
}
|
|
756
|
+
var trackProductViewDetailsEvent = createTrackEvent(EVENT_TYPE17, formatEvent17);
|
|
757
|
+
|
|
758
|
+
// src/events/recommendation_present.ts
|
|
759
|
+
var EVENT_TYPE18 = "recommendation_present";
|
|
760
|
+
function formatEvent18(analyticsEvent) {
|
|
761
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
762
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
763
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
764
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
765
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
766
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
767
|
+
return createEvent(EVENT_TYPE18, [
|
|
768
|
+
createContext("app", "1-0-0", appContextData),
|
|
769
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
770
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
771
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
772
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
773
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
774
|
+
]);
|
|
775
|
+
}
|
|
776
|
+
var trackRecommendationPresentEvent = createTrackEvent(EVENT_TYPE18, formatEvent18);
|
|
777
|
+
|
|
778
|
+
// src/events/step_complete.ts
|
|
779
|
+
var EVENT_TYPE19 = "step_complete";
|
|
780
|
+
function formatEvent19(analyticsEvent) {
|
|
781
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
782
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
783
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
784
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
785
|
+
const stepContextData = formatStepContextData(analyticsEvent, true);
|
|
786
|
+
const answersListContext = formatAnswerListContextData(analyticsEvent);
|
|
787
|
+
const questionListContextData = formatQuestionListContextData(analyticsEvent);
|
|
788
|
+
return createEvent(EVENT_TYPE19, [
|
|
789
|
+
createContext("app", "1-0-0", appContextData),
|
|
790
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
791
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
792
|
+
createContext("step", "1-0-0", stepContextData),
|
|
793
|
+
questionListContextData && createContext("question_list", "1-0-0", questionListContextData),
|
|
794
|
+
answersListContext && createContext("answer_list", "1-0-0", answersListContext),
|
|
795
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
796
|
+
]);
|
|
797
|
+
}
|
|
798
|
+
var trackStepComplete = createTrackEvent(EVENT_TYPE19, formatEvent19);
|
|
799
|
+
|
|
800
|
+
// src/events/step_enter.ts
|
|
801
|
+
var EVENT_TYPE20 = "step_enter";
|
|
802
|
+
function formatEvent20(analyticsEvent) {
|
|
803
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
804
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
805
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
806
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
807
|
+
const stepContextData = formatStepContextData(analyticsEvent, true);
|
|
808
|
+
const questionListContextData = formatQuestionListContextData(analyticsEvent);
|
|
809
|
+
return createEvent(EVENT_TYPE20, [
|
|
810
|
+
createContext("app", "1-0-0", appContextData),
|
|
811
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
812
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
813
|
+
createContext("step", "1-0-0", stepContextData),
|
|
814
|
+
questionListContextData && createContext("question_list", "1-0-0", questionListContextData),
|
|
815
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
816
|
+
]);
|
|
817
|
+
}
|
|
818
|
+
var trackStepEnterEvent = createTrackEvent(EVENT_TYPE20, formatEvent20);
|
|
819
|
+
|
|
820
|
+
// src/events/step_submit.ts
|
|
821
|
+
var EVENT_TYPE21 = "step_submit";
|
|
822
|
+
function formatEvent21(analyticsEvent) {
|
|
823
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
824
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
825
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
826
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
827
|
+
const stepContextData = formatStepContextData(analyticsEvent, true);
|
|
828
|
+
const answersListContext = formatAnswerListContextData(analyticsEvent);
|
|
829
|
+
const questionListContextData = formatQuestionListContextData(analyticsEvent);
|
|
830
|
+
return createEvent(EVENT_TYPE21, [
|
|
831
|
+
createContext("app", "1-0-0", appContextData),
|
|
832
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
833
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
834
|
+
createContext("step", "1-0-0", stepContextData),
|
|
835
|
+
questionListContextData && createContext("question_list", "1-0-0", questionListContextData),
|
|
836
|
+
answersListContext && createContext("answer_list", "1-0-0", answersListContext),
|
|
837
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
838
|
+
]);
|
|
839
|
+
}
|
|
840
|
+
var trackStepSubmitEvent = createTrackEvent(EVENT_TYPE21, formatEvent21);
|
|
841
|
+
|
|
842
|
+
// src/events/step_submit_error.ts
|
|
843
|
+
var EVENT_TYPE22 = "step_submit_error";
|
|
844
|
+
function formatEvent22(analyticsEvent) {
|
|
845
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
846
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
847
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
848
|
+
const exceptionContextData = formatExceptionContextData(analyticsEvent, true);
|
|
849
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
850
|
+
const stepContextData = formatStepContextData(analyticsEvent, true);
|
|
851
|
+
const questionListContextData = formatQuestionListContextData(analyticsEvent);
|
|
852
|
+
const answersListContext = formatAnswerListContextData(analyticsEvent);
|
|
853
|
+
return createEvent(EVENT_TYPE22, [
|
|
854
|
+
createContext("app", "1-0-0", appContextData),
|
|
855
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
856
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
857
|
+
createContext("exception", "1-0-0", exceptionContextData),
|
|
858
|
+
createContext("step", "1-0-0", stepContextData),
|
|
859
|
+
questionListContextData && createContext("question_list", "1-0-0", questionListContextData),
|
|
860
|
+
answersListContext && createContext("answer_list", "1-0-0", answersListContext),
|
|
861
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
862
|
+
]);
|
|
863
|
+
}
|
|
864
|
+
var trackStepSubmitErrorEvent = createTrackEvent(EVENT_TYPE22, formatEvent22);
|
|
865
|
+
|
|
866
|
+
// src/events/step_submit_success.ts
|
|
867
|
+
var EVENT_TYPE23 = "step_submit_success";
|
|
868
|
+
function formatEvent23(analyticsEvent) {
|
|
869
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
870
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
871
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
872
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
873
|
+
const stepContextData = formatStepContextData(analyticsEvent, true);
|
|
874
|
+
const questionListContextData = formatQuestionListContextData(analyticsEvent);
|
|
875
|
+
const answersListContext = formatAnswerListContextData(analyticsEvent);
|
|
876
|
+
return createEvent(EVENT_TYPE23, [
|
|
877
|
+
createContext("app", "1-0-0", appContextData),
|
|
878
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
879
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
880
|
+
createContext("step", "1-0-0", stepContextData),
|
|
881
|
+
questionListContextData && createContext("question_list", "1-0-0", questionListContextData),
|
|
882
|
+
answersListContext && createContext("answer_list", "1-0-0", answersListContext),
|
|
883
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData)
|
|
884
|
+
]);
|
|
885
|
+
}
|
|
886
|
+
var trackStepSubmitSuccessEvent = createTrackEvent(EVENT_TYPE23, formatEvent23);
|
|
887
|
+
|
|
888
|
+
// src/events/search_results_list_view.ts
|
|
889
|
+
var EVENT_TYPE24 = "search_results_list_view";
|
|
890
|
+
function formatEvent24(analyticsEvent) {
|
|
891
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
892
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
893
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
894
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
895
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
896
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
897
|
+
return createEvent(EVENT_TYPE24, [
|
|
898
|
+
createContext("app", "1-0-0", appContextData),
|
|
899
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
900
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
901
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
902
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
903
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0
|
|
904
|
+
]);
|
|
905
|
+
}
|
|
906
|
+
var trackSearchResultsListViewEvent = createTrackEvent(EVENT_TYPE24, formatEvent24);
|
|
907
|
+
|
|
908
|
+
// src/events/product_select.ts
|
|
909
|
+
var EVENT_TYPE25 = "product_select";
|
|
910
|
+
function formatEvent25(analyticsEvent) {
|
|
911
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
912
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
913
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
914
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
915
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
916
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
917
|
+
return createEvent(EVENT_TYPE25, [
|
|
918
|
+
createContext("app", "1-0-0", appContextData),
|
|
919
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
920
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
921
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
922
|
+
experienceContextData && createContext("experience", "1-0-0", experienceContextData),
|
|
923
|
+
stepContextData && createContext("step", "1-0-0", stepContextData)
|
|
924
|
+
]);
|
|
925
|
+
}
|
|
926
|
+
var trackProductSelectEvent = createTrackEvent(EVENT_TYPE25, formatEvent25);
|
|
927
|
+
|
|
928
|
+
// src/events/product_list_view.ts
|
|
929
|
+
var EVENT_TYPE26 = "product_list_view";
|
|
930
|
+
function formatEvent26(analyticsEvent) {
|
|
931
|
+
const appContextData = formatAppContextData(analyticsEvent);
|
|
932
|
+
const featureListContextData = formatFeatureListContextData(analyticsEvent);
|
|
933
|
+
const sessionContextData = formatSessionContextData(analyticsEvent);
|
|
934
|
+
const productListContextData = formatProductListContextData(analyticsEvent, true);
|
|
935
|
+
const experienceContextData = formatExperienceContextData(analyticsEvent);
|
|
936
|
+
const stepContextData = formatStepContextData(analyticsEvent);
|
|
937
|
+
return createEvent(EVENT_TYPE26, [
|
|
938
|
+
createContext("app", "1-0-0", appContextData),
|
|
939
|
+
createContext("feature_list", "1-0-0", featureListContextData),
|
|
940
|
+
createContext("session", "1-0-1", sessionContextData),
|
|
941
|
+
createContext("product_list", "2-0-0", productListContextData),
|
|
942
|
+
stepContextData ? createContext("step", "1-0-0", stepContextData) : void 0,
|
|
943
|
+
experienceContextData ? createContext("experience", "1-0-0", experienceContextData) : void 0
|
|
944
|
+
]);
|
|
945
|
+
}
|
|
946
|
+
var trackProductListViewEvent = createTrackEvent(EVENT_TYPE26, formatEvent26);
|
|
947
|
+
|
|
948
|
+
// src/helpers/element.ts
|
|
949
|
+
function isElement(target) {
|
|
950
|
+
return target instanceof Element;
|
|
951
|
+
}
|
|
952
|
+
function findClosestInteractiveElement(element) {
|
|
953
|
+
const interactiveSelectors = [
|
|
954
|
+
"a",
|
|
955
|
+
"button",
|
|
956
|
+
"input",
|
|
957
|
+
"select",
|
|
958
|
+
"textarea",
|
|
959
|
+
"details",
|
|
960
|
+
"summary",
|
|
961
|
+
"label",
|
|
962
|
+
"form",
|
|
963
|
+
"fieldset",
|
|
964
|
+
"legend",
|
|
965
|
+
"optgroup",
|
|
966
|
+
"option",
|
|
967
|
+
"output",
|
|
968
|
+
"datalist",
|
|
969
|
+
"dialog",
|
|
970
|
+
"menu",
|
|
971
|
+
"menuitem",
|
|
972
|
+
"iframe",
|
|
973
|
+
"audio",
|
|
974
|
+
"video",
|
|
975
|
+
"embed",
|
|
976
|
+
"object",
|
|
977
|
+
"canvas"
|
|
978
|
+
].join(", ");
|
|
979
|
+
if (isElement(element)) {
|
|
980
|
+
if (element.matches(interactiveSelectors)) {
|
|
981
|
+
return element;
|
|
982
|
+
}
|
|
983
|
+
return element.closest(interactiveSelectors);
|
|
984
|
+
}
|
|
985
|
+
return null;
|
|
986
|
+
}
|
|
987
|
+
function getElementTextContent(element) {
|
|
988
|
+
if (element instanceof HTMLSelectElement) {
|
|
989
|
+
const selectedIndex = element.selectedIndex || 0;
|
|
990
|
+
const selectedOption = element.options[selectedIndex];
|
|
991
|
+
return selectedOption?.text ?? "";
|
|
992
|
+
}
|
|
993
|
+
if ("innerText" in element && typeof element.innerText === "string") {
|
|
994
|
+
return element.innerText;
|
|
995
|
+
}
|
|
996
|
+
return element.textContent;
|
|
997
|
+
}
|
|
998
|
+
function getElementLabel(element) {
|
|
999
|
+
const ariaLabel = element.getAttribute("aria-label");
|
|
1000
|
+
if (ariaLabel) {
|
|
1001
|
+
return ariaLabel;
|
|
1002
|
+
}
|
|
1003
|
+
const ariaLabelledBy = element.getAttribute("aria-labelledby");
|
|
1004
|
+
if (ariaLabelledBy) {
|
|
1005
|
+
const labelledElement = document.getElementById(ariaLabelledBy);
|
|
1006
|
+
if (labelledElement) {
|
|
1007
|
+
const label = getElementTextContent(labelledElement);
|
|
1008
|
+
if (label) {
|
|
1009
|
+
return label;
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
if ("id" in element && element.id) {
|
|
1014
|
+
const labelElement = document.querySelector(`label[for="${element.id}"]`);
|
|
1015
|
+
if (labelElement) {
|
|
1016
|
+
const label = getElementTextContent(labelElement);
|
|
1017
|
+
if (label) {
|
|
1018
|
+
return label;
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
let parent = element.parentElement;
|
|
1023
|
+
while (parent) {
|
|
1024
|
+
if (parent.tagName.toLowerCase() === "label") {
|
|
1025
|
+
const label = getElementTextContent(parent);
|
|
1026
|
+
if (label) {
|
|
1027
|
+
return label;
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
parent = parent.parentElement;
|
|
1031
|
+
}
|
|
1032
|
+
if (element instanceof HTMLInputElement && "labels" in element && element.labels) {
|
|
1033
|
+
const label = Array.from(element.labels).map((label2) => getElementTextContent(label2)).filter(Boolean).join(" ");
|
|
1034
|
+
if (label) {
|
|
1035
|
+
return label;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
if ("placeholder" in element && typeof element.placeholder === "string") {
|
|
1039
|
+
return element.placeholder;
|
|
1040
|
+
}
|
|
1041
|
+
return null;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
// src/helpers/text.ts
|
|
1045
|
+
var MAX_TEXT_LENGTH = 255;
|
|
1046
|
+
function trimText(text) {
|
|
1047
|
+
return text ? text.slice(0, MAX_TEXT_LENGTH) : null;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
// src/events/interaction/rapid_scroll.ts
|
|
1051
|
+
var EVENT_TYPE27 = "rapid_scroll";
|
|
1052
|
+
function formatEvent27(event) {
|
|
1053
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1054
|
+
if (!isElement(targetElement)) {
|
|
1055
|
+
return createEvent(EVENT_TYPE27, []);
|
|
1056
|
+
}
|
|
1057
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1058
|
+
const elementContextData = {
|
|
1059
|
+
id: element.id || null,
|
|
1060
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1061
|
+
label: trimText(getElementLabel(element)),
|
|
1062
|
+
text: trimText(getElementTextContent(element))
|
|
1063
|
+
};
|
|
1064
|
+
return createEvent(EVENT_TYPE27, [
|
|
1065
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1066
|
+
]);
|
|
1067
|
+
}
|
|
1068
|
+
var trackEvent = createTrackEvent(EVENT_TYPE27, formatEvent27);
|
|
1069
|
+
|
|
1070
|
+
// src/listeners/rapid_scroll.ts
|
|
1071
|
+
var RAPID_SCROLL_THRESHOLD = 100;
|
|
1072
|
+
var RAPID_SCROLL_INTERVAL = 100;
|
|
1073
|
+
var DEBOUNCE_TIME = 300;
|
|
1074
|
+
var previousScrollY = 0;
|
|
1075
|
+
var lastRapidScrollTime = 0;
|
|
1076
|
+
var debouncedTrackEvent = debounce((event) => {
|
|
1077
|
+
trackEvent(event);
|
|
1078
|
+
}, DEBOUNCE_TIME);
|
|
1079
|
+
function handleRapidScroll(event) {
|
|
1080
|
+
const target = event.target || document.documentElement;
|
|
1081
|
+
if (!(target instanceof HTMLElement)) {
|
|
1082
|
+
return;
|
|
1083
|
+
}
|
|
1084
|
+
const currentScrollY = target.scrollTop;
|
|
1085
|
+
const timeDiff = Date.now() - lastRapidScrollTime;
|
|
1086
|
+
if (Math.abs(currentScrollY - previousScrollY) > RAPID_SCROLL_THRESHOLD && timeDiff < RAPID_SCROLL_INTERVAL) {
|
|
1087
|
+
debouncedTrackEvent(event);
|
|
1088
|
+
}
|
|
1089
|
+
previousScrollY = currentScrollY;
|
|
1090
|
+
lastRapidScrollTime = Date.now();
|
|
1091
|
+
}
|
|
1092
|
+
var bindListener = createBindListener("scroll", handleRapidScroll, true);
|
|
1093
|
+
|
|
1094
|
+
// src/events/interaction/rapid_click.ts
|
|
1095
|
+
var EVENT_TYPE28 = "rapid_click";
|
|
1096
|
+
function formatEvent28(event) {
|
|
1097
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1098
|
+
if (!isElement(targetElement)) {
|
|
1099
|
+
const elementContextData2 = {
|
|
1100
|
+
node_type: "unknown"
|
|
1101
|
+
};
|
|
1102
|
+
return createEvent(EVENT_TYPE28, [
|
|
1103
|
+
createContext("element", "1-0-0", elementContextData2)
|
|
1104
|
+
]);
|
|
1105
|
+
}
|
|
1106
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1107
|
+
const elementContextData = {
|
|
1108
|
+
id: element.id || null,
|
|
1109
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1110
|
+
label: trimText(getElementLabel(element)),
|
|
1111
|
+
text: trimText(getElementTextContent(element))
|
|
1112
|
+
};
|
|
1113
|
+
return createEvent(EVENT_TYPE28, [
|
|
1114
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1115
|
+
]);
|
|
1116
|
+
}
|
|
1117
|
+
var trackEvent2 = createTrackEvent(EVENT_TYPE28, formatEvent28);
|
|
1118
|
+
|
|
1119
|
+
// src/listeners/rapid_click.ts
|
|
1120
|
+
var clickCount = 0;
|
|
1121
|
+
var lastClickTime = 0;
|
|
1122
|
+
var RAGE_CLICK_THRESHOLD = 3;
|
|
1123
|
+
var TIME_WINDOW_MS = 500;
|
|
1124
|
+
function handler(event) {
|
|
1125
|
+
const currentTime = (/* @__PURE__ */ new Date()).getTime();
|
|
1126
|
+
if (currentTime - lastClickTime < TIME_WINDOW_MS) {
|
|
1127
|
+
clickCount++;
|
|
1128
|
+
} else {
|
|
1129
|
+
clickCount = 1;
|
|
1130
|
+
}
|
|
1131
|
+
lastClickTime = currentTime;
|
|
1132
|
+
if (clickCount >= RAGE_CLICK_THRESHOLD) {
|
|
1133
|
+
trackEvent2(event);
|
|
1134
|
+
clickCount = 0;
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
var bindListener2 = createBindListener("click", handler);
|
|
1138
|
+
|
|
1139
|
+
// src/events/interaction/right_click.ts
|
|
1140
|
+
var EVENT_TYPE29 = "right_click";
|
|
1141
|
+
function formatEvent29(event) {
|
|
1142
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1143
|
+
if (!isElement(targetElement)) {
|
|
1144
|
+
const elementContextData2 = {
|
|
1145
|
+
node_type: "unknown"
|
|
1146
|
+
};
|
|
1147
|
+
return createEvent(EVENT_TYPE29, [
|
|
1148
|
+
createContext("element", "1-0-0", elementContextData2)
|
|
1149
|
+
]);
|
|
1150
|
+
}
|
|
1151
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1152
|
+
const elementContextData = {
|
|
1153
|
+
id: element.id || null,
|
|
1154
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1155
|
+
label: trimText(getElementLabel(element)),
|
|
1156
|
+
text: trimText(getElementTextContent(element))
|
|
1157
|
+
};
|
|
1158
|
+
return createEvent(EVENT_TYPE29, [
|
|
1159
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1160
|
+
]);
|
|
1161
|
+
}
|
|
1162
|
+
var trackEvent3 = createTrackEvent(EVENT_TYPE29, formatEvent29);
|
|
1163
|
+
|
|
1164
|
+
// src/listeners/right_click.ts
|
|
1165
|
+
function handler2(event) {
|
|
1166
|
+
trackEvent3(event);
|
|
1167
|
+
}
|
|
1168
|
+
var bindListener3 = createBindListener("contextmenu", handler2);
|
|
1169
|
+
|
|
1170
|
+
// src/events/interaction/mouse_shake.ts
|
|
1171
|
+
var EVENT_TYPE30 = "mouse_shake";
|
|
1172
|
+
function formatEvent30() {
|
|
1173
|
+
return createEvent(EVENT_TYPE30, []);
|
|
1174
|
+
}
|
|
1175
|
+
var trackEvent4 = createTrackEvent(EVENT_TYPE30, formatEvent30);
|
|
1176
|
+
|
|
1177
|
+
// src/listeners/mouse_shake.ts
|
|
1178
|
+
var THRESHOLD = 5;
|
|
1179
|
+
var DEBOUNCE_TIME2 = 500;
|
|
1180
|
+
var SHAKE_TIME_LIMIT = 500;
|
|
1181
|
+
var lastMove = { x: 0, y: 0 };
|
|
1182
|
+
var directions = [];
|
|
1183
|
+
var lastShakeTime = 0;
|
|
1184
|
+
var debouncedTrackEvent2 = debounce((event) => {
|
|
1185
|
+
trackEvent4(event);
|
|
1186
|
+
}, DEBOUNCE_TIME2);
|
|
1187
|
+
function handler3(event) {
|
|
1188
|
+
const now = Date.now();
|
|
1189
|
+
const dx = event.clientX - lastMove.x;
|
|
1190
|
+
const direction = Math.sign(dx);
|
|
1191
|
+
if (now - lastShakeTime > SHAKE_TIME_LIMIT) {
|
|
1192
|
+
directions = [];
|
|
1193
|
+
}
|
|
1194
|
+
if (direction !== 0 && (directions.length === 0 || directions[directions.length - 1] !== direction)) {
|
|
1195
|
+
directions.push(direction);
|
|
1196
|
+
}
|
|
1197
|
+
lastMove = { x: event.clientX, y: event.clientY };
|
|
1198
|
+
if (directions.length >= THRESHOLD) {
|
|
1199
|
+
debouncedTrackEvent2(event);
|
|
1200
|
+
directions = [];
|
|
1201
|
+
}
|
|
1202
|
+
lastShakeTime = now;
|
|
1203
|
+
}
|
|
1204
|
+
var bindListener4 = createDocumentBindListener("mousemove", handler3);
|
|
1205
|
+
|
|
1206
|
+
// src/events/interaction/page_visible.ts
|
|
1207
|
+
var EVENT_TYPE31 = "page_visible";
|
|
1208
|
+
function formatEvent31() {
|
|
1209
|
+
return createEvent(EVENT_TYPE31, []);
|
|
1210
|
+
}
|
|
1211
|
+
var trackEvent5 = createTrackEvent(EVENT_TYPE31, formatEvent31);
|
|
1212
|
+
|
|
1213
|
+
// src/events/interaction/page_hidden.ts
|
|
1214
|
+
var EVENT_TYPE32 = "page_hidden";
|
|
1215
|
+
function formatEvent32() {
|
|
1216
|
+
return createEvent(EVENT_TYPE32, []);
|
|
1217
|
+
}
|
|
1218
|
+
var trackEvent6 = createTrackEvent(EVENT_TYPE32, formatEvent32);
|
|
1219
|
+
|
|
1220
|
+
// src/listeners/visibility.ts
|
|
1221
|
+
function handler4(event) {
|
|
1222
|
+
if (document.visibilityState === "visible") {
|
|
1223
|
+
trackEvent5(event);
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1226
|
+
trackEvent6(event);
|
|
1227
|
+
}
|
|
1228
|
+
var bindListener5 = createDocumentBindListener("visibilitychange", handler4);
|
|
1229
|
+
|
|
1230
|
+
// src/events/interaction/backspace.ts
|
|
1231
|
+
var EVENT_TYPE33 = "backspace";
|
|
1232
|
+
function formatEvent33(event) {
|
|
1233
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1234
|
+
if (!isElement(targetElement)) {
|
|
1235
|
+
return createEvent(EVENT_TYPE33, []);
|
|
1236
|
+
}
|
|
1237
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1238
|
+
const elementContextData = {
|
|
1239
|
+
id: element.id || null,
|
|
1240
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1241
|
+
label: trimText(getElementLabel(element)),
|
|
1242
|
+
text: trimText(getElementTextContent(element))
|
|
1243
|
+
};
|
|
1244
|
+
return createEvent(EVENT_TYPE33, [
|
|
1245
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1246
|
+
]);
|
|
1247
|
+
}
|
|
1248
|
+
var trackEvent7 = createTrackEvent(EVENT_TYPE33, formatEvent33);
|
|
1249
|
+
|
|
1250
|
+
// src/listeners/backspace.ts
|
|
1251
|
+
function handler5(event) {
|
|
1252
|
+
if (event.key === "Backspace") {
|
|
1253
|
+
trackEvent7(event);
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
var bindListener6 = createBindListener("keydown", handler5);
|
|
1257
|
+
|
|
1258
|
+
// src/events/interaction/page_hide.ts
|
|
1259
|
+
var EVENT_TYPE34 = "page_hide";
|
|
1260
|
+
function formatEvent34() {
|
|
1261
|
+
return createEvent(EVENT_TYPE34, []);
|
|
1262
|
+
}
|
|
1263
|
+
var trackEvent8 = createTrackEvent(EVENT_TYPE34, formatEvent34);
|
|
1264
|
+
|
|
1265
|
+
// src/listeners/pagehide.ts
|
|
1266
|
+
function handler6(event) {
|
|
1267
|
+
trackEvent8(event);
|
|
1268
|
+
}
|
|
1269
|
+
var bindListener7 = createWindowBindListener("pagehide", handler6);
|
|
1270
|
+
|
|
1271
|
+
// src/events/interaction/page_show.ts
|
|
1272
|
+
var EVENT_TYPE35 = "page_show";
|
|
1273
|
+
function formatEvent35() {
|
|
1274
|
+
return createEvent(EVENT_TYPE35, []);
|
|
1275
|
+
}
|
|
1276
|
+
var trackEvent9 = createTrackEvent(EVENT_TYPE35, formatEvent35);
|
|
1277
|
+
|
|
1278
|
+
// src/listeners/pageshow.ts
|
|
1279
|
+
function handler7(event) {
|
|
1280
|
+
trackEvent9(event);
|
|
1281
|
+
}
|
|
1282
|
+
var bindListener8 = createWindowBindListener("pageshow", handler7);
|
|
1283
|
+
|
|
1284
|
+
// src/events/interaction/offline.ts
|
|
1285
|
+
var EVENT_TYPE36 = "offline";
|
|
1286
|
+
function formatEvent36() {
|
|
1287
|
+
return createEvent(EVENT_TYPE36, []);
|
|
1288
|
+
}
|
|
1289
|
+
var trackEvent10 = createTrackEvent(EVENT_TYPE36, formatEvent36);
|
|
1290
|
+
|
|
1291
|
+
// src/listeners/offline.ts
|
|
1292
|
+
function handler8(event) {
|
|
1293
|
+
trackEvent10(event);
|
|
1294
|
+
}
|
|
1295
|
+
var bindListener9 = createWindowBindListener("offline", handler8);
|
|
1296
|
+
|
|
1297
|
+
// src/events/interaction/scroll.ts
|
|
1298
|
+
var EVENT_TYPE37 = "scroll";
|
|
1299
|
+
function formatEvent37(event) {
|
|
1300
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1301
|
+
if (!isElement(targetElement)) {
|
|
1302
|
+
return createEvent(EVENT_TYPE37, []);
|
|
1303
|
+
}
|
|
1304
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1305
|
+
const elementContextData = {
|
|
1306
|
+
id: element.id || null,
|
|
1307
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1308
|
+
label: trimText(getElementLabel(element)),
|
|
1309
|
+
text: trimText(getElementTextContent(element))
|
|
1310
|
+
};
|
|
1311
|
+
return createEvent(EVENT_TYPE37, [
|
|
1312
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1313
|
+
]);
|
|
1314
|
+
}
|
|
1315
|
+
var trackEvent11 = createTrackEvent(EVENT_TYPE37, formatEvent37);
|
|
1316
|
+
|
|
1317
|
+
// src/listeners/scroll.ts
|
|
1318
|
+
var debouncedHandler = debounce((event) => {
|
|
1319
|
+
trackEvent11(event);
|
|
1320
|
+
}, 500);
|
|
1321
|
+
var bindListener10 = createBindListener("scroll", debouncedHandler, true);
|
|
1322
|
+
|
|
1323
|
+
// src/events/interaction/online.ts
|
|
1324
|
+
var EVENT_TYPE38 = "online";
|
|
1325
|
+
function formatEvent38() {
|
|
1326
|
+
return createEvent(EVENT_TYPE38, []);
|
|
1327
|
+
}
|
|
1328
|
+
var trackEvent12 = createTrackEvent(EVENT_TYPE38, formatEvent38);
|
|
1329
|
+
|
|
1330
|
+
// src/listeners/online.ts
|
|
1331
|
+
function handler9(event) {
|
|
1332
|
+
trackEvent12(event);
|
|
1333
|
+
}
|
|
1334
|
+
var bindListener11 = createWindowBindListener("online", handler9);
|
|
1335
|
+
|
|
1336
|
+
// src/events/interaction/resize.ts
|
|
1337
|
+
var EVENT_TYPE39 = "resize";
|
|
1338
|
+
function formatEvent39() {
|
|
1339
|
+
return createEvent(EVENT_TYPE39, []);
|
|
1340
|
+
}
|
|
1341
|
+
var trackEvent13 = createTrackEvent(EVENT_TYPE39, formatEvent39);
|
|
1342
|
+
|
|
1343
|
+
// src/listeners/resize.ts
|
|
1344
|
+
var debouncedHandler2 = debounce((event) => {
|
|
1345
|
+
trackEvent13(event);
|
|
1346
|
+
}, 300);
|
|
1347
|
+
var bindListener12 = createWindowBindListener("resize", debouncedHandler2);
|
|
1348
|
+
|
|
1349
|
+
// src/events/interaction/unload.ts
|
|
1350
|
+
var EVENT_TYPE40 = "unload";
|
|
1351
|
+
function formatEvent40() {
|
|
1352
|
+
return createEvent(EVENT_TYPE40, []);
|
|
1353
|
+
}
|
|
1354
|
+
var trackEvent14 = createTrackEvent(EVENT_TYPE40, formatEvent40);
|
|
1355
|
+
|
|
1356
|
+
// src/listeners/unload.ts
|
|
1357
|
+
function handler10(event) {
|
|
1358
|
+
trackEvent14(event);
|
|
1359
|
+
}
|
|
1360
|
+
var bindListener13 = createWindowBindListener("unload", handler10);
|
|
1361
|
+
|
|
1362
|
+
// src/events/interaction/click.ts
|
|
1363
|
+
var EVENT_TYPE41 = "click";
|
|
1364
|
+
function formatEvent41(event) {
|
|
1365
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1366
|
+
if (!isElement(targetElement)) {
|
|
1367
|
+
const elementContextData2 = {
|
|
1368
|
+
node_type: "unknown"
|
|
1369
|
+
};
|
|
1370
|
+
return createEvent(EVENT_TYPE41, [
|
|
1371
|
+
createContext("element", "1-0-0", elementContextData2)
|
|
1372
|
+
]);
|
|
1373
|
+
}
|
|
1374
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1375
|
+
const elementContextData = {
|
|
1376
|
+
id: element.id || null,
|
|
1377
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1378
|
+
label: trimText(getElementLabel(element)),
|
|
1379
|
+
text: trimText(getElementTextContent(element))
|
|
1380
|
+
};
|
|
1381
|
+
return createEvent(EVENT_TYPE41, [
|
|
1382
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1383
|
+
]);
|
|
1384
|
+
}
|
|
1385
|
+
var trackEvent15 = createTrackEvent(EVENT_TYPE41, formatEvent41);
|
|
1386
|
+
|
|
1387
|
+
// src/listeners/click.ts
|
|
1388
|
+
function handler11(event) {
|
|
1389
|
+
trackEvent15(event);
|
|
1390
|
+
}
|
|
1391
|
+
var bindListener14 = createBindListener("click", handler11);
|
|
1392
|
+
|
|
1393
|
+
// src/events/interaction/paste.ts
|
|
1394
|
+
var EVENT_TYPE42 = "paste";
|
|
1395
|
+
function formatEvent42(event) {
|
|
1396
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1397
|
+
if (!isElement(targetElement)) {
|
|
1398
|
+
return createEvent(EVENT_TYPE42, []);
|
|
1399
|
+
}
|
|
1400
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1401
|
+
const elementContextData = {
|
|
1402
|
+
id: element.id || null,
|
|
1403
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1404
|
+
label: trimText(getElementLabel(element)),
|
|
1405
|
+
text: trimText(getElementTextContent(element))
|
|
1406
|
+
};
|
|
1407
|
+
return createEvent(EVENT_TYPE42, [
|
|
1408
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1409
|
+
]);
|
|
1410
|
+
}
|
|
1411
|
+
var trackEvent16 = createTrackEvent(EVENT_TYPE42, formatEvent42);
|
|
1412
|
+
|
|
1413
|
+
// src/listeners/paste.ts
|
|
1414
|
+
function handler12(event) {
|
|
1415
|
+
trackEvent16(event);
|
|
1416
|
+
}
|
|
1417
|
+
var bindListener15 = createBindListener("paste", handler12);
|
|
1418
|
+
|
|
1419
|
+
// src/events/interaction/copy.ts
|
|
1420
|
+
var EVENT_TYPE43 = "copy";
|
|
1421
|
+
function formatEvent43(event) {
|
|
1422
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1423
|
+
if (!isElement(targetElement)) {
|
|
1424
|
+
return createEvent(EVENT_TYPE43, []);
|
|
1425
|
+
}
|
|
1426
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1427
|
+
const elementContextData = {
|
|
1428
|
+
id: element.id || null,
|
|
1429
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1430
|
+
label: trimText(getElementLabel(element)),
|
|
1431
|
+
text: trimText(getElementTextContent(element))
|
|
1432
|
+
};
|
|
1433
|
+
return createEvent(EVENT_TYPE43, [
|
|
1434
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1435
|
+
]);
|
|
1436
|
+
}
|
|
1437
|
+
var trackEvent17 = createTrackEvent(EVENT_TYPE43, formatEvent43);
|
|
1438
|
+
|
|
1439
|
+
// src/listeners/copy.ts
|
|
1440
|
+
function handler13(event) {
|
|
1441
|
+
trackEvent17(event);
|
|
1442
|
+
}
|
|
1443
|
+
var bindListener16 = createBindListener("copy", handler13);
|
|
1444
|
+
|
|
1445
|
+
// src/events/interaction/drag.ts
|
|
1446
|
+
var EVENT_TYPE44 = "drag";
|
|
1447
|
+
function formatEvent44(event) {
|
|
1448
|
+
const targetElement = event.target || document.activeElement || event.currentTarget;
|
|
1449
|
+
if (!isElement(targetElement)) {
|
|
1450
|
+
return createEvent(EVENT_TYPE44, []);
|
|
1451
|
+
}
|
|
1452
|
+
const element = findClosestInteractiveElement(targetElement) || targetElement;
|
|
1453
|
+
const elementContextData = {
|
|
1454
|
+
id: element.id || null,
|
|
1455
|
+
node_type: element.nodeName.toLowerCase(),
|
|
1456
|
+
label: trimText(getElementLabel(element)),
|
|
1457
|
+
text: trimText(getElementTextContent(element))
|
|
1458
|
+
};
|
|
1459
|
+
return createEvent(EVENT_TYPE44, [
|
|
1460
|
+
createContext("element", "1-0-0", elementContextData)
|
|
1461
|
+
]);
|
|
1462
|
+
}
|
|
1463
|
+
var trackEvent18 = createTrackEvent(EVENT_TYPE44, formatEvent44);
|
|
1464
|
+
|
|
1465
|
+
// src/listeners/drag.ts
|
|
1466
|
+
function handler14(event) {
|
|
1467
|
+
const currentTarget = event.currentTarget;
|
|
1468
|
+
if (!currentTarget) {
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
currentTarget.removeEventListener("drag", handler14);
|
|
1472
|
+
currentTarget.addEventListener("dragend", () => bindListener17(currentTarget));
|
|
1473
|
+
trackEvent18(event);
|
|
1474
|
+
}
|
|
1475
|
+
var bindListener17 = createBindListener("drag", handler14);
|
|
1476
|
+
|
|
1477
|
+
// src/user-interaction.ts
|
|
1478
|
+
function bindUserInteractionListeners(target) {
|
|
1479
|
+
log("Binding user interaction listeners", target);
|
|
1480
|
+
bindListener14(target);
|
|
1481
|
+
bindListener2(target);
|
|
1482
|
+
bindListener3(target);
|
|
1483
|
+
bindListener16(target);
|
|
1484
|
+
bindListener15(target);
|
|
1485
|
+
bindListener17(target);
|
|
1486
|
+
bindListener6(target);
|
|
1487
|
+
bindListener4();
|
|
1488
|
+
bindListener5();
|
|
1489
|
+
bindListener10(target);
|
|
1490
|
+
bindListener(target);
|
|
1491
|
+
bindListener7();
|
|
1492
|
+
bindListener8();
|
|
1493
|
+
bindListener9();
|
|
1494
|
+
bindListener11();
|
|
1495
|
+
bindListener12();
|
|
1496
|
+
bindListener13();
|
|
1497
|
+
}
|
|
1498
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1499
|
+
0 && (module.exports = {
|
|
1500
|
+
bindUserInteractionListeners,
|
|
1501
|
+
createTracker,
|
|
1502
|
+
trackAppCloseEvent,
|
|
1503
|
+
trackAppLoadEvent,
|
|
1504
|
+
trackAppOpenEvent,
|
|
1505
|
+
trackCartAddEvent,
|
|
1506
|
+
trackCartRemoveEvent,
|
|
1507
|
+
trackCheckoutCompleteEvent,
|
|
1508
|
+
trackExperienceLoadEvent,
|
|
1509
|
+
trackFieldValidationErrorEvent,
|
|
1510
|
+
trackFormSubmitErrorEvent,
|
|
1511
|
+
trackFormSubmitEvent,
|
|
1512
|
+
trackFormSubmitSuccessEvent,
|
|
1513
|
+
trackLeadCaptureEvent,
|
|
1514
|
+
trackModalCloseEvent,
|
|
1515
|
+
trackModalOpenEvent,
|
|
1516
|
+
trackPageViewEvent,
|
|
1517
|
+
trackProductListViewEvent,
|
|
1518
|
+
trackProductSelectEvent,
|
|
1519
|
+
trackProductViewDetailsEvent,
|
|
1520
|
+
trackRecommendationPresentEvent,
|
|
1521
|
+
trackSearchResultsListViewEvent,
|
|
1522
|
+
trackStepComplete,
|
|
1523
|
+
trackStepEnterEvent,
|
|
1524
|
+
trackStepSubmitErrorEvent,
|
|
1525
|
+
trackStepSubmitEvent,
|
|
1526
|
+
trackStepSubmitSuccessEvent,
|
|
1527
|
+
trackWishlistAddEvent
|
|
1528
|
+
});
|