18F/18f.gsa.gov

View on GitHub
_sass/_libs/uswds/js/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/character-count.js","src/js/components/combo-box.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/custom-event.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","createMethod","_toggle","testElement","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__","original","DOMTokenList","prototype","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","prop","attribute","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","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","debounced","isInvoking","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","getCharacterCountElements","inputEl","characterCountEl","CHARACTER_COUNT","INPUT","messageEl","MESSAGE","updateCountMessage","currentLength","isOverLimit","difference","characters","guidance","newMessage","_getCharacterCountEle","maxlength","abs","MESSAGE_INVALID_CLASS","innerHTML","validationMessage","setCustomValidity","VALIDATION_MESSAGE","characterCount","input","changeElementValue","elementToChange","CustomEvent","bubbles","cancelable","detail","dispatchEvent","getComboBoxContext","comboBoxEl","COMBO_BOX","selectEl","SELECT","listEl","LIST","statusEl","STATUS","focusedOptionEl","LIST_OPTION_FOCUSED","selectedOptionEl","LIST_OPTION_SELECTED","toggleListBtnEl","TOGGLE_LIST_BUTTON","clearInputBtnEl","CLEAR_INPUT_BUTTON","isPristine","COMBO_BOX_PRISTINE_CLASS","disable","_getComboBoxContext","hidden","disabled","highlightOption","currentEl","nextEl","optionBottom","_ref","skipFocus","preventScroll","_getComboBoxContext4","tabIndex","LIST_OPTION_FOCUSED_CLASS","offsetTop","offsetHeight","scrollTop","focus","displayList","selectedItemId","_getComboBoxContext5","listOptionBaseId","inputValue","optionEl","text","numOptions","optionHtml","option","optionId","LIST_OPTION_CLASS","tabindex","LIST_OPTION_SELECTED_CLASS","noResults","hideList","_getComboBoxContext6","selectItem","listOptionEl","_getComboBoxContext7","textContent","resetSelection","_getComboBoxContext9","selectValue","handleDown","_getComboBoxContext12","nextOptionEl","LIST_OPTION","nextSibling","handleUpFromListOption","_getComboBoxContext14","previousSibling","listShown","COMBO_BOX_CLASS","SELECT_CLASS","INPUT_CLASS","CLEAR_INPUT_BUTTON_CLASS","CLEAR_INPUT_BUTTON_WRAPPER_CLASS","INPUT_BUTTON_SEPARATOR_CLASS","TOGGLE_LIST_BUTTON_CLASS","TOGGLE_LIST_BUTTON_WRAPPER_CLASS","LIST_CLASS","STATUS_CLASS","comboBox","_behavior","_CLICK","_getComboBoxContext17","_getComboBoxContext16","_getComboBoxContext8","relatedTarget","_keydown","ArrowDown","Down","Escape","_getComboBoxContext11","Enter","_getComboBoxContext13","_getComboBoxContext10","completeSelection","ArrowUp","Up","Tab","Shift+Tab","_getComboBoxContext15","selectedOption","selectId","listId","assistiveHintID","additionalAttributes","defaultValue","placeholder","hasAttribute","insertAdjacentHTML","enhanceComboBox","enable","_getComboBoxContext2","lastInnerWidth","debounce","HIDDEN","SCOPE","NAV","COLLAPSIBLE","resize","innerWidth","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","activeElement","closer","getBoundingClientRect","width","onMenuClose","hideActiveNavDropdown","navActive","FocusTrap","NAV_LINKS","NAV_CONTROL","OVERLAY","CLOSERS","acc","btn","trapContainer","toggleFormInput","LINK","lastButton","FORM","toggleSearch","context","form","once","style","outline","validate","keyup change","input[data-validation-element]","_params","params","evt","createEvent","initCustomEvent","elproto","HTMLElement","domready","uswds","components","on","sequence","_len","seq","_this","Behavior","off","tabHandler","focusableElements","firstTabStop","lastTabStop","tabAhead","tabBack","additionalKeyBindings","tabEventHandler","Esc","keyMappings","keydown","win","docEl","rect","top","left","bottom","innerHeight","clientHeight","right","clientWidth","selection","field","mask","resolveIdRefs","toggleFieldMask","PRESSED","SHOW_ATTR","pressed","showText","hideText","controls","CHECKED_CLASS","data","validationElement","checkList","entries","_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 select = require(\"../utils/select\");\nconst behavior = require(\"../utils/behavior\");\nconst { prefix: PREFIX } = require(\"../config\");\n\nconst CHARACTER_COUNT = `.${PREFIX}-character-count`;\nconst INPUT = `.${PREFIX}-character-count__field`;\nconst MESSAGE = `.${PREFIX}-character-count__message`;\nconst VALIDATION_MESSAGE = \"The content is too long.\";\nconst MESSAGE_INVALID_CLASS = `${PREFIX}-character-count__message--invalid`;\n\n/**\n * The elements within the character count.\n * @typedef {Object} CharacterCountElements\n * @property {HTMLDivElement} characterCountEl\n * @property {HTMLSpanElement} messageEl\n */\n\n/**\n * Returns the root and message element\n * for an character count input\n *\n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input element\n * @returns {CharacterCountElements} elements The root and message element.\n */\nconst getCharacterCountElements = inputEl => {\n  const characterCountEl = inputEl.closest(CHARACTER_COUNT);\n\n  if (!characterCountEl) {\n    throw new Error(`${INPUT} is missing outer ${CHARACTER_COUNT}`);\n  }\n\n  const messageEl = characterCountEl.querySelector(MESSAGE);\n\n  if (!messageEl) {\n    throw new Error(`${CHARACTER_COUNT} is missing inner ${MESSAGE}`);\n  }\n\n  return { characterCountEl, messageEl };\n};\n\n/**\n * Update the character count component\n *\n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input element\n */\nconst updateCountMessage = inputEl => {\n  const { characterCountEl, messageEl } = getCharacterCountElements(inputEl);\n\n  const maxlength = parseInt(\n    characterCountEl.getAttribute(\"data-maxlength\"),\n    10\n  );\n\n  if (!maxlength) return;\n\n  let newMessage = \"\";\n  const currentLength = inputEl.value.length;\n  const isOverLimit = currentLength && currentLength > maxlength;\n\n  if (currentLength === 0) {\n    newMessage = `${maxlength} characters allowed`;\n  } else {\n    const difference = Math.abs(maxlength - currentLength);\n    const characters = `character${difference === 1 ? \"\" : \"s\"}`;\n    const guidance = isOverLimit ? \"over limit\" : \"left\";\n\n    newMessage = `${difference} ${characters} ${guidance}`;\n  }\n\n  messageEl.classList.toggle(MESSAGE_INVALID_CLASS, isOverLimit);\n  messageEl.innerHTML = newMessage;\n\n  if (isOverLimit && !inputEl.validationMessage) {\n    inputEl.setCustomValidity(VALIDATION_MESSAGE);\n  }\n\n  if (!isOverLimit && inputEl.validationMessage === VALIDATION_MESSAGE) {\n    inputEl.setCustomValidity(\"\");\n  }\n};\n\n/**\n * Setup the character count component\n *\n * @param {HTMLInputElement|HTMLTextAreaElement} inputEl The character count input element\n */\nconst setupAttributes = inputEl => {\n  const { characterCountEl } = getCharacterCountElements(inputEl);\n\n  const maxlength = inputEl.getAttribute(\"maxlength\");\n\n  if (!maxlength) return;\n\n  inputEl.removeAttribute(\"maxlength\");\n  characterCountEl.setAttribute(\"data-maxlength\", maxlength);\n};\n\nconst characterCount = behavior(\n  {\n    input: {\n      [INPUT]() {\n        updateCountMessage(this);\n      }\n    }\n  },\n  {\n    init(root) {\n      select(INPUT, root).forEach(input => {\n        setupAttributes(input);\n        updateCountMessage(input);\n      });\n    },\n    MESSAGE_INVALID_CLASS,\n    VALIDATION_MESSAGE\n  }\n);\n\nmodule.exports = characterCount;\n","const keymap = require(\"receptor/keymap\");\nconst select = require(\"../utils/select\");\nconst behavior = require(\"../utils/behavior\");\nconst { prefix: PREFIX } = require(\"../config\");\nconst { CLICK } = require(\"../events\");\n\nconst COMBO_BOX_CLASS = `${PREFIX}-combo-box`;\nconst COMBO_BOX_PRISTINE_CLASS = `${COMBO_BOX_CLASS}--pristine`;\nconst SELECT_CLASS = `${COMBO_BOX_CLASS}__select`;\nconst INPUT_CLASS = `${COMBO_BOX_CLASS}__input`;\nconst CLEAR_INPUT_BUTTON_CLASS = `${COMBO_BOX_CLASS}__clear-input`;\nconst CLEAR_INPUT_BUTTON_WRAPPER_CLASS = `${CLEAR_INPUT_BUTTON_CLASS}__wrapper`;\nconst INPUT_BUTTON_SEPARATOR_CLASS = `${COMBO_BOX_CLASS}__input-button-separator`;\nconst TOGGLE_LIST_BUTTON_CLASS = `${COMBO_BOX_CLASS}__toggle-list`;\nconst TOGGLE_LIST_BUTTON_WRAPPER_CLASS = `${TOGGLE_LIST_BUTTON_CLASS}__wrapper`;\nconst LIST_CLASS = `${COMBO_BOX_CLASS}__list`;\nconst LIST_OPTION_CLASS = `${COMBO_BOX_CLASS}__list-option`;\nconst LIST_OPTION_FOCUSED_CLASS = `${LIST_OPTION_CLASS}--focused`;\nconst LIST_OPTION_SELECTED_CLASS = `${LIST_OPTION_CLASS}--selected`;\nconst STATUS_CLASS = `${COMBO_BOX_CLASS}__status`;\n\nconst COMBO_BOX = `.${COMBO_BOX_CLASS}`;\nconst SELECT = `.${SELECT_CLASS}`;\nconst INPUT = `.${INPUT_CLASS}`;\nconst CLEAR_INPUT_BUTTON = `.${CLEAR_INPUT_BUTTON_CLASS}`;\nconst TOGGLE_LIST_BUTTON = `.${TOGGLE_LIST_BUTTON_CLASS}`;\nconst LIST = `.${LIST_CLASS}`;\nconst LIST_OPTION = `.${LIST_OPTION_CLASS}`;\nconst LIST_OPTION_FOCUSED = `.${LIST_OPTION_FOCUSED_CLASS}`;\nconst LIST_OPTION_SELECTED = `.${LIST_OPTION_SELECTED_CLASS}`;\nconst STATUS = `.${STATUS_CLASS}`;\n\nconst noop = () => {};\n\n/**\n * set the value of the element and dispatch a change event\n *\n * @param {HTMLInputElement|HTMLSelectElement} el The element to update\n * @param {string} value The new value of the element\n */\nconst changeElementValue = (el, value = \"\") => {\n  const elementToChange = el;\n  elementToChange.value = value;\n\n  const event = new CustomEvent(\"change\", {\n    bubbles: true,\n    cancelable: true,\n    detail: { value }\n  });\n  elementToChange.dispatchEvent(event);\n};\n\n/**\n * The elements within the combo box.\n * @typedef {Object} ComboBoxContext\n * @property {HTMLElement} comboBoxEl\n * @property {HTMLSelectElement} selectEl\n * @property {HTMLInputElement} inputEl\n * @property {HTMLUListElement} listEl\n * @property {HTMLDivElement} statusEl\n * @property {HTMLLIElement} focusedOptionEl\n * @property {HTMLLIElement} selectedOptionEl\n * @property {HTMLButtonElement} toggleListBtnEl\n * @property {HTMLButtonElement} clearInputBtnEl\n */\n\n/**\n * Get an object of elements belonging directly to the given\n * combo box component.\n *\n * @param {HTMLElement} el the element within the combo box\n * @returns {ComboBoxContext} elements\n */\nconst getComboBoxContext = el => {\n  const comboBoxEl = el.closest(COMBO_BOX);\n\n  if (!comboBoxEl) {\n    throw new Error(`Element is missing outer ${COMBO_BOX}`);\n  }\n\n  const selectEl = comboBoxEl.querySelector(SELECT);\n  const inputEl = comboBoxEl.querySelector(INPUT);\n  const listEl = comboBoxEl.querySelector(LIST);\n  const statusEl = comboBoxEl.querySelector(STATUS);\n  const focusedOptionEl = comboBoxEl.querySelector(LIST_OPTION_FOCUSED);\n  const selectedOptionEl = comboBoxEl.querySelector(LIST_OPTION_SELECTED);\n  const toggleListBtnEl = comboBoxEl.querySelector(TOGGLE_LIST_BUTTON);\n  const clearInputBtnEl = comboBoxEl.querySelector(CLEAR_INPUT_BUTTON);\n\n  const isPristine = comboBoxEl.classList.contains(COMBO_BOX_PRISTINE_CLASS);\n\n  return {\n    comboBoxEl,\n    selectEl,\n    inputEl,\n    listEl,\n    statusEl,\n    focusedOptionEl,\n    selectedOptionEl,\n    toggleListBtnEl,\n    clearInputBtnEl,\n    isPristine\n  };\n};\n\n/**\n * Disable the combo-box component\n *\n * @param {HTMLInputElement} el An element within the combo box component\n */\nconst disable = el => {\n  const { inputEl, toggleListBtnEl, clearInputBtnEl } = getComboBoxContext(el);\n\n  clearInputBtnEl.hidden = true;\n  clearInputBtnEl.disabled = true;\n  toggleListBtnEl.disabled = true;\n  inputEl.disabled = true;\n};\n\n/**\n * Enable the combo-box component\n *\n * @param {HTMLInputElement} el An element within the combo box component\n */\nconst enable = el => {\n  const { inputEl, toggleListBtnEl, clearInputBtnEl } = getComboBoxContext(el);\n\n  clearInputBtnEl.hidden = false;\n  clearInputBtnEl.disabled = false;\n  toggleListBtnEl.disabled = false;\n  inputEl.disabled = false;\n};\n\n/**\n * Enhance a select element into a combo box component.\n *\n * @param {HTMLElement} comboBoxEl The initial element of the combo box component\n */\nconst enhanceComboBox = comboBoxEl => {\n  const selectEl = comboBoxEl.querySelector(\"select\");\n\n  if (!selectEl) {\n    throw new Error(`${COMBO_BOX} is missing inner select`);\n  }\n\n  const selectId = selectEl.id;\n  const listId = `${selectId}--list`;\n  const assistiveHintID = `${selectId}--assistiveHint`;\n  const additionalAttributes = [];\n  const defaultValue = comboBoxEl.dataset.defaultValue;\n  const placeholder = comboBoxEl.dataset.placeholder;\n  let selectedOption;\n\n  if (placeholder) {\n    additionalAttributes.push(`placeholder=\"${placeholder}\"`);\n  }\n\n  if (defaultValue) {\n    for (let i = 0, len = selectEl.options.length; i < len; i += 1) {\n      const optionEl = selectEl.options[i];\n\n      if (optionEl.value === defaultValue) {\n        selectedOption = optionEl;\n        break;\n      }\n    }\n  }\n\n  selectEl.setAttribute(\"aria-hidden\", \"true\");\n  selectEl.setAttribute(\"tabindex\", \"-1\");\n  selectEl.classList.add(\"usa-sr-only\", SELECT_CLASS);\n  selectEl.id = \"\";\n  selectEl.value = \"\";\n\n  [\"required\", \"aria-label\", \"aria-labelledby\"].forEach(name => {\n    if (selectEl.hasAttribute(name)) {\n      const value = selectEl.getAttribute(name);\n      additionalAttributes.push(`${name}=\"${value}\"`);\n      selectEl.removeAttribute(name);\n    }\n  });\n\n  comboBoxEl.insertAdjacentHTML(\n    \"beforeend\",\n    [\n      `<input\n        aria-owns=\"${listId}\"\n        aria-autocomplete=\"list\"\n        aria-describedby=\"${assistiveHintID}\"\n        aria-expanded=\"false\"\n        autocapitalize=\"off\"\n        autocomplete=\"off\"\n        id=\"${selectId}\"\n        class=\"${INPUT_CLASS}\"\n        type=\"text\"\n        role=\"combobox\"\n        ${additionalAttributes.join(\" \")}\n      >`,\n      `<span class=\"${CLEAR_INPUT_BUTTON_WRAPPER_CLASS}\" tabindex=\"-1\">\n        <button type=\"button\" class=\"${CLEAR_INPUT_BUTTON_CLASS}\" aria-label=\"Clear the select contents\">&nbsp;</button>\n      </span>`,\n      `<span class=\"${INPUT_BUTTON_SEPARATOR_CLASS}\">&nbsp;</span>`,\n      `<span class=\"${TOGGLE_LIST_BUTTON_WRAPPER_CLASS}\" tabindex=\"-1\">\n        <button type=\"button\" tabindex=\"-1\" class=\"${TOGGLE_LIST_BUTTON_CLASS}\" aria-label=\"Toggle the dropdown list\">&nbsp;</button>\n      </span>`,\n      `<ul\n        tabindex=\"-1\"\n        id=\"${listId}\"\n        class=\"${LIST_CLASS}\"\n        role=\"listbox\"\n        hidden>\n      </ul>`,\n      `<div class=\"${STATUS_CLASS} usa-sr-only\" role=\"status\"></div>`,\n      `<span id=\"${assistiveHintID}\" class=\"usa-sr-only\">\n        When autocomplete results are available use up and down arrows to review and enter to select.\n        Touch device users, explore by touch or with swipe gestures.\n      </span>`\n    ].join(\"\")\n  );\n\n  if (selectedOption) {\n    const { inputEl } = getComboBoxContext(comboBoxEl);\n    changeElementValue(selectEl, selectedOption.value);\n    changeElementValue(inputEl, selectedOption.text);\n    comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);\n  }\n\n  if (selectEl.disabled) {\n    disable(comboBoxEl);\n    selectEl.disabled = false;\n  }\n};\n\n/**\n * Manage the focused element within the list options when\n * navigating via keyboard.\n *\n * @param {HTMLElement} el An element within the combo box component\n * @param {HTMLElement} currentEl An element within the combo box component\n * @param {HTMLElement} nextEl An element within the combo box component\n * @param {Object} options options\n * @param {boolean} options.skipFocus skip focus of highlighted item\n * @param {boolean} options.preventScroll should skip procedure to scroll to element\n */\nconst highlightOption = (\n  el,\n  currentEl,\n  nextEl,\n  { skipFocus, preventScroll } = {}\n) => {\n  const { inputEl, listEl, selectedOptionEl } = getComboBoxContext(el);\n\n  if (selectedOptionEl) {\n    selectedOptionEl.tabIndex = \"-1\";\n  }\n\n  if (currentEl) {\n    currentEl.classList.remove(LIST_OPTION_FOCUSED_CLASS);\n    currentEl.setAttribute(\"aria-selected\", \"false\");\n    currentEl.setAttribute(\"tabIndex\", \"-1\");\n  }\n\n  if (nextEl) {\n    inputEl.setAttribute(\"aria-activedescendant\", nextEl.id);\n    nextEl.setAttribute(\"aria-selected\", \"true\");\n    nextEl.setAttribute(\"tabIndex\", \"0\");\n    nextEl.classList.add(LIST_OPTION_FOCUSED_CLASS);\n\n    if (!preventScroll) {\n      const optionBottom = nextEl.offsetTop + nextEl.offsetHeight;\n      const currentBottom = listEl.scrollTop + listEl.offsetHeight;\n\n      if (optionBottom > currentBottom) {\n        listEl.scrollTop = optionBottom - listEl.offsetHeight;\n      }\n\n      if (nextEl.offsetTop < listEl.scrollTop) {\n        listEl.scrollTop = nextEl.offsetTop;\n      }\n    }\n\n    if (!skipFocus) {\n      nextEl.focus({ preventScroll });\n    }\n  } else {\n    inputEl.setAttribute(\"aria-activedescendant\", \"\");\n    inputEl.focus();\n  }\n};\n\n/**\n * Display the option list of a combo box component.\n *\n * @param {HTMLElement} el An element within the combo box component\n */\nconst displayList = el => {\n  const {\n    selectEl,\n    inputEl,\n    listEl,\n    statusEl,\n    isPristine\n  } = getComboBoxContext(el);\n  let selectedItemId;\n\n  const listOptionBaseId = `${listEl.id}--option-`;\n\n  const inputValue = (inputEl.value || \"\").toLowerCase();\n\n  const options = [];\n  for (let i = 0, len = selectEl.options.length; i < len; i += 1) {\n    const optionEl = selectEl.options[i];\n    if (\n      optionEl.value &&\n      (isPristine ||\n        !inputValue ||\n        optionEl.text.toLowerCase().indexOf(inputValue) !== -1)\n    ) {\n      if (selectEl.value && optionEl.value === selectEl.value) {\n        selectedItemId = `${listOptionBaseId}${options.length}`;\n      }\n\n      options.push(optionEl);\n    }\n  }\n\n  const numOptions = options.length;\n  const optionHtml = options\n    .map((option, index) => {\n      const optionId = `${listOptionBaseId}${index}`;\n      const classes = [LIST_OPTION_CLASS];\n      let tabindex = \"-1\";\n\n      if (optionId === selectedItemId) {\n        classes.push(LIST_OPTION_SELECTED_CLASS);\n        tabindex = \"0\";\n      }\n\n      if (!selectedItemId && index === 0) {\n        tabindex = \"0\";\n      }\n\n      return `<li\n          aria-selected=\"false\"\n          aria-setsize=\"${options.length}\"\n          aria-posinset=\"${index + 1}\"\n          id=\"${optionId}\"\n          class=\"${classes.join(\" \")}\"\n          tabindex=\"${tabindex}\"\n          role=\"option\"\n          data-value=\"${option.value}\"\n        >${option.text}</li>`;\n    })\n    .join(\"\");\n\n  const noResults = `<li class=\"${LIST_OPTION_CLASS}--no-results\">No results found</li>`;\n\n  listEl.hidden = false;\n  listEl.innerHTML = numOptions ? optionHtml : noResults;\n\n  inputEl.setAttribute(\"aria-expanded\", \"true\");\n\n  statusEl.innerHTML = numOptions\n    ? `${numOptions} result${numOptions > 1 ? \"s\" : \"\"} available.`\n    : \"No results.\";\n\n  if (isPristine && selectedItemId) {\n    const selectedOptionEl = listEl.querySelector(\"#\" + selectedItemId);\n    highlightOption(listEl, null, selectedOptionEl, {\n      skipFocus: true\n    });\n  }\n};\n\n/**\n * Hide the option list of a combo box component.\n *\n * @param {HTMLElement} el An element within the combo box component\n */\nconst hideList = el => {\n  const { inputEl, listEl, statusEl, focusedOptionEl } = getComboBoxContext(el);\n\n  statusEl.innerHTML = \"\";\n\n  inputEl.setAttribute(\"aria-expanded\", \"false\");\n  inputEl.setAttribute(\"aria-activedescendant\", \"\");\n\n  if (focusedOptionEl) {\n    focusedOptionEl.classList.remove(LIST_OPTION_FOCUSED_CLASS);\n  }\n\n  listEl.scrollTop = 0;\n  listEl.hidden = true;\n};\n\n/**\n * Select an option list of the combo box component.\n *\n * @param {HTMLElement} listOptionEl The list option being selected\n */\nconst selectItem = listOptionEl => {\n  const { comboBoxEl, selectEl, inputEl } = getComboBoxContext(listOptionEl);\n\n  changeElementValue(selectEl, listOptionEl.dataset.value);\n  changeElementValue(inputEl, listOptionEl.textContent);\n  comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);\n  hideList(comboBoxEl);\n  inputEl.focus();\n};\n\n/**\n * Clear the input of the combo box\n *\n * @param {HTMLButtonElement} clearButtonEl The clear input button\n */\nconst clearInput = clearButtonEl => {\n  const { comboBoxEl, listEl, selectEl, inputEl } = getComboBoxContext(\n    clearButtonEl\n  );\n  const listShown = !listEl.hidden;\n\n  if (selectEl.value) changeElementValue(selectEl);\n  if (inputEl.value) changeElementValue(inputEl);\n  comboBoxEl.classList.remove(COMBO_BOX_PRISTINE_CLASS);\n\n  if (listShown) displayList(comboBoxEl);\n  inputEl.focus();\n};\n\n/**\n * Reset the select based off of currently set select value\n *\n * @param {HTMLElement} el An element within the combo box component\n */\nconst resetSelection = el => {\n  const { comboBoxEl, selectEl, inputEl } = getComboBoxContext(el);\n\n  const selectValue = selectEl.value;\n  const inputValue = (inputEl.value || \"\").toLowerCase();\n\n  if (selectValue) {\n    for (let i = 0, len = selectEl.options.length; i < len; i += 1) {\n      const optionEl = selectEl.options[i];\n      if (optionEl.value === selectValue) {\n        if (inputValue !== optionEl.text) {\n          changeElementValue(inputEl, optionEl.text);\n        }\n        comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);\n        return;\n      }\n    }\n  }\n\n  if (inputValue) {\n    changeElementValue(inputEl);\n  }\n};\n\n/**\n * Select an option list of the combo box component based off of\n * having a current focused list option or\n * having test that completely matches a list option.\n * Otherwise it clears the input and select.\n *\n * @param {HTMLElement} el An element within the combo box component\n */\nconst completeSelection = el => {\n  const {\n    comboBoxEl,\n    selectEl,\n    inputEl,\n    statusEl,\n    focusedOptionEl\n  } = getComboBoxContext(el);\n\n  statusEl.textContent = \"\";\n\n  if (focusedOptionEl) {\n    changeElementValue(selectEl, focusedOptionEl.dataset.value);\n    changeElementValue(inputEl, focusedOptionEl.textContent);\n    comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);\n    return;\n  }\n\n  const inputValue = (inputEl.value || \"\").toLowerCase();\n\n  if (inputValue) {\n    for (let i = 0, len = selectEl.options.length; i < len; i += 1) {\n      const optionEl = selectEl.options[i];\n      if (optionEl.text.toLowerCase() === inputValue) {\n        changeElementValue(selectEl, optionEl.value);\n        changeElementValue(inputEl, optionEl.text);\n        comboBoxEl.classList.add(COMBO_BOX_PRISTINE_CLASS);\n        return;\n      }\n    }\n  }\n\n  resetSelection(comboBoxEl);\n};\n\n/**\n * Handle the escape event within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleEscape = event => {\n  const { comboBoxEl, inputEl } = getComboBoxContext(event.target);\n\n  hideList(comboBoxEl);\n  resetSelection(comboBoxEl);\n  inputEl.focus();\n};\n\n/**\n * Handle the down event within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleDown = event => {\n  const { comboBoxEl, listEl, focusedOptionEl } = getComboBoxContext(\n    event.target\n  );\n\n  if (listEl.hidden) {\n    displayList(comboBoxEl);\n  }\n\n  let nextOptionEl =\n    listEl.querySelector(LIST_OPTION_SELECTED) ||\n    listEl.querySelector(LIST_OPTION);\n\n  if (focusedOptionEl) {\n    nextOptionEl = focusedOptionEl.nextSibling;\n  }\n\n  if (nextOptionEl) {\n    highlightOption(comboBoxEl, focusedOptionEl, nextOptionEl);\n  }\n\n  event.preventDefault();\n};\n\n/**\n * Handle the enter event from an input element within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleEnterFromInput = event => {\n  const { comboBoxEl, listEl } = getComboBoxContext(event.target);\n  const listShown = !listEl.hidden;\n\n  completeSelection(comboBoxEl);\n\n  if (listShown) {\n    hideList(comboBoxEl);\n  }\n\n  event.preventDefault();\n};\n\n/**\n * Handle the tab event from an list option element within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleTabFromListOption = event => {\n  selectItem(event.target);\n  event.preventDefault();\n};\n\n/**\n * Handle the enter event from list option within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleEnterFromListOption = event => {\n  selectItem(event.target);\n  event.preventDefault();\n};\n\n/**\n * Handle the up event from list option within the combo box component.\n *\n * @param {KeyboardEvent} event An event within the combo box component\n */\nconst handleUpFromListOption = event => {\n  const { comboBoxEl, listEl, focusedOptionEl } = getComboBoxContext(\n    event.target\n  );\n  const nextOptionEl = focusedOptionEl && focusedOptionEl.previousSibling;\n  const listShown = !listEl.hidden;\n\n  highlightOption(comboBoxEl, focusedOptionEl, nextOptionEl);\n\n  if (listShown) {\n    event.preventDefault();\n  }\n\n  if (!nextOptionEl) {\n    hideList(comboBoxEl);\n  }\n};\n\n/**\n * Select list option on the mousemove event.\n *\n * @param {MouseEvent} event The mousemove event\n * @param {HTMLLIElement} listOptionEl An element within the combo box component\n */\nconst handleMousemove = listOptionEl => {\n  const isCurrentlyFocused = listOptionEl.classList.contains(\n    LIST_OPTION_FOCUSED_CLASS\n  );\n\n  if (isCurrentlyFocused) return;\n\n  const { comboBoxEl, focusedOptionEl } = getComboBoxContext(listOptionEl);\n\n  highlightOption(comboBoxEl, focusedOptionEl, listOptionEl, {\n    preventScroll: true\n  });\n};\n\n/**\n * Toggle the list when the button is clicked\n *\n * @param {HTMLElement} el An element within the combo box component\n */\nconst toggleList = el => {\n  const { comboBoxEl, listEl, inputEl } = getComboBoxContext(el);\n\n  if (listEl.hidden) {\n    displayList(comboBoxEl);\n  } else {\n    hideList(comboBoxEl);\n  }\n\n  inputEl.focus();\n};\n\n/**\n * Handle click from input\n *\n * @param {HTMLInputElement} el An element within the combo box component\n */\nconst handleClickFromInput = el => {\n  const { comboBoxEl, listEl } = getComboBoxContext(el);\n\n  if (listEl.hidden) {\n    displayList(comboBoxEl);\n  }\n};\n\nconst comboBox = behavior(\n  {\n    [CLICK]: {\n      [INPUT]() {\n        if (this.disabled) return;\n        handleClickFromInput(this);\n      },\n      [TOGGLE_LIST_BUTTON]() {\n        if (this.disabled) return;\n        toggleList(this);\n      },\n      [LIST_OPTION]() {\n        if (this.disabled) return;\n        selectItem(this);\n      },\n      [CLEAR_INPUT_BUTTON]() {\n        if (this.disabled) return;\n        clearInput(this);\n      }\n    },\n    focusout: {\n      [COMBO_BOX](event) {\n        if (!this.contains(event.relatedTarget)) {\n          resetSelection(this);\n          hideList(this);\n        }\n      }\n    },\n    keydown: {\n      [COMBO_BOX]: keymap({\n        ArrowDown: handleDown,\n        Down: handleDown,\n        Escape: handleEscape\n      }),\n      [INPUT]: keymap({\n        Enter: handleEnterFromInput\n      }),\n      [LIST_OPTION]: keymap({\n        ArrowUp: handleUpFromListOption,\n        Up: handleUpFromListOption,\n        Enter: handleEnterFromListOption,\n        Tab: handleTabFromListOption,\n        \"Shift+Tab\": noop\n      })\n    },\n    input: {\n      [INPUT]() {\n        const comboBoxEl = this.closest(COMBO_BOX);\n        comboBoxEl.classList.remove(COMBO_BOX_PRISTINE_CLASS);\n        displayList(this);\n      }\n    },\n    mousemove: {\n      [LIST_OPTION]() {\n        handleMousemove(this);\n      }\n    }\n  },\n  {\n    init(root) {\n      select(COMBO_BOX, root).forEach(comboBoxEl => {\n        enhanceComboBox(comboBoxEl);\n      });\n    },\n    getComboBoxContext,\n    disable,\n    enable,\n    displayList,\n    hideList\n  }\n);\n\nmodule.exports = comboBox;\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 characterCount = require(\"./character-count\");\nconst comboBox = require(\"./combo-box\");\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  characterCount,\n  comboBox,\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","/* eslint-disable consistent-return */\n/* eslint-disable func-names */\n(function() {\n  if (typeof window.CustomEvent === \"function\") return false;\n\n  function CustomEvent(event, _params) {\n    const params = _params || {\n      bubbles: false,\n      cancelable: false,\n      detail: null\n    };\n    const evt = document.createEvent(\"CustomEvent\");\n    evt.initCustomEvent(\n      event,\n      params.bubbles,\n      params.cancelable,\n      params.detail\n    );\n    return evt;\n  }\n\n  window.CustomEvent = CustomEvent;\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// polyfills CustomEvent\nrequire(\"./custom-event\");\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  const bindings = additionalKeyBindings;\n  const { Esc, Escape } = bindings;\n\n  if (Escape && !Esc) bindings.Esc = Escape;\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"]}