18F/18f.gsa.gov

View on GitHub
assets/js/lib/uswds.min.js.map

Summary

Maintainability
Test Coverage
{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/classlist-polyfill/src/index.js","node_modules/domready/ready.js","node_modules/elem-dataset/dist/index.js","node_modules/element-closest/element-closest.js","node_modules/keyboardevent-key-polyfill/index.js","node_modules/lodash.debounce/index.js","node_modules/object-assign/index.js","node_modules/receptor/behavior/index.js","node_modules/receptor/compose/index.js","node_modules/receptor/delegate/index.js","node_modules/receptor/delegateAll/index.js","node_modules/receptor/ignore/index.js","node_modules/receptor/index.js","node_modules/receptor/keymap/index.js","node_modules/receptor/once/index.js","node_modules/resolve-id-refs/index.js","src/js/components/accordion.js","src/js/components/banner.js","src/js/components/footer.js","src/js/components/index.js","src/js/components/navigation.js","src/js/components/password.js","src/js/components/search.js","src/js/components/skipnav.js","src/js/components/validator.js","src/js/config.js","src/js/events.js","src/js/polyfills/element-hidden.js","src/js/polyfills/index.js","src/js/start.js","src/js/utils/active-element.js","src/js/utils/behavior.js","src/js/utils/focus-trap.js","src/js/utils/is-in-viewport.js","src/js/utils/select.js","src/js/utils/toggle-field-mask.js","src/js/utils/toggle-form-input.js","src/js/utils/toggle.js","src/js/utils/validate-input.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","window","self","document","createElement","createElementNS","view","classListProp","protoProp","elemCtrProto","Element","objCtr","Object","strTrim","String","trim","this","replace","arrIndexOf","Array","indexOf","item","len","DOMEx","type","message","name","DOMException","checkTokenAndGetIndex","classList","token","test","ClassList","elem","trimmedClasses","getAttribute","classes","split","push","_updateClassName","setAttribute","toString","classListProto","classListGetter","contains","add","tokens","arguments","l","updated","remove","index","splice","toggle","force","result","method","join","defineProperty","classListPropDesc","get","enumerable","configurable","ex","undefined","number","__defineGetter__","testElement","createMethod","original","DOMTokenList","prototype","_toggle","definition","define","_typeof","amd","_listener","fns","doc","hack","documentElement","doScroll","domContentLoaded","loaded","readyState","addEventListener","removeEventListener","shift","fn","setTimeout","Boolean","dataset","aB","element","map","attributes","getter","value","setter","removeAttribute","j","attribute","prop","slice","charAt","toUpperCase","bind","set","ElementProto","matches","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","selector","elements","ownerDocument","querySelectorAll","closest","nodeType","parentNode","keyboardeventKeyPolyfill","polyfill","KeyboardEvent","proto","key","keys","which","keyCode","isArray","shiftKey","3","6","8","9","12","13","16","17","18","19","20","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","48","49","50","51","52","53","54","55","56","57","91","93","144","145","181","182","183","186","187","188","189","190","191","192","219","220","221","222","224","225","246","247","248","249","250","251","letter","fromCharCode","toLowerCase","now","root","Date","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","Function","objectToString","nativeMax","Math","max","nativeMin","min","isObject","isSymbol","isObjectLike","toNumber","other","valueOf","isBinary","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","cancel","clearTimeout","flush","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","assign","test1","getOwnPropertyNames","test2","test3","forEach","err","shouldUseNative","target","source","from","symbols","to","val","toObject","s","delegate","delegateAll","DELEGATE_PATTERN","popKey","obj","events","props","listeners","reduce","memo","handler","match","capture","passive","listener","_type","getListeners","concat","functions","some","event","compose","selectors","delegates","behavior","ignore","keymap","MODIFIERS","Alt","Control","Ctrl","Shift","hasModifiers","modifier","getEventKey","_key","wrapped","currentTarget","RE_TRIM","RE_SPLIT","str","ids","getElementById","id","querySelector","el","getAccordionButtons","accordion","select","BUTTON","filter","button","ACCORDION","toggleButton","expanded","safeExpanded","multiselectable","isElementInViewport","CLICK","PREFIX","prefix","EXPANDED","_defineProperty","preventDefault","scrollIntoView","init","show","hide","getButtons","HEADER","EXPANDED_CLASS","lastInnerWidth","debounce","HIDDEN","SCOPE","NAV","COLLAPSIBLE","resize","innerWidth","hidden","list","collapseEl","HIDE_MAX_WIDTH","DEBOUNCE_RATE","teardown","banner","footer","navigation","password","search","skipnav","validator","isActive","body","ACTIVE_CLASS","toggleNav","active","safeActive","TOGGLES","focusTrap","update","closeButton","CLOSE_BUTTON","menuButton","OPENERS","focus","activeElement","closer","getBoundingClientRect","width","onMenuClose","hideActiveNavDropdown","navActive","FocusTrap","NAV_LINKS","NAV_CONTROL","OVERLAY","CLOSERS","_CLICK","acc","btn","trapContainer","Escape","toggleFormInput","LINK","lastButton","FORM","toggleSearch","form","context","getForm","input","once","style","outline","validate","keyup change","input[data-validation-element]","elproto","HTMLElement","hasAttribute","domready","uswds","components","on","sequence","_len","seq","_this","Behavior","off","tabHandler","focusableElements","firstTabStop","lastTabStop","tabAhead","tabBack","additionalKeyBindings","tabEventHandler","keyMappings","Tab","Shift+Tab","keydown","win","docEl","rect","top","left","bottom","innerHeight","clientHeight","right","clientWidth","isElement","selection","field","mask","resolveIdRefs","toggleFieldMask","PRESSED","SHOW_ATTR","pressed","textContent","showText","hideText","getHideText","controls","CHECKED_CLASS","data","validationElement","checkList","entries","_ref","_ref2","_slicedToArray","startsWith","validatorName","substr","validatorPattern","RegExp","validatorSelector","validatorCheckbox","checked"],"mappings":"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","file":"uswds.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","/*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n/*global self, document, DOMException */\n\n/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\nif (\"document\" in window.self) {\n\n// Full polyfill for browsers with no classList support\n// Including IE < Edge missing SVGElement.classList\nif (!(\"classList\" in document.createElement(\"_\")) \n\t|| document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))) {\n\n(function (view) {\n\n\"use strict\";\n\nif (!('Element' in view)) return;\n\nvar\n\t  classListProp = \"classList\"\n\t, protoProp = \"prototype\"\n\t, elemCtrProto = view.Element[protoProp]\n\t, objCtr = Object\n\t, strTrim = String[protoProp].trim || function () {\n\t\treturn this.replace(/^\\s+|\\s+$/g, \"\");\n\t}\n\t, arrIndexOf = Array[protoProp].indexOf || function (item) {\n\t\tvar\n\t\t\t  i = 0\n\t\t\t, len = this.length\n\t\t;\n\t\tfor (; i < len; i++) {\n\t\t\tif (i in this && this[i] === item) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\t// Vendors: please allow content code to instantiate DOMExceptions\n\t, DOMEx = function (type, message) {\n\t\tthis.name = type;\n\t\tthis.code = DOMException[type];\n\t\tthis.message = message;\n\t}\n\t, checkTokenAndGetIndex = function (classList, token) {\n\t\tif (token === \"\") {\n\t\t\tthrow new DOMEx(\n\t\t\t\t  \"SYNTAX_ERR\"\n\t\t\t\t, \"An invalid or illegal string was specified\"\n\t\t\t);\n\t\t}\n\t\tif (/\\s/.test(token)) {\n\t\t\tthrow new DOMEx(\n\t\t\t\t  \"INVALID_CHARACTER_ERR\"\n\t\t\t\t, \"String contains an invalid character\"\n\t\t\t);\n\t\t}\n\t\treturn arrIndexOf.call(classList, token);\n\t}\n\t, ClassList = function (elem) {\n\t\tvar\n\t\t\t  trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\")\n\t\t\t, classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : []\n\t\t\t, i = 0\n\t\t\t, len = classes.length\n\t\t;\n\t\tfor (; i < len; i++) {\n\t\t\tthis.push(classes[i]);\n\t\t}\n\t\tthis._updateClassName = function () {\n\t\t\telem.setAttribute(\"class\", this.toString());\n\t\t};\n\t}\n\t, classListProto = ClassList[protoProp] = []\n\t, classListGetter = function () {\n\t\treturn new ClassList(this);\n\t}\n;\n// Most DOMException implementations don't allow calling DOMException's toString()\n// on non-DOMExceptions. Error's toString() is sufficient here.\nDOMEx[protoProp] = Error[protoProp];\nclassListProto.item = function (i) {\n\treturn this[i] || null;\n};\nclassListProto.contains = function (token) {\n\ttoken += \"\";\n\treturn checkTokenAndGetIndex(this, token) !== -1;\n};\nclassListProto.add = function () {\n\tvar\n\t\t  tokens = arguments\n\t\t, i = 0\n\t\t, l = tokens.length\n\t\t, token\n\t\t, updated = false\n\t;\n\tdo {\n\t\ttoken = tokens[i] + \"\";\n\t\tif (checkTokenAndGetIndex(this, token) === -1) {\n\t\t\tthis.push(token);\n\t\t\tupdated = true;\n\t\t}\n\t}\n\twhile (++i < l);\n\n\tif (updated) {\n\t\tthis._updateClassName();\n\t}\n};\nclassListProto.remove = function () {\n\tvar\n\t\t  tokens = arguments\n\t\t, i = 0\n\t\t, l = tokens.length\n\t\t, token\n\t\t, updated = false\n\t\t, index\n\t;\n\tdo {\n\t\ttoken = tokens[i] + \"\";\n\t\tindex = checkTokenAndGetIndex(this, token);\n\t\twhile (index !== -1) {\n\t\t\tthis.splice(index, 1);\n\t\t\tupdated = true;\n\t\t\tindex = checkTokenAndGetIndex(this, token);\n\t\t}\n\t}\n\twhile (++i < l);\n\n\tif (updated) {\n\t\tthis._updateClassName();\n\t}\n};\nclassListProto.toggle = function (token, force) {\n\ttoken += \"\";\n\n\tvar\n\t\t  result = this.contains(token)\n\t\t, method = result ?\n\t\t\tforce !== true && \"remove\"\n\t\t:\n\t\t\tforce !== false && \"add\"\n\t;\n\n\tif (method) {\n\t\tthis[method](token);\n\t}\n\n\tif (force === true || force === false) {\n\t\treturn force;\n\t} else {\n\t\treturn !result;\n\t}\n};\nclassListProto.toString = function () {\n\treturn this.join(\" \");\n};\n\nif (objCtr.defineProperty) {\n\tvar classListPropDesc = {\n\t\t  get: classListGetter\n\t\t, enumerable: true\n\t\t, configurable: true\n\t};\n\ttry {\n\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t} catch (ex) { // IE 8 doesn't support enumerable:true\n\t\t// adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n\t\t// modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n\t\tif (ex.number === undefined || ex.number === -0x7FF5EC54) {\n\t\t\tclassListPropDesc.enumerable = false;\n\t\t\tobjCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n\t\t}\n\t}\n} else if (objCtr[protoProp].__defineGetter__) {\n\telemCtrProto.__defineGetter__(classListProp, classListGetter);\n}\n\n}(window.self));\n\n}\n\n// There is full or partial native classList support, so just check if we need\n// to normalize the add/remove and toggle APIs.\n\n(function () {\n\t\"use strict\";\n\n\tvar testElement = document.createElement(\"_\");\n\n\ttestElement.classList.add(\"c1\", \"c2\");\n\n\t// Polyfill for IE 10/11 and Firefox <26, where classList.add and\n\t// classList.remove exist but support only one argument at a time.\n\tif (!testElement.classList.contains(\"c2\")) {\n\t\tvar createMethod = function(method) {\n\t\t\tvar original = DOMTokenList.prototype[method];\n\n\t\t\tDOMTokenList.prototype[method] = function(token) {\n\t\t\t\tvar i, len = arguments.length;\n\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\ttoken = arguments[i];\n\t\t\t\t\toriginal.call(this, token);\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\tcreateMethod('add');\n\t\tcreateMethod('remove');\n\t}\n\n\ttestElement.classList.toggle(\"c3\", false);\n\n\t// Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n\t// support the second argument.\n\tif (testElement.classList.contains(\"c3\")) {\n\t\tvar _toggle = DOMTokenList.prototype.toggle;\n\n\t\tDOMTokenList.prototype.toggle = function(token, force) {\n\t\t\tif (1 in arguments && !this.contains(token) === !force) {\n\t\t\t\treturn force;\n\t\t\t} else {\n\t\t\t\treturn _toggle.call(this, token);\n\t\t\t}\n\t\t};\n\n\t}\n\n\ttestElement = null;\n}());\n\n}\n","/*!\n  * domready (c) Dustin Diaz 2014 - License MIT\n  */\n!function (name, definition) {\n\n  if (typeof module != 'undefined') module.exports = definition()\n  else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)\n  else this[name] = definition()\n\n}('domready', function () {\n\n  var fns = [], listener\n    , doc = document\n    , hack = doc.documentElement.doScroll\n    , domContentLoaded = 'DOMContentLoaded'\n    , loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState)\n\n\n  if (!loaded)\n  doc.addEventListener(domContentLoaded, listener = function () {\n    doc.removeEventListener(domContentLoaded, listener)\n    loaded = 1\n    while (listener = fns.shift()) listener()\n  })\n\n  return function (fn) {\n    loaded ? setTimeout(fn, 0) : fns.push(fn)\n  }\n\n});\n","'use strict';\n\n// <3 Modernizr\n// https://raw.githubusercontent.com/Modernizr/Modernizr/master/feature-detects/dom/dataset.js\n\nfunction useNative() {\n\tvar elem = document.createElement('div');\n\telem.setAttribute('data-a-b', 'c');\n\n\treturn Boolean(elem.dataset && elem.dataset.aB === 'c');\n}\n\nfunction nativeDataset(element) {\n\treturn element.dataset;\n}\n\nmodule.exports = useNative() ? nativeDataset : function (element) {\n\tvar map = {};\n\tvar attributes = element.attributes;\n\n\tfunction getter() {\n\t\treturn this.value;\n\t}\n\n\tfunction setter(name, value) {\n\t\tif (typeof value === 'undefined') {\n\t\t\tthis.removeAttribute(name);\n\t\t} else {\n\t\t\tthis.setAttribute(name, value);\n\t\t}\n\t}\n\n\tfor (var i = 0, j = attributes.length; i < j; i++) {\n\t\tvar attribute = attributes[i];\n\n\t\tif (attribute) {\n\t\t\tvar name = attribute.name;\n\n\t\t\tif (name.indexOf('data-') === 0) {\n\t\t\t\tvar prop = name.slice(5).replace(/-./g, function (u) {\n\t\t\t\t\treturn u.charAt(1).toUpperCase();\n\t\t\t\t});\n\n\t\t\t\tvar value = attribute.value;\n\n\t\t\t\tObject.defineProperty(map, prop, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: getter.bind({ value: value || '' }),\n\t\t\t\t\tset: setter.bind(element, name)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn map;\n};\n\n","// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n\n(function (ElementProto) {\n\tif (typeof ElementProto.matches !== 'function') {\n\t\tElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n\t\t\tvar element = this;\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n\t\t\tvar index = 0;\n\n\t\t\twhile (elements[index] && elements[index] !== element) {\n\t\t\t\t++index;\n\t\t\t}\n\n\t\t\treturn Boolean(elements[index]);\n\t\t};\n\t}\n\n\tif (typeof ElementProto.closest !== 'function') {\n\t\tElementProto.closest = function closest(selector) {\n\t\t\tvar element = this;\n\n\t\t\twhile (element && element.nodeType === 1) {\n\t\t\t\tif (element.matches(selector)) {\n\t\t\t\t\treturn element;\n\t\t\t\t}\n\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\t}\n})(window.Element.prototype);\n","/* global define, KeyboardEvent, module */\n\n(function () {\n\n  var keyboardeventKeyPolyfill = {\n    polyfill: polyfill,\n    keys: {\n      3: 'Cancel',\n      6: 'Help',\n      8: 'Backspace',\n      9: 'Tab',\n      12: 'Clear',\n      13: 'Enter',\n      16: 'Shift',\n      17: 'Control',\n      18: 'Alt',\n      19: 'Pause',\n      20: 'CapsLock',\n      27: 'Escape',\n      28: 'Convert',\n      29: 'NonConvert',\n      30: 'Accept',\n      31: 'ModeChange',\n      32: ' ',\n      33: 'PageUp',\n      34: 'PageDown',\n      35: 'End',\n      36: 'Home',\n      37: 'ArrowLeft',\n      38: 'ArrowUp',\n      39: 'ArrowRight',\n      40: 'ArrowDown',\n      41: 'Select',\n      42: 'Print',\n      43: 'Execute',\n      44: 'PrintScreen',\n      45: 'Insert',\n      46: 'Delete',\n      48: ['0', ')'],\n      49: ['1', '!'],\n      50: ['2', '@'],\n      51: ['3', '#'],\n      52: ['4', '$'],\n      53: ['5', '%'],\n      54: ['6', '^'],\n      55: ['7', '&'],\n      56: ['8', '*'],\n      57: ['9', '('],\n      91: 'OS',\n      93: 'ContextMenu',\n      144: 'NumLock',\n      145: 'ScrollLock',\n      181: 'VolumeMute',\n      182: 'VolumeDown',\n      183: 'VolumeUp',\n      186: [';', ':'],\n      187: ['=', '+'],\n      188: [',', '<'],\n      189: ['-', '_'],\n      190: ['.', '>'],\n      191: ['/', '?'],\n      192: ['`', '~'],\n      219: ['[', '{'],\n      220: ['\\\\', '|'],\n      221: [']', '}'],\n      222: [\"'\", '\"'],\n      224: 'Meta',\n      225: 'AltGraph',\n      246: 'Attn',\n      247: 'CrSel',\n      248: 'ExSel',\n      249: 'EraseEof',\n      250: 'Play',\n      251: 'ZoomOut'\n    }\n  };\n\n  // Function keys (F1-24).\n  var i;\n  for (i = 1; i < 25; i++) {\n    keyboardeventKeyPolyfill.keys[111 + i] = 'F' + i;\n  }\n\n  // Printable ASCII characters.\n  var letter = '';\n  for (i = 65; i < 91; i++) {\n    letter = String.fromCharCode(i);\n    keyboardeventKeyPolyfill.keys[i] = [letter.toLowerCase(), letter.toUpperCase()];\n  }\n\n  function polyfill () {\n    if (!('KeyboardEvent' in window) ||\n        'key' in KeyboardEvent.prototype) {\n      return false;\n    }\n\n    // Polyfill `key` on `KeyboardEvent`.\n    var proto = {\n      get: function (x) {\n        var key = keyboardeventKeyPolyfill.keys[this.which || this.keyCode];\n\n        if (Array.isArray(key)) {\n          key = key[+this.shiftKey];\n        }\n\n        return key;\n      }\n    };\n    Object.defineProperty(KeyboardEvent.prototype, 'key', proto);\n    return proto;\n  }\n\n  if (typeof define === 'function' && define.amd) {\n    define('keyboardevent-key-polyfill', keyboardeventKeyPolyfill);\n  } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {\n    module.exports = keyboardeventKeyPolyfill;\n  } else if (window) {\n    window.keyboardeventKeyPolyfill = keyboardeventKeyPolyfill;\n  }\n\n})();\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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 objectToString = objectProto.toString;\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 * 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\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        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\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        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\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\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) && objectToString.call(value) == symbolTag);\n}\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 = value.replace(reTrim, '');\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\nmodule.exports = debounce;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","const assign = require('object-assign');\nconst delegate = require('../delegate');\nconst delegateAll = require('../delegateAll');\n\nconst DELEGATE_PATTERN = /^(.+):delegate\\((.+)\\)$/;\nconst SPACE = ' ';\n\nconst getListeners = function(type, handler) {\n  var match = type.match(DELEGATE_PATTERN);\n  var selector;\n  if (match) {\n    type = match[1];\n    selector = match[2];\n  }\n\n  var options;\n  if (typeof handler === 'object') {\n    options = {\n      capture: popKey(handler, 'capture'),\n      passive: popKey(handler, 'passive')\n    };\n  }\n\n  var listener = {\n    selector: selector,\n    delegate: (typeof handler === 'object')\n      ? delegateAll(handler)\n      : selector\n        ? delegate(selector, handler)\n        : handler,\n    options: options\n  };\n\n  if (type.indexOf(SPACE) > -1) {\n    return type.split(SPACE).map(function(_type) {\n      return assign({type: _type}, listener);\n    });\n  } else {\n    listener.type = type;\n    return [listener];\n  }\n};\n\nvar popKey = function(obj, key) {\n  var value = obj[key];\n  delete obj[key];\n  return value;\n};\n\nmodule.exports = function behavior(events, props) {\n  const listeners = Object.keys(events)\n    .reduce(function(memo, type) {\n      var listeners = getListeners(type, events[type]);\n      return memo.concat(listeners);\n    }, []);\n\n  return assign({\n    add: function addBehavior(element) {\n      listeners.forEach(function(listener) {\n        element.addEventListener(\n          listener.type,\n          listener.delegate,\n          listener.options\n        );\n      });\n    },\n    remove: function removeBehavior(element) {\n      listeners.forEach(function(listener) {\n        element.removeEventListener(\n          listener.type,\n          listener.delegate,\n          listener.options\n        );\n      });\n    }\n  }, props);\n};\n","module.exports = function compose(functions) {\n  return function(e) {\n    return functions.some(function(fn) {\n      return fn.call(this, e) === false;\n    }, this);\n  };\n};\n","// polyfill Element.prototype.closest\nrequire('element-closest');\n\nmodule.exports = function delegate(selector, fn) {\n  return function delegation(event) {\n    var target = event.target.closest(selector);\n    if (target) {\n      return fn.call(target, event);\n    }\n  }\n};\n","const delegate = require('../delegate');\nconst compose = require('../compose');\n\nconst SPLAT = '*';\n\nmodule.exports = function delegateAll(selectors) {\n  const keys = Object.keys(selectors)\n\n  // XXX optimization: if there is only one handler and it applies to\n  // all elements (the \"*\" CSS selector), then just return that\n  // handler\n  if (keys.length === 1 && keys[0] === SPLAT) {\n    return selectors[SPLAT];\n  }\n\n  const delegates = keys.reduce(function(memo, selector) {\n    memo.push(delegate(selector, selectors[selector]));\n    return memo;\n  }, []);\n  return compose(delegates);\n};\n","module.exports = function ignore(element, fn) {\n  return function ignorance(e) {\n    if (element !== e.target && !element.contains(e.target)) {\n      return fn.call(this, e);\n    }\n  };\n};\n","module.exports = {\n  behavior:     require('./behavior'),\n  delegate:     require('./delegate'),\n  delegateAll:  require('./delegateAll'),\n  ignore:       require('./ignore'),\n  keymap:       require('./keymap'),\n};\n","require('keyboardevent-key-polyfill');\n\n// these are the only relevant modifiers supported on all platforms,\n// according to MDN:\n// <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState>\nconst MODIFIERS = {\n  'Alt':      'altKey',\n  'Control':  'ctrlKey',\n  'Ctrl':     'ctrlKey',\n  'Shift':    'shiftKey'\n};\n\nconst MODIFIER_SEPARATOR = '+';\n\nconst getEventKey = function(event, hasModifiers) {\n  var key = event.key;\n  if (hasModifiers) {\n    for (var modifier in MODIFIERS) {\n      if (event[MODIFIERS[modifier]] === true) {\n        key = [modifier, key].join(MODIFIER_SEPARATOR);\n      }\n    }\n  }\n  return key;\n};\n\nmodule.exports = function keymap(keys) {\n  const hasModifiers = Object.keys(keys).some(function(key) {\n    return key.indexOf(MODIFIER_SEPARATOR) > -1;\n  });\n  return function(event) {\n    var key = getEventKey(event, hasModifiers);\n    return [key, key.toLowerCase()]\n      .reduce(function(result, _key) {\n        if (_key in keys) {\n          result = keys[key].call(this, event);\n        }\n        return result;\n      }, undefined);\n  };\n};\n\nmodule.exports.MODIFIERS = MODIFIERS;\n","module.exports = function once(listener, options) {\n  var wrapped = function wrappedOnce(e) {\n    e.currentTarget.removeEventListener(e.type, wrapped, options);\n    return listener.call(this, e);\n  };\n  return wrapped;\n};\n\n","'use strict';\n\nvar RE_TRIM = /(^\\s+)|(\\s+$)/g;\nvar RE_SPLIT = /\\s+/;\n\nvar trim = String.prototype.trim\n  ? function(str) { return str.trim(); }\n  : function(str) { return str.replace(RE_TRIM, ''); };\n\nvar queryById = function(id) {\n  return this.querySelector('[id=\"' + id.replace(/\"/g, '\\\\\"') + '\"]');\n};\n\nmodule.exports = function resolveIds(ids, doc) {\n  if (typeof ids !== 'string') {\n    throw new Error('Expected a string but got ' + (typeof ids));\n  }\n\n  if (!doc) {\n    doc = window.document;\n  }\n\n  var getElementById = doc.getElementById\n    ? doc.getElementById.bind(doc)\n    : queryById.bind(doc);\n\n  ids = trim(ids).split(RE_SPLIT);\n\n  // XXX we can short-circuit here because trimming and splitting a\n  // string of just whitespace produces an array containing a single,\n  // empty string\n  if (ids.length === 1 && ids[0] === '') {\n    return [];\n  }\n\n  return ids\n    .map(function(id) {\n      var el = getElementById(id);\n      if (!el) {\n        throw new Error('no element with id: \"' + id + '\"');\n      }\n      return el;\n    });\n};\n","const select = require(\"../utils/select\");\nconst behavior = require(\"../utils/behavior\");\nconst toggle = require(\"../utils/toggle\");\nconst isElementInViewport = require(\"../utils/is-in-viewport\");\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst ACCORDION = `.${PREFIX}-accordion, .${PREFIX}-accordion--bordered`;\nconst BUTTON = `.${PREFIX}-accordion__button[aria-controls]`;\nconst EXPANDED = \"aria-expanded\";\nconst MULTISELECTABLE = \"aria-multiselectable\";\n\n/**\n * Get an Array of button elements belonging directly to the given\n * accordion element.\n * @param {HTMLElement} accordion\n * @return {array<HTMLButtonElement>}\n */\nconst getAccordionButtons = accordion => {\n  const buttons = select(BUTTON, accordion);\n\n  return buttons.filter(button => button.closest(ACCORDION) === accordion);\n};\n\n/**\n * Toggle a button's \"pressed\" state, optionally providing a target\n * state.\n *\n * @param {HTMLButtonElement} button\n * @param {boolean?} expanded If no state is provided, the current\n * state will be toggled (from false to true, and vice-versa).\n * @return {boolean} the resulting state\n */\nconst toggleButton = (button, expanded) => {\n  const accordion = button.closest(ACCORDION);\n  let safeExpanded = expanded;\n\n  if (!accordion) {\n    throw new Error(`${BUTTON} is missing outer ${ACCORDION}`);\n  }\n\n  safeExpanded = toggle(button, expanded);\n\n  // XXX multiselectable is opt-in, to preserve legacy behavior\n  const multiselectable = accordion.getAttribute(MULTISELECTABLE) === \"true\";\n\n  if (safeExpanded && !multiselectable) {\n    getAccordionButtons(accordion).forEach(other => {\n      if (other !== button) {\n        toggle(other, false);\n      }\n    });\n  }\n};\n\n/**\n * @param {HTMLButtonElement} button\n * @return {boolean} true\n */\nconst showButton = button => toggleButton(button, true);\n\n/**\n * @param {HTMLButtonElement} button\n * @return {boolean} false\n */\nconst hideButton = button => toggleButton(button, false);\n\nconst accordion = behavior(\n  {\n    [CLICK]: {\n      [BUTTON](event) {\n        event.preventDefault();\n\n        toggleButton(this);\n\n        if (this.getAttribute(EXPANDED) === \"true\") {\n          // We were just expanded, but if another accordion was also just\n          // collapsed, we may no longer be in the viewport. This ensures\n          // that we are still visible, so the user isn't confused.\n          if (!isElementInViewport(this)) this.scrollIntoView();\n        }\n      }\n    }\n  },\n  {\n    init(root) {\n      select(BUTTON, root).forEach(button => {\n        const expanded = button.getAttribute(EXPANDED) === \"true\";\n        toggleButton(button, expanded);\n      });\n    },\n    ACCORDION,\n    BUTTON,\n    show: showButton,\n    hide: hideButton,\n    toggle: toggleButton,\n    getButtons: getAccordionButtons\n  }\n);\n\nmodule.exports = accordion;\n","const behavior = require(\"../utils/behavior\");\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst HEADER = `.${PREFIX}-banner__header`;\nconst EXPANDED_CLASS = `${PREFIX}-banner__header--expanded`;\n\nconst toggleBanner = function toggleEl(event) {\n  event.preventDefault();\n  this.closest(HEADER).classList.toggle(EXPANDED_CLASS);\n};\n\nmodule.exports = behavior({\n  [CLICK]: {\n    [`${HEADER} [aria-controls]`]: toggleBanner\n  }\n});\n","const debounce = require(\"lodash.debounce\");\nconst behavior = require(\"../utils/behavior\");\nconst select = require(\"../utils/select\");\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst HIDDEN = \"hidden\";\nconst SCOPE = `.${PREFIX}-footer--big`;\nconst NAV = `${SCOPE} nav`;\nconst BUTTON = `${NAV} .${PREFIX}-footer__primary-link`;\nconst COLLAPSIBLE = `.${PREFIX}-footer__primary-content--collapsible`;\n\nconst HIDE_MAX_WIDTH = 480;\nconst DEBOUNCE_RATE = 180;\n\nfunction showPanel() {\n  if (window.innerWidth < HIDE_MAX_WIDTH) {\n    const collapseEl = this.closest(COLLAPSIBLE);\n    collapseEl.classList.toggle(HIDDEN);\n\n    // NB: this *should* always succeed because the button\n    // selector is scoped to \".{prefix}-footer-big nav\"\n    const collapsibleEls = select(COLLAPSIBLE, collapseEl.closest(NAV));\n\n    collapsibleEls.forEach(el => {\n      if (el !== collapseEl) {\n        el.classList.add(HIDDEN);\n      }\n    });\n  }\n}\n\nlet lastInnerWidth;\n\nconst resize = debounce(() => {\n  if (lastInnerWidth === window.innerWidth) return;\n  lastInnerWidth = window.innerWidth;\n  const hidden = window.innerWidth < HIDE_MAX_WIDTH;\n  select(COLLAPSIBLE).forEach(list => list.classList.toggle(HIDDEN, hidden));\n}, DEBOUNCE_RATE);\n\nmodule.exports = behavior(\n  {\n    [CLICK]: {\n      [BUTTON]: showPanel\n    }\n  },\n  {\n    // export for use elsewhere\n    HIDE_MAX_WIDTH,\n    DEBOUNCE_RATE,\n\n    init() {\n      resize();\n      window.addEventListener(\"resize\", resize);\n    },\n\n    teardown() {\n      window.removeEventListener(\"resize\", resize);\n    }\n  }\n);\n","const accordion = require(\"./accordion\");\nconst banner = require(\"./banner\");\nconst footer = require(\"./footer\");\nconst navigation = require(\"./navigation\");\nconst password = require(\"./password\");\nconst search = require(\"./search\");\nconst skipnav = require(\"./skipnav\");\nconst validator = require(\"./validator\");\n\nmodule.exports = {\n  accordion,\n  banner,\n  footer,\n  navigation,\n  password,\n  search,\n  skipnav,\n  validator\n};\n","const behavior = require(\"../utils/behavior\");\nconst select = require(\"../utils/select\");\nconst toggle = require(\"../utils/toggle\");\nconst FocusTrap = require(\"../utils/focus-trap\");\nconst accordion = require(\"./accordion\");\n\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst BODY = \"body\";\nconst NAV = `.${PREFIX}-nav`;\nconst NAV_LINKS = `${NAV} a`;\nconst NAV_CONTROL = `button.${PREFIX}-nav__link`;\nconst OPENERS = `.${PREFIX}-menu-btn`;\nconst CLOSE_BUTTON = `.${PREFIX}-nav__close`;\nconst OVERLAY = `.${PREFIX}-overlay`;\nconst CLOSERS = `${CLOSE_BUTTON}, .${PREFIX}-overlay`;\nconst TOGGLES = [NAV, OVERLAY].join(\", \");\n\nconst ACTIVE_CLASS = \"usa-js-mobile-nav--active\";\nconst VISIBLE_CLASS = \"is-visible\";\n\nlet navigation;\nlet navActive;\n\nconst isActive = () => document.body.classList.contains(ACTIVE_CLASS);\n\nconst toggleNav = active => {\n  const { body } = document;\n  const safeActive = typeof active === \"boolean\" ? active : !isActive();\n\n  body.classList.toggle(ACTIVE_CLASS, safeActive);\n\n  select(TOGGLES).forEach(el => el.classList.toggle(VISIBLE_CLASS, safeActive));\n\n  navigation.focusTrap.update(safeActive);\n\n  const closeButton = body.querySelector(CLOSE_BUTTON);\n  const menuButton = body.querySelector(OPENERS);\n\n  if (safeActive && closeButton) {\n    // The mobile nav was just activated, so focus on the close button,\n    // which is just before all the nav elements in the tab order.\n    closeButton.focus();\n  } else if (\n    !safeActive &&\n    document.activeElement === closeButton &&\n    menuButton\n  ) {\n    // The mobile nav was just deactivated, and focus was on the close\n    // button, which is no longer visible. We don't want the focus to\n    // disappear into the void, so focus on the menu button if it's\n    // visible (this may have been what the user was just focused on,\n    // if they triggered the mobile nav by mistake).\n    menuButton.focus();\n  }\n\n  return safeActive;\n};\n\nconst resize = () => {\n  const closer = document.body.querySelector(CLOSE_BUTTON);\n\n  if (isActive() && closer && closer.getBoundingClientRect().width === 0) {\n    // When the mobile nav is active, and the close box isn't visible,\n    // we know the user's viewport has been resized to be larger.\n    // Let's make the page state consistent by deactivating the mobile nav.\n    navigation.toggleNav.call(closer, false);\n  }\n};\n\nconst onMenuClose = () => navigation.toggleNav.call(navigation, false);\nconst hideActiveNavDropdown = () => {\n  toggle(navActive, false);\n  navActive = null;\n};\n\nnavigation = behavior(\n  {\n    [CLICK]: {\n      [NAV_CONTROL]() {\n        // If another nav is open, close it\n        if (navActive && navActive !== this) {\n          hideActiveNavDropdown();\n        }\n        // store a reference to the last clicked nav link element, so we\n        // can hide the dropdown if another element on the page is clicked\n        if (navActive) {\n          hideActiveNavDropdown();\n        } else {\n          navActive = this;\n          toggle(navActive, true);\n        }\n\n        // Do this so the event handler on the body doesn't fire\n        return false;\n      },\n      [BODY]() {\n        if (navActive) {\n          hideActiveNavDropdown();\n        }\n      },\n      [OPENERS]: toggleNav,\n      [CLOSERS]: toggleNav,\n      [NAV_LINKS]() {\n        // A navigation link has been clicked! We want to collapse any\n        // hierarchical navigation UI it's a part of, so that the user\n        // can focus on whatever they've just selected.\n\n        // Some navigation links are inside accordions; when they're\n        // clicked, we want to collapse those accordions.\n        const acc = this.closest(accordion.ACCORDION);\n\n        if (acc) {\n          accordion.getButtons(acc).forEach(btn => accordion.hide(btn));\n        }\n\n        // If the mobile navigation menu is active, we want to hide it.\n        if (isActive()) {\n          navigation.toggleNav.call(navigation, false);\n        }\n      }\n    }\n  },\n  {\n    init(root) {\n      const trapContainer = root.querySelector(NAV);\n\n      if (trapContainer) {\n        navigation.focusTrap = FocusTrap(trapContainer, {\n          Escape: onMenuClose\n        });\n      }\n\n      resize();\n      window.addEventListener(\"resize\", resize, false);\n    },\n    teardown() {\n      window.removeEventListener(\"resize\", resize, false);\n      navActive = false;\n    },\n    focusTrap: null,\n    toggleNav\n  }\n);\n\nmodule.exports = navigation;\n","const behavior = require(\"../utils/behavior\");\nconst toggleFormInput = require(\"../utils/toggle-form-input\");\n\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst LINK = `.${PREFIX}-show-password, .${PREFIX}-show-multipassword`;\n\nfunction toggle(event) {\n  event.preventDefault();\n  toggleFormInput(this);\n}\n\nmodule.exports = behavior({\n  [CLICK]: {\n    [LINK]: toggle\n  }\n});\n","const ignore = require(\"receptor/ignore\");\nconst behavior = require(\"../utils/behavior\");\nconst select = require(\"../utils/select\");\n\nconst { CLICK } = require(\"../events\");\n\nconst BUTTON = \".js-search-button\";\nconst FORM = \".js-search-form\";\nconst INPUT = \"[type=search]\";\nconst CONTEXT = \"header\"; // XXX\n\nlet lastButton;\n\nconst getForm = button => {\n  const context = button.closest(CONTEXT);\n  return context ? context.querySelector(FORM) : document.querySelector(FORM);\n};\n\nconst toggleSearch = (button, active) => {\n  const form = getForm(button);\n\n  if (!form) {\n    throw new Error(`No ${FORM} found for search toggle in ${CONTEXT}!`);\n  }\n\n  /* eslint-disable no-param-reassign */\n  button.hidden = active;\n  form.hidden = !active;\n  /* eslint-enable */\n\n  if (!active) {\n    return;\n  }\n\n  const input = form.querySelector(INPUT);\n\n  if (input) {\n    input.focus();\n  }\n  // when the user clicks _outside_ of the form w/ignore(): hide the\n  // search, then remove the listener\n  const listener = ignore(form, () => {\n    if (lastButton) {\n      hideSearch.call(lastButton); // eslint-disable-line no-use-before-define\n    }\n\n    document.body.removeEventListener(CLICK, listener);\n  });\n\n  // Normally we would just run this code without a timeout, but\n  // IE11 and Edge will actually call the listener *immediately* because\n  // they are currently handling this exact type of event, so we'll\n  // make sure the browser is done handling the current click event,\n  // if any, before we attach the listener.\n  setTimeout(() => {\n    document.body.addEventListener(CLICK, listener);\n  }, 0);\n};\n\nfunction showSearch() {\n  toggleSearch(this, true);\n  lastButton = this;\n}\n\nfunction hideSearch() {\n  toggleSearch(this, false);\n  lastButton = undefined;\n}\n\nconst search = behavior(\n  {\n    [CLICK]: {\n      [BUTTON]: showSearch\n    }\n  },\n  {\n    init(target) {\n      select(BUTTON, target).forEach(button => {\n        toggleSearch(button, false);\n      });\n    },\n    teardown() {\n      // forget the last button clicked\n      lastButton = undefined;\n    }\n  }\n);\n\nmodule.exports = search;\n","const once = require(\"receptor/once\");\nconst behavior = require(\"../utils/behavior\");\nconst { CLICK } = require(\"../events\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst LINK = `.${PREFIX}-skipnav[href^=\"#\"], .${PREFIX}-footer__return-to-top [href^=\"#\"]`;\nconst MAINCONTENT = \"main-content\";\n\nfunction setTabindex() {\n  // NB: we know because of the selector we're delegating to below that the\n  // href already begins with '#'\n  const id = this.getAttribute(\"href\");\n  const target = document.getElementById(\n    id === \"#\" ? MAINCONTENT : id.slice(1)\n  );\n\n  if (target) {\n    target.style.outline = \"0\";\n    target.setAttribute(\"tabindex\", 0);\n    target.focus();\n    target.addEventListener(\n      \"blur\",\n      once(() => {\n        target.setAttribute(\"tabindex\", -1);\n      })\n    );\n  } else {\n    // throw an error?\n  }\n}\n\nmodule.exports = behavior({\n  [CLICK]: {\n    [LINK]: setTabindex\n  }\n});\n","const behavior = require(\"../utils/behavior\");\nconst validate = require(\"../utils/validate-input\");\n\nfunction change() {\n  validate(this);\n}\n\nconst validator = behavior({\n  \"keyup change\": {\n    \"input[data-validation-element]\": change\n  }\n});\n\nmodule.exports = validator;\n","module.exports = {\n  prefix: \"usa\"\n};\n","module.exports = {\n  // This used to be conditionally dependent on whether the\n  // browser supported touch events; if it did, `CLICK` was set to\n  // `touchstart`.  However, this had downsides:\n  //\n  // * It pre-empted mobile browsers' default behavior of detecting\n  //   whether a touch turned into a scroll, thereby preventing\n  //   users from using some of our components as scroll surfaces.\n  //\n  // * Some devices, such as the Microsoft Surface Pro, support *both*\n  //   touch and clicks. This meant the conditional effectively dropped\n  //   support for the user's mouse, frustrating users who preferred\n  //   it on those systems.\n  CLICK: \"click\"\n};\n","const elproto = window.HTMLElement.prototype;\nconst HIDDEN = \"hidden\";\n\nif (!(HIDDEN in elproto)) {\n  Object.defineProperty(elproto, HIDDEN, {\n    get() {\n      return this.hasAttribute(HIDDEN);\n    },\n    set(value) {\n      if (value) {\n        this.setAttribute(HIDDEN, \"\");\n      } else {\n        this.removeAttribute(HIDDEN);\n      }\n    }\n  });\n}\n","// polyfills HTMLElement.prototype.classList and DOMTokenList\nrequire(\"classlist-polyfill\");\n// polyfills HTMLElement.prototype.hidden\nrequire(\"./element-hidden\");\n","const domready = require(\"domready\");\n\n/**\n * The 'polyfills' define key ECMAScript 5 methods that may be missing from\n * older browsers, so must be loaded first.\n */\nrequire(\"./polyfills\");\n\nconst uswds = require(\"./config\");\n\nconst components = require(\"./components\");\n\nuswds.components = components;\n\ndomready(() => {\n  const target = document.body;\n  Object.keys(components).forEach(key => {\n    const behavior = components[key];\n    behavior.on(target);\n  });\n});\n\nmodule.exports = uswds;\n","module.exports = (htmlDocument = document) => htmlDocument.activeElement;\n","const assign = require(\"object-assign\");\nconst Behavior = require(\"receptor/behavior\");\n\n/**\n * @name sequence\n * @param {...Function} seq an array of functions\n * @return { closure } callHooks\n */\n// We use a named function here because we want it to inherit its lexical scope\n// from the behavior props object, not from the module\nconst sequence = (...seq) =>\n  function callHooks(target = document.body) {\n    seq.forEach(method => {\n      if (typeof this[method] === \"function\") {\n        this[method].call(this, target);\n      }\n    });\n  };\n\n/**\n * @name behavior\n * @param {object} events\n * @param {object?} props\n * @return {receptor.behavior}\n */\nmodule.exports = (events, props) =>\n  Behavior(\n    events,\n    assign(\n      {\n        on: sequence(\"init\", \"add\"),\n        off: sequence(\"teardown\", \"remove\")\n      },\n      props\n    )\n  );\n","const assign = require(\"object-assign\");\nconst { keymap } = require(\"receptor\");\nconst behavior = require(\"./behavior\");\nconst select = require(\"./select\");\nconst activeElement = require(\"./active-element\");\n\nconst FOCUSABLE =\n  'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable]';\n\nconst tabHandler = context => {\n  const focusableElements = select(FOCUSABLE, context);\n  const firstTabStop = focusableElements[0];\n  const lastTabStop = focusableElements[focusableElements.length - 1];\n\n  // Special rules for when the user is tabbing forward from the last focusable element,\n  // or when tabbing backwards from the first focusable element\n  function tabAhead(event) {\n    if (activeElement() === lastTabStop) {\n      event.preventDefault();\n      firstTabStop.focus();\n    }\n  }\n\n  function tabBack(event) {\n    if (activeElement() === firstTabStop) {\n      event.preventDefault();\n      lastTabStop.focus();\n    }\n  }\n\n  return {\n    firstTabStop,\n    lastTabStop,\n    tabAhead,\n    tabBack\n  };\n};\n\nmodule.exports = (context, additionalKeyBindings = {}) => {\n  const tabEventHandler = tabHandler(context);\n\n  //  TODO: In the future, loop over additional keybindings and pass an array\n  // of functions, if necessary, to the map keys. Then people implementing\n  // the focus trap could pass callbacks to fire when tabbing\n  const keyMappings = keymap(\n    assign(\n      {\n        Tab: tabEventHandler.tabAhead,\n        \"Shift+Tab\": tabEventHandler.tabBack\n      },\n      additionalKeyBindings\n    )\n  );\n\n  const focusTrap = behavior(\n    {\n      keydown: keyMappings\n    },\n    {\n      init() {\n        // TODO: is this desireable behavior? Should the trap always do this by default or should\n        // the component getting decorated handle this?\n        tabEventHandler.firstTabStop.focus();\n      },\n      update(isActive) {\n        if (isActive) {\n          this.on();\n        } else {\n          this.off();\n        }\n      }\n    }\n  );\n\n  return focusTrap;\n};\n","// https://stackoverflow.com/a/7557433\nfunction isElementInViewport(\n  el,\n  win = window,\n  docEl = document.documentElement\n) {\n  const rect = el.getBoundingClientRect();\n\n  return (\n    rect.top >= 0 &&\n    rect.left >= 0 &&\n    rect.bottom <= (win.innerHeight || docEl.clientHeight) &&\n    rect.right <= (win.innerWidth || docEl.clientWidth)\n  );\n}\n\nmodule.exports = isElementInViewport;\n","/**\n * @name isElement\n * @desc returns whether or not the given argument is a DOM element.\n * @param {any} value\n * @return {boolean}\n */\nconst isElement = value =>\n  value && typeof value === \"object\" && value.nodeType === 1;\n\n/**\n * @name select\n * @desc selects elements from the DOM by class selector or ID selector.\n * @param {string} selector - The selector to traverse the DOM with.\n * @param {Document|HTMLElement?} context - The context to traverse the DOM\n *   in. If not provided, it defaults to the document.\n * @return {HTMLElement[]} - An array of DOM nodes or an empty array.\n */\nmodule.exports = (selector, context) => {\n  if (typeof selector !== \"string\") {\n    return [];\n  }\n\n  if (!context || !isElement(context)) {\n    context = window.document; // eslint-disable-line no-param-reassign\n  }\n\n  const selection = context.querySelectorAll(selector);\n  return Array.prototype.slice.call(selection);\n};\n","/**\n * Flips given INPUT elements between masked (hiding the field value) and unmasked\n * @param {Array.HTMLElement} fields - An array of INPUT elements\n * @param {Boolean} mask - Whether the mask should be applied, hiding the field value\n */\nmodule.exports = (field, mask) => {\n  field.setAttribute(\"autocapitalize\", \"off\");\n  field.setAttribute(\"autocorrect\", \"off\");\n  field.setAttribute(\"type\", mask ? \"password\" : \"text\");\n};\n","const resolveIdRefs = require(\"resolve-id-refs\");\nconst toggleFieldMask = require(\"./toggle-field-mask\");\n\nconst CONTROLS = \"aria-controls\";\nconst PRESSED = \"aria-pressed\";\nconst SHOW_ATTR = \"data-show-text\";\nconst HIDE_ATTR = \"data-hide-text\";\n\n/**\n * Replace the word \"Show\" (or \"show\") with \"Hide\" (or \"hide\") in a string.\n * @param {string} showText\n * @return {strong} hideText\n */\nconst getHideText = showText =>\n  showText.replace(/\\bShow\\b/i, show => `${show[0] === \"S\" ? \"H\" : \"h\"}ide`);\n\n/**\n * Component that decorates an HTML element with the ability to toggle the\n * masked state of an input field (like a password) when clicked.\n * The ids of the fields to be masked will be pulled directly from the button's\n * `aria-controls` attribute.\n *\n * @param  {HTMLElement} el    Parent element containing the fields to be masked\n * @return {boolean}\n */\nmodule.exports = el => {\n  // this is the *target* state:\n  // * if the element has the attr and it's !== \"true\", pressed is true\n  // * otherwise, pressed is false\n  const pressed =\n    el.hasAttribute(PRESSED) && el.getAttribute(PRESSED) !== \"true\";\n\n  const fields = resolveIdRefs(el.getAttribute(CONTROLS));\n  fields.forEach(field => toggleFieldMask(field, pressed));\n\n  if (!el.hasAttribute(SHOW_ATTR)) {\n    el.setAttribute(SHOW_ATTR, el.textContent);\n  }\n\n  const showText = el.getAttribute(SHOW_ATTR);\n  const hideText = el.getAttribute(HIDE_ATTR) || getHideText(showText);\n\n  el.textContent = pressed ? showText : hideText; // eslint-disable-line no-param-reassign\n  el.setAttribute(PRESSED, pressed);\n  return pressed;\n};\n","const EXPANDED = \"aria-expanded\";\nconst CONTROLS = \"aria-controls\";\nconst HIDDEN = \"hidden\";\n\nmodule.exports = (button, expanded) => {\n  let safeExpanded = expanded;\n\n  if (typeof safeExpanded !== \"boolean\") {\n    safeExpanded = button.getAttribute(EXPANDED) === \"false\";\n  }\n\n  button.setAttribute(EXPANDED, safeExpanded);\n\n  const id = button.getAttribute(CONTROLS);\n  const controls = document.getElementById(id);\n  if (!controls) {\n    throw new Error(`No toggle target found with id: \"${id}\"`);\n  }\n\n  if (safeExpanded) {\n    controls.removeAttribute(HIDDEN);\n  } else {\n    controls.setAttribute(HIDDEN, \"\");\n  }\n\n  return safeExpanded;\n};\n","const dataset = require(\"elem-dataset\");\n\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst CHECKED = \"aria-checked\";\nconst CHECKED_CLASS = `${PREFIX}-checklist__item--checked`;\n\nmodule.exports = function validate(el) {\n  const data = dataset(el);\n  const id = data.validationElement;\n  const checkList =\n    id.charAt(0) === \"#\"\n      ? document.querySelector(id)\n      : document.getElementById(id);\n\n  if (!checkList) {\n    throw new Error(`No validation element found with id: \"${id}\"`);\n  }\n\n  Object.entries(data).forEach(([key, value]) => {\n    if (key.startsWith(\"validate\")) {\n      const validatorName = key.substr(\"validate\".length).toLowerCase();\n      const validatorPattern = new RegExp(value);\n      const validatorSelector = `[data-validator=\"${validatorName}\"]`;\n      const validatorCheckbox = checkList.querySelector(validatorSelector);\n\n      if (!validatorCheckbox) {\n        throw new Error(`No validator checkbox found for: \"${validatorName}\"`);\n      }\n\n      const checked = validatorPattern.test(el.value);\n      validatorCheckbox.classList.toggle(CHECKED_CLASS, checked);\n      validatorCheckbox.setAttribute(CHECKED, checked);\n    }\n  });\n};\n"]}