{"version":3,"file":"./modules/BasicTracking.xxxxxxxx.js","mappings":"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","sources":["webpack:///./BasicTracking.ts"],"sourcesContent":["/// \r\nimport { addLayer } from \"./ClassWithTracking/helpers\";\r\nimport { getClosest, observeFirstTimeInViewport } from \"./helpers/DOMHelpers\";\r\nimport {isPageEditor, parseJSONSafe} from \"./helpers/helperFunctions\";\r\n\r\nexport default class BasicTracking {\r\n\tprotected options: {\r\n\t\ttrackingSelector: string,\r\n\t\tcontextTDataSelector: string,\r\n\t\titemTDataSelector: string,\r\n\t\tcontextTDataText: string,\r\n\t\tfieldOrStorageText: string,\r\n\t\tnavigation: string,\r\n\t\tphoto_size: string,\r\n\t\tgetAttributeValueFromDom: string,\r\n\t};\r\n\r\n\tconstructor(getOptions = {}) {\r\n\t\tthis.options = Object.assign(this.getDefaultOptions(), getOptions);\r\n\r\n\t\tdocument.addEventListener('NiveaBasicTracking:reInitHandlers', () => {\r\n\t\t\tthis.init();\r\n\t\t});\r\n\r\n\t\tthis.init();\t\t\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\tif (isPageEditor()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tArray.from(document.querySelectorAll(`${this.options.trackingSelector}`))\r\n\t\t\t.filter((node: HTMLElement) => !node.dataset.trackingInitialized)\r\n\t\t\t.forEach((element: HTMLElement) => {\r\n\t\t\t\tlet getData = element.getAttribute(`${this.options.itemTDataSelector}`),\r\n\t\t\t\t\tjsonData = this.escapeSingleQuote(getData),\r\n\t\t\t\t\ttrackingdata = this.getJsonObject(jsonData);\r\n\r\n\t\t\t\tif (!getData || !trackingdata.length) {\r\n\t\t\t\t\telement.dataset.trackingInitialized = 'true';\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst showEventsTdata = trackingdata.filter(item => item.Ttrigger == \"Show\");\r\n\t\t\t\tconst clickEventsWithThint = trackingdata.filter(item => item.Ttrigger == \"Click\" && item.hasOwnProperty('Thint'));\r\n\t\t\t\tconst clickEventsWithOutThint = trackingdata.filter(item => item.Ttrigger == \"Click\" && !item.hasOwnProperty('Thint'));\r\n\t\t\t\tconst formSubmittedEventsTdata = trackingdata.filter(item => item.Ttrigger == \"FormSubmitted\");\r\n\t\t\t\t\r\n\t\t\t\tif (clickEventsWithThint.length) {\r\n\t\t\t\t\tclickEventsWithThint.forEach((ruleItem: TrackingData) => {\r\n\t\t\t\t\t\tconst selector = ruleItem.Thint;\r\n\t\t\t \r\n\t\t\t\t\t\tif(element.querySelector(selector)) {\r\n\t\t\t\t\t\t\telement.querySelector(selector).addEventListener('click', (event) => this.clickHandler(event, ruleItem.Rule));\r\n\t\t\t\t\t\t\telement.dataset.trackingInitialized = 'true';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tconsole.warn(`Selector ${selector} not found`, ruleItem.Rule);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (clickEventsWithOutThint.length) {\r\n\t\t\t\t\telement.addEventListener('click', (event) => this.clickHandler(event));\r\n\t\t\t\t\telement.dataset.trackingInitialized = 'true';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (showEventsTdata.length) {\r\n\t\t\t\t\tobserveFirstTimeInViewport(element).then(() => {\r\n\t\t\t\t\t\tif(!element.dataset.trackingInitialized) {\r\n\t\t\t\t\t\t\tthis.pushEventLayer(showEventsTdata);\r\n\t\t\t\t\t\t\telement.dataset.trackingInitialized = 'true';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (formSubmittedEventsTdata.length) {\r\n\t\t\t\t\tthis.pushEventLayer(formSubmittedEventsTdata);\r\n\t\t\t\t\telement.dataset.trackingInitialized = 'true';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate clickHandler(event: Event, filterRule?: string) {\r\n\t\t// event.preventDefault(); //prevent ridirecting, used only testing purposes.\r\n\t\tconst target = event.target as HTMLElement;\r\n\t\t\r\n\t\tif (target.closest('.nx-add-to-cart-teaser-wrapper')) return;\r\n\r\n\t\tlet itemTrackingData = this.getItemTrackingData(target);\r\n\r\n\t\tif(filterRule) {\r\n\t\t\titemTrackingData = itemTrackingData.filter(ruleItem => ruleItem.Rule == filterRule)\r\n\t\t}\r\n\t\t \r\n\t\tif (itemTrackingData) {\t\t\t\r\n\t\t\titemTrackingData.forEach((ruleItem: TrackingData, i) => {\r\n\t\t\t\tlet eventAction: string = ruleItem.Tevent?.eventAction,\r\n\t\t\t\t\tisUAEvent = ruleItem.Rule.includes('UA'),\r\n\t\t\t\t\tisG4Event = ruleItem.Rule.includes('GA4'),\r\n\t\t\t\t\tisShowEvent = ruleItem.Ttrigger == 'Show';\r\n\t\t\t\r\n\r\n\t\t\t\tif (isShowEvent) return;\r\n\r\n\t\t\t\tif (isUAEvent) {\r\n\t\t\t\t\tif (this.getEventFromFieldOrStorage(eventAction)) {\r\n\t\t\t\t\t\tconst splitString = this.splitString(eventAction),\r\n\t\t\t\t\t\t\tinputName = splitString[1],\r\n\t\t\t\t\t\t\tcheckedInput: HTMLInputElement = this.getCheckedInput(inputName),\r\n\t\t\t\t\t\t\tcheckedInputLocaly = window.localStorage.getItem(splitString[2]);\r\n\r\n\t\t\t\t\t\tif (inputName && checkedInput) {\r\n\t\t\t\t\t\t\twindow.localStorage.setItem(splitString[2], checkedInput.value);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\truleItem.Tevent.eventAction = checkedInput ? checkedInput.value : checkedInputLocaly;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telse if (this.hasItemTrackingContext(eventAction, this.options.contextTDataText)) {\r\n\t\t\t\t\t\tconst parentEventAction = this.getTeventFromContext(target, \"UA Container Context\");\r\n\t\t\t\t\t\truleItem.Tevent.eventAction = eventAction.split(this.options.contextTDataText).join(parentEventAction.eventAction);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\truleItem.Tevent.eventAction = eventAction.split('-').join(\"\").split(this.options.contextTDataText).join(\"\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(isG4Event) {\r\n\t\t\t\t\tconst parentContextFields = this.getParentContextFields(ruleItem.Tevent),\r\n\t\t\t\t\t contextEcommerceFields = this.getParentContextFields(ruleItem.Tevent?.ecommerce),\r\n\t\t\t\t\t parentContextEvent = this.getTeventFromContext(target, \"GA4 Container Context\"),\r\n\t\t\t\t\t eventParams = ruleItem.Tevent.parameters;\r\n\t\t\t\t\tconst conditionClass = ruleItem.Tcondition;\r\n\r\n\t\t\t\t\tif(Object.keys(parentContextFields).length) {\r\n\t\t\t\t\t\tObject.keys(parentContextEvent).filter(key => key in parentContextFields).forEach((key)=> parentContextFields[key] = parentContextEvent[key]);\r\n\t\t\t\t\t\truleItem.Tevent = {...ruleItem.Tevent, ...parentContextFields};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(Object.keys(contextEcommerceFields).length) {\r\n\t\t\t\t\t \r\n\t\t\t\t \t\tObject.keys(contextEcommerceFields)\r\n\t\t\t\t\t\t\t.filter(key => key in parentContextEvent.ecommerce)\r\n\t\t\t\t\t\t\t.forEach((key)=> contextEcommerceFields[key] = parentContextEvent.ecommerce[key]);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tObject.keys(ruleItem.Tevent.ecommerce)\r\n\t\t\t\t\t\t\t.filter(key => key in contextEcommerceFields)\r\n\t\t\t\t\t\t\t.forEach((key, i) => {\r\n\t\t\t\t\t\t\t\truleItem.Tevent.ecommerce[key] = contextEcommerceFields[key]\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(eventParams && Object.keys(eventParams)) {\r\n\t\t\t\t\t\tconst domAttrKey = Object.keys(eventParams).find(key => eventParams[key].includes(this.options.getAttributeValueFromDom));\r\n\t\t\t\t\t\tconst contextKey = Object.keys(eventParams).find(key => eventParams[key].includes(this.options.contextTDataText));\r\n\r\n\t\t\t\t\t\tif(eventParams?.navigation == this.options.navigation) {\r\n\t\t\t\t\t\t\teventParams.navigation = this.getEventType(event)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(eventParams?.photo_size == this.options.photo_size) {\r\n\t\t\t\t\t\t\teventParams.photo_size = this.getImageSize(event)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(domAttrKey) {\r\n\t\t\t\t\t\t\teventParams[domAttrKey] = this.getAttrValFromDom(eventParams[domAttrKey])\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(contextKey){\r\n\t\t\t\t\t\t\tconst parentContextEvent = this.getTeventFromContext(target, \"GA4 Container Context\");\r\n\t\t\t\t\t\t\teventParams[contextKey] = parentContextEvent[contextKey]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(conditionClass && conditionClass.includes(\"!\")) {\r\n\t\t\t\t\t\tlet selector = conditionClass.split(\"!\")[1];\r\n\t\t\t\t\t\tconst element = getClosest(target, selector);\r\n\t\t\t\t\t\t!element && addLayer(ruleItem.Tevent) && console.log('tracking on Expanded');\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (conditionClass && !conditionClass.includes(\"!\")) {\r\n\t\t\t\t\t\tconst element = getClosest(target, conditionClass);\r\n\t\t\t\t\t\telement && addLayer(ruleItem.Tevent) && console.log('tracking on Collapse');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconsole.log('eventAction push', ruleItem.Tevent);\r\n\t\t\t\taddLayer(ruleItem.Tevent);\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tconsole.warn(`Item ${target} has no tracking data`, itemTrackingData);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hasItemTrackingContext(eventAction: string, str: string): boolean {\r\n\t\treturn eventAction ? eventAction.includes(str) : false;\r\n\t}\r\n\r\n\tprivate getParentContextFields(event: DataLayerG4Options): DataLayerG4Options | {} {\r\n\t\tif (event == null) return {}; \r\n\t\tconst fields = Object.fromEntries(Object.entries(event).filter(([key, keyValue]) => keyValue === this.options.contextTDataText));\r\n\t\treturn Object.keys(fields).length ? fields : {}\r\n\t}\r\n\r\n\tprivate splitString(string) {\r\n\t\treturn string.replace(/[\\[\\]']+/g, '').split('|');\r\n\t}\r\n\r\n\tprivate getItemTrackingData(item: HTMLElement): TrackingData[] {\r\n\t\tconst element = item.closest(`[${this.options.itemTDataSelector}]`),\r\n\t\t\tgetDataFromAtribute = element ? element.getAttribute(`${this.options.itemTDataSelector}`) : null;\r\n\t\tlet trackDataObj = null;\r\n\r\n\t\tif (element) {\r\n\t\t\ttrackDataObj = this.getJsonObject(getDataFromAtribute);\r\n\t\t}\r\n\r\n\t\treturn trackDataObj;\r\n\t}\r\n\r\n\tprivate getTeventFromContext(item: HTMLElement, contextProvider: string) {\r\n\t\tconst element = item.closest(`[${this.options.contextTDataSelector}]`),\r\n\t\t\tgetDataFromAtribute = element ? element.getAttribute(`${this.options.contextTDataSelector}`) : null;\r\n\t\tlet trackingData: TrackingData;\r\n\r\n\t\tif (element && getDataFromAtribute) {\r\n\t\t\tconst data = this.getJsonObject(getDataFromAtribute);\r\n\t\t\ttrackingData = data.find(item => item.Rule === contextProvider)\r\n\t\t}\r\n\r\n\t\treturn trackingData ? trackingData.Tevent : null;\r\n\t}\r\n\r\n\tprivate getEventFromFieldOrStorage(string: string): boolean {\r\n\t\treturn string !== undefined && string.includes(this.options.fieldOrStorageText);\r\n\t}\r\n\r\n\tprivate getCheckedInput(inputName): HTMLInputElement {\r\n\t\treturn document.querySelector(`input[name='${inputName}']:checked`);\r\n\t}\r\n\r\n\tprivate getJsonObject(data): TrackingData[] {\r\n\t\treturn parseJSONSafe(this.escapeSingleQuote(data)) ? parseJSONSafe(this.escapeSingleQuote(data)) : [];\r\n\t}\r\n\r\n\tprivate escapeSingleQuote(string): string {\r\n\t\treturn string.replace(/'/g, '\\'');\r\n\t}\r\n\r\n\tprivate pushEventLayer(itemTdata: TrackingData[]): void {\r\n\t\titemTdata.forEach((ruleItem: TrackingData, i) => {\r\n\t\t\tlet eventAction: string = ruleItem.Tevent?.eventAction;\r\n\r\n\t\t\tif (this.getEventFromFieldOrStorage(eventAction)) {\r\n\t\t\t\tconst splitString = this.splitString(eventAction),\r\n\t\t\t\t\tcheckedInputLocaly = window.localStorage.getItem(splitString[2]);\r\n\t\t\t\truleItem.Tevent.eventAction = checkedInputLocaly ? checkedInputLocaly : null;\r\n\t\t\t}\r\n\r\n\t\t\taddLayer(ruleItem.Tevent);\r\n\t\t})\r\n\t}\r\n\r\n\tprivate getEventType(event): string {\r\n\t\treturn event.type;\r\n\t}\r\n\r\n\tprivate getImageSize(event: Event): string {\r\n\t\tconst target = event.target as HTMLElement;\r\n\t\treturn target.closest('.nx-layer') ? 'enlarged': 'standard' //enlarged is used for pdp stage gallery layer, standart is used for other sliders\r\n\t}\r\n\r\n\tprivate getAttrValFromDom(stringNotFiltered: string): string | null {\r\n\t\tconst stringSel = stringNotFiltered.includes('|') ? stringNotFiltered.split('|')[1] : \"\";\r\n\t\tconst filteredString = stringSel?.replace(/[\\[\\]{}]/g, '')?.split(\"?\");\r\n\t\tconst selector = filteredString.length > 0 ? filteredString[0] : null;\r\n\t\tconst dataAttr = filteredString.length > 1 ? filteredString[1] : null;\r\n\t\tconst nodeElement = selector && document.querySelector(selector);\r\n\t\tconst value = nodeElement && nodeElement.getAttribute(dataAttr);\r\n\r\n\t\t!selector && console.warn('selector not found for data attribute', dataAttr);\r\n\t\t!value && console.warn(\"valueFromDom not found into selector\");\r\n\t\t \r\n\t\treturn value;\r\n\t}\r\n\r\n\tprivate getDefaultOptions() {\r\n\t\treturn {\r\n\t\t\ttrackingSelector: \"[data-tdata]\",\r\n\t\t\titemTDataSelector: \"data-tdata\",\r\n\t\t\tcontextTDataSelector: \"data-tcontext\",\r\n\t\t\tcontextTDataText: '[[GetActionFromParentContext]]',\r\n\t\t\tfieldOrStorageText: 'GetFromFieldOrStorage',\r\n\t\t\tphoto_size: '[[GalleryAndSliderIneraction|{{media_size}}]]',\r\n\t\t\tnavigation: '[[GalleryAndSliderIneraction|{{event_type}}]]',\r\n\t\t\tgetAttributeValueFromDom: 'GetAttributeValueFromDom'\r\n\t\t}\r\n\t}\r\n}"],"names":["BasicTracking","constructor","getOptions","this","options","Object","assign","getDefaultOptions","document","addEventListener","init","Array","from","querySelectorAll","trackingSelector","filter","node","dataset","trackingInitialized","forEach","element","getData","getAttribute","itemTDataSelector","jsonData","escapeSingleQuote","trackingdata","getJsonObject","length","showEventsTdata","item","Ttrigger","clickEventsWithThint","hasOwnProperty","clickEventsWithOutThint","formSubmittedEventsTdata","ruleItem","selector","Thint","querySelector","event","clickHandler","Rule","console","warn","then","pushEventLayer","filterRule","target","closest","itemTrackingData","getItemTrackingData","i","eventAction","Tevent","isUAEvent","includes","isG4Event","getEventFromFieldOrStorage","splitString","inputName","checkedInput","getCheckedInput","checkedInputLocaly","window","localStorage","getItem","setItem","value","hasItemTrackingContext","contextTDataText","parentEventAction","getTeventFromContext","split","join","parentContextFields","getParentContextFields","contextEcommerceFields","ecommerce","parentContextEvent","eventParams","parameters","conditionClass","Tcondition","keys","key","domAttrKey","find","getAttributeValueFromDom","contextKey","navigation","getEventType","photo_size","getImageSize","getAttrValFromDom","log","str","fields","fromEntries","entries","keyValue","string","replace","getDataFromAtribute","trackDataObj","contextProvider","contextTDataSelector","trackingData","undefined","fieldOrStorageText","data","itemTdata","type","stringNotFiltered","stringSel","filteredString","dataAttr","nodeElement"],"sourceRoot":""}