{"version":3,"sources":["webpack:///./src/ts/entries/tracking.ts"],"names":["attributes","onviewport","onviewportIntersection","window","oj","initialized","config","impressionItemData","impressionListData","observer","IntersectionObserver","entries","filter","forEach","target","intersectionRatio","vpRatio","getAttribute","vpInter","vp","Function","err","console","error","unobserve","threshold","addEventListener","observeOnViewportElements","node","querySelectorAll","map","x","join","observe","MutationObserver","HTMLElement","document","body","childList","subtree","values","Object","data","model","items","flatMap","y","item_list_name","list","ojtag","event","debug","log","impressionReview","impressionItem","listId","push","impressionList","find","initialize","e","localStorage","getItem","consent","status","marketing","necessary","preferences","statistics","every","setItem"],"mappings":"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","file":"48.0e6ce4b6afb9bd2c54a3.chunk.js","sourcesContent":["\r\nimport type * as TrackingTypes from \"./trackingTypes\"\r\nimport { IItem } from \"./trackingTypes\"\r\n\r\ndeclare global {\r\n interface Window {\r\n ojtag: (event: string, data: any) => any\r\n GTM_CUSTOMER: TrackingTypes.IGTMCustomer\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n oj: IOJ\r\n }\r\n}\r\n\r\ninterface ITrackingModel {\r\n items: T[]\r\n}\r\n\r\ninterface ITrackingEvent {\r\n event: TrackingTypes.TrackingEvent\r\n}\r\n\r\ninterface IEventData {\r\n model: ITrackingModel\r\n list?: string\r\n}\r\n\r\ntype ImpressionFn = (\r\n event: TrackingTypes.TrackingEvent,\r\n model: ITrackingModel,\r\n list: string,\r\n) => void\r\n\r\ntype ImpressionItemData = Partial>\r\ntype ImpressionListData = (ITrackingEvent & IEventData)[]\r\n\r\ninterface IConfig {\r\n intersectionRatio?: number\r\n debug?: boolean\r\n}\r\n\r\ninterface IOJBase {\r\n config?: IConfig\r\n initialized?: boolean\r\n}\r\n\r\ninterface IOJInitialized extends IOJBase {\r\n impressionReview: ImpressionFn\r\n impressionItem: ImpressionFn\r\n impressionList: ImpressionFn\r\n impressionItemData: ImpressionItemData\r\n impressionListData: ImpressionListData\r\n observer: IntersectionObserver\r\n}\r\n\r\ntype IOJ = IOJInitialized\r\n\r\nconst attributes = [\r\n \"data-onviewport\",\r\n \"data-onviewportintersection\"\r\n]\r\n\r\nconst [onviewport, onviewportIntersection] = attributes\r\n\r\nconst initialize = (config?: IConfig) => {\r\n\r\n const impressionReview: ImpressionFn = (event, model) => {\r\n window.ojtag(event, model)\r\n }\r\n\r\n const impressionItemData: ImpressionItemData = {}\r\n const impressionItem: ImpressionFn = (event, model, listId) => {\r\n event in impressionItemData\r\n ? impressionItemData[event]!.model.items.push(...model.items)\r\n : (impressionItemData[event] = { model, list: listId })\r\n\r\n if (config?.debug)\r\n console.log(\"Got impression item\", impressionItemData)\r\n }\r\n\r\n const impressionListData: ImpressionListData = []\r\n const impressionList: ImpressionFn = (event, model, listId?) => {\r\n if (!impressionListData.find(x => x.list === listId))\r\n impressionListData.push({ event, model, list: listId })\r\n\r\n if (config?.debug)\r\n console.log(\"Got impression list\", impressionListData)\r\n }\r\n\r\n const observer = new IntersectionObserver(\r\n (entries: IntersectionObserverEntry[], observer: IntersectionObserver) =>\r\n entries\r\n .filter(({ isIntersecting }) => isIntersecting)\r\n .forEach(({ target, intersectionRatio }) => {\r\n const vpRatio = target.getAttribute(onviewport)!\r\n const vpInter = target.getAttribute(onviewportIntersection)!\r\n\r\n if (vpInter || (vpRatio && intersectionRatio >= (config?.intersectionRatio ?? 0.5))) {\r\n const vp = vpInter || vpRatio\r\n try {\r\n new Function(`'use strict'; ${vp};`)()\r\n } catch (err) {\r\n console.error(err, `func: ${vp}`)\r\n }\r\n\r\n observer.unobserve(target)\r\n }\r\n }),\r\n {\r\n threshold: [0, (config?.intersectionRatio ?? 0.5)],\r\n }\r\n )\r\n\r\n window.addEventListener(\"load\", () => {\r\n const observeOnViewportElements = (node: Document | Element) =>\r\n node.querySelectorAll(attributes.map(x => `[${x}]`).join(\", \")).forEach((x) => observer.observe(x))\r\n\r\n new MutationObserver((entries) =>\r\n entries\r\n .filter(({ target, type }) => type === \"childList\" && target instanceof HTMLElement)\r\n .forEach(({ target }) => observeOnViewportElements(target as HTMLElement))\r\n ).observe(document.body, { childList: true, subtree: true })\r\n\r\n observeOnViewportElements(document)\r\n })\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n const values = Object.values(impressionItemData)\r\n const data = impressionListData\r\n .map((x) => ({\r\n ...x,\r\n model: {\r\n ...x.model,\r\n items: values\r\n .flatMap((x) => x.model.items)\r\n .filter(y => y.item_list_name === x.list)\r\n },\r\n }))\r\n\r\n data.forEach((x) => window.ojtag(x.event, x.model))\r\n\r\n if (config?.debug) {\r\n console.log(\"Impression data\", data)\r\n return \"Impression data send\";\r\n }\r\n })\r\n\r\n return {\r\n initialized: true,\r\n impressionReview,\r\n impressionItem,\r\n impressionItemData,\r\n impressionList,\r\n impressionListData,\r\n observer,\r\n config\r\n }\r\n}\r\n\r\ntry {\r\n if (!window.oj?.initialized) window.oj = initialize(window.oj.config)\r\n}\r\ncatch (e) {\r\n console.error(`[OJ Tracking]`, e)\r\n}\r\n\r\nwindow.addEventListener('CookiebotOnAccept', function (e) {\r\n if (localStorage.getItem(\"cookieConsentStatus\"))\r\n return\r\n\r\n const consent = window[\"Cookiebot\"]?.consent;\r\n const statusArray = [consent.marketing, consent.necessary, consent.preferences, consent.statistics]\r\n const status = statusArray.every(x => x) ? '1' : '0';\r\n\r\n window[\"dataLayer\"].push({\r\n 'event': 'acceptCookies',\r\n 'cookieConsentStatus': status\r\n });\r\n\r\n localStorage.setItem(\"cookieConsentStatus\", status)\r\n}, false);\r\n\r\n// window.addEventListener('CookiebotOnDecline', function (e) {\r\n// window[\"dataLayer\"].push({\r\n// 'event': 'refuseCookies',\r\n// 'cookieConsentStatus': '0'\r\n// });\r\n\r\n// localStorage.setItem(\"cookieConsentStatus\", \"0\")\r\n// }, false);\r\n\r\n\r\n"],"sourceRoot":""}