{"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/just-navigation/js/handleSearchJust.js","../modules/just-navigation/js/navigationJust.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/just-navigation/js/sticky-nav.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\tleft: var(--_sidepanel-onright);\n\t\t\t\t\n\t\t\t\theight: 100%;\n\t\t\t\twidth: var(--_cz-sidepanel-width);\n\t\t\t\t\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--sidepanel-onright: auto;\n\t\t\t\ttranslate: 0px 0px;\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: initial;\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]) slot[name=close] {\n\t\t\t\tright: 0;\n\t\t\t\talign-self: flex-end;\n\t\t\t}\n\n\t\t\t:host([left]) .drawer[open] {\n\t\t\t\t--sidepanel-onleft: auto;\n\t\t\t}\n\n\t\t\t:host([left]) .drawer.open {\n\t\t\t\t--sidepanel-onright: auto;\n\t\t\t\tleft: calc(50% - 50vi);\n\t\t\t}\n\n\t\t\t:host([left]) .drawer {\n\t\t\t\tright: var(--_sidepanel-onleft);\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 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 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);","import { subscribeNamedNotify } from \"../../@helpers/js/observer.js\";\n\nconst SELECTORS = {\n toggle: '.just-navigation__search button',\n searchBar: '.just-navigation__searchbar',\n close: '.just-navigation__close-search',\n}\n\nexport default function HandleSearchJust(element) {\n\n const searchBar = element.querySelector(SELECTORS.searchBar);\n const searchToggle = element.querySelector(SELECTORS.toggle);\n const searchClose = element.querySelector(SELECTORS.close);\n \n const closeSearchBar = () => {\n if (!searchToggle || !searchBar) return;\n if (searchBar.open) {\n searchToggle.dispatchEvent(new Event(\"click\"));\n }\n }\n\n searchClose?.addEventListener('click', () => {\n closeSearchBar();\n });\n\n subscribeNamedNotify('toggle-menu-search', {name: 'submenutrigger', fn: closeSearchBar});\n}","import { triggerNamedNotify } from \"../../@helpers/js/observer.js\";\n\nconst SELECTORS = {\n overlay: '.overlay',\n menu: '.just-navigation__menu',\n subMenu: '.just-navigation__submenu',\n menuBurger: '.just-navigation__menu-burger',\n svgUse: '.just-navigation__menu-burger > svg > use',\n menuItems: '.just-navigation__top-item',\n expanded: '.expanded',\n}\n\nconst CLASSES = {\n mobileMenuOpen: 'mobile-menu-open',\n expanded: 'expanded',\n active: 'active',\n}\n\nlet prevScroll = window.scrollY || document.documentElement.scrollTop;\nlet curScroll;\nlet scrollingDown;\nlet prevScrollingDown;\n\n\nfunction NavigationJust(element) {\n\n const overlay = document.querySelector(SELECTORS.overlay);\n const menuBurger = element.querySelector(SELECTORS.menuBurger);\n const menuItems = element.querySelectorAll(SELECTORS.menuItems);\n\n function removeExpanded() {\n menuItems.forEach((topItem) => {\n if (topItem.hasAttribute('aria-controls')) {\n topItem.setAttribute('aria-expanded', false);\n }\n });\n }\n\n menuBurger?.addEventListener('click', () => {\n toggleMobileMenu(element);\n });\n\n overlay?.addEventListener('click', () => {\n toggleMobileMenu(element);\n });\n\n menuItems?.forEach((topItem) => {\n // ignore menu-items without submenu\n if (!topItem.hasAttribute('aria-controls')) {\n return;\n }\n\n topItem.addEventListener('click', () => {\n let expanded = topItem.getAttribute('aria-expanded')?.toLowerCase?.() === 'true';\n removeExpanded();\n topItem.setAttribute('aria-expanded', !expanded);\n if (!expanded) {\n triggerNamedNotify('toggle-menu-search', { name: 'submenutrigger' });\n }\n });\n });\n\n // handle clicks outside of menu to close it\n document.addEventListener('click', (ev) => {\n if (!ev.target.closest(SELECTORS.menu)) {\n removeExpanded();\n }\n });\n}\n\n\nfunction toggleMobileMenu(element) {\n element.classList.toggle('just-navigation--fixed');\n element.classList.toggle(CLASSES.mobileMenuOpen);\n document.querySelector(SELECTORS.overlay).classList.toggle(CLASSES.active);\n\n const svgUse = element.querySelector(SELECTORS.svgUse);\n const xlinkValue = svgUse.getAttribute('xlink:href').split('#');\n const newIcon = xlinkValue.pop() === 'menu' ? 'close' : 'menu';\n svgUse.setAttribute('xlink:href', `${xlinkValue.join('')}#${newIcon}`);\n\n}\n\nexport default NavigationJust;","/*\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 HandleSearchJust from './modules/just-navigation/js/handleSearchJust.js';\nmodules['HandleSearchJust'] = HandleSearchJust;\n\nimport NavigationJust from './modules/just-navigation/js/navigationJust.js';\nmodules['NavigationJust'] = NavigationJust;\n\nimport StickyNav from './modules/just-navigation/js/sticky-nav.js';\nmodules['StickyNav'] = StickyNav;\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;","import { registerTrigger, triggerNotify } from \"../../@helpers/js/observer.js\";\n\nfunction StickyNav(el) {\n if (!el) return;\n\n const _element = el;\n\n let prevScroll = window.scrollY || document.documentElement.scrollTop;\n let curScroll;\n let direction = 0;\n const hideClass = 'hide-sticky-nav';\n\n registerTrigger('sticky-nav__adjust');\n const _isMetabar = _element?.classList.contains('c-meta-bar');\n\n const toggleHeader = (dir, cur) => {\n const isHidden = _element.classList.contains(hideClass);\n if (dir === 2 && cur > 60 && !isHidden) {\n _element.classList.add(hideClass);\n if (!_isMetabar) {\n triggerNotify('sticky-nav__adjust', { apply: true });\n }\n }\n else if (dir === 1 && isHidden) {\n _element.classList.remove(hideClass);\n if (!_isMetabar) {\n triggerNotify('sticky-nav__adjust', { apply: false });\n }\n }\n };\n\n const scrollHandler= () => {\n curScroll = window.scrollY || document.documentElement.scrollTop;\n direction = (curScroll > prevScroll) ? 2 : 1;\n\n toggleHeader(direction, curScroll);\n prevScroll = curScroll;\n }\n\n // Add event listener.\n document.addEventListener('scroll', scrollHandler, {passive: true});\n // On load.\n scrollHandler();\n}\n\nexport default StickyNav;"],"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","_r","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","_r2","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","SELECTORS","menu","subMenu","menuBurger","svgUse","menuItems","expanded","CLASSES","mobileMenuOpen","toggleMobileMenu","xlinkValue","newIcon","scrollTop","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","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","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","searchBar","searchToggle","searchClose","closeSearchBar","removeExpanded","topItem","_topItem$getAttribute","ev","curScroll","prevScroll","direction","hideClass","_isMetabar","scrollHandler","toggleHeader","dir","cur","isHidden","activateModuleOnElement"],"mappings":"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","x_google_ignoreList":[6,7,8,9,26,27,28,29,30,31,32,33,34]}