@simplybusiness/services 0.20.1 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/cjs/mocks/eventDefinitions.js +5 -21
- package/dist/cjs/mocks/eventDefinitions.js.map +1 -1
- package/dist/cjs/snowplow/Snowplow.js +41 -28
- package/dist/cjs/snowplow/Snowplow.js.map +1 -1
- package/dist/cjs/snowplow/contexts.js +52 -12
- package/dist/cjs/snowplow/contexts.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/index.js +10 -1
- package/dist/cjs/snowplow/event-definitions/index.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js +122 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +1 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js +8 -2
- package/dist/cjs/snowplow/event-definitions/qcp.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/questionnaire.js +4 -1
- package/dist/cjs/snowplow/event-definitions/questionnaire.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/mocks/eventDefinitions.js +5 -21
- package/dist/esm/mocks/eventDefinitions.js.map +1 -1
- package/dist/esm/snowplow/Snowplow.js +41 -28
- package/dist/esm/snowplow/Snowplow.js.map +1 -1
- package/dist/esm/snowplow/contexts.js +38 -9
- package/dist/esm/snowplow/contexts.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/index.js +7 -1
- package/dist/esm/snowplow/event-definitions/index.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/personalised_cover.js +131 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +1 -0
- package/dist/esm/snowplow/event-definitions/qcp.js +9 -22
- package/dist/esm/snowplow/event-definitions/qcp.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/questionnaire.js +4 -1
- package/dist/esm/snowplow/event-definitions/questionnaire.js.map +1 -1
- package/dist/esm/snowplow/types.js.map +1 -1
- package/dist/types/mocks/eventDefinitions.d.ts +4 -19
- package/dist/types/snowplow/Snowplow.d.ts +7 -5
- package/dist/types/snowplow/contexts.d.ts +4 -3
- package/dist/types/snowplow/event-definitions/index.d.ts +1 -0
- package/dist/types/snowplow/event-definitions/personalised_cover.d.ts +22 -0
- package/dist/types/snowplow/event-definitions/qcp.d.ts +0 -20
- package/dist/types/snowplow/types.d.ts +3 -1
- package/package.json +16 -16
- package/src/mocks/eventDefinitions.ts +2 -25
- package/src/snowplow/Snowplow.ts +46 -29
- package/src/snowplow/contexts.test.ts +134 -6
- package/src/snowplow/contexts.ts +44 -14
- package/src/snowplow/event-definitions/index.ts +7 -0
- package/src/snowplow/event-definitions/personalised_cover.ts +142 -0
- package/src/snowplow/event-definitions/qcp.ts +2 -21
- package/src/snowplow/event-definitions/questionnaire.ts +1 -0
- package/src/snowplow/index.test.ts +40 -30
- package/src/snowplow/types.ts +4 -1
|
@@ -12,6 +12,7 @@ function _define_property(obj, key, value) {
|
|
|
12
12
|
return obj;
|
|
13
13
|
}
|
|
14
14
|
import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribingEvent, trackStructEvent } from "@snowplow/browser-tracker";
|
|
15
|
+
import { makeContexts, updateIdentityContext } from "./contexts";
|
|
15
16
|
/**
|
|
16
17
|
* This class is an abstraction which wraps Snowplow
|
|
17
18
|
* and exposes common methods with other services:
|
|
@@ -19,16 +20,12 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
19
20
|
* - trackUnstructEvent : sends a payload for custom schema
|
|
20
21
|
*/ export class Snowplow {
|
|
21
22
|
setContexts(contexts) {
|
|
22
|
-
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
if (index > -1) {
|
|
30
|
-
this.contexts[index].data.domain_userid = this.uid;
|
|
31
|
-
}
|
|
23
|
+
this.contexts = updateIdentityContext(contexts, this.uid);
|
|
24
|
+
this.pvContext = Object.values(this.contexts);
|
|
25
|
+
this.structContext = makeContexts([
|
|
26
|
+
"distributionChannelContext",
|
|
27
|
+
"serviceChannelContext"
|
|
28
|
+
], this.contexts);
|
|
32
29
|
return this;
|
|
33
30
|
}
|
|
34
31
|
// Send a page view event
|
|
@@ -36,7 +33,7 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
36
33
|
if (this.trackPageView) {
|
|
37
34
|
await trackPageView({
|
|
38
35
|
...event,
|
|
39
|
-
context: this.
|
|
36
|
+
context: this.pvContext
|
|
40
37
|
}, [
|
|
41
38
|
this.avalancheTrackerName
|
|
42
39
|
]);
|
|
@@ -47,29 +44,39 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
47
44
|
async trackEvent(event) {
|
|
48
45
|
await trackStructEvent({
|
|
49
46
|
...event,
|
|
50
|
-
context: this.
|
|
47
|
+
context: this.structContext
|
|
51
48
|
}, [
|
|
52
49
|
this.bronzeAvalancheTrackerName
|
|
53
50
|
]);
|
|
54
51
|
return this;
|
|
55
52
|
}
|
|
56
53
|
// Send a custom event with defined schema and optional contexts
|
|
57
|
-
async trackUnstructEvent(event) {
|
|
54
|
+
async trackUnstructEvent(event, contexts) {
|
|
58
55
|
if (!event) {
|
|
59
56
|
return this;
|
|
60
57
|
}
|
|
61
|
-
|
|
62
|
-
event
|
|
63
|
-
context
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
59
|
+
// Add context to the event
|
|
60
|
+
const context = makeContexts(contexts, this.contexts);
|
|
61
|
+
await trackSelfDescribingEvent({
|
|
62
|
+
event,
|
|
63
|
+
context
|
|
64
|
+
}, [
|
|
65
|
+
this.avalancheTrackerName
|
|
66
|
+
]);
|
|
67
|
+
} else {
|
|
68
|
+
await trackSelfDescribingEvent({
|
|
69
|
+
event
|
|
70
|
+
}, [
|
|
71
|
+
this.avalancheTrackerName
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
67
74
|
return this;
|
|
68
75
|
}
|
|
69
76
|
addEventHandlers(eventDefinitions) {
|
|
70
77
|
// Add server context to makePayload functions
|
|
71
78
|
const context = this.serverData;
|
|
72
|
-
eventDefinitions.forEach(({ name, type, makePayload })=>{
|
|
79
|
+
eventDefinitions.forEach(({ name, type, makePayload, contexts })=>{
|
|
73
80
|
// Convert type into relevant function
|
|
74
81
|
if (type === "structured") {
|
|
75
82
|
this.addEventHandler(name, (params)=>{
|
|
@@ -80,10 +87,15 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
80
87
|
});
|
|
81
88
|
} else {
|
|
82
89
|
this.addEventHandler(name, (params)=>{
|
|
83
|
-
|
|
90
|
+
const payload = makePayload({
|
|
84
91
|
...params,
|
|
85
92
|
context
|
|
86
|
-
})
|
|
93
|
+
});
|
|
94
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
95
|
+
this.trackUnstructEvent(payload, contexts);
|
|
96
|
+
} else {
|
|
97
|
+
this.trackUnstructEvent(payload);
|
|
98
|
+
}
|
|
87
99
|
});
|
|
88
100
|
}
|
|
89
101
|
});
|
|
@@ -98,8 +110,9 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
98
110
|
return this;
|
|
99
111
|
}
|
|
100
112
|
trigger(name, params) {
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
const handler = this.eventHandlers[name];
|
|
114
|
+
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
115
|
+
handler(params);
|
|
103
116
|
}
|
|
104
117
|
return this;
|
|
105
118
|
}
|
|
@@ -116,13 +129,13 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
|
|
|
116
129
|
_define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
|
|
117
130
|
_define_property(this, "uid", "");
|
|
118
131
|
_define_property(this, "trackPageView", false);
|
|
119
|
-
_define_property(this, "contexts",
|
|
132
|
+
_define_property(this, "contexts", {});
|
|
133
|
+
_define_property(this, "pvContext", []);
|
|
134
|
+
_define_property(this, "structContext", []);
|
|
120
135
|
_define_property(this, "serverData", {});
|
|
121
136
|
_define_property(this, "eventHandlers", {});
|
|
122
137
|
if (!props) return;
|
|
123
|
-
const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath,
|
|
124
|
-
// trackActivity,
|
|
125
|
-
trackPageView: tpv } = props;
|
|
138
|
+
const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, trackPageView: tpv } = props;
|
|
126
139
|
this.uid = uid;
|
|
127
140
|
this.trackPageView = tpv;
|
|
128
141
|
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
|
|
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":["newTracker","setCookiePath","setUserId","trackPageView","trackSelfDescribingEvent","trackStructEvent","makeContexts","updateIdentityContext","Snowplow","setContexts","contexts","uid","pvContext","Object","values","structContext","trackView","event","context","avalancheTrackerName","trackEvent","bronzeAvalancheTrackerName","trackUnstructEvent","Array","isArray","length","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"],"mappings":"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"}
|
|
@@ -1,18 +1,47 @@
|
|
|
1
1
|
import { snakeCaseKeys } from "../utils";
|
|
2
2
|
export const getContexts = (config)=>{
|
|
3
|
-
|
|
3
|
+
// Create an object that only contains Context keys
|
|
4
|
+
// and snake_case the keys
|
|
5
|
+
const contextEntries = Object.entries(config || {}).filter(([key])=>key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value])=>{
|
|
4
6
|
if (typeof value === "object") {
|
|
5
|
-
return
|
|
6
|
-
...
|
|
7
|
-
|
|
7
|
+
return {
|
|
8
|
+
...acc,
|
|
9
|
+
[key]: snakeCaseKeys({
|
|
10
|
+
...value
|
|
11
|
+
})
|
|
12
|
+
};
|
|
8
13
|
}
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
return {
|
|
15
|
+
...acc,
|
|
16
|
+
[key]: snakeCaseKeys({
|
|
17
|
+
data: {
|
|
18
|
+
service_channel_identifier: value
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
};
|
|
22
|
+
}, {});
|
|
23
|
+
return contextEntries;
|
|
24
|
+
};
|
|
25
|
+
export const updateIdentityContext = (contexts, uid)=>{
|
|
26
|
+
const index = Object.keys(contexts).findIndex((ctx)=>{
|
|
27
|
+
var _contexts_ctx_schema;
|
|
28
|
+
return (_contexts_ctx_schema = contexts[ctx].schema) === null || _contexts_ctx_schema === void 0 ? void 0 : _contexts_ctx_schema.includes("identity_context");
|
|
14
29
|
});
|
|
30
|
+
if (index > -1) {
|
|
31
|
+
const key = Object.keys(contexts)[index];
|
|
32
|
+
return {
|
|
33
|
+
...contexts,
|
|
34
|
+
[key]: {
|
|
35
|
+
...contexts[key],
|
|
36
|
+
data: {
|
|
37
|
+
...contexts[key].data,
|
|
38
|
+
domain_userid: uid
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
15
43
|
return contexts;
|
|
16
44
|
};
|
|
45
|
+
export const makeContexts = (keys, config)=>(keys || []).map((key)=>config[key]);
|
|
17
46
|
|
|
18
47
|
//# sourceMappingURL=contexts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import {
|
|
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":["snakeCaseKeys","getContexts","config","contextEntries","Object","entries","filter","key","includes","reduce","acc","value","data","service_channel_identifier","updateIdentityContext","contexts","uid","index","keys","findIndex","ctx","schema","domain_userid","makeContexts","map"],"mappings":"AAAA,SAASA,aAAa,QAAQ,WAAW;AAGzC,OAAO,MAAMC,cAAc,CACzBC;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,EAAEP,cAAc;oBAAE,GAAGW,KAAK;gBAAC;YAAG;QACtD;QACA,OAAO;YACL,GAAGD,GAAG;YACN,CAACH,IAAI,EAAEP,cAAc;gBAAEY,MAAM;oBAAEC,4BAA4BF;gBAAM;YAAE;QACrE;IACF,GAAG,CAAC;IAEN,OAAOR;AACT,EAAE;AAEF,OAAO,MAAMW,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;gBAChBK,MAAM;oBACJ,GAAGG,QAAQ,CAACR,IAAI,CAACK,IAAI;oBACrBU,eAAeN;gBACjB;YACF;QACF;IACF;IACA,OAAOD;AACT,EAAE;AAEF,OAAO,MAAMQ,eAAe,CAC1BL,MACAhB,SACsB,AAACgB,CAAAA,QAAQ,EAAE,AAAD,EAAGM,GAAG,CAACjB,CAAAA,MAAOL,MAAM,CAACK,IAAI,EAAE"}
|
|
@@ -3,13 +3,15 @@ import { qcpEventDefinitions } from "./qcp";
|
|
|
3
3
|
import { referralEventDefinitions } from "./referral";
|
|
4
4
|
import { interventionEventDefinitions } from "./intervention";
|
|
5
5
|
import { questionnaireEventDefinitions } from "./questionnaire";
|
|
6
|
+
import { personalisedCoverEventDefinitions } from "./personalised_cover";
|
|
6
7
|
// All events (keep up to date with new files)
|
|
7
8
|
export const eventDefinitions = [
|
|
8
9
|
...baseEventDefinitions,
|
|
9
10
|
...qcpEventDefinitions,
|
|
10
11
|
...referralEventDefinitions,
|
|
11
12
|
...interventionEventDefinitions,
|
|
12
|
-
...questionnaireEventDefinitions
|
|
13
|
+
...questionnaireEventDefinitions,
|
|
14
|
+
...personalisedCoverEventDefinitions
|
|
13
15
|
];
|
|
14
16
|
export const qcpPageEvents = [
|
|
15
17
|
...baseEventDefinitions,
|
|
@@ -19,6 +21,10 @@ export const referralPageEvents = [
|
|
|
19
21
|
...baseEventDefinitions,
|
|
20
22
|
...referralEventDefinitions
|
|
21
23
|
];
|
|
24
|
+
export const personalisedCoverPageEvents = [
|
|
25
|
+
...baseEventDefinitions,
|
|
26
|
+
...personalisedCoverEventDefinitions
|
|
27
|
+
];
|
|
22
28
|
export const interventionPageEvents = [
|
|
23
29
|
...interventionEventDefinitions
|
|
24
30
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions","eventDefinitions","qcpPageEvents","referralPageEvents","interventionPageEvents","questionnairePageEvents"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,SAAS;AAC9C,SAASC,mBAAmB,QAAQ,QAAQ;AAC5C,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,6BAA6B,QAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\nimport { personalisedCoverEventDefinitions } from \"./personalised_cover\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const personalisedCoverPageEvents = [\n ...baseEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions","personalisedCoverEventDefinitions","eventDefinitions","qcpPageEvents","referralPageEvents","personalisedCoverPageEvents","interventionPageEvents","questionnairePageEvents"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,SAAS;AAC9C,SAASC,mBAAmB,QAAQ,QAAQ;AAC5C,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,6BAA6B,QAAQ,kBAAkB;AAChE,SAASC,iCAAiC,QAAQ,uBAAuB;AAEzE,8CAA8C;AAC9C,OAAO,MAAMC,mBAAmB;OAC3BN;OACAC;OACAC;OACAC;OACAC;OACAC;CACJ,CAAC;AAEF,OAAO,MAAME,gBAAgB;OAAIP;OAAyBC;CAAoB,CAAC;AAE/E,OAAO,MAAMO,qBAAqB;OAC7BR;OACAE;CACJ,CAAC;AAEF,OAAO,MAAMO,8BAA8B;OACtCT;OACAK;CACJ,CAAC;AAEF,OAAO,MAAMK,yBAAyB;OAAIP;CAA6B,CAAC;AAIxE,OAAO,MAAMQ,0BAA0B;OAAIP;CAA8B,CAAC,CAE1E,kDAAkD;CAClD,kDAAkD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { redact } from "./redaction";
|
|
2
|
+
import { DELIMITER } from "../constants";
|
|
3
|
+
import { snakeCase } from "../../utils";
|
|
4
|
+
/**
|
|
5
|
+
* Event definitions for Snowplow
|
|
6
|
+
* @type {EventDefinition[]}
|
|
7
|
+
* @property {string} name - The name of the event, to use when triggering
|
|
8
|
+
* @property {string} type - The type of the event (structured | unstructured)
|
|
9
|
+
* @property {makePayload} makePayload
|
|
10
|
+
* - Function that creates the payload for the event;
|
|
11
|
+
* - Allows optional params object to be passed in
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* Parent
|
|
15
|
+
* import { getSnowplowConfig, SnowplowProvider } from "@simplybusiness/services";
|
|
16
|
+
* const snowplowProps = getSnowplowConfig(pageData);
|
|
17
|
+
* <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>
|
|
18
|
+
*
|
|
19
|
+
* Child
|
|
20
|
+
* import { useSnowplowContext } from "@simplybusiness/services";
|
|
21
|
+
* const { snowplow } = useSnowplowContext();
|
|
22
|
+
* const handlerFunction = () => snowplow?.trigger("eventNameHere");
|
|
23
|
+
*/ export const personalisedCoverEventDefinitions = [
|
|
24
|
+
{
|
|
25
|
+
name: "seeMoreClicked",
|
|
26
|
+
type: "structured",
|
|
27
|
+
makePayload: (_)=>({
|
|
28
|
+
category: "personalised_cover",
|
|
29
|
+
action: "see_more_clicked",
|
|
30
|
+
label: "page",
|
|
31
|
+
property: "personalised_cover"
|
|
32
|
+
})
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "selectPackageClicked",
|
|
36
|
+
type: "structured",
|
|
37
|
+
makePayload: (_)=>({
|
|
38
|
+
category: "personalised_cover",
|
|
39
|
+
action: "select_package_clicked",
|
|
40
|
+
label: "page",
|
|
41
|
+
property: "personalised_cover"
|
|
42
|
+
})
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "validationShown",
|
|
46
|
+
type: "structured",
|
|
47
|
+
makePayload: (params)=>{
|
|
48
|
+
const { cover, question } = params;
|
|
49
|
+
return {
|
|
50
|
+
category: "personalised_cover",
|
|
51
|
+
action: "validation_shown",
|
|
52
|
+
label: "cover_question",
|
|
53
|
+
property: `${snakeCase(cover)}_${snakeCase(question)}`
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "coverQuestionAnswered",
|
|
59
|
+
type: "unstructured",
|
|
60
|
+
makePayload: (params)=>{
|
|
61
|
+
const { context } = params;
|
|
62
|
+
const { question, answer } = redact(params);
|
|
63
|
+
// Flatten the answer to a delimited string
|
|
64
|
+
const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
|
|
65
|
+
return {
|
|
66
|
+
schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1",
|
|
67
|
+
data: {
|
|
68
|
+
site: context.site,
|
|
69
|
+
page_name: "personalised_cover",
|
|
70
|
+
section_name: "Personalised Cover Questions",
|
|
71
|
+
question,
|
|
72
|
+
answer: flatAnswer
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "limitLinkClicked",
|
|
79
|
+
type: "structured",
|
|
80
|
+
makePayload: (params)=>{
|
|
81
|
+
const { label } = params;
|
|
82
|
+
return {
|
|
83
|
+
category: "personalised_cover",
|
|
84
|
+
action: "limit_link_clicked",
|
|
85
|
+
label,
|
|
86
|
+
property: "link_clicked"
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "limitChanged",
|
|
92
|
+
type: "structured",
|
|
93
|
+
makePayload: (params)=>{
|
|
94
|
+
const { label, limit } = params;
|
|
95
|
+
return {
|
|
96
|
+
category: "personalised_cover",
|
|
97
|
+
action: "limit_changed",
|
|
98
|
+
label,
|
|
99
|
+
property: limit
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "coverPresented",
|
|
105
|
+
type: "structured",
|
|
106
|
+
makePayload: (params)=>{
|
|
107
|
+
const { property } = params;
|
|
108
|
+
return {
|
|
109
|
+
category: "personalised_cover",
|
|
110
|
+
action: "cover_presented",
|
|
111
|
+
label: "cover_name",
|
|
112
|
+
property
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "moreInfoClicked",
|
|
118
|
+
type: "structured",
|
|
119
|
+
makePayload: (params)=>{
|
|
120
|
+
const { property } = params;
|
|
121
|
+
return {
|
|
122
|
+
category: "personalised_cover",
|
|
123
|
+
action: "more_info_clicked",
|
|
124
|
+
label: "cover_name",
|
|
125
|
+
property
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
];
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=personalised_cover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/snowplow/event-definitions/personalised_cover.ts"],"sourcesContent":["import { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\nimport { DELIMITER } from \"../constants\";\nimport { snakeCase } from \"../../utils\";\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\nexport const personalisedCoverEventDefinitions: EventDefinition[] = [\n {\n name: \"seeMoreClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"see_more_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"selectPackageClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"select_package_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"validationShown\",\n type: \"structured\",\n makePayload: params => {\n const { cover, question } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"validation_shown\",\n label: \"cover_question\",\n property: `${snakeCase(cover)}_${snakeCase(question)}`,\n };\n },\n },\n {\n name: \"coverQuestionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { 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-1\",\n data: {\n site: context.site,\n page_name: \"personalised_cover\",\n section_name: \"Personalised Cover Questions\",\n question,\n answer: flatAnswer,\n },\n };\n },\n },\n {\n name: \"limitLinkClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_link_clicked\",\n label,\n property: \"link_clicked\",\n };\n },\n },\n {\n name: \"limitChanged\",\n type: \"structured\",\n makePayload: params => {\n const { label, limit } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_changed\",\n label,\n property: limit,\n };\n },\n },\n {\n name: \"coverPresented\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"cover_presented\",\n label: \"cover_name\",\n property,\n };\n },\n },\n {\n name: \"moreInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"more_info_clicked\",\n label: \"cover_name\",\n property,\n };\n },\n },\n];\n"],"names":["redact","DELIMITER","snakeCase","personalisedCoverEventDefinitions","name","type","makePayload","_","category","action","label","property","params","cover","question","context","answer","flatAnswer","Array","isArray","join","schema","data","site","page_name","section_name","limit"],"mappings":"AACA,SAASA,MAAM,QAAQ,cAAc;AACrC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,SAAS,QAAQ,cAAc;AAExC;;;;;;;;;;;;;;;;;;;CAmBC,GAED,OAAO,MAAMC,oCAAuD;IAClE;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGF;YAE5B,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU,GAAGT,UAAUW,OAAO,CAAC,EAAEX,UAAUY,WAAW;YACxD;QACF;IACF;IACA;QACEV,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEG,OAAO,EAAE,GAAGH;YACpB,MAAM,EAAEE,QAAQ,EAAEE,MAAM,EAAE,GAAGhB,OAAOY;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACnB,aACZe;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMR,QAAQQ,IAAI;oBAClBC,WAAW;oBACXC,cAAc;oBACdX;oBACAE,QAAQC;gBACV;YACF;QACF;IACF;IACA;QACEb,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAE,GAAGE;YAElB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAEgB,KAAK,EAAE,GAAGd;YAEzB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAUe;YACZ;QACF;IACF;IACA;QACEtB,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;CACD,CAAC"}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import { snakeCase } from "../../utils";
|
|
2
|
-
|
|
3
|
-
* Event definitions for Snowplow
|
|
4
|
-
* @type {EventDefinition[]}
|
|
5
|
-
* @property {string} name - The name of the event, to use when triggering
|
|
6
|
-
* @property {string} type - The type of the event (structured | unstructured)
|
|
7
|
-
* @property {makePayload} makePayload
|
|
8
|
-
* - Function that creates the payload for the event;
|
|
9
|
-
* - Allows optional params object to be passed in
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* Parent
|
|
13
|
-
* import { getSnowplowConfig, SnowplowProvider } from "@simplybusiness/services";
|
|
14
|
-
* const snowplowProps = getSnowplowConfig(pageData);
|
|
15
|
-
* <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>
|
|
16
|
-
*
|
|
17
|
-
* Child
|
|
18
|
-
* import { useSnowplowContext } from "@simplybusiness/services";
|
|
19
|
-
* const { snowplow } = useSnowplowContext();
|
|
20
|
-
* const handlerFunction = () => snowplow?.trigger("eventNameHere");
|
|
21
|
-
*/ // QCP page events
|
|
2
|
+
// QCP page events
|
|
22
3
|
export const qcpEventDefinitions = [
|
|
23
4
|
{
|
|
24
5
|
// QDP details button
|
|
@@ -128,7 +109,10 @@ export const qcpEventDefinitions = [
|
|
|
128
109
|
to_value: toValue
|
|
129
110
|
}
|
|
130
111
|
};
|
|
131
|
-
}
|
|
112
|
+
},
|
|
113
|
+
contexts: [
|
|
114
|
+
"distributionChannelContext"
|
|
115
|
+
]
|
|
132
116
|
},
|
|
133
117
|
{
|
|
134
118
|
name: "ratingsModalOpened",
|
|
@@ -231,7 +215,10 @@ export const qcpEventDefinitions = [
|
|
|
231
215
|
vertical
|
|
232
216
|
}
|
|
233
217
|
};
|
|
234
|
-
}
|
|
218
|
+
},
|
|
219
|
+
contexts: [
|
|
220
|
+
"serviceChannelContext"
|
|
221
|
+
]
|
|
235
222
|
},
|
|
236
223
|
{
|
|
237
224
|
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":["snakeCase","qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","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":["snakeCase","qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","fromValue","toValue","schema","data","from_value","to_value","contexts","journeyId","vertical","journey_id","targetUrl","elementContent"],"mappings":"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"}
|
|
@@ -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":["DELIMITER","redact","questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","flatAnswer","Array","isArray","join","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":"AAAA,SAASA,SAAS,QAAQ,eAAe;AAEzC,SAASC,MAAM,QAAQ,cAAc;AAErC,uBAAuB;AACvB,OAAO,MAAMC,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGT,OAAOK;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACd,aACZU;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMT,QAAQS,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcd;oBACdE;oBACAC,QAAQC;oBACRW,UAAUd,QAAQc,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACEnB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEY,QAAQ,EAAE,GAAGhB;YACtC,MAAM,EAAEW,IAAI,EAAE,GAAGT;YACjB,IAAIe,eAAeD,YAAYd,QAAQc,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEb,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBhB;gBAClB;YACF;QACF;
|
|
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":["DELIMITER","redact","questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","flatAnswer","Array","isArray","join","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":"AAAA,SAASA,SAAS,QAAQ,eAAe;AAEzC,SAASC,MAAM,QAAQ,cAAc;AAErC,uBAAuB;AACvB,OAAO,MAAMC,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGT,OAAOK;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACd,aACZU;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMT,QAAQS,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcd;oBACdE;oBACAC,QAAQC;oBACRW,UAAUd,QAAQc,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACEnB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEY,QAAQ,EAAE,GAAGhB;YACtC,MAAM,EAAEW,IAAI,EAAE,GAAGT;YACjB,IAAIe,eAAeD,YAAYd,QAAQc,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEb,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBhB;gBAClB;YACF;QACF;QACAiB,UAAU;YAAC;SAA6B;IAC1C;IACA;QACExB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEsB,WAAW,EAAEC,KAAK,EAAErB,OAAO,EAAEsB,QAAQ,EAAE,GAAGxB;YAElD,OAAO;gBACLS,QAAQ;gBACRC,MAAM;oBACJM,UAAUd,QAAQc,QAAQ;oBAC1BL,MAAMT,QAAQS,IAAI;oBAClBc,cAAcH;oBACdI,WAAWF;oBACXD;oBACAV,WAAW;gBACb;YACF;QACF;IACF;IACA;QACEhB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE2B,MAAM,EAAEC,iBAAiB,EAAE,GAAG5B;YAEtC,OAAO;gBACL6B,QAAQF;gBACRG,UAAUF;YACZ;QACF;IACF;IACA;QACE/B,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEuB,KAAK,EAAEO,QAAQ,EAAE,GAAG9B;YAE5B,OAAO;gBACLuB;gBACAM,QAAQ;gBACRC;YACF;QACF;IACF;IACA;QACEjC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE8B,QAAQ,EAAE,GAAG9B;YAErB,OAAO;gBACL6B,QAAQ;gBACRC;gBACAP,OAAO;YACT;QACF;IACF;CACD,CAAC"}
|