import { addCustomEventHandlers, dataLayerPageDetails } from './data-layer-methods'; import './scripts/pages/home'; import './scripts/pages/services/our-solutions'; import { debugLog } from './logging'; const version = __APP_VERSION__ debugLog("ConcordWebAnalytics Version: " + version) export const DataManager = (function() { let currentPageData = {}; return { getCurrentPageData: function() { return currentPageData; }, setCurrentPageData: function(data: any) { currentPageData = { ...currentPageData, ...data } } } })(); // Functions to update the data layer const updateDataLayerOnPathChange = () => { if (window.dataLayer) { const dataLayerObj = dataLayerPageDetails(window.location.href, window.location.pathname); window.dataLayer.push(dataLayerObj); DataManager.setCurrentPageData(dataLayerObj); // UNCOMMENT FOR TESTING debugLog('DataLayer: ', window.dataLayer) } else { debugLog("dataLayer doesn't exist"); } }; export const updateDataLayerOnEvent = (dataLayerObj: any) => { if (window.dataLayer && dataLayerObj) { debugLog("--- Datalayer Updated -- ") debugLog("--- New --- ") debugLog(dataLayerObj) window.dataLayer.push(dataLayerObj); debugLog("--- Current --- ") debugLog(window.dataLayer) // UNCOMMENT FOR TESTING const keys = Object.keys(dataLayerObj); keys.forEach(key => { localStorage.setItem(`Data Layer ${key}:`, dataLayerObj[key]) }) } else { debugLog("dataLayer doesn't exist"); } } // Handle the initial page load document.addEventListener('DOMContentLoaded', updateDataLayerOnPathChange); document.addEventListener('DOMContentLoaded', addCustomEventHandlers); // Handle navigation events (SPA, hash changes, etc.) window.addEventListener('popstate', updateDataLayerOnPathChange); // For browser navigation window.addEventListener('hashchange', updateDataLayerOnPathChange); // For hash-based navigation