@simplybusiness/services 0.20.0 → 0.21.0

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 (37) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/mocks/eventDefinitions.js +5 -21
  3. package/dist/cjs/mocks/eventDefinitions.js.map +1 -1
  4. package/dist/cjs/snowplow/Snowplow.js +41 -28
  5. package/dist/cjs/snowplow/Snowplow.js.map +1 -1
  6. package/dist/cjs/snowplow/contexts.js +52 -12
  7. package/dist/cjs/snowplow/contexts.js.map +1 -1
  8. package/dist/cjs/snowplow/event-definitions/qcp.js +8 -2
  9. package/dist/cjs/snowplow/event-definitions/qcp.js.map +1 -1
  10. package/dist/cjs/snowplow/event-definitions/questionnaire.js +4 -1
  11. package/dist/cjs/snowplow/event-definitions/questionnaire.js.map +1 -1
  12. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  13. package/dist/esm/mocks/eventDefinitions.js +5 -21
  14. package/dist/esm/mocks/eventDefinitions.js.map +1 -1
  15. package/dist/esm/snowplow/Snowplow.js +41 -28
  16. package/dist/esm/snowplow/Snowplow.js.map +1 -1
  17. package/dist/esm/snowplow/contexts.js +38 -9
  18. package/dist/esm/snowplow/contexts.js.map +1 -1
  19. package/dist/esm/snowplow/event-definitions/qcp.js +9 -22
  20. package/dist/esm/snowplow/event-definitions/qcp.js.map +1 -1
  21. package/dist/esm/snowplow/event-definitions/questionnaire.js +4 -1
  22. package/dist/esm/snowplow/event-definitions/questionnaire.js.map +1 -1
  23. package/dist/esm/snowplow/types.js.map +1 -1
  24. package/dist/types/mocks/eventDefinitions.d.ts +4 -19
  25. package/dist/types/snowplow/Snowplow.d.ts +7 -5
  26. package/dist/types/snowplow/contexts.d.ts +4 -3
  27. package/dist/types/snowplow/event-definitions/qcp.d.ts +0 -20
  28. package/dist/types/snowplow/types.d.ts +3 -1
  29. package/package.json +2 -2
  30. package/src/mocks/eventDefinitions.ts +2 -25
  31. package/src/snowplow/Snowplow.ts +46 -29
  32. package/src/snowplow/contexts.test.ts +134 -6
  33. package/src/snowplow/contexts.ts +44 -14
  34. package/src/snowplow/event-definitions/qcp.ts +2 -21
  35. package/src/snowplow/event-definitions/questionnaire.ts +1 -0
  36. package/src/snowplow/index.test.ts +40 -30
  37. package/src/snowplow/types.ts +4 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.21.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bbbe357: Correctly set event contexts based on definitions
8
+
9
+ ## 0.20.1
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [b892045]
14
+ - @simplybusiness/mobius@5.24.2
15
+
3
16
  ## 0.20.0
4
17
 
5
18
  ### Minor Changes
@@ -23,25 +23,6 @@ const _default = [
23
23
  };
24
24
  }
25
25
  },
26
- {
27
- name: "questionAnswered",
28
- type: "unstructured",
29
- makePayload: (params)=>{
30
- const { vertical, question, answer } = params;
31
- return {
32
- schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1",
33
- data: {
34
- site: "",
35
- vertical: vertical || "business",
36
- page_index: 1,
37
- page_name: "Coverage diagnosis questionnaire",
38
- section_name: "Coverage diagnosis questionnaire",
39
- question,
40
- answer
41
- }
42
- };
43
- }
44
- },
45
26
  {
46
27
  name: "questionAnswered",
47
28
  type: "unstructured",
@@ -61,7 +42,10 @@ const _default = [
61
42
  vertical: context.vertical
62
43
  }
63
44
  };
64
- }
45
+ },
46
+ contexts: [
47
+ "distributionChannelContext"
48
+ ]
65
49
  },
