{"version":3,"sources":["FocusSpot.js","SpotAutoTagging.js"],"names":["defineDs","document","addEventListener","querySelectorAll","forEach","image","parentNode","style","overflow","classList","remove","Ensighten","DOMUtils","addEventListeners","event","$parent","target","closest","promoClickTracking","promoElement","dataTrackingPos","$elementsList","lastItemVerticalPos","currentItemVerticalPos","currentRow","currentItemPos","element","offsetTop","promotions","name","dataset","trackingBrand","creative","trackingName","position","pushPromoClick","usedEventArray","areElementsInView","elements","$elementList","key","rect","getBoundingClientRect","elemTop","top","elemBottom","bottom","window","innerHeight","isScrolledIntoView","indexOf","push","pushPromoView","linkUrl","dataTrackingKey","sublinkWithParams","getAttribute","$linkItem","querySelector","href","splitLink","split","mainLink","subLink","subLinkParam","i","length","hashParam","setAttribute"],"mappings":"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","file":"region-frontpage.js","sourcesContent":["defineDs('DanskeSpil/Domain/FrontPage/Scripts/FocusSpot', function () {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n\r\n // Elements:\r\n var responsiveImages = document.querySelectorAll('.js-responsive-image, .js-feed-error-img');\r\n\r\n // Functions:\r\n var init = function () {\r\n responsiveImages.forEach(function (image) {\r\n image.parentNode.style.overflow = 'hidden';\r\n\r\n image.addEventListener('load', function () {\r\n image.classList.remove('responsive-image-hidden');\r\n });\r\n });\r\n };\r\n\r\n init();\r\n\r\n });\r\n});\r\n","defineDs('DanskeSpil/Domain/MarketingSpots/Scripts/SpotAutoTagging',\r\n [\r\n 'Shared/Framework/Ensighten/Scripts/Ensighten',\r\n 'Shared/Framework/Mithril/Scripts/Helpers/DOMUtils',\r\n ],\r\n function (Ensighten, DOMUtils) {\r\n // click on promo event\r\n DOMUtils.addEventListeners(document.querySelectorAll('.js-trackable-link'), 'click', (event) => {\r\n var $parent = event.target.closest('.js-trackable');\r\n promoClickTracking($parent);\r\n });\r\n\r\n var promoClickTracking = function (promoElement) {\r\n var $elementsList = document.querySelectorAll('.js-trackable');\r\n var lastItemVerticalPos = -1;\r\n var currentItemVerticalPos = 0;\r\n var currentRow = 0;\r\n var currentItemPos = 1;\r\n var dataTrackingPos;\r\n\r\n $elementsList.forEach((element) => {\r\n currentItemVerticalPos = element.offsetTop;\r\n\r\n if (currentItemVerticalPos === lastItemVerticalPos) {\r\n currentItemPos++;\r\n } else {\r\n if (lastItemVerticalPos !== -1) currentRow++;\r\n currentItemPos = 1;\r\n lastItemVerticalPos = currentItemVerticalPos;\r\n }\r\n if (element === promoElement) {\r\n dataTrackingPos = 'r' + (currentRow < 10 ? '0' : '') + currentRow + '_e' + (currentItemPos < 10 ? '0' : '') + currentItemPos;\r\n\r\n var promotions = [\r\n {\r\n name: element.dataset.trackingBrand,\r\n creative: element.dataset.trackingName,\r\n position: dataTrackingPos\r\n }\r\n ];\r\n\r\n Ensighten.pushPromoClick(promotions);\r\n }\r\n });\r\n };\r\n\r\n // Scroll into viewport detection\r\n var usedEventArray = [];\r\n\r\n const isScrolledIntoView = (element) => {\r\n const rect = element.getBoundingClientRect();\r\n const elemTop = rect.top;\r\n const elemBottom = rect.bottom;\r\n return (elemTop >= 0) && (elemBottom <= window.innerHeight);\r\n };\r\n\r\n const areElementsInView = (elements) => {\r\n var $elementList = document.querySelectorAll(elements);\r\n var lastItemVerticalPos = -1;\r\n var currentItemVerticalPos = 0;\r\n var currentRow = 0;\r\n var currentItemPos = 1;\r\n var dataTrackingPos;\r\n\r\n $elementList.forEach((element) => {\r\n var key = element.dataset.trackingBrand + element.dataset.trackingName;\r\n\r\n currentItemVerticalPos = element.offsetTop;\r\n\r\n if (currentItemVerticalPos === lastItemVerticalPos) {\r\n currentItemPos++;\r\n } else {\r\n if (lastItemVerticalPos !== -1) currentRow++;\r\n currentItemPos = 1;\r\n lastItemVerticalPos = currentItemVerticalPos;\r\n }\r\n\r\n if (isScrolledIntoView(element)) {\r\n if (usedEventArray.indexOf(key) < 0) {\r\n usedEventArray.push(key);\r\n\r\n dataTrackingPos = 'r' + (currentRow < 10 ? '0' : '') + currentRow + '_e' + (currentItemPos < 10 ? '0' : '') + currentItemPos;\r\n\r\n var promotions = [\r\n {\r\n name: element.dataset.trackingBrand,\r\n creative: element.dataset.trackingName,\r\n position: dataTrackingPos\r\n }\r\n ];\r\n\r\n Ensighten.pushPromoView(promotions);\r\n }\r\n }\r\n });\r\n };\r\n\r\n document.addEventListener('scroll', () => {\r\n areElementsInView('.js-trackable');\r\n });\r\n\r\n var buildTrackingLink = function () {\r\n // Still in use per 6/8-2019 (used intensely on the \"old\" frontpage)\r\n\r\n var $elementList = document.querySelectorAll('.js-trackable');\r\n var lastItemVerticalPos = -1;\r\n var currentItemVerticalPos = 0;\r\n var currentRow = 0;\r\n var currentItemPos = 1;\r\n var linkUrl;\r\n var dataTrackingKey;\r\n var dataTrackingPos;\r\n\r\n $elementList.forEach((element) => {\r\n\r\n currentItemVerticalPos = element.offsetTop;\r\n\r\n if (currentItemVerticalPos == lastItemVerticalPos) {\r\n currentItemPos++;\r\n } else {\r\n if (lastItemVerticalPos != -1) currentRow++;\r\n currentItemPos = 1;\r\n lastItemVerticalPos = currentItemVerticalPos;\r\n }\r\n\r\n dataTrackingPos = 'r' + (currentRow < 10 ? '0' : '') + currentRow + '_e' + (currentItemPos < 10 ? '0' : '') + currentItemPos;\r\n dataTrackingKey = dataTrackingPos + '__' + element.getAttribute('data-tracking-key');\r\n\r\n var sublinkWithParams = '';\r\n\r\n if (dataTrackingKey) {\r\n\r\n var $linkItem = element.querySelector('.js-trackable-link');\r\n linkUrl = $linkItem?.href;\r\n\r\n if (!linkUrl) return;\r\n\r\n if (linkUrl.indexOf('?') > -1) {\r\n\r\n var splitLink = linkUrl.split('?');\r\n var mainLink = splitLink[0];\r\n var subLink = splitLink[1];\r\n\r\n if (linkUrl.indexOf('intcmp') > -1) {\r\n\r\n var subLinkParam = subLink.split('&');\r\n\r\n for (var i = 0; i < subLinkParam.length; i++) {\r\n if (subLinkParam[i].indexOf('intcmp') > -1) {\r\n if (subLinkParam[i].indexOf('#') > -1) {\r\n var hashParam = subLinkParam[i].split('#');\r\n hashParam = hashParam[1];\r\n subLinkParam[i] = 'intcmp=' + dataTrackingKey + '#' + hashParam;\r\n } else {\r\n subLinkParam[i] = 'intcmp=' + dataTrackingKey;\r\n }\r\n }\r\n sublinkWithParams += subLinkParam[i] + (i == subLinkParam.length - 1 ? '' : '&');\r\n }\r\n } else {\r\n sublinkWithParams = subLink + '&intcmp=' + dataTrackingKey;\r\n }\r\n $linkItem.href = mainLink + '?' + sublinkWithParams;\r\n\r\n } else {\r\n\r\n $linkItem.setAttribute('href', linkUrl + '?intcmp=' + dataTrackingKey);\r\n }\r\n }\r\n });\r\n };\r\n\r\n var init = function () {\r\n buildTrackingLink();\r\n };\r\n\r\n init();\r\n });\r\n"]}