@simplybusiness/services 2.3.1 → 2.3.3

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.
Files changed (153) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/address-lookup/index.js +94 -0
  3. package/dist/cjs/address-lookup/index.js.map +7 -0
  4. package/dist/cjs/address-lookup/types.js +19 -0
  5. package/dist/cjs/address-lookup/types.js.map +7 -0
  6. package/dist/cjs/airbrake/index.js +64 -0
  7. package/dist/cjs/airbrake/index.js.map +7 -0
  8. package/dist/cjs/index.js +3 -3
  9. package/dist/cjs/meta.json +801 -2
  10. package/dist/cjs/mocks/eventDefinitions.js +246 -0
  11. package/dist/cjs/mocks/eventDefinitions.js.map +7 -0
  12. package/dist/cjs/mocks/scripts-mock.js +67 -0
  13. package/dist/cjs/mocks/scripts-mock.js.map +7 -0
  14. package/dist/cjs/snowplow/Snowplow.js +197 -0
  15. package/dist/cjs/snowplow/Snowplow.js.map +7 -0
  16. package/dist/cjs/snowplow/SnowplowContext.js +1315 -0
  17. package/dist/cjs/snowplow/SnowplowContext.js.map +7 -0
  18. package/dist/cjs/snowplow/constants.js +27 -0
  19. package/dist/cjs/snowplow/constants.js.map +7 -0
  20. package/dist/cjs/snowplow/contexts.js +95 -0
  21. package/dist/cjs/snowplow/contexts.js.map +7 -0
  22. package/dist/cjs/snowplow/event-definitions/base.js +92 -0
  23. package/dist/cjs/snowplow/event-definitions/base.js.map +7 -0
  24. package/dist/cjs/snowplow/event-definitions/coverage-selection.js +61 -0
  25. package/dist/cjs/snowplow/event-definitions/coverage-selection.js.map +7 -0
  26. package/dist/cjs/snowplow/event-definitions/index.js +1069 -0
  27. package/dist/cjs/snowplow/event-definitions/index.js.map +7 -0
  28. package/dist/cjs/snowplow/event-definitions/intervention.js +59 -0
  29. package/dist/cjs/snowplow/event-definitions/intervention.js.map +7 -0
  30. package/dist/cjs/snowplow/event-definitions/personalised_cover.js +309 -0
  31. package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +7 -0
  32. package/dist/cjs/snowplow/event-definitions/qcp.js +379 -0
  33. package/dist/cjs/snowplow/event-definitions/qcp.js.map +7 -0
  34. package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +390 -0
  35. package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
  36. package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js +165 -0
  37. package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
  38. package/dist/cjs/snowplow/event-definitions/referral.js +42 -0
  39. package/dist/cjs/snowplow/event-definitions/referral.js.map +7 -0
  40. package/dist/cjs/snowplow/event-definitions/test-utils.js +33 -0
  41. package/dist/cjs/snowplow/event-definitions/test-utils.js.map +7 -0
  42. package/dist/cjs/snowplow/getSnowplowConfig.js +27 -0
  43. package/dist/cjs/snowplow/getSnowplowConfig.js.map +7 -0
  44. package/dist/cjs/snowplow/index.js +1330 -0
  45. package/dist/cjs/snowplow/index.js.map +7 -0
  46. package/dist/cjs/snowplow/types.js +19 -0
  47. package/dist/cjs/snowplow/types.js.map +7 -0
  48. package/dist/cjs/utils/index.js +63 -0
  49. package/dist/cjs/utils/index.js.map +7 -0
  50. package/dist/cjs/utils/isObject.js +29 -0
  51. package/dist/cjs/utils/isObject.js.map +7 -0
  52. package/dist/cjs/utils/testUtils.js +1372 -0
  53. package/dist/cjs/utils/testUtils.js.map +7 -0
  54. package/dist/cjs/utils/text.js +62 -0
  55. package/dist/cjs/utils/text.js.map +7 -0
  56. package/dist/esm/address-lookup/index.js +7 -0
  57. package/dist/esm/address-lookup/index.js.map +7 -0
  58. package/dist/esm/address-lookup/types.js +1 -0
  59. package/dist/esm/address-lookup/types.js.map +7 -0
  60. package/dist/esm/airbrake/index.js +9 -0
  61. package/dist/esm/airbrake/index.js.map +7 -0
  62. package/dist/esm/chunk-3SO3SL37.js +150 -0
  63. package/dist/esm/chunk-3SO3SL37.js.map +7 -0
  64. package/dist/esm/chunk-75UX5UWV.js +47 -0
  65. package/dist/esm/chunk-75UX5UWV.js.map +7 -0
  66. package/dist/esm/chunk-BJUWIK7N.js +1 -0
  67. package/dist/esm/chunk-BJUWIK7N.js.map +7 -0
  68. package/dist/esm/chunk-BYVY7UWR.js +1 -0
  69. package/dist/esm/chunk-BYVY7UWR.js.map +7 -0
  70. package/dist/esm/chunk-EDKZP2NB.js +165 -0
  71. package/dist/esm/chunk-EDKZP2NB.js.map +7 -0
  72. package/dist/esm/chunk-JILHOFBG.js +7 -0
  73. package/dist/esm/chunk-JILHOFBG.js.map +7 -0
  74. package/dist/esm/chunk-LE4F73Z2.js +9 -0
  75. package/dist/esm/chunk-LE4F73Z2.js.map +7 -0
  76. package/dist/esm/chunk-LE7RCOBX.js +41 -0
  77. package/dist/esm/chunk-LE7RCOBX.js.map +7 -0
  78. package/dist/esm/chunk-MUFIJUOD.js +22 -0
  79. package/dist/esm/chunk-MUFIJUOD.js.map +7 -0
  80. package/dist/esm/chunk-NDWXMYSZ.js +7 -0
  81. package/dist/esm/chunk-NDWXMYSZ.js.map +7 -0
  82. package/dist/esm/chunk-OFQYDVHG.js +58 -0
  83. package/dist/esm/chunk-OFQYDVHG.js.map +7 -0
  84. package/dist/esm/chunk-OQ4YGZGX.js +231 -0
  85. package/dist/esm/chunk-OQ4YGZGX.js.map +7 -0
  86. package/dist/esm/chunk-PI33NKP7.js +58 -0
  87. package/dist/esm/chunk-PI33NKP7.js.map +7 -0
  88. package/dist/esm/chunk-QKBNCG2F.js +145 -0
  89. package/dist/esm/chunk-QKBNCG2F.js.map +7 -0
  90. package/dist/esm/chunk-RLSHHBYY.js +39 -0
  91. package/dist/esm/chunk-RLSHHBYY.js.map +7 -0
  92. package/dist/esm/chunk-RUOVZDWE.js +39 -0
  93. package/dist/esm/chunk-RUOVZDWE.js.map +7 -0
  94. package/dist/esm/chunk-TN5IBPWO.js +44 -0
  95. package/dist/esm/chunk-TN5IBPWO.js.map +7 -0
  96. package/dist/esm/chunk-WGHBTJNE.js +74 -0
  97. package/dist/esm/chunk-WGHBTJNE.js.map +7 -0
  98. package/dist/esm/chunk-XNSKPER5.js +44 -0
  99. package/dist/esm/chunk-XNSKPER5.js.map +7 -0
  100. package/dist/esm/chunk-XRH22EFX.js +72 -0
  101. package/dist/esm/chunk-XRH22EFX.js.map +7 -0
  102. package/dist/esm/chunk-ZEYOXRFM.js +358 -0
  103. package/dist/esm/chunk-ZEYOXRFM.js.map +7 -0
  104. package/dist/esm/index.js +42 -1410
  105. package/dist/esm/index.js.map +4 -4
  106. package/dist/esm/meta.json +1481 -71
  107. package/dist/esm/mocks/eventDefinitions.js +86 -0
  108. package/dist/esm/mocks/eventDefinitions.js.map +7 -0
  109. package/dist/esm/mocks/scripts-mock.js +7 -0
  110. package/dist/esm/mocks/scripts-mock.js.map +7 -0
  111. package/dist/esm/snowplow/Snowplow.js +10 -0
  112. package/dist/esm/snowplow/Snowplow.js.map +7 -0
  113. package/dist/esm/snowplow/SnowplowContext.js +23 -0
  114. package/dist/esm/snowplow/SnowplowContext.js.map +7 -0
  115. package/dist/esm/snowplow/constants.js +7 -0
  116. package/dist/esm/snowplow/constants.js.map +7 -0
  117. package/dist/esm/snowplow/contexts.js +13 -0
  118. package/dist/esm/snowplow/contexts.js.map +7 -0
  119. package/dist/esm/snowplow/event-definitions/base.js +7 -0
  120. package/dist/esm/snowplow/event-definitions/base.js.map +7 -0
  121. package/dist/esm/snowplow/event-definitions/coverage-selection.js +7 -0
  122. package/dist/esm/snowplow/event-definitions/coverage-selection.js.map +7 -0
  123. package/dist/esm/snowplow/event-definitions/index.js +30 -0
  124. package/dist/esm/snowplow/event-definitions/index.js.map +7 -0
  125. package/dist/esm/snowplow/event-definitions/intervention.js +7 -0
  126. package/dist/esm/snowplow/event-definitions/intervention.js.map +7 -0
  127. package/dist/esm/snowplow/event-definitions/personalised_cover.js +11 -0
  128. package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +7 -0
  129. package/dist/esm/snowplow/event-definitions/qcp.js +9 -0
  130. package/dist/esm/snowplow/event-definitions/qcp.js.map +7 -0
  131. package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js +9 -0
  132. package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
  133. package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js +7 -0
  134. package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
  135. package/dist/esm/snowplow/event-definitions/referral.js +7 -0
  136. package/dist/esm/snowplow/event-definitions/referral.js.map +7 -0
  137. package/dist/esm/snowplow/event-definitions/test-utils.js +12 -0
  138. package/dist/esm/snowplow/event-definitions/test-utils.js.map +7 -0
  139. package/dist/esm/snowplow/getSnowplowConfig.js +7 -0
  140. package/dist/esm/snowplow/getSnowplowConfig.js.map +7 -0
  141. package/dist/esm/snowplow/index.js +54 -0
  142. package/dist/esm/snowplow/index.js.map +7 -0
  143. package/dist/esm/snowplow/types.js +2 -0
  144. package/dist/esm/snowplow/types.js.map +7 -0
  145. package/dist/esm/utils/index.js +15 -0
  146. package/dist/esm/utils/index.js.map +7 -0
  147. package/dist/esm/utils/isObject.js +7 -0
  148. package/dist/esm/utils/isObject.js.map +7 -0
  149. package/dist/esm/utils/testUtils.js +46 -0
  150. package/dist/esm/utils/testUtils.js.map +7 -0
  151. package/dist/esm/utils/text.js +12 -0
  152. package/dist/esm/utils/text.js.map +7 -0
  153. package/package.json +2 -2
