{"version":3,"file":"rpmmodules.min.js","sources":["../src/js/Header.js","../src/js/GaTracking.js","../src/js/Accessibility.js","../src/js/Animate.js","../src/js/AnchorLinks.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/debounce.js","../src/js/Modals.js","../node_modules/js-cookie/src/js.cookie.js","../src/js/Helpers.js","../node_modules/lodash-es/throttle.js","../src/js/ExternalLinks.js","../src/js/SomeModule.js"],"sourcesContent":["export const Header = (function () {\n\t'use strict';\n\n\tlet $menu, $menuButton, $subMenuParent, $subMenuItem, $body;\n\n\tfunction init() {\n\t\t($menu = $('.site-header__nav .nav-items')), ($menuButton = $('.mobile-menu-button'));\n\t\t$body = $('body');\n\t\t$subMenuParent = $('.site-header .menu-item-has-children');\n\t\t$subMenuItem = $('.site-header .sub-menu a');\n\n\t\tevents();\n\t}\n\n\tfunction events() {\n\t\t$menuButton.click(function () {\n\t\t\tif ($menu.hasClass('open')) {\n\t\t\t\t$body.removeClass('mobile-menu-open');\n\t\t\t\t$menu.removeClass('open');\n\t\t\t\t$menuButton.removeClass('open').attr('aria-expanded', 'false');\n\t\t\t} else {\n\t\t\t\t$body.addClass('mobile-menu-open');\n\t\t\t\t$menu.addClass('open');\n\t\t\t\t$menuButton.addClass('open').attr('aria-expanded', 'true');\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","export const GaTracking = (function () {\n\t'use strict';\n\n\tlet eventData;\n\n\tfunction init() {\n\t\tevents();\n\t}\n\n\tfunction events() {\n\t\t$('body').on('click', 'a[data-category]', function () {\n\t\t\tlet $t = $(this),\n\t\t\t\tcat = $t.data('category'),\n\t\t\t\tlabel = $t.data('label');\n\n\t\t\tgaClickHandler(cat, label);\n\t\t});\n\t}\n\n\tfunction gaClickHandler(cat, label) {\n\t\tif (gtag) {\n\t\t\tgtag('event', 'click', {\n\t\t\t\tevent_category: cat,\n\t\t\t\tevent_label: label,\n\t\t\t});\n\t\t}\n\n\t\tconsole.warn('Sent a GA event: ', '\\n', '-- Category: ' + cat, '\\n', '-- Label: ' + label, '\\n');\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","export const Accessibility = (function () {\n\t'use strict';\n\n\tfunction init() {\n\t\tdocument.body.addEventListener('keydown', e => {\n\n if( e.key === 'Tab' ) {\n document.body.classList.add('keyboard');\n document.body.classList.remove('mouse');\n } else {\n document.body.classList.remove('keyboard');\n document.body.classList.remove('mouse');\n }\n\n });\n\n document.body.addEventListener('click', e => {\n\n document.body.classList.add('mouse');\n document.body.classList.remove('keyboard');\n\n });\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","export const AnimateIn = (function () {\n\t'use strict';\n\n\tlet $win, $winH, $animateIn, threshold, distScrolled;\n\n\tfunction init() {\n\t\t$win = $(window);\n\t\t$animateIn = $('.animate');\n\t\tdistScrolled = 0;\n\n\t\tif ($animateIn.length) {\n\t\t\tresize();\n\t\t\tcheckElements();\n\t\t\t$win.on('scroll', checkElements);\n\t\t\t$win.on('resize', resize);\n\t\t}\n\t}\n\n\tfunction resize() {\n\t\t$winH = $(window).height();\n\t\tthreshold = $winH * 0.15; // this controls when the animation occurs - distance from bottom of window\n\t}\n\n\tfunction checkElements() {\n\t\tdistScrolled = $win.scrollTop();\n\n\t\t$animateIn.each(function (i, el) {\n\t\t\tlet $el = $(el);\n\t\t\tlet elTreshold = $el.data('threshold') ? $(window).height() * ($el.data('threshold') / 100) : threshold;\n\t\t\tlet elDist = $el.offset().top - ($winH - elTreshold);\n\n\t\t\tif (distScrolled > elDist) {\n\t\t\t\t$el.addClass('animated');\n\t\t\t\t$animateIn = $('.animate-in:not(.animated)');\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","export const AnchorLinks = (function () {\n\t'use strict';\n\n\tlet anchorLinks;\n\tconst tapAction = ( window.ontouchstart === null ) ? 'touchstart' : 'click';\n\n\tfunction init() {\n\t\t\n\t\tanchorLinks = document.querySelectorAll('a[href^=\"#\"]');\n\n\t\tif(anchorLinks && anchorLinks.length > 0 && $(location.hash).hasClass('modal') ) {\n\t\t\trenderAnchorLinks();\n\t\t}\n\n\t\tif (location.hash) {\n\t\t\tif ($(location.hash).length > 0 && !$(location.hash).hasClass('modal') ) {\n\t\t\t\tscrollToEl(location.hash);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction renderAnchorLinks() {\n\t\tfor (let index = 0; index < anchorLinks.length; index++) {\n\t\t\tconst anchorLink = anchorLinks[index];\n\t\t\tconst target = document.querySelector(anchorLink.hash);\n\n\t\t\tanchorLink.addEventListener(tapAction, (e) => {\n\n\t\t\t\tif( target && target.id.length > 1 && !target.classList.contains('modal') ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcloseModals();\n\t\t\t\t\tscrollToEl(target.id);\n\t\t\t\t} else if( !target ) {\n\t\t\t\t\t// console.log( anchorLink.hash );\n\t\t\t\t\twindow.location.href = location.origin + '/' + anchorLink.hash;\n\t\t\t\t} else {\n\t\t\t\t\t// console.log('no');\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction closeModals() {\n\t\t// console.log('closeModals');\n\t\tdocument.body.classList.remove('mobile-menu-open');\n\t\tdocument.querySelector('.nav-items').classList.remove('open');\n\t\tdocument.querySelector('.mobile-menu-button').classList.remove('open')\n\t\t// document.querySelector('.mobile-menu-button').ariaExpanded('false');\n\t\t// document.querySelector('.mobile-menu-button').classList.remove('open');.attr('aria-expanded', 'false');\n\t}\n\n\tfunction scrollToEl(id) {\n\t\t// console.log('scrollToEl', id);\n\t\tlet target = id.startsWith('#') ? id.split('#')[1] : id;\n\t\t\n\t\t// @TODO\n\t\t// Refactor animate to be pure JS\n\n\t\tlet $target = $('#'+target);\n\t\t$('html, body').animate(\n\t\t\t{\n\t\t\t\tscrollTop: $target.offset().top,\n\t\t\t},\n\t\t\t1000\n\t\t);\n\t\t\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","export const Modals = (function () {\n\t'use strict';\n\n\tlet $a;\n\tlet modal_close_buttons;\n\n\tfunction init() {\n\n\t\tmodal_close_buttons = document.querySelectorAll('.modal__close');\n\t\tif(modal_close_buttons && modal_close_buttons.length > 0) {\n\t\t\tcloseAction();\n\t\t}\n\n\t\t$a = $('a[href^=\"#\"]');\n\t\t\n\n\t\tMicroModal.init({\n\t\t\tonShow: modal => {\n\t\t\t\thistory.replaceState(null, null, `#${modal.id}`);\n\t\t\t\tdocument.body.classList.add('modal--is-open');\n\t\t\t},\n\t\t\tonClose: modal => {\n\t\t\t\thistory.replaceState(null, null, ' ');\n\t\t\t\tdocument.body.classList.remove('modal--is-open');\n\t\t\t}\n\t\t});\n\n\t\tdocument.querySelectorAll('[data-micromodal-trigger]').forEach(item => {\n\t\t\titem.addEventListener('click', e => {\n\t\t\t\te.preventDefault();\n\t\t\t})\n\t\t})\n\n\t\t$a.click( function(){\n\t\t\t// document.body.classList.add('modal--is-open');\n\t\t\t// let href = $(this).attr('href');\n\t\t\t// if ( $(href+'.modal').length ) {\n\t\t\t// \tMicroModal.show( href.replace('#', ''), {\n\t\t\t// \t\tdisableFocus: true,\n\t\t\t// \t\tonClose: modal => {\n\t\t\t// \t\t\thistory.replaceState(null, null, ' ');\n\t\t\t// \t\t\tdocument.body.classList.remove('modal--is-open');\n\t\t\t// \t\t}\n\t\t\t// \t});\n\t\t\t// }\n\t\t\tlet href = $(this).attr('href');\n\n\t\t\t$('.modal').removeClass('is-open');\n\n\t\t\tif ($(href + '.modal').length) {\n\t\t\t\tMicroModal.show(href.replace('#', ''), {\n\t\t\t\t\tonClose: (modal) => {\n\t\t\t\t\t\thistory.replaceState(null, null, ' ');\n\t\t\t\t\t\tdocument.body.classList.remove('modal--is-open');\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$('body').removeClass('mobile-menu-open');\n\t\t\t$('.site-header__nav').removeClass('open');\n\t\t\t$('.mobile-menu-button')\n\t\t\t\t.removeClass('open')\n\t\t\t\t.attr('aria-expanded', 'false');\n\t\t})\n\n\t\tif(window.location.hash) {\n\t\t\tvar hash = window.location.hash;\n\t\t\t// document.body.classList.add('modal--is-open');\n\t\t\tif ( $(hash+'.modal').length ) {\n\n\t\t\t\tdocument.body.classList.add('modal--is-open');\n\n\t\t\t\tMicroModal.show( hash.replace('#', ''), {\n\t\t\t\t\tdisableFocus: true,\n\t\t\t\t\tonClose: modal => {\n\t\t\t\t\t\thistory.replaceState(null, null, ' ');\n\t\t\t\t\t\tdocument.body.classList.remove('modal--is-open');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t}\n\n\tconst closeAction = () => {\n\t\tfor (let index = 0; index < modal_close_buttons.length; index++) {\n\t\t\tconst modal_close_button = modal_close_buttons[index];\n\t\t\tlet all_iframes = document.querySelectorAll('iframe');\n\n\t\t\tmodal_close_button.addEventListener('click', () => {\n\t\t\t\tif(all_iframes && all_iframes.length > 0) {\n\t\t\t\t\tfor (let index = 0; index < all_iframes.length; index++) {\n\t\t\t\t\t\tif(all_iframes[index].src.includes('youtube') ) {\n\t\t\t\t\t\t\tconsole.log(all_iframes[index].contentWindow);\n\t\t\t\t\t\t\tall_iframes[index].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'pauseVideo' + '\",\"args\":\"\"}', '*');\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\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import { throttle } from 'lodash-es';\nimport Cookies from 'js-cookie';\n\nexport const Helpers = (function () {\n\t'use strict';\n\n\tfunction init() {\n\t\tcookie_banner();\n\t\tresponsive_videos();\n\t\tbody_scroll();\n\t\taccordions();\n\t}\n\n\tfunction cookie_banner() {\n\t\tlet banner = document.querySelector('.cookie-banner');\n\n\t\tif (!banner) return;\n\n\t\tbanner.querySelectorAll('button').forEach((btn) => {\n\t\t\tbtn.addEventListener('click', (ev) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tlet acceptance = btn.classList.contains('accept') ? 'yes' : 'no';\n\n\t\t\t\tCookies.set('acceptedCookiePrompt', acceptance);\n\t\t\t\twindow.location.reload();\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction responsive_videos() {\n\t\tlet responsiveVideos = document.querySelectorAll('.responsive-video');\n\n\t\tif (!responsiveVideos) return;\n\n\t\tresponsiveVideos.forEach((vid) => {\n\t\t\tlet playButton = vid.querySelector('.play-button');\n\t\t\tlet videoEl = vid.querySelector('video');\n\t\t\tlet iframe = vid.querySelector('iframe');\n\t\t\tlet cover = vid.querySelector('.responsive-video__cover');\n\n\t\t\tif (!playButton) return;\n\n\t\t\tif (iframe) {\n\t\t\t\tlet iframeOriginalSrc = iframe.getAttribute('src');\n\n\t\t\t\tiframe.setAttribute('src', iframe.getAttribute('src') + '&showinfo=0&controls=0');\n\t\t\t}\n\n\t\t\tplayButton.addEventListener('click', (ev) => {\n\t\t\t\tvid.classList.add('playing');\n\t\t\t});\n\n\t\t\tplayButton.addEventListener('transitionend', (ev) => {\n\t\t\t\tplayButton.parentNode.removeChild(playButton);\n\n\t\t\t\tif (cover) {\n\t\t\t\t\tcover.parentNode.removeChild(cover);\n\t\t\t\t}\n\n\t\t\t\tif (videoEl) {\n\t\t\t\t\tvideoEl.setAttribute('controls', 'controls');\n\t\t\t\t\tvideoEl.play();\n\t\t\t\t}\n\n\t\t\t\tif (iframe) {\n\t\t\t\t\tiframe.setAttribute('src', iframe.getAttribute('src') + '&autoplay=1');\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction body_scroll() {\n\t\twindow.addEventListener(\n\t\t\t'scroll',\n\t\t\tthrottle(() => {\n\t\t\t\twindow.scrollY > 100 ? document.body.classList.add('scrolled') : document.body.classList.remove('scrolled');\n\t\t\t}, 150)\n\t\t);\n\t}\n\n\tfunction getUrlParams(search) {\n\t\tif (search.length <= 1) return {};\n\t\tconst hashes = search.slice(search.indexOf('?') + 1).split('&');\n\t\tconst params = {};\n\t\thashes.map((hash) => {\n\t\t\tconst [key, val] = hash.split('=');\n\t\t\tparams[key] = decodeURIComponent(val);\n\t\t});\n\t\treturn params;\n\t}\n\n\tfunction accordions() {\n\t\tlet accordions = Array.from(document.querySelectorAll('[data-accordion]'));\n\n\t\tif (accordions.length === 0) return;\n\n\t\taccordions.forEach((accordion) => {\n\t\t\tlet trigger = accordion.querySelector('[data-accordion-trigger]');\n\n\t\t\ttrigger.addEventListener('click', (ev) => {\n\t\t\t\taccordion.classList.toggle('accordion-open');\n\t\t\t});\n\t\t});\n\t}\n\n\treturn {\n\t\tinit: init,\n\t\tgetUrlParams: getUrlParams,\n\t};\n})();\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","export const ExternalLinks = (function () {\n\t'use strict';\n\n\tfunction init() {\n\t\tevents();\n\t}\n\n\tfunction events() {\n\t\t$('body').on('click', 'a', function (event) {\n\t\t\tif (this.href.indexOf(window.location.host) < 0 && this.href.indexOf('mailto') < 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\twindow.open(this.href, '_blank');\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n","export const SomeModule = (function () {\n\t'use strict';\n\n\tfunction init() {\n\t\tevents();\n\t}\n\n\tfunction events() {}\n\n\treturn {\n\t\tinit: init,\n\t};\n})();\n"],"names":["$menu","$menuButton","$body","GaTracking","init","$","on","$t","this","cat","label","gtag","event_category","event_label","console","warn","gaClickHandler","data","Accessibility","document","body","addEventListener","e","key","classList","add","remove","AnimateIn","$win","$winH","$animateIn","threshold","distScrolled","resize","window","height","checkElements","scrollTop","each","i","el","$el","elTreshold","elDist","offset","top","addClass","length","Header","click","hasClass","removeClass","attr","AnchorLinks","anchorLinks","tapAction","ontouchstart","scrollToEl","id","target","startsWith","split","$target","animate","querySelectorAll","location","hash","index","anchorLink","querySelector","contains","preventDefault","href","origin","renderAnchorLinks","freeGlobal","global","Object","freeSelf","self","root","Function","Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","baseGetTag","value","isOwn","call","tag","unmasked","result","getRawTag","objectToString","reWhitespace","reTrimStart","baseTrim","string","slice","test","charAt","trimmedEndIndex","replace","isObject","type","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","now","Date","nativeMax","Math","max","nativeMin","min","debounce","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","clearTimeout","cancel","flush","$a","modal_close_buttons","closeAction","factory","extend","attributes","decode","s","decodeURIComponent","converter","api","set","path","defaults","expires","toUTCString","JSON","stringify","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","cookie","get","json","jar","cookies","parts","join","name","read","parse","getJSON","withConverter","module","Helpers","responsiveVideos","banner","forEach","btn","ev","acceptance","Cookies","reload","vid","playButton","videoEl","iframe","cover","getAttribute","setAttribute","parentNode","removeChild","play","throttle","scrollY","accordions","Array","from","accordion","toggle","getUrlParams","search","hashes","indexOf","params","map","val","Modals","modal_close_button","all_iframes","src","includes","log","contentWindow","postMessage","MicroModal","onShow","modal","history","replaceState","onClose","item","show","disableFocus","ExternalLinks","event","host","stopPropagation","open","SomeModule"],"mappings":"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"}