66
50
  {
67
51
  name: "primaryDetailSelected",
@@ -69,7 +53,7 @@ const _default = [
69
53
  makePayload: (params)=>{
70
54
  const { context, answer, vertical } = params;
71
55
  const { site } = context;
72
- let verticalName = vertical ? vertical : context.vertical;
56
+ let verticalName = vertical || context.vertical;
73
57
  if (verticalName.toLowerCase().indexOf("landlord") > -1) {
74
58
  verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
75
59
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mocks/eventDefinitions.ts"],"sourcesContent":["import { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: {\n vertical?: string;\n question: string;\n answer?: string;\n }) => {\n const { vertical, question, answer } = params;\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1\",\n data: {\n site: \"\",\n vertical: vertical || \"business\",\n page_index: 1,\n page_name: \"Coverage diagnosis questionnaire\",\n section_name: \"Coverage diagnosis questionnaire\",\n question,\n answer,\n },\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer,\n vertical: context.vertical,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical ? vertical : context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n help_text: helpText,\n primary_text: primaryText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n];\n"],"names":["name","type","makePayload","params","label","category","action","property","vertical","question","answer","schema","data","site","page_index","page_name","section_name","section","context","redact","submitted_from","verticalName","toLowerCase","indexOf","primary_detail","primaryText","helpText","help_text","primary_text"],"mappings":";;;;+BAGA;;;eAAA;;;2BAFuB;MAEvB,WAAe;IACb;QACEA,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,OAAO;gBACLE,UAAU;gBACVC,QAAQ;gBACRF;gBACAG,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YAKZ,MAAM,EAAEK,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGP;YACvC,OAAO;gBACLQ,QACE;gBACFC,MAAM;oBACJC,MAAM;oBACNL,UAAUA,YAAY;oBACtBM,YAAY;oBACZC,WAAW;oBACXC,cAAc;oBACdP;oBACAC;gBACF;YACF;QACF;IACF;IACA;QACEV,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEc,OAAO,EAAEC,OAAO,EAAE,GAAGf;YAC7B,MAAM,EAAEM,QAAQ,EAAEC,MAAM,EAAE,GAAGS,IAAAA,iBAAM,EAAChB;YAEpC,OAAO;gBACLQ,QACE;gBACFC,MAAM;oBACJC,MAAMK,QAAQL,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXK,gBAAgB;oBAChBJ,cAAcC;oBACdR;oBACAC;oBACAF,UAAUU,QAAQV,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACER,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEe,OAAO,EAAER,MAAM,EAAEF,QAAQ,EAAE,GAAGL;YACtC,MAAM,EAAEU,IAAI,EAAE,GAAGK;YACjB,IAAIG,eAAeb,WAAWA,WAAWU,QAAQV,QAAQ;YAEzD,IAAIa,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEX,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLC,QACE;gBACFC,MAAM;oBACJC;oBACAL,UAAUa;oBACVG,gBAAgBd;gBAClB;YACF;QACF;IACF;IACA;QACEV,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEsB,WAAW,EAAErB,KAAK,EAAEc,OAAO,EAAEQ,QAAQ,EAAE,GAAGvB;YAElD,OAAO;gBACLQ,QAAQ;gBACRC,MAAM;oBACJJ,UAAUU,QAAQV,QAAQ;oBAC1BK,MAAMK,QAAQL,IAAI;oBAClBc,WAAWD;oBACXE,cAAcH;oBACdrB;oBACAW,WAAW;gBACb;YACF;QACF;IACF;CACD"}
1
+ {"version":3,"sources":["../../../src/mocks/eventDefinitions.ts"],"sourcesContent":["import { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer,\n vertical: context.vertical,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n help_text: helpText,\n primary_text: primaryText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n];\n"],"names":["name","type","makePayload","params","label","category","action","property","section","context","question","answer","redact","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","contexts","verticalName","toLowerCase","indexOf","primary_detail","primaryText","helpText","help_text","primary_text"],"mappings":";;;;+BAGA;;;eAAA;;;2BAFuB;MAEvB,WAAe;IACb;QACEA,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,OAAO;gBACLE,UAAU;gBACVC,QAAQ;gBACRF;gBACAG,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEK,OAAO,EAAEC,OAAO,EAAE,GAAGN;YAC7B,MAAM,EAAEO,QAAQ,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACT;YAEpC,OAAO;gBACLU,QACE;gBACFC,MAAM;oBACJC,MAAMN,QAAQM,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcX;oBACdE;oBACAC;oBACAS,UAAUX,QAAQW,QAAQ;gBAC5B;YACF;QACF;QACAC,UAAU;YAAC;SAA6B;IAC1C;IACA;QACErB,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEM,OAAO,EAAEE,MAAM,EAAES,QAAQ,EAAE,GAAGjB;YACtC,MAAM,EAAEY,IAAI,EAAE,GAAGN;YACjB,IAAIa,eAAeF,YAAYX,QAAQW,QAAQ;YAE/C,IAAIE,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEX,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLE,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUE;oBACVG,gBAAgBd;gBAClB;YACF;QACF;IACF;IACA;QACEX,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEuB,WAAW,EAAEtB,KAAK,EAAEK,OAAO,EAAEkB,QAAQ,EAAE,GAAGxB;YAElD,OAAO;gBACLU,QAAQ;gBACRC,MAAM;oBACJM,UAAUX,QAAQW,QAAQ;oBAC1BL,MAAMN,QAAQM,IAAI;oBAClBa,WAAWD;oBACXE,cAAcH;oBACdtB;oBACAa,WAAW;gBACb;YACF;QACF;IACF;CACD"}
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "Snowplow", {
9
9
  }
10
10
  });
11
11
  const _browsertracker = require("@snowplow/browser-tracker");
12
+ const _contexts = require("./contexts");
12
13
  function _define_property(obj, key, value) {
13
14
  if (key in obj) {
14
15
  Object.defineProperty(obj, key, {
@@ -24,16 +25,12 @@ function _define_property(obj, key, value) {
24
25
  }
25
26
  class Snowplow {
26
27
  setContexts(contexts) {
27
- var _this_contexts;
28
- this.contexts = contexts;
29
- // Update identity context
30
- const index = (_this_contexts = this.contexts) === null || _this_contexts === void 0 ? void 0 : _this_contexts.findIndex((ctx)=>{
31
- var _ctx_schema;
32
- return (_ctx_schema = ctx.schema) === null || _ctx_schema === void 0 ? void 0 : _ctx_schema.includes("identity_context");
33
- });
34
- if (index > -1) {
35
- this.contexts[index].data.domain_userid = this.uid;
36
- }
28
+ this.contexts = (0, _contexts.updateIdentityContext)(contexts, this.uid);
29
+ this.pvContext = Object.values(this.contexts);
30
+ this.structContext = (0, _contexts.makeContexts)([
31
+ "distributionChannelContext",
32
+ "serviceChannelContext"
33
+ ], this.contexts);
37
34
  return this;
38
35
  }
39
36
  // Send a page view event
@@ -41,7 +38,7 @@ class Snowplow {
41
38
  if (this.trackPageView) {
42
39
  await (0, _browsertracker.trackPageView)({
43
40
  ...event,
44
- context: this.contexts
41
+ context: this.pvContext
45
42
  }, [
46
43
  this.avalancheTrackerName
47
44
  ]);
@@ -52,29 +49,39 @@ class Snowplow {
52
49
  async trackEvent(event) {
53
50
  await (0, _browsertracker.trackStructEvent)({
54
51
  ...event,
55
- context: this.contexts
52
+ context: this.structContext
56
53
  }, [
57
54
  this.bronzeAvalancheTrackerName
58
55
  ]);
59
56
  return this;
60
57
  }
61
58
  // Send a custom event with defined schema and optional contexts
62
- async trackUnstructEvent(event) {
59
+ async trackUnstructEvent(event, contexts) {
63
60
  if (!event) {
64
61
  return this;
65
62
  }
66
- await (0, _browsertracker.trackSelfDescribingEvent)({
67
- event,
68
- context: this.contexts
69
- }, [
70
- this.avalancheTrackerName
71
- ]);
63
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
64
+ // Add context to the event
65
+ const context = (0, _contexts.makeContexts)(contexts, this.contexts);
66
+ await (0, _browsertracker.trackSelfDescribingEvent)({
67
+ event,
68
+ context
69
+ }, [
70
+ this.avalancheTrackerName
71
+ ]);
72
+ } else {
73
+ await (0, _browsertracker.trackSelfDescribingEvent)({
74
+ event
75
+ }, [
76
+ this.avalancheTrackerName
77
+ ]);
78
+ }
72
79
  return this;
73
80
  }
74
81
  addEventHandlers(eventDefinitions) {
75
82
  // Add server context to makePayload functions
76
83
  const context = this.serverData;
77
- eventDefinitions.forEach(({ name, type, makePayload })=>{
84
+ eventDefinitions.forEach(({ name, type, makePayload, contexts })=>{
78
85
  // Convert type into relevant function
79
86
  if (type === "structured") {
80
87
  this.addEventHandler(name, (params)=>{
@@ -85,10 +92,15 @@ class Snowplow {
85
92
  });
86
93
  } else {
87
94
  this.addEventHandler(name, (params)=>{
88
- this.trackUnstructEvent(makePayload({
95
+ const payload = makePayload({
89
96
  ...params,
90
97
  context
91
- }));
98
+ });
99
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
100
+ this.trackUnstructEvent(payload, contexts);
101
+ } else {
102
+ this.trackUnstructEvent(payload);
103
+ }
92
104
  });
93
105
  }
94
106
  });
@@ -103,8 +115,9 @@ class Snowplow {
103
115
  return this;
104
116
  }
105
117
  trigger(name, params) {
106
- if (this.eventHandlers[name]) {
107
- this.eventHandlers[name](params);
118
+ const handler = this.eventHandlers[name];
119
+ if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
120
+ handler(params);
108
121
  }
109
122
  return this;
110
123
  }
@@ -121,13 +134,13 @@ class Snowplow {
121
134
  _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
122
135
  _define_property(this, "uid", "");
123
136
  _define_property(this, "trackPageView", false);
124
- _define_property(this, "contexts", []);
137
+ _define_property(this, "contexts", {});
138
+ _define_property(this, "pvContext", []);
139
+ _define_property(this, "structContext", []);
125
140
  _define_property(this, "serverData", {});
126
141
  _define_property(this, "eventHandlers", {});
127
142
  if (!props) return;
128
- const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, // includeGAContext,
129
- // trackActivity,
130
- trackPageView: tpv } = props;
143
+ const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, trackPageView: tpv } = props;
131
144
  this.uid = uid;
132
145
  this.trackPageView = tpv;
133
146
  this.serverData = (props === null || props === void 0 ? void 0 : (_props_pageViewContext = props.pageViewContext) === null || _props_pageViewContext === void 0 ? void 0 : _props_pageViewContext.data) || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n SelfDescribingJson,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n PageViewEvent,\n} from \"@snowplow/browser-tracker\";\nimport { EventDefinition, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: SelfDescribingJson<Record<string, unknown>>[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n // includeGAContext,\n // trackActivity,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: SelfDescribingJson<Record<string, unknown>>[]) {\n this.contexts = contexts;\n // Update identity context\n const index = this.contexts?.findIndex(ctx =>\n ctx.schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n this.contexts[index].data.domain_userid = this.uid;\n }\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.contexts }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.contexts }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SelfDescribingJson<Record<string, unknown>>) {\n if (!event) {\n return this;\n }\n await trackSelfDescribingEvent({ event, context: this.contexts }, [\n this.avalancheTrackerName,\n ]);\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackUnstructEvent(\n makePayload({\n ...params,\n context,\n }) as SelfDescribingJson<Record<string, unknown>>,\n );\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["Snowplow","setContexts","contexts","index","findIndex","ctx","schema","includes","data","domain_userid","uid","trackView","event","trackPageView","context","avalancheTrackerName","trackEvent","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","trackSelfDescribingEvent","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","handler","eventHandlers","removeEventHandler","trigger","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport { EventDefinition, SerialisedEvent, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: Record<string, SerialisedEvent> = {};\n\n pvContext: SerialisedEvent[] = [];\n\n structContext: SerialisedEvent[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: Record<string, SerialisedEvent>) {\n this.contexts = updateIdentityContext(contexts, this.uid);\n this.pvContext = Object.values(this.contexts);\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.pvContext }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.structContext }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SerialisedEvent, contexts?: string[]) {\n if (!event) {\n return this;\n }\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n // Add context to the event\n const context = makeContexts(contexts!, this.contexts);\n\n await trackSelfDescribingEvent({ event, context }, [\n this.avalancheTrackerName,\n ]);\n } else {\n await trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);\n }\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n const payload = makePayload({\n ...params,\n context,\n }) as SerialisedEvent;\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n this.trackUnstructEvent(payload, contexts);\n } else {\n this.trackUnstructEvent(payload);\n }\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n const handler = this.eventHandlers[name];\n\n if (\n Object.prototype.hasOwnProperty.call(this.eventHandlers, name) &&\n typeof handler === \"function\"\n ) {\n handler(params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["Snowplow","setContexts","contexts","updateIdentityContext","uid","pvContext","Object","values","structContext","makeContexts","trackView","event","trackPageView","context","avalancheTrackerName","trackEvent","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","Array","isArray","length","trackSelfDescribingEvent","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","payload","handler","eventHandlers","removeEventHandler","trigger","prototype","hasOwnProperty","call","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","data","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":"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"}
@@ -2,27 +2,67 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "getContexts", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getContexts: function() {
8
13
  return getContexts;
14
+ },
15
+ makeContexts: function() {
16
+ return makeContexts;
17
+ },
18
+ updateIdentityContext: function() {
19
+ return updateIdentityContext;
9
20
  }
10
21
  });
11
22
  const _utils = require("../utils");
12
23
  const getContexts = (config)=>{
13
- const contexts = config && Object.entries(config).filter(([key])=>key.includes("Context") && key !== "includeGAContext").map(([_key, value])=>{
24
+ // Create an object that only contains Context keys
25
+ // and snake_case the keys
26
+ const contextEntries = Object.entries(config || {}).filter(([key])=>key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value])=>{
14
27
  if (typeof value === "object") {
15
- return (0, _utils.snakeCaseKeys)({
16
- ...value
17
- });
28
+ return {
29
+ ...acc,
30
+ [key]: (0, _utils.snakeCaseKeys)({
31
+ ...value
32
+ })
33
+ };
18
34
  }
19
- return (0, _utils.snakeCaseKeys)({
20
- data: {
21
- service_channel_identifier: value
22
- }
23
- });
35
+ return {
36
+ ...acc,
37
+ [key]: (0, _utils.snakeCaseKeys)({
38
+ data: {
39
+ service_channel_identifier: value
40
+ }
41
+ })
42
+ };
43
+ }, {});
44
+ return contextEntries;
45
+ };
46
+ const updateIdentityContext = (contexts, uid)=>{
47
+ const index = Object.keys(contexts).findIndex((ctx)=>{
48
+ var _contexts_ctx_schema;
49
+ return (_contexts_ctx_schema = contexts[ctx].schema) === null || _contexts_ctx_schema === void 0 ? void 0 : _contexts_ctx_schema.includes("identity_context");
24
50
  });
51
+ if (index > -1) {
52
+ const key = Object.keys(contexts)[index];
53
+ return {
54
+ ...contexts,
55
+ [key]: {
56
+ ...contexts[key],
57
+ data: {
58
+ ...contexts[key].data,
59
+ domain_userid: uid
60
+ }
61
+ }
62
+ };
63
+ }
25
64
  return contexts;
26
65
  };
66
+ const makeContexts = (keys, config)=>(keys || []).map((key)=>config[key]);
27
67
 
28
68
  //# sourceMappingURL=contexts.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import { SelfDescribingJson } from \"@snowplow/browser-tracker\";\nimport { TrackingProps } from \"./types\";\nimport { snakeCaseKeys } from \"../utils\";\n\nexport const getContexts = (\n config: TrackingProps,\n): SelfDescribingJson<Record<string, unknown>>[] => {\n const contexts =\n config &&\n Object.entries(config)\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .map(([_key, value]) => {\n if (typeof value === \"object\") {\n return snakeCaseKeys(({ ...value }));\n }\n return snakeCaseKeys({ data: { service_channel_identifier: value } });\n });\n\n return contexts as unknown as SelfDescribingJson<Record<string, unknown>>[];\n};\n"],"names":["getContexts","config","contexts","Object","entries","filter","key","includes","map","_key","value","snakeCaseKeys","data","service_channel_identifier"],"mappings":";;;;+BAIaA;;;eAAAA;;;uBAFiB;AAEvB,MAAMA,cAAc,CACzBC;IAEA,MAAMC,WACJD,UACAE,OAAOC,OAAO,CAACH,QACZI,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKA,IAAIC,QAAQ,CAAC,cAAcD,QAAQ,oBACrDE,GAAG,CAAC,CAAC,CAACC,MAAMC,MAAM;QACjB,IAAI,OAAOA,UAAU,UAAU;YAC7B,OAAOC,IAAAA,oBAAa,EAAE;gBAAE,GAAGD,KAAK;YAAC;QACnC;QACA,OAAOC,IAAAA,oBAAa,EAAC;YAAEC,MAAM;gBAAEC,4BAA4BH;YAAM;QAAE;IACrE;IAEJ,OAAOR;AACT"}
1
+ {"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import { snakeCaseKeys } from \"../utils\";\nimport { SerialisedEvent, TrackingProps } from \"./types\";\n\nexport const getContexts = (\n config: TrackingProps,\n): Record<string, SerialisedEvent> => {\n // Create an object that only contains Context keys\n // and snake_case the keys\n const contextEntries = Object.entries(config || {})\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n return { ...acc, [key]: snakeCaseKeys({ ...value }) };\n }\n return {\n ...acc,\n [key]: snakeCaseKeys({ data: { service_channel_identifier: value } }),\n };\n }, {});\n\n return contextEntries as Record<string, SerialisedEvent>;\n};\n\nexport const updateIdentityContext = (\n contexts: Record<string, SerialisedEvent>,\n uid: unknown,\n): Record<string, SerialisedEvent> => {\n const index = Object.keys(contexts).findIndex(ctx =>\n contexts[ctx].schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n const key = Object.keys(contexts)[index];\n return {\n ...contexts,\n [key]: {\n ...contexts[key],\n data: {\n ...contexts[key].data,\n domain_userid: uid,\n },\n },\n };\n }\n return contexts;\n};\n\nexport const makeContexts = (\n keys: string[],\n config: Record<string, SerialisedEvent>,\n): SerialisedEvent[] => (keys || []).map(key => config[key]);\n"],"names":["getContexts","makeContexts","updateIdentityContext","config","contextEntries","Object","entries","filter","key","includes","reduce","acc","value","snakeCaseKeys","data","service_channel_identifier","contexts","uid","index","keys","findIndex","ctx","schema","domain_userid","map"],"mappings":";;;;;;;;;;;IAGaA,WAAW;eAAXA;;IA2CAC,YAAY;eAAZA;;IAvBAC,qBAAqB;eAArBA;;;uBAvBiB;AAGvB,MAAMF,cAAc,CACzBG;IAEA,mDAAmD;IACnD,0BAA0B;IAC1B,MAAMC,iBAAiBC,OAAOC,OAAO,CAACH,UAAU,CAAC,GAC9CI,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKA,IAAIC,QAAQ,CAAC,cAAcD,QAAQ,oBACrDE,MAAM,CAAC,CAACC,KAAK,CAACH,KAAKI,MAAM;QACxB,IAAI,OAAOA,UAAU,UAAU;YAC7B,OAAO;gBAAE,GAAGD,GAAG;gBAAE,CAACH,IAAI,EAAEK,IAAAA,oBAAa,EAAC;oBAAE,GAAGD,KAAK;gBAAC;YAAG;QACtD;QACA,OAAO;YACL,GAAGD,GAAG;YACN,CAACH,IAAI,EAAEK,IAAAA,oBAAa,EAAC;gBAAEC,MAAM;oBAAEC,4BAA4BH;gBAAM;YAAE;QACrE;IACF,GAAG,CAAC;IAEN,OAAOR;AACT;AAEO,MAAMF,wBAAwB,CACnCc,UACAC;IAEA,MAAMC,QAAQb,OAAOc,IAAI,CAACH,UAAUI,SAAS,CAACC,CAAAA;YAC5CL;gBAAAA,uBAAAA,QAAQ,CAACK,IAAI,CAACC,MAAM,cAApBN,2CAAAA,qBAAsBP,QAAQ,CAAC;;IAEjC,IAAIS,QAAQ,CAAC,GAAG;QACd,MAAMV,MAAMH,OAAOc,IAAI,CAACH,SAAS,CAACE,MAAM;QACxC,OAAO;YACL,GAAGF,QAAQ;YACX,CAACR,IAAI,EAAE;gBACL,GAAGQ,QAAQ,CAACR,IAAI;gBAChBM,MAAM;oBACJ,GAAGE,QAAQ,CAACR,IAAI,CAACM,IAAI;oBACrBS,eAAeN;gBACjB;YACF;QACF;IACF;IACA,OAAOD;AACT;AAEO,MAAMf,eAAe,CAC1BkB,MACAhB,SACsB,AAACgB,CAAAA,QAAQ,EAAE,AAAD,EAAGK,GAAG,CAAChB,CAAAA,MAAOL,MAAM,CAACK,IAAI"}
@@ -118,7 +118,10 @@ const qcpEventDefinitions = [
118
118
  to_value: toValue
119
119
  }
120
120
  };
121
- }
121
+ },
122
+ contexts: [
123
+ "distributionChannelContext"
124
+ ]
122
125
  },
123
126
  {
124
127
  name: "ratingsModalOpened",
@@ -221,7 +224,10 @@ const qcpEventDefinitions = [
221
224
  vertical
222
225
  }
223
226
  };
224
- }
227
+ },
228
+ contexts: [
229
+ "serviceChannelContext"
230
+ ]
225
231
  },
