{"version":3,"sources":["app.base.js","loadingOverlay.js","toast.js","cookiePopup.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","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","path","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","debounce","func","timeout","timer","context","args","clearTimeout","setTimeout","debounceLeading","addGlobalEventListener","type","selector","event","matches","slideUp","duration","cb","style","transitionProperty","transitionDuration","boxSizing","height","offsetHeight","overflow","opacity","paddingTop","paddingBottom","marginTop","marginBottom","display","removeProperty","slideDown","getComputedStyle","slideToggle","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","contains","toastContainer","toastWrapper","parentNode","insertBefore","children","cookiePopup","loadPopupScript","container","getElementById","src","dataset","version","js","id","defer","console","log","init","open","ccPopup","general","updateAppHeight","documentElement","setProperty","innerHeight","initAppHeight","passive","navigation","initMenu","trigger","body","closeText","openText","pristineConfig","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","locale","min","querySelectorAll","ljs","load","genericForm","registrationForm","uploadFilesForm","incidentForm","complaintForm","associationForm","workshopForm","toastMessages","index","toastType","toLowerCase","videos","VideoLightbox","faqSection","carousel","lax"],"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: 575px)';\r\nvar breakpoint_sm_max = '(max-width: 767px)';\r\nvar breakpoint_md_max = '(max-width: 991px)';\r\nvar breakpoint_lg_max = '(max-width: 1199px)';\r\nvar breakpoint_xl_max = '(max-width: 1399px)';\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\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',\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 // 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 function () {\r\n const context = this;\r\n const args = arguments;\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n func.apply(context, 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 function () {\r\n const context = this;\r\n const args = arguments;\r\n\r\n if (!timer) {\r\n func.apply(context, 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 // const youTubeRegex =\r\n // /https?:\\/\\/.*(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/|shorts\\/|watch\\/|live\\/)|(?:(?:watch)?\\?v(?:i)?=|\\&v(?:i)?=))([^#\\&\\?\\/]*).*/i;\r\n // const vimeoRegex =\r\n // /https?:\\/\\/(?:www.)?vimeo.com\\/(?:channels\\/(?:w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|)(\\d+)(?:|\\/?)/i;\r\n\r\n // const youTubeMatch = youTubeRegex.exec(url);\r\n // const vimeoMatch = 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 // 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.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\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\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.getComputedStyle(element, null).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\napp.cookiePopup = (function () {\r\n 'use strict';\r\n\r\n function loadPopupScript() {\r\n const container = document.getElementById('cookiePopup');\r\n\r\n if (container) {\r\n const src = container.dataset.src;\r\n const version = container.dataset.version;\r\n\r\n let js = document.createElement('script');\r\n js.id = 'ccpopup-js-init';\r\n js.defer = 'true';\r\n js.src = src;\r\n js.dataset.version = version;\r\n\r\n container.appendChild(js);\r\n } else {\r\n console.log('Cookie popup: container is missing!');\r\n }\r\n }\r\n\r\n function open() {\r\n if (typeof ccPopup !== 'undefined') {\r\n ccPopup.open();\r\n } else {\r\n util.deleteCookie('cookieconsent_status');\r\n loadPopupScript();\r\n }\r\n return false;\r\n }\r\n\r\n function init() {\r\n // Remove if-statement when Data Layer events should be used\r\n if (util.getCookie('cookieconsent_status') !== 'dismiss') {\r\n loadPopupScript();\r\n }\r\n\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 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 // function initScrollToAnchor() {\r\n // const links = document.querySelectorAll('a[href^=\"#\"]');\r\n\r\n // links.forEach((link) => {\r\n // link.addEventListener('click', (event) => {\r\n // event.preventDefault();\r\n\r\n // if (link.getAttribute('href') !== '#content') {\r\n // util.scrollTo(link, { offset: 24 });\r\n // } else {\r\n // util.scrollTo(link);\r\n // }\r\n // });\r\n // });\r\n // }\r\n\r\n function initMenu() {\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\r\n if (!trigger || !container) 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.classList.add('is-active');\r\n body.classList.add('has-open-menu');\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 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: 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 // Expose public functions and variables\r\n return {\r\n // initScrollToAnchor: initScrollToAnchor,\r\n initMenu: initMenu,\r\n };\r\n})();\r\n","/* ========================================================================\r\n On document ready do stuff\r\n ========================================================================== */\r\n\r\nutil.onDocumentReady(function () {\r\n // Set frontend version\r\n util.frontEndVersion = document.getElementById('body').dataset.version;\r\n\r\n // Set debug mode\r\n util.debugMode = document.getElementById('body').dataset.debugMode === 'true';\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.initMenu();\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-registration-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.registration' + min + '.js'),\r\n () => {\r\n app.registrationForm.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-upload-file-form]').length > 0) {\r\n ljs.load(\r\n // util.getVersionedUrl('/scripts/dist/loadingOverlay' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/dialog' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/uploadField' + min + '.js'), // uploadField depends on dialog and toast\r\n util.getVersionedUrl('/scripts/dist/forms.uploadFiles' + min + '.js'),\r\n () => {\r\n app.uploadFilesForm.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-incident-form]').length > 0) {\r\n ljs.load(\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css',\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js',\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/l10n/nl.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/loadingOverlay' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/forms.incident' + min + '.js'),\r\n () => {\r\n app.incidentForm.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-complaint-form]').length > 0) {\r\n ljs.load(\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css',\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js',\r\n 'https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/l10n/nl.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/dialog' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/toast' + min + '.js'),\r\n // util.getVersionedUrl('/scripts/dist/loadingOverlay' + min + '.js'),\r\n util.getVersionedUrl('/scripts/dist/uploadField' + min + '.js'), // uploadField depends on dialog and toast\r\n util.getVersionedUrl('/scripts/dist/forms.complaint' + min + '.js'),\r\n () => {\r\n app.complaintForm.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-association-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.association' + min + '.js'),\r\n () => {\r\n app.associationForm.init();\r\n }\r\n );\r\n }\r\n\r\n if (document.querySelectorAll('[data-workshop-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.workshop' + min + '.js'),\r\n () => {\r\n app.workshopForm.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-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-faq-item]').length > 0) {\r\n ljs.load(util.getVersionedUrl('/scripts/dist/modules.faq' + min + '.js'), () => {\r\n app.faqSection.init();\r\n });\r\n }\r\n\r\n if (document.querySelectorAll('[data-carousel]').length > 0) {\r\n ljs.load(\r\n util.getVersionedUrl('/scripts/dist/embla' + 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-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"]}