{"version":3,"file":"vendors.js","sources":["../../node_modules/focus-visible/dist/focus-visible.js","../../node_modules/quicklink/dist/quicklink.mjs","../../node_modules/svg4everybody/dist/svg4everybody.js","../../sources/javascripts/vendors/_vendors.modernizr.js","../../node_modules/vh-check/dist/vh-check.js","../../sources/javascripts/vendors.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName == 'INPUT' && inputTypesWhitelist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName == 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState == 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n","function n(n){return new Promise(function(e,t,r){(r=new XMLHttpRequest).open(\"GET\",n,r.withCredentials=!0),r.onload=function(){200===r.status?e():t()},r.send()})}var e,t=(e=document.createElement(\"link\")).relList&&e.relList.supports&&e.relList.supports(\"prefetch\")?function(n){return new Promise(function(e,t,r){(r=document.createElement(\"link\")).rel=\"prefetch\",r.href=n,r.onload=e,r.onerror=t,document.head.appendChild(r)})}:n,r=window.requestIdleCallback||function(n){var e=Date.now();return setTimeout(function(){n({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})},1)},o=new Set;function i(n){if(n||(n={}),window.IntersectionObserver){var e=function(n){n=n||1;var e=[],t=0;function r(){t0&&(e.shift()(),t++)}return[function(n){e.push(n)>1||r()},function(){t--,r()}]}(n.throttle||1/0),t=e[0],i=e[1],u=n.limit||1/0,a=n.origins||[location.hostname],f=n.ignores||[],s=n.timeoutFn||r,l=new IntersectionObserver(function(e){e.forEach(function(e){e.isIntersecting&&(l.unobserve(e=e.target),o.size collection\n for (// get the cached index\n var index = 0; index < uses.length; ) {\n // get the current \n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});","/*!\n * modernizr v3.6.0\n * Build https://modernizr.com/download?-touchevents-setclasses-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\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(window, document, undefined){\n var classes = [];\n \n\n var tests = [];\n \n\n /**\n *\n * ModernizrProto is the constructor for Modernizr\n *\n * @class\n * @access public\n */\n\n var ModernizrProto = {\n // The current version, dummy\n _version: '3.6.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 /**\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\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\n var isSVG = docElement.nodeName.toLowerCase() === 'svg';\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\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 className += ' ' + classPrefix + classes.join(' ' + classPrefix);\n if (isSVG) {\n docElement.className.baseVal = className;\n } else {\n docElement.className = className;\n }\n }\n\n }\n\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}\n */\n\n function is(obj, type) {\n return typeof obj === type;\n }\n ;\n\n /**\n * Run through all tests and detect their support in the current UA.\n *\n * @access private\n */\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\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\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]] = result;\n }\n\n classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\n }\n }\n }\n }\n ;\n\n /**\n * List of property values to set for css tests. See ticket #21\n * http://git.io/vUGl4\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 kebab-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\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 * 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\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 * 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\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}\n */\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) {\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 /**\n * testStyles injects an element with style element and some CSS rules\n *\n * @memberof Modernizr\n * @name Modernizr.testStyles\n * @optionName Modernizr.testStyles()\n * @optionProp testStyles\n * @access public\n * @function testStyles\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}\n * @example\n *\n * `Modernizr.testStyles` takes a CSS rule and injects it onto the current page\n * along with (possibly multiple) DOM elements. This lets you check for features\n * that can not be detected by simply checking the [IDL](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Interface_development_guide/IDL_interface_rules).\n *\n * ```js\n * Modernizr.testStyles('#modernizr { width: 9px; color: papayawhip; }', function(elem, rule) {\n * // elem is the first DOM node in the page (by default #modernizr)\n * // rule is the first argument you supplied - the CSS rule in string form\n *\n * addTest('widthworks', elem.style.width === '9px')\n * });\n * ```\n *\n * If your test requires multiple nodes, you can include a third argument\n * indicating how many additional div elements to include on the page. The\n * additional nodes are injected as children of the `elem` that is returned as\n * the first argument to the callback.\n *\n * ```js\n * Modernizr.testStyles('#modernizr {width: 1px}; #modernizr2 {width: 2px}', function(elem) {\n * document.getElementById('modernizr').style.width === '1px'; // true\n * document.getElementById('modernizr2').style.width === '2px'; // true\n * elem.firstChild === document.getElementById('modernizr2'); // true\n * }, 1);\n * ```\n *\n * By default, all of the additional elements have an ID of `modernizr[n]`, where\n * `n` is its index (e.g. the first additional, second overall is `#modernizr2`,\n * the second additional is `#modernizr3`, etc.).\n * If you want to have more meaningful IDs for your function, you can provide\n * them as the fourth argument, as an array of strings\n *\n * ```js\n * Modernizr.testStyles('#foo {width: 10px}; #bar {height: 20px}', function(elem) {\n * elem.firstChild === document.getElementById('foo'); // true\n * elem.lastChild === document.getElementById('bar'); // true\n * }, 2, ['foo', 'bar']);\n * ```\n *\n */\n\n var testStyles = ModernizrProto.testStyles = injectElementWithStyles;\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 \"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](http://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: http://crbug.com/36415\n Modernizr.addTest('touchevents', function() {\n var bool;\n if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n bool = true;\n } else {\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n var query = ['@media (', prefixes.join('touch-enabled),('), 'heartz', ')', '{#modernizr{top:9px;position:absolute}}'].join('');\n testStyles(query, function(node) {\n bool = node.offsetTop === 9;\n });\n }\n return bool;\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 window.Modernizr = Modernizr;\n\n\n;\n\n})(window, document);","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.vhCheck = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n // don't know a better way to get the size of a CSS 100vh…\r\n function createTestElement() {\r\n var testElement = document.createElement('div');\r\n testElement.style.cssText =\r\n 'position: fixed; top: 0; height: 100vh; pointer-events: none;';\r\n document.documentElement.insertBefore(testElement, document.documentElement.firstChild);\r\n return testElement;\r\n }\r\n function removeTestElement(element) {\r\n document.documentElement.removeChild(element);\r\n }\r\n // in some browsers this will be bigger than window.innerHeight\r\n function checkSizes() {\r\n var vhTest = createTestElement();\r\n var windowHeight = window.innerHeight;\r\n var vh = vhTest.offsetHeight;\r\n var offset = vh - windowHeight;\r\n removeTestElement(vhTest);\r\n return {\r\n vh: vh,\r\n windowHeight: windowHeight,\r\n offset: offset,\r\n isNeeded: offset !== 0,\r\n value: 0,\r\n };\r\n }\r\n // export\r\n function noop() { }\r\n function computeDifference() {\r\n var sizes = checkSizes();\r\n sizes.value = sizes.offset;\r\n return sizes;\r\n }\r\n function redefineVhUnit() {\r\n var sizes = checkSizes();\r\n sizes.value = sizes.windowHeight * 0.01;\r\n return sizes;\r\n }\n\n var methods = /*#__PURE__*/Object.freeze({\n noop: noop,\n computeDifference: computeDifference,\n redefineVhUnit: redefineVhUnit\n });\n\n function isString(text) {\r\n return typeof text === \"string\" && text.length > 0;\r\n }\r\n function isFunction(f) {\r\n return typeof f === \"function\";\r\n }\r\n var defaultOptions = Object.freeze({\r\n cssVarName: 'vh-offset',\r\n redefineVh: false,\r\n method: computeDifference,\r\n force: false,\r\n bind: true,\r\n updateOnTouch: false,\r\n onUpdate: noop,\r\n });\r\n function getOptions(options) {\r\n // old options handling: only redefine the CSS var name\r\n if (isString(options)) {\r\n return __assign({}, defaultOptions, { cssVarName: options });\r\n }\r\n // be sure to have a configuration object\r\n if (typeof options !== 'object')\r\n return defaultOptions;\r\n // make sure we have the right options to start with\r\n var finalOptions = {\r\n force: options.force === true,\r\n bind: options.bind !== false,\r\n updateOnTouch: options.updateOnTouch === true,\r\n onUpdate: isFunction(options.onUpdate) ? options.onUpdate : noop,\r\n };\r\n // method change\r\n var redefineVh = options.redefineVh === true;\r\n finalOptions.method =\r\n methods[redefineVh ? 'redefineVhUnit' : 'computeDifference'];\r\n finalOptions.cssVarName = isString(options.cssVarName)\r\n ? options.cssVarName\r\n : redefineVh\r\n ? /*\r\n when redefining vh unit we follow this article name convention\r\n https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\r\n */\r\n 'vh'\r\n : defaultOptions.cssVarName;\r\n return finalOptions;\r\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n var passiveSupported = false;\r\n var eventListeners = [];\r\n /* istanbul ignore next */\r\n try {\r\n var options = Object.defineProperty({}, \"passive\", {\r\n get: function () {\r\n passiveSupported = true;\r\n },\r\n });\r\n window.addEventListener(\"test\", options, options);\r\n window.removeEventListener(\"test\", options, options);\r\n }\r\n catch (err) {\r\n passiveSupported = false;\r\n }\r\n function addListener(eventName, callback) {\r\n eventListeners.push({\r\n eventName: eventName,\r\n callback: callback,\r\n });\r\n window.addEventListener(eventName, callback, \r\n /* istanbul ignore next */\r\n passiveSupported ? { passive: true } : false);\r\n }\r\n function removeAll() {\r\n eventListeners.forEach(function (config) {\r\n window.removeEventListener(config.eventName, config.callback);\r\n });\r\n eventListeners = [];\r\n }\n\n function updateCssVar(cssVarName, result) {\r\n document.documentElement.style.setProperty(\"--\" + cssVarName, result.value + \"px\");\r\n }\r\n function formatResult(sizes, options) {\r\n return __assign({}, sizes, { unbind: removeAll, recompute: options.method });\r\n }\r\n function vhCheck(options) {\r\n var config = Object.freeze(getOptions(options));\r\n var result = formatResult(config.method(), config);\r\n // usefulness check\r\n if (!result.isNeeded && !config.force) {\r\n return result;\r\n }\r\n updateCssVar(config.cssVarName, result);\r\n config.onUpdate(result);\r\n // enabled by default\r\n if (!config.bind)\r\n return result;\r\n function onWindowChange() {\r\n window.requestAnimationFrame(function () {\r\n var sizes = config.method();\r\n updateCssVar(config.cssVarName, sizes);\r\n config.onUpdate(formatResult(sizes, config));\r\n });\r\n }\r\n // be sure we don't duplicates events listeners\r\n result.unbind();\r\n // listen for orientation change\r\n // - this can't be configured\r\n // - because it's convenient and not a real performance bottleneck\r\n addListener('orientationchange', onWindowChange);\r\n // listen to touch move for scrolling\r\n // – disabled by default\r\n // - listening to scrolling can be expansive…\r\n if (config.updateOnTouch) {\r\n addListener('touchmove', onWindowChange);\r\n }\r\n return result;\r\n }\n\n return vhCheck;\n\n})));\n","import \"focus-visible/dist/focus-visible\";\nimport \"quicklink/dist/quicklink\";\nimport svg4everybody from 'svg4everybody';\nimport \"./vendors/_vendors.modernizr\";\nimport vhCheck from 'vh-check';\n\nsvg4everybody();\n\nconst vh_check = vhCheck();\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n"],"names":["applyFocusVisiblePolyfill","scope","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","text","search","url","tel","email","password","number","date","month","week","time","datetime","isValidFocusTarget","el","document","nodeName","classList","addFocusVisibleClass","contains","add","setAttribute","onPointerDown","e","addInitialPointerMoveListeners","addEventListener","onInitialPointerMove","target","toLowerCase","removeEventListener","metaKey","altKey","ctrlKey","activeElement","visibilityState","type","tagName","readOnly","isContentEditable","hasAttribute","window","clearTimeout","setTimeout","remove","removeAttribute","nodeType","Node","DOCUMENT_FRAGMENT_NODE","host","DOCUMENT_NODE","documentElement","event","CustomEvent","error","createEvent","initCustomEvent","dispatchEvent","factory","createElement","relList","supports","root","this","embed","parent","svg","fragment","createDocumentFragment","viewBox","getAttribute","clone","cloneNode","childNodes","length","appendChild","firstChild","loadreadystatechange","xhr","onreadystatechange","readyState","cachedDocument","_cachedDocument","implementation","createHTMLDocument","body","innerHTML","responseText","_cachedTarget","_embeds","splice","map","item","id","getElementById","getSVGAncestor","node","parentNode","rawopts","polyfill","opts","Object","inIframe","top","self","test","navigator","userAgent","match","requests","requestAnimationFrame","uses","getElementsByTagName","numberOfSvgUseElementsToBypass","oninterval","index","use","src","attributeName","validate","removeChild","srcSplit","split","shift","join","XMLHttpRequest","open","send","push","module","exports","svg4everybody","undefined","classes","tests","ModernizrProto","_version","_config","_q","on","cb","addTest","name","fn","options","addAsyncTest","Modernizr","prototype","docElement","isSVG","prefixes","usePrefixes","arguments","createElementNS","call","apply","_prefixes","testStyles","rule","callback","nodes","testnames","style","ret","docOverflow","mod","div","fake","getBody","parseInt","styleSheet","cssText","createTextNode","background","overflow","offsetHeight","bool","DocumentTouch","query","offsetTop","featureNames","feature","aliasIdx","result","nameIdx","featureNameSplit","obj","featureIdx","hasOwnProperty","aliases","_typeof","Boolean","testRunner","className","classPrefix","baseVal","enableJSClass","reJS","RegExp","replace","enableClasses","setClasses","i","__assign","assign","t","s","n","p","checkSizes","testElement","element","vhTest","insertBefore","windowHeight","innerHeight","vh","offset","isNeeded","value","noop","computeDifference","sizes","methods","freeze","redefineVhUnit","isString","defaultOptions","cssVarName","redefineVh","method","force","bind","updateOnTouch","onUpdate","passiveSupported","eventListeners","defineProperty","get","err","addListener","eventName","passive","removeAll","forEach","config","updateCssVar","setProperty","formatResult","unbind","recompute","f","finalOptions","getOptions","onWindowChange","vhCheck","NodeList","Array"],"mappings":"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"}