{"version":3,"sources":["app.base.js","loadingOverlay.js","toast.js","cookiePopup.js","dataLayer.js","general.js","dashboard.init.js"],"names":["breakpoint_sm","breakpoint_md","breakpoint_lg","breakpoint_xl","breakpoint_xxl","breakpoint_xs_max","breakpoint_sm_max","breakpoint_md_max","breakpoint_lg_max","breakpoint_xl_max","window","NodeList","prototype","forEach","Array","util","frontEndVersion","debugMode","uiCulture","uiLanguage","homePageId","path","youTubeRegex","vimeoRegex","getVersionedUrl","url","this","onDocumentReady","callback","document","readyState","addEventListener","endsWith","str","lookup","indexOf","length","startsWith","escapeRegExp","replace","isValidEmail","email","test","getCookie","name","parts","cookie","split","undefined","pop","shift","setCookie","value","expiryDays","domain","let","expirationDate","Date","setDate","getDate","toUTCString","push","join","deleteCookie","deepExtend","Object","assign","target","i","arguments","key","source","hasOwnProperty","call","apply","isPlainObject","obj","constructor","isMobile","navigator","userAgent","isIE","isEdge","getQueryString","results","RegExp","exec","location","href","getAnchor","urlParts","URL","debounce","func","timeout","_this","timer","args","clearTimeout","setTimeout","debounceLeading","_this2","addGlobalEventListener","type","selector","event","matches","getVideoEmbedHtmlFromUrl","youTubeMatch","vimeoMatch","dnt","hasCookieConsent","toString","slideUp","duration","cb","style","transitionProperty","transitionDuration","boxSizing","height","offsetHeight","overflow","paddingTop","paddingBottom","marginTop","marginBottom","display","visibility","removeProperty","slideDown","getComputedStyle","opacity","slideToggle","areEqualArrays","first","second","includes","scrollContainerTo","container","offset","contains","scrollTo","top","offsetTop","behavior","isKeyboardEvent","KeyboardEvent","clientX","clientY","category","updateCookieConsent","ccPopup","acceptCategory","app","LoadingOverlay","opts","querySelector","styleProperty","onClose","targetElement","targetPositionStyle","position","element","currentStyle","defaultView","getPropertyValue","overlay","createElement","classList","add","tagName","minHeight","overlayIcon","close","remove","removeChild","innerHTML","appendChild","module","exports","Toast","message","status","closeLabel","toastTimeout","toast","closeButton","toastMessage","setAttribute","toastContainer","e","preventDefault","toastWrapper","parentNode","insertBefore","children","ccConfig","ccContainer","cookiePopup","init","js","getElementById","showConsoleLog","enableDataLayerEvents","theme","content","infoLinkHref","infoLinkTarget","onInitialise","state","onStatusChange","chosenBefore","dataLayer","consent","grantedCategories","onPopupOpen","onPopupClose","id","defer","src","dataset","after","console","log","open","pushEvent","eventName","gtmEvent","querySelectorAll","pathname","getAttribute","pagePart","gtmInitialized","general","updateAppHeight","dashboard","documentElement","setProperty","innerHeight","innerWidth","version","reload","initAppHeight","passive","body","min","culture","homepageId","info","error","videos","index","toastType","toLowerCase","ljs","load","accordion","VideoLightbox"],"mappings":"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","file":"../dashboard.min.js","sourcesContent":["/* ========================================================================\r\n Breakpoints\r\n ========================================================================== */\r\n\r\nvar breakpoint_sm = '(min-width: 576px)';\r\nvar breakpoint_md = '(min-width: 768px)';\r\nvar breakpoint_lg = '(min-width: 992px)';\r\nvar breakpoint_xl = '(min-width: 1200px)';\r\nvar breakpoint_xxl = '(min-width: 1400px)';\r\n\r\nvar breakpoint_xs_max = '(max-width: 575.98px)';\r\nvar breakpoint_sm_max = '(max-width: 767.98px)';\r\nvar breakpoint_md_max = '(max-width: 991.98px)';\r\nvar breakpoint_lg_max = '(max-width: 1199.98px)';\r\nvar breakpoint_xl_max = '(max-width: 1399.98px)';\r\n\r\n/* ========================================================================\r\n Polyfills\r\n ========================================================================== */\r\n\r\nif (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}\r\n\r\n/* ========================================================================\r\n Utilities\r\n ========================================================================== */\r\n\r\nconst util = {\r\n frontEndVersion: '1',\r\n debugMode: false,\r\n uiCulture: null,\r\n uiLanguage: null,\r\n homePageId: null,\r\n path: null,\r\n youTubeRegex:\r\n /https?:\\/\\/.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/|watch\\/|live\\/)|(?:(?:watch)?\\?v(?:i)?=|\\&v(?:i)?=))([^#\\&\\?\\/]*).*/i,\r\n vimeoRegex: /https?:\\/\\/(?:www.)?vimeo.com\\/(?:channels\\/(?:w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|)(\\d+)(?:|\\/?)/i,\r\n\r\n getVersionedUrl: function (url) {\r\n return url + '?cdv=' + this.frontEndVersion;\r\n },\r\n\r\n onDocumentReady: function (callback) {\r\n const isReady = document.readyState != null && document.readyState != 'loading';\r\n\r\n if (isReady) {\r\n callback();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n },\r\n\r\n endsWith: function (str, lookup) {\r\n return str.indexOf(lookup, str.length - lookup.length) !== -1;\r\n },\r\n\r\n startsWith: function (str, lookup) {\r\n return str.indexOf(lookup) === 0;\r\n },\r\n\r\n // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\r\n escapeRegExp: function (str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n },\r\n\r\n // hasClass: function (element, selector) {\r\n // let s = ' ';\r\n // return (\r\n // element.nodeType === 1 &&\r\n // (s + element.className + s)\r\n // .replace(/[\\n\\t]/g, s)\r\n // .indexOf(s + selector + s) >= 0\r\n // );\r\n // },\r\n\r\n // addClass: function (element, className) {\r\n // if (this.hasClass(element, className) === false) {\r\n // element.className += ' ' + className;\r\n // }\r\n // },\r\n\r\n // removeClass: function (element, className) {\r\n // const regex = new RegExp(\r\n // '[\\\\b|\\\\s]*' + this.escapeRegExp(className) + '[\\\\b|\\\\s]*',\r\n // 'gi'\r\n // );\r\n // element.className = element.className.replace(regex, '');\r\n // },\r\n\r\n isValidEmail: function (email) {\r\n if (!email) return false;\r\n\r\n return /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]{2,})+$/.test(email);\r\n },\r\n\r\n getCookie: function (name) {\r\n let value = '; ' + document.cookie;\r\n let parts = value.split('; ' + name + '=');\r\n return parts.length !== 2 ? undefined : parts.pop().split(';').shift();\r\n },\r\n\r\n setCookie: function (name, value, expiryDays, domain, path) {\r\n let expirationDate = new Date();\r\n expirationDate.setDate(expirationDate.getDate() + (expiryDays || 365));\r\n\r\n let cookie = [\r\n name + '=' + value,\r\n 'Expires=' + expirationDate.toUTCString(),\r\n 'Path=' + (path || '/'),\r\n 'SameSite=Lax;secure',\r\n ];\r\n\r\n if (domain) {\r\n cookie.push('Domain=' + domain);\r\n }\r\n\r\n document.cookie = cookie.join(';');\r\n },\r\n\r\n deleteCookie: function (name) {\r\n this.setCookie(name, '', -1);\r\n },\r\n\r\n deepExtend: function () {\r\n let extended =\r\n Object.assign ||\r\n function (target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n };\r\n\r\n return extended.apply(this, arguments);\r\n },\r\n\r\n isPlainObject: function (obj) {\r\n // The code \"typeof obj === 'object' && obj !== null\" allows Array objects\r\n return typeof obj === 'object' && obj !== null && obj.constructor === Object;\r\n },\r\n\r\n isMobile: function () {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n },\r\n\r\n isIE: function () {\r\n // MSIE used to detect old browsers and Trident used to newer ones\r\n return navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1;\r\n },\r\n\r\n isEdge: function () {\r\n return navigator.userAgent.indexOf('Edge/') > -1;\r\n },\r\n\r\n getQueryString: function (name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regexS = '[\\\\?&]' + name + '=([^]*)';\r\n const regex = new RegExp(regexS);\r\n let results = regex.exec(window.location.href);\r\n if (results === null) {\r\n return '';\r\n } else {\r\n return results[1];\r\n }\r\n },\r\n\r\n getAnchor: function () {\r\n const urlParts = document.URL.split('#');\r\n return urlParts.length > 1 ? urlParts[1] : null;\r\n },\r\n\r\n // sortSelect: function (el, sortVal) {\r\n // sortVal = sortVal || 'text';\r\n\r\n // // Checks for an object or string. Uses string as ID.\r\n // switch (typeof el) {\r\n // case 'string':\r\n // el = document.getElementById(el);\r\n // break;\r\n // case 'object':\r\n // if (el == null) return false;\r\n // break;\r\n // default:\r\n // return false;\r\n // }\r\n\r\n // // Builds the options list.\r\n // let arr = new Array();\r\n // for (var i = 0; i < el.options.length; i++) {\r\n // arr[i] = new Array();\r\n // arr[i][0] = el.options[i].text;\r\n // arr[i][1] = el.options[i].value;\r\n // }\r\n\r\n // // Allows sortVal to be optional, defaults to text.\r\n // switch (sortVal) {\r\n // case 'value': // sort by value\r\n // sortVal = 1;\r\n // break;\r\n // default:\r\n // // sort by text\r\n // sortVal = 0;\r\n // }\r\n\r\n // arr.sort((a, b) => {\r\n // return a[sortVal] == b[sortVal] ? 0 : a[sortVal] < b[sortVal] ? -1 : 1;\r\n // });\r\n\r\n // // Removes all options from the select.\r\n // while (el.options.length > 0) {\r\n // el.options[0] = null;\r\n // }\r\n\r\n // // Recreates all options with the new order.\r\n // for (var i = 0; i < arr.length; i++) {\r\n // var op = new Option(arr[i][0], arr[i][1]);\r\n // el.options[i] = op;\r\n // }\r\n\r\n // return true;\r\n // },\r\n\r\n // Requires `smoothscroll.js` polyfill for unsupported browsers: http://iamdustan.com/smoothscroll/\r\n // scrollTo: function (el, options) {\r\n // options = options || {};\r\n\r\n // if (el.length === 0) return;\r\n\r\n // let defaults = {\r\n // offset: 0,\r\n // pushHash: true,\r\n // };\r\n\r\n // options = util.deepExtend(defaults, options);\r\n\r\n // let hash = el.getAttribute('href');\r\n\r\n // if (hash !== '#') {\r\n // let target = document.querySelector(hash);\r\n\r\n // if (!target) {\r\n // target = document.querySelector(\r\n // 'a[name=\"' + hash.replace('#', '') + '\"]'\r\n // );\r\n // }\r\n\r\n // if (!target) return;\r\n\r\n // target.scrollIntoView({\r\n // behavior: 'smooth',\r\n // });\r\n\r\n // let elementPosition = target.offsetTop;\r\n // let offsetPosition = elementPosition - options.offset;\r\n\r\n // window.scrollTo({\r\n // top: offsetPosition,\r\n // behavior: 'smooth',\r\n // });\r\n\r\n // if (options.pushHash) {\r\n // window.location.hash = hash.replace('#', '');\r\n // }\r\n // }\r\n // },\r\n\r\n // Use `insertBefore` instead of `appendChild`: https://www.paulirish.com/2011/surefire-dom-element-insertion/\r\n // injectFile: function (path, type, ref) {\r\n // if (type == 'js') {\r\n // let el = document.createElement('script');\r\n // el.setAttribute('type', 'text/javascript');\r\n // el.setAttribute('src', path);\r\n // placeholder.parentNode.insertBefore(el, ref);\r\n // } else if (type == 'css') {\r\n // let el = document.createElement('link');\r\n // el.setAttribute('rel', 'stylesheet');\r\n // el.setAttribute('type', 'text/css');\r\n // el.setAttribute('href', path);\r\n // placeholder.parentNode.insertBefore(el, ref);\r\n // }\r\n // },\r\n\r\n // https://www.freecodecamp.org/news/javascript-debounce-example/\r\n debounce: function (func, timeout) {\r\n timeout = timeout || 250;\r\n\r\n let timer;\r\n return (...args) => {\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n func.apply(this, args);\r\n }, timeout);\r\n };\r\n },\r\n\r\n debounceLeading: function (func, timeout) {\r\n timeout = timeout || 250;\r\n\r\n let timer;\r\n return (...args) => {\r\n if (!timer) {\r\n func.apply(this, args);\r\n }\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n timer = undefined;\r\n }, timeout);\r\n };\r\n },\r\n\r\n addGlobalEventListener: function (type, selector, callback) {\r\n document.addEventListener(type, (event) => {\r\n if (event.target.matches(selector)) callback(event);\r\n });\r\n },\r\n\r\n getVideoEmbedHtmlFromUrl: function (url) {\r\n let youTubeMatch = util.youTubeRegex.exec(url);\r\n let vimeoMatch = util.vimeoRegex.exec(url);\r\n\r\n // YouTube\r\n if (youTubeMatch && youTubeMatch.length >= 2) {\r\n return (\r\n ''\r\n );\r\n }\r\n\r\n // Vimeo\r\n if (vimeoMatch && vimeoMatch.length >= 2) {\r\n const dnt = util.hasCookieConsent('analytics') ? 0 : 1;\r\n\r\n return (\r\n ''\r\n );\r\n }\r\n\r\n return '';\r\n },\r\n\r\n slideUp: function (target, duration, cb) {\r\n duration = duration || 500;\r\n\r\n target.style.transitionProperty = 'height, margin, padding, opacity';\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.boxSizing = 'border-box';\r\n target.style.height = target.offsetHeight + 'px';\r\n target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n // target.style.opacity = 0;\r\n target.style.height = 0;\r\n target.style.paddingTop = 0;\r\n target.style.paddingBottom = 0;\r\n target.style.marginTop = 0;\r\n target.style.marginBottom = 0;\r\n\r\n window.setTimeout(() => {\r\n target.style.display = 'none';\r\n target.style.visibility = 'hidden';\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n target.style.removeProperty('box-sizing');\r\n target.style.removeProperty('opacity');\r\n }, duration);\r\n\r\n if (typeof cb === 'function') {\r\n window.setTimeout(cb, duration);\r\n }\r\n },\r\n\r\n slideDown: function (target, duration, cb) {\r\n duration = duration || 500;\r\n\r\n target.style.removeProperty('display');\r\n let display = window.getComputedStyle(target).display;\r\n if (display === 'none') display = 'block';\r\n target.style.display = display;\r\n let height = target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.opacity = 0;\r\n target.style.height = 0;\r\n target.style.paddingTop = 0;\r\n target.style.paddingBottom = 0;\r\n target.style.marginTop = 0;\r\n target.style.marginBottom = 0;\r\n target.offsetHeight;\r\n target.style.boxSizing = 'border-box';\r\n target.style.transitionProperty = 'height, margin, padding, opacity';\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.height = height + 'px';\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n target.style.opacity = 1;\r\n target.style.visibility = 'visible';\r\n\r\n window.setTimeout(() => {\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n }, duration);\r\n\r\n if (typeof cb === 'function') {\r\n window.setTimeout(cb, duration);\r\n }\r\n },\r\n\r\n slideToggle: function (target, duration, cb) {\r\n duration = duration || 500;\r\n\r\n if (window.getComputedStyle(target).display === 'none') {\r\n return slideDown(target, duration, cb);\r\n } else {\r\n return slideUp(target, duration, cb);\r\n }\r\n },\r\n\r\n areEqualArrays: function (first, second) {\r\n if (first.length !== second.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < first.length; i++) {\r\n if (second.includes(first[i]) === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n scrollContainerTo: function (container, target, offset) {\r\n if (container.contains(target)) {\r\n offset = typeof offset === 'number' ? offset : 0;\r\n container.scrollTo({\r\n top: target.offsetTop - offset,\r\n behavior: 'smooth',\r\n });\r\n } else {\r\n throw 'scrollContainerTo Error: target not found in container';\r\n }\r\n },\r\n\r\n isKeyboardEvent: function (event) {\r\n return event instanceof KeyboardEvent || (event.clientX === 0 && event.clientY === 0);\r\n },\r\n\r\n hasCookieConsent: function (category) {\r\n return util.getCookie('cookieconsent_' + category) === 'accepted';\r\n },\r\n\r\n updateCookieConsent: function (category) {\r\n if (typeof ccPopup !== 'undefined') {\r\n ccPopup.acceptCategory(category);\r\n }\r\n },\r\n};\r\n\r\n/* ========================================================================\r\n Use module pattern to encapsulate JavaScript: http://bit.ly/2jM4ptd\r\n Define custom namespace\r\n ========================================================================== */\r\n\r\nvar app = app || {};\r\n","(function () {\r\n 'use strict';\r\n\r\n function LoadingOverlay(target, timeout, opts) {\r\n // Set default values\r\n target = target || document.querySelector('body');\r\n timeout = timeout || 0;\r\n\r\n opts = opts || {};\r\n\r\n let defaults = {\r\n onClose: function () {},\r\n };\r\n\r\n opts = util.deepExtend(defaults, opts);\r\n\r\n // Check if target is selector or element\r\n let targetElement;\r\n if (typeof target === 'string') {\r\n targetElement = document.querySelector(target);\r\n } else {\r\n targetElement = target;\r\n }\r\n\r\n // Save target's position style\r\n let targetPositionStyle = targetElement.style.position;\r\n\r\n // Set target's position style to relative if needed\r\n if (getStyle(targetElement, 'position') === 'static') {\r\n targetElement.style.position = 'relative';\r\n }\r\n\r\n // Create overlay\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('loadingOverlay');\r\n\r\n // Set overlay height\r\n if (targetElement.tagName === 'BODY') {\r\n overlay.style.position = 'fixed';\r\n overlay.style.height = 'var(--app-height)';\r\n overlay.style.minHeight = '100vh';\r\n } else {\r\n overlay.style.position = 'absolute';\r\n overlay.style.height = '100%';\r\n }\r\n\r\n // Create overlay icon\r\n const overlayIcon = document.createElement('div');\r\n overlayIcon.classList.add('loadingOverlay__icon');\r\n overlayIcon.innerHTML =\r\n '';\r\n\r\n // Add icon to overlay\r\n overlay.appendChild(overlayIcon);\r\n\r\n // Add overlay to target element\r\n targetElement.classList.add('loadingOverlay__container');\r\n targetElement.appendChild(overlay);\r\n\r\n // Auto-close overlay if timeout has been set\r\n if (timeout > 0) {\r\n window.setTimeout(() => {\r\n close();\r\n }, timeout);\r\n }\r\n\r\n function close() {\r\n targetElement.classList.remove('loadingOverlay__container');\r\n targetElement.removeChild(overlay);\r\n opts.onClose();\r\n\r\n if (targetPositionStyle === '') {\r\n targetElement.style.position = targetPositionStyle;\r\n } else {\r\n targetElement.style.removeProperty('position');\r\n }\r\n }\r\n\r\n function getStyle(element, styleProperty) {\r\n if (element.currentStyle) {\r\n return element.currentStyle[styleProperty];\r\n } else if (window.getComputedStyle) {\r\n return document.defaultView\r\n .getComputedStyle(element, null)\r\n .getPropertyValue(styleProperty);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return {\r\n close: close,\r\n };\r\n }\r\n\r\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = LoadingOverlay;\r\n } else {\r\n window.LoadingOverlay = LoadingOverlay;\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n function Toast(message, status, timeout, opts) {\r\n // Set default values\r\n message = message || '';\r\n status = status || 'info';\r\n timeout = timeout || 5000;\r\n\r\n opts = opts || {};\r\n\r\n let defaults = {\r\n onClose: function () {},\r\n closeLabel: 'Close notification',\r\n };\r\n\r\n opts = util.deepExtend(defaults, opts);\r\n\r\n // Used to determine whether to remove setTimeout or not\r\n let toastTimeout;\r\n\r\n // Create alert element\r\n const toast = document.createElement('div');\r\n toast.classList.add('toast__item');\r\n\r\n // Attach correct colour to alert\r\n toast.classList.add('is-' + status);\r\n\r\n // Create close button\r\n const closeButton = document.createElement('a');\r\n closeButton.classList.add('toast__close');\r\n closeButton.setAttribute('aria-label', opts.closeLabel);\r\n closeButton.href = '#';\r\n closeButton.innerHTML =\r\n '';\r\n\r\n // Add message and close button\r\n const toastMessage = document.createElement('div');\r\n toastMessage.classList.add('toast__message');\r\n toastMessage.innerHTML = message;\r\n\r\n toast.appendChild(closeButton);\r\n toast.appendChild(toastMessage);\r\n\r\n // Event listeners\r\n closeButton.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n close();\r\n });\r\n\r\n toast.addEventListener('mouseover', () => {\r\n if (toast.classList.contains('is-fade-out') === false)\r\n clearTimeout(toastTimeout);\r\n });\r\n\r\n toast.addEventListener('mouseout', () => {\r\n toastTimeout = window.setTimeout(() => {\r\n close();\r\n }, 3000);\r\n });\r\n\r\n // Prepend new alert to container\r\n let toastContainer = document.querySelector('.toast__container');\r\n let toastWrapper = document.querySelector('.toast__wrapper');\r\n\r\n // Create container if it doesn't exist\r\n if (!toastContainer) {\r\n toastContainer = document.createElement('div');\r\n toastContainer.classList.add('toast__container');\r\n\r\n toastWrapper = document.createElement('div');\r\n toastWrapper.classList.add('toast__wrapper');\r\n\r\n toastContainer.appendChild(toastWrapper);\r\n document.querySelector('body').appendChild(toastContainer);\r\n }\r\n\r\n toastWrapper.insertBefore(toast, toastWrapper.children[0]);\r\n\r\n // If they haven't clicked close within the timeout period, fade out and remove element\r\n toastTimeout = window.setTimeout(() => {\r\n close();\r\n }, timeout);\r\n\r\n function close() {\r\n if (toast.parentNode) {\r\n toast.classList.add('is-fade-out');\r\n toastTimeout = window.setTimeout(() => {\r\n toast.parentNode.removeChild(toast);\r\n opts.onClose();\r\n }, 500);\r\n }\r\n }\r\n\r\n return {\r\n close: close,\r\n };\r\n }\r\n\r\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = Toast;\r\n } else {\r\n window.Toast = Toast;\r\n }\r\n})();\r\n","/* ========================================================================\r\n Cookie popup\r\n ========================================================================== */\r\n\r\nlet ccConfig = null;\r\nlet ccContainer = null;\r\n\r\napp.cookiePopup = (function () {\r\n 'use strict';\r\n\r\n function initConfig() {\r\n ccConfig = {\r\n showConsoleLog: true,\r\n enableDataLayerEvents: true,\r\n position: 'bottom-left',\r\n theme: 'custom',\r\n cookie: {\r\n name: 'cookieconsent_status_v3',\r\n },\r\n content: {\r\n infoLinkHref: 'https://www.thebe.nl/cookieverklaring/',\r\n infoLinkTarget: '_blank',\r\n },\r\n // blacklistPage: ['/cookieverklaring/'],\r\n\r\n onInitialise: function (state, status) {},\r\n onStatusChange: function (state, status, chosenBefore) {\r\n // DATALAYER\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n event: 'cookieMelding',\r\n consent: state.grantedCategories.join(),\r\n });\r\n },\r\n onPopupOpen: function (state, status) {},\r\n onPopupClose: function (state) {},\r\n };\r\n }\r\n\r\n function loadPopupScript() {\r\n let js = document.createElement('script');\r\n js.id = 'ccPopupScript';\r\n js.defer = 'true';\r\n js.src = ccContainer.dataset.src;\r\n\r\n ccContainer.after(js);\r\n ccContainer.remove();\r\n }\r\n\r\n function open() {\r\n if (typeof ccPopup !== 'undefined') {\r\n ccPopup.open();\r\n }\r\n }\r\n\r\n function init() {\r\n ccContainer = document.getElementById('ccPopup');\r\n\r\n if (!ccContainer) {\r\n console.log('Cookie popup: container is missing!');\r\n return;\r\n }\r\n\r\n initConfig();\r\n loadPopupScript();\r\n }\r\n\r\n // Expose public functions and variables\r\n return {\r\n init: init,\r\n open: open,\r\n };\r\n})();\r\n","/* ========================================================================\r\n Data Layer (GTM)\r\n ========================================================================== */\r\n\r\napp.dataLayer = (function () {\r\n 'use strict';\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n const init = function () {\r\n const gtmElements = document.querySelectorAll('[data-gtm-event]:not([data-gtm-initialized])');\r\n\r\n gtmElements.forEach((element) => {\r\n element.addEventListener('click', (event) => {\r\n let eventName = element.dataset.gtmEvent ? element.dataset.gtmEvent : '';\r\n\r\n if (eventName === '') return;\r\n let args = {};\r\n\r\n args['pageUrl'] = window.location.pathname;\r\n args['destinationUrl'] = element.getAttribute('href');\r\n\r\n if (element.dataset.pagePart) {\r\n args['pagePart'] = element.dataset.pagePart;\r\n }\r\n\r\n pushEvent(eventName, args);\r\n });\r\n\r\n element.dataset.gtmInitialized = true;\r\n });\r\n };\r\n\r\n const pushEvent = function (eventName, args) {\r\n if (eventName === '') return;\r\n\r\n args = args || {};\r\n\r\n let gtmEvent = { event: eventName };\r\n\r\n for (const key in args) {\r\n if (args.hasOwnProperty(key)) {\r\n gtmEvent[key] = args[key];\r\n }\r\n }\r\n\r\n // DATALAYER\r\n window.dataLayer.push(gtmEvent);\r\n\r\n if (util.debugMode) console.log(gtmEvent);\r\n };\r\n\r\n // Expose public functions and variables\r\n return {\r\n init: init,\r\n pushEvent: pushEvent,\r\n };\r\n})();\r\n\r\napp.dataLayer.init();\r\n","/* ========================================================================\r\n General\r\n ========================================================================== */\r\n\r\napp.general = (function () {\r\n 'use strict';\r\n\r\n const updateAppHeight = util.debounce(() => {\r\n document.documentElement.style.setProperty(\r\n '--app-height',\r\n window.innerHeight + 'px'\r\n );\r\n\r\n // Save screen width to cookie\r\n util.setCookie(\r\n 'dashboardVersion',\r\n window.innerWidth >= 1024 ? 'desktop' : 'mobile'\r\n );\r\n\r\n // Check dashboard version\r\n checkDashboardVersion();\r\n }, 250);\r\n\r\n function initAppHeight() {\r\n // Init app height\r\n updateAppHeight();\r\n\r\n // Handle app height on resize\r\n window.addEventListener(\r\n 'resize',\r\n () => {\r\n updateAppHeight();\r\n },\r\n { passive: true }\r\n );\r\n }\r\n\r\n function checkDashboardVersion() {\r\n const dashboard = document.querySelector('[data-dashboard]');\r\n if (!dashboard) return;\r\n\r\n if (dashboard.dataset.version !== util.getCookie('dashboardVersion')) {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n // Expose public functions and variables\r\n return {\r\n initAppHeight: initAppHeight,\r\n updateAppHeight: updateAppHeight,\r\n };\r\n})();\r\n","/* ========================================================================\r\n On document ready do stuff\r\n ========================================================================== */\r\n\r\nutil.onDocumentReady(function () {\r\n const body = document.getElementById('body');\r\n\r\n // Set frontend version\r\n util.frontEndVersion = body.dataset.version;\r\n\r\n // Set debug mode\r\n util.debugMode = body.dataset.debugMode === 'true';\r\n\r\n // Set culture\r\n util.uiCulture = body.dataset.culture;\r\n\r\n // Set language\r\n util.uiLanguage = util.uiCulture ? util.uiCulture.split('-')[0] : null;\r\n\r\n // Set homepage Id\r\n util.homePageId = body.dataset.homepageId;\r\n\r\n // Set path\r\n util.path = body.dataset.path;\r\n\r\n if (util.debugMode) {\r\n console.info(util.uiCulture, util.uiLanguage, util.homePageId, util.path);\r\n if (!util.uiCulture) console.error('Culture is not set');\r\n if (!util.uiLanguage) console.error('Language is not set');\r\n if (!util.homePageId) console.error('HomePageId is not set');\r\n if (!util.path) console.error('Path is not set');\r\n }\r\n\r\n // Enable transitions\r\n document.documentElement.classList.remove('preloadTransitions');\r\n\r\n app.general.initAppHeight();\r\n app.cookiePopup.init();\r\n app.videos.init();\r\n\r\n const min = util.debugMode === false ? '.min' : '';\r\n\r\n if (document.querySelectorAll('[data-toast-message]').length > 0) {\r\n // show toast messages (with delay)\r\n const toastMessages = document.querySelectorAll('[data-toast-message]');\r\n toastMessages.forEach((message, index) => {\r\n window.setTimeout(() => {\r\n Toast(message.innerHTML, message.dataset.toastType.toLowerCase(), message.dataset.toastTimeout ?? 7500);\r\n }, index * 1000);\r\n });\r\n }\r\n\r\n // Init dashboard data\r\n if (document.querySelector('[data-dashboard]')) {\r\n ljs.load(\r\n 'https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js',\r\n util.getVersionedUrl('/scripts/dist/jsonpath' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dashboard/modules.dashboard' + min + '.js'),\r\n () => {\r\n app.dashboard.init();\r\n }\r\n );\r\n }\r\n\r\n // Init accordions\r\n if (document.querySelectorAll('[data-accordion-list]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.accordion' + min + '.js'), () => {\r\n app.accordion.init();\r\n });\r\n }\r\n\r\n // Init video lightbox\r\n if (document.querySelectorAll('[data-video-lightbox]:not([data-video-lightbox-initialized])')) {\r\n VideoLightbox(document.querySelectorAll('[data-video-lightbox]:not([data-video-lightbox-initialized])'));\r\n }\r\n});\r\n"]}