@@ -0,0 +1,1330 @@
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/snowplow/index.ts
21
+ var snowplow_exports = {};
22
+ __export(snowplow_exports, {
23
+ Snowplow: () => Snowplow,
24
+ SnowplowProvider: () => SnowplowProvider,
25
+ coverageSelectionPageEvents: () => coverageSelectionPageEvents,
26
+ eventDefinitions: () => eventDefinitions,
27
+ getContexts: () => getContexts,
28
+ getSnowplowConfig: () => getSnowplowConfig,
29
+ interventionPageEvents: () => interventionPageEvents,
30
+ makeContexts: () => makeContexts,
31
+ personalisedCoverPageEvents: () => personalisedCoverPageEvents,
32
+ qcpPageEvents: () => qcpPageEvents,
33
+ questionnairePageEvents: () => questionnairePageEvents,
34
+ referralPageEvents: () => referralPageEvents,
35
+ updateIdentityContext: () => updateIdentityContext,
36
+ useSnowplowContext: () => useSnowplowContext
37
+ });
38
+ module.exports = __toCommonJS(snowplow_exports);
39
+
40
+ // src/utils/text.ts
41
+ var snakeCaseKeys = (object) => Object.entries(object || {}).reduce(
42
+ (acc, [key, value]) => {
43
+ const newKey = camelToSnakeCase(key);
44
+ if (Array.isArray(value) && value.every(isObject)) {
45
+ return {
46
+ ...acc,
47
+ [newKey]: value.map((v) => snakeCaseKeys(v))
48
+ };
49
+ }
50
+ if (isObject(value)) {
51
+ return {
52
+ ...acc,
53
+ [newKey]: snakeCaseKeys(value)
54
+ };
55
+ }
56
+ return {
57
+ ...acc,
58
+ [newKey]: value
59
+ };
60
+ },
61
+ {}
62
+ );
63
+ var snakeCase = (text = "") => text.toLowerCase().replace(/ /g, "_");
64
+ var camelToSnakeCase = (text) => text.charAt(0).toLowerCase() + text.slice(1).replace(
65
+ /(\[.*?\])|[A-Z]/g,
66
+ (match, group) => group ? match : `_${match.toLowerCase()}`
67
+ );
68
+
69
+ // src/utils/isObject.tsx
70
+ function isObject(value) {
71
+ return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
72
+ }
73
+
74
+ // src/snowplow/contexts.ts
75
+ var getContexts = (config) => {
76
+ const contextEntries = Object.entries(config || {}).filter(([key]) => key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value]) => {
77
+ if (typeof value === "object") {
78
+ return { ...acc, [key]: snakeCaseKeys({ ...value }) };
79
+ }
80
+ return {
81
+ ...acc,
82
+ [key]: snakeCaseKeys({ data: { service_channel_identifier: value } })
83
+ };
84
+ }, {});
85
+ return contextEntries;
86
+ };
87
+ var updateIdentityContext = (contexts, uid) => {
88
+ const index = Object.keys(contexts).findIndex(
89
+ (ctx) => contexts[ctx].schema?.includes("identity_context")
90
+ );
91
+ if (index > -1) {
92
+ const key = Object.keys(contexts)[index];
93
+ return {
94
+ ...contexts,
95
+ [key]: {
96
+ ...contexts[key],
97
+ data: {
98
+ ...contexts[key].data,
99
+ domain_userid: uid
100
+ }
101
+ }
102
+ };
103
+ }
104
+ return contexts;
105
+ };
106
+ var makeContexts = (keys, config) => (keys || []).map((key) => config[key]);
107
+
108
+ // src/snowplow/event-definitions/base.ts
109
+ var baseEventDefinitions = [
110
+ // Mobile link in header
111
+ {
112
+ name: "mobileLinkClick",
113
+ type: "structured",
114
+ makePayload: () => ({
115
+ category: "marketing",
116
+ action: "link-click",
117
+ label: "mobile_call_button",
118
+ property: window.location.href
119
+ })
120
+ },
121
+ // Operating hours link in footer
122
+ {
123
+ name: "operatingHoursClick",
124
+ type: "unstructured",
125
+ makePayload: () => ({
126
+ schema: "iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",
127
+ data: {
128
+ schema: "iglu:com.simplybusiness/operating_hours_clicked/jsonschema/1-0-2",
129
+ data: {}
130
+ }
131
+ })
132
+ },
133
+ {
134
+ name: "progressbarClicked",
135
+ type: "unstructured",
136
+ makePayload: (params) => {
137
+ const {
138
+ section,
139
+ context,
140
+ fromStepIndex,
141
+ fromStepName,
142
+ stepIndex,
143
+ stepName
144
+ } = params;
145
+ return {
146
+ schema: "iglu:com.simplybusiness/progressbar_clicked/jsonschema/1-1-0",
147
+ data: {
148
+ source_page_index: fromStepIndex,
149
+ source_page_name: fromStepName,
150
+ page_index: stepIndex,
151
+ page_name: stepName,
152
+ site: context.site,
153
+ section_name: section,
154
+ vertical: context.vertical
155
+ }
156
+ };
157
+ }
158
+ },
159
+ // Zendesk help chat link
160
+ {
161
+ name: "helpChatLinkClicked",
162
+ type: "structured",
163
+ makePayload: (params) => {
164
+ const { label } = params;
165
+ return {
166
+ category: "help chat for question",
167
+ action: "help_chat_for_question_clicked",
168
+ label,
169
+ property: window.location.href
170
+ };
171
+ },
172
+ contexts: ["serviceChannelContext"]
173
+ }
174
+ ];
175
+
176
+ // src/snowplow/event-definitions/intervention.ts
177
+ var interventionEventDefinitions = [
178
+ {
179
+ name: "interventionInteractionCompleted",
180
+ type: "unstructured",
181
+ makePayload: (params) => {
182
+ const {
183
+ interventionName,
184
+ userUniqueIdentifier,
185
+ userUniqueIdentifierType,
186
+ action,
187
+ site
188
+ } = params;
189
+ return {
190
+ schema: "iglu:com.simplybusiness/intervention_interaction_completed/jsonschema/2-1-0",
191
+ data: {
192
+ intervention_name: interventionName,
193
+ user_unique_identifier: userUniqueIdentifier,
194
+ user_unique_identifier_type: userUniqueIdentifierType,
195
+ action,
196
+ site
197
+ }
198
+ };
199
+ }
200
+ },
201
+ {
202
+ name: "iaLiveChatInterventionClosed",
203
+ type: "structured",
204
+ makePayload: (_) => ({
205
+ category: "insurance_assistant",
206
+ action: "ia_live_chat_intervention_closed"
207
+ })
208
+ }
209
+ ];
210
+
211
+ // src/snowplow/constants.ts
212
+ var DELIMITER = "|";
213
+
214
+ // src/snowplow/event-definitions/questionnaire/redaction.ts
215
+ var PII_ANSWER = [
216
+ "customer_title",
217
+ "customer_first_name",
218
+ "customer_last_name",
219
+ "customer_email_address",
220
+ "preapp_email_address",
221
+ "customer_telephone_number",
222
+ "customer_alternative_telephone_number",
223
+ "uk_address_lookup",
224
+ "uk_correspondence_address_lookup",
225
+ "customer_address_1_pre_quote",
226
+ "customer_address_2_pre_quote",
227
+ "customer_town_pre_quote",
228
+ "customer_postcode_pre_quote",
229
+ "customer_address_1",
230
+ "customer_address_2",
231
+ "customer_town",
232
+ "customer_postcode",
233
+ "address_1_pre_quote",
234
+ "address_2_pre_quote",
235
+ "uk_postcode_pre_quote",
236
+ "town_pre_quote",
237
+ "owner_first_name",
238
+ "owner_last_name",
239
+ "beneficiary_first_name",
240
+ "beneficiary_last_name",
241
+ "gender",
242
+ "dynamic_ssn_fein",
243
+ "ssn",
244
+ "fein",
245
+ "sof_county_court_judgement_online_yes",
246
+ "sof_county_court_judgement_online_no",
247
+ "sof_ccj_count",
248
+ "sof_ccj_value",
249
+ "sof_ccj_date",
250
+ "sof_court_judgement_yes",
251
+ "sof_court_judgement_no",
252
+ "ccj_date",
253
+ "sof_single_ccj_no",
254
+ "sof_single_ccj_yes",
255
+ "sof_ccj_yes",
256
+ "sof_ccj_no",
257
+ "ccj_count",
258
+ "sof_bankrupt_yes",
259
+ "sof_bankrupt_no",
260
+ "sof_multiple_bankruptcies_yes",
261
+ "sof_multiple_bankruptcies_no",
262
+ "bankruptcy_date",
263
+ "sof_single_bankruptcy_no",
264
+ "sof_single_bankruptcy_yes",
265
+ "sof_bankruptcy_yes",
266
+ "sof_bankruptcy_no",
267
+ "bankruptcy_discharged",
268
+ "sof_liquidation_yes",
269
+ "sof_liquidation_no",
270
+ "sof_multiple_liquidations",
271
+ "liquidation_date",
272
+ "sof_criminal_offence_yes",
273
+ "sof_criminal_offence_no",
274
+ "sof_criminal_yes",
275
+ "sof_criminal_no",
276
+ "hcp_date_of_birth_1",
277
+ "hcp_date_of_birth_2",
278
+ "hcp_date_of_birth_3",
279
+ "hcp_date_of_birth_4",
280
+ "hcp_date_of_birth_5",
281
+ "hcp_date_of_birth_6",
282
+ "hcp_date_of_birth_7",
283
+ "hcp_date_of_birth_8",
284
+ "hcp_date_of_birth_9",
285
+ "hcp_date_of_birth_10",
286
+ "sof_previous_claims_yes",
287
+ "sof_previous_claims_no",
288
+ "sof_claims_yes",
289
+ "sof_claims_no",
290
+ "sof_property_claims_in_the_last_5_years_yes",
291
+ "sof_property_claims_in_the_last_5_years_no",
292
+ "sof_property_claims_in_the_last_0_to_4_years_yes",
293
+ "sof_property_claims_in_the_last_0_to_4_years_no",
294
+ "claim_count",
295
+ "sof_number_of_claims",
296
+ "number_of_claims_in_last_5_years",
297
+ "number_of_claims_in_time_owned",
298
+ "date_of_incident_1",
299
+ "date_of_incident_2",
300
+ "date_of_incident_3",
301
+ "date_of_incident_4",
302
+ "date_of_incident_5",
303
+ "type_of_incident_1",
304
+ "type_of_incident_2",
305
+ "type_of_incident_3",
306
+ "type_of_incident_4",
307
+ "type_of_incident_5",
308
+ "incident_value_1",
309
+ "incident_value_2",
310
+ "incident_value_3",
311
+ "incident_value_4",
312
+ "incident_value_5",
313
+ "sof_pollution_disease_claims_yes",
314
+ "sof_pollution_disease_claims_no",
315
+ "sof_potential_claims_yes",
316
+ "sof_potential_claims_no",
317
+ "sof_previous_circumstances_yes",
318
+ "sof_previous_circumstances_no",
319
+ "sof_possible_claims_yes",
320
+ "sof_possible_claims_no",
321
+ "date_of_possible_incident",
322
+ "type_of_possible_incident",
323
+ "possible_incident_value",
324
+ "sof_property_claims_yes",
325
+ "sof_property_claims_no",
326
+ "sof_liability_claims_yes",
327
+ "sof_liability_claims_no",
328
+ "van_registration",
329
+ "sof_disqualified_director_yes",
330
+ "sof_disqualified_director_no",
331
+ "sof_insurance_refused_yes",
332
+ "sof_insurance_refused_no",
333
+ "sof_insurance_declined_yes",
334
+ "sof_insurance_declined_no",
335
+ "insurance_refused"
336
+ ];
337
+ var RADIO_ANSWER_FROM_QUESTIONS = [
338
+ "have_secondary_trade_yes",
339
+ "have_secondary_trade_no"
340
+ ];
341
+ var ANSWER_SUFFIX_PATTERN = /_(yes|no)$/;
342
+ var redact = (params) => {
343
+ let { question, answer } = params;
344
+ const piiAnswer = new Set(PII_ANSWER);
345
+ const radioAnswerFromQuestions = new Set(RADIO_ANSWER_FROM_QUESTIONS);
346
+ if (piiAnswer.has(question)) {
347
+ answer = "REDACTED";
348
+ question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
349
+ } else if (radioAnswerFromQuestions.has(question)) {
350
+ question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
351
+ }
352
+ return { question, answer };
353
+ };
354
+
355
+ // src/snowplow/event-definitions/personalised_cover.ts
356
+ var personalisedCoverEventDefinitions = [
357
+ {
358
+ name: "seeMoreClicked",
359
+ type: "structured",
360
+ makePayload: (_) => ({
361
+ category: "personalised_cover",
362
+ action: "see_more_clicked",
363
+ label: "page",
364
+ property: "personalised_cover"
365
+ })
366
+ },
367
+ {
368
+ name: "selectPackageClicked",
369
+ type: "structured",
370
+ makePayload: (_) => ({
371
+ category: "personalised_cover",
372
+ action: "select_package_clicked",
373
+ label: "page",
374
+ property: "personalised_cover"
375
+ })
376
+ },
377
+ {
378
+ name: "validationShown",
379
+ type: "structured",
380
+ makePayload: (params) => {
381
+ const { cover, question } = params;
382
+ return {
383
+ category: "personalised_cover",
384
+ action: "validation_shown",
385
+ label: "cover_question",
386
+ property: `${snakeCase(cover)}_${snakeCase(question)}`
387
+ };
388
+ }
389
+ },
390
+ {
391
+ name: "coverQuestionAnswered",
392
+ type: "unstructured",
393
+ makePayload: (params) => {
394
+ const { context } = params;
395
+ const { question, answer } = redact(params);
396
+ const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
397
+ return {
398
+ schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
399
+ data: {
400
+ site: context.site,
401
+ page_name: "personalised_cover",
402
+ section_name: "Personalised Cover Questions",
403
+ question,
404
+ answer: flatAnswer,
405
+ vertical: context.vertical,
406
+ journey_id: context.journeyId
407
+ }
408
+ };
409
+ }
410
+ },
411
+ {
412
+ name: "limitLinkClicked",
413
+ type: "structured",
414
+ makePayload: (params) => {
415
+ const { label } = params;
416
+ return {
417
+ category: "personalised_cover",
418
+ action: "limit_link_clicked",
419
+ label,
420
+ property: "link_clicked"
421
+ };
422
+ }
423
+ },
424
+ {
425
+ name: "limitChanged",
426
+ type: "structured",
427
+ makePayload: (params) => {
428
+ const { label, limit } = params;
429
+ return {
430
+ category: "personalised_cover",
431
+ action: "limit_changed",
432
+ label,
433
+ property: limit
434
+ };
435
+ }
436
+ },
437
+ {
438
+ name: "coverPresented",
439
+ type: "structured",
440
+ makePayload: (params) => {
441
+ const { property } = params;
442
+ return {
443
+ category: "personalised_cover",
444
+ action: "cover_presented",
445
+ label: "cover_name",
446
+ property
447
+ };
448
+ }
449
+ },
450
+ {
451
+ name: "coverDetailsClicked",
452
+ type: "structured",
453
+ makePayload: (params) => {
454
+ const { property } = params;
455
+ return {
456
+ category: "personalised_cover",
457
+ action: "cover_details_clicked",
458
+ label: "cover_name",
459
+ property
460
+ };
461
+ }
462
+ },
463
+ {
464
+ name: "additionalQuestionsClicked",
465
+ type: "structured",
466
+ makePayload: (params) => {
467
+ const { property } = params;
468
+ return {
469
+ category: "personalised_cover",
470
+ action: "cover_details_clicked",
471
+ label: "cover_name",
472
+ property
473
+ };
474
+ }
475
+ },
476
+ {
477
+ name: "chatbotPromptClicked",
478
+ type: "structured",
479
+ makePayload: (params) => {
480
+ const { label, property } = params;
481
+ return {
482
+ category: "personalised_cover",
483
+ action: "chatbot_prompt_clicked",
484
+ label: property,
485
+ property: label
486
+ };
487
+ }
488
+ }
489
+ ];
490
+
491
+ // src/snowplow/event-definitions/qcp.ts
492
+ var qcpEventDefinitions = [
493
+ {
494
+ // QDP details button
495
+ name: "detailsClicked",
496
+ type: "structured",
497
+ makePayload: () => ({
498
+ category: "comparison_cta",
499
+ action: "link_click",
500
+ label: "Details"
501
+ })
502
+ },
503
+ {
504
+ // Buy button
505
+ name: "selectClicked",
506
+ type: "structured",
507
+ makePayload: () => ({
508
+ category: "comparison_cta",
509
+ action: "link_click",
510
+ label: "Buy"
511
+ })
512
+ },
513
+ {
514
+ // Quote Details Slider Next steps button
515
+ name: "nextStepsClicked",
516
+ type: "structured",
517
+ makePayload: () => ({
518
+ category: "quote_details_slider_next_step_cta",
519
+ action: "link_click",
520
+ label: "Next steps"
521
+ })
522
+ },
523
+ {
524
+ // Toggle deductibles accordion
525
+ name: "deductiblesClicked",
526
+ type: "structured",
527
+ makePayload: () => ({
528
+ category: "us-qcp-react",
529
+ action: "view_deductables_clicked",
530
+ label: "view_deductables_clicked",
531
+ property: window.location.href
532
+ })
533
+ },
534
+ {
535
+ name: "deductiblesClickedUk",
536
+ type: "structured",
537
+ makePayload: (params) => {
538
+ const { label, deviceType } = params;
539
+ const urlFriendlyLabel = label.replace(/ /g, "-").toLowerCase();
540
+ return {
541
+ category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,
542
+ action: "view_excess_clicked",
543
+ label,
544
+ property: window.location.href
545
+ };
546
+ }
547
+ },
548
+ {
549
+ // Quote Details Slider opened
550
+ name: "sliderOpened",
551
+ type: "structured",
552
+ makePayload: (params) => {
553
+ const { label } = params;
554
+ return {
555
+ category: "comparison_cta",
556
+ action: "quote_details_slider_opened",
557
+ label
558
+ };
559
+ }
560
+ },
561
+ {
562
+ // Coverage modal opened
563
+ name: "coverageModalOpened",
564
+ type: "structured",
565
+ makePayload: (params) => {
566
+ const {
567
+ category,
568
+ product = "extra_coverage",
569
+ title
570
+ } = params;
571
+ const productLabel = snakeCase(product);
572
+ return {
573
+ category,
574
+ action: `${productLabel}_${snakeCase(title)}_popup_opened`,
575
+ label: productLabel,
576
+ property: window.location.href
577
+ };
578
+ }
579
+ },
580
+ {
581
+ // Toggle cover select
582
+ name: "coverChanged",
583
+ type: "unstructured",
584
+ makePayload: (params) => {
585
+ const { name = "", fromValue = "", toValue = "" } = params;
586
+ let action = "change";
587
+ if (fromValue === "0") {
588
+ action = "add";
589
+ }
590
+ if (toValue === "0") {
591
+ action = "remove";
592
+ }
593
+ return {
594
+ schema: "iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0",
595
+ data: {
596
+ name,
597
+ action,
598
+ from_value: fromValue,
599
+ to_value: toValue
600
+ }
601
+ };
602
+ },
603
+ contexts: ["distributionChannelContext"]
604
+ },
605
+ {
606
+ name: "ratingsModalOpened",
607
+ type: "structured",
608
+ makePayload: (params) => {
609
+ const { category, label } = params;
610
+ return {
611
+ category,
612
+ action: "insurer_rating_help_popup_triggered",
613
+ label,
614
+ property: window.location.href
615
+ };
616
+ }
617
+ },
618
+ {
619
+ name: "coverToggleOpened",
620
+ type: "structured",
621
+ makePayload: () => ({
622
+ category: "qcp_limit_interaction",
623
+ label: "limit_interaction",
624
+ action: "limit_interaction_clicked",
625
+ property: window.location.href
626
+ })
627
+ },
628
+ {
629
+ name: "paymentToggleClicked",
630
+ type: "structured",
631
+ makePayload: (params) => {
632
+ const { category, label } = params;
633
+ return {
634
+ category,
635
+ action: "button_click",
636
+ label,
637
+ property: window.location.href
638
+ };
639
+ }
640
+ },
641
+ {
642
+ name: "insurerDetailsAccordionClicked",
643
+ type: "structured",
644
+ makePayload: () => ({
645
+ category: "quote_details_slider_insurer_details_description",
646
+ action: "accordion_clicked",
647
+ label: "accordion_clicked",
648
+ property: window.location.href
649
+ })
650
+ },
651
+ {
652
+ name: "priceDetailsPopUpOpened",
653
+ type: "structured",
654
+ makePayload: () => ({
655
+ category: "price_details",
656
+ action: "price_details_popup_opened",
657
+ label: "Price details",
658
+ property: window.location.href
659
+ })
660
+ },
661
+ {
662
+ name: "editLimitButtonClicked",
663
+ type: "structured",
664
+ makePayload: () => ({
665
+ category: "cover_limit_changes",
666
+ action: "edit_limit_button_clicked",
667
+ label: "Edit Limit",
668
+ property: window.location.href
669
+ })
670
+ },
671
+ {
672
+ name: "applyButtonClicked",
673
+ type: "structured",
674
+ makePayload: () => ({
675
+ category: "cover_limit_changes",
676
+ action: "apply_button_clicked",
677
+ label: "Apply Button Clicked",
678
+ property: window.location.href
679
+ })
680
+ },
681
+ {
682
+ name: "coverageInfoClicked",
683
+ type: "structured",
684
+ makePayload: (params) => {
685
+ const { deviceType, open = true } = params;
686
+ return {
687
+ action: "show_coverage_info_clicked",
688
+ category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,
689
+ label: `${open ? "show" : "hide"}_coverage_info_clicked`,
690
+ property: window.location.href
691
+ };
692
+ }
693
+ },
694
+ {
695
+ name: "backToApplication",
696
+ type: "unstructured",
697
+ makePayload: (params) => {
698
+ const { journeyId, vertical } = params;
699
+ return {
700
+ schema: "iglu:com.simplybusiness/qcp_back_to_application/jsonschema/1-0-0",
701
+ data: {
702
+ journey_id: journeyId,
703
+ vertical
704
+ }
705
+ };
706
+ },
707
+ contexts: ["serviceChannelContext"]
708
+ },
709
+ // No quotes referral
710
+ {
711
+ name: "coverOptionsLinkClicked",
712
+ type: "structured",
713
+ makePayload: () => ({
714
+ category: "uk-qcp-react-cover-options-link",
715
+ action: "cover_options_link_clicked",
716
+ label: "cover_options_link_clicked",
717
+ property: window.location.href
718
+ })
719
+ },
720
+ {
721
+ name: "referralReasonsVariantBCoverOptionsLinkClicked",
722
+ type: "structured",
723
+ makePayload: () => ({
724
+ category: "uk-24-12-qcp-mvt-referral-reasons",
725
+ action: "cover_options_link_clicked_variant_b",
726
+ label: "cover_options_link_clicked_variant_b",
727
+ property: window.location.href
728
+ })
729
+ },
730
+ {
731
+ name: "referralReasonsVariantCCoverOptionsLinkClicked",
732
+ type: "structured",
733
+ makePayload: () => ({
734
+ category: "uk-24-12-qcp-mvt-referral-reasons",
735
+ action: "cover_options_link_clicked_variant_c",
736
+ label: "cover_options_link_clicked_variant_c",
737
+ property: window.location.href
738
+ })
739
+ },
740
+ {
741
+ name: "phoneNumberLinkClicked",
742
+ type: "structured",
743
+ makePayload: () => ({
744
+ category: "uk-qcp-react-phone-number-link",
745
+ action: "phone_number_link_clicked",
746
+ label: "phone_number_link_clicked",
747
+ property: window.location.href
748
+ })
749
+ },
750
+ {
751
+ name: "linkClicked",
752
+ type: "unstructured",
753
+ makePayload: (params) => {
754
+ const { targetUrl, elementContent } = params;
755
+ return {
756
+ schema: "iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1",
757
+ data: {
758
+ targetUrl,
759
+ elementContent
760
+ }
761
+ };
762
+ }
763
+ },
764
+ {
765
+ name: "qcpUpsellAccordionClicked",
766
+ type: "structured",
767
+ makePayload: (params) => ({
768
+ category: "us-qcp-upsells",
769
+ action: "accordion_clicked_qcp",
770
+ label: params?.label,
771
+ property: window.location.href
772
+ })
773
+ },
774
+ {
775
+ name: "qdsUpsellAccordionClicked",
776
+ type: "structured",
777
+ makePayload: (params) => ({
778
+ category: "us-qcp-upsells",
779
+ action: "accordion_clicked_slider",
780
+ label: params?.label,
781
+ property: window.location.href
782
+ })
783
+ },
784
+ {
785
+ name: "qcpUpsellTooltipHelperClicked",
786
+ type: "structured",
787
+ makePayload: (params) => ({
788
+ category: "us-qcp-upsells",
789
+ action: "tooltip_helper_clicked_qcp",
790
+ label: params?.label,
791
+ property: window.location.href
792
+ })
793
+ },
794
+ {
795
+ name: "qdsUpsellTooltipHelperClicked",
796
+ type: "structured",
797
+ makePayload: (params) => ({
798
+ category: "us-qcp-upsells",
799
+ action: "tooltip_helper_clicked_slider",
800
+ label: params?.label,
801
+ property: window.location.href
802
+ })
803
+ },
804
+ {
805
+ name: "qcpQuoteButtonClicked",
806
+ type: "structured",
807
+ makePayload: (payload) => ({
808
+ category: "quote-buttons",
809
+ action: "button-clicked",
810
+ label: payload?.label,
811
+ property: window.location.href
812
+ })
813
+ },
814
+ {
815
+ name: "layoutToggleClickedExperiment",
816
+ type: "structured",
817
+ makePayload: (params) => {
818
+ const { layout } = params;
819
+ return {
820
+ category: "uk-25-04-16-gridview_layout",
821
+ action: "layout_toggle_clicked",
822
+ label: layout,
823
+ property: window.location.href
824
+ };
825
+ }
826
+ },
827
+ {
828
+ name: "cancelAnytimeBadgeClicked",
829
+ type: "structured",
830
+ makePayload: (payload) => {
831
+ return {
832
+ category: "us-26-02-qcp-cancel-anytime-test",
833
+ action: "cancel_anytime_badge_clicked",
834
+ label: payload?.label || "cancel_anytime",
835
+ property: window.location.href
836
+ };
837
+ }
838
+ }
839
+ ];
840
+
841
+ // src/snowplow/event-definitions/questionnaire/questionnaire.ts
842
+ var questionnaireEventDefinitions = [
843
+ {
844
+ name: "questionAnswered",
845
+ type: "unstructured",
846
+ makePayload: (params) => {
847
+ const { section, context } = params;
848
+ const { question, answer } = redact(params);
849
+ const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
850
+ return {
851
+ schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
852
+ data: {
853
+ site: context.site,
854
+ page_index: 1,
855
+ page_name: "quick_to_quote",
856
+ submitted_from: "quick_to_quote_experiment",
857
+ section_name: section,
858
+ question,
859
+ answer: flatAnswer,
860
+ vertical: context.vertical,
861
+ journey_id: context.journeyId
862
+ }
863
+ };
864
+ }
865
+ },
866
+ {
867
+ name: "primaryDetailSelected",
868
+ type: "unstructured",
869
+ makePayload: (params) => {
870
+ const {
871
+ context,
872
+ answer,
873
+ vertical,
874
+ searchId,
875
+ selectedListPosition,
876
+ selectionMethod
877
+ } = params;
878
+ const { site } = context;
879
+ const isUSPage = site === "simplybusiness_us";
880
+ let verticalName = vertical || context.vertical;
881
+ if (verticalName.toLowerCase().indexOf("landlord") > -1) {
882
+ verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
883
+ }
884
+ const data = {
885
+ site,
886
+ vertical: verticalName,
887
+ primary_detail: answer,
888
+ selected_type: "trade_selector",
889
+ location: window?.location?.pathname ?? ""
890
+ };
891
+ if (searchId) {
892
+ data.search_id = searchId;
893
+ }
894
+ if (selectionMethod) {
895
+ data.selection_method = selectionMethod;
896
+ }
897
+ if (isUSPage) {
898
+ data.selected_list_position = selectedListPosition !== void 0 ? (selectedListPosition + 1).toString() : null;
899
+ data.selected_location = "trade_selector_vertical";
900
+ data.business_unit = site;
901
+ }
902
+ return {
903
+ schema: "iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-4-0",
904
+ data
905
+ };
906
+ },
907
+ contexts: ["distributionChannelContext", "serviceChannelContext"]
908
+ },
909
+ {
910
+ name: "helpTextOpened",
911
+ type: "unstructured",
912
+ makePayload: (params) => {
913
+ const { primaryText, label, context, helpText } = params;
914
+ return {
915
+ schema: "iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0",
916
+ data: {
917
+ vertical: context.vertical,
918
+ site: context.site,
919
+ primary_text: primaryText,
920
+ help_text: helpText,
921
+ label,
922
+ page_name: "quick_to_quote"
923
+ }
924
+ };
925
+ }
926
+ },
927
+ {
928
+ name: "assumptionsButtonClicked",
929
+ type: "structured",
930
+ makePayload: (params) => {
931
+ const { source, presentationGroup } = params;
932
+ return {
933
+ action: source,
934
+ category: presentationGroup
935
+ };
936
+ }
937
+ },
938
+ {
939
+ name: "navButtonClicked",
940
+ type: "structured",
941
+ makePayload: (params) => {
942
+ const { label, category } = params;
943
+ return {
944
+ label,
945
+ action: "link_click",
946
+ category
947
+ };
948
+ }
949
+ },
950
+ {
951
+ name: "manualAddressClicked",
952
+ type: "structured",
953
+ makePayload: (params) => {
954
+ const { category } = params;
955
+ return {
956
+ action: "link_click",
957
+ category,
958
+ label: "Enter address manually"
959
+ };
960
+ }
961
+ },
962
+ {
963
+ name: "assumptionLinkClicked",
964
+ type: "structured",
965
+ makePayload: (params) => {
966
+ const { label, category, property } = params;
967
+ return {
968
+ action: "assumption_link_click",
969
+ category,
970
+ label,
971
+ property
972
+ };
973
+ }
974
+ },
975
+ {
976
+ name: "addressLookupFocused",
977
+ type: "structured",
978
+ makePayload: (params) => {
979
+ const { label, category } = params;
980
+ return {
981
+ action: "address_lookup_focused",
982
+ category,
983
+ label
984
+ };
985
+ }
986
+ },
987
+ {
988
+ name: "addressLookupTypedIn",
989
+ type: "structured",
990
+ makePayload: (params) => {
991
+ const { label, category } = params;
992
+ return {
993
+ action: "address_lookup_typed_in",
994
+ category,
995
+ label
996
+ };
997
+ }
998
+ },
999
+ {
1000
+ name: "addressOptionsDisplayed",
1001
+ type: "structured",
1002
+ makePayload: (params) => {
1003
+ const { label, category } = params;
1004
+ return {
1005
+ action: "address_options_displayed",
1006
+ category,
1007
+ label
1008
+ };
1009
+ }
1010
+ },
1011
+ {
1012
+ name: "tradeChanged",
1013
+ type: "structured",
1014
+ makePayload: (params) => {
1015
+ const { label, property } = params;
1016
+ return {
1017
+ action: "change_your_selected_profession_button_clicked",
1018
+ category: "change_your_selected_profession_button",
1019
+ label: `Question: ${label}`,
1020
+ property
1021
+ // Answer before change
1022
+ };
1023
+ }
1024
+ },
1025
+ {
1026
+ name: "questionValidationFailed",
1027
+ type: "structured",
1028
+ makePayload: (params) => {
1029
+ const { question, errorMessage } = params;
1030
+ return {
1031
+ category: "questionnaire",
1032
+ action: `${question} validation failed`,
1033
+ label: errorMessage
1034
+ };
1035
+ }
1036
+ },
1037
+ {
1038
+ name: "stateQuestionAnswered",
1039
+ type: "unstructured",
1040
+ makePayload: (params) => {
1041
+ const { context, answer, selectedCoverages } = params;
1042
+ const data = {
1043
+ vertical: context.vertical,
1044
+ selected_type: context.journeyName ?? "usa",
1045
+ location: window?.location?.pathname ?? "",
1046
+ url: window?.location?.href ?? "",
1047
+ state: answer,
1048
+ selection_method: "dropdown"
1049
+ };
1050
+ if (selectedCoverages?.length) {
1051
+ data.products = selectedCoverages.join(",");
1052
+ }
1053
+ return {
1054
+ schema: "iglu:com.simplybusiness/state_question_answered/jsonschema/1-0-0",
1055
+ data
1056
+ };
1057
+ }
1058
+ }
1059
+ ];
1060
+
1061
+ // src/snowplow/event-definitions/coverage-selection.ts
1062
+ var coverageSelectionEventDefinitions = [
1063
+ {
1064
+ name: "checkboxFormQuestionAnswered",
1065
+ type: "unstructured",
1066
+ makePayload: (params) => {
1067
+ const { context, pageIndex, pageName, sectionName, question, answer } = params;
1068
+ return {
1069
+ schema: "iglu:com.simplybusiness/checkbox_form_question_answered/jsonschema/1-0-1",
1070
+ data: {
1071
+ site: context.site,
1072
+ vertical: context.vertical ?? "",
1073
+ journey_id: context.journeyId,
1074
+ page_index: pageIndex,
1075
+ page_name: pageName,
1076
+ section_name: sectionName,
1077
+ question,
1078
+ answer
1079
+ }
1080
+ };
1081
+ }
1082
+ },
1083
+ {
1084
+ name: "learnMoreModalOpened",
1085
+ type: "structured",
1086
+ makePayload: (params) => {
1087
+ const { product } = params;
1088
+ return {
1089
+ category: "coverage_selection",
1090
+ action: "learn_more_modal_opened",
1091
+ label: product,
1092
+ property: window.location.href
1093
+ };
1094
+ }
1095
+ }
1096
+ ];
1097
+
1098
+ // src/snowplow/event-definitions/referral.ts
1099
+ var referralEventDefinitions = [
1100
+ {
1101
+ name: "nextCoverageClicked",
1102
+ type: "structured",
1103
+ makePayload: (params) => {
1104
+ const { url } = params;
1105
+ const eventName = "post_referral_workers_compensation_continuation_link";
1106
+ return {
1107
+ category: eventName,
1108
+ action: "link_click",
1109
+ label: eventName,
1110
+ property: url
1111
+ };
1112
+ }
1113
+ }
1114
+ ];
1115
+
1116
+ // src/snowplow/event-definitions/index.ts
1117
+ var eventDefinitions = [
1118
+ ...baseEventDefinitions,
1119
+ ...qcpEventDefinitions,
1120
+ ...referralEventDefinitions,
1121
+ ...interventionEventDefinitions,
1122
+ ...questionnaireEventDefinitions,
1123
+ ...personalisedCoverEventDefinitions,
1124
+ ...coverageSelectionEventDefinitions
1125
+ ];
1126
+ var qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];
1127
+ var referralPageEvents = [
1128
+ ...baseEventDefinitions,
1129
+ ...referralEventDefinitions
1130
+ ];
1131
+ var personalisedCoverPageEvents = [
1132
+ ...baseEventDefinitions,
1133
+ ...personalisedCoverEventDefinitions
1134
+ ];
1135
+ var interventionPageEvents = [...interventionEventDefinitions];
1136
+ var questionnairePageEvents = [...questionnaireEventDefinitions];
1137
+ var coverageSelectionPageEvents = [
1138
+ ...baseEventDefinitions,
1139
+ ...coverageSelectionEventDefinitions
1140
+ ];
1141
+
1142
+ // src/snowplow/getSnowplowConfig.ts
1143
+ var getSnowplowConfig = (pageData) => pageData.scripts?.find(({ metadata }) => metadata.name === "snowplow")?.props;
1144
+
1145
+ // src/snowplow/Snowplow.ts
1146
+ var import_browser_tracker = require("@snowplow/browser-tracker");
1147
+ var import_browser_plugin_ga_cookies = require("@snowplow/browser-plugin-ga-cookies");
1148
+ var Snowplow = class _Snowplow {
1149
+ constructor(props) {
1150
+ this.avalancheTrackerName = "sb-ava";
1151
+ this.bronzeAvalancheTrackerName = "sb-ava-br";
1152
+ this.pvAvalancheTrackerName = "sb-ava-pv";
1153
+ this.uid = "";
1154
+ this.trackPageView = false;
1155
+ this.contexts = {};
1156
+ this.pvContext = [];
1157
+ this.structContext = [];
1158
+ this.serverData = {};
1159
+ this.eventHandlers = {};
1160
+ if (!props) return;
1161
+ const {
1162
+ appId,
1163
+ cookieDomain,
1164
+ avalancheCollector,
1165
+ eventMethod,
1166
+ uid,
1167
+ postPath,
1168
+ trackPageView: tpv
1169
+ } = props;
1170
+ this.uid = uid;
1171
+ this.trackPageView = tpv;
1172
+ this.serverData = props?.pageViewContext?.data || {};
1173
+ const stateStorageStrategy = "cookieAndLocalStorage";
1174
+ const baseOptions = {
1175
+ appId,
1176
+ cookieDomain,
1177
+ eventMethod,
1178
+ stateStorageStrategy,
1179
+ postPath
1180
+ };
1181
+ (0, import_browser_tracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
1182
+ (0, import_browser_tracker.newTracker)(
1183
+ this.bronzeAvalancheTrackerName,
1184
+ avalancheCollector,
1185
+ baseOptions
1186
+ );
1187
+ (0, import_browser_tracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
1188
+ ...baseOptions,
1189
+ eventMethod: eventMethod === "post" ? "beacon" : eventMethod,
1190
+ plugins: [(0, import_browser_plugin_ga_cookies.GaCookiesPlugin)()]
1191
+ });
1192
+ (0, import_browser_tracker.setCookiePath)("/");
1193
+ if (uid) {
1194
+ (0, import_browser_tracker.setUserId)(uid);
1195
+ }
1196
+ _Snowplow.instance = this;
1197
+ }
1198
+ setContexts(contexts) {
1199
+ this.contexts = updateIdentityContext(contexts, this.uid);
1200
+ this.pvContext = makeContexts(
1201
+ [
1202
+ "pageViewContext",
1203
+ "distributionChannelContext",
1204
+ "serviceChannelContext"
1205
+ ],
1206
+ this.contexts
1207
+ );
1208
+ this.structContext = makeContexts(
1209
+ ["distributionChannelContext", "serviceChannelContext"],
1210
+ this.contexts
1211
+ );
1212
+ return this;
1213
+ }
1214
+ // Send a page view event
1215
+ trackView(event) {
1216
+ if (this.trackPageView) {
1217
+ (0, import_browser_tracker.trackPageView)({ ...event, context: this.pvContext }, [
1218
+ this.pvAvalancheTrackerName
1219
+ ]);
1220
+ }
1221
+ return this;
1222
+ }
1223
+ // Send a structured event with contexts
1224
+ trackEvent(event) {
1225
+ (0, import_browser_tracker.trackStructEvent)({ ...event, context: this.structContext }, [
1226
+ this.bronzeAvalancheTrackerName
1227
+ ]);
1228
+ return this;
1229
+ }
1230
+ // Send a custom event with defined schema and optional contexts
1231
+ trackUnstructEvent(event, contexts) {
1232
+ if (!event) {
1233
+ return this;
1234
+ }
1235
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
1236
+ const context = makeContexts(contexts, this.contexts);
1237
+ (0, import_browser_tracker.trackSelfDescribingEvent)({ event, context }, [this.avalancheTrackerName]);
1238
+ } else {
1239
+ (0, import_browser_tracker.trackSelfDescribingEvent)({ event }, [this.avalancheTrackerName]);
1240
+ }
1241
+ return this;
1242
+ }
1243
+ addEventHandlers(eventDefinitions2) {
1244
+ const context = this.serverData;
1245
+ eventDefinitions2.forEach(({ name, type, makePayload, contexts }) => {
1246
+ if (type === "structured") {
1247
+ this.addEventHandler(name, (params) => {
1248
+ void this.trackEvent(
1249
+ makePayload({
1250
+ ...params,
1251
+ context
1252
+ })
1253
+ );
1254
+ });
1255
+ } else {
1256
+ this.addEventHandler(name, (params) => {
1257
+ const payload = makePayload({
1258
+ ...params,
1259
+ context
1260
+ });
1261
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
1262
+ void this.trackUnstructEvent(payload, contexts);
1263
+ } else {
1264
+ void this.trackUnstructEvent(payload);
1265
+ }
1266
+ });
1267
+ }
1268
+ });
1269
+ return this;
1270
+ }
1271
+ addEventHandler(name, handler) {
1272
+ this.eventHandlers[name] = handler;
1273
+ return this;
1274
+ }
1275
+ removeEventHandler(name) {
1276
+ delete this.eventHandlers[name];
1277
+ return this;
1278
+ }
1279
+ trigger(name, params) {
1280
+ const handler = this.eventHandlers[name];
1281
+ if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
1282
+ handler(params);
1283
+ }
1284
+ return this;
1285
+ }
1286
+ static getInstance(props) {
1287
+ if (!_Snowplow.instance) {
1288
+ _Snowplow.instance = new _Snowplow(props);
1289
+ }
1290
+ return _Snowplow.instance;
1291
+ }
1292
+ };
1293
+
1294
+ // src/snowplow/SnowplowContext.tsx
1295
+ var import_react = require("react");
1296
+ var import_jsx_runtime = require("react/jsx-runtime");
1297
+ var SnowplowContext = (0, import_react.createContext)(null);
1298
+ var SnowplowProvider = ({ scripts, children }) => {
1299
+ const [config, _setConfig] = (0, import_react.useState)(scripts);
1300
+ const [snowplowInstance] = (0, import_react.useState)(
1301
+ () => Snowplow.getInstance(config)
1302
+ );
1303
+ (0, import_react.useEffect)(() => {
1304
+ if (snowplowInstance && scripts) {
1305
+ const contexts = getContexts(config);
1306
+ snowplowInstance.setContexts(contexts).addEventHandlers(eventDefinitions);
1307
+ if (config.trackPageView) {
1308
+ void snowplowInstance.trackView();
1309
+ }
1310
+ }
1311
+ }, [config, snowplowInstance, scripts]);
1312
+ const value = (0, import_react.useMemo)(
1313
+ () => ({
1314
+ config,
1315
+ snowplow: snowplowInstance
1316
+ }),
1317
+ [config, snowplowInstance]
1318
+ );
1319
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SnowplowContext.Provider, { value, children });
1320
+ };
1321
+ function useSnowplowContext() {
1322
+ const context = (0, import_react.useContext)(SnowplowContext);
1323
+ if (!context) {
1324
+ throw new Error(
1325
+ "useSnowplowContext must be used inside a `SnowplowProvider`"
1326
+ );
1327
+ }
1328
+ return context;
1329
+ }
1330
+ //# sourceMappingURL=index.js.map