{"version":3,"file":"./modules/PromotionBanner.xxxxxxxx.js","mappings":"yIAEe,MAAMA,EAEjB,YAAOC,CAAMC,EAJM,mCAKfC,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAAgBY,GACpBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,GAAA,KAAAA,QAAAA,EACfE,KAAKC,MACT,CAEU,IAAAA,GACND,KAAKF,QAAQI,iBAAiB,SAAUC,GAAMH,KAAKI,uBAAuBD,KAE1EE,OAAOC,eAAeC,QAAQ,6BAA8B,OAChE,CAEQ,sBAAAH,CAAuBD,GAE3B,GADiCA,EAAEK,OAClBC,UAAUC,SAAS,iBAKpC,OAJAV,KAAKW,sBACAC,sBAELrB,SAASsB,cAAc,IAAIC,YAAY,iCAChCd,IACX,CAEQ,mBAAAW,GAEJ,OADAX,KAAKF,QAAQW,UAAUM,IAAI,+BACpBf,IACX,CAEQ,mBAAAY,GAEJ,OADAN,eAAeC,QAAQ,wBAAyB,QACzCP,IACX,E,yECpCJ,MAAMgB,EAAiB,kCAER,MAAMC,WAAoC,OAAkB,YAIvE,YAAO9B,CAAMC,EAAmB4B,GAC5B3B,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAImB,EAA4BnB,GAChCA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,GAGf,GAFAoB,MAAMpB,GADS,KAAAA,QAAAA,EAGXO,OAAOc,OAAOC,YAAa,CAC3BpB,KAAKqB,YAAcrB,KAAKF,QAAQwB,aAAa,qBAC7CtB,KAAKuB,cAAgBvB,KAAKF,QAAQ0B,cAAc,4BAChD,MAAMC,EAAgBnB,eAAeoB,QAAQ,yBAE7C,IAAK1B,KAAKqB,aAAeI,EAAe,OAExCzB,KAAK2B,wBAEL3B,KAAKF,QAAQI,iBAAiB,SAAUC,IAC9BA,EAAEK,OAAuBC,UAAUC,SAAS,0BAClDV,KAAK4B,kBAAkB,G,CAGnC,CAEQ,qBAAAD,GACJ3B,KAAK6B,UAAUC,KAAK,CAChBC,MAAO,YACPC,UAAW,CACPC,UAAW,CACPC,WAAY,CAAC,CACTC,GAAInC,KAAKqB,YACTe,KAAMpC,KAAKuB,cAAgBvB,KAAKuB,cAAcc,UAAY,GAC1DC,SAAUtC,KAAK6B,UAAU,GAAK7B,KAAK6B,UAAU,GAAGU,SAAW,GAC3DC,SAAU,wBAK9B,CAEQ,gBAAAZ,GAEJ5B,KAAK6B,UAAUC,KAAK,CAChBC,MAAO,aACPC,UAAW,CACPS,WAAY,CACRP,WAAY,CAAC,CACTC,GAAInC,KAAKqB,YACTe,KAAMpC,KAAKuB,cAAgBvB,KAAKuB,cAAcc,UAAY,GAC1DC,SAAUtC,KAAK6B,UAAY7B,KAAK6B,UAAU,GAAGU,SAAW,GACxDC,SAAU,wBAK9B,EAgBAvB,EAA4B9B,MAAM6B,E,gDCjFtC,Q,QAA8B,O","sources":["webpack:///./modules/PromotionBanner/PromotionBanner.ts","webpack:///./modules/PromotionBanner/PromotionBannerWithT.ts","webpack:///./modules/PromotionBanner/index.ts"],"sourcesContent":["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}","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;"],"names":["PromotionBanner","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","this","init","addEventListener","e","onPromotionBannerClose","window","sessionStorage","setItem","target","classList","contains","hidePromotionBanner","setSessionParameter","dispatchEvent","CustomEvent","add","moduleSelector","PromotionBannerWithTracking","super","NiveaX","IsUAEnabled","promotionId","getAttribute","promotionName","querySelector","bannerVisible","getItem","trackBannerImpression","trackBannerClick","dataLayer","push","event","ecommerce","promoView","promotions","id","name","innerText","creative","template","position","promoClick"],"sourceRoot":""}