{"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","getVersionedUrl","url","this","onDocumentReady","callback","document","readyState","addEventListener","endsWith","str","lookup","indexOf","length","startsWith","escapeRegExp","replace","isValidEmail","email","test","getCookie","name","let","value","cookie","parts","split","undefined","pop","shift","setCookie","expiryDays","domain","expirationDate","Date","setDate","getDate","toUTCString","push","join","deleteCookie","deepExtend","extended","Object","assign","target","i","arguments","key","source","hasOwnProperty","call","apply","isPlainObject","obj","constructor","isMobile","navigator","userAgent","isIE","isEdge","getQueryString","regex","RegExp","results","exec","location","href","getAnchor","urlParts","URL","debounce","func","timeout","_this","timer","args","clearTimeout","setTimeout","debounceLeading","_this2","addGlobalEventListener","type","selector","event","matches","getVideoEmbedHtmlFromUrl","patternYouTube","patternVimeo","html","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","app","LoadingOverlay","opts","querySelector","styleProperty","onClose","targetElement","targetPositionStyle","position","element","currentStyle","defaultView","getPropertyValue","overlay","createElement","overlayIcon","classList","add","tagName","minHeight","close","remove","removeChild","innerHTML","appendChild","module","exports","Toast","message","status","closeLabel","toastTimeout","toast","closeButton","toastMessage","setAttribute","e","preventDefault","toastContainer","toastWrapper","parentNode","insertBefore","children","ccConfig","ccContainer","cookiePopup","init","getElementById","showConsoleLog","enableDataLayerEvents","theme","content","infoLinkHref","dataset","infoLinkTarget","onInitialise","state","onStatusChange","chosenBefore","dataLayer","consent","grantedCategories","onPopupOpen","onPopupClose","loadPopupScript","js","id","defer","src","after","console","log","open","ccPopup","pushEvent","eventName","gtmEvent","gtmElements","querySelectorAll","telElements","pathname","getAttribute","pagePart","mailtoElements","atob","searchResults","keywords","searchKeywords","general","updateAppHeight","documentElement","setProperty","innerHeight","initEmailLinks","links","link","initAppHeight","passive","initAnchorLinks","getBoundingClientRect","scrollY","navigation","KEY_ESCAPE","_mainNav","_trigger","_container","_body","_scrollWatcher","initMenu","closeMenu","toggleMenu","code","navObserver","IntersectionObserver","toggleStickyNav","observe","setFocus","openMenu","firstMenuItem","focus","closeText","pageUrl","resetSubmenu","openText","toggles","toggle","parent","subnav","_langTrigger","_langContainer","closeLangSwitch","initSubmenu","classNames","body","min","version","culture","homepageId","info","error","pristineConfig","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","locale","toastMessages","index","toastType","toLowerCase","ljs","load","accordion","carousel","videos","VideoLightbox","newsListing","projectListing","productListing","scrollIntoView","aspnetValidation"],"mappings":"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","file":"../app.min.js","sourcesContent":["/* ========================================================================\n Breakpoints\n ========================================================================== */\n\nvar breakpoint_sm = '(min-width: 576px)';\nvar breakpoint_md = '(min-width: 768px)';\nvar breakpoint_lg = '(min-width: 992px)';\nvar breakpoint_xl = '(min-width: 1200px)';\nvar breakpoint_xxl = '(min-width: 1400px)';\n\nvar breakpoint_xs_max = '(max-width: 575.98px)';\nvar breakpoint_sm_max = '(max-width: 767.98px)';\nvar breakpoint_md_max = '(max-width: 991.98px)';\nvar breakpoint_lg_max = '(max-width: 1199.98px)';\nvar breakpoint_xl_max = '(max-width: 1399.98px)';\n\n/* ========================================================================\n Polyfills\n ========================================================================== */\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n\n/* ========================================================================\n Utilities\n ========================================================================== */\n\nconst util = {\n frontEndVersion: '1',\n debugMode: false,\n uiCulture: null,\n uiLanguage: null,\n homePageId: null,\n path: null,\n\n getVersionedUrl: function (url) {\n return url + '?cdv=' + this.frontEndVersion;\n },\n\n onDocumentReady: function (callback) {\n const isReady =\n document.readyState != null && document.readyState != 'loading';\n\n if (isReady) {\n callback();\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n },\n\n endsWith: function (str, lookup) {\n return str.indexOf(lookup, str.length - lookup.length) !== -1;\n },\n\n startsWith: function (str, lookup) {\n return str.indexOf(lookup) === 0;\n },\n\n // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n escapeRegExp: function (str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n },\n\n // hasClass: function (element, selector) {\n // let s = ' ';\n // return (\n // element.nodeType === 1 &&\n // (s + element.className + s)\n // .replace(/[\\n\\t]/g, s)\n // .indexOf(s + selector + s) >= 0\n // );\n // },\n\n // addClass: function (element, className) {\n // if (this.hasClass(element, className) === false) {\n // element.className += ' ' + className;\n // }\n // },\n\n // removeClass: function (element, className) {\n // const regex = new RegExp(\n // '[\\\\b|\\\\s]*' + this.escapeRegExp(className) + '[\\\\b|\\\\s]*',\n // 'gi'\n // );\n // element.className = element.className.replace(regex, '');\n // },\n\n isValidEmail: function (email) {\n if (!email) return false;\n\n return /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]{2,})+$/.test(\n email\n );\n },\n\n getCookie: function (name) {\n let value = '; ' + document.cookie;\n let parts = value.split('; ' + name + '=');\n return parts.length !== 2 ? undefined : parts.pop().split(';').shift();\n },\n\n setCookie: function (name, value, expiryDays, domain, path) {\n let expirationDate = new Date();\n expirationDate.setDate(expirationDate.getDate() + (expiryDays || 365));\n\n let cookie = [\n name + '=' + value,\n 'Expires=' + expirationDate.toUTCString(),\n 'Path=' + (path || '/'),\n 'SameSite=Lax',\n ];\n\n if (domain) {\n cookie.push('Domain=' + domain);\n }\n\n document.cookie = cookie.join(';');\n },\n\n deleteCookie: function (name) {\n this.setCookie(name, '', -1);\n },\n\n deepExtend: function () {\n let extended =\n Object.assign ||\n function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return extended.apply(this, arguments);\n },\n\n isPlainObject: function (obj) {\n // The code \"typeof obj === 'object' && obj !== null\" allows Array objects\n return (\n typeof obj === 'object' && obj !== null && obj.constructor === Object\n );\n },\n\n isMobile: function () {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n },\n\n isIE: function () {\n // MSIE used to detect old browsers and Trident used to newer ones\n return (\n navigator.userAgent.indexOf('MSIE ') > -1 ||\n navigator.userAgent.indexOf('Trident/') > -1\n );\n },\n\n isEdge: function () {\n return navigator.userAgent.indexOf('Edge/') > -1;\n },\n\n getQueryString: function (name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n const regexS = '[\\\\?&]' + name + '=([^&#]*)';\n const regex = new RegExp(regexS);\n let results = regex.exec(window.location.href);\n if (results === null) {\n return '';\n } else {\n return results[1];\n }\n },\n\n getAnchor: function () {\n const urlParts = document.URL.split('#');\n return urlParts.length > 1 ? urlParts[1] : null;\n },\n\n // sortSelect: function (el, sortVal) {\n // sortVal = sortVal || 'text';\n\n // // Checks for an object or string. Uses string as ID.\n // switch (typeof el) {\n // case 'string':\n // el = document.getElementById(el);\n // break;\n // case 'object':\n // if (el == null) return false;\n // break;\n // default:\n // return false;\n // }\n\n // // Builds the options list.\n // let arr = new Array();\n // for (var i = 0; i < el.options.length; i++) {\n // arr[i] = new Array();\n // arr[i][0] = el.options[i].text;\n // arr[i][1] = el.options[i].value;\n // }\n\n // // Allows sortVal to be optional, defaults to text.\n // switch (sortVal) {\n // case 'value': // sort by value\n // sortVal = 1;\n // break;\n // default:\n // // sort by text\n // sortVal = 0;\n // }\n\n // arr.sort((a, b) => {\n // return a[sortVal] == b[sortVal] ? 0 : a[sortVal] < b[sortVal] ? -1 : 1;\n // });\n\n // // Removes all options from the select.\n // while (el.options.length > 0) {\n // el.options[0] = null;\n // }\n\n // // Recreates all options with the new order.\n // for (var i = 0; i < arr.length; i++) {\n // var op = new Option(arr[i][0], arr[i][1]);\n // el.options[i] = op;\n // }\n\n // return true;\n // },\n\n // Requires `smoothscroll.js` polyfill for unsupported browsers: http://iamdustan.com/smoothscroll/\n // scrollTo: function (el, options) {\n // options = options || {};\n\n // if (el.length === 0) return;\n\n // let defaults = {\n // offset: 0,\n // pushHash: true,\n // };\n\n // options = util.deepExtend(defaults, options);\n\n // let hash = el.getAttribute('href');\n\n // if (hash !== '#') {\n // let target = document.querySelector(hash);\n\n // if (!target) {\n // target = document.querySelector(\n // 'a[name=\"' + hash.replace('#', '') + '\"]'\n // );\n // }\n\n // if (!target) return;\n\n // target.scrollIntoView({\n // behavior: 'smooth',\n // });\n\n // let elementPosition = target.offsetTop;\n // let offsetPosition = elementPosition - options.offset;\n\n // window.scrollTo({\n // top: offsetPosition,\n // behavior: 'smooth',\n // });\n\n // if (options.pushHash) {\n // window.location.hash = hash.replace('#', '');\n // }\n // }\n // },\n\n // Use `insertBefore` instead of `appendChild`: https://www.paulirish.com/2011/surefire-dom-element-insertion/\n // injectFile: function (path, type, ref) {\n // if (type == 'js') {\n // let el = document.createElement('script');\n // el.setAttribute('type', 'text/javascript');\n // el.setAttribute('src', path);\n // placeholder.parentNode.insertBefore(el, ref);\n // } else if (type == 'css') {\n // let el = document.createElement('link');\n // el.setAttribute('rel', 'stylesheet');\n // el.setAttribute('type', 'text/css');\n // el.setAttribute('href', path);\n // placeholder.parentNode.insertBefore(el, ref);\n // }\n // },\n\n // https://www.freecodecamp.org/news/javascript-debounce-example/\n debounce: function (func, timeout) {\n timeout = timeout || 250;\n\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n },\n\n debounceLeading: function (func, timeout) {\n timeout = timeout || 250;\n\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n },\n\n addGlobalEventListener: function (type, selector, callback) {\n document.addEventListener(type, (event) => {\n if (event.target.matches(selector)) callback(event);\n });\n },\n\n getVideoEmbedHtmlFromUrl: function (url) {\n var patternYouTube =\n /(?:http|https)?:\\/\\/(?:www\\.)?(?:youtube\\.com\\/\\S*(?:(?:\\/e(?:mbed))?\\/|watch\\?(?:\\S*?&?v\\=))|youtu\\.be\\/)([a-zA-Z0-9_-]{6,11})/g;\n var patternVimeo =\n /(?:http|https)?:\\/\\/(?:www\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|)(\\d+)(?:|\\/\\?)/g;\n var html = '';\n\n // YouTube\n if (patternYouTube.test(url)) {\n html = url.replace(\n patternYouTube,\n \"\"\n );\n }\n\n // Vimeo\n if (patternVimeo.test(url)) {\n html = url.replace(\n patternVimeo,\n \"\"\n );\n }\n\n return html;\n },\n\n slideUp: function (target, duration, cb) {\n duration = duration || 500;\n\n target.style.transitionProperty = 'height, margin, padding, opacity';\n target.style.transitionDuration = duration + 'ms';\n target.style.boxSizing = 'border-box';\n target.style.height = target.offsetHeight + 'px';\n target.offsetHeight;\n target.style.overflow = 'hidden';\n // target.style.opacity = 0;\n target.style.height = 0;\n target.style.paddingTop = 0;\n target.style.paddingBottom = 0;\n target.style.marginTop = 0;\n target.style.marginBottom = 0;\n\n window.setTimeout(() => {\n target.style.display = 'none';\n target.style.visibility = 'hidden';\n target.style.removeProperty('height');\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n target.style.removeProperty('box-sizing');\n target.style.removeProperty('opacity');\n }, duration);\n\n if (typeof cb === 'function') {\n window.setTimeout(cb, duration);\n }\n },\n\n slideDown: function (target, duration, cb) {\n duration = duration || 500;\n\n target.style.removeProperty('display');\n let display = window.getComputedStyle(target).display;\n if (display === 'none') display = 'block';\n target.style.display = display;\n let height = target.offsetHeight;\n target.style.overflow = 'hidden';\n target.style.opacity = 0;\n target.style.height = 0;\n target.style.paddingTop = 0;\n target.style.paddingBottom = 0;\n target.style.marginTop = 0;\n target.style.marginBottom = 0;\n target.offsetHeight;\n target.style.boxSizing = 'border-box';\n target.style.transitionProperty = 'height, margin, padding, opacity';\n target.style.transitionDuration = duration + 'ms';\n target.style.height = height + 'px';\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n target.style.opacity = 1;\n target.style.visibility = 'visible';\n\n window.setTimeout(() => {\n target.style.removeProperty('height');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n }, duration);\n\n if (typeof cb === 'function') {\n window.setTimeout(cb, duration);\n }\n },\n\n slideToggle: function (target, duration, cb) {\n duration = duration || 500;\n\n if (window.getComputedStyle(target).display === 'none') {\n return slideDown(target, duration, cb);\n } else {\n return slideUp(target, duration, cb);\n }\n },\n\n areEqualArrays: function (first, second) {\n if (first.length !== second.length) {\n return false;\n }\n for (let i = 0; i < first.length; i++) {\n if (second.includes(first[i]) === false) {\n return false;\n }\n }\n return true;\n },\n\n scrollContainerTo: function (container, target, offset) {\n if (container.contains(target)) {\n offset = typeof offset === 'number' ? offset : 0;\n container.scrollTo({\n top: target.offsetTop - offset,\n behavior: 'smooth',\n });\n } else {\n throw 'scrollContainerTo Error: target not found in container';\n }\n },\n};\n\n/* ========================================================================\n Use module pattern to encapsulate JavaScript: http://bit.ly/2jM4ptd\n Define custom namespace\n ========================================================================== */\n\nvar app = app || {};\n","(function () {\n 'use strict';\n\n function LoadingOverlay(target, timeout, opts) {\n // Set default values\n target = target || document.querySelector('body');\n timeout = timeout || 0;\n\n opts = opts || {};\n\n let defaults = {\n onClose: function () {},\n };\n\n opts = util.deepExtend(defaults, opts);\n\n // Check if target is selector or element\n let targetElement;\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n } else {\n targetElement = target;\n }\n\n // Save target's position style\n let targetPositionStyle = targetElement.style.position;\n\n // Set target's position style to relative if needed\n if (getStyle(targetElement, 'position') === 'static') {\n targetElement.style.position = 'relative';\n }\n\n // Create overlay\n const overlay = document.createElement('div');\n overlay.classList.add('loadingOverlay');\n\n // Set overlay height\n if (targetElement.tagName === 'BODY') {\n overlay.style.position = 'fixed';\n overlay.style.height = 'var(--app-height)';\n overlay.style.minHeight = '100vh';\n } else {\n overlay.style.position = 'absolute';\n overlay.style.height = '100%';\n }\n\n // Create overlay icon\n const overlayIcon = document.createElement('div');\n overlayIcon.classList.add('loadingOverlay__icon');\n overlayIcon.innerHTML =\n '';\n\n // Add icon to overlay\n overlay.appendChild(overlayIcon);\n\n // Add overlay to target element\n targetElement.classList.add('loadingOverlay__container');\n targetElement.appendChild(overlay);\n\n // Auto-close overlay if timeout has been set\n if (timeout > 0) {\n window.setTimeout(() => {\n close();\n }, timeout);\n }\n\n function close() {\n targetElement.classList.remove('loadingOverlay__container');\n targetElement.removeChild(overlay);\n opts.onClose();\n\n if (targetPositionStyle === '') {\n targetElement.style.position = targetPositionStyle;\n } else {\n targetElement.style.removeProperty('position');\n }\n }\n\n function getStyle(element, styleProperty) {\n if (element.currentStyle) {\n return element.currentStyle[styleProperty];\n } else if (window.getComputedStyle) {\n return document.defaultView\n .getComputedStyle(element, null)\n .getPropertyValue(styleProperty);\n } else {\n return null;\n }\n }\n\n return {\n close: close,\n };\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = LoadingOverlay;\n } else {\n window.LoadingOverlay = LoadingOverlay;\n }\n})();\n","(function () {\n 'use strict';\n\n function Toast(message, status, timeout, opts) {\n // Set default values\n message = message || '';\n status = status || 'info';\n timeout = timeout || 5000;\n\n opts = opts || {};\n\n let defaults = {\n onClose: function () {},\n closeLabel: 'Close notification',\n };\n\n opts = util.deepExtend(defaults, opts);\n\n // Used to determine whether to remove setTimeout or not\n let toastTimeout;\n\n // Create alert element\n const toast = document.createElement('div');\n toast.classList.add('toast__item');\n\n // Attach correct colour to alert\n toast.classList.add('is-' + status);\n\n // Create close button\n const closeButton = document.createElement('a');\n closeButton.classList.add('toast__close');\n closeButton.setAttribute('aria-label', opts.closeLabel);\n closeButton.href = '#';\n closeButton.innerHTML =\n '';\n\n // Add message and close button\n const toastMessage = document.createElement('div');\n toastMessage.classList.add('toast__message');\n toastMessage.innerHTML = message;\n\n toast.appendChild(closeButton);\n toast.appendChild(toastMessage);\n\n // Event listeners\n closeButton.addEventListener('click', (e) => {\n e.preventDefault();\n close();\n });\n\n toast.addEventListener('mouseover', () => {\n if (toast.classList.contains('is-fade-out') === false)\n clearTimeout(toastTimeout);\n });\n\n toast.addEventListener('mouseout', () => {\n toastTimeout = window.setTimeout(() => {\n close();\n }, 3000);\n });\n\n // Prepend new alert to container\n let toastContainer = document.querySelector('.toast__container');\n let toastWrapper = document.querySelector('.toast__wrapper');\n\n // Create container if it doesn't exist\n if (!toastContainer) {\n toastContainer = document.createElement('div');\n toastContainer.classList.add('toast__container');\n\n toastWrapper = document.createElement('div');\n toastWrapper.classList.add('toast__wrapper');\n\n toastContainer.appendChild(toastWrapper);\n document.querySelector('body').appendChild(toastContainer);\n }\n\n toastWrapper.insertBefore(toast, toastWrapper.children[0]);\n\n // If they haven't clicked close within the timeout period, fade out and remove element\n toastTimeout = window.setTimeout(() => {\n close();\n }, timeout);\n\n function close() {\n if (toast.parentNode) {\n toast.classList.add('is-fade-out');\n toastTimeout = window.setTimeout(() => {\n toast.parentNode.removeChild(toast);\n opts.onClose();\n }, 500);\n }\n }\n\n return {\n close: close,\n };\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = Toast;\n } else {\n window.Toast = Toast;\n }\n})();\n","/* ========================================================================\n Cookie popup\n ========================================================================== */\n\nlet ccConfig = null;\nlet ccContainer = null;\n\napp.cookiePopup = (function () {\n 'use strict';\n\n function initConfig() {\n ccConfig = {\n showConsoleLog: true,\n enableDataLayerEvents: true,\n position: 'bottom-left',\n theme: 'dark',\n cookie: {\n name: 'cookieconsent_status_v3',\n },\n content: {\n infoLinkHref: ccContainer.dataset.infoLinkHref,\n infoLinkTarget: '_self',\n },\n // blacklistPage: ['/cookieverklaring/'],\n\n onInitialise: function (state, status) {},\n onStatusChange: function (state, status, chosenBefore) {\n // DATALAYER\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'cookieConsent',\n consent: state.grantedCategories.join(),\n });\n },\n onPopupOpen: function (state, status) {},\n onPopupClose: function (state) {},\n };\n }\n\n function loadPopupScript() {\n let js = document.createElement('script');\n js.id = 'ccPopupScript';\n js.defer = 'true';\n js.src = ccContainer.dataset.src;\n\n ccContainer.after(js);\n ccContainer.remove();\n }\n\n function open() {\n if (typeof ccPopup !== 'undefined') {\n ccPopup.open();\n }\n }\n\n function init() {\n ccContainer = document.getElementById('ccPopup');\n\n if (!ccContainer) {\n console.log('Cookie popup: container is missing!');\n return;\n }\n\n initConfig();\n loadPopupScript();\n }\n\n // Expose public functions and variables\n return {\n init: init,\n open: open,\n };\n})();\n","/* ========================================================================\n Data Layer (GTM)\n ========================================================================== */\n\napp.dataLayer = (function () {\n 'use strict';\n\n window.dataLayer = window.dataLayer || [];\n\n const init = function () {\n const gtmElements = document.querySelectorAll('[data-gtm-event]');\n\n gtmElements.forEach((element) => {\n element.addEventListener('click', (event) => {\n let eventName = element.dataset.gtmEvent\n ? element.dataset.gtmEvent\n : '';\n\n if (eventName === '') return;\n let args = {};\n\n args['pageUrl'] = window.location.pathname;\n args['destinationUrl'] = element.getAttribute('href');\n\n if (element.dataset.pagePart) {\n args['pagePart'] = element.dataset.pagePart;\n }\n\n pushEvent(eventName, args);\n });\n });\n\n //\n // Handle tel: links\n //\n\n const telElements = document.querySelectorAll('[href^=\"tel:\"]');\n\n telElements.forEach((element) => {\n // Check if element already has a custom event\n if (typeof element.dataset.gtmEvent !== 'undefined') return;\n\n element.addEventListener('click', (event) => {\n let args = {};\n\n args['pageUrl'] = window.location.pathname;\n args['contact'] = element.getAttribute('href');\n\n if (element.dataset.pagePart) {\n args['pagePart'] = element.dataset.pagePart;\n }\n\n pushEvent('phoneNumberClick', args);\n });\n });\n\n //\n // Handle mailto: links\n //\n\n const mailtoElements = document.querySelectorAll(\n '[href^=\"mailto:\"], [data-email]'\n );\n\n mailtoElements.forEach((element) => {\n // Check if element already has a custom event\n if (typeof element.dataset.gtmEvent !== 'undefined') return;\n\n element.addEventListener('click', (event) => {\n let args = {};\n let email = '';\n\n if (typeof element.dataset.email !== 'undefined') {\n email = 'mailto:' + atob(element.getAttribute('data-email'));\n } else {\n email = element.getAttribute('href');\n }\n\n args['pageUrl'] = window.location.pathname;\n args['contact'] = email;\n\n if (element.dataset.pagePart) {\n args['pagePart'] = element.dataset.pagePart;\n }\n\n pushEvent('emailClick', args);\n });\n });\n\n //\n // Handle search keywords\n //\n\n const searchResults = document.querySelector('[data-search-keywords]');\n if (searchResults) {\n pushEvent('search', {\n keywords: searchResults.dataset.searchKeywords,\n });\n }\n };\n\n const pushEvent = function (eventName, args) {\n if (eventName === '') return;\n\n args = args || {};\n\n let gtmEvent = { event: eventName };\n\n for (const key in args) {\n if (args.hasOwnProperty(key)) {\n gtmEvent[key] = args[key];\n }\n }\n\n // DATALAYER\n window.dataLayer.push(gtmEvent);\n\n if (util.debugMode) console.log(gtmEvent);\n };\n\n // Expose public functions and variables\n return {\n init: init,\n pushEvent: pushEvent,\n };\n})();\n","/* ========================================================================\n General\n ========================================================================== */\n\napp.general = (function () {\n 'use strict';\n\n function initEmailLinks() {\n // Handle base-64 encoded mailto-links\n const links = document.querySelectorAll('a[data-email]');\n\n links.forEach((link) => {\n link.addEventListener('click', (event) => {\n event.preventDefault();\n let email = atob(link.getAttribute('data-email'));\n window.location.href = 'mailto:' + email;\n });\n });\n }\n\n // function initLax() {\n // lax.init();\n\n // // Add a driver that we use to control our animations\n // lax.addDriver('scrollY', function () {\n // return window.scrollY;\n // });\n\n // lax.addElements('[data-lax]]', {\n // scrollY: {\n // translateY: [\n // ['elInY', 'elOutY'],\n // [0, -250],\n // ],\n // },\n // });\n // }\n\n const updateAppHeight = util.debounce(() => {\n document.documentElement.style.setProperty(\n '--app-height',\n window.innerHeight + 'px'\n );\n }, 250);\n\n function initAppHeight() {\n // Init app height\n updateAppHeight();\n\n // Handle app height on resize\n window.addEventListener(\n 'resize',\n () => {\n updateAppHeight();\n },\n { passive: true }\n );\n }\n\n // let isTouch = false;\n // let isTouchTimer;\n // const isTouchClass = 'is-touch';\n\n // function addTouchClass() {\n // window.clearTimeout(isTouchTimer);\n // if (isTouch === true) return;\n\n // isTouchTimer = window.setTimeout(() => {\n // document.documentElement.classList.add(isTouchClass);\n // isTouch = true;\n // }, 250);\n // }\n\n // function removeTouchClass() {\n // if (isTouch === false) return;\n\n // document.documentElement.classList.remove(isTouchClass);\n // isTouch = false;\n // }\n\n // function initTouch() {\n // document.addEventListener('touchstart', addTouchClass, { passive: true });\n // document.addEventListener('mouseup', removeTouchClass);\n // }\n\n function initAnchorLinks() {\n const links = document.querySelectorAll('a[href^=\"#\"]');\n\n links.forEach((link) => {\n const href = link.getAttribute('href');\n if (href === '#') return;\n\n const target = document.querySelector(href);\n if (!target) return;\n\n link.addEventListener('click', (event) => {\n event.preventDefault();\n scrollToTarget(target);\n });\n });\n\n // var gotoQs = util.getQueryString('goto');\n // if (gotoQs) {\n // const target = document.querySelector('#' + gotoQs);\n // if (!target) return;\n\n // setTimeout(() => {\n // scrollToTarget(target);\n // }, 500);\n // }\n }\n\n function scrollToTarget(target) {\n const offset = 100;\n const top = target.getBoundingClientRect().top + window.scrollY;\n\n window.scrollTo({\n top: top - offset,\n behavior: 'smooth',\n });\n }\n\n // Expose public functions and variables\n return {\n initEmailLinks: initEmailLinks,\n // initLax: initLax,\n initAppHeight: initAppHeight,\n updateAppHeight: updateAppHeight,\n // initTouch: initTouch,\n initAnchorLinks: initAnchorLinks,\n };\n})();\n","/* ========================================================================\n Navigation\n ========================================================================== */\n\napp.navigation = (function () {\n 'use strict';\n\n function init() {\n initMenu();\n initSubmenu();\n initLangSwitch();\n }\n\n const KEY_ENTER = 'Enter';\n const KEY_SPACE = 'Space';\n const KEY_ESCAPE = 'Escape';\n\n const _mainNav = document.querySelector('[data-main-nav]');\n const _trigger = document.querySelector('[data-main-nav-trigger]');\n const _container = document.querySelector('[data-main-nav-container]');\n const _body = document.querySelector('body');\n const _scrollWatcher = document.querySelector('[data-scroll-watcher]');\n\n function initMenu() {\n if (!_trigger || !_container) return;\n\n document.addEventListener('click', (event) => {\n if (event.target.classList.contains('pageWrapper')) {\n closeMenu(false);\n }\n });\n\n _trigger.addEventListener('click', (event) => {\n toggleMenu(false);\n });\n\n _trigger.addEventListener('keydown', (event) => {\n switch (event.code) {\n case KEY_ENTER:\n case KEY_SPACE:\n event.preventDefault();\n toggleMenu(true);\n }\n });\n\n _container.addEventListener('keydown', (event) => {\n if (event.code === KEY_ESCAPE) {\n closeMenu(true);\n }\n });\n\n // navigation observer\n if (_scrollWatcher) {\n const navObserver = new IntersectionObserver(toggleStickyNav);\n navObserver.observe(_scrollWatcher);\n }\n }\n\n function toggleStickyNav() {\n if (_scrollWatcher.getBoundingClientRect().top <= -1) {\n _mainNav.classList.add('is-sticky');\n // closeLangSwitch();\n } else {\n _mainNav.classList.remove('is-sticky');\n }\n }\n\n function toggleMenu(setFocus) {\n setFocus = setFocus || false;\n\n if (_trigger.getAttribute('aria-expanded') === 'false') {\n openMenu(setFocus);\n } else {\n closeMenu(setFocus);\n }\n }\n\n function openMenu(setFocus) {\n setFocus = setFocus || false;\n\n _container.classList.add('is-open');\n _container.style.visibility = 'visible';\n _body.classList.add('has-open-menu');\n\n // a11y: switch focus to first link\n const firstMenuItem = _container.querySelector('.menu__link');\n if (setFocus && firstMenuItem) firstMenuItem.focus();\n\n // a11y: update aria attributes\n _trigger.setAttribute('aria-label', _trigger.dataset.closeText);\n _trigger.setAttribute('aria-expanded', true);\n\n // DATALAYER\n app.dataLayer.pushEvent('menuOpen', {\n pageUrl: window.location.pathname,\n });\n }\n\n function closeMenu(setFocus) {\n setFocus = setFocus || false;\n\n resetSubmenu();\n\n _container.classList.remove('is-open');\n _body.classList.remove('has-open-menu');\n\n // a11y: switch focus back to trigger\n if (setFocus) _trigger.focus();\n\n // a11y: update aria attributes\n _trigger.setAttribute('aria-label', _trigger.dataset.openText);\n _trigger.setAttribute('aria-expanded', false);\n\n window.setTimeout(() => {\n _container.style.visibility = 'hidden';\n }, 500);\n\n // DATALAYER\n app.dataLayer.pushEvent('menuClose', {\n pageUrl: window.location.pathname,\n });\n }\n\n function initSubmenu() {\n const toggles = document.querySelectorAll('[data-menu-item-toggle]');\n\n if (!toggles) return;\n\n toggles.forEach((toggle) => {\n const parent = toggle.parentNode.parentNode;\n const subnav = parent.querySelector('[data-menu-item-sub]');\n\n if (!parent || !subnav) return;\n\n toggle.addEventListener('click', (event) => {\n event.preventDefault();\n\n if (parent.classList.contains('is-open') === false) {\n // close all open submenus\n resetSubmenu();\n\n parent.classList.add('is-open');\n util.slideDown(subnav, 250);\n\n // a11y: update aria attributes\n toggle.setAttribute('aria-label', toggle.dataset.closeText);\n toggle.setAttribute('aria-expanded', true);\n } else {\n util.slideUp(subnav, 250);\n parent.classList.remove('is-open');\n\n // a11y: update aria attributes\n toggle.setAttribute('aria-label', toggle.dataset.openText);\n toggle.setAttribute('aria-expanded', false);\n }\n });\n });\n }\n\n function resetSubmenu() {\n const toggles = document.querySelectorAll(\n '[data-menu-item-toggle][aria-expanded=\"true\"]'\n );\n\n if (!toggles) return;\n\n toggles.forEach((toggle) => {\n const parent = toggle.parentNode.parentNode;\n const subnav = parent.querySelector('[data-menu-item-sub]');\n\n if (!parent || !subnav) return;\n\n util.slideUp(subnav, 250);\n parent.classList.remove('is-open');\n\n // a11y: update aria attributes\n toggle.setAttribute('aria-label', toggle.dataset.openText);\n toggle.setAttribute('aria-expanded', false);\n });\n }\n\n const _langTrigger = document.querySelector('[data-lang-switch-trigger]');\n const _langContainer = document.querySelector('[data-lang-switch-container]');\n\n function initLangSwitch() {\n if (!_langTrigger || !_langContainer) return;\n\n _langTrigger.addEventListener('click', (event) => {\n event.preventDefault();\n\n if (_langTrigger.getAttribute('aria-expanded') === 'false') {\n openLangSwitch();\n } else {\n closeLangSwitch(false);\n }\n });\n\n document.addEventListener('click', (event) => {\n const classNames = event.target.getAttribute('class');\n\n if (classNames !== null && classNames.indexOf('langSwitch') === -1) {\n closeLangSwitch(false);\n }\n });\n\n _langContainer.addEventListener('keydown', (event) => {\n if (event.code === KEY_ESCAPE) {\n closeLangSwitch(true);\n }\n });\n }\n\n function openLangSwitch() {\n _langContainer.classList.add('is-open');\n _langContainer.style.visibility = 'visible';\n\n // a11y: update aria attributes\n _langTrigger.setAttribute('aria-label', _langTrigger.dataset.closeText);\n _langTrigger.setAttribute('aria-expanded', true);\n }\n\n function closeLangSwitch(setFocus) {\n setFocus = setFocus || false;\n _langContainer.classList.remove('is-open');\n\n // a11y: switch focus back to trigger\n if (setFocus) _langTrigger.focus();\n\n // a11y: update aria attributes\n _langTrigger.setAttribute('aria-label', _langTrigger.dataset.openText);\n _langTrigger.setAttribute('aria-expanded', false);\n\n window.setTimeout(() => {\n _langContainer.style.visibility = 'hidden';\n }, 500);\n }\n\n // Expose public functions and variables\n return {\n initMenu: initMenu,\n init: init,\n };\n})();\n","/* ========================================================================\n On document ready do stuff\n ========================================================================== */\n\nutil.onDocumentReady(function () {\n const body = document.getElementById('body');\n\n // Set frontend version\n util.frontEndVersion = body.dataset.version;\n\n // Set debug mode\n util.debugMode = body.dataset.debugMode === 'true';\n\n // Set culture\n util.uiCulture = body.dataset.culture;\n\n // Set language\n util.uiLanguage = util.uiCulture ? util.uiCulture.split('-')[0] : null;\n\n // Set homepage Id\n util.homePageId = body.dataset.homepageId;\n\n // Set path\n util.path = body.dataset.path;\n\n if (util.debugMode) {\n console.info(util.uiCulture, util.uiLanguage, util.homePageId, util.path);\n if (!util.uiCulture) console.error('Culture is not set');\n if (!util.uiLanguage) console.error('Language is not set');\n if (!util.homePageId) console.error('HomePageId is not set');\n if (!util.path) console.error('Path is not set');\n }\n\n // Enable transitions\n document.documentElement.classList.remove('is-loading');\n\n // Pristine config\n app.pristineConfig = {\n // class of the parent element where the error/success class is added\n classTo: 'form__group',\n errorClass: 'has-error',\n successClass: 'has-success',\n // class of the parent element where error text element is appended\n errorTextParent: 'form__group',\n // type of element to create for the error text\n errorTextTag: 'div',\n // class of the error text element\n errorTextClass: 'form__validation',\n locale: 'nl',\n };\n\n // Enable SVG in IE11\n // svg4everybody();\n\n app.general.initAppHeight();\n // app.general.initAnchorLinks();\n app.navigation.init();\n // app.navigation.initSearchBox();\n app.general.initEmailLinks();\n // app.general.initLax();\n app.cookiePopup.init();\n app.dataLayer.init();\n\n const min = util.debugMode === false ? '.min' : '';\n\n if (document.querySelectorAll('[data-toast-message]').length > 0) {\n // show toast messages (with delay)\n const toastMessages = document.querySelectorAll('[data-toast-message]');\n toastMessages.forEach((message, index) => {\n window.setTimeout(() => {\n Toast(\n message.innerHTML,\n message.dataset.toastType.toLowerCase(),\n message.dataset.toastTimeout ?? 7500\n );\n }, index * 1000);\n });\n }\n\n if (document.querySelectorAll('[data-accordion-list]').length > 0) {\n ljs.load(\n util.getVersionedUrl('/scripts/dist/modules.accordion' + min + '.js'),\n () => {\n app.accordion.init();\n }\n );\n }\n\n if (\n document.querySelectorAll('[data-carousel]').length > 0 ||\n document.querySelectorAll('[data-logo-carousel]').length > 0\n ) {\n ljs.load(\n util.getVersionedUrl('/scripts/dist/embla' + min + '.js'),\n util.getVersionedUrl(\n '/scripts/dist/embla-carousel-autoplay' + min + '.js'\n ),\n util.getVersionedUrl('/scripts/dist/modules.carousel' + min + '.js'),\n () => {\n app.carousel.init();\n }\n );\n }\n\n if (document.querySelectorAll('[data-video]').length > 0) {\n ljs.load(\n util.getVersionedUrl('/scripts/dist/modules.videos' + min + '.js'),\n () => {\n app.videos.init();\n }\n );\n }\n\n if (document.querySelectorAll('[data-video-lightbox]').length > 0) {\n ljs.load(\n util.getVersionedUrl('/scripts/dist/videoLightbox' + min + '.js'),\n () => {\n const videos = document.querySelectorAll('[data-video-lightbox]');\n VideoLightbox(videos);\n }\n );\n }\n\n if (document.querySelectorAll('[data-news-listing]').length > 0) {\n ljs.load(\n util.getVersionedUrl('/scripts/dist/modules.newsListing' + min + '.js'),\n () => {\n app.newsListing.init();\n }\n );\n }\n\n if (document.querySelectorAll('[data-project-listing]').length > 0) {\n ljs.load(\n util.getVersionedUrl(\n '/scripts/dist/modules.projectListing' + min + '.js'\n ),\n () => {\n app.projectListing.init();\n }\n );\n }\n\n if (document.querySelectorAll('[data-product-listing]').length > 0) {\n ljs.load(\n util.getVersionedUrl(\n '/scripts/dist/modules.productListing' + min + '.js'\n ),\n () => {\n app.productListing.init();\n }\n );\n }\n\n if (document.querySelector('.searchResults')) {\n if (document.location.href.indexOf('?') > -1) {\n setTimeout(() => {\n document.querySelector('[data-results-anchor]').scrollIntoView({\n behavior: 'smooth',\n });\n }, 500);\n }\n }\n\n ljs.load(\n util.getVersionedUrl('/scripts/dist/forms.newsletter' + min + '.js'),\n () => {\n // Load aspnet-validation if not loaded yet\n // Use a delay to make sure it doesn't conflict with Umbraco Forms' version of aspnet-validation\n window.setTimeout(() => {\n if (typeof window.aspnetValidation !== 'object') {\n ljs.load(\n '/scripts/dist/aspnet-validation.min.js',\n util.getVersionedUrl('/scripts/dist/forms.validation.min.js'),\n () => {}\n );\n }\n }, 2000);\n }\n );\n\n // if (document.querySelectorAll('[data-lax]').length > 0) {\n // ljs.load(\n // util.getVersionedUrl('/scripts/dist/lax' + min + '.js'),\n // util.getVersionedUrl('/scripts/dist/modules.lax' + min + '.js'),\n // () => {\n // app.lax.init();\n // }\n // );\n // }\n});\n"]}