{"version":3,"file":"./modules/NivTTeasers.xxxxxxxx.js","mappings":"8JAIe,MAAMA,EAKjB,WAAAC,CAAYC,GACRC,KAAKC,WAAaF,EACiCA,EAASG,iBAAiB,sBAEvDC,SAEtBC,SAASC,iBAAiB,oCAAoC,KAC1DL,KAAKM,wBAAwB,IAG5BC,OAAOC,OAAOC,eACfT,KAAKM,yBAGTF,SAASC,iBAAiB,wBAAwB,KAC9CL,KAAKM,wBAAwB,IAGjCC,OAAOF,iBAAiB,UAAU,SAAS,IAAML,KAAKM,0BAA0B,MACpF,CAEU,sBAAAA,IACF,QAAaN,KAAKC,aAClBD,KAAKU,kBAAkBV,KAAKC,WAEpC,CAEU,iBAAAS,CAAkBX,GAYxB,OAAOC,IACX,E,0EC3CJ,MAAMW,EAAiB,8BAER,MAAMC,EAMjB,YAAOC,CAAMd,EAAmBY,GAC5BG,MAAMC,KAAKX,SAASF,iBAAiBH,IAAWiB,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIT,EAAYS,GAChBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAArB,CAAmBuB,GAAA,KAAAA,QAAAA,EAZX,KAAAC,UAAY,EACZ,KAAAC,UAAY,EACZ,KAAAC,YAAa,EAWjBxB,KAAKwB,WAAaH,EAAQI,UAAUC,SAAS,qBAEzCnB,OAAOC,OAAOmB,aACd3B,KAAK4B,MAEb,CAEQ,IAAAA,GACJ5B,KAAKqB,QAAQhB,iBAAiB,aAAcwB,IACxC7B,KAAKsB,UAAYO,EAAMC,QACvB9B,KAAKuB,UAAYM,EAAME,OAAO,IAIlC/B,KAAKqB,QAAQhB,iBAAiB,WAAYwB,IAClB,IAAhBA,EAAMG,OAAeC,KAAKC,IAAIlC,KAAKsB,UAAYO,EAAMC,SAAW,IAAMG,KAAKC,IAAIlC,KAAKuB,UAAYM,EAAME,SAAW,KACrH/B,KAAKmC,eAAiBN,EAAMO,OAC5BpC,KAAKqC,qBAAoB,IAGxBrC,KAAKwB,YACN,IAAI,UAAexB,KAAKqB,QAEhC,CAGQ,kBAAAgB,GAEJ,GAAuC,+BAAnCrC,KAAKmC,eAAeG,YADgB,CAAC,YAAa,UAAW,UAAW,iBAAkB,kCACSC,MAAKC,GAAaxC,KAAKmC,eAAeV,UAAUC,SAASc,KAC5J,OAGJ,MAAMC,EAA6BzC,KAAKmC,eAAeO,QAAQ,WAC/D,IAAKD,GAAiBA,EAAchB,UAAUC,SAAS,kBAAmB,OAE1E,MACIiB,EAD+Bd,MAAMe,cACKC,cAAcC,cAAc,MACtEC,EAAkCN,aAAa,EAAbA,EAAeK,cAAc,gCAC/DE,EAAkCP,aAAa,EAAbA,EAAeK,cAAc,gCAC/DG,EAA0CR,aAAa,EAAbA,EAAeK,cAAc,KACvEI,EAA6B9C,SAAS0C,cAAc,qBAExD,IAAIK,EAAc,GACdC,EAAmB,GACnBC,EAAa,GAEbN,EACAI,EAAcJ,EAAmBO,UAC1BN,IACPG,EAAcH,EAAmBM,WAIjCF,EADAT,EACmBA,EAAaY,UACzBL,EACYA,EAAUM,QAEV,GAGvBH,EAAaD,EAAmB,MAAQD,EAAc,MAAQF,EAAqBQ,KAC/EzD,KAAKwB,WACLxB,KAAK0D,iBAAiBL,GAAY,EAAO,uBAEzCrD,KAAK0D,iBAAiBL,GAAY,EAE1C,CAEQ,gBAAAK,CAAiBL,EAAoBM,EAAqBC,EAAc,iBAC5E,QAAS,CACL/B,MAAO,WACPgC,cAAe,SACfD,YAAaA,EACbP,WAAYA,EACZS,qBAAqB,IAGrBH,IAAkBvD,SAAS2D,SAAWJ,EAC9C,EAiBA/C,EAAYC,MAAMF,E","sources":["webpack:///./modules/NivTTeaserGrid.ts","webpack:///./modules/NivTTeasers.ts"],"sourcesContent":["// import { addLayer, productTeaserTrackingObject, getCurrencyCode } from '../ClassWithTracking/helpers';\r\nimport { isInViewPort } from '../helpers/DOMHelpers';\r\nimport { debounce } from '../helpers/helperFunctions';\r\n\r\nexport default class NivTTeaserGrid {\r\n // private teaserGridAsHeroTracking = true;\r\n private teaserGrid: HTMLElement;\r\n\r\n\r\n constructor(selector: HTMLElement) {\r\n this.teaserGrid = selector;\r\n const hasProductTeasers: NodeListOf = selector.querySelectorAll('.nx-product-teaser');\r\n \r\n if(!hasProductTeasers.length) return;\r\n\r\n document.addEventListener('niveax:initProductTeaserTracking', () => {\r\n this.isTeaserGridInViewport();\r\n });\r\n\r\n if (!window.NiveaX.isShopEnabled) {\r\n this.isTeaserGridInViewport()\r\n }\r\n\r\n document.addEventListener('NiveaXLoadMoreLoaded', () => {\r\n this.isTeaserGridInViewport()\r\n });\r\n\r\n window.addEventListener('scroll', debounce(() => this.isTeaserGridInViewport(), 500))\r\n }\r\n\r\n protected isTeaserGridInViewport() {\r\n if (isInViewPort(this.teaserGrid)) {\r\n this.trackTeaserInGrid(this.teaserGrid);\r\n }\r\n }\r\n\r\n protected trackTeaserInGrid(selector: HTMLElement): this {\r\n // const allProductTeasers: NodeListOf = selector.querySelectorAll('.nx-product-teaser'),\r\n // visibleSliderProductTeasers: NodeListOf = selector.querySelectorAll('.nx-product-teaser:not(.nx-product-shown)');\r\n\r\n // if (visibleSliderProductTeasers.length === 0) return;\r\n\r\n // const teaserArray = productTeaserTrackingObject(visibleSliderProductTeasers, true, allProductTeasers);\r\n\r\n // if (this.teaserGridAsHeroTracking) {\r\n // this.productImpressionsPush(teaserArray);\r\n // }\r\n\r\n return this;\r\n }\r\n\r\n // private productImpressionsPush(teasers: Object[]) {\r\n // addLayer({\r\n // event: 'impressions',\r\n // ecommerce: {\r\n // currencyCode: getCurrencyCode(),\r\n // impressions: teasers\r\n // }\r\n // });\r\n // }\r\n\r\n}","/// \r\n\r\nimport NivTTeaserGrid from './NivTTeaserGrid';\r\n\r\nimport { addLayer } from '../ClassWithTracking/helpers';\r\n\r\nconst moduleSelector = '[data-module=\"NivTTeasers\"]';\r\n\r\nexport default class NivTTeasers {\r\n private movementX = 0;\r\n private movementY = 0;\r\n private isInSlider = false;\r\n private clickedElement: 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 NivTTeasers(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.isInSlider = element.classList.contains('nx-teasers-slider');\r\n\r\n if (window.NiveaX.IsUAEnabled) {\r\n this.init();\r\n }\r\n }\r\n\r\n private init() {\r\n this.element.addEventListener('mousedown', (event) => {\r\n this.movementX = event.screenX;\r\n this.movementY = event.screenY;\r\n });\r\n\r\n\r\n this.element.addEventListener('mouseup', (event) => {\r\n if (event.which !== 1 || Math.abs(this.movementX - event.screenX) > 20 || Math.abs(this.movementY - event.screenY) > 20) return;\r\n this.clickedElement = event.target as HTMLElement;\r\n this.oldTrackingTeasers();\r\n });\r\n\r\n if (!this.isInSlider) {\r\n new NivTTeaserGrid(this.element);\r\n }\r\n }\r\n\r\n\r\n private oldTrackingTeasers() {\r\n const classNamesOfNewTrackingElements = ['tns-inner', 'tns-ovh', 'tns-nav', 'nx-teaser-grid', 'nx-quicklinks-teaser__headline'];\r\n if (this.clickedElement.toString() === '[object HTMLButtonElement]' || classNamesOfNewTrackingElements.some(className => this.clickedElement.classList.contains(className))) {\r\n return;\r\n };\r\n\r\n const teaserElement: HTMLElement = this.clickedElement.closest('article');\r\n if (!teaserElement || teaserElement.classList.contains('nx-no-tracking')) return;\r\n\r\n const teaserSection: HTMLElement = event.currentTarget as HTMLElement,\r\n sectionTitle: HTMLElement = teaserSection.parentElement.querySelector('h2'),\r\n productTeaserTitle: HTMLElement = teaserElement?.querySelector('.nx-product-teaser__headline') as HTMLElement,\r\n contentTeaserTitle: HTMLElement = teaserElement?.querySelector('.nx-content-teaser__headline') as HTMLElement,\r\n teaserDestinationUrl: HTMLAnchorElement = teaserElement?.querySelector('a') as HTMLAnchorElement,\r\n pageTitle: HTMLMetaElement = document.querySelector('[name=\"keywords\"]');\r\n\r\n let teaserTitle = '',\r\n sectionTitleText = '',\r\n eventLabel = '';\r\n\r\n if (productTeaserTitle) {\r\n teaserTitle = productTeaserTitle.innerText;\r\n } else if (contentTeaserTitle) {\r\n teaserTitle = contentTeaserTitle.innerText;\r\n }\r\n\r\n if (sectionTitle) {\r\n sectionTitleText = sectionTitle.innerHTML;\r\n } else if (pageTitle) {\r\n sectionTitleText = pageTitle.content;\r\n } else {\r\n sectionTitleText = \"\";\r\n }\r\n\r\n eventLabel = sectionTitleText + ' | ' + teaserTitle + ' | ' + teaserDestinationUrl.href;\r\n if (this.isInSlider) {\r\n this.trackTeaserClick(eventLabel, false, 'Teaser Slider Click');\r\n } else {\r\n this.trackTeaserClick(eventLabel, false);\r\n }\r\n }\r\n\r\n private trackTeaserClick(eventLabel: string, destinationUrl: any, eventAction = 'Teaser Click') {\r\n addLayer({\r\n event: 'ga_event',\r\n eventCategory: 'Teaser',\r\n eventAction: eventAction,\r\n eventLabel: eventLabel,\r\n eventNonInteraction: false,\r\n });\r\n\r\n if (destinationUrl) { document.location = destinationUrl; }\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 NivTTeasers.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n NivTTeasers.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 NivTTeasers.setup(moduleSelector);\r\n}"],"names":["NivTTeaserGrid","constructor","selector","this","teaserGrid","querySelectorAll","length","document","addEventListener","isTeaserGridInViewport","window","NiveaX","isShopEnabled","trackTeaserInGrid","moduleSelector","NivTTeasers","setup","Array","from","filter","node","dataset","moduleInitialized","forEach","element","movementX","movementY","isInSlider","classList","contains","IsUAEnabled","init","event","screenX","screenY","which","Math","abs","clickedElement","target","oldTrackingTeasers","toString","some","className","teaserElement","closest","sectionTitle","currentTarget","parentElement","querySelector","productTeaserTitle","contentTeaserTitle","teaserDestinationUrl","pageTitle","teaserTitle","sectionTitleText","eventLabel","innerText","innerHTML","content","href","trackTeaserClick","destinationUrl","eventAction","eventCategory","eventNonInteraction","location"],"sourceRoot":""}