diff --git a/scripts/dependencies.js b/scripts/dependencies.js
new file mode 100644
index 00000000..919cb1f4
--- /dev/null
+++ b/scripts/dependencies.js
@@ -0,0 +1,78 @@
+// eslint-disable-next-line import/no-cycle
+import {
+ decorateBlock,
+ fetchPlaceholders,
+ loadBlock,
+ loadScript,
+} from './scripts.js';
+
+const placeholders = await fetchPlaceholders();
+const isProd = window.location.hostname.endsWith(placeholders.hostname);
+
+/* setup cookie preferences */
+function getCookie(cookieName) {
+ const name = `${cookieName}=`;
+ const decodedCookie = decodeURIComponent(document.cookie);
+ const split = decodedCookie.split(';');
+ // eslint-disable-next-line no-plusplus
+ for (let i = 0; i < split.length; i++) {
+ let c = split[i];
+ while (c.charAt(0) === ' ') c = c.substring(1);
+ if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
+ }
+ return null;
+}
+
+async function OptanonWrapper() {
+ const geoInfo = window.Optanon.getGeolocationData();
+ Object.keys(geoInfo).forEach((key) => {
+ const cookieName = `PGAT_${key.charAt(0).toUpperCase() + key.slice(1)}`;
+ const cookie = getCookie(cookieName);
+ if (!cookie || cookie !== geoInfo[key]) document.cookie = `${cookieName}=${geoInfo[key]}`;
+ });
+
+ const prevOptIn = localStorage.getItem('OptIn_PreviousPermissions');
+ if (prevOptIn) {
+ try {
+ const settings = JSON.parse(prevOptIn);
+ if (settings.tempImplied) {
+ localStorage.removeItem('OptIn_PreviousPermissions');
+ }
+ } catch (e) {
+ // eslint-disable-next-line no-console
+ console.error('OptIn_PreviousPermissions parse failed');
+ }
+ }
+}
+
+const otId = placeholders.onetrustId;
+if (otId) {
+ const cookieScript = loadScript('https://cdn.cookielaw.org/scripttemplates/otSDKStub.js');
+ cookieScript.setAttribute('data-domain-script', `${otId}${isProd ? '' : '-test'}`);
+ cookieScript.setAttribute('data-dlayer-name', 'dataLayer');
+ cookieScript.setAttribute('data-nscript', 'beforeInteractive');
+
+ const gtmId = placeholders.googletagmanagerId;
+ if (gtmId) {
+ const GTMScript = document.createElement('script');
+ GTMScript.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+ })(window,document,'script','dataLayer','${gtmId}');`;
+ document.head.append(GTMScript);
+
+ const GTMFrame = document.createElement('no-script');
+ GTMFrame.innerHTML = ``;
+ document.body.prepend(GTMFrame);
+ }
+
+ window.OptanonWrapper = OptanonWrapper;
+
+ if (document.querySelector('.marketing')) {
+ const marketingBlock = document.querySelector('.marketing');
+ decorateBlock(marketingBlock);
+ loadBlock(marketingBlock);
+ }
+}
\ No newline at end of file
diff --git a/scripts/scripts.js b/scripts/scripts.js
index 0d2eda66..db25871d 100644
--- a/scripts/scripts.js
+++ b/scripts/scripts.js
@@ -710,7 +710,6 @@ async function loadPage(doc) {
// eslint-disable-next-line no-use-before-define
await loadLazy(doc);
// eslint-disable-next-line no-use-before-define
- await loadAds(doc);
loadDelayed(doc);
}
@@ -1070,6 +1069,8 @@ async function loadLazy(doc) {
addFavIcon(`${window.hlx.codeBasePath}/styles/favicon.ico`);
doc.querySelectorAll('div:not([class]):not([id]):empty').forEach((empty) => empty.remove());
+ // eslint-disable-next-line import/no-cycle
+ loadDependencies();
}
/**
@@ -1082,6 +1083,11 @@ function loadDelayed() {
// load anything that can be postponed to the latest here
}
+function loadDependencies() {
+ // eslint-disable-next-line import/no-cycle
+ window.setTimeout(() => import('./dependencies.js'), 1000);
+}
+
export async function lookupPages(pathnames) {
if (!window.pageIndex) {
const resp = await fetch('/query-index.json');
@@ -1123,118 +1129,6 @@ export function addHeaderSizing(block, classPrefix = 'heading', selector = 'h1,
});
}
-function getPageNameAndSections() {
- const pageSectionParts = window.location.pathname.split('/').filter((subPath) => subPath !== '');
- const pageName = pageSectionParts.join(':');
- const finalPageName = pageName === '' ? 'Home' : pageName;
-
- return {
- pageName: finalPageName,
- sections: pageSectionParts,
- };
-}
-
-export async function sendAnalyticsPageEvent() {
- window.dataLayer = window.dataLayer || [];
- const dl = window.dataLayer;
- const placeholders = await fetchPlaceholders();
- const isUserLoggedIn = window.gigyaAccountInfo && window.gigyaAccountInfo != null
- && window.gigyaAccountInfo.errorCode === 0;
-
- const { pageName, sections } = getPageNameAndSections();
- dl.push({
- event: 'pageload',
- pageName,
- pageUrl: window.location.href,
- siteSection: sections[0] || '',
- siteSubSection: sections[1] || '',
- siteSubSection2: sections[2] || '',
- gigyaID: isUserLoggedIn && window.gigyaAccountInfo.UID ? window.gigyaAccountInfo.UID : '',
- userLoggedIn: isUserLoggedIn ? 'Logged In' : 'Logged Out',
- tourName: placeholders.tourName.toLowerCase().replaceAll(' ', '_'),
- tournamentID: `${placeholders.tourCode.toUpperCase()}${placeholders.currentYear}${placeholders.tournamentId}`,
- ipAddress: '127.0.0.1',
- deviceType: 'Web',
- });
-}
-
-/* setup cookie preferences */
-function getCookie(cookieName) {
- const name = `${cookieName}=`;
- const decodedCookie = decodeURIComponent(document.cookie);
- const split = decodedCookie.split(';');
- // eslint-disable-next-line no-plusplus
- for (let i = 0; i < split.length; i++) {
- let c = split[i];
- while (c.charAt(0) === ' ') c = c.substring(1);
- if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
- }
- return null;
-}
-
-async function OptanonWrapper() {
- const geoInfo = window.Optanon.getGeolocationData();
- Object.keys(geoInfo).forEach((key) => {
- const cookieName = `PGAT_${key.charAt(0).toUpperCase() + key.slice(1)}`;
- const cookie = getCookie(cookieName);
- if (!cookie || cookie !== geoInfo[key]) document.cookie = `${cookieName}=${geoInfo[key]}`;
- });
-
- const prevOptIn = localStorage.getItem('OptIn_PreviousPermissions');
- if (prevOptIn) {
- try {
- const settings = JSON.parse(prevOptIn);
- if (settings.tempImplied) {
- localStorage.removeItem('OptIn_PreviousPermissions');
- }
- } catch (e) {
- // eslint-disable-next-line no-console
- console.error('OptIn_PreviousPermissions parse failed');
- }
- }
- await sendAnalyticsPageEvent();
-}
-
-async function loadAds(doc) {
- const placeholders = await fetchPlaceholders();
- const isProd = window.location.hostname.endsWith(placeholders.hostname);
- if (!isProd === 'this') {
- // temporary override for analytics testing
- if (!localStorage.getItem('OptIn_PreviousPermissions')) localStorage.setItem('OptIn_PreviousPermissions', '{"aa":true,"mediaaa":true,"target":true,"ecid":true,"adcloud":true,"aam":true,"campaign":true,"livefyre":false}');
- }
- const otId = placeholders.onetrustId;
- if (otId) {
- const cookieScript = loadScript('https://cdn.cookielaw.org/scripttemplates/otSDKStub.js');
- cookieScript.setAttribute('data-domain-script', `${otId}${isProd ? '' : '-test'}`);
- cookieScript.setAttribute('data-dlayer-name', 'dataLayer');
- cookieScript.setAttribute('data-nscript', 'beforeInteractive');
-
- const gtmId = placeholders.googletagmanagerId;
- if (gtmId) {
- const GTMScript = doc.createElement('script');
- GTMScript.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
- new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
- j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
- 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
- })(window,document,'script','dataLayer','${gtmId}');`;
- doc.head.append(GTMScript);
-
- const GTMFrame = doc.createElement('no-script');
- GTMFrame.innerHTML = ``;
- doc.body.prepend(GTMFrame);
- }
-
- window.OptanonWrapper = OptanonWrapper;
-
- if (doc.querySelector('.marketing')) {
- const marketingBlock = document.querySelector('.marketing');
- decorateBlock(marketingBlock);
- loadBlock(marketingBlock);
- }
- }
-}
-
try {
const hidden = Symbol('hidden');
const proxy = Symbol('proxy');