@phantomstudios/ft-lib 0.5.2-rc9 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cmp/vendorConsent.d.ts +1 -1
- package/lib/cmp/vendorConsent.d.ts.map +1 -1
- package/lib/cmp/vendorConsent.js +2 -27
- package/lib/cmp/vendorConsent.js.map +1 -1
- package/lib/consentMonitor/index.d.ts +1 -1
- package/lib/consentMonitor/index.d.ts.map +1 -1
- package/lib/consentMonitor/index.js +7 -20
- package/lib/consentMonitor/index.js.map +1 -1
- package/package.json +1 -1
- package/src/cmp/vendorConsent.ts +3 -34
- package/src/consentMonitor/index.ts +9 -23
|
@@ -3,7 +3,7 @@ export interface VendorConsentResults {
|
|
|
3
3
|
linkedIn: boolean;
|
|
4
4
|
purpose1: boolean;
|
|
5
5
|
gdprApplies: boolean;
|
|
6
|
-
usnatApplies
|
|
6
|
+
usnatApplies: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare function initVendorConsentListener(onConsentUpdate: (results: VendorConsentResults) => void): void;
|
|
9
9
|
//# sourceMappingURL=vendorConsent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendorConsent.d.ts","sourceRoot":"","sources":["../../src/cmp/vendorConsent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,
|
|
1
|
+
{"version":3,"file":"vendorConsent.d.ts","sourceRoot":"","sources":["../../src/cmp/vendorConsent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GACvD,IAAI,CAqDN"}
|
package/lib/cmp/vendorConsent.js
CHANGED
|
@@ -49,12 +49,8 @@ function evaluateUSNatConsent(onConsentUpdate) {
|
|
|
49
49
|
// Option A: Preferred Sourcepoint SDK method
|
|
50
50
|
if (typeof ((_b = (_a = window._sp_) === null || _a === void 0 ? void 0 : _a.usnat) === null || _b === void 0 ? void 0 : _b.getUserConsents) === "function") {
|
|
51
51
|
window._sp_.usnat.getUserConsents(function (consents) {
|
|
52
|
-
// US Privacy is OPT-OUT by default
|
|
53
|
-
|
|
54
|
-
var isOptedOut = (consents === null || consents === void 0 ? void 0 : consents.optedOut) === true ||
|
|
55
|
-
(Array.isArray(consents === null || consents === void 0 ? void 0 : consents.rejectedCategories) &&
|
|
56
|
-
consents.rejectedCategories.length > 0);
|
|
57
|
-
var isConsented = !isOptedOut;
|
|
52
|
+
// US Privacy is OPT-OUT by default, categories[1] = cookies
|
|
53
|
+
var isConsented = consents === null || consents === void 0 ? void 0 : consents.categories[1].consented;
|
|
58
54
|
onConsentUpdate({
|
|
59
55
|
brandmetrics: isConsented,
|
|
60
56
|
linkedIn: isConsented,
|
|
@@ -65,26 +61,5 @@ function evaluateUSNatConsent(onConsentUpdate) {
|
|
|
65
61
|
});
|
|
66
62
|
return;
|
|
67
63
|
}
|
|
68
|
-
// Option B: Fallback to GPP standard API
|
|
69
|
-
if (typeof window.__gpp === "function") {
|
|
70
|
-
window.__gpp("getGPPData", function (gppData, success) {
|
|
71
|
-
var _a;
|
|
72
|
-
if (!success || !gppData)
|
|
73
|
-
return;
|
|
74
|
-
var usnat = (_a = gppData.parsedSections) === null || _a === void 0 ? void 0 : _a.usnat;
|
|
75
|
-
// GPP USNat spec: 1 = Opted Out / Yes
|
|
76
|
-
var isOptedOut = (usnat === null || usnat === void 0 ? void 0 : usnat.SharingOptOut) === 1 ||
|
|
77
|
-
(usnat === null || usnat === void 0 ? void 0 : usnat.TargetedAdvertisingOptOut) === 1 ||
|
|
78
|
-
(usnat === null || usnat === void 0 ? void 0 : usnat.SaleOptOut) === 1;
|
|
79
|
-
var isConsented = !isOptedOut;
|
|
80
|
-
onConsentUpdate({
|
|
81
|
-
brandmetrics: isConsented,
|
|
82
|
-
linkedIn: isConsented,
|
|
83
|
-
purpose1: isConsented,
|
|
84
|
-
gdprApplies: false,
|
|
85
|
-
usnatApplies: true,
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
64
|
}
|
|
90
65
|
//# sourceMappingURL=vendorConsent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendorConsent.js","sourceRoot":"","sources":["../../src/cmp/vendorConsent.ts"],"names":[],"mappings":";;AAQA,8DAuDC;AAvDD,SAAgB,yBAAyB,CACvC,eAAwD;IAExD,sCAAsC;IACtC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,UAAC,MAAM,EAAE,OAAO;;YACrD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEhC,IAAM,cAAc,GAClB,MAAM,CAAC,WAAW,KAAK,UAAU;gBACjC,MAAM,CAAC,WAAW,KAAK,oBAAoB,CAAC;YAE9C,IAAI,cAAc,EAAE,CAAC;gBACnB,gEAAgE;gBAChE,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;oBACjC,IAAM,OAAO,GAAyB;wBACpC,YAAY,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,0CAAG,GAAG,CAAC,MAAK,IAAI;wBACrD,QAAQ,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,0CAAG,GAAG,CAAC,MAAK,IAAI;wBACjD,QAAQ,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,0CAAG,CAAC,CAAC,MAAK,IAAI;wBAChD,WAAW,EAAE,IAAI;wBACjB,YAAY,EAAE,KAAK;qBACpB,CAAC;oBAEF,eAAe,CAAC,OAAO,CAAC,CAAC;oBAEzB,wBAAwB;oBACxB,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;wBAC1C,MAAA,MAAM,CAAC,QAAQ,uDACb,qBAAqB,EACrB,CAAC,EACD,cAAO,CAAC,EACR,MAAM,CAAC,UAAU,CAClB,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,mFAAmF;gBACnF,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBAEtC,kDAAkD;gBAClD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1C,MAAA,MAAM,CAAC,QAAQ,uDACb,qBAAqB,EACrB,CAAC,EACD,cAAO,CAAC,EACR,MAAM,CAAC,UAAU,CAClB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,eAAwD;;IAExD,6CAA6C;IAC7C,IAAI,OAAO,CAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,KAAK,0CAAE,eAAe,CAAA,KAAK,UAAU,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAC,QAAQ;YACzC,
|
|
1
|
+
{"version":3,"file":"vendorConsent.js","sourceRoot":"","sources":["../../src/cmp/vendorConsent.ts"],"names":[],"mappings":";;AAQA,8DAuDC;AAvDD,SAAgB,yBAAyB,CACvC,eAAwD;IAExD,sCAAsC;IACtC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,UAAC,MAAM,EAAE,OAAO;;YACrD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEhC,IAAM,cAAc,GAClB,MAAM,CAAC,WAAW,KAAK,UAAU;gBACjC,MAAM,CAAC,WAAW,KAAK,oBAAoB,CAAC;YAE9C,IAAI,cAAc,EAAE,CAAC;gBACnB,gEAAgE;gBAChE,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;oBACjC,IAAM,OAAO,GAAyB;wBACpC,YAAY,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,0CAAG,GAAG,CAAC,MAAK,IAAI;wBACrD,QAAQ,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,0CAAG,GAAG,CAAC,MAAK,IAAI;wBACjD,QAAQ,EAAE,CAAA,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,0CAAG,CAAC,CAAC,MAAK,IAAI;wBAChD,WAAW,EAAE,IAAI;wBACjB,YAAY,EAAE,KAAK;qBACpB,CAAC;oBAEF,eAAe,CAAC,OAAO,CAAC,CAAC;oBAEzB,wBAAwB;oBACxB,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;wBAC1C,MAAA,MAAM,CAAC,QAAQ,uDACb,qBAAqB,EACrB,CAAC,EACD,cAAO,CAAC,EACR,MAAM,CAAC,UAAU,CAClB,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,mFAAmF;gBACnF,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBAEtC,kDAAkD;gBAClD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1C,MAAA,MAAM,CAAC,QAAQ,uDACb,qBAAqB,EACrB,CAAC,EACD,cAAO,CAAC,EACR,MAAM,CAAC,UAAU,CAClB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,eAAwD;;IAExD,6CAA6C;IAC7C,IAAI,OAAO,CAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,KAAK,0CAAE,eAAe,CAAA,KAAK,UAAU,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAC,QAAQ;YACzC,4DAA4D;YAC5D,IAAM,WAAW,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC;YAEtD,eAAe,CAAC;gBACd,YAAY,EAAE,WAAW;gBACzB,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;AACH,CAAC"}
|
|
@@ -19,7 +19,7 @@ export declare class ConsentMonitor {
|
|
|
19
19
|
private enablePermutive;
|
|
20
20
|
private disablePermutive;
|
|
21
21
|
cookieConsentTest: () => void;
|
|
22
|
-
setDevConsentCookies: () => void;
|
|
22
|
+
setDevConsentCookies: (allow: boolean) => void;
|
|
23
23
|
}
|
|
24
24
|
export { ConsentMonitor as consentMonitor };
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consentMonitor/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAwB9B,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consentMonitor/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAwB9B,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAMG;IAE1B,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD,IAAW,QAAQ,IAAI,MAAM,EAAE,CAE9B;IACD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IACD,IAAW,aAAa,IAAI,OAAO,CAElC;IACD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IACD,IAAW,cAAc,IAAI,oBAAoB,CAEhD;IAED,cAAc,GAAI,MAAM,MAAM,YACgD;gBAElE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IA4B3D,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;IAQxB,iBAAiB,aAcf;IAEF,oBAAoB,GAAI,OAAO,OAAO,UAMpC;CACH;AAED,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -31,6 +31,8 @@ var ConsentMonitor = /** @class */ (function () {
|
|
|
31
31
|
brandmetrics: false,
|
|
32
32
|
linkedIn: false,
|
|
33
33
|
purpose1: false,
|
|
34
|
+
gdprApplies: false,
|
|
35
|
+
usnatApplies: false,
|
|
34
36
|
};
|
|
35
37
|
this.getCookieValue = function (name) { var _a; return ((_a = document.cookie.match("(^|;)\\s*" + name + "\\s*=\\s*([^;]+)")) === null || _a === void 0 ? void 0 : _a.pop()) || ""; };
|
|
36
38
|
//check for FTConsent - cookiesOnSite to trigger custom consent_update event for GTM tags (banner updated)
|
|
@@ -51,12 +53,12 @@ var ConsentMonitor = /** @class */ (function () {
|
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
};
|
|
54
|
-
this.setDevConsentCookies = function () {
|
|
56
|
+
this.setDevConsentCookies = function (allow) {
|
|
55
57
|
_this._isDevEnvironment = true;
|
|
58
|
+
var value = allow ? "on" : "off";
|
|
56
59
|
debug("setting development FT consent cookies");
|
|
57
|
-
document.cookie =
|
|
58
|
-
|
|
59
|
-
document.cookie = "FTCookieConsentGDPR=true";
|
|
60
|
+
document.cookie = "FTConsent=behaviouraladsOnsite%3A".concat(value, "%2CcookiesOnsite%3A").concat(value, "%2CpermutiveadsOnsite%3A").concat(value);
|
|
61
|
+
document.cookie = "FTCookieConsentGDPR=".concat(allow);
|
|
60
62
|
};
|
|
61
63
|
if (Array.isArray(devHosts)) {
|
|
62
64
|
this._devHosts = __spreadArray(__spreadArray([], devHosts, true), DEFAULT_DEV_HOSTS, true);
|
|
@@ -76,13 +78,6 @@ var ConsentMonitor = /** @class */ (function () {
|
|
|
76
78
|
// load banner
|
|
77
79
|
(0, loadFtCmp_1.loadFtCmpScript)()
|
|
78
80
|
.then(function () {
|
|
79
|
-
// const propertyConfig = window.location.hostname.endsWith(".ft.com")
|
|
80
|
-
// ? properties["FT_DOTCOM_PROD"]
|
|
81
|
-
// : properties["FT_DOTCOM_TEST"];
|
|
82
|
-
// // initialize CMP
|
|
83
|
-
// initSourcepointCmp({ propertyConfig });
|
|
84
|
-
// // use cmp client lib to intercept footer 'Manage Cookies' links (opens privacy modal)
|
|
85
|
-
// // Note, function requires very specific link: text = 'Manage Cookies' and href = 'https://ft.com/preferences/manage-cookies'
|
|
86
81
|
(0, cmp_client_1.interceptManageCookiesLinks)();
|
|
87
82
|
_this._isInitialized = true;
|
|
88
83
|
})
|
|
@@ -154,13 +149,6 @@ var ConsentMonitor = /** @class */ (function () {
|
|
|
154
149
|
else {
|
|
155
150
|
_this.disablePermutive();
|
|
156
151
|
}
|
|
157
|
-
(0, vendorConsent_1.initVendorConsentListener)(function (vendorConsents) {
|
|
158
|
-
var vendorConsentEvent = new CustomEvent("cmp_vendorConsent", {
|
|
159
|
-
detail: vendorConsents,
|
|
160
|
-
});
|
|
161
|
-
window.dispatchEvent(vendorConsentEvent);
|
|
162
|
-
debug("[CMP Consent lookup Event", vendorConsents);
|
|
163
|
-
});
|
|
164
152
|
};
|
|
165
153
|
var onChoice = function (_l, _c, typeId) {
|
|
166
154
|
debug("onMessageChoiceSelect:", typeId);
|
|
@@ -171,8 +159,7 @@ var ConsentMonitor = /** @class */ (function () {
|
|
|
171
159
|
//Simulate cookie consent behaviour in non-prod environments as banner does not set cookies in non .ft.com domains
|
|
172
160
|
_this._devHosts.map(function (devHost) {
|
|
173
161
|
return _this._hostname.includes(devHost) &&
|
|
174
|
-
typeId === CMP_CHOICE_ACCEPT_ALL
|
|
175
|
-
_this.setDevConsentCookies();
|
|
162
|
+
_this.setDevConsentCookies(typeId === CMP_CHOICE_ACCEPT_ALL ? true : false);
|
|
176
163
|
});
|
|
177
164
|
// banner updated - check new cookie value to fire consent_update event
|
|
178
165
|
setTimeout(_this.cookieConsentTest, 3000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consentMonitor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAA0E;AAC1E,gDAA0B;AAE1B,8CAAuE;AACvE,sDAG8B;AAE9B,IAAM,KAAK,GAAG,IAAA,eAAK,EAAC,uCAAuC,CAAC,CAAC;AAE7D,IAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAiBlE,IAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,IAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consentMonitor/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phantomstudios/ft-lib",
|
|
3
3
|
"description": "A collection of Javascript UI & tracking utils for FT sites",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.3",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"homepage": "https://github.com/phantomstudios/ft-lib#readme",
|
package/src/cmp/vendorConsent.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface VendorConsentResults {
|
|
|
3
3
|
linkedIn: boolean;
|
|
4
4
|
purpose1: boolean;
|
|
5
5
|
gdprApplies: boolean;
|
|
6
|
-
usnatApplies
|
|
6
|
+
usnatApplies: boolean;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export function initVendorConsentListener(
|
|
@@ -72,14 +72,8 @@ function evaluateUSNatConsent(
|
|
|
72
72
|
// Option A: Preferred Sourcepoint SDK method
|
|
73
73
|
if (typeof window._sp_?.usnat?.getUserConsents === "function") {
|
|
74
74
|
window._sp_.usnat.getUserConsents((consents) => {
|
|
75
|
-
// US Privacy is OPT-OUT by default
|
|
76
|
-
|
|
77
|
-
const isOptedOut =
|
|
78
|
-
consents?.optedOut === true ||
|
|
79
|
-
(Array.isArray(consents?.rejectedCategories) &&
|
|
80
|
-
consents.rejectedCategories.length > 0);
|
|
81
|
-
|
|
82
|
-
const isConsented = !isOptedOut;
|
|
75
|
+
// US Privacy is OPT-OUT by default, categories[1] = cookies
|
|
76
|
+
const isConsented = consents?.categories[1].consented;
|
|
83
77
|
|
|
84
78
|
onConsentUpdate({
|
|
85
79
|
brandmetrics: isConsented,
|
|
@@ -91,29 +85,4 @@ function evaluateUSNatConsent(
|
|
|
91
85
|
});
|
|
92
86
|
return;
|
|
93
87
|
}
|
|
94
|
-
|
|
95
|
-
// Option B: Fallback to GPP standard API
|
|
96
|
-
if (typeof window.__gpp === "function") {
|
|
97
|
-
window.__gpp("getGPPData", (gppData: any, success: boolean) => {
|
|
98
|
-
if (!success || !gppData) return;
|
|
99
|
-
|
|
100
|
-
const usnat = gppData.parsedSections?.usnat;
|
|
101
|
-
|
|
102
|
-
// GPP USNat spec: 1 = Opted Out / Yes
|
|
103
|
-
const isOptedOut =
|
|
104
|
-
usnat?.SharingOptOut === 1 ||
|
|
105
|
-
usnat?.TargetedAdvertisingOptOut === 1 ||
|
|
106
|
-
usnat?.SaleOptOut === 1;
|
|
107
|
-
|
|
108
|
-
const isConsented = !isOptedOut;
|
|
109
|
-
|
|
110
|
-
onConsentUpdate({
|
|
111
|
-
brandmetrics: isConsented,
|
|
112
|
-
linkedIn: isConsented,
|
|
113
|
-
purpose1: isConsented,
|
|
114
|
-
gdprApplies: false,
|
|
115
|
-
usnatApplies: true,
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
88
|
}
|
|
@@ -39,6 +39,8 @@ export class ConsentMonitor {
|
|
|
39
39
|
brandmetrics: false,
|
|
40
40
|
linkedIn: false,
|
|
41
41
|
purpose1: false,
|
|
42
|
+
gdprApplies: false,
|
|
43
|
+
usnatApplies: false,
|
|
42
44
|
} as VendorConsentResults;
|
|
43
45
|
|
|
44
46
|
public get consent(): boolean {
|
|
@@ -84,14 +86,6 @@ export class ConsentMonitor {
|
|
|
84
86
|
// load banner
|
|
85
87
|
loadFtCmpScript()
|
|
86
88
|
.then(() => {
|
|
87
|
-
// const propertyConfig = window.location.hostname.endsWith(".ft.com")
|
|
88
|
-
// ? properties["FT_DOTCOM_PROD"]
|
|
89
|
-
// : properties["FT_DOTCOM_TEST"];
|
|
90
|
-
|
|
91
|
-
// // initialize CMP
|
|
92
|
-
// initSourcepointCmp({ propertyConfig });
|
|
93
|
-
// // use cmp client lib to intercept footer 'Manage Cookies' links (opens privacy modal)
|
|
94
|
-
// // Note, function requires very specific link: text = 'Manage Cookies' and href = 'https://ft.com/preferences/manage-cookies'
|
|
95
89
|
interceptManageCookiesLinks();
|
|
96
90
|
this._isInitialized = true;
|
|
97
91
|
})
|
|
@@ -121,15 +115,6 @@ export class ConsentMonitor {
|
|
|
121
115
|
} else {
|
|
122
116
|
this.disablePermutive();
|
|
123
117
|
}
|
|
124
|
-
|
|
125
|
-
initVendorConsentListener((vendorConsents: VendorConsentResults) => {
|
|
126
|
-
const vendorConsentEvent = new CustomEvent("cmp_vendorConsent", {
|
|
127
|
-
detail: vendorConsents,
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
window.dispatchEvent(vendorConsentEvent);
|
|
131
|
-
debug("[CMP Consent lookup Event", vendorConsents);
|
|
132
|
-
});
|
|
133
118
|
};
|
|
134
119
|
|
|
135
120
|
const onChoice: MessageChoiceHandler = (_l, _c, typeId) => {
|
|
@@ -141,8 +126,9 @@ export class ConsentMonitor {
|
|
|
141
126
|
this._devHosts.map(
|
|
142
127
|
(devHost) =>
|
|
143
128
|
this._hostname.includes(devHost) &&
|
|
144
|
-
|
|
145
|
-
|
|
129
|
+
this.setDevConsentCookies(
|
|
130
|
+
typeId === CMP_CHOICE_ACCEPT_ALL ? true : false,
|
|
131
|
+
),
|
|
146
132
|
);
|
|
147
133
|
|
|
148
134
|
// banner updated - check new cookie value to fire consent_update event
|
|
@@ -188,12 +174,12 @@ export class ConsentMonitor {
|
|
|
188
174
|
}
|
|
189
175
|
};
|
|
190
176
|
|
|
191
|
-
setDevConsentCookies = () => {
|
|
177
|
+
setDevConsentCookies = (allow: boolean) => {
|
|
192
178
|
this._isDevEnvironment = true;
|
|
179
|
+
const value = allow ? "on" : "off";
|
|
193
180
|
debug("setting development FT consent cookies");
|
|
194
|
-
document.cookie =
|
|
195
|
-
|
|
196
|
-
document.cookie = "FTCookieConsentGDPR=true";
|
|
181
|
+
document.cookie = `FTConsent=behaviouraladsOnsite%3A${value}%2CcookiesOnsite%3A${value}%2CpermutiveadsOnsite%3A${value}`;
|
|
182
|
+
document.cookie = `FTCookieConsentGDPR=${allow}`;
|
|
197
183
|
};
|
|
198
184
|
}
|
|
199
185
|
|