{"version":3,"file":"./modules/PromotionBanner.xxxxxxxx.js","mappings":"mKAGA,MAAMA,EAAiB,kCAER,MAAMC,WAAoC,OAAkB,YAIvE,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAA4BY,GAChCA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,GAGf,GAFAE,MAAMF,GADS,KAAAA,QAAAA,EAGXG,OAAOC,OAAOC,YAAa,CAC3BC,KAAKC,YAAcD,KAAKN,QAAQQ,aAAa,qBAC7CF,KAAKG,cAAgBH,KAAKN,QAAQU,cAAc,4BAChD,MAAMC,EAAgBC,eAAeC,QAAQ,yBAE7C,IAAKP,KAAKC,aAAeI,EAAe,OAExCL,KAAKQ,wBAELR,KAAKN,QAAQe,iBAAiB,SAAUC,IAC9BA,EAAEC,OAAuBC,UAAUC,SAAS,0BAClDb,KAAKc,kBAAkB,GAE/B,CACJ,CAEQ,qBAAAN,GACJR,KAAKe,UAAUC,KAAK,CAChBC,MAAO,YACPC,UAAW,CACPC,UAAW,CACPC,WAAY,CAAC,CACTC,GAAIrB,KAAKC,YACTqB,KAAMtB,KAAKG,cAAgBH,KAAKG,cAAcoB,UAAY,GAC1DC,SAAUxB,KAAKe,UAAU,GAAKf,KAAKe,UAAU,GAAGU,SAAW,GAC3DC,SAAU,wBAK9B,CAEQ,gBAAAZ,GAEJd,KAAKe,UAAUC,KAAK,CAChBC,MAAO,aACPC,UAAW,CACPS,WAAY,CACRP,WAAY,CAAC,CACTC,GAAIrB,KAAKC,YACTqB,KAAMtB,KAAKG,cAAgBH,KAAKG,cAAcoB,UAAY,GAC1DC,SAAUxB,KAAKe,UAAYf,KAAKe,UAAU,GAAGU,SAAW,GACxDC,SAAU,wBAK9B,EAgBA5C,EAA4BC,MAAMF,E,gDCjFtC,Q,SAA8B,O,gDCCf,MAAM+C,EAEjB,YAAO7C,CAAMC,EAJM,mCAKfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIkC,EAAgBlC,GACpBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,GAAA,KAAAA,QAAAA,EACfM,KAAK6B,MACT,CAEU,IAAAA,GACN7B,KAAKN,QAAQe,iBAAiB,SAAUC,GAAMV,KAAK8B,uBAAuBpB,KAE1Eb,OAAOS,eAAeyB,QAAQ,6BAA8B,OAChE,CAEQ,sBAAAD,CAAuBpB,GAE3B,GADiCA,EAAEC,OAClBC,UAAUC,SAAS,iBAKpC,OAJAb,KAAKgC,sBACAC,sBAEL9C,SAAS+C,cAAc,IAAIC,YAAY,iCAChCnC,IACX,CAEQ,mBAAAgC,GAEJ,OADAhC,KAAKN,QAAQkB,UAAUwB,IAAI,+BACpBpC,IACX,CAEQ,mBAAAiC,GAEJ,OADA3B,eAAeyB,QAAQ,wBAAyB,QACzC/B,IACX,E","sources":["webpack:///./modules/PromotionBanner/PromotionBannerWithT.ts","webpack:///./modules/PromotionBanner/index.ts","webpack:///./modules/PromotionBanner/PromotionBanner.ts"],"sourcesContent":["import PromotionBanner from './PromotionBanner';\r\nimport ClassWithTracking from \"../../ClassWithTracking\";\r\n\r\nconst moduleSelector = '[data-module=\"PromotionBanner\"]';\r\n\r\nexport default class PromotionBannerWithTracking extends ClassWithTracking(PromotionBanner) {\r\n promotionId: string;\r\n promotionName: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new PromotionBannerWithTracking(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n super(element);\r\n\r\n if (window.NiveaX.IsUAEnabled) {\r\n this.promotionId = this.element.getAttribute('data-promotion-id');\r\n this.promotionName = this.element.querySelector('.nx-pb-content__headline');\r\n const bannerVisible = sessionStorage.getItem('promotionBannerHidden');\r\n\r\n if (!this.promotionId || bannerVisible) return;\r\n\r\n this.trackBannerImpression();\r\n\r\n this.element.addEventListener('click', (e) => {\r\n if (!(e.target as HTMLElement).classList.contains('nx-pb-content__button')) return;\r\n this.trackBannerClick();\r\n });\r\n }\r\n }\r\n\r\n private trackBannerImpression() {\r\n this.dataLayer.push({\r\n event: 'promoView',\r\n ecommerce: {\r\n promoView: {\r\n promotions: [{\r\n id: this.promotionId,\r\n name: this.promotionName ? this.promotionName.innerText : ``,\r\n creative: this.dataLayer[0] ? this.dataLayer[0].template : ``,\r\n position: \"Promotion Banner\"\r\n }]\r\n }\r\n }\r\n });\r\n }\r\n\r\n private trackBannerClick() {\r\n\r\n this.dataLayer.push({\r\n event: 'promoClick',\r\n ecommerce: {\r\n promoClick: {\r\n promotions: [{\r\n id: this.promotionId,\r\n name: this.promotionName ? this.promotionName.innerText : ``,\r\n creative: this.dataLayer ? this.dataLayer[0].template : ``,\r\n position: \"Promotion Banner\"\r\n }]\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n PromotionBannerWithTracking.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n PromotionBannerWithTracking.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n PromotionBannerWithTracking.setup(moduleSelector);\r\n}","import PromotionBanner from './PromotionBannerWithT';\r\nexport default PromotionBanner;","const moduleSelector = '[data-module=\"PromotionBanner\"]';\r\n\r\nexport default class PromotionBanner {\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new PromotionBanner(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.init();\r\n }\r\n\r\n protected init() {\r\n this.element.addEventListener('click', (e) => this.onPromotionBannerClose(e));\r\n // indicate initialization of promotion banner for functional test\r\n window.sessionStorage.setItem('promotionBannerInitialized', 'true');\r\n }\r\n\r\n private onPromotionBannerClose(e): PromotionBanner {\r\n const eventTarget: HTMLElement = e.target as HTMLElement;\r\n if (!eventTarget.classList.contains('nx-close-icon')) return;\r\n this.hidePromotionBanner()\r\n .setSessionParameter();\r\n\r\n document.dispatchEvent(new CustomEvent('niveax:PdpTwoColumnsOnResize'));\r\n return this;\r\n }\r\n\r\n private hidePromotionBanner(): PromotionBanner {\r\n this.element.classList.add('nx-promotion-banner--hidden');\r\n return this;\r\n }\r\n\r\n private setSessionParameter(): PromotionBanner {\r\n sessionStorage.setItem('promotionBannerHidden', 'true');\r\n return this;\r\n }\r\n\r\n}"],"names":["moduleSelector","PromotionBannerWithTracking","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","super","window","NiveaX","IsUAEnabled","this","promotionId","getAttribute","promotionName","querySelector","bannerVisible","sessionStorage","getItem","trackBannerImpression","addEventListener","e","target","classList","contains","trackBannerClick","dataLayer","push","event","ecommerce","promoView","promotions","id","name","innerText","creative","template","position","promoClick","PromotionBanner","init","onPromotionBannerClose","setItem","hidePromotionBanner","setSessionParameter","dispatchEvent","CustomEvent","add"],"sourceRoot":""}