{"version":3,"file":"bundle.esm.js","sources":["../modules/@helpers/js/keyvaluestorage.js","../modernizr.js","../modules/@helpers/js/enhancements.js","../modules/@helpers/js/observer.js","../modules/search-awesomplete.js","../modules/cz-forms/js/form-validation.js","../../../../node_modules/@lit/reactive-element/css-tag.js","../../../../node_modules/@lit/reactive-element/reactive-element.js","../../../../node_modules/lit-html/lit-html.js","../../../../node_modules/lit-element/lit-element.js","../modules/cz-forms/js/@webcomponent/cz-combobox.js","../modules/@helpers/js/datalayer.js","../modules/@helpers/js/wait.js","../modules/@helpers/js/queue-processing.js","../modules/cz-navigation/js/classNames.js","../modules/cz-navigation/js/domElements.js","../modules/@helpers/js/interpretAction.js","../modules/cz-navigation/js/shared.js","../modules/cz-navigation/js/handleOverlay.js","../modules/@helpers/js/scrollLocker.js","../modules/cz-navigation/js/handleNavContainer.js","../modules/cz-navigation/js/handleNavDomain.js","../modules/cz-navigation/js/handleSearch.js","../modules/cz-navigation/js/handleSubmenus.js","../modules/cz-navigation/js/handleViewportHeights.js","../modules/cz-navigation/js/navigation.js","../../../../node_modules/@cz/webcomponents/src/cz-loader/cz-loader.js","../../../../node_modules/@cz/webcomponents/src/cz-icon/cz-icon.js","../../../../node_modules/@cz/webcomponents/src/cz-contentloader/cz-contentloader.js","../../../../node_modules/lit-html/directive.js","../../../../node_modules/lit-html/directives/unsafe-html.js","../../../../node_modules/@cz/webcomponents/src/helpers/trap-focus.js","../../../../node_modules/@cz/webcomponents/src/helpers/focusable.js","../../../../node_modules/@cz/webcomponents/src/cz-sidepanel/cz-sidepanel.js","../../../../node_modules/@cz/icons/dist/cz/iconSprites.mjs","../modules/cz-collective/js/search-suggestions.js","../modules/cz-vergoeding/js/compare-insurance-table.js","../modules/cz-vergoeding/js/@webcomponent/cz-avtableloader.js","../modules/cz-vergoeding/js/search-compensation.js","../modules/cz-vergoeding/js/@webcomponent/cz-mfaloader.js","../modules/cz-vergoeding/js/@webcomponent/cz-vergelijkerloader.js","../modules.js","../modules/content-enhancements.js","../modules/set-list-icon.js","../main.esm.js","../modules/@helpers/js/clearLayoutProps.js","../modules/cz-action/js/click-action.js","../modules/cz-category-tree/js/categories.js","../modules/cz-datalayer/js/datalayer.js","../modules/@helpers/js/helpers.js","../modules/cz-popup-overlay/js/popup-overlay.js","../modules/cz-revealer/js/revealer.js","../modules/cz-scroll-to-top/js/scroll-to-top.js","../modules/cz-service/js/services.js","../modules/cz-side-overlay/js/side-overlay.js","../modules/cz-whatsthat/js/whats-that.js","../modules/cz-amount/js/super-cents.js","../modules/cz-alert-bar/js/alert-bar.js","../modules/cz-cluster-grid/js/clustergrid-filter.js","../modules/@helpers/js/radiogroup-helper.js","../modules/cz-collective/js/collective-choice.js","../modules/cz-collective/js/collective-search.js","../modules/cz-search/js/search-filter.js","../modules/cz-search/js/search-form.js","../modules/cz-toggle-button/js/toggle-button-listener.js","../modules/cz-toggle-button/js/toggle-button.js","../modules/cz-tooltip/js/tooltip.js","../modules/cz-upload-file/js/file-upload.js","../modules/cz-vergoeding/js/comboboxAutocomplete.js","../modules/cz-questionnaire/js/questionnaire.js"],"sourcesContent":["function storageAvailable(type) {\n\tlet stor;\n\ttry {\n\t\tstor = window[type];\n\t\tconst x = '__storage_test__';\n\t\tstor.setItem(x, x);\n\t\tstor.removeItem(x);\n\t\treturn true;\n\t}\n\tcatch (e) {\n\t\treturn e instanceof DOMException && (\n\t\t\t// everything except Firefox\n\t\t\te.code === 22 ||\n\t\t\t// Firefox\n\t\t\te.code === 1014 ||\n\t\t\t// test name field too, because code might not be present\n\t\t\t// everything except Firefox\n\t\t\te.name === 'QuotaExceededError' ||\n\t\t\t// Firefox\n\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n\t\t\t// acknowledge QuotaExceededError only if there's something already stored\n\t\t\t(stor && stor.length !== 0);\n\t}\n}\n\nconst _store = {};\n\nfunction setItem(key, value) {\n\t_store[key] = value;\n}\nfunction getItem(key) {\n\treturn _store[key];\n}\nfunction removeItem(key) {\n\tdelete _store[key];\n}\n\n// setup memorystorage\nconst pageStorage = {\n\tsetItem,\n\tgetItem,\n\tremoveItem\n}\n\nexport function getStorage(level = '') {\n\tlet storage = pageStorage;\n\tswitch (level) {\n\t\tcase 'persist':\n\t\t\t// setup localstorage, fallback to sessionstorage if not available, and to memorystorage as a last resort\n\t\t\tstorage = storageAvailable(\"localStorage\") ? window.localStorage : storageAvailable(\"sessionStorage\") ? window.sessionStorage : pageStorage;\n\t\t\tbreak;\n\t\tcase 'session':\n\t\t\t// setup sessionstorage, fallback to memorystorage if not available\n\t\t\tstorage = storageAvailable(\"sessionStorage\") ? window.sessionStorage : pageStorage;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\treturn {\n\t\tstoreKeyValue: (key, value) => {\n\t\t\tif (!key || typeof key !== 'string' || !value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tstorage.setItem(key, value)\n\t\t\t } else {\n\t\t\t\tstorage.setItem(key, JSON.stringify(value))\n\t\t\t }\n\t\t\treturn true;\n\t\t},\n\t\tgetStoredValue: (key) => {\n\t\t\tif (!key || typeof key !== 'string') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = storage.getItem(key)\n\t\t\tif (!value) return\n\n\t\t\ttry {\n\t\t\t // Returns an object if stored value is JSON\n\t\t\t return JSON.parse(value);\n\t\t\t} catch (error) {\n\t\t\t // Returns plain string if stored value is not JSON\n\t\t\t return value;\n\t\t\t}\n\t\t},\n\t\tremoveStoredValue: (key) => {\n\t\t\tif (!key || typeof key !== 'string') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn storage.removeItem(key);\n\t\t}\n\t};\n}\n","/*!\n * modernizr v3.13.0\n * Build https://modernizr.com/download?-touchevents-addtest-printshiv-setclasses-testprop-dontmin\n *\n * Copyright (c)\n * Faruk Ates\n * Paul Irish\n * Alex Sexton\n * Ryan Seddon\n * Patrick Kettner\n * Stu Cox\n * Richard Herrera\n * Veeck\n\n * MIT License\n */\n\n/*\n * Modernizr tests which native CSS3 and HTML5 features are available in the\n * current UA and makes the results available to you in two ways: as properties on\n * a global `Modernizr` object, and as classes on the `` element. This\n * information allows you to progressively enhance your pages with a granular level\n * of control over the experience.\n*/\n\n;(function(scriptGlobalObject, window, document, undefined){\n\n var tests = [];\n \n\n /**\n * ModernizrProto is the constructor for Modernizr\n *\n * @class\n * @access public\n */\n var ModernizrProto = {\n _version: '3.13.0',\n\n // Any settings that don't work as separate modules\n // can go in here as configuration.\n _config: {\n 'classPrefix': '',\n 'enableClasses': true,\n 'enableJSClass': true,\n 'usePrefixes': true\n },\n\n // Queue of tests\n _q: [],\n\n // Stub these for people who are listening\n on: function(test, cb) {\n // I don't really think people should do this, but we can\n // safe guard it a bit.\n // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\n // This is in case people listen to synchronous tests. I would leave it out,\n // but the code to *disallow* sync tests in the real version of this\n // function is actually larger than this.\n var self = this;\n setTimeout(function() {\n cb(self[test]);\n }, 0);\n },\n\n addTest: function(name, fn, options) {\n tests.push({name: name, fn: fn, options: options});\n },\n\n addAsyncTest: function(fn) {\n tests.push({name: null, fn: fn});\n }\n };\n\n \n\n // Fake some of Object.create so we can force non test results to be non \"own\" properties.\n var Modernizr = function() {};\n Modernizr.prototype = ModernizrProto;\n\n // Leak modernizr globally when you `require` it rather than force it here.\n // Overwrite name so constructor name is nicer :D\n Modernizr = new Modernizr();\n\n \n\n var classes = [];\n \n\n /**\n * is returns a boolean if the typeof an obj is exactly type.\n *\n * @access private\n * @function is\n * @param {*} obj - A thing we want to check the type of\n * @param {string} type - A string to compare the typeof against\n * @returns {boolean} true if the typeof the first parameter is exactly the specified type, false otherwise\n */\n function is(obj, type) {\n return typeof obj === type;\n }\n\n ;\n\n /**\n * Run through all tests and detect their support in the current UA.\n *\n * @access private\n * @returns {void}\n */\n function testRunner() {\n var featureNames;\n var feature;\n var aliasIdx;\n var result;\n var nameIdx;\n var featureName;\n var featureNameSplit;\n\n for (var featureIdx in tests) {\n if (tests.hasOwnProperty(featureIdx)) {\n featureNames = [];\n feature = tests[featureIdx];\n // run the test, throw the return value into the Modernizr,\n // then based on that boolean, define an appropriate className\n // and push it into an array of classes we'll join later.\n //\n // If there is no name, it's an 'async' test that is run,\n // but not directly added to the object. That should\n // be done with a post-run addTest call.\n if (feature.name) {\n featureNames.push(feature.name.toLowerCase());\n\n if (feature.options && feature.options.aliases && feature.options.aliases.length) {\n // Add all the aliases into the names list\n for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {\n featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());\n }\n }\n }\n\n // Run the test, or use the raw value if it's not a function\n result = is(feature.fn, 'function') ? feature.fn() : feature.fn;\n\n // Set each of the names on the Modernizr object\n for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\n featureName = featureNames[nameIdx];\n // Support dot properties as sub tests. We don't do checking to make sure\n // that the implied parent tests have been added. You must call them in\n // order (either in the test, or make the parent test a dependency).\n //\n // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\n // hashtag famous last words\n featureNameSplit = featureName.split('.');\n\n if (featureNameSplit.length === 1) {\n Modernizr[featureNameSplit[0]] = result;\n } else {\n // cast to a Boolean, if not one already or if it doesnt exist yet (like inputtypes)\n if (!Modernizr[featureNameSplit[0]] || Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\n Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\n }\n\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;\n }\n\n classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\n }\n }\n }\n }\n ;\n\n /**\n * docElement is a convenience wrapper to grab the root element of the document\n *\n * @access private\n * @returns {HTMLElement|SVGElement} The root element of the document\n */\n var docElement = document.documentElement;\n \n\n /**\n * A convenience helper to check if the document we are running in is an SVG document\n *\n * @access private\n * @returns {boolean}\n */\n var isSVG = docElement.nodeName.toLowerCase() === 'svg';\n\n \n\n /**\n * setClasses takes an array of class names and adds them to the root element\n *\n * @access private\n * @function setClasses\n * @param {string[]} classes - Array of class names\n */\n // Pass in an and array of class names, e.g.:\n // ['no-webp', 'borderradius', ...]\n function setClasses(classes) {\n var className = docElement.className;\n var classPrefix = Modernizr._config.classPrefix || '';\n\n if (isSVG) {\n className = className.baseVal;\n }\n\n // Change `no-js` to `js` (independently of the `enableClasses` option)\n // Handle classPrefix on this too\n if (Modernizr._config.enableJSClass) {\n var reJS = new RegExp('(^|\\\\s)' + classPrefix + 'no-js(\\\\s|$)');\n className = className.replace(reJS, '$1' + classPrefix + 'js$2');\n }\n\n if (Modernizr._config.enableClasses) {\n // Add the new classes\n if (classes.length > 0) {\n className += ' ' + classPrefix + classes.join(' ' + classPrefix);\n }\n if (isSVG) {\n docElement.className.baseVal = className;\n } else {\n docElement.className = className;\n }\n }\n }\n\n ;\n\n /**\n * hasOwnProp is a shim for hasOwnProperty that is needed for Safari 2.0 support\n *\n * @author kangax\n * @access private\n * @function hasOwnProp\n * @param {object} object - The object to check for a property\n * @param {string} property - The property to check for\n * @returns {boolean}\n */\n\n // hasOwnProperty shim by kangax needed for Safari 2.0 support\n var hasOwnProp;\n\n (function() {\n var _hasOwnProperty = ({}).hasOwnProperty;\n /* istanbul ignore else */\n /* we have no way of testing IE 5.5 or safari 2,\n * so just assume the else gets hit */\n if (!is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined')) {\n hasOwnProp = function(object, property) {\n return _hasOwnProperty.call(object, property);\n };\n }\n else {\n hasOwnProp = function(object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */\n return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n };\n }\n })();\n\n \n\n\n // _l tracks listeners for async tests, as well as tests that execute after the initial run\n ModernizrProto._l = {};\n\n /**\n * Modernizr.on is a way to listen for the completion of async tests. Being\n * asynchronous, they may not finish before your scripts run. As a result you\n * will get a possibly false negative `undefined` value.\n *\n * @memberOf Modernizr\n * @name Modernizr.on\n * @access public\n * @function on\n * @param {string} feature - String name of the feature detect\n * @param {Function} cb - Callback function returning a Boolean - true if feature is supported, false if not\n * @returns {void}\n * @example\n *\n * ```js\n * Modernizr.on('flash', function( result ) {\n * if (result) {\n * // the browser has flash\n * } else {\n * // the browser does not have flash\n * }\n * });\n * ```\n */\n ModernizrProto.on = function(feature, cb) {\n // Create the list of listeners if it doesn't exist\n if (!this._l[feature]) {\n this._l[feature] = [];\n }\n\n // Push this test on to the listener list\n this._l[feature].push(cb);\n\n // If it's already been resolved, trigger it on next tick\n if (Modernizr.hasOwnProperty(feature)) {\n // Next Tick\n setTimeout(function() {\n Modernizr._trigger(feature, Modernizr[feature]);\n }, 0);\n }\n };\n\n /**\n * _trigger is the private function used to signal test completion and run any\n * callbacks registered through [Modernizr.on](#modernizr-on)\n *\n * @memberOf Modernizr\n * @name Modernizr._trigger\n * @access private\n * @function _trigger\n * @param {string} feature - string name of the feature detect\n * @param {Function|boolean} [res] - A feature detection function, or the boolean =\n * result of a feature detection function\n * @returns {void}\n */\n ModernizrProto._trigger = function(feature, res) {\n if (!this._l[feature]) {\n return;\n }\n\n var cbs = this._l[feature];\n\n // Force async\n setTimeout(function() {\n var i, cb;\n for (i = 0; i < cbs.length; i++) {\n cb = cbs[i];\n cb(res);\n }\n }, 0);\n\n // Don't trigger these again\n delete this._l[feature];\n };\n\n /**\n * addTest allows you to define your own feature detects that are not currently\n * included in Modernizr (under the covers it's the exact same code Modernizr\n * uses for its own [feature detections](https://github.com/Modernizr/Modernizr/tree/master/feature-detects)).\n * Just like the official detects, the result\n * will be added onto the Modernizr object, as well as an appropriate className set on\n * the html element when configured to do so\n *\n * @memberOf Modernizr\n * @name Modernizr.addTest\n * @optionName Modernizr.addTest()\n * @optionProp addTest\n * @access public\n * @function addTest\n * @param {string|object} feature - The string name of the feature detect, or an\n * object of feature detect names and test\n * @param {Function|boolean} test - Function returning true if feature is supported,\n * false if not. Otherwise a boolean representing the results of a feature detection\n * @returns {object} the Modernizr object to allow chaining\n * @example\n *\n * The most common way of creating your own feature detects is by calling\n * `Modernizr.addTest` with a string (preferably just lowercase, without any\n * punctuation), and a function you want executed that will return a boolean result\n *\n * ```js\n * Modernizr.addTest('itsTuesday', function() {\n * var d = new Date();\n * return d.getDay() === 2;\n * });\n * ```\n *\n * When the above is run, it will set Modernizr.itstuesday to `true` when it is tuesday,\n * and to `false` every other day of the week. One thing to notice is that the names of\n * feature detect functions are always lowercased when added to the Modernizr object. That\n * means that `Modernizr.itsTuesday` will not exist, but `Modernizr.itstuesday` will.\n *\n *\n * Since we only look at the returned value from any feature detection function,\n * you do not need to actually use a function. For simple detections, just passing\n * in a statement that will return a boolean value works just fine.\n *\n * ```js\n * Modernizr.addTest('hasjquery', 'jQuery' in window);\n * ```\n *\n * Just like before, when the above runs `Modernizr.hasjquery` will be true if\n * jQuery has been included on the page. Not using a function saves a small amount\n * of overhead for the browser, as well as making your code much more readable.\n *\n * Finally, you also have the ability to pass in an object of feature names and\n * their tests. This is handy if you want to add multiple detections in one go.\n * The keys should always be a string, and the value can be either a boolean or\n * function that returns a boolean.\n *\n * ```js\n * var detects = {\n * 'hasjquery': 'jQuery' in window,\n * 'itstuesday': function() {\n * var d = new Date();\n * return d.getDay() === 2;\n * }\n * }\n *\n * Modernizr.addTest(detects);\n * ```\n *\n * There is really no difference between the first methods and this one, it is\n * just a convenience to let you write more readable code.\n */\n function addTest(feature, test) {\n\n if (typeof feature === 'object') {\n for (var key in feature) {\n if (hasOwnProp(feature, key)) {\n addTest(key, feature[ key ]);\n }\n }\n } else {\n\n feature = feature.toLowerCase();\n var featureNameSplit = feature.split('.');\n var last = Modernizr[featureNameSplit[0]];\n\n // Again, we don't check for parent test existence. Get that right, though.\n if (featureNameSplit.length === 2) {\n last = last[featureNameSplit[1]];\n }\n\n if (typeof last !== 'undefined') {\n // we're going to quit if you're trying to overwrite an existing test\n // if we were to allow it, we'd do this:\n // var re = new RegExp(\"\\\\b(no-)?\" + feature + \"\\\\b\");\n // docElement.className = docElement.className.replace( re, '' );\n // but, no rly, stuff 'em.\n return Modernizr;\n }\n\n test = typeof test === 'function' ? test() : test;\n\n // Set the value (this is the magic, right here).\n if (featureNameSplit.length === 1) {\n Modernizr[featureNameSplit[0]] = test;\n } else {\n // cast to a Boolean, if not one already\n if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\n Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\n }\n\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = test;\n }\n\n // Set a single class (either `feature` or `no-feature`)\n setClasses([(!!test && test !== false ? '' : 'no-') + featureNameSplit.join('-')]);\n\n // Trigger the event\n Modernizr._trigger(feature, test);\n }\n\n return Modernizr; // allow chaining.\n }\n\n // After all the tests are run, add self to the Modernizr prototype\n Modernizr._q.push(function() {\n ModernizrProto.addTest = addTest;\n });\n\n \n\n\n /**\n * @optionName html5printshiv\n * @optionProp html5printshiv\n */\n\n // Take the html5 variable out of the html5shiv scope so we can return it.\n var html5;\n if (!isSVG) {\n /**\n * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n */\n ;(function(window, document) {\n /*jshint evil:true */\n /** version */\n var version = '3.7.3';\n\n /** Preset options */\n var options = window.html5 || {};\n\n /** Used to skip problem elements */\n var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\n /** Not all elements can be cloned in IE **/\n var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\n /** Detect whether the browser supports default html5 styles */\n var supportsHtml5Styles;\n\n /** Name of the expando, to work with multiple documents or to re-shiv one document */\n var expando = '_html5shiv';\n\n /** The id for the the documents expando */\n var expanID = 0;\n\n /** Cached data for each document */\n var expandoData = {};\n\n /** Detect whether the browser supports unknown elements */\n var supportsUnknownElements;\n\n (function() {\n try {\n var a = document.createElement('a');\n a.innerHTML = '';\n //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n supportsHtml5Styles = ('hidden' in a);\n\n supportsUnknownElements = a.childNodes.length == 1 || (function() {\n // assign a false positive if unable to shiv\n (document.createElement)('a');\n var frag = document.createDocumentFragment();\n return (\n typeof frag.cloneNode == 'undefined' ||\n typeof frag.createDocumentFragment == 'undefined' ||\n typeof frag.createElement == 'undefined'\n );\n }());\n } catch(e) {\n // assign a false positive if detection fails => unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Extends the built-in list of html5 elements\n * @memberOf html5\n * @param {String|Array} newElements whitespace separated list or array of new element names to shiv\n * @param {Document} ownerDocument The context document.\n */\n function addElements(newElements, ownerDocument) {\n var elements = html5.elements;\n if(typeof elements != 'string'){\n elements = elements.join(' ');\n }\n if(typeof newElements != 'string'){\n newElements = newElements.join(' ');\n }\n html5.elements = elements +' '+ newElements;\n shivDocument(ownerDocument);\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i+~])(' + getElements().join('|') + ')(?=[[\\\\s,>+~#.:]|$)', 'gi'),\n replacement = '$1' + shivNamespace + '\\\\:$2';\n\n while (index--) {\n pair = parts[index] = parts[index].split('}');\n pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement);\n parts[index] = pair.join('}');\n }\n return parts.join('{');\n }\n\n /**\n * Removes the given wrappers, leaving the original elements.\n * @private\n * @params {Array} wrappers An array of printable wrappers.\n */\n function removeWrappers(wrappers) {\n var index = wrappers.length;\n while (index--) {\n wrappers[index].removeNode();\n }\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Shivs the given document for print.\n * @memberOf html5\n * @param {Document} ownerDocument The document to shiv.\n * @returns {Document} The shived document.\n */\n function shivPrint(ownerDocument) {\n var shivedSheet,\n wrappers,\n data = getExpandoData(ownerDocument),\n namespaces = ownerDocument.namespaces,\n ownerWindow = ownerDocument.parentWindow;\n\n if (!supportsShivableSheets || ownerDocument.printShived) {\n return ownerDocument;\n }\n if (typeof namespaces[shivNamespace] == 'undefined') {\n namespaces.add(shivNamespace);\n }\n\n function removeSheet() {\n clearTimeout(data._removeSheetTimer);\n if (shivedSheet) {\n shivedSheet.removeNode(true);\n }\n shivedSheet= null;\n }\n\n ownerWindow.attachEvent('onbeforeprint', function() {\n\n removeSheet();\n\n var imports,\n length,\n sheet,\n collection = ownerDocument.styleSheets,\n cssText = [],\n index = collection.length,\n sheets = Array(index);\n\n // convert styleSheets collection to an array\n while (index--) {\n sheets[index] = collection[index];\n }\n // concat all style sheet CSS text\n while ((sheet = sheets.pop())) {\n // IE does not enforce a same origin policy for external style sheets...\n // but has trouble with some dynamically created stylesheets\n if (!sheet.disabled && reMedia.test(sheet.media)) {\n\n try {\n imports = sheet.imports;\n length = imports.length;\n } catch(er){\n length = 0;\n }\n\n for (index = 0; index < length; index++) {\n sheets.push(imports[index]);\n }\n\n try {\n cssText.push(sheet.cssText);\n } catch(er){}\n }\n }\n\n // wrap all HTML5 elements with printable elements and add the shived style sheet\n cssText = shivCssText(cssText.reverse().join(''));\n wrappers = addWrappers(ownerDocument);\n shivedSheet = addStyleSheet(ownerDocument, cssText);\n\n });\n\n ownerWindow.attachEvent('onafterprint', function() {\n // remove wrappers, leaving the original elements, and remove the shived style sheet\n removeWrappers(wrappers);\n clearTimeout(data._removeSheetTimer);\n data._removeSheetTimer = setTimeout(removeSheet, 500);\n });\n\n ownerDocument.printShived = true;\n return ownerDocument;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // expose API\n html5.type += ' print';\n html5.shivPrint = shivPrint;\n\n // shiv for print\n shivPrint(document);\n\n if(typeof module == 'object' && module.exports){\n module.exports = html5;\n }\n\n }(typeof window !== \"undefined\" ? window : this, document));\n }\n\n ;\n\n /**\n * contains checks to see if a string contains another string\n *\n * @access private\n * @function contains\n * @param {string} str - The string we want to check for substrings\n * @param {string} substr - The substring we want to search the first string for\n * @returns {boolean} true if and only if the first string 'str' contains the second string 'substr'\n */\n function contains(str, substr) {\n return !!~('' + str).indexOf(substr);\n }\n\n ;\n\n /**\n * createElement is a convenience wrapper around document.createElement. Since we\n * use createElement all over the place, this allows for (slightly) smaller code\n * as well as abstracting away issues with creating elements in contexts other than\n * HTML documents (e.g. SVG documents).\n *\n * @access private\n * @function createElement\n * @returns {HTMLElement|SVGElement} An HTML or SVG element\n */\n function createElement() {\n if (typeof document.createElement !== 'function') {\n // This is the case in IE7, where the type of createElement is \"object\".\n // For this reason, we cannot call apply() as Object is not a Function.\n return document.createElement(arguments[0]);\n } else if (isSVG) {\n return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);\n } else {\n return document.createElement.apply(document, arguments);\n }\n }\n\n ;\n\n /**\n * Create our \"modernizr\" element that we do most feature tests on.\n *\n * @access private\n */\n var modElem = {\n elem: createElement('modernizr')\n };\n\n // Clean up this element\n Modernizr._q.push(function() {\n delete modElem.elem;\n });\n\n \n\n var mStyle = {\n style: modElem.elem.style\n };\n\n // kill ref for gc, must happen before mod.elem is removed, so we unshift on to\n // the front of the queue.\n Modernizr._q.unshift(function() {\n delete mStyle.style;\n });\n\n \n\n /**\n * getBody returns the body of a document, or an element that can stand in for\n * the body if a real body does not exist\n *\n * @access private\n * @function getBody\n * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an\n * artificially created element that stands in for the body\n */\n function getBody() {\n // After page load injecting a fake body doesn't work so check if body exists\n var body = document.body;\n\n if (!body) {\n // Can't use the real body create a fake one.\n body = createElement(isSVG ? 'svg' : 'body');\n body.fake = true;\n }\n\n return body;\n }\n\n ;\n\n /**\n * injectElementWithStyles injects an element with style element and some CSS rules\n *\n * @access private\n * @function injectElementWithStyles\n * @param {string} rule - String representing a css rule\n * @param {Function} callback - A function that is used to test the injected element\n * @param {number} [nodes] - An integer representing the number of additional nodes you want injected\n * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes\n * @returns {boolean} the result of the specified callback test\n */\n function injectElementWithStyles(rule, callback, nodes, testnames) {\n var mod = 'modernizr';\n var style;\n var ret;\n var node;\n var docOverflow;\n var div = createElement('div');\n var body = getBody();\n\n if (parseInt(nodes, 10)) {\n // In order not to give false positives we create a node for each test\n // This also allows the method to scale for unspecified uses\n while (nodes--) {\n node = createElement('div');\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n div.appendChild(node);\n }\n }\n\n style = createElement('style');\n style.type = 'text/css';\n style.id = 's' + mod;\n\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\n (!body.fake ? div : body).appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(document.createTextNode(rule));\n }\n div.id = mod;\n\n if (body.fake) {\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = 'hidden';\n docOverflow = docElement.style.overflow;\n docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n ret = callback(div, rule);\n // If this is done after page load we don't want to remove the body so check if body exists\n if (body.fake && body.parentNode) {\n body.parentNode.removeChild(body);\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n } else {\n div.parentNode.removeChild(div);\n }\n\n return !!ret;\n }\n\n ;\n\n /**\n * domToCSS takes a camelCase string and converts it to hyphen-case\n * e.g. boxSizing -> box-sizing\n *\n * @access private\n * @function domToCSS\n * @param {string} name - String name of camelCase prop we want to convert\n * @returns {string} The hyphen-case version of the supplied name\n */\n function domToCSS(name) {\n return name.replace(/([A-Z])/g, function(str, m1) {\n return '-' + m1.toLowerCase();\n }).replace(/^ms-/, '-ms-');\n }\n\n ;\n\n\n /**\n * wrapper around getComputedStyle, to fix issues with Firefox returning null when\n * called inside of a hidden iframe\n *\n * @access private\n * @function computedStyle\n * @param {HTMLElement|SVGElement} elem - The element we want to find the computed styles of\n * @param {string|null} [pseudo] - An optional pseudo element selector (e.g. :before), of null if none\n * @param {string} prop - A CSS property\n * @returns {CSSStyleDeclaration} the value of the specified CSS property\n */\n function computedStyle(elem, pseudo, prop) {\n var result;\n\n if ('getComputedStyle' in window) {\n result = getComputedStyle.call(window, elem, pseudo);\n var console = window.console;\n\n if (result !== null) {\n if (prop) {\n result = result.getPropertyValue(prop);\n }\n } else {\n if (console) {\n var method = console.error ? 'error' : 'log';\n console[method].call(console, 'getComputedStyle returning null, its possible modernizr test results are inaccurate');\n }\n }\n } else {\n result = !pseudo && elem.currentStyle && elem.currentStyle[prop];\n }\n\n return result;\n }\n\n ;\n\n /**\n * nativeTestProps allows for us to use native feature detection functionality if available.\n * some prefixed form, or false, in the case of an unsupported rule\n *\n * @access private\n * @function nativeTestProps\n * @param {Array} props - An array of property names\n * @param {string} value - A string representing the value we want to check via @supports\n * @returns {boolean|undefined} A boolean when @supports exists, undefined otherwise\n */\n // Accepts a list of property names and a single value\n // Returns `undefined` if native detection not available\n function nativeTestProps(props, value) {\n var i = props.length;\n // Start with the JS API: https://www.w3.org/TR/css3-conditional/#the-css-interface\n if ('CSS' in window && 'supports' in window.CSS) {\n // Try every prefixed variant of the property\n while (i--) {\n if (window.CSS.supports(domToCSS(props[i]), value)) {\n return true;\n }\n }\n return false;\n }\n // Otherwise fall back to at-rule (for Opera 12.x)\n else if ('CSSSupportsRule' in window) {\n // Build a condition string for every prefixed variant\n var conditionText = [];\n while (i--) {\n conditionText.push('(' + domToCSS(props[i]) + ':' + value + ')');\n }\n conditionText = conditionText.join(' or ');\n return injectElementWithStyles('@supports (' + conditionText + ') { #modernizr { position: absolute; } }', function(node) {\n return computedStyle(node, null, 'position') === 'absolute';\n });\n }\n return undefined;\n }\n ;\n\n /**\n * cssToDOM takes a hyphen-case string and converts it to camelCase\n * e.g. box-sizing -> boxSizing\n *\n * @access private\n * @function cssToDOM\n * @param {string} name - String name of hyphen-case prop we want to convert\n * @returns {string} The camelCase version of the supplied name\n */\n function cssToDOM(name) {\n return name.replace(/([a-z])-([a-z])/g, function(str, m1, m2) {\n return m1 + m2.toUpperCase();\n }).replace(/^-/, '');\n }\n\n ;\n\n // testProps is a generic CSS / DOM property test.\n\n // In testing support for a given CSS property, it's legit to test:\n // `elem.style[styleName] !== undefined`\n // If the property is supported it will return an empty string,\n // if unsupported it will return undefined.\n\n // We'll take advantage of this quick test and skip setting a style\n // on our modernizr element, but instead just testing undefined vs\n // empty string.\n\n // Property names can be provided in either camelCase or hyphen-case.\n\n function testProps(props, prefixed, value, skipValueTest) {\n skipValueTest = is(skipValueTest, 'undefined') ? false : skipValueTest;\n\n // Try native detect first\n if (!is(value, 'undefined')) {\n var result = nativeTestProps(props, value);\n if (!is(result, 'undefined')) {\n return result;\n }\n }\n\n // Otherwise do it properly\n var afterInit, i, propsLength, prop, before;\n\n // If we don't have a style element, that means we're running async or after\n // the core tests, so we'll need to create our own elements to use.\n\n // Inside of an SVG element, in certain browsers, the `style` element is only\n // defined for valid tags. Therefore, if `modernizr` does not have one, we\n // fall back to a less used element and hope for the best.\n // For strict XHTML browsers the hardly used samp element is used.\n var elems = ['modernizr', 'tspan', 'samp'];\n while (!mStyle.style && elems.length) {\n afterInit = true;\n mStyle.modElem = createElement(elems.shift());\n mStyle.style = mStyle.modElem.style;\n }\n\n // Delete the objects if we created them.\n function cleanElems() {\n if (afterInit) {\n delete mStyle.style;\n delete mStyle.modElem;\n }\n }\n\n propsLength = props.length;\n for (i = 0; i < propsLength; i++) {\n prop = props[i];\n before = mStyle.style[prop];\n\n if (contains(prop, '-')) {\n prop = cssToDOM(prop);\n }\n\n if (mStyle.style[prop] !== undefined) {\n\n // If value to test has been passed in, do a set-and-check test.\n // 0 (integer) is a valid property value, so check that `value` isn't\n // undefined, rather than just checking it's truthy.\n if (!skipValueTest && !is(value, 'undefined')) {\n\n // Needs a try catch block because of old IE. This is slow, but will\n // be avoided in most cases because `skipValueTest` will be used.\n try {\n mStyle.style[prop] = value;\n } catch (e) {}\n\n // If the property value has changed, we assume the value used is\n // supported. If `value` is empty string, it'll fail here (because\n // it hasn't changed), which matches how browsers have implemented\n // CSS.supports()\n if (mStyle.style[prop] !== before) {\n cleanElems();\n return prefixed === 'pfx' ? prop : true;\n }\n }\n // Otherwise just return true, or the property name if this is a\n // `prefixed()` call\n else {\n cleanElems();\n return prefixed === 'pfx' ? prop : true;\n }\n }\n }\n cleanElems();\n return false;\n }\n\n ;\n\n /**\n * testProp() investigates whether a given style property is recognized\n * Property names can be provided in either camelCase or hyphen-case.\n *\n * @memberOf Modernizr\n * @name Modernizr.testProp\n * @access public\n * @optionName Modernizr.testProp()\n * @optionProp testProp\n * @function testProp\n * @param {string} prop - Name of the CSS property to check\n * @param {string} [value] - Name of the CSS value to check\n * @param {boolean} [useValue] - Whether or not to check the value if @supports isn't supported\n * @returns {boolean} an empty string if the property is supported, undefined if its unsupported\n * @example\n *\n * Just like [testAllProps](#modernizr-testallprops), only it does not check any vendor prefixed\n * version of the string.\n *\n * Note that the property name must be provided in camelCase (e.g. boxSizing not box-sizing)\n *\n * ```js\n * Modernizr.testProp('pointerEvents') // true\n * ```\n *\n * You can also provide a value as an optional second argument to check if a\n * specific value is supported\n *\n * ```js\n * Modernizr.testProp('pointerEvents', 'none') // true\n * Modernizr.testProp('pointerEvents', 'penguin') // false\n * ```\n */\n var testProp = ModernizrProto.testProp = function(prop, value, useValue) {\n return testProps([prop], undefined, value, useValue);\n };\n\n \n\n /**\n * List of property values to set for css tests. See ticket #21\n * https://github.com/modernizr/modernizr/issues/21\n *\n * @memberOf Modernizr\n * @name Modernizr._prefixes\n * @optionName Modernizr._prefixes\n * @optionProp prefixes\n * @access public\n * @example\n *\n * Modernizr._prefixes is the internal list of prefixes that we test against\n * inside of things like [prefixed](#modernizr-prefixed) and [prefixedCSS](#-code-modernizr-prefixedcss). It is simply\n * an array of hyphen-case vendor prefixes you can use within your code.\n *\n * Some common use cases include\n *\n * Generating all possible prefixed version of a CSS property\n * ```js\n * var rule = Modernizr._prefixes.join('transform: rotate(20deg); ');\n *\n * rule === 'transform: rotate(20deg); webkit-transform: rotate(20deg); moz-transform: rotate(20deg); o-transform: rotate(20deg); ms-transform: rotate(20deg);'\n * ```\n *\n * Generating all possible prefixed version of a CSS value\n * ```js\n * rule = 'display:' + Modernizr._prefixes.join('flex; display:') + 'flex';\n *\n * rule === 'display:flex; display:-webkit-flex; display:-moz-flex; display:-o-flex; display:-ms-flex; display:flex'\n * ```\n */\n // we use ['',''] rather than an empty array in order to allow a pattern of .`join()`ing prefixes to test\n // values in feature detects to continue to work\n var prefixes = (ModernizrProto._config.usePrefixes ? ' -webkit- -moz- -o- -ms- '.split(' ') : ['','']);\n\n // expose these for the plugin API. Look in the source for how to join() them against your input\n ModernizrProto._prefixes = prefixes;\n\n \n\n /**\n * Modernizr.mq tests a given media query, live against the current state of the window\n * adapted from matchMedia polyfill by Scott Jehl and Paul Irish\n * gist.github.com/786768\n *\n * @memberOf Modernizr\n * @name Modernizr.mq\n * @optionName Modernizr.mq()\n * @optionProp mq\n * @access public\n * @function mq\n * @param {string} mq - String of the media query we want to test\n * @returns {boolean}\n * @example\n * Modernizr.mq allows for you to programmatically check if the current browser\n * window state matches a media query.\n *\n * ```js\n * var query = Modernizr.mq('(min-width: 900px)');\n *\n * if (query) {\n * // the browser window is larger than 900px\n * }\n * ```\n *\n * Only valid media queries are supported, therefore you must always include values\n * with your media query\n *\n * ```js\n * // good\n * Modernizr.mq('(min-width: 900px)');\n *\n * // bad\n * Modernizr.mq('min-width');\n * ```\n *\n * If you would just like to test that media queries are supported in general, use\n *\n * ```js\n * Modernizr.mq('only all'); // true if MQ are supported, false if not\n * ```\n *\n * Note that if the browser does not support media queries (e.g. old IE) mq will\n * always return false.\n */\n var mq = (function() {\n var matchMedia = window.matchMedia || window.msMatchMedia;\n if (matchMedia) {\n return function(mq) {\n var mql = matchMedia(mq);\n return mql && mql.matches || false;\n };\n }\n\n return function(mq) {\n var bool = false;\n\n injectElementWithStyles('@media ' + mq + ' { #modernizr { position: absolute; } }', function(node) {\n bool = computedStyle(node, null, 'position') === 'absolute';\n });\n\n return bool;\n };\n })();\n\n ModernizrProto.mq = mq;\n\n \n/*!\n{\n \"name\": \"Touch Events\",\n \"property\": \"touchevents\",\n \"caniuse\": \"touch\",\n \"tags\": [\"media\", \"attribute\"],\n \"notes\": [{\n \"name\": \"Touch Events spec\",\n \"href\": \"https://www.w3.org/TR/2013/WD-touch-events-20130124/\"\n }],\n \"warnings\": [\n \"** DEPRECATED see https://github.com/Modernizr/Modernizr/pull/2432 **\",\n \"Indicates if the browser supports the Touch Events spec, and does not necessarily reflect a touchscreen device\"\n ],\n \"knownBugs\": [\n \"False-positive on some configurations of Nokia N900\",\n \"False-positive on some BlackBerry 6.0 builds – https://github.com/Modernizr/Modernizr/issues/372#issuecomment-3112695\"\n ]\n}\n!*/\n/* DOC\nIndicates if the browser supports the W3C Touch Events API.\n\nThis *does not* necessarily reflect a touchscreen device:\n\n* Older touchscreen devices only emulate mouse events\n* Modern IE touch devices implement the Pointer Events API instead: use `Modernizr.pointerevents` to detect support for that\n* Some browsers & OS setups may enable touch APIs when no touchscreen is connected\n* Future browsers may implement other event models for touch interactions\n\nSee this article: [You Can't Detect A Touchscreen](http://www.stucox.com/blog/you-cant-detect-a-touchscreen/).\n\nIt's recommended to bind both mouse and touch/pointer events simultaneously – see [this HTML5 Rocks tutorial](https://www.html5rocks.com/en/mobile/touchandmouse/).\n\nThis test will also return `true` for Firefox 4 Multitouch support.\n*/\n\n // Chrome (desktop) used to lie about its support on this, but that has since been rectified: https://bugs.chromium.org/p/chromium/issues/detail?id=36415\n // Chrome also changed its behaviour since v70 and recommends the TouchEvent object for detection: https://www.chromestatus.com/feature/4764225348042752\n Modernizr.addTest('touchevents', function() {\n if (('ontouchstart' in window) || window.TouchEvent || window.DocumentTouch && document instanceof DocumentTouch) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://github.com/Modernizr/Modernizr/issues/1814\n var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n });\n\n\n // Run each test\n testRunner();\n\n // Remove the \"no-js\" class if it exists\n setClasses(classes);\n\n delete ModernizrProto.addTest;\n delete ModernizrProto.addAsyncTest;\n\n // Run the things that are supposed to run after the tests\n for (var i = 0; i < Modernizr._q.length; i++) {\n Modernizr._q[i]();\n }\n\n // Leak Modernizr namespace\n scriptGlobalObject.Modernizr = Modernizr;\n\n\n;\n\n})(window, window, document);\n","import { getStorage } from \"./keyvaluestorage.js\";\n\nconst svgIconSelector = 'svg.c-icon';\nconst fileInfoSelector = 'span.c-file-info';\nconst svgFile = '/images/svg.svg';\n\nfunction getSvgUrl(el) {\n\tconst attributed = el?.getAttribute('data-svg-url');\n\tif (attributed) {\n\t\treturn attributed;\n\t}\n\tconst scriptUrl = getStorage().getStoredValue('scriptUrl') ?? '';\n\tif (scriptUrl){\n\t\tconst path = new URL(scriptUrl)?.pathname;\n\t\tconst endOfResourcePath = path?.indexOf('/js/') ?? -1;\n\t\tif (endOfResourcePath > -1) {\n\t\t\tconst relativePath = path.substring(0,endOfResourcePath);\n\t\t\treturn `${relativePath}${svgFile}`\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getYesterday(el) { return el?.getAttribute('data-yesterday'); }\n\nfunction renderIconTemplate(el, iconName, svgUrl) {\n\tif (!el || !iconName) {\n\t\treturn false;\n\t}\n\tif (!el.querySelector(svgIconSelector) && svgUrl) {\n\t\treturn ``;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nfunction renderSizeTemplate(el, type, size) {\n\tif (!el) {\n\t\treturn false;\n\t}\n\tif (!el.querySelector(fileInfoSelector) && type && size) {\n\t\treturn `(${type} - ${size})`;\n\t} else {\n\t\treturn false;\n\t}\n}\n/*\n * Add a leading 0 to numbers < max\n */\n\nfunction _pad(n, max = 10) {\n\treturn (n < max) ? ('0' + n) : n;\n}\n\n/*\n * Replaces the string in the data-yesterday attribute\n * with the date of yesterday in the format DD-MM-YYYY\n */\n\nexport function replaceYesterday(node) {\n\t// only preceed if the attribute exists and contains something other than spaces\n\tlet yesterday = getYesterday(node);\n\tif (yesterday && !!yesterday.replace(/\\s/g, '').length) {\n\t\tconst d = new Date();\n\t\td.setDate(d.getDate() - 1); // set date to yesterday\n\t\tconst yesterdate = `${_pad(d.getDate())}-${_pad(d.getMonth() + 1)}-${d.getFullYear()}`;\n\t\tconst html = node.innerHTML;\n\t\tconst regex = new RegExp(yesterday, 'gi');\n\t\tconst replacedHtml = html.replace(regex, yesterdate);\n\n\t\t// Only replace the html when something was replaced\n\t\tif (html !== replacedHtml) {\n\t\t\tnode.innerHTML = replacedHtml;\n\t\t}\n\t}\n}\n\n\nexport function enhanceLinks(node) {\n\tconst _links = [...node.querySelectorAll('a:not(.c-link):not(.c-button):not([id^=term]):not([data-role])')];\n\n\t_links.forEach( link => {\n\t\tif (!(link.querySelector('.c-link__text'))) {\n\t\t\tconst content = link.innerHTML;\n\t\t\tlink.innerHTML = `${content}`;\n\t\t}\n\t\tlink.classList.add('c-link');\n\t});\n}\n\nexport function enhanceExternals(node) {\n\tconst _links = [...node.querySelectorAll('a[rel=\"external\"]')];\n\tconst svgUrl = getSvgUrl(node);\n\n\t_links.forEach(link => {\n\t\tlet svgPart = renderIconTemplate(link, 'external-link', svgUrl);\n\n\t\tif (svgPart){\n\t\t\tlink.insertAdjacentHTML('beforeend', svgPart);\n\t\t}\n\t});\n}\n\nexport function enhanceType(node) {\n\tconst _links = [...node.querySelectorAll('[data-type]')];\n\tconst svgUrl = getSvgUrl(node);\n\n\t_links.forEach(link => {\n\t\tlet type = link.getAttribute('data-type');\n\t\tlet svgPart = renderIconTemplate(link, type, svgUrl);\n\n\t\tif (svgPart) {\n\t\t\tlink.insertAdjacentHTML('afterbegin', svgPart);\n\t\t}\n\t});\n}\n\nexport function enhanceSize(node) {\n\tconst _links = [...node.querySelectorAll('[data-size]')];\n\n\t_links.forEach(link => {\n\t\tlet type = link.getAttribute('data-type');\n\t\tlet size = link.getAttribute('data-size');\n\t\tlet sizePart = renderSizeTemplate(link, type, size);\n\t\tif (sizePart) {\n\t\t\tlink.insertAdjacentHTML('beforeend', sizePart);\n\t\t}\n\t});\n}\n\nexport function runLinkEnhancements(node) {\n\tenhanceLinks(node);\n\tenhanceSize(node);\n\tenhanceType(node);\n\tenhanceExternals(node);\n\treturn node;\n}\n","const triggers = {};\n/**\n * register a trigger\n * @param {string} triggerName - name of the trigger\n */\nexport function registerTrigger(triggerName) {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n}\n/**\n * register multiple triggers at once\n * @param {Array} triggerNames - array of trigger names\n */\nexport function registerTriggers(triggerNames) {\n if (triggerNames && triggerNames.length > 0 && triggerNames.forEach) {\n triggerNames.forEach(registerTrigger);\n }\n}\n\n/**\n * reset all subscriptions to a single trigger\n * @param {string} triggerName - name of the trigger\n */\nexport function resetTrigger(triggerName) {\n triggers[triggerName] = [];\n}\n\n/**\n * reset all subscriptions to every trigger in the array\n * @param {Array} triggerNames - array of trigger names\n */\nexport function resetTriggers(triggerNames) {\n if (triggerNames && triggerNames.length > 0 && triggerNames.forEach) {\n triggerNames.forEach(resetTrigger);\n }\n}\n\n/**\n * subscribe to the notification by triggername\n * @param {string} triggerName - name of the trigger to subscribe to\n * @param {function} fn - function to execute on trigger\n */\nexport function subscribeNotify(triggerName, fn) {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n if (fn && typeof fn === 'function') {\n triggers[triggerName].push(fn)\n }\n}\n\n/**\n * subscribe to the notification by triggername and more specific bij naming the function\n * @param {string} triggerName - name of the trigger to subscribe to\n * @param {function} fn - function to execute on trigger\n * @param {string} name - name of the function to execute\n */\nexport function subscribeNamedNotify(triggerName, {fn, name}) {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n if (fn && typeof fn === 'function' && name && typeof name === 'string') {\n triggers[triggerName].push({name, fn});\n }\n}\n\n/**\n * subscribe to the notification by triggername and more specific bij unique naming on the function\n * so there can only be one function with a certain name subscribed to a trigger enabling returning a value\n * if there is already a function with a certain name subscribed to a trigger it will be replaced\n * @param {string} triggerName - name of the trigger to subscribe to\n * @param {function} fn - function to execute on trigger\n * @param {string} name - unique name of the function to execute\n */\nexport function subscribeUniqueNamedNotify(triggerName, {fn, name}) {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n if (fn && typeof fn === 'function' && name && typeof name === 'string') {\n let tr = triggers[triggerName].find(trigger => trigger.name === name);\n if (tr) {\n tr.fn = fn;\n } else {\n triggers[triggerName].push({name, fn});\n }\n }\n}\n\n/**\n * unsubscribe from the notification by triggername\n * @param {string} triggerName - name of the trigger to unsubscribe from\n * @param {function} fn - function to unsubscribe\n */\nexport function unsubscribeNotify(triggerName, fn) {\n if (!triggers[triggerName]) {\n return;\n }\n if (fn && typeof fn === 'function') {\n triggers[triggerName] = triggers[triggerName].filter(fun => fun !== fn);\n }\n}\n\n/**\n * unsubscribe from the notification by triggername and more specific bij the function name\n * @param {string} triggerName - name of the trigger to unsubscribe from\n * @param {function} fn - function to unsubscribe\n * @param {string} name - name of the function to unsubscribe\n */\nexport function unsubscribeNamedNotify(triggerName, {fn, name}) {\n if (!triggers[triggerName]) {\n return;\n }\n if (fn && typeof fn === 'function' && name && typeof name === 'string') {\n triggers[triggerName] = triggers[triggerName].filter(obj => obj.name !== name && obj.fn !== fn);\n }\n}\n\n/**\n * unsubscribe from the notification by triggername and more specific bij the function name\n * @param {string} triggerName - name of the trigger to unsubscribe from\n * @param {function} fn - function to unsubscribe\n * @param {string} name - name of the function to unsubscribe\n */\nexport function unsubscribeUniqueNamedNotify(triggerName, {fn, name}) {\n if (!triggers[triggerName]) {\n return;\n }\n if (fn && typeof fn === 'function' && name && typeof name === 'string') {\n triggers[triggerName] = triggers[triggerName].filter(obj => obj.name !== name);\n }\n}\n\n/************************\n * All trigger functions are defined as async functions\n * Async functions always return Promises\n * When more than one function has subscribed to the notification they are executed in parallel\n * by means of Promise.all\n ************************/\n\n/**\n * trigger the subscribed functions and possibly pass them some arguments\n * @param {string} triggerName - name of the trigger\n * @param {Array} args - argument collection to pass to the subscribed functions\n * @returns an Array of promises that will resolve with true or reject with an error\n */\nexport async function triggerNotify(triggerName, ...args) {\n if (!triggers[triggerName]) {\n return;\n }\n\n const promiseArray = triggers[triggerName].map(fun => fun(...args));\n return Promise.all(promiseArray);\n}\n\n/**\n * trigger the subscribed functions that have the same name and possibly pass them some arguments\n * @param {string} triggerName - name of the trigger\n * @param {object} args - arguments to pass to the subscribed functions\n * @param {string} name - name of the function\n * @returns an Array of promises that will resolve with true or reject with an error\n */\nexport async function triggerNamedNotify(triggerName, {name, args = {}}) {\n if (!triggers[triggerName] || !(triggers[triggerName].length > 0 && name && typeof name === 'string')) {\n return;\n }\n let namedFuns = triggers[triggerName].filter(obj => obj.name === name && typeof obj.fn === 'function') || [];\n const promiseArray = namedFuns.map(namedFun => namedFun.fn(args));\n return Promise.all(promiseArray);\n}\n\n/**\n * trigger the unique subscribed function with the specified name and possibly pass it some arguments\n * @param {string} triggerName - name of the trigger\n * @param {object} args - arguments to pass to the subscribed functions\n * @param {string} name - name of the function\n * @returns a promise that will resolve with the result of the function or reject with an error\n */\nexport async function triggerUniqueNamedNotify(triggerName, {name, args = {}}) {\n if (!triggers[triggerName]) {\n throw new Error(`trigger with name: ${triggerName} does not exist!`);\n }\n if (triggers[triggerName].length > 0 && name && typeof name === 'string' ) {\n let namedFun = triggers[triggerName].find(obj => obj.name === name && typeof obj.fn === 'function');\n if (namedFun) {\n return namedFun.fn(args);\n }\n }\n}","/**\n * Module based on Lea Verou's Awesomplete, http://leaverou.github.io/awesomplete a simple, lightweight, usable local autocomplete library for modern browsers\n * @author Serge Huijben\n * MIT license\n *\n * autosuggestUrl should be like 'https://autosuggest.iqnomy.com/autosuggest/api/suggest/dictionary/'\n */\nimport { registerTriggers, triggerNotify } from \"./@helpers/js/observer.js\";\n\n\n// Helpers\n\nconst slice = Array.prototype.slice;\n\nconst $ = (expr, con) => typeof expr === 'string' ? (con || document).querySelector(expr) : expr || null;\n\nconst $$ = (expr, con) => slice.call((con || document).querySelectorAll(expr));\n\n$.create = (tag, o) => {\n const element = document.createElement(tag);\n\n for (let i in o) {\n let val = o[i];\n\n if (i === 'inside') {\n $(val).appendChild(element);\n } else if (i === 'after') {\n let afterref = $(val);\n afterref.parentNode.insertBefore(element, afterref.nextSibling);\n } else if (i === 'around') {\n let ref = $(val);\n ref.parentNode.insertBefore(element, ref);\n element.appendChild(ref);\n } else if (i in element) {\n element[i] = val;\n } else {\n element.setAttribute(i, val);\n }\n }\n\n return element;\n};\n\n$.getQueryString = (name, raw = false) => {\n if (!name || typeof name !== 'string') {\n return '';\n }\n let params = location.search && location.search.length > 0 && location.search.indexOf(name) > -1 ? location.search.substring(1).split(\"&\") :\n location.hash && location.hash.length > 0 && location.hash.indexOf(name) > -1 ? location.hash.substring(1).split(\"&\") : [];\n\n for(let i = 0; i < params.length; i++)\n {\n params[i] = params[i].replace(/\\+/g, ' ');\n \n }\n\n for (let param of params) {\n const p = param.split('=');\n if (p[0]?.toLowerCase() === name.toLowerCase())\n return raw ? p[1] : decodeURIComponent(p[1]);\n }\n return '';\n}\n\n$.regExpEscape = (s) => s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$.siblingIndex = (el) => {\n /* eslint-disable no-cond-assign */\n let i = 0;\n while (el.previousElementSibling) {\n el = el.previousElementSibling;\n i++;\n }\n return i;\n};\n\n// Static methods/properties\nconst FILTER_CONTAINS = (text, input) => new RegExp($.regExpEscape(input.trim()), 'i').test(text);\n\nconst FILTER_STARTSWITH = (text, input) => new RegExp('^' + $.regExpEscape(input.trim()), 'i').test(text);\n\nconst SORT_BYLENGTH = (a, b) => (a.length !== b.length) ? a.length - b.length : a < b ? -1 : 1;\n\nconst MARKTEXT = (text, input) => input === '' ? text : text.replace(new RegExp($.regExpEscape(input.trim()), 'gi'), '$&');\n\nconst ITEM = (html) => `
  • ${html}
  • `;\n\nconst MAKETEXT = (text, href) => !href ? text : `${text}`;\n\nclass SearchAwesomplete {\n\n constructor(element, {\n caption = 'Suggestions',\n autosuggestUrl = '',\n method = 'GET',\n key = 'key',\n autosuggestKey = 'query',\n autofocus = false,\n sort = true,\n filter = false,\n minChars = 2,\n maxItems = 10,\n autoFirst = false\n } = {}) {\n this._options = {\n caption,\n autosuggestUrl,\n method,\n key,\n autosuggestKey,\n autofocus,\n sort,\n filter,\n minChars,\n maxItems,\n autoFirst\n };\n this._element = element;\n this.input = $(this._element.querySelector('input.c-search-awesomplete__input'));\n this.submitButton = $(this._element.querySelector('[data-search-awesomplete-button]')) // use this attribute only if you want autosuggest on button click\n this.autosuggestDictionary = $(this._element.querySelector('.c-search-awesomplete__hiddendictionary'));\n this.notFoundTemplate = $(this._element.querySelector('[data-awesomplete-404]'));\n\n if (this.input) {\n this._init();\n }\n }\n\n // Setup\n _init() {\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('aria-autocomplete', 'list');\n this.input.value = $.getQueryString(this._options.key);\n\n this.filter = FILTER_CONTAINS;\n this.sort = SORT_BYLENGTH;\n this.item = ITEM;\n this.makeText = MAKETEXT;\n\n this.index = -1;\n\n this._createElements();\n\n this._bindEvents();\n\n if (this.input.hasAttribute('list')) {\n this.list = '#' + this.input.getAttribute('list');\n this.input.removeAttribute('list');\n } else {\n this.list = this.input.getAttribute('data-list') || this._options.list || [];\n }\n\n if (this.input.value && this._options.autofocus === true)\n window.setTimeout(()=>this.input.focus(),100);\n registerTriggers([\n \"awesomplete-highlight\",\n \"awesomplete-close\",\n \"awesomplete-open\",\n \"awesomplete-select\",\n \"awesomplete-selectcomplete\",\n ]);\n }\n\n // Create necessary elements\n _createElements() {\n\n this.container = $.create('div', {\n className: 'awesomplete',\n around: this.input\n });\n\n this.innerContainer = this._element.tagName === 'FORM' ? $.create('div', {\n className: 'c-search-awesomplete__list',\n hidden: 'hidden',\n inside: this.container\n }) : $.create('div', {\n className: 'c-search-awesomplete__list',\n hidden: 'hidden',\n after: $(this._element.querySelector('form.c-search-form__querybox'))\n });\n\n this.caption = $.create('span', {\n className: 'caption',\n inside: this.innerContainer\n });\n this.caption.innerHTML = this._options.caption;\n\n this.ul = $.create('ul', {\n inside: this.innerContainer\n });\n\n this.notFound = $.create('div', {\n className: 'c-search-awesomplete__list-404',\n inside: this.innerContainer\n });\n\n this.status = $.create('span', {\n className: 't-visuallyhidden',\n role: 'status',\n 'aria-live': 'assertive',\n 'aria-atomic': 'true',\n 'aria-relevant': 'additions',\n inside: this.container\n });\n\n }\n\n // Bind events\n _bindEvents() {\n\n if (this.input) {\n ['click','touchend','focus'].forEach((event) => {\n this.input.addEventListener(event, () => {\n if (this.timeoutID && typeof this.timeoutID === 'number') {\n window.clearTimeout(this.timeoutID);\n }\n this.timeoutID = window.setTimeout(() => {\n if (this.inputValueBackup && this.input.value && this.input.value === this.inputValueBackup && ((this.notFoundBackup && this.notFoundBackup.length > 0) || (this.ulBackup && this.ulBackup.length > 0))) {\n this.ul.innerHTML = this.ulBackup;\n this.notFound.innerHTML = this.notFoundBackup;\n this.open();\n } else if (!this.input.value || this.input.value.length < this._options.minChars) {\n this.close({reason:'clear'});\n } else {\n this.evaluate();\n }\n },200);\n });\n });\n this.input.addEventListener('input', () => this.wrapEvaluation());\n this.input.addEventListener('blur', () => this.close({reason: 'blur'}));\n this.input.addEventListener('keydown', (evt) => {\n const c = evt.keyCode;\n\n // If the dropdown `ul` is in view, then act on keydown for the following keys:\n // Enter / Esc / Up / Down\n if (this.opened) {\n if (c === 13) { // Enter\n if (this.selected) {\n evt.preventDefault();\n this.select();\n } else {\n let count = this.ul.children.length;\n if (count <= 0) {\n let linkToSearch = this.notFound.querySelector('.c-link');\n if (linkToSearch && linkToSearch.getAttribute('aria-selected') && linkToSearch.getAttribute('aria-selected') === 'true' && linkToSearch.href) {\n history.replaceState({foo:'bar'}, \"\", `${window.location.href.split('?')[0]}?${linkToSearch.href.split('?')[1] ? linkToSearch.href.split('?')[1] : '' }`);\n window.location = linkToSearch.href;\n this.close({\n reason: 'link'\n });\n }\n }\n }\n } else if (c === 27) { // Esc\n this.close({\n reason: 'esc'\n });\n } else if (c === 38 || c === 40) { // Down/Up arrow\n evt.preventDefault();\n let count = this.ul.children.length;\n if (count <= 0) {\n let linkToSearch = this.notFound.querySelector('.c-link');\n if (linkToSearch) {\n let toggle = linkToSearch.getAttribute('aria-selected') && linkToSearch.getAttribute('aria-selected') === 'true';\n linkToSearch.setAttribute('aria-selected', !toggle);\n }\n } else {\n this[c === 38 ? 'previous' : 'next'](count);\n }\n }\n }\n });\n const forbiddenChars = /[<>{}[\\]$\"'/]/g;\n // Act on keypress and paste action for the following keys:\n // < > ' \" $ { } [ ] / keys\n this.input.addEventListener('input', (evt) => {\n this.input.value = this.input.value.replace(forbiddenChars, '')\n evt.preventDefault();\n });\n }\n\n if (this.submitButton) {\n this.submitButton.addEventListener('click', (evt) => {\n evt.preventDefault();\n this.evaluate(true);\n });\n }\n\n if (this.input && this.input.form) {\n this.input.form.addEventListener('submit', () => this.close({reason: 'submit'}));\n }\n\n if (this.ul) {\n this.ul.addEventListener('mousedown', (evt) => {\n let li = evt.target;\n\n if (li !== this) {\n\n while (li && !/li/i.test(li.nodeName)) {\n li = li.parentNode;\n }\n\n if (li && evt.button === 0) { // Only select on left click\n evt.preventDefault();\n this.select(li, evt.target);\n }\n }\n });\n }\n }\n\n set list(list) {\n if (Array.isArray(list)) {\n this._list = list;\n } else if (typeof list === 'string' && list.indexOf(',') > -1) {\n this._list = list.split(/\\s*,\\s*/);\n } else { // Element or CSS selector\n list = $(list);\n\n if (list && list.children) {\n const items = [];\n slice.apply(list.children).forEach(function(el) {\n if (!el.disabled) {\n const text = el.textContent.trim();\n const value = el.value || text;\n const label = el.label || text;\n if (value !== '') {\n items.push({\n label: label,\n value: value\n });\n }\n }\n });\n this._list = items;\n }\n }\n\n if (document.activeElement === this.input) {\n this.wrapEvaluation();\n }\n }\n\n get list() {\n return this._list;\n }\n\n get selected() {\n return this.index > -1;\n }\n\n get opened() {\n return !this.innerContainer.hasAttribute('hidden');\n }\n\n close(o) {\n if (!this.opened) {\n return;\n }\n const ms = o && o.reason && o.reason === 'clear' ? 10 : 200;\n window.setTimeout(() => {\n this.innerContainer.setAttribute('hidden', '');\n if (this.input.value && this.input.value.length >= this._options.minChars) {\n this.inputValueBackup = `${this.input.value}`;\n this.notFoundBackup = `${this.notFound.innerHTML}`;\n this.ulBackup = `${this.ul.innerHTML}`;\n }\n this.notFound.innerHTML = '';\n this.ul.innerHTML = '';\n }, ms);\n this.index = -1;\n\n triggerNotify('awesomplete-close', o || {});\n }\n\n open() {\n this.innerContainer.removeAttribute('hidden');\n\n if (this._options.autoFirst && this.index === -1) {\n this.goto(0);\n }\n\n triggerNotify('awesomplete-open');\n }\n\n next(count) {\n this.goto(this.index < count - 1 ? this.index + 1 : -1);\n }\n\n previous(count) {\n this.goto(this.selected ? this.index - 1 : count - 1);\n }\n\n // Should not be used, highlights specific item without any checks!\n goto(i) {\n const lis = this.ul.children;\n\n if (this.selected) {\n lis[this.index].setAttribute('aria-selected', 'false');\n }\n\n this.index = i;\n\n if (i > -1 && lis.length > 0) {\n lis[i].setAttribute('aria-selected', 'true');\n this.status.textContent = lis[i].textContent;\n\n triggerNotify('awesomplete-highlight', {\n text: this.suggestions[this.index]\n });\n }\n }\n\n select(selected, origin) {\n if (selected) {\n this.index = $.siblingIndex(selected);\n } else {\n selected = this.ul.children[this.index];\n }\n\n if (selected) {\n const suggestion = this.suggestions[this.index];\n if (suggestion.href) {\n const searchable = `${this._options.key}=${$.getQueryString(this._options.key, true)}`;\n if (window.location.href.indexOf(searchable) === -1) {\n history.replaceState({foo:'bar'}, \"\", `${window.location.href.indexOf('?') > -1 ? window.location.href + '&' : window.location.href + '?'}${this._options.key}=${this.input.value}`);\n } else if (this.input.value !== $.getQueryString(this._options.key)) {\n history.replaceState({foo:'bar'}, \"\", window.location.href.replace(searchable, `${this._options.key}=${this.input.value}`));\n }\n window.location = suggestion.href;\n this.close({\n reason: 'link'\n });\n } else {\n const allowed = triggerNotify('awesomplete-select', {\n text: suggestion,\n origin: origin || selected\n });\n\n if (allowed) {\n this.input.value = suggestion.label?suggestion.label.replace(//g,'').replace(/<\\/mark>/g,''):'';\n this.close({\n reason: 'select'\n });\n triggerNotify('awesomplete-selectcomplete', {\n text: suggestion\n });\n if (window.$(this._element).is('form')) {\n window.$(this._element).submit();\n } else {\n window.$(this._element).find('form').submit();\n }\n }\n }\n }\n }\n\n wrapEvaluation() {\n if (this.timeoutID && typeof this.timeoutID === 'number') {\n window.clearTimeout(this.timeoutID);\n }\n this.timeoutID = window.setTimeout(() => this.evaluate(), 400);\n }\n\n noSuggestionsFound(value) {\n if (this.notFoundTemplate && this.notFoundTemplate.innerHTML && this.notFoundTemplate.innerHTML.length > 0) {\n this.notFound.innerHTML = this.notFoundTemplate.innerHTML.replace(/\\{0\\}/g, value);\n }\n return !!(this.notFound?.innerHTML?.length > 0);\n }\n\n async evaluate(skipLengthCheck) {\n this.inputValueBackup = '';\n const value = this.input.value;\n const controller = (window.AbortController) ? new AbortController() : {};\n const signal = controller.signal || {};\n\n let fetchPromise;\n if ((skipLengthCheck && value.length > 0)|| value.length >= this._options.minChars) {\n if (this._options.autosuggestUrl) {\n this.notFound.innerHTML = '';\n if (fetchPromise && controller.abort) {\n controller.abort();\n }\n let suggestURL = '';\n let searchData = {};\n let key = this._options.key ? this._options.key : 'key';\n if (this._options.method === \"POST\") {\n suggestURL = `${this._options.autosuggestUrl}${((this.autosuggestDictionary) ? (this.autosuggestDictionary.value) ? this.autosuggestDictionary.value : 'cz-all' : '')}`;\n \n // Create data object\n searchData = {\n \"maxResults\": this._options.maxResults\n };\n // Add key value pair to data object\n searchData[key] = value;\n } else {\n suggestURL = `${this._options.autosuggestUrl}&${this._options.autosuggestKey}=${value}`;\n } \n try {\n fetchPromise = fetch(suggestURL, {\n signal,\n method : this._options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\"\n },\n body: this._options.method === \"POST\" ? JSON.stringify(searchData) : undefined\n });\n let response = await fetchPromise;\n let result = await response.json();\n\t\t\t\t\t\tthis.ul.innerHTML = '';\n \n if (result) {\n this._list = result;\n if (this._list.length > 0) {\n this.index = -1;\n // Populate list with options that match\n this.suggestions = this._list\n .map((item) => new Suggestion(item))\n .filter((item) => {\n return this._options.filter ? this.filter(item.label,value): true;\n })\n .sort((a,b) => {\n return this._options.sort ? this.sort(a,b): 0\n })\n .slice(0, this._options.maxItems);\n\n let html = this.suggestions.reduce((sentence, suggestion) => `${sentence}${ITEM( MAKETEXT( MARKTEXT( suggestion.label, value ), suggestion.href ))}`, '')\n\n this.ul.innerHTML = html;\n\n if (this.ul.children.length === 0) {\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: 'nomatches'\n });\n }\n } else {\n this.open();\n }\n } else {\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: 'nomatches'\n });\n }\n }\n } else {\n console.error('server returns wrong status');\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: 'nomatches'\n });\n }\n }\n\n } catch (error) {\n this.ul.innerHTML = '';\n\t\t\t\t\t\tconsole.error(error);\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: 'error'\n });\n }\n } finally {\n fetchPromise = undefined;\n }\n } else {\n this.close({\n reason: 'no autosuggest url'\n });\n }\n } else {\n this.close({\n reason: 'to little characters'\n });\n }\n }\n};\n\n// Private class\nclass Suggestion {\n constructor(data) {\n const o = Array.isArray(data) ? {\n label: data[0],\n value: data[1]\n } : typeof data === 'object' && 'text' in data && 'value' in data ? data : {\n label: data,\n value: data\n };\n\n this.label = o.text || o.label || '';\n this.href = o.href || '';\n this.value = o.value;\n }\n\n get length() {\n return this.label.length;\n }\n\n toString() {\n return '' + this.label;\n }\n}\n\nexport default SearchAwesomplete; // as SearchAwesomplete\n","/*\n * Form Validation\n *\n * This class is build around the native validityState. Based on the validity state,\n * custom messages are shown.\n * Each field will be validated after blur.\n * Once a validation is done, it will keep revalidating on each input change.\n * The form will validate all fields on submit.\n *\n * Messages are fetched from the data-validation attributes on the error element\n * within each field (see form-field mustache template).\n *\n*/\n\nclass FormValidation {\n constructor(element, {useAjax = false} = {}) {\n this._element = element;\n this._options = {\n useAjax\n };\n this.init();\n }\n\n init() {\n this.validations = [];\n this.fields = this._element.querySelectorAll('.c-form-field');\n\n // on formsubmit, validate all fields\n this._element.addEventListener('submit', async (event) => {\n this.validations.forEach(validation => validation?.());\n const isValid = this._element.checkValidity();\n if (!isValid || this._options.useAjax) {\n event.preventDefault();\n }\n if (isValid && this._options.useAjax) {\n // do ajax call\n await ajaxSubmit(this._element, this.fields);\n }\n return isValid;\n });\n\n // generate validation function and message per form field\n this.fields.forEach((field) => {\n if (field.querySelector('.c-input-date')) {\n this.validations.push(createDateValidator(field));\n return;\n };\n this.validations.push(createValidator(field));\n });\n }\n}\n\nasync function ajaxSubmit(form, fields) {\n try {\n form.classList.add(\"loading\");\n const formData = new FormData(form);\n const response = await fetch(form.action, {\n method: \"POST\",\n body: formData,\n credentials: \"same-origin\",\n headers: {\n \"X-Requested-With\": \"XMLHttpRequest\",\n },\n });\n const contentType = response.headers.get(\"content-type\");\n form.classList.remove(\"loading\");\n let result = false\n if (contentType?.includes(\"application/json\")) {\n result = await response.json();\n if (!response.ok && result) {\n fields?.forEach?.((field) => {\n const input = field.querySelector(':is(input, select, textarea)[name]');\n let message = result[input.name] || result[input.id];\n if (message) {\n const label = field.querySelector('label');\n const errorBox = field.querySelector('.c-form-field__error');\n const errorText = errorBox.querySelector('.c-form-field__error-message');\n errorText.textContent = message.replace('{0}', label.textContent);;\n errorBox.classList.add('active');\n }\n });\n } else {\n const redirectUrl = result?.redirectUrl;\n if (redirectUrl) {\n window.location.href = redirectUrl;\n }\n }\n return result;\n }\n } catch (error) {\n form.classList.remove(\"loading\");\n console.log(error);\n return;\n }\n}\n\n/*\n * Create validator for a field.\n * Sets up listeners for blur/input and sets a message if validation fails.\n */\nfunction createValidator(field) {\n const inputs = [...field.querySelectorAll(\"input:not([type='submit']), select, textarea\")];\n if (!inputs.length) {\n return;\n }\n\n const label = field.querySelector('label');\n const errorBox = field.querySelector('.c-form-field__error');\n const errorText = errorBox.querySelector('.c-form-field__error-message');\n\n const validationFn = (isBlurred) => {\n if (inputs.every(input => input.validity.valid)) {\n errorBox.classList.remove('active');\n if (inputs.some((input => input.value && isBlurred))) {\n field.classList.add('valid');\n }\n\n return;\n }\n field.classList.remove('valid');\n errorBox.classList.add('active');\n inputs.some(input => {\n for (let state in input.validity) {\n if (state === 'valid') {\n continue;\n }\n if (input.validity[state]) {\n errorText.textContent = setMessage(state, errorBox, label);\n return true;\n }\n }\n return false;\n });\n }\n\n inputs.forEach(\n input => {\n let isBlurred = false;\n input.addEventListener('input', () => isBlurred && validationFn(isBlurred));\n input.addEventListener('blur', () => {\n isBlurred = true;\n validationFn(isBlurred);\n });\n input.validate = () => validationFn(true);\n }\n );\n\n return validationFn;\n}\n\n/*\n * Create validator for a date field.\n * Sets up listeners for blur/input and sets a message if validation fails.\n * Is custom because date field consists of three parts (day, month, year) and is done different.\n * Each field can be actively validated on own restrictions, but the date as a whole will also be checked.\n */\nfunction createDateValidator(field) {\n const minDate = new Date(field.querySelector('.c-input-date')?.dataset['min']);\n const maxDate = new Date(field.querySelector('.c-input-date')?.dataset['max']);\n const inputs = {\n Day: field.querySelector('.c-input-date__day input'),\n Month: field.querySelector('.c-input-date__month input'),\n Year: field.querySelector('.c-input-date__year input')\n };\n const label = field.querySelector('label');\n const errorBox = field.querySelector('.c-form-field__error');\n const errorText = errorBox.querySelector('.c-form-field__error-message');\n\n const validationFn = (isBlurred) => {\n let entriesValid = Object.entries(inputs).every(([scope,input]) => input.validity.valid);\n if (entriesValid) {\n errorBox.classList.remove('active');\n if (Object.entries(inputs).some(([scope, input]) => input.value && isBlurred)) {\n field.classList.add('valid');\n }\n }\n\n let invalid = Object.entries(inputs).some(([scope, input]) => {\n for (let state in input.validity) {\n if (state === 'valid') {\n continue;\n }\n if (input.validity[state]){\n // single field day/month/year is filled incorrectly\n // always use badInput message from whole date field in this case\n errorText.textContent = setMessage('BadInput', errorBox, label);\n return true;\n }\n }\n });\n\n let year = parseInt(inputs.Year.value, 10);\n let month = parseInt(inputs.Month.value, 10) - 1;\n let day = parseInt(inputs.Day.value, 10);\n\n // Check if date is filled at all\n if (Number.isInteger(year) || Number.isInteger(month) || Number.isInteger(day)) {\n let date = new Date(year, month, day);\n if (isNaN(date.valueOf()) || inputs.Year.value.length < 4) {\n errorText.textContent = setMessage('BadInput', errorBox, label);\n invalid = true;\n } else if (maxDate && date.getTime() > maxDate.getTime()) {\n errorText.textContent = setMessage('RangeOverflow', errorBox, label);\n invalid = true;\n } else if (minDate && date.getTime() < minDate.getTime()) {\n errorText.textContent = setMessage('RangeUnderflow', errorBox, label);\n invalid = true;\n }\n }\n\n if (invalid) {\n field.classList.remove('valid');\n errorBox.classList.add('active');\n } else {\n if (Object.values(inputs).some(input => input.value)) {\n field.classList.add('valid');\n }\n errorBox.classList.remove('active');\n }\n }\n\n let isBlurred = false;\n\n Object.entries(inputs).forEach(([scope, input]) => {\n input.addEventListener('input', () => isBlurred && validationFn(isBlurred));\n input.addEventListener('blur', () => {\n if (scope === 'Year') {\n isBlurred = true;\n }\n\n validationFn(isBlurred);\n });\n });\n\n return validationFn;\n}\n\nfunction setMessage(state, errorBox, label, prefix = '') {\n // grab text from matching data property.\n const propName = prefix + state.charAt(0).toUpperCase() + state.slice(1);\n const message = errorBox.dataset[`msg${propName}`] || 'Validatiefout';\n\n // Insert label text dynamically.\n return message.replace('{field}', label.textContent);\n}\n\nexport default FormValidation;","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":3===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","import { LitElement, html, css } from 'lit';\n\nexport default class CzCombobox extends LitElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\t\t`\n\t];\n\n\tstatic properties = {\n\t\tautocomplete: {},\n\t};\n\n\tget select() {\n\t\treturn this._select ??= this.querySelector('select');\n\t}\n\n\t/**\n\t * bake your own combobox \n\t */\n\tbakeComponent() {\n\n\t\treturn false;\n\t}\n\n\tupdated(changedProperties) {\n\t\tif (changedProperties?.has('autocomplete')) {\n\t\t\tthis.bakeComponent();\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html``;\n\t}\n}\n\ncustomElements.define('cz-combobox', CzCombobox);\n","import { getStorage } from \"./keyvaluestorage.js\";\n\nconst _paq = window?._paq || [];\nconst piwikPrefix = \"piwik_\";\nconst piwikSession = getStorage('session');\n\nlet pdl = {\n push: function (val) {\n if (val) {\n (window?.PiwikdataLayer || []).push?.(val);\n }\n }\n};\n\n\nlet lastEvent;\n\nfunction sameEvent(event) {\n let result = false;\n if (event && lastEvent) {\n result = event.event === lastEvent.event && event.event_category === lastEvent.event_category && event.event_action === lastEvent.event_action && event.event_name === lastEvent.event_name;\n } \n lastEvent = event;\n return result;\n}\n\nfunction findStoredPiwikKeys() {\n return Object.keys(sessionStorage)?.filter(key => key.startsWith(piwikPrefix) && key.length > piwikPrefix.length);\n}\n\nfunction storePiwikdimension(key, value) {\n if (!key || typeof key !== 'string' || typeof value !== 'string') return;\n piwikSession.storeKeyValue(`${piwikPrefix}${key}`, value);\n}\n\nexport function putDimensionInDatalayer(key, value) {\n if (key && typeof key === 'string') {\n pdl.push({[`${key}`]: `${value}`});\n } \n}\n\nexport function putCusDimInDatalayer(key, value) {\n if (key && typeof key === 'number' && value) {\n (window?._paq || _paq).push([\"setCustomDimensionValue\", key, `${value}`]);\n } \n}\n\nexport async function processStoredPiwikdimensions() {\n const piwikKeys = findStoredPiwikKeys();\n piwikKeys.forEach((pk) => {\n const val = piwikSession.getStoredValue(pk);\n putDimensionInDatalayer(pk.substring(piwikPrefix.length), val);\n })\n}\n\nexport function getStoredPiwikdimension(key) {\n if (!key) return;\n return piwikSession.getStoredValue(`${piwikPrefix}${key}`);\n}\n\nexport async function addEventToDatalayer(event) {\n if (!!event?.event && !sameEvent(event)) {\n pdl.push(event);\n }\n}\n\nexport async function addDimensionToDatalayer(key, value) {\n storePiwikdimension(key, value);\n putDimensionInDatalayer(key, value);\n}\n\nexport async function createHash(text) {\n if (typeof text !== 'string') return;\n\n const msgUint8 = new TextEncoder().encode(text); // encode as (utf-8) Uint8Array\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgUint8); // hash the message\n const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n // return bytes as hex string\n return hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}","/**\n * Wait function, useful if you want to show a loading spinner for example\n * just add `await wait(ms)` where you want to wait\n *\n * @param {number} ms the milliseconds you want to wait for\n */\nexport function wait(ms) {return new Promise(function(r) { setTimeout(r, ms)})};\n","import { wait } from './wait.js'\n// using reduce to pipe functions together\n// expects an array of generator functions\nconst pipeGenerators = fns => x => {\n\tif (fns && fns.length > 0) {\n\t\treturn fns.reduce((v, fn) => fn(v), x);\n\t} else {\n\t\treturn x;\n\t}\n};\n\n// using reduce to pipe functions together by wrapping them with async generator functions\n// expects an array of functions\nconst pipe = fns => x => {\n\tif (fns && fns.length > 0) {\n\t\treturn fns.reduce((v, fn) => {\n\t\t\treturn (async function* (input) {\n\t\t\t\tfor await (const i of input) {\n\t\t\t\t\tyield fn(i);\n\t\t\t\t}\n\t\t\t})(v);\n\t\t}, x);\n\t} else {\n\t\treturn x;\n\t}\n};\n\n/**\n * async generator will produce the entries in the queue one by one and wait for new entries\n * if onlyLast === true the async generator will produce only the final entry in the queue\n * will skip entries if new entries come in within the given ms (defaults to 500)\n *\n * @param {boolean} onlyLast\tif true only produce last entry, produce new entry if added within (ms)milliseconds \n * \t\t\t\t\t\t\t\t\tdefaults to false\n * @param {Array}\tqueue\t\tarray to hold the actions that will be produced\n * @param {Object}\tref\t\t\treference object to hold the callback function used to resolve a promise\n * @param {number}\tms\t\t\tnumber of milliseconds to wait for new entries before producing them\n * \t\t\t\t\t\t\t\t\tdefaults to 500\n * @param {number}\tpause\t\tnumber of milliseconds to pause before checking for new entries to produce\n * \t\t\t\t\t\t\t\t\tdefaults to 0\n */\nasync function* produce({ onlyLast = false, queue, ref, ms = 500, pause = 0 } = {}) {\n\tfor (;;) {\n\t\twhile (queue.length) {\n\t\t\tif (onlyLast) {\n\t\t\t\tif (queue.length > 1) {\n\t\t\t\t\tqueue.shift();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (ms > 0) {\n\t\t\t\t\tawait wait(ms);\n\t\t\t\t}\n\t\t\t\tif (queue.length > 1) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tyield queue.shift(); //yield the first entry in the queue.\n\t\t\tif (pause > 0) {\n\t\t\t\tawait wait(pause);\n\t\t\t}\n\t\t}\n\t\tawait new Promise(i => (ref.callback = i));\n\t\tref.callback = null;\n\t}\n}\n\n/**\n * async function to consume the entries produced and sending them down the pipeline\n *\n * @param {*}\t\t\tproducer\titerable or generator function that produces actions to be consumed\n * @param {function}\tfinalFn\t\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {Array}\t\tfns\t\t\tArray of functions to let each action pass through before being handled by the finalFn\n * @param {boolean}\t\tgen\t\t\tif true the functions are generator functions defaults to false\n */\nasync function consume(producer, finalFn = () => {}, fns, gen = false) {\n\tlet pipeline = gen ? pipeGenerators(fns) : pipe(fns);\n\tfor await (const i of pipeline(producer)) {\n\t\tfinalFn(i); // anything added to the queue eventually ends up here.\n\t}\n}\n\n/**\n * get a producer object that will allow iteration to produce the entries in the queue one by one and wait for new entries\n * if onlyLast === true the asynciterator will produce only the final entry in the queue\n * will skip entries if new entries come in within the given ms (defaults to 500)\n *\n * @param {boolean}\tonlyLast\tif true only produce last entry, produce new entry if added within (ms)milliseconds \n * \t\t\t\t\t\t\t\t\tdefaults to false\n * @param {number}\tms\t\t\tnumber of milliseconds to wait for new entries before producing them\n * \t\t\t\t\t\t\t\t\tdefaults to 500\n * @param {number}\tpause\t\tnumber of milliseconds to pause before checking for new entries to produce\n * \t\t\t\t\t\t\t\t\tdefaults to 0\n * @returns {*} iterable object\n */\nfunction getProducer({onlyLast = false, ms = 500, pause = 0} = {}) {\n\treturn {\n\t\tcallback: null,\n\t\tqueue: [],\n\t\t[Symbol.asyncIterator]: async function* () {\n\t\t\tfor (;;) {\n\t\t\t\twhile (this.queue.length) {\n\t\t\t\t\tif (onlyLast) {\n\t\t\t\t\t\tif (this.queue.length > 1) {\n\t\t\t\t\t\t\tthis.queue = [this.queue.pop()];\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ms > 0) {\n\t\t\t\t\t\t\tawait wait(ms);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.queue.length > 1) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tyield this.queue.shift();\n\t\t\t\t\tif (pause > 0) {\n\t\t\t\t\t\tawait wait(pause);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait new Promise(i => (this.callback = i));\n\t\t\t\tthis.callback = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * get a producer object that will allow iteration to produce the entries in the queue one by one and wait for new entries\n * if onlyFirst === true the asynciterator will produce only the first entry in the queue\n * will skip new entries when they come in within the given ms (defaults to 200)\n *\n * @param {boolean}\tonlyFirst\tif true only produce first entry, skip new entry if added within (ms)milliseconds \n * \t\t\t\t\t\t\t\t\tdefaults to false\n * @param {number}\tms\t\t\tnumber of milliseconds to wait for new entries before producing them\n * \t\t\t\t\t\t\t\t\tdefaults to 200\n * @returns {*} iterable object\n */\nfunction getReducer({onlyFirst = false, now = false, ms = 200}) {\n\treturn {\n\t\tcallback: null,\n\t\tqueue: [],\n\t\t[Symbol.asyncIterator]: async function* () {\n\t\t\tfor (;;) {\n\t\t\t\twhile (this.queue.length) {\n\t\t\t\t\tif (onlyFirst && !now) {\n\t\t\t\t\t\tif (ms > 0) {\n\t\t\t\t\t\t\tawait wait(ms);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.queue.length > 1) {\n\t\t\t\t\t\t\tthis.queue = [this.queue.shift()];\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tyield this.queue.shift();\n\t\t\t\t\tif (onlyFirst && now) {\n\t\t\t\t\t\tif (ms > 0) {\n\t\t\t\t\t\t\tawait wait(ms);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.queue.length > 1) {\n\t\t\t\t\t\t\tthis.queue = [this.queue.shift()];\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait new Promise(i => (this.callback = i));\n\t\t\t\tthis.callback = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Process all actions in a queue\n * Use it to process al the actions in a queue\n * pass regular functions as parameters\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tpause\tnumber of milliseconds to pause before checking for new entries to produce\n * @param {Array}\t\tfns \tArray of functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\t\t\tAn object you can push the actions you need processed to\n */ \nfunction processQueue(finalFn, pause, ...fns) {\n\tconst ref = {\n\t\tcallback: null\n\t};\t\n\tconst queue = [];\n\n\tconst producer = produce({\n\t\tqueue,\n\t\tref,\n\t\tpause\n\t});\t\n\n\tconsume(producer, finalFn, fns);\n\n\treturn {\n\t\tpush(action) {\n\t\t\tif (ref.callback) {\n\t\t\t\tref.callback();\n\t\t\t}\t\n\t\t\tqueue.push(action);\n\t\t}\t\n\t};\t\n}\t\n\n/**\n * Process first action in a queue added within a .2 second timeframe\n * Use it to process events where maybe some extra event get fired in a queue\n * pass regular functions as parameters\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tms\t\tnumber of milliseconds to wait for new entries before producing them\n * @param {Array}\t\tfns \tArray of functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\tAn object you can push the actions you need processed to\n */\nfunction processFirst(finalFn, ms, ...fns) {\n\tconst gen = getReducer({onlyFirst: true, ms});\n\tconsume(gen, finalFn, fns);\n\treturn {\n\t\tpush(val) {\n\t\t\tif (gen.callback) {\n\t\t\t\tgen.callback();\n\t\t\t}\n\t\t\tgen.queue.push(val);\n\t\t}\n\t};\n}\n\n/**\n * Process first action in a queue immediately and wait for a .2 second timeframe before processing the first event added to the queue\n * Use it to process events where you need to throttle events fired in a queue\n * pass regular functions as parameters\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tms\t\tnumber of milliseconds to wait for new entries before producing them\n * @param {Array}\t\tfns \tArray of functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\tAn object you can push the actions you need processed to\n */\nfunction processFirstNow(finalFn, ms, ...fns) {\n\tconst gen = getReducer({onlyFirst: true, now: true, ms});\n\tconsume(gen, finalFn, fns);\n\treturn {\n\t\tpush(val) {\n\t\t\tif (gen.callback) {\n\t\t\t\tgen.callback();\n\t\t\t}\n\t\t\tgen.queue.push(val);\n\t\t}\n\t};\n}\n\n/**\n * Process last action in a queue added within a .5 second timeframe\n * Use it to process events where maybe somebody changes their mind the actions in a queue\n * pass regular functions as parameters\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tms\t\tnumber of milliseconds to wait for new entries before producing them\n * @param {Array}\t\tfns \tArray of functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\tAn object you can push the actions you need processed to\n */\nfunction processEvent(finalFn, ms, ...fns) {\n\tconst por = getProducer({onlyLast: true, ms});\n\tconsume(por, finalFn, fns);\n\treturn {\n\t\tpush(val) {\n\t\t\tif (por.callback) {\n\t\t\t\tpor.callback();\n\t\t\t}\n\t\t\tpor.queue.push(val);\n\t\t}\n\t};\n}\n\n/**\n * Process all actions in a queue\n * Use it to process al the actions in a queue\n * pass generator functions as parameters apart from the finalFn\n * generator functions will give you more control but are harder to write\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tpause\tnumber of milliseconds to pause before checking for new entries to produce\n * @param {Array}\t\tfns \tArray of generator functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\tAn object you can push the actions you need processed to\n */\nfunction processQueueAsync(finalFn, pause, ...fns) {\n\tconst producer = getProducer({pause});\n\tconsume(producer, finalFn, fns, true);\n\treturn {\n\t\tpush(action) {\n\t\t\tif (producer.callback) {\n\t\t\t\tproducer.callback();\n\t\t\t}\n\t\t\tproducer.queue.push(action);\n\t\t}\n\t};\n}\n\n/**\n * Process last action in a queue added within a .5second timeframe\n * Use it to process events where maybe somebody changes their mindal the actions in a queue\n * pass generator functions as parameters apart from the finalFn\n * generator functions will give you more control but are harder to write\n *\n * @param {function}\tfinalFn\tFunction to execute for every action in the queue, will be called at the end of the pipeline\n * @param {number}\t\tms\t\tnumber of milliseconds to wait for new entries before producing them\n * @param {Array}\t\tfns \tArray of generator functions to let each action pass through before being handled by the finalFn\n * @returns {*}\t\t\tAn object you can push the actions you need processed to\n */\nfunction processEventAsync(finalFn, ms, ...fns) {\n\tconst gener = getProducer({onlyLast: true, ms});\n\tconsume(gener, finalFn, fns, true);\n\treturn {\n\t\tpush(action) {\n\t\t\tif (gener.callback) {\n\t\t\t\tgener.callback();\n\t\t\t}\n\t\t\tgener.queue.push(action);\n\t\t}\n\t};\n}\n\nfunction debounce(fn, ms) {\n\tif (!fn || typeof fn !== 'function') {\n\t\treturn;\n\t}\n\tconst eventQueue = processEvent(fn, ms);\n\treturn function(args) {\n\t\teventQueue.push(args);\n\t}\n}\n\nfunction throttle(fn, ms) {\n\tif (!fn || typeof fn !== 'function') {\n\t\treturn;\n\t}\n\tconst eventQueue = processFirstNow(fn, ms);\n\treturn function(args) {\n\t\teventQueue.push(args);\n\t}\n}\n\nexport {\n\tdebounce,\n\tthrottle,\n\tprocessQueue,\n\tprocessEvent,\n\tprocessFirst,\n\tprocessFirstNow,\n\tprocessQueueAsync,\n\tprocessEventAsync\n};","const prefix = \"shared-header__\";\n\n/**\n * Central store for classNames\n */\nexport default {\n layout: {\n logo: `${prefix}logo`,\n menuButtonMobile: `${prefix}btn-mobile--menu`,\n navContainer: `${prefix}nav`,\n navContainerWrapper: `${prefix}nav-wrapper`,\n rootElement: \"shared-header\",\n topBar: `${prefix}top-bar`,\n },\n modifiers: {\n active: \"is-active\",\n hidden: \"is-hidden\",\n submenu: \"submenu-is-open\",\n },\n navDomain: {\n nav: `${prefix}nav-domain`,\n },\n navPrimary: {\n container: `${prefix}nav__list`,\n listItem: `${prefix}nav__item`,\n mainItem: `${prefix}nav__link`,\n subNav: `${prefix}nav__sub-nav`,\n subNavGroup: `${prefix}nav__sub-nav__group-wrapper`,\n },\n overlay: `${prefix}overlay`,\n search: {\n dialog: `${prefix}search-dialog`,\n autoComplete: `${prefix}search-auto-complete`,\n buttonClear: `${prefix}search-btn-clear`,\n buttonSubmit: `${prefix}search-btn-submit`,\n buttonToggleSearchMobile: `${prefix}btn-mobile--search`,\n form: `${prefix}search`,\n formWrapperMobile: `${prefix}search-wrapper`,\n list: `${prefix}list`,\n listLabel: `${prefix}list-label`,\n },\n};\n","import ClassNames from \"./classNames.js\";\n\n/**\n * Central store for selecting dom elements\n */\n\n/**\n * Basic layout\n */\n\n// Optional root element wrapper for platform specific configuration\n// See example: ./front-end/src/index-local-dev.hbs\nconst $configWrapper = document.getElementById(\"shared-header-config-wrapper\");\n\n// HTML document body\nconst $htmlBody = document.querySelector(`body`);\n\nconst $logo = document.querySelector(`.${ClassNames.layout.logo}`);\n\n// Mobile menu button\nconst $menuButtonMobile = document.querySelector(\n `.${ClassNames.layout.menuButtonMobile}`\n);\n\n// Nav container\nconst $navContainer = document.querySelector(\n `.${ClassNames.layout.navContainer}`\n);\n\n// Nav container wrapper\nconst $navContainerWrapper = document.querySelector(\n `.${ClassNames.layout.navContainerWrapper}`\n);\n\n// Black opacity backdrop\nconst $overlay = document.querySelector(`.${ClassNames.overlay}`);\n\n// Root Element\n// Please note; an addtional wrapper is optional per platform to set up platform specific configuration\n// See example: ./front-end/src/index-local-dev.hbs\nconst $rootElement = document.querySelector(\n `.${ClassNames.layout.rootElement}`\n);\n\n/**\n * Nav primary\n */\n\n// Nav primary container\nconst $navPrimaryContainer = document.querySelector(\n `.${ClassNames.navPrimary.container}`\n);\n\n// Nav primary links\nconst $navPrimaryLinks = Array.prototype.slice.call(\n document\n .querySelector(`.${ClassNames.layout.navContainer}`)\n ?.querySelectorAll(\"a\") || []\n);\n\n// Nav primary main nav items (level 1 items)\nconst $navPrimaryMainItems = Array.prototype.slice.call(\n document.querySelectorAll(`.${ClassNames.navPrimary.mainItem}`) || []\n);\n\n// Nav primary buttons controlling a submenu\nconst $navPrimarySubmenuButtons = Array.prototype.slice.call(\n document\n .querySelector(`.${ClassNames.layout.navContainer}`)\n ?.querySelectorAll(`button.${ClassNames.navPrimary.mainItem}`) || []\n);\n\n// Nav primary subnavigation group of links\nconst $navPrimarySubNavGroups = Array.prototype.slice.call(\n document.querySelectorAll(`.${ClassNames.navPrimary.subNavGroup}`) || []\n);\n\n// Nav primary sub navigations\nconst $navPrimarySubNavs = Array.prototype.slice.call(\n document.querySelectorAll(`.${ClassNames.navPrimary.subNav}`) || []\n);\n\n/**\n * Nav domain\n */\n\n// Nav domain container\nconst $navDomain = document.querySelector(`.${ClassNames.navDomain.nav}`);\n\n// Nav domain links\nconst $navDomainLinks = $navDomain\n ? Array.prototype.slice.call($navDomain.querySelectorAll(\"a\") || [])\n : [];\n\n/**\n * Search\n */\n\n// Search mobile toggle button\nconst $searchButtonToggleSearchMobile = document.querySelector(\n `.${ClassNames.search.buttonToggleSearchMobile}`\n);\n\n// Search form wrapper mobile\nconst $searchFormWrapperMobile = document.querySelector(\n `.${ClassNames.search.formWrapperMobile}`\n);\n\n// Search form mobile\nconst $searchFormMobile = document\n .querySelector(`.${ClassNames.search.dialog}`)\n ?.querySelector(`.${ClassNames.search.form}`);\n\n// Search form wrapper desktop\nconst $searchFormDesktop = $navContainerWrapper?.querySelector(\n `.${ClassNames.search.form}`\n);\n\n// Search form input mobile\nconst $searchInputMobile = $searchFormMobile\n ? $searchFormMobile.querySelector(\"input\")\n : null;\n\n// Search form input desktop\nconst $searchInputDesktop = $searchFormDesktop\n ? $searchFormDesktop.querySelector(\"input\")\n : null;\n\n// Search button clear mobile\nconst $searchBtnClearMobile = $searchFormMobile\n ? $searchFormMobile.querySelector(`.${ClassNames.search.buttonClear}`)\n : null;\n\n// Search button clear desktop\nconst $searchBtnClearDesktop = $searchFormDesktop\n ? $searchFormDesktop.querySelector(`.${ClassNames.search.buttonClear}`)\n : null;\n\n// Search button submit mobile\nconst $searchSubmitMobile = $searchFormMobile\n ? $searchFormMobile.querySelector(`.${ClassNames.search.buttonSubmit}`)\n : null;\n\n// Search button submit desktop\nconst $searchSubmitDesktop = $searchFormDesktop\n ? $searchFormDesktop.querySelector(`.${ClassNames.search.buttonSubmit}`)\n : null;\n\n// Search button auto complete mobile\nconst $searchAutoCompleteMobile = $searchFormMobile\n ? $searchFormMobile.querySelector(`.${ClassNames.search.autoComplete}`)\n : null;\n\n// Search button auto complete desktop\nconst $searchAutoCompleteDesktop = $searchFormDesktop\n ? $searchFormDesktop.querySelector(`.${ClassNames.search.autoComplete}`)\n : null;\n\nexport default {\n $configWrapper,\n $htmlBody,\n $logo,\n $menuButtonMobile,\n $navContainer,\n $navContainerWrapper,\n $overlay,\n $rootElement,\n $navPrimaryContainer,\n $navPrimaryLinks,\n $navPrimaryMainItems,\n $navPrimarySubmenuButtons,\n $navPrimarySubNavGroups,\n $navPrimarySubNavs,\n $navDomain,\n $navDomainLinks,\n $searchButtonToggleSearchMobile,\n $searchFormWrapperMobile,\n $searchFormMobile,\n $searchFormDesktop,\n $searchInputMobile,\n $searchInputDesktop,\n $searchBtnClearMobile,\n $searchBtnClearDesktop,\n $searchSubmitMobile,\n $searchSubmitDesktop,\n $searchAutoCompleteMobile,\n $searchAutoCompleteDesktop,\n};\n","/**\n * Translates a contextual correct action to a classList method\n *\n * Most presentational changes are handeled by simple class changes. Terms like\n * \"add\" and \"remove\" don't always make sense when the presentational result of\n * a method is e.g. showing or hiding it.\n * \n * action = \"close\" | \"open\" | \"toggle\";\n * result = \"add\" | \"remove\" | \"toggle\";\n *\n * @param action The action to interpret\n */\nexport function interpretAction(action) {\n if (action === \"close\") return \"remove\";\n if (action === \"open\") return \"add\";\n return action;\n}","/**\n * Handles all functionality related to account navigation\n *\n * A11Y requirements: {@link https://w3c.github.io/aria-practices/examples/menu-button/menu-button-links.html}\n */\n\nimport ClassNames from \"./classNames.js\";\nimport DomElements from \"./domElements.js\";\nconst {\n $navPrimarySubNavs: $subNavs,\n $navPrimaryContainer,\n $menuButtonMobile,\n $navContainerWrapper\n} = DomElements;\n\nimport { interpretAction } from \"../../@helpers/js/interpretAction.js\";\n\n/**\n * Check if mobile menu open\n *\n * @returns 'true' if open, 'false' if hidden\n */\nconst isMobileMenuOpen = () => !!$menuButtonMobile?.classList?.contains(\n `${ClassNames.layout.menuButtonMobile}--${ClassNames.modifiers.active}`\n);\n\n// Currently active\nlet activeSubmenuId = \"\";\n\nconst updateActiveSubmenuId = (newValue) => activeSubmenuId = newValue\nconst getActiveSubmenuId = () => activeSubmenuId\n\n/**\n * Close all submenus\n */\nfunction closeAllSubmenus() {\n const subNavList = Array.prototype.slice.call($subNavs, 0);\n subNavList.forEach(($submenu) => {\n const { submenuId } = $submenu.dataset;\n submenuId && toggle(submenuId, \"close\");\n });\n activeSubmenuId = \"\";\n}\n\n/**\n * Show, hide or toggle a submenu\n *\n * Also calculates the submenu position for tablet and up\n * (unable to do with just CSS)\n *\n * @param id Submenu id\n * @param action Type of action\n */\nconst toggle = (id, action) => {\n const subNavList = Array.prototype.slice.call($subNavs, 0);\n subNavList.forEach(($submenu) => {\n if ($submenu.dataset.submenuId === id) {\n // Toggle submenu\n $submenu.classList[interpretAction(action)](\n `${ClassNames.navPrimary.subNav}--${ClassNames.modifiers.active}`\n );\n\n // Set active submenu state on trigger\n $submenu.parentElement\n .querySelector(`.${ClassNames.navPrimary.mainItem}`)\n .classList[interpretAction(action)](\n `${ClassNames.navPrimary.mainItem}--${ClassNames.modifiers.submenu}`\n );\n\n $submenu.parentElement.classList[interpretAction(action)](\n `${ClassNames.navPrimary.listItem}--${ClassNames.modifiers.submenu}`\n );\n\n // Set active submenu state on container\n // (Required to handle different active states in CSS)\n if (window.innerWidth >= 768) {\n $navPrimaryContainer.classList[interpretAction(action)](\n `${ClassNames.navPrimary.container}--${ClassNames.modifiers.submenu}`\n );\n } else {\n $navPrimaryContainer.classList.remove(\n `${ClassNames.navPrimary.container}--${ClassNames.modifiers.submenu}`\n );\n }\n\n // Handle `aria-expanded`\n const trigger = document.querySelector(`[data-submenu-id=\"${id}\"]`);\n\n if (trigger) {\n trigger.setAttribute(\n \"aria-expanded\",\n `${!(trigger.getAttribute(\"aria-expanded\") === \"true\")}`\n );\n }\n\n // Set submenu position (by rules of design)\n const menuWidth =\n $navContainerWrapper.clientWidth -\n parseFloat(getComputedStyle($navContainerWrapper).paddingLeft) -\n parseFloat(getComputedStyle($navContainerWrapper).paddingRight);\n // Number of pixels the submenu is too far overlapping to the right\n const overlap =\n $submenu.clientWidth -\n 2 * (window.innerWidth >= 1024 ? 32 : 24) -\n (menuWidth - $submenu.parentElement.offsetLeft);\n\n // Correct position for screens equal or larger the 1024 (M up)\n if (window.innerWidth >= 1024) {\n if (overlap < $submenu.parentElement.offsetLeft) {\n $submenu.style.marginLeft = `-${overlap}px`;\n } else {\n $submenu.style.marginLeft = `-${$submenu.parentElement.offsetLeft}px`;\n }\n }\n\n // Correct position for breakpoint 768 - 1024 (M)\n if (window.innerWidth >= 768 && window.innerWidth < 1024) {\n if ($submenu.dataset.columns <= 2) {\n $submenu.style.marginLeft = `-${overlap}px`;\n } else {\n const spaceLeft =\n $navContainerWrapper.offsetLeft + $submenu.parentElement.offsetLeft;\n $submenu.style.marginLeft = `-${spaceLeft}px`;\n }\n }\n\n // Reset corrected position for screens smaller then 768 (S down)\n if (window.innerWidth < 768) $submenu.style.marginLeft = \"\";\n }\n });\n};\n\n/**\n * Check if any submenu is open\n *\n * @returns If open\n */\nconst isAnySubmenuOpen = () => !!activeSubmenuId;\n\nexport default {\n isMobileMenuOpen,\n updateActiveSubmenuId,\n getActiveSubmenuId,\n closeAllSubmenus,\n toggle,\n isAnySubmenuOpen,\n};\n","import { lockScroll } from \"../../@helpers/js/scrollLocker.js\";\n\nimport ClassNames from \"./classNames.js\";\nimport DomElements from \"./domElements.js\";\nconst { $overlay } = DomElements;\nimport Shared from \"./shared.js\";\nconst {\n isMobileMenuOpen,\n closeAllSubmenus,\n isAnySubmenuOpen,\n} = Shared;\nimport { interpretAction } from \"../../@helpers/js/interpretAction.js\";\n\n/**\n * Handle initial setup\n */\nfunction initOverlay() {\n $overlay?.addEventListener(\"click\", () => {\n if (isAnySubmenuOpen()) closeAllSubmenus();\n toggle(\"close\");\n toggleScrollLock(false);\n });\n}\n\n/**\n * Reevaluate if overflow should be opened or closed\n */\nfunction reevaluateOverlay() {\n if (!isOpen()) {\n if (isAnySubmenuOpen() || isMobileMenuOpen()) {\n toggle(\"open\");\n toggleScrollLock(true);\n }\n } else {\n if (\n (!isAnySubmenuOpen() &&\n window.innerWidth >= 768) ||\n (!isMobileMenuOpen() && window.innerWidth < 768)\n ) {\n toggle(\"close\");\n toggleScrollLock(false);\n }\n }\n}\n\n/**\n * Check if open\n *\n * @returns If open\n */\nconst isOpen = () => !!$overlay?.classList?.contains(\n `${ClassNames.overlay}--${ClassNames.modifiers.active}`\n);\n\n/**\n * Toggle visibility\n */\nconst toggle = (action) => {\n $overlay.classList[interpretAction(action)](\n `${ClassNames.overlay}--${ClassNames.modifiers.active}`\n );\n};\n\n/**\n * Only lock scrollbar if there is no visible scrollbar (mobile).\n * Locking can cause content shift otherwise\n */\nfunction toggleScrollLock(lock) {\n const scrollbarWidth =\n window.innerWidth - document.documentElement.offsetWidth;\n if (scrollbarWidth && lock) return;\n\n lockScroll(lock, \"instant\");\n}\n\nexport default {\n initOverlay,\n reevaluateOverlay,\n};\n","/**\n * Lock- or unlock scrolling.\n */\nexport function lockScroll(lock, behavior = \"auto\") {\n\tif (globalThis?.window) {\n\t\tlet scrollY;\n\t\tif (lock) {\n\t\t\tscrollY = window.scrollY ?? 0;\n\t\t\tdocument.body.style.minHeight = \"100%\";\n\t\t\tdocument.body.style.position = \"fixed\";\n\t\t\tdocument.body.style.top = scrollY ? `-${scrollY}px` : \"0px\";\n\t\t\tdocument.body.style.width = \"100%\";\n\t\t}\n\t\telse {\n\t\t\tscrollY = parseInt(document.body.style.top) * -1 || 0;\n\t\t\tdocument.body.style.position = \"\";\n\t\t\tdocument.body.style.top = \"\";\n\t\t\tdocument.body.style.width = \"\";\n\t\t\tdocument.body.style.minHeight = \"\";\n\t\t\tbehavior = [\"auto\", \"instant\", \"smooth\"].includes(behavior) ? behavior : \"auto\";\n\t\t\tif (scrollY > 0) {\n\t\t\t\twindow.scrollTo({left: 0, top: scrollY, behavior});\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Handles all functionality related to the primary navigation container\n */\n\nimport ClassNames from \"./classNames.js\";\nimport DomElements from \"./domElements.js\";\nconst { $menuButtonMobile, $navContainerWrapper } = DomElements;\nimport Overlay from \"./handleOverlay.js\";\nconst { reevaluateOverlay } = Overlay;\nimport { interpretAction } from \"../../@helpers/js/interpretAction.js\";\n\n/**\n * On click menu button (small vp)\n */\nconst initMenuButton = () => {\n $menuButtonMobile?.addEventListener(\"click\", () => {\n if (!isOpen()) {\n toggleNavigation(\"open\");\n } else toggleNavigation(\"close\");\n reevaluateOverlay();\n });\n};\n\n/**\n * Check if open\n *\n * @returns 'true' if open, 'false' if hidden\n */\nconst isOpen = () => !!$navContainerWrapper?.classList?.contains(\n `${ClassNames.layout.navContainerWrapper}--${ClassNames.modifiers.active}`\n);\n\n/**\n * Toggle visibility\n *\n * @param action Type of action to handle\n */\nfunction toggleNavigation(action) {\n $menuButtonMobile.classList[interpretAction(action)](\n `${ClassNames.layout.menuButtonMobile}--${ClassNames.modifiers.active}`\n );\n $menuButtonMobile.setAttribute(\n \"aria-expanded\",\n `${!($menuButtonMobile.getAttribute(\"aria-expanded\") === \"true\")}`\n );\n\n $navContainerWrapper.classList[interpretAction(action)](\n `${ClassNames.layout.navContainerWrapper}--${ClassNames.modifiers.active}`\n );\n}\n\nexport default {\n initMenuButton,\n isOpen,\n toggleNavigation,\n};\n","/**\n * Handles all functionality related to domain navigation\n *\n * A11Y requirements: {@link https://www.w3.org/TR/wai-aria-practices/examples/disclosure/disclosure-navigation.html}\n */\n\nimport DomElements from \"./domElements.js\";\nconst { $navDomainLinks: $links } = DomElements;\n\n/**\n * Initialize nav domain functionality\n */\nexport default function initNavDomain() {\n initKeyboardSupport();\n}\n\n/**\n * Keyboard support (A11Y)\n */\nconst initKeyboardSupport = () => {\n if ($links?.length) {\n $links.forEach(($link, i) => {\n $link.addEventListener(\"keyup\", (event) => {\n switch (event.code) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n i + 1 in $links && $links[i + 1].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n i - 1 in $links && $links[i - 1].focus();\n break;\n case \"Home\":\n $links[0].focus();\n break;\n case \"End\":\n $links[$links.length - 1].focus();\n break;\n }\n });\n });\n }\n};\n","import { debounce } from \"../../@helpers/js/queue-processing.js\";\n\nimport ClassNames from \"./classNames.js\";\nimport DomElements from \"./domElements.js\";\nimport Shared from \"./shared.js\";\nconst {\n closeAllSubmenus,\n isAnySubmenuOpen,\n} = Shared;\nimport Overlay from \"./handleOverlay.js\";\nconst { reevaluateOverlay } = Overlay;\nimport { interpretAction } from \"../../@helpers/js/interpretAction.js\";\n\nconst $autoCompleteDesktop = DomElements.$searchAutoCompleteDesktop;\nconst $autoCompleteMobile = DomElements.$searchAutoCompleteMobile;\nconst $btnClearDesktop = DomElements.$searchBtnClearDesktop;\nconst $btnClearMobile = DomElements.$searchBtnClearMobile;\nconst $buttonToggleSearchMobile = DomElements.$searchButtonToggleSearchMobile;\nconst $formDesktop = DomElements.$searchFormDesktop;\nconst $formMobile = DomElements.$searchFormMobile;\nconst $formWrapperMobile = DomElements.$searchFormWrapperMobile;\nconst $inputDesktop = DomElements.$searchInputDesktop;\nconst $inputMobile = DomElements.$searchInputMobile;\nconst $submitDesktop = DomElements.$searchSubmitDesktop;\nconst $submitMobile =DomElements.$searchSubmitMobile;\nconst $nav = DomElements.$navAccount;\n\n/**\n * IMPORTANT\n * We were unable to support a single search form for both desktop and mobile\n * The design is to different\n * So all required functionality needs to be applied to both mobile and desktop\n */\n\n// Array for auto complete results\nlet autoCompleteResponse = [];\nlet selectedSearchResultIndex = -1;\nlet searchInitialized = false;\nconst site = Array.from(document.documentElement.classList).reduce((prev, current) => {\n if (['cz', 'just', 'zorgkantoor', 'pzp', 'czdirect', 'pzpdirect'].includes(current)) {\n return current;\n }\n return prev;\n}, null);\n\n/**\n * Handle initial setup\n */\nfunction initSearch() {\n // prevent double execution\n if (searchInitialized) {\n return;\n }\n searchInitialized = true;\n\n if ($formMobile || $formDesktop) {\n handleInputFocus();\n appendUserInputToFormAction();\n setSubmitDisabledIfInputIsToSmallDesktop();\n handleSubmitForms();\n handleInputValidation();\n setupAutoComplete();\n handleClearButton();\n }\n}\n\n/**\n * If search on mobile is open\n */\nexport const searchMobileisOpen = () => !!$formWrapperMobile?.classList?.contains(\n `${ClassNames.search.formWrapperMobile}--${ClassNames.modifiers.active}`\n);\n\n/**\n * Toggle display search mobile\n */\nexport const clickToggleSearchMobile = () => {\n $buttonToggleSearchMobile.dispatchEvent(new Event(\"click\"));\n}\n\n/**\n * Toggle display search mobile\n */\nexport const toggleSearchMobile = (action) => {\n const interpretedAction = interpretAction(action);\n\n // Handle classes\n $formWrapperMobile.classList[interpretedAction](\n `${ClassNames.search.formWrapperMobile}--${ClassNames.modifiers.active}`\n );\n\n $buttonToggleSearchMobile.classList[interpretedAction](\n `${ClassNames.search.buttonToggleSearchMobile}--${ClassNames.modifiers.active}`\n );\n\n DomElements.$logo.classList[interpretedAction](\n `${ClassNames.layout.logo}--${ClassNames.modifiers.hidden}`\n );\n\n if ($nav) {\n $navAccountBtnMobile.classList[interpretedAction](\n `${ClassNames.navAccount.btnMobile}--${ClassNames.modifiers.hidden}`\n );\n }\n\n // If open focus directly on input\n if (searchMobileisOpen()) $inputMobile.focus();\n};\n\n/**\n * Keep both desktop and mobile input in sync\n */\nconst appendUserInputToFormAction = () => {\n $inputMobile?.addEventListener(\"keyup\", () => {\n setSearchFormAction($inputMobile);\n if ($inputDesktop) {\n $inputDesktop.value = $inputMobile.value;\n }\n });\n\n $inputDesktop?.addEventListener(\"keyup\", () => {\n setSearchFormAction($inputDesktop);\n if ($inputMobile) {\n $inputMobile.value = $inputDesktop.value;\n }\n });\n};\n\n/**\n * Set the action based on user value\n */\nconst setSearchFormAction = ($input) => {\n const action = `${\n ($formMobile?.action || $formDesktop?.action)?.split(\"?\")[0]\n }?query=${$input.value\n .trim()\n .replace(/ {2,}/g, \" \") // Remove multiple spaces\n .replace(/\\s/g, \"+\") // Replace spaces for '+' character\n .replace(/[^+a-zA-Z0-9]/g, \"\")}`; // Remove all special characters except alfabetical, numeric and '+' characters\n\n if ($formDesktop) $formDesktop.action = action;\n if ($formMobile) $formMobile.action = action;\n};\n\n/**\n * Evaluate if submit button should be dis- or enabled\n */\nconst evaluateSubmitDisabled = () => {\n if ($inputMobile?.value?.length > 0 && $submitMobile) $submitMobile.disabled = false;\n else if ($submitMobile) $submitMobile.disabled = true;\n\n if ($inputDesktop?.value?.length > 0 && $submitDesktop) $submitDesktop.disabled = false;\n else if ($submitDesktop) $submitDesktop.disabled = true;\n};\n\n/**\n * Clear auto complete results and reset selected result index\n */\nconst clearAutoCompleteResults = () => {\n // Clear auto complete containers\n if ($autoCompleteMobile) $autoCompleteMobile.innerHTML = \"\";\n if ($autoCompleteDesktop) $autoCompleteDesktop.innerHTML = \"\";\n\n // Reset accessiblity field\n $inputDesktop?.setAttribute(\"aria-expanded\", \"false\");\n $inputMobile?.setAttribute(\"aria-expanded\", \"false\");\n\n // reset selected search index\n selectedSearchResultIndex = -1;\n\n // reset autocomplete results\n autoCompleteResponse = [];\n};\n\n/**\n * Handle API response in UI\n */\nconst handleAutoComplete = async () => {\n const value = $inputMobile?.value || $inputDesktop?.value;\n if (!value) return;\n const response = await requestAutoComplete(value);\n\n // Clear all previous results\n clearAutoCompleteResults();\n\n // Store new response\n autoCompleteResponse = response;\n\n if (autoCompleteResponse?.length) {\n\n\n // List label\n const label = document.createElement(\"label\");\n label.id = ClassNames.search.listLabel;\n label.innerHTML = ($formDesktop?.dataset?.suggestionsLabel || $formMobile?.dataset?.suggestionsLabel) ?? \"Suggesties\";\n\n const ol = document.createElement(\"ol\");\n ol.id = ClassNames.search.list;\n ol.setAttribute(\"role\", \"listbox\");\n autoCompleteResponse.forEach((value, index) => {\n // Create a link, set `href` and set the name\n const a = document.createElement(\"a\");\n a.setAttribute(\n \"href\",\n `${($formMobile || $formDesktop)?.getAttribute(\"action\")?.split(\"?\")[0]\n }?query=${value.replace(\" \", \"+\")}`\n );\n a.innerHTML = value;\n // Create a `li` node\n const li = document.createElement(\"li\");\n li.id = `option-${index}`;\n li.setAttribute(\"role\", \"option\");\n // Append the link to `li`\n li.append(a);\n // Append the `li' to the `ol` container element\n ol.append(li);\n });\n // Append to mobile wrapper\n if ($autoCompleteMobile) {\n $autoCompleteMobile.append(label);\n ol.id = $inputMobile.getAttribute(\"aria-controls\") ?? ClassNames.search.list;\n $autoCompleteMobile.append(ol);\n $inputMobile.setAttribute(\"aria-expanded\", \"true\");\n }\n // Append a clone to the desktop wrapper\n if ($autoCompleteDesktop) {\n $autoCompleteDesktop.append(label.cloneNode(true));\n const olClone = ol.cloneNode(true);\n olClone.id = $inputDesktop.getAttribute(\"aria-controls\") ?? ClassNames.search.list;\n $autoCompleteDesktop.append(olClone);\n $inputDesktop.setAttribute(\"aria-expanded\", \"true\");\n }\n // Hightlight user value\n highlightUserValue();\n }\n};\n\n/**\n * Handle all functionality for the clear button\n */\nconst handleClearButton = () => {\n function toggleClearBtn($input, $btn) {\n if (!$input || !$btn) return;\n if ($input.value === \"\") {\n $btn.classList.add(\n `${ClassNames.search.buttonClear}--${ClassNames.modifiers.hidden}`\n );\n $btn.tabIndex = -1;\n } else {\n $btn.classList.remove(\n `${ClassNames.search.buttonClear}--${ClassNames.modifiers.hidden}`\n );\n $btn.tabIndex = 0;\n }\n }\n\n function onClick(e, $input, $btn) {\n e.preventDefault();\n if (!$input || !$btn) return;\n $input.value = \"\";\n $input.focus();\n clearAutoCompleteResults();\n toggleClearBtn($input, $btn);\n evaluateSubmitDisabled();\n }\n\n $btnClearDesktop?.addEventListener(\"click\", (e) => {\n onClick(e, $inputDesktop, $btnClearDesktop);\n onClick(e, $inputMobile, $btnClearMobile);\n });\n\n $inputDesktop?.addEventListener(\"keyup\", () => {\n toggleClearBtn($inputDesktop, $btnClearDesktop);\n toggleClearBtn($inputMobile, $btnClearMobile);\n });\n\n $btnClearMobile?.addEventListener(\"click\", (e) => {\n onClick(e, $inputMobile, $btnClearMobile);\n onClick(e, $inputDesktop, $btnClearDesktop);\n });\n\n $inputMobile?.addEventListener(\"keyup\", () => {\n toggleClearBtn($inputMobile, $btnClearMobile);\n toggleClearBtn($inputDesktop, $btnClearDesktop);\n });\n};\n\n/**\n * Handle UI changes for mobile and desktop input focus\n */\nconst handleInputFocus = () => {\n // Mobile\n\n // Show auto complete container on focus in\n $formMobile?.addEventListener(\"focusin\", () => {\n $autoCompleteMobile.classList.remove(\n `${ClassNames.search.autoComplete}--${ClassNames.modifiers.hidden}`\n );\n\n // Add focus state\n $inputMobile.parentElement.classList.add(\"is-in-focus\");\n $formMobile.classList.add(\"a11y-focus\");\n\n // Add accessiblity field when there are search results\n if (autoCompleteResponse?.length) {\n $inputMobile.setAttribute(\"aria-expanded\", \"true\");\n }\n\n reevaluateOverlay();\n });\n\n // Hide auto complete container on focus out\n $formMobile?.addEventListener(\"focusout\", () => {\n $autoCompleteMobile.classList.add(\n `${ClassNames.search.autoComplete}--${ClassNames.modifiers.hidden}`\n );\n\n // Reset state to non-focus\n $inputMobile.parentElement.classList.remove(\"is-in-focus\");\n $formMobile.classList.remove(\"a11y-focus\");\n\n // Reset accessiblity field\n $inputMobile.setAttribute(\"aria-expanded\", \"false\");\n });\n\n // Desktop\n\n $formDesktop?.addEventListener(\n \"focusin\",\n () => {\n // Set width\n if ($inputDesktop.clientWidth < 300) {\n $inputDesktop.parentElement.style.width = \"300px\";\n }\n\n // Add focus state\n $inputDesktop.parentElement.classList.add(\"is-in-focus\");\n $formDesktop.classList.add(\"a11y-focus\");\n\n // show icon for clearing value input\n if ($inputDesktop?.value !== \"\") {\n $btnClearDesktop.classList.remove(\"hidden\");\n }\n\n // Reenable submit button if input (and if disabled)\n if ($inputDesktop?.value !== \"\") {\n $submitDesktop.disabled = false;\n }\n\n // Show auto complete container\n $autoCompleteDesktop.classList.remove(\n `${ClassNames.search.autoComplete}--${ClassNames.modifiers.hidden}`\n );\n\n // Add accessiblity field when there are search results\n if (autoCompleteResponse?.length) {\n $inputDesktop.setAttribute(\"aria-expanded\", \"true\");\n }\n\n // Clean up related interface\n isAnySubmenuOpen() && closeAllSubmenus();\n reevaluateOverlay();\n },\n true\n );\n\n $formDesktop?.addEventListener(\n \"blur\",\n () => {\n // Reset width to CSS default\n $inputDesktop.parentElement.style.width = \"\";\n\n // Reset state to non-focus\n $inputDesktop.parentElement.classList.remove(\"is-in-focus\");\n $formDesktop.classList.remove(\"a11y-focus\");\n\n // Reset auto complete container to CSS default\n $autoCompleteDesktop.classList.add(\n `${ClassNames.search.autoComplete}--${ClassNames.modifiers.hidden}`\n );\n\n // Reset accessiblity field\n $inputDesktop.setAttribute(\"aria-expanded\", \"false\");\n\n // Disable submit button if field too narrow\n setTimeout(() => setSubmitDisabledIfInputIsToSmallDesktop(), 150);\n },\n true\n );\n};\n\n/**\n * Setup event listeners to validate input\n */\nconst handleInputValidation = () => {\n // For mobile\n $inputMobile?.addEventListener(\"keyup\", () => evaluateSubmitDisabled());\n\n // For desktop\n $inputDesktop?.addEventListener(\"keyup\", () => evaluateSubmitDisabled());\n};\n\n/**\n * Submit the forms\n */\nconst handleSubmitForms = () => {\n $formMobile?.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n window.location.href = $formMobile.action;\n });\n\n $formDesktop?.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n window.location.href = $formDesktop.action;\n });\n};\n\n/**\n * Highlights user value in suggested search values from API\n */\nconst highlightUserValue = () => {\n function highlight($links) {\n $links.forEach(($link) => {\n // Since both input values are kept in sync we can just take one of them\n const userValue = $inputMobile.value.toLowerCase();\n $link.innerHTML = $link.innerHTML\n .replace(/<\\/?[^>]+(>|$)/g, \"\")\n .replace(new RegExp(userValue, \"ig\"), `$&`);\n });\n }\n\n const $mobileLinks = $autoCompleteMobile?.querySelectorAll(\"a\");\n const $desktopLinks = $autoCompleteDesktop?.querySelectorAll(\"a\");\n\n if ($mobileLinks?.length) highlight($mobileLinks);\n if ($desktopLinks?.length) highlight($desktopLinks);\n};\n\n/**\n * Request API for auto complete suggestions\n */\nconst requestAutoComplete = async (query) => {\n return fetch(`${ $inputMobile?.dataset?.api || $inputDesktop?.dataset?.api}?site=${site}&query=${query}`)\n .then((response) => response.json())\n .catch(() => []);\n};\n\n/**\n * Disable submit button if search field is narrower than 72px\n * This is to avoid accidental clicks on button\n * Button is re-enabled on focus in handleInputFocus\n */\nconst setSubmitDisabledIfInputIsToSmallDesktop = () => {\n if ($inputDesktop?.clientWidth < 72 && $submitDesktop) $submitDesktop.disabled = true;\n};\n\n/**\n * Initialize an eventlistener for showing autosuggestions below the searchinput box.\n * @param inputElement Searchbox with user input to find suggestions\n */\nconst initSearchSuggestionListener = (inputElement) => {\n function ignoreSearchingForKeys(event) {\n return [\"ArrowDown\", \"ArrowUp\"].indexOf(event.code) === -1;\n }\n\n function meetsMinimumLength(inputElement) {\n return inputElement.value?.length >= 1;\n }\n\n inputElement.addEventListener(\n \"keyup\",\n debounce(async (event) => {\n if (meetsMinimumLength(inputElement) && ignoreSearchingForKeys(event)) {\n try {\n await handleAutoComplete();\n highlightUserValue();\n } catch (error) {\n // ignore\n }\n } else if (!meetsMinimumLength(inputElement)) {\n clearAutoCompleteResults();\n }\n }, 500)\n );\n};\n\n/**\n * Initialize an eventlistener\n * @param inputElement Searchbox with user input to find suggestions\n * @param autoCompleteList Suggestionlist based on the seach inputbox\n */\nconst initSearchNavigationSupportListener = (\n inputElement,\n autoCompleteList\n) => {\n if (!inputElement || !autoCompleteList) return;\n\n let selectedNode = null;\n\n const determineNextValidIndex = (eventCode, nodes) => {\n let currentIndex = selectedSearchResultIndex;\n let nextIndex = -1;\n switch (eventCode) {\n case \"ArrowDown\":\n nextIndex = ++currentIndex > nodes.length - 1 ? 0 : currentIndex;\n break;\n case \"ArrowUp\":\n nextIndex = --currentIndex < 0 ? nodes.length - 1 : currentIndex;\n break;\n default:\n nextIndex = -1;\n }\n\n return nextIndex;\n };\n\n const handleKeyUpNavigationListener = (event) => {\n const nodes = Array.prototype.slice.call(\n autoCompleteList.querySelectorAll(\"a\"),\n 0\n );\n\n selectedNode?.classList.remove(\"highlight\");\n\n const nextIndex = determineNextValidIndex(event.code, nodes);\n\n if (nextIndex === -1) {\n selectedNode = null;\n return;\n }\n\n if (nextIndex in nodes) {\n selectedSearchResultIndex = nextIndex;\n selectedNode = nodes[nextIndex];\n selectedNode.classList.add(\"highlight\");\n selectedNode.scrollIntoView({ block: \"nearest\" });\n\n inputElement.setAttribute(\"aria-activedescendant\", `option-${nextIndex}`);\n inputElement.value = selectedNode.innerText;\n setSearchFormAction(inputElement);\n }\n };\n\n //Add eventlistener\n inputElement.addEventListener(\"keyup\", handleKeyUpNavigationListener);\n};\n\n/**\n * Set up event listeners for both inputs triggering API requests and\n * highlighting auto complete values when input meets length requirement.\n */\nconst setupAutoComplete = () => {\n if ($inputMobile) {\n initSearchSuggestionListener($inputMobile);\n initSearchNavigationSupportListener($inputMobile, $autoCompleteMobile);\n }\n\n if ($inputDesktop) {\n initSearchSuggestionListener($inputDesktop);\n initSearchNavigationSupportListener($inputDesktop, $autoCompleteDesktop);\n }\n};\n\nexport default initSearch;\n","// https://w3c.github.io/aria-practices/examples/menubar/menubar-navigation.html\nimport ClassNames from \"./classNames.js\";\nimport DomElements from \"./domElements.js\";\nconst {\n $navContainerWrapper,\n $navPrimaryMainItems: $mainItems,\n $navPrimarySubNavs: $subNavs,\n $navPrimarySubNavGroups: $subNavGroups,\n} = DomElements;\nimport Shared from \"./shared.js\";\nconst {\n getActiveSubmenuId,\n updateActiveSubmenuId,\n closeAllSubmenus,\n toggle,\n isAnySubmenuOpen,\n} = Shared;\nimport Overlay from \"./handleOverlay.js\";\nconst { reevaluateOverlay } = Overlay;\n\n/**\n * Calculates width of each $subnav based on navigation container width and\n * number of child nav groups\n */\nconst calcSubNavsWidth = () => {\n const subNavList = Array.prototype.slice.call($subNavs, 0);\n subNavList.forEach(($subNav) => {\n const navGroupsCount = parseInt($subNav.dataset.columns);\n\n // Gutter sizes for >= 1440\n let gutterInner = 32;\n let gutterOuter = 32;\n\n if (window.innerWidth < 1440) {\n gutterInner = 24;\n }\n\n if (window.innerWidth < 1024) {\n gutterInner = 16;\n gutterOuter = 24;\n }\n\n // Calculate menu width without padding\n const computedStyle = getComputedStyle($navContainerWrapper);\n const menuWidth =\n $navContainerWrapper.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight);\n\n // Calculate width of each subnav for screens equal or larger the 1024 (M up)\n if (window.innerWidth >= 1024) {\n const columnWidth = (menuWidth - gutterInner * 3) / 4;\n const width =\n columnWidth * navGroupsCount +\n (navGroupsCount - 1) * gutterInner +\n gutterOuter * 2;\n $subNav.style.width = `${width}px`;\n }\n\n // Set width of each subnav for breakpoint 768 - 1024 (M)\n // (As determined by design)\n if (window.innerWidth >= 768 && window.innerWidth < 1024) {\n $subNav.style.width = `${window.innerWidth}px`; // 100%\n if (navGroupsCount === 2) $subNav.style.width = \"572px\"; // Fixed number\n if (navGroupsCount === 1) $subNav.style.width = \"302px\"; // Fixed number\n }\n\n // Reset calculated width of each subnav for screens smaller then 768 (S down)\n if (window.innerWidth < 768) $subNav.style.width = \"\";\n });\n};\n\n/**\n * Handle initial setup\n */\nfunction initSubmenus() {\n handleActiveState();\n initKeyboardSupport();\n\n const mainItemList = Array.prototype.slice.call($mainItems, 0);\n mainItemList.forEach(($menuItem) => {\n $menuItem.addEventListener(\"click\", (event) => {\n const { submenuId: requestedSubmenuId } = $menuItem.dataset;\n\n // If no related submenu\n if (!requestedSubmenuId) return;\n\n // Prevent default behaviour links\n event.preventDefault();\n\n // Close open submenu\n if (getActiveSubmenuId()) toggle(getActiveSubmenuId(), \"close\");\n\n // If requested- same as active submenu\n if (getActiveSubmenuId() && getActiveSubmenuId() === requestedSubmenuId) {\n updateActiveSubmenuId(\"\");\n } else {\n updateActiveSubmenuId(requestedSubmenuId);\n toggle(requestedSubmenuId, \"open\");\n }\n reevaluateOverlay();\n });\n });\n\n // Set data attribute for each submenu with number of columns (for CSS)\n $subNavs.forEach(($submenu) => {\n const columns = $submenu.querySelectorAll(\n `.${ClassNames.navPrimary.subNavGroup}`\n ).length;\n $submenu.dataset.columns = columns.toString();\n });\n\n calcSubNavsWidth();\n}\n\n/**\n * Keyboard support (A11Y)\n */\nconst initKeyboardSupport = () => {\n // For main items\n const mainItemList = Array.prototype.slice.call($mainItems, 0);\n mainItemList.forEach(($item, i) => {\n $item.addEventListener(\"keyup\", (event) => {\n switch (event.code) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n i + 1 in $mainItems && $mainItems[i + 1].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n i - 1 in $mainItems && $mainItems[i - 1].focus();\n break;\n case \"Home\":\n $mainItems[0].focus();\n break;\n case \"End\":\n $mainItems[$mainItems.length - 1].focus();\n break;\n }\n });\n });\n\n // For sub nav items\n const subNavGroupList = Array.prototype.slice.call($subNavGroups, 0);\n subNavGroupList.forEach(($subNavGroup) => {\n const $links = $subNavGroup.querySelectorAll(\"a\");\n const linkList = Array.prototype.slice.call($links, 0);\n linkList.forEach(($link, i) => {\n $link.addEventListener(\"keyup\", (event) => {\n switch (event.code) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n i + 1 in $links && $links[i + 1].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n i - 1 in $links && $links[i - 1].focus();\n break;\n case \"Home\":\n $links[0].focus();\n break;\n case \"End\":\n $links[$links.length - 1].focus();\n break;\n case \"Escape\":\n closeAllSubmenus();\n reevaluateOverlay();\n $link.parentNode?.parentNode?.parentNode?.parentNode?.parentNode\n ?.querySelector(\"button\")\n ?.focus();\n break;\n }\n });\n });\n });\n};\n\n/**\n * Apply a visual active state based on pathname matching (window href and link href)\n *\n * (The API always provides an absolute path)\n */\nconst handleActiveState = () => {\n function addActiveClass($node) {\n $node.classList.add(\"shared-header__nav__link--is-active\");\n }\n\n const mainItemList = Array.prototype.slice.call($mainItems, 0);\n mainItemList.forEach(($menuItem) => {\n let menuItemLink = document.createElement(\"a\");\n\n if ($menuItem.nodeName === \"A\") menuItemLink.href = $menuItem.href;\n if ($menuItem.nodeName === \"BUTTON\")\n menuItemLink.href = $menuItem.dataset.href;\n\n if (menuItemLink) {\n const currentLocation = window.location;\n const isHomeLink = $menuItem.dataset.isHomeItem;\n const isPathPartOfCurrentLocation =\n currentLocation.pathname.toLowerCase().indexOf(menuItemLink.pathname.toLowerCase()) !== -1;\n\n if (currentLocation.hostname.toLowerCase() !== menuItemLink.hostname.toLowerCase()) {\n // External site link, do nothing\n return;\n }\n\n if (isHomeLink) {\n if (menuItemLink.pathname.toLowerCase() === currentLocation.pathname.toLowerCase()) {\n addActiveClass($menuItem);\n }\n } else {\n if (isPathPartOfCurrentLocation) {\n addActiveClass($menuItem);\n openSubMenuAndScroll($menuItem, currentLocation.pathname);\n }\n }\n }\n });\n};\n\n/**\n * Open menu on mobile devices and scroll to clicked link\n */\nfunction openSubMenuAndScroll($menuItem, pathname) {\n if (window.innerWidth < 768) {\n const { submenuId: requestedSubmenuId } = $menuItem.dataset;\n if (!requestedSubmenuId) return;\n updateActiveSubmenuId(requestedSubmenuId);\n // open the submenu\n toggle(requestedSubmenuId, \"open\");\n\n // scroll to the clicked link\n const subNavList = Array.prototype.slice.call($subNavs, 0);\n subNavList.forEach(($submenu) => {\n if ($submenu.dataset.submenuId === requestedSubmenuId) {\n const $links = $submenu.querySelectorAll(\"a\");\n const linkList = Array.prototype.slice.call($links, 0);\n linkList.forEach(($link) => {\n if (pathname.toLowerCase() === $link.pathname.toLowerCase()) {\n $link.scrollIntoView(false);\n }\n });\n }\n });\n }\n}\n\nexport default {\n calcSubNavsWidth,\n closeAllSubmenus,\n initSubmenus,\n isAnySubmenuOpen,\n};\n","import { debounce } from \"../../@helpers/js/queue-processing.js\";\n\n/**\n * Set the 'actual' viewport height based on the current window size.\n */\nconst viewportHeight = () => {\n document.documentElement.style.setProperty(\n \"--viewport-height\",\n `${window.innerHeight}px`\n );\n};\n\n/**\n * Set height and recall on resize.\n */\nexport default function initViewportHeight() {\n window.addEventListener(\"resize\", debounce(viewportHeight, 250));\n viewportHeight();\n}\n","import { debounce } from \"../../@helpers/js/queue-processing.js\";\n\nimport initViewportHeight from \"./handleViewportHeights.js\";\nimport NavContainer from \"./handleNavContainer.js\";\nconst { initMenuButton, toggleNavigation } = NavContainer;\nimport Shared from \"./shared.js\";\nconst {\n isMobileMenuOpen,\n isAnySubmenuOpen,\n closeAllSubmenus,\n} = Shared;\nimport initNavDomain from \"./handleNavDomain.js\";\nimport Overlay from \"./handleOverlay.js\";\nconst { initOverlay, reevaluateOverlay } = Overlay;\nimport {searchMobileisOpen, clickToggleSearchMobile} from \"./handleSearch.js\";\nimport Submenus from \"./handleSubmenus.js\";\nconst { initSubmenus, calcSubNavsWidth } = Submenus;\n\nclass Navigation {\n constructor(element) {\n this._element = element;\n\n this.init();\n }\n\n init() {\n let cachedWidth = window.innerWidth;\n initViewportHeight();\n initMenuButton();\n initNavDomain();\n initOverlay();\n initSubmenus();\n\n window.addEventListener(\n \"resize\",\n debounce(() => {\n // catch unexpected resize events (IOS/Android scroll)\n if (cachedWidth === window.innerWidth) {\n return;\n }\n cachedWidth = window.innerWidth;\n\n if (isAnySubmenuOpen()) {\n closeAllSubmenus();\n }\n\n if (searchMobileisOpen()) {\n clickToggleSearchMobile();\n }\n\n if (isMobileMenuOpen()) {\n toggleNavigation(\"close\");\n }\n\n reevaluateOverlay();\n calcSubNavsWidth();\n }, 250)\n );\n }\n}\n\nexport default Navigation;\n","import { LitElement, css, html } from \"lit\";\n\nexport class CzLoader extends LitElement {\n\tstatic styles = css`\n\t\t@layer component {\n\t\t\t:host {\n\t\t\t\t--_cz-loader-color: var(--cz-loader-color, currentcolor);\n\t\t\t\t--_cz-loader-width: var(--cz-loader-width, 50px);\n\t\t\t\t--_cz-loader-height: var(--cz-loader-height, 50px);\n\n\t\t\t\tdisplay: block;\n\n\t\t\t\tmax-width: var(--_cz-loader-width);\n\t\t\t\tmax-height: var(--_cz-loader-height);\n\t\t\t\tstroke: var(--_cz-loader-color);\n\t\t\t}\n\t\t}\n\t`;\n\n\tstatic properties = {\n\t\ttext: {type: String},\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.text = 'loading...';\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n}\n\nif (!customElements.get('cz-loader')) {\n\tcustomElements.define('cz-loader', CzLoader);\n}","import { LitElement, css, html } from \"lit\";\n\nexport class CzIcon extends LitElement {\n\tstatic styles = css`\n\t\t@layer component {\n\t\t\t:host {\n\t\t\t\t--_cz-icon-color: var(--cz-icon-color, currentcolor);\n\t\t\t\t--_cz-icon-width: var(--cz-icon-width, 50px);\n\t\t\t\t--_cz-icon-height: var(--cz-icon-height, 50px);\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: var(--_cz-icon-width);\n\t\t\t\theight: var(--_cz-icon-height);\n\t\t\t\tmax-width: var(--_cz-icon-width);\n\t\t\t\tmax-height: var(--_cz-icon-height);\n\t\t\t}\n\t\t\t\n\t\t\t:host(cz-icon[type=stroke]) ::slotted(svg) {\n\t\t\t\tstroke: var(--_cz-icon-color);\n\t\t\t\tfill: transparent;\n\t\t\t}\n\t\t\t\n\t\t\t::slotted(svg) {\n\t\t\t\tfill: var(--_cz-icon-color);\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\t`;\n\n\tstatic properties = {\n\t\ttype: {type: String},\n\t\tname: {type: String}\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.type = 'fill';\n\t\tthis.name = 'chevron';\n\t}\n\n\trender() {\n\t\treturn html``;\n\t}\n}\n\nif (!customElements.get('cz-icon')) {\n\tcustomElements.define('cz-icon', CzIcon);\n}","import { LitElement, css, html } from 'lit';\nimport { CzLoader } from '../cz-loader/cz-loader.js';\nimport { CzIcon } from '../cz-icon/cz-icon.js';\n\n/**\n * Represents a custom content loader component.\n * should be used as a basis for loading content based on a url\n * will show the cz-loader component until the content is loaded\n * @extends LitElement\n */\nexport class CzContentloader extends LitElement {\n\tstatic styles = css`\n\t\t@layer component {\n\t\t\t:host {\n\t\t\t\tdisplay: grid;\n\t\t\t}\n\t\t\t:host(:empty){\n\t\t\t\taspect-ratio: 1/.5;\n\t\t\t}\n\t\t\tcz-icon {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t}\n\t`;\n\n\t#url = false;\n\n\t/**\n\t * override this method in the class that extends this contentloader\n\t * @param {url} url \n\t * @returns promise\n\t */\n\tcallBackend = async (url) => {\n\t\tlet result;\n\t\tresult = `

    This is what would get loaded if you don't override the async callBackend method

    `;\n\t\treturn result;\n\t}\n\t\n\trender() {\n\t\treturn html``;\n\t}\n\n\n\t/**\n\t * Don't forget to call loadContent method from this function if you override it\n\t *\n\t * @param {*} changedProperties\n\t */\n\tupdated(changedProperties) {\n\t\tif (changedProperties) {\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.loadContent()\n\t\t\t\t.then((f) => console.log(f))\n\t\t\t\t.catch((e) => console.log(e));\n\t\t}\n\t}\n\n\tasync loadContent() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.#url) {\n\t\t\t\t\tthis.callBackend(this.#url).then(result => {\n\t\t\t\t\t\tthis.innerHTML = result;\n\t\t\t\t\t\treturn resolve('succes!');\n\t\t\t\t\t}).catch(() => reject(new Error('Error loading content!')));\n\t\t\t\t}\n\t\t\t}, 10);\n\t\t});\n\t}\n\t\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#url = this.getAttribute('url');\n\t}\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import Focusable from \"./focusable.js\";\n\nconst _TAB_KEY = 'Tab';\nconst _ESCAPE_KEY = 'Escape';\n\nexport function trapFocus(element) {\n\tif (!element) return;\n\n\tconst focusable = Focusable(element);\n\n\tconst evHandlers = {\n\t\tkeepFocus: (e) => keepFocus(e),\n\t\tkeyPress: (e) => onKeypress(e)\n\t}\n\n\tconst getFocusableChildren = () => {\n\t\tconst excludedSlots = element?.getExcludedSlots?.() || [];\n\t\tconst focusableBefore = element?.getFocusableBefore?.() || [];\n\t\tconst focusableAfter = element?.getFocusableAfter?.() || [];\n\t\treturn ([...focusableBefore, ...focusable.keyboardOnly, ...focusableAfter]).filter((child) => !!(\n\t\t\t!excludedSlots?.includes(child.getAttribute('slot')) &&\n\t\t\t(child.offsetWidth ||\n\t\t\t\tchild.offsetHeight ||\n\t\t\t\tchild.getClientRects().length)\n\t\t));\n\t}\n\n\tconst setFocusToFirstItem = () => {\n\t\tconst focusableChildren = getFocusableChildren();\n\t\tconst focused = element.querySelector('[autofocus]') || focusableChildren[0];\n\n\t\tif (focused) {\n\t\t\tfocused.focus();\n\t\t}\n\t}\n\n\tconst onKeypress = (event) => {\n\t\t// If the dialog is shown and the ESCAPE key is being pressed, prevent any\n\t\t// further effects from the ESCAPE key and hide the dialog, unless its role\n\t\t// is 'alertdialog', which should be modal\n\t\tif (event.key === _ESCAPE_KEY && ((event.target.matches('input[type=\"search\"]') && event.target.value) || (!event.target.matches('[role=\"switch\"]') && event.target.value) || (!event.target.matches('[role=\"combobox\"]') && event.target.value))) {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\t// If the dialog is shown and the TAB key is being pressed, make sure the\n\t\t// focus stays trapped within the dialog element\n\t\tif (event.key === _TAB_KEY) {\n\t\t\ttrapTabKey(event);\n\t\t}\n\t}\n\n\tconst trapTabKey = (event) => {\n\t\tconst focusableChildren = getFocusableChildren();\n\t\tlet activeElement = document.activeElement\n\t\tif (activeElement === element) {\n\t\t\tactiveElement = focusableChildren[0];\n\t\t}\n\t\tconst focusedItemIndex = focusableChildren.indexOf(activeElement);\n\n\t\tif (focusableChildren.length === 1) {\n\t\t\tfocusableChildren[0].focus();\n\t\t\tevent.preventDefault();\n\t\t} else {\n\n\t\t\t// If the SHIFT key is being pressed while tabbing (moving backwards) and\n\t\t\t// the currently focused item is the first one, move the focus to the last\n\t\t\t// focusable item from the dialog element\n\t\t\tif (event.shiftKey && focusedItemIndex === 0) {\n\t\t\t\tfocusableChildren[focusableChildren.length - 1].focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// If the SHIFT key is not being pressed (moving forwards) and the currently\n\t\t\t\t// focused item is the last one, move the focus to the first focusable item\n\t\t\t\t// from the dialog element\n\t\t\t} else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n\t\t\t\tfocusableChildren[0].focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keepFocus = (event) => {\n\t\t// If the dialog is shown and the focus is not within the dialog element,\n\t\t// move it back to its first focusable child\n\t\tif (!element.contains(event.target)) {\n\t\t\tsetFocusToFirstItem();\n\t\t}\n\t}\n\n\treturn {\n\t\tsetFocusToFirstItem,\n\t\tevHandlers\n\t};\n}\n","export default function Focusable(element = document) {\n\treturn {\n\t\tget length() {\n\t\t\treturn this.keyboardOnly.length\n\t\t},\n\n\t\tget all() {\n\t\t\treturn [\n\t\t\t\t...element.querySelectorAll(\n\t\t\t\t\t`a[href],\n\t\t\t\t\tarea[href],\n\t\t\t\t\tbutton,\n\t\t\t\t\tinput,\n\t\t\t\t\ttextarea,\n\t\t\t\t\tselect,\n\t\t\t\t\tdetails,\n\t\t\t\t\tiframe,\n\t\t\t\t\tembed,\n\t\t\t\t\tobject,\n\t\t\t\t\tsummary,\n\t\t\t\t\tdialog,\n\t\t\t\t\taudio[controls],\n\t\t\t\t\tvideo[controls],\n\t\t\t\t\t[contenteditable],\n\t\t\t\t\t[tabindex]`\n\t\t\t\t)].filter(el => {\n\t\t\t\t\tif (el.hasAttribute('disabled')) return false;\n\t\t\t\t\tif (el.hasAttribute('hidden')) return false;\n\t\t\t\t\tif (el.hasAttribute('inert')) return false;\n\t\t\t\t\tif (window.getComputedStyle(el).display === 'none') return false;\n\n\t\t\t\t\treturn true;\n\t\t\t\t})\n\t\t},\n\n\t\tget keyboardOnly() {\n\t\t\treturn this.all.filter(el => el.tabIndex > -1);\n\t\t},\n\n\t\tget firstFocusable() {\n\t\t\treturn this.keyboardOnly[0];\n\t\t},\n\n\t\tget lastFocusable() {\n\t\t\treturn this.keyboardOnly[this.length - 1];\n\t\t},\n\t}\n}","import { LitElement, css, html } from \"lit\";\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { angleLeft, angleRight } from \"@cz/icons/dist/cz/iconSprites.mjs\";\nimport { trapFocus } from '../helpers/trap-focus.js';\n\nexport class CzSidepanel extends LitElement {\n\tstatic styles = css`\n\t\t@layer component {\n\t\t\t:host {\n\t\t\t\t--_cz-sidepanel-backdrop-padding: var(--cz-sidepanel-backdrop-padding, var(--sidepanel-backdrop-padding, 1rem));\n\t\t\t\t--_cz-sidepanel-backdrop-color: var(--cz-sidepanel-backdrop-color, var(--sidepanel-backdrop-color, black));\n\t\t\t\t\n\t\t\t\t--_cz-sidepanel-background-color: var(--cz-sidepanel-background-color, var(--sidepanel-background-color, canvas));\n\t\t\t\t--_cz-sidepanel-text-color: var(--cz-sidepanel-text-color, var(--sidepanel-text-color, canvastext));\n\t\t\t\t--_cz-sidepanel-width: min(max(var(--cz-sidepanel-width), 26rem), calc(100vi - var(--_cz-sidepanel-backdrop-padding, 1rem)));\n\t\t\t\t--_cz-sidepanel-transition-duration: var(--cz-sidepanel-transition-duration, var(--sidepanel-transition-duration, 0.25s));\n\t\t\t\t--_cz-sidepanel-transition-timing: var(--cz-sidepanel-transition-timing, var(--sidepanel-transition-timing, ease-in-out));\n\t\t\t\t--_cz-sidepanel-content-padding-block: var(--cz-sidepanel-content-padding-block, var(--sidepanel-content-padding-block, 0px 2rem));\n\t\t\t\t--_cz-sidepanel-content-padding-inline: var(--cz-sidepanel-content-padding-inline, var(--sidepanel-content-padding-inline, 1rem));\n\n\t\t\t\t--cz-sidepanel-width: var(--sidepanel-width, 26rem);\n\t\t\t\t--close-button-text-color-hover: var(--color-primary-bird, #333333);\n\t\t\t\t--close-button-border-color: var(--color-secondary-lion,#989691);\n\n\t\t\t\t--focus-ring-color: var(--a11y-focus-ring-color, var(--color-tertiary-otter, #0071b2));\n\t\t\t}\n\n\t\t\t.drawer,\n\t\t\t.drawer[open].closing {\n\t\t\t\t--_translate-inline: var(--translate-inline, var(--_cz-sidepanel-width));\n\t\t\t\t--_sidepanel-onleft: var(--sidepanel-onleft, unset);\n\t\t\t\t--_sidepanel-onright: var(--sidepanel-onright, 100vi);\n\t\t\t\t/* Remove default dialog styling */\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\tmax-height: unset;\n\t\t\t\tborder: none;\n\t\t\t\t\n\t\t\t\theight: 100%;\n\t\t\t\twidth: var(--_cz-sidepanel-width);\n\n\t\t\t\tposition: fixed;\n\t\t\t\ttop: 0;\n\t\t\t\t\n\t\t\t\tleft: var(--_sidepanel-onright);\n\t\t\t\ttranslate: var(--_translate-inline) 0px;\n\n\t\t\t\tcolor: inherit;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\toverflow-y: auto;\n\t\t\t\toverscroll-behavior: contain;\n\t\t\t\tcontainer-type: inline-size;\n\t\t\t\t\n\t\t\t\tbackground-color: var(--_cz-sidepanel-background-color, white);\n\t\t\t\tmax-width: var(--_cz-sidepanel-width, 100%);\n\t\t\t\t\n\t\t\t\t> .inner {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tinset: 0;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-direction: column;\n\t\t\t\t\twidth: 100cqi;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmin-width: fit-content;\n\t\t\t\t\tmin-height: 100%;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.drawer::backdrop,\n\t\t\t.drawer[open].closing::backdrop {\n\t\t\t\topacity: 0;\n\t\t\t\tbackground-color: color-mix( in srgb, var(--_cz-sidepanel-backdrop-color, black) 40%, transparent);\n\t\t\t}\n\n\t\t\tslot[name=close] {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t/* animate */\n\t\t\t@media screen and (prefers-reduced-motion: no-preference) {\n\t\t\t\t.drawer {\n\t\t\t\t\ttransition-property: translate, display, overlay;\n\t\t\t\t\ttransition-duration: var(--_cz-sidepanel-transition-duration);\n\t\t\t\t\ttransition-timing-function: var(--_cz-sidepanel-transition-timing);\n\t\t\t\t\ttransition-behavior: allow-discrete\n\t\t\t\t}\n\t\t\t\t.drawer::backdrop {\n\t\t\t\t\ttransition-property: opacity, display, overlay;\n\t\t\t\t\ttransition-duration: var(--_cz-sidepanel-transition-duration);\n\t\t\t\t\ttransition-timing-function: var(--_cz-sidepanel-transition-timing);\n\t\t\t\t\ttransition-behavior: allow-discrete\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.drawer.open {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t.drawer[open] {\n\t\t\t\t--_translate-inline: calc(var(--_cz-sidepanel-width) * -1);\n\t\t\t\tbox-shadow: color-mix( in srgb, var(--_cz-sidepanel-backdrop-color, black) 20%, transparent) var(--sidepanel-box-shadow-direction, -6px 0px 0px 0px);\n\n\t\t\t\t&::backdrop {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\t\n\t\t\t}\n\n\t\t\t@starting-style {\n\t\t\t\t.drawer[open]::backdrop {\n\t\t\t\t\topacity: 0;\t\t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.content {\n\t\t\t\tpadding-block: var(--_cz-sidepanel-content-padding-block, 0px 2rem);\n\t\t\t\tpadding-inline: var(--_cz-sidepanel-content-padding-inline, 1rem);\n\t\t\t}\n\n\t\t\tslot[name=close] {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tposition: sticky;\n\t\t\t\ttop: 1rem;\n\t\t\t\tmargin-bottom: 1rem;\n\t\t\t\twidth: min-content;\n\t\t\t\tz-index: 10;\n\t\t\t}\n\n\t\t\t.closeButton {\n\t\t\t\talign-items: center;\n\t\t\t\tappearance: none;\n\t\t\t\tbackground-color: color-mix(in srgb, rgb(0 0 0) 0%, white);\n\t\t\t\tborder-radius: var(--close-button-border-radius, 0 6px 6px 0);\n\t\t\t\tborder: 1px solid;\n\t\t\t\tborder-color: var(--close-button-border-color);\n\t\t\t\talign-self: baseline;\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tcursor: pointer;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tjustify-content: flex-start;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttransition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n\t\t\t\tvertical-align: top;\n\t\t\t\tcolumn-gap: 6px;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tline-height: 22px;\n\t\t\t\tbox-shadow: none;\n\t\t\t\tborder-width: var(--close-button-border-width, 1px 1px 1px 0);\n\t\t\t\talign-self: baseline;\n\t\t\t\tpadding: 13px 20px 13px 1rem;\n\n\t\t\t\t&:hover {\n\t\t\t\t\tcolor: var(--close-button-text-color-hover);\n\t\t\t\t\tbackground-color: color-mix(in srgb, rgb(0 0 0) 4%, white);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\toutline-color: var(--focus-ring-color);\n\t\t\t\t\t@supports (background-color: color-mix(in srgb, white, black)){\n\t\t\t\t\t\toutline-color: color-mix(in srgb, var(--focus-ring-color) 86%, transparent);\n\t\t\t\t\t}\n\n\t\t\t\t\toutline-style: solid;\n\t\t\t\t\toutline-width: 3px;\n\n\t\t\t\t\toutline-offset: 2px;\n\t\t\t\t\t@media screen and (prefers-reduced-motion: no-preference) {\n\t\t\t\t\t\ttransition: outline-offset .125s linear;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--close-button-text-color-hover); \n\t\t\t\t\tbackground-color: color-mix(in srgb, rgb(0 0 0) 12%, white);\n\t\t\t\t}\n\n\t\t\t\t& > span {\n\t\t\t\t\ttext-wrap: nowrap;\n\t\t\t\t}\n\n\t\t\t\t& > svg {\n\t\t\t\t\tfill: currentcolor;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@layer variant {\n\t\t\t:host([wide]) {\n\t\t\t\t--cz-sidepanel-width: 100vi;\n\t\t\t}\t\n\n\t\t\t:host([left]) {\n\t\t\t\t--translate-inline: calc(var(--_cz-sidepanel-width) * -1);\n\t\t\t\t--sidepanel-onleft: 100vi;\n\t\t\t\t--sidepanel-onright: 0px;\n\t\t\t\t--sidepanel-box-shadow-direction: 6px 0px 0px 0px;\n\t\t\t\t--close-button-border-width: 1px 0 1px 1px;\n\t\t\t\t--close-button-border-radius: 6px 0 0 6px;\n\t\t\t}\n\n\t\t\t:host([left]) .drawer[open]:not(.closing) {\n\t\t\t\t--_translate-inline: 0px;\n\t\t\t}\n\n\t\t\t:host([left]) slot[name=close] {\n\t\t\t\tright: 0;\n\t\t\t\talign-self: flex-end;\n\t\t\t}\n\t\t}\n\t`;\n\n\tstatic properties = {\n\t\tcloseText: { type: String },\n\t\topen: { type: Boolean, reflect: true }\n\t};\n\n\tget dialog() {\n\t\treturn this._dialog ??= this.renderRoot?.querySelector('dialog');\n\t}\n\n\tclickInsideDialog(node) {\n\t\tlet result = false;\n\t\tconst slotted = this.dialog?.querySelector('slot:not([name])')?.assignedNodes({ flatten: true });\n\t\t// if the node is not visible, or is slotted, or is inside a slotted node, it is considered to be inside the dialog\n\t\tresult = !node.checkVisibility() || slotted.includes(node) || slotted.some((n) => n.contains(node));\n\n\t\tif (!result) {\n\t\t\tresult = node.closest('.inner') === this.dialog?.firstElementChild;\n\t\t}\n\t\treturn result;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.closeText = 'terug';\n\t\tthis.open = false;\n\t\tthis.focusTrap = trapFocus(this);\n\t}\n\n\tgetExcludedSlots() {\n\t\treturn ['trigger'];\n\t}\n\n\tgetFocusableBefore() {\n\t\tconst result = [];\n\t\tconst closebtn = this.dialog?.querySelector('.closeButton');\n\t\tif (closebtn) result.push(closebtn);\n\t\treturn result;\n\t}\n\n\tcreateRenderRoot() {\n\t\tconst root = super.createRenderRoot();\n\t\troot.addEventListener(\n\t\t\t'click',\n\t\t\t(e) => {\n\t\t\t\tif (!this.open && !this.dialog?.open) {\n\t\t\t\t\tthis.openSidepanel();\n\t\t\t\t} else if (this.open && this.dialog?.open && !this.clickInsideDialog(e.target)) {\n\t\t\t\t\tthis.closeSidepanel();\n\t\t\t\t}\n\t\t\t});\n\t\treturn root;\n\t}\n\n\tupdated(changedProperties) {\n\t\tsuper.updated?.(changedProperties);\n\t\tif (this.open && !this.dialog?.open) {\n\t\t\tthis.openSidepanel();\n\t\t}\n\t}\n\n\tevHandler = {\n\t\tbackbuttonPress: (e) => this.onBackbuttonPress(e)\n\t}\n\n\tonBackbuttonPress(event) {\n\t\tif (event && event.state == 'backPressed' && this.open) {\n\t\t\tconst shouldStayOpen = this.hasAttribute('stayOpenOnBack') && this.getAttribute('stayOpenOnBack').toLowerCase() === 'true';\n\n\t\t\tif (!shouldStayOpen) {\n\t\t\t\tthis.closeSidepanel();\n\t\t\t}\n\t\t}\n\t}\n\n\topenSidepanel() {\n\t\tthis.open = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.dialog?.showModal();\n\n\t\t\t// Set the focus to the first focusable child of the dialog element\n\t\t\tthis.focusTrap.setFocusToFirstItem();\n\n\t\t\t// Bind a focus event listener to the body element to make sure the focus\n\t\t\t// stays trapped inside the dialog while open, and start listening for some\n\t\t\t// specific key presses (TAB and ESC)\n\t\t\tdocument.body.addEventListener('focus', this.focusTrap.evHandlers.keepFocus, true);\n\t\t\tdocument.addEventListener('keydown', this.focusTrap.evHandlers.keyPress);\n\n\t\t\tif (window.history.state === 'showOverlay') {\n\t\t\t\twindow.removeEventListener('popstate', this.evHandler.backbuttonPress);\n\t\t\t} else {\n\t\t\t\tif (window.history.state === 'backPressed') {\n\t\t\t\t\twindow.removeEventListener('popstate', this.evHandler.backbuttonPress);\n\t\t\t\t} else {\n\t\t\t\t\tthis._oldState = window.history.state;\n\t\t\t\t\twindow.history.replaceState('backPressed', null, null);\n\t\t\t\t}\n\t\t\t\twindow.history.pushState('showOverlay', null, null);\n\t\t\t}\n\t\t\twindow.addEventListener('popstate', this.evHandler.backbuttonPress);\n\t\t}, 20);\n\t}\n\n\tcloseSidepanel() {\n\t\tthis.dialog?.classList.add('closing');\n\t\tsetTimeout(() => {\n\t\t\t// check if not already closed like by esc key\n\t\t\tif (this.dialog?.open) {\n\t\t\t\tthis.dialog?.close();\n\t\t\t} else {\n\t\t\t\tthis.dialog?.classList.remove('closing');\n\t\t\t\tthis.open = false;\n\t\t\t}\n\t\t\t// Remove the focus event listener to the body element and stop listening\n\t\t\t// for specific key presses\n\t\t\tdocument.body.removeEventListener('focus', this.focusTrap.evHandlers.keepFocus, true);\n\t\t\tdocument.removeEventListener('keydown', this.focusTrap.evHandlers.keyPress);\n\t\t\twindow.removeEventListener('popstate', this.evHandler.backbuttonPress);\n\n\t\t\tif (window.history.state === 'backPressed' && !!this._oldState && this._oldState !== 'backPressed') {\n\t\t\t\twindow.history.replaceState(this._oldState, null, null);\n\t\t\t}\n\t\t}, 300);\n\t}\n\n\thandleCancel(event) {\n\t\tevent.preventDefault();\n\t\tthis.closeSidepanel();\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\n\t\t\n\t\t this.closeSidepanel()} @cancel=${(e) =>\n\t\t\tthis.handleCancel(e)}>\n\t\t\t
    \n\t\t\t\t this.closeSidepanel()}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    `;\n\t}\n}\nif (!customElements.get('cz-sidepanel')) {\n\tcustomElements.define('cz-sidepanel', CzSidepanel);\n}\n\nCSS.registerProperty?.({\n\tname: '--cz-sidepanel-width',\n\tsyntax: '',\n\tinherits: true,\n\tinitialValue: '30%',\n});","export const angleDown = ``;\nexport const angleLeft = ``;\nexport const angleRight = ``;\nexport const angleUp = ``;\nexport const arrowDown = ``;\nexport const arrowLeft = ``;\nexport const arrowRight = ``;\nexport const arrowUp = ``;\nexport const bars = ``;\nexport const book = ``;\nexport const briefcaseMedical = ``;\nexport const building = ``;\nexport const bullit = ``;\nexport const busCustom = ``;\nexport const calculator = ``;\nexport const calendar = ``;\nexport const car = ``;\nexport const chartPie = ``;\nexport const checkCircle = ``;\nexport const check = ``;\nexport const checkboxSelected = ``;\nexport const checkboxUnselected = ``;\nexport const chevron = ``;\nexport const children = ``;\nexport const clinicMedical = ``;\nexport const clipboardMedical = ``;\nexport const clockCustom = ``;\nexport const close = ``;\nexport const coins = ``;\nexport const comments = ``;\nexport const crossout = ``;\nexport const download = ``;\nexport const dumbellsCustom = ``;\nexport const earthAmericas = ``;\nexport const envelope = ``;\nexport const exclamationCircle = ``;\nexport const exclamationTriangle = ``;\nexport const externalLink = ``;\nexport const eyeSlash = ``;\nexport const eye = ``;\nexport const facebook = ``;\nexport const fileContract = ``;\nexport const fileDownload = ``;\nexport const fileExcel = ``;\nexport const fileInvoiceEuro = ``;\nexport const filePdf = ``;\nexport const fileWord = ``;\nexport const file = ``;\nexport const footCustom = ``;\nexport const handHoldingHeart = ``;\nexport const handshake = ``;\nexport const headSideHeart = ``;\nexport const home = ``;\nexport const hospital = ``;\nexport const hourglass = ``;\nexport const infoCircle = ``;\nexport const instagram = ``;\nexport const linkedinIn = ``;\nexport const loader = ``;\nexport const lock = ``;\nexport const mapMarker = ``;\nexport const messageSmile = ``;\nexport const minus = ``;\nexport const mobile = ``;\nexport const pen = ``;\nexport const pencil = ``;\nexport const peopleGroup = ``;\nexport const people = ``;\nexport const percent = ``;\nexport const percent100 = ``;\nexport const percent70 = ``;\nexport const percent75 = ``;\nexport const percent85 = ``;\nexport const personBreastfeeding = ``;\nexport const phone = ``;\nexport const pills = ``;\nexport const plus = ``;\nexport const questionCircle = ``;\nexport const quoteLeft = ``;\nexport const quoteRight = ``;\nexport const radiobuttonSelected = ``;\nexport const radiobuttonUnselected = ``;\nexport const search = ``;\nexport const shoppingCart = ``;\nexport const skinCustom = ``;\nexport const sliders = ``;\nexport const sortDown = ``;\nexport const sortUp = ``;\nexport const speakEarCustom = ``;\nexport const stopwatch = ``;\nexport const thumbsDown = ``;\nexport const thumbsUp = ``;\nexport const timesCircle = ``;\nexport const times = ``;\nexport const tooth = ``;\nexport const transgender = ``;\nexport const trillium = ``;\nexport const twitter = ``;\nexport const unlock = ``;\nexport const userCheck = ``;\nexport const userCircle = ``;\nexport const userDoctorHairLong = ``;\nexport const userEdit = ``;\nexport const userPlus = ``;\nexport const userTimes = ``;\nexport const user = ``;\nexport const vergoedingenZoekenCustom = ``;\nexport const whatsapp = ``;\nexport const wheelchairMove = ``;\nexport const x = ``;\nexport const youtube = ``;","/**\n * Module to show suggestions on typing. a simple, autocomplete module for modern browsers\n * @author Serge Huijben\n *\n * MIT license\n */\nimport { registerTriggers, triggerNotify } from \"../../@helpers/js/observer.js\";\n\nclass SearchSuggestions {\n constructor(\n element,\n {\n autosuggestUrl = \"\",\n method = \"GET\",\n key = \"key\",\n autosuggestKey = \"q\",\n subtitleprefix = \"Nr:\",\n autofocus = false,\n sort = false,\n filter = false,\n minChars = 3,\n maxItems = 15,\n autoFirst = false,\n } = {}\n ) {\n this._options = {\n autosuggestUrl,\n method,\n key,\n autosuggestKey,\n subtitleprefix,\n autofocus,\n sort,\n filter,\n minChars,\n maxItems,\n autoFirst,\n };\n this._element = element;\n this.input = this._element.querySelector(\"input.c-search-suggestions__input\");\n this.submitButton = this._element.querySelector(\"[data-search-suggestions-button]\"); // use this attribute only if you want autosuggest on button click\n this.notFoundTemplate = this._element.querySelector(\"[data-search-suggestions-404]\");\n this.overMaxFoundTemplate = this._element.querySelector(\"[data-search-suggestions-over-max]\");\n\n if (this.input) {\n this._init();\n }\n }\n\n // Setup\n _init() {\n this.input.setAttribute(\"autocomplete\", \"off\");\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\n this.input.value = getQueryString(this._options.key);\n\n this.index = -1;\n\n this.filter = (text, input, filter) => filter ? new RegExp(regExpEscape(input.trim()), \"i\").test(text) : true;\n\n this.sort = (a, b, value) => {\n if (value && isNaN(value)) {\n const val = regExpEscape(value);\n let aio = a.naam.toLowerCase().indexOf(val.toLowerCase());\n let bio = b.naam.toLowerCase().indexOf(val.toLowerCase());\n\n if (aio < 0) {\n let areg = new RegExp(val.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"), \"g\");\n aio = areg.test(a.normalizedName) ? areg.lastIndex - val.length + 99\n : a.length + 199;\n }\n if (bio < 0) {\n let breg = new RegExp(val.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"), \"g\");\n bio = breg.test(b.normalizedName) ? breg.lastIndex - val.length + 99 : b.length + 199;\n }\n return aio - bio;\n } else if (value) {\n let anio = a.relatienummer.length - a.relatienummer.indexOf(value) + a.relatienummer.replace(/^0+/, \"\").indexOf(value);\n let bnio = b.relatienummer.length - b.relatienummer.indexOf(value) + b.relatienummer.replace(/^0+/, \"\").indexOf(value);\n return anio - bnio;\n }\n return 0;\n };\n\n this._createElements();\n\n this._bindEvents();\n\n this.list = [];\n\n registerTriggers([\n \"searchsuggestions-highlight\",\n \"searchsuggestions-close\",\n \"searchsuggestions-open\",\n \"searchsuggestions-select\",\n \"searchsuggestions-selectcomplete\",\n ]);\n\n if (this.input.value && this._options.autofocus === true)\n window.setTimeout(() => this.input.focus(), 100);\n }\n\n // Create necessary elements\n _createElements() {\n this.container = document.createElement(\"div\");\n this.container.className = \"suggestions\";\n this.input.parentNode.insertBefore(this.container, this.input);\n this.container.appendChild(this.input);\n\n this.innerContainer = document.createElement(\"div\");\n this.innerContainer.className = \"c-search-suggestions__list\";\n this.innerContainer.setAttribute(\"hidden\", \"hidden\");\n this.container.appendChild(this.innerContainer);\n\n this.innerContainer.innerHTML = \"\";\n\n this.ul = document.createElement(\"ul\");\n this.innerContainer.appendChild(this.ul);\n\n this.notFound = document.createElement(\"div\");\n this.notFound.className = \"c-search-suggestions__list-404\";\n this.innerContainer.appendChild(this.notFound);\n\n this.status = document.createElement(\"span\");\n this.status.className = \"t-visuallyhidden\";\n this.status.setAttribute(\"role\", \"status\");\n this.status.setAttribute(\"aria-live\", \"assertive\");\n this.status.setAttribute(\"aria-atomic\", \"true\");\n this.status.setAttribute(\"aria-relevant\", \"additions\");\n this.container.appendChild(this.status);\n }\n\n // Bind events\n _bindEvents() {\n if (this.input) {\n [\"click\", \"touchend\", \"focus\"].forEach((event) => {\n this.input.addEventListener(event, () => {\n if (this.timeoutID && typeof this.timeoutID === \"number\") {\n window.clearTimeout(this.timeoutID);\n }\n this.timeoutID = window.setTimeout(() => {\n if (this.inputValueBackup && this.input.value && this.input.value === this.inputValueBackup &&\n ((this.notFoundBackup && this.notFoundBackup.length > 0) || (this.ulBackup && this.ulBackup.length > 0))\n ) {\n this.ul.innerHTML = this.ulBackup;\n this.notFound.innerHTML = this.notFoundBackup;\n this.open();\n } else if (!this.input.value || this.input.value.length < this._options.minChars) {\n this.close({ reason: \"clear\" });\n } else if (this.inputValueBackup && this.input.value && this.input.value.toLowerCase().startsWith(this.inputValueBackup.toLowerCase())) {\n this._element.classList.add(\"loading\");\n this.showSuggestions(this.input.value, true);\n } else {\n this._element.classList.add(\"loading\");\n this.evaluate();\n }\n }, 200);\n });\n });\n // Act on keypress and paste action for the following keys:\n // < > ' \" $ { } [ ] / keys\n const forbiddenChars = /[<>{}[\\]$\"'/]/g;\n this.input.addEventListener(\"input\", () => {\n this.input.value = this.input.value.replace(forbiddenChars, \"\");\n if (this.inputValueBackup && this.input.value && this.input.value.toLowerCase().startsWith(this.inputValueBackup.toLowerCase())) {\n return this.showSuggestions(this.input.value, true);\n }\n return this.wrapEvaluation();\n });\n this.input.addEventListener(\"blur\", () => this.close({ reason: \"blur\" }));\n this.input.addEventListener(\"keydown\", (evt) => {\n const c = evt.keyCode;\n\n // If the dropdown `ul` is in view, then act on keydown for the following keys:\n // Enter / Esc / Up / Down\n if (this.opened) {\n if (c === 13) {\n // Enter\n if (this.selected) {\n evt.preventDefault();\n this.select();\n } else {\n if (this.submitButton) {\n this.submitButton.click();\n } else {\n this.close({\n reason: \"non-select\",\n });\n triggerNotify(\"searchsuggestions-selectcomplete\");\n }\n }\n } else if (c === 27) {\n // Esc\n this.close({\n reason: \"esc\",\n });\n } else if (c === 38 || c === 40) {\n // Down/Up arrow\n evt.preventDefault();\n let count = this.ul.children.length;\n if (count <= 0) {\n let linkToSearch = this.notFound.querySelector(\".c-link\");\n if (linkToSearch) {\n let toggle =\n linkToSearch.getAttribute(\"aria-selected\") &&\n linkToSearch.getAttribute(\"aria-selected\") === \"true\";\n linkToSearch.setAttribute(\"aria-selected\", !toggle);\n }\n } else {\n this[c === 38 ? \"previous\" : \"next\"](count);\n }\n }\n } else {\n if (c === 13) {\n // Enter\n if (this.submitButton) {\n this.submitButton.click();\n } else {\n triggerNotify(\"searchsuggestions-selectcomplete\");\n }\n }\n }\n });\n }\n\n if (this.submitButton) {\n this.submitButton.addEventListener(\"click\", (evt) => {\n evt.preventDefault();\n this._element.classList.add(\"loading\");\n this.evaluate(true);\n });\n }\n\n if (this.input && this.input.form) {\n this.input.form.addEventListener(\"submit\", () =>\n this.close({ reason: \"submit\" })\n );\n }\n\n if (this.ul) {\n this.ul.addEventListener(\"mousedown\", (evt) => {\n let li = evt.target;\n\n if (li !== this) {\n while (li && !/li/i.test(li.nodeName)) {\n li = li.parentNode;\n }\n\n if (li && evt.button === 0) {\n // Only select on left click\n evt.preventDefault();\n this.select(li, evt.target);\n }\n }\n });\n }\n }\n\n set list(list) {\n if (typeof list === \"string\" && list.indexOf(\",\") > -1) {\n this._list = list.split(/\\s*,\\s*/);\n } else {\n // Element or CSS selector\n this._list = list;\n }\n\n if (document.activeElement === this.input) {\n this.wrapEvaluation();\n }\n }\n\n get list() {\n return this._list;\n }\n\n get selected() {\n return this.index > -1;\n }\n\n get opened() {\n return !this.innerContainer.hasAttribute(\"hidden\");\n }\n\n close(o) {\n if (!this.opened) {\n return;\n }\n const ms = o && o.reason && o.reason === \"clear\" ? 10 : 200;\n window.setTimeout(() => {\n this.innerContainer.setAttribute(\"hidden\", \"\");\n this.notFound.innerHTML = \"\";\n this.ul.innerHTML = \"\";\n }, ms);\n this.index = -1;\n\n triggerNotify(\"searchsuggestions-close\", o || {});\n }\n\n open() {\n this.innerContainer.removeAttribute(\"hidden\");\n\n if (this._options.autoFirst && this.index === -1) {\n this.goto(0);\n }\n\n triggerNotify(\"searchsuggestions-open\");\n }\n\n next(count) {\n this.goto(this.index < count - 1 ? this.index + 1 : -1);\n }\n\n previous(count) {\n this.goto(this.selected ? this.index - 1 : count - 1);\n }\n\n // Should not be used, highlights specific item without any checks!\n goto(i) {\n const lis = this.ul.children;\n\n if (this.selected) {\n lis[this.index].setAttribute(\"aria-selected\", \"false\");\n }\n\n this.index = i;\n\n if (i > -1 && lis.length > 0) {\n lis[i].setAttribute(\"aria-selected\", \"true\");\n this.status.textContent = lis[i].textContent;\n\n triggerNotify(\n \"searchsuggestions-highlight\",\n this.suggestions[this.index]\n );\n }\n }\n\n select(selected, origin) {\n if (selected) {\n this.index = siblingIndex(selected);\n } else {\n selected = this.ul.children[this.index];\n }\n\n if (selected) {\n const suggestion = this.suggestions[this.index];\n this.input.value = suggestion.relatienummer;\n this.inputValueBackup = this.input.value;\n this.close({\n reason: \"select\",\n });\n triggerNotify(\"searchsuggestions-selectcomplete\", suggestion);\n }\n }\n\n wrapEvaluation() {\n if (this.timeoutID && typeof this.timeoutID === \"number\") {\n window.clearTimeout(this.timeoutID);\n }\n this.timeoutID = window.setTimeout(() => {\n this._element.classList.add(\"loading\");\n this.evaluate();\n }, 400);\n }\n\n noSuggestionsFound(value) {\n if (this.notFoundTemplate && this.notFoundTemplate.innerHTML && this.notFoundTemplate.innerHTML.length > 0) {\n this.notFound.innerHTML = this.notFoundTemplate.innerHTML.replace(/\\{0\\}/g, value);\n return true;\n }\n return false;\n }\n\n moreMaxSuggestionsFound(value) {\n if (this.overMaxFoundTemplate && this.overMaxFoundTemplate.innerHTML && this.overMaxFoundTemplate.innerHTML.length > 0) {\n this.notFound.innerHTML = this.overMaxFoundTemplate.innerHTML.replace(/\\{0\\}/g, this._options.maxItems).replace(/\\{1\\}/g, value);\n return true;\n }\n return false;\n }\n\n async evaluate(skipLengthCheck) {\n const value = this.input.value;\n const controller = window.AbortController ? new AbortController() : {};\n const signal = controller.signal || {};\n \n let fetchPromise;\n if ((skipLengthCheck && value.length > 1) || value.length >= this._options.minChars) {\n if (this._options.autosuggestUrl) {\n this.inputValueBackup = \"\";\n this.notFound.innerHTML = \"\";\n this.ul.innerHTML = \"\";\n if (fetchPromise && controller.abort) {\n controller.abort();\n }\n let suggestURL = \"\";\n let searchData = {};\n let key = this._options.key ? this._options.key : \"key\";\n if (this._options.method === \"POST\") {\n suggestURL = this._options.autosuggestUrl;\n\n // Create data object\n searchData = {\n maxResults: this._options.maxResults,\n };\n // Add key value pair to data object\n searchData[key] = value;\n } else {\n suggestURL = `${this._options.autosuggestUrl}&${this._options.autosuggestKey}=${value}`;\n }\n try {\n fetchPromise = fetch(suggestURL, {\n signal,\n method: this._options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n body: this._options.method === \"POST\" ? JSON.stringify(searchData) : undefined,\n });\n let response = await fetchPromise;\n let result = await response.json();\n\n if (result && result.isSucces && result.data) {\n this._list = result.data.collectiviteiten;\n this.showSuggestions(value);\n } else {\n this._element.classList.remove(\"loading\");\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: \"nomatches\",\n });\n }\n }\n } catch (error) {\n this._element.classList.remove(\"loading\");\n console.error(error);\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: \"error\",\n });\n }\n } finally {\n fetchPromise = undefined;\n if (this.input.value && this.input.value.length >= 2) {\n this.inputValueBackup = `${this.input.value}`;\n this.notFoundBackup = `${this.notFound.innerHTML}`;\n this.ulBackup = `${this.ul.innerHTML}`;\n }\n }\n } else {\n this._element.classList.remove(\"loading\");\n this.close({\n reason: \"no autosuggest url\",\n });\n }\n } else {\n this._element.classList.remove(\"loading\");\n this.close({\n reason: \"to little characters\",\n });\n }\n }\n\n showSuggestions(value, filter) {\n if (this._list.length > 0) {\n this.index = -1;\n // Populate list with options that match\n const collSuggestions = this._list\n .map((item) => new collectiviteit(item))\n .filter((item) => {\n return this.filter(isNaN(value) ? item.normalizedName : item.relatienummer, value.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"), filter);\n })\n .sort((a, b) => this._options.sort ? a.normalizedName < b.normalizedName ? -1 : a.normalizedName > b.normalizedName ? 1 : 0 : 0)\n .sort((a, b) => {\n return this._options.sort ? this.sort(a, b, value.trim()) : 0;\n });\n this.suggestions = collSuggestions.slice(0, this._options.maxItems);\n\n let html = this.suggestions.reduce((sentence, suggestion) => `${sentence}${item(`${markText(suggestion.naam, value)}${this._options.subtitleprefix} ${markText(suggestion.relatienummer, value)}`)}`, \"\");\n\n this.ul.innerHTML = html;\n\n if (this.ul.children.length === 0) {\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: \"nomatches\",\n });\n }\n } else if (collSuggestions.length > this._options.maxItems) {\n this.moreMaxSuggestionsFound(value);\n this.open();\n } else {\n this.notFound.innerHTML = '';\n this.open();\n }\n } else {\n if (this.noSuggestionsFound(value)) {\n this.open();\n } else {\n this.close({\n reason: \"nomatches\",\n });\n }\n }\n this._element.classList.remove(\"loading\");\n }\n}\n\n// Private\nfunction collectiviteit(data) {\n const o = { ...data };\n\n o.length = o.naam?.length ?? 0;\n\n o.normalizedName = o.length > 0 ? `${o.naam.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")}` : \"\";\n\n o.toString = () => `${o.naam}`;\n\n return o;\n}\n\n// Helpers\nfunction markText(text, input) {\n return !input || input === \"\" ? text : text.replace(new RegExp(regExpEscape(input.trim()), \"gi\"), \"$&\");\n}\n\nfunction item(html) {\n return `
  • ${html}
  • `;\n}\n\nfunction getQueryString(name, raw = false) {\n if (!name || typeof name !== \"string\") {\n return \"\";\n }\n let params =\n location.search &&\n location.search.length > 0 &&\n location.search.indexOf(name) > -1\n ? location.search.substring(1).split(\"&\")\n : location.hash &&\n location.hash.length > 0 &&\n location.hash.indexOf(name) > -1\n ? location.hash.substring(1).split(\"&\")\n : [];\n\n for (let i = 0; i < params.length; i++) {\n params[i] = params[i].replace(/\\+/g, \" \");\n }\n\n for (let param of params) {\n const p = param.split(\"=\");\n if (p[0]?.toLowerCase() === name.toLowerCase())\n return raw ? p[1] : decodeURIComponent(p[1]);\n }\n return \"\";\n}\n\nfunction regExpEscape(s) {\n return s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n}\n\nfunction siblingIndex(el) {\n /* eslint-disable no-cond-assign */\n let i = 0;\n while (el.previousElementSibling) {\n el = el.previousElementSibling;\n i++;\n }\n return i;\n}\n\nexport default SearchSuggestions; // as Searchsuggestions\n","import { addEventToDatalayer } from '../../@helpers/js/datalayer.js';\nimport { wait } from '../../@helpers/js/wait.js';\n\nclass CompareInsuranceTable {\n\n\tconstructor(element, {\n\t\ttoggleclass = 'c-toggle-detail-on',\n\t\thighlightclass = 'c-table-row-highlight',\n\t\tsearchPlaceholder = 'Begin hier met typen',\n\t\tsearchText = 'Geen passend resultaat gevonden',\n\t} = {}) {\n\n\t\tthis._element = element;\n\t\tthis._options = {\n\t\t\ttoggleclass,\n\t\t\thighlightclass,\n\t\t\tsearchPlaceholder,\n\t\t\tsearchText\n\t\t};\n\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis._tableBody = this._element.querySelector('table tbody');\n\t\tthis._revealerColl = this._element.querySelector('.c-revealer-collection');\n\t\tthis._selectBox = this._element.querySelector('.c-insurance-compare__select .c-insurance-compare__combobox__list');\n\t\tthis._selectOptions = this._selectBox ? [...this._selectBox.querySelectorAll('li[role=option]')] : [];\n\t\tthis._noneleft = this._element.querySelector('[data-insurance-compare-none]');\n\t\tthis._tablerows = this._tableBody ? [...this._tableBody.querySelectorAll('tbody tr')].map((row) => {\n\t\t\treturn {\n\t\t\t\trow,\n\t\t\t\tname: row.dataset?.tablerow,\n\t\t\t\ttoggleBtn: row.querySelector('th button[data-module=ToggleButton]'),\n\t\t\t\trem: row.querySelector('button[data-insurance-compare-hider]')\n\t\t\t};\n\t\t}) : [];\n\t\tthis._revealerrows = this._revealerColl ? [...this._revealerColl.querySelectorAll('[data-revealerrow]')].map((row) => {\n\t\t\treturn {\n\t\t\t\trow,\n\t\t\t\tname: row.dataset?.revealerrow,\n\t\t\t\ttoggleBtn: row.querySelector('button[data-module=ToggleButton]'),\n\t\t\t\trem: row.nextElementSibling,\n\t\t\t\trev: row.querySelector('[data-revealer-title]'),\n\t\t\t};\n\t\t}) : [];\n\t\t\n\t\tif (this._tablerows?.length > 0 && this._revealerrows?.length > 0) {\n\t\t\tthis._comboBox = this._element.querySelector('input[role=\"combobox\"]');\n\t\t\tthis._selectConfirm = this._element.querySelector('button[data-confirm-selection]');\n\n\t\t\t// add click listener\n\t\t\tif (this._selectConfirm) {\n\t\t\t\tthis._selectConfirm.addEventListener('click', () => {\n\t\t\t\t\t// get selected value from slimselect\n\t\t\t\t\tlet selected = this._selectOptions.length >= 1 && this._comboBox?.value ? this._selectOptions?.find(o => o.innerText === this._comboBox.value) : '';\n\t\t\t\t\tif (selected) {\n\t\t\t\t\t\tif (selected.innerText) {\n\t\t\t\t\t\t\tlet options;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\toptions = JSON.parse(this._selectConfirm.dataset.confirmDatalayerClick);\n\t\t\t\t\t\t\t\toptions.event = 'event';\n\t\t\t\t\t\t\t\toptions.label = selected.innerText;\n\t\t\t\t\t\t\t\tsetTimeout( () => addEventToDatalayer(options), 100);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t// get correct row by value\n\t\t\t\t\t\tconst trow = this._tablerows.find((r) => r.name === selected.id)\n\t\t\t\t\t\t// get correct revealerrow by value\n\t\t\t\t\t\tconst rrow = this._revealerrows.find((r) => r.name === selected.id)\n\t\t\t\t\t\tif (trow && rrow) {\n\t\t\t\t\t\t\t// move row to bottom and remove t-hidden class\n\t\t\t\t\t\t\tthis._tableBody.appendChild(trow.row);\n\t\t\t\t\t\t\ttrow.row.classList.remove('t-hidden');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// move revealerrow to bottom and remove t-hidden class\n\t\t\t\t\t\t\tthis._revealerColl.appendChild(rrow.row);\n\t\t\t\t\t\t\tthis._revealerColl.appendChild(rrow.rem);\n\t\t\t\t\t\t\trrow.row.classList.remove('t-hidden');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// remove option from TimoSelect\n\t\t\t\t\t\t\tselected.className = 't-hidden';\n\t\t\t\t\t\t\tselected.setAttribute('disabled',true);\n\t\t\t\t\t\t\tthis._comboBox.value = '';\n\t\t\t\t\t\t\tthis._noneleft.classList.add('t-hidden');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// remove highlightclass\n\t\t\t\t\t\t\twait(150).then(() => {\n\t\t\t\t\t\t\t\ttrow.row.classList.remove(this._options.highlightclass);\n\t\t\t\t\t\t\t\trrow.row.classList.remove(this._options.highlightclass);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\twait(1000).then(() => {\n\t\t\t\t\t\t\t\trrow.row.classList.remove('t-background-color-transition');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// listen to remove button clicks\n\t\t\tthis._tablerows.forEach((trow) => {\n\t\t\t\t\n\t\t\t\t// setup interaction on remove button click\n\t\t\t\tif (trow.rem) {\n\t\t\t\t\ttrow.rem.addEventListener('click', () => {\n\t\t\t\t\t\ttrow.row.classList.add(this._options.highlightclass);\n\t\t\t\t\t\twait(200).then(() => {\n\t\t\t\t\t\t\tthis.removeRow(trow);\n\t\t\t\t\t\t\tthis.addToSelector(trow.name);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// also hide the mobile version\n\t\t\t\t\t\tconst rrow = this._revealerrows.find((r) => r.name === trow.name)\n\t\t\t\t\t\tthis.removeRow(rrow);\n\t\t\t\t\t\t\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// listen to remove button clicks\n\t\t\tthis._revealerrows.forEach((rrow) => {\n\n\t\t\t\t// setup interaction on remove button click\n\t\t\t\tif (rrow.rem && rrow.rem.classList?.contains('c-insurance-compare__removal__wrapper')) {\n\t\t\t\t\trrow.rem?.firstElementChild.addEventListener('click', () => {\n\t\t\t\t\t\trrow.row.classList.add('t-background-color-transition');\n\t\t\t\t\t\trrow.row.classList.add(this._options.highlightclass);\n\t\t\t\t\t\twait(200).then(() => {\n\t\t\t\t\t\t\tthis.removeRow(rrow);\n\t\t\t\t\t\t\tthis.addToSelector(rrow.name);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// also hide the desktop version\n\t\t\t\t\t\tconst trow = this._tablerows.find((r) => r.name === rrow.name)\n\t\t\t\t\t\tthis.removeRow(trow);\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t}\n\t}\n\t\n\taddToSelector(selected) {\n\t\tconst chosenOption = this._selectOptions?.find(o => o.id === selected);\n\t\tchosenOption.className = '';\n\t\tchosenOption.removeAttribute('disabled');\n\t\tlet options = this._selectOptions;\n\t\tif (options?.some(o => !o.hasAttribute('disabled'))) {\n\t\t\tthis._comboBox.disabled = false;\n\t\t\tthis._selectConfirm.disabled = false;\n\t\t}\n\t\tif (options?.every(o => !o.hasAttribute('disabled'))) {\n\t\t\tthis._noneleft.classList.remove('t-hidden');\n\t\t}\n\t}\n\n\t// hide the row on the revealer on remove\n\tremoveRow(r) {\n\t\tif (!r || !r.row) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// close detail toggle\n\t\tif (r.toggleBtn && r.toggleBtn.getAttribute('aria-checked') == 'true') {\n\t\t\tr.toggleBtn.click();\n\t\t}\n\t\t// also close revealer if open\n\t\tif (r.rev && r.rev.getAttribute('aria-expanded') == 'true') {\n\t\t\tr.rev.click();\n\t\t}\n\t\t\n\t\tr.row.classList.add('t-hidden');\n\t\tr.row.classList.add(this._options.highlightclass);\n\t\tif (r.rev) {\n\t\t\tr.row.classList.add('t-background-color-transition');\n\t\t}\n\t}\n}\n\nexport default CompareInsuranceTable;","import { css } from 'lit';\nimport { CzContentloader } from '@cz/webcomponents';\n\nexport default class CzAvtableloader extends CzContentloader {\n\n\tstatic styles = [\n\t\tCzContentloader.styles,\n\t\tcss`\n\t\t\t@layer component {\n\t\t\t\t:host(:empty) {\n\t\t\t\t\taspect-ratio: 1/.325;\n\t\t\t\t}\n\t\t\t}\n\t\t`\n\t];\n\n\tstatic properties = {\n\t\tbrand: {},\n\t\tyear: {},\n\t\tlanguage: {},\n\t\tcategory: {},\n\t\tcollectivity: {}\n\t};\n\n\t#meldingOphalenGegevens = 'Geen gegevens gevonden';\n\t#meldingAVNietGevonden = 'Geen aanvullende verzekering gevonden';\n\t#avTitle = 'Aanvullende verzekering';\n\t#tvTitle = 'Tandarts verzekering';\n\t#vergoedingTitle = 'Vergoeding';\n\n\tupdated(changedProperties) {\n\t\tif (changedProperties?.has('brand') ||\n\t\t\tchangedProperties?.has('year') ||\n\t\t\tchangedProperties?.has('language') ||\n\t\t\tchangedProperties?.has('category') ||\n\t\t\tchangedProperties?.has('collectivity')) {\n\t\t\tthis.innerHTML = '';\n\t\t\tthis.loadContent();\n\t\t}\n\t}\n\n\tcallBackend = async (url) => {\n\t\ttry {\n\t\t\tconst requestUrl = `${url}?site=${this.brand?.toLowerCase()}&language=${this.language}&year=${this.year?.toLowerCase()}&categoryId=${this.category?.toLowerCase()}&collectivity=${this.collectivity?.toLowerCase()}`;\n\t\t\tconst controller = window.AbortController ? new AbortController() : {};\n\t\t\tconst signal = controller.signal || {};\n\t\t\tconst fetchPromise = fetch(requestUrl, {\n\t\t\t\tsignal,\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t \"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"same-origin\",\n\t\t\t });\n\t\t\tconst response = await fetchPromise;\n\t\t\tif (!response.ok) {\n\t\t\t\treturn this.#errorNotification(this.#meldingAVNietGevonden);\n\t\t\t}\n\t\t\tlet result = await response.json();\n\t\t\treturn this.#bakeHtmlFromJsonResult(result);\n\t\t} catch (error) {\n\t\t\treturn this.#errorNotification(this.#meldingOphalenGegevens);\n\t\t}\n\t}\n\n\t#errorNotification(message) {\n\t\treturn `
    \n\t\t\t\t\t${message}\n\t\t\t\t
    `;\n\t}\n\n\t#bakeHtmlFromJsonResult(result) {\n let returnValue = '';\n if (result) {\n if (result.aanvullend && result.aanvullend.length > 0) {\n returnValue += this.#bakeTable(result.aanvullend, ``, '
    ${this.#avTitle || 'Aanvullende verzekering' }${this.#vergoedingTitle || 'Vergoeding'}
    ');\n }\n if (result.tand && result.tand.length > 0) {\n returnValue += this.#bakeTable(result.tand, ``, '
    ${this.#tvTitle || 'Tandarts verzekering'}${this.#vergoedingTitle || 'Vergoeding'}
    ');\n }\n }\n return returnValue;\n }\n\n #bakeTable(keyValueArray, startSequence, endSequence) {\n let returnValue = keyValueArray.reduce((prev, current) => `${prev}${current.commercieleNaam}${current.vergoeding}${current.vergoedingDetails?.reduce((prev, line) => `${prev}${line}
    `,'
    ') || ''}`, startSequence);\n return returnValue + endSequence;\n }\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#meldingOphalenGegevens = this.dataset?.meldingOphalenGegevens;\n\t\tthis.#meldingAVNietGevonden = this.dataset?.meldingAvNietGevonden;\n\t\tthis.#avTitle = this.dataset?.avTitle;\n\t\tthis.#tvTitle = this.dataset?.tvTitle;\n\t\tthis.#vergoedingTitle = this.dataset?.vergoedingTitle;\n\t}\n}\n\ncustomElements.define('cz-avtableloader', CzAvtableloader);","import { subscribeNotify } from \"../../@helpers/js/observer.js\";\nimport { addDimensionToDatalayer, getStoredPiwikdimension, putCusDimInDatalayer } from \"../../@helpers/js/datalayer.js\";\nimport './@webcomponent/cz-avtableloader.js';\n\nclass SearchCompensation {\n\n constructor(element, {\n meldingCollectiviteitNietGevonden = 'Collectiviteit niet gevonden',\n meldingCollectiviteitNietBeschikbaar = 'Collectiviteit niet beschikbaar',\n collectiviteit,\n verzekeringslabel = 'cz',\n peilJaar = '2024',\n defaultCategoryId = '00022299338',\n defaultCollectiviteit = '000000019',\n displayCollectiviteitKeuzeBox = true,\n matchPrice = \",-\",\n matchPercentage = \"%\",\n displayJaarKeuze = true,\n } = {}) {\n\n this._element = element;\n this._options = {\n meldingCollectiviteitNietGevonden,\n meldingCollectiviteitNietBeschikbaar,\n collectiviteit,\n verzekeringslabel,\n peilJaar,\n defaultCategoryId,\n defaultCollectiviteit,\n displayCollectiviteitKeuzeBox,\n matchPrice,\n matchPercentage,\n displayJaarKeuze,\n };\n\n this._init();\n }\n\n _init() {\n\n this.toggleSearch = this._element.querySelector('[data-toggle-search]');\n\n this.collectiveSearch = this._element.querySelector('[data-collective-search]');\n\n this.searchField = this._element.querySelector('[data-search-field]');\n this.categoryId = this._element.querySelector('[data-category-id]');\n\n this.collectiveLabel = this._element.querySelector('[data-collective-label]');\n\n this.yearTabs = this._element.querySelectorAll('[data-collective-year] [data-item]');\n this.resetSearch = this._element.querySelector('[data-reset-search]');\n\n this.verzekeringsLabels = this._element.querySelectorAll('[data-label]');\n\n this.collectiveGraph = this._element.querySelector('[data-collective-graph]');\n this.collectiveWrapper = this._element.querySelector('[data-collective-wrapper]');\n\n this.collectivePackage = this._element.querySelector('[data-collective-package]');\n this.searchContentSection = this._element.querySelector('[data-search-content]');\n this.revealer = this._element.querySelector('[data-revealer]');\n\n this.yearTabs?.forEach( tab => {\n tab.addEventListener('click', () => {\n this.yearTabs.forEach(t => t.classList.remove('selected'));\n tab.classList.add('selected');\n this.collectiveGraph?.setAttribute('year', tab.textContent);\n });\n });\n \n this.verzekeringsLabels.forEach( label => {\n label.addEventListener('click', () => {\n this.verzekeringsLabels.forEach(l => l.classList.remove('selected'));\n label.classList.add('selected');\n this.collectiveGraph?.setAttribute('brand', label.textContent?.replace(/\\s/g,''));\n this.collectiveGraph?.setAttribute('category', label.dataset?.category);\n });\n });\n\n this.toggleSearch.addEventListener('click', () => this._onToggleSearchClick());\n if (this.resetSearch) { this.resetSearch.addEventListener('click', () => this._onResetSearchClick()); }\n\n\n this.showYearSection(this._options.displayJaarKeuze);\n if (this.getCollectivity() !== ('000000000' + this._sanitizeInput(this._options.defaultCollectiviteit)).slice(-9)) {\n this.collectiveLabel.textContent = getStoredPiwikdimension('collectiviteitsnaam');\n }\n\n this._processCollectivity(true, false);\n\n const selectcomplete = async (suggestion) => {\n if (!suggestion) return;\n \n if (suggestion.relatienummer) {\n this.setCollectivity(suggestion);\n this.searchField.value = suggestion.relatienummer;\n this._processCollectivity(false, false);\n } else {\n this.showError(this._options.meldingCollectiviteitNietGevonden);\n }\n }\n\n subscribeNotify(\"searchsuggestions-selectcomplete\", selectcomplete);\n }\n\n showYearSection(state) {\n const collectiveYear = this._element.querySelector(`[data-collective-year]`);\n if (state) {\n collectiveYear?.classList.remove('t-hidden');\n }\n }\n\n setCollectivity(collectivity) {\n this._options.collectiviteit = collectivity.relatienummer;\n this.collectiveGraph?.setAttribute('collectivity', collectivity.relatienummer);\n putCusDimInDatalayer(26, collectivity.relatienummer);\n addDimensionToDatalayer('collectiviteit',collectivity.relatienummer);\n addDimensionToDatalayer('collectiviteitsnaam',collectivity.naam);\n this.collectiveLabel.textContent = collectivity.naam;\n }\n\n getCollectivity() {\n let collect = getStoredPiwikdimension('collectiviteit') ?? this._options.defaultCollectiviteit;\n \n return ('000000000' + this._sanitizeInput(collect)).slice(-9);\n }\n\n showError(message) {\n\n // Show error container if field invalidates\n let input = this._element.querySelector('[data-input]');\n if (input) {\n input.classList.add('-has-error');\n }\n let err = this._element.querySelector('[data-error]');\n if (err) {\n err.innerHTML = message;\n err.classList.remove('t-hidden');\n }\n\n this.showLoadingCollectivity(false);\n this._element.querySelector('.c-input__input')?.focus();\n if (this.toggleSearch.getAttribute('aria-expanded') !== \"true\") {\n if (this._sanitizeInput(this._options.collectiviteit) === this._sanitizeInput(this._options.defaultCollectiviteit)) {\n this.toggleSearch.classList.remove('t-hidden');\n this.toggleSearch.setAttribute('aria-hidden',false);\n this.collectivePackage.classList.add('t-hidden');\n this.collectivePackage.setAttribute('aria-hidden',true);\n } else {\n this.toggleSearch.classList.add('t-hidden');\n this.toggleSearch.setAttribute('aria-hidden',true);\n this.collectivePackage.classList.remove('t-hidden');\n this.collectivePackage.setAttribute('aria-hidden',false);\n }\n\n this.showErrorMessage(message);\n }\n\n return false;\n }\n\n showErrorMessage(message) {\n\n // Show error container if major error occurs\n let err = this._element.querySelector('[data-message]');\n if (err) {\n err.innerHTML = message;\n err.classList.remove('t-hidden')\n }\n\n return false;\n }\n\n\n showLoadingCollectivity(state){\n return new Promise( r => {\n if (state) {\n this.searchContentSection.classList.add('loading');\n } else {\n this.searchContentSection.classList.remove('loading');\n }\n setTimeout(r,300);\n });\n }\n\n _onToggleSearchClick() {\n if (this.toggleSearch.getAttribute('aria-expanded') !== \"false\") {\n this.searchField.value = '';\n }\n }\n\n _onResetSearchClick() {\n\n this.searchField.value = '';\n this.setCollectivity({relatienummer: ('000000000' + this._sanitizeInput(this._options.defaultCollectiviteit)).slice(-9), naam: ''});\n\n this._processCollectivity(true, true);\n }\n\n _sanitizeInput(value) {\n if (typeof value === 'number')\n return value;\n // Remove leading zeros and validate only numbers.\n return parseInt(value, 10);\n }\n\n async _processCollectivity(acceptDefault, removeColl) {\n\n // Show loading.\n await this.showLoadingCollectivity(true)\n if (removeColl) {\n this.showYearSection(false);\n }\n this.toggleSearch.classList.remove('t-hidden');\n this.toggleSearch.setAttribute('aria-hidden', false);\n this.collectivePackage.classList.add('t-hidden');\n this.collectivePackage.setAttribute('aria-hidden', true);\n if (this.getCollectivity() !== ('000000000' + this._sanitizeInput(this._options.defaultCollectiviteit)).slice(-9)) {\n this.showLoadingCollectivity(false);\n \n this.collectivePackage.classList.remove('t-hidden');\n this.collectivePackage.setAttribute('aria-hidden', false);\n if (this.toggleSearch.getAttribute('aria-hidden') !== \"true\") {\n if (this.searchContentSection.getAttribute('aria-hidden') !== \"true\") {\n this.toggleSearch.dispatchEvent(new Event(\"click\"));\n }\n this.toggleSearch.classList.add('t-hidden');\n this.toggleSearch.setAttribute('aria-hidden', true);\n }\n\n } else {\n \n if (acceptDefault) {\n this.collectiveLabel.textContent = '';\n this.showLoadingCollectivity(false);\n\n } else {\n this.showError(this._options.meldingCollectiviteitNietGevonden);\n return false;\n }\n }\n }\n}\n\nexport default SearchCompensation;\n","import { css } from 'lit';\nimport { CzContentloader } from '@cz/webcomponents';\n\nexport default class CzMFAloader extends CzContentloader {\n\n\tstatic styles = [\n\t\tCzContentloader.styles,\n\t\tcss`\n\t\t\t@layer component {\n\t\t\t\t:host(:empty) {\n\t\t\t\t\taspect-ratio: 1/.325;\n\t\t\t\t}\n\t\t\t}\n\t\t`\n\t];\n\n\t#sidepanel = false;\n\t#loaded = false;\n\t#loadOnSidepanelOpen = false;\n\t#mfaUrl = false;\n\t#mfaName = false;\n\n\tmfaTemplate = false;\n\n\tstartLoading() {\n\t\tthis.loadContent().then((r) => {\n\t\t\tif (r && this.#mfaUrl) {\n\t\t\t\tconst scriptFileEl = document.createElement('script');\n\t\t\t\tscriptFileEl.setAttribute('async', '');\n\t\t\t\tscriptFileEl.setAttribute('src', `${this.#mfaUrl}/${this.#mfaName}/main.js`);\n\t\t\t\tthis.appendChild(scriptFileEl);\n\t\t\t}\n\t\t});\n\t}\n\n\tsideOverlayObserve() {\n\t\tif (!this.#sidepanel) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = {\n\t\t\tattributeFilter: ['open'],\n\t\t};\n\n\t\tconst callback = async (mutationList) => {\n\t\t\tfor (const mutation of mutationList) {\n\t\t\t\tif (mutation.type === \"attributes\" && mutation.attributeName === 'open') {\n\t\t\t\t\tif (this.#sidepanel?.hasAttribute('open') && !this.#loaded) {\n\t\t\t\t\t\tthis.startLoading();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst observer = new MutationObserver(callback);\n\t\tobserver.observe(this.#sidepanel, config);\n\n\t\tif (this.#sidepanel?.hasAttribute('open') && !this.#loaded) {\n\t\t\tthis.startLoading();\n\t\t}\n\t}\n\n\tcallBackend = async (url) => {\n\t\tif (this.#loadOnSidepanelOpen && this.#sidepanel && !this.#sidepanel.hasAttribute('open')) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet result = this.mfaTemplate ? this.mfaTemplate.innerHTML : 'Something went wrong, please try again later.';\n\t\tthis.#loaded = true;\n\t\treturn result;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#loadOnSidepanelOpen = this.getAttribute('load-on-sidepanel-open');\n\t\tthis.#mfaUrl = this.getAttribute('app-url');\n\t\tthis.#mfaName = this.getAttribute('app-name');\n\t\tthis.#sidepanel = this.closest('cz-sidepanel');\n\t\tthis.mfaTemplate = document.getElementById(this.getAttribute('template'));\n\t\tif (this.#loadOnSidepanelOpen && this.#sidepanel) {\n\t\t\tthis.sideOverlayObserve();\n\t\t} else {\n\t\t\tthis.startLoading();\n\t\t}\n\t}\n}\n\ncustomElements.define('cz-mfaloader', CzMFAloader);","import { css } from 'lit';\nimport { wait } from '../../../@helpers/js/wait.js';\nimport { CzContentloader } from '@cz/webcomponents';\n\nexport default class CzVergelijkerloader extends CzContentloader {\n\n\tstatic styles = [\n\t\tCzContentloader.styles,\n\t\tcss`\n\t\t\t@layer component {\n\t\t\t\t:host(:empty) {\n\t\t\t\t\taspect-ratio: 1/.325;\n\t\t\t\t}\n\t\t\t}\n\t\t`\n\t];\n\n\tstatic properties = {\n\t\tdate: {},\n\t\tproductset: {},\n\t\tproducttype: {},\n\t\tcollectivity: {}\n\t};\n\n\t#svglocation = '../../images/svg.svg';\n\t#meldingOphalenGegevens = 'Geen gegevens gevonden';\n\t#apimKeySalesfunnel = false;\n\n\t#sidepanel = false;\n\t#loaded = false;\n\t#loadOnSidepanelOpen = false;\n\n\tasync startLoading() {\n\t\tif (this._isLoading) {\n\t\t\treturn;\n\t\t}\n\t\twhile (!this.#loaded && ((this.#loadOnSidepanelOpen && this.#sidepanel?.hasAttribute('open')) || !this.#loadOnSidepanelOpen)) {\n\t\t\tthis._isLoading = true;\n\t\t\tthis.loadContent().then(() => {\n\t\t\t\twindow.processModulesInsideElement(this);\n\t\t\t\tthis._isLoading = !this.#loaded;\n\t\t\t});\n\t\t\tawait wait(15000);\n\t\t}\n\t}\n\t\n\tsideOverlayObserve() {\n\t\tif (!this.#sidepanel) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = {\n\t\t\tattributeFilter: ['open'],\n\t\t};\n\n\t\tconst callback = async (mutationList) => {\n\t\t\tfor (const mutation of mutationList) {\n\t\t\t\tif (mutation.type === \"attributes\" && mutation.attributeName === 'open') {\n\t\t\t\t\tif (this.#sidepanel?.hasAttribute('open') && !this.#loaded) {\n\t\t\t\t\t\tthis.startLoading();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._isLoading = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst observer = new MutationObserver(callback);\n\t\tobserver.observe(this.#sidepanel, config);\n\n\t\tif (this.#sidepanel?.hasAttribute('open') && !this.#loaded) {\n\t\t\tthis.startLoading();\n\t\t}\n\t}\n\n\tupdated(changedProperties) {\n\t\tif (changedProperties?.has('date') ||\n\t\t\tchangedProperties?.has('productset') ||\n\t\t\tchangedProperties?.has('producttype') ||\n\t\t\tchangedProperties?.has('collectivity')) {\n\t\t\t\tthis.innerHTML = '';\n\t\t\t\tthis.#loaded = false;\n\t\t\t\tif (this.#loadOnSidepanelOpen && this.#sidepanel) {\n\t\t\t\t\tif (this.#sidepanel.hasAttribute('open')) {\n\t\t\t\t\t\tthis.startLoading();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.startLoading();\n\t\t\t\t}\n\t\t\t}\n\t}\n\n\tcallBackend = async (url) => {\n\t\ttry {\n\t\t\tconst requestUrl = url;\n\t\t\tconst postData = {\n\t\t\t\t\"collectiviteitsnummer\": this.collectivity,\n\t\t\t\t\"referentie_datum\": this.date ?? \"2024-12-1\",\n\t\t\t\t\"productset\": this.productset,\n\t\t\t\t\"soort_verzekering\": this.producttype\n\t\t\t}\n\t\t\n\t\t\tconst controller = window.AbortController ? new AbortController() : {};\n\t\t\tconst signal = controller.signal || {};\n\t\t\tconst headers = {\n\t\t\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t};\n\t\t\tif (this.#apimKeySalesfunnel) {\n\t\t\t\theaders['Ocp-Apim-Subscription-Key'] = this.#apimKeySalesfunnel;\n\t\t\t}\n\t\t\tconst fetchPromise = fetch(requestUrl, {\n\t\t\t\tsignal,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify(postData),\n\t\t\t\theaders\n\t\t\t });\n\t\t\tconst response = await fetchPromise;\n\t\t\tif (!response.ok) {\n\t\t\t\tconst err = await response.json();\n\t\t\t\tthrow new Error(err.Message);\n\t\t\t} else {\n\t\t\t\tlet result = await response.json();\n\t\t\t\tthis.#loaded = true;\n\t\t\t\treturn this.#bakeHtmlFromJsonResult(result);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn this.#errorNotification(error.message || this.#meldingOphalenGegevens);\n\t\t}\n\t}\n\n\t#errorNotification(message) {\n\t\treturn `
    \n\t\t\t\t\t${message}\n\t\t\t\t
    `;\n\t}\n\n\t#bakeHtmlFromJsonResult(result) {\n\t\tlet numberFormatter = Intl.NumberFormat( document.firstElementChild?.lang || navigator.language || \"nl-NL\" );\n let returnValue = '';\n if (result) {\n\t\t\treturnValue = `
    \n\t\t\t
    \n\t\t\t\t

    ${result?.VergoedingenvergelijkerLabels?.TitelVergoedingenvergelijker || ''}

    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${result?.Vergoedingen?.[0]?.AanvullendeZorgVerzekeringen?.map(av => ``).join(\"\")}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${result?.Vergoedingen?.map((vergoeding, index) => {\n\t\t\t\t\t\t\treturn `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${vergoeding?.AanvullendeZorgVerzekeringen?.map(av => ``).join(\"\")}\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t}).join(\"\")}\n\t\t\t\t\t\n\t\t\t\t
    ${result?.VergoedingenvergelijkerLabels?.TitelVergoeding || 'Vergoedingen'}\n\t\t\t\t\t\t\t\t${result?.VergoedingenvergelijkerLabels?.TitelAanvullendeVerzekering || 'Aanvullend'}\n\t\t\t\t\t\t\t\t${av?.Naam}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t${av?.Prijs ? numberFormatter.format(av.Prijs) : numberFormatter.format(0.0)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t${result.VergoedingenvergelijkerLabels?.PerTermijn|| '/mnd'}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    ${vergoeding?.CategorieZorgsoort}
    \n\t\t\t\t\t\t\t\t\t${vergoeding?.TonenDetails ? `
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    `: ''}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t${av?.VergoedingOmschrijving}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    ${av?.VergoedingDetails}
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t
    \n\t\t\n\t\t\t
    \n\t\t\t\t

    ${result?.VergoedingenvergelijkerLabels?.TitelVergoedingenvergelijker || 'Vergelijk onze aanvullende verzekeringen'}

    \n\t\t\n\t\t\t\t${result?.Vergoedingen?.map((vergoeding, index) => {\n\t\t\t\t\treturn `
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${vergoeding?.CategorieZorgsoort}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t${vergoeding.TonenDetails ? ``: ''}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t${vergoeding?.AanvullendeZorgVerzekeringen?.map(av => `\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t`).join(\"\")}\n\t\t\t\t\t\t\t\t
    ${vergoeding?.CategorieZorgsoort}
    ${result?.VergoedingenvergelijkerLabels?.TitelAanvullendeVerzekering}${result?.VergoedingenvergelijkerLabels?.TitelVergoeding}
    ${av.Naam}\n\t\t\t\t\t\t\t\t\t\t\t\t${av.VergoedingOmschrijving}\n\t\t\t\t\t\t\t\t\t\t\t\t
    ${av.VergoedingDetails === '-' ? '' : av.VergoedingDetails}
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    `\n\t\t\t\t}).join(\"\")}\n\t\t\t
    \n\t\t\n\t\t\t

    ${result?.VergoedingenvergelijkerLabels?.SelecteerVergoeding}

    \n\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t

    ${result?.VergoedingenvergelijkerLabels?.TitelVergoedingToevoegen}

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t${result?.Vergoedingen?.map((vergoeding, index) => {\n\t\t\t\t\t\t\t\treturn `
    • ${vergoeding?.CategorieZorgsoort}
    • `;\n\t\t\t\t\t\t\t}).join(\"\")}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    `\n }\n return returnValue;\n }\n\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#svglocation = this.dataset?.svgUrl || this.#svglocation;\n\t\tthis.#meldingOphalenGegevens = this.dataset?.meldingOphalenGegevens;\n\t\tthis.#apimKeySalesfunnel = this.getAttribute('salesfunnel_apim_key');\n\t\tthis.#loadOnSidepanelOpen = this.getAttribute('load-on-sidepanel-open');\n\t\tthis.#sidepanel = this.closest('cz-sidepanel');\n\t\tif (this.#loadOnSidepanelOpen && this.#sidepanel) {\n\t\t\tthis.sideOverlayObserve();\n\t\t}\n\t}\n}\n\ncustomElements.define('cz-vergelijkerloader', CzVergelijkerloader);","/*\n * modules.js\n * import the modules that you want to be able to use as value of the data-module attribute\n * then add them to the default export.\n */\n\nimport ContentEnhancements from './modules/content-enhancements.js'; // use data-module=\"ContentEnhancements\"\nimport SearchAwesomplete from './modules/search-awesomplete.js'; // use data-module=\"SearchAwesomplete\"\nimport SetListIcon from './modules/set-list-icon.js'; // use data-module=\"SetListIcon\"\n\nconst modules = {\n ContentEnhancements,\n SearchAwesomplete,\n SetListIcon,\n};\n\n// this empty array is filled in the build process\nconst modulesInFile = [];\n\nexport function getMore(module) {\n const found = modulesInFile.find((occ) => occ?.modulenames?.includes(module));\n return found?.file ?? '';\n}\n\nexport default modules;\n\nimport FormValidation from './modules/cz-forms/js/form-validation.js';\nmodules['FormValidation'] = FormValidation;\n\nimport CzCombobox from './modules/cz-forms/js/@webcomponent/cz-combobox.js';\nmodules['CzCombobox'] = CzCombobox;\n\nimport ClickAction from './modules/cz-action/js/click-action.js';\nmodules['ClickAction'] = ClickAction;\n\nimport Categories from './modules/cz-category-tree/js/categories.js';\nmodules['Categories'] = Categories;\n\nimport Datalayer from './modules/cz-datalayer/js/datalayer.js';\nmodules['Datalayer'] = Datalayer;\n\nimport ClassNames from './modules/cz-navigation/js/classNames.js';\nmodules['ClassNames'] = ClassNames;\n\nimport DomElements from './modules/cz-navigation/js/domElements.js';\nmodules['DomElements'] = DomElements;\n\nimport HandleNavContainer from './modules/cz-navigation/js/handleNavContainer.js';\nmodules['HandleNavContainer'] = HandleNavContainer;\n\nimport HandleNavDomain from './modules/cz-navigation/js/handleNavDomain.js';\nmodules['HandleNavDomain'] = HandleNavDomain;\n\nimport HandleOverlay from './modules/cz-navigation/js/handleOverlay.js';\nmodules['HandleOverlay'] = HandleOverlay;\n\nimport HandleSearch from './modules/cz-navigation/js/handleSearch.js';\nmodules['HandleSearch'] = HandleSearch;\n\nimport HandleSubmenus from './modules/cz-navigation/js/handleSubmenus.js';\nmodules['HandleSubmenus'] = HandleSubmenus;\n\nimport HandleViewportHeights from './modules/cz-navigation/js/handleViewportHeights.js';\nmodules['HandleViewportHeights'] = HandleViewportHeights;\n\nimport Navigation from './modules/cz-navigation/js/navigation.js';\nmodules['Navigation'] = Navigation;\n\nimport Shared from './modules/cz-navigation/js/shared.js';\nmodules['Shared'] = Shared;\n\nimport PopupOverlay from './modules/cz-popup-overlay/js/popup-overlay.js';\nmodules['PopupOverlay'] = PopupOverlay;\n\nimport Revealer from './modules/cz-revealer/js/revealer.js';\nmodules['Revealer'] = Revealer;\n\nimport ScrollToTop from './modules/cz-scroll-to-top/js/scroll-to-top.js';\nmodules['ScrollToTop'] = ScrollToTop;\n\nimport Services from './modules/cz-service/js/services.js';\nmodules['Services'] = Services;\n\nimport SideOverlay from './modules/cz-side-overlay/js/side-overlay.js';\nmodules['SideOverlay'] = SideOverlay;\n\nimport WhatsThat from './modules/cz-whatsthat/js/whats-that.js';\nmodules['WhatsThat'] = WhatsThat;\n\nimport SuperCents from './modules/cz-amount/js/super-cents.js';\nmodules['SuperCents'] = SuperCents;\n\nimport AlertBar from './modules/cz-alert-bar/js/alert-bar.js';\nmodules['AlertBar'] = AlertBar;\n\nimport ClustergridFilter from './modules/cz-cluster-grid/js/clustergrid-filter.js';\nmodules['ClustergridFilter'] = ClustergridFilter;\n\nimport CollectiveChoice from './modules/cz-collective/js/collective-choice.js';\nmodules['CollectiveChoice'] = CollectiveChoice;\n\nimport CollectiveSearch from './modules/cz-collective/js/collective-search.js';\nmodules['CollectiveSearch'] = CollectiveSearch;\n\nimport SearchSuggestions from './modules/cz-collective/js/search-suggestions.js';\nmodules['SearchSuggestions'] = SearchSuggestions;\n\nimport SearchFilter from './modules/cz-search/js/search-filter.js';\nmodules['SearchFilter'] = SearchFilter;\n\nimport SearchForm from './modules/cz-search/js/search-form.js';\nmodules['SearchForm'] = SearchForm;\n\nimport ToggleButtonListener from './modules/cz-toggle-button/js/toggle-button-listener.js';\nmodules['ToggleButtonListener'] = ToggleButtonListener;\n\nimport ToggleButton from './modules/cz-toggle-button/js/toggle-button.js';\nmodules['ToggleButton'] = ToggleButton;\n\nimport Tooltip from './modules/cz-tooltip/js/tooltip.js';\nmodules['Tooltip'] = Tooltip;\n\nimport FileUpload from './modules/cz-upload-file/js/file-upload.js';\nmodules['FileUpload'] = FileUpload;\n\nimport ComboboxAutocomplete from './modules/cz-vergoeding/js/comboboxAutocomplete.js';\nmodules['ComboboxAutocomplete'] = ComboboxAutocomplete;\n\nimport CompareInsuranceTable from './modules/cz-vergoeding/js/compare-insurance-table.js';\nmodules['CompareInsuranceTable'] = CompareInsuranceTable;\n\nimport SearchCompensation from './modules/cz-vergoeding/js/search-compensation.js';\nmodules['SearchCompensation'] = SearchCompensation;\n\nimport CzAvtableloader from './modules/cz-vergoeding/js/@webcomponent/cz-avtableloader.js';\nmodules['CzAvtableloader'] = CzAvtableloader;\n\nimport CzMfaloader from './modules/cz-vergoeding/js/@webcomponent/cz-mfaloader.js';\nmodules['CzMfaloader'] = CzMfaloader;\n\nimport CzVergelijkerloader from './modules/cz-vergoeding/js/@webcomponent/cz-vergelijkerloader.js';\nmodules['CzVergelijkerloader'] = CzVergelijkerloader;\n\nimport Questionnaire from './modules/cz-questionnaire/js/questionnaire.js';\nmodules['Questionnaire'] = Questionnaire;\n","import { runLinkEnhancements, replaceYesterday } from \"./@helpers/js/enhancements.js\";\n\n\nexport default function ContentEnhancements(element, options = {}) {\n\n if (!element) {\n return;\n }\n\n const _element = element;\n\n runLinkEnhancements(_element);\n replaceYesterday(_element);\n\n}","export default function(element) {\n let lists = (element?.tagName === 'UL' || element?.tagName === 'OL') ? [element] : [];\n lists.push(...element.querySelectorAll('ul,ol'));\n if (lists && lists.length > 0) {\n \n lists.forEach(list => {\n let namedByClass = false;\n if (list.classList?.contains('check-mark')) {\n namedByClass = 'check';\n }\n let items = [...list.querySelectorAll('li')];\n let svgUrl = `${element.dataset.svg || element.dataset.svgUrl || '~/images/svg.svg'}`;\n let name = namedByClass || element.dataset.icon || '';\n if (name) {\n items.forEach(item => {\n if (!item) {\n return;\n }\n if (!item.firstElementChild?.classList?.contains('c-list__icon-wrapper') && !item.firstElementChild?.classList?.contains('c-icon')) {\n item.innerHTML = `${name}
    ${item.innerHTML}
    `\n }\n });\n list.classList.add('c-list', 'c-list--icon');\n list.classList.remove('c-list--unstyled');\n }\n });\n }\n}\n\n","import './modernizr.js'; //browser style imports require extension\n\nimport { clearTableLayout } from './modules/@helpers/js/clearLayoutProps.js';\n\nimport modules from './modules.js'; //browser style imports require extension\n\nimport { getStorage } from './modules/@helpers/js/keyvaluestorage.js';\ngetStorage().storeKeyValue('scriptUrl', import.meta.url);\n\n/** construct a module form an element and possibly options\n * @param moduleName the name of the module to construct\n * @param element the element to inject into the module\n * @param options the optional options to give the module\n */\nasync function constructModuleFromElement(moduleName, element, options) {\n if (!moduleName || !element) {\n return;\n }\n if (modules[moduleName] && typeof modules[moduleName] === 'function') {\n return new modules[moduleName](element, options);\n }\n}\n\nfunction processModulesInsideElement(element) {\n if (!element || !element.querySelectorAll) {\n return;\n }\n const moduleElements = [...element.querySelectorAll('[data-module]')];\n moduleElements.forEach(el => {\n const dataModules = el.getAttribute('data-module');\n const names = dataModules && dataModules.indexOf(' ') > -1 ? dataModules.split(' ') : [dataModules];\n const optionsValue = el.getAttribute('data-options');\n let options;\n if (optionsValue && typeof optionsValue === 'string' && optionsValue.length > 2 && optionsValue.startsWith('{')) {\n try {\n options = JSON.parse(optionsValue);\n } catch (error) {\n console.error(error);\n }\n }\n names.forEach(name => constructModuleFromElement(name, el, options));\n });\n clearTableLayout(element);\n}\n\nwindow.activateModuleOnElement = constructModuleFromElement;\nwindow.processModulesInsideElement = processModulesInsideElement;\nprocessModulesInsideElement(document);\nconstructModuleFromElement('Datalayer', document);\n","/**\n * Clear out the layout attributes from the table elements within the element passed.\n * Currently works only for width: \n * Takes the width (if in percentage) of the attribute and translates it into a class which is then set on the table.\n * \n * @param {element} node \n */\nexport function clearTableLayout(node) {\n\tconst tablesWithWidth = [...node.querySelectorAll('table[width]')];\n\tif (tablesWithWidth && tablesWithWidth.length > 0) {\n\t\ttablesWithWidth.forEach(table => {\n\t\t\tconst defWidth = table.getAttribute('width');\n\t\t\tif (defWidth && defWidth.endsWith('%')) {\n\t\t\t\ttable.classList.add(`c-table__width--${defWidth.slice(0, -1)}`)\n\t\t\t} else {\n\t\t\t\ttable.classList.add(`c-table__width--auto`);\n\t\t\t}\n\t\t\ttable.removeAttribute('width');\n\t\t})\n\t}\n}","export default function (element, options = {}) {\n if (!element) {\n return;\n }\n\n let { obj = '', act = '', arg} = options;\n\n element.addEventListener('click', () => {\n if (typeof window[obj]?.[act] === 'function') {\n return window[obj][act](arg);\n } else {\n return window[act]?.(arg);\n }\n });\n}\n","function Categories (element, options = {}) {\n if (!element) {\n return;\n }\n\n const categories = [...element.querySelectorAll('[data-category-tree-tag]')];\n\n const triggers = [];\n const panels = [];\n\n if (categories && categories.length > 0) {\n categories.forEach(category => {\n const trigger = category.querySelector('[data-category-tree-trigger]');\n triggers.push(trigger);\n const target = category.nextElementSibling;\n panels.push(target);\n\n trigger.addEventListener('click', () => {\n let currentState = history.state;\n let expanded = trigger.getAttribute('aria-expanded') === 'true' || false;\n\n if (!expanded) {\n triggers.forEach((but) => but.setAttribute('aria-expanded', expanded));\n panels.forEach((panel) => panel.hidden = true);\n let slug = trigger.getAttribute('data-slug') || ' ';\n history.replaceState(currentState, null, `#${slug.toLowerCase().trim().replace(/\\s+/gi,'-')}`);\n } else {\n history.replaceState(currentState, null, ' ');\n }\n\n trigger.setAttribute('aria-expanded', !expanded);\n target.hidden = expanded;\n });\n });\n }\n\n function getHashFromString(str) {\n if (!str || typeof str !== 'string') {\n return '';\n }\n return str.substring(str.indexOf('#') + 1);\n }\n\n const hashOnLoad = getHashFromString(decodeURI(location.hash)).toLowerCase();\n if (hashOnLoad) {\n const startTrigger = triggers.find(t => t?.dataset?.slug?.toLowerCase()?.trim()?.replace(/\\s+/gi,'-') === hashOnLoad);\n if (startTrigger) {\n startTrigger.dispatchEvent(new Event('click'));\n }\n }\n}\nexport default Categories;","import { addEventToDatalayer, processStoredPiwikdimensions, createHash, addDimensionToDatalayer, putDimensionInDatalayer, putCusDimInDatalayer } from '../../@helpers/js/datalayer.js';\nimport { isUrlExternal } from '../../@helpers/js/helpers.js';\nimport { getStorage } from '../../@helpers/js/keyvaluestorage.js';\nimport { processEvent } from '../../@helpers/js/queue-processing.js';\nimport { wait } from '../../@helpers/js/wait.js';\n\nfunction Datalayer(element) {\n\tconst _element = element || document;\n\n\tconst buttonCategory = 'button click';\n\tconst internalLinkCategory = 'internal link click';\n\tconst externalLinkCategory = 'external link click';\n\tconst skipLinkCategory = 'skiplink click';\n\tconst revealerCategory = 'revealer click';\n\tconst headerLinkCategory = 'header link click';\n\tconst menuLinkCategory = 'menu link click';\n\tconst footerLinkCategory = 'footer link click';\n\n\tconst anchorSelector = ':is(#content, .mfa-app) :is(.c-link, a)';\n\tconst ctaStoreButtonSelector = '[class*=__store-buttons] a';\n\tconst mfaButtonSelector = '.mfa-app [id^=\"kaart-\"] button';\n\tconst buttonSelector = ':is(#content, .mfa-app) :is(button, .c-button, input[type=button], input[type=submit], input[type=reset])';\n\tconst headerLinkSelector = '.shared-header__nav-domain a';\n\tconst menuLinkSelector = ':is(.shared-header__nav, .just-navigation__menu) a[href]';\n\tconst menuButtonSelector = ':is(.shared-header__nav, .just-navigation__menu) :is(button, a:has(+ .just-navigation__submenu))';\n\tconst mijnLinkSelector = '.just-navigation__mijn-just a[href], a:is(.shared-header__btn-mobile, .shared-header__btn-desktop-account)';\n\tconst revealerSelector = '.c-revealer button.c-revealer__title';\n\tconst footerLinkSelector = '#footer a';\n\tconst skipLinkSelector = '.skiplinks a';\n\tconst mfaAppSelector = '.mfa-app';\n\n\tfunction clickHandler(el) {\n\t\tif (!el) return;\n\n\t\tconst event = {\n\t\t\tevent: 'event',\n\t\t}\n\n\t\tconst skiplink = el.closest(skipLinkSelector);\n\t\tif (skiplink) {\n\t\t\tevent.event_category = skipLinkCategory;\n\t\t\tevent.event_action = skiplink.textContent?.trim?.() || 'skiplink zonder tekst';\n\t\t\tevent.event_name = skiplink.href?.trim?.() || 'skiplink zonder href';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctaStoreButton = el.closest(ctaStoreButtonSelector);\n\t\tif (ctaStoreButton) {\n\t\t\tevent.event_category = buttonCategory;\n\t\t\tevent.event_action = ctaStoreButton.querySelector('img')?.getAttribute('alt') || 'CTA AppStore button';\n\t\t\tevent.event_name = ctaStoreButton.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst revealer = el.closest(revealerSelector);\n\t\tif (revealer) {\n\t\t\tevent.event_category = revealerCategory;\n\t\t\tevent.event_action = `${revealer.ariaExpanded === \"true\" ? 'Open' : 'Close'} ${revealer.textContent?.trim?.() || 'revealer zonder tekst'}`;\n\t\t\tevent.event_name = '';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst button = el.closest(buttonSelector);\n\t\tif (button) {\n\t\t\tevent.event_category = buttonCategory;\n\t\t\tevent.event_action = (button.textContent || button.value)?.trim?.() || 'button zonder tekst';\n\t\t\tevent.event_name = button.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = el.closest(anchorSelector);\n\t\tif (anchor) {\n\t\t\tevent.event_category = isUrlExternal(anchor.getAttribute('href')) ? externalLinkCategory : internalLinkCategory;\n\t\t\tevent.event_action = anchor.textContent?.trim?.() || 'link zonder tekst';\n\t\t\tevent.event_name = anchor.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst headerLink = el.closest(headerLinkSelector);\n\t\tif (headerLink?.href) {\n\t\t\tevent.event_category = headerLinkCategory;\n\t\t\tevent.event_action = headerLink.textContent?.trim?.() || 'headerlink zonder tekst';\n\t\t\tevent.event_name = headerLink.href?.trim?.() || 'headerlink zonder href';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst footerLink = el.closest(footerLinkSelector);\n\t\tif (footerLink?.href) {\n\t\t\tevent.event_category = footerLinkCategory;\n\t\t\tevent.event_action = footerLink.textContent?.trim?.() || 'footerlink zonder tekst';\n\t\t\tevent.event_name = footerLink.href?.trim?.() || 'footerlink zonder href';\n\t\t\taddEventToDatalayer(event);\n\t\t\treturn;\n\t\t}\n\n\t\tconst menuLink = el.closest(menuLinkSelector);\n\t\tif (menuLink) {\n\t\t\tevent.event_category = menuLinkCategory;\n\t\t\tevent.event_action = menuLink.textContent?.trim?.() || 'menulink zonder tekst';\n\t\t\tevent.event_name = menuLink.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t}\n\n\t\tconst menuButton = el.closest(menuButtonSelector);\n\t\tif (menuButton) {\n\t\t\tevent.event_category = internalLinkCategory;\n\t\t\tevent.event_action = menuButton.textContent?.trim?.() || 'menubutton zonder tekst';\n\t\t\tevent.event_name = menuButton.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t}\n\n\t\tconst mijnLink = el.closest(mijnLinkSelector);\n\t\tif (mijnLink) {\n\t\t\tevent.event_category = externalLinkCategory;\n\t\t\tevent.event_action = mijnLink.textContent?.trim?.() || 'externallink zonder tekst';\n\t\t\tevent.event_name = mijnLink.href?.trim?.() || '';\n\t\t\taddEventToDatalayer(event);\n\t\t}\n\n\t}\n\tconst clickProcessing = processEvent(async (elmnt) => clickHandler(elmnt));\n\n\t_element.addEventListener('click', (clickEvent) => {\n\t\tif (clickEvent?.target) {\n\t\t\tconst hrefTarget = clickEvent.target?.closest('a[href]:not([download], [href^=\"mailto:\"], [href^=\"tel:\"], [href^=\"sms:\"]), area[href]');\n\t\t\tif (clickEvent?.defaultPrevented === false && hrefTarget?.hasAttribute('href') && !hrefTarget.getAttribute('href').startsWith?.('#') && clickEvent.target.href !== location.href) {\n\t\t\t\tclickHandler(hrefTarget);\n\t\t\t} else {\n\t\t\t\tconst activeMfa = clickEvent.target?.closest(mfaAppSelector);\n\t\t\t\tif (activeMfa) {\n\t\t\t\t\tlet sidepanelMfaClick = clickEvent.target?.closest('cz-mfaloader, [role=\"dialog\"]');\n\t\t\t\t\tlet choice = clickEvent.target?.closest('input[type=radio]');\n\t\t\t\t\tlet actionButton = clickEvent.target?.closest('button');\n\t\t\t\t\tlet choiceLabel = clickEvent.target?.closest('label[for]');\n\t\t\t\t\tif (choice) {\n\t\t\t\t\t\tchoiceLabel = choice.parentElement?.querySelector(`label[for=\"${choice.getAttribute('id')}\"]`);\n\t\t\t\t\t} else if (choiceLabel) {\n\t\t\t\t\t\tchoice = choiceLabel.parentElement?.querySelector(`input[type=radio][id=\"${choiceLabel.getAttribute('for')}\"]`);\n\t\t\t\t\t}\n\t\t\t\t\tif (choice && choiceLabel) {\n\t\t\t\t\t\tconst productType = choice.name?.includes('additional') ? 'AV' : choice.name?.includes('dental') ? 'TV' : choice.name?.includes('basic') ? 'BV' : '';\n\t\t\t\t\t\tconst insuranceProduct = choice?.closest('div[class^=InsuranceProductstyled__InsuranceProduct]');\n\t\t\t\t\t\tif (insuranceProduct) {\n\t\t\t\t\t\t\tconst event_category = `${actionButton ? buttonCategory : 'click'}`;\n\t\t\t\t\t\t\tconst event_action = `${actionButton ? (actionButton.textContent || actionButton.value)?.trim?.() || 'button zonder tekst' : insuranceProduct.closest('#kaart-1') ? 'stap 1 BV' : insuranceProduct.closest('#kaart-2') ? 'stap 2' : insuranceProduct.closest('#kaart-3') ? 'stap 3' : `meeverzekerde${productType ? ' ' + productType : ''}`}`;\n\t\t\t\t\t\t\tconst event_name = (insuranceProduct.closest('[class*=\"NoProduct\"]') ? choiceLabel.querySelector('[class*=\"MainContainer\"]')?.textContent?.trim?.() : choiceLabel.querySelector('h3, h4')?.textContent?.trim?.()) || event_action;\n\t\t\t\t\t\t\tconst event = {\n\t\t\t\t\t\t\t\tevent: 'event',\n\t\t\t\t\t\t\t\tevent_category,\n\t\t\t\t\t\t\t\tevent_action,\n\t\t\t\t\t\t\t\tevent_name\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst verzekerdeType = `${actionButton ? '' : activeMfa.hasAttribute('id') ? 'HV' : 'MV'}`;\n\t\t\t\t\t\t\tif (verzekerdeType) {\n\t\t\t\t\t\t\t\tputCusDimInDatalayer(15, verzekerdeType);\n\t\t\t\t\t\t\t\tevent.customDimensions = {\n\t\t\t\t\t\t\t\t\t'dimension15': verzekerdeType,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taddEventToDatalayer(event);\n\t\t\t\t\t\t} else if (choice.className?.startsWith('Deduct')) {\n\t\t\t\t\t\t\tconst event_category = 'click'\n\t\t\t\t\t\t\tconst event_action = activeMfa.hasAttribute('id') ? 'stap 1 ER' : 'meeverzekerde ER';\n\t\t\t\t\t\t\tconst event_name = choiceLabel.textContent?.trim?.() || event_action;\n\t\t\t\t\t\t\tconst event = {\n\t\t\t\t\t\t\t\tevent: 'event',\n\t\t\t\t\t\t\t\tevent_category,\n\t\t\t\t\t\t\t\tevent_action,\n\t\t\t\t\t\t\t\tevent_name\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tevent.customDimensions = {\n\t\t\t\t\t\t\t\t'dimension15': `${activeMfa.hasAttribute('id') ? 'HV' : 'MV'}`,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tputCusDimInDatalayer(15, `${activeMfa.hasAttribute('id') ? 'HV' : 'MV'}`);\n\t\t\t\t\t\t\taddEventToDatalayer(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (actionButton) {\n\t\t\t\t\t\tif (!sidepanelMfaClick) {\n\t\t\t\t\t\t\tconst mfaButton = actionButton.closest(mfaButtonSelector);\n\t\t\t\t\t\t\tconst label = mfaButton?.closest('label');\n\t\t\t\t\t\t\tconst card = mfaButton?.closest('[id^=\"kaart-\"]')\n\t\t\t\t\t\t\tif (mfaButton && card && !label) {\n\t\t\t\t\t\t\t\tconst event_category = buttonCategory;\n\t\t\t\t\t\t\t\tconst event_action = (mfaButton.textContent || mfaButton.value)?.trim?.() || 'button zonder tekst';\n\t\t\t\t\t\t\t\tconst event_name = `${card?.querySelector('h2')?.textContent?.trim?.() || card.id?.replace(/kaart-/i, 'stap ')}`;\n\t\t\t\t\t\t\t\tconst event = {\n\t\t\t\t\t\t\t\t\tevent: 'event',\n\t\t\t\t\t\t\t\t\tevent_category,\n\t\t\t\t\t\t\t\t\tevent_action,\n\t\t\t\t\t\t\t\t\tevent_name\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taddEventToDatalayer(event);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclickHandler(actionButton);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclickProcessing.push(clickEvent.target);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tconst store = getStorage('session');\n\tconst mainMfa = _element.querySelector('.mfa-app[id]');\n\n\tif (mainMfa) {\n\t\tconst brand = mainMfa.getAttribute('brand');\n\n\t\tconst processAnalysis = async (result) => {\n\t\t\tif (result.ok) {\n\t\t\t\ttry {\t\t\t\t\t\n\t\t\t\t\tconst body = await result.json();\n\n\t\t\t\t\tif (body?.Overeenkomst) {\n\t\t\t\t\t\tconst {TotaalPerMaand, InclusiefCollectiviteitsKorting, BasisVerzekering : basis, Collectiviteit : coll, Verzekerden} = body.Overeenkomst;\n\t\t\t\t\t\tlet basic = {\n\t\t\t\t\t\t\tsku: basis?.Code || 'BV',\n\t\t\t\t\t\t\tname: basis?.Name,\n\t\t\t\t\t\t\tcategory: \"Basisverzekering\",\n\t\t\t\t\t\t\tprice: basis?.Premie?.replace(',','.'),\n\t\t\t\t\t\t\tbrand: brand?.toUpperCase(),\n\t\t\t\t\t\t\tvariant: basis?.Type,\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst collectivity = {\n\t\t\t\t\t\t\tnumber: coll?.CollectiviteitsNummer?.Value,\n\t\t\t\t\t\t\tname: coll?.CollectiviteitsNaam,\n\t\t\t\t\t\t\tisDefault: coll?.IsDefaultCollectivity,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!collectivity.isDefault && collectivity.number) {\n\t\t\t\t\t\t\tputCusDimInDatalayer(26, collectivity.number);\n\t\t\t\t\t\t\taddDimensionToDatalayer('collectiviteit', collectivity.number);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst intermediary = {\n\t\t\t\t\t\t\tnumber: coll?.IntermediairNummer,\n\t\t\t\t\t\t\tname: coll?.IntermediairNaam,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tputCusDimInDatalayer(14, `${(!collectivity.isDefault && collectivity.number !== '000000019') ? collectivity.number === '004832558' ? 'ZZP' : intermediary.name ? 'collectief via intermediair' : 'collectief' : 'individueel'}`);\n\t\t\t\t\t\taddDimensionToDatalayer('kanaal', `${(!collectivity.isDefault && collectivity.number !== '000000019') ? collectivity.number === '004832558' ? 'ZZP' : intermediary.name ? 'collectief via intermediair' : 'collectief' : 'individueel'}`);\n\n\t\t\t\t\t\tconst verzekerden = Verzekerden?.Verzekeringsnemer && Verzekerden?.Medeverzekerden ? [Verzekerden.Verzekeringsnemer, ...Verzekerden.Medeverzekerden] : [];\n\t\t\t\t\t\tconst products = verzekerden?.reduce((sum, verzekerde, i) => {\n\t\t\t\t\t\t\tconst {AanvullendeVerzekering:av, TandartsVerzekering:tv, EigenRisico:er} = verzekerde;\n\t\t\t\t\t\t\tconst verzekerdeType = verzekerde?.Type === 'Hoofdverzekerde' ? 'HV' : `MV${i}`;\n\t\t\t\t\t\t\tputDimensionInDatalayer('type_verzekerde', verzekerdeType);\n\t\t\t\t\t\t\tbasic.variant = `ER ${er?.Bedrag}`;\n\t\t\t\t\t\t\tbasic.customDimensions = {\n\t\t\t\t\t\t\t\t'14': `${(!collectivity.isDefault && collectivity.number !== '000000019') ? collectivity.number === '004832558' ? 'ZZP' : intermediary.name ? 'collectief via intermediair' : 'collectief' : 'individueel'}`,\n\t\t\t\t\t\t\t\t'15': verzekerdeType,\n\t\t\t\t\t\t\t\t'3': collectivity.number,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsum.push(basic);\n\t\t\t\t\t\t\tif (av?.Code) {\n\t\t\t\t\t\t\t\tconst aanv = {\n\t\t\t\t\t\t\t\t\tsku: av?.Code || 'AV',\n\t\t\t\t\t\t\t\t\tname: av?.Name,\n\t\t\t\t\t\t\t\t\tcategory: \"Aanvullendeverzekering\",\n\t\t\t\t\t\t\t\t\tprice: av?.Premie?.replace(',','.'),\n\t\t\t\t\t\t\t\t\tbrand: brand?.toUpperCase(),\n\t\t\t\t\t\t\t\t\tvariant: `${av?.HasDentalInsurance ? 'Inclusief TV' : 'AV'}`,\n\t\t\t\t\t\t\t\t\tcustomDimensions: {\n\t\t\t\t\t\t\t\t\t\t'15': verzekerdeType,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsum.push(aanv);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (tv?.Code) {\n\t\t\t\t\t\t\t\tconst tand = {\n\t\t\t\t\t\t\t\t\tsku: tv?.Code || 'TV',\n\t\t\t\t\t\t\t\t\tname: tv?.Name,\n\t\t\t\t\t\t\t\t\tcategory: \"Tandartsverzekering\",\n\t\t\t\t\t\t\t\t\tprice: tv?.Premie?.replace(',','.'),\n\t\t\t\t\t\t\t\t\tbrand: brand?.toUpperCase(),\n\t\t\t\t\t\t\t\t\tvariant: 'TV',\n\t\t\t\t\t\t\t\t\tcustomDimensions: {\n\t\t\t\t\t\t\t\t\t\t'15': verzekerdeType,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsum.push(tand);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn sum;\n\t\t\t\t\t\t}, []);\n\n\t\t\t\t\t\tif (basic.name) {\n\t\t\t\t\t\t\tconst basket = {\n\t\t\t\t\t\t\t\tproducts,\n\t\t\t\t\t\t\t\ttotal: TotaalPerMaand?.replace(',','.'),\n\t\t\t\t\t\t\t\tdiscount: InclusiefCollectiviteitsKorting?.replace(',','.'),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstore.storeKeyValue(`shoppingCart`, basket);\n\t\t\t\t\t\t\twindow._paq?.push(['ecommerceCartUpdate', basket.products, basket.total]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (body?.Contactgegevens?.Email) {\n\t\t\t\t\t\tconst emailHash = await createHash(body.Contactgegevens.Email);\n\t\t\t\t\t\tputCusDimInDatalayer(2, emailHash);\n\t\t\t\t\t\taddDimensionToDatalayer('user_id', emailHash);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn(error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet fetchHandler = {\n\t\t\tapply: async function(target, thisArg, argumentsList) {\n\t\t\t\tconst url = argumentsList?.[0];\n\t\t\t\tconst { method } = argumentsList?.length > 1 ? argumentsList[1] : {};\n\t\t\t\tif (url?.toLowerCase()?.endsWith('getuserselections')) {\n\t\t\t\t\tlet prom = target.apply(thisArg, argumentsList);\n\n\t\t\t\t\tlet resp = await prom;\n\t\t\t\t\tlet result = resp.clone();\n\t\t\t\t\tsetTimeout(() => processAnalysis(result), 10);\n\t\t\t\t\treturn prom;\n\t\t\t\t} else {\n\t\t\t\t\tif (url?.toLowerCase()?.endsWith('aanmelden') && method?.toLowerCase() === 'post') {\n\t\t\t\t\t\tstore.storeKeyValue('confirmation', 'aanmelden');\n\t\t\t\t\t}\n\t\t\t\t\treturn target.apply(thisArg, argumentsList);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\twindow.fetch = new Proxy(fetch, fetchHandler);\n\t}\n\n\tif (location.href?.endsWith('aanmelden/bedankt') || location.href?.endsWith('apply/thanks')) {\n\t\tconst confirmation = store.getStoredValue('confirmation') === 'aanmelden';\n\t\tconst basket = store.getStoredValue('shoppingCart');\n\t\tif (confirmation && basket?.products?.length) {\n\t\t\tconst extended = `${Math.floor((Math.random() * 1000))}`.padStart(3, '0');\n\t\t\tconst orderId = `${Date.now()}${extended}`;\n\t\t\tputCusDimInDatalayer(18, orderId);\n\t\t\taddDimensionToDatalayer('order_id', orderId);\n\t\t\tsetTimeout(async () => {\n\t\t\t\tlet i = 10;\n\t\t\t\twhile (typeof window?._paq?.push !== 'function' && i > 0) {\n\t\t\t\t\tawait wait(100);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\twindow._paq?.push(['ecommerceOrder',\n\t\t\t\t\tbasket.products,\n\t\t\t\t\t{\n\t\t\t\t\t\torderId,\n\t\t\t\t\t\tgrandTotal: basket.total,\n\t\t\t\t\t\tdiscount: basket.discount\n\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tstore.removeStoredValue('shoppingCart');\n\t\t\t\tstore.removeStoredValue('confirmation');\n\t\t\t}, 10);\n\t\t}\n\t}\n\n\tprocessStoredPiwikdimensions();\n}\n\nexport default Datalayer;","const labels = ['cz', 'czdirect', 'just', 'pzp' , 'zorgkantoor'];\n\nexport function findLabel() {\n\treturn labels.find((label) => document && document.documentElement && document.documentElement.classList && document.documentElement.classList.contains(label)) || 'cz';\n}\n\nexport function filterInt(value) {\n\tif (/^[-+]?(\\d+|Infinity)$/.test(value)) {\n\t\treturn Number(value);\n\t} else {\n\t\treturn 0; // return 0 instead of NaN so it can be used as falsy\n\t}\n}\n\nexport function isUrlExternal(url) {\n\tconst host = window?.location?.hostname;\n\n\tif (!host) return false;\n\n\tlet linkHost = window?.location?.hostname;\n\n\tif (/^https?:\\/\\//.test(url)) { // Absolute URL.\n\t\t// The easy way to parse an URL, is to create element.\n\t\tlet parser = document.createElement('a');\n\t\tparser.href = url;\n\n\t\tlinkHost = parser.hostname;\n\t}\n\n\treturn host !== linkHost;\n}\n","import { registerTrigger, triggerNamedNotify, subscribeNotify } from '../../@helpers/js/observer.js';\nimport { filterInt } from '../../@helpers/js/helpers.js';\nimport { wait } from '../../@helpers/js/wait.js';\nimport { processQueue } from '../../@helpers/js/queue-processing.js';\n\n\nclass PopupOverlay {\n constructor(el, { overlayIsVisibleClass }) {\n //options\n this.o = {\n overlayIsVisibleClass,\n };\n\n // selectors\n this.s = {\n content: '[data-popup-overlay-content]',\n source: (value) => `[data-popup-overlay-source${value ? `=\"${value}\"`:''}]`,\n trigger: (value) => `[data-popup-overlay-trigger${value ? `=\"${value}\"`:''}]`,\n inputContainer: '[data-input]',\n dialogtrigger: (value) => `[data-popup-dialog-trigger${value ? `=\"${value}\"`:''}]`,\n dialoginnertrigger: (value) => `[data-popup-dialog-trigger${value ? `=\"${value}\"`:''}] *`,\n nosourcetrigger: (value) => `[data-popup-overlay-trigger${value ? `=\"${value}\"`:''}]:not([data-popup-overlay-nosource])`,\n close: '[data-popup-overlay-close],[data-popup-dialog-close]',\n closeText: '[data-popup-overlay-close-text]',\n okText: '[data-popup-overlay-ok-text]',\n ok: '[data-popup-dialog-ok]',\n };\n\n // elements\n this.$e = {\n root: el,\n body: document.documentElement,\n page: document.querySelector('.o-just-page') || document.querySelector('.o-page'),\n content: el.querySelector(this.s.content),\n sources: document.querySelectorAll(this.s.source()),\n closers: el.querySelectorAll(this.s.close),\n closeText: el.querySelectorAll(this.s.closeText),\n okText: el.querySelectorAll(this.s.okText),\n ok: el.querySelector(this.s.ok)\n };\n\n this.c = {\n FOCUSABLE_ELEMENTS: [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])'\n ],\n TAB_KEY: 9,\n ESCAPE_KEY: 27\n };\n\n this.evHandlers = {\n keepFocus: (e) => this.keepFocus(e),\n keyPress: (e) => this.onKeypress(e),\n backbuttonPress: (e) => this.onBackbutton(e),\n closeClickPress: (e) => this.handleCloseClick(e)\n }\n\n // init\n this.init();\n }\n\n init() {\n // Hide all overlay content\n this.$e.root.setAttribute('inert', true);\n this.$e.root.classList.add('t-hidden');\n this.$e.sources.forEach($source => {\n $source.classList.add('t-hidden');\n });\n\n registerTrigger('PopupOverlay_closeOverlay');\n registerTrigger('PopupDialog_okOverlay');\n this.popupQueue = processQueue(({target, within = false}) => this.handleTriggerClick(target, within),1000);\n\n const addToProcessQueue = ({target, within}) => {\n if (!target || !(target.matches(this.s.trigger()) || target.matches(this.s.dialogtrigger()) || target.matches(this.s.dialoginnertrigger())) || target.disabled) {\n return;\n }\n let $trigger = target;\n if ($trigger.matches(this.s.dialoginnertrigger())) {\n $trigger = target.closest(this.s.dialogtrigger());\n }\n const sourceId = $trigger?.dataset?.popupOverlayTrigger || $trigger?.dataset?.popupDialogTrigger;\n if (sourceId && !this.$e.root.querySelector(this.s.source(sourceId))) { // if not already showing\n this.popupQueue.push({target, within});\n }\n }\n\n document.body.addEventListener('click', (e) => {\n if (!e.target || e.target.matches(this.s.inputContainer)) {\n return;\n }\n addToProcessQueue(e);\n });\n\n subscribeNotify('showPopup_triggered', ({ trigger, within }) => {\n if (trigger && (trigger.matches(this.s.inputContainer) || trigger.matches(this.s.trigger()))) {\n addToProcessQueue({target: trigger, within});\n return true;\n }\n });\n\n this.$e.closers.forEach((close) => close.addEventListener('click', this.evHandlers.closeClickPress));\n this.$e.root.addEventListener('click', (e) => this.handleClickOutside(e));\n if (this.$e.ok) {\n this.$e.ok.addEventListener('click', (e) => {\n const $closeTrigger = this.$e.closers[0];\n const originId = $closeTrigger.dataset.popupOverlayTriggerSource;\n this.handleCloseClick(e);\n triggerNamedNotify('PopupDialog_okOverlay', {\n name: originId\n });\n })\n }\n }\n\n getFocusableChildren() {\n return [...this.$e.root.querySelectorAll(this.c.FOCUSABLE_ELEMENTS.join(','))].filter((child) => !!(\n child.offsetWidth ||\n child.offsetHeight ||\n child.getClientRects().length\n ));\n }\n\n setFocusToFirstItem() {\n const focusableChildren = this.getFocusableChildren();\n const focused = this.$e.root.querySelector('[autofocus]') || focusableChildren[0];\n\n if (focused) {\n focused.focus();\n }\n return !!focused;\n }\n\n handleTriggerClick(target, within = false) {\n let $trigger = target;\n if (!$trigger || !($trigger.matches(this.s.trigger()) || $trigger.matches(this.s.dialogtrigger()) || $trigger.matches(this.s.dialoginnertrigger())) || $trigger.disabled) {\n return;\n }\n const $closeTrigger = this.$e.closers[0];\n const oldId = $closeTrigger.dataset.popupOverlayTriggerSource;\n\n if (this.$e.root.classList.contains('c-popup-dialog')){\n this.clearOverlay(oldId);\n }\n \n if ($trigger.matches(this.s.dialoginnertrigger())) {\n $trigger = target.closest(this.s.dialogtrigger());\n }\n if ($trigger.matches(this.s.dialogtrigger()) || $trigger.matches(this.s.dialoginnertrigger())) {\n this.clearOverlay(oldId);\n this.$e.root.classList.add('c-popup-dialog');\n }\n\n const sourceId = $trigger.dataset.popupOverlayTrigger || $trigger.dataset.popupDialogTrigger;\n\n let $source = [...this.$e.sources].filter($source => {\n if ($source.dataset.popupOverlaySource === sourceId) {\n return $source;\n }\n })[0];\n\n if (!$source && within) {\n $source = $trigger.querySelector(this.s.source(sourceId))\n }\n\n if (!$source) {\n $source = document.body.querySelector(this.s.source(sourceId))\n }\n\n if ($source) {\n const closeText = $source.dataset.closeText;\n const okText = $source.dataset.okText;\n const autoHidePopup = $source.matches('[data-autohide-popup]') && $source.dataset.autohidePopup.trim() && $source.dataset.autohidePopup.trim().toLowerCase() !== 'false';\n const hideDelay = autoHidePopup ? filterInt($source.dataset.autohidePopup.trim()) || 7000 : 7000;\n if (closeText && this.$e.closeText && this.$e.closeText.length > 0) {\n this.$e.closeText.forEach(ct => ct.innerHTML = closeText);\n }\n if (okText && this.$e.okText && this.$e.okText.length > 0) {\n this.$e.okText.forEach(ot => ot.innerHTML = okText);\n }\n this.$e.closers[0].setAttribute('data-popup-overlay-trigger-source', sourceId);\n if (within) {\n this.$e.closers[0].setAttribute('data-popup-within', within);\n }\n const closeMe = $source.querySelector(this.s.close);\n if (closeMe) {\n closeMe.setAttribute('data-popup-overlay-trigger-source', sourceId);\n closeMe.addEventListener('click', this.evHandlers.closeClickPress);\n this.$e.closers[this.$e.closers.length - 1].classList.add('t-hidden');\n }\n\n this.$e.content.insertAdjacentElement('afterbegin', $source);\n \n $source.classList.remove('t-hidden');\n this.showOverlay(autoHidePopup);\n if (autoHidePopup === true) {\n setTimeout(() => {\n this.handleCloseClick({autoHide: true, target: closeMe});\n }, hideDelay);\n }\n }\n }\n\n handleClickOutside(e) {\n if (e.target === e.currentTarget) {\n this.handleCloseClick(e);\n }\n }\n\n handleCloseClick(e) {\n const $closeTrigger = (e && e.target && e.target.dataset?.popupOverlayTriggerSource) ? e.target : this.$e.closers[0];\n const originId = $closeTrigger.dataset.popupOverlayTriggerSource;\n\n this.clearOverlay(originId);\n if (!this.$e.content.querySelector('[data-popup-overlay-source]')) {\n this.$e.closers[this.$e.closers.length - 1].classList.remove('t-hidden');\n this.hideOverlay().then(() => {\n this.$e.root.classList.remove('c-popup-dialog');\n this.$e.root.removeAttribute('data-popup-state');\n const $triggerSource = document.body.querySelector(this.s.nosourcetrigger(originId)) || document.body.querySelector(this.s.dialogtrigger(originId));\n triggerNamedNotify('PopupOverlay_closeOverlay', {\n name: originId\n });\n triggerNamedNotify('PopupDialog_closeOverlay', {\n name: originId\n });\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n if ($triggerSource) {\n if (!e || !e.autoHide){\n $triggerSource.focus();\n }\n }\n });\n }\n }\n\n clearOverlay(originId) {\n if (!originId) {\n return;\n }\n let $triggerSource = document.body.querySelector(this.s.nosourcetrigger(originId)) || document.body.querySelector(this.s.dialogtrigger(originId));\n let $source = [...this.$e.sources].filter($source => {\n if ($source.dataset.popupOverlaySource === originId) {\n return $source;\n }\n })[0];\n if (!$source) {\n $source = document.body.querySelector(this.s.source(originId));\n }\n if ($source) {\n const within = this.$e.closers[0].getAttribute('data-popup-within');\n this.$e.closers[0].removeAttribute('data-popup-within');\n this.$e.closers[0].removeAttribute('data-popup-overlay-trigger-source');\n $source.classList.add('t-hidden');\n const closeMe = $source.querySelector(this.s.close);\n if (closeMe) {\n closeMe.removeAttribute('data-popup-overlay-trigger-source');\n closeMe.removeEventListener('click', this.evHandlers.closeClickPress);\n }\n if ($triggerSource) {\n if ($triggerSource.matches(`input[type=\"radio\"]`)) {\n $triggerSource = $triggerSource.nextElementSibling;\n }\n $triggerSource.insertAdjacentElement(within ? 'beforeend' : 'afterend', $source);\n } else {\n document.body.insertAdjacentElement('beforeend', $source);\n }\n }\n }\n\n isOpen() {\n return this.$e.root.classList.contains(this.o.overlayIsVisibleClass);\n }\n\n async showOverlay(autoHide) {\n this.$e.root.removeAttribute('inert');\n this.$e.root.classList.remove('t-hidden');\n await wait(0);\n this.$e.root.classList.add(this.o.overlayIsVisibleClass);\n \n if (!autoHide) {\n this.$e.page.setAttribute('inert', true);\n // Set the focus to the first focusable child of the dialog element\n if (this.setFocusToFirstItem()) {\n document.body.addEventListener('focus', this.evHandlers.keepFocus, true);\n }\n document.addEventListener('keydown', this.evHandlers.keyPress);\n if (window.history.state === 'showOverlay') {\n window.removeEventListener('popstate', this.evHandlers.backbuttonPress);\n } else {\n if (window.history.state === 'backPressed') {\n window.removeEventListener('popstate', this.evHandlers.backbuttonPress);\n } else {\n this._oldState = window.history.state;\n window.history.replaceState('backPressed', null, null);\n }\n window.history.pushState('showOverlay', null, null);\n }\n window.addEventListener('popstate', this.evHandlers.backbuttonPress);\n }\n }\n\n onBackbutton(event) {\n if (event && event.state == 'backPressed' && this.isOpen()) {\n this.handleCloseClick(event);\n }\n }\n\n onKeypress(event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog, unless its role\n // is 'alertdialog', which should be modal\n if (event.which === this.c.ESCAPE_KEY && (!event.target.matches('input[type=\"search\"]') || !event.target.value)) { \n let topNotification = this.$e.content.querySelector('[data-popup-overlay-trigger-source]');\n if (topNotification) {\n this.handleCloseClick({target: topNotification});\n } else {\n this.handleCloseClick(event);\n }\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (event.which === this.c.TAB_KEY) {\n this.trapTabKey(event);\n }\n }\n\n trapTabKey(event) {\n const focusableChildren = this.getFocusableChildren();\n const focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n if (focusableChildren && focusableChildren.length > 0) {\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (\n !event.shiftKey &&\n focusedItemIndex === focusableChildren.length - 1\n ) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n }\n\n keepFocus(event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (!this.$e.root.contains(event.target)) {\n this.setFocusToFirstItem();\n }\n }\n\n async hideOverlay() {\n this.$e.page.removeAttribute('inert');\n this.$e.root.classList.remove(this.o.overlayIsVisibleClass);\n await wait(400);\n this.$e.root.setAttribute('inert', true);\n this.$e.root.classList.add('t-hidden');\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n document.body.removeEventListener('focus', this.evHandlers.keepFocus, true);\n document.removeEventListener('keydown', this.evHandlers.keyPress);\n window.removeEventListener('popstate', this.evHandlers.backbuttonPress);\n if (window.history.state === 'backPressed' && !!this._oldState && this._oldState !== 'backPressed') {\n window.history.replaceState(this._oldState, null, null);\n }\n }\n}\n\nexport default PopupOverlay;","function Revealer(element) {\n\n if (!element) {\n return;\n }\n\n const _element = element;\n const _isOpen = _element.dataset?.open === 'true' || false;\n\n const _title = _element.querySelector('[data-revealer-title]');\n const _content = _element.querySelector('[data-revealer-content]');\n \n if (!_title || !_content) {\n return;\n }\n\n const contentId = _content.id;\n const titleContent = _title.innerHTML;\n const startsOpen = !!_isOpen;\n _content.inert = !startsOpen;\n\n if (_title.tagName !== 'BUTTON') {\n _title.innerHTML = `\n `;\n }\n\n const titleButton = _title.querySelector('button') ?? _title;\n\n titleButton?.addEventListener('click', () => {\n // Cast the state as a boolean\n let expanded = titleButton.getAttribute('aria-expanded') === 'true' || false;\n\n // Switch the state\n titleButton.setAttribute('aria-expanded', !expanded);\n _element.dataset.open = !expanded;\n // Switch the content's visibility\n _content.inert = expanded; \n }, false);\n}\n\nexport default Revealer;\n","import { throttle } from '../../@helpers/js/queue-processing.js';\nimport { addEventToDatalayer } from '../../@helpers/js/datalayer.js';\n\nexport default function ScrollToTop(element, {\n\t\tscrollToTopTargetId = 'content'\n\t} = {}) {\n\tif (!element) return;\n\n\tconst _options = {\n\t\tscrollToTopTargetId\n\t};\n\tconst _s = {\n\t\ttrigger: `data-scroll-to-target-trigger`,\n\t\ttriggerContainer: `data-scroll-to-target-container`\n\t};\n\tconst href = element.getAttribute('href');\n\tconst target = !href.startsWith('#') ? href : `#${_options.scrollToTopTargetId}`;\n\tconst _topTarget = document.querySelector(target) ?? document.getElementsByTagName('body')[0];\n\n\tlet _topTrigger = document.querySelector(`body > [${_s.trigger}]`);\n\tlet _trigger = _topTrigger;\n\tif (!_trigger) {\n\t\tconst _triggers = document.documentElement.querySelectorAll(`[${_s.trigger}]`);\n\t\t_trigger = _triggers?.[0];\n\t}\n\n\tif (_trigger !== element) {\n\t\tconst triggerContainer = element?.closest(`[${_s.triggerContainer}`);\n\t\tif (triggerContainer) {\n\t\t\ttriggerContainer.parentNode.removeChild(triggerContainer)\n\t\t} else {\n\t\t\telement?.parentNode.removeChild(element);\n\t\t}\n\t\treturn;\n\t}\n\n\tlet _triggerContainer = _trigger?.closest(`[${_s.triggerContainer}`);\n\tif (!_triggerContainer) {\n\t\t_triggerContainer = document.createElement(\"nav\");\n\t\t_triggerContainer.className = 'scroll-to-top__container';\n\t\t_triggerContainer.setAttribute(`${_s.triggerContainer}`,'');\n\t\t_triggerContainer.setAttribute('inert', true);\n\t\t\n\t\t_triggerContainer.appendChild(_trigger);\n\t\tdocument.body.appendChild(_triggerContainer);\n\t}\n\t\n\t// Add event listeners for the click on the button and for the window scroll\n\t_trigger?.addEventListener('click', (e) => {\n\t\tconst datalayerEvent = {\n\t\t\tevent: \"event\",\n\t\t\tevent_category: \"button click\",\n\t\t\tevent_action: \"Scroll to top\",\n\t\t\tevent_name: ''\n\t\t}\n\t\taddEventToDatalayer(datalayerEvent);\n\t\t_topTarget.scrollIntoView();\n\t\te?.preventDefault();\n\t\treturn false;\n\t});\n\n\twindow.addEventListener('scroll', throttle((event) => {\n\t\tconst clientHeight = (document.documentElement || document.body).clientHeight * 3;\n\n\t\tconst scrollPosition = (window.scrollY !== undefined) ? window.scrollY : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n\t\t// Check if the user scrolled more than the height of the viewport times 4\n\t\tif (scrollPosition > clientHeight) {\n\t\t\t// The user scrolled more than the height of the viewport, we will make the\n\t\t\t// scroll to top button available\n\t\t\t_trigger?.classList.remove('not-available');\n\t\t\t_triggerContainer?.removeAttribute('inert');\n\t\t} else {\n\t\t\t// The scroll position of the document is less than the height of the\n\t\t\t// viewport, we will hide the scroll to top button\n\t\t\t_trigger?.classList.add('not-available');\n\t\t\t_triggerContainer?.setAttribute('inert', true);\n\t\t}\n\t}));\n};\n","\nfunction Services(element, options = {}) {\n if (!element) {\n return;\n }\n\n const triggers = [...element.querySelectorAll('[data-service-trigger]')];\n const panels = [...element.querySelectorAll('[data-service-panel]')];\n\n if (triggers?.length) {\n triggers.forEach(trigger => {\n\n const panel = panels.find(panel => panel.getAttribute(\"aria-labelledby\") === trigger.id);\n if (!panel) {\n return;\n }\n\n const levelTriggers = [...panel.querySelectorAll('[data-lvl-trigger]')];\n\n const rawslug = trigger.getAttribute('data-slug');\n const slug = rawslug?.trim() ? `${rawslug.trim().toLowerCase()}` : '';\n\n trigger.addEventListener('click', () => {\n let currentState = history.state;\n let expanded = trigger.getAttribute('aria-expanded') === 'true' || false;\n\n if (!expanded) {\n triggers.forEach((but) => but.setAttribute('aria-expanded', expanded));\n panels.forEach((panel) => panel.hidden = true);\n history.replaceState(currentState, null, slug ? `#${slug}` : ' ');\n if (levelTriggers?.length) {\n levelTriggers.forEach((but) => {\n but.setAttribute('aria-expanded', expanded);\n if (but.nextElementSibling) {\n but.nextElementSibling.hidden = true;\n }\n });\n }\n } else {\n history.replaceState(currentState, null, ' ');\n }\n\n trigger.setAttribute('aria-expanded', !expanded);\n trigger.panel = panel;\n panel.hidden = expanded;\n });\n \n if (levelTriggers?.length) {\n levelTriggers.forEach(levelTrigger => {\n const rawdeepSlug = levelTrigger.getAttribute('data-slug');\n const deepSlug = rawdeepSlug?.trim() ? `/${rawdeepSlug.trim().toLowerCase()}` : '';\n\n levelTrigger.addEventListener('click', () => {\n let currentState = history.state;\n let expanded = levelTrigger.getAttribute('aria-expanded') === 'true' || false;\n \n if (!expanded) {\n levelTriggers.forEach((but) => {\n but.setAttribute('aria-expanded', expanded);\n if (but.nextElementSibling) {\n but.nextElementSibling.hidden = true;\n }\n });\n\n history.replaceState(currentState, null, slug ? `#${slug}${deepSlug}` : ' ');\n } else {\n history.replaceState(currentState, null, ' ');\n }\n \n levelTrigger.setAttribute('aria-expanded', !expanded);\n if (levelTrigger.nextElementSibling) {\n levelTrigger.nextElementSibling.hidden = expanded;\n }\n });\n });\n panel.levelTriggers = levelTriggers;\n }\n });\n }\n\n function getHashFromString(str) {\n if (!str || typeof str !== 'string') {\n return '';\n }\n return str.substring(str.indexOf('#') + 1);\n }\n\n const hashOnLoad = getHashFromString(decodeURI(location.hash)).toLowerCase();\n if (hashOnLoad) {\n const slugs = hashOnLoad.split('/');\n\n if (slugs?.length) {\n const startTrigger = triggers.find(t => t?.dataset?.slug?.toLowerCase() === slugs[0]);\n if (startTrigger) {\n startTrigger.dispatchEvent(new Event('click'));\n \n if (slugs?.[1] && startTrigger.panel.levelTriggers?.length) {\n const levelTrigger = startTrigger.panel.levelTriggers.find(t => t?.dataset?.slug?.toLowerCase() === slugs[1]);\n if (levelTrigger) {\n levelTrigger.dispatchEvent(new Event('click'));\n }\n }\n }\n }\n }\n}\nexport default Services;","import { registerTrigger, triggerNamedNotify } from '../../@helpers/js/observer.js';\nimport { CzSidepanel } from '@cz/webcomponents'; \n\nfunction SideOverlay(el, { name = 'zijpaneel' }) {\n const _element = el;\n\n if (!_element || _element.tagName?.toLowerCase() !== 'cz-sidepanel' || !CzSidepanel.finalized) {\n return;\n }\n \n registerTrigger('sideOverlay_overlayClosing');\n registerTrigger('sideOverlay_overlayOpening');\n\n const config = {\n attributeFilter: ['open'],\n };\n \n const callback = async (mutationList) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"attributes\" && mutation.attributeName === 'open') {\n if (_element?.hasAttribute('open')) {\n return triggerNamedNotify('sideOverlay_overlayOpening', { name });\n } else {\n return triggerNamedNotify('sideOverlay_overlayClosing', { name });\n }\n }\n }\n };\n \n const observer = new MutationObserver(callback);\n observer.observe(_element, config);\n\n if (_element?.hasAttribute('open')) {\n triggerNamedNotify('sideOverlay_overlayOpening', { name });\n }\n}\n\nexport default SideOverlay;","/**\n * Whats That™\n *\n */\nfunction WhatsThat(element) {\n if (!element) {\n return;\n }\n\n const _element = element;\n\n const toggle = _element.querySelector('[data-explanation-toggle]');\n const text = _element.querySelector('[data-explanation-text]');\n\n toggle?.addEventListener('click', () => {\n // Cast the state as a boolean\n let expanded = toggle.getAttribute('aria-expanded') === 'true' || false;\n\n // Switch the state\n toggle.setAttribute('aria-expanded', !expanded);\n // Switch the content's visibility\n text.inert = expanded;\n }, false);\n}\n\nexport default WhatsThat;\n","export default function (element, options = {}) {\n if (!element) {\n return;\n }\n element.classList.add('c-amount');\n const { addEuroSign = false, keepFlat = false } = options;\n if (keepFlat) {\n element.classList.add('c-amount--flat');\n }\n let amountText = element.innerHTML;\n if (amountText && amountText.indexOf('') === -1) {\n let hasNoEuroSign = amountText.indexOf('€') === -1;\n if (hasNoEuroSign && addEuroSign) {\n amountText = amountText.replace(/(\\d*)/,'€ $1');\n }\n element.innerHTML = amountText.replace(/(\\d*),(\\d*)/, `$1,$2`);\n }\n}\n","export default function AlertBar(element) {\n if (!element) {\n return;\n }\n else {\n const closeButton = element.querySelector(\".c-alert-bar__button\");\n\n if (element.open) {\n closeButton?.addEventListener(\"click\", () => {\n element.close?.();\n });\n }\n }\n}\n","import { addEventToDatalayer } from \"../../@helpers/js/datalayer.js\";\nimport { findSelection } from \"../../@helpers/js/radiogroup-helper.js\";\n\nfunction ClustergridFilter(element) {\n\tif (!element) {\n\t\treturn;\n\t}\n\n\tconst filterGroup = element.querySelector('[data-clustergrid-filter]');\n\tconst clustergridItems = [...element.querySelectorAll('[data-clustergrid-item]')];\n\n\tif (filterGroup && clustergridItems) {\n\t\tconst filters = [...filterGroup.querySelectorAll('input')];\n\t\tconst useFilter = () => {\n\t\t\tlet filter = findSelection(filters);\n\t\t\tif (filter) {\n\t\t\t\tclustergridItems.forEach(cgi => {\n\t\t\t\t\tif (cgi.dataset?.filter?.indexOf(filter.value) === -1) {\n\t\t\t\t\t\tcgi.hidden = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcgi.hidden = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tif (filter.hasAttribute('data-slug')) {\n\t\t\t\t\tlet currentState = history.state;\n\t\t\t\t\tlet slug = filter.dataset.slug;\n\t\t\t\t\tif (slug) {\n\t\t\t\t\t\thistory.replaceState(currentState, null, `#${slug.toLowerCase()}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thistory.replaceState(currentState, null, ' ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\taddEventToDatalayer({\n\t\t\t\t\tevent: 'event',\n\t\t\t\t\tcategory: 'button click',\n\t\t\t\t\taction: filter.innerText?.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, \"\")?.replace(/ +(?= )/g, '')?.trim() || '',\n\t\t\t\t\tlabel: location.href\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tfilterGroup.addEventListener('change', () => {\n\t\t\tuseFilter();\n\t\t})\n\t\t\n\t\tfunction getHashFromString(str) {\n\t\t\tif (!str || typeof str !== 'string') {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn str.substring(str.indexOf('#') + 1);\n\t\t}\n\t\t\n\t\tconst hashOnLoad = getHashFromString(decodeURI(location.hash)).toLowerCase();\n\t\tif (hashOnLoad) {\n\t\t\tconst startfilter = filters.find(f => f?.dataset?.slug?.toLowerCase() === hashOnLoad);\n\t\t\tif (startfilter) {\n\t\t\t\tstartfilter.checked = true;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t\n\t\tuseFilter();\n\t}\n}\nexport default ClustergridFilter;","/**\n * findSelection\n * finds the checked radiobutton in a radiogroup.\n *\n * @param {array of input[type=radio]} inputs\n * @returns {input[type=radio]} the checked radiobutton\n */\nexport function findSelection(inputs) {\n\tif (!inputs) {\n\t\treturn;\n\t}\n\treturn inputs.find((input) => input.checked);\n};","import { registerTrigger, triggerNotify, subscribeUniqueNamedNotify, triggerUniqueNamedNotify } from \"../../@helpers/js/observer.js\";\nimport { processEvent } from \"../../@helpers/js/queue-processing.js\";\n\nclass CollectiveChoice {\n\tconstructor(element) {\n\t\tthis._element = element;\n\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis._choiceContainer = this._element.querySelector('[data-collective-choice]');\n\t\tthis._blockedMessage = this._element.querySelector('[data-collective-blocked]');\n\t\tif (this._choiceContainer) {\n\t\t\tthis._collectiveWrapper = this._element.querySelector('[data-collective-wrapper]');\n\t\t\tthis._inputs = [...this._choiceContainer.querySelectorAll('input[type=radio]')];\n\t\t\tif (this._inputs && this._inputs.length > 0 && this._collectiveWrapper) {\n\n\t\t\t\tconst whileChoosingAid = this._element.closest('[data-module=\"ChoosingAid\"]');\n\t\t\t\tconst changeProcessor = processEvent(async (input) => {\n\t\t\t\t\tif (input.checked) {\n\t\t\t\t\t\tconst yepnope = input.value;\n\t\t\t\t\t\tif (whileChoosingAid) {\n\t\t\t\t\t\t\tawait triggerUniqueNamedNotify(`choosingaid_collectivechoice_${yepnope}_selected`, {name: 'pakketkiezer'});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait triggerNotify(`collectivechoice_${yepnope}_selected`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (yepnope == 'no') {\n\t\t\t\t\t\t\tthis._collectiveWrapper.classList.add('t-hidden');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._collectiveWrapper.classList.remove('t-hidden');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._inputs.forEach(input => {\n\t\t\t\t\tif (whileChoosingAid) {\n\t\t\t\t\t\tregisterTrigger(`choosingaid_collectivechoice_${input.value}_selected`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tregisterTrigger(`collectivechoice_${input.value}_selected`);\n\t\t\t\t\t}\n\t\t\t\t\tinput.addEventListener('change', async () => {\n\t\t\t\t\t\tchangeProcessor.push(input);\n\t\t\t\t\t\tif (this._blockedMessage) {\n\t\t\t\t\t\t\tthis._blockedMessage.classList.add('t-hidden');\n\t\t\t\t\t\t\tthis._blockedMessage = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tsubscribeUniqueNamedNotify('shoppingcart_checkcollectivity_blocked', {\n\t\t\t\tfn: () => {\n\t\t\t\t\tif (!!this._blockedMessage) {\n\t\t\t\t\t\tthis._element.scrollIntoView();\n\t\t\t\t\t}\n\t\t\t\t\treturn !!this._blockedMessage;\n\t\t\t\t}, name: 'collectivity_blocked'\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport default CollectiveChoice;","import { addDimensionToDatalayer, putCusDimInDatalayer } from \"../../@helpers/js/datalayer.js\";\nimport { triggerNotify, subscribeNotify, subscribeNamedNotify, registerTrigger, resetTriggers, subscribeUniqueNamedNotify, unsubscribeNamedNotify, unsubscribeNotify, unsubscribeUniqueNamedNotify } from \"../../@helpers/js/observer.js\";\n\nclass CollectiveSearch {\n constructor(element, {\n searchUrl,\n saveUrl,\n defaultColl,\n changeLocation = false,\n backendError = \"Helaas geeft de server een foutmelding probeer het later nog eens.\",\n intermediairKey,\n } = {}) {\n this._element = element;\n this._options = {\n searchUrl,\n saveUrl,\n changeLocation,\n defaultColl,\n backendError,\n intermediairKey,\n };\n this._collData = null;\n this.init();\n }\n\n init() {\n this._pres = this._element.querySelector(\"[data-collective-presentation]\");\n this._collSearch = this._element.querySelector(\"[data-collective-search]\");\n registerTrigger(\"collectivity_result\");\n registerTrigger(\"collectivity_removed\");\n registerTrigger(\"changeInsurance_reinit\");\n registerTrigger(\"shoppingcart_recalculate\");\n if (this._collSearch) {\n this._overlayTrigger = this._element.closest(\"[data-overlay-source]\")?.dataset.overlaySource;\n this._name = this._pres?.querySelector(\"[data-collective-name]\") ?? {};\n this._number = this._pres?.querySelector(\"[data-collective-number]\") ?? {};\n this._intermediairInfo = this._pres?.querySelector(\"[data-intermediair-info]\") ?? {};\n this._intermediair = this._pres?.querySelector(\"[data-intermediair-name]\") ?? {};\n this._logo = this._pres?.querySelector(\"[data-collective-logo]\") ?? {};\n this._shortinfo = this._pres?.querySelector(\"[data-collective-shortinfo]\") ?? {};\n this._main = this._pres?.querySelector(\"[data-percent-main]\") ?? {};\n this._main_wrapper = this._pres?.querySelector(\"[data-discount-main]\") ?? {};\n this._additional = this._pres?.querySelector(\"[data-percent-additional]\") ?? {};\n this._additional_wrapper = this._pres?.querySelector(\"[data-discount-additional]\") ?? {};\n this._dental = this._pres?.querySelector(\"[data-percent-dental]\") ?? {};\n this._dental_wrapper = this._pres?.querySelector(\"[data-discount-dental]\") ?? {};\n this._description = this._element.querySelector(\"[data-description]\");\n this._error = this._element.querySelector(\"[data-error]\");\n this._saveBtn = this._element.querySelector( \"button[data-save-collectivity]\" );\n this._collectiveIntermediair = this._element.querySelector( \"[data-collective-intermediair]\" );\n this._municipalityNotification = this._element.querySelector( \"[data-municipality-notification]\" );\n this._municipalityNotificationText = this._element.querySelector( \"[data-municipality-notification-text]\" );\n if (this._collectiveIntermediair) {\n this._hasCollectiveIntermediary = true;\n this._collectiveIntermediairSelect = this._element.querySelector( \"[data-collective-intermediair-select]\" );\n this._collectiveIntermediairSelectError = this._element.querySelector( \"[data-collective-intermediair] [data-error]\" );\n }\n this._fitzmeLabel = this._element.querySelector(\"[data-fitzme-label]\");\n\n const clearErrors = () => {\n if (this._collSearch.classList.contains(\"-has-error\")) {\n this._collSearch.classList.remove(\"-has-error\");\n return true;\n }\n return false;\n };\n\n this._searchBtn = this._element.querySelector( \"button[data-submit-search]\" );\n this._searchInput = this._element.querySelector( \"input[data-search-field]\" );\n\n const collectiveRemove = async () => {\n this._description?.classList?.remove(\"t-hidden\");\n this._pres?.classList?.add(\"t-hidden\");\n clearErrors();\n this._collSearch.classList.remove(\"parsley-success\");\n if (this._searchInput) {\n this._searchInput.value = \"\";\n if (this._options.saveUrl && this._options.defaultColl) {\n let sessionForm = [\n { key: this._searchInput.name, value: this._options.defaultColl },\n { key: this._options.intermediairKey, value: \"\" },\n ];\n await this._callbackend(sessionForm);\n resetTriggers([\n \"maininsurance_selected\",\n \"Additional_includes_Dental\",\n ]);\n triggerNotify(\"collectivity_removed\").then(() => {\n triggerNotify(\"changeInsurance_reinit\");\n triggerNotify(\"shoppingcart_recalculate\");\n });\n this._saveBtn.classList.remove(\"loading\");\n this._saveBtn.disabled = false;\n }\n }\n }\n\n subscribeNotify(\"collectivity_remove\", collectiveRemove);\n \n const overlayClosing = () => {\n if (clearErrors()) {\n this._description?.classList?.remove(\"t-hidden\");\n this._pres?.classList?.add(\"t-hidden\");\n this._searchInput.value = \"\";\n }\n unsubscribeNotifications(this._overlayTrigger);\n }\n \n subscribeNamedNotify(\"justOverlay_overlayClosing\", { name: this._overlayTrigger, fn: overlayClosing });\n \n const selectcomplete = async (suggestion) => {\n clearErrors();\n if (suggestion || this._validator.validate()) {\n this._findCollectivity(this._searchInput.value);\n }\n }\n \n subscribeNotify(\"searchsuggestions-selectcomplete\", selectcomplete);\n\n window.addEventListener('pageshow', (event) => {\n if (event.persisted) {\n this._collSearch.classList.remove(\"loading\");\n this._searchBtn.disabled = false;\n this._searchInput.disabled = false;\n }\n });\n \n function unsubscribeNotifications(overlayTrigger) {\n if (overlayTrigger && overlayTrigger.toLowerCase() === \"pakketkiezer\") {\n unsubscribeNotify(\"collectivity_remove\", collectiveRemove);\n unsubscribeNotify(\"searchsuggestions-selectcomplete\", selectcomplete);\n unsubscribeNamedNotify(\"justOverlay_overlayClosing\", { name: overlayTrigger, fn: overlayClosing });\n unsubscribeUniqueNamedNotify(\"pakketkiezer_collectivity_next\", { name: overlayTrigger, fn: () => true });\n unsubscribeUniqueNamedNotify(\"choosingaid_collectivechoice_no_selected\", { name: overlayTrigger, fn: () => true });\n unsubscribeUniqueNamedNotify(\"choosingaid_collectivechoice_validate\", { name: overlayTrigger, fn: () => true });\n unsubscribeUniqueNamedNotify(\"steploader_getstep_release\", { name: overlayTrigger, fn: () => true });\n }\n }\n\n this._isPakketKiezer = this._overlayTrigger?.toLowerCase() === \"pakketkiezer\";\n\n if (this._isPakketKiezer) {\n subscribeUniqueNamedNotify(\"pakketkiezer_collectivity_next\", {\n name: this._overlayTrigger, fn: () => {\n if (this._collectiveIntermediair.classList.contains(\"t-hidden\")) {\n return true;\n }\n if (this._hasCollectiveIntermediary && this._collectiveIntermediairSelect && !this._collectiveIntermediair.classList.contains(\"t-hidden\")) {\n if (this._collectiveIntermediairSelect.value) {\n this._collectiveIntermediair.querySelector(\"[data-input]\").classList.remove(\"-has-error\");\n return true;\n } else {\n this._collectiveIntermediair.querySelector(\"[data-input]\").classList.add(\"-has-error\");\n if (this._collectiveIntermediairSelectError) {\n this._collectiveIntermediairSelectError.innerHTML = this._collectiveIntermediairSelect.dataset.requiredMessage || \"Tussenpersoon is verplicht!\";\n }\n return false;\n }\n }\n }\n });\n \n subscribeUniqueNamedNotify(\"choosingaid_collectivechoice_no_selected\", {\n fn: () => {\n this._description?.classList?.remove(\"t-hidden\");\n this._pres?.classList?.add(\"t-hidden\");\n clearErrors();\n this._collSearch.classList.remove(\"parsley-success\");\n if (this._searchInput) {\n this._searchInput.value = \"\";\n }\n }, name: this._overlayTrigger\n });\n \n subscribeUniqueNamedNotify(\"choosingaid_collectivechoice_validate\", {\n fn: async ({showError}) => {\n if (this._validator && showError) {\n return this._validator.validate();\n }\n return false;\n }, name: this._overlayTrigger\n });\n \n subscribeUniqueNamedNotify(\"steploader_getstep_release\", { name: this._overlayTrigger, fn: () => unsubscribeNotifications(this._overlayTrigger) });\n }\n\n function callCloseOverlay() {\n let overlayClose = document.querySelector(\"[data-overlay-close]\");\n if (overlayClose) {\n overlayClose.dispatchEvent(new Event(\"click\"));\n }\n }\n\n if (this._saveBtn) {\n this._saveBtn.addEventListener(\"click\", async (e) => {\n e.preventDefault();\n if (this._collData) {\n if (this._options.saveUrl) {\n let closeOverlay = true;\n let sessionForm = [{ key: this._searchInput.name, value: this._number.value }];\n if ( this._hasCollectiveIntermediary && this._collectiveIntermediairSelect && !this._collectiveIntermediair.classList.contains(\"t-hidden\") ) {\n if (this._collectiveIntermediairSelect.value) {\n sessionForm.push({\n key: this._collectiveIntermediairSelect.name,\n value: this._collectiveIntermediairSelect.value,\n });\n } else {\n closeOverlay = false;\n this._collectiveIntermediair.querySelector(\"[data-input]\").classList.add(\"-has-error\");\n if (this._collectiveIntermediairSelectError) {\n this._collectiveIntermediairSelectError.innerHTML = this._collectiveIntermediairSelect.dataset.requiredMessage || \"Tussenpersoon is verplicht!\";\n }\n }\n }\n if (closeOverlay) {\n await this._callbackend(sessionForm);\n resetTriggers([\n \"maininsurance_selected\",\n \"Additional_includes_Dental\",\n ]);\n triggerNotify(\"collectivity_result\", this._collData).then( () => {\n triggerNotify(\"changeInsurance_reinit\");\n triggerNotify(\"shoppingcart_recalculate\");\n putCusDimInDatalayer(26, this._collData.collectivityNumber);\n addDimensionToDatalayer('collectiviteit', this._collData.collectivityNumber);\n }\n );\n callCloseOverlay();\n }\n }\n this._saveBtn.classList.remove(\"loading\");\n if (this._hasCollectiveIntermediary) {\n let inputcontainer = this._collectiveIntermediair.querySelector( \"[data-input]\" );\n inputcontainer && inputcontainer.classList.remove(\"parsley-success\");\n }\n this._saveBtn.disabled = false;\n }\n });\n }\n\n if (this._collectiveIntermediairSelect) {\n this._collectiveIntermediairSelect.addEventListener(\"change\", () => {\n let inputcontainer = this._collectiveIntermediair.querySelector( \"[data-input]\" );\n if (inputcontainer) {\n inputcontainer.classList.remove(\"-has-error\");\n inputcontainer.classList.add(\"parsley-success\");\n }\n this._collData[\"intermediairName\"] = this._collectiveIntermediairSelect.options[this._collectiveIntermediairSelect.selectedIndex].innerText;\n this._collData[\"IntermediairNumber\"] = this._collectiveIntermediairSelect.value;\n });\n }\n\n const cancelButton = this._element.querySelector( \"[data-cancel-collectivity]\" );\n if (cancelButton) {\n cancelButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n callCloseOverlay();\n });\n }\n }\n }\n\n async _findCollectivity(collNr) {\n if (!collNr || !collNr.trim()) {\n return;\n }\n if (collNr.length > 9) {\n collNr = collNr.slice(-4);\n }\n collNr = collNr.padStart(9, \"0\");\n if (this._options.changeLocation) {\n this._collSearch.classList.add(\"loading\");\n this._searchBtn.disabled = true;\n this._searchInput.disabled = true;\n let collUrl = `${location.pathname}?${collNr}`;\n location.href = collUrl;\n return;\n }\n if (!this._options.searchUrl) {\n return;\n }\n let apiUrl = `${this._options.searchUrl}?collectivityNumber=${collNr}`;\n try {\n this._collSearch.classList.add(\"loading\");\n this._searchBtn.disabled = true;\n this._searchInput.disabled = true;\n this._pres?.classList?.add(\"t-hidden\");\n let f = fetch(apiUrl, {\n method: \"POST\",\n body: \"{}\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n credentials: \"same-origin\",\n });\n let response = await f;\n let result = await response.json();\n\n if (result && result.isSucces) {\n if (result.data) {\n this._collData = result.data;\n this._collData.collectivityNumber = collNr;\n setTimeout(async () => await addDimensionToDatalayer('collectiviteit', this._collData.collectivityNumber), 0);\n if (this._name) {\n this._name.innerHTML = result.data[\"collectivityName\"];\n const imageUrl = result.data[\"companyLogoImageUrl\"];\n if (this._logo) {\n if (imageUrl) {\n this._logo.setAttribute(\"src\", imageUrl);\n this._logo.setAttribute( \"alt\", `logo van ${result.data[\"collectivityName\"]}`\n );\n this._logo.classList.remove(\"t-hidden\");\n } else {\n this._logo.classList.add(\"t-hidden\");\n }\n }\n }\n if (this._intermediair) {\n if (result.data[\"intermediairName\"]) {\n setTimeout(async () => await addDimensionToDatalayer('intermediair', this._collData.intermediairNumber), 0);\n this._intermediair.innerHTML = result.data[\"intermediairName\"];\n this._intermediairInfo.classList.remove(\"t-hidden\");\n } else {\n this._intermediairInfo.classList.add(\"t-hidden\");\n }\n }\n if (this._municipalityNotification) {\n if (result.data[\"isMunicipality\"]) {\n this._pres?.classList?.add(\"c-collective__municipality\");\n this._municipalityNotificationText.innerHTML =\n result.data[\"municipalityNotification\"];\n this._municipalityNotification.classList.remove(\"t-hidden\");\n } else {\n this._pres?.classList?.remove(\"c-collective__municipality\");\n this._municipalityNotification.classList.add(\"t-hidden\");\n }\n }\n\n if ( this._collectiveIntermediair && this._collectiveIntermediairSelect\n ) {\n if ( result.data[\"intermediairNumberNameCollection\"] && result.data[\"intermediairNumberNameCollection\"].length > 0\n ) {\n const tussenpersoonArr =\n result.data[\"intermediairNumberNameCollection\"];\n this._collectiveIntermediairSelect.selectedIndex = 0;\n const intermediairOptions = this._collectiveIntermediairSelect.querySelectorAll( \"option\" );\n intermediairOptions.forEach((option) => {\n if (option !== this._collectiveIntermediairSelect.options[0]) {\n option.remove();\n }\n });\n tussenpersoonArr.forEach((tussenpersoon) => {\n const option = document.createElement(\"option\");\n option.value = tussenpersoon.number;\n option.innerText = tussenpersoon.name;\n this._collectiveIntermediairSelect.appendChild(option);\n });\n\n this._collectiveIntermediair.classList.remove(\"t-hidden\");\n } else {\n this._collectiveIntermediair.classList.add(\"t-hidden\");\n }\n }\n\n if (this._number) {\n this._number.value = collNr;\n }\n if (this._shortinfo) {\n const fitzme = result.data[\"showFitzme\"];\n if (this._fitzmeLabel) {\n fitzme\n ? this._fitzmeLabel.classList.remove(\"t-hidden\")\n : this._fitzmeLabel.classList.add(\"t-hidden\");\n }\n const numberFormatter = Intl.NumberFormat( document.firstElementChild?.lang || navigator.language || \"nl-NL\" );\n const mainpercentage = numberFormatter.format( result.data[\"discountPercentageMainInsurance\"] );\n if (this._main) {\n this._main.innerHTML = mainpercentage;\n if (this._main_wrapper) {\n result.data[\"discountPercentageMainInsurance\"]\n ? this._main_wrapper.classList.remove(\"t-hidden\")\n : this._main_wrapper.classList.add(\"t-hidden\");\n }\n }\n const addpercentage = numberFormatter.format( result.data[\"discountPercentageAdditionalInsurance\"] );\n if (this._additional) {\n this._additional.innerHTML = addpercentage;\n if (this._additional_wrapper) {\n result.data[\"discountPercentageAdditionalInsurance\"]\n ? this._additional_wrapper.classList.remove(\"t-hidden\")\n : this._additional_wrapper.classList.add(\"t-hidden\");\n }\n }\n const dentpercentage = numberFormatter.format( result.data[\"discountPercentageDentalInsurance\"] );\n if (this._dental) {\n this._dental.innerHTML = dentpercentage;\n if (this._dental_wrapper) {\n result.data[\"discountPercentageDentalInsurance\"]\n ? this._dental_wrapper.classList.remove(\"t-hidden\")\n : this._dental_wrapper.classList.add(\"t-hidden\");\n }\n }\n if (fitzme || mainpercentage || addpercentage || dentpercentage) {\n this._shortinfo.classList.remove(\"t-hidden\");\n } else {\n this._shortinfo.classList.add(\"t-hidden\");\n }\n }\n }\n this._pres?.classList?.remove(\"t-hidden\");\n this._description?.classList?.add(\"t-hidden\");\n this._error.innerHTML = \"\";\n this._collSearch.classList.remove(\"-has-error\");\n this._collSearch.classList.add(\"parsley-success\");\n } else {\n this._pres?.classList?.add(\"t-hidden\");\n this._description?.classList?.remove(\"t-hidden\");\n this._error.innerHTML = `
    • ${result.errorMessage}
    `;\n this._collSearch.classList.remove(\"parsley-success\");\n this._collSearch.classList.add(\"-has-error\");\n }\n this._collSearch.classList.remove(\"loading\");\n this._searchBtn.disabled = false;\n this._searchInput.disabled = false;\n } catch (error) {\n this._collSearch.classList.remove(\"loading\");\n this._error.innerHTML = `
    • ${error.message || this._options.backendError\n }
    `;\n this._searchBtn.disabled = false;\n this._searchInput.disabled = false;\n this._collSearch.classList.remove(\"parsley-success\");\n this._collSearch.classList.add(\"-has-error\");\n return;\n }\n }\n\n async _callbackend(sessionForm) {\n try {\n this._saveBtn.classList.add(\"loading\");\n this._saveBtn.disabled = true;\n let f = fetch(this._options.saveUrl, {\n method: \"POST\",\n body: JSON.stringify(sessionForm),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n credentials: \"same-origin\",\n });\n let response = await f;\n return response;\n } catch (error) {\n this._saveBtn.classList.remove(\"loading\");\n this._saveBtn.disabled = false;\n return;\n }\n }\n}\n\nexport default CollectiveSearch;\n","export default function SearchFilter(element, options = {}) {\n if (!element) {\n return;\n }\n\n const searchFilterForm = element.closest('[data-search-filter-form]');\n\n if (searchFilterForm) {\n element.addEventListener('click', () => searchFilterForm.submit());\n }\n};\n","export default function SearchForm(element, options = {}) {\n if (!element) {\n return;\n }\n\n const _form = element.querySelector('form');\n const _inputfield = element.querySelector(`input[type=\"search\"]`);\n const _submitbutton = element.querySelector(`button[type=\"submit\"]`);\n\n if (!_form || !_inputfield || !_submitbutton) {\n return;\n }\n \n // Add eventListeners:\n const changeEvents = [\"change\", \"keyup\", \"focus\", \"blur\"];\n changeEvents.forEach(changeEvent => _inputfield.addEventListener(changeEvent, () => {\n if (_inputfield.value !== undefined) {\n _submitbutton.removeAttribute(\"disabled\");\n } else {\n _submitbutton.setAttribute(\"disabled\", \"disabled\");\n }\n }));\n \n _form.addEventListener(\"submit\", (e) => {\n if (_inputfield.value) {\n _submitbutton.focus();\n _submitbutton.setAttribute(\"disabled\", \"disabled\");\n } else {\n e.preventDefault();\n }\n });\n\n window.addEventListener('pageshow', (event) => {\n if (event.persisted) {\n _submitbutton.disabled = false;\n }\n });\n}","import { subscribeNamedNotify } from \"../../@helpers/js/observer.js\";\n\nexport default function ToggleButtonListener(element, {\n triggerName = '',\n className = 't-hidden',\n reverse = false\n } = {}) {\n\n subscribeNamedNotify('toggle-button-trigger', {name: triggerName, fn: ({checked = false}) => {\n className ??= 't-hidden';\n if ((checked && !reverse) || (!checked && reverse)) {\n if (className === 't-hidden') {\n element.classList.remove(className);\n } else {\n element.classList.add(className);\n }\n } else {\n if (className === 't-hidden') {\n element.classList.add(className);\n } else {\n element.classList.remove(className);\n }\n }\n }})\n};","import { registerTrigger, triggerNamedNotify } from \"../../@helpers/js/observer.js\";\n\nexport default function ToggleButton(element, { triggerName = ''} = {}) {\n\n // Because of accessibility concerns allow toggleButton functionality only on buttons and on checkboxes \n if (element?.tagName !== 'BUTTON' && !(element?.tagName === 'INPUT' && element?.type === 'checkbox')) {\n return false;\n }\n \n const checkbox = element.tagName === 'INPUT' && element.type === 'checkbox';\n\n registerTrigger('toggle-button-trigger');\n\n let checkedAttribute = element.getAttribute('aria-checked');\n if (!checkedAttribute && !checkbox) {\n element.setAttribute('aria-checked', false);\n }\n let checked = checkedAttribute?.toLowerCase() === 'true' || element.checked;\n\n const hasExpandedAttribute = element.hasAttribute('aria-expanded') && element.hasAttribute('aria-controls');\n const expandableElement = hasExpandedAttribute ? document.getElementById(element.getAttribute('aria-controls')) : null;\n\n element.addEventListener('click', (e) => {\n checked = !checked;\n if (checkedAttribute) {\n element.setAttribute('aria-checked', checked);\n }\n if (hasExpandedAttribute) {\n element.setAttribute('aria-expanded', checked);\n if (expandableElement && expandableElement.tagName === 'DIALOG') {\n if (checked) {\n expandableElement.show();\n } else {\n expandableElement.close();\n }\n }\n }\n if (triggerName) {\n triggerNamedNotify('toggle-button-trigger', {name: triggerName, args: {checked} })\n }\n })\n};","function Tooltip(element, {position = \"top\"} = {}) {\n\tif (!element) {\n\t\treturn;\n\t}\n\n\tconst positions = [\"top\", \"right\", \"bottom\", \"left\"];\n\n\tconst pos = positions.includes(position) ? position : positions[0];\n\n\tconst trigger = element.querySelector('[data-tooltip-trigger]');\n\tconst content = element.querySelector('[data-tooltip-content]');\n\n\tconst liveRegion = document.createElement('div');\n\tliveRegion.role = \"status\";\n\telement.appendChild(liveRegion);\n\n\tif (!trigger || !content || !liveRegion) {\n\t\treturn;\n\t}\n\n\tconst message = content.innerHTML;\n\tconst isOpen = () => !!(liveRegion.innerHTML); \n\t\n\tconst closeToggleTip = () => {\n\t\tliveRegion.innerHTML = '';\n\t\tliveRegion.removeAttribute('style');\n\t}\n\n\tconst openToggleTip = () => {\n\t\twindow.setTimeout(function() {\n\t\t\tif (!isOpen()) {\n\t\t\t\tliveRegion.innerHTML = `
    ${message}
    `;\n\t\t\t\tconst {left, top, right, bottom} = liveRegion.firstElementChild.getBoundingClientRect();\n\t\t\t\tliveRegion.style.setProperty(\n\t\t\t\t\t\"--tooltip-bubble-left\",\n\t\t\t\t\t`${left < 0 ? Math.abs(left) + 16 : right > window.innerWidth ? window.innerWidth - right - 16 : 0}px`\n\t\t\t\t);\n\t\t\t\tliveRegion.style.setProperty(\n\t\t\t\t\t\"--tooltip-bubble-top\",\n\t\t\t\t\t`${top < 0 ? Math.abs(top) : bottom > window.innerHeight ? window.innerHeight - bottom : 0}px`\n\t\t\t\t);\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\t// Toggle the message\n\ttrigger.addEventListener('click', () => {\n\t\tcloseToggleTip();\n\t\topenToggleTip();\n\t});\n\n\n\t// Remove toggletip on ESC\n\telement.addEventListener('keyup', ({key}) => {\n\t\tif ( key === \"Escape\") {\n\t\t\tcloseToggleTip();\n\t\t}\n\t});\n\n\t// Remove on focusout\n\telement.addEventListener('focusout', () => {\n\t\twindow.setTimeout(function() {\n\t\t\tif (!element.contains(document.activeElement)) {\n\t\t\t\tcloseToggleTip();\n\t\t\t}\n\t\t}, 40);\n\t});\n};\n\nexport default Tooltip;","export default class FileUpload {\n\n\tconstructor(element, {\n maximum = 5,\n\t\tfileSize = 5,\n\t\tsizeUnit = 1048576,\n url = ''\n } = {}) {\n\n this._element = element;\n this._options = {\n maximum,\n\t\t\tfileSize,\n\t\t\tsizeUnit,\n url\n };\n\n this.init();\n }\n\t\n init() {\n\t\tconst filePickBoxes = [...this._element.querySelectorAll('[data-file-picker]')];\n\t\tif (filePickBoxes && filePickBoxes.length > 0) {\n\t\t\tconst maxFileSize = this._options.fileSize * this._options.sizeUnit;\n\t\t\tthis._filepickers = filePickBoxes.map((f)=>this.setupFilePicker(f, maxFileSize));\n\t\t\tthis._filepickers[0]?.fileinput?.setAttribute('required', true);\n\t\t}\n \tthis._addButton = this._element.querySelector('[data-file-add] button');\n \tthis._addButton.addEventListener('click', () => this.addFilePicker());\n\t}\n\n\trearrange(filepicker) {\n\t\tconst currentPicker = this._filepickers.find(pickerBox => pickerBox.filepicker == filepicker);\n\t\tconst activePickers = this._filepickers.filter((({filepicker:picker}) => picker && !picker.classList.contains('t-hidden')));\n\t\tif (activePickers && activePickers.length > 0) {\n\t\t\tconst {length, [length - 1]:last} = activePickers;\n\t\t\tif (length > 1) {\n\t\t\t\tfilepicker.classList.add('t-hidden');\n\t\t\t\tthis._filepickers = [...this._filepickers.filter(pickerBox => pickerBox.filepicker != filepicker),currentPicker];\n\t\t\t\tthis._addButton.insertAdjacentElement('beforebegin', filepicker);\n\t\t\t\tthis._addButton.classList.remove('t-hidden');\n\t\t\t\tthis._filepickers.forEach(({fileinput}) => {\n\t\t\t\t\tif (fileinput.value && fileinput.value.length > 0) {\n\t\t\t\t\t\tfileinput.setAttribute('required', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfileinput.removeAttribute('required');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (this._filepickers[0].fileinput) {\n\t\t\t\t\tthis._filepickers[0].fileinput.setAttribute('required', true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (last.fileinput) {\n\t\t\t\t\tlast.fileinput.setAttribute('required', true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayNotChosen(fp) {\n\t\tif (fp.filenameLabel) {\n\t\t\tfp.filenameLabel.innerHTML = fp.filenameLabel.getAttribute('data-empty');\n\t\t\tif (fp.fileinputView && fp.fileinputView.classList.contains('c-file-upload__choice--made')) {\n\t\t\t\tfp.fileinputView.classList.remove('c-file-upload__choice--made');\n\t\t\t}\n\t\t}\n\t}\n\n\tsetupFilePicker(filePickerBox, maxFileSize = 5242880) {\n\t\treturn function (f, rearrange) {\n\t\t\tconst fileinput = f.querySelector('input[type=file]');\n\t\t\tconst fileinputHolder = f.querySelector('[data-file-upload-input]');\n\t\t\tconst fileinputView = f.querySelector('[data-input-file-view]');\n\t\t\tconst filenameLabel = f.querySelector('[data-input-file-name]');\n\t\t\tconst fileremove = f.querySelector('[data-input-file-remove]');\n\t\t\tlet selectedFiles;\n\t\t\tconst handleChange = (e) => {\n\t\t\t\tlet fileName = '';\n\t\t\t\tif (fileinput.files.length > 0) {\n\t\t\t\t\tif (fileinput.files[0].size > maxFileSize) {\n\t\t\t\t\t\t// Check the constraint\n\t\t\t\t\t\tfileinput.setCustomValidity(\"The selected file must not be larger than 5 MB\");\n\t\t\t\t\t\tfileinput.validate?.(true);\n\t\t\t\t\t\tfileinput.value = \"\";\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tfileinput.setCustomValidity(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (fileinput.value && fileinput.value.length > 0) {\n\t\t\t\t\tfileName = fileinput.value.split( '\\\\' ).pop();\n\t\t\t\t} else if (selectedFiles) {\n\t\t\t\t\tfileinput.files = selectedFiles;\n\t\t\t\t}\n\n\t\t\t\tfileinput.setAttribute('required', true);\n\t\t\t\tfileinput.blur();\n\t\t\t\tif (fileName && filenameLabel) {\n\t\t\t\t\tfilenameLabel.innerHTML = fileName;\n\t\t\t\t\tif (fileinputView && !fileinputView.classList.contains('c-file-upload__choice--made')) {\n\t\t\t\t\t\tfileinputView.classList.add('c-file-upload__choice--made');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst handleRemove = (e) => {\n\t\t\t\tif (fileinput.value && fileinput.value.length > 0) {\n\t\t\t\t\tfileinput.value = '';\n\t\t\t\t}\n\t\t\t\trearrange(f);\n\t\t\t\tif (filenameLabel) {\n\t\t\t\t\tfilenameLabel.innerHTML = filenameLabel.getAttribute('data-empty');\n\t\t\t\t\tif (fileinputView && fileinputView.classList.contains('c-file-upload__choice--made')) {\n\t\t\t\t\t\tfileinputView.classList.remove('c-file-upload__choice--made');\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t}\n\t\t\t\n\t\t\tconst handleClick = (e) => {\n\t\t\t\tfileinput.removeAttribute('required');\n\t\t\t\tfileinput.setCustomValidity(\"\");\n\t\t\t\tif (fileinput.value && fileinput.value.length > 0) {\n\t\t\t\t\tselectedFiles = fileinput.files;\n\t\t\t\t}\n\t\t\t\tfileinputHolder.classList.remove('-has-error');\n\t\t\t}\n\t\t\t\n\t\t\tif (fileinput) {\n\t\t\t\tfileinput.addEventListener( 'change', handleChange);\n\t\t\t\tfileinput.addEventListener( 'click', handleClick);\n\t\t\t\tfileinput.addEventListener( 'cancel', () => {\n\t\t\t\t\tfileinput.setAttribute('required', true);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (fileremove) {\n\t\t\t\tfileremove.addEventListener('click', handleRemove);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfilepicker: f,\n\t\t\t\tfileinput,\n\t\t\t\tfileinputHolder,\n\t\t\t\tfileinputView,\n\t\t\t\tfilenameLabel,\n\t\t\t\tfileremove\n\t\t\t}\n\t\t}(filePickerBox, (f) => this.rearrange(f));\n\t}\n\n\tasync addFilePicker() {\n\t\tconst activePickers = this._filepickers.filter((({filepicker}) => filepicker && !filepicker.classList.contains('t-hidden')));\n\t\tconst nextPickers = this._filepickers.filter((({filepicker}) => filepicker && filepicker.classList.contains('t-hidden')));\n\n\t\tif (!activePickers || activePickers.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (nextPickers && nextPickers.length > 0) {\n\t\t\tconst {0:firstNext, length} = nextPickers;\n\t\t\tconst {length:l, [l - 1]:lastActive} = activePickers;\n\n\t\t\tif (activePickers.length === 1) {\n\t\t\t\tlastActive.fileinput.setAttribute('required', true);\n\t\t\t\tlastActive.fileinput.validate?.();\n\t\t\t}\n\t\t\t\n\t\t\tif (!lastActive.fileinput.value) {\n\t\t\t\tlastActive.fileinput.setAttribute('required', true);\n\t\t\t\tlastActive.fileinput.validate?.();\n\t\t\t\tif (activePickers.length > 1) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tlastActive.fileinput.removeAttribute('required');\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlastActive.fileinput.setAttribute('required', true);\n\t\t\t\tfirstNext.filepicker.classList.remove('t-hidden');\n\t\t\t\tif (length === 1) {\n\t\t\t\t\tthis._addButton.classList.add('t-hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis._addButton.classList.add('t-hidden');\n\t\t}\n\t}\n}","class ComboboxAutocomplete {\n\tconstructor(element) {\n\t\tif (!element) return;\n\t\tthis.comboboxNode = element.querySelector('input[role=combobox]');\n\t\tthis.buttonNode = element.querySelector('button[type=button]');\n\t\tthis.listboxNode = element.querySelector('ul[role=listbox]');\n\n\t\tthis.comboboxHasVisualFocus = false;\n\t\tthis.listboxHasVisualFocus = false;\n\n\t\tthis.hasHover = false;\n\n\t\tthis.isNone = false;\n\t\tthis.isList = false;\n\t\tthis.isBoth = false;\n\n\t\tthis.allOptions = [];\n\n\t\tthis.option = null;\n\t\tthis.firstOption = null;\n\t\tthis.lastOption = null;\n\n\t\tthis.filteredOptions = [];\n\t\tthis.filter = '';\n\n\t\tconst autocomplete = this.comboboxNode?.getAttribute('aria-autocomplete')?.toLowerCase();\n\n\t\tif (typeof autocomplete === 'string') {\n\t\t\tthis.isNone = autocomplete === 'none';\n\t\t\tthis.isList = autocomplete === 'list';\n\t\t\tthis.isBoth = autocomplete === 'both';\n\t\t} else {\n\t\t\t// default value of autocomplete\n\t\t\tthis.isNone = true;\n\t\t}\n\n\t\tthis.comboboxNode.addEventListener('keydown', (e) => this.onComboboxKeyDown(e));\n\t\tthis.comboboxNode.addEventListener('keyup', (e) => this.onComboboxKeyUp(e));\n\t\tthis.comboboxNode.addEventListener('click', (e) => this.onComboboxClick(e));\n\t\tthis.comboboxNode.addEventListener('focus', (e) => this.onComboboxFocus(e));\n\t\tthis.comboboxNode.addEventListener('blur', (e) => this.onComboboxBlur(e));\n\n\t\tdocument.body.addEventListener('pointerup', (e) => this.onBackgroundPointerUp(e), true);\n\n\t\t// initialize pop up menu\n\n\t\tthis.listboxNode.addEventListener('pointerover', (e) => this.onListboxPointerover(e));\n\t\tthis.listboxNode.addEventListener('pointerout', (e) => this.onListboxPointerout(e));\n\n\t\t// Traverse the element children of domNode: configure each with\n\t\t// option role behavior and store reference in.options array.\n\t\tconst nodes = this.listboxNode?.getElementsByTagName('li');\n\n\t\tfor (let index = 0; index < nodes.length; index++) {\n\t\t\tconst node = nodes.item(index);\n\t\n\t\t\tthis.allOptions.push(node);\n\t\t\tnode.addEventListener('click', (e) => this.onOptionClick(e));\n\t\t\tnode.addEventListener('pointerover', (e) => this.onOptionPointerover(e));\n\t\t\tnode.addEventListener('pointerout', (e) => this.onOptionPointerout(e));\n\t\t};\n\n\t\tthis.filterOptions();\n\n\t\tthis.buttonNode?.addEventListener('click', (e) => this.onButtonClick(e));\n\t}\n\n\tgetLowercaseContent(node) {\n\t\treturn node.textContent.toLowerCase();\n\t}\n\n\tisOptionInView(option) {\n\t\tconst bounding = option.getBoundingClientRect();\n\t\treturn (\n\t\t\tbounding.top >= 0 &&\n\t\t\tbounding.left >= 0 &&\n\t\t\tbounding.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\tbounding.right <=\n\t\t\t(window.innerWidth || document.documentElement.clientWidth)\n\t\t);\n\t}\n\n\tsetActiveDescendant(option) {\n\t\tif (option && this.listboxHasVisualFocus) {\n\t\t\tthis.comboboxNode.setAttribute('aria-activedescendant', option.id);\n\t\t\tif (!this.isOptionInView(option)) {\n\t\t\t\toption.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\t\t\t}\n\t\t} else {\n\t\t\tthis.comboboxNode.setAttribute('aria-activedescendant', '');\n\t\t}\n\t}\n\n\tsetValue(value) {\n\t\tthis.filter = value;\n\t\tthis.comboboxNode.value = this.filter;\n\t\tthis.comboboxNode.setSelectionRange(this.filter.length, this.filter.length);\n\t\tthis.filterOptions();\n\t}\n\n\tsetOption(option, flag) {\n\t\tif (typeof flag !== 'boolean') {\n\t\t\tflag = false;\n\t\t}\n\n\t\tif (option) {\n\t\t\tthis.option = option;\n\t\t\tthis.setCurrentOptionStyle(this.option);\n\t\t\tthis.setActiveDescendant(this.option);\n\n\t\t\tif (this.isBoth) {\n\t\t\t\tthis.comboboxNode.value = this.option.textContent;\n\t\t\t\tif (flag) {\n\t\t\t\t\tthis.comboboxNode.setSelectionRange(\n\t\t\t\t\t\tthis.option.textContent.length,\n\t\t\t\t\t\tthis.option.textContent.length\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.comboboxNode.setSelectionRange(\n\t\t\t\t\t\tthis.filter.length,\n\t\t\t\t\t\tthis.option.textContent.length\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetVisualFocusCombobox() {\n\t\tthis.listboxNode.classList.remove('focus');\n\t\tthis.comboboxNode.parentNode.classList.add('focus'); // set the focus class to the parent for easier styling\n\t\tthis.comboboxHasVisualFocus = true;\n\t\tthis.listboxHasVisualFocus = false;\n\t\tthis.setActiveDescendant(false);\n\t}\n\n\tsetVisualFocusListbox() {\n\t\tthis.comboboxNode.parentNode.classList.remove('focus');\n\t\tthis.comboboxHasVisualFocus = false;\n\t\tthis.listboxHasVisualFocus = true;\n\t\tthis.listboxNode.classList.add('focus');\n\t\tthis.setActiveDescendant(this.option);\n\t}\n\n\tremoveVisualFocusAll() {\n\t\tthis.comboboxNode.parentNode.classList.remove('focus');\n\t\tthis.comboboxHasVisualFocus = false;\n\t\tthis.listboxHasVisualFocus = false;\n\t\tthis.listboxNode.classList.remove('focus');\n\t\tthis.option = null;\n\t\tthis.setActiveDescendant(false);\n\t}\n\n\t// ComboboxAutocomplete Events\n\n\tfilterOptions() {\n\t\t// do not filter any options if autocomplete is none\n\t\tif (this.isNone) {\n\t\t\tthis.filter = '';\n\t\t}\n\n\t\tlet option = null;\n\t\tlet currentOption = this.option;\n\t\tlet filter = this.filter.toLowerCase();\n\n\t\tthis.filteredOptions = this.allOptions?.filter((option) => !(option.hasAttribute('disabled') || option.classList.contains('t-hidden')) && (filter.length === 0 || this.getLowercaseContent(option).indexOf(filter) > -1));\n\t\tthis.listboxNode.innerHTML = '';\n\n\t\tthis.filteredOptions.forEach(o => this.listboxNode.appendChild(o));\n\n\t\t// Use populated options array to initialize firstOption and lastOption.\n\t\tconst {[0]:first, length:numItems, [length - 1]:last} = this.filteredOptions;\n\t\tif (numItems > 0) {\n\t\t\tthis.firstOption = first;\n\t\t\tthis.lastOption = last;\n\n\t\t\tif (currentOption && this.filteredOptions.includes(currentOption)) {\n\t\t\t\toption = currentOption;\n\t\t\t} else {\n\t\t\t\toption = this.firstOption;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.firstOption = null;\n\t\t\tthis.lastOption = null;\n\t\t}\n\n\t\treturn option;\n\t}\n\n\tsetCurrentOptionStyle(option) {\n\t\tthis.filteredOptions.forEach((opt) => {\n\t\t\tif (opt === option) {\n\t\t\t\topt.setAttribute('aria-selected', 'true');\n\t\t\t\tif (\n\t\t\t\t\tthis.listboxNode.scrollTop + this.listboxNode.offsetHeight <\n\t\t\t\t\topt.offsetTop + opt.offsetHeight\n\t\t\t\t) {\n\t\t\t\t\tthis.listboxNode.scrollTop =\n\t\t\t\t\t\topt.offsetTop + opt.offsetHeight - this.listboxNode.offsetHeight;\n\t\t\t\t} else if (this.listboxNode.scrollTop > opt.offsetTop + 2) {\n\t\t\t\t\tthis.listboxNode.scrollTop = opt.offsetTop;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\topt.removeAttribute('aria-selected');\n\t\t\t}\n\t\t});\n\t}\n\n\tgetPreviousOption(currentOption) {\n\t\tif (currentOption !== this.firstOption) {\n\t\t\tlet index = this.filteredOptions.indexOf(currentOption);\n\t\t\treturn this.filteredOptions[index - 1];\n\t\t}\n\t\treturn this.lastOption;\n\t}\n\n\tgetNextOption(currentOption) {\n\t\tif (currentOption !== this.lastOption) {\n\t\t\tlet index = this.filteredOptions.indexOf(currentOption);\n\t\t\treturn this.filteredOptions[index + 1];\n\t\t}\n\t\treturn this.firstOption;\n\t}\n\n\t/* MENU DISPLAY METHODS */\n\n\tdoesOptionHaveFocus() {\n\t\treturn this.comboboxNode.getAttribute('aria-activedescendant') !== '';\n\t}\n\n\tisOpen() {\n\t\treturn this.listboxNode.style.display === 'block';\n\t}\n\n\tisClosed() {\n\t\treturn this.listboxNode.style.display !== 'block';\n\t}\n\n\thasOptions() {\n\t\treturn this.filteredOptions.length;\n\t}\n\n\topen() {\n\t\tthis.listboxNode.style.display = 'block';\n\t\tthis.comboboxNode.setAttribute('aria-expanded', 'true');\n\t\tthis.buttonNode.setAttribute('aria-expanded', 'true');\n\t}\n\n\tclose(force) {\n\t\tif (typeof force !== 'boolean') {\n\t\t\tforce = false;\n\t\t}\n\n\t\tif (\n\t\t\tforce ||\n\t\t\t(!this.comboboxHasVisualFocus &&\n\t\t\t\t!this.listboxHasVisualFocus &&\n\t\t\t\t!this.hasHover)\n\t\t) {\n\t\t\tthis.setCurrentOptionStyle(!!this.option);\n\t\t\tthis.listboxNode.style.display = 'none';\n\t\t\tthis.comboboxNode.setAttribute('aria-expanded', 'false');\n\t\t\tthis.buttonNode.setAttribute('aria-expanded', 'false');\n\t\t\tthis.setActiveDescendant(false);\n\t\t\tthis.comboboxNode.parentNode.classList.add('focus');\n\t\t}\n\t}\n\n\t/* combobox Events */\n\n\tonComboboxKeyDown(event) {\n\t\tlet flag = false,\n\t\t\taltKey = event.altKey;\n\n\t\tif (event.ctrlKey || event.shiftKey) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (event.key) {\n\t\t\tcase 'Enter':\n\t\t\t\tif (this.listboxHasVisualFocus) {\n\t\t\t\t\tthis.setValue(this.option.textContent);\n\t\t\t\t}\n\t\t\t\tthis.close(true);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'Down':\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (this.filteredOptions.length > 0) {\n\t\t\t\t\tif (altKey) {\n\t\t\t\t\t\tthis.open();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open();\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.listboxHasVisualFocus ||\n\t\t\t\t\t\t\t(this.isBoth && this.filteredOptions.length > 1)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.setOption(this.getNextOption(this.option), true);\n\t\t\t\t\t\t\tthis.setVisualFocusListbox();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.setOption(this.firstOption, true);\n\t\t\t\t\t\t\tthis.setVisualFocusListbox();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'Up':\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (this.hasOptions()) {\n\t\t\t\t\tif (this.listboxHasVisualFocus) {\n\t\t\t\t\t\tthis.setOption(this.getPreviousOption(this.option), true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open();\n\t\t\t\t\t\tif (!altKey) {\n\t\t\t\t\t\t\tthis.setOption(this.lastOption, true);\n\t\t\t\t\t\t\tthis.setVisualFocusListbox();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'Esc':\n\t\t\tcase 'Escape':\n\t\t\t\tif (this.isOpen()) {\n\t\t\t\t\tthis.close(true);\n\t\t\t\t\tthis.filter = this.comboboxNode.value;\n\t\t\t\t\tthis.filterOptions();\n\t\t\t\t\tflag = true;\n\t\t\t\t} else if (this.comboboxNode.value) {\n\t\t\t\t\tthis.setValue('');\n\t\t\t\t\tthis.comboboxNode.value = '';\n\t\t\t\t\tthis.option = null;\n\t\t\t\t\tflag = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'Tab':\n\t\t\t\tthis.close(true);\n\t\t\t\tif (this.listboxHasVisualFocus) {\n\t\t\t\t\tif (this.option) {\n\t\t\t\t\t\tthis.setValue(this.option.textContent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'Home':\n\t\t\t\tthis.comboboxNode.setSelectionRange(0, 0);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'End': {\n\t\t\t\tconst length = this.comboboxNode.value.length;\n\t\t\t\tthis.comboboxNode.setSelectionRange(length, length);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tisPrintableCharacter(str) {\n\t\treturn str.length === 1 && str.match(/\\S| /);\n\t}\n\n\tonComboboxKeyUp(event) {\n\t\tlet flag = false,\n\t\t\toption = null,\n\t\t\tchar = event.key;\n\n\t\tif (this.isPrintableCharacter(char)) {\n\t\t\tthis.filter += char;\n\t\t}\n\n\t\t// this is for the case when a selection in the textbox has been deleted\n\t\tif (this.comboboxNode.value.length < this.filter.length) {\n\t\t\tthis.filter = this.comboboxNode.value;\n\t\t\tthis.option = null;\n\t\t\tthis.filterOptions();\n\t\t}\n\n\t\tif (event.key === 'Escape' || event.key === 'Esc') {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (event.key) {\n\t\t\tcase 'Backspace':\n\t\t\t\tthis.setCurrentOptionStyle(false);\n\t\t\t\tthis.filter = this.comboboxNode.value;\n\t\t\t\tthis.option = null;\n\t\t\t\tthis.filterOptions();\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 'Left':\n\t\t\tcase 'ArrowLeft':\n\t\t\tcase 'Right':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'Home':\n\t\t\tcase 'End':\n\t\t\t\tif (this.isBoth) {\n\t\t\t\t\tthis.filter = this.comboboxNode.value;\n\t\t\t\t} else {\n\t\t\t\t\tthis.option = null;\n\t\t\t\t\tthis.setCurrentOptionStyle(false);\n\t\t\t\t}\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tif (this.isPrintableCharacter(char)) {\n\t\t\t\t\tthis.setCurrentOptionStyle(false);\n\t\t\t\t\tflag = true;\n\n\t\t\t\t\tif (this.isList || this.isBoth) {\n\t\t\t\t\t\toption = this.filterOptions();\n\t\t\t\t\t\tif (option) {\n\t\t\t\t\t\t\tif (this.isClosed() && this.comboboxNode.value.length) {\n\t\t\t\t\t\t\t\tthis.open();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tthis.getLowercaseContent(option).indexOf(\n\t\t\t\t\t\t\t\t\tthis.comboboxNode.value.toLowerCase()\n\t\t\t\t\t\t\t\t) === 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.option = option;\n\t\t\t\t\t\t\t\tif (this.isBoth || this.listboxHasVisualFocus) {\n\t\t\t\t\t\t\t\t\tthis.setCurrentOptionStyle(option);\n\t\t\t\t\t\t\t\t\tif (this.isBoth) {\n\t\t\t\t\t\t\t\t\t\tthis.setOption(option);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.option = null;\n\t\t\t\t\t\t\t\tthis.setCurrentOptionStyle(false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.close();\n\t\t\t\t\t\t\tthis.option = null;\n\t\t\t\t\t\t\tthis.setActiveDescendant(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this.comboboxNode.value.length) {\n\t\t\t\t\t\tthis.open();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tonComboboxClick() {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close(true);\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tonComboboxFocus() {\n\t\tthis.filter = this.comboboxNode.value;\n\t\tthis.filterOptions();\n\t\tthis.option = null;\n\t\tthis.setCurrentOptionStyle(null);\n\t}\n\n\tonComboboxBlur() {\n\t\tthis.removeVisualFocusAll();\n\t}\n\n\tonBackgroundPointerUp(event) {\n\t\tif (\n\t\t\t!this.comboboxNode.contains(event.target) &&\n\t\t\t!this.listboxNode.contains(event.target) &&\n\t\t\t!this.buttonNode.contains(event.target)\n\t\t) {\n\t\t\tthis.comboboxHasVisualFocus = false;\n\t\t\tthis.setCurrentOptionStyle(null);\n\t\t\tthis.removeVisualFocusAll();\n\t\t\tsetTimeout(this.close.bind(this, true), 300);\n\t\t}\n\t}\n\n\tonButtonClick() {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close(true);\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t\tthis.comboboxNode.focus();\n\t}\n\n\t/* Listbox Events */\n\tonListboxPointerover() {\n\t\tthis.hasHover = true;\n\t}\n\n\tonListboxPointerout() {\n\t\tthis.hasHover = false;\n\t\tsetTimeout(this.close.bind(this, false), 300);\n\t}\n\n\t// Listbox Option Events\n\tonOptionClick(event) {\n\t\tthis.comboboxNode.value = event.target.textContent;\n\t\tthis.close(true);\n\t}\n\n\tonOptionPointerover() {\n\t\tthis.hasHover = true;\n\t\tthis.open();\n\t}\n\n\tonOptionPointerout() {\n\t\tthis.hasHover = false;\n\t\tsetTimeout(this.close.bind(this, false), 300);\n\t}\n}\n\nexport default ComboboxAutocomplete;","class Questionnaire {\n\n constructor(element, {\n notRequired = 'optioneel',\n answerRequired = 'Maak een keuze uit de antwoorden',\n vraagProgress = 'Vraag {1}',\n requireAnswer = false,\n questionUrl = '/api/sitecore/vraagantwoordvragenlijst/getquestionandanswers',\n adviceUrl = '/api/sitecore/vraagantwoordvragenlijst/displayadvice'\n } = {}) {\n if (!element) return;\n\n this._element = element;\n this._options = {\n notRequired,\n answerRequired,\n vraagProgress,\n requireAnswer,\n questionUrl,\n adviceUrl\n };\n\n this.s = {\n questionFolderId: '[data-questionnaire-folder]',\n huidigeVraagId: '[data-questionnaire-huidige-vraag]',\n submitButton: '[data-questionnaire-submit]',\n backButton: '[data-questionnaire-backbutton]',\n answersContainer: '[data-questionnaire-answer-container]',\n question: '[data-questionnaire-question]',\n questionHeading: '[data-questionnaire-heading]',\n questionInfo: '[data-questionnaire-info]',\n questionContent: '[data-questionnaire-content]',\n questionDescription: '[data-questionnaire-description]',\n questionMessage: '[data-questionnaire-message]',\n bar: '[data-questionnaire-bar]',\n indicator: '[data-questionnaire-indicator]',\n\n summaryContainer:'[data-questionnaire-summary]',\n summaryLabel:'[data-questionnaire-summary-label]',\n summaryItems:'[data-questionnaire-summary-items]',\n summaryHerstartLink: '[data-questionnaire-summary-herstartlink]',\n summaryHerstartLinkLabel: '[data-questionnaire-summary-herstartlinklabel]'\n\n };\n\n this.answers = {};\n\n this.init();\n }\n\n init() {\n this.questionFolderId = this._element.querySelector(this.s.questionFolderId)?.value || \"\";\n this.huidigeVraagId = this._element.querySelector(this.s.huidigeVraagId)?.value || \"\";\n this.submitButton = this._element.querySelector(this.s.submitButton);\n this.backButton = this._element.querySelector(this.s.backButton);\n this.answersContainer = this._element.querySelector(this.s.answersContainer);\n\n this.initEvents();\n\n this.question = this._element.querySelector(this.s.question);\n this.questionHeading = this._element.querySelector(this.s.questionHeading);\n this.questionInfo = this._element.querySelector(this.s.questionInfo);\n this.questionContent = this._element.querySelector(this.s.questionContent);\n this.questionDescription = this._element.querySelector(this.s.questionDescription);\n this.questionMessage = this._element.querySelector(this.s.questionMessage);\n this.bar = this._element.querySelector(this.s.bar);\n this.indicator = this._element.querySelector(this.s.indicator);\n\n this.summaryContainer = this._element.querySelector(this.s.summaryContainer);\n this.summaryLabel = this._element.querySelector(this.s.summaryLabel);\n this.summaryItems = this._element.querySelector(this.s.summaryItems);\n this.summaryHerstartLink = this._element.querySelector(this.s.summaryHerstartLink);\n this.summaryHerstartLinkLabel = this._element.querySelector(this.s.summaryHerstartLinkLabel);\n\n let vraagActie = 0; // volgende vraag ophalen\n if (this.huidigeVraagId !== \"\") {\n vraagActie = 2; //huidige vraag ophalen\n }\n\n this.connectForQuestion({ \n vragenlijstFolder: this.questionFolderId,\n huidigeVraagId: this.huidigeVraagId,\n nextQuestion: vraagActie\n });\n }\n\n initEvents() {\n\n this.submitButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.onSubmitHandler(e);\n });\n\n this.backButton.addEventListener('click', (e) => {\n this.onBackHandler(e);\n });\n\n this.answersContainer.addEventListener('click', (e) => {\n this.onAnswerHandler(e);\n });\n }\n\n onSubmitHandler(e) {\n // See if there are answers\n this.collectAnswers();\n\n if (this._options.requireAnswer && this.answers.length <= 0) {\n this.showError(this._options.answerRequired);\n return false;\n }\n\n this.scrollToTitle();\n\n this.connectForQuestion({\n vragenlijstFolder: this.questionFolderId,\n huidigeVraagId: this.huidigeVraagId,\n huidigeVraagAntwoordId: this.answers,\n nextQuestion: 0\n });\n }\n \n onBackHandler(e) {\n this.scrollToTitle();\n \n this.connectForQuestion({\n vragenlijstFolder: this.questionFolderId,\n huidigeVraagId: this.huidigeVraagId,\n nextQuestion: 1\n });\n }\n\n onAnswerHandler(e) {\n this.highlightAnswers();\n this.collectAnswers();\n }\n\n async connectForQuestion(data) {\n\n try {\n const fetchPromise = fetch(this._options.questionUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data)\n });\n const response = await fetchPromise;\n if (!response.ok) {\n console.log(\"Er is een fout opgetreden in de connectie met de server.\");\n }\n const result = await response.json();\n this.renderQuestion(result);\n this.renderSummary(result);\n this._options.answerRequired = result.VraagFoutmelding; \n } catch (error) {\n console.log(\"Er is een fout opgetreden in de connectie met de server.\");\n }\n }\n\n collectAnswers() {\n this.answers = [].map.call(this._element.querySelectorAll('input:checked,input[type=\"text\"]'),\n function (obj) {\n let inputType = obj.getAttribute('type');\n let inputId = obj.getAttribute('id');\n let value = \"\";\n\n // Return the value. for `text`, `radio` or `checkbox`\n if (inputType === 'text' && obj.value.length > 0) {\n // Combine the id and value in a string as the\n // backend isn't accepting objects or arrays as an\n // answer.\n //\n // Remove this comment and the `.join` when the\n // backend accepts this format.\n value = [inputId, obj.value].join(':');\n } else {\n value = inputId;\n }\n\n return value;\n });\n }\n\n renderQuestion(question) {\n // Clean before creation\n this.removeAnswers();\n this.removeErrors();\n\n // Show content, hide question form\n this.toggleQuestionContent('question');\n\n // Apply button management\n this.toggleButtons(question.VraagNummer);\n\n // General question\n this.huidigeVraagId = question.Vraag.Id || \"\";\n this.questionHeading.innerHTML = question.Vraag.Vraag;\n\n this.questionDescription.innerHTML = question.Vraag.VraagOmschrijving;\n this.questionMessage.innerHTML = question.Vraag.VraagToelichting;\n\n // Is the question optional?\n this._options.requireAnswer = question.Vraag.AntwoordVerplicht;\n if (this._options.requireAnswer === false) {\n this.questionHeading.innerHTML += ' ' + this._options.notRequired + '';\n }\n\n // Show the progress\n let percentage = question.PercentageAfgerondeVragen + \"%\";\n this.bar.style.width = percentage;\n\n // Show the numbers\n let indicator = this._options.vraagProgress;\n indicator = indicator.replace(\"{1}\", question.VraagNummer);\n indicator = indicator.replace(\"{2}\", question.TotaalAantalVragen);\n this.indicator.innerHTML = indicator || \"\";\n // Create and format the answers\n if (question.Antwoorden && question.Antwoorden.length > 0) {\n //add two columns classes when more than 11 answers\n let containerElement = document.createElement('div');\n containerElement.setAttribute('aria-labelledby', this.questionHeading.id);\n\n let containerClassName = 'c-input__container';\n let containerRole = 'group';\n\n // Fill the answer if available\n switch (question.Vraag.VraagType) {\n case 'radio':\n containerClassName = 'c-input-radio';\n containerRole = 'radiogroup';\n break;\n case 'checkbox':\n containerClassName = 'c-input-checkbox';\n break;\n\n case 'text':\n containerClassName = 'c-input-text';\n break;\n\n default:\n }\n\n containerElement.classList.add(containerClassName);\n containerElement.role = containerRole;\n \n for (const answer of question.Antwoorden) {\n\n let inputOption = document.createElement('div');\n inputOption.classList.add(`${containerClassName}__item`);\n\n let labelElement = document.createElement('label');\n labelElement.setAttribute('for', answer.Id);\n labelElement.classList.add('c-label');\n\n // input types are Checkbox, Radio or Text\n let inputElement = document.createElement('input');\n inputElement.classList.add('c-input');\n inputElement.setAttribute('name', question.Vraag.Id);\n inputElement.setAttribute('type', question.Vraag.VraagType);\n inputElement.setAttribute('id', answer.Id);\n if (question.Vraag.AntwoordVerplicht) {\n inputElement.setAttribute('required', 'required');\n }\n inputElement.addEventListener('input', () => {\n this.removeErrors();\n });\n\n\n // Fill the answer if available\n switch (question.Vraag.VraagType) {\n case 'checkbox':\n case 'radio':\n if (answer.GegevenAntwoord === true) {\n inputElement.setAttribute('checked', 'checked');\n }\n break;\n\n case 'text':\n inputElement.setAttribute('value', answer.GegevenAntwoordTekst);\n break;\n\n default:\n\n }\n\n labelElement.appendChild(inputElement);\n let spanElement = document.createElement('span');\n spanElement.classList.add(`${containerClassName}__label-text`);\n spanElement.innerHTML = answer.Antwoord;\n labelElement.appendChild(spanElement);\n inputOption.appendChild(labelElement);\n containerElement.appendChild(inputOption);\n\n this.highlightAnswers();\n }\n this.answersContainer.appendChild(containerElement);\n }\n\n window.processModulesInsideElement(this._element);\n }\n\n renderSummary(data) {\n\n this.summaryContainer.classList.add(\"t-hidden\");\n\n if (data.Samenvatting) {\n\n if (data.Samenvatting.GegevenAntwoordItems.length !== 0) {\n this.summaryContainer.classList.remove('t-hidden');\n }\n\n //render summary label\n this.summaryLabel.innerHTML = data.Samenvatting.SamenvattingLayout.Label;\n\n //render summary items in
      \n //clear
        \n this.summaryItems.innerHTML = '';\n\n for (const item of data.Samenvatting.GegevenAntwoordItems) {\n const liElement = document.createElement('li');\n\n const linkElement = document.createElement('a');\n const linkText = document.createElement('span');\n linkText.innerHTML = item.SamenvattingWijzigLinkLabel;\n linkText.classList.add('c-link__text');\n linkElement.appendChild(linkText);\n linkElement.title = item.SamenvattingWijzigLinkLabel;\n linkElement.href = \"#\";\n const id = item.VraagId;\n linkElement.setAttribute('id', id);\n\n linkElement.classList.add('c-link');\n linkElement.addEventListener('click', () => {\n this.huidigeVraagId = id;\n this.connectForQuestion({\n vragenlijstFolder: this.questionFolderId,\n huidigeVraagId: id,\n nextQuestion: 2\n });\n });\n\n liElement.innerHTML = item.AntwoordTekstVoorSamenvatting + ' ';\n liElement.appendChild(linkElement);\n this.summaryItems.appendChild(liElement);\n }\n\n //render herstartlink\n this.summaryHerstartLink.href = data.Samenvatting.SamenvattingLayout.HerstartLink;\n this.summaryHerstartLinkLabel.innerHTML = data.Samenvatting.SamenvattingLayout.HerstartLinkLabel;\n\n }\n\n }\n\n removeAnswers() {\n this.removeBySelector('[role=\"radiogroup\"],[role=\"group\"]');\n }\n\n removeBySelector(label) {\n let items = this._element.querySelectorAll(label);\n\n // Remove the elements\n for (const item of items) {\n if (item?.parentNode) {\n item.parentNode.removeChild(item);\n }\n }\n }\n\n\n showError(message) {\n let errorMessage = document.createElement('div');\n errorMessage.className = 'c-form-field__error active';\n errorMessage.innerHTML = message;\n errorMessage.style.display = 'block';\n\n this.removeErrors();\n\n this.answersContainer.appendChild(errorMessage);\n\n\n return false;\n }\n\n removeErrors() {\n this.removeBySelector('.c-form-field__error');\n }\n\n toggleQuestionContent(section) {\n let question,\n content;\n\n if (section === 'question') {\n question = '';\n content = 'none';\n } else {\n question = 'none';\n content = '';\n }\n this.questionInfo.style.display = question;\n this.question.style.display = question;\n this.questionContent.style.display = content;\n }\n\n toggleButtons(progress) {\n if (progress > 1) {\n this.backButton.classList.remove('t-hidden');\n } else {\n this.backButton.classList.add('t-hidden')\n }\n }\n\n scrollToTitle() {\n return;\n }\n\n highlightAnswers() {\n const labels = this.answersContainer.querySelectorAll('label');\n\n for (let i = 0, l = labels.length; i < l; i++) {\n const item = labels[i];\n\n if (item.querySelector('input:checked')) {\n item.classList.add('selected');\n } else {\n item.classList.remove('selected');\n }\n }\n }\n}\n\nexport default Questionnaire;\n"],"names":["storageAvailable","type","stor","window","x","setItem","removeItem","e","DOMException","code","name","length","scriptGlobalObject","document","undefined","tests","ModernizrProto","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","on","test","cb","self","this","setTimeout","addTest","fn","options","push","addAsyncTest","Modernizr","prototype","classes","is","obj","hasOwnProp","_hasOwnProperty","docElement","documentElement","isSVG","nodeName","toLowerCase","setClasses","className","baseVal","reJS","RegExp","replace","join","feature","key","featureNameSplit","split","last","Boolean","_trigger","createElement","arguments","createElementNS","call","apply","hasOwnProperty","object","property","constructor","_l","res","cbs","i","supportsHtml5Styles","supportsUnknownElements","html5","reSkip","saveClones","expando","expanID","expandoData","addStyleSheet","ownerDocument","cssText","p","parent","getElementsByTagName","innerHTML","insertBefore","lastChild","firstChild","getElements","elements","getExpandoData","data","node","cache","cloneNode","createElem","canHaveChildren","tagUrn","frag","appendChild","shivDocument","shivCSS","hasCSS","createFrag","createDocumentFragment","shivMethods","Function","a","childNodes","version","clone","elems","l","addElements","newElements","docEl","reMedia","shivNamespace","supportsShivableSheets","namespaces","parentWindow","applyElement","removeNode","attachEvent","createWrapper","element","nodes","attributes","index","wrapper","specified","setAttribute","nodeValue","style","shivPrint","shivedSheet","wrappers","ownerWindow","printShived","removeSheet","clearTimeout","_removeSheetTimer","add","imports","sheet","collection","styleSheets","sheets","Array","pop","disabled","media","er","pair","parts","reElements","replacement","shivCssText","reverse","result","addWrappers","removeWrappers","module","exports","modElem","elem","mStyle","injectElementWithStyles","rule","callback","testnames","ret","docOverflow","mod","div","body","fake","getBody","parseInt","id","styleSheet","createTextNode","background","overflow","parentNode","removeChild","offsetHeight","domToCSS","str","m1","computedStyle","pseudo","prop","getComputedStyle","console","getPropertyValue","error","currentStyle","testProps","props","prefixed","value","skipValueTest","CSS","supports","conditionText","nativeTestProps","afterInit","propsLength","before","shift","cleanElems","indexOf","m2","toUpperCase","unshift","testProp","useValue","prefixes","_prefixes","matchMedia","mq","msMatchMedia","mql","matches","bool","TouchEvent","DocumentTouch","query","featureNames","aliasIdx","nameIdx","featureIdx","aliases","testRunner","_store","pageStorage","getItem","getStorage","level","storage","localStorage","sessionStorage","storeKeyValue","JSON","stringify","getStoredValue","parse","removeStoredValue","svgIconSelector","fileInfoSelector","svgFile","getSvgUrl","el","_getStorage$getStored","attributed","getAttribute","scriptUrl","_URL","_path$indexOf","path","URL","pathname","endOfResourcePath","substring","renderIconTemplate","iconName","svgUrl","querySelector","_pad","n","max","enhanceSize","querySelectorAll","forEach","link","size","sizePart","renderSizeTemplate","insertAdjacentHTML","runLinkEnhancements","content","classList","enhanceLinks","_links","svgPart","enhanceType","enhanceExternals","triggers","registerTrigger","triggerName","registerTriggers","triggerNames","resetTrigger","resetTriggers","subscribeNotify","subscribeNamedNotify","subscribeUniqueNamedNotify","tr","find","trigger","unsubscribeNotify","filter","fun","unsubscribeUniqueNamedNotify","async","triggerNotify","args","promiseArray","map","Promise","all","triggerNamedNotify","namedFun","slice","$","$$1","expr","con","create","tag","o","val","afterref","nextSibling","ref","getQueryString","raw","params","location","search","hash","param","_p$","decodeURIComponent","regExpEscape","s","siblingIndex","previousElementSibling","FILTER_CONTAINS","text","input","trim","SORT_BYLENGTH","b","ITEM","html","MAKETEXT","href","Suggestion","isArray","label","toString","setMessage","state","errorBox","prefix","propName","charAt","dataset","textContent","t","globalThis","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","Symbol","WeakMap","n$2","_$cssResult$","Error","get","replaceSync","set","i$4","reduce","c","cssRules","r","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","Object","trustedTypes","emptyScript","reactiveElementPolyfillSupport","d","d$1","u","toAttribute","fromAttribute","Number","f","f$1","y","attribute","String","converter","reflect","hasChanged","_Symbol$metadata","metadata","_a$1$litPropertyMetad","litPropertyMetadata","HTMLElement","static","_this$l","_$Ei","observedAttributes","finalize","_$Eh","keys","elementProperties","noAccessor","getPropertyDescriptor","_r$","requestUpdate","configurable","enumerable","_this$elementProperti","Map","finalized","properties","createProperty","_$Eu","elementStyles","finalizeStyles","styles","Set","flat","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_this$constructor$l","_$ES","enableUpdating","_$AL","_$E_","addController","_this$_$EO","_$EO","renderRoot","isConnected","hostConnected","removeController","_this$_$EO2","delete","createRenderRoot","_this$shadowRoot","shadowRoot","attachShadow","shadowRootOptions","S$1","adoptedStyleSheets","litNonce","connectedCallback","_this$_$EO3","disconnectedCallback","_this$_$EO4","hostDisconnected","attributeChangedCallback","_$AK","_$EC","_i$converter","removeAttribute","_t4$converter","getPropertyOptions","_i$hasChanged","P","_$ET","_this$_$Ej","has","_$Ej","reject","scheduleUpdate","performUpdate","_this$renderRoot2","wrapped","_this$_$EO5","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","_this$_$EO6","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","_a$1$reactiveElementV","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","createComment","v","_","m","g","_$litType$","strings","values","T","for","E","A","C","createTreeWalker","V","lastIndex","exec","startsWith","N","currentNode","replaceWith","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","ctor","H","I","L","k","tagName","append","S","_s$_$Co","_h","_h2","_s$_$Co2","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","_$AU","_t$creationScope","creationScope","importNode","R","z","_$AI","_this$_$AM$_$AU","_this$_$AM","_$Cv","_e$isConnected","_$AH","_$AA","_$AB","_t11","startNode","endNode","_$AR","iterator","O","_this$_$AH","_$AC","_this$_$AP","_$AP","remove","setConnected","_this$_$AP2","fill","j","toggleAttribute","_S","capture","once","passive","removeEventListener","addEventListener","handleEvent","_this$options$host","_this$options","host","litHtmlPolyfillSupport","_t$1$litHtmlVersions","litHtmlVersions","renderOptions","_$Do","_this$renderOptions","renderBefore","render","B","_s$renderBefore","_$litPart$","_s$renderBefore2","_this$_$Do","_this$_$Do2","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","_globalThis$litElemen","litElementVersions","CzCombobox","select","_this$_select","_select","bakeComponent","changedProperties","_t14","_2","css","_t21","autocomplete","customElements","define","_paq","_window2","piwikPrefix","piwikSession","lastEvent","pdl","_push","_ref4","_window3","PiwikdataLayer","putDimensionInDatalayer","putCusDimInDatalayer","_window4","processStoredPiwikdimensions","_Object$keys","pk","getStoredPiwikdimension","addEventToDatalayer","event","event_category","event_action","event_name","sameEvent","addDimensionToDatalayer","storePiwikdimension","wait","ms","pipeGenerators","fns","pipe","_ref","_wrapAsyncGenerator","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_iterator","_step","_asyncIterator","_awaitAsyncGenerator","next","done","err","return","_x","_produce","onlyLast","queue","pause","consume","producer","finalFn","gen","pipeline","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_iterator2","_step2","processQueue","produce","action","processFirstNow","onlyFirst","now","asyncIterator","getReducer","processEvent","por","getProducer","debounce","eventQueue","ClassNames","layout","logo","menuButtonMobile","navContainer","navContainerWrapper","rootElement","topBar","modifiers","active","hidden","submenu","navDomain","nav","navPrimary","container","listItem","mainItem","subNav","subNavGroup","overlay","dialog","autoComplete","buttonClear","buttonSubmit","buttonToggleSearchMobile","form","formWrapperMobile","list","listLabel","$configWrapper","getElementById","$htmlBody","$logo","$menuButtonMobile","$navContainer","$navContainerWrapper","$overlay","$rootElement","$navPrimaryContainer","$navPrimaryLinks","_document$querySelect","$navPrimaryMainItems","$navPrimarySubmenuButtons","_document$querySelect2","$navPrimarySubNavGroups","$navPrimarySubNavs","$navDomain","$navDomainLinks","$searchButtonToggleSearchMobile","$searchFormWrapperMobile","$searchFormMobile","_document$querySelect3","$searchFormDesktop","$searchInputMobile","$searchInputDesktop","$searchBtnClearMobile","$searchBtnClearDesktop","$searchSubmitMobile","$searchSubmitDesktop","$searchAutoCompleteMobile","$searchAutoCompleteDesktop","DomElements","interpretAction","$subNavs","activeSubmenuId","toggle","toggle$2","$submenu","submenuId","parentElement","innerWidth","menuWidth","clientWidth","parseFloat","paddingLeft","paddingRight","overlap","offsetLeft","marginLeft","columns","spaceLeft","Shared","isMobileMenuOpen","isMobileMenuOpen$2","_$menuButtonMobile$1$","contains","updateActiveSubmenuId","newValue","getActiveSubmenuId","getActiveSubmenuId$1","closeAllSubmenus","isAnySubmenuOpen","isAnySubmenuOpen$4","isOpen","isOpen$1","_$overlay$classList","toggleScrollLock","lock","offsetWidth","behavior","scrollY","_window$scrollY","minHeight","position","top","width","includes","scrollTo","left","lockScroll","HandleOverlay","initOverlay","reevaluateOverlay","Overlay","_$navContainerWrapper","toggleNavigation","HandleNavContainer","initMenuButton","initMenuButton$1","$links","initNavDomain","initKeyboardSupport","initKeyboardSupport$1","$link","focus","$autoCompleteDesktop","$autoCompleteMobile","$btnClearDesktop","$btnClearMobile","$buttonToggleSearchMobile","$formDesktop","$formMobile","$formWrapperMobile","$inputDesktop","$inputMobile","$submitDesktop","$submitMobile","autoCompleteResponse","selectedSearchResultIndex","searchInitialized","site","from","prev","current","appendUserInputToFormAction","setSearchFormAction","$input","_ref8","evaluateSubmitDisabled","_$inputMobile$value","_$inputDesktop$value","clearAutoCompleteResults","handleClearButton","toggleClearBtn","$btn","tabIndex","onClick","preventDefault","handleInputFocus","_autoCompleteResponse2","_autoCompleteResponse3","setSubmitDisabledIfInputIsToSmallDesktop","handleInputValidation","handleSubmitForms","highlightUserValue","highlight","userValue","$mobileLinks","$desktopLinks","requestAutoComplete","_$inputMobile$dataset","_$inputDesktop$datase","fetch","api","then","response","json","catch","initSearchSuggestionListener","inputElement","meetsMinimumLength","_inputElement$value","ignoreSearchingForKeys","_autoCompleteResponse","_ref9","_$formDesktop$dataset","_$formMobile$dataset","suggestionsLabel","ol","_$inputMobile$getAttr","_ref10","li","_$inputDesktop$getAtt","olClone","handleAutoComplete","initSearchNavigationSupportListener","autoCompleteList","selectedNode","_selectedNode","nextIndex","determineNextValidIndex","eventCode","currentIndex","scrollIntoView","block","innerText","setupAutoComplete","$mainItems","$subNavGroups","calcSubNavsWidth","calcSubNavsWidth$1","$subNav","navGroupsCount","gutterInner","gutterOuter","$item","$subNavGroup","_$link$parentNode","handleActiveState","addActiveClass","$node","$menuItem","menuItemLink","currentLocation","isHomeLink","isHomeItem","isPathPartOfCurrentLocation","hostname","requestedSubmenuId","openSubMenuAndScroll","HandleSubmenus","initSubmenus","viewportHeight","setProperty","innerHeight","initViewportHeight","NavContainer","Submenus","CzLoader","_t15","_t22","CzIcon","_t16","_t23","_url","_classPrivateFieldLooseKey","CzContentloader","_t17","loadContent","log","resolve","_classPrivateFieldLooseBase","callBackend","writable","url","_t24","_$Ct","_$Ci","it","directiveName","_t","resultType","trapFocus","focusable","keyboardOnly","hasAttribute","display","firstFocusable","lastFocusable","Focusable","evHandlers","keepFocus","keyPress","onKeypress","getFocusableChildren","excludedSlots","getExcludedSlots","focusableBefore","getFocusableBefore","focusableAfter","getFocusableAfter","child","getClientRects","setFocusToFirstItem","focusableChildren","focused","target","trapTabKey","activeElement","focusedItemIndex","shiftKey","CzSidepanel","_this$_dialog","_this$renderRoot3","_dialog","clickInsideDialog","_this$dialog","slotted","assignedNodes","flatten","_this$dialog2","checkVisibility","some","closest","firstElementChild","evHandler","backbuttonPress","onBackbuttonPress","closeText","open","focusTrap","_this$dialog3","closebtn","root","_this$dialog4","_this$dialog5","closeSidepanel","openSidepanel","_this$dialog6","_this$dialog7","showModal","history","_oldState","replaceState","pushState","_this$dialog8","_this$dialog9","_this$dialog10","_this$dialog11","close","handleCancel","_t18","_t19","unsafeHTML","_t20","_t25","registerProperty","syntax","inherits","initialValue","collectiviteit","_o$naam$length","_o$naam","_extends","naam","normalizedName","normalize","markText","_meldingOphalenGegevens","_meldingAVNietGevonden","_avTitle","_tvTitle","_vergoedingTitle","_errorNotification","_bakeHtmlFromJsonResult","_bakeTable","CzAvtableloader","_this5","_this$dataset","_this$dataset2","_this$dataset3","_this$dataset4","_this$dataset5","_bakeTable2","_bakeHtmlFromJsonResult2","_errorNotification2","_this5$brand","_this5$year","_this5$category","_this5$collectivity","requestUrl","brand","language","year","category","collectivity","signal","AbortController","fetchPromise","method","headers","credentials","ok","meldingOphalenGegevens","meldingAvNietGevonden","avTitle","tvTitle","vergoedingTitle","message","returnValue","aanvullend","tand","keyValueArray","startSequence","endSequence","_current$vergoedingDe","commercieleNaam","vergoeding","vergoedingDetails","line","_t26","_sidepanel","_loaded","_loadOnSidepanelOpen","_mfaUrl","_mfaName","CzMFAloader","startLoading","scriptFileEl","sideOverlayObserve","_classPrivateFieldLoo2","_this7","MutationObserver","mutationList","mutation","_classPrivateFieldLoo","attributeName","observe","attributeFilter","_this8","mfaTemplate","_t27","_svglocation","_meldingOphalenGegevens2","_apimKeySalesfunnel","_sidepanel2","_loaded2","_loadOnSidepanelOpen2","_errorNotification3","_bakeHtmlFromJsonResult3","CzVergelijkerloader","_isLoading","_classPrivateFieldLoo3","processModulesInsideElement","_classPrivateFieldLoo5","_this9","_classPrivateFieldLoo4","_this10","_this$dataset6","_this$dataset7","_bakeHtmlFromJsonResult4","_errorNotification4","_this10$date","postData","collectiviteitsnummer","referentie_datum","date","productset","soort_verzekering","producttype","Message","_document$firstElemen2","numberFormatter","Intl","NumberFormat","lang","navigator","_result$Vergoedingenv","_result$Vergoedingenv2","_result$Vergoedingenv3","_result$Vergoedingenv4","_result$Vergoedingen","_result$Vergoedingen2","_result$Vergoedingenv8","_result$Vergoedingen3","_result$Vergoedingenv15","_result$Vergoedingenv16","_result$Vergoedingenv17","_result$Vergoedingenv18","_result$Vergoedingenv19","_result$Vergoedingen4","VergoedingenvergelijkerLabels","WatermerkVergoedingSelecteren","VergoedingeNietGevonden","TitelVergoedingenvergelijker","TitelVergoeding","Vergoedingen","AanvullendeZorgVerzekeringen","av","_result$Vergoedingenv5","_result$Vergoedingenv6","TitelAanvullendeVerzekering","Naam","Prijs","format","PerTermijn","_result$Vergoedingenv7","_vergoeding$Aanvullen","Tonen","CategorieZorgsoort","Verwijder","TonenDetails","VergoedingOmschrijving","VergoedingDetails","_result$Vergoedingenv9","_result$Vergoedingenv10","_result$Vergoedingenv11","_result$Vergoedingenv12","_result$Vergoedingenv13","_vergoeding$Aanvullen2","_result$Vergoedingenv14","ToonDetails","ToondetailOpties","Value","SelecteerVergoeding","TitelVergoedingToevoegen","ButtonVergoedingToevoegen","_t28","modules","ContentEnhancements","_element","yesterday","Date","setDate","getDate","yesterdate","getMonth","getFullYear","regex","replacedHtml","replaceYesterday","SearchAwesomplete","caption","autosuggestUrl","autosuggestKey","autofocus","sort","minChars","maxItems","autoFirst","_options","submitButton","autosuggestDictionary","notFoundTemplate","_init","item","makeText","_createElements","_bindEvents","around","innerContainer","inside","after","ul","notFound","status","role","timeoutID","inputValueBackup","notFoundBackup","ulBackup","reason","evaluate","wrapEvaluation","evt","keyCode","opened","selected","children","linkToSearch","foo","count","forbiddenChars","button","_list","items","goto","previous","lis","suggestions","origin","suggestion","searchable","submit","noSuggestionsFound","_this$notFound","skipLengthCheck","controller","abort","suggestURL","searchData","maxResults","sentence","MARKTEXT","SetListIcon","lists","_list$classList","namedByClass","svg","icon","_item$firstElementChi","_item$firstElementChi2","constructModuleFromElement","moduleName","dataModules","names","optionsValue","tablesWithWidth","table","defWidth","clearTableLayout","useAjax","init","_this","validations","fields","validation","isValid","checkValidity","formData","FormData","contentType","field","_result","redirectUrl","ajaxSubmit","_field$querySelector","_field$querySelector2","minDate","maxDate","inputs","Day","Month","Year","errorText","validationFn","isBlurred","entries","every","scope","validity","valid","invalid","month","day","isInteger","isNaN","valueOf","getTime","createDateValidator","validate","createValidator","act","arg","_window$obj","_window$act","_window","categories","panels","nextElementSibling","currentState","expanded","but","panel","slug","hashOnLoad","decodeURI","startTrigger","_t$dataset","dispatchEvent","Event","_location$href","_location$href2","buttonCategory","internalLinkCategory","externalLinkCategory","clickHandler","skiplink","_skiplink$textContent","_skiplink$href","ctaStoreButton","_ctaStoreButton$query","_ctaStoreButton$href","revealer","_revealer$textContent","ariaExpanded","_ref5","_button$href","anchor","_anchor$textContent","_anchor$href","_window5","_window6","linkHost","parser","isUrlExternal","headerLink","_headerLink$textConte","_headerLink$href","footerLink","_footerLink$textConte","_footerLink$href","menuLink","_menuLink$textContent","_menuLink$href","menuButton","_menuButton$textConte","_menuButton$href","mijnLink","_mijnLink$textContent","_mijnLink$href","clickProcessing","elmnt","clickEvent","_clickEvent$target","_hrefTarget$getAttrib","_hrefTarget$getAttrib2","hrefTarget","defaultPrevented","_clickEvent$target2","activeMfa","_clickEvent$target3","_clickEvent$target4","_clickEvent$target5","_clickEvent$target6","sidepanelMfaClick","choice","actionButton","choiceLabel","_choice$parentElement","_choiceLabel$parentEl","_choice$name","_choice$name2","_choice$name3","_choice","_choice$className","productType","insuranceProduct","_ref6","_choiceLabel$querySel","_choiceLabel$querySel2","verzekerdeType","customDimensions","dimension15","_choiceLabel$textCont","mfaButton","card","_ref7","_card$querySelector","_card$id","store","mainMfa","processAnalysis","_body$Contactgegevens","Overeenkomst","_basis$Premie","_coll$Collectiviteits","TotaalPerMaand","InclusiefCollectiviteitsKorting","BasisVerzekering","basis","Collectiviteit","coll","Verzekerden","basic","sku","Code","Name","price","Premie","variant","Type","number","CollectiviteitsNummer","CollectiviteitsNaam","isDefault","IsDefaultCollectivity","intermediary","IntermediairNummer","IntermediairNaam","verzekerden","Verzekeringsnemer","Medeverzekerden","products","sum","verzekerde","AanvullendeVerzekering","TandartsVerzekering","tv","EigenRisico","Bedrag","_av$Premie","aanv","HasDentalInsurance","_tv$Premie","_window$_paq","basket","total","discount","Contactgegevens","Email","emailHash","msgUint8","TextEncoder","encode","hashBuffer","crypto","subtle","digest","Uint8Array","padStart","createHash","warn","fetchHandler","thisArg","argumentsList","_url$toLowerCase","prom","_url$toLowerCase2","Proxy","_basket$products","confirmation","extended","floor","orderId","_window$_paq2","_window7","grandTotal","HandleNavDomain","HandleViewportHeights","cachedWidth","searchMobileisOpen","_$formWrapperMobile$c","overlayIsVisibleClass","source","inputContainer","dialogtrigger","dialoginnertrigger","nosourcetrigger","okText","$e","page","sources","closers","FOCUSABLE_ELEMENTS","TAB_KEY","ESCAPE_KEY","onBackbutton","closeClickPress","handleCloseClick","$source","popupQueue","within","handleTriggerClick","addToProcessQueue","_$trigger","_$trigger2","$trigger","sourceId","popupOverlayTrigger","popupDialogTrigger","handleClickOutside","originId","popupOverlayTriggerSource","oldId","clearOverlay","popupOverlaySource","autoHidePopup","autohidePopup","hideDelay","ct","ot","closeMe","insertAdjacentElement","showOverlay","autoHide","currentTarget","_e$target$dataset","hideOverlay","$triggerSource","which","topNotification","_element$dataset","_title$querySelector","_isOpen","_title","_content","contentId","titleContent","startsOpen","inert","titleButton","scrollToTopTargetId","_document$querySelect4","_trigger2","_trigger3","_s","_topTarget","_triggers","triggerContainer","_triggerContainer","throttle","clientHeight","_trigger4","_triggerContainer2","_trigger5","_triggerContainer3","scrollTop","levelTriggers","rawslug","levelTrigger","rawdeepSlug","deepSlug","slugs","_t$dataset2","_startTrigger$panel$l","_t$dataset3","_element$tagName","addEuroSign","keepFlat","amountText","closeButton","filterGroup","clustergridItems","filters","useFilter","checked","findSelection","_filter$innerText","cgi","_cgi$dataset","startfilter","_f$dataset","_this2","_choiceContainer","_blockedMessage","_collectiveWrapper","_inputs","whileChoosingAid","changeProcessor","yepnope","triggerUniqueNamedNotify","searchUrl","saveUrl","defaultColl","changeLocation","backendError","intermediairKey","_collData","_this3","_pres","_collSearch","_this$_element$closes","_this$_pres$querySele","_this$_pres","_this$_pres$querySele2","_this$_pres2","_this$_pres$querySele3","_this$_pres3","_this$_pres$querySele4","_this$_pres4","_this$_pres$querySele5","_this$_pres5","_this$_pres$querySele6","_this$_pres6","_this$_pres$querySele7","_this$_pres7","_this$_pres$querySele8","_this$_pres8","_this$_pres$querySele9","_this$_pres9","_this$_pres$querySele10","_this$_pres10","_this$_pres$querySele11","_this$_pres11","_this$_pres$querySele12","_this$_pres12","_this$_overlayTrigger","_overlayTrigger","overlaySource","_name","_number","_intermediairInfo","_intermediair","_logo","_shortinfo","_main","_main_wrapper","_additional","_additional_wrapper","_dental","_dental_wrapper","_description","_error","_saveBtn","_collectiveIntermediair","_municipalityNotification","_municipalityNotificationText","_hasCollectiveIntermediary","_collectiveIntermediairSelect","_collectiveIntermediairSelectError","_fitzmeLabel","clearErrors","_searchBtn","_searchInput","collectiveRemove","_this3$_description","_this3$_pres","sessionForm","_callbackend","overlayClosing","_this$_description","_this$_pres13","unsubscribeNotifications","selectcomplete","_validator","_findCollectivity","overlayTrigger","unsubscribeNamedNotify","callCloseOverlay","overlayClose","persisted","_isPakketKiezer","requiredMessage","_this$_description2","_this$_pres14","showError","closeOverlay","collectivityNumber","inputcontainer","selectedIndex","cancelButton","collNr","_this4","collUrl","apiUrl","_this$_pres15","isSucces","_this$_pres18","_this$_description3","imageUrl","_this$_pres16","_this$_pres17","intermediairNumber","tussenpersoonArr","option","tussenpersoon","_document$firstElemen","fitzme","mainpercentage","addpercentage","dentpercentage","_this$_pres19","_this$_description4","errorMessage","subtitleprefix","overMaxFoundTemplate","_p$2","aio","bio","areg","breg","relatienummer","showSuggestions","click","moreMaxSuggestionsFound","collectiviteiten","collSuggestions","searchFilterForm","_form","_inputfield","_submitbutton","changeEvent","checkbox","checkedAttribute","hasExpandedAttribute","expandableElement","show","positions","pos","liveRegion","closeToggleTip","openToggleTip","right","bottom","getBoundingClientRect","abs","maximum","fileSize","sizeUnit","filePickBoxes","_this$_filepickers$","maxFileSize","_filepickers","setupFilePicker","fileinput","_addButton","addFilePicker","rearrange","filepicker","currentPicker","pickerBox","activePickers","picker","displayNotChosen","fp","filenameLabel","fileinputView","filePickerBox","fileinputHolder","fileremove","selectedFiles","handleChange","fileName","files","setCustomValidity","blur","handleRemove","handleClick","nextPickers","firstNext","lastActive","_this$comboboxNode","_this$listboxNode","_this$buttonNode","comboboxNode","buttonNode","listboxNode","comboboxHasVisualFocus","listboxHasVisualFocus","hasHover","isNone","isList","isBoth","allOptions","firstOption","lastOption","filteredOptions","onComboboxKeyDown","onComboboxKeyUp","onComboboxClick","onComboboxFocus","onComboboxBlur","onBackgroundPointerUp","onListboxPointerover","onListboxPointerout","onOptionClick","onOptionPointerover","onOptionPointerout","filterOptions","onButtonClick","getLowercaseContent","isOptionInView","bounding","setActiveDescendant","setValue","setSelectionRange","setOption","flag","setCurrentOptionStyle","setVisualFocusCombobox","setVisualFocusListbox","removeVisualFocusAll","_this$allOptions","currentOption","first","numItems","opt","offsetTop","getPreviousOption","getNextOption","doesOptionHaveFocus","isClosed","hasOptions","force","altKey","ctrlKey","stopPropagation","isPrintableCharacter","match","char","bind","toggleclass","highlightclass","searchPlaceholder","searchText","_this$_tablerows","_this$_revealerrows","_tableBody","_revealerColl","_selectBox","_selectOptions","_noneleft","_tablerows","row","_row$dataset","tablerow","toggleBtn","rem","_revealerrows","_row$dataset2","revealerrow","rev","_comboBox","_selectConfirm","_this$_comboBox","_this$_selectOptions","confirmDatalayerClick","trow","rrow","removeRow","addToSelector","_rrow$rem$classList","_rrow$rem","_this$_selectOptions2","chosenOption","meldingCollectiviteitNietGevonden","meldingCollectiviteitNietBeschikbaar","verzekeringslabel","peilJaar","defaultCategoryId","defaultCollectiviteit","displayCollectiviteitKeuzeBox","matchPrice","matchPercentage","displayJaarKeuze","_this$yearTabs","_this6","toggleSearch","collectiveSearch","searchField","categoryId","collectiveLabel","yearTabs","resetSearch","verzekeringsLabels","collectiveGraph","collectiveWrapper","collectivePackage","searchContentSection","tab","_this$collectiveGraph","_this$collectiveGraph2","_label$textContent","_this$collectiveGraph3","_label$dataset","_onToggleSearchClick","_onResetSearchClick","showYearSection","getCollectivity","_sanitizeInput","_processCollectivity","setCollectivity","collectiveYear","_this$collectiveGraph4","_getStoredPiwikdimens","collect","_this$_element$queryS","showLoadingCollectivity","showErrorMessage","acceptDefault","removeColl","CzMfaloader","notRequired","answerRequired","vraagProgress","requireAnswer","questionUrl","adviceUrl","questionFolderId","huidigeVraagId","backButton","answersContainer","question","questionHeading","questionInfo","questionContent","questionDescription","questionMessage","bar","indicator","summaryContainer","summaryLabel","summaryItems","summaryHerstartLink","summaryHerstartLinkLabel","answers","_this$_element$queryS2","_this$_element$queryS3","initEvents","vraagActie","connectForQuestion","vragenlijstFolder","nextQuestion","onSubmitHandler","onBackHandler","onAnswerHandler","collectAnswers","scrollToTitle","huidigeVraagAntwoordId","highlightAnswers","renderQuestion","renderSummary","VraagFoutmelding","inputType","inputId","removeAnswers","removeErrors","toggleQuestionContent","toggleButtons","VraagNummer","Vraag","Id","VraagOmschrijving","VraagToelichting","AntwoordVerplicht","percentage","PercentageAfgerondeVragen","TotaalAantalVragen","Antwoorden","containerElement","containerClassName","containerRole","VraagType","answer","inputOption","labelElement","GegevenAntwoord","GegevenAntwoordTekst","spanElement","Antwoord","Samenvatting","GegevenAntwoordItems","SamenvattingLayout","Label","liElement","linkElement","linkText","SamenvattingWijzigLinkLabel","title","VraagId","AntwoordTekstVoorSamenvatting","HerstartLink","HerstartLinkLabel","removeBySelector","section","progress","labels","activateModuleOnElement"],"mappings":"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","x_google_ignoreList":[6,7,8,9,26,27,28,29,30,31,32,33,34]}