@financial-times/cmp-client 6.18.1 → 6.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs
CHANGED
|
@@ -800,6 +800,19 @@ function getConsentCookieValue() {
|
|
|
800
800
|
})
|
|
801
801
|
);
|
|
802
802
|
}
|
|
803
|
+
function whatConsentHasChanged(parsedConsent, previousConsent) {
|
|
804
|
+
const categories = Object.keys(parsedConsent);
|
|
805
|
+
const response = [];
|
|
806
|
+
categories.forEach((category) => {
|
|
807
|
+
const adaptedCategoryName = `${category.toLowerCase()}Onsite`;
|
|
808
|
+
if (parsedConsent[category] !== previousConsent[adaptedCategoryName]) {
|
|
809
|
+
response.push(
|
|
810
|
+
`${category}:${parsedConsent[category]}:${previousConsent[adaptedCategoryName]}`
|
|
811
|
+
);
|
|
812
|
+
}
|
|
813
|
+
});
|
|
814
|
+
return response.join(",");
|
|
815
|
+
}
|
|
803
816
|
function hasConsentChanged(parsedConsent, previousConsent) {
|
|
804
817
|
const categories = Object.keys(parsedConsent);
|
|
805
818
|
return categories.some((category) => {
|
|
@@ -929,9 +942,10 @@ function consentReadyHandlerFn(props) {
|
|
|
929
942
|
const propertyId = (_b = (_a = window._sp_) == null ? void 0 : _a.config) == null ? void 0 : _b.propertyId;
|
|
930
943
|
const consentCookieExists = Object.keys(getConsentCookieValue()).length;
|
|
931
944
|
if (consentCookieExists && userId && propertyId) {
|
|
945
|
+
const whatChanged = whatConsentHasChanged(parsedConsent, getConsentCookieValue());
|
|
932
946
|
const metricsPayload = {
|
|
933
947
|
namespace: "cmp.consentchange",
|
|
934
|
-
userId
|
|
948
|
+
userId: `${userId}+${whatChanged}`,
|
|
935
949
|
propertyId,
|
|
936
950
|
legislation
|
|
937
951
|
};
|
|
@@ -1118,7 +1132,7 @@ function setupFTConsentCookieAuditStorage() {
|
|
|
1118
1132
|
localStorage.setItem("__lastFtc", ftConsentCookieValue);
|
|
1119
1133
|
});
|
|
1120
1134
|
}
|
|
1121
|
-
const version = "6.18.
|
|
1135
|
+
const version = "6.18.2";
|
|
1122
1136
|
async function initSourcepointCmp(options) {
|
|
1123
1137
|
const {
|
|
1124
1138
|
useFTSession = true,
|
package/dist/index.js
CHANGED
|
@@ -798,6 +798,19 @@ function getConsentCookieValue() {
|
|
|
798
798
|
})
|
|
799
799
|
);
|
|
800
800
|
}
|
|
801
|
+
function whatConsentHasChanged(parsedConsent, previousConsent) {
|
|
802
|
+
const categories = Object.keys(parsedConsent);
|
|
803
|
+
const response = [];
|
|
804
|
+
categories.forEach((category) => {
|
|
805
|
+
const adaptedCategoryName = `${category.toLowerCase()}Onsite`;
|
|
806
|
+
if (parsedConsent[category] !== previousConsent[adaptedCategoryName]) {
|
|
807
|
+
response.push(
|
|
808
|
+
`${category}:${parsedConsent[category]}:${previousConsent[adaptedCategoryName]}`
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
});
|
|
812
|
+
return response.join(",");
|
|
813
|
+
}
|
|
801
814
|
function hasConsentChanged(parsedConsent, previousConsent) {
|
|
802
815
|
const categories = Object.keys(parsedConsent);
|
|
803
816
|
return categories.some((category) => {
|
|
@@ -927,9 +940,10 @@ function consentReadyHandlerFn(props) {
|
|
|
927
940
|
const propertyId = (_b = (_a = window._sp_) == null ? void 0 : _a.config) == null ? void 0 : _b.propertyId;
|
|
928
941
|
const consentCookieExists = Object.keys(getConsentCookieValue()).length;
|
|
929
942
|
if (consentCookieExists && userId && propertyId) {
|
|
943
|
+
const whatChanged = whatConsentHasChanged(parsedConsent, getConsentCookieValue());
|
|
930
944
|
const metricsPayload = {
|
|
931
945
|
namespace: "cmp.consentchange",
|
|
932
|
-
userId
|
|
946
|
+
userId: `${userId}+${whatChanged}`,
|
|
933
947
|
propertyId,
|
|
934
948
|
legislation
|
|
935
949
|
};
|
|
@@ -1116,7 +1130,7 @@ function setupFTConsentCookieAuditStorage() {
|
|
|
1116
1130
|
localStorage.setItem("__lastFtc", ftConsentCookieValue);
|
|
1117
1131
|
});
|
|
1118
1132
|
}
|
|
1119
|
-
const version = "6.18.
|
|
1133
|
+
const version = "6.18.2";
|
|
1120
1134
|
async function initSourcepointCmp(options) {
|
|
1121
1135
|
const {
|
|
1122
1136
|
useFTSession = true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";const B=(t,{credentials:e="omit"}={})=>fetch(`https://session-next.ft.com${t}`,{credentials:e,useCorsProxy:!0}).then(n=>n.ok?n.json():n.text().then(o=>{throw new Error(`Next session responded with "${o}" (${n.status})`)})).catch(n=>{document.body.dispatchEvent(new CustomEvent("oErrors.log",{bubbles:!0,detail:{error:n,info:{component:"next-session-client"}}}))});let I={};const h=(t,e)=>{if(typeof t=="object"){I=t;return}if(typeof t=="string"&&typeof e=="string"){I[t]=e;return}if(typeof t=="string"&&typeof e>"u")return I[t]||null;if(typeof t>"u"&&typeof e>"u")return I;throw new Error("Invalid arguments")};h.clear=()=>{I={}};const b={},G=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},q=()=>{const t=h("uuid");if(t)return Promise.resolve({uuid:t});const e=G();return e?(b.uuid||(b.uuid=B(`/sessions/s/${e}`).then(({uuid:n}={})=>(delete b.uuid,n&&h("uuid",n),{uuid:n}))),b.uuid):Promise.resolve({uuid:void 0})},S="sourcepoint-cmp",W="FTPINK",$="FTConsent",K="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",J=".ft.com",z="https://consent.ft.com",k={permutiveAds:{purposes:[2,4,8,9],iabVendors:[361],customVendors:[],specialFeatures:[]},demographicAds:{purposes:[7,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},behaviouralAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},programmaticAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},cookies:{purposes:[1,2,3,4,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},w=Object.keys(k),u={joinHref:!0,gdpr:{}},P={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyHref:"https://local.ft.com",_clientOptions:{privacyManagerId:827767,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},y={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:31642,_clientOptions:{privacyManagerId:827767,usnatPrivacyManagerId:1143274,ccpaPrivacyManagerId:944882,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},X={...u,accountId:1906,baseEndpoint:"https://consent-manager.pwmnet.com",propertyId:33414,_clientOptions:{rootDomain:"pwmnet.com",includeUsNat:!0}},Y={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com",includeUsNat:!0}},Q={...u,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com",includeUsNat:!0}},Z={...u,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com",includeUsNat:!0}},tt={...u,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com",includeUsNat:!0}},et={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com",includeUsNat:!0}},nt={...u,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk",includeUsNat:!0}},ot={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33947,_clientOptions:{rootDomain:"ignitesasia.com"}},st={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33946,_clientOptions:{rootDomain:"igniteseurope.com"}},at={...u,accountId:1906,baseEndpoint:"https://consent-manager.mandatewire.com",propertyId:35490,_clientOptions:{rootDomain:"mandatewire.com",includeUsNat:!0}},ct={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com",includeUsNat:!0}},it={...u,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com",includeUsNat:!0}},rt={...u,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk",includeUsNat:!0}},pt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com",includeUsNat:!0}},ut={...u,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},dt={...u,accountId:1906,baseEndpoint:"https://consent-manager.invisso.org",propertyId:38851,_clientOptions:{rootDomain:"invisso.org",includeUsNat:!0}},lt={...u,accountId:1906,baseEndpoint:"https://consent-manager.abseast.com",propertyId:38888,_clientOptions:{rootDomain:"abseast.com",includeUsNat:!0}},mt={...u,accountId:1906,baseEndpoint:"https://consent-manager.absasia.org",propertyId:38887,_clientOptions:{rootDomain:"absasia.org",includeUsNat:!0}},ft={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalcoveredbonds.com",propertyId:38886,_clientOptions:{rootDomain:"globalcoveredbonds.com",includeUsNat:!0}},_t={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalborrowers.com",propertyId:38885,_clientOptions:{rootDomain:"globalborrowers.com",includeUsNat:!0}},gt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalabs.org",propertyId:38884,_clientOptions:{rootDomain:"globalabs.org",includeUsNat:!0}},It={...u,accountId:1906,baseEndpoint:"https://consent-manager.creditrisk-transfer.com",propertyId:38883,_clientOptions:{rootDomain:"creditrisk-transfer.com",includeUsNat:!0}},yt={...u,accountId:1906,baseEndpoint:"https://consent-manager.significantrisktransfer.com",propertyId:38882,_clientOptions:{rootDomain:"significantrisktransfer.com",includeUsNat:!0}},bt={...u,accountId:1906,baseEndpoint:"https://consent-manager.theceeforum.com",propertyId:38881,_clientOptions:{rootDomain:"theceeforum.com",includeUsNat:!0}},wt={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdimarkets.com",propertyId:40508,_clientOptions:{rootDomain:"fdimarkets.com",cookieDomain:".fdimarkets.com",consentProxyHost:"https://consent.fdimarkets.com",includeUsNat:!0}},vt={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdibenchmark.com",propertyId:40509,_clientOptions:{rootDomain:"fdibenchmark.com",cookieDomain:".fdibenchmark.com",consentProxyHost:"https://consent.fdibenchmark.com",includeUsNat:!0}},ht=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:y,FT_DOTCOM_TEST:P,INVISSO:dt,INV_ABSASIA:mt,INV_ABSEAST:lt,INV_CEE_FORUM:bt,INV_CREDITRISK_TRANSFER:It,INV_GLOBAL_ABS:gt,INV_GLOBAL_BORROWERS:_t,INV_GLOBAL_COVERED_BONDS:ft,MM_IGNITES_ASIA:ot,MM_IGNITES_EUROPE:st,SIGRISK_TRANSFER:yt,SP_BANKING_RR:Z,SP_CELEBRATION_OF_INVESTMENT:rt,SP_FDI_BENCHMARK:vt,SP_FDI_INTELLIGENCE:Y,SP_FDI_MARKETS:wt,SP_FTA_SERVICE_AWARDS:it,SP_FT_ADVISER:et,SP_FT_LOCATIONS:ct,SP_GLOBAL_PRIVATE_BANKING_AWARDS:pt,SP_INVESTORS_CHRONICLE:nt,SP_MANDATE_WIRE:at,SP_PWMNET:X,SP_SUSTAINABLE_VIEWS:tt,SP_THE_BANKER:Q,TNW:ut},Symbol.toStringTag,{value:"Module"}));function T(t,e){const n=document.createElement("script");return n.dataset.cmpScript=t,n.innerHTML=e,n}function St(t){const e=document.createElement("script");return e.src=t,e}const Ct={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"};function Ot(){const t=document.createDocumentFragment();return t.appendChild(St(Ct.cmpFrames)),t}function Et(t,e){const{userId:n,includeUsNat:o}=e;return n&&(t.authId=n),o&&(t.usnat=t.usnat||{}),t}function Nt(t,e){const{_clientOptions:n,...o}=t,s=Et(o,e);window._sp_={config:s},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(Ot())}function kt(t){const e={tcfStub:'"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();',gppStub:'window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));'},n=document.createDocumentFragment();n.appendChild(T("tcf",e.tcfStub)),t.includeUsNat&&n.appendChild(T("gpp",e.gppStub)),document.head.appendChild(n)}function Pt(t,e,n,{formOfWordsId:o,cookieDomain:s}){const c=Object.keys(t).reduce((r,i)=>(r[i]={onsite:{status:t[i],lbi:!1,source:S,fow:o}},i==="cookies"&&(r.cookies.userAccept={status:t[i],lbi:!1,source:S,fow:o}),r),{});return e?{setConsentCookie:!0,formOfWordsId:o,consentSource:S,cookieDomain:s,skipDuplicateUpdates:!n,data:c}:{data:c,cookieDomain:s}}const g={CALIFORNIA:"usca",US_NATIONAL:"usnat"},A={[g.CALIFORNIA]:{excludedCategories:{}},[g.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function Tt(t){const{applicableSections:e,supportedAPIs:n}=t,o=e[0];if(o===-1||typeof o>"u")return;const s=n.find(c=>c.startsWith(`${o}:`));return s==null?void 0:s.split(":")[1]}function At(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:o}=t,{excludedCategories:s}=A[g.CALIFORNIA],a=e!==1&&n!==1&&!o,c={};for(const r of w){if(r in s){c[r]=!0;continue}c[r]=a}return c}function Dt(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:o}=t,{excludedCategories:s}=A[g.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),c=e!==1&&n!==1&&o!==1,r={};for(const i of w){if(i in s){r[i]=!0;continue}r[i]=c}if(a.usnat)for(const i of w)r[i]=!1;return r}const Mt={[g.CALIFORNIA]:At,[g.US_NATIONAL]:Dt};async function D(){return new Promise((t,e)=>{try{window.__gpp?window.__gpp("ping",t):e(new Error("GPP API is not available on page"))}catch(n){e(n)}})}async function Ut(){const t=await D(),{parsedSections:e}=t,n=Tt(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const o=e[n],s=Mt[n];if(!s||typeof s!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return s(o)}function Lt(t,{purpose:e,vendor:n,specialFeatureOptins:o={}}){const s=k[t],a=(e==null?void 0:e.consents)||{},c=(e==null?void 0:e.legitimateInterests)||{},r=(n==null?void 0:n.consents)||{},i=(n==null?void 0:n.legitimateInterests)||{},p=s.purposes.every(l=>a[l]||c[l]),_=s.iabVendors.every(l=>r[l]||i[l]),d=s.specialFeatures.every(l=>o[l]===!0),f=s.purposes.every(l=>a[l]===!0);return t==="cookies"?f&&_&&d:p&&_&&d}async function M(){return new Promise((t,e)=>{try{window.__tcfapi?window.__tcfapi("addEventListener",2,t):e(new Error("TCF API is not available on page"))}catch(n){e(n)}})}async function Rt(){const t=await M(),e={};for(const n of w)e[n]=Lt(n,t);return e}async function Ft(t){const n={gdpr:Rt,usnat:Ut}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function U(){const e=Object.fromEntries(document.cookie.split("; ").map(o=>o.split("=")))[$];if(!e)return{};const n=decodeURIComponent(e);return Object.fromEntries(n.split(",").map(o=>{const[s,a]=o.split(":");return[s,a==="on"]}))}function Vt(t,e){return Object.keys(t).some(o=>{const s=`${o.toLowerCase()}Onsite`;return t[o]!==e[s]})}function xt({userId:t,useConsentStore:e}){return!!t&&e===!0}function jt(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${W}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const L={gdpr:!1,usnat:!1},C=Object.assign({},L);function R(t){C[t]=!0}function Ht(t){return C[t]}function Bt(){Object.assign(C,L)}async function Gt(t){return Ht(t)?t==="gdpr"?(await M()).eventStatus==="useractioncomplete":t==="usnat"?(await D()).cmpDisplayStatus==="hidden":!1:!1}function qt(){window.__tcfapi&&window.__tcfapi("addEventListener",2,t=>{t.eventStatus==="cmpuishown"&&R("gdpr")}),window.__gpp&&window.__gpp("addEventListener",({pingData:t})=>{t.cmpDisplayStatus==="visible"&&R("usnat")})}function Wt(t={}){const e=new CustomEvent("ft.clientMetric",{bubbles:!0,cancelable:!0,detail:t});document.body.dispatchEvent(e)}async function $t(t,e){try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),credentials:"include"});n.ok||console.error("Unable to save consent preferences",n.status)}catch(n){console.error("An error occurred while saving consent",n)}finally{document.dispatchEvent(new CustomEvent("onCmpConsentSaveCompleted",{bubbles:!0}))}}const Kt=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function Jt(t){return async function(n,o,s,a){var x,j;if(Kt(),a.applies&&!window._FTConsentReady_&&(window._FTConsentReady_=n),t.disableFTCookies||!t.includeUsNat&&n==="usnat"||!a.applies||!s)return;let c;try{c=await Ft(n)}catch(H){console.error(H)}if(!c||!Vt(c,U()))return;window.dataLayer=(window==null?void 0:window.dataLayer)||[],window.dataLayer.push({event:"consentUpdate",consentUpdateBehaviouralAds:c.behaviouralAds,consentUpdateCookies:c.cookies});const i=t==null?void 0:t.userId,p=(j=(x=window._sp_)==null?void 0:x.config)==null?void 0:j.propertyId;Object.keys(U()).length&&i&&p&&Wt({namespace:"cmp.consentchange",userId:i,propertyId:p,legislation:n});const d=await Gt(n),f=xt(t),l=jt(f,t),ye=Pt(c,f,d,t);await $t(l,ye),d&&Bt(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const O="cookie-message",zt="manage-cookies";let E=Object.freeze({activeComponent:O,messageId:0,privacyManagerId:0});function Xt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const Yt=()=>({...E}),N=t=>{if(!Xt(t)){console.error("Invalid state changes");return}E={...E,...t}},Qt=["adsDisableInternalCMP","pwm.cmp"];function Zt(t,e){const n=te(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var o,s;for(const[a,c]of Object.entries(ne))(s=(o=window._sp_).addEventListener)==null||s.call(o,a,c({...t,flags:n}))}),oe({...t,flags:n},e),se()}function te(t){const e={};return typeof t=="object"&&Qt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function ee(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function v({trackingProps:t,action:e,triggerAction:n}){let o;const s=Yt(),{product:a,app:c,flags:r}=t;s.activeComponent===O?o=s.messageId:o=s.privacyManagerId;const i={detail:{component:{id:o,name:s.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...c&&{app:c},custom:[{cookie_toggle_flag:r}],url:window.document.location.href||null}};ee(i)}const ne={onMessageChoiceSelect:t=>(e,n,o)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[o];a&&v({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{v({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&N({messageId:n})},onError:t=>(e,n)=>{v({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{N({activeComponent:O})}};function oe(t,e){window.addEventListener("message",function(n){if(n.origin!==e)return;const o={1:"save_and_close",11:"accept_all",13:"reject_all"},{data:{fromPM:s,actionType:a,messageId:c="0"}={}}=n;s&&(+c&&N({activeComponent:zt,privacyManagerId:+c}),!(!a||!o[a])&&v({trackingProps:t,action:"click",triggerAction:o[a]}))},!1)}function se(){document.addEventListener("onCmpConsentSaveCompleted",()=>{const t=document.cookie.match(/FTConsent=([^;]+)/);if(!t)return;const e=t[1];localStorage.setItem("__lastFtc",e)})}const ae="6.18.1";async function ce(t){const{useFTSession:e=!0,consentProxyHost:n=z,cookieDomain:o=J,formOfWordsId:s=K,useConsentStore:a=!0,trackingContext:c={},disableFTCookies:r=!1,includeUsNat:i=!1}=t||{};let{propertyConfig:p=y,userId:_}=t||{};if(typeof window>"u"){console.error("The CMP client can only be initialised in a browser context");return}if(window.FT_CMP_CLIENT_VERSION=ae,kt({includeUsNat:i}),!_&&e)try{const d=await q();_=d==null?void 0:d.uuid}catch(d){console.error(d)}p=ie(p),Nt(p,{userId:_,includeUsNat:i}),qt(),window._sp_queue.push(()=>{var d,f;(f=(d=window._sp_)==null?void 0:d.addEventListener)==null||f.call(d,"onConsentReady",Jt({userId:_,consentProxyHost:n,cookieDomain:o,formOfWordsId:s,useConsentStore:a,disableFTCookies:r,includeUsNat:i}))}),Zt(c,p.baseEndpoint)}function ie(t){if(!(t!=null&&t.accountId))throw new Error("Please pass a valid property config");return t.events&&(console.warn("[cmp-client] Passing an events map in the config is not supported and will be ignored. Please use window._sp_.addEventListener() to listen for events"),delete t.events),t}function F(t,e,n,o,s,a){const{text:c,onClick:r}=o[e],i=document.querySelectorAll(`a[href*="${a}"]`);for(const p of i)(n||t)&&(s.has(p)&&p.removeEventListener("click",s.get(p)),p.innerText=c,p.addEventListener("click",r),s.set(p,r))}function re({_clientOptions:t}=y){const{privacyManagerId:e,ccpaPrivacyManagerId:n,usnatPrivacyManagerId:o,manageCookiesLinkOverride:s}=t??y._clientOptions,a={usnat:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.usnat)==null||p.loadPrivacyManagerModal(o)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.ccpa)==null||p.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.gdpr)==null||p.loadPrivacyManagerModal(e)}}},c=new Map,r=function(i,p,_,d){F(!1,i,d.applies,a,c,s),d.applies&&window._sp_queue.push(()=>{var f,l;(l=(f=window._sp_).removeEventListener)==null||l.call(f,"onConsentReady",r)})};F(!0,"gdpr",!1,a,c,s),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var i,p;(p=(i=window._sp_).addEventListener)==null||p.call(i,"onConsentReady",r)})}function pe(t=window,e){var c,r;const n="_cmp_open_pm_";if(!t._sp_)return;const{privacyManagerId:o,usnatPrivacyManagerId:s}=e??y._clientOptions,a=new URLSearchParams(t.location.search);if(a.has(n))switch(a.get(n)||""){case"usnat":(c=t._sp_.usnat)==null||c.loadPrivacyManagerModal(s);break;case"gdpr":(r=t._sp_.gdpr)==null||r.loadPrivacyManagerModal(o);break}}function ue(t){window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var e,n;(n=(e=window._sp_)==null?void 0:e.addEventListener)==null||n.call(e,"onSPReady",()=>pe(window,t))})}function de(t){return t._clientOptions??{}}const le={"ft.com":de};function me(t){return new Promise((e,n)=>{const{rootDomain:o}=t._clientOptions||{};if(!o)return e({});const s=le[o];if(!s||typeof s!="function")return e({...t._clientOptions});const a=()=>{try{e(s(t))}catch(c){n(c)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}const fe={...{joinHref:!0,gdpr:{}},accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:41863,propertyHref:"https://globalbondsummit.live.ft.com",_clientOptions:{subDomain:"globalbondsummit.live.ft.com",includeUsNat:!0}},_e=Object.freeze(Object.defineProperty({__proto__:null,INV_GLOBAL_BONDS_SUMMIT:fe},Symbol.toStringTag,{value:"Module"}));function V(t,e){if(!e||Number.isFinite(parseFloat(e)))return!1;const n=t===e,o=t.endsWith(`.${e}`);return n||o}function ge(t){if(!t)throw new Error("Invalid hostname provided");const e=Object.values(ht),o=Object.values(_e).find(a=>{var r;const c=(r=a==null?void 0:a._clientOptions)==null?void 0:r.subDomain;return c&&V(t,c)});if(o)return o;let s=e.find(a=>{var r;if(a.propertyHref)return!1;const c=(r=a._clientOptions)==null?void 0:r.rootDomain;return c&&V(t,c)});return s??(s=P),s}const Ie=new URL(window.location.href).hostname,m=ge(Ie);(async()=>{var t,e;try{const n=await me(m);ce({propertyConfig:m,...n}),(t=m==null?void 0:m._clientOptions)!=null&&t.privacyManagerId&&((e=m==null?void 0:m._clientOptions)!=null&&e.manageCookiesLinkOverride)&&(re(m),ue(m._clientOptions))}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
|
|
1
|
+
(function(){"use strict";const $=(t,{credentials:e="omit"}={})=>fetch(`https://session-next.ft.com${t}`,{credentials:e,useCorsProxy:!0}).then(n=>n.ok?n.json():n.text().then(s=>{throw new Error(`Next session responded with "${s}" (${n.status})`)})).catch(n=>{document.body.dispatchEvent(new CustomEvent("oErrors.log",{bubbles:!0,detail:{error:n,info:{component:"next-session-client"}}}))});let I={};const v=(t,e)=>{if(typeof t=="object"){I=t;return}if(typeof t=="string"&&typeof e=="string"){I[t]=e;return}if(typeof t=="string"&&typeof e>"u")return I[t]||null;if(typeof t>"u"&&typeof e>"u")return I;throw new Error("Invalid arguments")};v.clear=()=>{I={}};const y={},B=()=>{const[,t]=/FTSession_s=([^;]+)/.exec(document.cookie)||[];return t},G=()=>{const t=v("uuid");if(t)return Promise.resolve({uuid:t});const e=B();return e?(y.uuid||(y.uuid=$(`/sessions/s/${e}`).then(({uuid:n}={})=>(delete y.uuid,n&&v("uuid",n),{uuid:n}))),y.uuid):Promise.resolve({uuid:void 0})},S="sourcepoint-cmp",q="FTPINK",W="FTConsent",K="sourcepointCmp/VngD.XycZut.595cp9fWdp5XYP9vlFvk",J=".ft.com",z="https://consent.ft.com",T={permutiveAds:{purposes:[2,4,8,9],iabVendors:[361],customVendors:[],specialFeatures:[]},demographicAds:{purposes:[7,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},behaviouralAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},programmaticAds:{purposes:[2,4,8,9],iabVendors:[],customVendors:[],specialFeatures:[]},personalisedMarketing:{purposes:[2,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]},cookies:{purposes:[1,2,3,4,7,8,9,10],iabVendors:[],customVendors:[],specialFeatures:[]}},w=Object.keys(T),u={joinHref:!0,gdpr:{}},A={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyHref:"https://local.ft.com",_clientOptions:{privacyManagerId:827767,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},b={...u,accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:31642,_clientOptions:{privacyManagerId:827767,usnatPrivacyManagerId:1143274,ccpaPrivacyManagerId:944882,manageCookiesLinkOverride:"ft.com/preferences/manage-cookies",rootDomain:"ft.com",includeUsNat:!0}},X={...u,accountId:1906,baseEndpoint:"https://consent-manager.pwmnet.com",propertyId:33414,_clientOptions:{rootDomain:"pwmnet.com",includeUsNat:!0}},Y={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdiintelligence.com",propertyId:34061,_clientOptions:{rootDomain:"fdiintelligence.com",includeUsNat:!0}},Q={...u,accountId:1906,baseEndpoint:"https://consent-manager.thebanker.com",propertyId:34060,_clientOptions:{rootDomain:"thebanker.com",includeUsNat:!0}},Z={...u,accountId:1906,baseEndpoint:"https://consent-manager.bankingriskandregulation.com",propertyId:34059,_clientOptions:{rootDomain:"bankingriskandregulation.com",includeUsNat:!0}},tt={...u,accountId:1906,baseEndpoint:"https://consent-manager.sustainableviews.com",propertyId:34058,_clientOptions:{rootDomain:"sustainableviews.com",includeUsNat:!0}},et={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftadviser.com",propertyId:33416,_clientOptions:{rootDomain:"ftadviser.com",includeUsNat:!0}},nt={...u,accountId:1906,baseEndpoint:"https://consent-manager.investorschronicle.co.uk",propertyId:33415,_clientOptions:{rootDomain:"investorschronicle.co.uk",includeUsNat:!0}},ot={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33947,_clientOptions:{rootDomain:"ignitesasia.com"}},st={...u,accountId:1906,baseEndpoint:"https://cdn.privacy-mgmt.com",propertyId:33946,_clientOptions:{rootDomain:"igniteseurope.com"}},at={...u,accountId:1906,baseEndpoint:"https://consent-manager.mandatewire.com",propertyId:35490,_clientOptions:{rootDomain:"mandatewire.com",includeUsNat:!0}},ct={...u,accountId:1906,baseEndpoint:"https://consent-manager.ftlocations.com",propertyId:37407,_clientOptions:{rootDomain:"ftlocations.com",cookieDomain:".ftlocations.com",consentProxyHost:"https://consent.ftlocations.com",includeUsNat:!0}},it={...u,accountId:1906,baseEndpoint:"https://consent-manager.financialadviserserviceawards.com",propertyId:38297,_clientOptions:{rootDomain:"financialadviserserviceawards.com",includeUsNat:!0}},rt={...u,accountId:1906,baseEndpoint:"https://consent-manager.celebrationofinvestment.co.uk",propertyId:38296,_clientOptions:{rootDomain:"celebrationofinvestment.co.uk",includeUsNat:!0}},pt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalprivatebankingawards.com",propertyId:38295,_clientOptions:{rootDomain:"globalprivatebankingawards.com",includeUsNat:!0}},ut={...u,accountId:1906,baseEndpoint:"https://consent-manager.thenextweb.com",propertyId:37672,_clientOptions:{rootDomain:"thenextweb.com"}},dt={...u,accountId:1906,baseEndpoint:"https://consent-manager.invisso.org",propertyId:38851,_clientOptions:{rootDomain:"invisso.org",includeUsNat:!0}},lt={...u,accountId:1906,baseEndpoint:"https://consent-manager.abseast.com",propertyId:38888,_clientOptions:{rootDomain:"abseast.com",includeUsNat:!0}},mt={...u,accountId:1906,baseEndpoint:"https://consent-manager.absasia.org",propertyId:38887,_clientOptions:{rootDomain:"absasia.org",includeUsNat:!0}},ft={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalcoveredbonds.com",propertyId:38886,_clientOptions:{rootDomain:"globalcoveredbonds.com",includeUsNat:!0}},_t={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalborrowers.com",propertyId:38885,_clientOptions:{rootDomain:"globalborrowers.com",includeUsNat:!0}},gt={...u,accountId:1906,baseEndpoint:"https://consent-manager.globalabs.org",propertyId:38884,_clientOptions:{rootDomain:"globalabs.org",includeUsNat:!0}},It={...u,accountId:1906,baseEndpoint:"https://consent-manager.creditrisk-transfer.com",propertyId:38883,_clientOptions:{rootDomain:"creditrisk-transfer.com",includeUsNat:!0}},bt={...u,accountId:1906,baseEndpoint:"https://consent-manager.significantrisktransfer.com",propertyId:38882,_clientOptions:{rootDomain:"significantrisktransfer.com",includeUsNat:!0}},yt={...u,accountId:1906,baseEndpoint:"https://consent-manager.theceeforum.com",propertyId:38881,_clientOptions:{rootDomain:"theceeforum.com",includeUsNat:!0}},wt={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdimarkets.com",propertyId:40508,_clientOptions:{rootDomain:"fdimarkets.com",cookieDomain:".fdimarkets.com",consentProxyHost:"https://consent.fdimarkets.com",includeUsNat:!0}},ht={...u,accountId:1906,baseEndpoint:"https://consent-manager.fdibenchmark.com",propertyId:40509,_clientOptions:{rootDomain:"fdibenchmark.com",cookieDomain:".fdibenchmark.com",consentProxyHost:"https://consent.fdibenchmark.com",includeUsNat:!0}},vt=Object.freeze(Object.defineProperty({__proto__:null,FT_DOTCOM_PROD:b,FT_DOTCOM_TEST:A,INVISSO:dt,INV_ABSASIA:mt,INV_ABSEAST:lt,INV_CEE_FORUM:yt,INV_CREDITRISK_TRANSFER:It,INV_GLOBAL_ABS:gt,INV_GLOBAL_BORROWERS:_t,INV_GLOBAL_COVERED_BONDS:ft,MM_IGNITES_ASIA:ot,MM_IGNITES_EUROPE:st,SIGRISK_TRANSFER:bt,SP_BANKING_RR:Z,SP_CELEBRATION_OF_INVESTMENT:rt,SP_FDI_BENCHMARK:ht,SP_FDI_INTELLIGENCE:Y,SP_FDI_MARKETS:wt,SP_FTA_SERVICE_AWARDS:it,SP_FT_ADVISER:et,SP_FT_LOCATIONS:ct,SP_GLOBAL_PRIVATE_BANKING_AWARDS:pt,SP_INVESTORS_CHRONICLE:nt,SP_MANDATE_WIRE:at,SP_PWMNET:X,SP_SUSTAINABLE_VIEWS:tt,SP_THE_BANKER:Q,TNW:ut},Symbol.toStringTag,{value:"Module"}));function D(t,e){const n=document.createElement("script");return n.dataset.cmpScript=t,n.innerHTML=e,n}function St(t){const e=document.createElement("script");return e.src=t,e}const Ct={cmpFrames:"https://consent-manager.ft.com/unified/wrapperMessagingWithoutDetection.js"};function Ot(){const t=document.createDocumentFragment();return t.appendChild(St(Ct.cmpFrames)),t}function Et(t,e){const{userId:n,includeUsNat:s}=e;return n&&(t.authId=n),s&&(t.usnat=t.usnat||{}),t}function Nt(t,e){const{_clientOptions:n,...s}=t,o=Et(s,e);window._sp_={config:o},window._sp_queue??(window._sp_queue=[]),document.head.appendChild(Ot())}function kt(t){const e={tcfStub:'"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();',gppStub:'window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));'},n=document.createDocumentFragment();n.appendChild(D("tcf",e.tcfStub)),t.includeUsNat&&n.appendChild(D("gpp",e.gppStub)),document.head.appendChild(n)}function Pt(t,e,n,{formOfWordsId:s,cookieDomain:o}){const c=Object.keys(t).reduce((r,i)=>(r[i]={onsite:{status:t[i],lbi:!1,source:S,fow:s}},i==="cookies"&&(r.cookies.userAccept={status:t[i],lbi:!1,source:S,fow:s}),r),{});return e?{setConsentCookie:!0,formOfWordsId:s,consentSource:S,cookieDomain:o,skipDuplicateUpdates:!n,data:c}:{data:c,cookieDomain:o}}const g={CALIFORNIA:"usca",US_NATIONAL:"usnat"},M={[g.CALIFORNIA]:{excludedCategories:{}},[g.US_NATIONAL]:{excludedCategories:{personalisedMarketing:!0}}};function Tt(t){const{applicableSections:e,supportedAPIs:n}=t,s=e[0];if(s===-1||typeof s>"u")return;const o=n.find(c=>c.startsWith(`${s}:`));return o==null?void 0:o.split(":")[1]}function At(t){const{SaleOptOut:e,SharingOptOut:n,Gpc:s}=t,{excludedCategories:o}=M[g.CALIFORNIA],a=e!==1&&n!==1&&!s,c={};for(const r of w){if(r in o){c[r]=!0;continue}c[r]=a}return c}function Dt(t){const{SaleOptOut:e,SharingOptOut:n,TargetedAdvertisingOptOut:s}=t,{excludedCategories:o}=M[g.US_NATIONAL],a=JSON.parse(localStorage.getItem("ft_sp_marketing_optout")||"{}"),c=e!==1&&n!==1&&s!==1,r={};for(const i of w){if(i in o){r[i]=!0;continue}r[i]=c}if(a.usnat)for(const i of w)r[i]=!1;return r}const Mt={[g.CALIFORNIA]:At,[g.US_NATIONAL]:Dt};async function L(){return new Promise((t,e)=>{try{window.__gpp?window.__gpp("ping",t):e(new Error("GPP API is not available on page"))}catch(n){e(n)}})}async function Lt(){const t=await L(),{parsedSections:e}=t,n=Tt(t);if(!n||!e[n])throw new Error("GPP parser was called without an applicable section");const s=e[n],o=Mt[n];if(!o||typeof o!="function")throw new Error(`No parser found for applicable GPP section: ${n}`);return o(s)}function Ut(t,{purpose:e,vendor:n,specialFeatureOptins:s={}}){const o=T[t],a=(e==null?void 0:e.consents)||{},c=(e==null?void 0:e.legitimateInterests)||{},r=(n==null?void 0:n.consents)||{},i=(n==null?void 0:n.legitimateInterests)||{},p=o.purposes.every(l=>a[l]||c[l]),_=o.iabVendors.every(l=>r[l]||i[l]),d=o.specialFeatures.every(l=>s[l]===!0),f=o.purposes.every(l=>a[l]===!0);return t==="cookies"?f&&_&&d:p&&_&&d}async function U(){return new Promise((t,e)=>{try{window.__tcfapi?window.__tcfapi("addEventListener",2,t):e(new Error("TCF API is not available on page"))}catch(n){e(n)}})}async function Rt(){const t=await U(),e={};for(const n of w)e[n]=Ut(n,t);return e}async function Ft(t){const n={gdpr:Rt,usnat:Lt}[t];if(!n)throw new Error("Unable to update user consent. Unsupported consent legislation.");return n()}function C(){const e=Object.fromEntries(document.cookie.split("; ").map(s=>s.split("=")))[W];if(!e)return{};const n=decodeURIComponent(e);return Object.fromEntries(n.split(",").map(s=>{const[o,a]=s.split(":");return[o,a==="on"]}))}function Vt(t,e){const n=Object.keys(t),s=[];return n.forEach(o=>{const a=`${o.toLowerCase()}Onsite`;t[o]!==e[a]&&s.push(`${o}:${t[o]}:${e[a]}`)}),s.join(",")}function jt(t,e){return Object.keys(t).some(s=>{const o=`${s.toLowerCase()}Onsite`;return t[s]!==e[o]})}function xt({userId:t,useConsentStore:e}){return!!t&&e===!0}function Ht(t,e){return t?`${e.consentProxyHost}/__consent/consent-record/${q}/${e.userId}?updateFtConsentCookie=true`:`${e.consentProxyHost}/__consent/consent-record-cookie?cookieDomain=${e.cookieDomain}`}const R={gdpr:!1,usnat:!1},O=Object.assign({},R);function F(t){O[t]=!0}function $t(t){return O[t]}function Bt(){Object.assign(O,R)}async function Gt(t){return $t(t)?t==="gdpr"?(await U()).eventStatus==="useractioncomplete":t==="usnat"?(await L()).cmpDisplayStatus==="hidden":!1:!1}function qt(){window.__tcfapi&&window.__tcfapi("addEventListener",2,t=>{t.eventStatus==="cmpuishown"&&F("gdpr")}),window.__gpp&&window.__gpp("addEventListener",({pingData:t})=>{t.cmpDisplayStatus==="visible"&&F("usnat")})}function Wt(t={}){const e=new CustomEvent("ft.clientMetric",{bubbles:!0,cancelable:!0,detail:t});document.body.dispatchEvent(e)}async function Kt(t,e){try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),credentials:"include"});n.ok||console.error("Unable to save consent preferences",n.status)}catch(n){console.error("An error occurred while saving consent",n)}finally{document.dispatchEvent(new CustomEvent("onCmpConsentSaveCompleted",{bubbles:!0}))}}const Jt=()=>{document.dispatchEvent(new CustomEvent("onCmpConsentReady",{bubbles:!0}))};function zt(t){return async function(n,s,o,a){var x,H;if(Jt(),a.applies&&!window._FTConsentReady_&&(window._FTConsentReady_=n),t.disableFTCookies||!t.includeUsNat&&n==="usnat"||!a.applies||!o)return;let c;try{c=await Ft(n)}catch(P){console.error(P)}if(!c||!jt(c,C()))return;window.dataLayer=(window==null?void 0:window.dataLayer)||[],window.dataLayer.push({event:"consentUpdate",consentUpdateBehaviouralAds:c.behaviouralAds,consentUpdateCookies:c.cookies});const i=t==null?void 0:t.userId,p=(H=(x=window._sp_)==null?void 0:x.config)==null?void 0:H.propertyId;if(Object.keys(C()).length&&i&&p){const P=Vt(c,C()),we={namespace:"cmp.consentchange",userId:`${i}+${P}`,propertyId:p,legislation:n};Wt(we)}const d=await Gt(n),f=xt(t),l=Ht(f,t),ye=Pt(c,f,d,t);await Kt(l,ye),d&&Bt(),document.dispatchEvent(new CustomEvent("oCookieMessage.act",{bubbles:!0}))}}const E="cookie-message",Xt="manage-cookies";let N=Object.freeze({activeComponent:E,messageId:0,privacyManagerId:0});function Yt(t){return typeof t=="object"&&t!==null&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}const Qt=()=>({...N}),k=t=>{if(!Yt(t)){console.error("Invalid state changes");return}N={...N,...t}},Zt=["adsDisableInternalCMP","pwm.cmp"];function te(t,e){const n=ee(t.flags);window._sp_queue=window._sp_queue??[],window._sp_queue.push(()=>{var s,o;for(const[a,c]of Object.entries(oe))(o=(s=window._sp_).addEventListener)==null||o.call(s,a,c({...t,flags:n}))}),se({...t,flags:n},e),ae()}function ee(t){const e={};return typeof t=="object"&&Zt.forEach(n=>{Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}),e}function ne(t){if(!t)return;const e=document.body,n=new CustomEvent("oTracking.event",{bubbles:!0,cancelable:!0,detail:t.detail});e.dispatchEvent(n)}function h({trackingProps:t,action:e,triggerAction:n}){let s;const o=Qt(),{product:a,app:c,flags:r}=t;o.activeComponent===E?s=o.messageId:s=o.privacyManagerId;const i={detail:{component:{id:s,name:o.activeComponent,type:"overlay",subtype:"cmp"},category:"component",action:e,...n&&{trigger_action:n},...a&&{product:a},...c&&{app:c},custom:[{cookie_toggle_flag:r}],url:window.document.location.href||null}};ne(i)}const oe={onMessageChoiceSelect:t=>(e,n,s)=>{const a={11:"accept_all",12:"manage_cookies",13:"reject_all"}[s];a&&h({trackingProps:t,action:"click",triggerAction:a})},onMessageReady:t=>()=>{h({trackingProps:t,action:"view"})},onMessageReceiveData:()=>(t,e)=>{const{messageId:n}=e;n&&k({messageId:n})},onError:t=>(e,n)=>{h({trackingProps:t,action:"error",triggerAction:n})},onPMCancel:()=>()=>{k({activeComponent:E})}};function se(t,e){window.addEventListener("message",function(n){if(n.origin!==e)return;const s={1:"save_and_close",11:"accept_all",13:"reject_all"},{data:{fromPM:o,actionType:a,messageId:c="0"}={}}=n;o&&(+c&&k({activeComponent:Xt,privacyManagerId:+c}),!(!a||!s[a])&&h({trackingProps:t,action:"click",triggerAction:s[a]}))},!1)}function ae(){document.addEventListener("onCmpConsentSaveCompleted",()=>{const t=document.cookie.match(/FTConsent=([^;]+)/);if(!t)return;const e=t[1];localStorage.setItem("__lastFtc",e)})}const ce="6.18.2";async function ie(t){const{useFTSession:e=!0,consentProxyHost:n=z,cookieDomain:s=J,formOfWordsId:o=K,useConsentStore:a=!0,trackingContext:c={},disableFTCookies:r=!1,includeUsNat:i=!1}=t||{};let{propertyConfig:p=b,userId:_}=t||{};if(typeof window>"u"){console.error("The CMP client can only be initialised in a browser context");return}if(window.FT_CMP_CLIENT_VERSION=ce,kt({includeUsNat:i}),!_&&e)try{const d=await G();_=d==null?void 0:d.uuid}catch(d){console.error(d)}p=re(p),Nt(p,{userId:_,includeUsNat:i}),qt(),window._sp_queue.push(()=>{var d,f;(f=(d=window._sp_)==null?void 0:d.addEventListener)==null||f.call(d,"onConsentReady",zt({userId:_,consentProxyHost:n,cookieDomain:s,formOfWordsId:o,useConsentStore:a,disableFTCookies:r,includeUsNat:i}))}),te(c,p.baseEndpoint)}function re(t){if(!(t!=null&&t.accountId))throw new Error("Please pass a valid property config");return t.events&&(console.warn("[cmp-client] Passing an events map in the config is not supported and will be ignored. Please use window._sp_.addEventListener() to listen for events"),delete t.events),t}function V(t,e,n,s,o,a){const{text:c,onClick:r}=s[e],i=document.querySelectorAll(`a[href*="${a}"]`);for(const p of i)(n||t)&&(o.has(p)&&p.removeEventListener("click",o.get(p)),p.innerText=c,p.addEventListener("click",r),o.set(p,r))}function pe({_clientOptions:t}=b){const{privacyManagerId:e,ccpaPrivacyManagerId:n,usnatPrivacyManagerId:s,manageCookiesLinkOverride:o}=t??b._clientOptions,a={usnat:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.usnat)==null||p.loadPrivacyManagerModal(s)}},ccpa:{text:"Do Not Sell My Personal Information",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.ccpa)==null||p.loadPrivacyManagerModal(n)}},gdpr:{text:"Manage Cookies",onClick:i=>{var p;i.preventDefault(),(p=window._sp_.gdpr)==null||p.loadPrivacyManagerModal(e)}}},c=new Map,r=function(i,p,_,d){V(!1,i,d.applies,a,c,o),d.applies&&window._sp_queue.push(()=>{var f,l;(l=(f=window._sp_).removeEventListener)==null||l.call(f,"onConsentReady",r)})};V(!0,"gdpr",!1,a,c,o),window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var i,p;(p=(i=window._sp_).addEventListener)==null||p.call(i,"onConsentReady",r)})}function ue(t=window,e){var c,r;const n="_cmp_open_pm_";if(!t._sp_)return;const{privacyManagerId:s,usnatPrivacyManagerId:o}=e??b._clientOptions,a=new URLSearchParams(t.location.search);if(a.has(n))switch(a.get(n)||""){case"usnat":(c=t._sp_.usnat)==null||c.loadPrivacyManagerModal(o);break;case"gdpr":(r=t._sp_.gdpr)==null||r.loadPrivacyManagerModal(s);break}}function de(t){window._sp_queue??(window._sp_queue=[]),window._sp_queue.push(()=>{var e,n;(n=(e=window._sp_)==null?void 0:e.addEventListener)==null||n.call(e,"onSPReady",()=>ue(window,t))})}function le(t){return t._clientOptions??{}}const me={"ft.com":le};function fe(t){return new Promise((e,n)=>{const{rootDomain:s}=t._clientOptions||{};if(!s)return e({});const o=me[s];if(!o||typeof o!="function")return e({...t._clientOptions});const a=()=>{try{e(o(t))}catch(c){n(c)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a()})}const _e={...{joinHref:!0,gdpr:{}},accountId:1906,baseEndpoint:"https://consent-manager.ft.com",propertyId:41863,propertyHref:"https://globalbondsummit.live.ft.com",_clientOptions:{subDomain:"globalbondsummit.live.ft.com",includeUsNat:!0}},ge=Object.freeze(Object.defineProperty({__proto__:null,INV_GLOBAL_BONDS_SUMMIT:_e},Symbol.toStringTag,{value:"Module"}));function j(t,e){if(!e||Number.isFinite(parseFloat(e)))return!1;const n=t===e,s=t.endsWith(`.${e}`);return n||s}function Ie(t){if(!t)throw new Error("Invalid hostname provided");const e=Object.values(vt),s=Object.values(ge).find(a=>{var r;const c=(r=a==null?void 0:a._clientOptions)==null?void 0:r.subDomain;return c&&j(t,c)});if(s)return s;let o=e.find(a=>{var r;if(a.propertyHref)return!1;const c=(r=a._clientOptions)==null?void 0:r.rootDomain;return c&&j(t,c)});return o??(o=A),o}const be=new URL(window.location.href).hostname,m=Ie(be);(async()=>{var t,e;try{const n=await fe(m);ie({propertyConfig:m,...n}),(t=m==null?void 0:m._clientOptions)!=null&&t.privacyManagerId&&((e=m==null?void 0:m._clientOptions)!=null&&e.manageCookiesLinkOverride)&&(pe(m),de(m._clientOptions))}catch(n){console.error("Error: CMP package configure + initialise Sourcepoint failed.",n)}})()})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consent-ready/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/consent-ready/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAe/E,wBAAsB,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAwB1F;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,iBAE7C,WAAW,gBACV,MAAM,iBACL,MAAM,eACR;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,mBAyFrC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ConsentReadyProps, ParsedConsentState } from "../../../typings/types";
|
|
2
2
|
export declare function getConsentCookieValue(): Record<string, boolean>;
|
|
3
|
+
export declare function whatConsentHasChanged(parsedConsent: ParsedConsentState, previousConsent: Record<string, boolean>): string;
|
|
3
4
|
export declare function hasConsentChanged(parsedConsent: ParsedConsentState, previousConsent: Record<string, boolean>): boolean;
|
|
4
5
|
export declare function shouldUpdateConsentStore({ userId, useConsentStore }: ConsentReadyProps): boolean;
|
|
5
6
|
export declare function getConsentEndpoint(updateConsentStore: boolean, props: ConsentReadyProps): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/consent-ready/utils/consent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc/D;AAED,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAMT;AAED,wBAAgB,wBAAwB,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,iBAAiB,WAEtF;AAED,wBAAgB,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,UAMvF"}
|
|
1
|
+
{"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/consent-ready/utils/consent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc/D;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,MAAM,CAgBR;AAED,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAMT;AAED,wBAAgB,wBAAwB,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,iBAAiB,WAEtF;AAED,wBAAgB,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,UAMvF"}
|