{"version":3,"sources":["app.base.js","loadingOverlay.js","toast.js","cookiePopup.js","dataLayer.js","general.js","navigation.js","app.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","documentElement","setProperty","innerHeight","initAppHeight","passive","navigation","_trigger","_container","_body","_floatingTrigger","initMenu","closeMenu","toggleMenu","keyCode","setFocus","openMenu","focus","closeText","pageUrl","resetSubmenu","openText","closeSearchBox","trigger","triggers","parent","subnav","mijnThebeTrigger","mijnThebeContainer","closeMijnThebeNav","stopPropagation","initSearchBox","body","scrolling","setInterval","scrollY","min","version","culture","homepageId","info","error","pristineConfig","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","locale","index","toastType","toLowerCase","ljs","load","quickNav","sidebarNav","accordion","carousel","stepByStep","videos","locations","newsListing","contactSection","hyvor","topics","emergencyBanner","scrollIntoView"],"mappings":"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","file":"../app.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 // function initEmailLinks() {\r\n // // Handle base-64 encoded mailto-links\r\n // const links = document.querySelectorAll('a[data-email]');\r\n\r\n // links.forEach((el) => {\r\n // el.addEventListener('click', (event) => {\r\n // let email = atob(el.getAttribute('data-email'));\r\n // window.location.href = 'mailto:' + email;\r\n // });\r\n // });\r\n // }\r\n\r\n // function initLax() {\r\n // lax.init();\r\n\r\n // // Add a driver that we use to control our animations\r\n // lax.addDriver('scrollY', function () {\r\n // return window.scrollY;\r\n // });\r\n\r\n // lax.addElements('[data-lax]]', {\r\n // scrollY: {\r\n // translateY: [\r\n // ['elInY', 'elOutY'],\r\n // [0, -250],\r\n // ],\r\n // },\r\n // });\r\n // }\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 }, 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 // let isTouch = false;\r\n // let isTouchClass = 'is-touch';\r\n // let isTouchTimer;\r\n\r\n // function addTouchClass() {\r\n // window.clearTimeout(isTouchTimer);\r\n // if (isTouch === true) return;\r\n\r\n // isTouchTimer = window.setTimeout(() => {\r\n // document.documentElement.classList.add(isTouchClass);\r\n // isTouch = true;\r\n // }, 250);\r\n // }\r\n\r\n // function removeTouchClass() {\r\n // if (isTouch === false) return;\r\n\r\n // document.documentElement.classList.remove(isTouchClass);\r\n // isTouch = false;\r\n // }\r\n\r\n // function initTouch() {\r\n // document.addEventListener('touchstart', addTouchClass, { passive: true });\r\n // document.addEventListener('mouseover', removeTouchClass);\r\n // }\r\n\r\n // Expose public functions and variables\r\n return {\r\n // initEmailLinks: initEmailLinks,\r\n // initLax: initLax,\r\n initAppHeight: initAppHeight,\r\n updateAppHeight: updateAppHeight,\r\n // initTouch: initTouch,\r\n };\r\n})();\r\n","/* ========================================================================\r\n Navigation\r\n ========================================================================== */\r\n\r\napp.navigation = (function () {\r\n 'use strict';\r\n\r\n const KEY_ENTER = 13;\r\n const KEY_SPACE = 32;\r\n\r\n const _trigger = document.querySelector('[data-main-nav-trigger]');\r\n const _container = document.querySelector('[data-main-nav-container]');\r\n const _body = document.querySelector('body');\r\n const _floatingTrigger = document.querySelector(\r\n '[data-floating-nav-trigger]'\r\n );\r\n\r\n function init() {\r\n initMenu();\r\n initMijnThebeNav();\r\n initSearchBox();\r\n initSubmenu();\r\n initFloatingTrigger();\r\n }\r\n\r\n function initMenu() {\r\n if (!_trigger || !_container) return;\r\n\r\n document.addEventListener('click', (event) => {\r\n if (event.target.classList.contains('pageWrapper')) {\r\n closeMenu(false);\r\n }\r\n });\r\n\r\n _trigger.addEventListener('click', (event) => {\r\n toggleMenu(false);\r\n });\r\n\r\n _trigger.addEventListener('keydown', (event) => {\r\n switch (event.keyCode) {\r\n case KEY_ENTER:\r\n case KEY_SPACE:\r\n event.preventDefault();\r\n toggleMenu(true);\r\n }\r\n });\r\n\r\n _container.addEventListener('keydown', (event) => {\r\n if (event.key === 'Escape') {\r\n closeMenu(true);\r\n }\r\n });\r\n }\r\n\r\n function toggleMenu(setFocus) {\r\n setFocus = setFocus || false;\r\n\r\n if (_trigger.classList.contains('is-active') === false) {\r\n openMenu(setFocus);\r\n } else {\r\n closeMenu(setFocus);\r\n }\r\n }\r\n\r\n function openMenu(setFocus) {\r\n setFocus = setFocus || false;\r\n\r\n _trigger.classList.add('is-active');\r\n _container.classList.add('is-active');\r\n _container.style.visibility = 'visible';\r\n _body.classList.add('has-open-menu');\r\n\r\n // a11y: switch focus to first link\r\n if (setFocus) _container.querySelector('[data-sub-nav-trigger]').focus();\r\n\r\n // a11y: update aria attributes\r\n _trigger.setAttribute('aria-label', _trigger.dataset.closeText);\r\n _trigger.setAttribute('aria-expanded', true);\r\n\r\n // DATALAYER\r\n app.dataLayer.pushEvent('menuClick', {\r\n pageUrl: window.location.pathname,\r\n });\r\n }\r\n\r\n function closeMenu(setFocus) {\r\n setFocus = setFocus || false;\r\n\r\n resetSubmenu();\r\n\r\n _trigger.classList.remove('is-active');\r\n _container.classList.remove('is-active');\r\n _body.classList.remove('has-open-menu');\r\n\r\n // a11y: switch focus back to trigger\r\n if (setFocus) _trigger.focus();\r\n\r\n // a11y: update aria attributes\r\n _trigger.setAttribute('aria-label', _trigger.dataset.openText);\r\n _trigger.setAttribute('aria-expanded', false);\r\n\r\n window.setTimeout(() => {\r\n _container.style.visibility = 'hidden';\r\n }, 500);\r\n }\r\n\r\n function initFloatingTrigger() {\r\n if (!_floatingTrigger) return;\r\n\r\n let scrolling = false;\r\n\r\n _floatingTrigger.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n setTimeout(() => openMenu(), 500);\r\n });\r\n\r\n window.addEventListener(\r\n 'scroll',\r\n () => {\r\n scrolling = true;\r\n },\r\n { passive: true }\r\n );\r\n\r\n setInterval(() => {\r\n if (scrolling === false) return;\r\n scrolling = false;\r\n\r\n if (window.scrollY > 700) {\r\n if (_floatingTrigger.classList.contains('is-in-view')) return;\r\n _floatingTrigger.classList.add('is-in-view');\r\n } else {\r\n if (_floatingTrigger.classList.contains('is-in-view') === false) return;\r\n _floatingTrigger.classList.remove('is-in-view');\r\n }\r\n }, 100);\r\n }\r\n\r\n function initSearchBox() {\r\n const trigger = document.querySelector('[data-search-trigger]');\r\n const container = document.querySelector('[data-search-container]');\r\n const close = document.querySelector('[data-search-close]');\r\n\r\n if (!trigger || !container || !close) return;\r\n\r\n trigger.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n\r\n if (trigger.classList.contains('is-active') === false) {\r\n trigger.classList.add('is-active');\r\n container.style.visibility = 'visible';\r\n container.classList.add('is-active');\r\n container.querySelector('input').focus();\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-expanded', true);\r\n\r\n // DATALAYER\r\n app.dataLayer.pushEvent('searchClick', {\r\n pageUrl: window.location.pathname,\r\n pagePart: 'header',\r\n });\r\n }\r\n });\r\n\r\n close.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n closeSearchBox(trigger, container);\r\n });\r\n\r\n container.addEventListener('keydown', (event) => {\r\n if (event.key === 'Escape') {\r\n closeSearchBox(trigger, container, body);\r\n }\r\n });\r\n }\r\n\r\n function closeSearchBox(trigger, container) {\r\n trigger.classList.remove('is-active');\r\n container.classList.remove('is-active');\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-expanded', false);\r\n trigger.focus();\r\n\r\n window.setTimeout(() => {\r\n container.style.visibility = 'hidden';\r\n }, 250);\r\n }\r\n\r\n function initSubmenu() {\r\n const triggers = document.querySelectorAll('[data-sub-nav-trigger]');\r\n\r\n if (!triggers) return;\r\n\r\n triggers.forEach((trigger) => {\r\n const parent = trigger.parentNode;\r\n const subnav = parent.querySelector('[data-sub-nav-container]');\r\n\r\n if (!parent || !subnav) return;\r\n\r\n trigger.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n\r\n if (parent.classList.contains('is-active') === false) {\r\n // close all open submenus\r\n resetSubmenu();\r\n\r\n parent.classList.add('is-active');\r\n util.slideDown(subnav, 250);\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-label', trigger.dataset.closeText);\r\n trigger.setAttribute('aria-expanded', true);\r\n } else {\r\n util.slideUp(subnav, 250);\r\n parent.classList.remove('is-active');\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-label', trigger.dataset.openText);\r\n trigger.setAttribute('aria-expanded', false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n function resetSubmenu() {\r\n const triggers = document.querySelectorAll(\r\n '[data-sub-nav-trigger][aria-expanded=\"true\"]'\r\n );\r\n\r\n if (!triggers) return;\r\n\r\n triggers.forEach((trigger) => {\r\n const parent = trigger.parentNode;\r\n const subnav = parent.querySelector('[data-sub-nav-container]');\r\n\r\n if (!parent || !subnav) return;\r\n\r\n util.slideUp(subnav, 250);\r\n parent.classList.remove('is-active');\r\n\r\n // a11y: update aria attributes\r\n trigger.setAttribute('aria-label', trigger.dataset.openText);\r\n trigger.setAttribute('aria-expanded', false);\r\n });\r\n }\r\n\r\n var mijnThebeTrigger = null;\r\n var mijnThebeContainer = null;\r\n\r\n function initMijnThebeNav() {\r\n mijnThebeTrigger = document.querySelector('[data-mijn-thebe-trigger]');\r\n mijnThebeContainer = document.querySelector('[data-mijn-thebe-container]');\r\n\r\n if (!mijnThebeTrigger || !mijnThebeContainer) return;\r\n\r\n mijnThebeTrigger.addEventListener('click', (event) =>\r\n mijnThebeNavClick(event)\r\n );\r\n\r\n mijnThebeContainer.addEventListener('keydown', (event) => {\r\n if (event.key === 'Escape') {\r\n closeMijnThebeNav();\r\n }\r\n });\r\n\r\n document.addEventListener('click', (event) => {\r\n if (\r\n event.target.classList.contains('mijnThebeNav__container') === false\r\n ) {\r\n closeMijnThebeNav();\r\n }\r\n });\r\n }\r\n\r\n function mijnThebeNavClick(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (mijnThebeContainer.classList.contains('is-active') === false) {\r\n openMijnThebeNav();\r\n } else {\r\n closeMijnThebeNav();\r\n }\r\n }\r\n\r\n function openMijnThebeNav() {\r\n if (!mijnThebeTrigger || !mijnThebeContainer) return;\r\n mijnThebeContainer.classList.remove('is-closed');\r\n mijnThebeContainer.classList.add('is-active');\r\n\r\n // a11y: update aria attributes\r\n mijnThebeTrigger.setAttribute(\r\n 'aria-label',\r\n mijnThebeTrigger.dataset.closeText\r\n );\r\n mijnThebeTrigger.setAttribute('aria-expanded', true);\r\n }\r\n\r\n function closeMijnThebeNav() {\r\n if (!mijnThebeTrigger || !mijnThebeContainer) return;\r\n if (mijnThebeContainer.classList.contains('is-active') === false) return;\r\n\r\n mijnThebeContainer.classList.remove('is-active');\r\n\r\n window.setTimeout(() => {\r\n mijnThebeContainer.classList.add('is-closed');\r\n }, 250);\r\n\r\n // a11y: update aria attributes\r\n mijnThebeTrigger.setAttribute(\r\n 'aria-label',\r\n mijnThebeTrigger.dataset.openText\r\n );\r\n mijnThebeTrigger.setAttribute('aria-expanded', false);\r\n }\r\n\r\n // Expose public functions and variables\r\n return {\r\n initMenu: initMenu,\r\n init: init,\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 // Pristine config\r\n app.pristineConfig = {\r\n // class of the parent element where the error/success class is added\r\n classTo: 'form__group',\r\n errorClass: 'has-error',\r\n successClass: 'has-success',\r\n // class of the parent element where error text element is appended\r\n errorTextParent: 'form__group',\r\n // type of element to create for the error text\r\n errorTextTag: 'div',\r\n // class of the error text element\r\n errorTextClass: 'form__validation',\r\n locale: 'nl',\r\n };\r\n\r\n // Enable SVG in IE11\r\n // svg4everybody();\r\n\r\n app.general.initAppHeight();\r\n // app.general.initTouch();\r\n app.navigation.init();\r\n // app.navigation.initSearchBox();\r\n // app.general.initEmailLinks();\r\n // app.general.initLax();\r\n app.cookiePopup.init();\r\n // app.dataLayer.init();\r\n\r\n const min = util.debugMode === false ? '.min' : '';\r\n\r\n // Dynamically load scripts: https://github.com/malko/l.js\r\n // if (document.querySelectorAll('[data-generic-form]').length > 0) {\r\n // ljs.load(\r\n // util.getVersionedUrl('/scripts/dist/loadingOverlay' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/aspnet-validation' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/forms.validation' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/forms.generic' + min + '.js'),\r\n // () => {\r\n // app.genericForm.init();\r\n // }\r\n // );\r\n // }\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 if (document.querySelectorAll('[data-quicknav]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.quickNav' + min + '.js'), () => {\r\n app.quickNav.init();\r\n });\r\n }\r\n\r\n if (document.querySelectorAll('[data-sidebar-nav]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.sidebarNav' + min + '.js'), () => {\r\n app.sidebarNav.init();\r\n });\r\n }\r\n\r\n // if (document.querySelectorAll('[data-video-lightbox]').length > 0) {\r\n // ljs.load(util.getVersionedUrl('/scripts/dist/videoLightbox' + min + '.js'), () => {\r\n // const videos = document.querySelectorAll('[data-video-lightbox]');\r\n // VideoLightbox(videos);\r\n // });\r\n // }\r\n\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 if (\r\n document.querySelectorAll('[data-carousel]').length > 0 ||\r\n document.querySelectorAll('[data-logo-carousel]').length > 0\r\n ) {\r\n ljs.load(\r\n util.getVersionedUrl('/scripts/dist/embla' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/embla-carousel-autoplay' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/modules.carousel' + min + '.js'),\r\n () => {\r\n app.carousel.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-step-carousel-1]').length > 0) {\r\n ljs.load(\r\n util.getVersionedUrl('/scripts/dist/embla' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/embla-carousel-auto-height' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/modules.carousel' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/modules.stepByStep' + min + '.js'),\r\n () => {\r\n app.stepByStep.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-video]').length > 0) {\r\n ljs.load(\r\n 'https://player.vimeo.com/api/player.js',\r\n util.getVersionedUrl('/scripts/dist/modules.videos' + min + '.js'),\r\n () => {\r\n app.videos.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-locations]').length > 0) {\r\n ljs.load(\r\n 'https://unpkg.com/mustache@4.2.0/mustache' + min + '.js',\r\n util.getVersionedUrl('/scripts/dist/jsonpath' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/modules.locations' + min + '.js'),\r\n () => {\r\n app.locations.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-news-listing]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.newsListing' + min + '.js'), () => {\r\n app.newsListing.init();\r\n });\r\n }\r\n\r\n if (document.querySelectorAll('[data-contact-section]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.contactSection' + min + '.js'), () => {\r\n app.contactSection.init();\r\n });\r\n }\r\n\r\n if (document.querySelectorAll('[data-hyvor-chat]').length > 0) {\r\n ljs.load(\r\n // util.getVersionedUrl('module:https://talk.hyvor.com/embed/embed.js'),\r\n util.getVersionedUrl('/scripts/dist/modules.hyvor' + min + '.js'),\r\n () => {\r\n app.hyvor.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-topics]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.topics' + min + '.js'), () => {\r\n app.topics.init();\r\n });\r\n }\r\n\r\n if (document.querySelectorAll('[data-emergency-banner]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.emergencyBanner' + min + '.js'), () => {\r\n app.emergencyBanner.init();\r\n });\r\n }\r\n\r\n // Scroll to form success message\r\n if (document.querySelector('#umbraco-forms-form-submitted')) {\r\n setTimeout(() => {\r\n document.querySelector('#umbraco-forms-form-submitted').scrollIntoView();\r\n }, 500);\r\n }\r\n\r\n // if (document.querySelectorAll('[data-lax]').length > 0) {\r\n // ljs.load(\r\n // util.getVersionedUrl('/scripts/dist/lax' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/modules.lax' + min + '.js'),\r\n // () => {\r\n // app.lax.init();\r\n // }\r\n // );\r\n // }\r\n});\r\n"]}