{"version":3,"file":"oneblock-widgets-DKKuER_J.js","sources":["../../../../Coloplast.UI/src/oneblock/assets/js/oneblock-tracking.mjs","../../../../Coloplast.UI/src/oneblock/assets/js/oneblock-widgets.mjs"],"sourcesContent":["\r\nimport Cookies from 'js-cookie';\r\nimport { cookieNames, trackingDimensionConstants, trackingOrderTypes } from 'shared/settings/constants';\r\n\r\nexport function getVisitorID() {\r\n let cookies = document.cookie.split(';')\r\n let visitorId = '';\r\n let regex = /^\\s?VisitorID=(.*)/;\r\n cookies.forEach((cookie) => {\r\n let match = regex.exec(cookie);\r\n if (match) {\r\n visitorId = match[1];\r\n }\r\n })\r\n return visitorId;\r\n}\r\n\r\nexport function track(payload, callback, event) {\r\n window.dataLayer = window.dataLayer || [];\r\n if (window.google_tag_manager && callback) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n payload.eventCallback = callback;\r\n }\r\n window.dataLayer.push(payload);\r\n console.debug(JSON.stringify(payload));\r\n}\r\n\r\nexport function trackInteractionEvent(eventCategory, eventAction, eventLabel) {\r\n let payload = {\r\n event: 'interactionEvent',\r\n eventcategory: eventCategory,\r\n eventaction: eventAction,\r\n eventlabel: eventLabel,\r\n eventnoninteraction: false,\r\n }\r\n track(payload);\r\n}\r\n\r\nexport function getOneBlockTrackingStrings(ob) {\r\n const headlineElm = ob.querySelector('.c-ob__headline');\r\n const headline = headlineElm ? headlineElm.innerText : '';\r\n const sectionElm = ob.closest('.c-section');\r\n const sectionHeadlineElm = sectionElm ? sectionElm.querySelector('.c-section__headline') : null;\r\n const sectionHeadline = sectionHeadlineElm ? sectionHeadlineElm.innerText : '';\r\n let headlines = [];\r\n if (sectionHeadline) {\r\n headlines.push(sectionHeadline);\r\n }\r\n if (headline) {\r\n headlines.push(headline);\r\n }\r\n const culture = getCulture();\r\n\r\n return {\r\n action: `${headlines.join(' | ')} ${culture} ${location.pathname}`,\r\n headline,\r\n allHeadlines: headlines.join(' | '),\r\n culture,\r\n pathname: location.pathname,\r\n pageType: getPageType(),\r\n visitorID: getVisitorID(),\r\n label: getVisitorID(),\r\n }\r\n}\r\n\r\nexport function getCulture() {\r\n return document.documentElement.getAttribute('lang');\r\n}\r\n\r\nexport function getPageType() {\r\n const pageTypeEntry = window.dataLayer.find((entry) => entry.hasOwnProperty('PageType'));\r\n return pageTypeEntry ? pageTypeEntry.PageType : '';\r\n}\r\n\r\nexport function oneBlockBuildLineItemTrackingParameters() {\r\n return {\r\n dimension9: trackingDimensionConstants.NO_DATA,\r\n dimension10: trackingOrderTypes.NEW_ORDER,\r\n dimension11: trackingDimensionConstants.NO_DATA,\r\n };\r\n}\r\n","/* eslint no-empty: [\"error\", { \"allowEmptyCatch\": true }] */\r\n\r\n/**\r\n * OneBlock Widgets.\r\n * @module oneblock-widgets.mjs\r\n * @version 1.0.03\r\n * @summary 23-10-2019\r\n * @author Mads Stoumann\r\n * @description Custom Widgets and extensions for OneBlock, can be added though data-js, data-js-event and data-js-param.\r\n * NOTE: Either import or paste the code for custom widgets in this module.\r\n */\r\n\r\nimport { oneBlockBuildLineItemTrackingParameters } from './oneblock-tracking.mjs';\r\nimport { track_add_to_cart } from 'shared/services/tracking/basketTrackingService.ts';\r\n\r\n/**\r\n * @function countDown\r\n * @param {Event} event\r\n * @param {Node} hook\r\n * @param {String} selector\r\n * @param {String} timeStamp\r\n * @param {String} lblDays\r\n * @param {String} lblHours\r\n * @param {String} lblMins\r\n * @param {String} lblSecs\r\n * @description Renders a countDown-widget in `selector`-element. Creadits to: https://codepen.io/SitePoint/pen/QpwRxz\r\n */\r\n\r\nexport function countDown(\r\n\tevent,\r\n\thook,\r\n\tselector,\r\n\ttimeStamp,\r\n\tlblDays,\r\n\tlblHours,\r\n\tlblMins,\r\n\tlblSecs\r\n) {\r\n\tconst ob = hook.closest('.c-ob');\r\n\tif (!ob) {\r\n\t\treturn false;\r\n\t}\r\n\tconst clock = ob.querySelector(`.${selector}`);\r\n\tconst endTime = new Date(timeStamp).getTime();\r\n\r\n\tfunction getRemainingTime(deadline) {\r\n\t\tconst currentTime = new Date().getTime();\r\n\t\treturn deadline - currentTime;\r\n\t}\r\n\r\n\tfunction pad(value) {\r\n\t\treturn ('0' + Math.floor(value)).slice(-2);\r\n\t}\r\n\r\n\tfunction showTime() {\r\n\t\tconst remainingTime = getRemainingTime(endTime);\r\n\t\tconst seconds = pad((remainingTime / 1000) % 60);\r\n\t\tconst minutes = pad((remainingTime / (60 * 1000)) % 60);\r\n\t\tconst hours = pad((remainingTime / (60 * 60 * 1000)) % 24);\r\n\t\tconst days = pad(remainingTime / (24 * 60 * 60 * 1000));\r\n\t\tclock.innerHTML = `\r\n\t\t