{"version":3,"file":"PromotionBanner.Main.min.js","mappings":"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","sources":["/./PromotionBanner/PromotionLogging/PromotionLogging.types.ts","/./PromotionBanner/constants/PromotionBanners.constants.ts","/./PromotionBanner/PromotionLogging/utils/initializeDataTag.ts","/./PromotionBanner/PromotionLogging/PromotionLogging.ts","/./PromotionBanner/PromotionLogging/eventEmitters/emitClickAction.ts","/./PromotionBanner/PromotionLogging/eventEmitters/emitDismissAction.ts","/./PromotionBanner/PromotionLogging/eventEmitters/emitContentUpdate.ts","/./PromotionBanner/PromotionBanner.Main.ts"],"sourcesContent":["export interface IDataTag {\r\n\tcontent: {\r\n\t\tareaName: string;\r\n\t\tcontentId: string;\r\n\t\tscn: string;\r\n\t\tcontainerName: string;\r\n\t\tcontentName: string;\r\n\t\tcampaignId: string;\r\n\t};\r\n}\r\n\r\nexport enum ElementReference {\r\n\tPromotionBanner = '.PromotionBanner',\r\n\tTopPageBanner = '.TopPageBanner',\r\n\tAboveUhfBanner = '.AboveUhfBanner',\r\n\tRailBanner = '.RailBanner',\r\n\tNpsRailBanner = '.NpsRailBanner',\r\n\tRailSecondaryCtaBanner = '.RailSecondaryCtaBanner',\r\n}\r\n\r\nexport interface IBannerLoggingData {\r\n\tdismissSelector?: string;\r\n\tclickSelector?: string;\r\n\telement?: string;\r\n}\r\n","import type { IBannerLoggingData } from '../PromotionLogging/PromotionLogging.types';\r\nimport { ElementReference } from '../PromotionLogging/PromotionLogging.types';\r\n\r\nexport const ucsStaticBanners: IBannerLoggingData[] = [\r\n\t{\r\n\t\tdismissSelector: null,\r\n\t\tclickSelector: '#ucsTopBannerButtonLink',\r\n\t\telement: ElementReference.PromotionBanner,\r\n\t},\r\n\t{\r\n\t\tdismissSelector: '#top-banner-dismiss-button',\r\n\t\tclickSelector: '#ucsTopBannerButtonLink',\r\n\t\telement: ElementReference.TopPageBanner,\r\n\t},\r\n\t{\r\n\t\tdismissSelector: '#uhf-banner-close',\r\n\t\tclickSelector: '#upgradeUhfBannerButton',\r\n\t\telement: ElementReference.AboveUhfBanner,\r\n\t},\r\n\t{\r\n\t\tdismissSelector: '#rail-banner-dismiss-button',\r\n\t\tclickSelector: '#rail-banner-button',\r\n\t\telement: ElementReference.RailBanner,\r\n\t},\r\n\t{\r\n\t\tdismissSelector: '#nps-rail-close',\r\n\t\tclickSelector: '#nps-rail-link',\r\n\t\telement: ElementReference.NpsRailBanner,\r\n\t},\r\n\t{\r\n\t\tdismissSelector: '#rail-banner-dismiss-button',\r\n\t\tclickSelector: '#rail-banner-button, #rail-banner-button-secondary',\r\n\t\telement: ElementReference.RailSecondaryCtaBanner,\r\n\t},\r\n];\r\n\r\nexport const DefaultContainerName = 'growth_placement';\r\n\r\nexport const ClickActionTypeID = 'CL';\r\n\r\nexport const InvalidHref = 'href not found';\r\n","import { DefaultContainerName } from '../../constants';\r\nimport { IDataTag } from '../PromotionLogging.types';\r\n\r\nconst formattedTagValue = (tagValue: string | undefined): string => tagValue ? tagValue.replace('|', ' ') : '';\r\n\r\nexport const initializeDataTag = (banner: HTMLElement, defaultValue: string): IDataTag => {\r\n\tconst bannerArea: string = banner.dataset.biArea || defaultValue;\r\n\tconst bannerCampaignId: string = banner.dataset.biCampaignid || '';\r\n\tconst bannerId: string = banner.dataset.biId || defaultValue;\r\n\tconst bannerScenario: string = banner.dataset.biScn || defaultValue;\r\n\tlet bannerContent: string = [\r\n\t\tformattedTagValue(banner.dataset.biTitle),\r\n\t\tformattedTagValue(banner.dataset.biSubtext),\r\n\t\tformattedTagValue(banner.dataset.biButton),\r\n\t].join('|');\r\n\r\n\tif (banner.dataset.biLink) {\r\n\t\tbannerContent += `|${formattedTagValue(banner.dataset.biLink)}`;\r\n\t}\r\n\r\n\treturn {\r\n\t\tcontent: {\r\n\t\t\tareaName: bannerArea,\r\n\t\t\tcampaignId: bannerCampaignId,\r\n\t\t\tcontainerName: DefaultContainerName,\r\n\t\t\tcontentId: bannerId,\r\n\t\t\tscn: bannerScenario,\r\n\t\t\tcontentName: bannerContent,\r\n\t\t},\r\n\t};\r\n};\r\n","import {\r\n\tucsStaticBanners,\r\n} from '../constants';\r\nimport {\r\n\temitClickAction,\r\n\temitDismissAction,\r\n\temitContentUpdate,\r\n} from './eventEmitters';\r\nimport { initializeDataTag } from './utils';\r\n\r\nexport const promotionLogger = () => {\r\n\tlet dismissedBannerSet: Object = {};\r\n\r\n\tfor (const banner of ucsStaticBanners) {\r\n\t\tconst currentBannerElement = document.querySelector(banner.element);\r\n\r\n\t\tif (!currentBannerElement) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tconst dataTag = initializeDataTag(currentBannerElement, banner.element);\r\n\r\n\t\tconst bannerClickSelectors = document.querySelectorAll(banner.clickSelector)\r\n\r\n\t\tfor (let i = 0; i < bannerClickSelectors.length; i++) {\r\n\t\t\tconst bannerClickSelector = bannerClickSelectors[i];\r\n\t\t\tbannerClickSelector.addEventListener('click', event => {\r\n\t\t\t\temitClickAction(bannerClickSelector, dataTag);\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst bannerDismissSelectors = document.querySelectorAll(banner.dismissSelector);\r\n\r\n\t\tfor (let i = 0; i < bannerDismissSelectors.length; i++) {\r\n\t\t\tconst bannerDismissSelector = bannerDismissSelectors[i];\r\n\t\t\tbannerDismissSelector.addEventListener('click', event => {\r\n\t\t\t\tconst bannerId = dataTag.content.contentId;\r\n\t\t\t\tdismissedBannerSet[bannerId] = emitDismissAction(\r\n\t\t\t\t\tbannerDismissSelector,\r\n\t\t\t\t\tdataTag,\r\n\t\t\t\t\tbannerId,\r\n\t\t\t\t\tdismissedBannerSet\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\temitContentUpdate(dataTag);\r\n\t}\r\n};\r\n","import { IDataTag } from '../PromotionLogging.types';\r\nimport { ClickActionTypeID, InvalidHref } from '../../constants';\r\n\r\nexport const emitClickAction = (clickElement: HTMLElement, dataTag: IDataTag) => {\r\n\tconst analytics = window.analytics;\r\n\r\n\tif (!clickElement) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst contentTags = { ...dataTag.content, slot: clickElement.dataset.biSlot ?? '' };\r\n\r\n\tif (analytics) {\r\n\t\tconst tagSet = {\r\n\t\t\tbehavior: window.oneDS?.Behavior.UNDEFINED,\r\n\t\t\tactionType: ClickActionTypeID,\r\n\t\t\ttargetUri: clickElement.getAttribute('href') ?? InvalidHref,\r\n\t\t\tcontent: contentTags\r\n\t\t};\r\n\r\n\t\tanalytics.capturePageAction(clickElement, tagSet, null);\r\n\t}\r\n};\r\n","import { IDataTag } from '../PromotionLogging.types';\r\nimport { ClickActionTypeID } from '../../constants';\r\n\r\nexport const emitDismissAction = (\r\n\tdismissElement: HTMLElement,\r\n\tdataTag: IDataTag,\r\n\tbannerId: string,\r\n\tdismissedBannerSet: {}\r\n) => {\r\n\tif (!dismissElement) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst analytics = window.analytics;\r\n\r\n\t//BUG: We are seeing a bug where on a small set of clients this code gets stuck in a loop, causing a lot of dismissed actions for a single click\r\n\tif (!dismissedBannerSet[bannerId]) {\r\n\t\tdismissedBannerSet[bannerId] = true;\r\n\r\n\t\tif (analytics) {\r\n\t\t\tconst newBannerId = `${bannerId}-dismiss`;\r\n\t\t\tconst contentTags = { ...dataTag.content, contentId: newBannerId };\r\n\r\n\t\t\tconst ondsTagSet = {\r\n\t\t\t\tactionType: ClickActionTypeID,\r\n\t\t\t\tbehavior: window.oneDS.Behavior.HIDE,\r\n\t\t\t\tcontent: contentTags,\r\n\t\t\t};\r\n\r\n\t\t\tanalytics.capturePageAction(dismissElement, ondsTagSet, null);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n","import { IDataTag } from '../PromotionLogging.types';\r\n\r\nexport const emitContentUpdate = (dataTag: IDataTag) => {\r\n\tconst analytics = window.analytics;\r\n\r\n\tif (analytics) {\r\n\t\tanalytics.captureContentUpdate({\r\n\t\t\t...dataTag,\r\n\t\t\tbehavior: window.oneDS.Behavior.IMPRESSION,\r\n\t\t}, null);\r\n\t}\r\n};\r\n","import { promotionLogger } from './PromotionLogging';\r\nimport type { ApplicationInsights, Behavior } from '@microsoft/1ds-analytics-web-js';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tanalytics?: ApplicationInsights;\r\n\t\toneDS: {\r\n\t\t\tBehavior: typeof Behavior;\r\n\t\t};\r\n\t\tinitPromotionLogger: () => void;\r\n\t}\r\n}\r\n\r\nwindow.initPromotionLogger = () => {\r\n\tpromotionLogger();\r\n}\r\n"],"names":["ElementReference","ucsStaticBanners","dismissSelector","clickSelector","element","PromotionBanner","TopPageBanner","AboveUhfBanner","RailBanner","NpsRailBanner","RailSecondaryCtaBanner","formattedTagValue","tagValue","replace","promotionLogger","dismissedBannerSet","banner","currentBannerElement","document","querySelector","dataTag","defaultValue","bannerArea","dataset","biArea","bannerCampaignId","biCampaignid","bannerId","biId","bannerScenario","biScn","bannerContent","biTitle","biSubtext","biButton","join","biLink","content","areaName","campaignId","containerName","contentId","scn","contentName","initializeDataTag","bannerClickSelectors","querySelectorAll","i","bannerClickSelector","addEventListener","event","clickElement","analytics","window","contentTags","slot","biSlot","tagSet","behavior","oneDS","Behavior","UNDEFINED","actionType","targetUri","getAttribute","capturePageAction","emitClickAction","length","bannerDismissSelectors","bannerDismissSelector","dismissElement","newBannerId","ondsTagSet","HIDE","emitDismissAction","captureContentUpdate","IMPRESSION","emitContentUpdate","initPromotionLogger"],"sourceRoot":""}