@simplybusiness/services 2.3.1 → 2.3.2

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