226
232
  {
227
233
  name: "helpChatLinkClicked",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/snowplow/event-definitions/qcp.ts"],"sourcesContent":["import { snakeCase } from \"../../utils\";\nimport { EventDefinition, LinkType, ParamsType } from \"../types\";\n\n/**\n * Event definitions for Snowplow\n * @type {EventDefinition[]}\n * @property {string} name - The name of the event, to use when triggering\n * @property {string} type - The type of the event (structured | unstructured)\n * @property {makePayload} makePayload\n * - Function that creates the payload for the event;\n * - Allows optional params object to be passed in\n *\n * @example\n * Parent\n * import { getSnowplowConfig, SnowplowProvider } from \"@simplybusiness/services\";\n * const snowplowProps = getSnowplowConfig(pageData);\n * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>\n *\n * Child\n * import { useSnowplowContext } from \"@simplybusiness/services\";\n * const { snowplow } = useSnowplowContext();\n * const handlerFunction = () => snowplow?.trigger(\"eventNameHere\");\n */\n\n// QCP page events\nexport const qcpEventDefinitions: EventDefinition[] = [\n {\n // QDP details button\n name: \"detailsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Details\",\n }),\n },\n {\n // Buy button\n name: \"selectClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Buy\",\n }),\n },\n {\n // Quote Details Slider Next steps button\n name: \"nextStepsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_next_step_cta\",\n action: \"link_click\",\n label: \"Next steps\",\n }),\n },\n {\n // Toggle deductibles accordion\n name: \"deductiblesClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"us-qcp-react\",\n action: \"view_deductables_clicked\",\n label: \"view_deductables_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"deductiblesClickedUk\",\n type: \"structured\",\n makePayload: params => {\n const { label, deviceType } = params as ParamsType;\n const urlFriendlyLabel = label.replace(/ /g, \"-\").toLowerCase();\n\n return {\n category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,\n action: \"view_excess_clicked\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n // Quote Details Slider opened\n name: \"sliderOpened\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"comparison_cta\",\n action: \"quote_details_slider_opened\",\n label,\n };\n },\n },\n {\n // Coverage modal opened\n name: \"coverageModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const {\n category,\n product = \"extra_coverage\",\n title,\n } = params as ParamsType;\n const productLabel = snakeCase(product);\n\n return {\n category,\n action: `${productLabel}_${snakeCase(title)}_popup_opened`,\n label: productLabel,\n property: window.location.href,\n };\n },\n },\n {\n // Toggle cover select\n name: \"coverChanged\",\n type: \"unstructured\",\n makePayload: params => {\n const { name = \"\", fromValue = \"\", toValue = \"\" } = params as ParamsType;\n // Derive data\n let action = \"change\";\n\n // This logic is taken directly from Chopin without documentation:\n // If a cover has zero value, then change the action to add or remove\n if (fromValue === \"0\") {\n action = \"add\";\n }\n if (toValue === \"0\") {\n action = \"remove\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0\",\n data: {\n name,\n action,\n from_value: fromValue,\n to_value: toValue,\n },\n };\n },\n },\n {\n name: \"ratingsModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"insurer_rating_help_popup_triggered\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"coverToggleOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"qcp_limit_interaction\",\n label: \"limit_interaction\",\n action: \"limit_interaction_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"paymentToggleClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"button_click\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"insurerDetailsAccordionClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_insurer_details_description\",\n action: \"accordion_clicked\",\n label: \"accordion_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"priceDetailsPopUpOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"price_details\",\n action: \"price_details_popup_opened\",\n label: \"Price details\",\n property: window.location.href,\n }),\n },\n {\n name: \"editLimitButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"edit_limit_button_clicked\",\n label: \"Edit Limit\",\n property: window.location.href,\n }),\n },\n {\n name: \"applyButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"apply_button_clicked\",\n label: \"Apply Button Clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"coverageInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { deviceType } = params as ParamsType;\n\n return {\n action: \"show_coverage_info_clicked\",\n category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,\n label: \"show_coverage_info_clicked\",\n property: window.location.href,\n };\n },\n },\n {\n name: \"backToApplication\",\n type: \"unstructured\",\n makePayload: params => {\n const { journeyId, vertical } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/back_to_application/jsonschema/1-0-0\",\n data: {\n journey_id: journeyId,\n vertical,\n },\n };\n },\n },\n {\n name: \"helpChatLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"help chat for question\",\n action: \"help_chat_for_question_clicked\",\n property: window.location.href,\n }),\n },\n // No quotes referral\n {\n name: \"coverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-cover-options-link\",\n action: \"cover_options_link_clicked\",\n label: \"cover_options_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantBCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_b\",\n label: \"cover_options_link_clicked_variant_b\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantCCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_c\",\n label: \"cover_options_link_clicked_variant_c\",\n property: window.location.href,\n }),\n },\n {\n name: \"phoneNumberLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-phone-number-link\",\n action: \"phone_number_link_clicked\",\n label: \"phone_number_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"stickyFooterClick\",\n type: \"structured\",\n makePayload: () => ({\n category: \"marketing\",\n action: \"link-click\",\n label: \"sticky_footer_button\",\n property: window.location.href,\n }),\n },\n {\n name: \"linkClicked\",\n type: \"unstructured\",\n makePayload: params => {\n const { targetUrl, elementContent } = params as LinkType;\n\n return {\n schema:\n \"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1\",\n data: {\n targetUrl,\n elementContent,\n },\n };\n },\n },\n {\n name: \"qcpUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qcpUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n];\n"],"names":["qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","snakeCase","fromValue","toValue","schema","data","from_value","to_value","journeyId","vertical","journey_id","targetUrl","elementContent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/qcp.ts"],"sourcesContent":["import { snakeCase } from \"../../utils\";\nimport { EventDefinition, LinkType, ParamsType } from \"../types\";\n\n// QCP page events\nexport const qcpEventDefinitions: EventDefinition[] = [\n {\n // QDP details button\n name: \"detailsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Details\",\n }),\n },\n {\n // Buy button\n name: \"selectClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Buy\",\n }),\n },\n {\n // Quote Details Slider Next steps button\n name: \"nextStepsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_next_step_cta\",\n action: \"link_click\",\n label: \"Next steps\",\n }),\n },\n {\n // Toggle deductibles accordion\n name: \"deductiblesClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"us-qcp-react\",\n action: \"view_deductables_clicked\",\n label: \"view_deductables_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"deductiblesClickedUk\",\n type: \"structured\",\n makePayload: params => {\n const { label, deviceType } = params as ParamsType;\n const urlFriendlyLabel = label.replace(/ /g, \"-\").toLowerCase();\n\n return {\n category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,\n action: \"view_excess_clicked\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n // Quote Details Slider opened\n name: \"sliderOpened\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"comparison_cta\",\n action: \"quote_details_slider_opened\",\n label,\n };\n },\n },\n {\n // Coverage modal opened\n name: \"coverageModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const {\n category,\n product = \"extra_coverage\",\n title,\n } = params as ParamsType;\n const productLabel = snakeCase(product);\n\n return {\n category,\n action: `${productLabel}_${snakeCase(title)}_popup_opened`,\n label: productLabel,\n property: window.location.href,\n };\n },\n },\n {\n // Toggle cover select\n name: \"coverChanged\",\n type: \"unstructured\",\n makePayload: params => {\n const { name = \"\", fromValue = \"\", toValue = \"\" } = params as ParamsType;\n // Derive data\n let action = \"change\";\n\n // This logic is taken directly from Chopin without documentation:\n // If a cover has zero value, then change the action to add or remove\n if (fromValue === \"0\") {\n action = \"add\";\n }\n if (toValue === \"0\") {\n action = \"remove\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0\",\n data: {\n name,\n action,\n from_value: fromValue,\n to_value: toValue,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"ratingsModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"insurer_rating_help_popup_triggered\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"coverToggleOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"qcp_limit_interaction\",\n label: \"limit_interaction\",\n action: \"limit_interaction_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"paymentToggleClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"button_click\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"insurerDetailsAccordionClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_insurer_details_description\",\n action: \"accordion_clicked\",\n label: \"accordion_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"priceDetailsPopUpOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"price_details\",\n action: \"price_details_popup_opened\",\n label: \"Price details\",\n property: window.location.href,\n }),\n },\n {\n name: \"editLimitButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"edit_limit_button_clicked\",\n label: \"Edit Limit\",\n property: window.location.href,\n }),\n },\n {\n name: \"applyButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"apply_button_clicked\",\n label: \"Apply Button Clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"coverageInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { deviceType } = params as ParamsType;\n\n return {\n action: \"show_coverage_info_clicked\",\n category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,\n label: \"show_coverage_info_clicked\",\n property: window.location.href,\n };\n },\n },\n {\n name: \"backToApplication\",\n type: \"unstructured\",\n makePayload: params => {\n const { journeyId, vertical } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/back_to_application/jsonschema/1-0-0\",\n data: {\n journey_id: journeyId,\n vertical,\n },\n };\n },\n contexts: [\"serviceChannelContext\"],\n },\n {\n name: \"helpChatLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"help chat for question\",\n action: \"help_chat_for_question_clicked\",\n property: window.location.href,\n }),\n },\n // No quotes referral\n {\n name: \"coverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-cover-options-link\",\n action: \"cover_options_link_clicked\",\n label: \"cover_options_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantBCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_b\",\n label: \"cover_options_link_clicked_variant_b\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantCCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_c\",\n label: \"cover_options_link_clicked_variant_c\",\n property: window.location.href,\n }),\n },\n {\n name: \"phoneNumberLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-phone-number-link\",\n action: \"phone_number_link_clicked\",\n label: \"phone_number_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"stickyFooterClick\",\n type: \"structured\",\n makePayload: () => ({\n category: \"marketing\",\n action: \"link-click\",\n label: \"sticky_footer_button\",\n property: window.location.href,\n }),\n },\n {\n name: \"linkClicked\",\n type: \"unstructured\",\n makePayload: params => {\n const { targetUrl, elementContent } = params as LinkType;\n\n return {\n schema:\n \"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1\",\n data: {\n targetUrl,\n elementContent,\n },\n };\n },\n },\n {\n name: \"qcpUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qcpUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n];\n"],"names":["qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","snakeCase","fromValue","toValue","schema","data","from_value","to_value","contexts","journeyId","vertical","journey_id","targetUrl","elementContent"],"mappings":"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"}
@@ -52,7 +52,10 @@ const questionnaireEventDefinitions = [
52
52
  primary_detail: answer
53
53
  }
54
54
  };
55
- }
55
+ },
56
+ contexts: [
57
+ "distributionChannelContext"
58
+ ]
56
59
  },
57
60
  {
58
61
  name: "helpTextOpened",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/snowplow/event-definitions/questionnaire.ts"],"sourcesContent":["import { DELIMITER } from \"../constants\";\nimport { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\n\n// Questionnaire events\nexport const questionnaireEventDefinitions: EventDefinition[] = [\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer: flatAnswer,\n vertical: context.vertical,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: params => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n primary_text: primaryText,\n help_text: helpText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n {\n name: \"assumptionsButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { source, presentationGroup } = params as ParamsType;\n\n return {\n action: source,\n category: presentationGroup,\n };\n },\n },\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n label,\n action: \"link_click\",\n category,\n };\n },\n },\n {\n name: \"manualAddressClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category } = params as ParamsType;\n\n return {\n action: \"link_click\",\n category,\n label: \"Enter address manually\",\n };\n },\n },\n];\n"],"names":["questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","redact","flatAnswer","Array","isArray","join","DELIMITER","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","verticalName","toLowerCase","indexOf","primary_detail","primaryText","label","helpText","primary_text","help_text","source","presentationGroup","action","category"],"mappings":";;;;+BAKaA;;;eAAAA;;;2BALa;2BAEH;AAGhB,MAAMA,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACL;YACpC,2CAA2C;YAC3C,MAAMM,aAAaC,MAAMC,OAAO,CAACJ,UAC7BA,OAAOK,IAAI,CAACC,oBAAS,IACrBN;YAEJ,OAAO;gBACLO,QACE;gBACFC,MAAM;oBACJC,MAAMX,QAAQW,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAchB;oBACdE;oBACAC,QAAQE;oBACRY,UAAUhB,QAAQgB,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACErB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEc,QAAQ,EAAE,GAAGlB;YACtC,MAAM,EAAEa,IAAI,EAAE,GAAGX;YACjB,IAAIiB,eAAeD,YAAYhB,QAAQgB,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEf,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLO,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBlB;gBAClB;YACF;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEuB,WAAW,EAAEC,KAAK,EAAEtB,OAAO,EAAEuB,QAAQ,EAAE,GAAGzB;YAElD,OAAO;gBACLW,QAAQ;gBACRC,MAAM;oBACJM,UAAUhB,QAAQgB,QAAQ;oBAC1BL,MAAMX,QAAQW,IAAI;oBAClBa,cAAcH;oBACdI,WAAWF;oBACXD;oBACAT,WAAW;gBACb;YACF;QACF;IACF;IACA;QACElB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE4B,MAAM,EAAEC,iBAAiB,EAAE,GAAG7B;YAEtC,OAAO;gBACL8B,QAAQF;gBACRG,UAAUF;YACZ;QACF;IACF;IACA;QACEhC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEwB,KAAK,EAAEO,QAAQ,EAAE,GAAG/B;YAE5B,OAAO;gBACLwB;gBACAM,QAAQ;gBACRC;YACF;QACF;IACF;IACA;QACElC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE+B,QAAQ,EAAE,GAAG/B;YAErB,OAAO;gBACL8B,QAAQ;gBACRC;gBACAP,OAAO;YACT;QACF;IACF;CACD"}
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/questionnaire.ts"],"sourcesContent":["import { DELIMITER } from \"../constants\";\nimport { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\n\n// Questionnaire events\nexport const questionnaireEventDefinitions: EventDefinition[] = [\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer: flatAnswer,\n vertical: context.vertical,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: params => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n primary_text: primaryText,\n help_text: helpText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n {\n name: \"assumptionsButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { source, presentationGroup } = params as ParamsType;\n\n return {\n action: source,\n category: presentationGroup,\n };\n },\n },\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n label,\n action: \"link_click\",\n category,\n };\n },\n },\n {\n name: \"manualAddressClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category } = params as ParamsType;\n\n return {\n action: \"link_click\",\n category,\n label: \"Enter address manually\",\n };\n },\n },\n];\n"],"names":["questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","redact","flatAnswer","Array","isArray","join","DELIMITER","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","verticalName","toLowerCase","indexOf","primary_detail","contexts","primaryText","label","helpText","primary_text","help_text","source","presentationGroup","action","category"],"mappings":";;;;+BAKaA;;;eAAAA;;;2BALa;2BAEH;AAGhB,MAAMA,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACL;YACpC,2CAA2C;YAC3C,MAAMM,aAAaC,MAAMC,OAAO,CAACJ,UAC7BA,OAAOK,IAAI,CAACC,oBAAS,IACrBN;YAEJ,OAAO;gBACLO,QACE;gBACFC,MAAM;oBACJC,MAAMX,QAAQW,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAchB;oBACdE;oBACAC,QAAQE;oBACRY,UAAUhB,QAAQgB,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACErB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEc,QAAQ,EAAE,GAAGlB;YACtC,MAAM,EAAEa,IAAI,EAAE,GAAGX;YACjB,IAAIiB,eAAeD,YAAYhB,QAAQgB,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEf,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLO,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBlB;gBAClB;YACF;QACF;QACAmB,UAAU;YAAC;SAA6B;IAC1C;IACA;QACE1B,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEwB,WAAW,EAAEC,KAAK,EAAEvB,OAAO,EAAEwB,QAAQ,EAAE,GAAG1B;YAElD,OAAO;gBACLW,QAAQ;gBACRC,MAAM;oBACJM,UAAUhB,QAAQgB,QAAQ;oBAC1BL,MAAMX,QAAQW,IAAI;oBAClBc,cAAcH;oBACdI,WAAWF;oBACXD;oBACAV,WAAW;gBACb;YACF;QACF;IACF;IACA;QACElB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE6B,MAAM,EAAEC,iBAAiB,EAAE,GAAG9B;YAEtC,OAAO;gBACL+B,QAAQF;gBACRG,UAAUF;YACZ;QACF;IACF;IACA;QACEjC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEyB,KAAK,EAAEO,QAAQ,EAAE,GAAGhC;YAE5B,OAAO;gBACLyB;gBACAM,QAAQ;gBACRC;YACF;QACF;IACF;IACA;QACEnC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEgC,QAAQ,EAAE,GAAGhC;YAErB,OAAO;gBACL+B,QAAQ;gBACRC;gBACAP,OAAO;YACT;QACF;IACF;CACD"}